diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | RAM_Var_map | 9 | ||||
-rw-r--r-- | bunny.gbasm | 59 |
3 files changed, 62 insertions, 10 deletions
@@ -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 |