diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | bunny.gbasm | 16 | ||||
-rw-r--r-- | definitions.gbasm | 1 | ||||
-rw-r--r-- | entities.gbasm | 112 | ||||
-rw-r--r-- | utils.gbasm | 18 |
5 files changed, 89 insertions, 60 deletions
@@ -10,7 +10,7 @@ build/main.rom: main.gbasm tileset.gbasm gbasm $< $@ run: build/main.rom - gb $< + gb -s 200 $< sameboy: build/main.rom sameboy build/main.rom diff --git a/bunny.gbasm b/bunny.gbasm index 0c72578..b80efd8 100644 --- a/bunny.gbasm +++ b/bunny.gbasm @@ -52,6 +52,22 @@ Initialize_Bunny: LD (HL+), A LD A, C LD (HL+), A + INC HL + INC HL + LD A, $0d + LD (HL+), A + LD A, $10 + LD (HL+), A + LD (HL+), A + LD A, $03 + LD (HL+), A + LD BC, =Fox_AI + LD A, B + LD (HL+), A + LD A, C + LD (HL+), A + INC HL + INC HL Fix_Bunny_screen: LD A, $mem_bunny_x diff --git a/definitions.gbasm b/definitions.gbasm index db861e2..7342611 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -82,7 +82,6 @@ .DEFINE enum_direction_up $03 .DEFINE enum_direction_down $04 - ; HIGH_RAM: ; ; 80-85 ; Free to use as temporary variables diff --git a/entities.gbasm b/entities.gbasm index c8b155c..7b74071 100644 --- a/entities.gbasm +++ b/entities.gbasm @@ -1,29 +1,33 @@ Prepare_Entities: + LD HL, $mem_oam_buffer + LD BC, $00a0 + CALL =bzero LD A, $00 LD $tmp_var_1, A LD HL, $mem_entites_list CALL =Prepare_Entity CALL =Prepare_Entity CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity - CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity + ; CALL =Prepare_Entity RET Prepare_Entity: LD A, (HL+) LD E, A + CP $00 JP Z, =Prepare_Entity.skip @@ -32,10 +36,10 @@ Prepare_Entity: LD D, A LD A, $mem_viewport_x LD B, A - SUB $83 + SUB $82 CP D JP NC, =Prepare_Entity.skip - ADD $10 + ADD $0c CP D JP C, =Prepare_Entity.skip LD A, D @@ -50,10 +54,10 @@ Prepare_Entity: LD D, A LD A, $mem_viewport_y LD C, A - SUB $83 + SUB $82 CP D JP NC, =Prepare_Entity.skip - ADD $10 + ADD $0b CP D JP C, =Prepare_Entity.skip LD A, D @@ -64,7 +68,6 @@ Prepare_Entity: ADD $02 LD C, A - LD A, $mem_bunny_direction BIT 3, A JR Z, =Prepare_Entity.Viewport_offset_end @@ -228,46 +231,45 @@ Prepare_Entity: JP =Prepare_Entity.Write_OBJ Prepare_Entity.Write_OBJ: - PUSH HL - ; First OBJ (left) - LD HL, $mem_oam_buffer - LD A, $tmp_var_1 - LD L, A - LD A, C - LD (HL+), A - LD A, B - LD (HL+), A - LD A, E - INC A - LD (HL+), A - LD A, D - LD (HL+), A - - ; Second OBJ - LD A, B - ADD $08 - LD B, A - - LD A, C - LD (HL+), A - LD A, B - LD (HL+), A - LD A, E - XOR $02 - INC A - LD (HL+), A - LD A, D - LD (HL+), A - LD A, L - LD $tmp_var_1, A - POP HL + PUSH HL + ; First OBJ (left) + LD HL, $mem_oam_buffer + LD A, $tmp_var_1 + LD L, A + LD A, C + LD (HL+), A + LD A, B + LD (HL+), A + LD A, E + INC A + LD (HL+), A + LD A, D + LD (HL+), A + + ; Second OBJ + LD A, B + ADD $08 + LD B, A - INC HL - INC HL - INC HL - INC HL + LD A, C + LD (HL+), A + LD A, B + LD (HL+), A + LD A, E + XOR $02 + INC A + LD (HL+), A + LD A, D + LD (HL+), A + LD A, L + LD $tmp_var_1, A + POP HL Prepare_Entity.skip: + LD A, L + AND $f8 + ADD $08 + LD L, A RET Entities_Behaviours: diff --git a/utils.gbasm b/utils.gbasm index 0f80ce8..e6dba4c 100644 --- a/utils.gbasm +++ b/utils.gbasm @@ -1,14 +1,26 @@ memcpy: ; src = DE, dest = HL, n = BC - Load_Tile.loop0: + memcpy.loop: LD A, (DE) LD (HL+), A INC DE DEC BC XOR A CP B - JR NZ =Load_Tile.loop0 + JR NZ =memcpy.loop CP C - JR NZ =Load_Tile.loop0 + JR NZ =memcpy.loop + RET + +bzero: ; dest = HL, n = BC + LD A, $00 + bzero.loop: + LD (HL+), A + INC DE + DEC BC + CP B + JR NZ =bzero.loop + CP C + JR NZ =bzero.loop RET Print_8bit: ; Number in A, Memory Tilemap position in HL |