Add minecart track objects, housekeeping
This commit is contained in:
88
Dungeons/Objects/object_handler.asm
Normal file
88
Dungeons/Objects/object_handler.asm
Normal file
@@ -0,0 +1,88 @@
|
||||
; Dungeon Object Handler
|
||||
|
||||
org $018262 ;object id 0x31
|
||||
dw ExpandedObject
|
||||
|
||||
|
||||
org $01B53C
|
||||
ExpandedObject:
|
||||
JSL NewObjectsCode
|
||||
RTS
|
||||
|
||||
|
||||
org $2C8000
|
||||
NewObjectsCode:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
PHX
|
||||
LDA $00 : PHA
|
||||
LDA $02 : PHA
|
||||
; $00 Will be used for tile count and tile to skip
|
||||
LDA $B2 : ASL #2 : ORA $B4
|
||||
|
||||
;get the offset for the object data based on the object height
|
||||
ASL : TAX
|
||||
LDA .ObjOffset, X
|
||||
TAX
|
||||
|
||||
.lineLoop
|
||||
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
|
||||
|
||||
-- ;Tiles Loop
|
||||
INX : INX
|
||||
|
||||
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
|
||||
+
|
||||
|
||||
BRA --
|
||||
|
||||
.Done
|
||||
|
||||
PLA : STA $02
|
||||
PLA : STA $00 ;Not sure if needed
|
||||
|
||||
PLX
|
||||
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
|
||||
|
||||
.ObjData
|
||||
.LeftRight
|
||||
incbin track_LR.bin
|
||||
.UpDown
|
||||
incbin track_UD.bin
|
||||
.TopLeft
|
||||
incbin track_corner_TL.bin
|
||||
.TopRight
|
||||
incbin track_corner_TR.bin
|
||||
.Bottomleft
|
||||
incbin track_corner_BL.bin
|
||||
.BottomRight
|
||||
incbin track_corner_BR.bin
|
||||
|
||||
}
|
||||
|
||||
pushpc
|
||||
BIN
Dungeons/Objects/track_LR.bin
Normal file
BIN
Dungeons/Objects/track_LR.bin
Normal file
Binary file not shown.
BIN
Dungeons/Objects/track_UD.bin
Normal file
BIN
Dungeons/Objects/track_UD.bin
Normal file
Binary file not shown.
BIN
Dungeons/Objects/track_corner_BL.bin
Normal file
BIN
Dungeons/Objects/track_corner_BL.bin
Normal file
Binary file not shown.
BIN
Dungeons/Objects/track_corner_BR.bin
Normal file
BIN
Dungeons/Objects/track_corner_BR.bin
Normal file
Binary file not shown.
BIN
Dungeons/Objects/track_corner_TL.bin
Normal file
BIN
Dungeons/Objects/track_corner_TL.bin
Normal file
Binary file not shown.
BIN
Dungeons/Objects/track_corner_TR.bin
Normal file
BIN
Dungeons/Objects/track_corner_TR.bin
Normal file
Binary file not shown.
Reference in New Issue
Block a user