From 57d431e3b75aa6a9f0dc68401d03feb2e31e84c3 Mon Sep 17 00:00:00 2001 From: scawful Date: Thu, 29 Aug 2024 20:23:41 -0400 Subject: [PATCH] refactor object_handler --- Dungeons/Objects/object_handler.asm | 222 ++++++++++++++-------------- 1 file changed, 112 insertions(+), 110 deletions(-) diff --git a/Dungeons/Objects/object_handler.asm b/Dungeons/Objects/object_handler.asm index 2cf950b..e2b50ca 100644 --- a/Dungeons/Objects/object_handler.asm +++ b/Dungeons/Objects/object_handler.asm @@ -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