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