diff options
-rw-r--r-- | definitions.gbasm | 4 | ||||
-rw-r--r-- | entity/bunny.gbasm | 8 | ||||
-rw-r--r-- | entity/display.gbasm | 8 | ||||
-rw-r--r-- | entity/init.gbasm | 4 | ||||
-rw-r--r-- | init.gbasm | 17 | ||||
-rw-r--r-- | main.gbasm | 29 |
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 @@ -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 @@ -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" |