87 lines
1.3 KiB
NASM
87 lines
1.3 KiB
NASM
pushpc
|
|
org $06FFF8 ; New Jumptable for sprites
|
|
NewMainSprFunction:
|
|
JSL SpriteActiveExp_MainLong
|
|
RTS
|
|
|
|
org $068EB9
|
|
NewSprPrepFunction:
|
|
JSL Sprite_PrepExp_Long
|
|
RTS
|
|
pullpc
|
|
|
|
|
|
SpriteActiveExp_MainLong:
|
|
{
|
|
PHB : PHK : PLB
|
|
|
|
JSL NewSprTable
|
|
|
|
PLB
|
|
|
|
RTL
|
|
}
|
|
|
|
NewSprTable:
|
|
{
|
|
LDA $0E20, X ; Load Sprite ID
|
|
REP #$30
|
|
AND.w #$00FF
|
|
STA $06
|
|
ASL A ; *2
|
|
CLC : ADC $06 ; *3
|
|
TAY
|
|
|
|
LDA NewSprRoutinesLong, Y ; Load sprite Address
|
|
STA $06
|
|
SEP #$20 ; Previously SEP #$30 -_- (that's fine for sprites below ~0x40 over that it will crash)
|
|
LDA NewSprRoutinesLong+2, Y
|
|
STA $08
|
|
SEP #$30
|
|
JMP [$0006]
|
|
|
|
;do a JML and sprite will RTL back to previous code
|
|
}
|
|
|
|
Sprite_PrepExp_Long:
|
|
{
|
|
PHB : PHK : PLB
|
|
|
|
JSL NewSprPrepTable
|
|
|
|
PLB
|
|
|
|
RTL
|
|
}
|
|
|
|
NewSprPrepTable:
|
|
{
|
|
LDA $0E20, X ; Load Sprite ID
|
|
REP #$30
|
|
AND.w #$00FF
|
|
STA $06
|
|
ASL A ; *2
|
|
CLC : ADC $06 ; *3
|
|
TAY
|
|
|
|
LDA NewSprPrepRoutinesLong, Y ; Load sprite Address
|
|
STA $06
|
|
SEP #$20 ; Previously SEP #$30 -_- (that's fine for sprites below ~0x40 over that it will crash)
|
|
LDA NewSprPrepRoutinesLong+2, Y
|
|
STA $08
|
|
SEP #$30
|
|
JMP [$0006]
|
|
}
|
|
|
|
NewSprRoutinesLong:
|
|
{
|
|
fillbyte $00
|
|
fill $2FD
|
|
}
|
|
|
|
NewSprPrepRoutinesLong:
|
|
{
|
|
fillbyte $00
|
|
fill $2FD
|
|
}
|