optimize draw code, swap horiz prop based on direction of player

This commit is contained in:
scawful
2024-06-14 20:13:10 -04:00
parent 5115f1a01d
commit d70b1f6cca

View File

@@ -77,24 +77,26 @@ Sprite_Booki_Main:
{ {
%PlayAnimation(0,1,16) %PlayAnimation(0,1,16)
JSR Sprite_Booki_Move
RTS RTS
} }
HideFromPlayer: HideFromPlayer:
{ {
%PlayAnimation(0,5,16) %PlayAnimation(0,4,16)
RTS RTS
} }
HiddenFromPlayer: HiddenFromPlayer:
{ {
%PlayAnimation(5,5,16) %PlayAnimation(4,4,16)
RTS RTS
} }
ApproachPlayer: ApproachPlayer:
{ {
%PlayAnimation(6,10,16) %PlayAnimation(5,9,16)
} }
} }
@@ -104,6 +106,13 @@ Sprite_Booki_Move:
JSL Sprite_BounceFromTileCollision JSL Sprite_BounceFromTileCollision
JSL Sprite_PlayerCantPassThrough JSL Sprite_PlayerCantPassThrough
JSL Sprite_IsToRightOfPlayer : CPY.b #$01 : BNE .ToRight
LDA.b #$01 : STA.w SprMiscC, X
JMP .Continue
.ToRight
STZ.w SprMiscC, X
.Continue
LDA.w SprMiscB, X LDA.w SprMiscB, X
JSL UseImplicitRegIndexedLocalJumpTable JSL UseImplicitRegIndexedLocalJumpTable
@@ -127,9 +136,10 @@ Sprite_Booki_Draw:
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06 LDA .start_index, Y : STA $06
LDA.w SprMiscC, X : STA $09
PHX PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1 LDX .nbr_of_tiles, Y ; amount of tiles -1
LDY.b #$00 LDY.b #$00
.nextTile .nextTile
@@ -143,10 +153,10 @@ Sprite_Booki_Draw:
REP #$20 REP #$20
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y LDA $00 : STA ($90), Y
AND.w #$0100 : STA $0E AND.w #$0100 : STA $0E
INY INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y LDA $02 : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100 CLC : ADC #$0010 : CMP.w #$0100
SEP #$20 SEP #$20
BCC .on_screen_y BCC .on_screen_y
@@ -159,13 +169,19 @@ Sprite_Booki_Draw:
INY INY
LDA .chr, X : STA ($90), Y LDA .chr, X : STA ($90), Y
INY INY
LDA .properties, X : STA ($90), Y
LDA.b $09 : BEQ .ToRight
LDA.b #$39 : JMP .Prop
.ToRight
LDA.b #$79
.Prop
STA ($90), Y
PHY PHY
TYA : LSR #2 : TAY TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer LDA.b #$02 : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY PLY : INY
@@ -182,59 +198,15 @@ Sprite_Booki_Draw:
db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09 db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09
.nbr_of_tiles .nbr_of_tiles
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.x_offsets
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
.y_offsets
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
.chr .chr
db $0E db $0E
db $0C db $0C
db $0A db $0A
db $2C db $2C
db $2E db $2E
db $0E db $2E
db $0C
db $0A db $0A
db $2C db $2C
db $2E db $0C
.properties db $0E
db $39
db $39
db $39
db $39
db $39
db $79
db $79
db $79
db $79
db $79
.sizes
db $02
db $02
db $02
db $02
db $02
db $02
db $02
db $02
db $02
db $02
} }