diff options
author | Astatin <[email protected]> | 2024-11-15 17:43:42 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2024-11-15 17:43:42 +0900 |
commit | 1aa36f5ce5bbdbd597456efd4603b83682d27e59 (patch) | |
tree | 9469e417060ac4db2c60b8c1c6890994c18bd439 | |
parent | cfd36cc6a11923c8863b699e70b90149ad1c731a (diff) |
Fix the hop map loading + animation entity + object loading
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | attacks.gbasm | 143 | ||||
-rw-r--r-- | definitions.gbasm | 5 | ||||
-rw-r--r-- | entity/bunny.gbasm | 2 | ||||
-rw-r--r-- | entity/display.gbasm | 8 | ||||
-rw-r--r-- | gui.gbasm | 4 | ||||
-rw-r--r-- | main.gbasm | 10 | ||||
-rw-r--r-- | map/objects.gbasm | 5 |
8 files changed, 124 insertions, 55 deletions
@@ -13,7 +13,7 @@ build/main.rom: main.gbasm tileset.gbasm dialogues.gbasm gbasm $< $@ run: build/main.rom - gb $< + gb $< sameboy: build/main.rom sameboy build/main.rom diff --git a/attacks.gbasm b/attacks.gbasm index 168285a..607bbf9 100644 --- a/attacks.gbasm +++ b/attacks.gbasm @@ -1,39 +1,30 @@ Preload_Map_Hop: - LD C, $01 - Preload_Map_Hop.loop: - PUSH BC - - ; Getting the +1/-1 value of the direction to B - LD A, $mem_bunny_direction - AND $07 - DEC A - AND $01 - SLA A - DEC A - LD B, A - - LD A, $mem_bunny_direction - AND $07 - DEC A - - BIT 1, A - DBG - JR NZ, =Preload_Map_Hop.Map_Load.vertical - - Preload_Map_Hop.Map_Load.horizontal: - CALL =Load_Next_Block_Column - JR =Preload_Map_Hop.Map_Load.End - - Preload_Map_Hop.Map_Load.vertical: - CALL =Load_Next_Block_Row - - Preload_Map_Hop.Map_Load.End: - CALL =Display_Prepared_Block - POP BC - INC C - LD A, $10 - CP C - JR NZ, =Preload_Map_Hop.loop + LD A, $mem_loading_step + LD C, A + ; Getting the +1/-1 value of the direction to B + LD A, $mem_bunny_direction + AND $07 + DEC A + AND $01 + SLA A + DEC A + LD B, A + + LD A, $mem_bunny_direction + AND $07 + DEC A + + BIT 1, A + JR NZ, =Preload_Map_Hop.Map_Load.vertical + + Preload_Map_Hop.Map_Load.horizontal: + CALL =Load_Next_Block_Column + JR =Preload_Map_Hop.Map_Load.End + + Preload_Map_Hop.Map_Load.vertical: + CALL =Load_Next_Block_Row + + Preload_Map_Hop.Map_Load.End: RET Hop_Attack_Loading_VBlank: @@ -41,7 +32,28 @@ Hop_Attack_Loading_VBlank: CP $enum_loading_mode RET NZ - CALL =Preload_Map_Hop + LD A, $mem_loading_step + CP $00 + JP Z, =Hop_Attack_Loading_VBlank.Skip_Display_Block + + LD A, $mem_map_loading_flags + BIT 2, A + RET Z + + CALL =Display_Prepared_Block + + LD A, $mem_prepared_loading_block_tile + LD $mem_prepared_block_tile, A + LD A, $mem_prepared_loading_block_position_1 + LD $mem_prepared_block_position_1, A + LD A, $mem_prepared_loading_block_position_2 + LD $mem_prepared_block_position_2, A + + LD A, $mem_map_loading_flags + SET 2, A + LD $mem_map_loading_flags, A + + CALL =Display_Prepared_Block LD A, $mem_bunny_direction AND $07 @@ -50,14 +62,14 @@ Hop_Attack_Loading_VBlank: LD B, A LD A, $mem_viewport_y LD C, A - LD A, $01 + LD A, $02 .ADD_A_TO_DIRECTION_BC LD A, B LD $mem_viewport_x, A LD A, C LD $mem_viewport_y, A - CALL =Preload_Map_Hop + CALL =Display_Object LD A, $mem_bunny_direction AND $07 @@ -66,7 +78,7 @@ Hop_Attack_Loading_VBlank: LD B, A LD A, $mem_viewport_y LD C, A - LD A, $FF + LD A, $FE .ADD_A_TO_DIRECTION_BC LD A, B LD $mem_viewport_x, A @@ -74,6 +86,16 @@ Hop_Attack_Loading_VBlank: LD $mem_viewport_y, A + + Hop_Attack_Loading_VBlank.Skip_Display_Block: + + LD A, $mem_loading_step + INC A + AND $0f + LD $mem_loading_step, A + CP $00 + RET NZ + LD A, $enum_dungeon_mode LD $mem_current_mode, A LD $mem_requested_mode, A @@ -90,4 +112,47 @@ Hop_Attack_Loading_VBlank: RET Hop_Attack_Loading_Regular: + LD A, $mem_current_mode + CP $enum_loading_mode + RET NZ + + CALL =Preload_Map_Hop + + LD A, $mem_prepared_block_tile + LD $mem_prepared_loading_block_tile, A + LD A, $mem_prepared_block_position_1 + LD $mem_prepared_loading_block_position_1, A + LD A, $mem_prepared_block_position_2 + LD $mem_prepared_loading_block_position_2, A + + LD A, $mem_bunny_direction + AND $07 + LD D, A + LD A, $mem_viewport_x + LD B, A + LD A, $mem_viewport_y + LD C, A + LD A, $01 + .ADD_A_TO_DIRECTION_BC + LD A, B + LD $mem_viewport_x, A + LD A, C + LD $mem_viewport_y, A + + CALL =Preload_Map_Hop + + LD A, $mem_bunny_direction + AND $07 + LD D, A + LD A, $mem_viewport_x + LD B, A + LD A, $mem_viewport_y + LD C, A + LD A, $FF + .ADD_A_TO_DIRECTION_BC + LD A, B + LD $mem_viewport_x, A + LD A, C + LD $mem_viewport_y, A + RET diff --git a/definitions.gbasm b/definitions.gbasm index 04daa19..97f1e93 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -69,6 +69,11 @@ .DEFINE dialogue_menu_choice3_routine $c01e ; Takes also $c01f .DEFINE mem_last_button_action ($c020) +.DEFINE mem_loading_step ($c021) + +.DEFINE mem_prepared_loading_block_tile ($c022) +.DEFINE mem_prepared_loading_block_position_1 ($c023) +.DEFINE mem_prepared_loading_block_position_2 ($c024) .DEFINE next_free_head_higher_bytes $c7 .DEFINE mem_next_free_head_lower_bytes ($c6ff) diff --git a/entity/bunny.gbasm b/entity/bunny.gbasm index 7726bd8..e5106e2 100644 --- a/entity/bunny.gbasm +++ b/entity/bunny.gbasm @@ -136,7 +136,7 @@ Move_Bunny: BIT 3, A JP Z, =Middle_movement_doublespeed_viewport_update.end LD A, $mem_moving_animation_step - CP $08 + CP $07 JP NZ, =Middle_movement_doublespeed_viewport_update.end LD A, $mem_bunny_direction BIT 3, A diff --git a/entity/display.gbasm b/entity/display.gbasm index ada77e2..ce176a4 100644 --- a/entity/display.gbasm +++ b/entity/display.gbasm @@ -97,8 +97,9 @@ Display_Entity: Display_Entity.Viewport_offset_left: LD A, $mem_prepared_viewport_x - SUB $08 + SUB $09 AND $0f + INC A XOR $ff INC A ADD $10 @@ -121,8 +122,9 @@ Display_Entity: Display_Entity.Viewport_offset_up: LD A, $mem_prepared_viewport_y - SUB $08 + SUB $09 AND $0f + INC A XOR $ff INC A ADD $10 @@ -199,7 +201,7 @@ Display_Entity: SLA A CPL INC A - ADD $16 + ADD $10 CPL INC A ADD C @@ -191,10 +191,6 @@ Check_Open_Menu_button: LD A, $01 LD $mem_display_flag, A - LD A, $mem_bunny_direction - AND $0f - LD $mem_bunny_direction, A - LD A, $enum_dungeon_menu_mode LD $mem_requested_mode, A RET @@ -111,17 +111,18 @@ VBLANK_Entrypoint: LD A, $68 LD (HL), A + CALL $OAM_DMA_Transfer_routine + CALL =Hop_Attack_Loading_VBlank + LD A, $mem_current_mode CP $enum_dungeon_mode JR NZ, =Skip_VBlank_Dungeon_Update - ; CALL =Display_Prepared_Block + CALL =Display_Prepared_Block CALL =Display_Object Skip_VBlank_Dungeon_Update: - CALL =Hop_Attack_Loading_VBlank CALL =Copy_Dialogue_Buffer CALL =Display_dialogue_cursor - CALL $OAM_DMA_Transfer_routine ; LYC LD A, $09 @@ -138,10 +139,11 @@ VBLANK_Entrypoint: CALL =Object_Interactions_Check CALL =Entities_Actions - ; CALL =Prepare_Scrolling_Map + CALL =Prepare_Scrolling_Map Skip_Dungeon_Update: + CALL =Hop_Attack_Loading_Regular CALL =Update_Animation_Steps CALL =Check_Open_Menu_button CALL =Move_dialogue_cursor diff --git a/map/objects.gbasm b/map/objects.gbasm index 5e79eab..adcfaa9 100644 --- a/map/objects.gbasm +++ b/map/objects.gbasm @@ -79,7 +79,6 @@ Stairs_action: Display_Object: LD HL, $mem_object_list - Display_Objects.loop: LD A, $mem_object_load_counter INC A AND $0f @@ -99,7 +98,7 @@ Display_Object: SUB $83 CP D JR NC, =Display_Objects.End - ADD $10 + ADD $0e CP D JR C, =Display_Objects.End LD A, D @@ -113,7 +112,7 @@ Display_Object: SUB $83 CP B JR NC, =Display_Objects.End - ADD $10 + ADD $0e CP B JR C, =Display_Objects.End LD A, B |