diff options
Diffstat (limited to 'src/dosbox_snif/dos_lemm.h')
-rw-r--r-- | src/dosbox_snif/dos_lemm.h | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/src/dosbox_snif/dos_lemm.h b/src/dosbox_snif/dos_lemm.h index 2935f8d..4766011 100644 --- a/src/dosbox_snif/dos_lemm.h +++ b/src/dosbox_snif/dos_lemm.h @@ -1,24 +1,46 @@ #ifndef _DOS_LEMM_H #define _DOS_LEMM_H +uint8 lemm_count_to_process; // [0x39] +uint8 lemm_spawned_count; // [0x40] + +uint8 lemm_out_count; // [0x42] + +uint8 lemm_level_count; // [0x44] +uint8 next_spawn_ticks; // [0x45] +uint8 spawn_rate_ticks; // [0x46] + + +struct _avail_skils { + /* ds:si == 0b5b:0067 */ + 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] +}; + struct _state { - uint8_t s_splatting:1; //0X1 - uint8_t s_exploding:1; //0X2 combinable - uint8_t s_falling:1; //0X4 - uint8_t s_ascending:1; //0X8 + uint8_t s_splatting:1; //0x01 + uint8_t s_exploding:1; //0x02 combinable + uint8_t s_falling:1; //0x04 + uint8_t s_ascending:1; //0x08 uint8_t s_digging:1; //0x10 uint8_t s_climbing:1; //0x20 uint8_t s_climb_ending:1; //0X40 uint8_t s_building:1; //0X80 - uint8_t s_blocking:1; //0X1 - uint8_t s_bashing:1; //0X2 - uint8_t s_floating:1; //0X4 - uint8_t s_mining:1; //0X8 + uint8_t s_blocking:1; //0x01 + uint8_t s_bashing:1; //0x02 + uint8_t s_floating:1; //0x04 + uint8_t s_mining:1; //0x08 uint8_t s_drawning:1; //0x10 uint8_t s_ending:1; //0x20 uint8_t s_dying:1; //0X40 - uint8_t s_exploding2:1; //0X80 when exploding too ? + uint8_t s_exploding2:1; //0X80 } __attribute__ ((__packed__)); union state { @@ -28,12 +50,12 @@ union state { struct _flags1 { uint8_t cap_climber:1; // 0x1 - uint8_t bit_1:1; - uint8_t bit_2:1; - uint8_t bit_3:1; - uint8_t bit_4:1; - uint8_t bit_5:1; - uint8_t bit_6:1; + uint8_t unused_bit_1:1; + uint8_t unused_bit_2:1; + uint8_t unused_bit_3:1; + uint8_t unused_bit_4:1; + uint8_t unused_bit_5:1; + uint8_t unused_bit_6:1; uint8_t walk_pause_for_shruggling:1; // 0X80 } __attribute__ ((__packed__)); @@ -43,6 +65,7 @@ union flags1 { }; struct _lemm_data { + /* First lemm is at ds:si == 0b55:0085 */ uint16_t x_effective; //0x0 - 0x1 uint16_t y_effective; //0x2 - 0x3 int16_t x_spr_offset; //0x4 - 0x5 @@ -79,7 +102,7 @@ enum draw_hint { enum state_bit { s_splatting=0, s_exploding, s_falling, s_ascending, s_digging, s_climbing, s_climb_ending, s_building, - s_blocking, s_bashing, s_floating, s_mining, s_drawning, s_ending, s_b7, s_exploding2 + s_blocking, s_bashing, s_floating, s_mining, s_drawning, s_ending, s_dying, s_exploding2 }; #endif /*_DOS_LEMM_H*/ |