take-all support (testing)
This commit is contained in:
@@ -136,7 +136,7 @@ endmacro
|
|||||||
;carry set if caught
|
;carry set if caught
|
||||||
;incsrc eventdata.asm
|
;incsrc eventdata.asm
|
||||||
ProcessEventItems:
|
ProcessEventItems:
|
||||||
STA $FFFFFF
|
;STA $FFFFFF
|
||||||
LDA $00 : PHA
|
LDA $00 : PHA
|
||||||
LDA $01 : PHA
|
LDA $01 : PHA
|
||||||
LDA $02 : PHA
|
LDA $02 : PHA
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ SpritePrep_ShopKeeper:
|
|||||||
BRL -
|
BRL -
|
||||||
.stop
|
.stop
|
||||||
|
|
||||||
STA $FFFFFF
|
;STA $FFFFFF
|
||||||
LDA $A0 : CMP.b #$FF : BNE .normal
|
LDA $A0 : CMP.b #$FF : BNE .normal
|
||||||
.dumb
|
.dumb
|
||||||
LDA $2137
|
LDA $2137
|
||||||
@@ -229,7 +229,18 @@ SpritePrep_ShopKeeper:
|
|||||||
;JSR.w QueueItemDMA
|
;JSR.w QueueItemDMA
|
||||||
|
|
||||||
.done
|
.done
|
||||||
LDA.b #$00 : STA !SHOP_STATE
|
STA $FFFFFF
|
||||||
|
LDA.l !SHOP_TYPE : BIT.b #$20 : BEQ .notTakeAll ; Take-all
|
||||||
|
.takeAll
|
||||||
|
|
||||||
|
LDA.b #$00 : XBA : LDA !SHOP_SRAM_INDEX : TAX
|
||||||
|
LDA.l !SHOP_PURCHASE_COUNTS, X
|
||||||
|
BRA ++
|
||||||
|
.notTakeAll
|
||||||
|
LDA.b #$00
|
||||||
|
++
|
||||||
|
STA !SHOP_STATE
|
||||||
|
|
||||||
PLP : PLY : PLX
|
PLP : PLY : PLX
|
||||||
|
|
||||||
LDA.l !SHOP_TYPE : CMP.b #$FF : BNE +
|
LDA.l !SHOP_TYPE : CMP.b #$FF : BNE +
|
||||||
@@ -346,12 +357,19 @@ Sprite_ShopKeeper:
|
|||||||
; Draw Shopkeeper
|
; Draw Shopkeeper
|
||||||
JSR.w Shopkeeper_DrawMerchant
|
JSR.w Shopkeeper_DrawMerchant
|
||||||
|
|
||||||
LDA.l !SHOP_TYPE : AND.b #$80 : BEQ + ; Take-any
|
LDA.l !SHOP_TYPE : BIT.b #$80 : BEQ .normal ; Take-any
|
||||||
|
BIT.b #$20 : BNE + ; Not A Take-All
|
||||||
PHX
|
PHX
|
||||||
LDA !SHOP_SRAM_INDEX : TAX
|
LDA !SHOP_SRAM_INDEX : TAX
|
||||||
LDA !SHOP_PURCHASE_COUNTS, X : BEQ ++ : PLX : BRA .done : ++
|
LDA !SHOP_PURCHASE_COUNTS, X : BEQ ++ : PLX : BRA .done : ++
|
||||||
PLX
|
PLX
|
||||||
+
|
BRA .normal
|
||||||
|
+ ; Take-All
|
||||||
|
;PHX
|
||||||
|
; LDA !SHOP_SRAM_INDEX : TAX
|
||||||
|
; LDA.w !SHOP_PURCHASE_COUNTS, X : STA.l !SHOP_STATE
|
||||||
|
;PLX
|
||||||
|
.normal
|
||||||
|
|
||||||
; Draw Items
|
; Draw Items
|
||||||
JSR.w Shopkeeper_DrawItems
|
JSR.w Shopkeeper_DrawItems
|
||||||
@@ -498,13 +516,13 @@ Shopkeeper_BuyItem:
|
|||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
LDA.b #$3C : STA $012E ; error sound
|
LDA.b #$3C : STA $012E ; error sound
|
||||||
BRA .done
|
BRL .done
|
||||||
.full_bottles
|
.full_bottles
|
||||||
LDA.b #$6B
|
LDA.b #$6B
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
LDA.b #$3C : STA $012E ; error sound
|
LDA.b #$3C : STA $012E ; error sound
|
||||||
BRA .done
|
BRL .done
|
||||||
.buy
|
.buy
|
||||||
LDA !SHOP_TYPE : AND.b #$80 : BNE ++ ; don't charge if this is a take-any
|
LDA !SHOP_TYPE : AND.b #$80 : BNE ++ ; don't charge if this is a take-any
|
||||||
REP #$20 : LDA $7EF360 : !SUB !SHOP_INVENTORY+1, X : STA $7EF360 : SEP #$20 ; Take price away
|
REP #$20 : LDA $7EF360 : !SUB !SHOP_INVENTORY+1, X : STA $7EF360 : SEP #$20 ; Take price away
|
||||||
@@ -513,7 +531,7 @@ Shopkeeper_BuyItem:
|
|||||||
LDA.l !SHOP_INVENTORY+3, X : INC : STA.l !SHOP_INVENTORY+3, X
|
LDA.l !SHOP_INVENTORY+3, X : INC : STA.l !SHOP_INVENTORY+3, X
|
||||||
|
|
||||||
TXA : LSR #2 : TAX
|
TXA : LSR #2 : TAX
|
||||||
LDA !SHOP_TYPE : AND.b #$80 : BNE +
|
LDA !SHOP_TYPE : BIT.b #$80 : BNE +
|
||||||
LDA.l !SHOP_STATE : ORA.w Shopkeeper_ItemMasks, X : STA.l !SHOP_STATE
|
LDA.l !SHOP_STATE : ORA.w Shopkeeper_ItemMasks, X : STA.l !SHOP_STATE
|
||||||
PHX
|
PHX
|
||||||
TXA : !ADD !SHOP_SRAM_INDEX : TAX
|
TXA : !ADD !SHOP_SRAM_INDEX : TAX
|
||||||
@@ -521,8 +539,15 @@ Shopkeeper_BuyItem:
|
|||||||
PLX
|
PLX
|
||||||
BRA ++
|
BRA ++
|
||||||
+ ; Take-any
|
+ ; Take-any
|
||||||
LDA.l !SHOP_STATE : ORA.b #$07 : STA.l !SHOP_STATE
|
;STA $FFFFFF
|
||||||
PHX : LDA !SHOP_SRAM_INDEX : TAX : LDA.b #$01 : STA !SHOP_PURCHASE_COUNTS, X : PLX
|
BIT.b #$20 : BNE .takeAll
|
||||||
|
.takeAny
|
||||||
|
LDA.l !SHOP_STATE : ORA.b #$07 : STA.l !SHOP_STATE
|
||||||
|
PHX : LDA.l !SHOP_SRAM_INDEX : TAX : LDA.b #$01 : STA.l !SHOP_PURCHASE_COUNTS, X : PLX
|
||||||
|
BRA ++
|
||||||
|
.takeAll
|
||||||
|
LDA.l !SHOP_STATE : ORA.w Shopkeeper_ItemMasks, X : STA.l !SHOP_STATE
|
||||||
|
PHX : LDA.l !SHOP_SRAM_INDEX : TAX : LDA.l !SHOP_STATE : STA.l !SHOP_PURCHASE_COUNTS, X : PLX
|
||||||
++
|
++
|
||||||
.done
|
.done
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
|
|||||||
@@ -1560,9 +1560,10 @@ db $FF, $FF, $FF, $FF
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x184008 - 0x1847FF (unused)
|
; 0x184008 - 0x1847FF (unused)
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;shop_config - td-- --qq
|
;shop_config - tda- --qq
|
||||||
; t - 0=Shop - 1=TakeAny
|
; t - 0=Shop - 1=TakeAny
|
||||||
; d - 0=Check Door - 1=Skip Door Check
|
; d - 0=Check Door - 1=Skip Door Check
|
||||||
|
; a - 0=Shop/TakeAny - 1=TakeAll
|
||||||
; qq - # of items for sale
|
; qq - # of items for sale
|
||||||
|
|
||||||
;shopkeeper_config - ppp- --ss
|
;shopkeeper_config - ppp- --ss
|
||||||
@@ -1571,10 +1572,10 @@ db $FF, $FF, $FF, $FF
|
|||||||
org $30C800 ; PC 0x184800 - 0x1848FF - max 32 shops ; do not exceed 36 tracked items sram_index > ($24)
|
org $30C800 ; PC 0x184800 - 0x1848FF - max 32 shops ; do not exceed 36 tracked items sram_index > ($24)
|
||||||
ShopTable:
|
ShopTable:
|
||||||
;db [id][roomID-low][roomID-high][doorID][zero][shop_config][shopkeeper_config][sram_index]
|
;db [id][roomID-low][roomID-high][doorID][zero][shop_config][shopkeeper_config][sram_index]
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
;db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
||||||
db $01, $FF, $00, $00, $00, $43, $A0, $00
|
db $01, $FF, $00, $00, $00, $43, $A0, $00
|
||||||
db $02, $0F, $01, $60, $00, $03, $C1, $03
|
db $02, $0F, $01, $60, $00, $03, $C1, $03
|
||||||
db $FF, $12, $01, $58, $00, $02, $E3, $06
|
db $FF, $12, $01, $58, $00, $A3, $E3, $06
|
||||||
db $02, $0F, $01, $57, $00, $03, $A0, $09
|
db $02, $0F, $01, $57, $00, $03, $A0, $09
|
||||||
db $03, $0F, $01, $60, $00, $03, $A0, $0c
|
db $03, $0F, $01, $60, $00, $03, $A0, $0c
|
||||||
db $04, $0F, $01, $6F, $00, $03, $A0, $0f
|
db $04, $0F, $01, $6F, $00, $03, $A0, $0f
|
||||||
|
|||||||
Reference in New Issue
Block a user