diff options
author | Astatin <[email protected]> | 2025-01-07 19:29:17 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2025-01-07 19:30:12 +0900 |
commit | adb2d9935253b0ea0e31b462f342aa7823697a7e (patch) | |
tree | b17bff2c89f69bc2265b3abd09383b061cdde59c /entity | |
parent | ba36a613da1ce2dd822429cff4bd994094010abe (diff) |
Add support for multiple enemies loaded (up to 4 loaded at dungeon gen time)
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 4 | ||||
-rw-r--r-- | entity/init.gbasm | 77 | ||||
-rw-r--r-- | entity/list.gbasm | 60 |
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 |