aboutsummaryrefslogtreecommitdiff
path: root/entity
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-01-07 19:29:17 +0900
committerAstatin <[email protected]>2025-01-07 19:30:12 +0900
commitadb2d9935253b0ea0e31b462f342aa7823697a7e (patch)
treeb17bff2c89f69bc2265b3abd09383b061cdde59c /entity
parentba36a613da1ce2dd822429cff4bd994094010abe (diff)
Add support for multiple enemies loaded (up to 4 loaded at dungeon gen time)
Diffstat (limited to 'entity')
-rw-r--r--entity/actions.gbasm4
-rw-r--r--entity/init.gbasm77
-rw-r--r--entity/list.gbasm60
3 files changed, 118 insertions, 23 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm
index 2616e49..a8045dd 100644
--- a/entity/actions.gbasm
+++ b/entity/actions.gbasm
@@ -140,14 +140,14 @@ Open_Dialogue:
LD BC, =Text_1
CALL =Print_str
- LD A, $01
+ LD A, $07
LD $mem_display_flag, A
LD A, $mem_bunny_direction
AND $0f
LD $mem_bunny_direction, A
- LD A, $enum_dungeon_menu_mode
+ LD A, $enum_dungeon_dialogue_mode
LD $mem_requested_mode, A
RET
diff --git a/entity/init.gbasm b/entity/init.gbasm
index ba23183..953e45e 100644
--- a/entity/init.gbasm
+++ b/entity/init.gbasm
@@ -66,11 +66,11 @@ Initialize_Entities:
LD A, $ff
LD $mem_bunny_current_room_idx, A
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
Fix_Bunny_screen:
LD A, $mem_bunny_x
@@ -95,22 +95,32 @@ Fix_Bunny_screen:
RET
-Initialize_Fox:
+Initialize_Enemy: ; HL => pointer to entity struct
LD A, $mem_enemies_alive_count
INC A
LD $mem_enemies_alive_count, A
- LD A, $0d
+ CALL =RNG_Step
+ AND $03
+ ADD $03
+ LD E, A
+ SLA A
+ SLA A
+ LD B, A
+ SLA A
+ ADD B
+ INC A
LD (HL+), A
+
LD A, $mem_bunny_current_room_idx
LD $tmp_var_6, A
CP $FF
- JR Z, =Initialize_Fox.All_rooms_allowed
+ JR Z, =Initialize_Enemy.All_rooms_allowed
LD B, A
- Initialize_Fox.Skip_bunny_room:
+ Initialize_Enemy.Skip_bunny_room:
LD A, $mem_number_of_rooms
CP $01
- JR Z, =Initialize_Fox.All_rooms_allowed
+ JR Z, =Initialize_Enemy.All_rooms_allowed
DEC A
CALL =RNG_Bound
@@ -120,14 +130,14 @@ Initialize_Fox:
LD A, B
CP C
LD A, C
- JR C, =Initialize_Fox.Room_restriction.end
+ JR C, =Initialize_Enemy.Room_restriction.end
DEC A
- JR =Initialize_Fox.Room_restriction.end
+ JR =Initialize_Enemy.Room_restriction.end
- Initialize_Fox.All_rooms_allowed:
+ Initialize_Enemy.All_rooms_allowed:
LD A, $mem_number_of_rooms
CALL =RNG_Bound
- Initialize_Fox.Room_restriction.end:
+ Initialize_Enemy.Room_restriction.end:
LD $tmp_var_4, A
SLA A
SLA A
@@ -136,7 +146,6 @@ Initialize_Fox:
LD B, $c8
- ; X
LD A, (BC)
LD D, A
INC BC
@@ -163,19 +172,45 @@ Initialize_Fox:
LD A, $03
LD (HL+), A
+ LD BC, =Entity_list
+ LD D, high($mem_loaded_entities_indices)
+ LD A, low($mem_loaded_entities_indices)
+ ADD E
+ LD E, A
+ LD A, (DE)
+ DBG
+ SLA A
+ SLA A
+ SLA A
+ ADD $02
+ ADD low(=Entity_list)
+ LD C, A
+ LD A, high(=Entity_list)
+ ADC $00
+ LD B, A
+
; Turn
- LD A, $02
+ LD A, (BC)
LD (HL+), A
+ DBG
+
+ INC BC
; Action
- LD A, $01
+ LD A, (BC)
LD (HL+), A
- LD A, $04
- LD (HL), A
+ INC BC
+
+ LD A, (BC)
+ LD (HL+), A
+
+ XOR A
+ LD (HL+), A
+ LD (HL+), A
LD A, L
- ADD $0a
+ ADD $07
LD L, A
RET
@@ -209,5 +244,5 @@ Respawn_Entities:
CP (HL)
JR NZ, =FindFreeEntity.loop
- CALL =Initialize_Fox
+ CALL =Initialize_Enemy
RET
diff --git a/entity/list.gbasm b/entity/list.gbasm
new file mode 100644
index 0000000..d534d4d
--- /dev/null
+++ b/entity/list.gbasm
@@ -0,0 +1,60 @@
+Entity_list:
+ .Fox:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Fox
+
+ ; Turn Jump Table index
+ .DB $02
+
+ ; Interaction Jump Table index
+ .DB $01
+
+ ; Starting health
+ .DB $04
+
+ .PADTO =.Fox+8
+
+ .Frog:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Frog
+
+ ; Turn Jump Table index
+ .DB $00
+
+ ; Interaction Jump Table index
+ .DB $02
+
+ ; Starting health
+ .DB $00
+
+ .PADTO =.Frog+8
+
+ .Mouse:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Mouse
+
+ ; Turn Jump Table index
+ .DB $00
+
+ ; Interaction Jump Table index
+ .DB $02
+
+ ; Starting health
+ .DB $00
+
+ .PADTO =.Mouse+8
+
+ .Fimsh:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Fimsh
+
+ ; Turn Jump Table index
+ .DB $00
+
+ ; Interaction Jump Table index
+ .DB $02
+
+ ; Starting health
+ .DB $00
+
+ .PADTO =.Fimsh+8