Merged in DR v1.4.5

This commit is contained in:
codemann8
2024-08-16 23:00:45 -05:00
27 changed files with 481 additions and 290 deletions

View File

@@ -57,7 +57,7 @@ GiveBonkItem:
PHY : LDY.b #$24 : JSL AddInventory : PLY ; do inventory processing for a small key PHY : LDY.b #$24 : JSL AddInventory : PLY ; do inventory processing for a small key
LDA.l CurrentSmallKeys : INC A : STA.l CurrentSmallKeys LDA.l CurrentSmallKeys : INC A : STA.l CurrentSmallKeys
LDA.b #$2F : JSL Sound_SetSfx3PanLong LDA.b #$2F : JSL Sound_SetSfx3PanLong
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
RTL RTL
.notKey .notKey
PHY : TAY : JSL Link_ReceiveItem : PLY PHY : TAY : JSL Link_ReceiveItem : PLY

View File

@@ -2,4 +2,4 @@
rm ../working.sfc rm ../working.sfc
cp ../alttp.sfc ../working.sfc cp ../alttp.sfc ../working.sfc
./bin/linux/asar LTTP_RND_GeneralBugfixes.asm ../working.sfc ./bin/linux/asar -DFEATURE_PATREON_SUPPORTERS=1 LTTP_RND_GeneralBugfixes.asm ../working.sfc

61
data/textbytecharmap.txt Normal file
View File

@@ -0,0 +1,61 @@
'=9D
A=AA
B=AB
C=AC
D=AD
E=AE
F=AF
G=B0
H=B1
I=B2
J=B3
K=B4
L=B5
M=B6
N=B7
O=B8
P=B9
Q=BA
R=BB
S=BC
T=BD
U=BE
V=BF
W=C0
X=C1
Y=C2
Z=C3
?=C6
!=C7
,=C8
-=C9
.=CD
~=CE
a=D0
b=D1
c=D2
d=D3
e=D4
f=D5
g=D6
h=D7
i=D8
j=D9
k=DA
l=DB
m=DC
n=DD
o=DE
p=DF
q=E0
r=E1
s=E2
t=E3
u=E4
v=E5
w=E6
x=E7
y=E8
z=E9
:=EA
=FF

61
data/textwordcharmap.txt Normal file
View File

@@ -0,0 +1,61 @@
'=9D00
A=AA00
B=AB00
C=AC00
D=AD00
E=AE00
F=AF00
G=B000
H=B100
I=B200
J=B300
K=B400
L=B500
M=B600
N=B700
O=B800
P=B900
Q=BA00
R=BB00
S=BC00
T=BD00
U=BE00
V=BF00
W=C000
X=C100
Y=C200
Z=C300
?=C600
!=C700
,=C800
-=C900
.=CD00
~=CE00
a=D000
b=D100
c=D200
d=D300
e=D400
f=D500
g=D600
h=D700
i=D800
j=D900
k=DA00
l=DB00
m=DC00
n=DD00
o=DE00
p=DF00
q=E000
r=E100
s=E200
t=E300
u=E400
v=E500
w=E600
x=E700
y=E800
z=E900
:=EA00
=FF00

View File

@@ -61,7 +61,7 @@ LoadDialogAddressIndirect:
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
FreeDungeonItemNotice: FreeDungeonItemNotice:
STA.w ScratchBufferV STA.l ScratchBufferV
PHA : PHX : PHY PHA : PHX : PHY
PHP PHP
@@ -70,59 +70,59 @@ FreeDungeonItemNotice:
REP #$10 ; set 16-bit index registers REP #$10 ; set 16-bit index registers
PEI.b (Scrap00) PEI.b (Scrap00)
LDA.b Scrap02 : PHA LDA.b Scrap02 : PHA
LDA.w ScratchBufferNV : PHA LDA.l ScratchBufferNV : PHA
LDA.w ScratchBufferNV+1 : PHA LDA.l ScratchBufferNV+1 : PHA
;-------------------------------- ;--------------------------------
LDA.l FreeItemText : BNE + : JMP .skip : + LDA.l FreeItemText : BNE + : JMP .skip : +
LDA.b #$00 : STA.w ScratchBufferNV ; initialize scratch LDA.b #$00 : STA.l ScratchBufferNV ; initialize scratch
LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for general small key LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for general small key
LDA.w ScratchBufferV : CMP.b #$24 : BNE + ; general small key LDA.l ScratchBufferV : CMP.b #$24 : BNE + ; general small key
%CopyDialog(Notice_SmallKeyOf) %CopyDialog(Notice_SmallKeyOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for general compass + : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for general compass
LDA.w ScratchBufferV : CMP.b #$25 : BNE + ; general compass LDA.l ScratchBufferV : CMP.b #$25 : BNE + ; general compass
%CopyDialog(Notice_CompassOf) %CopyDialog(Notice_CompassOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+ : LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for general map + : LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for general map
LDA.w ScratchBufferV : CMP.b #$33 : BNE + ; general map LDA.l ScratchBufferV : CMP.b #$33 : BNE + ; general map
%CopyDialog(Notice_MapOf) %CopyDialog(Notice_MapOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for general big key + : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for general big key
LDA.w ScratchBufferV : CMP.b #$32 : BNE + ; general big key LDA.l ScratchBufferV : CMP.b #$32 : BNE + ; general big key
%CopyDialog(Notice_BigKeyOf) %CopyDialog(Notice_BigKeyOf)
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
%CopyDialog(Notice_Self) %CopyDialog(Notice_Self)
JMP .done JMP .done
+ +
LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for dungeon map LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for dungeon map
LDA.w ScratchBufferV : AND.b #$F0 ; looking at high bits only LDA.l ScratchBufferV : 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)
JMP .dungeon JMP .dungeon
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for dungeon compass + : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for dungeon compass
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of... LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of...
%CopyDialog(Notice_CompassOf) %CopyDialog(Notice_CompassOf)
JMP .dungeon JMP .dungeon
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key + : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of... LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
%CopyDialog(Notice_BigKeyOf) %CopyDialog(Notice_BigKeyOf)
JMP .dungeon JMP .dungeon
+ : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key + : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of... LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
LDA.w ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++ LDA.l ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++
%CopyDialog(Notice_SmallKeyOf) %CopyDialog(Notice_SmallKeyOf)
LDA.b #$01 : STA.w ScratchBufferNV ; set up a flip for small keys LDA.b #$01 : STA.l ScratchBufferNV ; set up a flip for small keys
BRA .dungeon BRA .dungeon
+ : LDA.l FreeItemText : AND.b #$20 : BEQ + ; show message for crystal + : LDA.l FreeItemText : AND.b #$20 : BEQ + ; show message for crystal
LDA.w ScratchBufferV : CMP.b #$B0 : !BLT + ; crystal # LDA.l ScratchBufferV : CMP.b #$B0 : !BLT + ; crystal #
CMP.b #$B7 : !BGE + CMP.b #$B7 : !BGE +
%CopyDialog(Notice_Crystal) %CopyDialog(Notice_Crystal)
JMP .crystal JMP .crystal
@@ -131,14 +131,14 @@ FreeDungeonItemNotice:
.dungeon .dungeon
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
LDA.w ScratchBufferV LDA.l ScratchBufferV
AND.b #$0F AND.b #$0F
STA.w ScratchBufferNV+1 STA.l ScratchBufferNV+1
LDA.w ScratchBufferNV : BEQ + LDA.l ScratchBufferNV : BEQ +
LDA.w ScratchBufferNV LDA.l ScratchBufferNV
LDA.b #$0F : !SUB.w ScratchBufferNV+1 : STA.w ScratchBufferNV+1 ; flip the values for small keys LDA.b #$0F : !SUB.l ScratchBufferNV+1 : STA.l ScratchBufferNV+1 ; flip the values for small keys
+ +
LDA.w ScratchBufferNV+1 LDA.l ScratchBufferNV+1
ASL : TAX ASL : TAX
REP #$20 REP #$20
LDA.l DungeonItemIDMap,X : CMP.w #$0003 : BCC .hc_sewers LDA.l DungeonItemIDMap,X : CMP.w #$0003 : BCC .hc_sewers
@@ -152,7 +152,7 @@ FreeDungeonItemNotice:
JMP .done JMP .done
+ +
SEP #$20 SEP #$20
LDA.w ScratchBufferNV+1 LDA.l ScratchBufferNV+1
CMP.b #$00 : BNE + ; ...light world CMP.b #$00 : BNE + ; ...light world
%CopyDialog(Notice_LightWorld) : JMP .done %CopyDialog(Notice_LightWorld) : JMP .done
+ : CMP.b #$01 : BNE + ; ...dark world + : CMP.b #$01 : BNE + ; ...dark world
@@ -190,7 +190,7 @@ FreeDungeonItemNotice:
.crystal .crystal
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
LDA.w ScratchBufferV LDA.l ScratchBufferV
AND.b #$0F ; looking at low bits only AND.b #$0F ; looking at low bits only
CMP.b #$00 : BNE + CMP.b #$00 : BNE +
%CopyDialog(Notice_Six) : JMP .done %CopyDialog(Notice_Six) : JMP .done
@@ -216,8 +216,8 @@ FreeDungeonItemNotice:
;-------------------------------- ;--------------------------------
.skip .skip
PLA : STA.w ScratchBufferNV+1 PLA : STA.l ScratchBufferNV+1
PLA : STA.w ScratchBufferNV PLA : STA.l ScratchBufferNV
PLA : STA.b Scrap02 PLA : STA.b Scrap02
REP #$20 REP #$20
PLA : STA.b Scrap00 PLA : STA.b Scrap00

View File

@@ -5,6 +5,7 @@ SpawnDungeonPrize:
PHX : PHB PHX : PHB
STA.w ItemReceiptID STA.w ItemReceiptID
TAX TAX
LDA.b $06,S : STA.b ScrapBuffer72 ; Store current RoomTag index
LDA.b #$29 : LDY.b #$06 LDA.b #$29 : LDY.b #$06
JSL AddAncillaLong JSL AddAncillaLong
@@ -12,6 +13,7 @@ SpawnDungeonPrize:
LDA.w ItemReceiptID LDA.w ItemReceiptID
STA.w AncillaGet,X STA.w AncillaGet,X
JSR AddDungeonPrizeAncilla JSR AddDungeonPrizeAncilla
LDX.b ScrapBuffer72 : STZ.b RoomTag,X
.failed_spawn .failed_spawn
PLB : PLX PLB : PLX
RTL RTL

View File

@@ -154,7 +154,7 @@ JML AllowStartFromExitReturn
STZ.b SubSubModule STZ.b SubSubModule
STZ.w DeathReloadFlag STZ.w DeathReloadFlag
STZ.w RespawnFlag STZ.w RespawnFlag
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
JSL Equipment_SearchForEquippedItemLong JSL Equipment_SearchForEquippedItemLong
JSL HUD_RebuildIndoor_Palace JSL HUD_RebuildIndoor_Palace

View File

@@ -23,7 +23,7 @@ JML ReturnFromOnDrawHud
OnDungeonEntrance: OnDungeonEntrance:
STA.l PegColor ; thing we wrote over STA.l PegColor ; thing we wrote over
JSL MaybeFlagDungeonTotalsEntrance JSL MaybeFlagDungeonTotalsEntrance
INC.w UpdateHUDFlag LDA.w #$0001 : STA.l UpdateHUDFlag
SEP #$30 SEP #$30
JSL DynamicDropGFXClear JSL DynamicDropGFXClear
REP #$30 REP #$30
@@ -54,7 +54,7 @@ OnDungeonExit:
STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over
PHA : PHP PHA : PHP
INC.w UpdateHUDFlag LDA.w #$0001 : STA.l UpdateHUDFlag
JSL HUD_RebuildLong JSL HUD_RebuildLong
JSL FloodGateResetInner JSL FloodGateResetInner
JSL SetSilverBowMode JSL SetSilverBowMode
@@ -238,7 +238,7 @@ OnOWTransition:
PHP PHP
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
PLP PLP
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -299,7 +299,13 @@ DrawPlayerFileShared:
%fs_drawItemBasic(EquipmentSRAM+$12,9,18,FileSelectItems_cape) %fs_drawItemBasic(EquipmentSRAM+$12,9,18,FileSelectItems_cape)
; Mirror ; Mirror
%fs_drawItemBasic(EquipmentSRAM+$13,9,20,FileSelectItems_mirror) LDA.l EquipmentSRAM+$13 : AND.w #$00FF : BEQ +
CMP.w #$0001 : BNE +
%fs_drawItem(9,20,FileSelectItems_mirrorScroll)
BRA ++
+
%fs_drawItemBasic(EquipmentSRAM+$13,9,20,FileSelectItems_mirror)
++
; Bottles ; Bottles
%fs_drawBottle(EquipmentSRAM+$1C,3,23) %fs_drawBottle(EquipmentSRAM+$1C,3,23)
@@ -390,7 +396,13 @@ DrawPlayerFileShared:
LDA.l HexToDecDigit5 : AND.w #$00FF : ORA.w #!FS_COLOR_BW|$02E0 : %fs_draw8x8(11,27) LDA.l HexToDecDigit5 : AND.w #$00FF : ORA.w #!FS_COLOR_BW|$02E0 : %fs_draw8x8(11,27)
; Boots ; Boots
%fs_drawItemBasic(EquipmentSRAM+$15,3,28,FileSelectItems_boots) LDA.l EquipmentSRAM+$15 : AND.w #$00FF : BNE +
LDA.l FakeBoots : AND.w #$00FF : BEQ +
%fs_drawItem(3,28,FileSelectItems_fakeBoots)
BRA ++
+
%fs_drawItemBasic(EquipmentSRAM+$15,3,28,FileSelectItems_boots)
++
; Gloves ; Gloves
LDA.l EquipmentSRAM+$14 : AND.w #$00FF : BNE + LDA.l EquipmentSRAM+$14 : AND.w #$00FF : BNE +
@@ -537,12 +549,16 @@ FileSelectItems:
dw #$0288|!FS_COLOR_RED, #$0289|!FS_COLOR_RED, #$0298|!FS_COLOR_RED, #$0299|!FS_COLOR_RED dw #$0288|!FS_COLOR_RED, #$0289|!FS_COLOR_RED, #$0298|!FS_COLOR_RED, #$0299|!FS_COLOR_RED
.mirror .mirror
dw #$028A|!FS_COLOR_BLUE, #$028B|!FS_COLOR_BLUE, #$029A|!FS_COLOR_BLUE, #$029B|!FS_COLOR_BLUE dw #$028A|!FS_COLOR_BLUE, #$028B|!FS_COLOR_BLUE, #$029A|!FS_COLOR_BLUE, #$029B|!FS_COLOR_BLUE
.mirrorScroll
dw #$02C2|!FS_COLOR_YELLOW, #$02C3|!FS_COLOR_YELLOW, #$02D2|!FS_COLOR_YELLOW, #$02d3|!FS_COLOR_YELLOW
.flippers .flippers
dw #$024E|!FS_COLOR_BLUE, #$024F|!FS_COLOR_BLUE, #$025F|!FS_COLOR_BLUE|!FS_HFLIP, #$025F|!FS_COLOR_BLUE dw #$024E|!FS_COLOR_BLUE, #$024F|!FS_COLOR_BLUE, #$025F|!FS_COLOR_BLUE|!FS_HFLIP, #$025F|!FS_COLOR_BLUE
.boots .boots
dw #$028C|!FS_COLOR_BOOTS, #$028D|!FS_COLOR_BOOTS, #$029C|!FS_COLOR_BOOTS, #$029D|!FS_COLOR_BOOTS dw #$028C|!FS_COLOR_BOOTS, #$028D|!FS_COLOR_BOOTS, #$029C|!FS_COLOR_BOOTS, #$029D|!FS_COLOR_BOOTS
.fakeBoots
dw #$028C|!FS_COLOR_BLUE, #$028D|!FS_COLOR_BLUE, #$029C|!FS_COLOR_BLUE, #$029D|!FS_COLOR_BLUE
.pearl .pearl
dw #$02A4|!FS_COLOR_RED, #$02A5|!FS_COLOR_RED, #$02B4|!FS_COLOR_RED, #$02B5|!FS_COLOR_RED dw #$02A4|!FS_COLOR_RED, #$02A5|!FS_COLOR_RED, #$02B4|!FS_COLOR_RED, #$02B5|!FS_COLOR_RED

View File

@@ -757,11 +757,17 @@ org $8DE7B9 ; <- 6E7B9 - equipment.asm : 1548 (LDA.w #$16D0 : STA $00)
JSL DrawGlovesInMenuLocation : NOP JSL DrawGlovesInMenuLocation : NOP
org $8DE7CF ; <- 6E7CF - equipment.asm : 1554 (LDA.w #$16C8 : STA $00) org $8DE7CF ; <- 6E7CF - equipment.asm : 1554 (LDA.w #$16C8 : STA $00)
JSL DrawBootsInMenuLocation : NOP JSL DrawBootsInMenuLocation : NOP
org $8DE7DD
JSL ChangeBootsColorForFakeBoots : NOP
org $8DE7E5 ; <- 6E7E5 - equipment.asm : 1560 (LDA.w #$16D8 : STA $00) org $8DE7E5 ; <- 6E7E5 - equipment.asm : 1560 (LDA.w #$16D8 : STA $00)
JSL DrawFlippersInMenuLocation : NOP JSL DrawFlippersInMenuLocation : NOP
org $8DECEB ; <- 6ECEB - equipment.asm : 1946 (LDA.w #$16E0 : STA $00) org $8DECEB ; <- 6ECEB - equipment.asm : 1946 (LDA.w #$16E0 : STA $00)
JSL DrawMoonPearlInMenuLocation : NOP JSL DrawMoonPearlInMenuLocation : NOP
; Fake boots icon
org $8DF851
dw $2C29, $2C2A, $2C2B, $2C2C
;================================================================================ ;================================================================================
; Zelda S&Q Mirror Fix ; Zelda S&Q Mirror Fix
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -1042,7 +1048,7 @@ org $81C517 : JSL CheckDungeonCompletion
org $81C523 : JSL CheckDungeonCompletion org $81C523 : JSL CheckDungeonCompletion
org $81C710 : JSL CheckSpawnPrize org $81C710 : JSL CheckSpawnPrize
BCS RoomTag_GetHeartForPrize_spawn_prize : BRA RoomTag_GetHeartForPrize_delete_tag BCS RoomTag_GetHeartForPrize_spawn_prize : BRA RoomTag_GetHeartForPrize_delete_tag
org $81C742 : JSL SpawnDungeonPrize org $81C742 : JSL SpawnDungeonPrize : PLA : RTS
org $8799EA : JML SetItemPose org $8799EA : JML SetItemPose
org $88C415 : JSL PendantMusicCheck org $88C415 : JSL PendantMusicCheck
BCS Ancilla22_ItemReceipt_is_pendant : BRA Ancilla22_ItemReceipt_wait_for_music BCS Ancilla22_ItemReceipt_is_pendant : BRA Ancilla22_ItemReceipt_wait_for_music
@@ -1491,7 +1497,7 @@ RebuildHUD_update_long:
JSR RebuildHUD_update : RTL JSR RebuildHUD_update : RTL
RefreshIcon_UpdateHUD: RefreshIcon_UpdateHUD:
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
JSR RebuildHUD JSR RebuildHUD
JSR UpdateEquippedItem JSR UpdateEquippedItem
RTS RTS

View File

@@ -168,7 +168,7 @@ AddInventory:
LDA.l BootsEquipment : AND.w #$00FF : BNE + LDA.l BootsEquipment : AND.w #$00FF : BNE +
TYA : STA.l PreBootsLocations TYA : STA.l PreBootsLocations
+ +
LDA.l MirrorEquipment : AND.w #$00FF : BNE + LDA.l MirrorEquipment : AND.w #$00FE : BNE + ; FE to ignore mirror scroll
TYA : STA.l PreMirrorLocations TYA : STA.l PreMirrorLocations
+ +
LDA.l FluteEquipment : AND.w #$00FF : BNE + LDA.l FluteEquipment : AND.w #$00FF : BNE +
@@ -254,10 +254,9 @@ StampItem:
LDA.b [Scrap0B] : BNE .skip LDA.b [Scrap0B] : BNE .skip
INC.b Scrap0B : INC.b Scrap0B INC.b Scrap0B : INC.b Scrap0B
LDA.b [Scrap0B] : BNE .skip LDA.b [Scrap0B] : BNE .skip
LDA.l NMIFrames+2 : STA.b [Scrap0B]
DEC.b Scrap0B : DEC.b Scrap0B DEC.b Scrap0B : DEC.b Scrap0B
LDA.l NMIFrames : STA.b [Scrap0B] LDA.l NMIFrames : STA.b [Scrap0B]
INC.b Scrap0B : INC.b Scrap0B
LDA.l NMIFrames+2 : STA.b [Scrap0B]
.skip .skip
SEP #$20 SEP #$20
RTS RTS
@@ -374,7 +373,7 @@ HUDRefresh:
+ +
JSL HUD_RefreshIconLong ; thing we wrote over JSL HUD_RefreshIconLong ; thing we wrote over
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
JSL PostItemGet JSL PostItemGet
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -389,7 +388,7 @@ HandleBombAbsorbtion:
LDA.b #$04 : STA.w ItemCursor ; set selected item to bombs LDA.b #$04 : STA.w ItemCursor ; set selected item to bombs
LDA.b #$01 : STA.w CurrentYItem ; set selected item to bombs LDA.b #$01 : STA.w CurrentYItem ; set selected item to bombs
JSL HUD_RebuildLong JSL HUD_RebuildLong
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
+ +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -765,7 +765,7 @@ endmacro
%InventoryItem($46, $0001, $0000, $0000) ; 46 - 300 rupees %InventoryItem($46, $0001, $0000, $0000) ; 46 - 300 rupees
%InventoryItem($47, $0001, $0000, $0000) ; 47 - 20 rupees green %InventoryItem($47, $0001, $0000, $0000) ; 47 - 20 rupees green
%InventoryItem($48, $0085, $0000, $0000) ; 48 - Full bottle (good bee) %InventoryItem($48, $0085, $0000, $0000) ; 48 - Full bottle (good bee)
%InventoryItem($49, $0081, $0000, $0000) ; 49 - Tossed fighter sword %InventoryItem($49, $0081, SwordTime, $0000) ; 49 - Tossed fighter sword
%InventoryItem($4A, $0085, FluteTime, $0000) ; 4A - Active Flute %InventoryItem($4A, $0085, FluteTime, $0000) ; 4A - Active Flute
%InventoryItem($4B, $0089, BootsTime, $0000) ; 4B - Boots %InventoryItem($4B, $0089, BootsTime, $0000) ; 4B - Boots
%InventoryItem($4C, $0015, $0000, CapacityUpgrades) ; 4C - Bomb capacity (50) %InventoryItem($4C, $0015, $0000, CapacityUpgrades) ; 4C - Bomb capacity (50)

View File

@@ -1,147 +1,149 @@
table "data/textwordcharmap.txt"
org $B28000 org $B28000
; You have found ; You have found
; the map of ; the map of
Notice_MapOf: Notice_MapOf:
db $74, $00, $C2, $00, $DE, $00, $E4, $00, $FF, $00, $D7, $00, $D0, $00, $E5, $00, $D4, $00, $FF, $00, $D5, $00, $DE, $00, $E4, $00, $DD, $00, $D3 db $74 : dw "You have found"
db $75, $00, $E3, $00, $D7, $00, $D4, $00, $FF, $00, $DC, $00, $D0, $00, $DF, $00, $FF, $00, $DE, $00, $D5 db $75 : dw "the map of"
dw #$7F7F dw $7F7F
; You have found ; You have found
; the compass of ; the compass of
Notice_CompassOf: Notice_CompassOf:
db $74, $00, $C2, $00, $DE, $00, $E4, $00, $FF, $00, $D7, $00, $D0, $00, $E5, $00, $D4, $00, $FF, $00, $D5, $00, $DE, $00, $E4, $00, $DD, $00, $D3 db $74 : dw "You have found"
db $75, $00, $E3, $00, $D7, $00, $D4, $00, $FF, $00, $D2, $00, $DE, $00, $DC, $00, $DF, $00, $D0, $00, $E2, $00, $E2, $00, $FF, $00, $DE, $00, $D5 db $75 : dw "the compass of"
dw #$7F7F dw $7F7F
; Oh look! it's ; Oh look! it's
; the big key of ; the big key of
Notice_BigKeyOf: Notice_BigKeyOf:
db $74, $00, $B8, $00, $D7, $00, $FF, $00, $DB, $00, $DE, $00, $DE, $00, $DA, $00, $C7, $00, $FF, $00, $D8, $00, $E3, $00, $9D, $00, $E2 db $74 : dw "Oh look! it's"
db $75, $00, $E3, $00, $D7, $00, $D4, $00, $FF, $00, $D1, $00, $D8, $00, $D6, $00, $FF, $00, $DA, $00, $D4, $00, $E8, $00, $FF, $00, $DE, $00, $D5 db $75 : dw "the big key of"
dw #$7F7F dw $7F7F
; this is a ; This is a
; small key to ; small key to
Notice_SmallKeyOf: Notice_SmallKeyOf:
db $74, $00, $BD, $00, $D7, $00, $D8, $00, $E2, $00, $FF, $00, $D8, $00, $E2, $00, $FF, $00, $D0 db $74 : dw "This is a"
db $75, $00, $E2, $00, $DC, $00, $D0, $00, $DB, $00, $DB, $00, $FF, $00, $DA, $00, $D4, $00, $E8, $00, $FF, $00, $E3, $00, $DE db $75 : dw "small key to"
dw #$7F7F dw $7F7F
; You picked up ; You picked up
Notice_Crystal: Notice_Crystal:
db $74, $00, $C2, $00, $DE, $00, $E4, $00, $FF, $00, $DF, $00, $D8, $00, $D2, $00, $DA, $00, $D4, $00, $D3, $00, $FF, $00, $E4, $00, $DF db $74 : dw "You picked up"
dw $7F7F dw $7F7F
; light world ; Light World
Notice_LightWorld: Notice_LightWorld:
db $76, $00, $B5, $00, $D8, $00, $D6, $00, $D7, $00, $E3, $00, $FF, $00, $C0, $00, $DE, $00, $E1, $00, $DB, $00, $D3 db $76 : dw "Light World"
dw #$7F7F dw $7F7F
; dark world ; Dark World
Notice_DarkWorld: Notice_DarkWorld:
db $76, $00, $AD, $00, $D0, $00, $E1, $00, $DA, $00, $FF, $00, $C0, $00, $DE, $00, $E1, $00, $DB, $00, $D3 db $76 : dw "Dark World"
dw #$7F7F dw $7F7F
; Ganons Tower ; Ganons Tower
Notice_GTower: Notice_GTower:
db $76, $00, $B0, $00, $D0, $00, $DD, $00, $DE, $00, $DD, $00, $E2, $00, $FF, $00, $BD, $00, $DE, $00, $E6, $00, $D4, $00, $E1 db $76 : dw "Ganons Tower"
dw #$7F7F dw $7F7F
; Turtle Rock ; Turtle Rock
Notice_TRock: Notice_TRock:
db $76, $00, $BD, $00, $E4, $00, $E1, $00, $E3, $00, $DB, $00, $D4, $00, $FF, $00, $BB, $00, $DE, $00, $D2, $00, $DA db $76 : dw "Turtle Rock"
dw #$7F7F dw $7F7F
; Thieves Town ; Thieves Town
Notice_Thieves: Notice_Thieves:
db $76, $00, $BD, $00, $D7, $00, $D8, $00, $D4, $00, $E5, $00, $D4, $00, $E2, $00, $FF, $00, $BD, $00, $DE, $00, $E6, $00, $DD db $76 : dw "Thieves Town"
dw #$7F7F dw $7F7F
; Tower of Hera ; Tower of Hera
Notice_Hera: Notice_Hera:
db $76, $00, $BD, $00, $DE, $00, $E6, $00, $D4, $00, $E1, $00, $FF, $00, $DE, $00, $D5, $00, $FF, $00, $B1, $00, $D4, $00, $E1, $00, $D0 db $76 : dw "Tower of Hera"
dw #$7F7F dw $7F7F
; Ice Palace ; Ice Palace
Notice_Ice: Notice_Ice:
db $76, $00, $B2, $00, $D2, $00, $D4, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4 db $76 : dw "Ice Palace"
dw #$7F7F dw $7F7F
; Skull Woods ; Skull Woods
Notice_Skull: Notice_Skull:
db $76, $00, $BC, $00, $DA, $00, $E4, $00, $DB, $00, $DB, $00, $FF, $00, $C0, $00, $DE, $00, $DE, $00, $D3, $00, $E2 db $76 : dw "Skull Woods"
dw #$7F7F dw $7F7F
; Misery Mire ; Misery Mire
Notice_Mire: Notice_Mire:
db $76, $00, $B6, $00, $D8, $00, $E2, $00, $D4, $00, $E1, $00, $E8, $00, $FF, $00, $B6, $00, $D8, $00, $E1, $00, $D4 db $76 : dw "Misery Mire"
dw #$7F7F dw $7F7F
; Dark Palace ; Dark Palace
Notice_PoD: Notice_PoD:
db $76, $00, $AD, $00, $D0, $00, $E1, $00, $DA, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4 db $76 : dw "Dark Palace"
dw #$7F7F dw $7F7F
; Swamp Palace ; Swamp Palace
Notice_Swamp: Notice_Swamp:
db $76, $00, $BC, $00, $E6, $00, $D0, $00, $DC, $00, $DF, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4 db $76 : dw "Swamp Palace"
dw #$7F7F dw $7F7F
; Castle Tower ; Castle Tower
Notice_AgaTower: Notice_AgaTower:
db $76, $00, $AC, $00, $D0, $00, $E2, $00, $E3, $00, $DB, $00, $D4, $00, $FF, $00, $BD, $00, $DE, $00, $E6, $00, $D4, $00, $E1 db $76 : dw "Castle Tower"
dw #$7F7F dw $7F7F
; Desert Palace ; Desert Palace
Notice_Desert: Notice_Desert:
db $76, $00, $AD, $00, $D4, $00, $E2, $00, $D4, $00, $E1, $00, $E3, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4 db $76 : dw "Desert Palace"
dw #$7F7F dw $7F7F
; Eastern Palace ; Eastern Palace
Notice_Eastern: Notice_Eastern:
db $76, $00, $AE, $00, $D0, $00, $E2, $00, $E3, $00, $D4, $00, $E1, $00, $DD, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4 db $76 : dw "Eastern Palace"
dw #$7F7F dw $7F7F
; Hyrule Castle ; Hyrule Castle
Notice_Castle: Notice_Castle:
db $76, $00, $B1, $00, $E8, $00, $E1, $00, $E4, $00, $DB, $00, $D4, $00, $FF, $00, $AC, $00, $D0, $00, $E2, $00, $E3, $00, $DB, $00, $D4 db $76 : dw "Hyrule Castle"
dw #$7F7F dw $7F7F
; Hyrule Castle ; Hyrule Castle
Notice_Sewers: Notice_Sewers:
db $76, $00, $B1, $00, $E8, $00, $E1, $00, $E4, $00, $DB, $00, $D4, $00, $FF, $00, $AC, $00, $D0, $00, $E2, $00, $E3, $00, $DB, $00, $D4 db $76 : dw "Hyrule Castle"
dw #$7F7F dw $7F7F
; This Dungeon ; This Dungeon
Notice_Self: Notice_Self:
db $76, $00, $E3, $00, $D7, $00, $D8, $00, $E2, $00, $FF, $00, $D3, $00, $E4, $00, $DD, $00, $D6, $00, $D4, $00, $DE, $00, $Dd db $76 : dw "this dungeon"
dw #$7F7F dw $7F7F
; Crystal numbers ; Crystal numbers
Notice_One: Notice_One:
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $DE, $00, $DD, $00, $D4 db $75 : dw "crystal one"
dw #$7F7F dw $7F7F
Notice_Two: Notice_Two:
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E3, $00, $E6, $00, $DE db $75 : dw "crystal two"
dw #$7F7F dw $7F7F
Notice_Three: Notice_Three:
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E3, $00, $D7, $00, $E1, $00, $D4, $00, $D4 db $75 : dw "crystal three"
dw #$7F7F dw $7F7F
Notice_Four: Notice_Four:
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $D5, $00, $DE, $00, $E4, $00, $E1 db $75 : dw "crystal four"
dw #$7F7F dw $7F7F
Notice_Five: Notice_Five:
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $D5, $00, $D8, $00, $E5, $00, $D4 db $75 : dw "crystal five"
dw #$7F7F dw $7F7F
Notice_Six: Notice_Six:
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E2, $00, $D8, $00, $E7 db $75 : dw "crystal six"
dw #$7F7F dw $7F7F
Notice_Seven: Notice_Seven:
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E2, $00, $D4, $00, $E5, $00, $D4, $00, $DD db $75 : dw "crystal seven"
dw #$7F7F dw $7F7F

View File

@@ -218,7 +218,7 @@ RevealPotItem:
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now ; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
+ REP #$10 + REP #$10
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
INC.w UpdateHUDFlag LDA.w #$0001 : STA.l UpdateHUDFlag
.obtained .obtained
PLY : PLX PLY : PLX
@@ -317,7 +317,7 @@ IncrementCountsForSubstitute:
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now ; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
+ +
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
INC.w UpdateHUDFlag LDA.w #$0001 : STA.l UpdateHUDFlag
.obtained .obtained
SEP #$30 : PLX SEP #$30 : PLX
RTS RTS
@@ -556,7 +556,7 @@ IncrementCountForMinor:
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now ; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
+ +
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
INC.w UpdateHUDFlag LDA.w #$0001 : STA.l UpdateHUDFlag
.obtained .obtained
SEP #$30 : PLX SEP #$30 : PLX
RTS RTS
@@ -674,12 +674,6 @@ KeyGet:
+ LDY.w SprItemReceipt, X + LDY.w SprItemReceipt, X
LDA.w SprItemIndex, X : STA.w SpawnedItemIndex LDA.w SprItemIndex, X : STA.w SpawnedItemIndex
LDA.w SprItemFlags, X : STA.w SpawnedItemFlag LDA.w SprItemFlags, X : STA.w SpawnedItemFlag
; LDA.b RoomIndex : CMP.b #$87 : BNE + ;check for hera cage
; LDA.w SpawnedItemFlag : BNE + ; if it came from a pot, it's fine
; JSR ShouldKeyBeCountedForDungeon : BCC ++
; JSL CountChestKeyLong
; ++ PLA : RTL
;+
STY.b Scrap00 STY.b Scrap00
LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_ITEM_PLAYER_ID
STA.l !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE .receive STA.l !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE .receive
@@ -706,18 +700,6 @@ KeyGet:
KeyTable: KeyTable:
db $A0, $A0, $A2, $A3, $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC, $AD db $A0, $A0, $A2, $A3, $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC, $AD
; Input Y - the item type
ShouldKeyBeCountedForDungeon:
PHX
LDA.w DungeonID : CMP.b #$FF : BEQ .done
LSR : TAX
TYA : CMP.w KeyTable, X : BNE +
- PLX : SEC : RTS
+ CMP.b #$24 : BEQ -
.done
PLX : CLC : RTS
BigKeyGet: BigKeyGet:
LDY.w SprItemReceipt, X LDY.w SprItemReceipt, X
CPY.b #$32 : BNE + CPY.b #$32 : BNE +

98
msu.asm
View File

@@ -164,27 +164,27 @@ CheckMusicLoadRequest:
.continue .continue
LDA.l TournamentSeed : BNE +++ LDA.l TournamentSeed : BNE +++
LDA.w MSUPackRequest LDA.l MSUPackRequest
CMP.w MSUPackCurrent : BEQ +++ CMP.l MSUPackCurrent : BEQ +++
CMP.w MSUPackCount : !BLT ++ CMP.l MSUPackCount : !BLT ++
CMP.b #$FE : !BLT + CMP.b #$FE : !BLT +
STA.w MSUPackCurrent STA.l MSUPackCurrent
SEP #$10 SEP #$10
LDA.b #$00 LDA.b #$00
LDX.b #$07 LDX.b #$07
- -
STA.w MSUFallbackTable,X STA.l MSUFallbackTable,X
DEX : BPL - DEX : BPL -
REP #$10 REP #$10
BRA +++ BRA +++
+ : LDA.w MSUPackCurrent : STA.w MSUPackRequest + : LDA.l MSUPackCurrent : STA.l MSUPackRequest
++ : STA.w MSUPackCurrent ++ : STA.l MSUPackCurrent
JSL MSUInit_check_fallback JSL MSUInit_check_fallback
+++ +++
LDA.w MusicControlRequest : CMP.b #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE LDA.w MusicControlRequest : CMP.b #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
LDA.l NoBGM : BNE + LDA.l NoBGM : BNE +
LDA.w MSUPackCurrent : CMP.b #$FE : BNE ++ LDA.l MSUPackCurrent : CMP.b #$FE : BNE ++
+ : JMP .mute + : JMP .mute
++ ++
@@ -253,7 +253,7 @@ CheckMusicLoadRequest:
LDA.l MusicShuffleTable-1,X : DEC : PHA LDA.l MusicShuffleTable-1,X : DEC : PHA
AND.b #$07 : TAY AND.b #$07 : TAY
PLA : LSR #3 : TAX PLA : LSR #3 : TAX
LDA.w MSUFallbackTable,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute LDA.l MSUFallbackTable,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute
- : CPY.b #$00 : BEQ + - : CPY.b #$00 : BEQ +
LSR : DEY : BRA - LSR : DEY : BRA -
@@ -369,7 +369,7 @@ SpiralStairsPreCheck:
+ +
LDA.l BigKeyField : AND.w #$0004 : BEQ .done ; Check that we have the GT big key LDA.l BigKeyField : AND.w #$0004 : BEQ .done ; Check that we have the GT big key
LDA.w MSUFallbackTable+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track LDA.l MSUFallbackTable+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track
.fade .fade
LDX.b #$F1 : STX.w MusicControlRequest LDX.b #$F1 : STX.w MusicControlRequest
@@ -426,10 +426,10 @@ MSUInit:
PHP PHP
LDA.b #$00 LDA.b #$00
STA.w MSULoadedTrack STA.l MSULoadedTrack
STA.w MSUResumeTrack STA.l MSUResumeTrack
STA.w MSUResumeTime : STA.w MSUResumeTime+1 : STA.w MSUResumeTime+2 : STA.w MSUResumeTime+3 STA.l MSUResumeTime : STA.l MSUResumeTime+1 : STA.l MSUResumeTime+2 : STA.l MSUResumeTime+3
STA.w MSUResumeControl STA.l MSUResumeControl
LDA.l NoBGM : BNE .done LDA.l NoBGM : BNE .done
@@ -456,7 +456,7 @@ MSUInit:
.wait_pack .wait_pack
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_pack LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_pack
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BEQ .check_pack LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BEQ .check_pack
TXA : STA.w MSUPackCount TXA : STA.l MSUPackCount
BRA + BRA +
; Check the current MSU-1 pack for tracks that require SPC fallback ; Check the current MSU-1 pack for tracks that require SPC fallback
@@ -478,7 +478,7 @@ MSUInit:
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE + LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE +
SEC SEC
+ +
LDA.w MSUFallbackTable,X : ROL : STA.w MSUFallbackTable,X LDA.l MSUFallbackTable,X : ROL : STA.l MSUFallbackTable,X
DEY : BPL .next_track DEY : BPL .next_track
DEX : BPL + DEX : BPL +
@@ -499,25 +499,25 @@ MSUInit:
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
MSUStopPlaying: MSUStopPlaying:
PHA : XBA : PHA PHA : XBA : PHA
LDA.w MSULoadedTrack LDA.l MSULoadedTrack
JSR IsResumableTrack : BCC + JSR IsResumableTrack : BCC +
; dont save if we already saved recently ; dont save if we already saved recently
REP #$20 REP #$20
LDA.w MSUResumeTrack : AND.w #$00FF : BEQ ++ LDA.l MSUResumeTrack : AND.w #$00FF : BEQ ++
LDA.l NMIFrames : !SUB.w MSUResumeTime : PHA LDA.l NMIFrames : !SUB.l MSUResumeTime : PHA
LDA.l NMIFrames+2 : SBC.w MSUResumeTime+2 : BNE +++ LDA.l NMIFrames+2 : SBC.l MSUResumeTime+2 : BNE +++
PLA : CMP.l MSUResumeTimer : !BLT .too_early PLA : CMP.l MSUResumeTimer : !BLT .too_early
BRA ++ BRA ++
+++ +++
PLA PLA
++ ++
; saving ; saving
LDA.l NMIFrames : STA.w MSUResumeTime LDA.l NMIFrames : STA.l MSUResumeTime
LDA.l NMIFrames+2 : STA.w MSUResumeTime+2 LDA.l NMIFrames+2 : STA.l MSUResumeTime+2
SEP #$20 SEP #$20
LDA.w MSULoadedTrack : STA.w MSUResumeTrack LDA.l MSULoadedTrack : STA.l MSUResumeTrack
LDA.b #$00 : STA.w MSULoadedTrack ; dont take this path if we're calling again LDA.b #$00 : STA.l MSULoadedTrack ; dont take this path if we're calling again
LDA.b #!FLAG_MSU_RESUME : STA.w MSUCTL ; save this track's position LDA.b #!FLAG_MSU_RESUME : STA.w MSUCTL ; save this track's position
PLA : XBA : PLA PLA : XBA : PLA
RTS RTS
@@ -548,23 +548,23 @@ MSUMain:
LDX.w MusicControl : BEQ + LDX.w MusicControl : BEQ +
JMP .command_ff JMP .command_ff
+ +
LDA.w MSUDelayedCommand : BEQ .do_fade LDA.l MSUDelayedCommand : BEQ .do_fade
.check_busy .check_busy
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE - LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE -
.ready .ready
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE - LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE -
.start .start
LDA.w MSUResumeControl : BIT.b #!FLAG_RESUME_CANCEL : BEQ + LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_CANCEL : BEQ +
EOR.b #!FLAG_RESUME_CANCEL : STA.w MSUResumeControl EOR.b #!FLAG_RESUME_CANCEL : STA.l MSUResumeControl
REP #$20 : LDA.w MSULoadedTrack : STA.w MSUTRACK : SEP #$20 REP #$20 : LDA.l MSULoadedTrack : STA.w MSUTRACK : SEP #$20
BRA - BRA -
+ +
LDA.b #!VAL_VOLUME_FULL LDA.b #!VAL_VOLUME_FULL
STA.w TargetVolume STA.w TargetVolume
LDA.w MSUResumeControl : BIT.b #!FLAG_RESUME_FADEIN : BEQ + LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_FADEIN : BEQ +
EOR.b #!FLAG_RESUME_FADEIN : STA.w MSUResumeControl EOR.b #!FLAG_RESUME_FADEIN : STA.l MSUResumeControl
LDA.b #$00 LDA.b #$00
BRA ++ BRA ++
+ +
@@ -576,17 +576,17 @@ MSUMain:
LDA.w CurrentMSUTrack : DEC : PHA LDA.w CurrentMSUTrack : DEC : PHA
AND.b #$07 : TAY AND.b #$07 : TAY
PLA : LSR #3 : TAX PLA : LSR #3 : TAX
LDA.w MSUFallbackTable,X : BEQ +++ : CMP.b #$FF : BEQ ++ LDA.l MSUFallbackTable,X : BEQ +++ : CMP.b #$FF : BEQ ++
- : CPY.b #$00 : BEQ + - : CPY.b #$00 : BEQ +
LSR : DEY : BRA - LSR : DEY : BRA -
+ +
AND.b #$01 : BEQ +++ AND.b #$01 : BEQ +++
++ : LDA.w MSUDelayedCommand ++ : LDA.l MSUDelayedCommand
+++ : STA.w MSUCTL +++ : STA.w MSUCTL
LDA.b #$00 LDA.b #$00
STA.w MSUDelayedCommand STA.l MSUDelayedCommand
JML SPCContinue JML SPCContinue
.do_fade: .do_fade:
@@ -649,9 +649,9 @@ MSUMain:
+ +
CPX.w CurrentControlRequest : BEQ - CPX.w CurrentControlRequest : BEQ -
LDA.b #$00 : XBA LDA.b #$00 : XBA
LDA.w MSUPackCurrent : BEQ + LDA.l MSUPackCurrent : BEQ +
- : CMP.w MSUPackCount : !BLT + - : CMP.l MSUPackCount : !BLT +
!SUB.w MSUPackCount : BRA - !SUB.l MSUPackCount : BRA -
+ +
JSR MSUStopPlaying JSR MSUStopPlaying
@@ -664,14 +664,14 @@ MSUMain:
DEX : BNE - DEX : BNE -
+ +
STA.w MSUTRACK STA.w MSUTRACK
STA.w MSULoadedTrack STA.l MSULoadedTrack
SEP #$20 SEP #$20
PLX PLX
TXA : CMP.w MSUResumeTrack : BNE + ; dont resume if too late TXA : CMP.l MSUResumeTrack : BNE + ; dont resume if too late
REP #$20 REP #$20
LDA.l NMIFrames : !SUB.w MSUResumeTime : PHA LDA.l NMIFrames : !SUB.l MSUResumeTime : PHA
LDA.l NMIFrames+2 : SBC.w MSUResumeTime+2 : BNE ++ LDA.l NMIFrames+2 : SBC.l MSUResumeTime+2 : BNE ++
PLA : CMP.l MSUResumeTimer : !BGE +++ PLA : CMP.l MSUResumeTimer : !BGE +++
SEP #$20 SEP #$20
LDA.b #!FLAG_RESUME_FADEIN : BRA .done_resume LDA.b #!FLAG_RESUME_FADEIN : BRA .done_resume
@@ -681,8 +681,8 @@ MSUMain:
SEP #$20 SEP #$20
LDA.b #!FLAG_RESUME_CANCEL LDA.b #!FLAG_RESUME_CANCEL
.done_resume: .done_resume:
STA.w MSUResumeControl STA.l MSUResumeControl
LDA.b #$00 : STA.w MSUResumeTrack LDA.b #$00 : STA.l MSUResumeTrack
+ +
CPX.b #$07 : BNE + ; Kakariko Village CPX.b #$07 : BNE + ; Kakariko Village
LDA.b GameMode : CMP.b #$07 : BNE + LDA.b GameMode : CMP.b #$07 : BNE +
@@ -692,12 +692,12 @@ MSUMain:
+ +
TXA TXA
++ ++
STA.w MSULoadedTrack STA.l MSULoadedTrack
STX.w CurrentMSUTrack STX.w CurrentMSUTrack
LDA.w MSUPackCurrent : CMP.b #$FE : !BLT + LDA.l MSUPackCurrent : CMP.b #$FE : !BLT +
LDA.b #$00 : BRA ++ LDA.b #$00 : BRA ++
+ : LDA.l MSUTrackList-1,X + : LDA.l MSUTrackList-1,X
++ : STA.w MSUDelayedCommand ++ : STA.l MSUDelayedCommand
LDA.l MSUExtendedFallbackList-1,X LDA.l MSUExtendedFallbackList-1,X
CMP.b #17 : BEQ + CMP.b #17 : BEQ +
CMP.b #22 : BEQ + CMP.b #22 : BEQ +
@@ -747,9 +747,9 @@ PendantFanfareWait:
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc
SEP #$20 SEP #$20
LDA.w MSUPackCurrent : CMP.b #$FE : !BGE .spc LDA.l MSUPackCurrent : CMP.b #$FE : !BGE .spc
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
LDA.w MSUDelayedCommand : BNE .continue LDA.l MSUDelayedCommand : BNE .continue
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
.continue .continue
jml PendantFanfareContinue jml PendantFanfareContinue
@@ -771,9 +771,9 @@ CrystalFanfareWait:
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc
SEP #$20 SEP #$20
LDA.w MSUPackCurrent : CMP.b #$FE : !BGE .spc LDA.l MSUPackCurrent : CMP.b #$FE : !BGE .spc
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
LDA.w MSUDelayedCommand : BNE .continue LDA.l MSUDelayedCommand : BNE .continue
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
.continue .continue
jml CrystalFanfareContinue jml CrystalFanfareContinue

View File

@@ -65,7 +65,7 @@ NewHUD_DrawArrows:
;================================================================================ ;================================================================================
NewHUD_DrawGoal: NewHUD_DrawGoal:
REP #$20 REP #$20
LDA.w UpdateHUDFlag : BEQ .no_goal LDA.l UpdateHUDFlag : BEQ .no_goal
LDA.l GoalItemRequirement : BEQ .no_goal LDA.l GoalItemRequirement : BEQ .no_goal
LDA.l GoalItemIcon : STA.w HUDGoalIndicator LDA.l GoalItemIcon : STA.w HUDGoalIndicator
@@ -126,7 +126,7 @@ NewHUD_DrawKeys:
;================================================================================ ;================================================================================
NewHUD_DrawDungeonCounters: NewHUD_DrawDungeonCounters:
LDA.w UpdateHUDFlag : BEQ NewHUD_DrawPrizeIcon LDA.l UpdateHUDFlag : BEQ NewHUD_DrawPrizeIcon
LDA.l CompassMode : ORA.l MapHUDMode : BIT.b #$03 : BEQ NewHUD_DrawPrizeIcon LDA.l CompassMode : ORA.l MapHUDMode : BIT.b #$03 : BEQ NewHUD_DrawPrizeIcon
LDX.b IndoorsFlag : BNE + LDX.b IndoorsFlag : BNE +
JMP NewHUD_DrawMagicMeter JMP NewHUD_DrawMagicMeter
@@ -151,7 +151,7 @@ NewHUD_DrawPrizeIcon:
LDA.b GameMode LDA.b GameMode
CMP.b #$12 : BEQ .no_prize CMP.b #$12 : BEQ .no_prize
CMP.b #$0E : BEQ + CMP.b #$0E : BEQ +
LDA.w UpdateHUDFlag : BEQ NewHUD_DrawItemCounter LDA.l UpdateHUDFlag : BEQ NewHUD_DrawItemCounter
+ +
LDA.w DungeonID LDA.w DungeonID
CMP.b #$1A : BCS .no_prize CMP.b #$1A : BCS .no_prize
@@ -201,7 +201,7 @@ NewHUD_DrawPrizeIcon:
;================================================================================ ;================================================================================
NewHUD_DrawItemCounter: NewHUD_DrawItemCounter:
REP #$20 REP #$20
LDA.w UpdateHUDFlag : BNE .continue LDA.l UpdateHUDFlag : BNE .continue
.early_exit .early_exit
JMP NewHUD_DrawMagicMeter JMP NewHUD_DrawMagicMeter
.continue .continue
@@ -279,7 +279,7 @@ NewHUD_DrawMagicMeter:
;================================================================================ ;================================================================================
NewHUD_DoneDrawing: NewHUD_DoneDrawing:
STZ.w UpdateHUDFlag LDA.w #$0000 : STA.l UpdateHUDFlag
PLB PLB
RTL RTL

View File

@@ -437,7 +437,7 @@ ItemBehavior:
.single_arrow .single_arrow
LDA.l ArrowMode : BEQ + LDA.l ArrowMode : BEQ +
LDA.l CurrentArrows : INC : STA.l CurrentArrows ; Should be sole write to this address LDA.l CurrentArrows : INC : STA.l CurrentArrows ; Should be sole write to this address
INC.w UpdateHUDFlag ; in retro/rupee bow mode. LDA.b #$01 : STA.l UpdateHUDFlag ; in retro/rupee bow mode.
+ +
RTS RTS
@@ -893,15 +893,15 @@ ResolveLootID:
JMP .have_item JMP .have_item
.rng_single .rng_single
JSL GetRNGItemSingle : STA.w ScratchBufferV+6 JSL GetRNGItemSingle : STA.l ScratchBufferV+6
XBA : JSR MarkRNGItemSingle XBA : JSR MarkRNGItemSingle
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
LDA.w ScratchBufferV+6 : JMP .get_item LDA.l ScratchBufferV+6 : JMP .get_item
.rng_multi .rng_multi
JSL GetRNGItemMulti : STA.w ScratchBufferV+6 JSL GetRNGItemMulti : STA.l ScratchBufferV+6
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
LDA.w ScratchBufferV+6 : JMP .get_item LDA.l ScratchBufferV+6 : JMP .get_item
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
DungeonItemMasks: DungeonItemMasks:
@@ -956,7 +956,7 @@ HandleBowTracking:
; at this point. ; at this point.
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ + LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot LDX.w CurrentSpriteSlot
LDA.w SpriteMetaData,X : BEQ + LDA.w SpriteMetaData,X : BEQ .done
BRA .done BRA .done
+ +
LDA.b #$00 LDA.b #$00
@@ -1026,32 +1026,32 @@ GetRNGItemSingle:
CMP.l RNGSingleTableSize : !BGE .single_reroll CMP.l RNGSingleTableSize : !BGE .single_reroll
+++ +++
STA.w ScratchBufferV ; put our index value here STA.l ScratchBufferV ; put our index value here
LDX.b #$00 LDX.b #$00
TAY TAY
.recheck .recheck
TYA TYA
JSR CheckSingleItem : BEQ .single_unused ; already used JSR CheckSingleItem : BEQ .single_unused ; already used
LDA.w ScratchBufferV : INC ; increment index LDA.l ScratchBufferV : INC ; increment index
CMP.l RNGSingleTableSize : BCC +++ : LDA.b #$00 : +++ ; rollover index if needed CMP.l RNGSingleTableSize : BCC +++ : LDA.b #$00 : +++ ; rollover index if needed
STA.w ScratchBufferV ; store index STA.l ScratchBufferV ; store index
INX : TAY : TXA : CMP.l RNGSingleTableSize : BCC .recheck INX : TAY : TXA : CMP.l RNGSingleTableSize : BCC .recheck
LDA.b #$5A ; everything is gone, default to null item - MAKE THIS AN OPTION FOR THIS AND THE OTHER ONE LDA.b #$5A ; everything is gone, default to null item - MAKE THIS AN OPTION FOR THIS AND THE OTHER ONE
BRA .single_done BRA .single_done
.single_unused .single_unused
LDA.w ScratchBufferV LDA.l ScratchBufferV
.single_done .single_done
TAX : LDA.l RNGSingleItemTable, X TAX : LDA.l RNGSingleItemTable, X
XBA : LDA.w ScratchBufferV : STA.l RNGLockIn : XBA XBA : LDA.l ScratchBufferV : STA.l RNGLockIn : XBA
PLY PLY
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CheckSingleItem: CheckSingleItem:
LSR #3 : TAX LSR #3 : TAX
LDA.l RNGItem, X : STA.w ScratchBufferV+2 ; load value to temporary LDA.l RNGItem, X : STA.l ScratchBufferV+2 ; load value to temporary
PHX PHX
LDA.w ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X LDA.l ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X
LDA.w ScratchBufferV+2 LDA.l ScratchBufferV+2
--- ---
CPX.b #$00 : BEQ +++ CPX.b #$00 : BEQ +++
LSR LSR
@@ -1063,10 +1063,10 @@ CheckSingleItem:
RTS RTS
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
MarkRNGItemSingle: MarkRNGItemSingle:
LSR #3 : STA.w ScratchBufferV+1 : TAX LSR #3 : STA.l ScratchBufferV+1 : TAX
LDA.l RNGItem, X LDA.l RNGItem, X
STA.w ScratchBufferV+2 STA.l ScratchBufferV+2
LDA.w ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X LDA.l ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X
LDA.b #01 LDA.b #01
--- ---
CPX.b #$00 : BEQ +++ CPX.b #$00 : BEQ +++
@@ -1076,9 +1076,9 @@ MarkRNGItemSingle:
+++ +++
PHA PHA
LDA.w ScratchBufferV+1 : TAX LDA.l ScratchBufferV+1 : TAX
PLA PLA
ORA.w ScratchBufferV+2 ORA.l ScratchBufferV+2
STA.l RNGItem, X STA.l RNGItem, X
RTS RTS
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -17,7 +17,7 @@ RTL
;================================================================================ ;================================================================================
HUDRebuildIndoorHole: HUDRebuildIndoorHole:
PHA PHA
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
LDA.l GenericKeys : BEQ .normal LDA.l GenericKeys : BEQ .normal
.generic .generic
PLA PLA
@@ -30,7 +30,7 @@ RTL
RTL RTL
;================================================================================ ;================================================================================
HUDRebuildIndoor: HUDRebuildIndoor:
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
LDA.l GenericKeys : BEQ .normal LDA.l GenericKeys : BEQ .normal
.generic .generic
LDA.b #$00 : STA.l RoomDarkness LDA.b #$00 : STA.l RoomDarkness
@@ -166,6 +166,15 @@ DrawBootsInMenuLocation:
LDA.w #$1588 : STA.b Scrap00 LDA.w #$1588 : STA.b Scrap00
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
ChangeBootsColorForFakeBoots:
LDA.l FakeBoots : AND.w #$00FF : BEQ +
LDA.l EquipmentSRAM+$15 : AND.w #$00FF : BNE +
LDA.w #$F851 ; address of ItemMenu_ItemIcons_usused_nothing, which has the fake boots now
BRA ++
+ LDA.w #$F821 ; address of ItemMenu_ItemIcons_boots
++ STA.b Scrap04
RTL
;--------------------------------------------------------------------------------
DrawGlovesInMenuLocation: DrawGlovesInMenuLocation:
LDA.l DRMode : AND.w #$00FF : CMP.w #$0002 : BEQ + LDA.l DRMode : AND.w #$00FF : CMP.w #$0002 : BEQ +
LDA.l HUDDungeonItems : BNE + LDA.l HUDDungeonItems : BNE +

View File

@@ -10,7 +10,7 @@ QuickSwap:
LDA.l QuickSwapFlag : BEQ .done LDA.l QuickSwapFlag : BEQ .done
LDA.w ItemCursor : BEQ .done ; Skip everything if we don't have any items LDA.w ItemCursor : BEQ .done ; Skip everything if we don't have any items
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
LDY.b #$14 LDY.b #$14
PHX PHX
XBA ; restore the stashed value XBA ; restore the stashed value

66
ram.asm
View File

@@ -446,6 +446,13 @@ SpriteCoordCacheY = $7E0FDA ;
; ;
NoMenu = $7E0FFC ; When set prevents menu, mirror, medallions NoMenu = $7E0FFC ; When set prevents menu, mirror, medallions
; ;
;===================================================================================================
;===================================================================================================
; DO NOT ADD ANY RANDOMIZER VARIABLES TO THE SPACE FROM $1100 to $1FFF
;---------------------------------------------------------------------------------------------------
; It causes isses with major glitches
;===================================================================================================
;===================================================================================================
GFXStripes = $7E1000 ; Used by stripes for arbitrary VRAM transfers. $100 bytes. GFXStripes = $7E1000 ; Used by stripes for arbitrary VRAM transfers. $100 bytes.
RoomStripes = $7E1100 ; Used for room drawing. RoomStripes = $7E1100 ; Used for room drawing.
; ;
@@ -460,26 +467,7 @@ DelayTimer = $7E1CE9 ;
; ;
TextID = $7E1CF0 ; Message ID and page. Word length. TextID = $7E1CF0 ; Message ID and page. Word length.
; ;
UpdateHUDFlag = $7E1E03 ; Flag used to mark HUD updates and avoid heavy code segments.
;
ToastBuffer = $7E1E0E ; Multiworld buffer. Word length.
;
MSUResumeTime = $7E1E6B ; Mirrored MSU block
MSUResumeControl = $7E1E6F ;
MSUFallbackTable = $7E1E70 ;
MSUDelayedCommand = $7E1E79 ;
MSUPackCount = $7E1E7A ;
MSUPackCurrent = $7E1E7B ;
MSUPackRequest = $7E1E7C ;
MSULoadedTrack = $7E1E7D ;
MSUResumeTrack = $7E1E7F ;
ClockHours = $7E1E90 ; Clock Hours
ClockMinutes = $7E1E94 ; Clock Minutes
ClockSeconds = $7E1E98 ; Clock Seconds
ClockBuffer = $7E1E9C ; Clock Temporary
ScratchBufferNV = $7E1EA0 ; Non-volatile scratch buffer. Must preserve values through return.
ScratchBufferV = $7E1EB0 ; Volatile scratch buffer. Can clobber at will.
TileMapA = $7E2000 TileMapA = $7E2000
TileMapB = $7E4000 TileMapB = $7E4000
@@ -493,6 +481,28 @@ TileUploadBuffer = $7EA180 ; 0x300 bytes
; ;
ItemGetGFX = $7EBD40 ; Item receipt graphics location ItemGetGFX = $7EBD40 ; Item receipt graphics location
; ;
UpdateHUDFlag = $7EBE00 ; Flag used to mark HUD updates and avoid heavy code segments.
;
ToastBuffer = $7EBE02 ; Multiworld buffer. Word length.
;
MSUResumeTime = $7EBE6B ; Mirrored MSU block
MSUResumeControl = $7EBE6F ;
MSUFallbackTable = $7EBE70 ;
MSUDelayedCommand = $7EBE79 ;
MSUPackCount = $7EBE7A ;
MSUPackCurrent = $7EBE7B ;
MSUPackRequest = $7EBE7C ;
MSULoadedTrack = $7EBE7D ;
MSUResumeTrack = $7EBE7F ;
ClockHours = $7EBE90 ; Clock Hours
ClockMinutes = $7EBE94 ; Clock Minutes
ClockSeconds = $7EBE98 ; Clock Seconds
ClockBuffer = $7EBE9C ; Clock Temporary
ScratchBufferNV = $7EBEA0 ; Non-volatile scratch buffer. Must preserve values through return.
ScratchBufferV = $7EBEB0 ; Volatile scratch buffer. Can clobber at will.
RoomFade = $7EC005 ; Flags fade to black on room transitions. Word length. RoomFade = $7EC005 ; Flags fade to black on room transitions. Word length.
FadeTimer = $7EC007 ; Timer for transition fading and mosaics. Word length. FadeTimer = $7EC007 ; Timer for transition fading and mosaics. Word length.
FadeDirection = $7EC009 ; Word length FadeDirection = $7EC009 ; Word length
@@ -969,23 +979,7 @@ endmacro
%assertRAM(MessageSubModule, $7E1CD8) %assertRAM(MessageSubModule, $7E1CD8)
%assertRAM(MessageCursor, $7E1CE8) %assertRAM(MessageCursor, $7E1CE8)
%assertRAM(DelayTimer, $7E1CE9) %assertRAM(DelayTimer, $7E1CE9)
%assertRAM(TextID, $7E1CF0)
%assertRAM(ToastBuffer, $7E1E0E)
%assertRAM(MSUResumeTime, $7E1E6B)
%assertRAM(MSUResumeControl, $7E1E6F)
%assertRAM(MSUFallbackTable, $7E1E70)
%assertRAM(MSUDelayedCommand, $7E1E79)
%assertRAM(MSUPackCount, $7E1E7A)
%assertRAM(MSUPackCurrent, $7E1E7B)
%assertRAM(MSUPackRequest, $7E1E7C)
%assertRAM(MSULoadedTrack, $7E1E7D)
%assertRAM(MSUResumeTrack, $7E1E7F)
%assertRAM(ClockHours, $7E1E90)
%assertRAM(ClockMinutes, $7E1E94)
%assertRAM(ClockSeconds, $7E1E98)
%assertRAM(ClockBuffer, $7E1E9C)
%assertRAM(ScratchBufferNV, $7E1EA0)
%assertRAM(ScratchBufferV, $7E1EB0)
%assertRAM(TileMapA, $7E2000) %assertRAM(TileMapA, $7E2000)
%assertRAM(TileMapB, $7E4000) %assertRAM(TileMapB, $7E4000)
%assertRAM(TileUploadBuffer, $7EA180) %assertRAM(TileUploadBuffer, $7EA180)

View File

@@ -11,8 +11,9 @@ LoadBombCount16:
.infinite .infinite
RTL RTL
StoreBombCount: StoreBombCount:
INC.w UpdateHUDFlag PHA
PHA : LDA.l InfiniteBombs : BEQ .finite LDA.b #$01 : STA.l UpdateHUDFlag
LDA.l InfiniteBombs : BEQ .finite
.infinite .infinite
PLA : LDA.b #$01 : RTL PLA : LDA.b #$01 : RTL
.finite .finite

View File

@@ -78,12 +78,12 @@ IncrementSmallKeys:
STA.l CurrentSmallKeys ; thing we wrote over, write small key count STA.l CurrentSmallKeys ; thing we wrote over, write small key count
PHX PHX
LDA.l StatsLocked : BNE + LDA.l StatsLocked : BNE +
LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter
+ +
JSL UpdateKeys JSL UpdateKeys
PHY : LDY.b #24 : JSL AddInventory : PLY PHY : LDY.b #24 : JSL AddInventory : PLY
JSL HUD_RebuildLong JSL HUD_RebuildLong
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
PLX PLX
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -106,7 +106,7 @@ IncrementSmallKeysNoPrimary:
++ ++
PLP PLP
+ +
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
JSL HUD_RebuildLong JSL HUD_RebuildLong
PLX PLX
RTL RTL
@@ -330,15 +330,15 @@ StatsFinalPrep:
INC : STA.l StatsLocked INC : STA.l StatsLocked
JSL IncrementFinalSword JSL IncrementFinalSword
LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count
LDA.l Aga2Duck : BEQ .ramPostOnly
LDA.l ScreenTransitions : DEC : STA.l ScreenTransitions ; remove extra transition from exiting gtower via duck LDA.l ScreenTransitions : DEC : STA.l ScreenTransitions ; remove extra transition from exiting gtower via duck
.ramPostOnly .ramPostOnly
LDA.l SwordBossKills : LSR #4 : !ADD.l SwordBossKills : STA.l BossKills LDA.l SwordBossKills : LSR #4 : !ADD.l SwordBossKills : STA.l BossKills
LDA.l SwordBossKills+1 : LSR #4 : !ADD.l SwordBossKills+1 : !ADD.l BossKills : AND.b #$0F : STA.l BossKills LDA.l SwordBossKills+1 : LSR #4 : !ADD.l SwordBossKills+1 : !ADD.l BossKills : AND.b #$0F : STA.l BossKills
LDA.l NMIFrames : !SUB.l LoopFrames : STA.l LagTime LDA.l NMIFrames : !SUB.l LoopFrames : STA.l LagTime
LDA.l NMIFrames+1 : SBC.l LoopFrames+1 : STA.l LagTime+1 LDA.l NMIFrames+1 : SBC.l LoopFrames+1 : STA.l LagTime+1
LDA.l NMIFrames+2 : SBC.l LoopFrames+2 : STA.l LagTime+2 LDA.l NMIFrames+2 : SBC.l LoopFrames+2 : STA.l LagTime+2
@@ -356,7 +356,3 @@ StatsFinalPrep:
STZ.b GameSubMode STZ.b GameSubMode
STZ.b SubSubModule STZ.b SubSubModule
RTL RTL
;--------------------------------------------------------------------------------
; Notes:
; s&q counter
;================================================================================

View File

@@ -18,6 +18,7 @@ db 2, 55
db $5F, $6B, $68, $68, $61, $5F, $70, $65, $6B, $6A, $9F, $6E, $5D, $70, $61 ; "Collection Rate" db $5F, $6B, $68, $68, $61, $5F, $70, $65, $6B, $6A, $9F, $6E, $5D, $70, $61 ; "Collection Rate"
db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces
print "Collection Rate High Start: ", pc print "Collection Rate High Start: ", pc
warnpc $A38055
db $9F, $DB ; " /" db $9F, $DB ; " /"
db $55, $54, $59 ; 216 db $55, $54, $59 ; 216
@@ -26,9 +27,48 @@ db 2, 55
db $85, $91, $8E, $8E, $87, $85, $96, $8B, $91, $90, $9F, $94, $83, $96, $87 ; "Collection Rate" db $85, $91, $8E, $8E, $87, $85, $96, $8B, $91, $90, $9F, $94, $83, $96, $87 ; "Collection Rate"
db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces
print "Collection Rate Low Start: ", pc print "Collection Rate Low Start: ", pc
warnpc $A38073
db $9F, $EE ; " /" db $9F, $EE ; " /"
db $7B, $7A, $7F ; 216 db $7B, $7A, $7F ; 216
!FEATURE_PATREON_SUPPORTERS ?= 0
table "data/creditscharmapbighi.txt"
PatronCredit1Hi:
db 2
db 55
db " " ; $23803E
table "data/creditscharmapbiglo.txt"
PatronCredit1Lo:
db 2
db 55
db " " ; $23805C
table "data/creditscharmapbighi.txt"
PatronCredit2Hi:
db 2
db 55
db " " ; $23807A
table "data/creditscharmapbiglo.txt"
PatronCredit2Lo:
db 2
db 55
db " " ; $238098
table "data/creditscharmapbighi.txt"
PatronCredit3Hi:
db 2
db 55
db " " ; $2380B6
table "data/creditscharmapbiglo.txt"
PatronCredit3Lo:
db 2
db 55
db " " ; $2380D4
;=================================================================================================== ;===================================================================================================
CreditsLineTable: CreditsLineTable:
@@ -522,6 +562,24 @@ CreditsLineBlank:
%blankline() %blankline()
%blankline() %blankline()
if !FEATURE_PATREON_SUPPORTERS
%smallcredits("PATREON SUPPORTERS", "yellow")
%addarbline(PatronCredit1Hi)
%addarbline(PatronCredit1Lo)
%blankline()
%addarbline(PatronCredit2Hi)
%addarbline(PatronCredit2Lo)
%blankline()
%addarbline(PatronCredit3Hi)
%addarbline(PatronCredit3Lo)
%blankline()
%blankline()
endif
%smallcredits("SPECIAL THANKS", "red") %smallcredits("SPECIAL THANKS", "red")
%blankline() %blankline()
@@ -550,7 +608,7 @@ CreditsLineBlank:
%blankline() %blankline()
%bigcredits("AND&") %bigcredits("AND")
%blankline() %blankline()
@@ -573,17 +631,20 @@ CreditsLineBlank:
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline()
%emptyline() if !FEATURE_PATREON_SUPPORTERS == 0
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline() %emptyline()
%emptyline()
%emptyline()
endif
;=================================================================================================== ;===================================================================================================

View File

@@ -65,6 +65,7 @@ CreditsStats:
%AddStat(MenuFrames, 1, 8, 32, 4, !TOTAL_MENU_TIME_X, !TOTAL_MENU_TIME_Y) %AddStat(MenuFrames, 1, 8, 32, 4, !TOTAL_MENU_TIME_X, !TOTAL_MENU_TIME_Y)
%AddStat(LagTime, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y) %AddStat(LagTime, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y)
print "Collection Rate config: ", pc print "Collection Rate config: ", pc
warnpc $A39864
%AddStat(TotalItemCounter, 0, 0, 16, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y) %AddStat(TotalItemCounter, 0, 0, 16, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y)
%AddStat(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y) %AddStat(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)

View File

@@ -49,7 +49,7 @@ LoadModifiedArmorLevel:
CMP.b #$03 : !BLT + : LDA.b #$02 : + CMP.b #$03 : !BLT + : LDA.b #$02 : +
STA.l ScratchBufferV STA.l ScratchBufferV
PLA PLA
!ADD.w ScratchBufferV !ADD.l ScratchBufferV
RTL RTL
;================================================================================ ;================================================================================
; MagicConsumption - Magic Inventory ; MagicConsumption - Magic Inventory

View File

@@ -36,12 +36,12 @@ endmacro
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CalculateTimer: CalculateTimer:
LDA.w #$0000 LDA.w #$0000
STA.w ClockHours ; clear digit storage STA.l ClockHours ; clear digit storage
STA.w ClockHours+2 STA.l ClockHours+2
STA.w ClockMinutes STA.l ClockMinutes
STA.w ClockMinutes+2 STA.l ClockMinutes+2
STA.w ClockSeconds STA.l ClockSeconds
STA.w ClockSeconds+2 STA.l ClockSeconds+2
LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode
%Sub32(NMIFrames,ChallengeTimer,ClockBuffer) %Sub32(NMIFrames,ChallengeTimer,ClockBuffer)
@@ -57,8 +57,8 @@ CalculateTimer:
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2 LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
RTS RTS
++ CMP.w #$0001 : BNE ++ ; Negative Time ++ CMP.w #$0001 : BNE ++ ; Negative Time
LDA.w ClockBuffer : EOR.w #$FFFF : !ADD.w #$0001 : STA.w ClockBuffer LDA.l ClockBuffer : EOR.w #$FFFF : !ADD.w #$0001 : STA.l ClockBuffer
LDA.w ClockBuffer+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.w ClockBuffer+2 LDA.l ClockBuffer+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.l ClockBuffer+2
LDA.w #$0001 : STA.l ClockStatus ; Set Negative Mode LDA.w #$0001 : STA.l ClockStatus ; Set Negative Mode
BRA .prepDigits BRA .prepDigits
++ CMP.w #$0002 : BNE ++ ; OHKO ++ CMP.w #$0002 : BNE ++ ; OHKO
@@ -92,12 +92,12 @@ CalculateTimer:
%Sub32(ClockBuffer,.second,ClockBuffer) : BRA - %Sub32(ClockBuffer,.second,ClockBuffer) : BRA -
+ +
LDA.w ClockHours : !ADD.w #$2490 : STA.w ClockHours ; convert decimal values to tiles LDA.l ClockHours : !ADD.w #$2490 : STA.l ClockHours ; convert decimal values to tiles
LDA.w ClockHours+2 : !ADD.w #$2490 : STA.w ClockHours+2 LDA.l ClockHours+2 : !ADD.w #$2490 : STA.l ClockHours+2
LDA.w ClockMinutes : !ADD.w #$2490 : STA.w ClockMinutes LDA.l ClockMinutes : !ADD.w #$2490 : STA.l ClockMinutes
LDA.w ClockMinutes+2 : !ADD.w #$2490 : STA.w ClockMinutes+2 LDA.l ClockMinutes+2 : !ADD.w #$2490 : STA.l ClockMinutes+2
LDA.w ClockSeconds : !ADD.w #$2490 : STA.w ClockSeconds LDA.l ClockSeconds : !ADD.w #$2490 : STA.l ClockSeconds
LDA.w ClockSeconds+2 : !ADD.w #$2490 : STA.w ClockSeconds+2 LDA.l ClockSeconds+2 : !ADD.w #$2490 : STA.l ClockSeconds+2
RTS RTS
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
.hour .hour
@@ -148,14 +148,14 @@ DrawChallengeTimer:
BRA ++ BRA ++
+ ; Show Timer + ; Show Timer
LDA.l ClockStatus : AND.w #$0001 : !ADD.w #$2804 : STA.l HUDTileMapBuffer+$94 LDA.l ClockStatus : AND.w #$0001 : !ADD.w #$2804 : STA.l HUDTileMapBuffer+$94
LDA.w ClockHours+2 : STA.l HUDTileMapBuffer+$96 LDA.l ClockHours+2 : STA.l HUDTileMapBuffer+$96
LDA.w ClockHours : STA.l HUDTileMapBuffer+$98 LDA.l ClockHours : STA.l HUDTileMapBuffer+$98
LDA.w #$2806 : STA.l HUDTileMapBuffer+$9A LDA.w #$2806 : STA.l HUDTileMapBuffer+$9A
LDA.w ClockMinutes+2 : STA.l HUDTileMapBuffer+$9C LDA.l ClockMinutes+2 : STA.l HUDTileMapBuffer+$9C
LDA.w ClockMinutes : STA.l HUDTileMapBuffer+$9E LDA.l ClockMinutes : STA.l HUDTileMapBuffer+$9E
LDA.w #$2806 : STA.l HUDTileMapBuffer+$A0 LDA.w #$2806 : STA.l HUDTileMapBuffer+$A0
LDA.w ClockSeconds+2 : STA.l HUDTileMapBuffer+$A2 LDA.l ClockSeconds+2 : STA.l HUDTileMapBuffer+$A2
LDA.w ClockSeconds : STA.l HUDTileMapBuffer+$A4 LDA.l ClockSeconds : STA.l HUDTileMapBuffer+$A4
++ ++
LDA.b FrameCounter : AND.w #$001F : BNE + : JSR CalculateTimer : + LDA.b FrameCounter : AND.w #$001F : BNE + : JSR CalculateTimer : +
@@ -174,12 +174,11 @@ RTL
CheckOHKO: CheckOHKO:
SEP #$20 SEP #$20
LDA.l OHKOFlag : CMP.l OHKOCached : BNE .change LDA.l OHKOFlag : CMP.l OHKOCached : BNE .change
REP #$20 REP #$21
CLC
RTS RTS
.change .change
STA.l OHKOCached STA.l OHKOCached
INC.w UpdateHUDFlag LDA.b #$01 : STA.l UpdateHUDFlag
REP #$20 REP #$20
SEC SEC
RTS RTS

View File

@@ -4,8 +4,9 @@
; in: X(w) - Length in Tiles ; in: X(w) - Length in Tiles
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
DoToast: DoToast:
PHY : PHP PHY : PHP : PHA
LDY.w ToastBuffer LDA.l ToastBuffer : TAY
PLA
JSL WriteVRAMBlock JSL WriteVRAMBlock
PLP : PLY PLP : PLY
RTL RTL