Update DrawMinecartFollower
This commit is contained in:
@@ -861,6 +861,12 @@ FLWBGFXBH = $7E0AF3
|
|||||||
; Index from 0x00 to 0x13 for follower animation step index. Used for reading data.
|
; Index from 0x00 to 0x13 for follower animation step index. Used for reading data.
|
||||||
FLWANIMIR = $7E02CF
|
FLWANIMIR = $7E02CF
|
||||||
|
|
||||||
|
; Cache of follower properties
|
||||||
|
FOLLOWCYL = $7EF3CD
|
||||||
|
FOLLOWCYH = $7EF3CE
|
||||||
|
FOLLOWCXL = $7EF3CF
|
||||||
|
FOLLOWCXH = $7EF3D0
|
||||||
|
|
||||||
FollowerDraw_CalculateOAMCoords:
|
FollowerDraw_CalculateOAMCoords:
|
||||||
{
|
{
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -888,7 +894,55 @@ FollowerDraw_CalculateOAMCoords:
|
|||||||
|
|
||||||
MinecartFollower_Top:
|
MinecartFollower_Top:
|
||||||
{
|
{
|
||||||
|
SEP #$30
|
||||||
JSR FollowerDraw_CalculateOAMCoords
|
JSR FollowerDraw_CalculateOAMCoords
|
||||||
|
LDA #$08
|
||||||
|
JSL OAM_AllocateFromRegionB
|
||||||
|
|
||||||
|
LDA $02CF : TAY
|
||||||
|
LDA .start_index, Y : STA $06
|
||||||
|
|
||||||
|
PHX
|
||||||
|
LDX .nbr_of_tiles, Y ; amount of tiles -1
|
||||||
|
LDY.b #$00
|
||||||
|
.nextTile
|
||||||
|
|
||||||
|
PHX ; Save current Tile index
|
||||||
|
TXA : CLC : ADC $06 ; Add Animation Index Offset
|
||||||
|
PHA ; Keep the value with animation index offset
|
||||||
|
|
||||||
|
ASL A : TAX
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
|
||||||
|
AND.w #$0100 : STA $0E
|
||||||
|
INY
|
||||||
|
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
|
||||||
|
CLC : ADC #$0010 : CMP.w #$0100
|
||||||
|
SEP #$20
|
||||||
|
BCC .on_screen_y
|
||||||
|
|
||||||
|
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
|
||||||
|
STA $0E
|
||||||
|
.on_screen_y
|
||||||
|
|
||||||
|
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
|
||||||
|
INY
|
||||||
|
LDA .chr, X : STA ($90), Y
|
||||||
|
INY
|
||||||
|
LDA .properties, X : STA ($90), Y
|
||||||
|
|
||||||
|
PHY
|
||||||
|
|
||||||
|
TYA : LSR #2 : TAY
|
||||||
|
|
||||||
|
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
||||||
|
|
||||||
|
PLY : INY
|
||||||
|
PLX : DEX : BPL .nextTile
|
||||||
|
|
||||||
|
PLX
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -928,207 +982,52 @@ MinecartFollower_Bottom:
|
|||||||
SEP #$30
|
SEP #$30
|
||||||
|
|
||||||
JSR FollowerDraw_CalculateOAMCoords
|
JSR FollowerDraw_CalculateOAMCoords
|
||||||
|
LDA #$08
|
||||||
|
JSL OAM_AllocateFromRegionC
|
||||||
|
LDA $02CF : TAY
|
||||||
|
LDA .start_index, Y : STA $06
|
||||||
|
|
||||||
LDA.w .chr+0, X : STA.b ($90), Y
|
PHX
|
||||||
INY
|
LDX .nbr_of_tiles, Y ; amount of tiles -1
|
||||||
|
LDY.b #$00
|
||||||
|
.nextTile
|
||||||
|
|
||||||
LDA.w .chr+1, X : STA.b ($90), Y
|
PHX ; Save current Tile Index?
|
||||||
|
TXA : CLC : ADC $06 ; Add Animation Index Offset
|
||||||
|
PHA ; Keep the value with animation index offset?
|
||||||
|
|
||||||
|
ASL A : TAX
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
|
||||||
|
AND.w #$0100 : STA $0E
|
||||||
INY
|
INY
|
||||||
|
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
|
||||||
|
CLC : ADC #$0010 : CMP.w #$0100
|
||||||
|
SEP #$20
|
||||||
|
BCC .on_screen_y
|
||||||
|
|
||||||
|
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
|
||||||
|
STA $0E
|
||||||
|
.on_screen_y
|
||||||
|
|
||||||
|
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
|
||||||
|
INY
|
||||||
|
LDA .chr, X : STA ($90), Y
|
||||||
|
INY
|
||||||
|
LDA .properties, X : STA ($90), Y
|
||||||
|
|
||||||
PHY
|
PHY
|
||||||
TYA : SEC : SBC.b #$04
|
|
||||||
LSR #2 : TAY
|
|
||||||
LDA.b #$00 : ORA.b $75 : STA.b ($92), Y
|
|
||||||
PLY
|
|
||||||
|
|
||||||
#_09AACE: REP #$20
|
TYA : LSR #2 : TAY
|
||||||
|
|
||||||
#_09AAD0: LDA.b $02
|
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
||||||
#_09AAD2: CLC
|
|
||||||
#_09AAD3: ADC.w #$0008
|
|
||||||
#_09AAD6: STA.b $02
|
|
||||||
|
|
||||||
#_09AAD8: STZ.b $74
|
PLY : INY
|
||||||
|
PLX : DEX : BPL .nextTile
|
||||||
|
|
||||||
#_09AADA: SEP #$20
|
PLX
|
||||||
|
|
||||||
#_09AADC: JSR FollowerDraw_CalculateOAMCoords
|
|
||||||
|
|
||||||
#_09AADF: LDA.w .chr+2,X
|
|
||||||
#_09AAE2: STA.b ($90),Y
|
|
||||||
|
|
||||||
#_09AAE4: INY
|
|
||||||
|
|
||||||
#_09AAE5: LDA.w .chr+3,X
|
|
||||||
#_09AAE8: STA.b ($90),Y
|
|
||||||
|
|
||||||
#_09AAEA: INY
|
|
||||||
|
|
||||||
#_09AAEB: PHY
|
|
||||||
|
|
||||||
#_09AAEC: TYA
|
|
||||||
#_09AAED: SEC
|
|
||||||
#_09AAEE: SBC.b #$04
|
|
||||||
|
|
||||||
#_09AAF0: LSR A
|
|
||||||
#_09AAF1: LSR A
|
|
||||||
#_09AAF2: TAY
|
|
||||||
|
|
||||||
#_09AAF3: LDA.b #$00
|
|
||||||
#_09AAF5: ORA.b $75
|
|
||||||
#_09AAF7: STA.b ($92),Y
|
|
||||||
|
|
||||||
#_09AAF9: PLY
|
|
||||||
|
|
||||||
#_09AB34: REP #$30
|
|
||||||
|
|
||||||
; #_09AB36: PHY
|
|
||||||
|
|
||||||
; #_09AB37: LDA.b $04
|
|
||||||
; #_09AB39: AND.w #$00FF
|
|
||||||
; #_09AB3C: ASL A
|
|
||||||
; #_09AB3D: ASL A
|
|
||||||
; #_09AB3E: ASL A
|
|
||||||
; #_09AB3F: TAY
|
|
||||||
|
|
||||||
; #_09AB40: LDA.l $7EF3CC
|
|
||||||
; #_09AB44: AND.w #$00FF
|
|
||||||
; #_09AB47: ASL A
|
|
||||||
; #_09AB48: TAX
|
|
||||||
|
|
||||||
; #_09AB49: TYA
|
|
||||||
; #_09AB4A: CLC
|
|
||||||
; #_09AB4B: ADC.w .char_data_offset,X
|
|
||||||
; #_09AB4E: TAX
|
|
||||||
|
|
||||||
; #_09AB4F: LDA.w .x_offsets+0,X
|
|
||||||
; #_09AB52: CLC
|
|
||||||
; #_09AB53: ADC.b $06
|
|
||||||
; #_09AB55: STA.b $00
|
|
||||||
|
|
||||||
; #_09AB57: LDA.w .x_offsets+2,X
|
|
||||||
; #_09AB5A: CLC
|
|
||||||
; #_09AB5B: ADC.b $08
|
|
||||||
; #_09AB5D: STA.b $02
|
|
||||||
|
|
||||||
; #_09AB5F: PLY
|
|
||||||
|
|
||||||
#_09AB60: SEP #$30
|
|
||||||
|
|
||||||
#_09AB62: JSR FollowerDraw_CalculateOAMCoords
|
|
||||||
|
|
||||||
#_09AB65: LDA.b #$20
|
|
||||||
#_09AB67: STA.b ($90),Y
|
|
||||||
|
|
||||||
#_09AB69: INY
|
|
||||||
|
|
||||||
#_09AB6A: LDA.b $04
|
|
||||||
#_09AB6C: ASL A
|
|
||||||
#_09AB6D: CLC
|
|
||||||
#_09AB6E: ADC.b $04
|
|
||||||
#_09AB70: TAX
|
|
||||||
|
|
||||||
#_09AB71: LDA.w .properties+0,X
|
|
||||||
#_09AB74: STA.w $0AE8
|
|
||||||
|
|
||||||
#_09AB77: LDA.w .properties+2,X
|
|
||||||
#_09AB7A: AND.b #$F0
|
|
||||||
#_09AB7C: ORA.b $72
|
|
||||||
#_09AB7E: ORA.b $65
|
|
||||||
#_09AB80: STA.b ($90),Y
|
|
||||||
|
|
||||||
#_09AB82: INY
|
|
||||||
#_09AB83: PHY
|
|
||||||
|
|
||||||
#_09AB84: TYA
|
|
||||||
#_09AB85: SEC
|
|
||||||
#_09AB86: SBC.b #$04
|
|
||||||
#_09AB88: LSR A
|
|
||||||
#_09AB89: LSR A
|
|
||||||
#_09AB8A: TAY
|
|
||||||
|
|
||||||
#_09AB8B: LDA.b #$02
|
|
||||||
#_09AB8D: ORA.b $75
|
|
||||||
#_09AB8F: STA.b ($92),Y
|
|
||||||
|
|
||||||
#_09AB91: PLY
|
|
||||||
|
|
||||||
.bomb_or_chest
|
|
||||||
; #_09AB92: REP #$30
|
|
||||||
; #_09AB94: PHY
|
|
||||||
|
|
||||||
; #_09AB95: LDA.b $04
|
|
||||||
; #_09AB97: AND.w #$00FF
|
|
||||||
; #_09AB9A: ASL A
|
|
||||||
; #_09AB9B: ASL A
|
|
||||||
; #_09AB9C: ASL A
|
|
||||||
; #_09AB9D: TAY
|
|
||||||
|
|
||||||
; #_09AB9E: LDA.l $7EF3CC
|
|
||||||
; #_09ABA2: AND.w #$00FF
|
|
||||||
; #_09ABA5: ASL A
|
|
||||||
; #_09ABA6: TAX
|
|
||||||
|
|
||||||
; #_09ABA7: TYA
|
|
||||||
; #_09ABA8: CLC
|
|
||||||
; #_09ABA9: ADC.w .char_data_offset,X
|
|
||||||
; #_09ABAC: TAX
|
|
||||||
|
|
||||||
; #_09ABAD: LDA.w .x_offsets+4,X
|
|
||||||
; #_09ABB0: CLC
|
|
||||||
; #_09ABB1: ADC.b $06
|
|
||||||
; #_09ABB3: CLC
|
|
||||||
; #_09ABB4: ADC.w #$0008
|
|
||||||
; #_09ABB7: STA.b $00
|
|
||||||
|
|
||||||
; #_09ABB9: LDA.w .x_offsets+6,X
|
|
||||||
; #_09ABBC: CLC
|
|
||||||
; #_09ABBD: ADC.b $08
|
|
||||||
; #_09ABBF: STA.b $02
|
|
||||||
|
|
||||||
; #_09ABC1: PLY
|
|
||||||
; #_09ABC2: SEP #$30
|
|
||||||
|
|
||||||
#_09ABC4: JSR FollowerDraw_CalculateOAMCoords
|
|
||||||
|
|
||||||
#_09ABC7: LDA.b #$22
|
|
||||||
#_09ABC9: STA.b ($90),Y
|
|
||||||
|
|
||||||
#_09ABCB: INY
|
|
||||||
|
|
||||||
#_09ABCC: LDA.b $04
|
|
||||||
#_09ABCE: ASL A
|
|
||||||
#_09ABCF: CLC
|
|
||||||
#_09ABD0: ADC.b $04
|
|
||||||
#_09ABD2: TAX
|
|
||||||
|
|
||||||
#_09ABD3: LDA.w .properties+1,X
|
|
||||||
#_09ABD6: STA.w $0AEA
|
|
||||||
|
|
||||||
#_09ABD9: LDA.w .properties+2,X
|
|
||||||
#_09ABDC: AND.b #$0F
|
|
||||||
|
|
||||||
#_09ABDE: ASL A
|
|
||||||
#_09ABDF: ASL A
|
|
||||||
#_09ABE0: ASL A
|
|
||||||
#_09ABE1: ASL A
|
|
||||||
|
|
||||||
#_09ABE2: ORA.b $72
|
|
||||||
#_09ABE4: ORA.b $65
|
|
||||||
#_09ABE6: STA.b ($90),Y
|
|
||||||
|
|
||||||
#_09ABE8: INY
|
|
||||||
|
|
||||||
#_09ABE9: TYA
|
|
||||||
#_09ABEA: SEC
|
|
||||||
#_09ABEB: SBC.b #$04
|
|
||||||
#_09ABED: LSR A
|
|
||||||
#_09ABEE: LSR A
|
|
||||||
#_09ABEF: TAY
|
|
||||||
|
|
||||||
#_09ABF0: LDA.b #$02
|
|
||||||
#_09ABF2: ORA.b $75
|
|
||||||
#_09ABF4: STA.b ($92),Y
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -1165,13 +1064,10 @@ MinecartFollower_Bottom:
|
|||||||
|
|
||||||
DrawMinecartFollower:
|
DrawMinecartFollower:
|
||||||
{
|
{
|
||||||
LDA POSX : STA $05
|
JSL $099EFC
|
||||||
LDA POSXH : STA $06
|
|
||||||
LDA POSY : STA $07
|
|
||||||
LDA POSYH : STA $08
|
|
||||||
|
|
||||||
; JSR FollowerDraw_CachePosition
|
JSR FollowerDraw_CachePosition
|
||||||
; JSR MinecartFollower_Top
|
JSR MinecartFollower_Top
|
||||||
|
|
||||||
JSR FollowerDraw_CachePosition
|
JSR FollowerDraw_CachePosition
|
||||||
JSR MinecartFollower_Bottom
|
JSR MinecartFollower_Bottom
|
||||||
@@ -1182,6 +1078,7 @@ DrawMinecartFollower:
|
|||||||
FollowerDraw_CachePosition:
|
FollowerDraw_CachePosition:
|
||||||
{
|
{
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
|
|
||||||
LDA.w $1A00, X : STA.b $00
|
LDA.w $1A00, X : STA.b $00
|
||||||
LDA.w $1A14, X : STA.b $01
|
LDA.w $1A14, X : STA.b $01
|
||||||
LDA.w $1A28, X : STA.b $02
|
LDA.w $1A28, X : STA.b $02
|
||||||
@@ -1232,6 +1129,16 @@ FollowerDraw_CachePosition:
|
|||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
|
#_09AA85: LDA.w $02D7
|
||||||
|
#_09AA88: INC A
|
||||||
|
#_09AA89: CMP.b #$03
|
||||||
|
#_09AA8B: BNE .set_repri
|
||||||
|
|
||||||
|
#_09AA8D: LDA.b #$00
|
||||||
|
|
||||||
|
.set_repri
|
||||||
|
#_09AA8F: STA.w $02D7
|
||||||
|
|
||||||
LDA $02D7 : ASL #2 : STA $05
|
LDA $02D7 : ASL #2 : STA $05
|
||||||
TXA : CLC : ADC $05 : TAX
|
TXA : CLC : ADC $05 : TAX
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user