Merge branch 'ChestKeyCounter' into DRMain

# Conflicts:
#	LTTP_RND_GeneralBugfixes.asm
#	build.sh
#	darkworldspawn.asm
#	events.asm
#	itemdowngrade.asm
#	shopkeeper.asm
#	stats.asm
This commit is contained in:
aerinon
2020-11-30 09:34:18 -07:00
11 changed files with 125 additions and 67 deletions

View File

@@ -147,7 +147,6 @@ incsrc scratchpad.asm
incsrc map.asm incsrc map.asm
incsrc msu.asm incsrc msu.asm
incsrc dialog.asm incsrc dialog.asm
incsrc events.asm
incsrc entrances.asm incsrc entrances.asm
incsrc accessability.asm incsrc accessability.asm
incsrc heartbeep.asm incsrc heartbeep.asm
@@ -194,6 +193,7 @@ incsrc compression.asm
incsrc retro.asm incsrc retro.asm
incsrc dpadinvert.asm incsrc dpadinvert.asm
incsrc boots.asm incsrc boots.asm
incsrc events.asm
incsrc clock.asm incsrc clock.asm
incsrc fileselect.asm incsrc fileselect.asm
incsrc playername.asm incsrc playername.asm

BIN
asar Executable file

Binary file not shown.

5
build.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
rm ../working.sfc
cp ../alttp.sfc ../working.sfc
./asar LTTP_RND_GeneralBugfixes.asm ../working.sfc

View File

@@ -165,17 +165,21 @@ FreeDungeonItemNotice:
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
BRL .done BRL .done
+ +
LDA.l FreeItemText : AND.b #$04 : CMP.b #$04 : BNE + ; show message for dungeon map
LDA !ITEM_TEMPORARY : AND.b #$F0 ; looking at high bits only LDA !ITEM_TEMPORARY : AND.b #$F0 ; looking at high bits only
CMP.b #$70 : BNE + ; map of... CMP.b #$70 : BNE + ; map of...
%CopyDialog(Notice_MapOf) %CopyDialog(Notice_MapOf)
BRL .dungeon BRL .dungeon
+ : CMP.b #$80 : BNE + ; compass of... + : LDA.l FreeItemText : AND.b #$02 : CMP.b #$02 : BNE + ; show message for dungeon compass
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of...
%CopyDialog(Notice_CompassOf) %CopyDialog(Notice_CompassOf)
BRL .dungeon BRL .dungeon
+ : CMP.b #$90 : BNE + ; big key of... + : LDA.l FreeItemText : AND.b #$08 : CMP.b #$08 : BNE + ; show message for dungeon big key
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
%CopyDialog(Notice_BigKeyOf) %CopyDialog(Notice_BigKeyOf)
BRA .dungeon BRA .dungeon
+ : CMP.b #$A0 : BNE + ; small key of... + : LDA.l FreeItemText : AND.b #$01 : CMP.b #$01 : BNE + ; show message for dungeon small key
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
LDA !ITEM_TEMPORARY : CMP.b #$AF : BNE ++ : BRL .skip : ++ LDA !ITEM_TEMPORARY : CMP.b #$AF : BNE ++ : BRL .skip : ++
%CopyDialog(Notice_SmallKeyOf) %CopyDialog(Notice_SmallKeyOf)
PLA : AND.b #$0F : STA $7F5020 : LDA.b #$0F : !SUB $7F5020 : PHA PLA : AND.b #$0F : STA $7F5020 : LDA.b #$0F : !SUB $7F5020 : PHA

View File

@@ -61,7 +61,7 @@ OnUncleItemGet:
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : + BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : + BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : +
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : + BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA
JSL Link_ReceiveItem JSL Link_ReceiveItem
@@ -135,6 +135,11 @@ OnNewFile:
DEX : DEX DEX : DEX
BPL - BPL -
LDX #$000E : -
LDA $7EF37C, X : STA $7EF4E0, X
DEX : DEX
BPL -
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in ;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
LDA.l PreopenCurtains : BEQ + LDA.l PreopenCurtains : BEQ +
@@ -151,6 +156,8 @@ OnNewFile:
+ +
LDA StartingSword : STA $7EF359 ; set starting sword type LDA StartingSword : STA $7EF359 ; set starting sword type
LDA !INVENTORY_SWAP : STA $70038C ; copy starting equipment swaps to file select screen
LDA !INVENTORY_SWAP_2 : STA $70038E
PLP : PLX PLP : PLX
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -75,28 +75,28 @@ NMIHookAction:
JML.l NMIHookReturn JML.l NMIHookReturn
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;!NMI_AUX = "$7F5044" !NMI_AUX = "$7F5044"
;PostNMIHookAction: PostNMIHookAction:
; LDA !NMI_AUX+2 : BEQ + LDA !NMI_AUX : BEQ +
; LDA $00 : PHA ; preserve DP ram LDA $00 : PHA ; preserve DP ram
; LDA $01 : PHA LDA $01 : PHA
; LDA $02 : PHA LDA $02 : PHA
;
; LDA !NMI_AUX+2 : STA $02 ; set up jump pointer LDA !NMI_AUX+2 : STA $02 ; set up jump pointer
; LDA !NMI_AUX+1 : STA $01 LDA !NMI_AUX+1 : STA $01
; LDA !NMI_AUX+0 : STA $00 LDA !NMI_AUX+0 : STA $00
;
; PHK : PER .return-1 ; push stack for RTL return PHK : PER .return-1 ; push stack for RTL return
; JMP [$0000] JMP [$0000]
;
; .return .return
; LDA.b #$00 : STA !NMI_AUX+2 ; zero bank byte of NMI hook pointer LDA.b #$00 : STA !NMI_AUX ; zero bank byte of NMI hook pointer
;
; PLA : STA $02 PLA : STA $02
; PLA : STA $01 PLA : STA $01
; PLA : STA $00 PLA : STA $00
; + +
;
; LDA $13 : STA $2100 ; thing we wrote over, turn screen back on LDA $13 : STA $2100 ; thing we wrote over, turn screen back on
;JML.l PostNMIHookReturn JML.l PostNMIHookReturn
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -30,9 +30,9 @@ JML.l NMIHookAction
org $0080D0 ; <- D0 - Bank00.asm : 164 (PHA : PHX : PHY : PHD : PHB) org $0080D0 ; <- D0 - Bank00.asm : 164 (PHA : PHX : PHY : PHD : PHB)
NMIHookReturn: NMIHookReturn:
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;org $00821B ; <- 21B - Bank00.asm : 329 (LDA $13 : STA $2100) org $00821B ; <- 21B - Bank00.asm : 329 (LDA $13 : STA $2100)
;JML.l PostNMIHookAction : NOP JML.l PostNMIHookAction : NOP
;PostNMIHookReturn: PostNMIHookReturn:
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;================================================================================ ;================================================================================
@@ -374,6 +374,32 @@ NOP #19 ;23 bytes removed with the JSL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $04E7AE ; <- bank0E.asm : 4230 (LDA $7EF287 : AND.w #$0020) org $04E7AE ; <- bank0E.asm : 4230 (LDA $7EF287 : AND.w #$0020)
JSL.l TurtleRockPegSolved JSL.l TurtleRockPegSolved
org $04E7B9 ; <- bank0E.asm : 4237 (LDX $04C8)
JMP.w TurtleRockTrollPegs
TurtleRockPegCheck:
org $04E7C9
TurtleRockPegSuccess:
org $04E7F5
TurtleRockPegFail:
org $04E96F
PegProbability:
db $00 ; Probability out of 255. 0 = Vanilla behavior
TurtleRockTrollPegs:
SEP #$20
LDX.w $04C8 : CPX.w #$FFFF : BEQ .vanilla
JSL.l GetRandomInt
LDA.l PegProbability : BEQ .vanilla : CMP.l $7E0FA1
REP #$20 : !BGE .succeed
.fail
JMP.w TurtleRockPegFail
.succeed
JMP.w TurtleRockPegSuccess
.vanilla
REP #$20 : JMP.w TurtleRockPegCheck
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $1BBD05 ; <- bank1B.asm : 261 (TYA : STA $00) ; hook starts at the STA org $1BBD05 ; <- bank1B.asm : 261 (TYA : STA $00) ; hook starts at the STA
JML.l PreventEnterOnBonk JML.l PreventEnterOnBonk

View File

@@ -2,11 +2,10 @@
; Item Downgrade Fix ; Item Downgrade Fix
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
ItemDowngradeFix: ItemDowngradeFix:
JSR ItemDowngradeFixMain JSR ItemDowngradeFixMain
JSL CountChestKeyLong JSL CountChestKeyLong
RTL RTL
ItemDowngradeFixMain: ItemDowngradeFixMain:
JSL.l AddInventory JSL.l AddInventory
BMI .dontWrite ; thing we wrote over part 1 BMI .dontWrite ; thing we wrote over part 1

View File

@@ -326,7 +326,7 @@ CheckMusicLoadRequest:
.sfx_indoors .sfx_indoors
LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST
PLY : PLX : PLA : PLP PLY : PLX : PLA : PLP
LDA.b #$05 : STA $012D PHP : SEP #$20 : LDA.b #$05 : STA $012D : PLP
JML Module_PreDungeon_setAmbientSfx JML Module_PreDungeon_setAmbientSfx
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -194,7 +194,20 @@ SpritePrep_ShopKeeper:
BRL - BRL -
.stop .stop
LDA #$01 : STA !NMI_AUX+2 : STA !NMI_AUX ;LDA $A0 : CMP.b #$FF : BNE .normal
;.dumb
; LDA $2137
; LDA $213F
; LDA $213D
; CMP.b #60
; !BLT .dumb
;.normal
;LDA #$80 : STA $2100
;JSR Shopkeeper_UploadVRAMTiles
;LDA #$0F : STA $2100
LDA.b #Shopkeeper_UploadVRAMTilesLong>>16 : STA !NMI_AUX+2
LDA.b #Shopkeeper_UploadVRAMTilesLong>>8 : STA !NMI_AUX+1
LDA.b #Shopkeeper_UploadVRAMTilesLong>>0 : STA !NMI_AUX
.done .done
LDA.l !SHOP_TYPE : BIT.b #$20 : BEQ .notTakeAll ; Take-all LDA.l !SHOP_TYPE : BIT.b #$20 : BEQ .notTakeAll ; Take-all
@@ -233,11 +246,11 @@ dw $0000, $0000
dw $0080, $0000 dw $0080, $0000
dw $0100, $0000 dw $0100, $0000
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
QueueItemDMA: ;QueueItemDMA:
LDA.b #Shopkeeper_UploadVRAMTilesLong>>0 : STA !NMI_AUX ; LDA.b #Shopkeeper_UploadVRAMTilesLong>>0 : STA !NMI_AUX
LDA.b #Shopkeeper_UploadVRAMTilesLong>>8 : STA !NMI_AUX+1 ; LDA.b #Shopkeeper_UploadVRAMTilesLong>>8 : STA !NMI_AUX+1
LDA.b #Shopkeeper_UploadVRAMTilesLong>>16 : STA !NMI_AUX+2 ; LDA.b #Shopkeeper_UploadVRAMTilesLong>>16 : STA !NMI_AUX+2
RTS ;RTS
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; X - Tile Buffer Offset ; X - Tile Buffer Offset
; Y - Item ID ; Y - Item ID

View File

@@ -238,38 +238,42 @@ DecrementSmallKeys:
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CountChestKeyLong: ; called from ItemDowngradeFix in itemdowngrade.asm CountChestKeyLong: ; called from ItemDowngradeFix in itemdowngrade.asm
JSR CountChestKey JSR CountChestKey
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CountChestKey: ; called by neighbor functions CountChestKey: ; called by neighbor functions
PHA : PHX PHA : PHX
lda !MULTIWORLD_ITEM_PLAYER_ID : bne .end LDA !MULTIWORLD_ITEM_PLAYER_ID : bne .end
CPY #$24 : BEQ + ; small key for this dungeon - use $040C CPY #24 : BEQ + ; hera basement key
CPY #$A0 : !BLT .end ; Ignore most items CPY #$24 : BEQ + ; small key for this dungeon - use $040C
CPY #$AE : !BGE .end ; Ignore reserved key and generic key CPY #$A0 : !BLT .end ; Ignore most items
TYA : AND.B #$0F : BNE ++ ; If this is a sewers key, instead count it as an HC key CPY #$AE : !BGE .end ; Ignore reserved key and generic key
INC TYA : AND.B #$0F : BNE ++ ; If this is a sewers key, instead count it as an HC key
++ TAX : BRA .count ; use Key id instead of $040C (Keysanity) INC
+ LDA $040C : LSR : TAX ++ TAX : BRA .count ; use Key id instead of $040C (Keysanity)
.count + LDA $040C : LSR
LDA $7EF4E0, X : INC : STA $7EF4E0, X BNE +
INC ; combines HC and Sewer counts
+ TAX
.count
LDA $7EF4E0, X : INC : STA $7EF4E0, X
.end .end
PLX : PLA PLX : PLA
RTS RTS
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CountBonkItem: ; called from GetBonkItem in bookofmudora.asm CountBonkItem: ; called from GetBonkItem in bookofmudora.asm
LDA $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte LDA $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte
CMP #115 : BNE + ; Desert Bonk Key CMP #115 : BNE + ; Desert Bonk Key
LDA.L BonkKey_Desert : BRA ++ LDA.L BonkKey_Desert : BRA ++
+ : CMP #140 : BNE + ; GTower Bonk Key + : CMP #140 : BNE + ; GTower Bonk Key
LDA.L BonkKey_GTower : BRA ++ LDA.L BonkKey_GTower : BRA ++
+ LDA.B #$24 ; default to small key + LDA.B #$24 ; default to small key
++ ++
CMP #$24 : BNE + CMP #$24 : BNE +
PHY PHY
TAY : JSR CountChestKey TAY : JSR CountChestKey
PLY PLY
+ +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
IncrementAgahnim2Sword: IncrementAgahnim2Sword: