diff options
Diffstat (limited to 'reverse-engineering/dosbox_snif/dos_lemm.h')
-rw-r--r-- | reverse-engineering/dosbox_snif/dos_lemm.h | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/reverse-engineering/dosbox_snif/dos_lemm.h b/reverse-engineering/dosbox_snif/dos_lemm.h index f6c7c95..af07f61 100644 --- a/reverse-engineering/dosbox_snif/dos_lemm.h +++ b/reverse-engineering/dosbox_snif/dos_lemm.h @@ -1,6 +1,7 @@ #ifndef _DOS_LEMM_H #define _DOS_LEMM_H +#include <stdint.h> struct _state { uint8_t s_splatting:1; //0x01 @@ -59,9 +60,9 @@ union flags1 { }; enum flags1_masks { - fl1_cap_climber = 0x01; - fl1_walk_pause_for_shruggling = 0x80; -} + fl1_cap_climber = 0x01, + fl1_walk_pause_for_shruggling = 0x80 +}; struct _lemm_data { /* First lemm is at ds:si == 0b55:0085 */ @@ -70,15 +71,15 @@ struct _lemm_data { int16_t x_spr_offset; //0x4 - 0x5 int16_t y_spr_offset; //0x6 - 0x7 union state state; //0x8 - 0x9 - uint8_t b_10,b_11; + uint8_t unk1[0x2]; uint16_t spr_data_ptr; //0xc - 0xd uint8_t floattime_dble; //0xe - uint8_t b_15,b_16,b_17,b_18,b_19; + uint8_t unk2[0x5]; uint16_t ptr2; //0x14 - 0x15 - uint8_t b_22,b_23,b_24,b_25,b_26,b_27,b_28,b_29,b_30,b_31; + uint8_t unk3[0xa]; uint8_t expl_countdown; //0x20 uint8_t steps_remain; //0x21 - uint8_t b_34; + uint8_t unk4; uint8_t falldist; //0x23 union flags1 flags1; //0x24 uint8_t cap_floater; //0x25 @@ -86,7 +87,7 @@ struct _lemm_data { int8_t direction; //0x27 uint8_t spr_frame; //0x28 uint8_t draw_hint; //0x29 - uint8_t b_42,b_43,b_44; + uint8_t unk5[0x3]; } __attribute__ ((__packed__)); union lemm_data { @@ -100,32 +101,32 @@ enum draw_hint { }; struct _avail_skills { - uint8 sk_climber, sk_climber2, sk_climber_tag; // [0x67] - uint8 sk_floater, sk_floater2, sk_floater_tag; // [0x6a] - uint8 sk_bomber, sk_bomber2, sk_bomber_tag; // [0x6d] - uint8 sk_blocker, sk_blocker2, sk_blocker_tag; // [0x70] - uint8 sk_builder, sk_builder2, sk_builder_tag; // [0x73] - uint8 sk_basher, sk_basher2, sk_basher_tag; // [0x76] - uint8 sk_miner, sk_miner2, sk_miner_tag; // [0x79] - uint8 sk_digger, sk_digger2, sk_digger_tag; // [0x7c] + uint8_t sk_climber, sk_climber2, sk_climber_tag; // [0x67] + uint8_t sk_floater, sk_floater2, sk_floater_tag; // [0x6a] + uint8_t sk_bomber, sk_bomber2, sk_bomber_tag ; // [0x6d] + uint8_t sk_blocker, sk_blocker2, sk_blocker_tag; // [0x70] + uint8_t sk_builder, sk_builder2, sk_builder_tag; // [0x73] + uint8_t sk_basher, sk_basher2, sk_basher_tag; // [0x76] + uint8_t sk_miner, sk_miner2, sk_miner_tag; // [0x79] + uint8_t sk_digger, sk_digger2, sk_digger_tag; // [0x7c] } __attribute__ ((__packed__)); struct game_data { /* ds == 0x0b55 */ - uint8 unk1[0x27]; // TODO - uint8 paused; // [0x28] - uint8 unk2[0x10]; // TODO - uint8 lemm_count_to_process; // [0x39] - uint8 lemm_spawned_count; // [0x40] - uint8 unk3; // TODO - uint8 lemm_out_count; // [0x42] - uint8 unk4; // TODO - uint8 lemm_level_count; // [0x44] - uint8 next_spawn_ticks; // [0x45] - uint8 spawn_rate_ticks; // [0x46] - uint8 unk5[0x20]; // TODO + uint8_t unk1[0x27]; // TODO + uint8_t paused; // [0x28] + uint8_t unk2[0x10]; // TODO + uint8_t lemm_count_to_process; // [0x39] + uint8_t lemm_spawned_count; // [0x40] + uint8_t unk3; // TODO + uint8_t lemm_out_count; // [0x42] + uint8_t unk4; // TODO + uint8_t lemm_level_count; // [0x44] + uint8_t next_spawn_ticks; // [0x45] + uint8_t spawn_rate_ticks; // [0x46] + uint8_t unk5[0x20]; // TODO struct _avail_skills avail_skills; // [0x67] - [0x7e] - uint8 unk6[0x06]; // TODO + uint8_t unk6[0x06]; // TODO struct _lemm_data lemmings[100]; // [0x85] } __attribute__ ((__packed__)); |