Add MagicBean_FertileSoil and setup sprite detection
This commit is contained in:
@@ -37,7 +37,11 @@
|
|||||||
Sprite_BeanVendor_Long:
|
Sprite_BeanVendor_Long:
|
||||||
{
|
{
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
|
|
||||||
|
LDA.w SprMiscD, X : BNE +
|
||||||
JSR Sprite_BeanVendor_Draw
|
JSR Sprite_BeanVendor_Draw
|
||||||
|
+
|
||||||
|
|
||||||
JSL Sprite_CheckActive : BCC .SpriteIsNotActive
|
JSL Sprite_CheckActive : BCC .SpriteIsNotActive
|
||||||
LDA.w SprSubtype, X : BEQ +
|
LDA.w SprSubtype, X : BEQ +
|
||||||
JSR Sprite_VillageElder_Main
|
JSR Sprite_VillageElder_Main
|
||||||
@@ -55,16 +59,23 @@ Sprite_BeanVendor_Long:
|
|||||||
Sprite_BeanVendor_Prep:
|
Sprite_BeanVendor_Prep:
|
||||||
{
|
{
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
LDA.b #$80 : STA.w SprDefl, X ; Persist in dungeons
|
LDA.b #$80 : STA.w SprDefl, X
|
||||||
LDA.b #$40 : STA.w SprTimerA, X
|
LDA.b #$40 : STA.w SprTimerA, X
|
||||||
LDA.w SprSubtype, X : STA.w SprAction, X
|
STZ.w SprMiscD, X
|
||||||
|
|
||||||
LDA.b $8A : CMP.b #$00 : BNE +
|
LDA.b $8A : CMP.b #$00 : BNE +
|
||||||
LDA.l MagicBeanProg : BNE .in_progress
|
LDA.l MagicBeanProg : BNE .in_progress
|
||||||
STZ.w SprState, X
|
|
||||||
.in_progress
|
|
||||||
; Sprite is the flower on ranch map
|
|
||||||
LDA.b #$04 : STA.w SprAction, X
|
LDA.b #$04 : STA.w SprAction, X
|
||||||
|
JMP +
|
||||||
|
.in_progress
|
||||||
|
CMP.b #$3F : BNE .not_flower
|
||||||
|
; Sprite is the flower on ranch map
|
||||||
|
LDA.b #$05 : STA.w SprAction, X
|
||||||
|
JMP +
|
||||||
|
.not_flower
|
||||||
|
CMP.b #$7F : BNE .not_done
|
||||||
|
STZ.w SprState, X
|
||||||
|
.not_done
|
||||||
+
|
+
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
@@ -74,10 +85,13 @@ Sprite_BeanVendor_Prep:
|
|||||||
|
|
||||||
Sprite_BeanVendor_Main:
|
Sprite_BeanVendor_Main:
|
||||||
{
|
{
|
||||||
%SpriteJumpTable(BeanVendor, MagicBean, SpawnMagicBean,
|
%SpriteJumpTable(BeanVendor,
|
||||||
PlayerSaidNo, MagicBean_RanchFlower)
|
MagicBean,
|
||||||
|
BeanVendor_SpawnMagicBean,
|
||||||
|
BeanVendor_PlayerSaidNo,
|
||||||
|
MagicBean_FertileSoil,
|
||||||
|
MagicBean_RanchFlower)
|
||||||
|
|
||||||
; 0x00 - Bean Vendor
|
|
||||||
BeanVendor:
|
BeanVendor:
|
||||||
{
|
{
|
||||||
%PlayAnimation(0,0,1)
|
%PlayAnimation(0,0,1)
|
||||||
@@ -106,8 +120,7 @@ Sprite_BeanVendor_Main:
|
|||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
; 0x02 - Spawn Magic Bean
|
BeanVendor_SpawnMagicBean:
|
||||||
SpawnMagicBean:
|
|
||||||
{
|
{
|
||||||
%PlayAnimation(0,0,1)
|
%PlayAnimation(0,0,1)
|
||||||
LDA $1CE8 : BNE .player_said_no_or_not_enough_rupees
|
LDA $1CE8 : BNE .player_said_no_or_not_enough_rupees
|
||||||
@@ -142,8 +155,7 @@ Sprite_BeanVendor_Main:
|
|||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
; 0x03 - Player Said No
|
BeanVendor_PlayerSaidNo:
|
||||||
PlayerSaidNo:
|
|
||||||
{
|
{
|
||||||
%PlayAnimation(0,0,1)
|
%PlayAnimation(0,0,1)
|
||||||
%ShowUnconditionalMessage($144)
|
%ShowUnconditionalMessage($144)
|
||||||
@@ -151,10 +163,26 @@ Sprite_BeanVendor_Main:
|
|||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MagicBean_FertileSoil:
|
||||||
|
{
|
||||||
|
LDA.b #Sprite_BeanVendor : STA.b $00
|
||||||
|
JSL Sprite_CheckForPresence : BCC +
|
||||||
|
PHX
|
||||||
|
LDA.b $02 : TAX
|
||||||
|
JSL Sprite_SetupHitBox
|
||||||
|
PLX
|
||||||
|
JSL Sprite_SetupHitBox_Alt
|
||||||
|
JSL CheckIfHitBoxesOverlap : BCC +
|
||||||
|
INC.w SprAction, X
|
||||||
|
LDA.l MagicBeanProg
|
||||||
|
ORA.b #$01
|
||||||
|
STA.l MagicBeanProg
|
||||||
|
+
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
MagicBean_RanchFlower:
|
MagicBean_RanchFlower:
|
||||||
{
|
{
|
||||||
LDA.b #$04 : STA.w SprFrame, X
|
|
||||||
|
|
||||||
; Check for the good bee
|
; Check for the good bee
|
||||||
LDA.l MagicBeanProg : AND.b #$02 : BEQ +
|
LDA.l MagicBeanProg : AND.b #$02 : BEQ +
|
||||||
LDA.b #$B2 : STA.b $00
|
LDA.b #$B2 : STA.b $00
|
||||||
@@ -165,11 +193,15 @@ Sprite_BeanVendor_Main:
|
|||||||
JSL Sprite_SetupHitBox
|
JSL Sprite_SetupHitBox
|
||||||
PLX
|
PLX
|
||||||
JSL Sprite_SetupHitBox_Alt
|
JSL Sprite_SetupHitBox_Alt
|
||||||
JSL CheckIfHitboxesOverlap : BCC +
|
JSL CheckIfHitBoxesOverlap : BCC +
|
||||||
LDA.l MagicBeanProg
|
LDA.l MagicBeanProg
|
||||||
ORA.l #$02 : STA.l MagicBeanProg
|
ORA.l #$02
|
||||||
|
STA.l MagicBeanProg
|
||||||
; Set a timer and maybe a jingle effect?
|
; Set a timer and maybe a jingle effect?
|
||||||
+
|
+
|
||||||
|
AND.b #$3F : BEQ ++
|
||||||
|
LDA.b #$04 : STA.w SprFrame, X
|
||||||
|
++
|
||||||
|
|
||||||
JSL ThrownSprite_TileAndSpriteInteraction_long
|
JSL ThrownSprite_TileAndSpriteInteraction_long
|
||||||
RTS
|
RTS
|
||||||
@@ -186,7 +218,7 @@ ReleaseMagicBean:
|
|||||||
LDA $21 : STA.w SprYH, Y
|
LDA $21 : STA.w SprYH, Y
|
||||||
LDA $22 : STA.w SprX, Y
|
LDA $22 : STA.w SprX, Y
|
||||||
LDA $23 : STA.w SprXH, Y
|
LDA $23 : STA.w SprXH, Y
|
||||||
LDA.b #$01 : STA.w SprAction, Y : STA.w SprSubtype, Y
|
LDA.b #$01 : STA.w SprAction, Y
|
||||||
LDA.b #$02 : STA.l $7EF35C, X
|
LDA.b #$02 : STA.l $7EF35C, X
|
||||||
RTL
|
RTL
|
||||||
.not_the_ranch
|
.not_the_ranch
|
||||||
@@ -239,7 +271,6 @@ Sprite_BeanVendor_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
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user