let's dev 2/11/18
fixes for retro/shops/generic keys
This commit is contained in:
@@ -26,7 +26,7 @@ org $3FFFFF ; <- 1FFFFF
|
||||
db #$00 ; expand file to 2mb
|
||||
|
||||
org $1FFFF8 ; <- FFFF8 timestamp rom
|
||||
db #$20, #$18, #$02, #$09 ; year/month/day
|
||||
db #$20, #$18, #$02, #$11 ; year/month/day
|
||||
|
||||
;================================================================================
|
||||
|
||||
|
||||
@@ -50,6 +50,9 @@ OnFileLoad:
|
||||
JSL.l InitOpenMode
|
||||
LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
|
||||
LDA #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
||||
LDA.l GenericKeys : BEQ +
|
||||
LDA $7EF38B : STA $7EF36F ; copy generic keys to key counter
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||
|
||||
13
hooks.asm
13
hooks.asm
@@ -989,8 +989,8 @@ STA $7EC760 ; nudge arrow 10s digit right
|
||||
org $0DFCE8 ; <- 6FCE8
|
||||
STA $7EC762 ; nudge arrow 1s digit right
|
||||
|
||||
org $0DFD0A ; <- 6FD0A - headsup_display.asm : 900
|
||||
STA $7EC766 ; nudge key digit right
|
||||
;org $0DFD0A ; <- 6FD0A - headsup_display.asm : 900
|
||||
;STA $7EC766 ; nudge key digit right
|
||||
|
||||
org $0DFD13 ; <- 6FD13 - headsup_display.asm : 905
|
||||
STA $7EC726 ; key icon blank
|
||||
@@ -1135,6 +1135,9 @@ JSL.l EndRainState : NOP #2
|
||||
;================================================================================
|
||||
; Generic Keys
|
||||
;--------------------------------------------------------------------------------
|
||||
org $028157 ; <- 10157 - Bank02.asm:381 - (LDA $040C : CMP.b #$FF : BEQ .notPalace)
|
||||
JSL.l CheckKeys : NOP
|
||||
;--------------------------------------------------------------------------------
|
||||
org $028166 ; <- 10166 - Bank02.asm:396 - (LDA $7EF37C, X)
|
||||
JSL.l LoadKeys
|
||||
;--------------------------------------------------------------------------------
|
||||
@@ -1150,6 +1153,12 @@ JSL.l SaveKeys
|
||||
org $0282EC ; <- 102EC - Bank02.asm:650 - (STA $7EF36F)
|
||||
JSL.l ClearOWKeys
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0DFA80 ; <- 6FA80 ; headsup_display.asm:596 - (LDA.b #$00 : STA $7EC017)
|
||||
JSL.l HUDRebuildIndoor : NOP #4
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0DFD02 ; <- 6FD02 ; headsup_display.asm:900 - (LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC764)
|
||||
JSL.l DrawKeyIcon : NOP #8
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Pendant / Crystal Fixes
|
||||
|
||||
@@ -800,6 +800,24 @@ UpgradeFlute:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; CheckKeys:
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckKeys:
|
||||
LDA.l GenericKeys : BEQ + : RTL : +
|
||||
LDA $040C : CMP.b #$FF
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; DrawKeyIcon:
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawKeyIcon:
|
||||
LDA $04 : AND.w #$00FF : CMP.w #$0090 : BNE + : LDA.w #$007F : + : ORA.w #$2400 : STA $7EC764
|
||||
LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC766
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; LoadKeys:
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -316,6 +316,11 @@ AddReceivedItemExpandedGetItem:
|
||||
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
||||
AND #$0F : TAX
|
||||
LDA $7EF37C, X : INC : STA $7EF37C, X ; Increment Key Count
|
||||
LDA.l GenericKeys : BEQ +
|
||||
.generic
|
||||
LDA $7EF36F : INC : STA $7EF36F
|
||||
BRL .done
|
||||
.normal
|
||||
TXA : ASL : CMP $040C : BNE ++
|
||||
LDA $7EF36F : INC : STA $7EF36F
|
||||
++
|
||||
|
||||
@@ -18,6 +18,17 @@ FlipLWDWFlag:
|
||||
PLP
|
||||
RTL
|
||||
;================================================================================
|
||||
HUDRebuildIndoor:
|
||||
LDA.l GenericKeys : BEQ .normal
|
||||
.generic
|
||||
LDA.b #$00 : STA $7EC017
|
||||
LDA $7EF38B ; generic key count
|
||||
RTL
|
||||
.normal
|
||||
LDA.b #$00 : STA $7EC017
|
||||
LDA.b #$FF ; don't show keys
|
||||
RTL
|
||||
;================================================================================
|
||||
GetCrystalNumber:
|
||||
PHX
|
||||
TXA : ASL : TAX
|
||||
|
||||
113
shopkeeper.asm
113
shopkeeper.asm
@@ -131,6 +131,7 @@ RTS
|
||||
!SCRATCH_CAPACITY = "$7F5060"
|
||||
!SCRATCH_TEMP_X = "$7F5061"
|
||||
!SHOP_SRAM_INDEX = "$7F5062"
|
||||
!SHOP_MERCHANT = "$7F5063"
|
||||
;--------------------------------------------------------------------------------
|
||||
.digit_properties
|
||||
dw $0230, $0231, $0202, $0203, $0212, $0213, $0222, $0223, $0232, $0233
|
||||
@@ -152,6 +153,7 @@ SpritePrep_ShopKeeper:
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA ShopTable, X : STA !SHOP_ID
|
||||
LDA ShopTable+5, X : STA !SHOP_TYPE
|
||||
LDA ShopTable+6, X : STA !SHOP_MERCHANT
|
||||
AND.b #$03 : ASL #2 : STA !SCRATCH_CAPACITY
|
||||
TXA : LSR #3 : PHA : ASL : !ADD 1,s : STA !SHOP_SRAM_INDEX : PLA
|
||||
BRA .success
|
||||
@@ -202,9 +204,9 @@ SpritePrep_ShopKeeper:
|
||||
LDA 1,s : TAX : LDA.l .tile_offsets, X : TAX
|
||||
JSR LoadTile
|
||||
PLY : PLX
|
||||
INX #8
|
||||
INY #4
|
||||
+
|
||||
INX #8
|
||||
|
||||
|
||||
BRL -
|
||||
@@ -277,32 +279,32 @@ UploadVRAMTiles:
|
||||
LDA #$7E : STA $4304
|
||||
|
||||
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
STZ $2116 ; set WRAM register source address
|
||||
LDA #$60 : STA $2116 ; set VRAM register destination address
|
||||
LDA #$5E : 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 WRAM register source address
|
||||
LDA #$5F : STA $2117
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
|
||||
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
LDA #$20 : STA $2116 ; set VRAM register destination address
|
||||
LDA #$5C : STA $2117
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
|
||||
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
STZ $2116 ; set WRAM register source address
|
||||
LDA #$20 : STA $2116 ; set VRAM register destination address
|
||||
LDA #$5D : STA $2117
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
|
||||
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
LDA #$20 : STA $2116 ; set WRAM register source address
|
||||
LDA #$40 : STA $2116 ; set VRAM register destination address
|
||||
LDA #$5C : STA $2117
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
|
||||
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
LDA #$20 : STA $2116 ; set WRAM register source address
|
||||
LDA #$5D : 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 WRAM register source address
|
||||
LDA #$5C : 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 WRAM register source address
|
||||
LDA #$40 : STA $2116 ; set VRAM register destination address
|
||||
LDA #$5D : STA $2117
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
;--------------------------------------------------------------------------------
|
||||
@@ -333,22 +335,7 @@ Sprite_ShopKeeper:
|
||||
JSL.l Sprite_PlayerCantPassThrough
|
||||
|
||||
; Draw Shopkeeper
|
||||
LDA.b #$02 : STA $06 ; request 2 OAM slots
|
||||
LDA #$08 : JSL.l OAM_AllocateFromRegionA ; request 8 bytes
|
||||
LDA.b #$02 : STA $06 ; request 2 OAM slots
|
||||
STZ $07
|
||||
LDA $1A : AND #$10 : BEQ +
|
||||
LDA.b #.oam_shopkeeper_f1 : STA $08
|
||||
LDA.b #.oam_shopkeeper_f1>>8 : STA $09
|
||||
BRA ++
|
||||
+
|
||||
LDA.b #.oam_shopkeeper_f2 : STA $08
|
||||
LDA.b #.oam_shopkeeper_f2>>8 : STA $09
|
||||
++
|
||||
;LDA.b #$01 : STA.l !SKIP_EOR
|
||||
JSL.l Sprite_DrawMultiple_quantity_preset
|
||||
LDA $90 : !ADD.b #$04*2 : STA $90 ; increment oam pointer
|
||||
LDA $92 : INC #2 : STA $92
|
||||
JSR.w Shopkeeper_DrawMerchant
|
||||
|
||||
LDA.l !SHOP_TYPE : AND.b #$80 : BEQ + ; Take-any
|
||||
PHX
|
||||
@@ -373,12 +360,54 @@ Sprite_ShopKeeper:
|
||||
PLB
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;--------------------------------------------------------------------------------
|
||||
Shopkeeper_DrawMerchant:
|
||||
LDA.l !SHOP_MERCHANT : AND.b #$0F
|
||||
BEQ Shopkeeper_DrawMerchant_Type0
|
||||
CMP.b #$01 : BEQ Shopkeeper_DrawMerchant_Type1
|
||||
Shopkeeper_DrawMerchant_Type0:
|
||||
LDA.b #$02 : STA $06 ; request 2 OAM slots
|
||||
LDA #$08 : JSL.l OAM_AllocateFromRegionA ; request 8 bytes
|
||||
STZ $07
|
||||
LDA $1A : AND #$10 : BEQ +
|
||||
LDA.b #.oam_shopkeeper_f1 : STA $08
|
||||
LDA.b #.oam_shopkeeper_f1>>8 : STA $09
|
||||
BRA ++
|
||||
+
|
||||
LDA.b #.oam_shopkeeper_f2 : STA $08
|
||||
LDA.b #.oam_shopkeeper_f2>>8 : STA $09
|
||||
++
|
||||
JSL.l Sprite_DrawMultiple_quantity_preset
|
||||
LDA $90 : !ADD.b #$04*2 : STA $90 ; increment oam pointer
|
||||
LDA $92 : INC #2 : STA $92
|
||||
RTS
|
||||
.oam_shopkeeper_f1
|
||||
dw 0, -8 : db $00, $0C, $00, $02
|
||||
dw 0, 0 : db $10, $0C, $00, $02
|
||||
dw 0, -8 : db $00, $0A, $00, $02
|
||||
dw 0, 0 : db $10, $0A, $00, $02
|
||||
.oam_shopkeeper_f2
|
||||
dw 0, -8 : db $00, $0C, $00, $02
|
||||
dw 0, 0 : db $10, $4C, $00, $02
|
||||
dw 0, -8 : db $00, $0A, $00, $02
|
||||
dw 0, 0 : db $10, $4A, $00, $02
|
||||
;--------------------------------------------------------------------------------
|
||||
Shopkeeper_DrawMerchant_Type1:
|
||||
LDA.b #$01 : STA $06 ; request 1 OAM slot
|
||||
LDA #$04 : JSL.l OAM_AllocateFromRegionA ; request 4 bytes
|
||||
STZ $07
|
||||
LDA $1A : AND #$08 : BEQ +
|
||||
LDA.b #.oam_shopkeeper_f1 : STA $08
|
||||
LDA.b #.oam_shopkeeper_f1>>8 : STA $09
|
||||
BRA ++
|
||||
+
|
||||
LDA.b #.oam_shopkeeper_f2 : STA $08
|
||||
LDA.b #.oam_shopkeeper_f2>>8 : STA $09
|
||||
++
|
||||
JSL.l Sprite_DrawMultiple_quantity_preset
|
||||
LDA $90 : !ADD.b #$04 : STA $90 ; increment oam pointer
|
||||
LDA $92 : INC : STA $92
|
||||
RTS
|
||||
.oam_shopkeeper_f1
|
||||
dw 0, 0 : db $46, $0A, $00, $02
|
||||
.oam_shopkeeper_f2
|
||||
dw 0, 0 : db $46, $4A, $00, $02
|
||||
;--------------------------------------------------------------------------------
|
||||
Shopkeeper_SetupHitboxes:
|
||||
PHX : PHY : PHP
|
||||
@@ -569,7 +598,7 @@ RTS
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
Shopkeeper_DrawNextItem:
|
||||
LDA.l !SHOP_STATE : AND.w Shopkeeper_ItemMasks, Y : BNE .next
|
||||
LDA.l !SHOP_STATE : AND.w Shopkeeper_ItemMasks, Y : BEQ + : BRL .next : +
|
||||
|
||||
PHY
|
||||
TYA : ASL #2 : TAY
|
||||
@@ -583,7 +612,15 @@ Shopkeeper_DrawNextItem:
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
PLY
|
||||
|
||||
LDA.w .tile_indices, Y ; get item gfx index
|
||||
LDA.l !SHOP_INVENTORY, X ; get item id
|
||||
CMP.b #$2E : BNE + : BRA .potion
|
||||
+ CMP.b #$2F : BNE + : BRA .potion
|
||||
+ CMP.b #$30 : BEQ .potion
|
||||
.normal
|
||||
LDA.w .tile_indices, Y : BRA + ; get item gfx index
|
||||
.potion
|
||||
LDA.b #$C0 ; potion is #$C0 because it's already there in VRAM
|
||||
+
|
||||
STA.l !SPRITE_OAM+4
|
||||
|
||||
LDA.l !SHOP_INVENTORY, X ; get item palette
|
||||
@@ -620,7 +657,7 @@ dw -40, 40
|
||||
dw 8, 40
|
||||
dw 56, 40
|
||||
.tile_indices
|
||||
db $C0, $C2, $C4
|
||||
db $E6, $C2, $C4
|
||||
;--------------------------------------------------------------------------------
|
||||
!COLUMN_LOW = "$7F5022"
|
||||
!COLUMN_HIGH = "$7F5023"
|
||||
|
||||
47
tables.asm
47
tables.asm
@@ -1415,19 +1415,54 @@ db $FF, $FF, $FF, $FF
|
||||
; t - 0=Shop - 1=TakeAny
|
||||
; d - 0=Check Door - 1=Skip Door Check
|
||||
; qq - # of items for sale
|
||||
|
||||
;shopkeeper_config - -ppp --ss
|
||||
; ppp - palette
|
||||
; ss - sprite type
|
||||
org $30C800 ; PC 0x184800 - 0x18487F - max 16 shops
|
||||
ShopTable:
|
||||
;db [id][roomID-low][roomID-high][doorID][zero][shop_config][pad][pad]
|
||||
;db $01, $1F, $01, $46, $00, $03, $00, $00 ; Kakariko shop
|
||||
;db $FF, $12, $01, $58, $00, $03, $00, $00
|
||||
;db [id][roomID-low][roomID-high][doorID][zero][shop_config][shopkeeper_config][pad]
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
||||
db $00, $12, $01, $6E, $00, $03, $51, $00
|
||||
db $01, $10, $01, $75, $00, $03, $50, $00
|
||||
db $02, $0F, $01, $57, $00, $03, $50, $00
|
||||
db $03, $0F, $01, $60, $00, $03, $50, $00
|
||||
db $04, $0F, $01, $6F, $00, $03, $50, $00
|
||||
db $05, $FF, $00, $00, $00, $03, $50, $00
|
||||
db $06, $1F, $01, $46, $00, $03, $50, $00
|
||||
db $FF, $12, $01, $58, $00, $03, $50, $00
|
||||
org $30C880 ; PC 0x184880 - 0x184FFF - max 240 entries
|
||||
ShopContentsTable:
|
||||
;db [id][item][price-low][price-high][max][repl_id][repl_price-low][repl_price-high]
|
||||
db $FF, $AF, $50, $00, $00, $FF, $00, $00
|
||||
db $FF, $27, $0A, $00, $00, $FF, $00, $00
|
||||
db $FF, $12, $F4, $01, $01, $2F, $3C, $00
|
||||
;db $FF, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $FF, $31, $0A, $00, $00, $FF, $00, $00
|
||||
;db $FF, $12, $F4, $01, $01, $2F, $3C, $00
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
||||
;db $00, $2E, $96, $00, $00, $FF, $00, $00
|
||||
;db $00, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $00, $31, $32, $00, $00, $FF, $00, $00
|
||||
;db $01, $05, $F4, $01, $00, $FF, $00, $00
|
||||
;db $01, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $01, $44, $1E, $00, $00, $FF, $00, $00
|
||||
;db $02, $2E, $96, $00, $00, $FF, $00, $00
|
||||
;db $02, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $02, $31, $32, $00, $00, $FF, $00, $00
|
||||
;db $03, $2E, $96, $00, $00, $FF, $00, $00
|
||||
;db $03, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $03, $31, $32, $00, $00, $FF, $00, $00
|
||||
;db $04, $2E, $96, $00, $00, $FF, $00, $00
|
||||
;db $04, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $04, $31, $32, $00, $00, $FF, $00, $00
|
||||
;db $05, $2E, $96, $00, $00, $FF, $00, $00
|
||||
;db $05, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $05, $31, $32, $00, $00, $FF, $00, $00
|
||||
;db $06, $2E, $96, $00, $00, $FF, $00, $00
|
||||
;db $06, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $06, $31, $32, $00, $00, $FF, $00, $00
|
||||
;db $FF, $2E, $96, $00, $00, $FF, $00, $00
|
||||
;db $FF, $AF, $50, $00, $00, $FF, $00, $00
|
||||
;db $FF, $31, $32, $00, $00, $FF, $00, $00
|
||||
;db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
||||
;================================================================================
|
||||
org $30D000
|
||||
MSUTrackList:
|
||||
|
||||
@@ -335,10 +335,10 @@ RTL
|
||||
{
|
||||
.smallSprites
|
||||
db $04, $07, $08, $09, $0A, $0B, $0C, $13
|
||||
db $15, $18, $24, $2A, $31, $34, $35, $36
|
||||
db $42, $43, $45, $59, $A0, $A1, $A2, $A3
|
||||
db $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB
|
||||
db $AC, $AD, $AE, $AF, $FF, $FF, $FF, $FF
|
||||
db $15, $18, $24, $2A, $34, $35, $36, $42
|
||||
db $43, $45, $59, $A0, $A1, $A2, $A3, $A4
|
||||
db $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC
|
||||
db $AD, $AE, $AF, $FF, $FF, $FF, $FF, $FF
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user