New happiness pond show

This commit is contained in:
Kevin Cathcart
2018-09-09 21:54:58 -04:00
parent abbbf17b95
commit 769a89f919
4 changed files with 103 additions and 9 deletions

View File

@@ -54,3 +54,35 @@ FairyPond_Init:
+ : PLY + : PLY
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
HappinessPond_Check:
LDA $A0 : CMP.b #$15 ;what we wrote over
PHP
BNE .done
LDA.b #$72
JSL Sprite_SpawnDynamically
LDA $0FD8 : STA $0D10, Y
LDA $0FD9 : STA $0D30, Y
LDA $0FDA : !SUB.b #$40 : STA $0D00, Y
LDA $0FDB : SBC.b #$00 : STA $0D20, Y
LDA.b #$01 : STA $0DA0, Y
LDA.b #$BB
JSL Sprite_SpawnDynamically
LDA.b #$08 : STA $0DD0, Y ; ensure we run prep for the shopkeeper
LDA $0FD8 : STA $0D10, Y
LDA $0FD9 : STA $0D30, Y
LDA $0FDA : !SUB.b #$20 : STA $0D00, Y
LDA $0FDB : SBC.b #$00 : STA $0D20, Y
STZ $0DD0, X ; self terminate
.done
PLP
RTL

View File

@@ -1547,9 +1547,9 @@ JSL.l DialogGanon1
org $1D9078 ; <- E9078 - sprite_ganon.asm:552 (LDA.b #$70 : STA $1CF0) org $1D9078 ; <- E9078 - sprite_ganon.asm:552 (LDA.b #$70 : STA $1CF0)
JSL.l DialogGanon2 : RTS JSL.l DialogGanon2 : RTS
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;-- Disable Capitalism fairy ;-- Convert Capitalism fairy to shop
org $06C454 ; <- 34454 - sprite_ponds.asm:133 (LDA $0D80, X) org $06C4BD ; <- 34C4BD - sprite_ponds.asm:107 (LDA $A0 : CMP.b #$15 : BEQ Sprite_HappinessPond)
LDA.b #$00 : NOP JSL.l HappinessPond_Check
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;-- Sahasrahla (no green pendant) ;-- Sahasrahla (no green pendant)
org $05F16C ; <- 2F16C sprite_elder.asm:137 (JSL Sprite_ShowSolicitedMessageIfPlayerFacing) org $05F16C ; <- 2F16C sprite_elder.asm:137 (JSL Sprite_ShowSolicitedMessageIfPlayerFacing)

View File

@@ -219,7 +219,18 @@ SpritePrep_ShopKeeper:
LDA.b #$00 LDA.b #$00
++ ++
STA !SHOP_STATE STA !SHOP_STATE
; If the item is $FF, make it not show (as if already taken)
LDA !SHOP_INVENTORY : CMP.b #$FF : BNE +
LDA !SHOP_STATE : ORA Shopkeeper_ItemMasks : STA !SHOP_STATE
+
LDA !SHOP_INVENTORY+4 : CMP.b #$FF : BNE +
LDA !SHOP_STATE : ORA Shopkeeper_ItemMasks+1 : STA !SHOP_STATE
+
LDA !SHOP_INVENTORY+8 : CMP.b #$FF : BNE +
LDA !SHOP_STATE : ORA Shopkeeper_ItemMasks+2 : 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 +
@@ -275,7 +286,44 @@ Shopkeeper_UploadVRAMTiles:
LDA #$80 : STA $4302 ; set bus A source address to tile buffer LDA #$80 : STA $4302 ; set bus A source address to tile buffer
LDA #$A1 : STA $4303 LDA #$A1 : STA $4303
LDA #$7E : STA $4304 LDA #$7E : STA $4304
LDA !SHOP_TYPE : AND.b #$10 : BNE .special
BRL .normal
.special
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
LDA #$40 : STA $2116 ; set VRAM register destination address
LDA #$5A : STA $2117
LDA #$01 : STA $420B ; begin DMA transfer
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
LDA #$40 : STA $2116 ; set VRAM register destination address
LDA #$5B : STA $2117
LDA #$01 : STA $420B ; begin DMA transfer
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
LDA #$60 : STA $2116 ; set VRAM register destination address
LDA #$5A : STA $2117
LDA #$01 : STA $420B ; begin DMA transfer
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
LDA #$60 : STA $2116 ; set VRAM register destination address
LDA #$5B : STA $2117
LDA #$01 : STA $420B ; begin DMA transfer
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
LDA #$80 : STA $2116 ; set VRAM register destination address
LDA #$5A : STA $2117
LDA #$01 : STA $420B ; begin DMA transfer
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
LDA #$80 : STA $2116 ; set VRAM register destination address
LDA #$5B : STA $2117
LDA #$01 : STA $420B ; begin DMA transfer
BRL .end
.normal
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40 LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
LDA #$60 : STA $2116 ; set VRAM register destination address LDA #$60 : STA $2116 ; set VRAM register destination address
LDA #$5C : STA $2117 LDA #$5C : STA $2117
@@ -306,6 +354,7 @@ Shopkeeper_UploadVRAMTiles:
LDA #$5D : STA $2117 LDA #$5D : STA $2117
LDA #$01 : STA $420B ; begin DMA transfer LDA #$01 : STA $420B ; begin DMA transfer
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
.end
PLA : STA $4306 ; restore DMA parameters PLA : STA $4306 ; restore DMA parameters
PLA : STA $4305 ; restore DMA parameters PLA : STA $4305 ; restore DMA parameters
PLA : STA $4304 ; restore DMA parameters PLA : STA $4304 ; restore DMA parameters
@@ -404,7 +453,7 @@ dw 0, 0 : db <body>, $40, $00, $02
endmacro endmacro
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
Shopkeeper_DrawMerchant: Shopkeeper_DrawMerchant:
LDA.l !SHOP_MERCHANT : AND.b #$03 LDA.l !SHOP_MERCHANT : AND.b #$07
BEQ Shopkeeper_DrawMerchant_Type0 BEQ Shopkeeper_DrawMerchant_Type0
CMP.b #$01 : BNE + : BRL Shopkeeper_DrawMerchant_Type1 : + CMP.b #$01 : BNE + : BRL Shopkeeper_DrawMerchant_Type1 : +
CMP.b #$02 : BNE + : BRL Shopkeeper_DrawMerchant_Type2 : + CMP.b #$02 : BNE + : BRL Shopkeeper_DrawMerchant_Type2 : +
@@ -684,6 +733,13 @@ Shopkeeper_DrawNextItem:
.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
+ +
XBA
LDA !SHOP_TYPE : AND.b #$10 : BEQ +
XBA : !SUB #$22 : XBA ; alt vram
+
XBA
STA.l !SPRITE_OAM+4 STA.l !SPRITE_OAM+4
LDA.l !SHOP_INVENTORY, X ; get item palette LDA.l !SHOP_INVENTORY, X ; get item palette

View File

@@ -1473,27 +1473,33 @@ org $30C000 ; PC 0x184000 - 0x184007
ItemSubstitutionRules: ItemSubstitutionRules:
;db [item][quantity][substitution][pad] - CURRENT LIMIT 16 ENTRIES ;db [item][quantity][substitution][pad] - CURRENT LIMIT 16 ENTRIES
db $12, $01, $35, $FF db $12, $01, $35, $FF
db $51, $06, $52, $FF
db $53, $06, $54, $FF
db $FF, $FF, $FF, $FF db $FF, $FF, $FF, $FF
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; 0x184008 - 0x1847FF (unused) ; 0x184008 - 0x1847FF (unused)
;================================================================================ ;================================================================================
;shop_config - tda- --qq ;shop_config - tdav --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 ; a - 0=Shop/TakeAny - 1=TakeAll
; v - 0=normal vram, 1= alt vram
; qq - # of items for sale ; qq - # of items for sale
;shopkeeper_config - ppp- --ss ;shopkeeper_config - ppp- -sss
; ppp - palette ; ppp - palette
; ss - sprite type ; sss - sprite type
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 $01, $15, $01, $5D, $00, $12, $04, $00
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
org $30C900 ; PC 0x184900 - 0x184FFF - max 224 entries org $30C900 ; PC 0x184900 - 0x184FFF - max 224 entries
ShopContentsTable: ShopContentsTable:
;db [id][item][price-low][price-high][max][repl_id][repl_price-low][repl_price-high] ;db [id][item][price-low][price-high][max][repl_id][repl_price-low][repl_price-high]
db $01, $51, $64, $00, $07, $FF, $00, $00
db $01, $53, $64, $00, $07, $FF, $00, $00
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
;================================================================================ ;================================================================================
org $30D000 ; PC 0x185000 - 0x18503F org $30D000 ; PC 0x185000 - 0x18503F