aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-10-22 18:01:00 +0900
committerAstatin <[email protected]>2024-10-22 18:01:00 +0900
commit5513939c6077032f625c2de98f395026caf063b1 (patch)
tree8f247591201ab9804c31990674cb444cf87ec089
parentf5183a78e20deaa9a294250873f3b5ee5cedafa3 (diff)
Add white window at the top for future health bar
-rw-r--r--definitions.gbasm4
-rw-r--r--entity/bunny.gbasm8
-rw-r--r--entity/display.gbasm8
-rw-r--r--entity/init.gbasm4
-rw-r--r--init.gbasm17
-rw-r--r--main.gbasm29
6 files changed, 56 insertions, 14 deletions
diff --git a/definitions.gbasm b/definitions.gbasm
index da0a9ab..4ce2524 100644
--- a/definitions.gbasm
+++ b/definitions.gbasm
@@ -1,6 +1,7 @@
.DEFINE reg_joypad ($00)
.DEFINE reg_lcd_controller ($40)
.DEFINE reg_lcd_status ($41)
+.DEFINE reg_lyc ($45)
.DEFINE reg_viewport_y ($42)
.DEFINE reg_viewport_x ($43)
.DEFINE reg_bg_palette ($47)
@@ -20,6 +21,7 @@
.DEFINE mem_bunny_x ($cb01)
.DEFINE mem_bunny_y ($cb02)
.DEFINE mem_bunny_direction ($cb03)
+.DEFINE mem_bunny_health ($cb06)
.DEFINE mem_viewport_x ($c008)
.DEFINE mem_viewport_y ($c009)
.DEFINE mem_rng_state_1 ($c00a) ; 2 bytes
@@ -36,6 +38,8 @@
.DEFINE mem_prepared_block_position_2 ($c00f)
.DEFINE mem_object_load_counter ($c010)
+.DEFINE mem_prepared_viewport_x ($c011)
+.DEFINE mem_prepared_viewport_y ($c012)
.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 fa44530..f775aa0 100644
--- a/entity/bunny.gbasm
+++ b/entity/bunny.gbasm
@@ -61,16 +61,16 @@ Move_Bunny:
LD A, $mem_bunny_direction
LD D, A
- LD A, $reg_viewport_x
+ LD A, $mem_prepared_viewport_x
LD B, A
- LD A, $reg_viewport_y
+ LD A, $mem_prepared_viewport_y
LD C, A
LD A, $01
.ADD_A_TO_DIRECTION_BC
LD A, B
- LD $reg_viewport_x, A
+ LD $mem_prepared_viewport_x, A
LD A, C
- LD $reg_viewport_y, A
+ LD $mem_prepared_viewport_y, A
Scroll_viewport.end:
End_movement:
diff --git a/entity/display.gbasm b/entity/display.gbasm
index 67ee30d..a33a6cc 100644
--- a/entity/display.gbasm
+++ b/entity/display.gbasm
@@ -96,7 +96,7 @@ Display_Entity:
JR Z, =Display_Entity.Viewport_offset_up
Display_Entity.Viewport_offset_left:
- LD A, $reg_viewport_x
+ LD A, $mem_prepared_viewport_x
SUB $08
AND $0f
XOR $ff
@@ -108,7 +108,7 @@ Display_Entity:
JR =Display_Entity.Viewport_offset_end
Display_Entity.Viewport_offset_right:
- LD A, $reg_viewport_x
+ LD A, $mem_prepared_viewport_x
SUB $08
AND $0f
XOR $ff
@@ -120,7 +120,7 @@ Display_Entity:
JR =Display_Entity.Viewport_offset_end
Display_Entity.Viewport_offset_up:
- LD A, $reg_viewport_y
+ LD A, $mem_prepared_viewport_y
SUB $08
AND $0f
XOR $ff
@@ -133,7 +133,7 @@ Display_Entity:
JR =Display_Entity.Viewport_offset_end
Display_Entity.Viewport_offset_down:
- LD A, $reg_viewport_y
+ LD A, $mem_prepared_viewport_y
SUB $08
AND $0f
XOR $ff
diff --git a/entity/init.gbasm b/entity/init.gbasm
index 4b5b0fa..4316032 100644
--- a/entity/init.gbasm
+++ b/entity/init.gbasm
@@ -71,13 +71,13 @@ Fix_Bunny_screen:
SWAP A
AND $f0
OR $08
- LD $reg_viewport_x, A
+ LD $mem_prepared_viewport_x, A
LD A, $mem_viewport_y
SWAP A
AND $f0
OR $08
- LD $reg_viewport_y, A
+ LD $mem_prepared_viewport_y, A
RET
diff --git a/init.gbasm b/init.gbasm
index 8a7a5f4..f6a14f0 100644
--- a/init.gbasm
+++ b/init.gbasm
@@ -2,8 +2,11 @@
.PADTO 0x0040
VBlank:
- CALL =VBLANK_Entrypoint
- RETI
+ JP =VBLANK_Entrypoint
+
+.PADTO 0x0048
+STAT:
+ JP =STAT_Entrypoint
.PADTO 0x0100
Start:
@@ -57,9 +60,17 @@ Empty_VRAM: ; (Clear screen)
LD $reg_obj0_palette, A
; Interrupts
- LD A, $01
+ LD A, $03
LD $reg_interrupt_enable, A
+ ; LYC
+ LD A, $0a
+ LD $reg_lyc, A
+
+ ; Set STAT interrupt to LYC = LY
+ LD A, $40
+ LD $reg_lcd_status, A
+
Copy_OAM_DMA_Transfer_Routine_To_HRAM:
LD HL, $OAM_DMA_Transfer_routine
LD DE, =OAM_DMA_Transfer_routine_src
diff --git a/main.gbasm b/main.gbasm
index a3447d2..eed71e3 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -22,9 +22,36 @@ New_Dungeon:
JP =Wait_for_VRAM.loop
VBLANK_Entrypoint:
+ ; Window enable
+ LD A, $reg_lcd_controller
+ OR $60
+ AND $fd
+ LD $reg_lcd_controller, A
+
+ LD A, $00
+ LD $reg_viewport_y, A
+ LD $reg_viewport_x, A
+
+ LD HL, $9c00
+ LD A, $99
+ CALL =Print_8bit
+
CALL =Display_Prepared_Block
CALL =Display_Object
CALL $OAM_DMA_Transfer_routine
+ RETI
+
+STAT_Entrypoint:
+ LD A, $reg_lcd_controller
+ AND $9f
+ OR $02
+ LD $reg_lcd_controller, A
+
+ LD A, $mem_prepared_viewport_x
+ LD $reg_viewport_x, A
+
+ LD A, $mem_prepared_viewport_y
+ LD $reg_viewport_y, A
CALL =Object_Interactions_Check
@@ -34,7 +61,7 @@ VBLANK_Entrypoint:
CALL =Prepare_Scrolling_Map
CALL =Display_Entities
- RET
+ RETI
.INCLUDE "tiles.gbasm"
.INCLUDE "rng.gbasm"