aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-08-08 19:30:15 +0900
committerAstatin <astatin@redacted>2024-08-08 19:30:15 +0900
commitbdd60c734a477fc76e4398d9367d7071326d64aa (patch)
tree317c8c351f48d1fe886e39f014cb30c003fa33e4
parenta993a0f632dfddcd5bf55bd4219492a66f22d5d1 (diff)
Add Is_Solid routine
-rw-r--r--RAM_Var_map8
-rw-r--r--bunny.gbasm27
-rw-r--r--definitions.gbasm21
-rw-r--r--main.gbasm2
-rw-r--r--map.gbasm79
-rw-r--r--tiles.gbasm10
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
diff --git a/main.gbasm b/main.gbasm
index 36993de..7ef75fd 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -3,8 +3,8 @@
Entrypoint:
CALL =Load_Tile
- CALL =Load_Map
CALL =Initialize_Bunny
+ CALL =Load_Map
EI
Wait_for_VRAM.loop:
diff --git a/map.gbasm b/map.gbasm
index 1a145c5..1ce61ea 100644
--- a/map.gbasm
+++ b/map.gbasm
@@ -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