diff options
-rw-r--r-- | definitions.gbasm | 9 | ||||
-rw-r--r-- | entity/actions.gbasm | 16 | ||||
-rw-r--r-- | gui.gbasm | 18 | ||||
-rw-r--r-- | main.gbasm | 17 |
4 files changed, 51 insertions, 9 deletions
diff --git a/definitions.gbasm b/definitions.gbasm index 9e2358c..ba623bd 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -52,6 +52,10 @@ .DEFINE mem_display_flag ($c013) ; bit 0: if dialogue box is displayed +.DEFINE mem_current_mode ($c014) +.DEFINE enum_dungeon_mode $00 +.DEFINE enum_dungeon_menu_mode $01 + .DEFINE next_free_head_higher_bytes $c7 .DEFINE mem_next_free_head_lower_bytes ($c6ff) @@ -90,6 +94,11 @@ .DEFINE mem_oam_buffer $ca00 ; Until $ca9f .DEFINE mem_oam_buffer_high $ca +.DEFINE dialogue_buffer $caa0 ; Until $cad6 +.DEFINE dialogue_first_line $caa0 +.DEFINE dialogue_second_line $cab2 +.DEFINE dialogue_third_line $cac4 + .DEFINE mem_entities_list $cb00 ; Until cbff ; struct entity { ; sprite: u8, diff --git a/entity/actions.gbasm b/entity/actions.gbasm index f70c320..cf8cab8 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -113,11 +113,11 @@ Fox_Interaction: RET Open_Dialogue: - LD HL, $9dc1 + LD HL, $dialogue_first_line LD BC, =Bunny_Prefix CALL =Print_str - LD HL, $9e01 + LD HL, $dialogue_third_line LD BC, =Text_1 CALL =Print_str @@ -127,6 +127,9 @@ Open_Dialogue: LD A, $mem_bunny_direction AND $0f LD $mem_bunny_direction, A + + LD A, $enum_dungeon_menu_mode + LD $mem_current_mode, A RET Fox_Turn: @@ -196,13 +199,16 @@ Fox_Turn: LD D, E LD A, $mem_bunny_health - DEC A + SUB $01 + JR C, =Fox_Turn.health_underflow_fix DAA - JR NC, =Fox_Turn.Skip_health_underflow_fix + LD $mem_bunny_health, A + JR =Fox_Turn.Skip_health_underflow_fix + Fox_Turn.health_underflow_fix: LD A, $00 - Fox_Turn.Skip_health_underflow_fix: LD $mem_bunny_health, A + Fox_Turn.Skip_health_underflow_fix: JP =Fox_Turn.Check_Collision diff --git a/gui.gbasm b/gui.gbasm new file mode 100644 index 0000000..cb0f50a --- /dev/null +++ b/gui.gbasm @@ -0,0 +1,18 @@ +Copy_Dialogue_Buffer: + LD A, $mem_display_flag + BIT 0, A + RET Z + LD HL, $9dc1 + LD DE, $dialogue_first_line + LD BC, $12 + CALL =memcpy + + LD HL, $9de1 + LD DE, $dialogue_second_line + LD BC, $12 + CALL =memcpy + + LD HL, $9e01 + LD DE, $dialogue_third_line + LD BC, $12 + JP =memcpy @@ -107,6 +107,7 @@ VBLANK_Entrypoint: CALL =Display_Prepared_Block CALL =Display_Object + CALL =Copy_Dialogue_Buffer CALL $OAM_DMA_Transfer_routine ; LYC @@ -116,14 +117,21 @@ VBLANK_Entrypoint: .RESET_STAT_INTERRUPT EI - CALL =Object_Interactions_Check - CALL =Pad_Button_Check - CALL =Entities_Actions - CALL =Update_Animation_Steps + LD A, $mem_current_mode + CP $enum_dungeon_mode + JR NZ, =Skip_Dungeon_Update + + CALL =Object_Interactions_Check + CALL =Entities_Actions CALL =Prepare_Scrolling_Map + + Skip_Dungeon_Update: + + CALL =Update_Animation_Steps CALL =Display_Entities + .ENABLE_VBLANK_INTERRUPTS RET @@ -181,5 +189,6 @@ STAT_Entrypoint: .INCLUDE "entity/actions.gbasm" .INCLUDE "entity/collisions.gbasm" .INCLUDE "entity/display.gbasm" +.INCLUDE "gui.gbasm" .INCLUDE "tileset.gbasm" .INCLUDE "dialogues.gbasm" |