Merge branch 'master' into DRMain
# Conflicts: # LTTP_RND_GeneralBugfixes.asm # catfish.asm # compasses.asm # darkworldspawn.asm # hooks.asm # inventory.asm # newitems.asm # shopkeeper.asm # stats.asm # tables.asm Adn some updates from DR
This commit is contained in:
@@ -112,6 +112,7 @@ incsrc sharedplayerpalettefix.asm
|
|||||||
|
|
||||||
;org $208000 ; bank #$20
|
;org $208000 ; bank #$20
|
||||||
org $A08000 ; bank #$A0
|
org $A08000 ; bank #$A0
|
||||||
|
incsrc newitems.asm ; LEAVE THIS AS FIRST
|
||||||
incsrc itemdowngrade.asm
|
incsrc itemdowngrade.asm
|
||||||
incsrc bugfixes.asm
|
incsrc bugfixes.asm
|
||||||
incsrc darkworldspawn.asm
|
incsrc darkworldspawn.asm
|
||||||
@@ -140,7 +141,6 @@ incsrc catfish.asm
|
|||||||
incsrc flute.asm
|
incsrc flute.asm
|
||||||
incsrc dungeondrops.asm
|
incsrc dungeondrops.asm
|
||||||
incsrc halfmagicbat.asm
|
incsrc halfmagicbat.asm
|
||||||
incsrc newitems.asm
|
|
||||||
incsrc mantle.asm
|
incsrc mantle.asm
|
||||||
incsrc swordswap.asm
|
incsrc swordswap.asm
|
||||||
incsrc scratchpad.asm
|
incsrc scratchpad.asm
|
||||||
@@ -149,7 +149,7 @@ incsrc msu.asm
|
|||||||
incsrc dialog.asm
|
incsrc dialog.asm
|
||||||
incsrc entrances.asm
|
incsrc entrances.asm
|
||||||
incsrc clock.asm
|
incsrc clock.asm
|
||||||
incsrc accessability.asm
|
incsrc accessibility.asm
|
||||||
incsrc heartbeep.asm
|
incsrc heartbeep.asm
|
||||||
incsrc capacityupgrades.asm
|
incsrc capacityupgrades.asm
|
||||||
warnpc $A18000
|
warnpc $A18000
|
||||||
@@ -183,6 +183,7 @@ incsrc doorframefixes.asm
|
|||||||
incsrc music.asm
|
incsrc music.asm
|
||||||
incsrc roomloading.asm
|
incsrc roomloading.asm
|
||||||
incsrc icepalacegraphics.asm
|
incsrc icepalacegraphics.asm
|
||||||
|
incsrc firebarlayer.asm
|
||||||
incsrc glitched.asm
|
incsrc glitched.asm
|
||||||
incsrc hardmode.asm
|
incsrc hardmode.asm
|
||||||
incsrc goalitem.asm
|
incsrc goalitem.asm
|
||||||
@@ -492,6 +493,9 @@ LoadGearPalettes_bunny:
|
|||||||
org $02FD95 ; 17D95 - Bank0E.asm: 3742 Note: Different bank
|
org $02FD95 ; 17D95 - Bank0E.asm: 3742 Note: Different bank
|
||||||
LoadGearPalettes_variable:
|
LoadGearPalettes_variable:
|
||||||
|
|
||||||
|
org $02FEAB
|
||||||
|
Filter_Majorly_Whiten_Color:
|
||||||
|
|
||||||
org $05A51D
|
org $05A51D
|
||||||
Sprite_SpawnFallingItem:
|
Sprite_SpawnFallingItem:
|
||||||
|
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
;================================================================================
|
|
||||||
; Accessability Fixes
|
|
||||||
;================================================================================
|
|
||||||
FlipGreenPendant:
|
|
||||||
LDA $0C : CMP #$38 : BNE + ; check if we have green pendant
|
|
||||||
ORA #$40 : STA $0C ; flip it
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA $0D : STA $0802, X ; stuff we wrote over "Set CHR, palette, and priority of the sprite"
|
|
||||||
LDA $0C : STA $0803, X
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
|
||||||
!EPILEPSY_TIMER = "$7F5041"
|
|
||||||
SetEtherFlicker:
|
|
||||||
LDA.l Seizure_Safety : BNE +
|
|
||||||
LDA $031D : CMP.b #$0B : RTL
|
|
||||||
+
|
|
||||||
LDA !EPILEPSY_TIMER : INC : STA !EPILEPSY_TIMER
|
|
||||||
|
|
||||||
LDA.l Seizure_Safety : CMP !EPILEPSY_TIMER : BNE +++
|
|
||||||
LDA.b #$00 : STA !EPILEPSY_TIMER : BRA ++
|
|
||||||
+++
|
|
||||||
LSR : CMP !EPILEPSY_TIMER : !BLT ++
|
|
||||||
SEP #$02 : RTL
|
|
||||||
++
|
|
||||||
REP #$02
|
|
||||||
+
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
|
||||||
SetAttractMaidenFlicker:
|
|
||||||
LDA.l Seizure_Safety : BNE +
|
|
||||||
JSL.l Filter_MajorWhitenMain : LDA $5F : RTL
|
|
||||||
+
|
|
||||||
LDA #$00
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
|
||||||
263
accessibility.asm
Normal file
263
accessibility.asm
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
;================================================================================
|
||||||
|
; Accessibility Fixes
|
||||||
|
;================================================================================
|
||||||
|
FlipGreenPendant:
|
||||||
|
LDA $0C : CMP #$38 : BNE + ; check if we have green pendant
|
||||||
|
ORA #$40 : STA $0C ; flip it
|
||||||
|
+
|
||||||
|
|
||||||
|
LDA $0D : STA $0802, X ; stuff we wrote over "Set CHR, palette, and priority of the sprite"
|
||||||
|
LDA $0C : STA $0803, X
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
ConditionalLightning:
|
||||||
|
CMP.b #$05 : BEQ ++
|
||||||
|
CMP.b #$2C : BEQ ++
|
||||||
|
CMP.b #$5A : BEQ ++
|
||||||
|
LDA.l DisableFlashing : BNE ++
|
||||||
|
LDA.b #$32 : STA.w $9A
|
||||||
|
RTL
|
||||||
|
++
|
||||||
|
LDA.b #$72
|
||||||
|
STA $9A
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
ConditionalWhitenBg:
|
||||||
|
LDX.b #$00
|
||||||
|
LDA.l DisableFlashing
|
||||||
|
REP #$20 : BNE +
|
||||||
|
LDA $00,X
|
||||||
|
JSR WhitenLoopReal
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
LDA $00
|
||||||
|
JSR WhitenLoopDummy
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
WhitenLoopReal:
|
||||||
|
-
|
||||||
|
LDA $7EC340, X : JSL Filter_Majorly_Whiten_Color : STA $7EC540, X
|
||||||
|
LDA $7EC350, X : JSL Filter_Majorly_Whiten_Color : STA $7EC550, X
|
||||||
|
LDA $7EC360, X : JSL Filter_Majorly_Whiten_Color : STA $7EC560, X
|
||||||
|
LDA $7EC370, X : JSL Filter_Majorly_Whiten_Color : STA $7EC570, X
|
||||||
|
LDA $7EC380, X : JSL Filter_Majorly_Whiten_Color : STA $7EC580, X
|
||||||
|
LDA $7EC390, X : JSL Filter_Majorly_Whiten_Color : STA $7EC590, X
|
||||||
|
LDA $7EC3A0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5A0, X
|
||||||
|
LDA $7EC3B0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5B0, X
|
||||||
|
LDA $7EC3C0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5C0, X
|
||||||
|
LDA $7EC3D0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5D0, X
|
||||||
|
LDA $7EC3E0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5E0, X
|
||||||
|
INX #2 : CPX.b #$10 : BEQ +
|
||||||
|
JMP -
|
||||||
|
+
|
||||||
|
LDA $7EC3F0 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F0
|
||||||
|
LDA $7EC3F2 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F2
|
||||||
|
LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F4
|
||||||
|
LDA $10 : CMP.w #$07 : BNE +
|
||||||
|
LDA $048E
|
||||||
|
CMP.w #$3C : BEQ ++ ; hookshot cave
|
||||||
|
CMP.w #$9D : BEQ ++ ; gt right
|
||||||
|
CMP.w #$9C : BEQ ++ ; gt big room
|
||||||
|
CMP.w #$A5 : BEQ ++ ; wizzrobes 1
|
||||||
|
+
|
||||||
|
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6
|
||||||
|
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
|
||||||
|
BRA +++
|
||||||
|
++
|
||||||
|
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6
|
||||||
|
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
|
||||||
|
BRA +++
|
||||||
|
+++
|
||||||
|
|
||||||
|
LDA $7EC3FA : JSL Filter_Majorly_Whiten_Color : STA $7EC5FA
|
||||||
|
LDA $7EC3FC : JSL Filter_Majorly_Whiten_Color : STA $7EC5FC
|
||||||
|
LDA $7EC3FE : JSL Filter_Majorly_Whiten_Color : STA $7EC5FE
|
||||||
|
REP #$10
|
||||||
|
LDA $7EC540 : TAY
|
||||||
|
LDA $7EC300 : BNE +
|
||||||
|
TAY
|
||||||
|
+
|
||||||
|
TYA : STA $7EC500
|
||||||
|
SEP #$30
|
||||||
|
RTS
|
||||||
|
;================================================================================
|
||||||
|
WhitenLoopDummy:
|
||||||
|
-
|
||||||
|
LDA $7EC340, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC540, X
|
||||||
|
LDA $7EC350, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC550, X
|
||||||
|
LDA $7EC360, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC560, X
|
||||||
|
LDA $7EC370, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC570, X
|
||||||
|
LDA $7EC380, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC580, X
|
||||||
|
LDA $7EC390, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC590, X
|
||||||
|
LDA $7EC3A0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5A0, X
|
||||||
|
LDA $7EC3B0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5B0, X
|
||||||
|
LDA $7EC3C0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5C0, X
|
||||||
|
LDA $7EC3D0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5D0, X
|
||||||
|
LDA $7EC3E0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5E0, X
|
||||||
|
INX #2 : CPX.b #$10 : BEQ +
|
||||||
|
JMP -
|
||||||
|
+
|
||||||
|
|
||||||
|
LDA $7EC3F0 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F0
|
||||||
|
LDA $7EC3F2 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F2
|
||||||
|
LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F4
|
||||||
|
LDA $10 : CMP.w #$07 : BNE + ; only light invisifloor if we're in dungeon submodule
|
||||||
|
LDA $048E
|
||||||
|
CMP.w #$3C : BEQ ++ ; hookshot cave
|
||||||
|
CMP.w #$9D : BEQ ++ ; gt right
|
||||||
|
CMP.w #$9C : BEQ ++ ; gt big room
|
||||||
|
CMP.w #$A5 : BEQ ++ ; wizzrobes 1
|
||||||
|
+
|
||||||
|
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F6
|
||||||
|
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F8
|
||||||
|
BRA +++
|
||||||
|
++
|
||||||
|
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6
|
||||||
|
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
|
||||||
|
BRA +++
|
||||||
|
+++
|
||||||
|
LDA $7EC3FA : JSL Filter_Majorly_Whiten_Color : LDA $7EC5FA
|
||||||
|
LDA $7EC3FC : JSL Filter_Majorly_Whiten_Color : LDA $7EC5FC
|
||||||
|
LDA $7EC3FE : JSL Filter_Majorly_Whiten_Color : LDA $7EC5FE
|
||||||
|
REP #$10
|
||||||
|
LDA $7EC540 : TAY
|
||||||
|
LDA $7EC300 : BNE +
|
||||||
|
TAY
|
||||||
|
+
|
||||||
|
TYA : STA $7EC500
|
||||||
|
SEP #$30
|
||||||
|
RTS
|
||||||
|
;================================================================================
|
||||||
|
RestoreBgEther:
|
||||||
|
LDX.b #$00
|
||||||
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
|
-
|
||||||
|
LDA $00,X
|
||||||
|
LDA $7EC340, X : STA $7EC540, X
|
||||||
|
LDA $7EC350, X : STA $7EC550, X
|
||||||
|
LDA $7EC360, X : STA $7EC560, X
|
||||||
|
LDA $7EC370, X : STA $7EC570, X
|
||||||
|
LDA $7EC380, X : STA $7EC580, X
|
||||||
|
LDA $7EC390, X : STA $7EC590, X
|
||||||
|
LDA $7EC3A0, X : STA $7EC5A0, X
|
||||||
|
LDA $7EC3B0, X : STA $7EC5B0, X
|
||||||
|
LDA $7EC3C0, X : STA $7EC5C0, X
|
||||||
|
LDA $7EC3D0, X : STA $7EC5D0, X
|
||||||
|
LDA $7EC3E0, X : STA $7EC5E0, X
|
||||||
|
LDA $7EC3F0, X : STA $7EC5F0, X
|
||||||
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
|
BRA ++
|
||||||
|
+
|
||||||
|
-
|
||||||
|
LDA $00
|
||||||
|
LDA $7EC340, X : LDA $7EC540, X
|
||||||
|
LDA $7EC350, X : LDA $7EC550, X
|
||||||
|
LDA $7EC360, X : LDA $7EC560, X
|
||||||
|
LDA $7EC370, X : LDA $7EC570, X
|
||||||
|
LDA $7EC380, X : LDA $7EC580, X
|
||||||
|
LDA $7EC390, X : LDA $7EC590, X
|
||||||
|
LDA $7EC3A0, X : LDA $7EC5A0, X
|
||||||
|
LDA $7EC3B0, X : LDA $7EC5B0, X
|
||||||
|
LDA $7EC3C0, X : LDA $7EC5C0, X
|
||||||
|
LDA $7EC3D0, X : LDA $7EC5D0, X
|
||||||
|
LDA $7EC3E0, X : LDA $7EC5E0, X
|
||||||
|
LDA $7EC3F0, X : LDA $7EC5F0, X
|
||||||
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
|
BRA ++
|
||||||
|
++
|
||||||
|
JML $02FF51
|
||||||
|
;================================================================================
|
||||||
|
DDMConditionalLightning:
|
||||||
|
LDA.l DisableFlashing
|
||||||
|
REP #$20
|
||||||
|
BNE +
|
||||||
|
LDA.w $0000
|
||||||
|
LDX.b #$02
|
||||||
|
JML $07FA7F
|
||||||
|
+
|
||||||
|
LDA.b $00 : LDX.b #$02 : LDY #$00
|
||||||
|
-
|
||||||
|
LDA $F4EB, Y : LDA $7EC560, X
|
||||||
|
LDA $F4F9, Y : LDA $7EC570, X
|
||||||
|
LDA $F507, Y : LDA $7EC590, X
|
||||||
|
LDA $F515, Y : LDA $7EC5E0, X
|
||||||
|
LDA $F523, Y : LDA $7EC5F0, X
|
||||||
|
INY #2
|
||||||
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
|
|
||||||
|
JML $07FAAC
|
||||||
|
;================================================================================
|
||||||
|
ConditionalGTFlash:
|
||||||
|
LDA.l DisableFlashing
|
||||||
|
REP #$20
|
||||||
|
BNE +
|
||||||
|
LDA $0000
|
||||||
|
-
|
||||||
|
LDA $F9C1, Y : STA $7EC5D0, X
|
||||||
|
INY #2
|
||||||
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
LDA $00
|
||||||
|
-
|
||||||
|
LDA $F9C1, Y : LDA $7EC5D0, X
|
||||||
|
INY #2
|
||||||
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
ConditionalRedFlash:
|
||||||
|
LDA.l DisableFlashing
|
||||||
|
REP #$20 : BNE +
|
||||||
|
LDA $00,X
|
||||||
|
LDA.w #$1D59 : STA $7EC5DA
|
||||||
|
LDA.w #$25FF : STA $7EC5DC
|
||||||
|
LDA.w #$001A
|
||||||
|
RTL
|
||||||
|
|
||||||
|
+
|
||||||
|
LDA $00
|
||||||
|
LDA.w #$1D59 : LDA $7EC5DA
|
||||||
|
LDA.w #$25FF : LDA $7EC5DC
|
||||||
|
LDA.w #$0000
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
ConditionalPedAncilla:
|
||||||
|
LDA.l DisableFlashing
|
||||||
|
REP #$20 : BNE +
|
||||||
|
LDA $00,X
|
||||||
|
LDA $00 : STA $04
|
||||||
|
LDA $02 : STA $06
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
LDA $00
|
||||||
|
LDA $00 : LDA $04
|
||||||
|
LDA $02 : LDA $06
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
ConditionalChangeGearPalette:
|
||||||
|
PHY
|
||||||
|
STA $00
|
||||||
|
SEP #$20
|
||||||
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
|
LDA $00,X
|
||||||
|
-
|
||||||
|
LDA [$00] : STA $7EC300, X : STA $7EC500, X
|
||||||
|
INC $00 : INC $00
|
||||||
|
INX #2
|
||||||
|
DEY : BPL -
|
||||||
|
BRA ++
|
||||||
|
+
|
||||||
|
LDA $00
|
||||||
|
-
|
||||||
|
LDA [$00] : LDA $7EC300, X : LDA $7EC500, X
|
||||||
|
INC $00 : INC $00
|
||||||
|
INX #2
|
||||||
|
DEY : BPL -
|
||||||
|
BRA ++
|
||||||
|
++
|
||||||
|
PLY ; use what was in Y register to determine which p flags to set
|
||||||
|
CPY #$000E : BNE +
|
||||||
|
SEP #$20
|
||||||
|
+
|
||||||
|
SEP #$10
|
||||||
|
RTL
|
||||||
@@ -16,9 +16,7 @@ DrawLibraryItemGFX:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetLibraryItem:
|
SetLibraryItem:
|
||||||
PHA
|
|
||||||
LDY $0E80, X ; Retrieve stored item type
|
LDY $0E80, X ; Retrieve stored item type
|
||||||
PLA
|
|
||||||
JSL.l ItemSet_Library ; contains thing we wrote over
|
JSL.l ItemSet_Library ; contains thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
44
bugfixes.asm
44
bugfixes.asm
@@ -32,7 +32,7 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;0 = Become (Perma)bunny
|
;0 = Become (Perma)bunny
|
||||||
DecideIfBunny:
|
DecideIfBunny:
|
||||||
LDA $7EF357 : BEQ + : RTL : +
|
LDA $7EF357 : BNE .done
|
||||||
LDA $7EF3CA : AND.b #$40
|
LDA $7EF3CA : AND.b #$40
|
||||||
PHA : LDA.l InvertedMode : BNE .inverted
|
PHA : LDA.l InvertedMode : BNE .inverted
|
||||||
.normal
|
.normal
|
||||||
@@ -47,8 +47,8 @@ RTL
|
|||||||
DecideIfBunnyByScreenIndex:
|
DecideIfBunnyByScreenIndex:
|
||||||
; If indoors we don't have a screen index. Return non-bunny to make mirror-based
|
; If indoors we don't have a screen index. Return non-bunny to make mirror-based
|
||||||
; superbunny work
|
; superbunny work
|
||||||
LDA $1B : BEQ + : RTL : +
|
LDA $1B : BNE .done
|
||||||
LDA $7EF357 : BEQ + : RTL : +
|
LDA $7EF357 : BNE .done
|
||||||
LDA $8A : AND.b #$40 : PHA
|
LDA $8A : AND.b #$40 : PHA
|
||||||
LDA.l InvertedMode : BNE .inverted
|
LDA.l InvertedMode : BNE .inverted
|
||||||
.normal
|
.normal
|
||||||
@@ -114,12 +114,13 @@ RTS
|
|||||||
FixFrogSmith:
|
FixFrogSmith:
|
||||||
LDA.l $7EF3CA : BNE .darkWorld
|
LDA.l $7EF3CA : BNE .darkWorld
|
||||||
LDA.l $7EF3CC : CMP.b #$07 : BNE .done
|
LDA.l $7EF3CC : CMP.b #$07 : BNE .done
|
||||||
LDA.b #$08 : STA.l $7EF3CC ; make frog into smith in light world
|
LDA.b #$08 ; make frog into smith in light world
|
||||||
BRA .loadgfx
|
BRA .loadgfx
|
||||||
.darkWorld
|
.darkWorld
|
||||||
LDA.l $7EF3CC : CMP.b #$08 : BNE .done
|
LDA.l $7EF3CC : CMP.b #$08 : BNE .done
|
||||||
LDA.b #$07 : STA.l $7EF3CC ; make smith into frog in dark world
|
LDA.b #$07 ; make smith into frog in dark world
|
||||||
.loadgfx
|
.loadgfx
|
||||||
|
STA.l $7EF3CC
|
||||||
JSL Tagalong_LoadGfx
|
JSL Tagalong_LoadGfx
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
@@ -137,12 +138,11 @@ RTL
|
|||||||
; Fix crystal not spawning when using somaria vs boss
|
; Fix crystal not spawning when using somaria vs boss
|
||||||
TryToSpawnCrystalUntilSuccess:
|
TryToSpawnCrystalUntilSuccess:
|
||||||
STX $02D8 ; what we overwrote
|
STX $02D8 ; what we overwrote
|
||||||
JSL AddAncillaLong : BCC .spawned ; a clear carry flag indicates success
|
JSL AddAncillaLong : BCS .failed ; a clear carry flag indicates success
|
||||||
.failed
|
.spawned
|
||||||
RTL
|
|
||||||
.spawned
|
|
||||||
STZ $AE ; the "trying to spawn crystal" flag
|
STZ $AE ; the "trying to spawn crystal" flag
|
||||||
STZ $AF ; the "trying to spawn pendant" flag
|
STZ $AF ; the "trying to spawn pendant" flag
|
||||||
|
.failed
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -173,22 +173,22 @@ CMP.w #$030E : BEQ .new ; opening dungeon map
|
|||||||
CMP.w #$070E : BEQ .new ; opening overworld map
|
CMP.w #$070E : BEQ .new ; opening overworld map
|
||||||
.original
|
.original
|
||||||
-
|
-
|
||||||
lda [$00]
|
LDA [$00]
|
||||||
sta $7ec300, x
|
STA $7EC300, X
|
||||||
sta $7ec500, x
|
STA $7EC500, X
|
||||||
inc $00 : inc $00
|
INC $00 : INC $00
|
||||||
inx #2
|
INX #2
|
||||||
dey
|
DEY
|
||||||
bpl -
|
BPL -
|
||||||
RTL
|
RTL
|
||||||
.new
|
.new
|
||||||
-
|
-
|
||||||
lda [$00]
|
LDA [$00]
|
||||||
sta $7ec500, x
|
STA $7EC500, X
|
||||||
inc $00 : inc $00
|
INC $00 : INC $00
|
||||||
inx #2
|
INX #2
|
||||||
dey
|
DEY
|
||||||
bpl -
|
BPL -
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
5
build_linux.sh
Executable file
5
build_linux.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
rm ../working.sfc
|
||||||
|
cp ../alttp.sfc ../working.sfc
|
||||||
|
asar LTTP_RND_GeneralBugfixes.asm ../working.sfc
|
||||||
@@ -6,7 +6,8 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementBombs:
|
IncrementBombs:
|
||||||
LDA !BOMB_UPGRADES ; get bomb upgrades
|
LDA !BOMB_UPGRADES ; get bomb upgrades
|
||||||
!ADD.l StartingMaxBombs : DEC
|
!ADD.l StartingMaxBombs : BEQ + ; Skip if we can't have bombs
|
||||||
|
DEC
|
||||||
|
|
||||||
CMP !BOMB_CURRENT
|
CMP !BOMB_CURRENT
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,7 @@
|
|||||||
LoadCatfishItemGFX:
|
LoadCatfishItemGFX:
|
||||||
LDA.l CatfishItem_Player : STA !MULTIWORLD_SPRITEITEM_PLAYER_ID
|
LDA.l CatfishItem_Player : STA !MULTIWORLD_SPRITEITEM_PLAYER_ID
|
||||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||||
JSL.l PrepDynamicTile
|
JML PrepDynamicTile
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawThrownItem:
|
DrawThrownItem:
|
||||||
LDA $8A : CMP.b #$81 : BNE .catfish
|
LDA $8A : CMP.b #$81 : BNE .catfish
|
||||||
@@ -20,8 +19,7 @@ DrawThrownItem:
|
|||||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
JSL.l DrawDynamicTile
|
JML DrawDynamicTile
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MarkThrownItem:
|
MarkThrownItem:
|
||||||
PHA
|
PHA
|
||||||
|
|||||||
20
clock.asm
20
clock.asm
@@ -66,8 +66,7 @@ endmacro
|
|||||||
|
|
||||||
Clock_Test:
|
Clock_Test:
|
||||||
JSL.l Clock_Init
|
JSL.l Clock_Init
|
||||||
JSL.l Clock_IsSupported
|
JML.l Clock_IsSupported
|
||||||
RTL
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Clock_Init
|
; Clock_Init
|
||||||
@@ -112,11 +111,10 @@ Clock_IsSupported:
|
|||||||
PHA : PHX
|
PHA : PHX
|
||||||
LDX #$00;
|
LDX #$00;
|
||||||
-
|
-
|
||||||
LDA $002800 : AND.b #$0F : CMP #$0F : BEQ + ; check for clock chip ready signal
|
LDA $002800 : AND.b #$0F : CMP #$0F : BEQ .done ; check for clock chip ready signal
|
||||||
CPX.b #$0E : !BLT ++ : CLC : BRA .done : ++ ; if we've read 14 bytes with no success, unset carry and exit
|
CPX.b #$0E : BCC ++ : CLC : BRA .done ; if we've read 14 bytes with no success, unset carry and exit
|
||||||
INX
|
++ INX
|
||||||
BRA - : +
|
BRA -
|
||||||
SEC ; found a clock chip
|
|
||||||
.done
|
.done
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -144,7 +142,7 @@ Clock_QuickStamp:
|
|||||||
LDX #$00;
|
LDX #$00;
|
||||||
-
|
-
|
||||||
LDA $002800 : AND.b #$0F : CMP #$0F : BEQ .ready ; check for clock chip ready signal
|
LDA $002800 : AND.b #$0F : CMP #$0F : BEQ .ready ; check for clock chip ready signal
|
||||||
CPX.b #$0E : !BLT ++ : CLC : BRL .done : ++ ; if we've read 14 bytes with no success, unset carry and exit
|
CPX.b #$0E : !BLT ++ : CLC : JMP .done : ++ ; if we've read 14 bytes with no success, unset carry and exit
|
||||||
INX
|
INX
|
||||||
BRA -
|
BRA -
|
||||||
SEC ; indicate success
|
SEC ; indicate success
|
||||||
@@ -197,9 +195,9 @@ Multiply_A16Y8:
|
|||||||
CLC
|
CLC
|
||||||
ADC $4216
|
ADC $4216
|
||||||
LDY $4217
|
LDY $4217
|
||||||
BCC carry_bit
|
BCC .carry_bit
|
||||||
INY
|
INY
|
||||||
carry_bit:
|
.carry_bit:
|
||||||
XBA
|
XBA
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
@@ -226,7 +224,7 @@ Clock_GetTime:
|
|||||||
LDX #$00;
|
LDX #$00;
|
||||||
-
|
-
|
||||||
LDA $002800 : AND.b #$0F : CMP #$0F : BEQ .ready ; check for clock chip ready signal
|
LDA $002800 : AND.b #$0F : CMP #$0F : BEQ .ready ; check for clock chip ready signal
|
||||||
CPX.b #$0E : !BLT ++ : CLC : BRL .done : ++ ; if we've read 14 bytes with no success, unset carry and exit
|
CPX.b #$0E : !BLT ++ : CLC : JMP .done : ++ ; if we've read 14 bytes with no success, unset carry and exit
|
||||||
INX
|
INX
|
||||||
BRA -
|
BRA -
|
||||||
SEC ; indicate success
|
SEC ; indicate success
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
DrawDungeonCompassCounts:
|
DrawDungeonCompassCounts:
|
||||||
LDX $1B : BNE + : RTL : + ; Skip if outdoors
|
LDX $1B : BNE + : RTL : + ; Skip if outdoors
|
||||||
LDX $040C : CPX.b #$FF : BNE + : RTL : + ; Skip if not in a dungeon
|
LDX $040C : CPX.b #$FF : BEQ .done ; Skip if not in a dungeon
|
||||||
|
|
||||||
CMP.w #$0002 : BEQ ++ ; if CompassMode==2, we don't check for the compass
|
CMP.w #$0002 : BEQ ++ ; if CompassMode==2, we don't check for the compass
|
||||||
LDA $7EF364 : AND.l .item_masks, X ; Load compass values to A, mask with dungeon item masks
|
LDA $7EF364 : AND.l .item_masks, X ; Load compass values to A, mask with dungeon item masks
|
||||||
BNE + : RTL : + ; skip if we don't have compass
|
BEQ .done ; skip if we don't have compass
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA $040C : LSR
|
LDA $040C : LSR
|
||||||
|
|||||||
42
creditscharmapbighi.txt
Normal file
42
creditscharmapbighi.txt
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
=9F
|
||||||
|
0=53
|
||||||
|
1=54
|
||||||
|
2=55
|
||||||
|
3=56
|
||||||
|
4=57
|
||||||
|
5=58
|
||||||
|
6=59
|
||||||
|
7=5A
|
||||||
|
8=5B
|
||||||
|
9=5C
|
||||||
|
A=5D
|
||||||
|
B=5E
|
||||||
|
C=5F
|
||||||
|
D=60
|
||||||
|
E=61
|
||||||
|
F=62
|
||||||
|
G=63
|
||||||
|
H=64
|
||||||
|
I=65
|
||||||
|
J=66
|
||||||
|
K=67
|
||||||
|
L=68
|
||||||
|
M=69
|
||||||
|
N=6A
|
||||||
|
O=6B
|
||||||
|
P=6C
|
||||||
|
Q=6D
|
||||||
|
R=6E
|
||||||
|
S=6F
|
||||||
|
T=70
|
||||||
|
U=71
|
||||||
|
V=72
|
||||||
|
W=73
|
||||||
|
X=74
|
||||||
|
Y=75
|
||||||
|
Z=76
|
||||||
|
'=77
|
||||||
|
.=A0
|
||||||
|
/=A2
|
||||||
|
:=A3
|
||||||
|
_=A6
|
||||||
42
creditscharmapbiglo.txt
Normal file
42
creditscharmapbiglo.txt
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
=9F
|
||||||
|
0=79
|
||||||
|
1=7A
|
||||||
|
2=7B
|
||||||
|
3=7C
|
||||||
|
4=7D
|
||||||
|
5=7E
|
||||||
|
6=7F
|
||||||
|
7=80
|
||||||
|
8=81
|
||||||
|
9=82
|
||||||
|
A=83
|
||||||
|
B=84
|
||||||
|
C=85
|
||||||
|
D=86
|
||||||
|
E=87
|
||||||
|
F=88
|
||||||
|
G=89
|
||||||
|
H=8A
|
||||||
|
I=8B
|
||||||
|
J=8C
|
||||||
|
K=8D
|
||||||
|
L=8E
|
||||||
|
M=8F
|
||||||
|
N=90
|
||||||
|
O=91
|
||||||
|
P=92
|
||||||
|
Q=93
|
||||||
|
R=94
|
||||||
|
S=95
|
||||||
|
T=96
|
||||||
|
U=97
|
||||||
|
V=98
|
||||||
|
W=99
|
||||||
|
X=9A
|
||||||
|
Y=9B
|
||||||
|
Z=9C
|
||||||
|
'=9d
|
||||||
|
.=C0
|
||||||
|
/=C2
|
||||||
|
:=C3
|
||||||
|
_=C6
|
||||||
27
creditscharmapsmall_green.txt
Normal file
27
creditscharmapsmall_green.txt
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
=9F
|
||||||
|
A=38
|
||||||
|
B=39
|
||||||
|
C=3A
|
||||||
|
D=3B
|
||||||
|
E=3C
|
||||||
|
F=3D
|
||||||
|
G=3E
|
||||||
|
H=3F
|
||||||
|
I=40
|
||||||
|
J=41
|
||||||
|
K=42
|
||||||
|
L=43
|
||||||
|
M=44
|
||||||
|
N=45
|
||||||
|
O=46
|
||||||
|
P=47
|
||||||
|
Q=48
|
||||||
|
R=49
|
||||||
|
S=4A
|
||||||
|
T=4B
|
||||||
|
U=4C
|
||||||
|
V=4D
|
||||||
|
W=4E
|
||||||
|
X=4F
|
||||||
|
Y=50
|
||||||
|
Z=51
|
||||||
27
creditscharmapsmall_red.txt
Normal file
27
creditscharmapsmall_red.txt
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
=9F
|
||||||
|
A=00
|
||||||
|
B=01
|
||||||
|
C=02
|
||||||
|
D=03
|
||||||
|
E=04
|
||||||
|
F=05
|
||||||
|
G=06
|
||||||
|
H=07
|
||||||
|
I=08
|
||||||
|
J=09
|
||||||
|
K=0A
|
||||||
|
L=0B
|
||||||
|
M=0C
|
||||||
|
N=0D
|
||||||
|
O=0E
|
||||||
|
P=0F
|
||||||
|
Q=10
|
||||||
|
R=11
|
||||||
|
S=12
|
||||||
|
T=13
|
||||||
|
U=14
|
||||||
|
V=15
|
||||||
|
W=16
|
||||||
|
X=17
|
||||||
|
Y=18
|
||||||
|
Z=19
|
||||||
27
creditscharmapsmall_yellow.txt
Normal file
27
creditscharmapsmall_yellow.txt
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
=9F
|
||||||
|
A=1A
|
||||||
|
B=1B
|
||||||
|
C=1C
|
||||||
|
D=1D
|
||||||
|
E=1E
|
||||||
|
F=1F
|
||||||
|
G=20
|
||||||
|
H=21
|
||||||
|
I=22
|
||||||
|
J=23
|
||||||
|
K=24
|
||||||
|
L=25
|
||||||
|
M=26
|
||||||
|
N=27
|
||||||
|
O=28
|
||||||
|
P=29
|
||||||
|
Q=2A
|
||||||
|
R=2B
|
||||||
|
S=2C
|
||||||
|
T=2D
|
||||||
|
U=2E
|
||||||
|
V=2F
|
||||||
|
W=30
|
||||||
|
X=31
|
||||||
|
Y=32
|
||||||
|
Z=33
|
||||||
@@ -192,7 +192,7 @@ XXTEA_Decode:
|
|||||||
LDA.w !sum : !SUB.l CryptoDelta : STA.w !sum
|
LDA.w !sum : !SUB.l CryptoDelta : STA.w !sum
|
||||||
LDA.w !sum+2 : SBC.l CryptoDelta+2 : STA.w !sum+2
|
LDA.w !sum+2 : SBC.l CryptoDelta+2 : STA.w !sum+2
|
||||||
|
|
||||||
DEC !rounds : BEQ + : BRL --- : + ; } while (--rounds);
|
DEC !rounds : BEQ + : JMP --- : + ; } while (--rounds);
|
||||||
PLB : PLP
|
PLB : PLP
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
DarkWorldSaveFix:
|
DarkWorldSaveFix:
|
||||||
LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change
|
LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change
|
||||||
JSL.l MasterSwordFollowerClear
|
JSL.l MasterSwordFollowerClear
|
||||||
JSL.l StatSaveCounter
|
JML.l StatSaveCounter
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DoWorldFix:
|
DoWorldFix:
|
||||||
LDA InvertedMode : BEQ +
|
LDA InvertedMode : BEQ +
|
||||||
@@ -14,12 +13,12 @@ DoWorldFix:
|
|||||||
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
||||||
LDA $7EF353 : AND #$02 : BEQ .noMirror ; check if we have the mirror
|
LDA $7EF353 : AND #$02 : BEQ .noMirror ; check if we have the mirror
|
||||||
.skip_mirror_check ; alt entrance point
|
.skip_mirror_check ; alt entrance point
|
||||||
LDA $7EF3C5 : CMP.b #$03 : !BLT .aga1Alive ; check if agahnim 1 is alive
|
LDA $7EF3C5 : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
|
||||||
BRA .done
|
|
||||||
.noMirror
|
|
||||||
.aga1Alive
|
.aga1Alive
|
||||||
LDA #$00 : STA $7EF3CA ; set flag to light world
|
LDA #$00
|
||||||
LDA $7EF3CC : CMP #$07 : BNE + : LDA.b #$08 : STA $7EF3CC : + ; convert frog to dwarf
|
.noMirror
|
||||||
|
STA $7EF3CA ; set flag to light world
|
||||||
|
LDA $7EF3CC : CMP #$07 : BNE .done : INC : STA $7EF3CC ; convert frog to dwarf
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -29,8 +28,7 @@ SetDeathWorldChecked:
|
|||||||
+
|
+
|
||||||
LDA $1B : BEQ .outdoors
|
LDA $1B : BEQ .outdoors
|
||||||
LDA $040C : CMP #$FF : BNE .dungeon
|
LDA $040C : CMP #$FF : BNE .dungeon
|
||||||
LDA $A0 : BNE ++
|
LDA $A0 : ORA $A1 : BNE ++
|
||||||
LDA $A1 : BNE ++ ; Prevent cheesing your way to top of pyramid by bombing yourself at High stakes chest game.
|
|
||||||
LDA GanonPyramidRespawn : BNE .pyramid ; if flag is set, force respawn at pyramid on death to ganon
|
LDA GanonPyramidRespawn : BNE .pyramid ; if flag is set, force respawn at pyramid on death to ganon
|
||||||
++
|
++
|
||||||
.outdoors
|
.outdoors
|
||||||
@@ -42,7 +40,7 @@ JMP DoWorldFix_skip_mirror_check
|
|||||||
|
|
||||||
.pyramid
|
.pyramid
|
||||||
LDA #$40 : STA $7EF3CA ; set flag to dark world
|
LDA #$40 : STA $7EF3CA ; set flag to dark world
|
||||||
LDA $7EF3CC : CMP #$08 : BNE + : LDA.b #$07 : STA $7EF3CC : + ; convert dwarf to frog
|
LDA $7EF3CC : CMP #$08 : BNE .done : DEC : STA $7EF3CC : + ; convert dwarf to frog
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -50,15 +48,13 @@ DoWorldFix_Inverted:
|
|||||||
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
||||||
LDA $7EF353 : AND #$02 : BEQ .noMirror ; check if we have the mirror
|
LDA $7EF353 : AND #$02 : BEQ .noMirror ; check if we have the mirror
|
||||||
.skip_mirror_check ; alt entrance point
|
.skip_mirror_check ; alt entrance point
|
||||||
LDA $7EF3C5 : CMP.b #$03 : !BLT .aga1Alive ; check if agahnim 1 is alive
|
LDA $7EF3C5 : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
|
||||||
BRA .done
|
|
||||||
.noMirror
|
.noMirror
|
||||||
.aga1Alive
|
.aga1Alive
|
||||||
LDA #$40 : STA $7EF3CA ; set flag to dark world
|
LDA #$40 : STA $7EF3CA ; set flag to dark world
|
||||||
LDA $7EF3CC
|
LDA $7EF3CC
|
||||||
CMP #$07 : BEQ .clear ; clear frog
|
CMP #$07 : BNE .done ; clear frog
|
||||||
CMP #$08 : BEQ .clear ; clear dwarf - consider flute implications
|
CMP #$08 : BNE .done ; clear dwarf - consider flute implications
|
||||||
BRA .done
|
|
||||||
.clear
|
.clear
|
||||||
LDA.b #$00 : STA $7EF3CC ; clear follower
|
LDA.b #$00 : STA $7EF3CC ; clear follower
|
||||||
.done
|
.done
|
||||||
@@ -67,8 +63,7 @@ RTL
|
|||||||
SetDeathWorldChecked_Inverted:
|
SetDeathWorldChecked_Inverted:
|
||||||
LDA $1B : BEQ .outdoors
|
LDA $1B : BEQ .outdoors
|
||||||
LDA $040C : CMP #$FF : BNE .dungeon
|
LDA $040C : CMP #$FF : BNE .dungeon
|
||||||
LDA $A0 : BNE ++
|
LDA $A0 : ORA $A1 : BNE ++
|
||||||
LDA $A1 : BNE ++ ; Prevent cheesing your way to top of castle by bombing yourself at High stakes chest game.
|
|
||||||
LDA GanonPyramidRespawn : BNE .castle ; if flag is set, force respawn at pyramid on death to ganon
|
LDA GanonPyramidRespawn : BNE .castle ; if flag is set, force respawn at pyramid on death to ganon
|
||||||
++
|
++
|
||||||
.outdoors
|
.outdoors
|
||||||
@@ -95,16 +90,15 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MasterSwordFollowerClear:
|
MasterSwordFollowerClear:
|
||||||
LDA $7EF3CC
|
LDA $7EF3CC
|
||||||
CMP #$0E : BEQ .clear ; clear master sword follower
|
CMP #$0E : BNE .exit ; clear master sword follower
|
||||||
RTL
|
|
||||||
.clear
|
|
||||||
LDA.b #$00 : STA $7EF3CC ; clear follower
|
LDA.b #$00 : STA $7EF3CC ; clear follower
|
||||||
RTL
|
.exit
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FixAgahnimFollowers:
|
FixAgahnimFollowers:
|
||||||
LDA.b #$00 : STA $7EF3CC ; clear follower
|
LDA.b #$00 : STA $7EF3CC ; clear follower
|
||||||
JSL PrepDungeonExit ; thing we wrote over
|
JML PrepDungeonExit ; thing we wrote over
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro SetMinimum(base,filler,compare)
|
macro SetMinimum(base,filler,compare)
|
||||||
LDA.l <compare> : !SUB.l <base> : !BLT ?done
|
LDA.l <compare> : !SUB.l <base> : !BLT ?done
|
||||||
@@ -112,7 +106,8 @@ macro SetMinimum(base,filler,compare)
|
|||||||
?done:
|
?done:
|
||||||
endmacro
|
endmacro
|
||||||
RefreshRainAmmo:
|
RefreshRainAmmo:
|
||||||
LDA $7EF3C5 : CMP.b #$01 : BEQ + : RTL : + ; check if we're in rain state
|
LDA $7EF3C5 : CMP.b #$01 : BEQ .rain ; check if we're in rain state
|
||||||
|
RTL
|
||||||
.rain
|
.rain
|
||||||
LDA $7EF3C8
|
LDA $7EF3C8
|
||||||
+ CMP.b #$03 : BNE + ; Uncle
|
+ CMP.b #$03 : BNE + ; Uncle
|
||||||
@@ -137,14 +132,14 @@ RTL
|
|||||||
!INFINITE_BOMBS = "$7F50C9"
|
!INFINITE_BOMBS = "$7F50C9"
|
||||||
!INFINITE_MAGIC = "$7F50CA"
|
!INFINITE_MAGIC = "$7F50CA"
|
||||||
SetEscapeAssist:
|
SetEscapeAssist:
|
||||||
LDA $7EF3C5 : CMP.b #$01 : BNE .notrain ; check if we're in rain state
|
LDA $7EF3C5 : CMP.b #$01 : BNE .no_train ; check if we're in rain state
|
||||||
.rain
|
.rain
|
||||||
LDA.l EscapeAssist
|
LDA.l EscapeAssist
|
||||||
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
|
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
|
||||||
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : +
|
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : +
|
||||||
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
||||||
BRA ++
|
BRA ++
|
||||||
.notrain
|
.no_train ; choo choo
|
||||||
LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : +
|
LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : +
|
||||||
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA !INFINITE_BOMBS : +
|
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA !INFINITE_BOMBS : +
|
||||||
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : +
|
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : +
|
||||||
@@ -153,8 +148,8 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetSilverBowMode:
|
SetSilverBowMode:
|
||||||
LDA SilverArrowsUseRestriction : BEQ + ; fix bow type for restricted arrow mode
|
LDA SilverArrowsUseRestriction : BEQ + ; fix bow type for restricted arrow mode
|
||||||
LDA $7EF340 : CMP.b #$3 : !BLT +
|
LDA $7EF340 : CMP.b #$3 : BCC +
|
||||||
!SUB.b #$02 : STA $7EF340
|
SBC.b #$02 : STA $7EF340
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
208
dialog.asm
208
dialog.asm
@@ -82,14 +82,13 @@ macro LoadDialogAddress(address)
|
|||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
REP #$10 ; set 16-bit index registers
|
REP #$10 ; set 16-bit index registers
|
||||||
LDA $00 : PHA
|
PEI ($00)
|
||||||
LDA $01 : PHA
|
|
||||||
LDA $02 : PHA
|
LDA $02 : PHA
|
||||||
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
||||||
LDA.b #$01 : STA $7F5035 ; set flag
|
LDA.b #$01 : STA $7F5035 ; set flag
|
||||||
%CopyDialog(<address>)
|
%CopyDialog(<address>)
|
||||||
PLA : STA $02
|
PLA : STA $02
|
||||||
PLA : STA $01
|
REP #$20
|
||||||
PLA : STA $00
|
PLA : STA $00
|
||||||
PLB
|
PLB
|
||||||
PLP
|
PLP
|
||||||
@@ -132,61 +131,60 @@ FreeDungeonItemNotice:
|
|||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
REP #$10 ; set 16-bit index registers
|
REP #$10 ; set 16-bit index registers
|
||||||
LDA $00 : PHA
|
PEI ($00)
|
||||||
LDA $01 : PHA
|
|
||||||
LDA $02 : PHA
|
LDA $02 : PHA
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
|
|
||||||
LDA.l FreeItemText : BNE + : BRL .skip : +
|
LDA.l FreeItemText : BNE + : JMP .skip : +
|
||||||
|
|
||||||
LDA #$00 : STA $7F5010 ; initialize scratch
|
LDA #$00 : STA $7F5010 ; initialize scratch
|
||||||
LDA.l FreeItemText : AND.b #$01 : CMP.b #$01 : BNE + ; show message for general small key
|
LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for general small key
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$24 : BNE + ; general small key
|
LDA !ITEM_TEMPORARY : CMP.b #$24 : BNE + ; general small key
|
||||||
%CopyDialog(Notice_SmallKeyOf)
|
%CopyDialog(Notice_SmallKeyOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ : LDA.l FreeItemText : AND.b #$02 : CMP.b #$02 : BNE + ; show message for general compass
|
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for general compass
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$25 : BNE + ; general compass
|
LDA !ITEM_TEMPORARY : CMP.b #$25 : BNE + ; general compass
|
||||||
%CopyDialog(Notice_CompassOf)
|
%CopyDialog(Notice_CompassOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ : LDA.l FreeItemText : AND.b #$04 : CMP.b #$04 : BNE + ; show message for general map
|
+ : LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for general map
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$33 : BNE + ; general map
|
LDA !ITEM_TEMPORARY : CMP.b #$33 : BNE + ; general map
|
||||||
%CopyDialog(Notice_MapOf)
|
%CopyDialog(Notice_MapOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ : LDA.l FreeItemText : AND.b #$08 : CMP.b #$08 : BNE + ; show message for general big key
|
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for general big key
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$32 : BNE + ; general big key
|
LDA !ITEM_TEMPORARY : CMP.b #$32 : BNE + ; general big key
|
||||||
%CopyDialog(Notice_BigKeyOf)
|
%CopyDialog(Notice_BigKeyOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
BRL .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.l FreeItemText : AND.b #$04 : CMP.b #$04 : BNE + ; show message for dungeon map
|
LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for dungeon map
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 ; looking at high bits only
|
LDA !ITEM_TEMPORARY : AND.b #$F0 ; looking at high bits only
|
||||||
CMP.b #$70 : BNE + ; map of...
|
CMP.b #$70 : BNE + ; map of...
|
||||||
%CopyDialog(Notice_MapOf)
|
%CopyDialog(Notice_MapOf)
|
||||||
BRL .dungeon
|
JMP .dungeon
|
||||||
+ : LDA.l FreeItemText : AND.b #$02 : CMP.b #$02 : BNE + ; show message for dungeon compass
|
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for dungeon compass
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of...
|
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of...
|
||||||
%CopyDialog(Notice_CompassOf)
|
%CopyDialog(Notice_CompassOf)
|
||||||
BRL .dungeon
|
JMP .dungeon
|
||||||
+ : LDA.l FreeItemText : AND.b #$08 : CMP.b #$08 : BNE + ; show message for dungeon big key
|
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
|
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
|
||||||
%CopyDialog(Notice_BigKeyOf)
|
%CopyDialog(Notice_BigKeyOf)
|
||||||
BRA .dungeon
|
BRA .dungeon
|
||||||
+ : LDA.l FreeItemText : AND.b #$01 : CMP.b #$01 : BNE + ; show message for dungeon small key
|
+ : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
|
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$AF : BNE ++ : BRL .skip : ++
|
LDA !ITEM_TEMPORARY : CMP.b #$AF : BNE ++ : JMP .skip : ++
|
||||||
%CopyDialog(Notice_SmallKeyOf)
|
%CopyDialog(Notice_SmallKeyOf)
|
||||||
PLA : AND.b #$0F : STA $7F5020 : LDA.b #$0F : !SUB $7F5020 : PHA
|
PLA : AND.b #$0F : STA $7F5020 : LDA.b #$0F : !SUB $7F5020 : PHA
|
||||||
LDA #$01 : STA $7F5010 ; set up a flip for small keys
|
LDA #$01 : STA $7F5010 ; set up a flip for small keys
|
||||||
BRA .dungeon
|
BRA .dungeon
|
||||||
+
|
+
|
||||||
BRL .skip ; it's not something we are going to give a notice for
|
JMP .skip ; it's not something we are going to give a notice for
|
||||||
|
|
||||||
.dungeon
|
.dungeon
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
||||||
@@ -199,31 +197,31 @@ FreeDungeonItemNotice:
|
|||||||
+
|
+
|
||||||
LDA $7F5011
|
LDA $7F5011
|
||||||
CMP.b #$00 : BNE + ; ...light world
|
CMP.b #$00 : BNE + ; ...light world
|
||||||
%CopyDialog(Notice_LightWorld) : BRL .done
|
%CopyDialog(Notice_LightWorld) : JMP .done
|
||||||
+ : CMP.b #$01 : BNE + ; ...dark world
|
+ : CMP.b #$01 : BNE + ; ...dark world
|
||||||
%CopyDialog(Notice_DarkWorld) : BRL .done
|
%CopyDialog(Notice_DarkWorld) : JMP .done
|
||||||
+ : CMP.b #$02 : BNE + ; ...ganon's tower
|
+ : CMP.b #$02 : BNE + ; ...ganon's tower
|
||||||
%CopyDialog(Notice_GTower) : BRL .done
|
%CopyDialog(Notice_GTower) : JMP .done
|
||||||
+ : CMP.b #$03 : BNE + ; ...turtle rock
|
+ : CMP.b #$03 : BNE + ; ...turtle rock
|
||||||
%CopyDialog(Notice_TRock) : BRL .done
|
%CopyDialog(Notice_TRock) : JMP .done
|
||||||
+ : CMP.b #$04 : BNE + ; ...thieves' town
|
+ : CMP.b #$04 : BNE + ; ...thieves' town
|
||||||
%CopyDialog(Notice_Thieves) : BRL .done
|
%CopyDialog(Notice_Thieves) : JMP .done
|
||||||
+ : CMP.b #$05 : BNE + ; ...tower of hera
|
+ : CMP.b #$05 : BNE + ; ...tower of hera
|
||||||
%CopyDialog(Notice_Hera) : BRL .done
|
%CopyDialog(Notice_Hera) : JMP .done
|
||||||
+ : CMP.b #$06 : BNE + ; ...ice palace
|
+ : CMP.b #$06 : BNE + ; ...ice palace
|
||||||
%CopyDialog(Notice_Ice) : BRL .done
|
%CopyDialog(Notice_Ice) : JMP .done
|
||||||
+ : CMP.b #$07 : BNE + ; ...skull woods
|
+ : CMP.b #$07 : BNE + ; ...skull woods
|
||||||
%CopyDialog(Notice_Skull) : BRL .done
|
%CopyDialog(Notice_Skull) : JMP .done
|
||||||
+ : CMP.b #$08 : BNE + ; ...misery mire
|
+ : CMP.b #$08 : BNE + ; ...misery mire
|
||||||
%CopyDialog(Notice_Mire) : BRL .done
|
%CopyDialog(Notice_Mire) : JMP .done
|
||||||
+ : CMP.b #$09 : BNE + ; ...dark palace
|
+ : CMP.b #$09 : BNE + ; ...dark palace
|
||||||
%CopyDialog(Notice_PoD) : BRL .done
|
%CopyDialog(Notice_PoD) : JMP .done
|
||||||
+ : CMP.b #$0A : BNE + ; ...swamp palace
|
+ : CMP.b #$0A : BNE + ; ...swamp palace
|
||||||
%CopyDialog(Notice_Swamp) : BRL .done
|
%CopyDialog(Notice_Swamp) : JMP .done
|
||||||
+ : CMP.b #$0B : BNE + ; ...agahnim's tower
|
+ : CMP.b #$0B : BNE + ; ...agahnim's tower
|
||||||
%CopyDialog(Notice_AgaTower) : BRL .done
|
%CopyDialog(Notice_AgaTower) : JMP .done
|
||||||
+ : CMP.b #$0C : BNE + ; ...desert palace
|
+ : CMP.b #$0C : BNE + ; ...desert palace
|
||||||
%CopyDialog(Notice_Desert) : BRL .done
|
%CopyDialog(Notice_Desert) : JMP .done
|
||||||
+ : CMP.b #$0D : BNE + ; ...eastern palace
|
+ : CMP.b #$0D : BNE + ; ...eastern palace
|
||||||
%CopyDialog(Notice_Eastern) : BRA .done
|
%CopyDialog(Notice_Eastern) : BRA .done
|
||||||
+ : CMP.b #$0E : BNE + ; ...hyrule castle
|
+ : CMP.b #$0E : BNE + ; ...hyrule castle
|
||||||
@@ -235,27 +233,19 @@ FreeDungeonItemNotice:
|
|||||||
|
|
||||||
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
||||||
LDA.b #$01 : STA $7F5035 ; set alternate dialog flag
|
LDA.b #$01 : STA $7F5035 ; set alternate dialog flag
|
||||||
LDA.b #$01 : STA $7F509F
|
STA $7F509F
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
PLA : STA $02
|
|
||||||
PLA : STA $01
|
|
||||||
PLA : STA $00
|
|
||||||
PLB
|
|
||||||
PLP
|
|
||||||
PLY : PLX : PLA
|
|
||||||
;JSL.l Main_ShowTextMessage_Alt
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.skip
|
.skip
|
||||||
;--------------------------------
|
|
||||||
PLA : STA $02
|
PLA : STA $02
|
||||||
PLA : STA $01
|
REP #$20
|
||||||
PLA : STA $00
|
PLA : STA $00
|
||||||
PLB
|
PLB
|
||||||
PLP
|
PLP
|
||||||
PLY : PLX : PLA
|
PLY : PLX : PLA
|
||||||
|
;JSL.l Main_ShowTextMessage_Alt ; .skip can be here so long as this line remains commented out
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogResetSelectionIndex:
|
DialogResetSelectionIndex:
|
||||||
JSL.l Attract_DecompressStoryGfx ; what we wrote over
|
JSL.l Attract_DecompressStoryGfx ; what we wrote over
|
||||||
@@ -263,13 +253,14 @@ DialogResetSelectionIndex:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogItemReceive:
|
DialogItemReceive:
|
||||||
BCS .noMessage ; if doubling the item value overflowed it must be a rando item
|
BCS .nomessage ; if doubling the item value overflowed it must be a rando item
|
||||||
CPY #$98 : !BLT + ;if the item is $4C or greater it must be a rando item
|
CPY #$98 : BCC ++ ;if the item is $4C or greater it must be a rando item
|
||||||
.noMessage
|
.nomessage
|
||||||
LDA.w #$FFFF
|
LDA.w #$FFFF
|
||||||
BRA .done
|
|
||||||
+
|
BRA .done
|
||||||
LDA.w Ancilla_ReceiveItem_item_messages, Y
|
|
||||||
|
++ LDA.w Ancilla_ReceiveItem_item_messages, Y
|
||||||
.done
|
.done
|
||||||
CMP.w #$FFFF
|
CMP.w #$FFFF
|
||||||
RTL
|
RTL
|
||||||
@@ -289,12 +280,13 @@ RTL
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogGanon1:
|
DialogGanon1:
|
||||||
JSL.l CheckGanonVulnerability : BCS +
|
JSL.l CheckGanonVulnerability
|
||||||
REP #$20 : LDA.w #$018C : STA $1CF0 : SEP #$20
|
REP #$20
|
||||||
BRA ++
|
LDA.w #$018C
|
||||||
+
|
BCC +
|
||||||
REP #$20 : LDA.w #$016D : STA $1CF0 : SEP #$20
|
LDA.w #$016D
|
||||||
++
|
+ STA $1CF0
|
||||||
|
SEP #$20
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -307,28 +299,30 @@ RTL
|
|||||||
; s = silver arrow bow
|
; s = silver arrow bow
|
||||||
; p = 2nd progressive bow
|
; p = 2nd progressive bow
|
||||||
DialogGanon2:
|
DialogGanon2:
|
||||||
JSL.l CheckGanonVulnerability : BCS +
|
JSL.l CheckGanonVulnerability
|
||||||
REP #$20 : LDA.w #$018D : STA $1CF0 : SEP #$20
|
|
||||||
BRA ++
|
REP #$20
|
||||||
|
BCS +
|
||||||
|
LDA.w #$018D : BRA ++
|
||||||
+
|
+
|
||||||
LDA.l $7EF38E : AND #$80 : BNE + ; branch if bow
|
LDA.l $7EF38E
|
||||||
REP #$20 : LDA.w #$0192 : STA $1CF0 : SEP #$20 ; no bow
|
|
||||||
BRA ++
|
BIT.w #$0080 : BNE + ; branch if bow
|
||||||
|
LDA.w #$0192 : BRA ++
|
||||||
+
|
+
|
||||||
LDA.l $7EF38E : AND #$40 : BEQ + ; branch if no silvers
|
BIT.w #$0040 : BEQ + ; branch if no silvers
|
||||||
REP #$20 : LDA.w #$0195 : STA $1CF0 : SEP #$20 ;has silvers
|
LDA.w #$0195 : BRA ++
|
||||||
BRA ++
|
|
||||||
+
|
+
|
||||||
LDA.l $7EF38E : AND #$20 : BNE + ; branch if p bow
|
BIT.w #$0020 : BNE + ; branch if p bow
|
||||||
REP #$20 : LDA.w #$0194 : STA $1CF0 : SEP #$20 ; bow, no-silvers, no-p-bow
|
LDA.w #$0194 : BRA ++
|
||||||
BRA ++
|
|
||||||
+
|
+
|
||||||
LDA.l $7EF38E : AND #$80 : BEQ + ; branch if no bow
|
BIT.w #$0080 : BEQ + ; branch if no bow
|
||||||
REP #$20 : LDA.w #$0193 : STA $1CF0 : SEP #$20 ; bow, no-silvers, p-bow
|
LDA.w #$0193 : BRA ++
|
||||||
BRA ++
|
|
||||||
+
|
+
|
||||||
REP #$20 : LDA.w #$016E : STA $1CF0 : SEP #$20 ; both bow and no bow. impossible.
|
LDA.w #$016E
|
||||||
++
|
++
|
||||||
|
STA $1CF0
|
||||||
|
SEP #$20
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -336,21 +330,20 @@ DialogEtherTablet:
|
|||||||
PHA
|
PHA
|
||||||
LDA $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
LDA $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
||||||
-
|
-
|
||||||
PLA : JSL Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
RTL
|
|
||||||
+
|
+
|
||||||
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
||||||
LDA.l AllowHammerTablets : BEQ ++
|
LDA.l AllowHammerTablets : BEQ ++
|
||||||
LDA $7EF34B : BEQ .yesText : BRA .noText
|
LDA $7EF34B : BEQ .yesText : BRA .noText
|
||||||
++
|
++
|
||||||
LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
|
LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : BCS .noText
|
||||||
;++
|
;++
|
||||||
.yesText
|
.yesText
|
||||||
PLA
|
PLA
|
||||||
LDA.b #$0c
|
LDA.b #$0C
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
JML Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
||||||
RTL
|
|
||||||
.noText
|
.noText
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -359,8 +352,7 @@ DialogBombosTablet:
|
|||||||
PHA
|
PHA
|
||||||
LDA $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
LDA $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
||||||
-
|
-
|
||||||
PLA : JSL Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
RTL
|
|
||||||
+
|
+
|
||||||
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
||||||
LDA.l AllowHammerTablets : BEQ ++
|
LDA.l AllowHammerTablets : BEQ ++
|
||||||
@@ -372,8 +364,8 @@ RTL
|
|||||||
PLA
|
PLA
|
||||||
LDA.b #$0D
|
LDA.b #$0D
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
JML Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
||||||
RTL
|
|
||||||
.noText
|
.noText
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -382,21 +374,34 @@ DialogSahasrahla:
|
|||||||
LDA.l $7EF374 : AND #$04 : BEQ + ;Check if player has green pendant
|
LDA.l $7EF374 : AND #$04 : BEQ + ;Check if player has green pendant
|
||||||
LDA.b #$2F
|
LDA.b #$2F
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JML Sprite_ShowMessageUnconditional
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogBombShopGuy:
|
DialogBombShopGuy:
|
||||||
LDA.l $7EF37A : AND #$05 : CMP #$05 : BEQ + ;Check if player has crystals 5 & 6
|
LDY.b #$15
|
||||||
LDA.b #$15
|
LDA.l $7EF37A : AND #$05 : CMP #$05 : BNE + ;Check if player has crystals 5 & 6
|
||||||
LDY.b #$01
|
INY ; from 15 to 16
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
|
||||||
RTL
|
|
||||||
+
|
+
|
||||||
LDA.b #$16
|
TYA
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
AgahnimAsksAboutPed:
|
||||||
|
LDA.l InvincibleGanon
|
||||||
|
CMP.b #$06 : BNE .vanilla
|
||||||
|
|
||||||
|
LDA.l $7EF300 ; check ped flag
|
||||||
|
AND.b #$40
|
||||||
|
BNE .vanilla
|
||||||
|
|
||||||
|
LDA.b #$8C ; message 018C for no ped
|
||||||
|
STA.w $1CF0
|
||||||
|
|
||||||
|
.vanilla
|
||||||
|
JML $05FA8E ; Sprite_ShowMessageMinimal
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Main_ShowTextMessage_Alt:
|
Main_ShowTextMessage_Alt:
|
||||||
; Are we in text mode? If so then end the routine.
|
; Are we in text mode? If so then end the routine.
|
||||||
@@ -405,26 +410,25 @@ Sprite_ShowMessageMinimal_Alt:
|
|||||||
STZ $11
|
STZ $11
|
||||||
|
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
LDA.b $00 : PHA
|
PEI ($00)
|
||||||
LDA.b $01 : PHA
|
|
||||||
LDA.b $02 : PHA
|
LDA.b $02 : PHA
|
||||||
|
|
||||||
LDA.b #$1C : STA.b $02
|
LDA.b #$1C : STA.b $02
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.w $1CF0 : ASL : TAX
|
LDA.w $1CF0 : ASL : TAX
|
||||||
LDA.l $7f71c0, X
|
LDA.l $7F71C0, X
|
||||||
STA.b $00
|
STA.b $00
|
||||||
SEP #$30
|
SEP #$30
|
||||||
|
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
LDA [$00], Y : CMP.b #$fe : BNE +
|
LDA [$00], Y : CMP.b #$FE : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$6e : BNE +
|
INY : LDA [$00], Y : CMP.b #$6E : BNE +
|
||||||
INY : LDA [$00], Y : : BNE +
|
INY : LDA [$00], Y : : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$fe : BNE +
|
INY : LDA [$00], Y : CMP.b #$FE : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$6b : BNE +
|
INY : LDA [$00], Y : CMP.b #$6B : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$04 : BNE +
|
INY : LDA [$00], Y : CMP.b #$04 : BNE +
|
||||||
STZ $1CE8
|
STZ $1CE8
|
||||||
BRL .end
|
JMP .end
|
||||||
+
|
+
|
||||||
|
|
||||||
STZ $0223 ; Otherwise set it so we are in text mode.
|
STZ $0223 ; Otherwise set it so we are in text mode.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
; Filtered Joypad 1 Register: [BYST | udlr] [AXLR | ????]
|
; Filtered Joypad 1 Register: [BYST | udlr] [AXLR | ????]
|
||||||
!INVERT_DPAD = "$7F50CB"
|
!INVERT_DPAD = "$7F50CB"
|
||||||
InvertDPad:
|
InvertDPad:
|
||||||
LDA !INVERT_DPAD : BNE + : BRL .normal : +
|
LDA !INVERT_DPAD : BNE + : JMP .normal : +
|
||||||
DEC : BEQ .dpadOnly
|
DEC : BEQ .dpadOnly
|
||||||
DEC : BEQ .buttonsOnly
|
DEC : BEQ .buttonsOnly
|
||||||
DEC : BEQ .invertBoth
|
DEC : BEQ .invertBoth
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DropSafeDungeon:
|
DropSafeDungeon:
|
||||||
LDA $040C : CMP #$08 : BEQ +
|
LDA $040C : CMP #$08 : BEQ +
|
||||||
LDA $01C6FC, X : JSL Sprite_SpawnFallingItem
|
LDA $01C6FC, X : JML Sprite_SpawnFallingItem
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -3,21 +3,14 @@
|
|||||||
; make sure bats always load LW stats
|
; make sure bats always load LW stats
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
NewBatInit:
|
NewBatInit:
|
||||||
;check if map id == 240 or 241
|
|
||||||
LDA $A0 : CMP #$F0 : BNE + ;oldman cave1
|
|
||||||
BRA .light_world
|
|
||||||
+
|
|
||||||
CMP #$F1 : BNE + ;oldman cave2
|
|
||||||
BRA .light_world
|
|
||||||
+
|
|
||||||
CMP #$B0 : BNE + ;agahnim statue keese
|
|
||||||
BRA .light_world
|
|
||||||
+
|
|
||||||
CMP #$D0 : BNE + ;agahnim darkmaze
|
|
||||||
BRA .light_world
|
|
||||||
+
|
|
||||||
|
|
||||||
CPY #$00 : BEQ .light_world
|
CPY #$00 : BEQ .light_world
|
||||||
|
;check if map id == 240 or 241
|
||||||
|
LDA $A0 : CMP #$F0 : BEQ .light_world ;oldman cave1
|
||||||
|
CMP #$F1 : BEQ .light_world ;oldman cave2
|
||||||
|
CMP #$B0 : BEQ .light_world ;agahnim statue keese
|
||||||
|
CMP #$D0 : BEQ .light_world ;agahnim darkmaze
|
||||||
|
|
||||||
|
|
||||||
LDA.b #$85 : STA $0CD2, X
|
LDA.b #$85 : STA $0CD2, X
|
||||||
LDA.b #$04 : STA $0E50, X
|
LDA.b #$04 : STA $0E50, X
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -4,9 +4,7 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LockAgahnimDoors:
|
LockAgahnimDoors:
|
||||||
LDA.l AgahnimDoorStyle : AND.w #$00FF
|
LDA.l AgahnimDoorStyle : AND.w #$00FF
|
||||||
BNE +
|
BEQ .exit ; don't need to load 0, because we'd have it if we reached here
|
||||||
;#$0 = Never Locked
|
|
||||||
LDA.w #$0000 : RTL
|
|
||||||
+ : CMP.w #$0001 : BNE +
|
+ : CMP.w #$0001 : BNE +
|
||||||
LDA $7EF3C5 : AND.w #$000F : CMP.w #$0002 : !BGE .unlock ; if we rescued zelda, skip
|
LDA $7EF3C5 : AND.w #$000F : CMP.w #$0002 : !BGE .unlock ; if we rescued zelda, skip
|
||||||
JSR.w LockAgahnimDoorsCore : RTL
|
JSR.w LockAgahnimDoorsCore : RTL
|
||||||
@@ -37,7 +35,7 @@ LockAgahnimDoors:
|
|||||||
.unlock
|
.unlock
|
||||||
|
|
||||||
LDA.w #$0000 ; fallback to never locked
|
LDA.w #$0000 ; fallback to never locked
|
||||||
|
.exit
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LockAgahnimDoorsCore:
|
LockAgahnimDoorsCore:
|
||||||
@@ -72,7 +70,7 @@ AllowStartFromSingleEntranceCave:
|
|||||||
LDA.l StartingAreaExitOffset, X
|
LDA.l StartingAreaExitOffset, X
|
||||||
|
|
||||||
BNE +
|
BNE +
|
||||||
BRL .done
|
JMP .done
|
||||||
+
|
+
|
||||||
|
|
||||||
DEC
|
DEC
|
||||||
@@ -204,14 +202,14 @@ RTL
|
|||||||
AnimatedEntranceFix: ;when an entrance animation tries to start
|
AnimatedEntranceFix: ;when an entrance animation tries to start
|
||||||
PHA
|
PHA
|
||||||
LDA.l InvertedMode : BEQ + ;If we are in inverted mode
|
LDA.l InvertedMode : BEQ + ;If we are in inverted mode
|
||||||
LDA $8A : AND.b #$40 : BNE + ;and in the light world
|
PLA
|
||||||
PLA
|
BIT $8A : BVS ++ ; and in the light world
|
||||||
STZ $04C6 ; skip it.
|
STZ $04C6 ; skip it.
|
||||||
LDA #$00
|
LDA #$00
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
STA $02E4 ;what we wrote over
|
++ STA $02E4 ;what we wrote over
|
||||||
STA $0FC1 ;what we wrote over
|
STA $0FC1 ;what we wrote over
|
||||||
STA $0710 ;what we wrote over
|
STA $0710 ;what we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
40
events.asm
40
events.asm
@@ -11,8 +11,7 @@ OnPrepFileSelect:
|
|||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
JSL.l LoadAlphabetTilemap
|
JSL.l LoadAlphabetTilemap
|
||||||
JSL.l LoadFullItemTiles
|
JML.l LoadFullItemTiles
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnDrawHud:
|
OnDrawHud:
|
||||||
JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter
|
JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter
|
||||||
@@ -81,7 +80,12 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnAga2Defeated:
|
OnAga2Defeated:
|
||||||
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
|
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
|
||||||
JSL.l IncrementAgahnim2Sword
|
JML.l IncrementAgahnim2Sword
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
OnFileCreation:
|
||||||
|
TAX ; what we wrote over
|
||||||
|
LDA StartingEquipment+$4C : STA $700340+$4C ; copy starting equipment swaps to file select screen
|
||||||
|
LDA StartingEquipment+$4E : STA $700340+$4E
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||||
@@ -91,7 +95,7 @@ OnFileLoad:
|
|||||||
REP #$20 : LDA.l $30F010 : STA.l $7EF33E : SEP #$20
|
REP #$20 : LDA.l $30F010 : STA.l $7EF33E : SEP #$20
|
||||||
LDA MultiClientFlags : STA.l $7EF33D
|
LDA MultiClientFlags : STA.l $7EF33D
|
||||||
|
|
||||||
LDA.b #$07 : STA $210c ; Restore screen 3 to normal tile area
|
LDA.b #$07 : STA $210C ; Restore screen 3 to normal tile area
|
||||||
|
|
||||||
LDA !FRESH_FILE_MARKER : BNE +
|
LDA !FRESH_FILE_MARKER : BNE +
|
||||||
JSL.l OnNewFile
|
JSL.l OnNewFile
|
||||||
@@ -158,8 +162,16 @@ OnNewFile:
|
|||||||
+
|
+
|
||||||
|
|
||||||
LDA StartingSword : STA $7EF359 ; set starting sword type
|
LDA StartingSword : STA $7EF359 ; set starting sword type
|
||||||
LDA !INVENTORY_SWAP : STA $70038C ; copy starting equipment swaps to file select screen
|
|
||||||
LDA !INVENTORY_SWAP_2 : STA $70038E
|
; reset some values on new file that are otherwise only reset on hard reset
|
||||||
|
STZ $03C4 ; ancilla slot index
|
||||||
|
STZ $047A ; EG
|
||||||
|
STZ $0B08 : STZ $0B09 ; arc variable
|
||||||
|
STZ $0CFB ; enemies killed (pull trees)
|
||||||
|
STZ $0CFC ; times taken damage (pull trees)
|
||||||
|
STZ $0FC7 : STZ $0FC8 : STZ $0FC9 : STZ $0FCA : STZ $0FCB : STZ $0FCC : STZ $0FCD ; prize packs
|
||||||
|
LDA #$00 : STA $7EC011 ; mosaic
|
||||||
|
JSL InitRNGPointerTable ; boss RNG
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -172,8 +184,8 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnLinkDamaged:
|
OnLinkDamaged:
|
||||||
JSL.l FlipperKill
|
JSL.l FlipperKill
|
||||||
JSL.l OHKOTimer
|
JML.l OHKOTimer
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnEnterWater:
|
OnEnterWater:
|
||||||
JSL.l RegisterWaterEntryScreen
|
JSL.l RegisterWaterEntryScreen
|
||||||
@@ -188,8 +200,8 @@ OnLinkDamagedFromPit:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnLinkDamagedFromPitOutdoors:
|
OnLinkDamagedFromPitOutdoors:
|
||||||
JSL.l OHKOTimer ; make sure this is last
|
JML.l OHKOTimer ; make sure this is last
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||||
OnOWTransition:
|
OnOWTransition:
|
||||||
@@ -212,16 +224,16 @@ OnLoadDuckMap:
|
|||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.b #$00 : STA !DARK_DUCK_TEMP
|
LDA.b #$00 : STA !DARK_DUCK_TEMP
|
||||||
JSL OverworldMap_DarkWorldTilemap
|
JML OverworldMap_DarkWorldTilemap
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PreItemGet:
|
PreItemGet:
|
||||||
LDA.b #$01 : STA !ITEM_BUSY ; mark item as busy
|
LDA.b #$01 : STA !ITEM_BUSY ; mark item as busy
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PostItemGet:
|
PostItemGet:
|
||||||
JSL.l MaybeWriteSRAMTrace
|
JML.l MaybeWriteSRAMTrace
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PostItemAnimation:
|
PostItemAnimation:
|
||||||
LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished
|
LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished
|
||||||
|
|||||||
@@ -27,8 +27,7 @@ RTL
|
|||||||
FairyPond_Init:
|
FairyPond_Init:
|
||||||
LDA.l Restrict_Ponds : BNE +
|
LDA.l Restrict_Ponds : BNE +
|
||||||
LDA.b #$48
|
LDA.b #$48
|
||||||
JSL.l Sprite_ShowMessageFromPlayerContact
|
JML.l Sprite_ShowMessageFromPlayerContact
|
||||||
RTL
|
|
||||||
+
|
+
|
||||||
PHY : JSL.l Sprite_CheckDamageToPlayerSameLayerLong : BCC +
|
PHY : JSL.l Sprite_CheckDamageToPlayerSameLayerLong : BCC +
|
||||||
LDA $7EF35C : CMP.b #$02 : BNE ++ : LDA.b #$1C : PHA : BRA .emptyBottle : ++
|
LDA $7EF35C : CMP.b #$02 : BNE ++ : LDA.b #$1C : PHA : BRA .emptyBottle : ++
|
||||||
@@ -56,8 +55,8 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HappinessPond_Check:
|
HappinessPond_Check:
|
||||||
LDA $A0 : CMP.b #$15 ;what we wrote over
|
LDA $A0 : CMP.b #$15 ;what we wrote over
|
||||||
PHP
|
|
||||||
BNE .done
|
BNE .done
|
||||||
|
PHP
|
||||||
|
|
||||||
LDA.b #$72
|
LDA.b #$72
|
||||||
JSL Sprite_SpawnDynamically
|
JSL Sprite_SpawnDynamically
|
||||||
@@ -83,6 +82,6 @@ HappinessPond_Check:
|
|||||||
|
|
||||||
STZ $0DD0, X ; self terminate
|
STZ $0DD0, X ; self terminate
|
||||||
|
|
||||||
.done
|
|
||||||
PLP
|
PLP
|
||||||
|
.done
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ JMP DrawItem
|
|||||||
|
|
||||||
|
|
||||||
DrawPlayerFile:
|
DrawPlayerFile:
|
||||||
LDA $1A : AND.w #$0001 : BEQ + : BRA .normal : +
|
LDA $1A : AND.w #$0001 : BNE .normal
|
||||||
JSR DrawPlayerFileShared
|
JSR DrawPlayerFileShared
|
||||||
INC $0710 ; Suppress animated tile updates for this frame
|
INC $0710 ; Suppress animated tile updates for this frame
|
||||||
|
|
||||||
@@ -633,15 +633,15 @@ AltBufferTable:
|
|||||||
STA $1104 ;file 2 top row
|
STA $1104 ;file 2 top row
|
||||||
STA $1144 ;file 2 bottom row
|
STA $1144 ;file 2 bottom row
|
||||||
STA $1184 ;gap row top
|
STA $1184 ;gap row top
|
||||||
STA $11c4 ;gap row bottom
|
STA $11C4 ;gap row bottom
|
||||||
STA $1204 ;file 3 top row
|
STA $1204 ;file 3 top row
|
||||||
STA $1244 ;file 3 bottom row
|
STA $1244 ;file 3 bottom row
|
||||||
STA $1284 ;extra gap row top
|
STA $1284 ;extra gap row top
|
||||||
STA $12c4 ;extra gap row bottom
|
STA $12C4 ;extra gap row bottom
|
||||||
STA $1304 ;extra gap row top
|
STA $1304 ;extra gap row top
|
||||||
STA $1344 ;extra gap row bottom
|
STA $1344 ;extra gap row bottom
|
||||||
STA $1384 ;extra gap row top
|
STA $1384 ;extra gap row top
|
||||||
STA $13c4 ;extra gap row bottom
|
STA $13C4 ;extra gap row bottom
|
||||||
|
|
||||||
; Set last packet marker
|
; Set last packet marker
|
||||||
LDA.w #$00FF : STA $1402
|
LDA.w #$00FF : STA $1402
|
||||||
|
|||||||
8
firebarlayer.asm
Normal file
8
firebarlayer.asm
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
NewFireBarDamage:
|
||||||
|
{
|
||||||
|
LDA $00EE : CMP $0F20, X : BNE .NotSameLayer
|
||||||
|
JSL Sprite_AttemptDamageToPlayerPlusRecoilLong
|
||||||
|
RTL
|
||||||
|
.NotSameLayer
|
||||||
|
RTL
|
||||||
|
}
|
||||||
194
goalitem.asm
194
goalitem.asm
@@ -22,33 +22,79 @@ RTL
|
|||||||
;Carry clear = ganon invincible
|
;Carry clear = ganon invincible
|
||||||
;Carry set = ganon vulnerable
|
;Carry set = ganon vulnerable
|
||||||
CheckGanonVulnerability:
|
CheckGanonVulnerability:
|
||||||
LDA InvincibleGanon : BEQ .success
|
PHX
|
||||||
;#$00 = Off
|
LDA.l InvincibleGanon
|
||||||
+ : CMP #$01 : BEQ .fail
|
ASL
|
||||||
;#$01 = On
|
TAX
|
||||||
+ : CMP #$02 : BNE +
|
|
||||||
;#$02 = Require All Dungeons
|
; Carry
|
||||||
LDA $7EF374 : AND.b #$07 : CMP #$07 : BNE .fail ; require all pendants
|
; 0 - invulnerable
|
||||||
LDA $7EF37A : AND.b #$7F : CMP #$7F : BNE .fail ; require all crystals
|
; 1 - vulnerable
|
||||||
LDA $7EF3C5 : CMP.b #$03 : !BLT .fail ; require post-aga world state
|
JSR (.goals, X)
|
||||||
LDA $7EF2DB : AND.b #$20 : CMP #$20 : BNE .fail ; require aga2 defeated (pyramid hole open)
|
|
||||||
BRA .success
|
PLX
|
||||||
+ : CMP #$04 : BNE +
|
RTL
|
||||||
;#$04 = Require Crystals
|
|
||||||
JSL CheckEnoughCrystalsForGanon : !BLT .fail ; require specified number of crystals
|
|
||||||
BRA .success
|
.goals
|
||||||
+ : CMP #$03 : BNE +
|
dw .vulnerable
|
||||||
;#$03 = Require Crystals and Aga 2
|
dw .invulnerable
|
||||||
JSL CheckEnoughCrystalsForGanon : !BLT .fail ; require specified number of crystals
|
dw .all_dungeons
|
||||||
LDA $7EF2DB : AND.b #$20 : CMP #$20 : BNE .fail ; require aga2 defeated (pyramid hole open)
|
dw .crystals_and_aga
|
||||||
BRA .success
|
dw .crystals
|
||||||
+ : CMP #$05 : BNE +
|
dw .goal_item
|
||||||
;#$05 = Require Goal Items
|
dw .light_speed
|
||||||
LDA.l !GOAL_COUNTER : CMP GoalItemRequirement : !BLT .fail ; require specified number of goal items
|
dw .crystals_and_bosses
|
||||||
BRA .success
|
dw .bosses_only
|
||||||
+
|
|
||||||
.fail : CLC : RTL
|
; 00 = always vulnerable
|
||||||
.success : SEC : RTL
|
.vulnerable
|
||||||
|
.success
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; 01 = always invulnerable
|
||||||
|
.invulnerable
|
||||||
|
.fail
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; 02 = All dungeons
|
||||||
|
.all_dungeons
|
||||||
|
LDA.l $7EF374 : AND.b #$07 : CMP.b #$07 : BNE .fail ; require all pendants
|
||||||
|
LDA.l $7EF37A : AND.b #$7F : CMP.b #$7F : BNE .fail ; require all crystals
|
||||||
|
LDA.l $7EF3C5 : CMP.b #$03 : BCC .fail ; require post-aga world state
|
||||||
|
LDA.l $7EF2DB : AND.b #$20 : CMP.b #$20 : BNE .fail ; require aga2 defeated (pyramid hole open)
|
||||||
|
BRA .success
|
||||||
|
|
||||||
|
; 03 = crystals and aga 2
|
||||||
|
.crystals_and_aga
|
||||||
|
LDA.l $7EF2DDB : AND.b #$20 : BEQ .fail ; check aga2 first then bleed in
|
||||||
|
|
||||||
|
; 04 = crystals only
|
||||||
|
.crystals
|
||||||
|
JSL CheckEnoughCrystalsForGanon
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; 05 = require goal item
|
||||||
|
.goal_item
|
||||||
|
LDA.l !GOAL_COUNTER : CMP GoalItemRequirement
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; 06 = light speed
|
||||||
|
.light_speed
|
||||||
|
BRA .fail
|
||||||
|
|
||||||
|
; 07 = Crystals and bosses
|
||||||
|
.crystals_and_bosses
|
||||||
|
JSL CheckEnoughCrystalsForGanon ; check crystals first then bleed in to next
|
||||||
|
BCC .fail
|
||||||
|
|
||||||
|
; 08 = Crystal bosses but no crystals
|
||||||
|
.bosses_only
|
||||||
|
;LDA.l $7EF2DDB : AND.b #$20 : BEQ .fail ; check aga2
|
||||||
|
JMP CheckForCrystalBossesDefeated
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetRequiredCrystalsForTower:
|
GetRequiredCrystalsForTower:
|
||||||
BEQ + : JSL.l BreakTowerSeal_ExecuteSparkles : + ; thing we wrote over
|
BEQ + : JSL.l BreakTowerSeal_ExecuteSparkles : + ; thing we wrote over
|
||||||
@@ -63,23 +109,105 @@ GetRequiredCrystalsInX:
|
|||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
|
|
||||||
TXA : - : CMP.l NumberOfCrystalsRequiredForTower : !BLT + : !SUB.l NumberOfCrystalsRequiredForTower : BRA - : +
|
TXA
|
||||||
|
|
||||||
INC : CMP.l NumberOfCrystalsRequiredForTower : BNE +
|
- CMP.l NumberOfCrystalsRequiredForTower : BCC +
|
||||||
|
SBC.l NumberOfCrystalsRequiredForTower ; carry guaranteed set
|
||||||
|
BRA -
|
||||||
|
|
||||||
|
+ INC : CMP.l NumberOfCrystalsRequiredForTower : BNE +
|
||||||
LDA.b #$08
|
LDA.b #$08
|
||||||
+ : DEC : TAX
|
+ : DEC : TAX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckEnoughCrystalsForGanon:
|
CheckEnoughCrystalsForGanon:
|
||||||
PHX : PHY
|
|
||||||
LDA $7EF37A : JSL CountBits ; the comparison is against 1 less
|
LDA $7EF37A : JSL CountBits ; the comparison is against 1 less
|
||||||
PLY : PLX
|
|
||||||
CMP.l NumberOfCrystalsRequiredForGanon
|
CMP.l NumberOfCrystalsRequiredForGanon
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckEnoughCrystalsForTower:
|
CheckEnoughCrystalsForTower:
|
||||||
PHX : PHY
|
|
||||||
LDA $7EF37A : JSL CountBits ; the comparison is against 1 less
|
LDA $7EF37A : JSL CountBits ; the comparison is against 1 less
|
||||||
PLY : PLX
|
|
||||||
CMP.l NumberOfCrystalsRequiredForTower
|
CMP.l NumberOfCrystalsRequiredForTower
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
CheckAgaForPed:
|
||||||
|
LDA.l InvincibleGanon
|
||||||
|
CMP.b #$06 : BNE .vanilla
|
||||||
|
|
||||||
|
.light_speed
|
||||||
|
LDA.l $7EF300 ; check ped flag
|
||||||
|
AND.b #$40
|
||||||
|
BEQ .force_blue_ball
|
||||||
|
|
||||||
|
.vanilla ; run vanilla check for phase
|
||||||
|
LDA.w $0E30, X
|
||||||
|
CMP.b #$02
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.force_blue_ball
|
||||||
|
LDA.b #$01 : STA.w $0DA0, Y
|
||||||
|
LDA.b #$20 : STA.w $0DF0, Y
|
||||||
|
CLC ; skip the RNG check
|
||||||
|
RTL
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
KillGanon:
|
||||||
|
STA.l $7EF3C5 ; vanilla game state stuff we overwrote
|
||||||
|
|
||||||
|
LDA.l InvincibleGanon
|
||||||
|
CMP.b #$06 : BNE .exit
|
||||||
|
|
||||||
|
.light_speed
|
||||||
|
LDA.l $7EF2DB : ORA.b #$20 : STA.l $7EF2DB ; pyramid hole
|
||||||
|
LDA.b #$08 : STA.l $7EF001 ; kill ganon
|
||||||
|
LDA.b #$02 : STA.l $7EF357 ; pearl but invisible in menu
|
||||||
|
|
||||||
|
.exit
|
||||||
|
RTL
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CheckForCrystalBossesDefeated:
|
||||||
|
PHB : PHX : PHY
|
||||||
|
|
||||||
|
LDA.b #CrystalPendantFlags_2>>16
|
||||||
|
PHA : PLB
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
; count of number of bosses killed
|
||||||
|
STZ.b $00
|
||||||
|
|
||||||
|
LDY.w #10
|
||||||
|
|
||||||
|
.next_check
|
||||||
|
LDA.w CrystalPendantFlags_2-2,Y
|
||||||
|
BIT.w #$0040
|
||||||
|
BEQ ++
|
||||||
|
|
||||||
|
TYA
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
|
||||||
|
LDA.l DrawHUDDungeonItems_boss_room_ids-4,X
|
||||||
|
TAX
|
||||||
|
LDA.l $7EF000,X
|
||||||
|
|
||||||
|
AND.w #$0800
|
||||||
|
BEQ ++
|
||||||
|
|
||||||
|
INC.b $00
|
||||||
|
|
||||||
|
++ DEY
|
||||||
|
BPL .next_check
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
PLY : PLX : PLB
|
||||||
|
|
||||||
|
LDA.b $00 : CMP.l NumberOfCrystalsRequiredForGanon
|
||||||
|
|
||||||
|
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ GetMagicBatItem:
|
|||||||
TAY
|
TAY
|
||||||
PHA : LDA MagicBatItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID : PLA
|
PHA : LDA MagicBatItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID : PLA
|
||||||
STZ $02E9 ; 0 = Receiving item from an NPC or message
|
STZ $02E9 ; 0 = Receiving item from an NPC or message
|
||||||
JSL.l Link_ReceiveItem
|
JML.l Link_ReceiveItem
|
||||||
RTL
|
|
||||||
.normalLogic
|
.normalLogic
|
||||||
LDA HalfMagic
|
LDA HalfMagic
|
||||||
STA $7EF37B
|
STA $7EF37B
|
||||||
|
|||||||
103
heartpieces.asm
103
heartpieces.asm
@@ -27,7 +27,7 @@ HeartPieceGet:
|
|||||||
JSL.l $0791B3 ; Player_HaltDashAttackLong
|
JSL.l $0791B3 ; Player_HaltDashAttackLong
|
||||||
JSL.l Link_ReceiveItem
|
JSL.l Link_ReceiveItem
|
||||||
CLC ; return false
|
CLC ; return false
|
||||||
BRL .done ; finished
|
JMP .done ; finished
|
||||||
|
|
||||||
.unfinished_heart
|
.unfinished_heart
|
||||||
SEC ; return true
|
SEC ; return true
|
||||||
@@ -57,7 +57,7 @@ DrawHeartPieceGFX:
|
|||||||
PHA : PHY
|
PHA : PHY
|
||||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
||||||
JSL.l HeartPieceSpritePrep
|
JSL.l HeartPieceSpritePrep
|
||||||
BRL .done ; don't draw on the init frame
|
JMP .done ; don't draw on the init frame
|
||||||
|
|
||||||
.skipInit
|
.skipInit
|
||||||
LDA $0E80, X ; Retrieve stored item type
|
LDA $0E80, X ; Retrieve stored item type
|
||||||
@@ -185,7 +185,7 @@ LoadHeartPieceRoomValue:
|
|||||||
LDA $1B : BEQ .outdoors ; check if we're indoors or outdoors
|
LDA $1B : BEQ .outdoors ; check if we're indoors or outdoors
|
||||||
.indoors
|
.indoors
|
||||||
JSL.l LoadIndoorValue
|
JSL.l LoadIndoorValue
|
||||||
BRL .done
|
JMP .done
|
||||||
.outdoors
|
.outdoors
|
||||||
JSL.l LoadOutdoorValue
|
JSL.l LoadOutdoorValue
|
||||||
.done
|
.done
|
||||||
@@ -240,30 +240,30 @@ LoadIndoorValue:
|
|||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #225 : BNE +
|
CMP.w #225 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Forest_Thieves, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Forest_Thieves, HeartPieceIndoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #226 : BNE +
|
+ CMP.w #226 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Lumberjack_Tree, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Lumberjack_Tree, HeartPieceIndoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #234 : BNE +
|
+ CMP.w #234 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Spectacle_Cave, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Spectacle_Cave, HeartPieceIndoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #283 : BNE +
|
+ CMP.w #283 : BNE +
|
||||||
LDA $22 : XBA : AND.w #$0001 ; figure out where link is
|
LDA $22 : XBA : AND.w #$0001 ; figure out where link is
|
||||||
BNE ++
|
BNE ++
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Circle_Bushes, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Circle_Bushes, HeartPieceIndoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Graveyard_Warp, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Graveyard_Warp, HeartPieceIndoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #294 : BNE +
|
+ CMP.w #294 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Mire_Warp, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Mire_Warp, HeartPieceIndoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #295 : BNE +
|
+ CMP.w #295 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Smith_Pegs, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Smith_Pegs, HeartPieceIndoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #135 : BNE +
|
+ CMP.w #135 : BNE +
|
||||||
LDA StandingKey_Hera
|
LDA StandingKey_Hera
|
||||||
BRL .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.w #$0017 ; default to a normal hp
|
LDA.w #$0017 ; default to a normal hp
|
||||||
.done
|
.done
|
||||||
@@ -286,47 +286,47 @@ LoadOutdoorValue:
|
|||||||
CMP.w #$03 : BNE +
|
CMP.w #$03 : BNE +
|
||||||
LDA $22 : CMP.w #1890 : !BLT ++
|
LDA $22 : CMP.w #1890 : !BLT ++
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Spectacle, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Spectacle, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
%GetPossiblyEncryptedItem(EtherItem, SpriteItemValues)
|
%GetPossiblyEncryptedItem(EtherItem, SpriteItemValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$05 : BNE +
|
+ CMP.w #$05 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Mountain_Warp, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Mountain_Warp, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$28 : BNE +
|
+ CMP.w #$28 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Maze, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Maze, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$2A : BNE +
|
+ CMP.w #$2A : BNE +
|
||||||
%GetPossiblyEncryptedItem(HauntedGroveItem, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HauntedGroveItem, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$30 : BNE +
|
+ CMP.w #$30 : BNE +
|
||||||
LDA $22 : CMP.w #512 : !BGE ++
|
LDA $22 : CMP.w #512 : !BGE ++
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Desert, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Desert, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
%GetPossiblyEncryptedItem(BombosItem, SpriteItemValues)
|
%GetPossiblyEncryptedItem(BombosItem, SpriteItemValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$35 : BNE +
|
+ CMP.w #$35 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Lake, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Lake, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$3B : BNE +
|
+ CMP.w #$3B : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Swamp, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Swamp, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$42 : BNE +
|
+ CMP.w #$42 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Cliffside, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Cliffside, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$4A : BNE +
|
+ CMP.w #$4A : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Cliffside, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Cliffside, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$5B : BNE +
|
+ CMP.w #$5B : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Pyramid, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Pyramid, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$68 : BNE +
|
+ CMP.w #$68 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Digging, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Digging, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #$81 : BNE +
|
+ CMP.w #$81 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Zora, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Zora, HeartPieceOutdoorValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.w #$0017 ; default to a normal hp
|
LDA.w #$0017 ; default to a normal hp
|
||||||
.done
|
.done
|
||||||
@@ -353,34 +353,34 @@ LoadBossValue:
|
|||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #200 : BNE +
|
CMP.w #200 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_ArmosKnights, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_ArmosKnights, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #51 : BNE +
|
+ CMP.w #51 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Lanmolas, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Lanmolas, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #7 : BNE +
|
+ CMP.w #7 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Moldorm, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Moldorm, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #90 : BNE +
|
+ CMP.w #90 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_HelmasaurKing, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_HelmasaurKing, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #6 : BNE +
|
+ CMP.w #6 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Arrghus, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Arrghus, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #41 : BNE +
|
+ CMP.w #41 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Mothula, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Mothula, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #172 : BNE +
|
+ CMP.w #172 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Blind, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Blind, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #222 : BNE +
|
+ CMP.w #222 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Kholdstare, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Kholdstare, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #144 : BNE +
|
+ CMP.w #144 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Vitreous, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Vitreous, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.w #164 : BNE +
|
+ CMP.w #164 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_Trinexx, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_Trinexx, HeartContainerBossValues)
|
||||||
BRL .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.w #$003E ; default to a normal boss heart
|
LDA.w #$003E ; default to a normal boss heart
|
||||||
.done
|
.done
|
||||||
@@ -394,30 +394,19 @@ CheckIfBossRoom:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #200 : BNE +
|
CMP.w #200 : BEQ .done
|
||||||
SEC : BRL .done
|
CMP.w #51 : BEQ .done
|
||||||
+ CMP.w #51 : BNE +
|
CMP.w #7 : BEQ .done
|
||||||
SEC : BRL .done
|
CMP.w #90 : BEQ .done
|
||||||
+ CMP.w #7 : BNE +
|
CMP.w #6 : BEQ .done
|
||||||
SEC : BRL .done
|
CMP.w #41 : BEQ .done
|
||||||
+ CMP.w #90 : BNE +
|
CMP.w #172 : BEQ .done
|
||||||
SEC : BRL .done
|
CMP.w #222 : BEQ .done
|
||||||
+ CMP.w #6 : BNE +
|
CMP.w #144 : BEQ .done
|
||||||
SEC : BRL .done
|
CMP.w #164 : BEQ .done
|
||||||
+ CMP.w #41 : BNE +
|
|
||||||
SEC : BRL .done
|
|
||||||
+ CMP.w #172 : BNE +
|
|
||||||
SEC : BRL .done
|
|
||||||
+ CMP.w #222 : BNE +
|
|
||||||
SEC : BRL .done
|
|
||||||
+ CMP.w #144 : BNE +
|
|
||||||
SEC : BRL .done
|
|
||||||
+ CMP.w #164 : BNE +
|
|
||||||
SEC : BRL .done
|
|
||||||
+
|
|
||||||
CLC
|
CLC
|
||||||
.done
|
.done
|
||||||
SEP #$20 ; set 8-bit accumulator
|
+ SEP #$20 ; set 8-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;#200 - Eastern Palace - Armos Knights
|
;#200 - Eastern Palace - Armos Knights
|
||||||
|
|||||||
84
hooks.asm
84
hooks.asm
@@ -268,7 +268,9 @@ org $0CCE85 ; <- Bank0C.asm : 1953 (LDA $C8 : ASL A : INC #2 : STA $701FFE)
|
|||||||
NOP #4
|
NOP #4
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0CDB4C ; <- Bank0C.asm : 3655 (LDA $C8 : ASL A : INC #2 : STA $701FFE : TAX)
|
org $0CDB4C ; <- Bank0C.asm : 3655 (LDA $C8 : ASL A : INC #2 : STA $701FFE : TAX)
|
||||||
NOP #4
|
JSL OnFileCreation
|
||||||
|
NOP
|
||||||
|
;Additionally, display inventory swap starting equipment on file select
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $09F5EA ; <- module_death.asm : 510 (LDA $701FFE : TAX : DEX #2)
|
org $09F5EA ; <- module_death.asm : 510 (LDA $701FFE : TAX : DEX #2)
|
||||||
LDA.w #$0002 : NOP
|
LDA.w #$0002 : NOP
|
||||||
@@ -437,10 +439,24 @@ JSL.l OnPrepFileSelect
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Agahnim 0bb
|
; Light speed
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $1ED6EF ; <- F56EF - sprite_agahnim.asm : 636 (JSL GetRandomInt : AND.b #$01 : BNE BRANCH_GAMMA)
|
|
||||||
;NOP #18
|
; Message
|
||||||
|
org $1ED4FF
|
||||||
|
JSL AgahnimAsksAboutPed
|
||||||
|
|
||||||
|
; Spam blue balls if ped not pulled
|
||||||
|
org $1ED6E8
|
||||||
|
JSL CheckAgaForPed : NOP
|
||||||
|
|
||||||
|
|
||||||
|
; kill ganon when aga dies in light speed
|
||||||
|
org $00F970
|
||||||
|
JSL KillGanon
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -725,19 +741,49 @@ dw $0000, $0002, $0004, $0032, $0004, $0006, $0030
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Accessability
|
; Accessibility
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0AC574 ; <- 54574 - Bank0A.asm : 1797 (LDA $0D : STA $0802, X)
|
;org $0AC574 ; <- 54574 - Bank0A.asm : 1797 (LDA $0D : STA $0802, X)
|
||||||
;JSL FlipGreenPendant
|
;JSL FlipGreenPendant
|
||||||
;NOP #6
|
;NOP #6
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $08AAE1 ; <- 42AE1 - ancilla_ether_spell.asm : 28 (LDA $031D : CMP.b #$0B)
|
org $08AAF9 ; -< 42AF9 - ancilla_ether_spell.asm : 46 (JSL Palette_Restore_BG_From_Flash)
|
||||||
JSL.l SetEtherFlicker : NOP
|
JSL.l RestoreBgEther
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0CF37B ; <- 6737B - Bank0C.asm : 5055 (JSL Filter_MajorWhitenMain)
|
org $02A3F4 ; <- 123F4 - Bank02.asm : 6222 (LDA.b #$72 : BRA .setBrightness)
|
||||||
JSL.l SetAttractMaidenFlicker : NOP #2
|
BRA + : NOP #2 : +
|
||||||
|
org $02A3FD ; <- 123FD - Bank02.asm : 6233 (LDA.b #$32 : STA $9a)
|
||||||
|
JSL.l ConditionalLightning
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org $1DE9CD ; <- EE9CD - Bank1D.asm : 568 (JSL Filter_Majorly_Whiten_Bg)
|
||||||
|
JSL.l ConditionalWhitenBg
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $08AAED ; <- 42AED - ancilla_ether_spell.asm : 35 (JSL Filter_Majorly_Whiten_Bg)
|
||||||
|
JSL.l ConditionalWhitenBg
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $02FEE6 ; <- 17EE6 - Bank0E.asm : 3907 (RTS)
|
||||||
|
RTL ; the whiten color routine is only JSL-ed to
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $07FA7B ; <- 3FA7B - Bank0E.asm : 4735 (REP #$20 : LDX.b #$02)
|
||||||
|
JML DDMConditionalLightning
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $07FACB ; <- 3FACB - Bank0E.asm : 4773 (REP #$20 : LDA #$F531, Y)
|
||||||
|
JSL.l ConditionalGTFlash : BRA + : NOP #11 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0AFF48 ; <- 57F48 - Bank0A.asm : 4935 (REP #$20 : LDA $7EC3DA)
|
||||||
|
JSL.l ConditionalRedFlash : BRA + : NOP #13 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $08C2A1 ; <- 442A3 - ancilla_sword_ceremony.asm : 54 (REP #$20)
|
||||||
|
JSL.l ConditionalPedAncilla : BRA + : NOP #4 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $02FDB1 ; <- 17DB1 - Bank0E.asm : 3760 (JSL LoadGearPalette)
|
||||||
|
JSL.l ConditionalChangeGearPalette : NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $02FDCB ; <- 17DCB - Bank0E.asm : 3775 (JSL LoadGearPalette)
|
||||||
|
JSL.l ConditionalChangeGearPalette : NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $02FDE6 ; <- 17DE6 - Bank0E.asm : 3789 (JSL LoadGearPalette)
|
||||||
|
JSL.l ConditionalChangeGearPalette : NOP
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Ice Floor Toggle
|
; Ice Floor Toggle
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1692,7 +1738,7 @@ JSL.l ShowDungeonItems : NOP #5
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
org $0DEA5F ; <- 6EA5F - equipment.asm:1679 - (SEP #$30)
|
org $0DEA5F ; <- 6EA5F - equipment.asm:1679 - (SEP #$30)
|
||||||
;NOP #5
|
;NOP #5
|
||||||
;BRL .skipCrystalInit
|
;JMP .skipCrystalInit
|
||||||
;org $0DEAA4 ; <- 6EAA4 - equipment.asm:1706 - (LDA $7EF37A : AND.w #$0001)
|
;org $0DEAA4 ; <- 6EAA4 - equipment.asm:1706 - (LDA $7EF37A : AND.w #$0001)
|
||||||
;.skipCrystalInit
|
;.skipCrystalInit
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -2615,6 +2661,22 @@ CheckIfReading:
|
|||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
|
org $0DB4CA : db $40, $40 ; fire bar statis
|
||||||
|
org $0DB4A9 : db $50, $50, $6E, $6E ; roller statis
|
||||||
|
org $0DB4B2 : db $40, $40, $40, $40 ; cannon statis
|
||||||
|
org $0DB4C3 : db $C0 ; anti fairy statis
|
||||||
|
org $0DB516 : db $40 ; chain chomp statis
|
||||||
|
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Keep Firebar Damage on Same Layer
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $06F425
|
||||||
|
Sprite_AttemptDamageToPlayerPlusRecoilLong:
|
||||||
|
|
||||||
|
org $1ED1B6
|
||||||
|
JSL NewFireBarDamage
|
||||||
|
;================================================================================
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Terrorpin AI fix
|
; Terrorpin AI fix
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -82,8 +82,8 @@ DrHudDungeonItemsAdditions:
|
|||||||
- sta $1704, x : sta $170e, x : sta $1718, x
|
- sta $1704, x : sta $170e, x : sta $1718, x
|
||||||
inx #2 : cpx #$0008 : !blt -
|
inx #2 : cpx #$0008 : !blt -
|
||||||
|
|
||||||
lda !HUD_FLAG : and.w #$0020 : beq + : brl ++ : +
|
lda !HUD_FLAG : and.w #$0020 : beq + : JMP ++ : +
|
||||||
lda HUDDungeonItems : and.w #$0007 : bne + : brl ++ : +
|
lda HUDDungeonItems : and.w #$0007 : bne + : JMP ++ : +
|
||||||
; bk symbols
|
; bk symbols
|
||||||
lda.w #$2811 : sta $1606 : sta $1610 : sta $161a : sta $1624
|
lda.w #$2811 : sta $1606 : sta $1610 : sta $161a : sta $1624
|
||||||
; sm symbols
|
; sm symbols
|
||||||
@@ -125,10 +125,10 @@ DrHudDungeonItemsAdditions:
|
|||||||
lda.w #$24f5 : sta $1644, y
|
lda.w #$24f5 : sta $1644, y
|
||||||
+
|
+
|
||||||
ldx $00
|
ldx $00
|
||||||
+ inx #2 : cpx #$001b : bcs ++ : brl -
|
+ inx #2 : cpx #$001b : bcs ++ : JMP -
|
||||||
++
|
++
|
||||||
lda !HUD_FLAG : and.w #$0020 : bne + : brl ++ : +
|
lda !HUD_FLAG : and.w #$0020 : bne + : JMP ++ : +
|
||||||
lda HUDDungeonItems : and.w #$000c : bne + : brl ++ : +
|
lda HUDDungeonItems : and.w #$000c : bne + : JMP ++ : +
|
||||||
; map symbols (do I want these) ; note compass symbol is 2c20
|
; map symbols (do I want these) ; note compass symbol is 2c20
|
||||||
lda.w #$2821 : sta $1606 : sta $1610 : sta $161a : sta $1624
|
lda.w #$2821 : sta $1606 : sta $1610 : sta $161a : sta $1624
|
||||||
; blank out a couple thing from old hud
|
; blank out a couple thing from old hud
|
||||||
@@ -159,7 +159,7 @@ DrHudDungeonItemsAdditions:
|
|||||||
.skipBlanks iny #2
|
.skipBlanks iny #2
|
||||||
cpx #$001a : beq +
|
cpx #$001a : beq +
|
||||||
lda.w #$24f5 : sta $1644, y ; blank out spot
|
lda.w #$24f5 : sta $1644, y ; blank out spot
|
||||||
+ inx #2 : cpx #$001b : !bge ++ : brl -
|
+ inx #2 : cpx #$001b : !bge ++ : JMP -
|
||||||
++
|
++
|
||||||
plp : ply : plx : rtl
|
plp : ply : plx : rtl
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ ShouldOverrideFileLoad:
|
|||||||
.no
|
.no
|
||||||
CLC : RTS
|
CLC : RTS
|
||||||
.yes
|
.yes
|
||||||
SEC : RTS
|
RTS
|
||||||
|
|
||||||
BgGraphicsLoading:
|
BgGraphicsLoading:
|
||||||
; Instructions overwritten
|
; Instructions overwritten
|
||||||
|
|||||||
1
init.asm
1
init.asm
@@ -56,5 +56,6 @@ RTL
|
|||||||
Init_PostRAMClear:
|
Init_PostRAMClear:
|
||||||
|
|
||||||
JSL MSUInit
|
JSL MSUInit
|
||||||
|
JSL InitRNGPointerTable
|
||||||
|
|
||||||
JML $00D463 ; The original target of the jump table that we hijacked
|
JML $00D463 ; The original target of the jump table that we hijacked
|
||||||
199
inventory.asm
199
inventory.asm
@@ -60,7 +60,7 @@ RTL
|
|||||||
LDA !INVENTORY_SWAP : AND #$C0 : CMP #$C0 : BNE .errorJump ; make sure we have both boomerangs
|
LDA !INVENTORY_SWAP : AND #$C0 : CMP #$C0 : BNE .errorJump ; make sure we have both boomerangs
|
||||||
LDA $7EF341 : EOR #$03 : STA $7EF341 ; swap blue & red boomerang
|
LDA $7EF341 : EOR #$03 : STA $7EF341 ; swap blue & red boomerang
|
||||||
LDA.b #$20 : STA $012F ; menu select sound
|
LDA.b #$20 : STA $012F ; menu select sound
|
||||||
BRL .captured
|
JMP .captured
|
||||||
+ CMP #$01 : BNE + ; bow
|
+ CMP #$01 : BNE + ; bow
|
||||||
LDA !INVENTORY_SWAP_2 : AND #$C0 : CMP #$C0 : BNE .errorJump ; make sure we have both bows
|
LDA !INVENTORY_SWAP_2 : AND #$C0 : CMP #$C0 : BNE .errorJump ; make sure we have both bows
|
||||||
PHX : LDX.b #$00 ; scan ancilla table for arrows
|
PHX : LDX.b #$00 ; scan ancilla table for arrows
|
||||||
@@ -77,7 +77,7 @@ RTL
|
|||||||
++
|
++
|
||||||
LDA $7EF340 : !SUB #$01 : EOR #$02 : !ADD #$01 : STA $7EF340 ; swap bows
|
LDA $7EF340 : !SUB #$01 : EOR #$02 : !ADD #$01 : STA $7EF340 ; swap bows
|
||||||
LDA.b #$20 : STA $012F ; menu select sound
|
LDA.b #$20 : STA $012F ; menu select sound
|
||||||
BRL .captured
|
JMP .captured
|
||||||
+ BRA +
|
+ BRA +
|
||||||
.errorJump
|
.errorJump
|
||||||
BRA .errorJump2
|
BRA .errorJump2
|
||||||
@@ -85,7 +85,7 @@ RTL
|
|||||||
LDA !INVENTORY_SWAP : AND #$30 : CMP #$30 : BNE .errorJump ; make sure we have mushroom & magic powder
|
LDA !INVENTORY_SWAP : AND #$30 : CMP #$30 : BNE .errorJump ; make sure we have mushroom & magic powder
|
||||||
LDA $7EF344 : EOR #$03 : STA $7EF344 ; swap mushroom & magic powder
|
LDA $7EF344 : EOR #$03 : STA $7EF344 ; swap mushroom & magic powder
|
||||||
LDA.b #$20 : STA $012F ; menu select sound
|
LDA.b #$20 : STA $012F ; menu select sound
|
||||||
BRL .captured
|
JMP .captured
|
||||||
+ BRA +
|
+ BRA +
|
||||||
.errorJump2
|
.errorJump2
|
||||||
BRA .error
|
BRA .error
|
||||||
@@ -124,7 +124,9 @@ RTL
|
|||||||
;ProcessBottleMenu:
|
;ProcessBottleMenu:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ProcessBottleMenu:
|
ProcessBottleMenu:
|
||||||
LDA $F4 : AND #$40 : BEQ .y_not_pressed ; skip if Y is not down
|
; LDA $F6 : AND #$30 : CMP.b #$30 : BEQ .double_shoulder_pressed
|
||||||
|
; LDA $F4 : AND #$40 : BEQ .y_not_pressed ; skip if Y is not down
|
||||||
|
; .double_shoulder_pressed
|
||||||
LDA $7EF34F ; check bottle state
|
LDA $7EF34F ; check bottle state
|
||||||
BEQ .no_bottles ; skip if we have no bottles
|
BEQ .no_bottles ; skip if we have no bottles
|
||||||
PHX
|
PHX
|
||||||
@@ -137,9 +139,9 @@ ProcessBottleMenu:
|
|||||||
.no_bottles
|
.no_bottles
|
||||||
LDA #$00 ; pretend like the controller state was 0 from the overridden load
|
LDA #$00 ; pretend like the controller state was 0 from the overridden load
|
||||||
RTL
|
RTL
|
||||||
.y_not_pressed
|
; .y_not_pressed
|
||||||
LDA $F4 : AND.b #$0C ; thing we wrote over - load controller state
|
; LDA $F4 : AND.b #$0C ; thing we wrote over - load controller state
|
||||||
RTL
|
;RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -208,67 +210,68 @@ AddInventory:
|
|||||||
|
|
||||||
CPY.b #$0C : BNE + ; Blue Boomerang
|
CPY.b #$0C : BNE + ; Blue Boomerang
|
||||||
LDA !INVENTORY_SWAP : ORA #$80 : STA !INVENTORY_SWAP
|
LDA !INVENTORY_SWAP : ORA #$80 : STA !INVENTORY_SWAP
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$2A : BNE + ; Red Boomerang
|
+ CPY.b #$2A : BNE + ; Red Boomerang
|
||||||
LDA !INVENTORY_SWAP : ORA #$40 : STA !INVENTORY_SWAP
|
LDA !INVENTORY_SWAP : ORA #$40 : STA !INVENTORY_SWAP
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$29 : BNE + ; Mushroom
|
+ CPY.b #$29 : BNE + ; Mushroom
|
||||||
LDA !INVENTORY_SWAP : ORA #$28 : STA !INVENTORY_SWAP
|
LDA !INVENTORY_SWAP : ORA #$28 : STA !INVENTORY_SWAP
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$0D : BNE + ; Magic Powder
|
+ CPY.b #$0D : BNE + ; Magic Powder
|
||||||
LDA !INVENTORY_SWAP : ORA #$10 : STA !INVENTORY_SWAP
|
LDA !INVENTORY_SWAP : ORA #$10 : STA !INVENTORY_SWAP
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$13 : BNE + ; Shovel
|
+ CPY.b #$13 : BNE + ; Shovel
|
||||||
LDA !INVENTORY_SWAP : ORA #$04 : STA !INVENTORY_SWAP
|
LDA !INVENTORY_SWAP : ORA #$04 : STA !INVENTORY_SWAP
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$14 : BNE + ; Flute (Inactive)
|
+ CPY.b #$14 : BNE + ; Flute (Inactive)
|
||||||
LDA !INVENTORY_SWAP : ORA #$02 : STA !INVENTORY_SWAP
|
LDA !INVENTORY_SWAP : ORA #$02 : STA !INVENTORY_SWAP
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
+ CPY.b #$4A : BNE + ; Flute (Active)
|
||||||
LDA !INVENTORY_SWAP : ORA #$01 : STA !INVENTORY_SWAP
|
LDA !INVENTORY_SWAP : ORA #$01 : STA !INVENTORY_SWAP
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$0B : BNE + ; Bow
|
+ CPY.b #$0B : BNE + ; Bow
|
||||||
LDA ArrowMode : BNE +++
|
LDA ArrowMode : BNE +++
|
||||||
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2
|
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2
|
||||||
+++
|
+++
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$3A : BNE + ; Bow & Arrows
|
+ CPY.b #$3A : BNE + ; Bow & Arrows
|
||||||
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2
|
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$3B : BNE + ; Bow & Silver Arrows
|
+ CPY.b #$3B : BNE + ; Bow & Silver Arrows
|
||||||
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2
|
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2
|
||||||
LDA ArrowMode : BNE +++
|
LDA ArrowMode : BNE +++
|
||||||
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2 ; activate wood arrows when not in rupee bow
|
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2 ; activate wood arrows when not in rupee bow
|
||||||
+++
|
+++
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$43 : BNE + ; Single arrow
|
+ CPY.b #$43 : BNE + ; Single arrow
|
||||||
LDA ArrowMode : BEQ +++
|
LDA ArrowMode : BEQ +++
|
||||||
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2 ; activate wood arrows in quick-swap
|
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2 ; activate wood arrows in quick-swap
|
||||||
+++
|
+++
|
||||||
BRL .incrementCounts
|
JMP .incrementCounts
|
||||||
+ CPY.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
+ CPY.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
||||||
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2
|
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2
|
||||||
+
|
+
|
||||||
|
|
||||||
.incrementCounts
|
.incrementCounts
|
||||||
LDA !LOCK_STATS : BEQ + : BRL .done : +
|
LDA !LOCK_STATS : BEQ + : JMP .done : +
|
||||||
|
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
|
||||||
BRL .dungeonCounts
|
BRL .dungeonCounts
|
||||||
+
|
+
|
||||||
|
|
||||||
|
|
||||||
; don't count any of this stuff
|
; don't count any of this stuff
|
||||||
CPY.b #$20 : BNE + : BRL .itemCounts : + ; Crystal
|
CPY.b #$20 : BNE + : JMP .itemCounts : + ; Crystal
|
||||||
CPY.b #$26 : BNE + : BRL .itemCounts : + ; Heart Piece Completion Heart
|
CPY.b #$26 : BNE + : JMP .itemCounts : + ; Heart Piece Completion Heart
|
||||||
LDA.l !SHOP_ENABLE_COUNT : BNE ++
|
LDA.l !SHOP_ENABLE_COUNT : BNE ++
|
||||||
CPY.b #$2E : BNE + : BRL .itemCounts : + ; Red Potion (Refill)
|
CPY.b #$2E : BNE + : JMP .itemCounts : + ; Red Potion (Refill)
|
||||||
CPY.b #$2F : BNE + : BRL .itemCounts : + ; Green Potion (Refill)
|
CPY.b #$2F : BNE + : JMP .itemCounts : + ; Green Potion (Refill)
|
||||||
CPY.b #$30 : BNE + : BRL .itemCounts : + ; Blue Potion (Refill)
|
CPY.b #$30 : BNE + : JMP .itemCounts : + ; Blue Potion (Refill)
|
||||||
++
|
++
|
||||||
CPY.b #$37 : BNE + : BRL .itemCounts : + ; Pendant
|
CPY.b #$37 : BNE + : JMP .itemCounts : + ; Pendant
|
||||||
CPY.b #$38 : BNE + : BRL .itemCounts : + ; Pendant
|
CPY.b #$38 : BNE + : JMP .itemCounts : + ; Pendant
|
||||||
CPY.b #$39 : BNE + : BRL .itemCounts : + ; Pendant
|
CPY.b #$39 : BNE + : JMP .itemCounts : + ; Pendant
|
||||||
CPY.b #$00 : BNE + : BRL .itemCounts : + ; Uncle Sword & Shield
|
CPY.b #$00 : BNE + : JMP .itemCounts : + ; Uncle Sword & Shield
|
||||||
|
|
||||||
CPY.b #$04 : !BLT .isSword ; Swords - Skip Shop/Fairy Check for Swords
|
CPY.b #$04 : !BLT .isSword ; Swords - Skip Shop/Fairy Check for Swords
|
||||||
CPY.b #$49 : BEQ .isSword
|
CPY.b #$49 : BEQ .isSword
|
||||||
@@ -276,38 +279,38 @@ AddInventory:
|
|||||||
CPY.b #$5E : BEQ .isSword
|
CPY.b #$5E : BEQ .isSword
|
||||||
BRA +
|
BRA +
|
||||||
.isSword
|
.isSword
|
||||||
BRL .dungeonCounts
|
JMP .dungeonCounts
|
||||||
+
|
+
|
||||||
CPY.b #$3B : BNE + : BRL .dungeonCounts : + ; Silver Arrow Bow - Skip Shop/Fairy Check for Silver Arrow Bow
|
CPY.b #$3B : BNE + : JMP .dungeonCounts : + ; Silver Arrow Bow - Skip Shop/Fairy Check for Silver Arrow Bow
|
||||||
|
|
||||||
LDA $1B : BEQ ++ ; skip shop check if outdoors
|
LDA $1B : BEQ ++ ; skip shop check if outdoors
|
||||||
LDA $02E9 : CMP.b #$01 : BEQ ++ ; skip shop check for chests
|
LDA $02E9 : CMP.b #$01 : BEQ ++ ; skip shop check for chests
|
||||||
PHP : REP #$20 ; set 16-bit accumulator
|
PHP : REP #$20 ; set 16-bit accumulator
|
||||||
LDA $048E
|
LDA $048E
|
||||||
CMP.w #274 : BNE + : BRL .shop : + ; dark world death mountain shop, ornamental shield shop
|
CMP.w #274 : BNE + : JMP .shop : + ; dark world death mountain shop, ornamental shield shop
|
||||||
CMP.w #271 : BNE + : BRL .shop : + ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop
|
CMP.w #271 : BNE + : JMP .shop : + ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop
|
||||||
CMP.w #272 : BNE + : BRL .shop : + ; red shield shop
|
CMP.w #272 : BNE + : JMP .shop : + ; red shield shop
|
||||||
CMP.w #284 : BNE + : BRL .shop : + ; bomb shop
|
CMP.w #284 : BNE + : JMP .shop : + ; bomb shop
|
||||||
CMP.w #265 : BNE + : BRL .shop : + ; potion shop - commented this out because it's easier to just block potion refills because this one interferes with the powder item being counted
|
CMP.w #265 : BNE + : JMP .shop : + ; potion shop - commented this out because it's easier to just block potion refills because this one interferes with the powder item being counted
|
||||||
CMP.w #287 : BNE + : BRL .shop : + ; kakariko shop
|
CMP.w #287 : BNE + : JMP .shop : + ; kakariko shop
|
||||||
CMP.w #255 : BNE + : BRL .shop : + ; light world death mountain shop
|
CMP.w #255 : BNE + : JMP .shop : + ; light world death mountain shop
|
||||||
CMP.w #276 : BNE + : BRL .shop : + ; waterfall fairy
|
CMP.w #276 : BNE + : JMP .shop : + ; waterfall fairy
|
||||||
CMP.w #277 : BNE + : BRL .shop : + ; upgrade fairy (shop)
|
CMP.w #277 : BNE + : JMP .shop : + ; upgrade fairy (shop)
|
||||||
CMP.w #278 : BNE + : BRL .shop : + ; pyramid fairy
|
CMP.w #278 : BNE + : JMP .shop : + ; pyramid fairy
|
||||||
PLP : BRA ++
|
PLP : BRA ++
|
||||||
.shop
|
.shop
|
||||||
PLP
|
PLP
|
||||||
LDA.l !SHOP_ENABLE_COUNT : BNE ++
|
LDA.l !SHOP_ENABLE_COUNT : BNE ++
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
|
|
||||||
.dungeonCounts
|
.dungeonCounts
|
||||||
|
|
||||||
LDA !MULTIWORLD_RECEIVING_ITEM : CMP #$01 : BNE +
|
LDA !MULTIWORLD_RECEIVING_ITEM : CMP #$01 : BNE +
|
||||||
BRL .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA $1B : BNE + : BRL .fullItemCounts : +
|
LDA $1B : BNE + : JMP .fullItemCounts : +
|
||||||
; ==BEGIN INDOOR-ONLY SECTION
|
; ==BEGIN INDOOR-ONLY SECTION
|
||||||
|
|
||||||
;REP #$20 ; Set 16-bit Accumulator
|
;REP #$20 ; Set 16-bit Accumulator
|
||||||
@@ -325,7 +328,7 @@ AddInventory:
|
|||||||
|
|
||||||
CMP.l BallNChainDungeon : BNE +
|
CMP.l BallNChainDungeon : BNE +
|
||||||
CPY.b #$32 : BNE +
|
CPY.b #$32 : BNE +
|
||||||
BRL .done
|
JMP .done
|
||||||
+ LSR : TAX : LDA $7EF4BF, X : INC : STA $7EF4BF, X
|
+ LSR : TAX : LDA $7EF4BF, X : INC : STA $7EF4BF, X
|
||||||
CPX.b #$0D : BNE +
|
CPX.b #$0D : BNE +
|
||||||
LDA $7EF366 : AND #$04 : BNE ++
|
LDA $7EF366 : AND #$04 : BNE ++
|
||||||
@@ -367,180 +370,180 @@ AddInventory:
|
|||||||
CPY.b #$00 : BNE + ; Fighter's Sword & Fighter's Shield
|
CPY.b #$00 : BNE + ; Fighter's Sword & Fighter's Shield
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$01 : BNE + ; Master Sword
|
+ CPY.b #$01 : BNE + ; Master Sword
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$02 : BNE + ; Tempered Sword
|
+ CPY.b #$02 : BNE + ; Tempered Sword
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$03 : BNE + ; Golden Sword
|
+ CPY.b #$03 : BNE + ; Golden Sword
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$04 : BNE + ; Fighter's Shield
|
+ CPY.b #$04 : BNE + ; Fighter's Shield
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$05 : BNE + ; Red Shield
|
+ CPY.b #$05 : BNE + ; Red Shield
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$06 : BNE + ; Mirror Shield
|
+ CPY.b #$06 : BNE + ; Mirror Shield
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$07 : !BLT + ; Items $07 - $0D
|
+ CPY.b #$07 : !BLT + ; Items $07 - $0D
|
||||||
CPY.b #$0E : !BGE +
|
CPY.b #$0E : !BGE +
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$14 : BNE + ; Flute (Inactive) - LEAVE THIS ABOVE THE 0F-16 CONDITION - kkat
|
+ CPY.b #$14 : BNE + ; Flute (Inactive) - LEAVE THIS ABOVE THE 0F-16 CONDITION - kkat
|
||||||
JSR .stampFlute
|
JSR .stampFlute
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$0F : !BLT + ; Items $0F - $16
|
+ CPY.b #$0F : !BLT + ; Items $0F - $16
|
||||||
CPY.b #$17 : !BGE +
|
CPY.b #$17 : !BGE +
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$17 : BNE + ; Heart Piece
|
+ CPY.b #$17 : BNE + ; Heart Piece
|
||||||
JSR .incrementHeartPiece
|
JSR .incrementHeartPiece
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$18 : !BLT + ; Items $18 - $19
|
+ CPY.b #$18 : !BLT + ; Items $18 - $19
|
||||||
CPY.b #$1A : !BGE +
|
CPY.b #$1A : !BGE +
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$1A : BNE + ; Magic Mirror
|
+ CPY.b #$1A : BNE + ; Magic Mirror
|
||||||
JSR .stampMirror
|
JSR .stampMirror
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$1D : BNE + ; Book of Mudora - LEAVE THIS ABOVE THE 1B-1F CONDITION - kkat
|
+ CPY.b #$1D : BNE + ; Book of Mudora - LEAVE THIS ABOVE THE 1B-1F CONDITION - kkat
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$1B : !BLT + ; Items $1B - $1F
|
+ CPY.b #$1B : !BLT + ; Items $1B - $1F
|
||||||
CPY.b #$20 : !BGE +
|
CPY.b #$20 : !BGE +
|
||||||
JSR .incrementA
|
JSR .incrementA
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$20 : BNE + ; Crystal
|
+ CPY.b #$20 : BNE + ; Crystal
|
||||||
JSR .incrementCrystal
|
JSR .incrementCrystal
|
||||||
JSR .setDungeonCompletion
|
JSR .setDungeonCompletion
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$21 : BNE + ; Bug Net
|
+ CPY.b #$21 : BNE + ; Bug Net
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$22 : !BLT + ; Items $22 - $23
|
+ CPY.b #$22 : !BLT + ; Items $22 - $23
|
||||||
CPY.b #$24 : !BGE +
|
CPY.b #$24 : !BGE +
|
||||||
JSR .incrementMail
|
JSR .incrementMail
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$24 : BNE + ; Small Key
|
+ CPY.b #$24 : BNE + ; Small Key
|
||||||
JSR .incrementKey
|
JSR .incrementKey
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$25 : BNE + ; Compass
|
+ CPY.b #$25 : BNE + ; Compass
|
||||||
JSR .incrementCompass
|
JSR .incrementCompass
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$26 : BNE + ; Liar Heart (Container)
|
+ CPY.b #$26 : BNE + ; Liar Heart (Container)
|
||||||
;JSR .incrementHeartContainer
|
;JSR .incrementHeartContainer
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$27 : BNE + ; 1 Bomb
|
+ CPY.b #$27 : BNE + ; 1 Bomb
|
||||||
JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$28 : BNE + ; 3 Bombs
|
+ CPY.b #$28 : BNE + ; 3 Bombs
|
||||||
JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$29 : BNE + ; Musoroom
|
+ CPY.b #$29 : BNE + ; Musoroom
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$2A : !BLT + ; Items $2A - $2D
|
+ CPY.b #$2A : !BLT + ; Items $2A - $2D
|
||||||
CPY.b #$2E : !BGE +
|
CPY.b #$2E : !BGE +
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$31 : BNE + ; 10 Bombs
|
+ CPY.b #$31 : BNE + ; 10 Bombs
|
||||||
JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$32 : BNE + ; Big Key
|
+ CPY.b #$32 : BNE + ; Big Key
|
||||||
JSR .incrementBigKey
|
JSR .incrementBigKey
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$33 : BNE + ; Map
|
+ CPY.b #$33 : BNE + ; Map
|
||||||
JSR .incrementMap
|
JSR .incrementMap
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$37 : !BLT + ; Items $37 - $39 - Pendants
|
+ CPY.b #$37 : !BLT + ; Items $37 - $39 - Pendants
|
||||||
CPY.b #$3A : !BGE +
|
CPY.b #$3A : !BGE +
|
||||||
JSR .incrementPendant
|
JSR .incrementPendant
|
||||||
JSR .setDungeonCompletion
|
JSR .setDungeonCompletion
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$3A : !BLT + ; Items $3A - $3B - Bow & Silver Arrows
|
+ CPY.b #$3A : !BLT + ; Items $3A - $3B - Bow & Silver Arrows
|
||||||
CPY.b #$3C : !BGE +
|
CPY.b #$3C : !BGE +
|
||||||
JSR .incrementBow
|
JSR .incrementBow
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$3C : BNE + ; Bottle w/Bee
|
+ CPY.b #$3C : BNE + ; Bottle w/Bee
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$3D : BNE + ; Bottle w/Fairy
|
+ CPY.b #$3D : BNE + ; Bottle w/Fairy
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$3E : !BLT + ; Items $3E - $3F - Heart Containers
|
+ CPY.b #$3E : !BLT + ; Items $3E - $3F - Heart Containers
|
||||||
CPY.b #$40 : !BGE +
|
CPY.b #$40 : !BGE +
|
||||||
JSR .incrementHeartContainer
|
JSR .incrementHeartContainer
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$48 : BNE + ; Bottle w/Gold Bee
|
+ CPY.b #$48 : BNE + ; Bottle w/Gold Bee
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$49 : BNE + ; Fighter's Sword
|
+ CPY.b #$49 : BNE + ; Fighter's Sword
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
+ CPY.b #$4A : BNE + ; Flute (Active)
|
||||||
JSR .stampFlute
|
JSR .stampFlute
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$4B : BNE + ; Pegasus Boots
|
+ CPY.b #$4B : BNE + ; Pegasus Boots
|
||||||
JSR .stampBoots
|
JSR .stampBoots
|
||||||
JSR .incrementA
|
JSR .incrementA
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$4C : BNE + ; Bomb Capacity Upgrade
|
+ CPY.b #$4C : BNE + ; Bomb Capacity Upgrade
|
||||||
JSR .incrementCapacity
|
JSR .incrementCapacity
|
||||||
JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$4D : !BLT + ; Items $4D - $4F - Capacity Upgrades
|
+ CPY.b #$4D : !BLT + ; Items $4D - $4F - Capacity Upgrades
|
||||||
CPY.b #$50 : !BGE +
|
CPY.b #$50 : !BGE +
|
||||||
JSR .incrementCapacity
|
JSR .incrementCapacity
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$50 : BNE + ; Master Sword (Safe)
|
+ CPY.b #$50 : BNE + ; Master Sword (Safe)
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$51 : !BLT + ; Items $51 - $54 - Capacity Upgrades
|
+ CPY.b #$51 : !BLT + ; Items $51 - $54 - Capacity Upgrades
|
||||||
CPY.b #$55 : !BGE +
|
CPY.b #$55 : !BGE +
|
||||||
JSR .incrementCapacity
|
JSR .incrementCapacity
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
+ CPY.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
||||||
JSR .incrementBow
|
JSR .incrementBow
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$5E : BNE + ; Progressive Sword
|
+ CPY.b #$5E : BNE + ; Progressive Sword
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$5F : BNE + ; Progressive Shield
|
+ CPY.b #$5F : BNE + ; Progressive Shield
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$60 : BNE + ; Progressive Armor
|
+ CPY.b #$60 : BNE + ; Progressive Armor
|
||||||
JSR .incrementMail
|
JSR .incrementMail
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$61 : BNE + ; Progressive Lifting Glove
|
+ CPY.b #$61 : BNE + ; Progressive Lifting Glove
|
||||||
JSR .incrementA
|
JSR .incrementA
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$64 : !BLT + ; Items $64 & $65 - Progressive Bow
|
+ CPY.b #$64 : !BLT + ; Items $64 & $65 - Progressive Bow
|
||||||
CPY.b #$66 : !BGE +
|
CPY.b #$66 : !BGE +
|
||||||
JSR .incrementBow
|
JSR .incrementBow
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$70 : !BLT + ; Items $70 - $7F - Free Maps
|
+ CPY.b #$70 : !BLT + ; Items $70 - $7F - Free Maps
|
||||||
CPY.b #$80 : !BGE +
|
CPY.b #$80 : !BGE +
|
||||||
JSR .incrementMap
|
JSR .incrementMap
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$80 : !BLT + ; Items $80 - $8F - Free Compasses
|
+ CPY.b #$80 : !BLT + ; Items $80 - $8F - Free Compasses
|
||||||
CPY.b #$90 : !BGE +
|
CPY.b #$90 : !BGE +
|
||||||
JSR .incrementCompass
|
JSR .incrementCompass
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$90 : !BLT + ; Items $90 - $9F - Free Big Keys
|
+ CPY.b #$90 : !BLT + ; Items $90 - $9F - Free Big Keys
|
||||||
CPY.b #$A0 : !BGE +
|
CPY.b #$A0 : !BGE +
|
||||||
JSR .incrementBigKey
|
JSR .incrementBigKey
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CPY.b #$A0 : !BLT + ; Items $A0 - $AF - Free Small Keys
|
+ CPY.b #$A0 : !BLT + ; Items $A0 - $AF - Free Small Keys
|
||||||
CPY.b #$B0 : !BGE +
|
CPY.b #$B0 : !BGE +
|
||||||
JSR .incrementKey
|
JSR .incrementKey
|
||||||
BRL .done
|
JMP .done
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
PLP : PLX : PLA
|
PLP : PLX : PLA
|
||||||
@@ -755,6 +758,7 @@ RTS
|
|||||||
Link_ReceiveItem_HUDRefresh:
|
Link_ReceiveItem_HUDRefresh:
|
||||||
LDA $7EF343 : BNE + ; skip if we have bombs
|
LDA $7EF343 : BNE + ; skip if we have bombs
|
||||||
LDA $7EF375 : BEQ + ; skip if we are filling no bombs
|
LDA $7EF375 : BEQ + ; skip if we are filling no bombs
|
||||||
|
LDA $7EF370 : !ADD.l StartingMaxBombs : BEQ + ; skip if we can't have bombs
|
||||||
DEC : STA $7EF375 ; decrease bomb fill count
|
DEC : STA $7EF375 ; decrease bomb fill count
|
||||||
LDA.b #$01 : STA $7EF343 ; increase actual bomb count
|
LDA.b #$01 : STA $7EF343 ; increase actual bomb count
|
||||||
+
|
+
|
||||||
@@ -770,6 +774,7 @@ RTL
|
|||||||
HandleBombAbsorbtion:
|
HandleBombAbsorbtion:
|
||||||
STA $7EF375 ; thing we wrote over
|
STA $7EF375 ; thing we wrote over
|
||||||
LDA $0303 : BNE + ; skip if we already have some item selected
|
LDA $0303 : BNE + ; skip if we already have some item selected
|
||||||
|
LDA $7EF370 : !ADD.l StartingMaxBombs : BEQ + ; skip if we can't have bombs
|
||||||
LDA.b #$04 : STA $0202 ; set selected item to bombs
|
LDA.b #$04 : STA $0202 ; set selected item to bombs
|
||||||
LDA.b #$01 : STA $0303 ; set selected item to bombs
|
LDA.b #$01 : STA $0303 ; set selected item to bombs
|
||||||
JSL.l HUD_RebuildLong
|
JSL.l HUD_RebuildLong
|
||||||
@@ -1145,10 +1150,10 @@ SpawnShovelItem:
|
|||||||
|
|
||||||
LDA $03FC : BEQ +
|
LDA $03FC : BEQ +
|
||||||
JSL DiggingGameGuy_AttemptPrizeSpawn
|
JSL DiggingGameGuy_AttemptPrizeSpawn
|
||||||
BRL .skip
|
JMP .skip
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA $035B : AND.b #$01 : BNE + : BRL .skip : + ; corner dig fix
|
LDA $035B : AND.b #$01 : BNE + : JMP .skip : + ; corner dig fix
|
||||||
|
|
||||||
PHY : PHP
|
PHY : PHP
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
; after Ganon slams into it in bat form?
|
; after Ganon slams into it in bat form?
|
||||||
Overworld_CreatePyramidHoleModified:
|
Overworld_CreatePyramidHoleModified:
|
||||||
LDA.l InvertedMode : BNE +
|
LDA.l InvertedMode : BNE +
|
||||||
BRL .originalBehaviour
|
JMP .originalBehaviour
|
||||||
+
|
+
|
||||||
.invertedBehavior
|
.invertedBehavior
|
||||||
REP #$30
|
REP #$30
|
||||||
@@ -37,7 +37,7 @@ Overworld_CreatePyramidHoleModified:
|
|||||||
|
|
||||||
LDA.w #$FFFF : STA $1012, Y
|
LDA.w #$FFFF : STA $1012, Y
|
||||||
|
|
||||||
BRL .ending
|
JMP .ending
|
||||||
.originalBehaviour
|
.originalBehaviour
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ RTS
|
|||||||
INC : CMP !HIGHEST_SWORD_LEVEL : !BGE + ; skip if highest is lower (this is an upgrade)
|
INC : CMP !HIGHEST_SWORD_LEVEL : !BGE + ; skip if highest is lower (this is an upgrade)
|
||||||
LDA !HIGHEST_SWORD_LEVEL : DEC ; convert to item id
|
LDA !HIGHEST_SWORD_LEVEL : DEC ; convert to item id
|
||||||
TAY : PLA : LDA !HIGHEST_SWORD_LEVEL ; put sword id into the thing to write
|
TAY : PLA : LDA !HIGHEST_SWORD_LEVEL ; put sword id into the thing to write
|
||||||
BRL .done
|
JMP .done
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
BRL .done
|
JMP .done
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -173,7 +173,7 @@ KeyGetPlayer:
|
|||||||
LoadProperties_PreserveItemMaybe:
|
LoadProperties_PreserveItemMaybe:
|
||||||
{
|
{
|
||||||
lda.l ShuffleKeyDrops : bne +
|
lda.l ShuffleKeyDrops : bne +
|
||||||
jsl Sprite_LoadProperties : rtl
|
JML Sprite_LoadProperties
|
||||||
+ lda $0e80, x : pha
|
+ lda $0e80, x : pha
|
||||||
jsl Sprite_LoadProperties
|
jsl Sprite_LoadProperties
|
||||||
pla : sta $0e80, x
|
pla : sta $0e80, x
|
||||||
|
|||||||
8
msu.asm
8
msu.asm
@@ -185,11 +185,11 @@ CheckMusicLoadRequest:
|
|||||||
LDA !REG_MUSIC_CONTROL_REQUEST : CMP #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
|
LDA !REG_MUSIC_CONTROL_REQUEST : CMP #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
|
||||||
LDA NoBGM : BNE +
|
LDA NoBGM : BNE +
|
||||||
LDA !REG_MSU_PACK_CURRENT : CMP #$FE : BNE ++
|
LDA !REG_MSU_PACK_CURRENT : CMP #$FE : BNE ++
|
||||||
+ : BRL .mute
|
+ : JMP .mute
|
||||||
++
|
++
|
||||||
|
|
||||||
LDX !REG_MSU_ID_01 : CPX !VAL_MSU_ID_01 : BEQ +
|
LDX !REG_MSU_ID_01 : CPX !VAL_MSU_ID_01 : BEQ +
|
||||||
- : BRL .unmute
|
- : JMP .unmute
|
||||||
+
|
+
|
||||||
LDX !REG_MSU_ID_23 : CPX !VAL_MSU_ID_23 : BNE -
|
LDX !REG_MSU_ID_23 : CPX !VAL_MSU_ID_23 : BNE -
|
||||||
LDX !REG_MSU_ID_45 : CPX !VAL_MSU_ID_45 : BNE -
|
LDX !REG_MSU_ID_45 : CPX !VAL_MSU_ID_45 : BNE -
|
||||||
@@ -277,7 +277,7 @@ CheckMusicLoadRequest:
|
|||||||
PLY : STY $00 : SEP #$10 : PLB
|
PLY : STY $00 : SEP #$10 : PLB
|
||||||
TAX : LDA MusicShuffleTable-1,X
|
TAX : LDA MusicShuffleTable-1,X
|
||||||
STA !REG_MUSIC_CONTROL_REQUEST
|
STA !REG_MUSIC_CONTROL_REQUEST
|
||||||
BRL .check_fallback
|
JMP .check_fallback
|
||||||
|
|
||||||
.unmute
|
.unmute
|
||||||
LDA.b !VAL_COMMAND_UNMUTE_SPC
|
LDA.b !VAL_COMMAND_UNMUTE_SPC
|
||||||
@@ -481,7 +481,7 @@ MSUMain:
|
|||||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .nomsu
|
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .nomsu
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDX !REG_MUSIC_CONTROL : BEQ +
|
LDX !REG_MUSIC_CONTROL : BEQ +
|
||||||
BRL .command_ff
|
JMP .command_ff
|
||||||
+
|
+
|
||||||
LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade
|
LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ SEP #$30
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l GoalItemRequirement : BNE + : BRL .done : + ; Star Meter
|
LDA.l GoalItemRequirement : BNE + : JMP .done : + ; Star Meter
|
||||||
|
|
||||||
LDA.l !GOAL_COUNTER
|
LDA.l !GOAL_COUNTER
|
||||||
JSR HudHexToDec3Digit
|
JSR HudHexToDec3Digit
|
||||||
@@ -144,13 +144,13 @@ SEP #$30
|
|||||||
AND #$FFF8
|
AND #$FFF8
|
||||||
TAX ; end of crap
|
TAX ; end of crap
|
||||||
|
|
||||||
LDA !INFINITE_MAGIC : AND.w #$00FF : BNE + : BRL .green : +
|
LDA !INFINITE_MAGIC : AND.w #$00FF : BNE + : JMP .green : +
|
||||||
SEP #$20 : LDA.b #$80 : STA $7EF36E : REP #$30 ; set magic to max
|
SEP #$20 : LDA.b #$80 : STA $7EF36E : REP #$30 ; set magic to max
|
||||||
LDX.w #$0080 ; load full magic meter graphics
|
LDX.w #$0080 ; load full magic meter graphics
|
||||||
LDA $1A : AND.w #$000C : LSR #2
|
LDA $1A : AND.w #$000C : LSR #2
|
||||||
BEQ .red
|
BEQ .red
|
||||||
CMP.w #0001 : BEQ .yellow
|
CMP.w #0001 : BEQ .yellow
|
||||||
CMP.w #0002 : BNE + : BRL .green : +
|
CMP.w #0002 : BNE + : JMP .green : +
|
||||||
.blue
|
.blue
|
||||||
LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA $7EC746
|
LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA $7EC746
|
||||||
LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA $7EC786
|
LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA $7EC786
|
||||||
|
|||||||
130
newitems.asm
130
newitems.asm
@@ -196,7 +196,7 @@ AddReceivedItemExpandedGetItem:
|
|||||||
; ;JSL.l Main_ShowTextMessage_Alt
|
; ;JSL.l Main_ShowTextMessage_Alt
|
||||||
; LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
|
; LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
|
||||||
; LDA.b #$01 : STA $7F50XX
|
; LDA.b #$01 : STA $7F50XX
|
||||||
; BRL .done
|
; JMP .done
|
||||||
;++
|
;++
|
||||||
;STA $FFFFFF
|
;STA $FFFFFF
|
||||||
LDA $02D8 ; check inventory
|
LDA $02D8 ; check inventory
|
||||||
@@ -214,7 +214,7 @@ AddReceivedItemExpandedGetItem:
|
|||||||
LDA.l SilverArrowsUseRestriction : BNE ++
|
LDA.l SilverArrowsUseRestriction : BNE ++
|
||||||
LDA.b #03 : STA $7EF340 ; set bow to silver
|
LDA.b #03 : STA $7EF340 ; set bow to silver
|
||||||
++
|
++
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$3B : BNE + ; Silver Bow
|
+ CMP.b #$3B : BNE + ; Silver Bow
|
||||||
LDA.l SilverArrowsUseRestriction : BNE .noequip
|
LDA.l SilverArrowsUseRestriction : BNE .noequip
|
||||||
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
|
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
|
||||||
@@ -226,56 +226,56 @@ AddReceivedItemExpandedGetItem:
|
|||||||
STA $7EF340
|
STA $7EF340
|
||||||
.noequip
|
.noequip
|
||||||
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2 ; mark silver bow on y-toggle
|
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2 ; mark silver bow on y-toggle
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$4C : BNE + ; 50 bombs
|
+ CMP.b #$4C : BNE + ; 50 bombs
|
||||||
;LDA.b #$07 : STA $7EF370 ; upgrade bombs
|
;LDA.b #$07 : STA $7EF370 ; upgrade bombs
|
||||||
LDA.b #50 : !SUB.l StartingMaxBombs : STA $7EF370 ; upgrade bombs
|
LDA.b #50 : !SUB.l StartingMaxBombs : STA $7EF370 ; upgrade bombs
|
||||||
LDA.b #50 : STA $7EF375 ; fill bombs
|
LDA.b #50 : STA $7EF375 ; fill bombs
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$4D : BNE + ; 70 arrows
|
+ CMP.b #$4D : BNE + ; 70 arrows
|
||||||
;LDA #$07 : STA $7EF371 ; upgrade arrows
|
;LDA #$07 : STA $7EF371 ; upgrade arrows
|
||||||
LDA.b #70 : !SUB.l StartingMaxArrows : STA $7EF371 ; upgrade arrows
|
LDA.b #70 : !SUB.l StartingMaxArrows : STA $7EF371 ; upgrade arrows
|
||||||
LDA.b #70 : STA $7EF376 ; fill arrows
|
LDA.b #70 : STA $7EF376 ; fill arrows
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$4E : BNE + ; 1/2 magic
|
+ CMP.b #$4E : BNE + ; 1/2 magic
|
||||||
LDA $7EF37B : CMP #$02 : !BGE ++
|
LDA $7EF37B : CMP #$02 : !BGE ++
|
||||||
INC : STA $7EF37B ; upgrade magic
|
INC : STA $7EF37B ; upgrade magic
|
||||||
++
|
++
|
||||||
LDA.b #$80 : STA $7EF373 ; fill magic
|
LDA.b #$80 : STA $7EF373 ; fill magic
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$4F : BNE + ; 1/4 magic
|
+ CMP.b #$4F : BNE + ; 1/4 magic
|
||||||
LDA.b #$02 : STA $7EF37B ; upgrade magic
|
LDA.b #$02 : STA $7EF37B ; upgrade magic
|
||||||
LDA.b #$80 : STA $7EF373 ; fill magic
|
LDA.b #$80 : STA $7EF373 ; fill magic
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$50 : BNE + ; Master Sword (Safe)
|
+ CMP.b #$50 : BNE + ; Master Sword (Safe)
|
||||||
LDA $7EF359 : CMP.b #$02 : !BGE + ; skip if we have a better sword
|
LDA $7EF359 : CMP.b #$02 : !BGE + ; skip if we have a better sword
|
||||||
LDA.b #$02 : STA $7EF359 ; set master sword
|
LDA.b #$02 : STA $7EF359 ; set master sword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$51 : BNE + ; +5 Bombs
|
+ CMP.b #$51 : BNE + ; +5 Bombs
|
||||||
LDA $7EF370 : !ADD.b #$05 : STA $7EF370 ; upgrade bombs +5
|
LDA $7EF370 : !ADD.b #$05 : STA $7EF370 ; upgrade bombs +5
|
||||||
LDA.l Upgrade5BombsRefill : STA $7EF375 ; fill bombs
|
LDA.l Upgrade5BombsRefill : STA $7EF375 ; fill bombs
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$52 : BNE + ; +10 Bombs
|
+ CMP.b #$52 : BNE + ; +10 Bombs
|
||||||
LDA $7EF370 : !ADD.b #$0A : STA $7EF370 ; upgrade bombs +10
|
LDA $7EF370 : !ADD.b #$0A : STA $7EF370 ; upgrade bombs +10
|
||||||
LDA.l Upgrade10BombsRefill : STA $7EF375 ; fill bombs
|
LDA.l Upgrade10BombsRefill : STA $7EF375 ; fill bombs
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$53 : BNE + ; +5 Arrows
|
+ CMP.b #$53 : BNE + ; +5 Arrows
|
||||||
LDA $7EF371 : !ADD.b #$05 : STA $7EF371 ; upgrade arrows +5
|
LDA $7EF371 : !ADD.b #$05 : STA $7EF371 ; upgrade arrows +5
|
||||||
LDA.l Upgrade5ArrowsRefill : STA $7EF376 ; fill arrows
|
LDA.l Upgrade5ArrowsRefill : STA $7EF376 ; fill arrows
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$54 : BNE + ; +10 Arrows
|
+ CMP.b #$54 : BNE + ; +10 Arrows
|
||||||
LDA $7EF371 : !ADD.b #$0A : STA $7EF371 ; upgrade arrows +10
|
LDA $7EF371 : !ADD.b #$0A : STA $7EF371 ; upgrade arrows +10
|
||||||
LDA.l Upgrade10ArrowsRefill : STA $7EF376 ; fill arrows
|
LDA.l Upgrade10ArrowsRefill : STA $7EF376 ; fill arrows
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$55 : BNE + ; Programmable Object 1
|
+ CMP.b #$55 : BNE + ; Programmable Object 1
|
||||||
%ProgrammableItemLogic(1)
|
%ProgrammableItemLogic(1)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$56 : BNE + ; Programmable Object 2
|
+ CMP.b #$56 : BNE + ; Programmable Object 2
|
||||||
%ProgrammableItemLogic(2)
|
%ProgrammableItemLogic(2)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$57 : BNE + ; Programmable Object 3
|
+ CMP.b #$57 : BNE + ; Programmable Object 3
|
||||||
%ProgrammableItemLogic(3)
|
%ProgrammableItemLogic(3)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
+ CMP.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
||||||
LDA.l SilverArrowsUseRestriction : BNE +++
|
LDA.l SilverArrowsUseRestriction : BNE +++
|
||||||
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ +++
|
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ +++
|
||||||
@@ -288,46 +288,46 @@ AddReceivedItemExpandedGetItem:
|
|||||||
++
|
++
|
||||||
+ CMP.b #$59 : BNE + ; 1 Rupoor
|
+ CMP.b #$59 : BNE + ; 1 Rupoor
|
||||||
REP #$20 : LDA $7EF360 : !SUB RupoorDeduction : STA $7EF360 : SEP #$20 ; Take 1 rupee
|
REP #$20 : LDA $7EF360 : !SUB RupoorDeduction : STA $7EF360 : SEP #$20 ; Take 1 rupee
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$5A : BNE + ; Null Item
|
+ CMP.b #$5A : BNE + ; Null Item
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$5B : BNE + ; Red Clock
|
+ CMP.b #$5B : BNE + ; Red Clock
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA !CHALLENGE_TIMER : !ADD.l RedClockAmount : STA !CHALLENGE_TIMER
|
LDA !CHALLENGE_TIMER : !ADD.l RedClockAmount : STA !CHALLENGE_TIMER
|
||||||
LDA !CHALLENGE_TIMER+2 : ADC.l RedClockAmount+2 : STA !CHALLENGE_TIMER+2
|
LDA !CHALLENGE_TIMER+2 : ADC.l RedClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$5C : BNE + ; Blue Clock
|
+ CMP.b #$5C : BNE + ; Blue Clock
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA !CHALLENGE_TIMER : !ADD.l BlueClockAmount : STA !CHALLENGE_TIMER
|
LDA !CHALLENGE_TIMER : !ADD.l BlueClockAmount : STA !CHALLENGE_TIMER
|
||||||
LDA !CHALLENGE_TIMER+2 : ADC.l BlueClockAmount+2 : STA !CHALLENGE_TIMER+2
|
LDA !CHALLENGE_TIMER+2 : ADC.l BlueClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$5D : BNE + ; Green Clock
|
+ CMP.b #$5D : BNE + ; Green Clock
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA !CHALLENGE_TIMER : !ADD.l GreenClockAmount : STA !CHALLENGE_TIMER
|
LDA !CHALLENGE_TIMER : !ADD.l GreenClockAmount : STA !CHALLENGE_TIMER
|
||||||
LDA !CHALLENGE_TIMER+2 : ADC.l GreenClockAmount+2 : STA !CHALLENGE_TIMER+2
|
LDA !CHALLENGE_TIMER+2 : ADC.l GreenClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$5E : BNE + ; Progressive Sword
|
+ CMP.b #$5E : BNE + ; Progressive Sword
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$5F : BNE + ; Progressive Shield
|
+ CMP.b #$5F : BNE + ; Progressive Shield
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$60 : BNE + ; Progressive Armor
|
+ CMP.b #$60 : BNE + ; Progressive Armor
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$61 : BNE + ; Progressive Lifting Glove
|
+ CMP.b #$61 : BNE + ; Progressive Lifting Glove
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$62 : BNE + ; RNG Pool Item (Single)
|
+ CMP.b #$62 : BNE + ; RNG Pool Item (Single)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$63 : BNE + ; RNG Pool Item (Multi)
|
+ CMP.b #$63 : BNE + ; RNG Pool Item (Multi)
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$64 : BNE + ; Progressive Bow
|
+ CMP.b #$64 : BNE + ; Progressive Bow
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$65 : BNE + ; Progressive Bow
|
+ CMP.b #$65 : BNE + ; Progressive Bow
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$6A : BNE + ; Goal Collectable (Single/Triforce)
|
+ CMP.b #$6A : BNE + ; Goal Collectable (Single/Triforce)
|
||||||
JSL.l ActivateGoal
|
JSL.l ActivateGoal
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$6B : BNE + ; Goal Collectable (Multi/Power Star)
|
+ CMP.b #$6B : BNE + ; Goal Collectable (Multi/Power Star)
|
||||||
BRA .multi_collect
|
BRA .multi_collect
|
||||||
+ CMP.b #$6C : BNE + ; Goal Collectable (Multi/Power Star) Alternate Graphic
|
+ CMP.b #$6C : BNE + ; Goal Collectable (Multi/Power Star) Alternate Graphic
|
||||||
@@ -338,52 +338,52 @@ AddReceivedItemExpandedGetItem:
|
|||||||
LDA TurnInGoalItems : BNE ++
|
LDA TurnInGoalItems : BNE ++
|
||||||
JSL.l ActivateGoal
|
JSL.l ActivateGoal
|
||||||
++
|
++
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$6D : BNE + ; Server Request F0
|
+ CMP.b #$6D : BNE + ; Server Request F0
|
||||||
JSL.l ItemGetServiceRequest_F0
|
JSL.l ItemGetServiceRequest_F0
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$6E : BNE + ; Server Request F1
|
+ CMP.b #$6E : BNE + ; Server Request F1
|
||||||
JSL.l ItemGetServiceRequest_F1
|
JSL.l ItemGetServiceRequest_F1
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$6F : BNE + ; Server Request F2
|
+ CMP.b #$6F : BNE + ; Server Request F2
|
||||||
JSL.l ItemGetServiceRequest_F2
|
JSL.l ItemGetServiceRequest_F2
|
||||||
BRL .done
|
JMP .done
|
||||||
;+ CMP.b #$FE : BNE + ; Server Request (Null Chest)
|
;+ CMP.b #$FE : BNE + ; Server Request (Null Chest)
|
||||||
; JSL.l ItemGetServiceRequest
|
; JSL.l ItemGetServiceRequest
|
||||||
; BRL .done
|
; JMP .done
|
||||||
+ CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map
|
+ CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map
|
||||||
AND #$0F : CMP #$08 : !BGE ++
|
AND #$0F : CMP #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA $7EF368 : STA $7EF368 ; Map 1
|
ORA $7EF368 : STA $7EF368 ; Map 1
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA $7EF369 : STA $7EF369 ; Map 2
|
ORA $7EF369 : STA $7EF369 ; Map 2
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
|
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
|
||||||
AND #$0F : CMP #$08 : !BGE ++
|
AND #$0F : CMP #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA $7EF364 : STA $7EF364 ; Compass 1
|
ORA $7EF364 : STA $7EF364 ; Compass 1
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA $7EF365 : STA $7EF365 ; Compass 2
|
ORA $7EF365 : STA $7EF365 ; Compass 2
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
|
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
|
||||||
AND #$0F : CMP #$08 : !BGE ++
|
AND #$0F : CMP #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA $7EF366 : STA $7EF366 ; Big Key 1
|
ORA $7EF366 : STA $7EF366 ; Big Key 1
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA $7EF367 : STA $7EF367 ; Big Key 2
|
ORA $7EF367 : STA $7EF367 ; Big Key 2
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
||||||
AND #$0F : TAX
|
AND #$0F : TAX
|
||||||
LDA $7EF37C, X : INC : STA $7EF37C, X ; Increment Key Count
|
LDA $7EF37C, X : INC : STA $7EF37C, X ; Increment Key Count
|
||||||
@@ -397,12 +397,12 @@ AddReceivedItemExpandedGetItem:
|
|||||||
LDA.l GenericKeys : BEQ +
|
LDA.l GenericKeys : BEQ +
|
||||||
.generic
|
.generic
|
||||||
LDA $7EF36F : INC : STA $7EF36F
|
LDA $7EF36F : INC : STA $7EF36F
|
||||||
BRL .done
|
JMP .done
|
||||||
.normal
|
.normal
|
||||||
TXA : ASL : CMP $040C : BNE ++
|
TXA : ASL : CMP $040C : BNE ++
|
||||||
LDA $7EF36F : INC : STA $7EF36F
|
LDA $7EF36F : INC : STA $7EF36F
|
||||||
++
|
++
|
||||||
BRL .done
|
JMP .done
|
||||||
+ CMP.b #$B0 : BNE + ; Bee Trap
|
+ CMP.b #$B0 : BNE + ; Bee Trap
|
||||||
LDA.b #$79 : JSL Sprite_SpawnDynamically : BMI + ; DashBeeHive_SpawnBee
|
LDA.b #$79 : JSL Sprite_SpawnDynamically : BMI + ; DashBeeHive_SpawnBee
|
||||||
LDA $22 : STA $0D10, Y : LDA $23 : STA $0D30, Y ; from enemizer's Spawn_Bees
|
LDA $22 : STA $0D10, Y : LDA $23 : STA $0D30, Y ; from enemizer's Spawn_Bees
|
||||||
@@ -469,38 +469,38 @@ AddReceivedItemExpanded:
|
|||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +++
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA $02D8
|
||||||
+++ : BRL .done
|
+++ : JMP .done
|
||||||
.notBottle
|
.notBottle
|
||||||
++ : CMP.b #$4E : BNE ++ ; Progressive Magic
|
++ : CMP.b #$4E : BNE ++ ; Progressive Magic
|
||||||
LDA $7EF37B : BEQ +++
|
LDA $7EF37B : BEQ +++
|
||||||
LDA.b #$4F : STA $02D8
|
LDA.b #$4F : STA $02D8
|
||||||
+++ : BRL .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$5E : BNE ++ ; Progressive Sword
|
++ : CMP.b #$5E : BNE ++ ; Progressive Sword
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +
|
||||||
LDA $7EF359 : CMP.l ProgressiveSwordLimit : !BLT +
|
LDA $7EF359 : CMP.l ProgressiveSwordLimit : !BLT +
|
||||||
LDA.l ProgressiveSwordReplacement : STA $02D8 : BRL .done
|
LDA.l ProgressiveSwordReplacement : STA $02D8 : JMP .done
|
||||||
+
|
+
|
||||||
LDA $7EF359 : CMP.b #$FF : BNE + ; Swordless
|
LDA $7EF359 : CMP.b #$FF : BNE + ; Swordless
|
||||||
LDA.b #$49 : STA $02D8 : BRL .done
|
LDA.b #$49 : STA $02D8 : JMP .done
|
||||||
+ : CMP.b #$00 : BNE + ; No Sword
|
+ : CMP.b #$00 : BNE + ; No Sword
|
||||||
LDA.b #$49 : STA $02D8 : BRL .done
|
LDA.b #$49 : STA $02D8 : JMP .done
|
||||||
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
||||||
LDA.b #$50 : STA $02D8 : BRL .done
|
LDA.b #$50 : STA $02D8 : JMP .done
|
||||||
+ : CMP.b #$02 : BNE + ; Master Sword
|
+ : CMP.b #$02 : BNE + ; Master Sword
|
||||||
LDA.b #$02 : STA $02D8 : BRL .done
|
LDA.b #$02 : STA $02D8 : JMP .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$03 : STA $02D8 : BRL .done
|
LDA.b #$03 : STA $02D8 : JMP .done
|
||||||
++ : CMP.b #$5F : BNE ++ ; Progressive Shield
|
++ : CMP.b #$5F : BNE ++ ; Progressive Shield
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
|
||||||
LDA !PROGRESSIVE_SHIELD : AND.b #$C0 : BNE +++ ; No Shield
|
LDA !PROGRESSIVE_SHIELD : AND.b #$C0 : BNE +++ ; No Shield
|
||||||
LDA.b #$04 : STA $02D8 : BRL .done
|
LDA.b #$04 : STA $02D8 : JMP .done
|
||||||
+++ : CMP.b #$40 : BNE +++ ; Fighter Shield
|
+++ : CMP.b #$40 : BNE +++ ; Fighter Shield
|
||||||
LDA.b #$05 : STA $02D8 : BRL .done
|
LDA.b #$05 : STA $02D8 : JMP .done
|
||||||
+++ ; Everything Else
|
+++ ; Everything Else
|
||||||
LDA.b #$06 : STA $02D8 : BRL .done
|
LDA.b #$06 : STA $02D8 : JMP .done
|
||||||
+
|
+
|
||||||
LDA !PROGRESSIVE_SHIELD : LSR #6 : CMP.l ProgressiveShieldLimit : !BLT +
|
LDA !PROGRESSIVE_SHIELD : LSR #6 : CMP.l ProgressiveShieldLimit : !BLT +
|
||||||
LDA.l ProgressiveShieldReplacement : STA $02D8 : BRL .done
|
LDA.l ProgressiveShieldReplacement : STA $02D8 : JMP .done
|
||||||
+
|
+
|
||||||
LDA !PROGRESSIVE_SHIELD : AND.b #$C0 : BNE + ; No Shield
|
LDA !PROGRESSIVE_SHIELD : AND.b #$C0 : BNE + ; No Shield
|
||||||
LDA.b #$04 : BRA .shielddone
|
LDA.b #$04 : BRA .shielddone
|
||||||
@@ -509,27 +509,26 @@ AddReceivedItemExpanded:
|
|||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$06
|
LDA.b #$06
|
||||||
.shielddone : STA $02D8
|
.shielddone : STA $02D8
|
||||||
LDA !PROGRESSIVE_SHIELD : !ADD.b #$40 : STA !PROGRESSIVE_SHIELD : BRL .done
|
LDA !PROGRESSIVE_SHIELD : !ADD.b #$40 : STA !PROGRESSIVE_SHIELD : JMP .done
|
||||||
++ : CMP.b #$60 : BNE ++ ; Progressive Armor
|
++ : CMP.b #$60 : BNE ++ ; Progressive Armor
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +
|
||||||
LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT +
|
LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT +
|
||||||
LDA.l ProgressiveArmorReplacement : STA $02D8 : BRL .done
|
LDA.l ProgressiveArmorReplacement : STA $02D8 : JMP .done
|
||||||
+
|
+
|
||||||
LDA $7EF35B : CMP.b #$00 : BNE + ; No Armor
|
LDA $7EF35B : CMP.b #$00 : BNE + ; No Armor
|
||||||
LDA.b #$22 : STA $02D8 : BRL .done
|
LDA.b #$22 : STA $02D8 : JMP .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$23 : STA $02D8 : BRL .done
|
LDA.b #$23 : STA $02D8 : JMP .done
|
||||||
++ : CMP.b #$61 : BNE ++ ; Progressive Lifting Glove
|
++ : CMP.b #$61 : BNE ++ ; Progressive Lifting Glove
|
||||||
LDA $7EF354 : BNE + ; No Lift
|
LDA $7EF354 : BNE + ; No Lift
|
||||||
LDA.b #$1B : STA $02D8 : BRL .done
|
LDA.b #$1B : STA $02D8 : JMP .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$1C : STA $02D8 : BRL .done
|
LDA.b #$1C : STA $02D8 : JMP .done
|
||||||
++ : CMP.b #$64 : BNE ++ : -- ; Progressive Bow
|
++ : CMP.b #$64 : BNE ++ : -- ; Progressive Bow
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +
|
||||||
LDA $7EF340 : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
LDA $7EF340 : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement : STA $02D8 : BRL .done
|
LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done
|
||||||
+
|
+ LDA $7EF340 : INC : LSR : CMP.b #$00 : BNE + ; No Bow
|
||||||
LDA $7EF340 : INC : LSR : CMP.b #$00 : BNE + ; No Bow
|
|
||||||
LDA.b #$3A : STA $02D8 : BRA .done
|
LDA.b #$3A : STA $02D8 : BRA .done
|
||||||
+ ; Any Bow
|
+ ; Any Bow
|
||||||
LDA.b #$3B : STA $02D8 : BRA .done
|
LDA.b #$3B : STA $02D8 : BRA .done
|
||||||
@@ -563,6 +562,8 @@ AddReceivedItemExpanded:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;DATA AddReceivedItemExpanded
|
;DATA AddReceivedItemExpanded
|
||||||
{
|
{
|
||||||
|
; This is a temporary measure for Fish to have consistent addresses
|
||||||
|
org $A08800
|
||||||
|
|
||||||
.y_offsets
|
.y_offsets
|
||||||
db -5, -5, -5, -5, -5, -4, -4, -5
|
db -5, -5, -5, -5, -5, -4, -4, -5
|
||||||
@@ -876,7 +877,8 @@ AddReceivedItemExpanded:
|
|||||||
;0x1A - Ganon's Tower
|
;0x1A - Ganon's Tower
|
||||||
|
|
||||||
.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc
|
.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc
|
||||||
dw $8000, $4000, $2000, $1000, $0800, $0400, $0200, $0100
|
; sewers and castle get 2 bits active so that they can share their items elegantly
|
||||||
|
dw $C000, $C000, $2000, $1000, $0800, $0400, $0200, $0100
|
||||||
dw $0080, $0040, $0020, $0010, $0008, $0004, $0000, $0000
|
dw $0080, $0040, $0020, $0010, $0008, $0004, $0000, $0000
|
||||||
|
|
||||||
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
||||||
|
|||||||
@@ -399,8 +399,7 @@ StraightStairsTrapDoor:
|
|||||||
lda #$05 : sta $11
|
lda #$05 : sta $11
|
||||||
inc $0468 : stz $068e : stz $0690
|
inc $0468 : stz $068e : stz $0690
|
||||||
++ rtl
|
++ rtl
|
||||||
+ jsl Dungeon_ApproachFixedColor ; what we wrote over
|
+ JML Dungeon_ApproachFixedColor ; what we wrote over
|
||||||
rtl
|
|
||||||
}
|
}
|
||||||
|
|
||||||
InroomStairsTrapDoor:
|
InroomStairsTrapDoor:
|
||||||
|
|||||||
11
openmode.asm
11
openmode.asm
@@ -12,11 +12,18 @@ RTL
|
|||||||
InitOpenMode:
|
InitOpenMode:
|
||||||
LDA.l OpenMode : BEQ + ; Skip if not open mode
|
LDA.l OpenMode : BEQ + ; Skip if not open mode
|
||||||
LDA $7EF3C5 : CMP #$02 : !BGE + ; Skip if already past escape
|
LDA $7EF3C5 : CMP #$02 : !BGE + ; Skip if already past escape
|
||||||
LDA.b #02 : STA $7EF3C5 ; Go to post-escape phase (pre aga1)
|
LDA.b #$02 : STA $7EF3C5 ; Go to post-escape phase (pre aga1)
|
||||||
LDA $7EF3C6 : ORA #$14 : STA $7EF3C6 ; remove uncle
|
LDA $7EF3C6 : ORA #$14 : STA $7EF3C6 ; remove uncle
|
||||||
LDA $7EF3C8 : CMP #$05 : BEQ ++ : LDA.b #$01 : ++ : STA $7EF3C8 ; set spawn points to house+sanc unless already house+sanc+mountain
|
LDA $7EF3C8 : CMP #$05 : BEQ ++ : LDA.b #$01 : ++ : STA $7EF3C8 ; set spawn points to house+sanc unless already house+sanc+mountain
|
||||||
LDA $7EF29B : ORA.b #$20 : STA $7EF29B ; open castle gate
|
LDA $7EF29B : ORA.b #$20 : STA $7EF29B ; open castle gate
|
||||||
RTL
|
JSL MaybeSetPostAgaWorldState
|
||||||
|
+
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
MaybeSetPostAgaWorldState:
|
||||||
|
LDA.l InstantPostAgaWorldState : BEQ + ; Skip if not enabled
|
||||||
|
LDA.b #$03 : STA $7EF3C5 ; Go to post-aga phase
|
||||||
|
LDA $7EF282 : ORA.b #$20 : STA $7EF282 ; make lumberjack tree accessible
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -64,8 +64,7 @@ FixShopCode:
|
|||||||
VitreousKeyReset:
|
VitreousKeyReset:
|
||||||
lda.l DRMode : beq +
|
lda.l DRMode : beq +
|
||||||
stz $0cba, x
|
stz $0cba, x
|
||||||
+ jsl $0db818 ;restore old code
|
+ JML $0db818 ;restore old code
|
||||||
rtl
|
|
||||||
|
|
||||||
GuruguruFix:
|
GuruguruFix:
|
||||||
lda $a0 : cmp #$df : !bge +
|
lda $a0 : cmp #$df : !bge +
|
||||||
@@ -134,7 +133,7 @@ RainPrevention:
|
|||||||
LDA.l $7EF3CC : AND #$00FF : CMP #$0001 : BEQ .done ; zelda is following
|
LDA.l $7EF3CC : AND #$00FF : CMP #$0001 : BEQ .done ; zelda is following
|
||||||
LDA $00 : CMP #$02A1 : BNE .done
|
LDA $00 : CMP #$02A1 : BNE .done
|
||||||
PLA : LDA #$0008 : RTL
|
PLA : LDA #$0008 : RTL
|
||||||
+ LDA.l BlockCastleDoorsInRain : BEQ .done ;flagged
|
+ LDA.l BlockCastleDoorsInRain : AND #$00FF : BEQ .done ;flagged
|
||||||
LDX #$FFFE
|
LDX #$FFFE
|
||||||
- INX #2 : LDA.l RemoveRainDoorsRoom, X : CMP #$FFFF : BEQ .done
|
- INX #2 : LDA.l RemoveRainDoorsRoom, X : CMP #$FFFF : BEQ .done
|
||||||
CMP $A0 : BNE -
|
CMP $A0 : BNE -
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ ValidatePassword:
|
|||||||
LDX #$0F
|
LDX #$0F
|
||||||
-
|
-
|
||||||
LDA.l !PASSWORD_SRAM, X : BNE +
|
LDA.l !PASSWORD_SRAM, X : BNE +
|
||||||
BRL .incorrect
|
JMP .incorrect
|
||||||
+
|
+
|
||||||
DEX : BPL -
|
DEX : BPL -
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ RTL
|
|||||||
!MAP_OVERLAY = "$7EF414" ; [2]
|
!MAP_OVERLAY = "$7EF414" ; [2]
|
||||||
OverworldMap_CheckObject:
|
OverworldMap_CheckObject:
|
||||||
PHX
|
PHX
|
||||||
;CPX.b #$01 : BNE + : BRL ++ : + : BRL .fail
|
;CPX.b #$01 : BNE + : JMP ++ : + : JMP .fail
|
||||||
LDA $7EF3CA : AND.b #$40 : BNE +
|
LDA $7EF3CA : AND.b #$40 : BNE +
|
||||||
;LW Map
|
;LW Map
|
||||||
LDA.l MapMode : BEQ +++
|
LDA.l MapMode : BEQ +++
|
||||||
@@ -66,7 +66,7 @@ OverworldMap_CheckObject:
|
|||||||
LDA !INVENTORY_MAP, X : ORA !MAP_OVERLAY, X
|
LDA !INVENTORY_MAP, X : ORA !MAP_OVERLAY, X
|
||||||
PLX
|
PLX
|
||||||
AND.l .lw_map_masks, X : BNE +++
|
AND.l .lw_map_masks, X : BNE +++
|
||||||
BRL .fail
|
JMP .fail
|
||||||
+++
|
+++
|
||||||
LDA.l .lw_offsets, X
|
LDA.l .lw_offsets, X
|
||||||
BPL +++ : CLC : BRA .done : +++ ; don't display master sword
|
BPL +++ : CLC : BRA .done : +++ ; don't display master sword
|
||||||
@@ -80,7 +80,7 @@ OverworldMap_CheckObject:
|
|||||||
LDA.l !INVENTORY_MAP, X : ORA !MAP_OVERLAY, X
|
LDA.l !INVENTORY_MAP, X : ORA !MAP_OVERLAY, X
|
||||||
PLX
|
PLX
|
||||||
AND.l .dw_map_masks, X : BNE +++
|
AND.l .dw_map_masks, X : BNE +++
|
||||||
BRL .fail
|
JMP .fail
|
||||||
+++
|
+++
|
||||||
LDA.l .dw_offsets, X
|
LDA.l .dw_offsets, X
|
||||||
TAX : BRA ++
|
TAX : BRA ++
|
||||||
@@ -265,194 +265,262 @@ DrawMoonPearlInMenuLocation:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawHUDDungeonItems:
|
DrawHUDDungeonItems:
|
||||||
LDA.l HUDDungeonItems : BNE + : RTL : +
|
LDA.l HUDDungeonItems : BNE .continue
|
||||||
|
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.dungeon_positions
|
||||||
|
dw 0 ; Hyrule Castle
|
||||||
|
dw 2 ; Agahnims Tower
|
||||||
|
dw 6 ; Eastern
|
||||||
|
dw 8 ; Desert
|
||||||
|
dw 10 ; Hera
|
||||||
|
dw 14 ; PoD
|
||||||
|
dw 16 ; Swamp
|
||||||
|
dw 18 ; Skull Woods
|
||||||
|
dw 20 ; Thieves Town
|
||||||
|
dw 22 ; Ice
|
||||||
|
dw 24 ; Mire
|
||||||
|
dw 26 ; Turtle Rock
|
||||||
|
dw 30 ; Ganon's Tower
|
||||||
|
|
||||||
|
.small_key_x_offset
|
||||||
|
dw $7EF37D-$7EF37D ; Hyrule Castle
|
||||||
|
dw $7EF380-$7EF37D ; Agahnims Tower
|
||||||
|
dw $7EF37E-$7EF37D ; Eastern
|
||||||
|
dw $7EF37F-$7EF37D ; Desert
|
||||||
|
dw $7EF386-$7EF37D ; Hera
|
||||||
|
dw $7EF382-$7EF37D ; PoD
|
||||||
|
dw $7EF381-$7EF37D ; Swamp
|
||||||
|
dw $7EF384-$7EF37D ; Skull Woods
|
||||||
|
dw $7EF387-$7EF37D ; Thieves Town
|
||||||
|
dw $7EF385-$7EF37D ; Ice
|
||||||
|
dw $7EF383-$7EF37D ; Mire
|
||||||
|
dw $7EF388-$7EF37D ; Turtle Rock
|
||||||
|
dw $7EF389-$7EF37D ; Ganon's Tower
|
||||||
|
|
||||||
|
|
||||||
|
.dungeon_bitmasks
|
||||||
|
dw $4000 ; Hyrule Castle
|
||||||
|
dw $0800 ; Agahnims Tower
|
||||||
|
dw $2000 ; Eastern
|
||||||
|
dw $1000 ; Desert
|
||||||
|
dw $0020 ; Hera
|
||||||
|
dw $0200 ; PoD
|
||||||
|
dw $0400 ; Swamp
|
||||||
|
dw $0080 ; Skull Woods
|
||||||
|
dw $0010 ; Thieves Town
|
||||||
|
dw $0040 ; Ice
|
||||||
|
dw $0100 ; Mire
|
||||||
|
dw $0008 ; Turtle Rock
|
||||||
|
dw $0004 ; Ganon's Tower
|
||||||
|
|
||||||
|
.boss_room_ids
|
||||||
|
dw $80*2 ; ; Hyrule Castle (BNC)
|
||||||
|
dw $20*2 ; ; Agahnim
|
||||||
|
dw $C8*2 ; ; Eastern
|
||||||
|
dw $33*2 ; ; Desert
|
||||||
|
dw $07*2 ; ; Hera
|
||||||
|
dw $5A*2 ; ; PoD
|
||||||
|
dw $06*2 ; ; Swamp
|
||||||
|
dw $29*2 ; ; Skull Woods
|
||||||
|
dw $AC*2 ; ; Thieves Town
|
||||||
|
dw $DE*2 ; ; Ice
|
||||||
|
dw $90*2 ; ; Mire
|
||||||
|
dw $A4*2 ; ; Turtle Rock
|
||||||
|
dw $0D*2 ; ; Ganon's Tower
|
||||||
|
|
||||||
|
.continue
|
||||||
PHP
|
PHP
|
||||||
REP #$30 ; set 16-bit accumulator & index registers
|
|
||||||
|
|
||||||
|
PHB
|
||||||
|
PHK
|
||||||
|
PLB
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
; dungeon names
|
; dungeon names
|
||||||
LDA.w #$2D50 : STA $1646 ; sewers
|
LDA.w #$2D50
|
||||||
LDA.w #$2D54 : STA $1648 ; Agahnims Tower
|
|
||||||
|
|
||||||
LDA.w #$2D51 : STA $164C ; Eastern
|
LDY.w #0
|
||||||
LDA.w #$2D52 : STA $164E ; Desert
|
|
||||||
LDA.w #$2D53 : STA $1650 ; Hera
|
|
||||||
|
|
||||||
LDA.w #$2D55 : STA $1654 ; PoD
|
|
||||||
LDA.w #$2D56 : STA $1656 ; Swamp
|
|
||||||
LDA.w #$2D57 : STA $1658 ; Skull Woods
|
|
||||||
LDA.w #$2D58 : STA $165A ; Thieves Town
|
|
||||||
LDA.w #$2D59 : STA $165C ; Ice
|
|
||||||
LDA.w #$2D5A : STA $165E ; Mire
|
|
||||||
LDA.w #$2D5B : STA $1660 ; Turtle Rock
|
|
||||||
|
|
||||||
LDA.w #$2D5C : STA $1664 ; Ganon's Tower
|
.next_dungeon_name
|
||||||
|
LDX.w .dungeon_positions,Y
|
||||||
|
STA.w $1646,X
|
||||||
|
|
||||||
|
INC
|
||||||
|
|
||||||
|
INY : INY
|
||||||
|
CPY.w #26 : BCC .next_dungeon_name
|
||||||
|
|
||||||
; write black
|
; write black
|
||||||
LDX.w #$0000 ; Paint entire box black & draw empty pendants and crystals
|
LDX.w #$001E
|
||||||
-
|
LDA.w #$24F5
|
||||||
LDA #$24F5 : STA $1686, X : STA $16C6, X
|
|
||||||
INX #2 : CPX.w #$0020 : BCC -
|
|
||||||
|
|
||||||
LDA !HUD_FLAG : AND.w #$0020 : BEQ + : BRL +++ : +
|
-- STA.w $1686,X
|
||||||
LDA HUDDungeonItems : AND.w #$0001 : BNE + : BRL ++ : +
|
STA.w $16C6,X
|
||||||
|
STA.w $1706,X
|
||||||
|
|
||||||
|
DEX : DEX : BPL --
|
||||||
|
|
||||||
|
|
||||||
|
LDA.l !HUD_FLAG : AND.w #$0020 : BEQ +
|
||||||
|
|
||||||
|
JMP .maps_and_compasses
|
||||||
|
|
||||||
|
+
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
LDA HUDDungeonItems : AND.w #$0001 : BEQ .skip_small_keys
|
||||||
|
|
||||||
|
.draw_small_keys
|
||||||
LDA.w #$2810 : STA $1684 ; small keys icon
|
LDA.w #$2810 : STA $1684 ; small keys icon
|
||||||
SEP #$20 ; set 8-bit accumulator
|
|
||||||
; Small Keys
|
|
||||||
LDA.b #$16 : !ADD $7EF37D : STA $1686 : LDA.b #$28 : ADC #$00 : sta.w $1686+1 ; Hyrule Castle
|
|
||||||
LDA.b #$16 : !ADD $7EF380 : STA $1688 : LDA.b #$28 : ADC #$00 : sta.w $1688+1 ; Agahnims Tower
|
|
||||||
|
|
||||||
LDA.b #$16 : !ADD $7EF37E : STA $168C : LDA.b #$28 : ADC #$00 : sta.w $168C+1 ; Eastern
|
LDY.w #0
|
||||||
LDA.b #$16 : !ADD $7EF37F : STA $168E : LDA.b #$28 : ADC #$00 : sta.w $168E+1 ; Desert
|
|
||||||
LDA.b #$16 : !ADD $7EF386 : STA $1690 : LDA.b #$28 : ADC #$00 : sta.w $1690+1 ; Hera
|
|
||||||
|
|
||||||
LDA.b #$16 : !ADD $7EF382 : STA $1694 : LDA.b #$28 : ADC #$00 : sta.w $1694+1 ; PoD
|
; Clear the carry only once
|
||||||
LDA.b #$16 : !ADD $7EF381 : STA $1696 : LDA.b #$28 : ADC #$00 : sta.w $1696+1 ; Swamp
|
; it will be cleared by looping condition afterwards
|
||||||
LDA.b #$16 : !ADD $7EF384 : STA $1698 : LDA.b #$28 : ADC #$00 : sta.w $1698+1 ; Skull Woods
|
CLC
|
||||||
LDA.b #$16 : !ADD $7EF387 : STA $169A : LDA.b #$28 : ADC #$00 : sta.w $169A+1 ; Thieves Town
|
|
||||||
LDA.b #$16 : !ADD $7EF385 : STA $169C : LDA.b #$28 : ADC #$00 : sta.w $169C+1 ; Ice
|
|
||||||
LDA.b #$16 : !ADD $7EF383 : STA $169E : LDA.b #$28 : ADC #$00 : sta.w $169E+1 ; Mire
|
|
||||||
LDA.b #$16 : !ADD $7EF388 : STA $16A0 : LDA.b #$28 : ADC #$00 : sta.w $16A0+1 ; Turtle Rock
|
|
||||||
|
|
||||||
LDA.b #$16 : !ADD $7EF389 : STA $16A4 : LDA.b #$28 : ADC #$00 : sta.w $16A4+1 ; Ganon's Tower
|
.next_small_key
|
||||||
|
LDX.w .small_key_x_offset,Y
|
||||||
|
LDA.l $7EF37D,X
|
||||||
|
AND.w #$00FF
|
||||||
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
LDX.w .dungeon_positions,Y
|
||||||
++
|
ADC.w #$2816
|
||||||
|
STA.w $1686,X
|
||||||
|
|
||||||
|
INY : INY
|
||||||
|
CPY.w #26 : BCC .next_small_key
|
||||||
|
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.skip_small_keys
|
||||||
|
|
||||||
; Big Keys
|
; Big Keys
|
||||||
LDA HUDDungeonItems : AND.w #$0002 : BNE + : BRL ++ : +
|
LDA HUDDungeonItems : AND.w #$0002 : BEQ .skip_big_keys
|
||||||
|
|
||||||
|
|
||||||
LDA.w #$2811 : STA $16C4 ; big key icon
|
LDA.w #$2811 : STA $16C4 ; big key icon
|
||||||
LDA $7EF367 : AND.w #$0040 : BEQ + ; Hyrule Castle
|
|
||||||
LDA.w #$2826 : STA $16C6
|
; use X so we can BIT
|
||||||
+
|
LDX.w #0
|
||||||
LDA $7EF367 : AND.w #$0008 : BEQ + ; Agahnims Tower
|
|
||||||
LDA.w #$2826 : STA $16C8
|
; load once and test multiple times
|
||||||
+
|
LDA.l $7EF366
|
||||||
LDA $7EF367 : AND.w #$0020 : BEQ + ; Eastern
|
|
||||||
LDA.w #$2826 : STA $16CC
|
.next_big_key
|
||||||
+
|
BIT.w .dungeon_bitmasks,X
|
||||||
LDA $7EF367 : AND.w #$0010 : BEQ + ; Desert
|
BEQ ..skip_key
|
||||||
LDA.w #$2826 : STA $16CE
|
|
||||||
+
|
LDY.w .dungeon_positions,X
|
||||||
LDA $7EF366 : AND.w #$0020 : BEQ + ; Hera
|
LDA.w #$2826
|
||||||
LDA.w #$2826 : STA $16D0
|
STA.w $16C6,Y
|
||||||
+
|
|
||||||
LDA $7EF367 : AND.w #$0002 : BEQ + ; PoD
|
; reload
|
||||||
LDA.w #$2826 : STA $16D4
|
LDA.l $7EF366
|
||||||
+
|
|
||||||
LDA $7EF367 : AND.w #$0004 : BEQ + ; Swamp
|
..skip_key
|
||||||
LDA.w #$2826 : STA $16D6
|
INX : INX
|
||||||
+
|
CPX.w #26 : BCC .next_big_key
|
||||||
LDA $7EF366 : AND.w #$0080 : BEQ + ; Skull Woods
|
|
||||||
LDA.w #$2826 : STA $16D8
|
;-------------------------------------------------------------------------------
|
||||||
+
|
|
||||||
LDA $7EF366 : AND.w #$0010 : BEQ + ; Thieves Town
|
.skip_big_keys
|
||||||
LDA.w #$2826 : STA $16DA
|
|
||||||
+
|
LDA HUDDungeonItems : AND.w #$0010 : BEQ .skip_boss_kills
|
||||||
LDA $7EF366 : AND.w #$0040 : BEQ + ; Ice
|
|
||||||
LDA.w #$2826 : STA $16DC
|
LDA.w #$280F : STA $1704 ; skull icon
|
||||||
+
|
|
||||||
LDA $7EF367 : AND.w #$0001 : BEQ + ; Mire
|
LDY.w #0
|
||||||
LDA.w #$2826 : STA $16DE
|
|
||||||
+
|
.next_boss_kill
|
||||||
LDA $7EF366 : AND.w #$0008 : BEQ + ; Turtle Rock
|
LDX.w .boss_room_ids,Y
|
||||||
LDA.w #$2826 : STA $16E0
|
LDA.l $7EF000,X
|
||||||
+
|
AND.w #$0800
|
||||||
LDA $7EF366 : AND.w #$0004 : BEQ + ; Ganon's Tower
|
BEQ ..skip_boss_kill
|
||||||
LDA.w #$2826 : STA $16E4
|
|
||||||
+
|
LDA.w #$2826
|
||||||
++
|
LDX.w .dungeon_positions,Y
|
||||||
|
STA.w $1706,Y
|
||||||
|
|
||||||
|
..skip_boss_kill
|
||||||
|
INY : INY
|
||||||
|
CPY.w #26 : BCC .next_boss_kill
|
||||||
|
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.skip_boss_kills
|
||||||
|
JMP .exit
|
||||||
|
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
; This should only display if select is pressed in hud
|
; This should only display if select is pressed in hud
|
||||||
+++
|
.maps_and_compasses
|
||||||
LDA !HUD_FLAG : AND.w #$0020 : BNE + : BRL +++ : +
|
|
||||||
; Maps
|
; Maps
|
||||||
LDA HUDDungeonItems : AND.w #$0004 : BNE + : BRL ++ : +
|
LDA HUDDungeonItems : AND.w #$0004 : BEQ .skip_maps
|
||||||
LDA.w #$2821 : STA $1684 ; map icon
|
LDA.w #$2821 : STA $1684 ; map icon
|
||||||
LDA $7EF369 : AND.w #$0040 : BEQ + ; Hyrule Castle
|
|
||||||
LDA.w #$2826 : STA $1686
|
; use X so we can BIT
|
||||||
+
|
LDX.w #0
|
||||||
LDA $7EF369 : AND.w #$0008 : BEQ + ; Agahnims Tower
|
|
||||||
LDA.w #$2826 : STA $1688
|
; load once and test multiple times
|
||||||
+
|
LDA.l $7EF368
|
||||||
LDA $7EF369 : AND.w #$0020 : BEQ + ; Eastern
|
|
||||||
LDA.w #$2826 : STA $168C
|
.next_map
|
||||||
+
|
BIT.w .dungeon_bitmasks,X
|
||||||
LDA $7EF369 : AND.w #$0010 : BEQ + ; Desert
|
BEQ ..skip_map
|
||||||
LDA.w #$2826 : STA $168E
|
|
||||||
+
|
LDY.w .dungeon_positions,X
|
||||||
LDA $7EF368 : AND.w #$0020 : BEQ + ; Hera
|
LDA.w #$2826
|
||||||
LDA.w #$2826 : STA $1690
|
STA.w $1686,Y
|
||||||
+
|
|
||||||
LDA $7EF369 : AND.w #$0002 : BEQ + ; PoD
|
; reload
|
||||||
LDA.w #$2826 : STA $1694
|
LDA.l $7EF368
|
||||||
+
|
|
||||||
LDA $7EF369 : AND.w #$0004 : BEQ + ; Swamp
|
..skip_map
|
||||||
LDA.w #$2826 : STA $1696
|
INX : INX
|
||||||
+
|
CPX.w #26 : BCC .next_map
|
||||||
LDA $7EF368 : AND.w #$0080 : BEQ + ; Skull Woods
|
|
||||||
LDA.w #$2826 : STA $1698
|
;-------------------------------------------------------------------------------
|
||||||
+
|
|
||||||
LDA $7EF368 : AND.w #$0010 : BEQ + ; Thieves Town
|
.skip_maps
|
||||||
LDA.w #$2826 : STA $169A
|
|
||||||
+
|
|
||||||
LDA $7EF368 : AND.w #$0040 : BEQ + ; Ice
|
|
||||||
LDA.w #$2826 : STA $169C
|
|
||||||
+
|
|
||||||
LDA $7EF369 : AND.w #$0001 : BEQ + ; Mire
|
|
||||||
LDA.w #$2826 : STA $169E
|
|
||||||
+
|
|
||||||
LDA $7EF368 : AND.w #$0008 : BEQ + ; Turtle Rock
|
|
||||||
LDA.w #$2826 : STA $16A0
|
|
||||||
+
|
|
||||||
LDA $7EF368 : AND.w #$0004 : BEQ + ; Ganon's Tower
|
|
||||||
LDA.w #$2826 : STA $16A4
|
|
||||||
+
|
|
||||||
++
|
|
||||||
|
|
||||||
; Compasses
|
; Compasses
|
||||||
LDA HUDDungeonItems : AND.w #$0008 : BNE + : BRL ++ : +
|
LDA HUDDungeonItems : AND.w #$0008 : BEQ .skip_compasses
|
||||||
LDA.w #$2C20 : STA $16C4 ; compass icon
|
LDA.w #$2C20 : STA $16C4 ; compass icon
|
||||||
LDA $7EF365 : AND.w #$0040 : BEQ + ; Hyrule Castle
|
|
||||||
LDA.w #$2C26 : STA $16C6
|
; use X so we can BIT
|
||||||
+
|
LDX.w #0
|
||||||
LDA $7EF365 : AND.w #$0008 : BEQ + ; Agahnims Tower
|
|
||||||
LDA.w #$2C26 : STA $16C8
|
; load once and test multiple times
|
||||||
+
|
LDA.l $7EF364
|
||||||
LDA $7EF365 : AND.w #$0020 : BEQ + ; Eastern
|
|
||||||
LDA.w #$2C26 : STA $16CC
|
.next_compass
|
||||||
+
|
BIT.w .dungeon_bitmasks,X
|
||||||
LDA $7EF365 : AND.w #$0010 : BEQ + ; Desert
|
BEQ ..skip_compass
|
||||||
LDA.w #$2C26 : STA $16CE
|
|
||||||
+
|
LDY.w .dungeon_positions,X
|
||||||
LDA $7EF364 : AND.w #$0020 : BEQ + ; Hera
|
LDA.w #$2826
|
||||||
LDA.w #$2C26 : STA $16D0
|
STA.w $16C6,Y
|
||||||
+
|
|
||||||
LDA $7EF365 : AND.w #$0002 : BEQ + ; PoD
|
; reload
|
||||||
LDA.w #$2C26 : STA $16D4
|
LDA.l $7EF364
|
||||||
+
|
|
||||||
LDA $7EF365 : AND.w #$0004 : BEQ + ; Swamp
|
..skip_compass
|
||||||
LDA.w #$2C26 : STA $16D6
|
INX : INX
|
||||||
+
|
CPX.w #26 : BCC .next_compass
|
||||||
LDA $7EF364 : AND.w #$0080 : BEQ + ; Skull Woods
|
|
||||||
LDA.w #$2C26 : STA $16D8
|
;-------------------------------------------------------------------------------
|
||||||
+
|
|
||||||
LDA $7EF364 : AND.w #$0010 : BEQ + ; Thieves Town
|
.skip_compasses
|
||||||
LDA.w #$2C26 : STA $16DA
|
|
||||||
+
|
.exit
|
||||||
LDA $7EF364 : AND.w #$0040 : BEQ + ; Ice
|
PLB
|
||||||
LDA.w #$2C26 : STA $16DC
|
|
||||||
+
|
|
||||||
LDA $7EF365 : AND.w #$0001 : BEQ + ; Mire
|
|
||||||
LDA.w #$2C26 : STA $16DE
|
|
||||||
+
|
|
||||||
LDA $7EF364 : AND.w #$0008 : BEQ + ; Turtle Rock
|
|
||||||
LDA.w #$2C26 : STA $16E0
|
|
||||||
+
|
|
||||||
LDA $7EF364 : AND.w #$0004 : BEQ + ; Ganon's Tower
|
|
||||||
LDA.w #$2C26 : STA $16E4
|
|
||||||
+
|
|
||||||
++ : +++
|
|
||||||
PLP
|
PLP
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -462,58 +530,77 @@ DrawPendantCrystalDiagram:
|
|||||||
REP #$30 ; Set 16-bit accumulator & index registers
|
REP #$30 ; Set 16-bit accumulator & index registers
|
||||||
LDX.w #$0000 ; Paint entire box black & draw empty pendants and crystals
|
LDX.w #$0000 ; Paint entire box black & draw empty pendants and crystals
|
||||||
-
|
-
|
||||||
LDA.l .row0, X : STA $12EA, X
|
LDA.l .row0, X : STA $12EA, X
|
||||||
LDA.l .row1, X : STA $132A, X
|
LDA.l .row1, X : STA $132A, X
|
||||||
LDA.l .row2, X : STA $136A, X
|
LDA.l .row2, X : STA $136A, X
|
||||||
LDA.l .row3, X : STA $13AA, X
|
LDA.l .row3, X : STA $13AA, X
|
||||||
LDA.l .row4, X : STA $13EA, X
|
LDA.l .row4, X : STA $13EA, X
|
||||||
LDA.l .row5, X : STA $142A, X
|
LDA.l .row5, X : STA $142A, X
|
||||||
LDA.l .row6, X : STA $146A, X
|
LDA.l .row6, X : STA $146A, X
|
||||||
LDA.l .row7, X : STA $14AA, X
|
LDA.l .row7, X : STA $14AA, X
|
||||||
LDA.l .row8, X : STA $14EA, X
|
LDA.l .row8, X : STA $14EA, X
|
||||||
INX #2 : CPX.w #$0014 : BCC -
|
INX #2 : CPX.w #$0014 : BCC -
|
||||||
|
|
||||||
;pendants
|
; pendants
|
||||||
LDA $7EF374 : AND.w #$0004 : BEQ + ; pendant of courage (green)
|
LDA $7EF374
|
||||||
LDA.w #$3D2B : STA $1332
|
|
||||||
LDA.w #$3D2C : STA $1334
|
LSR : BCC + ; pendant of wisdom (red)
|
||||||
LDA.w #$3D2D : STA $1372
|
LDX.w #$252B
|
||||||
LDA.w #$3D2E : STA $1374
|
STX.w $13B6
|
||||||
+ LDA $7EF374 : AND.w #$0002 : BEQ + ; pendant of power (blue)
|
INX : STX.w $13B8
|
||||||
LDA.w #$2D2B : STA $13AE
|
INX : STX.w $13F6
|
||||||
LDA.w #$2D2C : STA $13B0
|
INX : STX.w $13F8
|
||||||
LDA.w #$2D2D : STA $13EE
|
|
||||||
LDA.w #$2D2E : STA $13F0
|
+ LSR : BCC + ; pendant of power (blue)
|
||||||
+ LDA $7EF374 : AND.w #$0001 : BEQ + ; pendant of wisdom (red)
|
LDX.w #$2D2B
|
||||||
LDA.w #$252B : STA $13B6
|
STX.w $13AE
|
||||||
LDA.w #$252C : STA $13B8
|
INX : STX.w $13B0
|
||||||
LDA.w #$252D : STA $13F6
|
INX : STX.w $13EE
|
||||||
LDA.w #$252E : STA $13F8
|
INX : STX.w $13F0
|
||||||
|
|
||||||
|
+ LSR : BCC + ; pendant of courage (green)
|
||||||
|
LDX.w #$3D2B
|
||||||
|
STX.w $1332
|
||||||
|
INX : STX.w $1334
|
||||||
|
INX : STX.w $1372
|
||||||
|
INX : STX.w $1374
|
||||||
+
|
+
|
||||||
|
|
||||||
;crystals
|
|
||||||
LDA $7EF37A : AND.w #$0002 : BEQ + ; crystal 1
|
|
||||||
LDA.w #$2D44 : STA $14AC
|
; crystals
|
||||||
LDA.w #$2D45 : STA $14AE
|
LDA $7EF37A
|
||||||
+ LDA $7EF37A : AND.w #$0010 : BEQ + ; crystal 2
|
LDX.w #$2D44
|
||||||
LDA.w #$2D44 : STA $146E
|
LDY.w #$2D45
|
||||||
LDA.w #$2D45 : STA $1470
|
|
||||||
+ LDA $7EF37A : AND.w #$0040 : BEQ + ; crystal 3
|
BIT.w #$0002 : BEQ + ; crystal 1
|
||||||
LDA.w #$2D44 : STA $14B0
|
STX.w $14AC
|
||||||
LDA.w #$2D45 : STA $14B2
|
STY.w $14AE
|
||||||
+ LDA $7EF37A : AND.w #$0020 : BEQ + ; crystal 4
|
+ BIT.w #$0010 : BEQ + ; crystal 2
|
||||||
LDA.w #$2D44 : STA $1472
|
STX.w $146E
|
||||||
LDA.w #$2D45 : STA $1474
|
STY.w $1470
|
||||||
+ LDA $7EF37A : AND.w #$0004 : BEQ + ; crystal 5
|
+ BIT.w #$0040 : BEQ + ; crystal 3
|
||||||
LDA.w #$2544 : STA $14B4
|
STX.w $14B0
|
||||||
LDA.w #$2545 : STA $14B6
|
STY.w $14B2
|
||||||
+ LDA $7EF37A : AND.w #$0001 : BEQ + ; crystal 6
|
+ BIT.w #$0020 : BEQ + ; crystal 4
|
||||||
LDA.w #$2544 : STA $1476
|
STX.w $1472
|
||||||
LDA.w #$2545 : STA $1478
|
STY.w $1474
|
||||||
+ LDA $7EF37A : AND.w #$0008 : BEQ + ; crystal 7
|
+ BIT.w #$0008 : BEQ + ; crystal 7
|
||||||
LDA.w #$2D44 : STA $14B8
|
STX.w $14B8
|
||||||
LDA.w #$2D45 : STA $14BA
|
STY.w $14BA
|
||||||
+
|
+
|
||||||
|
|
||||||
|
LDX.w #$2544
|
||||||
|
LDY.w #$2545
|
||||||
|
|
||||||
|
BIT.w #$0004 : BEQ + ; crystal 5
|
||||||
|
STX.w $14B4
|
||||||
|
STY.w $14B6
|
||||||
|
+ BIT.w #$0001 : BEQ + ; crystal 6
|
||||||
|
STX.w $1476
|
||||||
|
STY.w $1478
|
||||||
|
+
|
||||||
|
|
||||||
PLB : PLP
|
PLB : PLP
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -11,12 +11,6 @@ QuickSwap:
|
|||||||
LDA.l QuickSwapFlag : BEQ .done
|
LDA.l QuickSwapFlag : BEQ .done
|
||||||
LDA.w $0202 : BEQ .done ; Skip everything if we don't have any items
|
LDA.w $0202 : BEQ .done ; Skip everything if we don't have any items
|
||||||
|
|
||||||
;TODO add romtype and race rom checks here
|
|
||||||
LDA.l TournamentSeed : BEQ +
|
|
||||||
LDA.l GameType : AND.b #$02 : BNE +
|
|
||||||
BRA .done
|
|
||||||
+
|
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
XBA ; restore the stashed value
|
XBA ; restore the stashed value
|
||||||
CMP.b #$30 : BNE +
|
CMP.b #$30 : BNE +
|
||||||
@@ -38,6 +32,7 @@ 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 #$10 : BEQ + ; bottle
|
||||||
BRA .store
|
BRA .store
|
||||||
+ STX $0202 : JSL ProcessMenuButtons_y_pressed
|
+ STX $0202 : JSL ProcessMenuButtons_y_pressed
|
||||||
|
|
||||||
@@ -54,20 +49,20 @@ RTL
|
|||||||
RCode:
|
RCode:
|
||||||
LDA.w $0202 : TAX
|
LDA.w $0202 : TAX
|
||||||
-
|
-
|
||||||
CPX.b #$0F : BNE + ; incrementing into bottle
|
; CPX.b #$0F : BNE + ; incrementing into bottle
|
||||||
LDX.b #$00 : BRA ++
|
; LDX.b #$00 : BRA ++
|
||||||
+ CPX.b #$10 : BNE + ; incrementing bottle
|
; + CPX.b #$10 : BNE + ; incrementing bottle
|
||||||
LDA.l $7EF34F : TAX
|
; LDA.l $7EF34F : TAX
|
||||||
-- : ++
|
; -- : ++
|
||||||
CPX.b #$04 : BEQ .noMoreBottles
|
; CPX.b #$04 : BEQ .noMoreBottles
|
||||||
INX
|
; INX
|
||||||
LDA.l $7EF35B,X : BEQ --
|
; LDA.l $7EF35B,X : BEQ --
|
||||||
TXA : STA.l $7EF34F
|
; TXA : STA.l $7EF34F
|
||||||
LDX #$10
|
; LDX #$10
|
||||||
RTS
|
; RTS
|
||||||
.noMoreBottles
|
; .noMoreBottles
|
||||||
LDX #$11
|
; LDX #$11
|
||||||
BRA .nextItem
|
; BRA .nextItem
|
||||||
+ 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
|
||||||
.nextItem
|
.nextItem
|
||||||
@@ -77,19 +72,19 @@ RTS
|
|||||||
LCode:
|
LCode:
|
||||||
LDA.w $0202 : TAX
|
LDA.w $0202 : TAX
|
||||||
-
|
-
|
||||||
CPX.b #$11 : BNE + ; decrementing into bottle
|
; CPX.b #$11 : BNE + ; decrementing into bottle
|
||||||
LDX.b #$05 : BRA ++
|
; LDX.b #$05 : BRA ++
|
||||||
+ CPX.b #$10 : BNE + ; decrementing bottle
|
; + CPX.b #$10 : BNE + ; decrementing bottle
|
||||||
LDA.l $7EF34F : TAX
|
; LDA.l $7EF34F : TAX
|
||||||
-- : ++
|
; -- : ++
|
||||||
CPX.b #$01 : BEQ .noMoreBottles
|
; CPX.b #$01 : BEQ .noMoreBottles
|
||||||
DEX
|
; DEX
|
||||||
LDA.l $7EF35B,X : BEQ --
|
; LDA.l $7EF35B,X : BEQ --
|
||||||
TXA : STA.l $7EF34F
|
; TXA : STA.l $7EF34F
|
||||||
LDX.b #$10
|
; LDX.b #$10
|
||||||
RTS
|
; RTS
|
||||||
.noMoreBottles
|
; .noMoreBottles
|
||||||
LDX.b #$0F : BRA .nextItem
|
; LDX.b #$0F : BRA .nextItem
|
||||||
+ 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
|
||||||
.nextItem
|
.nextItem
|
||||||
|
|||||||
@@ -108,9 +108,9 @@ RTL
|
|||||||
!RNG_POINTERS = "$7F5200"
|
!RNG_POINTERS = "$7F5200"
|
||||||
GetStaticRNG:
|
GetStaticRNG:
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
REP #$20 ; set 16-bit accumulator and index registers
|
REP #$30 ; set 16-bit accumulator and index registers
|
||||||
AND.w #$007F
|
AND.w #$000F
|
||||||
ASL : TAX : LDA !RNG_POINTERS, X : INC : AND.w #$03FF : STA !RNG_POINTERS, X : TAX : ASL ; increment pointer and move value to X
|
ASL : TAX : LDA !RNG_POINTERS, X : INC : AND.w #$03FF : STA !RNG_POINTERS, X : TAX ; increment pointer and move value to X
|
||||||
LDA Static_RNG, X ; load RNG value
|
LDA Static_RNG, X ; load RNG value
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
@@ -124,7 +124,7 @@ InitRNGPointerTable:
|
|||||||
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
||||||
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
||||||
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
||||||
CPX.w #$007F : !BLT -
|
CPX.w #$001F : !BLT -
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
.rngDefaults
|
.rngDefaults
|
||||||
|
|||||||
8
save.asm
8
save.asm
@@ -1,5 +1,13 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Validate_SRAM:
|
Validate_SRAM:
|
||||||
|
REP #$30 ; vanilla behavior from $0CCD45, includes prize pack reset after save and quit
|
||||||
|
LDX #$00FE : -
|
||||||
|
STZ $0D00, X
|
||||||
|
STZ $0E00, X
|
||||||
|
STZ $0F00, X
|
||||||
|
DEX #2
|
||||||
|
BPL -
|
||||||
|
SEP #$30
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ClearExtendedSaveFile:
|
ClearExtendedSaveFile:
|
||||||
|
|||||||
@@ -209,12 +209,10 @@ QuadrantLoadOrderBeforeScroll:
|
|||||||
lda $045f : beq .end
|
lda $045f : beq .end
|
||||||
lda #$08 : sta $045c ; start with opposite quadrant row
|
lda #$08 : sta $045c ; start with opposite quadrant row
|
||||||
.end
|
.end
|
||||||
jsl $0091c4 ; what we overwrote
|
JML $0091c4 ; what we overwrote
|
||||||
rtl
|
|
||||||
|
|
||||||
QuadrantLoadOrderAfterScroll:
|
QuadrantLoadOrderAfterScroll:
|
||||||
lda $045f : beq .end
|
lda $045f : beq .end
|
||||||
stz $045c : stz $045f ; draw other row and clear flag
|
stz $045c : stz $045f ; draw other row and clear flag
|
||||||
.end
|
.end
|
||||||
jsl $0091c4 ; what we overwrote
|
JML $0091c4 ; what we overwrote
|
||||||
rtl
|
|
||||||
@@ -72,10 +72,10 @@ DrawPrice:
|
|||||||
LDY.b #$FF
|
LDY.b #$FF
|
||||||
LDX #$00 ; clear bigram pointer
|
LDX #$00 ; clear bigram pointer
|
||||||
|
|
||||||
LDA $0C : CMP.w #1000 : !BLT + : BRL .len4 : +
|
LDA $0C : CMP.w #1000 : !BLT + : JMP .len4 : +
|
||||||
CMP.w #100 : !BLT + : BRL .len3 : +
|
CMP.w #100 : !BLT + : JMP .len3 : +
|
||||||
CMP.w #10 : !BLT + : BRL .len2 : +
|
CMP.w #10 : !BLT + : JMP .len2 : +
|
||||||
CMP.w #1 : !BLT + : BRL .len1 : +
|
CMP.w #1 : !BLT + : JMP .len1 : +
|
||||||
|
|
||||||
.len4
|
.len4
|
||||||
%DrawDigit(#1000,#6)
|
%DrawDigit(#1000,#6)
|
||||||
@@ -167,7 +167,7 @@ SpritePrep_ShopKeeper:
|
|||||||
.fail
|
.fail
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$FF : STA !SHOP_TYPE ; $FF = error condition
|
LDA.b #$FF : STA !SHOP_TYPE ; $FF = error condition
|
||||||
BRL .done
|
JMP .done
|
||||||
|
|
||||||
.success
|
.success
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
@@ -175,10 +175,10 @@ SpritePrep_ShopKeeper:
|
|||||||
LDX.w #$0000
|
LDX.w #$0000
|
||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
-
|
-
|
||||||
TYA : CMP !SHOP_CAPACITY : !BLT ++ : BRL .stop : ++
|
TYA : CMP !SHOP_CAPACITY : !BLT ++ : JMP .stop : ++
|
||||||
LDA.l ShopContentsTable+1, X : CMP.b #$FF : BNE ++ : BRL .stop : ++
|
LDA.l ShopContentsTable+1, X : CMP.b #$FF : BNE ++ : JMP .stop : ++
|
||||||
|
|
||||||
LDA.l ShopContentsTable, X : CMP !SHOP_ID : BEQ ++ : BRL .next : ++
|
LDA.l ShopContentsTable, X : CMP !SHOP_ID : BEQ ++ : JMP .next : ++
|
||||||
LDA.l ShopContentsTable+1, X : PHX : TYX : STA.l !SHOP_INVENTORY, X : PLX
|
LDA.l ShopContentsTable+1, X : PHX : TYX : STA.l !SHOP_INVENTORY, X : PLX
|
||||||
LDA.l ShopContentsTable+2, X : PHX : TYX : STA.l !SHOP_INVENTORY+1, X : PLX
|
LDA.l ShopContentsTable+2, X : PHX : TYX : STA.l !SHOP_INVENTORY+1, X : PLX
|
||||||
LDA.l ShopContentsTable+3, X : PHX : TYX : STA.l !SHOP_INVENTORY+2, X : PLX
|
LDA.l ShopContentsTable+3, X : PHX : TYX : STA.l !SHOP_INVENTORY+2, X : PLX
|
||||||
@@ -221,7 +221,7 @@ SpritePrep_ShopKeeper:
|
|||||||
|
|
||||||
.next
|
.next
|
||||||
INX #9
|
INX #9
|
||||||
BRL -
|
JMP -
|
||||||
.stop
|
.stop
|
||||||
|
|
||||||
LDA $A0 : CMP.b #$FF : BNE .normal
|
LDA $A0 : CMP.b #$FF : BNE .normal
|
||||||
@@ -321,7 +321,7 @@ Shopkeeper_UploadVRAMTiles:
|
|||||||
LDA #$7E : STA $4304
|
LDA #$7E : STA $4304
|
||||||
|
|
||||||
LDA !SHOP_TYPE : AND.b #$10 : BNE .special
|
LDA !SHOP_TYPE : AND.b #$10 : BNE .special
|
||||||
BRL .normal
|
JMP .normal
|
||||||
|
|
||||||
.special
|
.special
|
||||||
|
|
||||||
@@ -354,7 +354,7 @@ Shopkeeper_UploadVRAMTiles:
|
|||||||
LDA #$80 : STA $2116 ; set VRAM register destination address
|
LDA #$80 : STA $2116 ; set VRAM register destination address
|
||||||
LDA #$5B : STA $2117
|
LDA #$5B : STA $2117
|
||||||
LDA #$01 : STA $420B ; begin DMA transfer
|
LDA #$01 : STA $420B ; begin DMA transfer
|
||||||
BRL .end
|
JMP .end
|
||||||
|
|
||||||
.normal
|
.normal
|
||||||
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
LDA #$40 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||||
@@ -523,9 +523,9 @@ endmacro
|
|||||||
Shopkeeper_DrawMerchant:
|
Shopkeeper_DrawMerchant:
|
||||||
LDA.l !SHOP_MERCHANT : AND.b #$07
|
LDA.l !SHOP_MERCHANT : AND.b #$07
|
||||||
BEQ Shopkeeper_DrawMerchant_Type0
|
BEQ Shopkeeper_DrawMerchant_Type0
|
||||||
CMP.b #$01 : BNE + : BRL Shopkeeper_DrawMerchant_Type1 : +
|
CMP.b #$01 : BNE + : JMP Shopkeeper_DrawMerchant_Type1 : +
|
||||||
CMP.b #$02 : BNE + : BRL Shopkeeper_DrawMerchant_Type2 : +
|
CMP.b #$02 : BNE + : JMP Shopkeeper_DrawMerchant_Type2 : +
|
||||||
CMP.b #$03 : BNE + : BRL Shopkeeper_DrawMerchant_Type3 : +
|
CMP.b #$03 : BNE + : JMP Shopkeeper_DrawMerchant_Type3 : +
|
||||||
CMP.b #$04 : BNE + : RTS : +
|
CMP.b #$04 : BNE + : RTS : +
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Shopkeeper_DrawMerchant_Type0:
|
Shopkeeper_DrawMerchant_Type0:
|
||||||
@@ -618,13 +618,13 @@ Shopkeeper_BuyItem:
|
|||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
LDA.b #$3C : STA $012E ; error sound
|
LDA.b #$3C : STA $012E ; error sound
|
||||||
BRL .done
|
JMP .done
|
||||||
.full_bottles
|
.full_bottles
|
||||||
LDA.b #$6B
|
LDA.b #$6B
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
LDA.b #$3C : STA $012E ; error sound
|
LDA.b #$3C : STA $012E ; error sound
|
||||||
BRL .done
|
JMP .done
|
||||||
.buy
|
.buy
|
||||||
LDA !SHOP_TYPE : AND.b #$80 : BNE ++ ; don't charge if this is a take-any
|
LDA !SHOP_TYPE : AND.b #$80 : BNE ++ ; don't charge if this is a take-any
|
||||||
REP #$20 : LDA $7EF360 : !SUB !SHOP_INVENTORY+1, X : STA $7EF360 : SEP #$20 ; Take price away
|
REP #$20 : LDA $7EF360 : !SUB !SHOP_INVENTORY+1, X : STA $7EF360 : SEP #$20 ; Take price away
|
||||||
@@ -806,7 +806,7 @@ RTS
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Shopkeeper_DrawNextItem:
|
Shopkeeper_DrawNextItem:
|
||||||
LDA.l !SHOP_STATE : AND.w Shopkeeper_ItemMasks, Y : BEQ + : BRL .next : +
|
LDA.l !SHOP_STATE : AND.w Shopkeeper_ItemMasks, Y : BEQ + : JMP .next : +
|
||||||
|
|
||||||
PHY
|
PHY
|
||||||
|
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ InroomStairsWarp: {
|
|||||||
sta $02
|
sta $02
|
||||||
stz $07
|
stz $07
|
||||||
lda $01 : and #$10 : lsr #4
|
lda $01 : and #$10 : lsr #4
|
||||||
brl .layer
|
JMP .layer
|
||||||
.notEdge
|
.notEdge
|
||||||
lda $01 : and #$03 : cmp #$03 : bne .normal
|
lda $01 : and #$03 : cmp #$03 : bne .normal
|
||||||
txa : and #$06 : sta $07
|
txa : and #$06 : sta $07
|
||||||
|
|||||||
744
stats/creditsnew.asm
Normal file
744
stats/creditsnew.asm
Normal file
@@ -0,0 +1,744 @@
|
|||||||
|
;===================================================================================================
|
||||||
|
; LEAVE THIS HERE FOR PHP WRITES
|
||||||
|
;===================================================================================================
|
||||||
|
YourSpriteCreditsHi:
|
||||||
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $238002
|
||||||
|
|
||||||
|
YourSpriteCreditsLo:
|
||||||
|
db 2
|
||||||
|
db 55
|
||||||
|
db " " ; $238020
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
CreditsLineTable:
|
||||||
|
fillword CreditsLineBlank : fill 800
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
!CLINE = -1
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
macro smallcredits(text, color)
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
table "creditscharmapsmall_<color>.txt"
|
||||||
|
|
||||||
|
?line:
|
||||||
|
db (32-(?end-?text))/2
|
||||||
|
db 2*(?end-?text)-1
|
||||||
|
?text:
|
||||||
|
db "<text>"
|
||||||
|
?end:
|
||||||
|
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw ?line
|
||||||
|
pullpc
|
||||||
|
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
macro bigcredits(text)
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
|
|
||||||
|
?line_top:
|
||||||
|
db (32-(?end-?text))/2
|
||||||
|
db 2*(?end-?text)-1
|
||||||
|
?text:
|
||||||
|
db "<text>"
|
||||||
|
?end:
|
||||||
|
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw ?line_top
|
||||||
|
pullpc
|
||||||
|
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
?line_bottom:
|
||||||
|
db (32-(?end-?text))/2
|
||||||
|
db 2*(?end-?text)-1
|
||||||
|
db "<text>"
|
||||||
|
|
||||||
|
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw ?line_bottom
|
||||||
|
pullpc
|
||||||
|
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
macro bigcreditsleft(text)
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
|
|
||||||
|
?line_top:
|
||||||
|
db 2
|
||||||
|
db 2*(?end-?text)-1
|
||||||
|
?text:
|
||||||
|
db "<text>"
|
||||||
|
?end:
|
||||||
|
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw ?line_top
|
||||||
|
pullpc
|
||||||
|
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
?line_bottom:
|
||||||
|
db 2
|
||||||
|
db 2*(?end-?text)-1
|
||||||
|
db "<text>"
|
||||||
|
|
||||||
|
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw ?line_bottom
|
||||||
|
pullpc
|
||||||
|
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
macro emptyline()
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw CreditsEmptyLine
|
||||||
|
pullpc
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
macro blankline()
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw CreditsLineBlank
|
||||||
|
pullpc
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
macro addarbline(l)
|
||||||
|
!CLINE #= !CLINE+1
|
||||||
|
pushpc
|
||||||
|
org CreditsLineTable+!CLINE+!CLINE : dw <l>
|
||||||
|
pullpc
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
CreditsEmptyLine:
|
||||||
|
db $00, $01, $9F
|
||||||
|
|
||||||
|
CreditsLineBlank:
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%smallcredits("ORIGINAL GAME STAFF", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("EXECUTIVE PRODUCER", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("HIROSHI YAMAUCHI")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("PRODUCER", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SHIGERU MIYAMOTO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("DIRECTOR", "red")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TAKASHI TEZUKA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("SCRIPT WRITER", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KENSUKE TANABE")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("ASSISTANT DIRECTORS", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YASUHISA YAMAMURA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YOICHI YAMADA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("SCREEN GRAPHICS DESIGNERS", "green")
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
|
||||||
|
%smallcredits("OBJECT DESIGNERS", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SOICHIRO TOMITA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TAKAYA IMAMURA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("BACK GROUND DESIGNERS", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("MASANAO ARIMOTO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TSUYOSHI WATANABE")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("PROGRAM DIRECTOR", "red")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TOSHIHIKO NAKAGO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("MAIN PROGRAMMER", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YASUNARI SOEJIMA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("OBJECT PROGRAMMER", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KAZUAKI MORITA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("PROGRAMMERS", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TATSUO NISHIYAMA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YUICHI YAMAMOTO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YOSHIHIRO NOMOTO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("EIJI NOTO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SATORU TAKAHATA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TOSHIO IWAWAKI")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SHIGEHIRO KASAMATSU")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YASUNARI NISHIDA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("SOUND COMPOSER", "red")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KOJI KONDO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("COORDINATORS", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KEIZO KATO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TAKAO SHIMIZU")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("PRINTED ART WORK", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YOICHI KOTABE")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("HIDEKI FUJII")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YOSHIAKI KOIZUMI")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YASUHIRO SAKAI")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TOMOAKI KUROUME")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("SPECIAL THANKS TO", "red")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("NOBUO OKAJIMA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("YASUNORI TAKETANI")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KIYOSHI KODA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("TAKAMITSU KUZUHARA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("HIRONOBU KAKUI")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SHIGEKI YAMASHIRO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
%smallcredits("RANDOMIZER CONTRIBUTORS", "red")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("ITEM RANDOMIZER", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KATDEVSGAMES VEETORP")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("CHRISTOSOWEN DESSYREQT")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SMALLHACKER SYNACK")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("ENTRANCE RANDOMIZER", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("AMAZINGAMPHAROS LLCOOLDAVE")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KEVINCATHCART CASSIDYMOEN")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("ENEMY RANDOMIZER", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("ZARBY89 SOSUKE3")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("ENDEROFGAMES")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("DOOR RANDOMIZER", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("AERINON COMPILING")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("FESTIVE RANDOMIZER", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("KAN TOTAL")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("CATOBAT DINSAPHIR")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("SPRITE DEVELOPMENT", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("MIKETRETHEWEY IBAZLY")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%bigcredits("FISH_WAFFLE64 KRELBEL")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("ACHY ARTHEAU")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("GLAN TWROXAS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("PLAGUEDONE TARTHORON")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("YOUR SPRITE BY", "yellow")
|
||||||
|
|
||||||
|
%addarbline(YourSpriteCreditsHi)
|
||||||
|
%addarbline(YourSpriteCreditsLo)
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("MSU SUPPORT", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("QWERTYMODO")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("PALETTE SHUFFLER", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("NELSON AKA SWR")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("SPECIAL THANKS", "red")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SUPERSKUJ EVILASH25")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("MYRAMONG JOSHRTA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("WALKINGEYE MATHONNAPKINS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("MICHAELK FOUTON")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("SAKURATSUBASA")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("AND...")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("THE ALTTP RANDOMIZER COMMUNITY")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("COMMUNITY DISCORD", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("HTTPS://ALTTPR.COM/DISCORD")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
print "Line number: !CLINE | Expected: 302"
|
||||||
|
|
||||||
|
if !CLINE > 302
|
||||||
|
error "Too many credits lines. !CLINE > 302"
|
||||||
|
|
||||||
|
elseif !CLINE < 302
|
||||||
|
warn "Too few credits lines. !CLINE < 302; Adding additional empties for alignment."
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
; Set line always to line up with stats
|
||||||
|
!CLINE #= 302
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
%smallcredits("THE IMPORTANT STUFF", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%smallcredits("TIME FOUND", "green")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("FIRST SWORD")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("PEGASUS BOOTS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("FLUTE")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("MIRROR")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%smallcredits("BOSS KILLS", "yellow")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("SWORDLESS /13")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("FIGHTER'S SWORD /13")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("MASTER SWORD /13")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("TEMPERED SWORD /13")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("GOLD SWORD /13")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%smallcredits("GAME STATS", "red")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
print "GT Big Key Credit Start: ", pc
|
||||||
|
%bigcreditsleft("GT BIG KEY /22")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("BONKS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("SAVE AND QUITS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("DEATHS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("FAERIE REVIVALS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("TOTAL MENU TIME")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("TOTAL LAG TIME")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
print "Collection Rate Credit Start: ", pc
|
||||||
|
%bigcreditsleft("COLLECTION RATE /216")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("TOTAL TIME")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
%emptyline()
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
!FIRST_SWORD_X = 19
|
||||||
|
!FIRST_SWORD_Y = 310
|
||||||
|
!PEGASUS_BOOTS_X = 19
|
||||||
|
!PEGASUS_BOOTS_Y = 313
|
||||||
|
!FLUTE_X = 19
|
||||||
|
!FLUTE_Y = 316
|
||||||
|
!MIRROR_X = 19
|
||||||
|
!MIRROR_Y = 319
|
||||||
|
!SWORDLESS_X = 23
|
||||||
|
!SWORDLESS_Y = 327
|
||||||
|
!FIGHTERS_SWORD_X = 23
|
||||||
|
!FIGHTERS_SWORD_Y = 330
|
||||||
|
!MASTER_SWORD_X = 23
|
||||||
|
!MASTER_SWORD_Y = 333
|
||||||
|
!TEMPERED_SWORD_X = 23
|
||||||
|
!TEMPERED_SWORD_Y = 336
|
||||||
|
!GOLD_SWORD_X = 23
|
||||||
|
!GOLD_SWORD_Y = 339
|
||||||
|
!GT_BIG_KEY_X = 23
|
||||||
|
!GT_BIG_KEY_Y = 346
|
||||||
|
!BONKS_X = 26
|
||||||
|
!BONKS_Y = 349
|
||||||
|
!SAVE_AND_QUITS_X = 26
|
||||||
|
!SAVE_AND_QUITS_Y = 352
|
||||||
|
!DEATHS_X = 26
|
||||||
|
!DEATHS_Y = 355
|
||||||
|
!FAERIE_REVIVALS_X = 26
|
||||||
|
!FAERIE_REVIVALS_Y = 358
|
||||||
|
!TOTAL_MENU_TIME_X = 19
|
||||||
|
!TOTAL_MENU_TIME_Y = 361
|
||||||
|
!TOTAL_LAG_TIME_X = 19
|
||||||
|
!TOTAL_LAG_TIME_Y = 364
|
||||||
|
!COLLECTION_RATE_X = 22
|
||||||
|
!COLLECTION_RATE_Y = 380
|
||||||
|
!TOTAL_TIME_X = 19
|
||||||
|
!TOTAL_TIME_Y = 383
|
||||||
@@ -6,7 +6,7 @@ lorom
|
|||||||
!BGE = "BCS"
|
!BGE = "BCS"
|
||||||
|
|
||||||
org $238000
|
org $238000
|
||||||
incsrc stats/credits.asm
|
incsrc stats/creditsnew.asm
|
||||||
|
|
||||||
FontGfx:
|
FontGfx:
|
||||||
incbin stats/font.gb
|
incbin stats/font.gb
|
||||||
@@ -226,7 +226,7 @@ RenderCreditsStatCounter:
|
|||||||
|
|
||||||
JSR FindLine
|
JSR FindLine
|
||||||
BCS +
|
BCS +
|
||||||
BRL .endStats
|
JMP .endStats
|
||||||
+
|
+
|
||||||
|
|
||||||
; XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
|
; XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
|
||||||
@@ -237,7 +237,7 @@ RenderCreditsStatCounter:
|
|||||||
AND #$0003 ; TT
|
AND #$0003 ; TT
|
||||||
CMP.w #$0000
|
CMP.w #$0000
|
||||||
BEQ .normalStat
|
BEQ .normalStat
|
||||||
BRL .timeStat
|
JMP .timeStat
|
||||||
|
|
||||||
.normalStat
|
.normalStat
|
||||||
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
||||||
@@ -491,7 +491,7 @@ RenderCreditsStatCounter:
|
|||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
%StripeEnd()
|
%StripeEnd()
|
||||||
BRL .endStats
|
JMP .endStats
|
||||||
|
|
||||||
|
|
||||||
RenderLineNumber:
|
RenderLineNumber:
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ GetSmithSword:
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
CheckMedallionSword:
|
CheckMedallionSword:
|
||||||
PHB : PHX : PHY
|
PHB : PHX : PHY
|
||||||
LDA.l AllowSwordlessMedallionUse : BNE +++ : BRL + : +++
|
LDA.l AllowSwordlessMedallionUse : BNE +++ : JMP + : +++
|
||||||
LDA $1B : BEQ .outdoors
|
LDA $1B : BEQ .outdoors
|
||||||
.indoors
|
.indoors
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
@@ -175,11 +175,11 @@ CheckMedallionSword:
|
|||||||
CMP.w #$000E : BNE ++ : .freezor1
|
CMP.w #$000E : BNE ++ : .freezor1
|
||||||
LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord
|
LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord
|
||||||
LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord
|
LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord
|
||||||
BRL .permit
|
JMP .permit
|
||||||
++ : CMP.w #$007E : BNE ++ : .freezor2
|
++ : CMP.w #$007E : BNE ++ : .freezor2
|
||||||
LDA $22 : AND.w #$01FF : CMP.w #112-8 : !BLT .normal : CMP.w #112+32-8 : !BGE .normal ; check x-coord
|
LDA $22 : AND.w #$01FF : CMP.w #112-8 : !BLT .normal : CMP.w #112+32-8 : !BGE .normal ; check x-coord
|
||||||
LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord
|
LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord
|
||||||
BRL .permit
|
JMP .permit
|
||||||
++ : CMP.w #$00DE : BNE ++ : .kholdstare
|
++ : CMP.w #$00DE : BNE ++ : .kholdstare
|
||||||
LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord
|
LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord
|
||||||
LDA $20 : AND.w #$01FF : CMP.w #144-22 : !BLT .normal : CMP.w #144+32-22 : !BGE .normal ; check y-coord
|
LDA $20 : AND.w #$01FF : CMP.w #144-22 : !BLT .normal : CMP.w #144+32-22 : !BGE .normal ; check y-coord
|
||||||
|
|||||||
16
tables.asm
16
tables.asm
@@ -153,6 +153,9 @@ db #$00
|
|||||||
; #$03 = Require "NumberOfCrystalsRequiredForGanon" Crystals and Aga2
|
; #$03 = Require "NumberOfCrystalsRequiredForGanon" Crystals and Aga2
|
||||||
; #$04 = Require "NumberOfCrystalsRequiredForGanon" Crystals
|
; #$04 = Require "NumberOfCrystalsRequiredForGanon" Crystals
|
||||||
; #$05 = Require "GoalItemRequirement" Goal Items
|
; #$05 = Require "GoalItemRequirement" Goal Items
|
||||||
|
; #$06 = Light Speed
|
||||||
|
; #$07 = Require All Crystals and Crystal Bosses
|
||||||
|
; #$08 = Require All Crystal Bosses only
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $30803F ; PC 0x18003F
|
org $30803F ; PC 0x18003F
|
||||||
HammerableGanon:
|
HammerableGanon:
|
||||||
@@ -184,7 +187,8 @@ db #$00 ; #$00 = Off (default) - #$01 = On
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308045 ; PC 0x180045
|
org $308045 ; PC 0x180045
|
||||||
HUDDungeonItems:
|
HUDDungeonItems:
|
||||||
db #$00 ; display ----dcba a: Small Keys, b: Big Key, c: Map, d: Compass
|
; display ---edcba a: Small Keys, b: Big Key, c: Map, d: Compass, e: Bosses
|
||||||
|
db #$00
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308046 ; PC 0x180046 Link's starting equipment
|
org $308046 ; PC 0x180046 Link's starting equipment
|
||||||
LinkStartingRupees:
|
LinkStartingRupees:
|
||||||
@@ -380,7 +384,11 @@ org $30808C ; PC 0x18008C
|
|||||||
PreopenGanonsTower:
|
PreopenGanonsTower:
|
||||||
db $00 ; #$00 = Off (default) - #$01 = On
|
db $00 ; #$00 = Off (default) - #$01 = On
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18008D - 0x18008F (unused)
|
org $30808D ; PC 0x18008D
|
||||||
|
InstantPostAgaWorldState:
|
||||||
|
db $00 ; #$00 = Off (default) - #$01 = On
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; 0x18008E - 0x18008F (unused)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308090 ; PC 0x180090 - 0x180097
|
org $308090 ; PC 0x180090 - 0x180097
|
||||||
ProgressiveSwordLimit:
|
ProgressiveSwordLimit:
|
||||||
@@ -865,8 +873,8 @@ Restrict_Ponds:
|
|||||||
db #$01 ; #$00 = Original Behavior - #$01 - Restrict to Bottles (Default)
|
db #$01 ; #$00 = Original Behavior - #$01 - Restrict to Bottles (Default)
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $30817F ; PC 0x18017F
|
org $30817F ; PC 0x18017F
|
||||||
Seizure_Safety:
|
DisableFlashing:
|
||||||
db #$00 ; #$00 = Off (Default) - #$xx = Limit Certain Effects
|
db #$00 ; #$00 = Flashing Enabled (Default) - #$01 = Flashing Disabled
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;---- --hb
|
;---- --hb
|
||||||
;h - Hookshot
|
;h - Hookshot
|
||||||
|
|||||||
@@ -79,13 +79,13 @@ IsMedallion:
|
|||||||
CMP.w #$03 : BNE + ; Death Mountain
|
CMP.w #$03 : BNE + ; Death Mountain
|
||||||
LDA $22 : CMP.w #1890 : !BGE ++
|
LDA $22 : CMP.w #1890 : !BGE ++
|
||||||
SEC
|
SEC
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
BRA .false
|
BRA .false
|
||||||
+ CMP.w #$30 : BNE + ; Desert
|
+ CMP.w #$30 : BNE + ; Desert
|
||||||
LDA $22 : CMP.w #512 : !BLT ++
|
LDA $22 : CMP.w #512 : !BLT ++
|
||||||
SEC
|
SEC
|
||||||
BRL .done
|
JMP .done
|
||||||
++
|
++
|
||||||
+
|
+
|
||||||
.false
|
.false
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ IsNarrowSprite:
|
|||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +
|
||||||
LDA.l BottleLimitReplacement
|
LDA.l BottleLimitReplacement
|
||||||
JSL.l IsNarrowSprite
|
JSL.l IsNarrowSprite
|
||||||
BRL .done
|
JMP .done
|
||||||
+ : BRA .continue
|
+ : BRA .continue
|
||||||
.notBottle
|
.notBottle
|
||||||
CMP.b #$5E : BNE ++ ; Progressive Sword
|
CMP.b #$5E : BNE ++ ; Progressive Sword
|
||||||
@@ -686,16 +686,17 @@ RTL
|
|||||||
; caller is responsible for setting 8-bit mode and preserving X and Y
|
; caller is responsible for setting 8-bit mode and preserving X and Y
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountBits:
|
CountBits:
|
||||||
PHB : PHK : PLB
|
PHX
|
||||||
TAX ; Save a copy of value
|
TAX ; Save a copy of value
|
||||||
LSR #4 ; Shift down hi nybble, Leave <3> in C
|
LSR #4 ; Shift down hi nybble, Leave <3> in C
|
||||||
TAY ; And save <7:4> in Y
|
PHA ; And save <7:4> in Stack
|
||||||
TXA ; Recover value
|
TXA ; Recover value
|
||||||
AND.b #$07 ; Put out <2:0> in X
|
AND.b #$07 ; Put out <2:0> in X
|
||||||
TAX ; And save in X
|
TAX ; And save in X
|
||||||
LDA NybbleBitCounts, Y; Fetch count for Y
|
LDA.l NybbleBitCounts, X ; Fetch count for <2:0>
|
||||||
ADC.l NybbleBitCounts, X; Add count for X & C
|
PLX ; get <7:4>
|
||||||
PLB
|
ADC.l NybbleBitCounts, X ; Add count for S & C
|
||||||
|
PLX
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
; Look up table of bit counts in the values $00-$0F
|
; Look up table of bit counts in the values $00-$0F
|
||||||
|
|||||||
@@ -5,15 +5,14 @@ SpawnZelda:
|
|||||||
LDA.l $7EF3CC : CMP #$08 : BEQ + ; don't spawn if dwarf is present
|
LDA.l $7EF3CC : CMP #$08 : BEQ + ; don't spawn if dwarf is present
|
||||||
CMP #$07 : BEQ + ; don't spawn if frog is present
|
CMP #$07 : BEQ + ; don't spawn if frog is present
|
||||||
CMP #$0C : BEQ + ; don't spawn if purple chest is present
|
CMP #$0C : BEQ + ; don't spawn if purple chest is present
|
||||||
CLC : RTL
|
CLC
|
||||||
+
|
+ RTL
|
||||||
SEC
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
EndRainState:
|
EndRainState:
|
||||||
LDA $7EF3C5 : CMP.b #$02 : !BGE + ; skip if past escape already
|
LDA $7EF3C5 : CMP.b #$02 : !BGE + ; skip if past escape already
|
||||||
LDA.b #$00 : STA !INFINITE_ARROWS : STA !INFINITE_BOMBS : STA !INFINITE_MAGIC
|
LDA.b #$00 : STA !INFINITE_ARROWS : STA !INFINITE_BOMBS : STA !INFINITE_MAGIC
|
||||||
LDA.b #$02 : STA $7EF3C5 ; end rain state
|
LDA.b #$02 : STA $7EF3C5 ; end rain state
|
||||||
|
JSL MaybeSetPostAgaWorldState
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
LoadZoraKingItemGFX:
|
LoadZoraKingItemGFX:
|
||||||
LDA.l ZoraItem_Player : STA !MULTIWORLD_SPRITEITEM_PLAYER_ID
|
LDA.l ZoraItem_Player : STA !MULTIWORLD_SPRITEITEM_PLAYER_ID
|
||||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
||||||
JSL.l PrepDynamicTile
|
JML.l PrepDynamicTile
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
JumpToSplashItemTarget:
|
JumpToSplashItemTarget:
|
||||||
LDA $0D90, X
|
LDA $0D90, X
|
||||||
|
|||||||
Reference in New Issue
Block a user