aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--definitions.gbasm9
-rw-r--r--entity/actions.gbasm16
-rw-r--r--gui.gbasm18
-rw-r--r--main.gbasm17
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
diff --git a/main.gbasm b/main.gbasm
index 2494d7f..27d9ac7 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -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"