take-all support (testing)

This commit is contained in:
Karkat
2018-04-07 21:06:17 -04:00
parent 867272ab15
commit 0825db5c6f
3 changed files with 39 additions and 13 deletions

View File

@@ -136,7 +136,7 @@ endmacro
;carry set if caught
;incsrc eventdata.asm
ProcessEventItems:
STA $FFFFFF
;STA $FFFFFF
LDA $00 : PHA
LDA $01 : PHA
LDA $02 : PHA

View File

@@ -214,7 +214,7 @@ SpritePrep_ShopKeeper:
BRL -
.stop
STA $FFFFFF
;STA $FFFFFF
LDA $A0 : CMP.b #$FF : BNE .normal
.dumb
LDA $2137
@@ -229,7 +229,18 @@ SpritePrep_ShopKeeper:
;JSR.w QueueItemDMA
.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
LDA.l !SHOP_TYPE : CMP.b #$FF : BNE +
@@ -346,12 +357,19 @@ Sprite_ShopKeeper:
; Draw Shopkeeper
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
LDA !SHOP_SRAM_INDEX : TAX
LDA !SHOP_PURCHASE_COUNTS, X : BEQ ++ : PLX : BRA .done : ++
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
JSR.w Shopkeeper_DrawItems
@@ -498,13 +516,13 @@ Shopkeeper_BuyItem:
LDY.b #$01
JSL.l Sprite_ShowMessageUnconditional
LDA.b #$3C : STA $012E ; error sound
BRA .done
BRL .done
.full_bottles
LDA.b #$6B
LDY.b #$01
JSL.l Sprite_ShowMessageUnconditional
LDA.b #$3C : STA $012E ; error sound
BRA .done
BRL .done
.buy
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
@@ -513,7 +531,7 @@ Shopkeeper_BuyItem:
LDA.l !SHOP_INVENTORY+3, X : INC : STA.l !SHOP_INVENTORY+3, X
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
PHX
TXA : !ADD !SHOP_SRAM_INDEX : TAX
@@ -521,8 +539,15 @@ Shopkeeper_BuyItem:
PLX
BRA ++
+ ; Take-any
LDA.l !SHOP_STATE : ORA.b #$07 : STA.l !SHOP_STATE
PHX : LDA !SHOP_SRAM_INDEX : TAX : LDA.b #$01 : STA !SHOP_PURCHASE_COUNTS, X : PLX
;STA $FFFFFF
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
PLY : PLX

View File

@@ -1560,9 +1560,10 @@ db $FF, $FF, $FF, $FF
;--------------------------------------------------------------------------------
; 0x184008 - 0x1847FF (unused)
;================================================================================
;shop_config - td-- --qq
;shop_config - tda- --qq
; t - 0=Shop - 1=TakeAny
; d - 0=Check Door - 1=Skip Door Check
; a - 0=Shop/TakeAny - 1=TakeAll
; qq - # of items for sale
;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)
ShopTable:
;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 $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 $03, $0F, $01, $60, $00, $03, $A0, $0c
db $04, $0F, $01, $6F, $00, $03, $A0, $0f