Compare commits
21 Commits
kara
...
use_text_t
| Author | SHA1 | Date | |
|---|---|---|---|
| 29d241bcbe | |||
|
|
dcb0a2b42d | ||
|
|
de8703e13f | ||
|
|
2daa8daaae | ||
|
|
ce8497e3d2 | ||
|
|
014b3a719a | ||
|
|
85581b6813 | ||
|
|
cec4e0430b | ||
|
|
d81a19c367 | ||
|
|
88ef1f385d | ||
|
|
7001767c9b | ||
|
|
7116cb6557 | ||
|
|
85e338ad67 | ||
|
|
032d15fba6 | ||
|
|
f133ce7159 | ||
|
|
c5d8c69396 | ||
|
|
f71759754e | ||
|
|
507ba379cf | ||
|
|
334f721a29 | ||
|
|
0fdb6ed133 | ||
|
|
cc36ccc0b1 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,3 @@
|
|||||||
tournament.asm
|
tournament.asm
|
||||||
/build
|
/build
|
||||||
/.idea
|
/.idea
|
||||||
@@ -155,9 +155,6 @@ incsrc toast.asm
|
|||||||
incsrc fastcredits.asm
|
incsrc fastcredits.asm
|
||||||
incsrc msu.asm
|
incsrc msu.asm
|
||||||
incsrc dungeonmap.asm
|
incsrc dungeonmap.asm
|
||||||
incsrc special_weapons.asm
|
|
||||||
incsrc variable_ganon_vulnerability.asm
|
|
||||||
incsrc item_on_b.asm
|
|
||||||
incsrc hextodec.asm
|
incsrc hextodec.asm
|
||||||
incsrc textrenderer.asm
|
incsrc textrenderer.asm
|
||||||
warnpc $A58000
|
warnpc $A58000
|
||||||
@@ -242,16 +239,6 @@ InvertedCastleHole: ;address used by front end. DO NOT MOVE!
|
|||||||
incbin "data/sheet73.gfx"
|
incbin "data/sheet73.gfx"
|
||||||
warnpc $B1E501
|
warnpc $B1E501
|
||||||
|
|
||||||
org $B1E800
|
|
||||||
Damage_Table_Bombs:
|
|
||||||
incbin "data/damage_table_sword_bombs.bin"
|
|
||||||
warnpc $B1F000
|
|
||||||
|
|
||||||
org $B1F000
|
|
||||||
Damage_Table_Pseudo:
|
|
||||||
incbin "data/damage_table_pseudo_sword.bin"
|
|
||||||
warnpc $B1F800
|
|
||||||
|
|
||||||
org $B38000
|
org $B38000
|
||||||
GFX_HUD_Palette:
|
GFX_HUD_Palette:
|
||||||
incbin "data/hudpalette.pal"
|
incbin "data/hudpalette.pal"
|
||||||
|
|||||||
@@ -65,11 +65,10 @@ GiveBonkItem:
|
|||||||
PHY : LDY.b #$24 : JSL.l AddInventory : PLY ; do inventory processing for a small key
|
PHY : LDY.b #$24 : JSL.l 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.l Sound_SetSfx3PanLong
|
LDA.b #$2F : JSL.l Sound_SetSfx3PanLong
|
||||||
JSL CountBonkItem
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
RTL
|
RTL
|
||||||
.notKey
|
.notKey
|
||||||
PHY : TAY : JSL.l Link_ReceiveItem : PLY
|
PHY : TAY : JSL.l Link_ReceiveItem : PLY
|
||||||
JSL CountBonkItem
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadBonkItem:
|
LoadBonkItem:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ CuccoStorm:
|
|||||||
LDA.w SpriteAuxTable, X : CMP.b #!CUCCO_ENRAGED : !BLT ++
|
LDA.w SpriteAuxTable, X : CMP.b #!CUCCO_ENRAGED : !BLT ++
|
||||||
PLA : BRA + ; we found an angry cucco, done
|
PLA : BRA + ; we found an angry cucco, done
|
||||||
++ : INX : BRA -- : .ldone
|
++ : INX : BRA -- : .ldone
|
||||||
|
|
||||||
;==== Create a Cucco
|
;==== Create a Cucco
|
||||||
|
|
||||||
CPY.b #$FF : BNE ++
|
CPY.b #$FF : BNE ++
|
||||||
; we didn't find a cucco, so try to create one
|
; we didn't find a cucco, so try to create one
|
||||||
PLY
|
PLY
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ dw $0000, $7E4E, $6FF4, $1CF5, $7FFF, $1CE7, $7A10, $64A5
|
|||||||
dw $7FFF, $093B, $169F, $7E8D, $7FFF, $1CE7, $7A10, $64A5
|
dw $7FFF, $093B, $169F, $7E8D, $7FFF, $1CE7, $7A10, $64A5
|
||||||
.golden_sword
|
.golden_sword
|
||||||
dw $0000, $033F, $7FFF, $2640, $7FFF, $1CE7, $7A10, $64A5
|
dw $0000, $033F, $7FFF, $2640, $7FFF, $1CE7, $7A10, $64A5
|
||||||
.golden_bombs
|
|
||||||
dw $0000, $7FFF, $27FF, $02BC, $4F5F, $1CE7, $2E9C, $14B6
|
|
||||||
.fighter_shield
|
.fighter_shield
|
||||||
dw $0000, $7FFF, $27FF, $5E2D, $7FFF, $1CE7, $7A10, $64A5
|
dw $0000, $7FFF, $27FF, $5E2D, $7FFF, $1CE7, $7A10, $64A5
|
||||||
.red_shield
|
.red_shield
|
||||||
|
|||||||
@@ -143,11 +143,6 @@ SetEscapeAssist:
|
|||||||
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA.l InfiniteBombs : +
|
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA.l InfiniteBombs : +
|
||||||
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA.l InfiniteArrows : +
|
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA.l InfiniteArrows : +
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP #$01 : BNE +
|
|
||||||
LDA.l SpecialWeaponLevel : BEQ +
|
|
||||||
LDA #$01 : STA InfiniteBombs
|
|
||||||
+
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetSilverBowMode:
|
SetSilverBowMode:
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.1 KiB |
Binary file not shown.
Binary file not shown.
61
data/textbytecharmap.txt
Normal file
61
data/textbytecharmap.txt
Normal 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
61
data/textwordcharmap.txt
Normal 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
|
||||||
190
dialog.asm
190
dialog.asm
@@ -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.w .done
|
JMP.w .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
|
||||||
@@ -248,11 +248,8 @@ RTL
|
|||||||
DialogFairyThrow:
|
DialogFairyThrow:
|
||||||
LDA.l Restrict_Ponds : BEQ .normal
|
LDA.l Restrict_Ponds : BEQ .normal
|
||||||
LDA.l BottleContentsOne
|
LDA.l BottleContentsOne
|
||||||
ORA.l BottleContentsTwo
|
ORA.l BottleContentsTwo : ORA.l BottleContentsThree : ORA.l BottleContentsFour : BNE .normal
|
||||||
ORA.l BottleContentsThree
|
|
||||||
ORA.l BottleContentsFour
|
|
||||||
BNE .normal
|
|
||||||
|
|
||||||
.noInventory
|
.noInventory
|
||||||
LDA.w SpriteActivity, X : !ADD #$08 : STA.w SpriteActivity, X
|
LDA.w SpriteActivity, X : !ADD #$08 : STA.w SpriteActivity, X
|
||||||
LDA.b #$51
|
LDA.b #$51
|
||||||
@@ -283,64 +280,31 @@ RTL
|
|||||||
; s = silver arrow bow
|
; s = silver arrow bow
|
||||||
; p = 2nd progressive bow
|
; p = 2nd progressive bow
|
||||||
DialogGanon2:
|
DialogGanon2:
|
||||||
JSL.l CheckGanonVulnerability
|
JSL.l CheckGanonVulnerability
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
BCS +
|
BCS +
|
||||||
LDA.w #$018D : JMP .done
|
LDA.w #$018D : BRA ++
|
||||||
+
|
+
|
||||||
LDA.l GanonVulnerabilityItem : AND #$00FF : BNE .special_item
|
LDA.l BowTracking
|
||||||
LDA.l SpecialWeapons : AND.w #$007F
|
|
||||||
CMP.w #$0001 : BEQ .bombs ; bombs if special bomb mode
|
|
||||||
.silver_arrows
|
|
||||||
LDA.l BowTracking
|
|
||||||
|
|
||||||
BIT.w #$0080 : BNE + ; branch if bow
|
BIT.w #$0080 : BNE + ; branch if bow
|
||||||
LDA.w #$0192 : JMP .done
|
LDA.w #$0192 : BRA ++
|
||||||
+
|
+
|
||||||
BIT.w #$0040 : BEQ + ; branch if no silvers
|
BIT.w #$0040 : BEQ + ; branch if no silvers
|
||||||
LDA.w #$0195 : JMP .done
|
LDA.w #$0195 : BRA ++
|
||||||
+
|
+
|
||||||
BIT.w #$0020 : BNE + ; branch if p bow
|
BIT.w #$0020 : BNE + ; branch if p bow
|
||||||
LDA.w #$0194 : JMP .done
|
LDA.w #$0194 : BRA ++
|
||||||
+
|
+
|
||||||
BIT.w #$0080 : BEQ + ; branch if no bow
|
BIT.w #$0080 : BEQ + ; branch if no bow
|
||||||
LDA.w #$0193 : JMP .done
|
LDA.w #$0193 : BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$016E : JMP .done
|
LDA.w #$016E
|
||||||
.special_item
|
++
|
||||||
CMP.w #$0001 : BEQ .silver_arrows
|
STA.w TextID
|
||||||
CMP.w #$0004 : BEQ .bombs
|
SEP #$20
|
||||||
CMP.w #$0005 : BEQ .powder
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
CMP.w #$0010 : BEQ .bee
|
|
||||||
PHX : TAX
|
|
||||||
LDA.l EquipmentWRAM-1, X : PLX : AND #$00FF : BNE +
|
|
||||||
LDA.w #$0192 : JMP .done
|
|
||||||
+
|
|
||||||
LDA.w #$0195 : BRA .done
|
|
||||||
.bombs
|
|
||||||
LDA.l BombsEquipment : AND #$00FF : BNE +
|
|
||||||
LDA.l InfiniteBombs : AND #$00FF : BNE + ; check for infinite bombs
|
|
||||||
LDA.w #$0192 : BRA .done
|
|
||||||
+
|
|
||||||
LDA.w #$0195 : BRA .done
|
|
||||||
.powder
|
|
||||||
LDA.l InventoryTracking : AND #$0010 : BNE + ; check for powder
|
|
||||||
LDA.w #$0192 : BRA .done
|
|
||||||
+
|
|
||||||
LDA.w #$0195 : BRA .done
|
|
||||||
.bee
|
|
||||||
LDA.l BottleContentsOne : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
|
||||||
LDA.l BottleContentsTwo : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
|
||||||
LDA.l BottleContentsThree : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
|
||||||
LDA.l BottleContentsFour : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
|
||||||
LDA.w #$0192 : BRA .done
|
|
||||||
+
|
|
||||||
LDA.w #$0195 : BRA .done
|
|
||||||
.done
|
|
||||||
STA.w TextID
|
|
||||||
SEP #$20
|
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogEtherTablet:
|
DialogEtherTablet:
|
||||||
@@ -350,8 +314,11 @@ DialogEtherTablet:
|
|||||||
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
+
|
+
|
||||||
BIT.b Joy1A_New : BVC - ; Show normal text if Y is not pressed
|
BIT.b Joy1A_New : BVC - ; Show normal text if Y is not pressed
|
||||||
JSL CheckTabletSword : BMI .yesText
|
LDA.l AllowHammerTablets : BEQ ++
|
||||||
CMP.b #$02 : !BGE .noText
|
LDA.l HammerEquipment : BEQ .yesText : BRA .noText
|
||||||
|
++
|
||||||
|
LDA.l SwordEquipment : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : BCS .noText
|
||||||
|
;++
|
||||||
.yesText
|
.yesText
|
||||||
PLA
|
PLA
|
||||||
LDA.b #$0C
|
LDA.b #$0C
|
||||||
@@ -369,10 +336,13 @@ DialogBombosTablet:
|
|||||||
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
+
|
+
|
||||||
BIT.b Joy1A_New : BVC - ; Show normal text if Y is not pressed
|
BIT.b Joy1A_New : BVC - ; Show normal text if Y is not pressed
|
||||||
JSL CheckTabletSword : BMI .yesText
|
LDA.l AllowHammerTablets : BEQ ++
|
||||||
CMP.b #$02 : !BGE .noText
|
LDA.l HammerEquipment : BEQ .yesText : BRA .noText
|
||||||
|
++
|
||||||
|
LDA.l SwordEquipment : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
|
||||||
|
;++
|
||||||
.yesText
|
.yesText
|
||||||
PLA
|
PLA
|
||||||
LDA.b #$0D
|
LDA.b #$0D
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JML Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
JML Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
||||||
@@ -384,7 +354,7 @@ RTL
|
|||||||
DialogSahasrahla:
|
DialogSahasrahla:
|
||||||
LDA.l PendantsField : AND.b #$04 : BEQ + ;Check if player has green pendant
|
LDA.l PendantsField : AND.b #$04 : BEQ + ;Check if player has green pendant
|
||||||
LDA.b #$2F
|
LDA.b #$2F
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
JML Sprite_ShowMessageUnconditional
|
JML Sprite_ShowMessageUnconditional
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
@@ -463,24 +433,24 @@ Main_ShowTextMessage_Alt_already_in_text_mode:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
CalculateSignIndex:
|
CalculateSignIndex:
|
||||||
; for the big 1024x1024 screens we are calculating link's effective
|
; for the big 1024x1024 screens we are calculating link's effective
|
||||||
; screen area, as though the screen was 4 different 512x512 screens.
|
; screen area, as though the screen was 4 different 512x512 screens.
|
||||||
; And we do this in a way that will likely give the right value even
|
; And we do this in a way that will likely give the right value even
|
||||||
; with major glitches.
|
; with major glitches.
|
||||||
|
|
||||||
LDA.b OverworldIndex : ASL A : TAY ;what we wrote over
|
LDA.b OverworldIndex : ASL A : TAY ;what we wrote over
|
||||||
|
|
||||||
LDA.w OWScreenSize : BEQ .done ; If a small map, we can skip these calculations.
|
LDA.w OWScreenSize : BEQ .done ; If a small map, we can skip these calculations.
|
||||||
|
|
||||||
LDA.b LinkPosY+1 : AND.w #$0002 : ASL #2 : EOR.b OverworldIndex : AND.w #$0008 : BEQ +
|
LDA.b LinkPosY+1 : AND.w #$0002 : ASL #2 : EOR.b OverworldIndex : AND.w #$0008 : BEQ +
|
||||||
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.b LinkPosX+1 : AND.w #$0002 : LSR : EOR.b OverworldIndex : AND.w #$0001 : BEQ +
|
LDA.b LinkPosX+1 : AND.w #$0002 : LSR : EOR.b OverworldIndex : AND.w #$0001 : BEQ +
|
||||||
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
||||||
TYA : AND.w #$00FF : TAY
|
TYA : AND.w #$00FF : TAY
|
||||||
|
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
@@ -512,10 +482,10 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
|||||||
LDY.w TextID+1
|
LDY.w TextID+1
|
||||||
|
|
||||||
; Check what room we're in so we know which npc we're talking to
|
; Check what room we're in so we know which npc we're talking to
|
||||||
LDA.b RoomIndex
|
LDA.b RoomIndex
|
||||||
CMP.b #$05 : BEQ .SahasrahlaDialogs
|
CMP.b #$05 : BEQ .SahasrahlaDialogs
|
||||||
CMP.b #$1C : BEQ .BombShopGuyDialog
|
CMP.b #$1C : BEQ .BombShopGuyDialog
|
||||||
BRA .SayNothing
|
BRA .SayNothing
|
||||||
|
|
||||||
.SahasrahlaDialogs
|
.SahasrahlaDialogs
|
||||||
REP #$20 : LDA.l MapReveal_Sahasrahla : ORA.l MapOverlay : STA.l MapOverlay : SEP #$20
|
REP #$20 : LDA.l MapReveal_Sahasrahla : ORA.l MapOverlay : STA.l MapOverlay : SEP #$20
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SpawnDungeonPrize:
|
SpawnDungeonPrize:
|
||||||
PHX : PHB
|
PHX : PHB
|
||||||
|
TAX
|
||||||
|
LDA.b $06,S : STA.b ScrapBuffer72 ; Store current RoomTag index
|
||||||
|
TXA
|
||||||
JSL.l AttemptItemSubstitution
|
JSL.l AttemptItemSubstitution
|
||||||
JSL.l ResolveLootIDLong
|
JSL.l ResolveLootIDLong
|
||||||
STA.w ItemReceiptID
|
STA.w ItemReceiptID
|
||||||
@@ -14,6 +17,7 @@ SpawnDungeonPrize:
|
|||||||
LDA.w ItemReceiptID
|
LDA.w ItemReceiptID
|
||||||
STA.w AncillaGet,X : STA.w SpriteID,X
|
STA.w AncillaGet,X : STA.w SpriteID,X
|
||||||
JSR.w AddDungeonPrizeAncilla
|
JSR.w AddDungeonPrizeAncilla
|
||||||
|
LDX.b ScrapBuffer72 : STZ.b RoomTag,X
|
||||||
.failed_spawn
|
.failed_spawn
|
||||||
PLB : PLX
|
PLB : PLX
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ JML.l 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_RebuildLong2
|
JSL HUD_RebuildLong2
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ JML.l 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
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnDungeonBossExit:
|
OnDungeonBossExit:
|
||||||
@@ -46,7 +46,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.l HUD_RebuildLong
|
JSL.l HUD_RebuildLong
|
||||||
JSL.l FloodGateResetInner
|
JSL.l FloodGateResetInner
|
||||||
JSL.l SetSilverBowMode
|
JSL.l SetSilverBowMode
|
||||||
@@ -226,7 +226,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
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
361
fileselect.asm
361
fileselect.asm
@@ -308,16 +308,15 @@ DrawPlayerFileShared:
|
|||||||
%fs_drawBottle(EquipmentSRAM+$1F,9,23)
|
%fs_drawBottle(EquipmentSRAM+$1F,9,23)
|
||||||
|
|
||||||
; Sword
|
; Sword
|
||||||
LDA.l SpecialWeapons : AND.w #$007F : CMP #$0001 : BEQ .bombSword
|
|
||||||
LDA.l EquipmentSRAM+$19 : AND.w #$00FF : BNE +
|
LDA.l EquipmentSRAM+$19 : AND.w #$00FF : BNE +
|
||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
||||||
JMP ++
|
BRA ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItem(3,26,FileSelectItems_fighters_sword)
|
||||||
JMP ++
|
BRA ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(3,26,FileSelectItems_master_sword)
|
%fs_drawItem(3,26,FileSelectItems_master_sword)
|
||||||
JMP ++
|
BRA ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(3,26,FileSelectItems_tempered_sword)
|
%fs_drawItem(3,26,FileSelectItems_tempered_sword)
|
||||||
BRA ++
|
BRA ++
|
||||||
@@ -327,29 +326,6 @@ DrawPlayerFileShared:
|
|||||||
+
|
+
|
||||||
; a sword value above 4 is either corrupted or 0xFF (a.k.a. swordless)
|
; a sword value above 4 is either corrupted or 0xFF (a.k.a. swordless)
|
||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
||||||
BRA ++
|
|
||||||
.bombSword
|
|
||||||
LDA.l SpecialWeaponLevelSRAM : AND.w #$00FF : BNE +
|
|
||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_bombs)
|
|
||||||
BRA ++
|
|
||||||
+ : DEC : BNE +
|
|
||||||
%fs_drawItem(3,26,FileSelectItems_fighters_bombs)
|
|
||||||
BRA ++
|
|
||||||
+ : DEC : BNE +
|
|
||||||
%fs_drawItem(3,26,FileSelectItems_master_bombs)
|
|
||||||
BRA ++
|
|
||||||
+ : DEC : BNE +
|
|
||||||
%fs_drawItem(3,26,FileSelectItems_tempered_bombs)
|
|
||||||
BRA ++
|
|
||||||
+ : DEC : BNE +
|
|
||||||
%fs_drawItem(3,26,FileSelectItems_gold_bombs)
|
|
||||||
BRA ++
|
|
||||||
+ : DEC : BNE +
|
|
||||||
%fs_drawItem(3,26,FileSelectItems_extra_gold_bombs)
|
|
||||||
BRA ++
|
|
||||||
+
|
|
||||||
; a bomb value above 5 is... who knows, let's just pretend it's 5
|
|
||||||
%fs_drawItem(3,26,FileSelectItems_extra_gold_bombs)
|
|
||||||
++
|
++
|
||||||
|
|
||||||
; Shield
|
; Shield
|
||||||
@@ -628,136 +604,105 @@ FileSelectItems:
|
|||||||
.good_bee_bottle
|
.good_bee_bottle
|
||||||
dw #$0280|!FS_COLOR_BW, #$0281|!FS_COLOR_BW, #$0294|!FS_COLOR_YELLOW, #$0286|!FS_COLOR_YELLOW
|
dw #$0280|!FS_COLOR_BW, #$0281|!FS_COLOR_BW, #$0294|!FS_COLOR_YELLOW, #$0286|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
.fighters_bombs
|
|
||||||
dw #$024C|!FS_COLOR_GREEN, #$024D|!FS_COLOR_GREEN, #$025C|!FS_COLOR_GREEN, #$02E1|!FS_COLOR_GREEN
|
|
||||||
.master_bombs
|
|
||||||
dw #$024C|!FS_COLOR_BLUE, #$024D|!FS_COLOR_BLUE, #$025C|!FS_COLOR_BLUE, #$02E2|!FS_COLOR_BLUE
|
|
||||||
.tempered_bombs
|
|
||||||
dw #$024C|!FS_COLOR_RED, #$024D|!FS_COLOR_RED, #$025C|!FS_COLOR_RED, #$02E3|!FS_COLOR_RED
|
|
||||||
.gold_bombs
|
|
||||||
dw #$024C|!FS_COLOR_YELLOW, #$024D|!FS_COLOR_YELLOW, #$025C|!FS_COLOR_YELLOW, #$02E4|!FS_COLOR_YELLOW
|
|
||||||
.extra_gold_bombs
|
|
||||||
dw #$024C|!FS_COLOR_YELLOW, #$024D|!FS_COLOR_YELLOW, #$025C|!FS_COLOR_YELLOW, #$02E5|!FS_COLOR_YELLOW
|
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FileSelectDrawHudBar:
|
FileSelectDrawHudBar:
|
||||||
LDA.w #$02DB|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
LDA.w #$02DB|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
||||||
LDA.l DisplayRupeesSRAM
|
LDA.l DisplayRupeesSRAM
|
||||||
JSL.l HUDHex4Digit_Long
|
JSL.l HUDHex4Digit_Long
|
||||||
LDA.b Scrap04 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
LDA.b Scrap04 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
||||||
LDA.b Scrap05 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
LDA.b Scrap05 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
||||||
LDA.b Scrap06 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
LDA.b Scrap06 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
||||||
LDA.b Scrap07 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
LDA.b Scrap07 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BEQ .colorBombs
|
LDA.w #$02CB|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
||||||
LDA.w #$02CB|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
LDA.l BombsEquipmentSRAM : AND.w #$00FF
|
||||||
LDA.l BombsEquipmentSRAM : AND.w #$00FF
|
JSL.l HUDHex2Digit_Long
|
||||||
JSL.l HUDHex2Digit_Long
|
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
||||||
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
||||||
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
|
||||||
BRA ++
|
|
||||||
|
|
||||||
.colorBombs
|
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
||||||
LDA.l SpecialWeaponLevelSRAM : AND.w #$00FF : BNE +
|
LDA.w #$02D9|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
||||||
; no bombs, draw no icon
|
BRA ++
|
||||||
BRA ++
|
+
|
||||||
+ : DEC : BNE +
|
LDA.w #$02C9|!FS_COLOR_BROWN : %fs_draw16x8(0,17)
|
||||||
LDA.w #$02CB|!FS_COLOR_GREEN : %fs_draw16x8(0,14)
|
++
|
||||||
BRA ++
|
LDA.l CurrentArrowsSRAM : AND.w #$00FF
|
||||||
+ : DEC : BNE +
|
JSL.l HUDHex2Digit_Long
|
||||||
LDA.w #$02CB|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
||||||
BRA ++
|
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
||||||
+ : DEC : BNE +
|
|
||||||
LDA.w #$02CB|!FS_COLOR_RED : %fs_draw16x8(0,14)
|
|
||||||
BRA ++
|
|
||||||
+
|
|
||||||
LDA.w #$02CB|!FS_COLOR_YELLOW : %fs_draw16x8(0,14)
|
|
||||||
++
|
|
||||||
|
|
||||||
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
|
||||||
LDA.w #$02D9|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
|
||||||
BRA ++
|
|
||||||
+
|
|
||||||
LDA.w #$02C9|!FS_COLOR_BROWN : %fs_draw16x8(0,17)
|
|
||||||
++
|
|
||||||
LDA.l CurrentArrowsSRAM : AND.w #$00FF
|
|
||||||
JSL.l HUDHex2Digit_Long
|
|
||||||
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
|
||||||
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AltBufferTable:
|
AltBufferTable:
|
||||||
LDA.b #$02 : STA.w BG34NBA ; Have Screen 3 use same tile area as screens 1
|
LDA.b #$02 : STA.w BG34NBA ; Have Screen 3 use same tile area as screens 1
|
||||||
.noScreen3Change
|
.noScreen3Change
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.w #$0400 ; 14 rows with 64 bytes (30 tiles * 2 + 4 byte header)
|
LDX.w #$0400 ; 14 rows with 64 bytes (30 tiles * 2 + 4 byte header)
|
||||||
;fill with the blank character
|
;fill with the blank character
|
||||||
LDA.w #$0188
|
LDA.w #$0188
|
||||||
-
|
-
|
||||||
STA.w GFXStripes, X
|
STA.w GFXStripes, X
|
||||||
DEX : DEX : BNE -
|
DEX : DEX : BNE -
|
||||||
|
|
||||||
; set vram offsets
|
; set vram offsets
|
||||||
LDA.w #$0161 : STA.w GFXStripes+$02 ;file 1 top row
|
LDA.w #$0161 : STA.w GFXStripes+$02 ;file 1 top row
|
||||||
LDA.w #$2161 : STA.w GFXStripes+$42 ;file 1 bottom row
|
LDA.w #$2161 : STA.w GFXStripes+$42 ;file 1 bottom row
|
||||||
|
|
||||||
LDA.w #$4161 : STA.w GFXStripes+$82 ;gap row top
|
LDA.w #$4161 : STA.w GFXStripes+$82 ;gap row top
|
||||||
LDA.w #$6161 : STA.w GFXStripes+$C2 ;gap row bottom
|
LDA.w #$6161 : STA.w GFXStripes+$C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$8161 : STA.w GFXStripes+$0102 ;file 2 top row
|
LDA.w #$8161 : STA.w GFXStripes+$0102 ;file 2 top row
|
||||||
LDA.w #$A161 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
LDA.w #$A161 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
||||||
|
|
||||||
LDA.w #$C161 : STA.w GFXStripes+$0182 ;gap row top
|
LDA.w #$C161 : STA.w GFXStripes+$0182 ;gap row top
|
||||||
LDA.w #$E161 : STA.w GFXStripes+$01C2 ;gap row bottom
|
LDA.w #$E161 : STA.w GFXStripes+$01C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$0162 : STA.w GFXStripes+$0202 ;file 3 top row
|
LDA.w #$0162 : STA.w GFXStripes+$0202 ;file 3 top row
|
||||||
LDA.w #$2162 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
LDA.w #$2162 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
||||||
|
|
||||||
LDA.w #$4162 : STA.w GFXStripes+$0282 ;extra gap row top
|
LDA.w #$4162 : STA.w GFXStripes+$0282 ;extra gap row top
|
||||||
LDA.w #$6162 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
LDA.w #$6162 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$8162 : STA.w GFXStripes+$0302 ;extra gap row top
|
LDA.w #$8162 : STA.w GFXStripes+$0302 ;extra gap row top
|
||||||
LDA.w #$A162 : STA.w GFXStripes+$0342 ;extra gap row bottom
|
LDA.w #$A162 : STA.w GFXStripes+$0342 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$C162 : STA.w GFXStripes+$0382 ;extra gap row top
|
LDA.w #$C162 : STA.w GFXStripes+$0382 ;extra gap row top
|
||||||
LDA.w #$E162 : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
LDA.w #$E162 : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
||||||
|
|
||||||
; set lengths
|
; set lengths
|
||||||
LDA.w #$3B00
|
LDA.w #$3B00
|
||||||
STA.w GFXStripes+$04 ;file 1 top row
|
STA.w GFXStripes+$04 ;file 1 top row
|
||||||
STA.w GFXStripes+$44 ;file 1 bottom row
|
STA.w GFXStripes+$44 ;file 1 bottom row
|
||||||
STA.w GFXStripes+$84 ;gap row top
|
STA.w GFXStripes+$84 ;gap row top
|
||||||
STA.w GFXStripes+$C4 ;gap row bottom
|
STA.w GFXStripes+$C4 ;gap row bottom
|
||||||
STA.w GFXStripes+$0104 ;file 2 top row
|
STA.w GFXStripes+$0104 ;file 2 top row
|
||||||
STA.w GFXStripes+$0144 ;file 2 bottom row
|
STA.w GFXStripes+$0144 ;file 2 bottom row
|
||||||
STA.w GFXStripes+$0184 ;gap row top
|
STA.w GFXStripes+$0184 ;gap row top
|
||||||
STA.w GFXStripes+$01C4 ;gap row bottom
|
STA.w GFXStripes+$01C4 ;gap row bottom
|
||||||
STA.w GFXStripes+$0204 ;file 3 top row
|
STA.w GFXStripes+$0204 ;file 3 top row
|
||||||
STA.w GFXStripes+$0244 ;file 3 bottom row
|
STA.w GFXStripes+$0244 ;file 3 bottom row
|
||||||
STA.w GFXStripes+$0284 ;extra gap row top
|
STA.w GFXStripes+$0284 ;extra gap row top
|
||||||
STA.w GFXStripes+$02C4 ;extra gap row bottom
|
STA.w GFXStripes+$02C4 ;extra gap row bottom
|
||||||
STA.w GFXStripes+$0304 ;extra gap row top
|
STA.w GFXStripes+$0304 ;extra gap row top
|
||||||
STA.w GFXStripes+$0344 ;extra gap row bottom
|
STA.w GFXStripes+$0344 ;extra gap row bottom
|
||||||
STA.w GFXStripes+$0384 ;extra gap row top
|
STA.w GFXStripes+$0384 ;extra gap row top
|
||||||
STA.w GFXStripes+$03C4 ;extra gap row bottom
|
STA.w GFXStripes+$03C4 ;extra gap row bottom
|
||||||
|
|
||||||
; Set last packet marker
|
; Set last packet marker
|
||||||
LDA.w #$00FF : STA.w GFXStripes+$0402
|
LDA.w #$00FF : STA.w GFXStripes+$0402
|
||||||
|
|
||||||
; Draw Unlock option if applicable
|
; Draw Unlock option if applicable
|
||||||
LDA.b GameMode : AND.w #$00FF : CMP.w #$0001 : BNE +
|
LDA.b GameMode : AND.w #$00FF : CMP.w #$0001 : BNE +
|
||||||
LDA.l IsEncrypted : AND.w #$00FF : CMP.w #$0002 : BNE +
|
LDA.l IsEncrypted : AND.w #$00FF : CMP.w #$0002 : BNE +
|
||||||
PHP : SEP #$30 : PHX : PHY : JSL ValidatePassword : PLY : PLX : PLP
|
PHP : SEP #$30 : PHX : PHY : JSL ValidatePassword : PLY : PLX : PLP
|
||||||
AND.w #$00FF : BNE +
|
AND.w #$00FF : BNE +
|
||||||
LDA.w #!FSTILE_U_TOP : %fs_draw8x16(14,5)
|
LDA.w #!FSTILE_U_TOP : %fs_draw8x16(14,5)
|
||||||
LDA.w #!FSTILE_N_TOP : %fs_draw8x16(14,6)
|
LDA.w #!FSTILE_N_TOP : %fs_draw8x16(14,6)
|
||||||
LDA.w #!FSTILE_L_TOP : %fs_draw8x16(14,7)
|
LDA.w #!FSTILE_L_TOP : %fs_draw8x16(14,7)
|
||||||
LDA.w #!FSTILE_O_TOP : %fs_draw8x16(14,8)
|
LDA.w #!FSTILE_O_TOP : %fs_draw8x16(14,8)
|
||||||
LDA.w #!FSTILE_C_TOP : %fs_draw8x16(14,9)
|
LDA.w #!FSTILE_C_TOP : %fs_draw8x16(14,9)
|
||||||
LDA.w #!FSTILE_K_TOP : %fs_draw8x16(14,10)
|
LDA.w #!FSTILE_K_TOP : %fs_draw8x16(14,10)
|
||||||
+
|
+
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -765,31 +710,31 @@ AltBufferTable_credits:
|
|||||||
JSL AltBufferTable_noScreen3Change
|
JSL AltBufferTable_noScreen3Change
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$6168 : STA.w GFXStripes+$02 ;file 1 top row
|
LDA.w #$6168 : STA.w GFXStripes+$02 ;file 1 top row
|
||||||
LDA.w #$8168 : STA.w GFXStripes+$42 ;file 1 bottom row
|
LDA.w #$8168 : STA.w GFXStripes+$42 ;file 1 bottom row
|
||||||
|
|
||||||
LDA.w #$A168 : STA.w GFXStripes+$82 ;gap row top
|
LDA.w #$A168 : STA.w GFXStripes+$82 ;gap row top
|
||||||
LDA.w #$C168 : STA.w GFXStripes+$C2 ;gap row bottom
|
LDA.w #$C168 : STA.w GFXStripes+$C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$E168 : STA.w GFXStripes+$0102 ;file 2 top row
|
LDA.w #$E168 : STA.w GFXStripes+$0102 ;file 2 top row
|
||||||
LDA.w #$0169 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
LDA.w #$0169 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
||||||
|
|
||||||
LDA.w #$2169 : STA.w GFXStripes+$0182 ;gap row top
|
LDA.w #$2169 : STA.w GFXStripes+$0182 ;gap row top
|
||||||
LDA.w #$4169 : STA.w GFXStripes+$01c2 ;gap row bottom
|
LDA.w #$4169 : STA.w GFXStripes+$01c2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$6169 : STA.w GFXStripes+$0202 ;file 3 top row
|
LDA.w #$6169 : STA.w GFXStripes+$0202 ;file 3 top row
|
||||||
LDA.w #$8169 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
LDA.w #$8169 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
||||||
|
|
||||||
LDA.w #$A169 : STA.w GFXStripes+$0282 ;extra gap row top
|
LDA.w #$A169 : STA.w GFXStripes+$0282 ;extra gap row top
|
||||||
LDA.w #$C169 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
LDA.w #$C169 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$E169 : STA.w GFXStripes+$0302 ;extra gap row top
|
LDA.w #$E169 : STA.w GFXStripes+$0302 ;extra gap row top
|
||||||
LDA.w #$016A : STA.w GFXStripes+$0342 ;extra gap row bottom
|
LDA.w #$016A : STA.w GFXStripes+$0342 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$216A : STA.w GFXStripes+$0382 ;extra gap row top
|
LDA.w #$216A : STA.w GFXStripes+$0382 ;extra gap row top
|
||||||
LDA.w #$416A : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
LDA.w #$416A : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro LayoutPriority(address)
|
macro LayoutPriority(address)
|
||||||
@@ -819,14 +764,14 @@ RTL
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadFullItemTiles:
|
LoadFullItemTiles:
|
||||||
LDA.b #$80 : STA.w VMAIN
|
LDA.b #$80 : STA.w VMAIN
|
||||||
LDA.b #$01 : STA.w DMAP0
|
LDA.b #$01 : STA.w DMAP0
|
||||||
LDA.b #$18 : STA.w BBAD0
|
LDA.b #$18 : STA.w BBAD0
|
||||||
LDX.w #$3200 : STX.w VMADDL
|
LDX.w #$3200 : STX.w VMADDL
|
||||||
LDA.b #FileSelectNewGraphics>>16 : STA.w A1B0
|
LDA.b #FileSelectNewGraphics>>16 : STA.w A1B0
|
||||||
LDX.w #FileSelectNewGraphics : STX.w A1T0L
|
LDX.w #FileSelectNewGraphics : STX.w A1T0L
|
||||||
LDX.w #$0C00 : STX.w DAS0L
|
LDX.w #$0C00 : STX.w DAS0L
|
||||||
LDA.b #$01 : STA.w MDMAEN
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; z colon @
|
; z colon @
|
||||||
@@ -834,44 +779,44 @@ RTL
|
|||||||
; target vram $6C00
|
; target vram $6C00
|
||||||
; NewFont+$400
|
; NewFont+$400
|
||||||
LoadLowerCaseLettersSymbols:
|
LoadLowerCaseLettersSymbols:
|
||||||
LDA.b #$80 : STA.w VMAIN
|
LDA.b #$80 : STA.w VMAIN
|
||||||
LDA.b #$01 : STA.w DMAP0
|
LDA.b #$01 : STA.w DMAP0
|
||||||
LDA.b #$18 : STA.w BBAD0
|
LDA.b #$18 : STA.w BBAD0
|
||||||
|
|
||||||
; Lower case letters
|
; Lower case letters
|
||||||
LDA.b #NewFont>>16 : STA.w A1B0
|
LDA.b #NewFont>>16 : STA.w A1B0
|
||||||
LDX.w #NewFont+$400 : STX.w A1T0L
|
LDX.w #NewFont+$400 : STX.w A1T0L
|
||||||
LDX.w #$0400 : STX.w DAS0L
|
LDX.w #$0400 : STX.w DAS0L
|
||||||
LDX.w #$2D00 : STX.w VMADDL
|
LDX.w #$2D00 : STX.w VMADDL
|
||||||
LDA.b #$01 : STA.w MDMAEN
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
|
|
||||||
; : @ #
|
; : @ #
|
||||||
LDA.b #NewFont>>16 : STA.w A1B0
|
LDA.b #NewFont>>16 : STA.w A1B0
|
||||||
LDX.w #NewFont+$A80 : STX.w A1T0L
|
LDX.w #NewFont+$A80 : STX.w A1T0L
|
||||||
LDA.b #NewFont>>16 : STA.w A1B1
|
LDA.b #NewFont>>16 : STA.w A1B1
|
||||||
LDX.w #NewFont+$B80 : STX.w A1T1L
|
LDX.w #NewFont+$B80 : STX.w A1T1L
|
||||||
LDX.w #$0030 : STX.w DAS0L : STX.w DAS1L
|
LDX.w #$0030 : STX.w DAS0L : STX.w DAS1L
|
||||||
|
|
||||||
LDX.w #$2E50 : STX.w VMADDL
|
LDX.w #$2E50 : STX.w VMADDL
|
||||||
LDA.b #$01 : STA.w MDMAEN
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
LDX.w #$2ED0 : STX.w VMADDL
|
LDX.w #$2ED0 : STX.w VMADDL
|
||||||
LDA.b #$02 : STA.w MDMAEN
|
LDA.b #$02 : STA.w MDMAEN
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadFileSelectVanillaItems:
|
LoadFileSelectVanillaItems:
|
||||||
REP #$10
|
REP #$10
|
||||||
LDA.b #$80 : STA.w VMAIN
|
LDA.b #$80 : STA.w VMAIN
|
||||||
LDA.b #$01 : STA.w DMAP0
|
LDA.b #$01 : STA.w DMAP0
|
||||||
LDA.b #$18 : STA.w BBAD0
|
LDA.b #$18 : STA.w BBAD0
|
||||||
|
|
||||||
; Lower case letters
|
; Lower case letters
|
||||||
LDA.b #DecompBuffer2>>16 : STA.w A1B0
|
LDA.b #DecompBuffer2>>16 : STA.w A1B0
|
||||||
LDX.w #DecompBuffer2 : STX.w A1T0L
|
LDX.w #DecompBuffer2 : STX.w A1T0L
|
||||||
LDX.w #$0600 : STX.w DAS0L
|
LDX.w #$0600 : STX.w DAS0L
|
||||||
LDX.w #$2F00 : STX.w VMADDL
|
LDX.w #$2F00 : STX.w VMADDL
|
||||||
LDA.b #$01 : STA.w MDMAEN
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
|
|
||||||
SEP #$10
|
SEP #$10
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetFileSelectPalette:
|
SetFileSelectPalette:
|
||||||
@@ -987,20 +932,20 @@ JML FSSelectFile_continue
|
|||||||
JML FSSelectFile_return
|
JML FSSelectFile_return
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybeForceFileName:
|
MaybeForceFileName:
|
||||||
LDA.l ForceFileName : BEQ +
|
LDA.l ForceFileName : BEQ +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.b #$FE
|
LDX.b #$FE
|
||||||
-
|
-
|
||||||
INX : INX
|
INX : INX
|
||||||
LDA.l StaticFileName, X : STA.l ExtendedFileNameSRAM, X
|
LDA.l StaticFileName, X : STA.l ExtendedFileNameSRAM, X
|
||||||
CPX.b #$16 : BEQ .done
|
CPX.b #$16 : BEQ .done
|
||||||
CPX.b #$08 : BCS -
|
CPX.b #$08 : BCS -
|
||||||
STA.l FileNameVanillaSRAM, X
|
STA.l FileNameVanillaSRAM, X
|
||||||
BRA -
|
BRA -
|
||||||
.done
|
.done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JML.l InitializeSaveFile
|
JML.l InitializeSaveFile
|
||||||
|
|
||||||
+
|
+
|
||||||
JML.l NameFile_MakeScreenVisible
|
JML.l NameFile_MakeScreenVisible
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
def process_values(sprite, values)
|
|
||||||
ret = values.clone
|
|
||||||
if [1, 2].include?(ret[0]) # boomerang
|
|
||||||
if sprite == 0x53 # armos knight
|
|
||||||
ret[0] = 0 # do nothing
|
|
||||||
else
|
|
||||||
ret[0] = 5 # stun very briefly instead of damage
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if ret[6] > 0 && sprite != 0x84 # bow and not red eyegore/mimic
|
|
||||||
ret[6] = 0
|
|
||||||
end
|
|
||||||
if ret[7] == 2 # hookshot
|
|
||||||
ret[7] = 1 # still want to stun
|
|
||||||
end
|
|
||||||
if [1, 2, 7].include?(ret[8]) && sprite != 0x92 # bomb and not helmasaur king
|
|
||||||
ret[8] = 0
|
|
||||||
end
|
|
||||||
if ret[9] > 0 && sprite != 0x84 # silver bow and not red eyegore/mimic
|
|
||||||
ret[9] = 0
|
|
||||||
end
|
|
||||||
if ret[10] == 4 # powder
|
|
||||||
ret[10] = 0
|
|
||||||
end
|
|
||||||
if ret[11] > 0 && ![0x23, 0xA1, 0xA3, 0xCD].include?(sprite) # fire rod
|
|
||||||
ret[11] = 0
|
|
||||||
end
|
|
||||||
if ret[12] != 3 && sprite != 0xCC # ice rod
|
|
||||||
ret[12] = 0
|
|
||||||
end
|
|
||||||
if ret[13] > 0 && ![0x23, 0xA1, 0xA3, 0xD1].include?(sprite) # bombos
|
|
||||||
ret[13] = 0
|
|
||||||
end
|
|
||||||
if ret[14] != 1 && ![0xD1].include?(sprite) # ether
|
|
||||||
ret[14] = 0
|
|
||||||
end
|
|
||||||
if [1, 2].include?(ret[15]) && ![0xD1].include?(sprite) # quake
|
|
||||||
ret[15] = 0
|
|
||||||
end
|
|
||||||
if sprite == 0x53 and ret[2] == 3
|
|
||||||
ret[2] = 1 # armos knight? let's make class 2 not suck
|
|
||||||
end
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
def split_value(byte)
|
|
||||||
return [byte >> 4, byte & 0x0F]
|
|
||||||
end
|
|
||||||
|
|
||||||
def join_values(value1, value2)
|
|
||||||
return (value1 & 0x0F) << 4 | (value2 & 0x0F)
|
|
||||||
end
|
|
||||||
|
|
||||||
File.open("data/damage_table.bin") do |input|
|
|
||||||
File.open("data/damage_table_sword_bombs.bin", "w") do |output|
|
|
||||||
i_enum = input.each_byte
|
|
||||||
(0...0xD7).each do |sprite|
|
|
||||||
values = []
|
|
||||||
(0...8).each do
|
|
||||||
values += split_value(i_enum.next)
|
|
||||||
end
|
|
||||||
v_enum = process_values(sprite, values).to_enum
|
|
||||||
(0...8).each do
|
|
||||||
output.putc(join_values(v_enum.next, v_enum.next))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
begin
|
|
||||||
while true
|
|
||||||
output.putc(i_enum.next)
|
|
||||||
end
|
|
||||||
rescue StopIteration
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
def process_values(sprite, values)
|
|
||||||
ret = values.clone
|
|
||||||
if (ret[1] == 0 && sprite != 0x40) || sprite == 0xCE
|
|
||||||
# fighter sword does no damage and it's not the evil barrier, or it's Blind
|
|
||||||
ret[5] = 0
|
|
||||||
end
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
def split_value(byte)
|
|
||||||
return [byte >> 4, byte & 0x0F]
|
|
||||||
end
|
|
||||||
|
|
||||||
def join_values(value1, value2)
|
|
||||||
return (value1 & 0x0F) << 4 | (value2 & 0x0F)
|
|
||||||
end
|
|
||||||
|
|
||||||
File.open("data/damage_table.bin") do |input|
|
|
||||||
File.open("data/damage_table_pseudo_sword.bin", "w") do |output|
|
|
||||||
i_enum = input.each_byte
|
|
||||||
(0...0xD7).each do |sprite|
|
|
||||||
values = []
|
|
||||||
(0...8).each do
|
|
||||||
values += split_value(i_enum.next)
|
|
||||||
end
|
|
||||||
v_enum = process_values(sprite, values).to_enum
|
|
||||||
(0...8).each do
|
|
||||||
output.putc(join_values(v_enum.next, v_enum.next))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
begin
|
|
||||||
while true
|
|
||||||
output.putc(i_enum.next)
|
|
||||||
end
|
|
||||||
rescue StopIteration
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
14
hardmode.asm
14
hardmode.asm
@@ -76,18 +76,12 @@ GetItemDamageValue:
|
|||||||
CPX.b #$04 : BEQ .boomerang
|
CPX.b #$04 : BEQ .boomerang
|
||||||
CPX.b #$05 : BEQ .boomerang
|
CPX.b #$05 : BEQ .boomerang
|
||||||
CPX.b #$39 : BEQ .hookshot
|
CPX.b #$39 : BEQ .hookshot
|
||||||
CPX.b #$3B : BEQ .hookshot
|
CPX.b #$3b : BEQ .hookshot
|
||||||
CPX.b #$3C : BEQ .hookshot
|
CPX.b #$3c : BEQ .hookshot
|
||||||
CPX.b #$3D : BEQ .hookshot
|
CPX.b #$3d : BEQ .hookshot
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
|
||||||
TXA : AND.b #$78 : CMP.b #$28 : BNE .normal
|
|
||||||
LDA.l $8DB8F1, X : BEQ .noDamage
|
|
||||||
LDA.b #$01
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.normal
|
.normal
|
||||||
LDA.l $8DB8F1, X ; what we wrote over
|
LDA.l $8DB8F1,x ;what we wrote over
|
||||||
RTL
|
RTL
|
||||||
.boomerang
|
.boomerang
|
||||||
LDA.l StunItemAction : AND.b #$01 : BNE .normal
|
LDA.l StunItemAction : AND.b #$01 : BNE .normal
|
||||||
|
|||||||
@@ -45,9 +45,11 @@ DrawHeartPieceGFX:
|
|||||||
LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X
|
LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X
|
||||||
PLA
|
PLA
|
||||||
JSL.l DrawDynamicTile
|
JSL.l DrawDynamicTile
|
||||||
|
REP #$21
|
||||||
LDA.b Scrap00
|
LDA.b Scrap00
|
||||||
CLC : ADC.b #$04
|
ADC.w #$0004
|
||||||
STA.b Scrap00
|
STA.b Scrap00
|
||||||
|
SEP #$20
|
||||||
JSL.l Sprite_DrawShadowLong
|
JSL.l Sprite_DrawShadowLong
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
|
|||||||
160
hooks.asm
160
hooks.asm
@@ -1000,7 +1000,7 @@ org $81C517 : JSL.l CheckDungeonCompletion
|
|||||||
org $81C523 : JSL.l CheckDungeonCompletion
|
org $81C523 : JSL.l CheckDungeonCompletion
|
||||||
org $81C710 : JSL.l CheckSpawnPrize
|
org $81C710 : JSL.l CheckSpawnPrize
|
||||||
BCS RoomTag_GetHeartForPrize_spawn_prize : BRA RoomTag_GetHeartForPrize_delete_tag
|
BCS RoomTag_GetHeartForPrize_spawn_prize : BRA RoomTag_GetHeartForPrize_delete_tag
|
||||||
org $81C742 : JSL.l SpawnDungeonPrize
|
org $81C742 : JSL.l SpawnDungeonPrize : PLA : RTS
|
||||||
org $8799EA : JML.l SetItemPose
|
org $8799EA : JML.l SetItemPose
|
||||||
org $88C415 : JSL.l PendantMusicCheck
|
org $88C415 : JSL.l PendantMusicCheck
|
||||||
BCS Ancilla22_ItemReceipt_is_pendant : BRA Ancilla22_ItemReceipt_wait_for_music
|
BCS Ancilla22_ItemReceipt_is_pendant : BRA Ancilla22_ItemReceipt_wait_for_music
|
||||||
@@ -1396,11 +1396,10 @@ org $8DED04 ; <- 6ED04 - equipment.asm : 1963 (REP #$30)
|
|||||||
JSL DrawHUDDungeonItems
|
JSL DrawHUDDungeonItems
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Insert our version of the hud tilemap
|
; Insert our version of the hud tilemap
|
||||||
; Commented out because incorporated in hook in special_weapons.asm
|
org $8DFA96 ; <- 6FA96 - headsup_display.asm : 626 (LDX.w #.hud_tilemap)
|
||||||
; org $8DFA96 ; <- 6FA96 - headsup_display.asm : 626 (LDX.w #.hud_tilemap)
|
LDX.w #HUD_TileMap
|
||||||
; LDX.w #HUD_TileMap
|
org $8DFA9C ; <- 6FA9C - headsup_display.asm : 629 (MVN $0D, $7E ; $Transfer 0x014A bytes from $6FE77 -> $7EC700)
|
||||||
; org $8DFA9C ; <- 6FA9C - headsup_display.asm : 629 (MVN $0D, $7E ; $Transfer 0x014A bytes from $6FE77 -> $7EC700)
|
MVN $A17E
|
||||||
; MVN $A17E
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $8DFB1F : JSL CheckHUDSilverArrows
|
org $8DFB1F : JSL CheckHUDSilverArrows
|
||||||
org $8DFB29 : BRA UpdateHUDBuffer_update_item_check_arrows
|
org $8DFB29 : BRA UpdateHUDBuffer_update_item_check_arrows
|
||||||
@@ -1421,7 +1420,7 @@ RebuildHUD_update_long:
|
|||||||
JSR.w RebuildHUD_update : RTL
|
JSR.w RebuildHUD_update : RTL
|
||||||
|
|
||||||
RefreshIcon_UpdateHUD:
|
RefreshIcon_UpdateHUD:
|
||||||
INC.w UpdateHUDFlag
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
JSR.w RebuildHUD
|
JSR.w RebuildHUD
|
||||||
JSR.w UpdateEquippedItem
|
JSR.w UpdateEquippedItem
|
||||||
RTS
|
RTS
|
||||||
@@ -2450,153 +2449,6 @@ JSL FixJingleGlitch
|
|||||||
org $81C65F
|
org $81C65F
|
||||||
JSL FixJingleGlitch
|
JSL FixJingleGlitch
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Bomb-Only Mode
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86ECC3 ; Bank06.asm@4704 (PHX : TAX : LDA.l .damage_classes, X : PLX)
|
|
||||||
JSL DamageClassCalc
|
|
||||||
BRA + : NOP #29 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8882D4 ; Bank08.asm@445 (PHX : TYX : ... )
|
|
||||||
JSL Utility_CheckAncillaOverlapWithSprite
|
|
||||||
BRA + : NOP #5 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $888DB1 ; Bank08.asm@1207 (PHY : PHX : TYX : ... )
|
|
||||||
JSL Utility_CheckAncillaOverlapWithSprite
|
|
||||||
BRA + : NOP #7 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $88E252 ; Bank08.asm@1770 (PHY : PHX : TYX : ... )
|
|
||||||
JSL Utility_CheckAncillaOverlapWithSprite
|
|
||||||
BRA + : NOP #7 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8882E8 ; Bank08.asm@456 (LDA $0DB0, Y : CMP.b #$03)
|
|
||||||
JSL Utility_CheckHelmasaurKingCollision
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86ED94 ; Bank06.asm@4866 (LDA $0E60, X : AND.b #$40)
|
|
||||||
JSL Utility_CheckImpervious
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $868F94 ; sprite_prep.asm@1984 (INC $0BA0, X : JSL Sprite_InitializedSegmented)
|
|
||||||
JSL AllowBombingMoldorm
|
|
||||||
BRA + : NOP : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86892F ; sprite_prep.asm@548 (LDA $0D00, X : SUB #$0C : STA $0D00, X : ...)
|
|
||||||
JSL AllowBombingBarrier
|
|
||||||
RTS : NOP #7
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DE4BF ; equipment.asm@1247 (LDA $7EF343 : AND.w #$00FF : BEQ .gotNoBombs : ...)
|
|
||||||
JSL DrawBombInMenu
|
|
||||||
BRA + : NOP #13 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DFB6A ; headsup_display@727 (CPX #$0004 : BNE .bombsNotEquipped : LDA #$0001)
|
|
||||||
JSL DrawBombInYBox
|
|
||||||
BRA + : NOP #2 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DEE05 ; equipment.asm@2065 (LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : ...)
|
|
||||||
JSL DrawSwordInMenu
|
|
||||||
BRA + : NOP #16 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DFA92 ; headsup_display.asm@622 (PDB : LDA.w #$0149 : ...)
|
|
||||||
JSL DrawBombOnHud
|
|
||||||
BRA + : NOP #8 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $889EF8 ; ancilla_bomb@1438 (LDA.w #$04 : STA $0B)
|
|
||||||
JSL SetBombSpriteColor
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; bomb icons with numbers
|
|
||||||
org $8DFC51 ; we freed this up earlier in hooks; probably shouldn't use it but *shrug*
|
|
||||||
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
|
||||||
db $B2, $3C, $B3, $3C, $C2, $3C, $17, $3C
|
|
||||||
db $B2, $2C, $B3, $2C, $C2, $2C, $18, $2C
|
|
||||||
db $B2, $24, $B3, $24, $C2, $24, $19, $24
|
|
||||||
db $B2, $28, $B3, $28, $C2, $28, $1A, $28
|
|
||||||
db $B2, $28, $B3, $28, $C2, $28, $1B, $28
|
|
||||||
|
|
||||||
; bomb icons without numbers
|
|
||||||
; $8DFC81
|
|
||||||
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
|
||||||
db $B2, $3C, $B3, $3C, $C2, $3C, $C2, $7C
|
|
||||||
db $B2, $2C, $B3, $2C, $C2, $2C, $C2, $6C
|
|
||||||
db $B2, $24, $B3, $24, $C2, $24, $C2, $64
|
|
||||||
db $B2, $28, $B3, $28, $C2, $28, $C2, $68
|
|
||||||
db $B2, $28, $B3, $28, $C2, $28, $C2, $68
|
|
||||||
|
|
||||||
warnpc $8DFC51+197 ; we only filled in 197 NOPs so don't overwrite past that
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $1EDCF8 ; bank_1E.asm@16086 (LDX $0202 : ...)
|
|
||||||
JSL SetBeeType
|
|
||||||
BRA + : NOP #15 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $1EB5E8 ; bank_1E.asm@9387 (LDA #$03 : STA $0D80, X)
|
|
||||||
JSL ArrghusBoing
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $1EDFAF ; bank_1E.asm@16607 (.next_sprite)
|
|
||||||
JSL BeeCheckTarget
|
|
||||||
BCS .bee_valid_target
|
|
||||||
BRA .bee_unsuitable_target
|
|
||||||
NOP #48
|
|
||||||
.bee_unsuitable_target
|
|
||||||
skip 11
|
|
||||||
.bee_valid_target
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $87F889 ; free rom from F877 - F88F; the starting part of this is used in quadrant glitch fix in overworld fork, however.
|
|
||||||
Link_UseItemLong:
|
|
||||||
PER .done-1
|
|
||||||
JMP.w ($0000)
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
warnpc $87F890
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86F2DC ; bank_06.asm@22763 (LDA.w $037A : AND.b #$10)
|
|
||||||
JSL CheckBugNet : NOP
|
|
||||||
|
|
||||||
org $86EB91 ; bank_06.asm@21178 (LDA.w $037A : AND.b #$10)
|
|
||||||
JSL CheckBugNet : NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86ED77 ; bank_06.asm@21597 (LDA.w $0301 : AND.b #$0A : ...)
|
|
||||||
JSL SetHammerClass
|
|
||||||
BRA + : NOP #7 : +
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Variable Ganon Vulnerability
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $88BBD4 ; ancilla_magic_powder.asm@253 (LDA #$0A : JSL Ancilla_CheckSpriteDamage.preset_class)
|
|
||||||
JSL Ganon_CheckPowderVulnerability
|
|
||||||
NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $9D8F4E ; sprite_ganon.asm@325 (LDA $04C5 : CMP #$02)
|
|
||||||
JSL Ganon_CheckInvincible
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DD628 ; Bank0D.asm@1266 (LDA $0B6B, Y : AND #$02)
|
|
||||||
JSL CheckBeeBoss
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DD676 ; Bank0D.asm@1303 (TYX : JSL Ancilla_CheckSpriteDamage.preset_class)
|
|
||||||
JSL Ganon_CheckBeeVulnerability
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Pseudo-Sword Mode
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86ED70 ; Bank06.asm@4842 (LDA $06ED39, X : STA $0CF2)
|
|
||||||
JSL StoreSwordDamage
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Item-On-B
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DEB3C
|
|
||||||
JSL DrawBIndicator : BRA + : NOP #3 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $879CE6 ; Bank07.asm@4632 (LDA #$80 : TSB $3A : ...)
|
|
||||||
JSL UseItem
|
|
||||||
BCC + : RTS : +
|
|
||||||
JSR $9C56
|
|
||||||
NOP #1
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Text Renderer
|
; Text Renderer
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
535
inventory.asm
535
inventory.asm
@@ -7,13 +7,12 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ProcessMenuButtons:
|
ProcessMenuButtons:
|
||||||
LDA.b Joy1A_New : BIT.b #$40 : BNE .y_pressed ; check for P1 Y-button
|
LDA.b Joy1A_New : BIT.b #$40 : BNE .y_pressed ; check for P1 Y-button
|
||||||
BIT.b #$20 : BNE .sel_pressed ; check for P1 Select button
|
BIT.b #$20 : BNE .sel_pressed ; check for P1 Select button
|
||||||
BIT.b #$80 : BNE .b_pressed ; check for P1 B-button
|
|
||||||
LDA.b Joy1A_All : BIT.b #$20 : BNE .sel_held
|
LDA.b Joy1A_All : BIT.b #$20 : BNE .sel_held
|
||||||
.sel_unheld
|
.sel_unheld
|
||||||
LDA.l HudFlag : AND.b #$60 : BEQ +
|
LDA.l HudFlag : AND.b #$60 : BEQ +
|
||||||
LDA.b #$00 : STA.l HudFlag
|
LDA.b #$00 : STA.l HudFlag
|
||||||
JSL.l MaybePlaySelectSFX
|
JSL.l MaybePlaySelectSFX
|
||||||
+
|
+
|
||||||
JSL.l ResetEquipment
|
JSL.l ResetEquipment
|
||||||
+
|
+
|
||||||
@@ -21,27 +20,15 @@ ProcessMenuButtons:
|
|||||||
CLC ; no buttons
|
CLC ; no buttons
|
||||||
RTL
|
RTL
|
||||||
.sel_pressed
|
.sel_pressed
|
||||||
LDA.l HUDDungeonItems : BIT.b #$0C : BNE +
|
LDA.l HUDDungeonItems : BIT.b #$0C : BNE +
|
||||||
LDA.b #$40
|
LDA.b #$40
|
||||||
BRA .store_flag
|
BRA .store_flag
|
||||||
+
|
+
|
||||||
LDA.b #$60
|
LDA.b #$60
|
||||||
.store_flag
|
.store_flag
|
||||||
STA.l HudFlag
|
STA.l HudFlag
|
||||||
JSL.l MaybePlaySelectSFX
|
JSL.l MaybePlaySelectSFX
|
||||||
JSL.l ResetEquipment
|
JSL.l ResetEquipment
|
||||||
RTL
|
|
||||||
.b_pressed
|
|
||||||
JSR CanPressB : BCC .b_error
|
|
||||||
LDA.w ItemCursor : CMP.l ItemOnB : BNE .set_b
|
|
||||||
LDA.b #$00
|
|
||||||
.set_b
|
|
||||||
STA.l ItemOnB
|
|
||||||
BRA .b_done
|
|
||||||
.b_error
|
|
||||||
LDA.b #$3C : STA.w SFX2 ; error sound
|
|
||||||
.b_done
|
|
||||||
SEC
|
|
||||||
RTL
|
RTL
|
||||||
.y_pressed ; Note: used as entry point by quickswap code. Must preserve X.
|
.y_pressed ; Note: used as entry point by quickswap code. Must preserve X.
|
||||||
LDA.b #$10 : STA.w MenuBlink
|
LDA.b #$10 : STA.w MenuBlink
|
||||||
@@ -108,27 +95,6 @@ RTL
|
|||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CanPressB:
|
|
||||||
PHY : PHP : SEP #$30
|
|
||||||
LDA.l AllowedItemOnB : BEQ .no
|
|
||||||
CMP.b #$FF : BEQ .skip_allow_check
|
|
||||||
CMP.w ItemCursor : BNE .no
|
|
||||||
.skip_allow_check
|
|
||||||
PHX
|
|
||||||
LDA.w ItemCursor : TAX
|
|
||||||
LDA.l ValidItemOnB, X : BNE .plx_and_no
|
|
||||||
PLX
|
|
||||||
PLP : PLY
|
|
||||||
SEC
|
|
||||||
RTS
|
|
||||||
.plx_and_no
|
|
||||||
PLX
|
|
||||||
.no
|
|
||||||
PLP : PLY
|
|
||||||
CLC
|
|
||||||
RTS
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;ProcessBottleMenu:
|
;ProcessBottleMenu:
|
||||||
@@ -153,7 +119,7 @@ RTL
|
|||||||
OpenBottleMenu:
|
OpenBottleMenu:
|
||||||
LDA.b Joy1B_New : AND.b #$40 : BEQ .x_not_pressed ; skip if X is not down
|
LDA.b Joy1B_New : AND.b #$40 : BEQ .x_not_pressed ; skip if X is not down
|
||||||
LDA.b #$10 : STA.w MenuBlink ; set 16 frame cool off
|
LDA.b #$10 : STA.w MenuBlink ; set 16 frame cool off
|
||||||
LDA.b #$20 : STA.w SFX3 ; make menu sound
|
LDA.b #$20 : STA.w SFX3 ; make menu sound
|
||||||
LDA.b #$07 : STA.w SubModuleInterface ; thing we wrote over - opens bottle menu
|
LDA.b #$07 : STA.w SubModuleInterface ; thing we wrote over - opens bottle menu
|
||||||
.x_not_pressed
|
.x_not_pressed
|
||||||
RTL
|
RTL
|
||||||
@@ -161,16 +127,16 @@ RTL
|
|||||||
;CloseBottleMenu:
|
;CloseBottleMenu:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CloseBottleMenu:
|
CloseBottleMenu:
|
||||||
LDA.b Joy1B_New : AND.b #$40 : BEQ .x_not_pressed ; skip if X is not down
|
LDA.b Joy1B_New : AND.b #$40 : BEQ .x_not_pressed ; skip if X is not down
|
||||||
LDA.b #$10 : STA.w MenuBlink ; set 16 frame cool off
|
LDA.b #$10 : STA.w MenuBlink ; set 16 frame cool off
|
||||||
LDA.b #$20 : STA.w SFX3 ; make menu sound
|
LDA.b #$20 : STA.w SFX3 ; make menu sound
|
||||||
|
|
||||||
INC.w SubModuleInterface ; return to normal menu
|
INC.w SubModuleInterface ; return to normal menu
|
||||||
STZ.w BottleMenuCounter
|
STZ.w BottleMenuCounter
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
RTL
|
RTL
|
||||||
.x_not_pressed
|
.x_not_pressed
|
||||||
LDA.b Joy1A_New : AND.b #$0C ; thing we wrote over (probably)
|
LDA.b Joy1A_New : AND.b #$0C ; thing we wrote over (probably)
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; AddInventory:
|
; AddInventory:
|
||||||
@@ -179,8 +145,8 @@ AddInventory:
|
|||||||
; In: Y - Receipt ID
|
; In: Y - Receipt ID
|
||||||
; Uses $0B-$0D for long absolute addressing
|
; Uses $0B-$0D for long absolute addressing
|
||||||
PHA : PHX : PHY : PHP : PHB
|
PHA : PHX : PHY : PHP : PHB
|
||||||
PHK : PLB
|
PHK : PLB
|
||||||
LDA.b #$7E : STA.b Scrap0D
|
LDA.b #$7E : STA.b Scrap0D
|
||||||
|
|
||||||
LDA.l StatsLocked : BNE .done
|
LDA.l StatsLocked : BNE .done
|
||||||
REP #$30
|
REP #$30
|
||||||
@@ -188,25 +154,25 @@ AddInventory:
|
|||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
LDA.w InventoryTable_properties,X : BIT.b #$01 : BEQ .done
|
LDA.w InventoryTable_properties,X : BIT.b #$01 : BEQ .done
|
||||||
JSR.w ShopCheck : BCS .done
|
JSR.w ShopCheck : BCS .done
|
||||||
JSR.w DungeonIncrement : BCS .done
|
JSR.w DungeonIncrement : BCS .done
|
||||||
JSR.w IncrementByOne
|
JSR.w IncrementByOne
|
||||||
JSR.w StampItem
|
JSR.w StampItem
|
||||||
JSR.w IncrementYAItems
|
JSR.w IncrementYAItems
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.l TotalItemCounter : INC : TAY
|
LDA.l TotalItemCounter : INC : TAY
|
||||||
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 #$00FF : BNE +
|
||||||
TYA : STA.l PreMirrorLocations
|
TYA : STA.l PreMirrorLocations
|
||||||
+
|
+
|
||||||
LDA.l FluteEquipment : AND.w #$00FF : BNE +
|
LDA.l FluteEquipment : AND.w #$00FF : BNE +
|
||||||
TYA : STA.l PreFluteLocations
|
TYA : STA.l PreFluteLocations
|
||||||
+
|
+
|
||||||
TYA
|
TYA
|
||||||
STA.l TotalItemCounter
|
STA.l TotalItemCounter
|
||||||
.done
|
.done
|
||||||
SEP #$30
|
SEP #$30
|
||||||
PLB : PLP : PLY : PLX : PLA
|
PLB : PLP : PLY : PLX : PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -215,27 +181,27 @@ ShopCheck:
|
|||||||
; In: X - Receipt ID << 1
|
; In: X - Receipt ID << 1
|
||||||
; TODO: If we write all shops, we can use the ShopPurchase flag instead of this
|
; TODO: If we write all shops, we can use the ShopPurchase flag instead of this
|
||||||
PHX
|
PHX
|
||||||
LDA.b IndoorsFlag : BEQ .count
|
LDA.b IndoorsFlag : BEQ .count
|
||||||
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ .count
|
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ .count
|
||||||
LDA.w InventoryTable_properties,X : BIT.b #$02 : BNE .count
|
LDA.w InventoryTable_properties,X : BIT.b #$02 : BNE .count
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.b RoomIndex
|
LDA.b RoomIndex
|
||||||
CMP.w #274 : BEQ .nocount ; dark world death mountain shop, ornamental shield shop
|
CMP.w #274 : BEQ .nocount ; dark world death mountain shop, ornamental shield shop
|
||||||
CMP.w #271 : BEQ .nocount ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop
|
CMP.w #271 : BEQ .nocount ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop
|
||||||
CMP.w #272 : BEQ .nocount ; red shield shop
|
CMP.w #272 : BEQ .nocount ; red shield shop
|
||||||
CMP.w #284 : BEQ .nocount ; bomb shop
|
CMP.w #284 : BEQ .nocount ; bomb shop
|
||||||
CMP.w #287 : BEQ .nocount ; kakariko shop
|
CMP.w #287 : BEQ .nocount ; kakariko shop
|
||||||
CMP.w #255 : BEQ .nocount ; light world death mountain shop
|
CMP.w #255 : BEQ .nocount ; light world death mountain shop
|
||||||
CMP.w #276 : BEQ .nocount ; waterfall fairy
|
CMP.w #276 : BEQ .nocount ; waterfall fairy
|
||||||
CMP.w #277 : BEQ .nocount ; upgrade fairy (shop)
|
CMP.w #277 : BEQ .nocount ; upgrade fairy (shop)
|
||||||
CMP.w #278 : BEQ .nocount ; pyramid fairy
|
CMP.w #278 : BEQ .nocount ; pyramid fairy
|
||||||
SEP #$20
|
SEP #$20
|
||||||
.count
|
.count
|
||||||
CLC
|
CLC
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
.nocount
|
.nocount
|
||||||
SEP #$21
|
SEP #$21
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -243,161 +209,150 @@ DungeonIncrement:
|
|||||||
; In: X - Receipt ID << 1
|
; In: X - Receipt ID << 1
|
||||||
PHX
|
PHX
|
||||||
LDA.w InventoryTable_properties,X : BIT.b #$40 : BEQ +
|
LDA.w InventoryTable_properties,X : BIT.b #$40 : BEQ +
|
||||||
JSL.l CountChestKeyLong
|
JSL.l CountChestKeyLong
|
||||||
+
|
+
|
||||||
SEP #$10
|
SEP #$10
|
||||||
LDA.b IndoorsFlag : BEQ .done
|
LDA.b IndoorsFlag : BEQ .done
|
||||||
LDA.w DungeonID : BMI .done
|
LDA.w DungeonID : BMI .done
|
||||||
CMP.l BallNChainDungeon : BNE +
|
CMP.l BallNChainDungeon : BNE +
|
||||||
CPY.b #$32 : BEQ .ballchain_bigkey
|
CPY.b #$32 : BEQ .ballchain_bigkey
|
||||||
+
|
+
|
||||||
CMP.b #$04 : BCS +
|
CMP.b #$04 : BCS +
|
||||||
LDA.l SewersLocations : INC : STA.l SewersLocations : STA.l HCLocations
|
LDA.l SewersLocations : INC : STA.l SewersLocations : STA.l HCLocations
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
LSR : TAX
|
LSR : TAX
|
||||||
LDA.l DungeonLocationsChecked, X : INC : STA.l DungeonLocationsChecked, X
|
LDA.l DungeonLocationsChecked, X : INC : STA.l DungeonLocationsChecked, X
|
||||||
CPX.b #$0D : BNE +
|
CPX.b #$0D : BNE +
|
||||||
LDA.l BigKeyField : BIT.b #$04 : BNE ++
|
LDA.l BigKeyField : BIT.b #$04 : BNE ++
|
||||||
LDA.l PreGTBKLocations : INC : STA.l PreGTBKLocations
|
LDA.l PreGTBKLocations : INC : STA.l PreGTBKLocations
|
||||||
++
|
++
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
REP #$11
|
REP #$11
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
.ballchain_bigkey
|
.ballchain_bigkey
|
||||||
REP #$10
|
REP #$10
|
||||||
PLX
|
PLX
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
StampItem:
|
StampItem:
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.w InventoryTable_stamp,X : BEQ .skip
|
LDA.w InventoryTable_stamp,X : BEQ .skip
|
||||||
STA.b Scrap0B
|
STA.b Scrap0B
|
||||||
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
|
.skip
|
||||||
LDA.l NMIFrames+2 : STA.b [Scrap0B]
|
|
||||||
.skip
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
IncrementYAItems:
|
IncrementYAItems:
|
||||||
PHX
|
PHX
|
||||||
LDA.w InventoryTable_properties,X
|
LDA.w InventoryTable_properties,X
|
||||||
BIT.b #$10 : BNE .bomb_check
|
BIT.b #$10 : BNE .bomb_check
|
||||||
BIT.b #$20 : BNE .bow_check
|
BIT.b #$20 : BNE .bow_check
|
||||||
BIT.b #$04 : BEQ .not_y
|
BIT.b #$04 : BEQ .not_y
|
||||||
.y_item
|
.y_item
|
||||||
LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter
|
LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter
|
||||||
BRA .done
|
BRA .done
|
||||||
.not_y
|
.not_y
|
||||||
BIT.b #$08 : BEQ .done
|
BIT.b #$08 : BEQ .done
|
||||||
.a_item
|
.a_item
|
||||||
LDA.l YAItemCounter : INC : AND.b #$07 : TAX
|
LDA.l YAItemCounter : INC : AND.b #$07 : TAX
|
||||||
LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter
|
LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter
|
||||||
TXA : ORA.l YAItemCounter : STA.l YAItemCounter
|
TXA : ORA.l YAItemCounter : STA.l YAItemCounter
|
||||||
.done
|
.done
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
.bow_check
|
.bow_check
|
||||||
LDA.l BowEquipment : BNE +
|
LDA.l BowEquipment : BNE +
|
||||||
BRA .y_item
|
BRA .y_item
|
||||||
.bomb_check
|
.bomb_check
|
||||||
LDA.l InventoryTracking+1 : BIT.b #$02 : BNE +
|
LDA.l InventoryTracking+1 : BIT.b #$02 : BNE +
|
||||||
ORA.b #$02 : STA.l InventoryTracking+1
|
ORA.b #$02 : STA.l InventoryTracking+1
|
||||||
BRA .y_item
|
BRA .y_item
|
||||||
+
|
+
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
IncrementByOne:
|
IncrementByOne:
|
||||||
PHX
|
PHX
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w InventoryTable_stat,X : BEQ .skip
|
LDA.w InventoryTable_stat,X : BEQ .skip
|
||||||
STA.b Scrap0B
|
STA.b Scrap0B
|
||||||
SEP #$21
|
SEP #$21
|
||||||
LDA.b #$00 : ADC.b [Scrap0B] : STA.b [Scrap0B]
|
LDA.b #$00 : ADC.b [Scrap0B] : STA.b [Scrap0B]
|
||||||
.skip
|
.skip
|
||||||
SEP #$20
|
SEP #$20
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
IncrementBossSword:
|
IncrementBossSword:
|
||||||
PHX
|
PHX
|
||||||
LDA.l StatsLocked : BNE .done
|
LDA.l StatsLocked : BNE .done
|
||||||
|
LDA.l SwordEquipment : CMP.b #$FF : BNE +
|
||||||
|
BRA .none
|
||||||
|
+
|
||||||
|
ASL : TAX
|
||||||
|
JMP.w (.vectors,X)
|
||||||
|
|
||||||
.start
|
.vectors
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .check_special_weapon
|
dw .none
|
||||||
CMP.b #$03 : BEQ .check_special_weapon
|
dw .fighter
|
||||||
CMP.b #$04 : BEQ .check_special_weapon
|
dw .master
|
||||||
CMP.b #$05 : BEQ .check_special_weapon
|
dw .tempered
|
||||||
CMP.b #$08 : BEQ .check_special_weapon
|
dw .golden
|
||||||
|
|
||||||
.check_sword
|
.none
|
||||||
LDA.l SwordEquipment : CMP.b #$FF : BNE +
|
LDA.l SwordlessBossKills : INC : STA.l SwordlessBossKills
|
||||||
BRA .none
|
.done
|
||||||
+
|
PLX
|
||||||
ASL : TAX
|
RTL
|
||||||
JMP.w (.vectors,X)
|
.fighter
|
||||||
.check_special_weapon
|
LDA.l SwordBossKills
|
||||||
LDA.l SpecialWeaponLevel
|
CLC : ADC.b #$10
|
||||||
ASL : TAX
|
STA.l SwordBossKills
|
||||||
JMP.w (.vectors,X)
|
PLX
|
||||||
|
RTL
|
||||||
.vectors
|
.master
|
||||||
dw .none
|
LDA.l SwordBossKills : INC : AND.b #$0F : TAX
|
||||||
dw .fighter
|
LDA.l SwordBossKills : AND.b #$F0 : STA.l SwordBossKills
|
||||||
dw .master
|
TXA : ORA.l SwordBossKills : STA.l SwordBossKills
|
||||||
dw .tempered
|
PLX
|
||||||
dw .golden
|
RTL
|
||||||
dw .golden
|
.tempered
|
||||||
|
LDA.l SwordBossKills+1
|
||||||
.none
|
CLC : ADC.b #$10
|
||||||
LDA.l SwordlessBossKills : INC : STA.l SwordlessBossKills
|
STA.l SwordBossKills+1
|
||||||
.done
|
PLX
|
||||||
PLX
|
RTL
|
||||||
RTL
|
.golden
|
||||||
.fighter
|
LDA.l SwordBossKills+1 : INC : AND.b #$0F : TAX
|
||||||
LDA.l SwordBossKills
|
LDA.l SwordBossKills+1 : AND.b #$F0 : STA.l SwordBossKills+1
|
||||||
CLC : ADC.b #$10
|
TXA : ORA.l SwordBossKills+1 : STA.l SwordBossKills+1
|
||||||
STA.l SwordBossKills
|
PLX
|
||||||
PLX
|
RTL
|
||||||
RTL
|
|
||||||
.master
|
|
||||||
LDA.l SwordBossKills : INC : AND.b #$0F : TAX
|
|
||||||
LDA.l SwordBossKills : AND.b #$F0 : STA.l SwordBossKills
|
|
||||||
TXA : ORA.l SwordBossKills : STA.l SwordBossKills
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
.tempered
|
|
||||||
LDA.l SwordBossKills+1
|
|
||||||
CLC : ADC.b #$10
|
|
||||||
STA.l SwordBossKills+1
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
.golden
|
|
||||||
LDA.l SwordBossKills+1 : INC : AND.b #$0F : TAX
|
|
||||||
LDA.l SwordBossKills+1 : AND.b #$F0 : STA.l SwordBossKills+1
|
|
||||||
TXA : ORA.l SwordBossKills+1 : STA.l SwordBossKills+1
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementFinalSword:
|
IncrementFinalSword:
|
||||||
PHX
|
PHX
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w RoomIndex : BNE .done
|
LDA.w RoomIndex : BNE .done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JMP IncrementBossSword_start
|
LDA.l SwordEquipment : CMP.b #$FF : BNE +
|
||||||
.done
|
BRA IncrementBossSword_none
|
||||||
SEP #$20
|
+
|
||||||
PLX
|
ASL : TAX
|
||||||
|
JMP.w (IncrementBossSword_vectors,X)
|
||||||
|
.done
|
||||||
|
SEP #$20
|
||||||
|
PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Link_ReceiveItem_HUDRefresh:
|
Link_ReceiveItem_HUDRefresh:
|
||||||
@@ -409,7 +364,7 @@ Link_ReceiveItem_HUDRefresh:
|
|||||||
+
|
+
|
||||||
|
|
||||||
JSL.l HUD_RefreshIconLong ; thing we wrote over
|
JSL.l HUD_RefreshIconLong ; thing we wrote over
|
||||||
INC.w UpdateHUDFlag
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
JSL.l PostItemGet
|
JSL.l PostItemGet
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -424,7 +379,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.l HUD_RebuildLong
|
JSL.l HUD_RebuildLong
|
||||||
INC.w UpdateHUDFlag
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -447,7 +402,6 @@ AddYMarker:
|
|||||||
+ CMP.w #$10 : BEQ .drawJarMarker
|
+ CMP.w #$10 : BEQ .drawJarMarker
|
||||||
|
|
||||||
.drawNormal
|
.drawNormal
|
||||||
JSR CanPressB : BCS .drawBBubble
|
|
||||||
LDA.w #$7C60
|
LDA.w #$7C60
|
||||||
BRA .drawTile
|
BRA .drawTile
|
||||||
|
|
||||||
@@ -455,20 +409,12 @@ AddYMarker:
|
|||||||
LDA.w MenuBlink : AND.w #$0020 : BNE .drawXBubble
|
LDA.w MenuBlink : AND.w #$0020 : BNE .drawXBubble
|
||||||
|
|
||||||
.drawYBubble
|
.drawYBubble
|
||||||
JSR CanPressB : BCC .drawY
|
|
||||||
LDA.w MenuBlink : AND.w #$0020 : BNE .drawBBubble
|
|
||||||
.drawY
|
|
||||||
LDA.w #$3D4F
|
LDA.w #$3D4F
|
||||||
BRA .drawTile
|
BRA .drawTile
|
||||||
|
|
||||||
.drawXBubble
|
.drawXBubble
|
||||||
JSR MakeCircleBlue
|
JSR MakeCircleBlue
|
||||||
LDA.w #$2D3E
|
LDA.w #$2D3E
|
||||||
BRA .drawTile
|
|
||||||
|
|
||||||
.drawBBubble
|
|
||||||
JSR MakeCircleRed
|
|
||||||
LDA.w #$293F
|
|
||||||
|
|
||||||
.drawTile
|
.drawTile
|
||||||
STA.w $FFC4, Y
|
STA.w $FFC4, Y
|
||||||
@@ -480,40 +426,22 @@ RTL
|
|||||||
; this is horrible, make it better
|
; this is horrible, make it better
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MakeCircleBlue:
|
MakeCircleBlue:
|
||||||
LDA.w $FFC0, Y : AND.w #$EFFF : STA.w $FFC0, Y
|
LDA.w $FFC0, Y : AND.w #$EFFF : STA.w $FFC0, Y
|
||||||
LDA.w $FFC2, Y : AND.w #$EFFF : STA.w $FFC2, Y
|
LDA.w $FFC2, Y : AND.w #$EFFF : STA.w $FFC2, Y
|
||||||
|
|
||||||
LDA.w $FFFE, Y : AND.w #$EFFF : STA.w $FFFE, Y
|
LDA.w $FFFE, Y : AND.w #$EFFF : STA.w $FFFE, Y
|
||||||
LDA.w $0004, Y : AND.w #$EFFF : STA.w $0004, Y
|
LDA.w $0004, Y : AND.w #$EFFF : STA.w $0004, Y
|
||||||
|
|
||||||
|
LDA.w $003E, Y : AND.w #$EFFF : STA.w $003E, Y
|
||||||
|
LDA.w $0044, Y : AND.w #$EFFF : STA.w $0044, Y
|
||||||
|
|
||||||
|
LDA.w $0080, Y : AND.w #$EFFF : STA.w $0080, Y
|
||||||
|
LDA.w $0082, Y : AND.w #$EFFF : STA.w $0082, Y
|
||||||
|
|
||||||
LDA.w $003E, Y : AND.w #$EFFF : STA.w $003E, Y
|
LDA.w $FFBE, Y : AND.w #$EFFF : STA.w $FFBE, Y
|
||||||
LDA.w $0044, Y : AND.w #$EFFF : STA.w $0044, Y
|
LDA.w $FFC4, Y : AND.w #$EFFF : STA.w $FFC4, Y
|
||||||
|
LDA.w $0084, Y : AND.w #$EFFF : STA.w $0084, Y
|
||||||
LDA.w $0080, Y : AND.w #$EFFF : STA.w $0080, Y
|
LDA.w $007E, Y : AND.w #$EFFF : STA.w $007E, Y
|
||||||
LDA.w $0082, Y : AND.w #$EFFF : STA.w $0082, Y
|
|
||||||
|
|
||||||
LDA.w $FFBE, Y : AND.w #$EFFF : STA.w $FFBE, Y
|
|
||||||
LDA.w $FFC4, Y : AND.w #$EFFF : STA.w $FFC4, Y
|
|
||||||
LDA.w $0084, Y : AND.w #$EFFF : STA.w $0084, Y
|
|
||||||
LDA.w $007E, Y : AND.w #$EFFF : STA.w $007E, Y
|
|
||||||
RTS
|
|
||||||
MakeCircleRed:
|
|
||||||
LDA.w $FFC0, Y : AND.w #$EBFF : STA.w $FFC0, Y
|
|
||||||
LDA.w $FFC2, Y : AND.w #$EBFF : STA.w $FFC2, Y
|
|
||||||
|
|
||||||
LDA.w $FFFE, Y : AND.w #$EBFF : STA.w $FFFE, Y
|
|
||||||
LDA.w $0004, Y : AND.w #$EBFF : STA.w $0004, Y
|
|
||||||
|
|
||||||
LDA.w $003E, Y : AND.w #$EBFF : STA.w $003E, Y
|
|
||||||
LDA.w $0044, Y : AND.w #$EBFF : STA.w $0044, Y
|
|
||||||
|
|
||||||
LDA.w $0080, Y : AND.w #$EBFF : STA.w $0080, Y
|
|
||||||
LDA.w $0082, Y : AND.w #$EBFF : STA.w $0082, Y
|
|
||||||
|
|
||||||
LDA.w $FFBE, Y : AND.w #$EBFF : STA.w $FFBE, Y
|
|
||||||
LDA.w $FFC4, Y : AND.w #$EBFF : STA.w $FFC4, Y
|
|
||||||
LDA.w $0084, Y : AND.w #$EBFF : STA.w $0084, Y
|
|
||||||
LDA.w $007E, Y : AND.w #$EBFF : STA.w $007E, Y
|
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -560,18 +488,18 @@ RTL
|
|||||||
; SaveKeys:
|
; SaveKeys:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SaveKeys:
|
SaveKeys:
|
||||||
PHA
|
PHA
|
||||||
LDA.l GenericKeys : BEQ +
|
LDA.l GenericKeys : BEQ +
|
||||||
PLA : STA.l CurrentGenericKeys
|
PLA : STA.l CurrentGenericKeys
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLA : STA.l DungeonKeys, X
|
PLA : STA.l DungeonKeys, X
|
||||||
CPX.b #$00 : BNE +
|
CPX.b #$00 : BNE +
|
||||||
STA.l HyruleCastleKeys ; copy HC to sewers
|
STA.l HyruleCastleKeys ; copy HC to sewers
|
||||||
+
|
+
|
||||||
CPX.b #$01 : BNE +
|
CPX.b #$01 : BNE +
|
||||||
STA.l SewerKeys ; copy sewers to HC
|
STA.l SewerKeys ; copy sewers to HC
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -596,8 +524,8 @@ RTL
|
|||||||
; PrepItemScreenBigKey:
|
; PrepItemScreenBigKey:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PrepItemScreenBigKey:
|
PrepItemScreenBigKey:
|
||||||
STZ.b Scrap02
|
STZ.b Scrap02
|
||||||
STZ.b Scrap03
|
STZ.b Scrap03
|
||||||
REP #$30 ; thing we wrote over - set 16-bit accumulator
|
REP #$30 ; thing we wrote over - set 16-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -606,15 +534,15 @@ RTL
|
|||||||
; LoadPowder:
|
; LoadPowder:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadPowder:
|
LoadPowder:
|
||||||
PHX
|
PHX
|
||||||
JSL.l Sprite_SpawnDynamically ; thing we wrote over
|
JSL.l Sprite_SpawnDynamically ; thing we wrote over
|
||||||
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues)
|
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues)
|
||||||
JSL.l AttemptItemSubstitution
|
JSL.l AttemptItemSubstitution
|
||||||
JSL.l ResolveLootIDLong
|
JSL.l ResolveLootIDLong
|
||||||
STA.w SpriteID, Y
|
STA.w SpriteID, Y
|
||||||
TYX
|
TYX
|
||||||
JSL.l PrepDynamicTile_loot_resolved
|
JSL.l PrepDynamicTile_loot_resolved
|
||||||
PLX
|
PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -694,14 +622,14 @@ RTL
|
|||||||
; CollectPowder:
|
; CollectPowder:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CollectPowder:
|
CollectPowder:
|
||||||
LDY.w SpriteID, X ; Retrieve stored item type
|
LDY.w SpriteID, X ; Retrieve stored item type
|
||||||
BNE +
|
BNE +
|
||||||
; if for any reason the item value is 0 reload it, just in case
|
; if for any reason the item value is 0 reload it, just in case
|
||||||
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY
|
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY
|
||||||
+
|
+
|
||||||
STZ.w ItemReceiptMethod ; item from NPC
|
STZ.w ItemReceiptMethod ; item from NPC
|
||||||
JSL.l Link_ReceiveItem
|
JSL.l Link_ReceiveItem
|
||||||
JSL.l ItemSet_Powder
|
JSL.l ItemSet_Powder
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -724,14 +652,14 @@ RTL
|
|||||||
DrawMagicHeader:
|
DrawMagicHeader:
|
||||||
LDA.l MagicConsumption : AND.w #$00FF : CMP.w #$0002 : BEQ .quarterMagic
|
LDA.l MagicConsumption : AND.w #$00FF : CMP.w #$0002 : BEQ .quarterMagic
|
||||||
.halfMagic
|
.halfMagic
|
||||||
LDA.w #$28F7 : STA.l HUDTileMapBuffer+$04
|
LDA.w #$28F7 : STA.l HUDTileMapBuffer+$04
|
||||||
LDA.w #$2851 : STA.l HUDTileMapBuffer+$06
|
LDA.w #$2851 : STA.l HUDTileMapBuffer+$06
|
||||||
LDA.w #$28FA : STA.l HUDTileMapBuffer+$08
|
LDA.w #$28FA : STA.l HUDTileMapBuffer+$08
|
||||||
RTL
|
RTL
|
||||||
.quarterMagic
|
.quarterMagic
|
||||||
LDA.w #$28F7 : STA.l HUDTileMapBuffer+$04
|
LDA.w #$28F7 : STA.l HUDTileMapBuffer+$04
|
||||||
LDA.w #$2800 : STA.l HUDTileMapBuffer+$06
|
LDA.w #$2800 : STA.l HUDTileMapBuffer+$06
|
||||||
LDA.w #$2801 : STA.l HUDTileMapBuffer+$08
|
LDA.w #$2801 : STA.l HUDTileMapBuffer+$08
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -765,8 +693,8 @@ RTL
|
|||||||
SpawnShovelItem:
|
SpawnShovelItem:
|
||||||
LDA.b #$01 : STA.l RedrawFlag
|
LDA.b #$01 : STA.l RedrawFlag
|
||||||
|
|
||||||
LDA.w YButtonOverride : BEQ +
|
LDA.w YButtonOverride : BEQ +
|
||||||
JSL DiggingGameGuy_AttemptPrizeSpawn
|
JSL DiggingGameGuy_AttemptPrizeSpawn
|
||||||
JMP .skip
|
JMP .skip
|
||||||
+
|
+
|
||||||
|
|
||||||
@@ -778,8 +706,8 @@ SpawnShovelItem:
|
|||||||
|
|
||||||
LDA.b IndoorsFlag : BEQ + : JMP .no_drop : + ; skip if indoors
|
LDA.b IndoorsFlag : BEQ + : JMP .no_drop : + ; skip if indoors
|
||||||
|
|
||||||
LDA.b OverworldIndex : CMP.b #$2A : BEQ .no_drop ; don't drop in the haunted grove
|
LDA.b OverworldIndex : CMP.b #$2A : BEQ .no_drop ; don't drop in the haunted grove
|
||||||
CMP.b #$68 : BEQ .no_drop ; don't drop in the digging game area
|
CMP.b #$68 : BEQ .no_drop ; don't drop in the digging game area
|
||||||
|
|
||||||
JSL GetRandomInt : BIT.b #$03 : BNE .no_drop ; drop with 1/4 chance
|
JSL GetRandomInt : BIT.b #$03 : BNE .no_drop ; drop with 1/4 chance
|
||||||
|
|
||||||
@@ -803,12 +731,11 @@ SpawnShovelItem:
|
|||||||
LDA.b #$30 : STA.w SpriteTimerE, Y
|
LDA.b #$30 : STA.w SpriteTimerE, Y
|
||||||
|
|
||||||
LDA.b LinkPosX : !ADD.l .x_offsets, X
|
LDA.b LinkPosX : !ADD.l .x_offsets, X
|
||||||
AND.b #$F0 : STA.w SpritePosXLow, Y
|
AND.b #$F0 : STA.w SpritePosXLow, Y
|
||||||
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh, Y
|
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh, Y
|
||||||
|
|
||||||
LDA.b LinkPosY : !ADD.b #$16
|
LDA.b LinkPosY : !ADD.b #$16 : AND.b #$F0 : STA.w SpritePosYLow, Y
|
||||||
AND.b #$F0 : STA.w SpritePosYLow, Y
|
LDA.b LinkPosY+1 : ADC.b #$00 : STA.w SpritePosYHigh, Y
|
||||||
LDA.b LinkPosY+1 : ADC.b #$00 : STA.w SpritePosYHigh, Y
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.w SpriteLayer, Y
|
LDA.b #$00 : STA.w SpriteLayer, Y
|
||||||
TYX
|
TYX
|
||||||
@@ -825,23 +752,23 @@ RTL
|
|||||||
{
|
{
|
||||||
|
|
||||||
.x_speeds
|
.x_speeds
|
||||||
db $F0
|
db $F0
|
||||||
db $10
|
db $10
|
||||||
|
|
||||||
.x_offsets
|
.x_offsets
|
||||||
db $00
|
db $00
|
||||||
db $13
|
db $13
|
||||||
|
|
||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybePlaySelectSFX:
|
MaybePlaySelectSFX:
|
||||||
LDA.w DungeonID : BMI .not_dungeon
|
LDA.w DungeonID : BMI .not_dungeon
|
||||||
.play
|
.play
|
||||||
LDA.b #$20 : STA.w SFX3 ; menu select sound
|
LDA.b #$20 : STA.w SFX3 ; menu select sound
|
||||||
RTL
|
RTL
|
||||||
.not_dungeon
|
.not_dungeon
|
||||||
LDA.l HUDDungeonItems : BIT.b #$13 : BEQ .dont_play
|
LDA.l HUDDungeonItems : BIT.b #$13 : BEQ .dont_play
|
||||||
BIT.b #$0C : BEQ .dont_play
|
BIT.b #$0C : BEQ .dont_play
|
||||||
BRA .play
|
BRA .play
|
||||||
.dont_play
|
.dont_play
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -1,98 +0,0 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
ItemMenuLocations:
|
|
||||||
dw $11C8 ; Bow
|
|
||||||
dw $11CE ; Boomerang
|
|
||||||
dw $11D4 ; Hookshot
|
|
||||||
dw $11DA ; Bombs
|
|
||||||
dw $11E0 ; Powder / Mushroom
|
|
||||||
dw $1288 ; Fire Rod
|
|
||||||
dw $128E ; Ice Rod
|
|
||||||
dw $1294 ; Bombos
|
|
||||||
dw $129A ; Ether
|
|
||||||
dw $12A0 ; Quake
|
|
||||||
dw $1348 ; Lamp
|
|
||||||
dw $134E ; Hammer
|
|
||||||
dw $1354 ; Flute / Shovel
|
|
||||||
dw $135A ; Bug Net
|
|
||||||
dw $1360 ; Book
|
|
||||||
dw $1408 ; Bottles
|
|
||||||
dw $140E ; Somaria
|
|
||||||
dw $1414 ; Byrna
|
|
||||||
dw $141A ; Cape
|
|
||||||
dw $1420 ; Mirror
|
|
||||||
|
|
||||||
DrawBIndicator:
|
|
||||||
LDA.l ItemOnB : AND.w #$00FF : BEQ .done
|
|
||||||
DEC : ASL : TAX
|
|
||||||
LDA.l ItemMenuLocations, X : TAX
|
|
||||||
LDA.w #$3D3B
|
|
||||||
STA.w $0042, X
|
|
||||||
|
|
||||||
.done ; what we wrote over
|
|
||||||
LDA.w $0202
|
|
||||||
AND.w #$00FF
|
|
||||||
DEC
|
|
||||||
ASL
|
|
||||||
TAX
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
ItemHandlerLocs:
|
|
||||||
dw $A003 ; Bow
|
|
||||||
dw $A0B8 ; Boomerang
|
|
||||||
dw $AB23 ; Hookshot
|
|
||||||
dw $A139 ; Bombs
|
|
||||||
dw $FFFF ; Powder / Mushroom
|
|
||||||
dw $9EEC ; Fire Rod
|
|
||||||
dw $9EEC ; Ice Rod
|
|
||||||
dw $A55E ; Bombos
|
|
||||||
dw $A489 ; Ether
|
|
||||||
dw $A640 ; Quake
|
|
||||||
dw $A246 ; Lamp
|
|
||||||
dw $9F82 ; Hammer
|
|
||||||
dw $FFFF ; Flute / Shovel
|
|
||||||
dw $AFEE ; Bug Net
|
|
||||||
dw $A46E ; Book
|
|
||||||
dw $FFFF ; Bottles
|
|
||||||
dw $AEBB ; Somaria
|
|
||||||
dw $FFFF ; Byrna
|
|
||||||
dw $FFFF ; Cape
|
|
||||||
dw $A913 ; Mirror
|
|
||||||
ValidItemOnB:
|
|
||||||
db $FF
|
|
||||||
db $00, $00, $00, $00, $FF
|
|
||||||
db $00, $00, $00, $00, $00
|
|
||||||
db $00, $00, $FF, $00, $00
|
|
||||||
db $FF, $00, $FF, $FF, $00
|
|
||||||
|
|
||||||
UseItem:
|
|
||||||
JSL CheckDetonateBomb : BCS .normal
|
|
||||||
|
|
||||||
LDA.l ItemOnB : BEQ .normal
|
|
||||||
TAX
|
|
||||||
LDA.b $6C : BNE .prevent_swing
|
|
||||||
CPX.b #$11 : BNE .not_somaria
|
|
||||||
LDA.w $02F5 : BNE .prevent_swing
|
|
||||||
.not_somaria
|
|
||||||
LDA.l ValidItemOnB, X : BNE .normal
|
|
||||||
LDA.b $3A : ORA.b #$40 : STA.b $3A
|
|
||||||
LDA.l $8DFA35, X : STA.w $0304
|
|
||||||
CPX.b #$06 : BEQ .fire_rod
|
|
||||||
CPX.b #$07 : BNE .not_rod
|
|
||||||
.ice_rod
|
|
||||||
LDA.b #$02 : STA.w $0307
|
|
||||||
BRA .not_rod
|
|
||||||
.fire_rod
|
|
||||||
LDA.b #$01 : STA.w $0307
|
|
||||||
.not_rod
|
|
||||||
TXA : DEC : ASL : TAX
|
|
||||||
LDA.l ItemHandlerLocs+1, X : STA.b $01
|
|
||||||
LDA.l ItemHandlerLocs, X : STA.b $00
|
|
||||||
JSL Link_UseItemLong
|
|
||||||
.prevent_swing
|
|
||||||
SEC
|
|
||||||
RTL
|
|
||||||
.normal
|
|
||||||
LDA.b #$80 : TSB.b $3A
|
|
||||||
LDA.b #$01 : TSB.b $50
|
|
||||||
CLC
|
|
||||||
RTL
|
|
||||||
@@ -238,10 +238,10 @@ endmacro
|
|||||||
%ReceiptProps($63, -4, 0, $FF, $F36A, $FF, skip, rng_multi) ; 63 - RNG pool item (multi)
|
%ReceiptProps($63, -4, 0, $FF, $F36A, $FF, skip, rng_multi) ; 63 - RNG pool item (multi)
|
||||||
%ReceiptProps($64, -4, 0, $FF, $F340, $FF, skip, progressive_bow) ; 64 - Progressive bow
|
%ReceiptProps($64, -4, 0, $FF, $F340, $FF, skip, progressive_bow) ; 64 - Progressive bow
|
||||||
%ReceiptProps($65, -4, 0, $FF, $F340, $FF, skip, progressive_bow_2) ; 65 - Progressive bow
|
%ReceiptProps($65, -4, 0, $FF, $F340, $FF, skip, progressive_bow_2) ; 65 - Progressive bow
|
||||||
%ReceiptProps($66, -4, 0, $FF, $F36A, $FF, skip, skip) ; 66 -
|
%ReceiptProps($66, -4, 0, $FF, $F36A, $FF, skip, skip) ; 66 -
|
||||||
%ReceiptProps($67, -4, 0, $FF, $F36A, $FF, skip, skip) ; 67 -
|
%ReceiptProps($67, -4, 0, $FF, $F36A, $FF, skip, skip) ; 67 -
|
||||||
%ReceiptProps($68, -4, 0, $FF, $F36A, $FF, skip, skip) ; 68 -
|
%ReceiptProps($68, -4, 0, $FF, $F36A, $FF, skip, skip) ; 68 -
|
||||||
%ReceiptProps($69, -4, 0, $FF, $F36A, $FF, skip, skip) ; 69 -
|
%ReceiptProps($69, -4, 0, $FF, $F36A, $FF, skip, skip) ; 69 -
|
||||||
%ReceiptProps($6A, -4, 0, $49, $F36A, $FF, triforce, skip) ; 6A - Triforce
|
%ReceiptProps($6A, -4, 0, $49, $F36A, $FF, triforce, skip) ; 6A - Triforce
|
||||||
%ReceiptProps($6B, -4, 0, $50, $F36A, $FF, goal_item, skip) ; 6B - Power star
|
%ReceiptProps($6B, -4, 0, $50, $F36A, $FF, goal_item, skip) ; 6B - Power star
|
||||||
%ReceiptProps($6C, -4, 0, $49, $F36A, $FF, goal_item, skip) ; 6C - Triforce Piece
|
%ReceiptProps($6C, -4, 0, $49, $F36A, $FF, goal_item, skip) ; 6C - Triforce Piece
|
||||||
@@ -328,9 +328,9 @@ endmacro
|
|||||||
%ReceiptProps($BD, -4, 0, $49, $F36A, $FF, skip, skip) ; BD -
|
%ReceiptProps($BD, -4, 0, $49, $F36A, $FF, skip, skip) ; BD -
|
||||||
%ReceiptProps($BE, -4, 0, $49, $F36A, $FF, skip, skip) ; BE -
|
%ReceiptProps($BE, -4, 0, $49, $F36A, $FF, skip, skip) ; BE -
|
||||||
%ReceiptProps($BF, -4, 0, $49, $F36A, $FF, skip, skip) ; BF -
|
%ReceiptProps($BF, -4, 0, $49, $F36A, $FF, skip, skip) ; BF -
|
||||||
%ReceiptProps($C0, -4, 0, $13, $F36A, $FF, prog_weapon, skip) ; C0 - Progressive Bombs
|
%ReceiptProps($C0, -4, 0, $49, $F36A, $FF, skip, skip) ; C0 -
|
||||||
%ReceiptProps($C1, -4, 4, $07, $F36A, $FF, prog_weapon, skip) ; C1 - Progressive Cane
|
%ReceiptProps($C1, -4, 0, $49, $F36A, $FF, skip, skip) ; C1 -
|
||||||
%ReceiptProps($C2, -4, 0, $27, $F36A, $FF, prog_weapon, skip) ; C2 - Progressive Bug Net
|
%ReceiptProps($C2, -4, 0, $49, $F36A, $FF, skip, skip) ; C2 -
|
||||||
%ReceiptProps($C3, -4, 0, $49, $F36A, $FF, skip, skip) ; C3 -
|
%ReceiptProps($C3, -4, 0, $49, $F36A, $FF, skip, skip) ; C3 -
|
||||||
%ReceiptProps($C4, -4, 0, $49, $F36A, $FF, skip, skip) ; C4 -
|
%ReceiptProps($C4, -4, 0, $49, $F36A, $FF, skip, skip) ; C4 -
|
||||||
%ReceiptProps($C5, -4, 0, $49, $F36A, $FF, skip, skip) ; C5 -
|
%ReceiptProps($C5, -4, 0, $49, $F36A, $FF, skip, skip) ; C5 -
|
||||||
@@ -397,11 +397,11 @@ endmacro
|
|||||||
; Palettes: l - - - - c c c
|
; Palettes: l - - - - c c c
|
||||||
; c = Color Index | l = Load palette data from ROM
|
; c = Color Index | l = Load palette data from ROM
|
||||||
SpriteProperties:
|
SpriteProperties:
|
||||||
.chest_width : fillbyte $00 : fill 256
|
.chest_width : fillbyte $00 : fill 256
|
||||||
.standing_width : fillbyte $00 : fill 256
|
.standing_width : fillbyte $00 : fill 256
|
||||||
.chest_palette : fillbyte $00 : fill 256
|
.chest_palette : fillbyte $00 : fill 256
|
||||||
.standing_palette : fillbyte $00 : fill 256
|
.standing_palette : fillbyte $00 : fill 256
|
||||||
.palette_addr : fillword $0000 : fill 256*2 ; bank $9B
|
.palette_addr : fillword $0000 : fill 256*2 ; bank $9B
|
||||||
|
|
||||||
macro SpriteProps(id, chest_width, standing_width, chest_pal, standing_pal, addr)
|
macro SpriteProps(id, chest_width, standing_width, chest_pal, standing_pal, addr)
|
||||||
pushpc
|
pushpc
|
||||||
@@ -607,9 +607,9 @@ endmacro
|
|||||||
%SpriteProps($BD, 2, 2, $04, $04, $0000) ; BD -
|
%SpriteProps($BD, 2, 2, $04, $04, $0000) ; BD -
|
||||||
%SpriteProps($BE, 2, 2, $04, $04, $0000) ; BE -
|
%SpriteProps($BE, 2, 2, $04, $04, $0000) ; BE -
|
||||||
%SpriteProps($BF, 2, 2, $04, $04, $0000) ; BF -
|
%SpriteProps($BF, 2, 2, $04, $04, $0000) ; BF -
|
||||||
%SpriteProps($C0, 2, 2, $FF, $FF, PalettesVanilla_blue_ice+$0E) ; C0 - Progressive Bombs
|
%SpriteProps($C0, 2, 2, $04, $04, $0000) ; C0 -
|
||||||
%SpriteProps($C1, 0, 0, $05, $05, PalettesCustom_red_shield) ; C1 - Progressive Cane
|
%SpriteProps($C1, 2, 2, $04, $04, $0000) ; C1 -
|
||||||
%SpriteProps($C2, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; C2 - Progressive Bug Net
|
%SpriteProps($C2, 2, 2, $04, $04, $0000) ; C2 -
|
||||||
%SpriteProps($C3, 2, 2, $04, $04, $0000) ; C3 -
|
%SpriteProps($C3, 2, 2, $04, $04, $0000) ; C3 -
|
||||||
%SpriteProps($C4, 2, 2, $04, $04, $0000) ; C4 -
|
%SpriteProps($C4, 2, 2, $04, $04, $0000) ; C4 -
|
||||||
%SpriteProps($C5, 2, 2, $04, $04, $0000) ; C5 -
|
%SpriteProps($C5, 2, 2, $04, $04, $0000) ; C5 -
|
||||||
@@ -686,8 +686,8 @@ InventoryTable:
|
|||||||
macro InventoryItem(id, props, stamp, stat)
|
macro InventoryItem(id, props, stamp, stat)
|
||||||
pushpc
|
pushpc
|
||||||
org InventoryTable_properties+<id>+<id> : dw <props>
|
org InventoryTable_properties+<id>+<id> : dw <props>
|
||||||
org InventoryTable_stamp+<id>+<id> : dw <stamp>
|
org InventoryTable_stamp+<id>+<id> : dw <stamp>
|
||||||
org InventoryTable_stat+<id>+<id> : dw <stat>
|
org InventoryTable_stat+<id>+<id> : dw <stat>
|
||||||
pullpc
|
pullpc
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
@@ -764,7 +764,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)
|
||||||
@@ -883,9 +883,9 @@ endmacro
|
|||||||
%InventoryItem($BD, $0001, $0000, $0000) ; BD -
|
%InventoryItem($BD, $0001, $0000, $0000) ; BD -
|
||||||
%InventoryItem($BE, $0001, $0000, $0000) ; BE -
|
%InventoryItem($BE, $0001, $0000, $0000) ; BE -
|
||||||
%InventoryItem($BF, $0001, $0000, $0000) ; BF -
|
%InventoryItem($BF, $0001, $0000, $0000) ; BF -
|
||||||
%InventoryItem($C0, $0015, SwordTime, $0000) ; C0 - Progressive Bombs
|
%InventoryItem($C0, $0001, $0000, $0000) ; C0 -
|
||||||
%InventoryItem($C1, $0085, SwordTime, $0000) ; C1 - Progressive Cane
|
%InventoryItem($C1, $0001, $0000, $0000) ; C1 -
|
||||||
%InventoryItem($C2, $0085, SwordTime, $0000) ; C2 - Progressive Bug Net
|
%InventoryItem($C2, $0001, $0000, $0000) ; C2 -
|
||||||
%InventoryItem($C3, $0001, $0000, $0000) ; C3 -
|
%InventoryItem($C3, $0001, $0000, $0000) ; C3 -
|
||||||
%InventoryItem($C4, $0001, $0000, $0000) ; C4 -
|
%InventoryItem($C4, $0001, $0000, $0000) ; C4 -
|
||||||
%InventoryItem($C5, $0001, $0000, $0000) ; C5 -
|
%InventoryItem($C5, $0001, $0000, $0000) ; C5 -
|
||||||
@@ -1147,9 +1147,9 @@ ItemReceiptGraphicsOffsets:
|
|||||||
dw $0 ; BD -
|
dw $0 ; BD -
|
||||||
dw $0 ; BE -
|
dw $0 ; BE -
|
||||||
dw $0 ; BF -
|
dw $0 ; BF -
|
||||||
dw BigDecompressionBuffer+$1080 ; C0 - Progressive Bombs
|
dw $0 ; C0 -
|
||||||
dw BigDecompressionBuffer+$1C40 ; C1 - Progressive Cane
|
dw $0 ; C1 -
|
||||||
dw BigDecompressionBuffer+$0860 ; C2 - Progressive Bug Net
|
dw $0 ; C2 -
|
||||||
dw $0 ; C3 -
|
dw $0 ; C3 -
|
||||||
dw $0 ; C4 -
|
dw $0 ; C4 -
|
||||||
dw $0 ; C5 -
|
dw $0 ; C5 -
|
||||||
@@ -1417,9 +1417,9 @@ StandingItemGraphicsOffsets:
|
|||||||
dw $0 ; BD -
|
dw $0 ; BD -
|
||||||
dw $0 ; BE -
|
dw $0 ; BE -
|
||||||
dw $0 ; BF -
|
dw $0 ; BF -
|
||||||
dw BigDecompressionBuffer+$1080 ; C0 - Progressive Bombs
|
dw $0 ; C0 -
|
||||||
dw BigDecompressionBuffer+$1C40 ; C1 - Progressive Cane
|
dw $0 ; C1 -
|
||||||
dw BigDecompressionBuffer+$0860 ; C2 - Progressive Bug Net
|
dw $0 ; C2 -
|
||||||
dw $0 ; C3 -
|
dw $0 ; C3 -
|
||||||
dw $0 ; C4 -
|
dw $0 ; C4 -
|
||||||
dw $0 ; C5 -
|
dw $0 ; C5 -
|
||||||
|
|||||||
@@ -4,29 +4,29 @@
|
|||||||
ItemDowngradeFix:
|
ItemDowngradeFix:
|
||||||
JSL.l AddInventory
|
JSL.l AddInventory
|
||||||
BMI .dontWrite ; thing we wrote over part 1
|
BMI .dontWrite ; thing we wrote over part 1
|
||||||
|
|
||||||
CPY.b #$1B : BEQ .isPowerGloves ; Power Gloves
|
CPY.b #$1B : BEQ .isPowerGloves ; Power Gloves
|
||||||
CPY.b #$05 : BEQ .isRedShield ; Red Shield
|
CPY.b #$05 : BEQ .isRedShield ; Red Shield
|
||||||
CPY.b #$04 : BEQ .isBlueShield ; Blue Shield
|
CPY.b #$04 : BEQ .isBlueShield ; Blue Shield
|
||||||
CPY.b #$0C : BEQ .isBlueBoomerang ; Blue Boomerang
|
CPY.b #$0C : BEQ .isBlueBoomerang ; Blue Boomerang
|
||||||
CPY.b #$0B : BEQ .isBow ; Bow
|
CPY.b #$0B : BEQ .isBow ; Bow
|
||||||
CPY.b #$3A : BEQ .isBowAndArrows ; Bow
|
CPY.b #$3A : BEQ .isBowAndArrows ; Bow
|
||||||
|
|
||||||
CPY.b #$49 : BEQ .isSword ; Fighter's Sword
|
CPY.b #$49 : BEQ .isSword ; Fighter's Sword
|
||||||
CPY.b #$01 : BEQ .isSword ; Master Sword
|
CPY.b #$01 : BEQ .isSword ; Master Sword
|
||||||
CPY.b #$50 : BEQ .isSword ; Master Sword (Safe)
|
CPY.b #$50 : BEQ .isSword ; Master Sword (Safe)
|
||||||
CPY.b #$02 : BEQ .isSword ; Tempered Sword
|
CPY.b #$02 : BEQ .isSword ; Tempered Sword
|
||||||
|
|
||||||
CPY.b #$3B : BEQ .isSilverArrowBow ; Silver Arrow Bow
|
CPY.b #$3B : BEQ .isSilverArrowBow ; Silver Arrow Bow
|
||||||
CPY.b #$2A : BEQ .isRedBoomerang ; Red Boomerang
|
CPY.b #$2A : BEQ .isRedBoomerang ; Red Boomerang
|
||||||
CPY.b #$0D : BEQ .isMagicPowder ; Magic Powder
|
CPY.b #$0D : BEQ .isMagicPowder ; Magic Powder
|
||||||
CPY.b #$14 : BEQ .isFlute ; Flute
|
CPY.b #$14 : BEQ .isFlute ; Flute
|
||||||
CPY.b #$13 : BEQ .isShovel ; Shovel
|
CPY.b #$13 : BEQ .isShovel ; Shovel
|
||||||
CPY.b #$29 : BEQ .isMushroom ; Mushroom
|
CPY.b #$29 : BEQ .isMushroom ; Mushroom
|
||||||
|
|
||||||
CPY.b #$00 : BEQ .isUncleSwordShield ; Fighter's Sword & Shield
|
CPY.b #$00 : BEQ .isUncleSwordShield ; Fighter's Sword & Shield
|
||||||
|
|
||||||
.done
|
.done
|
||||||
STA.b [Scrap00] ; thing we wrote over part 2
|
STA.b [Scrap00] ; thing we wrote over part 2
|
||||||
.dontWrite
|
.dontWrite
|
||||||
RTL
|
RTL
|
||||||
@@ -55,7 +55,7 @@ RTL
|
|||||||
RTL
|
RTL
|
||||||
.isSword
|
.isSword
|
||||||
PHA
|
PHA
|
||||||
LDA.l HighestSword : STA.b Scrap04
|
LDA.l HighestSword : STA.b Scrap04
|
||||||
TYA ; load sword item
|
TYA ; load sword item
|
||||||
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
||||||
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
||||||
@@ -66,11 +66,11 @@ RTL
|
|||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
JMP .done
|
JMP .done
|
||||||
.isUncleSwordShield
|
.isUncleSwordShield
|
||||||
PHA
|
PHA
|
||||||
LDA.l HighestSword : STA.b [Scrap00] ; already set to 1 if we had no sword, always keep highest
|
LDA.l HighestSword : STA.b [Scrap00] ; already set to 1 if we had no sword, always keep highest
|
||||||
INC.b Scrap00
|
INC.b Scrap00
|
||||||
LDA.l HighestShield : STA.b [Scrap00]
|
LDA.l HighestShield : STA.b [Scrap00]
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
132
itemtext.asm
132
itemtext.asm
@@ -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
|
||||||
|
|||||||
@@ -5,28 +5,28 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LampCheck:
|
LampCheck:
|
||||||
LDA.l LightConeModifier : CMP.b #$01 : BNE + : RTL : +
|
LDA.l LightConeModifier : CMP.b #$01 : BNE + : RTL : +
|
||||||
CMP.b #$FF : BNE + : INC : RTL : +
|
CMP.b #$FF : BNE + : INC : RTL : +
|
||||||
LDA.l LampEquipment : BNE .lamp ; skip if we already have lantern
|
LDA.l LampEquipment : BNE .lamp ; skip if we already have lantern
|
||||||
LDA.w DungeonID : BNE + ; check if we're in sewers
|
LDA.w DungeonID : BNE + ; check if we're in sewers
|
||||||
LDA.l LampConeSewers : RTL
|
LDA.l LampConeSewers : RTL
|
||||||
+ : TDC
|
+ : TDC
|
||||||
.lamp
|
.lamp
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Output: 0 locked, 1 open
|
; Output: 0 locked, 1 open
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckForZelda:
|
CheckForZelda:
|
||||||
LDA.l ProgressIndicator : CMP.b #$02 : !BLT + ; Skip if rain is falling
|
LDA.l ProgressIndicator : CMP.b #$02 : !BLT + ; Skip if rain is falling
|
||||||
LDA.b #$01 ; pretend we have zelda anyway
|
LDA.b #$01 ; pretend we have zelda anyway
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.l FollowerIndicator
|
LDA.l FollowerIndicator
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
SetOverlayIfLamp:
|
SetOverlayIfLamp:
|
||||||
JSL.l LampCheck
|
JSL.l LampCheck
|
||||||
STA.b SUBDESQ ; write it directly to the overlay, this isn't a terrible idea at all
|
STA.b SUBDESQ ; write it directly to the overlay, this isn't a terrible idea at all
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Mantle Object Changes
|
; Mantle Object Changes
|
||||||
|
|||||||
90
msu.asm
90
msu.asm
@@ -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
|
||||||
++
|
++
|
||||||
|
|
||||||
@@ -240,7 +240,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 #$00 : BEQ +
|
- : CPY #$00 : BEQ +
|
||||||
LSR : DEY : BRA -
|
LSR : DEY : BRA -
|
||||||
@@ -348,7 +348,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
|
||||||
@@ -401,10 +401,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
|
||||||
|
|
||||||
@@ -431,7 +431,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
|
||||||
@@ -453,7 +453,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 +
|
||||||
@@ -474,11 +474,11 @@ 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 #$00FF : BEQ ++
|
LDA.l MSUResumeTrack : AND #$00FF : BEQ ++
|
||||||
LDA.l NMIFrames : !SUB MSUResumeTime : PHA
|
LDA.l NMIFrames : !SUB MSUResumeTime : PHA
|
||||||
LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE +++
|
LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE +++
|
||||||
PLA : CMP.l MSUResumeTimer : !BLT .too_early
|
PLA : CMP.l MSUResumeTimer : !BLT .too_early
|
||||||
@@ -487,12 +487,12 @@ PHA : XBA : PHA
|
|||||||
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
|
||||||
@@ -523,23 +523,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 ++
|
||||||
+
|
+
|
||||||
@@ -551,17 +551,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 #$00 : BEQ +
|
- : CPY #$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:
|
||||||
@@ -624,9 +624,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
|
||||||
@@ -639,11 +639,11 @@ 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 MSUResumeTime : PHA
|
LDA.l NMIFrames : !SUB MSUResumeTime : PHA
|
||||||
LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE ++
|
LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE ++
|
||||||
@@ -656,8 +656,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 #07 : BNE + ; Kakariko Village
|
CPX #07 : BNE + ; Kakariko Village
|
||||||
LDA.b GameMode : CMP #$07 : BNE +
|
LDA.b GameMode : CMP #$07 : BNE +
|
||||||
@@ -667,12 +667,12 @@ MSUMain:
|
|||||||
+
|
+
|
||||||
TXA
|
TXA
|
||||||
++
|
++
|
||||||
STA.w MSULoadedTrack
|
STA.l MSULoadedTrack
|
||||||
STX.w CurrentMSUTrack
|
STX.w CurrentMSUTrack
|
||||||
LDA.w MSUPackCurrent : CMP #$FE : !BLT +
|
LDA.l MSUPackCurrent : CMP #$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 +
|
||||||
@@ -722,9 +722,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 #$FE : !BGE .spc
|
LDA.l MSUPackCurrent : CMP #$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
|
||||||
@@ -746,9 +746,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
|
||||||
|
|||||||
481
newhud.asm
481
newhud.asm
@@ -5,158 +5,151 @@
|
|||||||
!CTile = $295F
|
!CTile = $295F
|
||||||
|
|
||||||
NewDrawHud:
|
NewDrawHud:
|
||||||
PHB
|
PHB
|
||||||
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
REP #$10
|
REP #$10
|
||||||
|
|
||||||
LDA.b #$7E
|
LDA.b #$7E
|
||||||
PHA : PLB
|
PHA : PLB
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DrawBombs:
|
NewHUD_DrawBombs:
|
||||||
LDA.l InfiniteBombs : BNE .infinite
|
LDA.l InfiniteBombs : BEQ .finite
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP #$01 : BNE .normal
|
|
||||||
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
|
||||||
|
|
||||||
.infinite
|
.infinite
|
||||||
LDY.w #!InfiniteTile+0
|
LDY.w #!InfiniteTile+0
|
||||||
LDX.w #!InfiniteTile+1
|
LDX.w #!InfiniteTile+1
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.no_bombs
|
.finite
|
||||||
LDY.w #!BlankTile
|
LDA.w BombsEquipment
|
||||||
LDX.w #!BlankTile
|
JSR HUDHex2Digit
|
||||||
BRA .draw
|
|
||||||
|
|
||||||
.normal
|
|
||||||
LDA.w BombsEquipment
|
|
||||||
JSR HUDHex2Digit
|
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
STY.w HUDBombCount+0
|
STY.w HUDBombCount+0
|
||||||
STX.w HUDBombCount+2
|
STX.w HUDBombCount+2
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DrawRupees:
|
NewHUD_DrawRupees:
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
LDA.w DisplayRupees
|
LDA.w DisplayRupees
|
||||||
JSR HUDHex4Digit
|
JSR HUDHex4Digit
|
||||||
|
|
||||||
LDA.b Scrap04 : TAX : STX.w HUDRupees+0 ; 1000s
|
LDA.b Scrap04 : TAX : STX.w HUDRupees+0 ; 1000s
|
||||||
LDA.b Scrap05 : TAX : STX.w HUDRupees+2 ; 100s
|
LDA.b Scrap05 : TAX : STX.w HUDRupees+2 ; 100s
|
||||||
LDA.b Scrap06 : TAX : STX.w HUDRupees+4 ; 10s
|
LDA.b Scrap06 : TAX : STX.w HUDRupees+4 ; 10s
|
||||||
LDA.b Scrap07 : TAX : STX.w HUDRupees+6 ; 1s
|
LDA.b Scrap07 : TAX : STX.w HUDRupees+6 ; 1s
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DrawArrows:
|
NewHUD_DrawArrows:
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
LDA.l ArrowMode : BNE NewHUD_DrawGoal
|
LDA.l ArrowMode : BNE NewHUD_DrawGoal
|
||||||
LDA.l InfiniteArrows : BEQ .finite
|
LDA.l InfiniteArrows : BEQ .finite
|
||||||
|
|
||||||
.infinite
|
.infinite
|
||||||
LDY.w #!InfiniteTile+0
|
LDY.w #!InfiniteTile+0
|
||||||
LDX.w #!InfiniteTile+1
|
LDX.w #!InfiniteTile+1
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.finite
|
.finite
|
||||||
LDA.w CurrentArrows
|
LDA.w CurrentArrows
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
STY.w HUDArrowCount+0
|
STY.w HUDArrowCount+0
|
||||||
STX.w HUDArrowCount+2
|
STX.w HUDArrowCount+2
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
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
|
||||||
LDA.w #!SlashTile : STA.w HUDGoalIndicator+8
|
LDA.w #!SlashTile : STA.w HUDGoalIndicator+8
|
||||||
LDA.l GoalCounter
|
LDA.l GoalCounter
|
||||||
JSR HUDHex4Digit
|
JSR HUDHex4Digit
|
||||||
|
|
||||||
LDA.b Scrap05 : TAX : STX.w HUDGoalIndicator+2 ; draw 100's digit
|
LDA.b Scrap05 : TAX : STX.w HUDGoalIndicator+2 ; draw 100's digit
|
||||||
LDA.b Scrap06 : TAX : STX.w HUDGoalIndicator+4 ; draw 10's digit
|
LDA.b Scrap06 : TAX : STX.w HUDGoalIndicator+4 ; draw 10's digit
|
||||||
LDA.b Scrap07 : TAX : STX.w HUDGoalIndicator+6 ; draw 1's digit
|
LDA.b Scrap07 : TAX : STX.w HUDGoalIndicator+6 ; draw 1's digit
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
LDA.l GoalItemRequirement : CMP.w #$FFFF : BNE .real_goal
|
LDA.l GoalItemRequirement : CMP.w #$FFFF : BNE .real_goal
|
||||||
|
|
||||||
LDX.w #!BlankTile
|
LDX.w #!BlankTile
|
||||||
STX.w HUDGoalIndicator+10
|
STX.w HUDGoalIndicator+10
|
||||||
STX.w HUDGoalIndicator+12
|
STX.w HUDGoalIndicator+12
|
||||||
STX.w HUDGoalIndicator+14
|
STX.w HUDGoalIndicator+14
|
||||||
|
|
||||||
.no_goal
|
.no_goal
|
||||||
SEP #$20
|
SEP #$20
|
||||||
BRA NewHUD_DrawKeys
|
BRA NewHUD_DrawKeys
|
||||||
|
|
||||||
.real_goal
|
.real_goal
|
||||||
JSR HUDHex4Digit
|
JSR HUDHex4Digit
|
||||||
|
|
||||||
LDA.b Scrap05 : TAX : STX.w HUDGoalIndicator+10 ; draw 100's digit
|
LDA.b Scrap05 : TAX : STX.w HUDGoalIndicator+10 ; draw 100's digit
|
||||||
LDA.b Scrap06 : TAX : STX.w HUDGoalIndicator+12 ; draw 10's digit
|
LDA.b Scrap06 : TAX : STX.w HUDGoalIndicator+12 ; draw 10's digit
|
||||||
LDA.b Scrap07 : TAX : STX.w HUDGoalIndicator+14 ; draw 1's digit
|
LDA.b Scrap07 : TAX : STX.w HUDGoalIndicator+14 ; draw 1's digit
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DrawKeys:
|
NewHUD_DrawKeys:
|
||||||
LDA.l CurrentSmallKeys
|
LDA.l CurrentSmallKeys
|
||||||
CMP.b #$FF
|
CMP.b #$FF
|
||||||
BNE .in_dungeon
|
BNE .in_dungeon
|
||||||
|
|
||||||
LDY.w #!BlankTile
|
LDY.w #!BlankTile
|
||||||
STY.w HUDKeyIcon
|
STY.w HUDKeyIcon
|
||||||
STY.w HUDKeyDigits+0
|
STY.w HUDKeyDigits+0
|
||||||
STY.w HUDKeyDigits+2
|
STY.w HUDKeyDigits+2
|
||||||
BRA NewHUD_DrawDungeonCounters
|
BRA NewHUD_DrawDungeonCounters
|
||||||
|
|
||||||
.in_dungeon
|
.in_dungeon
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
CPY.w #$2490
|
CPY.w #$2490
|
||||||
BNE .real_10s
|
BNE .real_10s
|
||||||
|
|
||||||
LDY.w #!BlankTile
|
LDY.w #!BlankTile
|
||||||
|
|
||||||
.real_10s
|
.real_10s
|
||||||
STY.w HUDKeyDigits+0
|
STY.w HUDKeyDigits+0
|
||||||
STX.w HUDKeyDigits+2
|
STX.w HUDKeyDigits+2
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
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.w NewHUD_DrawMagicMeter
|
JMP.w NewHUD_DrawMagicMeter
|
||||||
+
|
+
|
||||||
SEP #$30
|
SEP #$30
|
||||||
; extra hard safeties for getting dungeon ID to prevent crashes
|
; extra hard safeties for getting dungeon ID to prevent crashes
|
||||||
LDA.w DungeonID
|
LDA.w DungeonID
|
||||||
CMP.b #$1B : BCS NewHUD_DrawPrizeIcon ; Skip if not in a valid dungeon ID
|
CMP.b #$1B : BCS NewHUD_DrawPrizeIcon ; Skip if not in a valid dungeon ID
|
||||||
AND.b #$FE : TAX
|
AND.b #$FE : TAX
|
||||||
LSR : TAY
|
LSR : TAY
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
|
|
||||||
JSR.w DrawCompassCounts
|
JSR.w DrawCompassCounts
|
||||||
SEP #$10
|
SEP #$10
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
JSR.w DrawMapCounts
|
JSR.w DrawMapCounts
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DrawPrizeIcon:
|
NewHUD_DrawPrizeIcon:
|
||||||
REP #$10
|
REP #$10
|
||||||
SEP #$20
|
SEP #$20
|
||||||
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
|
||||||
CMP.b #$04 : BCC .no_prize
|
CMP.b #$04 : BCC .no_prize
|
||||||
CMP.b #$08 : BNE .dungeon
|
CMP.b #$08 : BNE .dungeon
|
||||||
@@ -173,17 +166,17 @@ NewHUD_DrawPrizeIcon:
|
|||||||
LDA.l MapMode
|
LDA.l MapMode
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
BEQ .prize
|
BEQ .prize
|
||||||
|
|
||||||
LDA.l MapField
|
LDA.l MapField
|
||||||
AND.l DungeonItemMasks,X
|
AND.l DungeonItemMasks,X
|
||||||
BEQ .no_prize
|
BEQ .no_prize
|
||||||
|
|
||||||
.prize
|
.prize
|
||||||
TYX
|
TYX
|
||||||
LDA.l CrystalPendantFlags_2,X
|
LDA.l CrystalPendantFlags_2,X
|
||||||
BIT.w #$0080
|
BIT.w #$0080
|
||||||
BNE .no_icon
|
BNE .no_icon
|
||||||
|
|
||||||
BIT.w #$0040
|
BIT.w #$0040
|
||||||
BNE .crystal
|
BNE .crystal
|
||||||
@@ -193,159 +186,159 @@ NewHUD_DrawPrizeIcon:
|
|||||||
|
|
||||||
.crystal
|
.crystal
|
||||||
LDY.w #!CTile
|
LDY.w #!CTile
|
||||||
BRA .draw_prize
|
BRA .draw_prize
|
||||||
|
|
||||||
.no_icon
|
.no_icon
|
||||||
LDY.w #!BlankTile
|
LDY.w #!BlankTile
|
||||||
|
|
||||||
.draw_prize
|
.draw_prize
|
||||||
STY.w HUDPrizeIcon
|
STY.w HUDPrizeIcon
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DrawItemCounter:
|
NewHUD_DrawItemCounter:
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w UpdateHUDFlag : BEQ NewHUD_DrawMagicMeter
|
LDA.l UpdateHUDFlag : BEQ NewHUD_DrawMagicMeter
|
||||||
LDA.l ItemCounterHUD : AND.w #$00FF : BEQ NewHUD_DrawMagicMeter
|
LDA.l ItemCounterHUD : AND.w #$00FF : BEQ NewHUD_DrawMagicMeter
|
||||||
LDA.w #!SlashTile : STA.w HUDGoalIndicator+$08
|
LDA.w #!SlashTile : STA.w HUDGoalIndicator+$08
|
||||||
LDA.l TotalItemCount : CMP.w #1000 : BCS .item_four_digits
|
LDA.l TotalItemCount : CMP.w #1000 : BCS .item_four_digits
|
||||||
LDA.w TotalItemCountTiles+$02 : STA.w HUDGoalIndicator+$0A
|
LDA.w TotalItemCountTiles+$02 : STA.w HUDGoalIndicator+$0A
|
||||||
LDA.w TotalItemCountTiles+$04 : STA.w HUDGoalIndicator+$0C
|
LDA.w TotalItemCountTiles+$04 : STA.w HUDGoalIndicator+$0C
|
||||||
LDA.w TotalItemCountTiles+$06 : STA.w HUDGoalIndicator+$0E
|
LDA.w TotalItemCountTiles+$06 : STA.w HUDGoalIndicator+$0E
|
||||||
|
|
||||||
LDA.w TotalItemCounter
|
LDA.w TotalItemCounter
|
||||||
JSR.w HUDHex4Digit
|
JSR.w HUDHex4Digit
|
||||||
LDA.b $05 : TAX : STX.w HUDGoalIndicator+$02
|
LDA.b $05 : TAX : STX.w HUDGoalIndicator+$02
|
||||||
LDA.b $06 : TAX : STX.w HUDGoalIndicator+$04
|
LDA.b $06 : TAX : STX.w HUDGoalIndicator+$04
|
||||||
LDA.b $07 : TAX : STX.w HUDGoalIndicator+$06
|
LDA.b $07 : TAX : STX.w HUDGoalIndicator+$06
|
||||||
BRA NewHUD_DrawMagicMeter
|
BRA NewHUD_DrawMagicMeter
|
||||||
|
|
||||||
.item_four_digits
|
.item_four_digits
|
||||||
LDA.w TotalItemCountTiles+$00 : STA.w HUDGoalIndicator+$0A
|
LDA.w TotalItemCountTiles+$00 : STA.w HUDGoalIndicator+$0A
|
||||||
LDA.w TotalItemCountTiles+$02 : STA.w HUDGoalIndicator+$0C
|
LDA.w TotalItemCountTiles+$02 : STA.w HUDGoalIndicator+$0C
|
||||||
LDA.w TotalItemCountTiles+$04 : STA.w HUDGoalIndicator+$0E
|
LDA.w TotalItemCountTiles+$04 : STA.w HUDGoalIndicator+$0E
|
||||||
LDA.w TotalItemCountTiles+$06 : STA.w HUDGoalIndicator+$10
|
LDA.w TotalItemCountTiles+$06 : STA.w HUDGoalIndicator+$10
|
||||||
|
|
||||||
LDA.w TotalItemCounter
|
LDA.w TotalItemCounter
|
||||||
JSR.w HUDHex4Digit
|
JSR.w HUDHex4Digit
|
||||||
LDA.b $04 : TAX : STX.w HUDGoalIndicator+$00
|
LDA.b $04 : TAX : STX.w HUDGoalIndicator+$00
|
||||||
LDA.b $05 : TAX : STX.w HUDGoalIndicator+$02
|
LDA.b $05 : TAX : STX.w HUDGoalIndicator+$02
|
||||||
LDA.b $06 : TAX : STX.w HUDGoalIndicator+$04
|
LDA.b $06 : TAX : STX.w HUDGoalIndicator+$04
|
||||||
LDA.b $07 : TAX : STX.w HUDGoalIndicator+$06
|
LDA.b $07 : TAX : STX.w HUDGoalIndicator+$06
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
DrawMagicMeter_mp_tilemap = $0DFE0F
|
DrawMagicMeter_mp_tilemap = $0DFE0F
|
||||||
NewHUD_DrawMagicMeter:
|
NewHUD_DrawMagicMeter:
|
||||||
SEP #$31
|
SEP #$31
|
||||||
LDA.l CurrentMagic
|
LDA.l CurrentMagic
|
||||||
ADC.b #$06 ; carry set by above for +1 to get +7
|
ADC.b #$06 ; carry set by above for +1 to get +7
|
||||||
AND.b #$F8
|
AND.b #$F8
|
||||||
TAY
|
TAY
|
||||||
|
|
||||||
LDA.l InfiniteMagic
|
LDA.l InfiniteMagic
|
||||||
BEQ .set_index
|
BEQ .set_index
|
||||||
|
|
||||||
.infinite_magic
|
.infinite_magic
|
||||||
LDA.b #$80
|
LDA.b #$80
|
||||||
STA.w CurrentMagic
|
STA.w CurrentMagic
|
||||||
TAY
|
TAY
|
||||||
|
|
||||||
LDA.b FrameCounter
|
LDA.b FrameCounter
|
||||||
REP #$30
|
REP #$30
|
||||||
AND.w #$000C
|
AND.w #$000C
|
||||||
LSR
|
LSR
|
||||||
BRA .recolor
|
BRA .recolor
|
||||||
|
|
||||||
.set_index ; this branch is always 0000 when taken
|
.set_index ; this branch is always 0000 when taken
|
||||||
REP #$30
|
REP #$30
|
||||||
TDC
|
TDC
|
||||||
.recolor
|
.recolor
|
||||||
TAX
|
TAX
|
||||||
LDA.l MagicMeterColorMasks,X
|
LDA.l MagicMeterColorMasks,X
|
||||||
|
|
||||||
TYX
|
TYX
|
||||||
TAY : AND.l DrawMagicMeter_mp_tilemap+0,X : STA.w HUDTileMapBuffer+$046
|
TAY : AND.l DrawMagicMeter_mp_tilemap+0,X : STA.w HUDTileMapBuffer+$046
|
||||||
TYA : AND.l DrawMagicMeter_mp_tilemap+2,X : STA.w HUDTileMapBuffer+$086
|
TYA : AND.l DrawMagicMeter_mp_tilemap+2,X : STA.w HUDTileMapBuffer+$086
|
||||||
TYA : AND.l DrawMagicMeter_mp_tilemap+4,X : STA.w HUDTileMapBuffer+$0C6
|
TYA : AND.l DrawMagicMeter_mp_tilemap+4,X : STA.w HUDTileMapBuffer+$0C6
|
||||||
TYA : AND.l DrawMagicMeter_mp_tilemap+6,X : STA.w HUDTileMapBuffer+$106
|
TYA : AND.l DrawMagicMeter_mp_tilemap+6,X : STA.w HUDTileMapBuffer+$106
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DoneDrawing:
|
NewHUD_DoneDrawing:
|
||||||
STZ.w UpdateHUDFlag
|
LDA.w #$0000 : STA.l UpdateHUDFlag
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
MagicMeterColorMasks:
|
MagicMeterColorMasks:
|
||||||
dw $FFFF ; green - KEEP GREEN FIRST
|
dw $FFFF ; green - KEEP GREEN FIRST
|
||||||
dw $EFFF ; blue
|
dw $EFFF ; blue
|
||||||
dw $E7FF ; red
|
dw $E7FF ; red
|
||||||
dw $EBFF ; yellow
|
dw $EBFF ; yellow
|
||||||
dw $E3FF ; orange
|
dw $E3FF ; orange
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
DrawCompassCounts:
|
DrawCompassCounts:
|
||||||
LDA.l CompassMode : BEQ .done
|
LDA.l CompassMode : BEQ .done
|
||||||
|
|
||||||
; no compass needed if this bit is set
|
; no compass needed if this bit is set
|
||||||
BIT.b #$02 : BNE .draw_compass_count
|
BIT.b #$02 : BNE .draw_compass_count
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l CompassField : AND.l DungeonItemMasks,X : BEQ .done
|
LDA.l CompassField : AND.l DungeonItemMasks,X : BEQ .done
|
||||||
|
|
||||||
.draw_compass_count
|
.draw_compass_count
|
||||||
SEP #$20
|
SEP #$20
|
||||||
TYX : BNE .not_sewers
|
TYX : BNE .not_sewers
|
||||||
INX
|
INX
|
||||||
|
|
||||||
.not_sewers
|
.not_sewers
|
||||||
LDA.l DungeonLocationsChecked, X
|
LDA.l DungeonLocationsChecked, X
|
||||||
PHA
|
PHA
|
||||||
|
|
||||||
LDA.l CompassTotalsWRAM,X
|
LDA.l CompassTotalsWRAM,X
|
||||||
|
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
STY.w HUDTileMapBuffer+$9A : STX.w HUDTileMapBuffer+$9C
|
STY.w HUDTileMapBuffer+$9A : STX.w HUDTileMapBuffer+$9C
|
||||||
|
|
||||||
LDX.w #!BlankTile : STX.w HUDTileMapBuffer+$92
|
LDX.w #!BlankTile : STX.w HUDTileMapBuffer+$92
|
||||||
LDX.w #!SlashTile : STX.w HUDTileMapBuffer+$98
|
LDX.w #!SlashTile : STX.w HUDTileMapBuffer+$98
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
STY.w HUDTileMapBuffer+$94 : STX.w HUDTileMapBuffer+$96
|
STY.w HUDTileMapBuffer+$94 : STX.w HUDTileMapBuffer+$96
|
||||||
|
|
||||||
.done
|
.done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
DrawMapCounts:
|
DrawMapCounts:
|
||||||
LDA.l MapHUDMode : BEQ .done
|
LDA.l MapHUDMode : BEQ .done
|
||||||
|
|
||||||
; no map needed if this bit is set
|
; no map needed if this bit is set
|
||||||
BIT.b #$02 : BNE .draw_map_count
|
BIT.b #$02 : BNE .draw_map_count
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l MapField : AND.l DungeonItemMasks,X : BEQ .done
|
LDA.l MapField : AND.l DungeonItemMasks,X : BEQ .done
|
||||||
|
|
||||||
.draw_map_count
|
.draw_map_count
|
||||||
SEP #$20
|
SEP #$20
|
||||||
TYX : BNE .not_sewers
|
TYX : BNE .not_sewers
|
||||||
INX
|
INX
|
||||||
|
|
||||||
.not_sewers
|
.not_sewers
|
||||||
LDA.l DungeonCollectedKeys, X
|
LDA.l DungeonCollectedKeys, X
|
||||||
PHA
|
PHA
|
||||||
|
|
||||||
LDA.l MapTotalsWRAM,X
|
LDA.l MapTotalsWRAM,X
|
||||||
|
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
STX.w HUDTileMapBuffer+$A6
|
STX.w HUDTileMapBuffer+$A6
|
||||||
|
|
||||||
LDX.w #!SlashTile : STX.w HUDTileMapBuffer+$A4
|
LDX.w #!SlashTile : STX.w HUDTileMapBuffer+$A4
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
STX.w HUDTileMapBuffer+$A2
|
STX.w HUDTileMapBuffer+$A2
|
||||||
|
|
||||||
.done
|
.done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -355,41 +348,41 @@ RTS
|
|||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
HUDHex2Digit:
|
HUDHex2Digit:
|
||||||
SEP #$30 ; clear high byte of X and Y and make it so they don't get B
|
SEP #$30 ; clear high byte of X and Y and make it so they don't get B
|
||||||
ASL : TAX
|
ASL : TAX
|
||||||
|
|
||||||
REP #$10
|
REP #$10
|
||||||
|
|
||||||
LDA.b #$24 : XBA ; tile props in high byte
|
LDA.b #$24 : XBA ; tile props in high byte
|
||||||
|
|
||||||
LDA.l FastHexTable,X : LSR #4 : ORA.b #$90
|
LDA.l FastHexTable,X : LSR #4 : ORA.b #$90
|
||||||
TAY
|
TAY
|
||||||
|
|
||||||
LDA.l FastHexTable,X : AND.b #$0F : ORA.b #$90
|
LDA.l FastHexTable,X : AND.b #$0F : ORA.b #$90
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
HUDHex4Digit:
|
HUDHex4Digit:
|
||||||
JSL HexToDec
|
JSL HexToDec
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
LDA.l HexToDecDigit2 : ORA.w #$9090 : STA.b Scrap04
|
LDA.l HexToDecDigit2 : ORA.w #$9090 : STA.b Scrap04
|
||||||
LDA.l HexToDecDigit4 : ORA.w #$9090 : STA.b Scrap06
|
LDA.l HexToDecDigit4 : ORA.w #$9090 : STA.b Scrap06
|
||||||
|
|
||||||
LDA.w #$2400
|
LDA.w #$2400
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
HUDHex2Digit_Long:
|
HUDHex2Digit_Long:
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
REP #$20
|
REP #$20
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
HUDHex4Digit_Long:
|
HUDHex4Digit_Long:
|
||||||
JSR HUDHex4Digit
|
JSR HUDHex4Digit
|
||||||
REP #$20
|
REP #$20
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -421,11 +414,11 @@ UpdateHearts:
|
|||||||
CPX.b #$01
|
CPX.b #$01
|
||||||
BMI .done_hearts
|
BMI .done_hearts
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
PLX
|
PLX
|
||||||
ORA.w #$20A0
|
ORA.w #$20A0
|
||||||
|
|
||||||
CPY.b #$01
|
CPY.b #$01
|
||||||
BPL .add_heart
|
BPL .add_heart
|
||||||
@@ -467,16 +460,16 @@ UpdateHearts:
|
|||||||
CMP.w #$0005
|
CMP.w #$0005
|
||||||
BCS .more_than_half
|
BCS .more_than_half
|
||||||
|
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
ORA.w #$20A1
|
ORA.w #$20A1
|
||||||
STA.b ($09)
|
STA.b ($09)
|
||||||
BRA .skip_partial
|
BRA .skip_partial
|
||||||
|
|
||||||
.more_than_half
|
.more_than_half
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
ORA.w #$20A0
|
ORA.w #$20A0
|
||||||
STA.b ($09)
|
STA.b ($09)
|
||||||
|
|
||||||
.skip_partial
|
.skip_partial
|
||||||
@@ -486,29 +479,29 @@ UpdateHearts:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
CheckHeartPaletteFileSelect:
|
CheckHeartPaletteFileSelect:
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_file_select,X
|
LDA.l HUDHeartColors_masks_file_select,X
|
||||||
ORA.w #$0200
|
ORA.w #$0200
|
||||||
LDX.w #$000A
|
LDX.w #$000A
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
CheckHeartPalette:
|
CheckHeartPalette:
|
||||||
PHX
|
PHX
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
ORA.w #$20A0
|
ORA.w #$20A0
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
ColorAnimatedHearts:
|
ColorAnimatedHearts:
|
||||||
PHX
|
PHX
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
PLX
|
PLX
|
||||||
ORA.l HeartFramesBaseTiles,X
|
ORA.l HeartFramesBaseTiles,X
|
||||||
STA.b [Scrap00],Y
|
STA.b [Scrap00],Y
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
HeartFramesBaseTiles:
|
HeartFramesBaseTiles:
|
||||||
|
|||||||
1427
newitems.asm
Executable file → Normal file
1427
newitems.asm
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -34,7 +34,6 @@ QuickSwap:
|
|||||||
CPX.b #$01 : BEQ + ; bow
|
CPX.b #$01 : BEQ + ; bow
|
||||||
CPX.b #$05 : BEQ + ; powder
|
CPX.b #$05 : BEQ + ; powder
|
||||||
CPX.b #$0D : BEQ + ; flute
|
CPX.b #$0D : BEQ + ; flute
|
||||||
CPX.b #$0E : BEQ + ; bug net
|
|
||||||
CPX.b #$10 : BEQ + ; bottle
|
CPX.b #$10 : BEQ + ; bottle
|
||||||
BRA .store
|
BRA .store
|
||||||
+ STX.w ItemCursor : JSL ProcessMenuButtons_y_pressed
|
+ STX.w ItemCursor : JSL ProcessMenuButtons_y_pressed
|
||||||
@@ -60,10 +59,10 @@ RCode:
|
|||||||
-
|
-
|
||||||
+ CPX.b #$14 : BNE + : LDX.b #$00 ;will wrap around to 1
|
+ CPX.b #$14 : BNE + : LDX.b #$00 ;will wrap around to 1
|
||||||
+ INX
|
+ INX
|
||||||
DEY : BEQ +
|
DEY : BEQ +
|
||||||
.nextItem
|
.nextItem
|
||||||
JSL.l IsItemAvailable : BEQ -
|
JSL.l IsItemAvailable : BEQ -
|
||||||
+
|
+
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
LCode:
|
LCode:
|
||||||
@@ -77,17 +76,17 @@ LCode:
|
|||||||
-
|
-
|
||||||
+ CPX.b #$01 : BNE + : LDX.b #$15 ; will wrap around to $14
|
+ CPX.b #$01 : BNE + : LDX.b #$15 ; will wrap around to $14
|
||||||
+ DEX
|
+ DEX
|
||||||
DEY : BEQ +
|
DEY : BEQ +
|
||||||
.nextItem
|
.nextItem
|
||||||
JSL.l IsItemAvailable : BEQ -
|
JSL.l IsItemAvailable : BEQ -
|
||||||
+
|
+
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
IsItemAvailable:
|
IsItemAvailable:
|
||||||
LDA.l InfiniteBombs : BEQ .finite
|
LDA.l InfiniteBombs : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
CPX.b #$04 : BNE .finite
|
CPX.b #$04 : BNE .finite
|
||||||
LDA.b #$01 : RTL
|
LDA.b #$01 : RTL
|
||||||
.finite
|
.finite
|
||||||
LDA.l EquipmentWRAM-1, X
|
LDA.l EquipmentWRAM-1, X
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
82
ram.asm
82
ram.asm
@@ -376,6 +376,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.
|
||||||
;
|
;
|
||||||
@@ -388,26 +395,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.
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; UNMIRRORED WRAM
|
; UNMIRRORED WRAM
|
||||||
@@ -419,6 +407,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
|
||||||
@@ -861,23 +871,23 @@ endmacro
|
|||||||
%assertRAM(MessageSubModule, $7E1CD8)
|
%assertRAM(MessageSubModule, $7E1CD8)
|
||||||
%assertRAM(MessageCursor, $7E1CE8)
|
%assertRAM(MessageCursor, $7E1CE8)
|
||||||
%assertRAM(DelayTimer, $7E1CE9)
|
%assertRAM(DelayTimer, $7E1CE9)
|
||||||
%assertRAM(TextID, $7E1CF0)
|
;%assertRAM(TextID, $7E1CF0)
|
||||||
%assertRAM(ToastBuffer, $7E1E0E)
|
;%assertRAM(ToastBuffer, $7E1E0E)
|
||||||
%assertRAM(MSUResumeTime, $7E1E6B)
|
;%assertRAM(MSUResumeTime, $7E1E6B)
|
||||||
%assertRAM(MSUResumeControl, $7E1E6F)
|
;%assertRAM(MSUResumeControl, $7E1E6F)
|
||||||
%assertRAM(MSUFallbackTable, $7E1E70)
|
;%assertRAM(MSUFallbackTable, $7E1E70)
|
||||||
%assertRAM(MSUDelayedCommand, $7E1E79)
|
;%assertRAM(MSUDelayedCommand, $7E1E79)
|
||||||
%assertRAM(MSUPackCount, $7E1E7A)
|
;%assertRAM(MSUPackCount, $7E1E7A)
|
||||||
%assertRAM(MSUPackCurrent, $7E1E7B)
|
;%assertRAM(MSUPackCurrent, $7E1E7B)
|
||||||
%assertRAM(MSUPackRequest, $7E1E7C)
|
;%assertRAM(MSUPackRequest, $7E1E7C)
|
||||||
%assertRAM(MSULoadedTrack, $7E1E7D)
|
;%assertRAM(MSULoadedTrack, $7E1E7D)
|
||||||
%assertRAM(MSUResumeTrack, $7E1E7F)
|
;%assertRAM(MSUResumeTrack, $7E1E7F)
|
||||||
%assertRAM(ClockHours, $7E1E90)
|
;%assertRAM(ClockHours, $7E1E90)
|
||||||
%assertRAM(ClockMinutes, $7E1E94)
|
;%assertRAM(ClockMinutes, $7E1E94)
|
||||||
%assertRAM(ClockSeconds, $7E1E98)
|
;%assertRAM(ClockSeconds, $7E1E98)
|
||||||
%assertRAM(ClockBuffer, $7E1E9C)
|
;%assertRAM(ClockBuffer, $7E1E9C)
|
||||||
%assertRAM(ScratchBufferNV, $7E1EA0)
|
;%assertRAM(ScratchBufferNV, $7E1EA0)
|
||||||
%assertRAM(ScratchBufferV, $7E1EB0)
|
;%assertRAM(ScratchBufferV, $7E1EB0)
|
||||||
%assertRAM(TileUploadBuffer, $7EA180)
|
%assertRAM(TileUploadBuffer, $7EA180)
|
||||||
%assertRAM(RoomFade, $7EC005)
|
%assertRAM(RoomFade, $7EC005)
|
||||||
%assertRAM(FadeTimer, $7EC007)
|
%assertRAM(FadeTimer, $7EC007)
|
||||||
|
|||||||
15
retro.asm
15
retro.asm
@@ -11,18 +11,13 @@ LoadBombCount16:
|
|||||||
.infinite
|
.infinite
|
||||||
RTL
|
RTL
|
||||||
StoreBombCount:
|
StoreBombCount:
|
||||||
JSL IncrementBombsPlacedCounter
|
PHA
|
||||||
INC.w UpdateHUDFlag
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
PHA : LDA.l InfiniteBombs : BEQ .finite
|
LDA.l InfiniteBombs : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
PLA : LDA.b #$01 : RTL
|
PLA : LDA.b #$01 : RTL
|
||||||
.finite
|
.finite
|
||||||
PLA : STA.l BombsEquipment
|
PLA : STA.l BombsEquipment
|
||||||
BNE .done
|
|
||||||
LDA.l ItemOnB : CMP #$04 : BNE .done
|
|
||||||
LDA.b #$00 : STA.l ItemOnB
|
|
||||||
.done
|
|
||||||
LDA.l BombsEquipment
|
|
||||||
RTL
|
RTL
|
||||||
SearchForEquippedItem:
|
SearchForEquippedItem:
|
||||||
LDA.l InfiniteBombs : BEQ +
|
LDA.l InfiniteBombs : BEQ +
|
||||||
@@ -46,11 +41,11 @@ DecrementArrows:
|
|||||||
LDA.b IndoorsFlag : BEQ .not_archery_game ; in overworld
|
LDA.b IndoorsFlag : BEQ .not_archery_game ; in overworld
|
||||||
LDA.w $0B9A : BEQ .shoot_arrow ; arrow game active
|
LDA.w $0B9A : BEQ .shoot_arrow ; arrow game active
|
||||||
LDA.b #$00 : BRA .done
|
LDA.b #$00 : BRA .done
|
||||||
|
|
||||||
.not_archery_game
|
.not_archery_game
|
||||||
LDA.l CurrentArrows : BNE .shoot_arrow ; check if we have arrows
|
LDA.l CurrentArrows : BNE .shoot_arrow ; check if we have arrows
|
||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
.shoot_arrow
|
.shoot_arrow
|
||||||
PHX
|
PHX
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|||||||
@@ -107,10 +107,6 @@ RTL
|
|||||||
; Out: A = RNG Result
|
; Out: A = RNG Result
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetStaticRNG:
|
GetStaticRNG:
|
||||||
LDA.l SeededRNG : BNE .seeded
|
|
||||||
JML GetRandomInt
|
|
||||||
RTL
|
|
||||||
.seeded
|
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
REP #$30 ; set 16-bit accumulator and index registers
|
REP #$30 ; set 16-bit accumulator and index registers
|
||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
|
|||||||
@@ -1,599 +0,0 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
!ANCILLA_DAMAGE = "$86EC84"
|
|
||||||
; start with X = sprite index, A = ancilla type index
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
DamageClassCalc:
|
|
||||||
PHA
|
|
||||||
LDA GanonVulnerabilityItem : BEQ +
|
|
||||||
LDA $0E20, X : CMP #$D7 : BNE +
|
|
||||||
PLA
|
|
||||||
JSL Ganon_CheckAncillaVulnerability
|
|
||||||
RTL
|
|
||||||
+
|
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP #$06 : BEQ .cane_immune ; only crystal switches in bee mode
|
|
||||||
PLA
|
|
||||||
CMP #$01 : BEQ .red_cane
|
|
||||||
CMP #$2C : BEQ .red_cane
|
|
||||||
CMP #$31 : BEQ .blue_cane
|
|
||||||
CMP #$0C : BEQ .beam
|
|
||||||
BRA .not_cane_or_beam
|
|
||||||
.red_cane
|
|
||||||
PHA
|
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP.b #$04 : BEQ .special_cane
|
|
||||||
CMP.b #$05 : BEQ .special_cane
|
|
||||||
LDA SpecialWeapons : AND.b #$80 : BNE .cane_immune
|
|
||||||
BRA .normal
|
|
||||||
.blue_cane
|
|
||||||
PHA
|
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP.b #$03 : BEQ .special_cane
|
|
||||||
CMP.b #$05 : BEQ .special_cane
|
|
||||||
LDA SpecialWeapons : AND.b #$80 : BNE .cane_immune
|
|
||||||
BRA .normal
|
|
||||||
.cane_immune
|
|
||||||
LDA $0E20, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
|
||||||
PLA
|
|
||||||
BRA .impervious
|
|
||||||
.special_cane
|
|
||||||
PLA
|
|
||||||
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
|
||||||
CMP.b #$88 : BEQ .mothula
|
|
||||||
BRA .special_level
|
|
||||||
.impervious
|
|
||||||
LDA #$FF
|
|
||||||
RTL
|
|
||||||
.beam
|
|
||||||
PHA
|
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
|
||||||
PLA
|
|
||||||
LDA #$05
|
|
||||||
RTL
|
|
||||||
.normal
|
|
||||||
PLA
|
|
||||||
.not_cane_or_beam
|
|
||||||
CMP #$07 : BNE .no_change
|
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP #$01 : BNE .normal_bombs
|
|
||||||
LDA SpecialWeaponLevel : BEQ .normal_bombs
|
|
||||||
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
|
||||||
CMP.b #$D7 : BEQ .stunned_ganon
|
|
||||||
CMP.b #$88 : BEQ .mothula
|
|
||||||
CMP.b #$91 : BEQ .stalfos_knight
|
|
||||||
CMP.b #$92 : BEQ .helmasaur_king
|
|
||||||
.special_level
|
|
||||||
LDA SpecialWeaponLevel
|
|
||||||
BRA .done
|
|
||||||
.mothula
|
|
||||||
LDA SpecialWeaponLevel
|
|
||||||
CMP #$04 : !BGE .fix_mothula
|
|
||||||
BRA .done
|
|
||||||
.fix_mothula
|
|
||||||
LDA #$03
|
|
||||||
BRA .done
|
|
||||||
.stalfos_knight
|
|
||||||
LDA StalfosBombDamage : BEQ .special_level
|
|
||||||
LDA #$08
|
|
||||||
BRA .done
|
|
||||||
.helmasaur_king
|
|
||||||
LDA $0DB0, X : CMP #$03 : !BGE .special_level
|
|
||||||
LDA #$08
|
|
||||||
BRA .done
|
|
||||||
.unstunned_ganon
|
|
||||||
LDA $04C5 : CMP.b #$02 : BNE .impervious
|
|
||||||
LDA $0EE0, X : BNE .impervious
|
|
||||||
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
|
||||||
BRA .special_level
|
|
||||||
.stunned_ganon
|
|
||||||
LDA $0EE0, X : BNE .impervious
|
|
||||||
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
|
||||||
LDA #$20 : STA $0F10, X ; knock ganon back or something? idk
|
|
||||||
LDA #$09
|
|
||||||
BRA .done
|
|
||||||
.normal_bombs
|
|
||||||
LDA #$07
|
|
||||||
.no_change
|
|
||||||
PHX : TAX
|
|
||||||
LDA.l !ANCILLA_DAMAGE, X
|
|
||||||
PLX
|
|
||||||
CMP.b #$06 : BNE .done ; not arrows
|
|
||||||
LDA BowEquipment : CMP.b #$03 : !BGE .actual_silver_arrows
|
|
||||||
.normal_arrows
|
|
||||||
LDA #$06
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
.actual_silver_arrows
|
|
||||||
LDA $0E20, X : CMP.b #$D7 : BNE +
|
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP #$01 : BEQ .normal_arrows
|
|
||||||
LDA #$20 : STA $0F10, X
|
|
||||||
+
|
|
||||||
LDA #$09
|
|
||||||
RTL
|
|
||||||
; end with X = sprite index, A = damage class
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!SPRITE_SETUP_HIT_BOX_LONG = "$8683EA"
|
|
||||||
!UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG = "$8683E6"
|
|
||||||
; start with X = ancilla index, Y = sprite index
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Utility_CheckAncillaOverlapWithSprite:
|
|
||||||
LDA $0E20, Y : CMP #$09 : BEQ .giant_moldorm
|
|
||||||
CMP #$CB : BEQ .trinexx
|
|
||||||
.not_giant_moldorm ; ordinary collision checking
|
|
||||||
PHY : PHX
|
|
||||||
TYX
|
|
||||||
JSL !SPRITE_SETUP_HIT_BOX_LONG
|
|
||||||
PLX : PLY
|
|
||||||
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
|
||||||
RTL
|
|
||||||
.giant_moldorm
|
|
||||||
LDA.w $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$07 : BEQ .check_collision_moldorm
|
|
||||||
BRA .ignore_collision ; don't collide with non-bombs
|
|
||||||
++ : CMP.b #$03 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$31 : BEQ .check_collision_moldorm
|
|
||||||
BRA .ignore_collision ; don't collide with non-byrna
|
|
||||||
++ : CMP.b #$04 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_moldorm
|
|
||||||
CMP.b #$2C : BEQ .check_collision_moldorm
|
|
||||||
BRA .ignore_collision ; don't collide with non-somaria
|
|
||||||
++ : CMP.b #$05 : BNE .ignore_collision
|
|
||||||
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_moldorm
|
|
||||||
CMP.b #$2C : BEQ .check_collision_moldorm
|
|
||||||
CMP.b #$31 : BEQ .check_collision_moldorm
|
|
||||||
BRA .ignore_collision ; don't collide with non-canes
|
|
||||||
|
|
||||||
.check_collision_moldorm
|
|
||||||
JSR SetUpMoldormHitbox
|
|
||||||
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.ignore_collision
|
|
||||||
CLC
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.trinexx
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$07 : BEQ .check_collision_trinexx
|
|
||||||
BRA .ignore_collision ; don't collide with non-bombs
|
|
||||||
++ : CMP.b #$03 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$31 : BEQ .check_collision_trinexx
|
|
||||||
JMP .ignore_collision ; don't collide with non-byrna
|
|
||||||
++ : CMP.b #$04 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_trinexx
|
|
||||||
CMP.b #$2C : BEQ .check_collision_trinexx
|
|
||||||
JMP .ignore_collision ; don't collide with non-somaria
|
|
||||||
++ : CMP #$05 : BNE .ignore_collision
|
|
||||||
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_trinexx
|
|
||||||
CMP.b #$2C : BEQ .check_collision_trinexx
|
|
||||||
CMP.b #$31 : BEQ .check_collision_trinexx
|
|
||||||
JMP .ignore_collision ; don't collide with non-canes
|
|
||||||
|
|
||||||
.check_collision_trinexx
|
|
||||||
JSR SetUpTrinexxHitbox
|
|
||||||
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
|
||||||
RTL
|
|
||||||
; returns carry clear if there was no overlap
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
SetUpTrinexxHitbox:
|
|
||||||
; rearrange trinexx's hitbox to be her middle instead of her head
|
|
||||||
LDA $0CAA, Y : PHA
|
|
||||||
LDA $0E60, Y : PHA
|
|
||||||
LDA $0D10, Y : PHA
|
|
||||||
LDA $0D30, Y : PHA
|
|
||||||
LDA $0D00, Y : PHA
|
|
||||||
LDA $0D20, Y : PHA
|
|
||||||
|
|
||||||
LDA #$80 : STA $0CAA, Y
|
|
||||||
|
|
||||||
PHX
|
|
||||||
LDA $0E80, Y : !SUB.l $9DAF28 : AND.b #$7F : TAX
|
|
||||||
|
|
||||||
LDA $7FFC00, X : STA $0D10, Y
|
|
||||||
LDA $7FFC80, X : STA $0D30, Y
|
|
||||||
LDA $7FFD00, X : STA $0D00, Y
|
|
||||||
LDA $7FFD80, X : STA $0D20, Y
|
|
||||||
|
|
||||||
TYX
|
|
||||||
STZ $0E60, X
|
|
||||||
|
|
||||||
JSL !SPRITE_SETUP_HIT_BOX_LONG
|
|
||||||
PLX
|
|
||||||
|
|
||||||
PLA : STA $0D20, Y
|
|
||||||
PLA : STA $0D00, Y
|
|
||||||
PLA : STA $0D30, Y
|
|
||||||
PLA : STA $0D10, Y
|
|
||||||
PLA : STA $0E60, Y
|
|
||||||
PLA : STA $0CAA, Y
|
|
||||||
RTS
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
SetUpMoldormHitbox:
|
|
||||||
; rearrange moldorm's hitbox to be his tail instead of his head
|
|
||||||
LDA $0D90, Y : PHA
|
|
||||||
LDA $0F60, Y : PHA
|
|
||||||
LDA $0D10, Y : PHA
|
|
||||||
LDA $0D30, Y : PHA
|
|
||||||
LDA $0D00, Y : PHA
|
|
||||||
LDA $0D20, Y : PHA
|
|
||||||
|
|
||||||
PHY : PHX
|
|
||||||
LDA $0E80, Y : !SUB.b #$30 : AND.b #$7F : TAX
|
|
||||||
|
|
||||||
LDA $7FFC00, X : STA $0D10, Y
|
|
||||||
LDA $7FFC80, X : STA $0D30, Y
|
|
||||||
LDA $7FFD00, X : STA $0D00, Y
|
|
||||||
LDA $7FFD80, X : STA $0D20, Y
|
|
||||||
LDA #$01 : STA $09D0, Y
|
|
||||||
|
|
||||||
TYX
|
|
||||||
STZ $0F60, X
|
|
||||||
|
|
||||||
JSL !SPRITE_SETUP_HIT_BOX_LONG
|
|
||||||
|
|
||||||
PLX : PLY
|
|
||||||
|
|
||||||
PLA : STA $0D20, Y
|
|
||||||
PLA : STA $0D00, Y
|
|
||||||
PLA : STA $0D30, Y
|
|
||||||
PLA : STA $0D10, Y
|
|
||||||
PLA : STA $0F60, Y
|
|
||||||
PLA : STA $0D90, Y
|
|
||||||
RTS
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; start with X = ancilla index, Y = sprite index
|
|
||||||
Utility_CheckHelmasaurKingCollision:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$07 : BEQ .collide
|
|
||||||
BRA .normal ; normal behavior with non-bombs
|
|
||||||
++ : CMP.b #$03 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$31 : BEQ .collide
|
|
||||||
BRA .normal ; normal behavior with non-byrna
|
|
||||||
++ : CMP.b #$04 : BNE ++
|
|
||||||
LDA.w $0C4A, X : CMP.b #$01 : BEQ .collide
|
|
||||||
CMP.b #$2C : BEQ .collide
|
|
||||||
BRA .normal ; normal behavior with non-somaria
|
|
||||||
++ : CMP.b #$05 : BNE .normal
|
|
||||||
LDA.w $0C4A, X : CMP.b #$01 : BEQ .collide
|
|
||||||
CMP.b #$2C : BEQ .collide
|
|
||||||
CMP.b #$31 : BEQ .collide
|
|
||||||
BRA .normal ; normal behavior with non-canes
|
|
||||||
.collide
|
|
||||||
CLC
|
|
||||||
RTL
|
|
||||||
.normal
|
|
||||||
LDA.w $0DB0, Y : CMP.b #$03
|
|
||||||
RTL
|
|
||||||
; returns carry set if there is collision immunity
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Utility_CheckImpervious:
|
|
||||||
LDA $0E20, X : CMP.b #$CB : BNE .normal
|
|
||||||
.trinexx
|
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .check_sidenexx
|
|
||||||
LDA SpecialWeapons : AND.b #$80 : BNE +
|
|
||||||
BRA .normal
|
|
||||||
+
|
|
||||||
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
|
||||||
.check_sidenexx
|
|
||||||
LDA.w $0DD1 : ORA.w $0DD2 : BNE .impervious ; at least one sidenexx alive
|
|
||||||
LDA.w $0D80, X : CMP.b #$02 : BCS .impervious ; at least one sidenexx alive
|
|
||||||
BRA .not_impervious
|
|
||||||
.normal
|
|
||||||
LDA $0E60, X : AND.b #$40 : BNE .impervious
|
|
||||||
LDA $0CF2 : CMP #$FF : BEQ .impervious ; special "always-impervious" class
|
|
||||||
LDA $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
|
||||||
LDA $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
|
||||||
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
|
||||||
LDA SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
|
||||||
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
|
||||||
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
|
||||||
BRA .impervious
|
|
||||||
.not_impervious
|
|
||||||
LDA #$00 : RTL
|
|
||||||
.impervious
|
|
||||||
LDA #$01 : RTL
|
|
||||||
.sidenexx
|
|
||||||
LDA $0CAA, X : AND.b #$04 : BEQ .vulnerable
|
|
||||||
LDA.l SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
|
||||||
LDA $0CF2 : CMP #$06 : !BLT .impervious ; swords are ineffective
|
|
||||||
BRA .not_impervious
|
|
||||||
.vulnerable
|
|
||||||
LDA.l SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
|
||||||
LDA $0CF2 : CMP #$06 : !BGE .impervious ; non-swords are ineffective
|
|
||||||
BRA .not_impervious
|
|
||||||
; returns nonzero A if impervious
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!SPRITE_INITIALIZED_SEGMENTED = "$1DD6D1"
|
|
||||||
; start with X = sprite index
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
AllowBombingMoldorm:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$03 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$04 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$05 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$06 : BEQ .no_disable_projectiles
|
|
||||||
INC $0BA0, X
|
|
||||||
.no_disable_projectiles
|
|
||||||
JSL !SPRITE_INITIALIZED_SEGMENTED
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
AllowBombingBarrier:
|
|
||||||
; what we wrote over
|
|
||||||
LDA $0D00, X : !SUB.b #$0C : STA $0D00, X
|
|
||||||
LDA $0E20, X : CMP #$40 : BNE .disable_projectiles
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$03 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$04 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$05 : BEQ .no_disable_projectiles
|
|
||||||
CMP.b #$06 : BEQ .no_disable_projectiles
|
|
||||||
.disable_projectiles
|
|
||||||
INC $0BA0, X
|
|
||||||
.no_disable_projectiles
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
DrawBombInMenu:
|
|
||||||
JSL LoadBombCount16 : AND.w #$00FF : BEQ .noBombs
|
|
||||||
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .vanillaBombs
|
|
||||||
LDA.l SpecialWeaponLevel : AND.w #$00FF : BEQ .noBombs : STA $02
|
|
||||||
LDA.w #$FC81 : STA $04
|
|
||||||
BRA .done
|
|
||||||
.vanillaBombs
|
|
||||||
LDA.w #$0001 : STA $02
|
|
||||||
LDA.w #$F699 : STA $04
|
|
||||||
BRA .done
|
|
||||||
.noBombs
|
|
||||||
LDA.w #$0000 : STA $02
|
|
||||||
LDA.w #$F699 : STA $04
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
DrawSwordInMenu:
|
|
||||||
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BEQ .specialSword
|
|
||||||
CMP.w #$0003 : BEQ .specialSword
|
|
||||||
CMP.w #$0004 : BEQ .specialSword
|
|
||||||
CMP.w #$0005 : BEQ .specialSword
|
|
||||||
CMP.w #$0008 : BEQ .specialSword
|
|
||||||
LDA SwordEquipment : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword
|
|
||||||
.hasSword
|
|
||||||
STA $02
|
|
||||||
LDA.w #$F859 : STA $04
|
|
||||||
RTL
|
|
||||||
.noSword
|
|
||||||
LDA.w #$0000 : STA $02
|
|
||||||
LDA.w #$F859 : STA $04
|
|
||||||
RTL
|
|
||||||
.specialSword
|
|
||||||
LDA SpecialWeaponLevel : AND.w #$00FF : STA $02
|
|
||||||
LDA.w #$FC51 : STA $04
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
DrawBombInYBox:
|
|
||||||
CPX.w #$0004 : BNE .done
|
|
||||||
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .vanilla
|
|
||||||
LDA SpecialWeaponLevel : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done
|
|
||||||
.vanilla
|
|
||||||
LDA.w #$0001
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
BombIcon:
|
|
||||||
dw $207F, $207F, $3C88, $3C89, $2C88, $2C89, $2488, $2489, $2888, $2889,$2888, $2889
|
|
||||||
DrawBombOnHud:
|
|
||||||
PHB
|
|
||||||
LDA.w #$0149
|
|
||||||
LDX.w #HUD_TileMap
|
|
||||||
LDY.w #$C700
|
|
||||||
MVN $A17E
|
|
||||||
PLB
|
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .regularBombs
|
|
||||||
LDA.l SpecialWeaponLevel : AND.w #$00FF : ASL #2 : TAX
|
|
||||||
LDA.l BombIcon, X : STA.l $7EC71A
|
|
||||||
LDA.l BombIcon+2, X : STA.l $7EC71C
|
|
||||||
.regularBombs
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
BombSpriteColor:
|
|
||||||
db $04, $08, $04, $02, $0A, $0A
|
|
||||||
SetBombSpriteColor:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE .normal
|
|
||||||
PHX
|
|
||||||
LDA.l SpecialWeaponLevel
|
|
||||||
TAX
|
|
||||||
LDA.l BombSpriteColor, X
|
|
||||||
STA $0B
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
.normal
|
|
||||||
LDA #$04 : STA $0B
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
StoreSwordDamage:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP #$02 : BEQ +
|
|
||||||
LDA.l $06ED39, X : RTL
|
|
||||||
+
|
|
||||||
LDA #$05
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
BeeDamageClass:
|
|
||||||
db $FF
|
|
||||||
db $06, $00, $07, $08, $0A
|
|
||||||
db $0B, $0C, $0D, $0E, $0F
|
|
||||||
db $FF, $03, $FF, $FF, $FF
|
|
||||||
db $FF, $01, $01, $FF, $FF
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
CheckDetonateBomb:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .detonate_bombs
|
|
||||||
CMP.b #$06 : BEQ .release_bee
|
|
||||||
CLC : RTL
|
|
||||||
.detonate_bombs
|
|
||||||
LDX.b #09
|
|
||||||
.check_ancilla
|
|
||||||
LDA.w $0C4A, X
|
|
||||||
CMP.b #$07
|
|
||||||
BNE .next_ancilla
|
|
||||||
LDA.b #03
|
|
||||||
STA.w $039F, X
|
|
||||||
.next_ancilla
|
|
||||||
DEX
|
|
||||||
BPL .check_ancilla
|
|
||||||
JMP .done
|
|
||||||
.release_bee
|
|
||||||
LDX.w $0202
|
|
||||||
LDA.l BeeDamageClass, X : CMP.b #$FF : BEQ .nope
|
|
||||||
JSL $1EDCC9
|
|
||||||
BMI .nope
|
|
||||||
LDX.w $0202
|
|
||||||
LDA.l BeeDamageClass, X
|
|
||||||
CMP.b #$06 : BNE .set_bee_class
|
|
||||||
LDA.l BowEquipment : CMP.b #$03 : !BGE .silver_arrows
|
|
||||||
LDA.b #$06
|
|
||||||
BRA .set_bee_class
|
|
||||||
.silver_arrows
|
|
||||||
LDA.b #$09
|
|
||||||
.set_bee_class
|
|
||||||
STA.w $0ED0, Y
|
|
||||||
BRA .done
|
|
||||||
.nope
|
|
||||||
LDA.b #$3C
|
|
||||||
STA.w $0CF8
|
|
||||||
JSL $0DBB67
|
|
||||||
ORA.w $0CF8
|
|
||||||
STA.w $012E
|
|
||||||
.done
|
|
||||||
SEC
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
SetBeeType:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .bee_mode
|
|
||||||
LDX.w $0202
|
|
||||||
.check_bee_type
|
|
||||||
LDA.l EquipmentWRAM-1, X
|
|
||||||
TAX
|
|
||||||
LDA.l BottleContents-1, X
|
|
||||||
CMP.b #$08
|
|
||||||
BNE .regular_bee
|
|
||||||
LDA.b #$01
|
|
||||||
STA.w $0EB0, Y
|
|
||||||
.regular_bee
|
|
||||||
LDA.b #$01
|
|
||||||
STA.w $0ED0, Y
|
|
||||||
RTL
|
|
||||||
.bee_mode
|
|
||||||
LDX.w $0202
|
|
||||||
CPX.b #$10 : BEQ .check_bee_type
|
|
||||||
BRA .regular_bee
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
ArrghusBoing:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .done
|
|
||||||
LDA.w $0F60, X : AND.b #$BF : STA.w $0F60, X
|
|
||||||
.done
|
|
||||||
; what we wrote over
|
|
||||||
LDA.b #$03
|
|
||||||
STA.w $0D80, X
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
BeeCheckTarget:
|
|
||||||
CPY.w $0FA0
|
|
||||||
BEQ .unsuitable_target
|
|
||||||
|
|
||||||
LDA.w $0DD0,Y
|
|
||||||
CMP.b #$09
|
|
||||||
BCC .unsuitable_target
|
|
||||||
|
|
||||||
LDA.w $0F00,Y
|
|
||||||
BNE .unsuitable_target
|
|
||||||
|
|
||||||
; in bee-mode skip targets that the bee can't hurt
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE +
|
|
||||||
JSR BeeCheckDamage
|
|
||||||
CMP.b #$00 : BEQ .unsuitable_target
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.w $0E40,Y
|
|
||||||
BMI .potential_target
|
|
||||||
|
|
||||||
LDA.w $0F20,Y
|
|
||||||
CMP.w $0F20,X
|
|
||||||
BNE .unsuitable_target
|
|
||||||
|
|
||||||
LDA.w $0F60,Y
|
|
||||||
AND.b #$40
|
|
||||||
BEQ +
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .unsuitable_target
|
|
||||||
; in bee mode, allow targetting anti-fairies, bunny beams, and keese
|
|
||||||
LDA.w $0E20,Y
|
|
||||||
CMP.b #$15 : BEQ + ; anti-fairy
|
|
||||||
CMP.b #$6F : BEQ + ; keese
|
|
||||||
CMP.b #$D1 : BEQ + ; bunny beam
|
|
||||||
BRA .unsuitable_target
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.w $0BA0,Y
|
|
||||||
BEQ .valid_target
|
|
||||||
BRA .unsuitable_target
|
|
||||||
|
|
||||||
.potential_target
|
|
||||||
LDA.w $0EB0,X
|
|
||||||
BEQ .unsuitable_target
|
|
||||||
|
|
||||||
LDA.w $0CD2,Y
|
|
||||||
AND.b #$40
|
|
||||||
BNE .valid_target
|
|
||||||
|
|
||||||
.unsuitable_target
|
|
||||||
CLC : RTL
|
|
||||||
|
|
||||||
.valid_target
|
|
||||||
SEC : RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
BeeCheckDamage:
|
|
||||||
PHX : PHP
|
|
||||||
REP #$20
|
|
||||||
LDA.w $0E20,Y : AND.w #$00FF
|
|
||||||
ASL #4
|
|
||||||
SEP #$20
|
|
||||||
ORA.w $0ED0,X
|
|
||||||
REP #$30
|
|
||||||
TAX
|
|
||||||
SEP #$20
|
|
||||||
JSL LookupDamageLevel
|
|
||||||
SEP #$10
|
|
||||||
PLP : PLX
|
|
||||||
RTS
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
CheckBugNet:
|
|
||||||
LDA.w $037A : AND.b #$10 : BEQ .done ; normal behavior if not bugnet
|
|
||||||
PHP ; we want to preserve the carry bit
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BNE .return_10 ; normal behavior if not bugnet mode
|
|
||||||
.bugnet_mode
|
|
||||||
LDA.w $0E20, X : CMP.b #$E3 : BEQ .return_10 ; normal behavior if fairy
|
|
||||||
CMP.b #$79 : BEQ .return_10 ; normal behavior if bee
|
|
||||||
CMP.b #$B2 : BEQ .return_10 ; normal behavior if bee
|
|
||||||
PLP : LDA.b #$00 : RTL
|
|
||||||
.return_10
|
|
||||||
PLP : LDA.b #$10
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
SetHammerClass:
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BNE .normal ; normal behavior if not bugnet mode
|
|
||||||
LDA.w $037A : AND.b #$10 : BEQ .normal ; normal behavior if not bugnet
|
|
||||||
LDA 4, S : TAX ; get sprite index off of stack
|
|
||||||
LDA.w $0E20, X : CMP.b #$88 : BNE .not_mothula
|
|
||||||
LDA.l SpecialWeaponLevel
|
|
||||||
CMP #$04 : !BGE .fix_mothula
|
|
||||||
BRA .done
|
|
||||||
.fix_mothula
|
|
||||||
LDA #$03
|
|
||||||
BRA .done
|
|
||||||
.not_mothula
|
|
||||||
LDA.l SpecialWeaponLevel
|
|
||||||
.done
|
|
||||||
STA.w $0CF2
|
|
||||||
RTL
|
|
||||||
.normal
|
|
||||||
LDA.w $0301
|
|
||||||
AND.b #$0A
|
|
||||||
BEQ .not_hammer
|
|
||||||
LDA.b #$03
|
|
||||||
STA.w $0CF2
|
|
||||||
.not_hammer
|
|
||||||
RTL
|
|
||||||
14
sram.asm
14
sram.asm
@@ -187,9 +187,7 @@ ItemLimitCounts: skip 16 ; Keeps track of limited non-progressive items s
|
|||||||
; See: ItemSubstitutionRules in tables.asm
|
; See: ItemSubstitutionRules in tables.asm
|
||||||
; Right now this is only used for three items but extra space is
|
; Right now this is only used for three items but extra space is
|
||||||
; reserved
|
; reserved
|
||||||
skip 35 ; Unused
|
skip 37 ; Unused
|
||||||
SpecialWeaponLevel: skip 1 ; Keeps track of level of weapon in item modes
|
|
||||||
ItemOnB: skip 1 ; same table as $0202; $01 = arrows .. $14 = mirror
|
|
||||||
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
||||||
; $03 = Agahnim 1 defeated
|
; $03 = Agahnim 1 defeated
|
||||||
; $04 and above don't do anything. $00-$02 used in standard mode
|
; $04 and above don't do anything. $00-$02 used in standard mode
|
||||||
@@ -323,8 +321,7 @@ DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize
|
|||||||
; This has the same shape as the dungeon item bitfields.
|
; This has the same shape as the dungeon item bitfields.
|
||||||
MapCountDisplay: skip 2 ;
|
MapCountDisplay: skip 2 ;
|
||||||
CrystalCounter: skip 2 ; Total Number of crystals collected (integer)
|
CrystalCounter: skip 2 ; Total Number of crystals collected (integer)
|
||||||
BombsPlaced: skip 2 ; Total Number of bombs placed (16-bit integer)
|
skip 40 ; Unused
|
||||||
skip 38 ; Unused
|
|
||||||
ServiceSequence: ; See servicerequest.asm
|
ServiceSequence: ; See servicerequest.asm
|
||||||
ServiceSequenceRx: skip 8 ; Service sequence receive
|
ServiceSequenceRx: skip 8 ; Service sequence receive
|
||||||
ServiceSequenceTx: skip 8 ; Service sequence transmit
|
ServiceSequenceTx: skip 8 ; Service sequence transmit
|
||||||
@@ -414,9 +411,7 @@ DisplayRupeesSRAM: skip 21 ;
|
|||||||
CurrentArrowsSRAM: skip 21 ;
|
CurrentArrowsSRAM: skip 21 ;
|
||||||
InventoryTrackingSRAM: skip 2 ;
|
InventoryTrackingSRAM: skip 2 ;
|
||||||
BowTrackingSRAM: skip 2 ;
|
BowTrackingSRAM: skip 2 ;
|
||||||
skip 51 ;
|
skip 53 ;
|
||||||
SpecialWeaponLevelSRAM: skip 1 ;
|
|
||||||
ItemOnBSRAM: skip 1 ;
|
|
||||||
ProgressIndicatorSRAM: skip 1 ;
|
ProgressIndicatorSRAM: skip 1 ;
|
||||||
skip 19 ;
|
skip 19 ;
|
||||||
FileNameVanillaSRAM: skip 8 ; First four characters of file name
|
FileNameVanillaSRAM: skip 8 ; First four characters of file name
|
||||||
@@ -545,8 +540,6 @@ endmacro
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
%assertSRAM(InventoryTracking, $7EF38C)
|
%assertSRAM(InventoryTracking, $7EF38C)
|
||||||
%assertSRAM(BowTracking, $7EF38E)
|
%assertSRAM(BowTracking, $7EF38E)
|
||||||
%assertSRAM(SpecialWeaponLevel, $7EF3C3)
|
|
||||||
%assertSRAM(ItemOnB, $7EF3C4)
|
|
||||||
%assertSRAM(ItemLimitCounts, $7EF390)
|
%assertSRAM(ItemLimitCounts, $7EF390)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
%assertSRAM(GameCounter, $7EF3FF)
|
%assertSRAM(GameCounter, $7EF3FF)
|
||||||
@@ -678,7 +671,6 @@ endmacro
|
|||||||
%assertSRAM(CurrentArrowsSRAM, $700377)
|
%assertSRAM(CurrentArrowsSRAM, $700377)
|
||||||
%assertSRAM(InventoryTrackingSRAM, $70038C)
|
%assertSRAM(InventoryTrackingSRAM, $70038C)
|
||||||
%assertSRAM(BowTrackingSRAM, $70038E)
|
%assertSRAM(BowTrackingSRAM, $70038E)
|
||||||
%assertSRAM(SpecialWeaponLevelSRAM, $7003C3)
|
|
||||||
%assertSRAM(ProgressIndicatorSRAM, $7003C5)
|
%assertSRAM(ProgressIndicatorSRAM, $7003C5)
|
||||||
%assertSRAM(FileNameVanillaSRAM, $7003D9)
|
%assertSRAM(FileNameVanillaSRAM, $7003D9)
|
||||||
%assertSRAM(FileValiditySRAM, $7003E1)
|
%assertSRAM(FileValiditySRAM, $7003E1)
|
||||||
|
|||||||
177
stats.asm
177
stats.asm
@@ -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.l UpdateKeys
|
JSL.l UpdateKeys
|
||||||
PHY : LDY.b #24 : JSL.l AddInventory : PLY
|
PHY : LDY.b #24 : JSL.l AddInventory : PLY
|
||||||
JSL.l HUD_RebuildLong
|
JSL.l 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.l HUD_RebuildLong
|
JSL.l HUD_RebuildLong
|
||||||
PLX
|
PLX
|
||||||
RTL
|
RTL
|
||||||
@@ -124,51 +124,32 @@ CountChestKeyLong:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountChestKey:
|
CountChestKey:
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
LDA.l StatsLocked : BNE .done
|
LDA.l StatsLocked : BNE .done
|
||||||
CPY.b #$24 : BEQ .this_dungeon
|
CPY.b #$24 : BEQ .this_dungeon
|
||||||
TYA
|
TYA
|
||||||
AND.b #$0F : CMP.b #$02 : BCC .hc_sewers
|
AND.b #$0F : CMP.b #$02 : BCC .hc_sewers
|
||||||
TAX
|
TAX
|
||||||
LDA.l DungeonCollectedKeys,X : INC : STA.l DungeonCollectedKeys,X
|
LDA.l DungeonCollectedKeys,X : INC : STA.l DungeonCollectedKeys,X
|
||||||
BRA .done
|
BRA .done
|
||||||
.this_dungeon
|
.this_dungeon
|
||||||
LDA.w DungeonID : CMP.b #$03 : BCC .hc_sewers
|
LDA.w DungeonID : CMP.b #$03 : BCC .hc_sewers
|
||||||
LSR : TAX
|
LSR : TAX
|
||||||
LDA.l DungeonCollectedKeys,X : INC : STA.l DungeonCollectedKeys,X
|
LDA.l DungeonCollectedKeys,X : INC : STA.l DungeonCollectedKeys,X
|
||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
.hc_sewers
|
.hc_sewers
|
||||||
LDA.l SewerCollectedKeys : INC
|
LDA.l SewerCollectedKeys : INC
|
||||||
STA.l SewerCollectedKeys : STA.l HCCollectedKeys
|
STA.l SewerCollectedKeys : STA.l HCCollectedKeys
|
||||||
|
|
||||||
.done
|
.done
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountBonkItem: ; called from GetBonkItem in bookofmudora.asm
|
|
||||||
LDA.b RoomIndex
|
|
||||||
CMP.b #115 : BNE +
|
|
||||||
LDA.l BonkKey_Desert
|
|
||||||
BRA ++
|
|
||||||
+
|
|
||||||
CMP.b #140 : BNE +
|
|
||||||
LDA.l BonkKey_GTower : BRA ++
|
|
||||||
+
|
|
||||||
LDA.b #$24
|
|
||||||
++
|
|
||||||
CMP.b #$24 : BNE +
|
|
||||||
PHY
|
|
||||||
TAY
|
|
||||||
JSR CountChestKey
|
|
||||||
PLY
|
|
||||||
+
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
IncrementAgahnim2Sword:
|
IncrementAgahnim2Sword:
|
||||||
PHA
|
PHA
|
||||||
JSL.l IncrementBossSword
|
JSL.l IncrementBossSword
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementDeathCounter:
|
IncrementDeathCounter:
|
||||||
@@ -197,16 +178,6 @@ IncrementChestTurnCounter:
|
|||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementBombsPlacedCounter:
|
|
||||||
PHA
|
|
||||||
LDA StatsLocked : BNE +
|
|
||||||
PHP : REP #$20
|
|
||||||
LDA BombsPlaced : INC : STA BombsPlaced
|
|
||||||
PLP
|
|
||||||
+
|
|
||||||
PLA
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
IncrementChestCounter:
|
IncrementChestCounter:
|
||||||
LDA.b #$01 : STA.w ItemReceiptMethod ; thing we wrote over
|
LDA.b #$01 : STA.w ItemReceiptMethod ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
@@ -227,22 +198,22 @@ RTL
|
|||||||
DecrementItemCounter:
|
DecrementItemCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA.l StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l TotalItemCounter : DEC : STA.l TotalItemCounter
|
LDA.l TotalItemCounter : DEC : STA.l TotalItemCounter
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementBigChestCounter:
|
IncrementBigChestCounter:
|
||||||
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
LDA.l StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA.l BigKeysBigChests : INC : AND.b #$0F : TAX
|
LDA.l BigKeysBigChests : INC : AND.b #$0F : TAX
|
||||||
LDA.l BigKeysBigChests : AND.b #$F0 : STA.l BigKeysBigChests
|
LDA.l BigKeysBigChests : AND.b #$F0 : STA.l BigKeysBigChests
|
||||||
TXA : ORA.l BigKeysBigChests : STA.l BigKeysBigChests
|
TXA : ORA.l BigKeysBigChests : STA.l BigKeysBigChests
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementDamageTakenCounter_Eight:
|
IncrementDamageTakenCounter_Eight:
|
||||||
@@ -304,13 +275,13 @@ IncrementMagicUseCounterOne:
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementOWMirror:
|
IncrementOWMirror:
|
||||||
PHA
|
PHA
|
||||||
LDA.b #$08 : STA.w RaceGameFlag ; fail race game
|
LDA.b #$08 : STA.w RaceGameFlag ; fail race game
|
||||||
LDA.l StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA.l CurrentWorld : BEQ + ; only do this for DW->LW
|
LDA.l CurrentWorld : BEQ + ; only do this for DW->LW
|
||||||
LDA.l OverworldMirrors : INC : STA.l OverworldMirrors
|
LDA.l OverworldMirrors : INC : STA.l OverworldMirrors
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
JMP StatTransitionCounter
|
JMP StatTransitionCounter
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementUWMirror:
|
IncrementUWMirror:
|
||||||
@@ -326,8 +297,8 @@ IncrementUWMirror:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementSpentRupees:
|
IncrementSpentRupees:
|
||||||
DEC A : BPL .subtractRupees
|
DEC A : BPL .subtractRupees
|
||||||
LDA.w #$0000 : STA.l CurrentRupees
|
LDA.w #$0000 : STA.l CurrentRupees
|
||||||
RTL
|
RTL
|
||||||
.subtractRupees
|
.subtractRupees
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
@@ -343,46 +314,36 @@ IndoorTileTransitionCounter:
|
|||||||
JMP StatTransitionCounter
|
JMP StatTransitionCounter
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IndoorSubtileTransitionCounter:
|
IndoorSubtileTransitionCounter:
|
||||||
LDA.b #$01 : STA.l RedrawFlag ; set redraw flag for items
|
LDA.b #$01 : STA.l RedrawFlag ; set redraw flag for items
|
||||||
STZ.w SomariaSwitchFlag ; stuff we wrote over
|
STZ.w SomariaSwitchFlag ; stuff we wrote over
|
||||||
STZ.w SpriteRoomTag
|
STZ.w SpriteRoomTag
|
||||||
JMP StatTransitionCounter
|
JMP StatTransitionCounter
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
StatsFinalPrep:
|
StatsFinalPrep:
|
||||||
PHA : PHX : PHP
|
PHA : PHX : PHP
|
||||||
SEP #$30 ; set 8-bit accumulator and index registers
|
SEP #$30
|
||||||
|
LDA.l StatsLocked : BNE .ramPostOnly
|
||||||
|
INC : STA.l StatsLocked
|
||||||
|
JSL.l IncrementFinalSword
|
||||||
|
LDA.l Aga2Duck : BEQ .ramPostOnly
|
||||||
|
LDA.l ScreenTransitions : DEC : STA.l ScreenTransitions ; remove extra transition from exiting gtower via duck
|
||||||
|
.ramPostOnly
|
||||||
|
LDA.l SwordBossKills : LSR #4 : !ADD SwordBossKills : STA.l BossKills
|
||||||
|
LDA.l SwordBossKills+1 : LSR #4 : !ADD SwordBossKills+1 : !ADD BossKills : AND.b #$0F : STA.l BossKills
|
||||||
|
|
||||||
LDA.l StatsLocked : BNE .ramPostOnly
|
LDA.l NMIFrames : !SUB LoopFrames : STA.l LagTime
|
||||||
INC : STA.l StatsLocked
|
LDA.l NMIFrames+1 : SBC LoopFrames+1 : STA.l LagTime+1
|
||||||
|
LDA.l NMIFrames+2 : SBC LoopFrames+2 : STA.l LagTime+2
|
||||||
|
LDA.l NMIFrames+3 : SBC LoopFrames+3 : STA.l LagTime+3
|
||||||
|
|
||||||
JSL.l IncrementFinalSword
|
LDA.l RupeesSpent : !ADD DisplayRupees : STA.l RupeesCollected
|
||||||
|
LDA.l RupeesSpent+1 : ADC DisplayRupees+1 : STA.l RupeesCollected+1
|
||||||
|
|
||||||
LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count
|
REP #$20
|
||||||
|
LDA.l TotalItemCounter : !SUB ChestsOpened : STA.l NonChestCounter
|
||||||
LDA.l ScreenTransitions : DEC : STA.l ScreenTransitions ; remove extra transition from exiting gtower via duck
|
.done
|
||||||
|
PLP : PLX : PLA
|
||||||
.ramPostOnly
|
LDA.b #$19 : STA.b GameMode ; thing we wrote over, load triforce room
|
||||||
LDA.l SwordBossKills : LSR #4 : !ADD SwordBossKills : STA.l BossKills
|
STZ.b GameSubMode
|
||||||
LDA.l SwordBossKills+1 : LSR #4 : !ADD SwordBossKills+1 : !ADD BossKills : AND.b #$0F : STA.l BossKills
|
STZ.b SubSubModule
|
||||||
|
|
||||||
LDA.l NMIFrames : !SUB LoopFrames : STA.l LagTime
|
|
||||||
LDA.l NMIFrames+1 : SBC LoopFrames+1 : STA.l LagTime+1
|
|
||||||
LDA.l NMIFrames+2 : SBC LoopFrames+2 : STA.l LagTime+2
|
|
||||||
LDA.l NMIFrames+3 : SBC LoopFrames+3 : STA.l LagTime+3
|
|
||||||
|
|
||||||
LDA.l RupeesSpent : !ADD DisplayRupees : STA.l RupeesCollected
|
|
||||||
LDA.l RupeesSpent+1 : ADC DisplayRupees+1 : STA.l RupeesCollected+1
|
|
||||||
|
|
||||||
REP #$20
|
|
||||||
LDA.l TotalItemCounter : !SUB ChestsOpened : STA.l NonChestCounter
|
|
||||||
|
|
||||||
.done
|
|
||||||
PLP : PLX : PLA
|
|
||||||
LDA.b #$19 : STA.b GameMode ; thing we wrote over, load triforce room
|
|
||||||
STZ.b GameSubMode
|
|
||||||
STZ.b SubSubModule
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; Notes:
|
|
||||||
; s&q counter
|
|
||||||
;================================================================================
|
|
||||||
|
|||||||
@@ -3,59 +3,53 @@
|
|||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
table "data/creditscharmapbighi.txt"
|
table "data/creditscharmapbighi.txt"
|
||||||
YourSpriteCreditsHi:
|
YourSpriteCreditsHi:
|
||||||
db 2, 55, " " ; $238002
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $238002
|
||||||
|
|
||||||
table "data/creditscharmapbiglo.txt"
|
table "data/creditscharmapbiglo.txt"
|
||||||
YourSpriteCreditsLo:
|
YourSpriteCreditsLo:
|
||||||
db 2, 55, " " ; $238020
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $238020
|
||||||
|
|
||||||
|
!FEATURE_PATREON_SUPPORTERS ?= 0
|
||||||
|
|
||||||
table "data/creditscharmapbighi.txt"
|
table "data/creditscharmapbighi.txt"
|
||||||
FirstSwordStatsHi:
|
PatronCredit1Hi:
|
||||||
db 2, 55, "FIRST SWORD " ; $23803E
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $23803E
|
||||||
|
|
||||||
table "data/creditscharmapbiglo.txt"
|
table "data/creditscharmapbiglo.txt"
|
||||||
FirstSwordStatsLo:
|
PatronCredit1Lo:
|
||||||
db 2, 55, "FIRST SWORD " ; $23805C
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $23805C
|
||||||
|
|
||||||
table "data/creditscharmapbighi.txt"
|
table "data/creditscharmapbighi.txt"
|
||||||
SwordlessKillsHi:
|
PatronCredit2Hi:
|
||||||
db 2, 55, "SWORDLESS /13" ; $23807A
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $23807A
|
||||||
|
|
||||||
table "data/creditscharmapbiglo.txt"
|
table "data/creditscharmapbiglo.txt"
|
||||||
SwordlessKillsLo:
|
PatronCredit2Lo:
|
||||||
db 2, 55, "SWORDLESS /13" ; $238098
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $238098
|
||||||
|
|
||||||
table "data/creditscharmapbighi.txt"
|
table "data/creditscharmapbighi.txt"
|
||||||
FighterSwordKillsHi:
|
PatronCredit3Hi:
|
||||||
db 2, 55, "FIGHTER'S SWORD /13" ; $2380B6
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $2380B6
|
||||||
|
|
||||||
table "data/creditscharmapbiglo.txt"
|
table "data/creditscharmapbiglo.txt"
|
||||||
FighterSwordKillsLo:
|
PatronCredit3Lo:
|
||||||
db 2, 55, "FIGHTER'S SWORD /13" ; $2380D4
|
db 2
|
||||||
|
db 55
|
||||||
table "data/creditscharmapbighi.txt"
|
db " " ; $2380D4
|
||||||
MasterSwordKillsHi:
|
|
||||||
db 2, 55, "MASTER SWORD /13" ; $2380F2
|
|
||||||
|
|
||||||
table "data/creditscharmapbiglo.txt"
|
|
||||||
MasterSwordKillsLo:
|
|
||||||
db 2, 55, "MASTER SWORD /13" ; $238110
|
|
||||||
|
|
||||||
table "data/creditscharmapbighi.txt"
|
|
||||||
TemperedSwordKillsHi:
|
|
||||||
db 2, 55, "TEMPERED SWORD /13" ; $23812E
|
|
||||||
|
|
||||||
table "data/creditscharmapbiglo.txt"
|
|
||||||
TemperedSwordKillsLo:
|
|
||||||
db 2, 55, "TEMPERED SWORD /13" ; $23814C
|
|
||||||
|
|
||||||
table "data/creditscharmapbighi.txt"
|
|
||||||
GoldSwordKillsHi:
|
|
||||||
db 2, 55, "GOLD SWORD /13" ; $23816A
|
|
||||||
|
|
||||||
table "data/creditscharmapbiglo.txt"
|
|
||||||
GoldSwordKillsLo:
|
|
||||||
db 2, 55, "GOLD SWORD /13" ; $238188
|
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
@@ -542,6 +536,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()
|
||||||
@@ -574,7 +586,7 @@ CreditsLineBlank:
|
|||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcredits("AND&")
|
%bigcredits("AND")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
@@ -599,17 +611,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
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
@@ -640,8 +655,7 @@ endif
|
|||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%addarbline(FirstSwordStatsHi)
|
%bigcreditsleft("FIRST SWORD")
|
||||||
%addarbline(FirstSwordStatsLo)
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
@@ -664,28 +678,23 @@ endif
|
|||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%addarbline(SwordlessKillsHi)
|
%bigcreditsleft("SWORDLESS /13")
|
||||||
%addarbline(SwordlessKillsLo)
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%addarbline(FighterSwordKillsHi)
|
%bigcreditsleft("FIGHTER'S SWORD /13")
|
||||||
%addarbline(FighterSwordKillsLo)
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%addarbline(MasterSwordKillsHi)
|
%bigcreditsleft("MASTER SWORD /13")
|
||||||
%addarbline(MasterSwordKillsLo)
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%addarbline(TemperedSwordKillsHi)
|
%bigcreditsleft("TEMPERED SWORD /13")
|
||||||
%addarbline(TemperedSwordKillsLo)
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%addarbline(GoldSwordKillsHi)
|
%bigcreditsleft("GOLD SWORD /13")
|
||||||
%addarbline(GoldSwordKillsLo)
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
%blankline()
|
||||||
@@ -707,10 +716,6 @@ endif
|
|||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("BOMBS PLACED")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("SAVE AND QUITS")
|
%bigcreditsleft("SAVE AND QUITS")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
@@ -730,6 +735,11 @@ endif
|
|||||||
%bigcreditsleft("TOTAL LAG TIME")
|
%bigcreditsleft("TOTAL LAG TIME")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
@@ -758,3 +768,5 @@ endif
|
|||||||
%emptyline()
|
%emptyline()
|
||||||
%emptyline()
|
%emptyline()
|
||||||
%emptyline()
|
%emptyline()
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -22,18 +22,16 @@
|
|||||||
!MAGICUSED_Y = 349
|
!MAGICUSED_Y = 349
|
||||||
!BONKS_X = 26
|
!BONKS_X = 26
|
||||||
!BONKS_Y = 352
|
!BONKS_Y = 352
|
||||||
!BOMBS_X = 26
|
|
||||||
!BOMBS_Y = 355
|
|
||||||
!SAVE_AND_QUITS_X = 26
|
!SAVE_AND_QUITS_X = 26
|
||||||
!SAVE_AND_QUITS_Y = 358
|
!SAVE_AND_QUITS_Y = 355
|
||||||
!DEATHS_X = 26
|
!DEATHS_X = 26
|
||||||
!DEATHS_Y = 361
|
!DEATHS_Y = 358
|
||||||
!FAERIE_REVIVALS_X = 26
|
!FAERIE_REVIVALS_X = 26
|
||||||
!FAERIE_REVIVALS_Y = 364
|
!FAERIE_REVIVALS_Y = 361
|
||||||
!TOTAL_MENU_TIME_X = 19
|
!TOTAL_MENU_TIME_X = 19
|
||||||
!TOTAL_MENU_TIME_Y = 367
|
!TOTAL_MENU_TIME_Y = 364
|
||||||
!TOTAL_LAG_TIME_X = 19
|
!TOTAL_LAG_TIME_X = 19
|
||||||
!TOTAL_LAG_TIME_Y = 370
|
!TOTAL_LAG_TIME_Y = 367
|
||||||
!COLLECTION_RATE_X = 22
|
!COLLECTION_RATE_X = 22
|
||||||
!COLLECTION_RATE_Y = 380
|
!COLLECTION_RATE_Y = 380
|
||||||
!TOTAL_TIME_X = 19
|
!TOTAL_TIME_X = 19
|
||||||
@@ -61,7 +59,6 @@ CreditsStats:
|
|||||||
%AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
|
%AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
|
||||||
%AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
|
%AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
|
||||||
%AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
|
%AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
|
||||||
%AddStat(BombsPlaced, 0, 0, 16, 4, !BOMBS_X, !BOMBS_Y)
|
|
||||||
%AddStat(SaveQuitCounter, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
|
%AddStat(SaveQuitCounter, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
|
||||||
%AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
|
%AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
|
||||||
%AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y)
|
%AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y)
|
||||||
|
|||||||
@@ -12,33 +12,24 @@ LoadSwordForDamage:
|
|||||||
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
macro LookupDamageSubclass(table_address)
|
|
||||||
PHP
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
|
||||||
TXA : LSR : TAX : BCS +
|
|
||||||
PLP
|
|
||||||
LDA.l <table_address>, X
|
|
||||||
LSR #4
|
|
||||||
BRA ++
|
|
||||||
+
|
|
||||||
PLP
|
|
||||||
LDA.l <table_address>, X
|
|
||||||
AND.b #$0F
|
|
||||||
++
|
|
||||||
endmacro
|
|
||||||
;================================================================================
|
|
||||||
LookupDamageLevel:
|
LookupDamageLevel:
|
||||||
CPX.w #$0918 : BNE +
|
CPX.w #$0918 : BNE +
|
||||||
LDA.l StalfosBombDamage
|
LDA.l StalfosBombDamage
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA SpecialWeapons : AND.b #$7F : CMP.b #$02 : BEQ .pseudo_table
|
PHP
|
||||||
LDA SpecialWeapons : AND.b #$80 : BNE .bomb_table
|
REP #$20 ; set 16-bit accumulator
|
||||||
%LookupDamageSubclass(Damage_Table) : RTL
|
TXA : LSR : TAX : BCS .lower
|
||||||
.bomb_table
|
.upper
|
||||||
%LookupDamageSubclass(Damage_Table_Bombs) : RTL
|
PLP
|
||||||
.pseudo_table
|
LDA.l Damage_Table, X
|
||||||
%LookupDamageSubclass(Damage_Table_Pseudo) : RTL
|
LSR #4
|
||||||
|
RTL
|
||||||
|
.lower
|
||||||
|
PLP
|
||||||
|
LDA.l Damage_Table, X
|
||||||
|
AND.b #$0F
|
||||||
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
LoadModifiedSwordLevel: ; returns short
|
LoadModifiedSwordLevel: ; returns short
|
||||||
LDA.l SwordModifier : BEQ +
|
LDA.l SwordModifier : BEQ +
|
||||||
@@ -72,39 +63,29 @@ LoadModifiedMagicLevel:
|
|||||||
LDA.l MagicConsumption ; load normal magic value
|
LDA.l MagicConsumption ; load normal magic value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; ChallengeModes - Permanent Ice Modifier ($01 bit)
|
; $7E0348 - Ice Value
|
||||||
LoadModifiedIceFloorValue:
|
LoadModifiedIceFloorValue_a11:
|
||||||
|
LDA.b RoomIndex : CMP.b #$91 : BEQ + : CMP.b #$92 : BEQ + : CMP.b #$93 : BEQ + ; mire basement currently broken - not sure why
|
||||||
|
LDA.b LinkState : CMP.b #$01 : BEQ + : CMP.b #$17 : BEQ + : CMP.b #$1C : BEQ +
|
||||||
|
LDA.b LinkSpeed : CMP.b #$02 : BEQ +
|
||||||
|
LDA.b LinkSlipping : BNE +
|
||||||
|
LDA.w TileActIce : ORA.l IceModifier : AND.b #$11 : RTL
|
||||||
|
+ : LDA.w TileActIce : AND.b #$11
|
||||||
|
RTL
|
||||||
|
LoadModifiedIceFloorValue_a01:
|
||||||
LDA.b RoomIndex : CMP.b #$91 : BEQ + : CMP.b #$92 : BEQ + : CMP.b #$93 : BEQ + ; mire basement currently broken - not sure why
|
LDA.b RoomIndex : CMP.b #$91 : BEQ + : CMP.b #$92 : BEQ + : CMP.b #$93 : BEQ + ; mire basement currently broken - not sure why
|
||||||
LDA.b LinkState : CMP.b #$01 : BEQ + : CMP.b #$17 : BEQ + : CMP.b #$1C : BEQ +
|
LDA.b LinkState : CMP.b #$01 : BEQ + : CMP.b #$17 : BEQ + : CMP.b #$1C : BEQ +
|
||||||
LDA.b LinkSpeed : CMP.b #$02 : BEQ +
|
LDA.b LinkSpeed : CMP.b #$02 : BEQ +
|
||||||
LDA.b LinkSlipping : BNE +
|
LDA.b LinkSlipping : BNE +
|
||||||
LDA.l ChallengeModes : BIT #$01 : BEQ ++
|
LDA.w TileActIce : ORA.l IceModifier : AND.b #$01 : RTL
|
||||||
LDA.l RoomIndex : CMP #$16 : BEQ ++ ; swamp supertile with current -- fine for temporary physics but impossible without boots for permanent
|
+ : LDA.w TileActIce : AND.b #$01
|
||||||
LDA.w TileActIce : ORA.l IceModifier : ORA.b #$10 : RTS
|
RTL
|
||||||
++ : LDA.w TileActIce : ORA.l IceModifier : RTS
|
|
||||||
+ : LDA.w TileActIce
|
|
||||||
RTS
|
|
||||||
LoadModifiedIceFloorValue_a11:
|
|
||||||
JSR LoadModifiedIceFloorValue : AND.b #$11 : RTL
|
|
||||||
LoadModifiedIceFloorValue_a01:
|
|
||||||
JSR LoadModifiedIceFloorValue : AND.b #$01 : RTL
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
CheckTabletSword:
|
CheckTabletSword:
|
||||||
LDA.l AllowHammerTablets : BEQ +
|
LDA.l AllowHammerTablets : BEQ +
|
||||||
LDA.l HammerEquipment : BNE .allow ; check for hammer
|
LDA.l HammerEquipment : BEQ + ; check for hammer
|
||||||
+
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .check_special
|
|
||||||
CMP.b #$03 : BEQ .check_special
|
|
||||||
CMP.b #$04 : BEQ .check_special
|
|
||||||
CMP.b #$05 : BEQ .check_special
|
|
||||||
CMP.b #$06 : BEQ .allow
|
|
||||||
CMP.b #$08 : BEQ .check_special
|
|
||||||
BRA .normal
|
|
||||||
.allow
|
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
.check_special
|
+
|
||||||
LDA.l SpecialWeaponLevel : CMP.b #$02 : !BGE .allow ; check for master bombs
|
|
||||||
.normal
|
|
||||||
LDA.l SwordEquipment ; get actual sword value
|
LDA.l SwordEquipment ; get actual sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -112,27 +93,15 @@ GetSwordLevelForEvilBarrier:
|
|||||||
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
||||||
LDA.b #$FF : RTL
|
LDA.b #$FF : RTL
|
||||||
+
|
+
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BEQ +
|
LDA.l SwordEquipment
|
||||||
LDA.l SwordEquipment : RTL
|
RTL
|
||||||
+
|
|
||||||
LDA.l SpecialWeaponLevel : RTL
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
CheckGanonHammerDamage:
|
CheckGanonHammerDamage:
|
||||||
LDA.l HammerableGanon : BEQ +
|
LDA.l HammerableGanon : BEQ +
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D8 ; original behavior except ganon
|
LDA.w SpriteTypeTable, X : CMP.b #$D8 ; original behavior except ganon
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BEQ +
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D6 ; original behavior
|
LDA.w SpriteTypeTable, X : CMP.b #$D6 ; original behavior
|
||||||
RTL
|
|
||||||
+
|
|
||||||
LDA $0E20, X : CMP.b #$D8 : BCC +
|
|
||||||
RTL
|
|
||||||
+
|
|
||||||
CMP.b #$D6 : BNE +
|
|
||||||
RTL
|
|
||||||
+
|
|
||||||
CLC
|
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
GetSmithSword:
|
GetSmithSword:
|
||||||
@@ -158,7 +127,7 @@ GetSmithSword:
|
|||||||
|
|
||||||
REP #$20 : LDA.l CurrentRupees : !SUB.w #$000A : STA.l CurrentRupees : SEP #$20 ; Take 10 rupees
|
REP #$20 : LDA.l CurrentRupees : !SUB.w #$000A : STA.l CurrentRupees : SEP #$20 ; Take 10 rupees
|
||||||
JSL ItemSet_SmithSword
|
JSL ItemSet_SmithSword
|
||||||
|
|
||||||
.done
|
.done
|
||||||
JML.l Smithy_AlreadyGotSword
|
JML.l Smithy_AlreadyGotSword
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
61
tables.asm
61
tables.asm
@@ -92,44 +92,7 @@ SmithSword:
|
|||||||
db $02 ; #$02 = Tempered Sword (default)
|
db $02 ; #$02 = Tempered Sword (default)
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18002B (Unused)
|
; 0x18002B- 0x180030 (Unused)
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B0802C ; PC 0x18002C
|
|
||||||
AllowedItemOnB:
|
|
||||||
db #$00
|
|
||||||
; $00 = None (default)
|
|
||||||
; $01 - $20 = Only selected item
|
|
||||||
; $FF = Any valid
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B0802D ; PC 0x18002D
|
|
||||||
ChallengeModes:
|
|
||||||
; ---- ---i
|
|
||||||
; i: Permanent Ice Physics
|
|
||||||
db #$00 ; #$00 = Default behavior;
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B0802E ; PC 0x18002E
|
|
||||||
GanonVulnerabilityItem:
|
|
||||||
db #$00 ; #$00 = Default behavior (silver arrows)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B0802F ; PC 0x18002F
|
|
||||||
SpecialWeapons:
|
|
||||||
db #$00
|
|
||||||
; s - - - m m m m (bitfield)
|
|
||||||
; s - only swords damage can hurt enemies
|
|
||||||
; m - special weapon mode
|
|
||||||
; $00 = Off (default)
|
|
||||||
; $01 = Bomb mode
|
|
||||||
; $02 = Pseudosword
|
|
||||||
; $03 = Byrna mode
|
|
||||||
; $04 = Somaria mode
|
|
||||||
; $05 = Canes mode
|
|
||||||
; $06 = Bee mode
|
|
||||||
; $07 = Unused
|
|
||||||
; $08 = Bugnet mode
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B08030 ; PC 0x180030
|
|
||||||
EnableSRAMTrace:
|
|
||||||
db #$00 ; #$00 = Off (default) - #$01 = On
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B08031 ; PC 0x180031
|
org $B08031 ; PC 0x180031
|
||||||
EnableEasterEggs:
|
EnableEasterEggs:
|
||||||
@@ -249,7 +212,7 @@ db $01 ; #$00 = Off - #$01 = On (default)
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B08050 ; PC 0x180050 - 0x18005C
|
org $B08050 ; PC 0x180050 - 0x18005C
|
||||||
CrystalPendantFlags_2:
|
CrystalPendantFlags_2:
|
||||||
db $02 ; Ganons Tower - because 5D is not available right now - sewers doesn't get one
|
db $02 ; Ganons Tower - because 5D is not available right now - sewers doesn't get one
|
||||||
db $00 ; Hyrule Castle
|
db $00 ; Hyrule Castle
|
||||||
db $00 ; Eastern Palace
|
db $00 ; Eastern Palace
|
||||||
db $00 ; Desert Palace
|
db $00 ; Desert Palace
|
||||||
@@ -257,7 +220,7 @@ CrystalPendantFlags_2:
|
|||||||
db $40 ; Swamp Palace
|
db $40 ; Swamp Palace
|
||||||
db $40 ; Palace of Darkness
|
db $40 ; Palace of Darkness
|
||||||
db $40 ; Misery Mire
|
db $40 ; Misery Mire
|
||||||
db $40 ; Skull Woods
|
db $40 ; Skull Woods
|
||||||
db $40 ; Ice Palace
|
db $40 ; Ice Palace
|
||||||
.hera
|
.hera
|
||||||
db $00 ; Tower of Hera
|
db $00 ; Tower of Hera
|
||||||
@@ -387,9 +350,7 @@ org $B0808E ; PC 0x18008E
|
|||||||
FakeBoots:
|
FakeBoots:
|
||||||
db $00 ; #$00 = Off (default) - #$01 = On
|
db $00 ; #$00 = Off (default) - #$01 = On
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $30808F ; PC 0x18008F
|
; 0x18008F (unused)
|
||||||
SeededRNG:
|
|
||||||
db $01 ; #$00 = Off - #$01 = Seeded RNG (default for rando)
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B08090 ; PC 0x180090 - 0x180097
|
org $B08090 ; PC 0x180090 - 0x180097
|
||||||
ProgressiveSwordLimit:
|
ProgressiveSwordLimit:
|
||||||
@@ -649,7 +610,7 @@ dw $6434 ; #6434 - Crystal
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $82A09B ; PC 0x1209B - Bank02.asm:5802 - (pool MilestoneItem_Flags:)
|
org $82A09B ; PC 0x1209B - Bank02.asm:5802 - (pool MilestoneItem_Flags:)
|
||||||
CrystalPendantFlags:
|
CrystalPendantFlags:
|
||||||
db $00 ; Sewers
|
db $00 ; Sewers
|
||||||
db $00 ; Hyrule Castle
|
db $00 ; Hyrule Castle
|
||||||
db $04 ; Eastern Palace
|
db $04 ; Eastern Palace
|
||||||
db $02 ; Desert Palace
|
db $02 ; Desert Palace
|
||||||
@@ -657,7 +618,7 @@ CrystalPendantFlags:
|
|||||||
db $10 ; Swamp Palace
|
db $10 ; Swamp Palace
|
||||||
db $02 ; Palace of Darkness
|
db $02 ; Palace of Darkness
|
||||||
db $01 ; Misery Mire
|
db $01 ; Misery Mire
|
||||||
db $40 ; Skull Woods
|
db $40 ; Skull Woods
|
||||||
db $04 ; Ice Palace
|
db $04 ; Ice Palace
|
||||||
.hera
|
.hera
|
||||||
db $01 ; Tower of Hera
|
db $01 ; Tower of Hera
|
||||||
@@ -1458,16 +1419,6 @@ db $04
|
|||||||
;AD - Small Key of Ganon's Tower
|
;AD - Small Key of Ganon's Tower
|
||||||
;AE - Reserved
|
;AE - Reserved
|
||||||
;AF - Generic Small Key
|
;AF - Generic Small Key
|
||||||
|
|
||||||
;B0 - reserved for bee traps
|
|
||||||
;B1 - reserved for bonk shuffle
|
|
||||||
;B2 - reserved for bonk shuffle
|
|
||||||
;B3 - reserved for bonk shuffle
|
|
||||||
;B4 - reserved for bonk shuffle
|
|
||||||
;B5 - reserved for bonk shuffle
|
|
||||||
;B6 - Progressive Bomb
|
|
||||||
;B7 - Progressive Cane
|
|
||||||
;B8 - Progressive Bug Net
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;;Residual Portal
|
;;Residual Portal
|
||||||
;org $8283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
;org $8283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
||||||
|
|||||||
98
timer.asm
98
timer.asm
@@ -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
|
||||||
@@ -110,23 +110,22 @@ dw #$003C, #$0000
|
|||||||
dw #$FFFF, #$7FFF
|
dw #$FFFF, #$7FFF
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawChallengeTimer:
|
DrawChallengeTimer:
|
||||||
JSR.w CheckOHKO : BCC ++
|
JSR.w CheckOHKO : BCC ++
|
||||||
AND.w #$00FF : BEQ +
|
AND.w #$00FF : BEQ +
|
||||||
LDA.w #$2807 : STA.l HUDTileMapBuffer+$90
|
LDA.w #$2807 : STA.l HUDTileMapBuffer+$90
|
||||||
LDA.w #$280A : STA.l HUDTileMapBuffer+$92
|
LDA.w #$280A : STA.l HUDTileMapBuffer+$92
|
||||||
LDA.w #$280B : STA.l HUDTileMapBuffer+$94
|
LDA.w #$280B : STA.l HUDTileMapBuffer+$94
|
||||||
LDA.w #$280C : STA.l HUDTileMapBuffer+$96
|
LDA.w #$280C : STA.l HUDTileMapBuffer+$96
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.w #$247F : STA.l HUDTileMapBuffer+$90
|
LDA.w #$247F : STA.l HUDTileMapBuffer+$90
|
||||||
STA.l HUDTileMapBuffer+$92
|
STA.l HUDTileMapBuffer+$92
|
||||||
STA.l HUDTileMapBuffer+$94
|
STA.l HUDTileMapBuffer+$94
|
||||||
STA.l HUDTileMapBuffer+$96
|
STA.l HUDTileMapBuffer+$96
|
||||||
++
|
++
|
||||||
|
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
|
||||||
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
|
LDA.w #$2807 : STA.l HUDTileMapBuffer+$92
|
||||||
LDA.w #$2807 : STA.l HUDTileMapBuffer+$92
|
LDA.l ClockStatus : AND.w #$0002 : BEQ + ; DNF / OKHO
|
||||||
LDA.l ClockStatus : AND.w #$0002 : BEQ + ; DNF / OKHO
|
|
||||||
|
|
||||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||||
LDA.w #$2808 : STA.l HUDTileMapBuffer+$94
|
LDA.w #$2808 : STA.l HUDTileMapBuffer+$94
|
||||||
@@ -148,15 +147,15 @@ DrawChallengeTimer:
|
|||||||
LDA.l TimerRestart : BNE +++ : RTL : +++
|
LDA.l TimerRestart : BNE +++ : RTL : +++
|
||||||
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 : +
|
||||||
|
|
||||||
@@ -173,15 +172,14 @@ OHKOTimer:
|
|||||||
RTL
|
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
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
INC.w UpdateHUDFlag
|
REP #$20
|
||||||
REP #$20
|
SEC
|
||||||
SEC
|
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -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.l WriteVRAMBlock
|
JSL.l WriteVRAMBlock
|
||||||
PLP : PLY
|
PLP : PLY
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
468
utilities.asm
468
utilities.asm
@@ -8,15 +8,15 @@
|
|||||||
GetSpriteID:
|
GetSpriteID:
|
||||||
JSL.l AttemptItemSubstitution
|
JSL.l AttemptItemSubstitution
|
||||||
JSR.w ResolveLootID
|
JSR.w ResolveLootID
|
||||||
CMP.b #$6D : BEQ .server_F0 ; Server Request F0
|
CMP.b #$6D : BEQ .server_F0 ; Server Request F0
|
||||||
CMP.b #$6E : BEQ .server_F1 ; Server Request F1
|
CMP.b #$6E : BEQ .server_F1 ; Server Request F1
|
||||||
CMP.b #$6F : BEQ .server_F2 ; Server Request F2
|
CMP.b #$6F : BEQ .server_F2 ; Server Request F2
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.server_F0
|
.server_F0
|
||||||
JSL.l ItemVisualServiceRequest_F0
|
JSL.l ItemVisualServiceRequest_F0
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.server_F1
|
.server_F1
|
||||||
JSL.l ItemVisualServiceRequest_F1
|
JSL.l ItemVisualServiceRequest_F1
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.server_F2
|
.server_F2
|
||||||
JSL.l ItemVisualServiceRequest_F2
|
JSL.l ItemVisualServiceRequest_F2
|
||||||
@@ -32,17 +32,18 @@ RTL
|
|||||||
; out: A - Palette
|
; out: A - Palette
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetSpritePalette:
|
GetSpritePalette:
|
||||||
JSL.l AttemptItemSubstitution
|
JSL.l AttemptItemSubstitution
|
||||||
JSR.w ResolveLootID
|
JSR.w ResolveLootID
|
||||||
.resolved
|
.resolved
|
||||||
TAX
|
TAX
|
||||||
LDA.l SpriteProperties_standing_palette, X : BIT #$80 : BNE .load_palette
|
LDA.l SpriteProperties_standing_palette, X : BIT #$80 : BNE .load_palette
|
||||||
ASL
|
ASL
|
||||||
RTL
|
RTL
|
||||||
.load_palette
|
.load_palette
|
||||||
JSL.l LoadItemPalette
|
JSL.l LoadItemPalette
|
||||||
ASL
|
ASL
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; PrepDynamicTile
|
; PrepDynamicTile
|
||||||
; in: SpriteID,X - Loot ID
|
; in: SpriteID,X - Loot ID
|
||||||
@@ -50,15 +51,15 @@ RTL
|
|||||||
PrepDynamicTile:
|
PrepDynamicTile:
|
||||||
PHX : PHY : PHB
|
PHX : PHY : PHB
|
||||||
JSR.w ResolveLootID
|
JSR.w ResolveLootID
|
||||||
-
|
-
|
||||||
JSR.w LoadDynamicTileOAMTable
|
JSR.w LoadDynamicTileOAMTable
|
||||||
JSL TransferItemReceiptToBuffer_using_ReceiptID
|
JSL TransferItemReceiptToBuffer_using_ReceiptID
|
||||||
SEP #$30
|
SEP #$30
|
||||||
PLB : PLY : PLX
|
PLB : PLY : PLX
|
||||||
RTL
|
RTL
|
||||||
.loot_resolved
|
.loot_resolved
|
||||||
PHX : PHY : PHB
|
PHX : PHY : PHB
|
||||||
BRA -
|
BRA -
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -67,34 +68,34 @@ RTL
|
|||||||
; out: A - Loot ID
|
; out: A - Loot ID
|
||||||
;-------------------------------------------------------------------------------- 20/847B
|
;-------------------------------------------------------------------------------- 20/847B
|
||||||
LoadDynamicTileOAMTable:
|
LoadDynamicTileOAMTable:
|
||||||
PHP
|
PHP
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$0000 : STA.l SpriteOAM : STA.l SpriteOAM+2
|
LDA.w #$0000 : STA.l SpriteOAM : STA.l SpriteOAM+2
|
||||||
LDA.w #$0200 : STA.l SpriteOAM+6
|
LDA.w #$0200 : STA.l SpriteOAM+6
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b #$24 : STA.l SpriteOAM+4
|
LDA.b #$24 : STA.l SpriteOAM+4
|
||||||
|
|
||||||
LDA.w SpriteID,X
|
LDA.w SpriteID,X
|
||||||
JSL.l GetSpritePalette_resolved
|
JSL.l GetSpritePalette_resolved
|
||||||
STA.l SpriteOAM+5 : STA.l SpriteOAM+13
|
STA.l SpriteOAM+5 : STA.l SpriteOAM+13
|
||||||
PHX
|
PHX
|
||||||
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$0400 : STA.l SpriteOAM+7 : STA.l SpriteOAM+14
|
LDA.w #$0400 : STA.l SpriteOAM+7 : STA.l SpriteOAM+14
|
||||||
LDA.w #$0000 : STA.l SpriteOAM+14
|
LDA.w #$0000 : STA.l SpriteOAM+14
|
||||||
LDA.w #$0800 : STA.l SpriteOAM+9
|
LDA.w #$0800 : STA.l SpriteOAM+9
|
||||||
LDA.w #$3400 : STA.l SpriteOAM+11
|
LDA.w #$3400 : STA.l SpriteOAM+11
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b #$04 : STA.l SpriteOAM
|
LDA.b #$04 : STA.l SpriteOAM
|
||||||
|
|
||||||
.done
|
.done
|
||||||
TXA
|
TXA
|
||||||
PLX
|
PLX
|
||||||
PLP
|
PLP
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; DrawDynamicTile
|
; DrawDynamicTile
|
||||||
@@ -104,66 +105,66 @@ RTS
|
|||||||
; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) - lol (May 25th, 2019)
|
; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) - lol (May 25th, 2019)
|
||||||
;-------------------------------------------------------------------------------- 2084B8
|
;-------------------------------------------------------------------------------- 2084B8
|
||||||
DrawDynamicTile:
|
DrawDynamicTile:
|
||||||
PHX
|
PHX
|
||||||
TAX
|
TAX
|
||||||
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||||
|
|
||||||
.full
|
.full
|
||||||
PLX
|
PLX
|
||||||
LDA.b #$01 : STA.b Scrap06
|
LDA.b #$01 : STA.b Scrap06
|
||||||
LDA.b #$0C : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$0C : JSL.l OAM_AllocateFromRegionC
|
||||||
LDA.b #$02 : PHA
|
LDA.b #$02 : PHA
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
PLX
|
PLX
|
||||||
LDA.b #$02 : STA.b Scrap06
|
LDA.b #$02 : STA.b Scrap06
|
||||||
LDA.b #$10 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$10 : JSL.l OAM_AllocateFromRegionC
|
||||||
LDA.b #$03 : PHA
|
LDA.b #$03 : PHA
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
||||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||||
STZ.b Scrap07
|
STZ.b Scrap07
|
||||||
LDA.b #$7E : PHB : PHA : PLB
|
LDA.b #$7E : PHB : PHA : PLB
|
||||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||||
JSL Sprite_DrawMultiple_quantity_preset
|
JSL Sprite_DrawMultiple_quantity_preset
|
||||||
LDA.b #$00 : STA.l SpriteSkipEOR
|
LDA.b #$00 : STA.l SpriteSkipEOR
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr ; leave the pointer in the right spot to draw the shadow, if desired
|
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr ; leave the pointer in the right spot to draw the shadow, if desired
|
||||||
LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2
|
LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawDynamicTileNoShadow:
|
DrawDynamicTileNoShadow:
|
||||||
PHX
|
PHX
|
||||||
TAX
|
TAX
|
||||||
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||||
|
|
||||||
.full
|
.full
|
||||||
PLX
|
PLX
|
||||||
LDA.b #$01 : STA.b Scrap06
|
LDA.b #$01 : STA.b Scrap06
|
||||||
LDA.b #$04 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$04 : JSL.l OAM_AllocateFromRegionC
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
PLX
|
PLX
|
||||||
LDA.b #$02 : STA.b Scrap06
|
LDA.b #$02 : STA.b Scrap06
|
||||||
LDA.b #$08 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$08 : JSL.l OAM_AllocateFromRegionC
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
||||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||||
STZ.b Scrap07
|
STZ.b Scrap07
|
||||||
LDA.b #$7E : PHB : PHA : PLB
|
LDA.b #$7E : PHB : PHA : PLB
|
||||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||||
JSL Sprite_DrawMultiple_quantity_preset
|
JSL Sprite_DrawMultiple_quantity_preset
|
||||||
LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional
|
LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr
|
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr
|
||||||
LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2
|
LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -172,12 +173,12 @@ LoadModifiedTileBufferAddress:
|
|||||||
PHA
|
PHA
|
||||||
LDA.l TileUploadOffsetOverride : BEQ +
|
LDA.l TileUploadOffsetOverride : BEQ +
|
||||||
TAX
|
TAX
|
||||||
LDY.w #$0002
|
LDY.w #$0002
|
||||||
LDA.w #$0000 : STA.l TileUploadOffsetOverride
|
LDA.w #$0000 : STA.l TileUploadOffsetOverride
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
LDX.w #$2D40
|
LDX.w #$2D40
|
||||||
LDY.w #$0002
|
LDY.w #$0002
|
||||||
.done
|
.done
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -189,30 +190,30 @@ RTL
|
|||||||
; out: Carry - 1 = On Screen, 0 = Off Screen
|
; out: Carry - 1 = On Screen, 0 = Off Screen
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Sprite_IsOnscreen:
|
Sprite_IsOnscreen:
|
||||||
JSR .check_sprite
|
JSR .check_sprite
|
||||||
BCS +
|
BCS +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.b BG2H : PHA : !SUB.w #$0F : STA.b BG2H
|
LDA.b BG2H : PHA : !SUB.w #$0F : STA.b BG2H
|
||||||
LDA.b BG2V : PHA : !SUB.w #$0F : STA.b BG2V
|
LDA.b BG2V : PHA : !SUB.w #$0F : STA.b BG2V
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSR .check_sprite
|
JSR .check_sprite
|
||||||
REP #$20
|
REP #$20
|
||||||
PLA : STA.b BG2V
|
PLA : STA.b BG2V
|
||||||
PLA : STA.b BG2H
|
PLA : STA.b BG2H
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.check_sprite
|
.check_sprite
|
||||||
LDA.w SpritePosXLow, X : CMP.b BG2H
|
LDA.w SpritePosXLow, X : CMP.b BG2H
|
||||||
LDA.w SpritePosXHigh, X : SBC.b BG2H+1 : BNE .offscreen
|
LDA.w SpritePosXHigh, X : SBC.b BG2H+1 : BNE .offscreen
|
||||||
|
|
||||||
LDA.w SpritePosYLow, X : CMP.b BG2V
|
LDA.w SpritePosYLow, X : CMP.b BG2V
|
||||||
LDA.w SpritePosYHigh, X : SBC.b BG2V+1 : BNE .offscreen
|
LDA.w SpritePosYHigh, X : SBC.b BG2V+1 : BNE .offscreen
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
.offscreen
|
.offscreen
|
||||||
CLC
|
CLC
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -278,27 +279,27 @@ RTL
|
|||||||
; in: Y(w) - Address of Data to Copy
|
; in: Y(w) - Address of Data to Copy
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
WriteVRAMBlock:
|
WriteVRAMBlock:
|
||||||
PHX
|
PHX
|
||||||
LDX.w GFXStripes ; get pointer
|
LDX.w GFXStripes ; get pointer
|
||||||
AND.w #$7F : STA.w GFXStripes+2, X : INX #2 ; set destination
|
AND.w #$7F : STA.w GFXStripes+2, X : INX #2 ; set destination
|
||||||
PLA : ASL : AND.w #$3FFF : STA.w GFXStripes+2, X : INX #2 ; set length
|
PLA : ASL : AND.w #$3FFF : STA.w GFXStripes+2, X : INX #2 ; set length
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
TYX ; set X to source
|
TYX ; set X to source
|
||||||
PHA
|
PHA
|
||||||
TXA : !ADD #$1002 : TAY ; set Y to dest
|
TXA : !ADD #$1002 : TAY ; set Y to dest
|
||||||
PLA
|
PLA
|
||||||
;A is already the value we need for mvn
|
;A is already the value we need for mvn
|
||||||
MVN $7F7E ; currently we transfer from our buffers in 7F to the vram buffer in 7E
|
MVN $7F7E ; currently we transfer from our buffers in 7F to the vram buffer in 7E
|
||||||
|
|
||||||
!ADD 1, s ; add the length in A to the stack pointer on the top of the stack
|
!ADD 1, s ; add the length in A to the stack pointer on the top of the stack
|
||||||
PLX : TAX ; pull and promptly ignore, copying the value we just got over it
|
PLX : TAX ; pull and promptly ignore, copying the value we just got over it
|
||||||
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$FF : STA.w GFXStripes+$02, X
|
LDA.b #$FF : STA.w GFXStripes+$02, X
|
||||||
STX.w GFXStripes
|
STX.w GFXStripes
|
||||||
LDA.b #01 : STA.w NMISTRIPES
|
LDA.b #01 : STA.w NMISTRIPES
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;Byte 1 byte 2 Byte 3 byte 4
|
;Byte 1 byte 2 Byte 3 byte 4
|
||||||
@@ -318,126 +319,109 @@ RTL
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
DynamicDrawCleanup:
|
DynamicDrawCleanup:
|
||||||
PHA
|
PHA
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$F000
|
LDA.w #$F000
|
||||||
STA.w OAMBuffer
|
STA.w OAMBuffer
|
||||||
STA.w OAMBuffer+$04
|
STA.w OAMBuffer+$04
|
||||||
STA.w OAMBuffer+$08
|
STA.w OAMBuffer+$08
|
||||||
STA.w OAMBuffer+$0C
|
STA.w OAMBuffer+$0C
|
||||||
STZ.w OAMBuffer+$02
|
STZ.w OAMBuffer+$02
|
||||||
STZ.w OAMBuffer+$06
|
STZ.w OAMBuffer+$06
|
||||||
STZ.w OAMBuffer+$0A
|
STZ.w OAMBuffer+$0A
|
||||||
STZ.w OAMBuffer+$0E
|
STZ.w OAMBuffer+$0E
|
||||||
SEP #$20
|
SEP #$20
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
CheckReceivedItemPropertiesBeforeLoad:
|
CheckReceivedItemPropertiesBeforeLoad:
|
||||||
PHX
|
PHX
|
||||||
LDX.w CurrentSpriteSlot
|
LDX.w CurrentSpriteSlot
|
||||||
LDA.w AncillaID,X : CMP.b #$29 : BEQ .falling_sprite
|
LDA.w AncillaID,X : CMP.b #$29 : BEQ .falling_sprite
|
||||||
PLX
|
PLX
|
||||||
LDA.b RoomIndex : BEQ .normalCode
|
LDA.b RoomIndex : BEQ .normalCode
|
||||||
LDA.l RoomFade : BNE .load_palette
|
LDA.l RoomFade : BNE .load_palette
|
||||||
.normalCode
|
.normalCode
|
||||||
LDA.l SpriteProperties_chest_palette,X : BIT #$80 : BNE .load_palette
|
LDA.l SpriteProperties_chest_palette,X : BIT #$80 : BNE .load_palette
|
||||||
RTL
|
RTL
|
||||||
.load_palette
|
.load_palette
|
||||||
JSL.l LoadItemPalette
|
JSL.l LoadItemPalette
|
||||||
RTL
|
RTL
|
||||||
.falling_sprite
|
.falling_sprite
|
||||||
PLX
|
PLX
|
||||||
LDA.l SpriteProperties_standing_palette,X : BIT #$80 : BNE .load_palette
|
LDA.l SpriteProperties_standing_palette,X : BIT #$80 : BNE .load_palette
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
LoadItemPalette:
|
LoadItemPalette:
|
||||||
; In: X - Loot ID
|
; In: X - Loot ID
|
||||||
; Out: A - Sprite palette index
|
; Out: A - Sprite palette index
|
||||||
PHX : PHY : PHB
|
PHX : PHY : PHB
|
||||||
LDA.b #PalettesVanillaBank>>16 : STA.b Scrap0C
|
LDA.b #PalettesVanillaBank>>16 : STA.b Scrap0C
|
||||||
PEA $7E00
|
PEA $7E00
|
||||||
PLB : PLB
|
PLB : PLB
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
|
TXA : ASL : TAX
|
||||||
CPX.w #$00C0 : BNE .not_prog_bombs
|
LDA.l SpriteProperties_palette_addr,X : STA.b Scrap0A
|
||||||
LDA.l SpecialWeaponLevel : AND.w #$00FF : BNE +
|
LDY.w #$000E
|
||||||
LDA.w #PalettesVanilla_blue_ice+$0E : BRA .continue ; none
|
|
||||||
+ DEC : BNE +
|
|
||||||
LDA.w #PalettesVanilla_green_blue_guard+$0E : BRA .continue ; fighter
|
|
||||||
+ DEC : BNE +
|
|
||||||
LDA.w #PalettesVanilla_blue_ice+$0E : BRA .continue ; master
|
|
||||||
+ DEC : BNE +
|
|
||||||
LDA.w #PalettesVanilla_red_melon+$0E : BRA .continue ; tempered
|
|
||||||
+ LDA.w #PalettesCustom_golden_bombs : BRA .continue ; gold
|
|
||||||
|
|
||||||
.not_prog_bombs
|
|
||||||
TXA : ASL : TAX
|
|
||||||
LDA.l SpriteProperties_palette_addr, X
|
|
||||||
|
|
||||||
.continue
|
|
||||||
STA.b Scrap0A
|
|
||||||
|
|
||||||
LDY.w #$000E
|
|
||||||
JSR.w AuxPaletteCheck : BCS .aux
|
JSR.w AuxPaletteCheck : BCS .aux
|
||||||
LDA.w TransparencyFlag : BNE .SP05
|
LDA.w TransparencyFlag : BNE .SP05
|
||||||
-
|
-
|
||||||
LDA.b [Scrap0A], Y
|
LDA.b [Scrap0A], Y
|
||||||
STA.w PaletteBuffer+$0170,Y
|
STA.w PaletteBuffer+$0170,Y
|
||||||
DEY #2
|
DEY #2
|
||||||
BPL -
|
BPL -
|
||||||
LDA.w #$0003
|
LDA.w #$0003
|
||||||
BRA .done
|
BRA .done
|
||||||
.SP05
|
.SP05
|
||||||
-
|
-
|
||||||
LDA.b [Scrap0A], Y
|
LDA.b [Scrap0A], Y
|
||||||
STA.w PaletteBuffer+$01B0,Y
|
STA.w PaletteBuffer+$01B0,Y
|
||||||
DEY #2
|
DEY #2
|
||||||
BPL -
|
BPL -
|
||||||
LDA.w #$0005
|
LDA.w #$0005
|
||||||
.done
|
.done
|
||||||
SEP #$30
|
SEP #$30
|
||||||
PLB : PLY : PLX
|
PLB : PLY : PLX
|
||||||
INC.b NMICGRAM
|
INC.b NMICGRAM
|
||||||
RTL
|
RTL
|
||||||
.aux
|
.aux
|
||||||
LDA.w TransparencyFlag : BNE .SP05_aux
|
LDA.w TransparencyFlag : BNE .SP05_aux
|
||||||
-
|
-
|
||||||
LDA.b [Scrap0A], Y
|
LDA.b [Scrap0A], Y
|
||||||
STA.w PaletteBufferAux+$0170,Y
|
STA.w PaletteBufferAux+$0170,Y
|
||||||
DEY #2
|
DEY #2
|
||||||
BPL -
|
BPL -
|
||||||
LDA.w #$0003
|
LDA.w #$0003
|
||||||
BRA .done
|
BRA .done
|
||||||
.SP05_aux
|
.SP05_aux
|
||||||
-
|
-
|
||||||
LDA.b [Scrap0A], Y
|
LDA.b [Scrap0A], Y
|
||||||
STA.w PaletteBufferAux+$01B0,Y
|
STA.w PaletteBufferAux+$01B0,Y
|
||||||
DEY #2
|
DEY #2
|
||||||
BPL -
|
BPL -
|
||||||
LDA.w #$0005
|
LDA.w #$0005
|
||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
TransferVRAMStripes:
|
TransferVRAMStripes:
|
||||||
JSL.l TransferNewNameStripes
|
JSL.l TransferNewNameStripes
|
||||||
JSL.l DoDungeonMapBossIcon
|
JSL.l DoDungeonMapBossIcon
|
||||||
LDA.b NMISTRIPES : CMP.b #$01 ; What we wrote over
|
LDA.b NMISTRIPES : CMP.b #$01 ; What we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
|
||||||
ItemReceiptWidthCheck:
|
ItemReceiptWidthCheck:
|
||||||
PHX
|
PHX
|
||||||
LDX.w CurrentSpriteSlot
|
LDX.w CurrentSpriteSlot
|
||||||
LDA.w AncillaID,X : CMP.b #$29 : BEQ .falling_sprite
|
LDA.w AncillaID,X : CMP.b #$29 : BEQ .falling_sprite
|
||||||
PLX
|
PLX
|
||||||
LDA.l SpriteProperties_chest_width, X
|
LDA.l SpriteProperties_chest_width, X
|
||||||
RTL
|
RTL
|
||||||
.falling_sprite
|
.falling_sprite
|
||||||
PLX
|
PLX
|
||||||
LDA.l SpriteProperties_standing_width, X
|
LDA.l SpriteProperties_standing_width, X
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
AuxPaletteCheck:
|
AuxPaletteCheck:
|
||||||
@@ -446,17 +430,17 @@ AuxPaletteCheck:
|
|||||||
; We have to put an item's palette in the aux buffer in rooms where standing
|
; We have to put an item's palette in the aux buffer in rooms where standing
|
||||||
; item gfx are loaded in the middle of a fade-in/out such as the spiral staircase
|
; item gfx are loaded in the middle of a fade-in/out such as the spiral staircase
|
||||||
; fade for GT torch room and the Hera cage.
|
; fade for GT torch room and the Hera cage.
|
||||||
PHX
|
PHX
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA.w ItemReceiptMethod : BNE .main_buffer ; Never use aux if we're actually receiving an item
|
LDA.w ItemReceiptMethod : BNE .main_buffer ; Never use aux if we're actually receiving an item
|
||||||
LDA.w RoomIndex : CMP.b #$8C : BEQ .aux_buffer ; GT torch/Hope room
|
LDA.w RoomIndex : CMP.b #$8C : BEQ .aux_buffer ; GT torch/Hope room
|
||||||
LDA.w RoomIndex : CMP.b #$87 : BEQ .aux_buffer ; Hera cage/basement
|
LDA.w RoomIndex : CMP.b #$87 : BEQ .aux_buffer ; Hera cage/basement
|
||||||
.main_buffer
|
.main_buffer
|
||||||
REP #$31
|
REP #$31
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
.aux_buffer
|
.aux_buffer
|
||||||
SEC
|
SEC
|
||||||
REP #$30
|
REP #$30
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|||||||
@@ -139,8 +139,6 @@ RoomTag_GetHeartForPrize = $81C709
|
|||||||
RoomTag_GetHeartForPrize_spawn_prize = $81C731
|
RoomTag_GetHeartForPrize_spawn_prize = $81C731
|
||||||
RoomTag_GetHeartForPrize_delete_tag = $81C749
|
RoomTag_GetHeartForPrize_delete_tag = $81C749
|
||||||
Chicken_SpawnAvengerChicken = $86A7DB
|
Chicken_SpawnAvengerChicken = $86A7DB
|
||||||
Link_UseHammer = $879F82
|
|
||||||
Link_UseBugNet = $87AFEE
|
|
||||||
Link_PerformOpenChest_no_replacement = $87B59F
|
Link_PerformOpenChest_no_replacement = $87B59F
|
||||||
Sprite_EA_HeartContainer_main = $85EF47
|
Sprite_EA_HeartContainer_main = $85EF47
|
||||||
Ancilla_ExecuteAll = $88832B
|
Ancilla_ExecuteAll = $88832B
|
||||||
|
|||||||
@@ -1,141 +0,0 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
!ANCILLA_DAMAGE = "$06EC84"
|
|
||||||
; start with X = sprite index, A = ancilla type index
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckAncillaVulnerability:
|
|
||||||
PHA
|
|
||||||
LDA $0EE0, X : BNE .not_vulnerable_pla
|
|
||||||
PLA
|
|
||||||
PHX : PHA
|
|
||||||
LDA.l GanonVulnerabilityItem
|
|
||||||
TAX : PLA
|
|
||||||
CMP.l Ganon_CheckByAncilla, X : BNE +
|
|
||||||
PLX : BRA .vulnerable
|
|
||||||
+
|
|
||||||
PLX : PHA
|
|
||||||
LDA.l GanonVulnerabilityItem
|
|
||||||
CMP #$01 : BEQ .silver_arrows
|
|
||||||
CMP #$11 : BEQ .somaria
|
|
||||||
BRA .not_vulnerable_pla
|
|
||||||
.silver_arrows
|
|
||||||
PLA : CMP #$09 : BNE .not_vulnerable
|
|
||||||
LDA BowEquipment : CMP.b #$03 : !BGE +
|
|
||||||
LDA #$09 : BRA .not_vulnerable
|
|
||||||
+
|
|
||||||
BRA .vulnerable
|
|
||||||
.hammer
|
|
||||||
BRA .not_vulnerable_pla ; NYI
|
|
||||||
.golden_bee
|
|
||||||
BRA .not_vulnerable_pla ; NYI
|
|
||||||
.somaria
|
|
||||||
PLA : CMP #$01 : BEQ .vulnerable
|
|
||||||
CMP #$2C : BEQ .vulnerable
|
|
||||||
BRA .vulnerable
|
|
||||||
.vulnerable
|
|
||||||
PHX
|
|
||||||
LDA.l GanonVulnerabilityItem
|
|
||||||
TAX
|
|
||||||
LDA.l Ganon_IFrameDuration, X
|
|
||||||
PLX
|
|
||||||
STA $0EE0, X ; give the poor pig some iframes
|
|
||||||
LDA #$20 : STA $0F10, X
|
|
||||||
LDA #$09
|
|
||||||
RTL
|
|
||||||
.not_vulnerable_pla
|
|
||||||
PLA
|
|
||||||
.not_vulnerable
|
|
||||||
PHX : TAX
|
|
||||||
LDA.l !ANCILLA_DAMAGE, X
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
; end with X = sprite index, A = damage class
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!ANCILLA_CHECK_SPRITE_DAMAGE_PRESET_CLASS = "$06ECE6"
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckPowderVulnerability: ; we know it's powder
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP #$05 : BNE .normal ; ganon not vulnerable to powder
|
|
||||||
LDA $0E20, X : CMP #$D7 : BNE .normal ; not stunned ganon
|
|
||||||
LDA $0EE0, X : BNE .normal ; ganon has iframes
|
|
||||||
LDA.l Ganon_IFrameDuration+$05
|
|
||||||
STA $0EE0, X ; give the poor pig some iframes
|
|
||||||
LDA #$20 : STA $0F10, X
|
|
||||||
LDA #$09
|
|
||||||
BRA .done
|
|
||||||
.normal
|
|
||||||
LDA.b #$0A
|
|
||||||
.done
|
|
||||||
JSL.l !ANCILLA_CHECK_SPRITE_DAMAGE_PRESET_CLASS
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckBeeVulnerability: ; we know it's a bee
|
|
||||||
; X is bee sprite index
|
|
||||||
; Y is target sprite index
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP #$10 : BNE .normal ; ganon not vulnerable to bee
|
|
||||||
LDA $0E20, Y : CMP #$D7 : BNE .normal ; not stunned ganon
|
|
||||||
LDA $0EE0, Y : BNE .normal ; ganon has iframes
|
|
||||||
LDA.l Ganon_IFrameDuration+$10
|
|
||||||
STA $0EE0, Y ; give the poor pig some iframes
|
|
||||||
LDA #$20 : STA $0F10, Y
|
|
||||||
LDA #$09
|
|
||||||
BRA .done
|
|
||||||
.normal
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .regular_bee
|
|
||||||
LDA.w $0ED0, X
|
|
||||||
BRA .done
|
|
||||||
.regular_bee
|
|
||||||
LDA.b #$01
|
|
||||||
.done
|
|
||||||
TYX
|
|
||||||
JSL.l !ANCILLA_CHECK_SPRITE_DAMAGE_PRESET_CLASS
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckInvincible:
|
|
||||||
LDA $04C5 : CMP.b #$02 : BEQ .not_transparent
|
|
||||||
LDA $0E20, X : CMP #$D7 : BNE .transparent ; non-stunned ganon
|
|
||||||
LDA $0301 : AND.b #$0A : BEQ .transparent ; normal behavior if not hammer
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP #$0C : BNE .transparent ; ganon not vulnerable to hammer
|
|
||||||
.not_transparent
|
|
||||||
LDA #$00 : RTL
|
|
||||||
.transparent
|
|
||||||
LDA #$01 : RTL
|
|
||||||
; return non-zero A if ganon should be invincible
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckHammerVulnerability: ; we know it's hammer
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP #$0C : BNE .normal ; ganon not vulnerable to hammer
|
|
||||||
LDA $0E20, X : CMP #$D7 : BNE .normal ; not stunned ganon
|
|
||||||
LDA $0EE0, X : BNE .normal ; ganon has iframes
|
|
||||||
LDA.l Ganon_IFrameDuration+$0C
|
|
||||||
STA $0EE0, X ; give the poor pig some iframes
|
|
||||||
LDA #$20 : STA $0F10, X
|
|
||||||
LDA #$09 : STA $0CF2 ; set damage class to silver
|
|
||||||
SEC : RTL
|
|
||||||
.normal
|
|
||||||
CLC : RTL
|
|
||||||
; return carry set bit if stunned Ganon and Ganon vulnerable to hammer
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
CheckBeeBoss:
|
|
||||||
; Y is sprite index
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP #$06 : BNE .not_bee_mode
|
|
||||||
LDA #$00 : RTL
|
|
||||||
.not_bee_mode
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP #$10 : BNE .normal ; ganon not vulnerable to bee
|
|
||||||
LDA $0E20, Y : CMP #$D7 : BNE .normal ; not stunned ganon
|
|
||||||
LDA #$00 : RTL
|
|
||||||
.normal
|
|
||||||
LDA $0B6B, Y : AND.b #$02
|
|
||||||
RTL
|
|
||||||
; return non-zero A if entity is a boss (and bee should not attack)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckByAncilla:
|
|
||||||
db #$00 ; default behavior--we shouldn't be checking the table here anyway
|
|
||||||
db #$00, #$05, #$1F, #$07, #$00
|
|
||||||
db #$02, #$0B, #$19, #$18, #$1C
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
db #$00, #$00, #$31, #$00, #$00
|
|
||||||
Ganon_IFrameDuration:
|
|
||||||
db #$00 ; default behavior--we shouldn't be here anyway
|
|
||||||
db #$00, #$00, #$00, #$34, #$00
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
10
zelda.asm
10
zelda.asm
@@ -9,11 +9,11 @@ SpawnZelda:
|
|||||||
+ RTL
|
+ RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
EndRainState:
|
EndRainState:
|
||||||
LDA.l InitProgressIndicator : BIT.b #$80 : BNE + ; check for instant post-aga
|
LDA.l InitProgressIndicator : BIT.b #$80 : BNE + ; check for instant post-aga
|
||||||
LDA.b #$02 : STA.l ProgressIndicator
|
LDA.b #$02 : STA.l ProgressIndicator
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.b #$03 : STA.l ProgressIndicator
|
LDA.b #$03 : STA.l ProgressIndicator
|
||||||
LDA.l InitLumberjackOW : STA.l OverworldEventDataWRAM+$02
|
LDA.l InitLumberjackOW : STA.l OverworldEventDataWRAM+$02
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user