refactor object_handler

This commit is contained in:
scawful
2024-08-29 20:23:41 -04:00
parent 536671d5f4
commit 57d431e3b7

View File

@@ -38,11 +38,11 @@ org $07D938
; Bank01 Free Space
org $01B53C
ExpandedObject:
JSL NewObjectsCode
JSL CustomObjectHandler
RTS
ExpandedObject2:
JSL NewObjectsCode2
JSL CustomObjectHandler2
RTS
SpriteBodyObjects:
@@ -56,7 +56,7 @@ org $01B53C
warnpc $01B560
org $2C8000
NewObjectsCode:
CustomObjectHandler:
{
PHB : PHK : PLB
PHX
@@ -73,31 +73,31 @@ NewObjectsCode:
TAX
.lineLoop
LDA .ObjData, X : BNE .continue
;break
BRA .Done
.continue
PHY ; Keep current position in the buffer
LDA .ObjData, X : BNE .continue
;break
BRA .Done
.continue
PHY ; Keep current position in the buffer
STA $00 ; we save the tile count + tile to skip
STA $00 ; we save the tile count + tile to skip
-- ;Tiles Loop
INX : INX
; Vhopppcc cccccccc
LDA .ObjData, X : BEQ +
STA [$BF], Y
+
-- ;Tiles Loop
INX : INX
; Vhopppcc cccccccc
LDA .ObjData, X : BEQ +
STA [$BF], Y
+
INY : INY
LDA $00 : DEC : STA $00 : AND #$001F : BNE +
LDA $00 : XBA : AND #$00FF : STA $00
PLA ;Pull back position
CLC : ADC $00 : TAY
INX : INX
BRA .lineLoop
+
INY : INY
LDA $00 : DEC : STA $00 : AND #$001F : BNE +
LDA $00 : XBA : AND #$00FF : STA $00
PLA ;Pull back position
CLC : ADC $00 : TAY
INX : INX
BRA .lineLoop
+
BRA --
BRA --
.Done
@@ -108,67 +108,70 @@ NewObjectsCode:
PLB
RTL
.ObjOffset
dw .LeftRight-.ObjData ; 00
dw .UpDown-.ObjData ; 01
dw .TopLeft-.ObjData ; 02
dw .TopRight-.ObjData ; 03
dw .Bottomleft-.ObjData ; 04
dw .BottomRight-.ObjData ; 05
dw .UpDownFloor-.ObjData ; 06
dw .LeftRightFloor-.ObjData ; 07
dw .TopLeftFloor-.ObjData ; 08
dw .TopRightFloor-.ObjData ; 09
dw .BottomleftFloor-.ObjData ; 10
dw .BottomRightFloor-.ObjData ; 11
dw .FloorAny-.ObjData ; 12
dw .WallSwordHouse-.ObjData ; 13
dw .TrackAny-.ObjData ; 14
dw .SmallStatue-.ObjData ; 15
.ObjOffset
dw .LeftRight-.ObjData ; 00
dw .UpDown-.ObjData ; 01
dw .TopLeft-.ObjData ; 02
dw .TopRight-.ObjData ; 03
dw .Bottomleft-.ObjData ; 04
dw .BottomRight-.ObjData ; 05
dw .UpDownFloor-.ObjData ; 06
dw .LeftRightFloor-.ObjData ; 07
dw .TopLeftFloor-.ObjData ; 08
dw .TopRightFloor-.ObjData ; 09
dw .BottomleftFloor-.ObjData ; 10
dw .BottomRightFloor-.ObjData ; 11
dw .FloorAny-.ObjData ; 12
dw .WallSwordHouse-.ObjData ; 13
dw .TrackAny-.ObjData ; 14
dw .SmallStatue-.ObjData ; 15
.ObjData
.LeftRight
incbin Data/track_LR.bin
.UpDown
incbin Data/track_UD.bin
.TopLeft
incbin Data/track_corner_TL.bin
.TopRight
incbin Data/track_corner_TR.bin
.Bottomleft
incbin Data/track_corner_BL.bin
.BottomRight
incbin Data/track_corner_BR.bin
.UpDownFloor
incbin Data/track_floor_UD.bin
.LeftRightFloor
incbin Data/track_floor_LR.bin
.TopLeftFloor
incbin Data/track_floor_corner_TL.bin
.TopRightFloor
incbin Data/track_floor_corner_TR.bin
.BottomleftFloor
incbin Data/track_floor_corner_BL.bin
.BottomRightFloor
incbin Data/track_floor_corner_BR.bin
.FloorAny
incbin Data/track_floor_any.bin
.WallSwordHouse
incbin Data/wall_sword_house.bin
.TrackAny
incbin Data/track_any.bin
.SmallStatue
incbin Data/small_statue.bin
.ObjData
.LeftRight
incbin Data/track_LR.bin
.UpDown
incbin Data/track_UD.bin
.TopLeft
incbin Data/track_corner_TL.bin
.TopRight
incbin Data/track_corner_TR.bin
.Bottomleft
incbin Data/track_corner_BL.bin
.BottomRight
incbin Data/track_corner_BR.bin
.UpDownFloor
incbin Data/track_floor_UD.bin
.LeftRightFloor
incbin Data/track_floor_LR.bin
.TopLeftFloor
incbin Data/track_floor_corner_TL.bin
.TopRightFloor
incbin Data/track_floor_corner_TR.bin
.BottomleftFloor
incbin Data/track_floor_corner_BL.bin
.BottomRightFloor
incbin Data/track_floor_corner_BR.bin
.FloorAny
incbin Data/track_floor_any.bin
.WallSwordHouse
incbin Data/wall_sword_house.bin
.TrackAny
incbin Data/track_any.bin
.SmallStatue
incbin Data/small_statue.bin
}
; TODO: Fix the graphics used for the heavy pot in game
InitHeavyPot:
{
LDA.w #$1010
PHX : LDX.w $042C
LDA.w #$1111 : STA $0500, X
PHX
LDX.w $042C ; MANIPINDEX
LDA.w #$1111 : STA $0500, X ; M16BUFF500
; Store this object's position in the object buffer to $0520, X
LDA $BA : STA $0520, X
; Store it's tilemap position.
TYA : STA $0540, X
RTL
@@ -239,7 +242,7 @@ SpriteObjectsDraw:
}
NewObjectsCode2:
CustomObjectHandler2:
{
PHB : PHK : PLB
PHX
@@ -256,32 +259,31 @@ NewObjectsCode2:
TAX
.lineLoop
LDA .ObjData, X : BNE .continue
;break
BRA .Done
.continue
PHY ; Keep current position in the buffer
LDA .ObjData, X : BNE .continue
;break
BRA .Done
.continue
PHY ; Keep current position in the buffer
STA $00 ; we save the tile count + tile to skip
STA $00 ; we save the tile count + tile to skip
-- ;Tiles Loop
INX : INX
; Vhopppcc cccccccc
LDA .ObjData, X : BEQ +
STA [$BF], Y
+
-- ;Tiles Loop
INX : INX
; Vhopppcc cccccccc
LDA .ObjData, X : BEQ +
STA [$BF], Y
+
INY : INY
LDA $00 : DEC : STA $00 : AND #$001F : BNE +
LDA $00 : XBA : AND #$00FF : STA $00
PLA ;Pull back position
CLC : ADC $00 : TAY
INX : INX
BRA .lineLoop
+
INY : INY
LDA $00 : DEC : STA $00 : AND #$001F : BNE +
LDA $00 : XBA : AND #$00FF : STA $00
PLA ;Pull back position
CLC : ADC $00 : TAY
INX : INX
BRA .lineLoop
+
BRA --
BRA --
.Done
@@ -292,18 +294,18 @@ NewObjectsCode2:
PLB
RTL
.ObjOffset
dw .IceFurnace-.ObjData ; 00
dw .Firewood-.ObjData ; 01
dw .IceChair-.ObjData ; 02
.ObjOffset
dw .IceFurnace-.ObjData ; 00
dw .Firewood-.ObjData ; 01
dw .IceChair-.ObjData ; 02
.ObjData
.IceFurnace
incbin Data/furnace.bin
.Firewood
incbin Data/firewood.bin
.IceChair
incbin Data/ice_chair.bin
.ObjData
.IceFurnace
incbin Data/furnace.bin
.Firewood
incbin Data/firewood.bin
.IceChair
incbin Data/ice_chair.bin
}
pushpc