22 #ifndef MADS_CORE_SPRITE_H 23 #define MADS_CORE_SPRITE_H 25 #include "common/stream.h" 26 #include "mads/core/color.h" 27 #include "mads/core/loader.h" 31 #define misc_largest_block misc[0] 33 #define misc_is_a_walker misc[2] 38 #define SPRITE_LOAD_TRANSLATE 0x0001 39 #define SPRITE_LOAD_HEADER_ONLY 0x0002 40 #define SPRITE_LOAD_WALKER_INFO 0x0004 41 #define SPRITE_LOAD_SPINNING_OBJECT 0x0008 46 #define SPRITE_MASK 0x7fff 47 #define MIRROR_MASK 0x8000 49 #define HALF_MIRROR_MASK 0x80 50 #define HALF_SPRITE_MASK 0x7f 57 #define SS_LASTVALID 252 68 #define SPRITE_COLOR_TABLE_SIZE 252 70 #define MAX_SECONDARY 16 79 #define SS_FIRSTFRAME 1 80 #define SS_STATICLBM 2 82 #define SS_INDIVIDUAL 4 83 #define SS_PANNING_ANM 5 84 #define SS_PANNING_FLI 6 90 uint16 sequence_start[MAX_SECONDARY];
91 uint16 sequence_stop[MAX_SECONDARY];
92 uint16 sequence_chance[MAX_SECONDARY];
96 byte center_of_gravity;
98 static constexpr
size_t SIZE = 2 + 2 + (2 + 2 + 2) * MAX_SECONDARY + 2 + 1 + 1;
99 void load(
Load &load_handle);
126 char source_name[80];
150 int color_list_valid;
167 uint32 memory_needed;
171 static constexpr
size_t SIZE = 4 + 4 + 2 + 2 + 2 + 2;
193 uint16 offset_x_view;
194 uint16 offset_y_view;
196 uint32 total_data_size;
199 static constexpr
int HEADER_SIZE = 1 + 1 + 2 + 2 + 2 * 16 + 2 +
200 WalkerInfo::SIZE + 2 + 2 + 4;
201 bool loadHeader(
Load &load_handle);
215 long base_sprite_offset;
257 SpritePageInfoPtr page_info;
258 SpritePageTablePtr page_table;
262 WalkerInfoPtr walker;
269 #define SS_ERR_OPENFILE -1 270 #define SS_ERR_READFILE -2 271 #define SS_ERR_WRITEFILE -3 272 #define SS_ERR_NOMOREMEMORY -4 273 #define SS_ERR_MAKEDIALOG -5 274 #define SS_ERR_PALETTEMISMATCH -6 275 #define SS_ERR_BOUNDARY -7 276 #define SS_ERR_TOOMANYSPRITES -8 277 #define SS_ERR_TOOMANYCOLORS -9 278 #define SS_ERR_BADDEFINITION -10 279 #define SS_ERR_OLDDEFINITION -11 282 extern byte *sprite_force_memory;
283 extern long sprite_force_size;
284 extern int sprite_error;
287 extern void sprite_draw(SeriesPtr series,
int id,
Buffer *buf,
int target_x,
int target_y);
288 extern void sprite_draw_scaled(SeriesPtr series,
int id,
Buffer *buf,
289 int target_x,
int target_y,
int scale_factor);
290 extern void sprite_draw_3d_scaled(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
291 int target_x,
int target_y,
int target_depth,
int scale_factor);
292 extern void sprite_draw_3d_big(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
293 int target_x,
int target_y,
int target_depth,
int view_port_x,
int view_port_y);
294 extern void sprite_draw_3d_scaled_big(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
295 int target_x,
int target_y,
int target_depth,
int scale_factor,
296 int view_port_x,
int view_port_y);
297 extern void sprite_draw_3d_x16(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
298 int target_x,
int target_y,
int target_depth);
299 extern void sprite_draw_3d_scaled_x16(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
300 int target_x,
int target_y,
int target_depth,
int scale_factor);
301 extern void sprite_draw_3d_big_x16(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
302 int target_x,
int target_y,
int target_depth,
int view_port_x,
int view_port_y);
303 extern void sprite_draw_3d_scaled_big_x16(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
304 int target_x,
int target_y,
int target_depth,
int scale_factor,
305 int view_port_x,
int view_port_y);
306 extern void sprite_draw_x16(SeriesPtr series,
int id,
Buffer *buf,
int target_x,
int target_y);
307 extern void sprite_draw_interface(SeriesPtr series,
int id,
Buffer *buf,
int target_x,
int target_y);
308 extern void sprite_draw_3d_scaled_to_attr(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
309 int target_x,
int target_y,
int target_depth,
int scale_factor,
310 int view_port_x,
int view_port_y);
311 extern void sprite_draw_3d_scaled_mono(SeriesPtr series,
int id,
Buffer *buf,
Buffer *attr,
312 int target_x,
int target_y,
int target_depth,
int scale_factor, byte color);
313 extern SeriesPtr sprite_series_load(
const char *filename,
int load_flags);
314 extern void sprite_get_scaled_matte(SeriesPtr series,
int id,
int target_x,
int target_y,
315 int scale_factor, SpritePtr matte);
323 word sprite_pack_line_rle(byte *target,
Buffer *source, byte *palette_map, byte transparent,
324 int x1,
int x2,
int y);
333 word sprite_pack_line_irle(byte *target,
Buffer *source,
334 byte *palette_map, byte transparent,
int x1,
int x2,
int y);
336 extern void sprite_set_bounds(HagSpritePtr sprite,
int x,
int y,
int xs,
int ys);
342 extern void sprite_merge_background(
Buffer *source,
Buffer *background, byte transparent);
351 extern void sprite_delta_compute(HagSpritePtr sprite,
Buffer *source,
Buffer *delta);
359 extern void sprite_remove_non_delta(
Buffer *source,
Buffer *delta, byte transparent);
365 long sprite_pack_image(byte *target, FileSpritePtr sprite,
Buffer *source,
366 byte *palette_map, byte transparent);
368 extern void sprite_color_translate(SeriesPtr series,
ColorListPtr list);
369 extern void sprite_single_color_translate(SeriesPtr series,
int id);
370 extern int sprite_data_load(SeriesPtr series,
int id, byte *target);
372 extern void dont_frag_the_palette();
373 extern void go_ahead_and_frag_the_palette();
374 extern void sprite_free(SeriesPtr *series,
int free_memory);
376 extern void init_sprite();
Definition: anim_timer.h:27