aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-11-15 17:43:42 +0900
committerAstatin <[email protected]>2024-11-15 17:43:42 +0900
commit1aa36f5ce5bbdbd597456efd4603b83682d27e59 (patch)
tree9469e417060ac4db2c60b8c1c6890994c18bd439
parentcfd36cc6a11923c8863b699e70b90149ad1c731a (diff)
Fix the hop map loading + animation entity + object loading
-rw-r--r--Makefile2
-rw-r--r--attacks.gbasm143
-rw-r--r--definitions.gbasm5
-rw-r--r--entity/bunny.gbasm2
-rw-r--r--entity/display.gbasm8
-rw-r--r--gui.gbasm4
-rw-r--r--main.gbasm10
-rw-r--r--map/objects.gbasm5
8 files changed, 124 insertions, 55 deletions
diff --git a/Makefile b/Makefile
index 1f2ccc5..7b56703 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/gui.gbasm b/gui.gbasm
index d60b08a..cd1b946 100644
--- a/gui.gbasm
+++ b/gui.gbasm
@@ -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
diff --git a/main.gbasm b/main.gbasm
index 7c262d6..a46165a 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -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