Added better GFX for fairy and good bee
This commit is contained in:
@@ -54,6 +54,20 @@ RequestSlottedTile:
|
|||||||
++ LDA.b #!DynamicDropGFXSlotCount_OW
|
++ LDA.b #!DynamicDropGFXSlotCount_OW
|
||||||
+++ INC : STA.w SprItemGFX,X
|
+++ INC : STA.w SprItemGFX,X
|
||||||
JMP .success
|
JMP .success
|
||||||
|
+ CMP.b #$B5 : BNE + ; if good bee, use bee OAM slot
|
||||||
|
LDA.b $1B : BEQ ++
|
||||||
|
LDA.b #!DynamicDropGFXSlotCount_UW
|
||||||
|
BRA +++
|
||||||
|
++ LDA.b #!DynamicDropGFXSlotCount_OW
|
||||||
|
+++ INC : INC : STA.w SprItemGFX,X
|
||||||
|
JMP .success
|
||||||
|
+ CMP.b #$B2 : BNE + ; if fairy, use fairy OAM slot
|
||||||
|
LDA.b $1B : BEQ ++
|
||||||
|
LDA.b #!DynamicDropGFXSlotCount_UW
|
||||||
|
BRA +++
|
||||||
|
++ LDA.b #!DynamicDropGFXSlotCount_OW
|
||||||
|
+++ STA.w SprItemGFX,X
|
||||||
|
JMP .success
|
||||||
+
|
+
|
||||||
|
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
@@ -202,6 +216,7 @@ DrawSlottedTile:
|
|||||||
PLA : SEC : RTL
|
PLA : SEC : RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
|
STA.b $BD ; store loot ID temporarily, will get overwritten in Sprite_DrawMultiple_quantity_preset call
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
JSL.l IsNarrowSprite : BCS .narrow
|
||||||
|
|
||||||
; TODO: Instead of loading the whole fixed 16 bytes from DynamicOAMTile**_** into !SPRITE_DYNAMIC_OAM
|
; TODO: Instead of loading the whole fixed 16 bytes from DynamicOAMTile**_** into !SPRITE_DYNAMIC_OAM
|
||||||
@@ -254,6 +269,23 @@ DrawSlottedTile:
|
|||||||
STA.w !SPRITE_DYNAMIC_OAM : STA.w !SPRITE_DYNAMIC_OAM+8
|
STA.w !SPRITE_DYNAMIC_OAM : STA.w !SPRITE_DYNAMIC_OAM+8
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
|
; special handling
|
||||||
|
LDY.b $BD : CPY.b #$B2 : BNE + ; fairy
|
||||||
|
LDA.b $1A : AND.w #$0020 : BEQ ++ ; alternate every 32 frames
|
||||||
|
LDA.w !SPRITE_DYNAMIC_OAM+4 : CLC : ADC.w #$02 ; use other fairy GFX
|
||||||
|
STA.w !SPRITE_DYNAMIC_OAM+4
|
||||||
|
++ LDA.b $1A : SEC : SBC.w #$10 : AND.w #$0020 : BEQ + ; alternate every 32 frames
|
||||||
|
LDA.w !SPRITE_DYNAMIC_OAM+2 : SEC : SBC.w #$02 ; move fairy up 2 pixels
|
||||||
|
STA.w !SPRITE_DYNAMIC_OAM+2
|
||||||
|
+ CPY.b #$B5 : BNE + ; good bee
|
||||||
|
LDA.b $1A : AND.w #$0020 : BEQ ++ ; alternate every 32 frames
|
||||||
|
LDA.w !SPRITE_DYNAMIC_OAM+12 : SEC : SBC.w #$10 ; use other fairy GFX
|
||||||
|
STA.w !SPRITE_DYNAMIC_OAM+12
|
||||||
|
++ LDA.b $1A : SEC : SBC.w #$10 : AND.w #$0020 : BEQ + ; alternate every 32 frames
|
||||||
|
LDA.w !SPRITE_DYNAMIC_OAM+10 : SEC : SBC.w #$02 ; move fairy up 2 pixels
|
||||||
|
STA.w !SPRITE_DYNAMIC_OAM+10
|
||||||
|
+
|
||||||
|
|
||||||
LDA.w #!SPRITE_DYNAMIC_OAM : STA.b $08
|
LDA.w #!SPRITE_DYNAMIC_OAM : STA.b $08
|
||||||
SEP #$20
|
SEP #$20
|
||||||
STZ.b $07
|
STZ.b $07
|
||||||
@@ -292,6 +324,9 @@ DynamicOAMTileUW_thin:
|
|||||||
dw 0, 0 : db $6B, $00, $20, $00 ; key
|
dw 0, 0 : db $6B, $00, $20, $00 ; key
|
||||||
dw 0, 8 : db $7B, $00, $20, $00
|
dw 0, 8 : db $7B, $00, $20, $00
|
||||||
|
|
||||||
|
dw 0, 0 : db $7C, $00, $20, $00 ; good bee
|
||||||
|
dw 0, 8 : db $F4, $00, $20, $00
|
||||||
|
|
||||||
DynamicOAMTileUW_full:
|
DynamicOAMTileUW_full:
|
||||||
dw -4, -1 : db $40, $00, $20, $02
|
dw -4, -1 : db $40, $00, $20, $02
|
||||||
dd 0, 0
|
dd 0, 0
|
||||||
@@ -308,6 +343,11 @@ DynamicOAMTileUW_full:
|
|||||||
dw -4, -1 : db $EE, $00, $20, $02
|
dw -4, -1 : db $EE, $00, $20, $02
|
||||||
dd 0, 0
|
dd 0, 0
|
||||||
|
|
||||||
|
; add new slots above this line
|
||||||
|
|
||||||
|
dw -4, -1 : db $EA, $00, $20, $02 ; fairy
|
||||||
|
dd 0, 0
|
||||||
|
|
||||||
DynamicOAMTileOW_thin:
|
DynamicOAMTileOW_thin:
|
||||||
; dw 0, 0 : db $40, $00, $20, $00
|
; dw 0, 0 : db $40, $00, $20, $00
|
||||||
; dw 0, 8 : db $50, $00, $20, $00
|
; dw 0, 8 : db $50, $00, $20, $00
|
||||||
@@ -332,6 +372,9 @@ DynamicOAMTileOW_thin:
|
|||||||
dw 0, 0 : db $6B, $00, $20, $00 ; key
|
dw 0, 0 : db $6B, $00, $20, $00 ; key
|
||||||
dw 0, 8 : db $7B, $00, $20, $00
|
dw 0, 8 : db $7B, $00, $20, $00
|
||||||
|
|
||||||
|
dw 0, 0 : db $7C, $00, $20, $00 ; good bee
|
||||||
|
dw 0, 8 : db $F4, $00, $20, $00
|
||||||
|
|
||||||
DynamicOAMTileOW_full:
|
DynamicOAMTileOW_full:
|
||||||
; dw 0, 0 : db $40, $00, $20, $02
|
; dw 0, 0 : db $40, $00, $20, $02
|
||||||
; dd 0, 0
|
; dd 0, 0
|
||||||
@@ -348,3 +391,8 @@ DynamicOAMTileOW_full:
|
|||||||
;dw 0, 0 : db $EE, $00, $20, $02
|
;dw 0, 0 : db $EE, $00, $20, $02
|
||||||
;dd 0, 0
|
;dd 0, 0
|
||||||
|
|
||||||
|
; add new slots above this line
|
||||||
|
|
||||||
|
dw 0, 0 : db $EA, $00, $20, $02 ; fairy
|
||||||
|
dd 0, 0
|
||||||
|
|
||||||
|
|||||||
@@ -809,18 +809,53 @@ Shopkeeper_DrawNextItem:
|
|||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
PLY
|
PLY
|
||||||
|
|
||||||
|
STZ $0E ; $0E will be used temporarily to store a non-zero value if VRAM slot is in OAM1
|
||||||
PHX : LDA #0 : XBA : TXA : LSR #2 : TAX : LDA.l !SHOP_INVENTORY_DISGUISE, X : PLX : CMP #$0 : BNE ++
|
PHX : LDA #0 : XBA : TXA : LSR #2 : TAX : LDA.l !SHOP_INVENTORY_DISGUISE, X : PLX : CMP #$0 : BNE ++
|
||||||
LDA.l !SHOP_INVENTORY, X ; get item palette
|
LDA.l !SHOP_INVENTORY, X
|
||||||
++
|
++
|
||||||
CMP.b #$2E : BNE + : BRA .potion
|
CMP.b #$2E : BNE + : JMP .potion
|
||||||
+ CMP.b #$2F : BNE + : BRA .potion
|
+ CMP.b #$2F : BNE + : JMP .potion
|
||||||
+ CMP.b #$30 : BEQ .potion
|
+ CMP.b #$30 : BNE + : JMP .potion
|
||||||
+ CMP.b #$34 : BCC .normal : CMP.b #$36+1 : BCS .normal
|
+ CMP.b #$B2 : BNE + : BRA .fairy
|
||||||
|
+ CMP.b #$B5 : BNE + : BRA .goodbee
|
||||||
|
+ CMP.b #$34 : BCC + : CMP.b #$36+1 : BCS +
|
||||||
BRA .rupee
|
BRA .rupee
|
||||||
|
+
|
||||||
.normal
|
.normal
|
||||||
LDA.w .tile_indices, Y : BRA + ; get item gfx index
|
LDA.w .tile_indices, Y : BRA + ; get item gfx index
|
||||||
.rupee
|
.rupee
|
||||||
LDA.b #$0B ; rupee is #$0B because it's already there in VRAM
|
LDA.b #$0B ; rupee is #$0B because it's already there in VRAM
|
||||||
|
STA.b $0E
|
||||||
|
BRA .vramLoc
|
||||||
|
.fairy
|
||||||
|
REP #$20
|
||||||
|
LDA.b $1A : SEC : SBC.w #$10 : AND.w #$0020 : BEQ ++ ; alternate every 32 frames
|
||||||
|
LDA.l !SPRITE_OAM+2 : SEC : SBC.w #$02 ; move fairy up 2 pixels
|
||||||
|
STA.l !SPRITE_OAM+2
|
||||||
|
++
|
||||||
|
SEP #$20
|
||||||
|
LDA.b $1A : AND.b #$20 : BEQ ++ ; alternate every 32 frames
|
||||||
|
LDA.b #$EC ; use other fairy GFX
|
||||||
|
STA.b $0E
|
||||||
|
BRA .vramLoc
|
||||||
|
++
|
||||||
|
LDA.b #$EA ; fairy is #$EA/EC because it's already there in VRAM
|
||||||
|
STA.b $0E
|
||||||
|
BRA .vramLoc
|
||||||
|
.goodbee
|
||||||
|
REP #$20
|
||||||
|
LDA.b $1A : SEC : SBC.w #$10 : AND.w #$0020 : BEQ ++ ; alternate every 32 frames
|
||||||
|
LDA.l !SPRITE_OAM+2 : SEC : SBC.w #$02 ; move bee up 2 pixels
|
||||||
|
STA.l !SPRITE_OAM+2
|
||||||
|
++
|
||||||
|
SEP #$20
|
||||||
|
LDA.b $1A : AND.b #$20 : BEQ ++ ; alternate every 32 frames
|
||||||
|
LDA.b #$D4 ; use other bee GFX
|
||||||
|
STA.b $0E
|
||||||
|
BRA .vramLoc
|
||||||
|
++
|
||||||
|
LDA.b #$E4 ; good bee is #$E4/D4 because it's already there in VRAM
|
||||||
|
STA.b $0E
|
||||||
BRA .vramLoc
|
BRA .vramLoc
|
||||||
.potion
|
.potion
|
||||||
LDA.b #$C0 ; potion is #$C0 because it's already there in VRAM
|
LDA.b #$C0 ; potion is #$C0 because it's already there in VRAM
|
||||||
@@ -835,15 +870,13 @@ Shopkeeper_DrawNextItem:
|
|||||||
AND #$FE
|
AND #$FE
|
||||||
.vramLoc
|
.vramLoc
|
||||||
STA.l !SPRITE_OAM+4
|
STA.l !SPRITE_OAM+4
|
||||||
PHA
|
|
||||||
|
|
||||||
PHX : LDA #0 : XBA : TXA : LSR #2 : TAX : LDA.l !SHOP_INVENTORY_DISGUISE, X : PLX : CMP #$0 : BNE ++
|
PHX : LDA #0 : XBA : TXA : LSR #2 : TAX : LDA.l !SHOP_INVENTORY_DISGUISE, X : PLX : CMP #$0 : BNE ++
|
||||||
LDA.l !SHOP_INVENTORY, X ; get item palette
|
LDA.l !SHOP_INVENTORY, X ; get item palette
|
||||||
++
|
++
|
||||||
JSL.l GetSpritePalette : STA.l !SPRITE_OAM+5
|
JSL.l GetSpritePalette : STA.l !SPRITE_OAM+5
|
||||||
|
|
||||||
PLA
|
LDA.b $0E : BNE .oam1 ; item uses VRAM in OAM1
|
||||||
AND.b #$01 : BNE .oam1 ; special case for rupee item
|
|
||||||
LDA.w .tile_indices, Y : AND.b #$01 : BEQ ++ ; get tile index sheet
|
LDA.w .tile_indices, Y : AND.b #$01 : BEQ ++ ; get tile index sheet
|
||||||
.oam1
|
.oam1
|
||||||
LDA.l !SPRITE_OAM+5
|
LDA.l !SPRITE_OAM+5
|
||||||
@@ -866,6 +899,10 @@ Shopkeeper_DrawNextItem:
|
|||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
STA.l !SPRITE_OAM+7
|
STA.l !SPRITE_OAM+7
|
||||||
JSR.w PrepNarrowLower
|
JSR.w PrepNarrowLower
|
||||||
|
LDA.b $0E : AND.b #$0F : CMP.b #$04 : BNE +
|
||||||
|
; special exception for bee gfx, need top tile to be blank
|
||||||
|
LDA.b #$7C : STA.l !SPRITE_OAM+4
|
||||||
|
+
|
||||||
LDA.b #$02
|
LDA.b #$02
|
||||||
++
|
++
|
||||||
PHX : PHA : LDA !SCRATCH_TEMP_X : TAX : PLA : JSR.w RequestItemOAM : PLX
|
PHX : PHA : LDA !SCRATCH_TEMP_X : TAX : PLA : JSR.w RequestItemOAM : PLX
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ RTL
|
|||||||
db $08 ; Fairy
|
db $08 ; Fairy
|
||||||
db $08 ; Chicken
|
db $08 ; Chicken
|
||||||
db $08 ; Big Magic
|
db $08 ; Big Magic
|
||||||
db $08 ; Good Bee
|
db $04 ; Good Bee
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
||||||
@@ -364,7 +364,7 @@ IsNarrowSprite:
|
|||||||
LDX.b #$00 ; set index counter to 0
|
LDX.b #$00 ; set index counter to 0
|
||||||
;----
|
;----
|
||||||
-
|
-
|
||||||
CPX.b #$24 : !BGE .false ; finish if we've done the whole list
|
CPX.b #(.smallSprites_end-.smallSprites) : !BGE .false ; finish if we've done the whole list
|
||||||
CMP.l .smallSprites, X : BNE + ; skip to next if we don't match
|
CMP.l .smallSprites, X : BNE + ; skip to next if we don't match
|
||||||
;--
|
;--
|
||||||
SEC ; set true state
|
SEC ; set true state
|
||||||
@@ -387,7 +387,8 @@ RTL
|
|||||||
db $15, $18, $24, $2A, $34, $35, $36, $42
|
db $15, $18, $24, $2A, $34, $35, $36, $42
|
||||||
db $43, $45, $59, $A0, $A1, $A2, $A3, $A4
|
db $43, $45, $59, $A0, $A1, $A2, $A3, $A4
|
||||||
db $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC
|
db $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC
|
||||||
db $AD, $AE, $AF, $B4, $FF, $FF, $FF, $FF
|
db $AD, $AE, $AF, $B4, $B5
|
||||||
|
.smallSprites_end
|
||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user