aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--RAM_Var_map9
-rw-r--r--bunny.gbasm59
3 files changed, 62 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index 34b242a..a0222e4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,8 @@
all: run
-build/%.rom: %.gbasm
+.PHONY: build/main.rom clean
+
+build/main.rom: main.gbasm
mkdir -p build
gbasm $< $@
diff --git a/RAM_Var_map b/RAM_Var_map
index ed1049b..fdcdc0f 100644
--- a/RAM_Var_map
+++ b/RAM_Var_map
@@ -1,3 +1,6 @@
-FF80 = Bunny Y position (in px)
-FF81 = Bunny X position (in px)
-FF82 = Current Direction (Up = 1, Right = 2, Down = 3, Left = 4)
+FF80 = Bunny X position (in px)
+FF81 = Bunny Y position (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
diff --git a/bunny.gbasm b/bunny.gbasm
index b2e6ca3..62ee751 100644
--- a/bunny.gbasm
+++ b/bunny.gbasm
@@ -6,11 +6,18 @@ Initialize_Bunny:
RET
Move_Bunny:
+ LD A, ($83)
+ CP $00
+ JR NZ, =Move_Bunny.check_direction
+
LD A, ($82)
+ LD ($83), A
CP $00
- JR Z, =Display_Bunny
+ JR Z, =Move_Bunny.end
Move_Bunny.check_direction:
+ LD ($85), A
+
DEC A
LD B, $01
BIT 0, A
@@ -26,31 +33,68 @@ Move_Bunny:
LD A, ($81)
ADD B
LD ($81), A
- JP =Move_Bunny.end
+ JP =Move_Bunny.check_end_of_movement
Move_Bunny.vertical_move:
LD A, ($80)
ADD B
LD ($80), A
+ Move_Bunny.check_end_of_movement:
+ AND $0f
+ LD ($84), A
+ JR NZ, =Move_Bunny.end
+ LD ($83), A
+
Move_Bunny.end:
RET
-Display_Bunny: ; X position in B, Y position in C
+Display_Bunny: ; X position in $81, Y position in $80
LD A, ($81)
LD B, A
+
LD A, ($80)
LD C, A
+ LD A, ($84)
+
+ SUB $08
+ BIT 7, A
+ JR Z, =Display_Bunny.Hop_ABS1_end
+
+ ; Adding hop animation to Y
+ XOR $ff
+ INC A
+ Display_Bunny.Hop_ABS1_end:
+ SUB $04
+ BIT 7, A
+ JR Z, =Display_Bunny.Hop_ABS2_end
+ XOR $ff
+ INC A
+ Display_Bunny.Hop_ABS2_end:
+ ADD C
+
+ LD C, A
+ ; X flip
+ LD A, ($85)
+ CP $02
+ LD E, $01
+ LD D, $00
+ JR NZ, =Display_Bunny.Write_OBJ
+ LD D, $20
+ LD E, $03
+
+ Display_Bunny.Write_OBJ:
; First OBJ (left)
LD HL, $FE00
LD A, C
LD (HL+), A
LD A, B
LD (HL+), A
- LD A, $01
+ LD A, E
+ LD (HL+), A
+ LD A, D
LD (HL+), A
- INC HL
; Second OBJ
LD A, B
@@ -61,6 +105,9 @@ Display_Bunny: ; X position in B, Y position in C
LD (HL+), A
LD A, B
LD (HL+), A
- LD A, $03
+ LD A, E
+ XOR $02
+ LD (HL+), A
+ LD A, D
LD (HL+), A
RET