aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-09-12 15:28:10 +0900
committerAstatin <astatin@redacted>2024-09-12 15:28:10 +0900
commitfd382f7b851d494fd322e2e98bd5ab995dbb7b3f (patch)
treed25336901df9c92bd4c50ac5665a5c0de61c4aea
parentd0401c01144b73a1bfe62ac7e9db902cefd784a5 (diff)
Fix ghost entites bug (bzero but very unoptimized ewww
-rw-r--r--Makefile2
-rw-r--r--bunny.gbasm16
-rw-r--r--definitions.gbasm1
-rw-r--r--entities.gbasm112
-rw-r--r--utils.gbasm18
5 files changed, 89 insertions, 60 deletions
diff --git a/Makefile b/Makefile
index 002e53b..bc4ef54 100644
--- a/Makefile
+++ b/Makefile
@@ -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