diff options
author | Astatin <[email protected]> | 2024-08-08 19:30:15 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-08-08 19:30:15 +0900 |
commit | bdd60c734a477fc76e4398d9367d7071326d64aa (patch) | |
tree | 317c8c351f48d1fe886e39f014cb30c003fa33e4 | |
parent | a993a0f632dfddcd5bf55bd4219492a66f22d5d1 (diff) |
Add Is_Solid routine
-rw-r--r-- | RAM_Var_map | 8 | ||||
-rw-r--r-- | bunny.gbasm | 27 | ||||
-rw-r--r-- | definitions.gbasm | 21 | ||||
-rw-r--r-- | main.gbasm | 2 | ||||
-rw-r--r-- | map.gbasm | 79 | ||||
-rw-r--r-- | tiles.gbasm | 10 |
6 files changed, 120 insertions, 27 deletions
diff --git a/RAM_Var_map b/RAM_Var_map deleted file mode 100644 index 2399897..0000000 --- a/RAM_Var_map +++ /dev/null @@ -1,8 +0,0 @@ -FF80 = Bunny X position (on the screen in px) -FF81 = Bunny Y position (on the screen in px) -FF82 = Current Button Direction (Up = 1, Right = 2, Down = 3, Left = 4) -FF83 = Current Sprite Direction (Moving) -FF84 = Px step inside of grid (0x00 to 0x0f) -FF85 = Last Sprite Direction -FF86 = Bunny X position (in tiles) -FF87 = Bunny Y position (in tiles) diff --git a/bunny.gbasm b/bunny.gbasm index eb4e574..c6a06de 100644 --- a/bunny.gbasm +++ b/bunny.gbasm @@ -1,4 +1,10 @@ Initialize_Bunny: + LD A, $05 + LD $mem_bunny_x, A + LD A, $04 + LD $mem_bunny_y, A + LD A, $08 + LD $reg_viewport_x, A LD A, $50 LD $mem_bunny_x_px, A LD A, $50 @@ -6,6 +12,7 @@ Initialize_Bunny: RET Move_Bunny: + LD C, $00 ; (bit 0 = has_scrolled) LD A, $mem_moving_sprite_direction CP $00 JR NZ, =Move_Bunny.check_direction @@ -13,7 +20,7 @@ Move_Bunny: LD A, $mem_button_direction LD $mem_moving_sprite_direction, A CP $00 - JR Z, =Move_Bunny.end + JP Z, =Move_Bunny.end Move_Bunny.check_direction: LD $mem_sprite_direction, A @@ -39,6 +46,7 @@ Move_Bunny: LD $mem_bunny_x_px, A JP =Move_Bunny.check_end_of_movement Move_Bunny.horizontal_px_move.scrolling_fallback: + SET 0, C LD A, $reg_viewport_x ADD B LD $reg_viewport_x, A @@ -55,6 +63,7 @@ Move_Bunny: LD $mem_bunny_y_px, A JP =Move_Bunny.check_end_of_movement Move_Bunny.vertical_px_move.scrolling_fallback: + SET 0, C LD A, $reg_viewport_y ADD B LD $reg_viewport_y, A @@ -74,12 +83,24 @@ Move_Bunny: JR NZ, =Move_Bunny.vertical_tile_move Move_Bunny.horizontal_tile_move: + BIT 0, C + JR Z, =Move_Bunny.horizontal_tile_move.move_viewport_end + LD A, $mem_viewport_x + ADD B + LD $mem_viewport_x, A + Move_Bunny.horizontal_tile_move.move_viewport_end: LD A, $mem_bunny_x ADD B LD $mem_bunny_x, A JP =Move_Bunny.end Move_Bunny.vertical_tile_move: + BIT 0, C + JR Z, =Move_Bunny.vertical_tile_move.move_viewport_end + LD A, $mem_viewport_y + ADD B + LD $mem_viewport_y, A + Move_Bunny.vertical_tile_move.move_viewport_end: LD A, $mem_bunny_y ADD B LD $mem_bunny_y, A @@ -88,11 +109,11 @@ Move_Bunny: RET Display_Bunny: ; X position in $81, Y position in $80 - LD A, $mem_bunny_x + LD A, $mem_viewport_x LD HL, $9840 CALL =Print_8bit - LD A, $mem_bunny_y + LD A, $mem_viewport_y LD HL, $9860 CALL =Print_8bit diff --git a/definitions.gbasm b/definitions.gbasm index 035e5d9..8e9ea5b 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -9,14 +9,19 @@ .DEFINE VRAM_start $8000 .DEFINE OAM_start $FE00 -.DEFINE mem_bunny_x_px ($80) -.DEFINE mem_bunny_y_px ($81) -.DEFINE mem_button_direction ($82) -.DEFINE mem_moving_sprite_direction ($83) -.DEFINE mem_moving_animation_step ($84) -.DEFINE mem_sprite_direction ($85) -.DEFINE mem_bunny_x ($86) -.DEFINE mem_bunny_y ($87) +.DEFINE mem_bunny_x_px ($c000) +.DEFINE mem_bunny_y_px ($c001) +.DEFINE mem_button_direction ($c002) +.DEFINE mem_moving_sprite_direction ($c003) +.DEFINE mem_moving_animation_step ($c004) +.DEFINE mem_sprite_direction ($c005) +.DEFINE mem_bunny_x ($c006) +.DEFINE mem_bunny_y ($c007) +.DEFINE mem_viewport_x ($c008) +.DEFINE mem_viewport_y ($c009) + +.DEFINE mem_room_number ($c7ff) ; AND 0xf gives the size of $c800 +.DEFINE mem_room_array $c800 ; Takes the memory from c800 to c81f .DEFINE enum_direction_left $01 .DEFINE enum_direction_right $02 @@ -3,8 +3,8 @@ Entrypoint: CALL =Load_Tile - CALL =Load_Map CALL =Initialize_Bunny + CALL =Load_Map EI Wait_for_VRAM.loop: @@ -1,8 +1,33 @@ Load_Map: LD DE, $9800 - LD B, $40 Load_Map.loop: + LD C, E + LD A, D + AND 0x03 + LD B, A + PUSH BC + + SRA B + RR C + SRA B + RR C + SRA C + SRA C + SRA C + SRA C + LD A, C + + POP BC + LD B, A + LD A, C + SRA A + AND $0f + + CALL =Is_Solid + CP $00 + JR Z, =Load_Map.loop.next + LD A, E AND $20 SRL A @@ -16,11 +41,55 @@ Load_Map: OR $20 LD (DE), A - + + Load_Map.loop.next: + INC DE - DEC B - LD A, $00 - CP B + LD A, $9c + CP D JR NZ =Load_Map.loop + LD DE, $9853 + LD A, $24 + LD (DE), A + LD DE, $9854 + LD A, $25 + LD (DE), A + LD DE, $9873 + LD A, $26 + LD (DE), A + LD DE, $9874 + LD A, $27 + LD (DE), A + + RET + +Is_Solid: ; X in A, Y in B, Result A + PUSH BC + PUSH DE + + CP $10 + JR NC, =Is_Solid.Not_Empty + + CP $02 + JR C, =Is_Solid.Not_Empty + + LD A, B + + CP $10 + JR NC, =Is_Solid.Not_Empty + + CP $02 + JR C, =Is_Solid.Not_Empty + + Is_Solid.Empty: + LD A, $00 + + JP =Is_Solid.End + Is_Solid.Not_Empty: + LD A, $01 + + Is_Solid.End: + POP DE + POP BC RET diff --git a/tiles.gbasm b/tiles.gbasm index 7db9168..4769e2a 100644 --- a/tiles.gbasm +++ b/tiles.gbasm @@ -1,10 +1,16 @@ BG_Tile_Image_Data: - ; Leaf wall + ; Leaf wall front .DB $ff, $b3, $4c, $ff, $28, $d7, $ba, $47, $e4, $ef, $41, $ff, $47, $b8, $cd, $3d .DB $bd, $5a, $e7, $fd, $2a, $d7, $aa, $6d, $82, $fe, $83, $ff, $bc, $c7, $c3, $ee .DB $70, $7f, $82, $ff, $2d, $d3, $58, $af, $6d, $1a, $fc, $bd, $e7, $e7, $00, $00 .DB $13, $ff, $76, $df, $35, $ba, $48, $fd, $69, $d7, $e7, $ef, $bc, $bc, $00, $00 + ; Leaf wall side + .DB $2d, $2d, $3b, $37, $7b, $7f, $75, $6e, $5d, $5e, $75, $6d, $3f, $3b, $73, $7f + .DB $8a, $b9, $e7, $1c, $d4, $af, $a4, $df, $f2, $ef, $d3, $ae, $09, $7c, $53, $be + .DB $6f, $7d, $5a, $5b, $6b, $7d, $3b, $37, $2f, $27, $77, $7f, $4c, $5d, $77, $6e + .DB $83, $ff, $ea, $ef, $d9, $b6, $1d, $7c, $61, $be, $99, $ef, $8e, $df, $d6, $6d + OBJ_Tile_Image_Data: ; Bunny Side .DB $00, $00, $44, $44, $aa, $ee, $aa, $ee, $fe, $b2, $fc, $b4, $fc, $94, $75, $4d @@ -63,7 +69,7 @@ Load_Tile: CALL =Load_Number_Font LD HL, $8200 LD DE, =BG_Tile_Image_Data - LD BC, $0040 + LD BC, $0080 CALL =memcpy RET |