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.
|
||||
FLWANIMIR = $7E02CF
|
||||
|
||||
; Cache of follower properties
|
||||
FOLLOWCYL = $7EF3CD
|
||||
FOLLOWCYH = $7EF3CE
|
||||
FOLLOWCXL = $7EF3CF
|
||||
FOLLOWCXH = $7EF3D0
|
||||
|
||||
FollowerDraw_CalculateOAMCoords:
|
||||
{
|
||||
REP #$20
|
||||
@@ -888,7 +894,55 @@ FollowerDraw_CalculateOAMCoords:
|
||||
|
||||
MinecartFollower_Top:
|
||||
{
|
||||
SEP #$30
|
||||
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
|
||||
|
||||
@@ -928,207 +982,52 @@ MinecartFollower_Bottom:
|
||||
SEP #$30
|
||||
|
||||
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
|
||||
INY
|
||||
PHX
|
||||
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
|
||||
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 : 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
|
||||
#_09AAD2: CLC
|
||||
#_09AAD3: ADC.w #$0008
|
||||
#_09AAD6: STA.b $02
|
||||
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
||||
|
||||
#_09AAD8: STZ.b $74
|
||||
PLY : INY
|
||||
PLX : DEX : BPL .nextTile
|
||||
|
||||
#_09AADA: SEP #$20
|
||||
|
||||
#_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
|
||||
PLX
|
||||
|
||||
RTS
|
||||
|
||||
@@ -1165,13 +1064,10 @@ MinecartFollower_Bottom:
|
||||
|
||||
DrawMinecartFollower:
|
||||
{
|
||||
LDA POSX : STA $05
|
||||
LDA POSXH : STA $06
|
||||
LDA POSY : STA $07
|
||||
LDA POSYH : STA $08
|
||||
JSL $099EFC
|
||||
|
||||
; JSR FollowerDraw_CachePosition
|
||||
; JSR MinecartFollower_Top
|
||||
JSR FollowerDraw_CachePosition
|
||||
JSR MinecartFollower_Top
|
||||
|
||||
JSR FollowerDraw_CachePosition
|
||||
JSR MinecartFollower_Bottom
|
||||
@@ -1182,6 +1078,7 @@ DrawMinecartFollower:
|
||||
FollowerDraw_CachePosition:
|
||||
{
|
||||
LDX.b #$00
|
||||
|
||||
LDA.w $1A00, X : STA.b $00
|
||||
LDA.w $1A14, X : STA.b $01
|
||||
LDA.w $1A28, X : STA.b $02
|
||||
@@ -1232,6 +1129,16 @@ FollowerDraw_CachePosition:
|
||||
|
||||
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
|
||||
TXA : CLC : ADC $05 : TAX
|
||||
|
||||
|
||||
Reference in New Issue
Block a user