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 msu.asm
incsrc dialog.asm
incsrc events.asm
incsrc entrances.asm
incsrc accessability.asm
incsrc heartbeep.asm
@@ -194,6 +193,7 @@ incsrc compression.asm
incsrc retro.asm
incsrc dpadinvert.asm
incsrc boots.asm
incsrc events.asm
incsrc clock.asm
incsrc fileselect.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)
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
CMP.b #$70 : BNE + ; map of...
%CopyDialog(Notice_MapOf)
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)
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)
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 : ++
%CopyDialog(Notice_SmallKeyOf)
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 #$02 : BEQ + : STA !INFINITE_BOMBS : +
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
PLA
JSL Link_ReceiveItem
@@ -135,6 +135,11 @@ OnNewFile:
DEX : DEX
BPL -
LDX #$000E : -
LDA $7EF37C, X : STA $7EF4E0, X
DEX : DEX
BPL -
SEP #$20 ; set 8-bit accumulator
;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
LDA.l PreopenCurtains : BEQ +
@@ -151,6 +156,8 @@ OnNewFile:
+
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
RTL
;--------------------------------------------------------------------------------

View File

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

View File

@@ -30,9 +30,9 @@ JML.l NMIHookAction
org $0080D0 ; <- D0 - Bank00.asm : 164 (PHA : PHX : PHY : PHD : PHB)
NMIHookReturn:
;--------------------------------------------------------------------------------
;org $00821B ; <- 21B - Bank00.asm : 329 (LDA $13 : STA $2100)
;JML.l PostNMIHookAction : NOP
;PostNMIHookReturn:
org $00821B ; <- 21B - Bank00.asm : 329 (LDA $13 : STA $2100)
JML.l PostNMIHookAction : NOP
PostNMIHookReturn:
;--------------------------------------------------------------------------------
;================================================================================
@@ -374,6 +374,32 @@ NOP #19 ;23 bytes removed with the JSL
;--------------------------------------------------------------------------------
org $04E7AE ; <- bank0E.asm : 4230 (LDA $7EF287 : AND.w #$0020)
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
JML.l PreventEnterOnBonk

View File

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

View File

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

View File

@@ -194,7 +194,20 @@ SpritePrep_ShopKeeper:
BRL -
.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
LDA.l !SHOP_TYPE : BIT.b #$20 : BEQ .notTakeAll ; Take-all
@@ -233,11 +246,11 @@ dw $0000, $0000
dw $0080, $0000
dw $0100, $0000
;--------------------------------------------------------------------------------
QueueItemDMA:
LDA.b #Shopkeeper_UploadVRAMTilesLong>>0 : STA !NMI_AUX
LDA.b #Shopkeeper_UploadVRAMTilesLong>>8 : STA !NMI_AUX+1
LDA.b #Shopkeeper_UploadVRAMTilesLong>>16 : STA !NMI_AUX+2
RTS
;QueueItemDMA:
; LDA.b #Shopkeeper_UploadVRAMTilesLong>>0 : STA !NMI_AUX
; LDA.b #Shopkeeper_UploadVRAMTilesLong>>8 : STA !NMI_AUX+1
; LDA.b #Shopkeeper_UploadVRAMTilesLong>>16 : STA !NMI_AUX+2
;RTS
;--------------------------------------------------------------------------------
; X - Tile Buffer Offset
; Y - Item ID

View File

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