summaryrefslogtreecommitdiff
path: root/src/dosbox_snif/dos_lemm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dosbox_snif/dos_lemm.h')
-rw-r--r--src/dosbox_snif/dos_lemm.h55
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*/