Merge branch 'master' into crystalsgoalganonrespawn

This commit is contained in:
Karkat
2017-09-07 13:28:39 -04:00
committed by GitHub
15 changed files with 381 additions and 65 deletions

View File

@@ -25,8 +25,8 @@ db #$05 ; mark sram as 32k
org $3FFFFF ; <- 1FFFFF org $3FFFFF ; <- 1FFFFF
db #$00 ; expand file to 2mb db #$00 ; expand file to 2mb
org $1FFFF8 ; timestamp rom org $1FFFF8 ; <- FFFF8 timestamp rom
dl #$20170801 db #$20, #$17, #$08, #$11 ; year/month/day
;================================================================================ ;================================================================================
@@ -50,7 +50,7 @@ dl #$20170801
!SRAM_SINK = "$7EF41E" ; <- change this !SRAM_SINK = "$7EF41E" ; <- change this
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file !FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
;$7EF41A[w] - Programmable Item #1 ;$7EF41A[w] - Programmable Item #1
;$7EF41C[w] - Programmable Item #3 ;$7EF41C[w] - Programmable Item #2
;$7EF41E[w] - Programmable Item #3 ;$7EF41E[w] - Programmable Item #3
;$7EF420 - $7EF44F - Stat Tracking Bank 1 ;$7EF420 - $7EF44F - Stat Tracking Bank 1
;$7EF450 - $7EF45F - RNG Item (Single) Flags ;$7EF450 - $7EF45F - RNG Item (Single) Flags
@@ -102,6 +102,7 @@ incsrc flute.asm
incsrc dungeondrops.asm incsrc dungeondrops.asm
incsrc halfmagicbat.asm incsrc halfmagicbat.asm
incsrc newitems.asm incsrc newitems.asm
incsrc mantle.asm
incsrc swordswap.asm incsrc swordswap.asm
incsrc stats.asm incsrc stats.asm
incsrc scratchpad.asm incsrc scratchpad.asm
@@ -217,18 +218,18 @@ warnpc $AF8401
;bank $3F reserved for internal debugging ;bank $3F reserved for internal debugging
;$7F5700 - $7F57FF reserved for downstream use ;$7F5700 - $7F57FF reserved for downstream use
;================================================================================ ;================================================================================
org $0080DC ; <- 0xDC - Bank00.asm:179 - Kill Music ;org $0080DC ; <- 0xDC - Bank00.asm:179 - Kill Music
;db #$A9, #$00, #$EA ;db #$A9, #$00, #$EA
;LDA.b #$00 : NOP ;LDA.b #$00 : NOP
;================================================================================ ;================================================================================
org $0AC53E ; <- 5453E - Bank0A.asm:1103 - (LDA $0AC51F, X) - i have no idea what this is for anymore ;org $0AC53E ; <- 5453E - Bank0A.asm:1103 - (LDA $0AC51F, X) - i have no idea what this is for anymore
;LDA.b #$7F ;LDA.b #$7F
;NOP #2 ;NOP #2
;================================================================================ ;================================================================================
;org $05DF8B ; <- 2DF8B - Bank05.asm : 2483 ;org $05DF8B ; <- 2DF8B - Bank05.asm : 2483
;AND.w #$0100 ; allow Sprite_DrawMultiple to access lower half of sprite tiles ;AND.w #$0100 ; allow Sprite_DrawMultiple to access lower half of sprite tiles
;================================================================================ ;================================================================================
;org $0DF8F1 ; this is required for the X-indicator in the HUD ;org $0DF8F1 ; this is required for the X-indicator in the HUD except not anymore obviously
; ;
;;red pendant ;;red pendant
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31 ;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
@@ -377,6 +378,9 @@ Ancilla_SetOam_XY_Long:
org $0985E2 ; (break on $0985E4) org $0985E2 ; (break on $0985E4)
AddReceivedItem: AddReceivedItem:
org $098BAD
AddPendantOrCrystal:
org $0993DF org $0993DF
AddDashTremor: AddDashTremor:

Binary file not shown.

BIN
c2e3e.gfx

Binary file not shown.

View File

@@ -17,7 +17,7 @@ RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
DarkWorldFlagSet: DarkWorldFlagSet:
PHA PHA
STA $FFFFFF
LDA !FORCE_PYRAMID : AND.b #$08 : BNE .pyramid LDA !FORCE_PYRAMID : AND.b #$08 : BNE .pyramid
LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BEQ + LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BEQ +
@@ -46,13 +46,17 @@ RTL
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
SetDeathWorldChecked: SetDeathWorldChecked:
PHA PHA : STA $FFFFFF
LDA $1B : BEQ + ; skip this for indoors LDA $1B : BEQ + ; skip this for indoors
LDA $040C : CMP #$FF : BNE .done ; unless it's a cave LDA $040C : CMP #$FF : BNE .done ; unless it's a cave
+ +
LDA $7EF3C5 : CMP.b #$03 : !BGE .done; thing we originally did - skip if agahnim 1 is dead LDA $7EF3C5 : CMP.b #$03 : !BGE .done; thing we originally did - skip if agahnim 1 is dead
;<<<<<<< crystalsgoalganonrespawn
LDA $1B : BNE + : LDA $A0 : BNE + : LDA GanonPyramidRespawn : BEQ + ; check if we died in ganon's room and pyramid respawn is enabled LDA $1B : BNE + : LDA $A0 : BNE + : LDA GanonPyramidRespawn : BEQ + ; check if we died in ganon's room and pyramid respawn is enabled
;=======
; LDA $1B : BEQ + : LDA $A0 : BNE + ; check if we died in ganon's room
;>>>>>>> master
LDA !FORCE_PYRAMID : ORA.b #$08 : STA !FORCE_PYRAMID ; set pyramid flag LDA !FORCE_PYRAMID : ORA.b #$08 : STA !FORCE_PYRAMID ; set pyramid flag
BRL DarkWorldFlagSet_pyramid BRL DarkWorldFlagSet_pyramid
+ +

View File

@@ -260,7 +260,8 @@ DialogEtherTablet:
RTL RTL
+ +
BIT $F4 : BVC - ; Show normal text if Y is not pressed BIT $F4 : BVC - ; Show normal text if Y is not pressed
LDA $7EF359 : CMP.b #$02 : !BGE .noText LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
.yesText
%LoadDialogAddress(EtherTabletText) %LoadDialogAddress(EtherTabletText)
PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm) PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
RTL RTL
@@ -276,7 +277,8 @@ DialogBombosTablet:
RTL RTL
+ +
BIT $F4 : BVC - ; Show normal text if Y is not pressed BIT $F4 : BVC - ; Show normal text if Y is not pressed
LDA $7EF359 : CMP.b #$02 : !BGE .noText LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
.yesText
%LoadDialogAddress(BombosTabletText) %LoadDialogAddress(BombosTabletText)
PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm) PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
RTL RTL

View File

@@ -16,30 +16,36 @@ CalculateSpikeFloorDamage:
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CalculateByrnaUsage: CalculateByrnaUsage:
LDA $1B : BEQ + LDA $1B : BEQ ++
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 #279 CMP.w #279 : BEQ + ; Spike Cave
CMP.w #179 : BEQ + ; Room in Misery Mire
SEP #$20 ; set 8-bit accumulator
BRA ++
+
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
BNE +
PHX : TYX PHX : TYX
LDA.l ByrnaCaveCaneOfByrnaUsage, X : STA $00 LDA.l ByrnaCaveCaneOfByrnaUsage, X : STA $00
PLX PLX
+ ++
LDA $7EF36E ; thing we wrote over LDA $7EF36E ; thing we wrote over
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CalculateCapeUsage: CalculateCapeUsage:
LDA $1B : BEQ + LDA $1B : BEQ ++
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 #279 CMP.w #279 : BEQ + ; Spike Cave
CMP.w #179 : BEQ + ; Room in Misery Mire
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
BNE + BRA ++
PHX : TYX
LDA.l ByrnaCaveCapeUsage, X : STA $4C
PLX
+ +
SEP #$20 ; set 8-bit accumulator
PHX : TYX
LDA.l ByrnaCaveCapeUsage, X : STA $4C ; set cape decrement timer
PLX
++
LDA $7EF36E ; thing we wrote over LDA $7EF36E ; thing we wrote over
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -253,13 +253,13 @@ db #$80 ; BRA
org $0DE81A ; <- 6E81A - equipment.asm : 1597 (STA $00) org $0DE81A ; <- 6E81A - equipment.asm : 1597 (STA $00)
RTS RTS
org $0DE7B9 ; <- 6E7B9 - equipment.asm : 1548 (LDA.w #$16D0) org $0DE7B9 ; <- 6E7B9 - equipment.asm : 1548 (LDA.w #$16D0)
LDA.w #$1610 LDA.w #$1590
org $0DE7CF ; <- 6E7CF - equipment.asm : 1554 (LDA.w #$16C8) org $0DE7CF ; <- 6E7CF - equipment.asm : 1554 (LDA.w #$16C8)
LDA.w #$1608 LDA.w #$1588
org $0DE7E5 ; <- 6E7E5 - equipment.asm : 1560 (LDA.w #$16D8) org $0DE7E5 ; <- 6E7E5 - equipment.asm : 1560 (LDA.w #$16D8)
LDA.w #$1618 LDA.w #$1598
org $0DECEB ; <- 6ECEB - equipment.asm : 1946 (LDA.w #$16E0) org $0DECEB ; <- 6ECEB - equipment.asm : 1946 (LDA.w #$16E0)
LDA.w #$1620 LDA.w #$15A0
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;org $0DE9D8 ; <- 6E9D8 - equipment.asm : 1635 (LDA $E860, X : STA $12EA, X) ;org $0DE9D8 ; <- 6E9D8 - equipment.asm : 1635 (LDA $E860, X : STA $12EA, X)
;BRA DrawProgressIcons_initPendantDiagram_notext ;BRA DrawProgressIcons_initPendantDiagram_notext
@@ -713,9 +713,14 @@ JSL.l ItemCheck_BombosTablet
org $05F285 ; <- 2F285 org $05F285 ; <- 2F285
JSL.l ItemCheck_EtherTablet JSL.l ItemCheck_EtherTablet
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $098BCC ; <- 48BCC - ancilla_init.asm : 1679 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72) ;org $098BCC ; <- 48BCC - ancilla_init.asm : 1679 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72)
;JSL.l SetTabletItem ;;JSL.l SetTabletItem
JSL SpawnTabletItem : PLX : PLB : RTL ;JSL SpawnTabletItem : PLX : PLB : RTL
;--------------------------------------------------------------------------------
org $07859F ; <- 3859F - Bank07.asm : 965 (JSL AddPendantOrCrystal)
JSL SpawnTabletItem
org $07862A ; <- 3862A - Bank07.asm : 1064 (JSL AddPendantOrCrystal)
JSL SpawnTabletItem
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;================================================================================ ;================================================================================
@@ -896,9 +901,9 @@ LDX.w #HUD_TileMap
org $0DFA9C ; <- 6FA9C - headsup_display.asm : 629 (MVN $0D, $7E ; $Transfer 0x014A bytes from $6FE77 -> $7EC700) org $0DFA9C ; <- 6FA9C - headsup_display.asm : 629 (MVN $0D, $7E ; $Transfer 0x014A bytes from $6FE77 -> $7EC700)
MVN $207E MVN $207E
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00) - HOOK HERE TO DRAW ON THE ITEM SCREEN org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00) - HOOK HERE TO DRAW ON THE ITEM SCREEN
;JSL.l DrawHUDSilverArrows JSL.l DrawHUDDungeonItems
;NOP NOP
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $0DFB1F ; 6FB1F - headsup_display.asm : 681 (LDA $7EF340 : BEQ .hastNoBow) org $0DFB1F ; 6FB1F - headsup_display.asm : 681 (LDA $7EF340 : BEQ .hastNoBow)
JSL.l CheckHUDSilverArrows JSL.l CheckHUDSilverArrows
@@ -1748,6 +1753,9 @@ JSL.l CheckForZelda
org $1AFC55 ; <- D7C55 - sprite_movable_mantle.asm:34 (LDA $7EF34A : BEQ .return) org $1AFC55 ; <- D7C55 - sprite_movable_mantle.asm:34 (LDA $7EF34A : BEQ .return)
NOP #6 ; remove check NOP #6 ; remove check
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $068841 ; <- 30841 - sprite_prep.asm:269 (LDA $0D00, X : ADD.b #$03 : STA $0D00, X)
JSL.l Mantle_CorrectPosition : NOP #2
;--------------------------------------------------------------------------------
org $0DFA53 ; <- 6FA53 - hud check for lantern org $0DFA53 ; <- 6FA53 - hud check for lantern
JSL.l LampCheck JSL.l LampCheck
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -242,7 +242,7 @@ AddInventory:
CMP.w #271 : BNE + : BRL .shop : + ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop CMP.w #271 : BNE + : BRL .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 + : BRL .shop : + ; red shield shop
CMP.w #284 : BNE + : BRL .shop : + ; bomb shop CMP.w #284 : BNE + : BRL .shop : + ; bomb shop
;CMP.w #265 : BNE + : BRL .shop : + ; potion shop - commented this out because it's easier to just block potion refills ;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 #271 : BNE + : BRL .shop : + ; lake hylia shop ;CMP.w #271 : BNE + : BRL .shop : + ; lake hylia shop
CMP.w #287 : BNE + : BRL .shop : + ; kakariko shop CMP.w #287 : BNE + : BRL .shop : + ; kakariko shop
CMP.w #255 : BNE + : BRL .shop : + ; light world death mountain shop CMP.w #255 : BNE + : BRL .shop : + ; light world death mountain shop
@@ -257,12 +257,12 @@ AddInventory:
LDA $1B : BNE + : BRL .fullItemCounts : + LDA $1B : BNE + : BRL .fullItemCounts : +
; ==BEGIN INDOOR-ONLY SECTION ; ==BEGIN INDOOR-ONLY SECTION
REP #$20 ; Set 16-bit Accumulator ;REP #$20 ; Set 16-bit Accumulator
LDA $A0 ; load room ID ;LDA $A0 ; load room ID
CMP.w #$0010 : BNE + ; Ganon Fall Room ;CMP.w #$0010 : BNE + ; Ganon Fall Room - I think this got taken out
;!SHAME_CHEST = "$7EF416" ; ---s ---- ;!SHAME_CHEST = "$7EF416" ; ---s ----
LDA !SHAME_CHEST : ORA.w #$0010 : STA !SHAME_CHEST ;LDA !SHAME_CHEST : ORA.w #$0010 : STA !SHAME_CHEST
+ ;+
SEP #$20 ; Set 8-bit Accumulator SEP #$20 ; Set 8-bit Accumulator
LDA $040C ; get dungeon id LDA $040C ; get dungeon id
@@ -738,6 +738,7 @@ RTL
; GetWitchLootOAMTableIndex ; GetWitchLootOAMTableIndex
; in: A - Loot ID ; in: A - Loot ID
; out: A - Loot OAM Table Index ; out: A - Loot OAM Table Index
; check if this is even still referenced anywhere
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
GetWitchLootOAMTableIndex: GetWitchLootOAMTableIndex:
PHX PHX

12
mantle.asm Normal file
View File

@@ -0,0 +1,12 @@
;================================================================================
; Mantle Object Changes
;--------------------------------------------------------------------------------
Mantle_CorrectPosition:
LDA $7EF3C6 : AND.b #$04 : BEQ +
LDA.b #$0A : STA $0D10, X ; just spawn it off to the side where we know it should be
LDA.b #$03 : STA $0D30, X
LDA.b #$90 : STA $0ED0, X
+
LDA $0D00, X : !ADD.b #$03 ; thing we did originally
RTL
;--------------------------------------------------------------------------------

View File

@@ -220,7 +220,7 @@ AddReceivedItemExpandedGetItem:
+ CMP.b #$63 : BNE + ; RNG Pool Item (Multi) + CMP.b #$63 : BNE + ; RNG Pool Item (Multi)
BRL .done BRL .done
+ CMP.b #$6A : BNE + ; Goal Collectable (Single/Triforce) + CMP.b #$6A : BNE + ; Goal Collectable (Single/Triforce)
JSL.l StatsFinalPrep JSL.l ActivateGoal
BRL .done BRL .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
@@ -228,7 +228,7 @@ AddReceivedItemExpandedGetItem:
.multi_collect .multi_collect
LDA GoalItemRequirement : BEQ ++ LDA GoalItemRequirement : BEQ ++
LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
CMP GoalItemRequirement : !BLT ++ : JSL.l StatsFinalPrep : ++ CMP GoalItemRequirement : !BLT ++ : JSL.l ActivateGoal : ++
BRL .done BRL .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 ++
@@ -237,6 +237,7 @@ AddReceivedItemExpandedGetItem:
++ ++
!SUB #$08 !SUB #$08
%ValueShift() %ValueShift()
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 BRL .done
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass + CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
@@ -246,6 +247,7 @@ AddReceivedItemExpandedGetItem:
++ ++
!SUB #$08 !SUB #$08
%ValueShift() %ValueShift()
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 BRL .done
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key + CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
@@ -255,6 +257,7 @@ AddReceivedItemExpandedGetItem:
++ ++
!SUB #$08 !SUB #$08
%ValueShift() %ValueShift()
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 BRL .done
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key + CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
@@ -802,3 +805,8 @@ CountBottles:
TXA TXA
RTS RTS
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
ActivateGoal:
STZ $11
STZ $B0
JMP.l StatsFinalPrep
;--------------------------------------------------------------------------------

View File

@@ -139,6 +139,178 @@ ShowDungeonItems:
BEQ + : LDA.w #$0000 : RTL : + ; if set, send the zero onwards BEQ + : LDA.w #$0000 : RTL : + ; if set, send the zero onwards
LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic
RTL RTL
;--------------------------------------------------------------------------------
DrawHUDDungeonItems:
; left side
;LDA.w #$2871 : STA $1604 ; dungeon row
LDA.w #$2810 : STA $1644 ; small keys
LDA.w #$2811 : STA $1684 ; big key
LDA.w #$2821 : STA $16C4 ; map
LDA.w #$2C20 : STA $1704 ; compass
; dungeon names
LDA.w #$2D50 : STA $1606 ; sewers
LDA.w #$2D51 : STA $1608 ; Eastern
LDA.w #$2D52 : STA $160A ; Desert
LDA.w #$2D53 : STA $160C ; Hera
LDA.w #$2D54 : STA $160E ; Agahnims Tower
LDA.w #$2D55 : STA $1612 ; PoD
LDA.w #$2D56 : STA $1614 ; Swamp
LDA.w #$2D57 : STA $1616 ; Skull Woods
LDA.w #$2D58 : STA $1618 ; Thieves Town
LDA.w #$2D59 : STA $161A ; Ice
LDA.w #$2D5A : STA $161C ; Mire
LDA.w #$2D5B : STA $161E ; Turtle Rock
LDA.w #$2D5C : STA $1622 ; Ganon's Tower
SEP #$20 ; set 8-bit accumulator
; Small Keys
LDA.b #$16 : !ADD $7EF37C : STA $1646 : LDA.b #$28 : ADC #$00 : sta $1646+1 ; sewers
LDA.b #$16 : !ADD $7EF37E : STA $1648 : LDA.b #$28 : ADC #$00 : sta $1648+1 ; Eastern
LDA.b #$16 : !ADD $7EF37F : STA $164A : LDA.b #$28 : ADC #$00 : sta $164A+1 ; Desert
LDA.b #$16 : !ADD $7EF386 : STA $164C : LDA.b #$28 : ADC #$00 : sta $164C+1 ; Hera
LDA.b #$16 : !ADD $7EF380 : STA $164E : LDA.b #$28 : ADC #$00 : sta $164E+1 ; Agahnims Tower
LDA.b #$16 : !ADD $7EF382 : STA $1652 : LDA.b #$28 : ADC #$00 : sta $1652+1 ; PoD
LDA.b #$16 : !ADD $7EF381 : STA $1654 : LDA.b #$28 : ADC #$00 : sta $1654+1 ; Swamp
LDA.b #$16 : !ADD $7EF384 : STA $1656 : LDA.b #$28 : ADC #$00 : sta $1656+1 ; Skull Woods
LDA.b #$16 : !ADD $7EF387 : STA $1658 : LDA.b #$28 : ADC #$00 : sta $1658+1 ; Thieves Town
LDA.b #$16 : !ADD $7EF385 : STA $165A : LDA.b #$28 : ADC #$00 : sta $165A+1 ; Ice
LDA.b #$16 : !ADD $7EF383 : STA $165C : LDA.b #$28 : ADC #$00 : sta $165C+1 ; Mire
LDA.b #$16 : !ADD $7EF388 : STA $165E : LDA.b #$28 : ADC #$00 : sta $165E+1 ; Turtle Rock
LDA.b #$16 : !ADD $7EF389 : STA $1662 : LDA.b #$28 : ADC #$00 : sta $1662+1 ; Ganon's Tower
REP #$20 ; set 16-bit accumulator
; Big Keys
LDA $7EF367 : AND.w #$0080 : BEQ + ; sewers
LDA.w #$2826 : STA $1686
+
LDA $7EF367 : AND.w #$0020 : BEQ + ; Eastern
LDA.w #$2826 : STA $1688
+
LDA $7EF367 : AND.w #$0010 : BEQ + ; Desert
LDA.w #$2826 : STA $168A
+
LDA $7EF366 : AND.w #$0020 : BEQ + ; Hera
LDA.w #$2826 : STA $168C
+
LDA $7EF367 : AND.w #$0008 : BEQ + ; Agahnims Tower
LDA.w #$2826 : STA $168E
+
LDA $7EF367 : AND.w #$0002 : BEQ + ; PoD
LDA.w #$2826 : STA $1692
+
LDA $7EF367 : AND.w #$0004 : BEQ + ; Swamp
LDA.w #$2826 : STA $1694
+
LDA $7EF366 : AND.w #$0080 : BEQ + ; Skull Woods
LDA.w #$2826 : STA $1696
+
LDA $7EF366 : AND.w #$0010 : BEQ + ; Thieves Town
LDA.w #$2826 : STA $1698
+
LDA $7EF366 : AND.w #$0040 : BEQ + ; Ice
LDA.w #$2826 : STA $169A
+
LDA $7EF367 : AND.w #$0001 : BEQ + ; Mire
LDA.w #$2826 : STA $169C
+
LDA $7EF366 : AND.w #$0008 : BEQ + ; Turtle Rock
LDA.w #$2826 : STA $169E
+
LDA $7EF366 : AND.w #$0004 : BEQ + ; Ganon's Tower
LDA.w #$2826 : STA $16A2
+
; Maps
LDA $7EF369 : AND.w #$0080 : BEQ + ; sewers
LDA.w #$2826 : STA $16C6
+
LDA $7EF369 : AND.w #$0020 : BEQ + ; Eastern
LDA.w #$2826 : STA $16C8
+
LDA $7EF369 : AND.w #$0010 : BEQ + ; Desert
LDA.w #$2826 : STA $16CA
+
LDA $7EF368 : AND.w #$0020 : BEQ + ; Hera
LDA.w #$2826 : STA $16CC
+
LDA $7EF369 : AND.w #$0008 : BEQ + ; Agahnims Tower
LDA.w #$2826 : STA $16CE
+
LDA $7EF369 : AND.w #$0002 : BEQ + ; PoD
LDA.w #$2826 : STA $16D2
+
LDA $7EF369 : AND.w #$0004 : BEQ + ; Swamp
LDA.w #$2826 : STA $16D4
+
LDA $7EF368 : AND.w #$0080 : BEQ + ; Skull Woods
LDA.w #$2826 : STA $16D6
+
LDA $7EF368 : AND.w #$0010 : BEQ + ; Thieves Town
LDA.w #$2826 : STA $16D8
+
LDA $7EF368 : AND.w #$0040 : BEQ + ; Ice
LDA.w #$2826 : STA $16DA
+
LDA $7EF369 : AND.w #$0001 : BEQ + ; Mire
LDA.w #$2826 : STA $16DC
+
LDA $7EF368 : AND.w #$0008 : BEQ + ; Turtle Rock
LDA.w #$2826 : STA $16DE
+
LDA $7EF368 : AND.w #$0004 : BEQ + ; Ganon's Tower
LDA.w #$2826 : STA $16E2
+
; Compasses
LDA $7EF365 : AND.w #$0080 : BEQ + ; sewers
LDA.w #$2C26 : STA $1706
+
LDA $7EF365 : AND.w #$0020 : BEQ + ; Eastern
LDA.w #$2C26 : STA $1708
+
LDA $7EF365 : AND.w #$0010 : BEQ + ; Desert
LDA.w #$2C26 : STA $170A
+
LDA $7EF364 : AND.w #$0020 : BEQ + ; Hera
LDA.w #$2C26 : STA $170C
+
LDA $7EF365 : AND.w #$0008 : BEQ + ; Agahnims Tower
LDA.w #$2C26 : STA $170E
+
LDA $7EF365 : AND.w #$0002 : BEQ + ; PoD
LDA.w #$2C26 : STA $1712
+
LDA $7EF365 : AND.w #$0004 : BEQ + ; Swamp
LDA.w #$2C26 : STA $1714
+
LDA $7EF364 : AND.w #$0080 : BEQ + ; Skull Woods
LDA.w #$2C26 : STA $1716
+
LDA $7EF364 : AND.w #$0010 : BEQ + ; Thieves Town
LDA.w #$2C26 : STA $1718
+
LDA $7EF364 : AND.w #$0040 : BEQ + ; Ice
LDA.w #$2C26 : STA $171A
+
LDA $7EF365 : AND.w #$0001 : BEQ + ; Mire
LDA.w #$2C26 : STA $171C
+
LDA $7EF364 : AND.w #$0008 : BEQ + ; Turtle Rock
LDA.w #$2C26 : STA $171E
+
LDA $7EF364 : AND.w #$0004 : BEQ + ; Ganon's Tower
LDA.w #$2C26 : STA $1722
+
LDA.w #$11CE : STA $00 ; thing we wrote over
RTL
;--------------------------------------------------------------------------------
;================================================================================ ;================================================================================
DrawPendantCrystalDiagram: DrawPendantCrystalDiagram:
PHP : PHB : PHK : PLB PHP : PHB : PHK : PLB

View File

@@ -21,6 +21,7 @@ RigChestRNG:
JSL.l DecrementItemCounter JSL.l DecrementItemCounter
RTL RTL
.forceHeart .forceHeart
LDA #$33 : STA $C8 ; assure the correct state if player talked to shopkeeper
LDA $0403 : AND.b #$40 : BNE .notHeart LDA $0403 : AND.b #$40 : BNE .notHeart
LDA #$07 ; give prize item LDA #$07 ; give prize item
RTL RTL

View File

@@ -115,7 +115,7 @@
; s - swordless bosses ; s - swordless bosses
; c - capacity upgrades ; c - capacity upgrades
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; $7EF452 - unused ; $7EF453 - unused
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; $7EF454w[2] - challenge timer (low) ; $7EF454w[2] - challenge timer (low)
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -356,19 +356,19 @@ StatsFinalPrep:
;LDA $FFFFFF ;LDA $FFFFFF
;JSL.l Clock_IsSupported ;JSL.l Clock_IsSupported
BRA + ;BRA +
REP #$20 ; set 16-bit accumulator ; REP #$20 ; set 16-bit accumulator
;
LDA $00 : PHA ; LDA $00 : PHA
LDA $02 : PHA ; LDA $02 : PHA
;
JSL.l Clock_QuickStamp ; JSL.l Clock_QuickStamp
LDA $00 : STA !RTA_END ; LDA $00 : STA !RTA_END
LDA $02 : STA !RTA_END+2 ; LDA $02 : STA !RTA_END+2
;
PLA : STA $02 ; PLA : STA $02
PLA : STA $00 ; PLA : STA $00
+ ;+
.done .done
PLP : PLX : PLA PLP : PLX : PLA

View File

@@ -10,7 +10,7 @@ HeartPiece_Lumberjack_Tree:
HeartPiece_Spectacle_Cave: HeartPiece_Spectacle_Cave:
db #$17 db #$17
HeartPiece_Circle_Bushes: HeartPiece_Circle_Bushes:
db #$61 db #$3D
HeartPiece_Graveyard_Warp: HeartPiece_Graveyard_Warp:
db #$17 db #$17
HeartPiece_Mire_Warp: HeartPiece_Mire_Warp:
@@ -646,7 +646,7 @@ HeartContainer_Mothula:
HeartContainer_Blind: HeartContainer_Blind:
db #$3E db #$3E
HeartContainer_Kholdstare: HeartContainer_Kholdstare:
db #$3E db #$6A
HeartContainer_Vitreous: HeartContainer_Vitreous:
db #$3E db #$3E
HeartContainer_Trinexx: HeartContainer_Trinexx:
@@ -683,6 +683,7 @@ db #$01 ; #00 = Do not respawn on Pyramid after Death - #$01 = Respawn on Pyrami
org $30816A ; PC 0x18016A org $30816A ; PC 0x18016A
FreeItemText: FreeItemText:
db #$01 ; #00 = Off - #$01 = On (default) db #$01 ; #00 = Off - #$01 = On (default)
;================================================================================
org $30816B ; PC 0x18016B org $30816B ; PC 0x18016B
ByrnaCaveCaneOfByrnaUsage: ByrnaCaveCaneOfByrnaUsage:
db #$04, #$02, #$01 ; normal, 1/2, 1/4 magic db #$04, #$02, #$01 ; normal, 1/2, 1/4 magic

View File

@@ -8,6 +8,22 @@
; out: A - Sprite GFX ID ; out: A - Sprite GFX ID
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
GetSpriteID: GetSpriteID:
CMP.b #$16 : BEQ .bottle ; Bottle
CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle
CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle
CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle
CMP.b #$3C : BEQ .bottle ; Bee w/bottle
CMP.b #$3D : BEQ .bottle ; Fairy w/bottle
CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle
BRA .notBottle
.bottle
PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT +
PLA : LDA.l BottleLimitReplacement
JSL.l GetSpriteID
RTL
+
PLA : .notBottle
PHX PHX
PHB : PHK : PLB PHB : PHK : PLB
;-------- ;--------
@@ -20,19 +36,37 @@ RTL
JSL.l GetRNGItemSingle : JMP GetSpriteID JSL.l GetRNGItemSingle : JMP GetSpriteID
++ CMP.b #$FB : BNE ++ ; RNG Item (Multi) ++ CMP.b #$FB : BNE ++ ; RNG Item (Multi)
JSL.l GetRNGItemMulti : JMP GetSpriteID JSL.l GetRNGItemMulti : JMP GetSpriteID
++ CMP.b #$FD : BNE ++ ; Progressive Armor
LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
LDA.l ProgressiveArmorReplacement
JSL.l GetSpriteID
RTL
+
LDA.b #$04 : RTL
++ CMP.b #$FE : BNE ++ ; Progressive Sword ++ CMP.b #$FE : BNE ++ ; Progressive Sword
LDA $7EF359 : BNE + ; No Sword LDA $7EF359
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
LDA.l ProgressiveSwordReplacement
JSL.l GetSpriteID
RTL
+ : CMP.b #$00 : BNE + ; No Sword
LDA.b #$43 : RTL LDA.b #$43 : RTL
+ : CMP.b #$01 : BNE + ; Fighter Sword + : CMP.b #$01 : BNE + ; Fighter Sword
LDA.b #$44 : RTL LDA.b #$44 : RTL
+ : CMP.b #$02 : BNE + ; Master Sword + : CMP.b #$02 : BNE + ; Master Sword
LDA.b #$45 : RTL LDA.b #$45 : RTL
+ ; Everything Else + ; CMP.b #$03 : BNE + ; Tempered Sword
LDA.b #$46 : RTL LDA.b #$46 : RTL
+
++ : CMP.b #$FF : BNE ++ ; Progressive Shield ++ : CMP.b #$FF : BNE ++ ; Progressive Shield
LDA !PROGRESSIVE_SHIELD : AND #$C0 : BNE + ; No Shield LDA !PROGRESSIVE_SHIELD : AND #$C0 : LSR #6
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
LDA.l ProgressiveShieldReplacement
JSL.l GetSpriteID
RTL
+ : CMP.b #$00 : BNE + ; No Shield
LDA.b #$2D : RTL LDA.b #$2D : RTL
+ : CMP.b #$40 : BNE + ; Fighter Shield + : CMP.b #$01 : BNE + ; Fighter Shield
LDA.b #$20 : RTL LDA.b #$20 : RTL
+ ; Everything Else + ; Everything Else
LDA.b #$2E : RTL LDA.b #$2E : RTL
@@ -69,7 +103,7 @@ RTL
db $FE, $FF ; Progressive Sword & Shield db $FE, $FF ; Progressive Sword & Shield
;6x ;6x
db $04, $0D ; Progressive Armor & Gloves db $FD, $0D ; Progressive Armor & Gloves
db $FA, $FB ; RNG Single & Multi db $FA, $FB ; RNG Single & Multi
db $FF, $FF, $FF, $FF, $FF, $FF ; Unused db $FF, $FF, $FF, $FF, $FF, $FF ; Unused
db $49, $4A, $49 ; Goal Item Single, Multi & Alt Multi db $49, $4A, $49 ; Goal Item Single, Multi & Alt Multi
@@ -95,6 +129,22 @@ RTL
; out: A - Palette ; out: A - Palette
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
GetSpritePalette: GetSpritePalette:
CMP.b #$16 : BEQ .bottle ; Bottle
CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle
CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle
CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle
CMP.b #$3C : BEQ .bottle ; Bee w/bottle
CMP.b #$3D : BEQ .bottle ; Fairy w/bottle
CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle
BRA .notBottle
.bottle
PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT +
PLA : LDA.l BottleLimitReplacement
JSL.l GetSpritePalette
RTL
+
PLA : .notBottle
PHX PHX
PHB : PHK : PLB PHB : PHK : PLB
;-------- ;--------
@@ -104,7 +154,12 @@ GetSpritePalette:
RTL RTL
.specialHandling .specialHandling
CMP.b #$FD : BNE ++ ; Progressive Sword CMP.b #$FD : BNE ++ ; Progressive Sword
LDA $7EF359 : BNE + ; No Sword LDA $7EF359
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
LDA.l ProgressiveSwordReplacement
JSL.l GetSpritePalette
RTL
+ : CMP.b #$00 : BNE + ; No Sword
LDA.b #$04 : RTL LDA.b #$04 : RTL
+ : CMP.b #$01 : BNE + ; Fighter Sword + : CMP.b #$01 : BNE + ; Fighter Sword
LDA.b #$04 : RTL LDA.b #$04 : RTL
@@ -113,14 +168,23 @@ RTL
+ ; Everything Else + ; Everything Else
LDA.b #$08 : RTL LDA.b #$08 : RTL
++ : CMP.b #$FE : BNE ++ ; Progressive Shield ++ : CMP.b #$FE : BNE ++ ; Progressive Shield
LDA $7EF35A : BNE + ; No Shield LDA !PROGRESSIVE_SHIELD : AND #$C0 : LSR #6
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
LDA.l ProgressiveShieldReplacement
JSL.l GetSpritePalette
RTL
+ : CMP.b #$00 : BNE + ; No Shield
LDA.b #$04 : RTL LDA.b #$04 : RTL
+ : CMP.b #$01 : BNE + ; Fighter Shield + : CMP.b #$01 : BNE + ; Fighter Shield
LDA.b #$02 : RTL LDA.b #$02 : RTL
+ ; Everything Else + ; Everything Else
LDA.b #$08 : RTL LDA.b #$08 : RTL
++ : CMP.b #$FF : BNE ++ ; Progressive Armor ++ : CMP.b #$FF : BNE ++ ; Progressive Armor
LDA $7EF35B : BNE + ; Green Tunic LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
LDA.l ProgressiveArmorReplacement
JSL.l GetSpritePalette
RTL
+ : CMP.b #$00 : BNE + ; Green Tunic
LDA.b #$04 : RTL LDA.b #$04 : RTL
+ ; Everything Else + ; Everything Else
LDA.b #$02 : RTL LDA.b #$02 : RTL
@@ -184,9 +248,42 @@ IsNarrowSprite:
PHB : PHK : PLB PHB : PHK : PLB
;-------- ;--------
CMP.b #$5F : BNE ++ ; Special Handler for Progressive Shield CMP.b #$16 : BEQ .bottle ; Bottle
LDA $7EF35A : BNE + : SEC : BRA .done : +; No Shield CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle
CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle
CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle
CMP.b #$3C : BEQ .bottle ; Bee w/bottle
CMP.b #$3D : BEQ .bottle ; Fairy w/bottle
CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle
BRA .notBottle
.bottle
JSR.w CountBottles : CMP.l BottleLimit : !BLT +
LDA.l BottleLimitReplacement
JSL.l IsNarrowSprite
BRL .done
+ : BRA .continue
.notBottle
CMP.b #$5E : BNE ++ ; Progressive Sword
LDA $7EF359 : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
LDA.l ProgressiveSwordReplacement
JSL.l IsNarrowSprite
BRA .done
+ : BRA .continue
++ : CMP.b #$5F : BNE ++ ; Progressive Shield
LDA !PROGRESSIVE_SHIELD : AND #$C0 : BNE + : SEC : BRA .done ; No Shield
LSR #6 : CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
LDA.l ProgressiveShieldReplacement
JSL.l IsNarrowSprite
BRA .done
+
;LDA $7EF35A : BNE + : SEC : BRA .done : +; No Shield
BRA .false ; Everything Else BRA .false ; Everything Else
++ CMP.b #$60 : BNE ++ ; Progressive Armor
LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
LDA.l ProgressiveArmorReplacement
JSL.l IsNarrowSprite
BRA .done
+
++ CMP.b #$62 : BNE ++ ; RNG Item (Single) ++ CMP.b #$62 : BNE ++ ; RNG Item (Single)
JSL.l GetRNGItemSingle : BRA .continue JSL.l GetRNGItemSingle : BRA .continue
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi) ++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
@@ -282,7 +379,7 @@ RTS
; in: A - Loot ID ; in: A - Loot ID
; out: A - OAM Slots Taken ; out: A - OAM Slots Taken
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; This wastes two OAM slots if you don't want a shadow - fix later ; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017)
;-------------------------------------------------------------------------------- 2084B8 ;-------------------------------------------------------------------------------- 2084B8
!SPRITE_OAM = "$7EC025" !SPRITE_OAM = "$7EC025"
!SKIP_EOR = "$7F5008" !SKIP_EOR = "$7F5008"