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
db #$00 ; expand file to 2mb
org $1FFFF8 ; timestamp rom
dl #$20170801
org $1FFFF8 ; <- FFFF8 timestamp rom
db #$20, #$17, #$08, #$11 ; year/month/day
;================================================================================
@@ -50,7 +50,7 @@ dl #$20170801
!SRAM_SINK = "$7EF41E" ; <- change this
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
;$7EF41A[w] - Programmable Item #1
;$7EF41C[w] - Programmable Item #3
;$7EF41C[w] - Programmable Item #2
;$7EF41E[w] - Programmable Item #3
;$7EF420 - $7EF44F - Stat Tracking Bank 1
;$7EF450 - $7EF45F - RNG Item (Single) Flags
@@ -102,6 +102,7 @@ incsrc flute.asm
incsrc dungeondrops.asm
incsrc halfmagicbat.asm
incsrc newitems.asm
incsrc mantle.asm
incsrc swordswap.asm
incsrc stats.asm
incsrc scratchpad.asm
@@ -217,18 +218,18 @@ warnpc $AF8401
;bank $3F reserved for internal debugging
;$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
;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
;NOP #2
;================================================================================
;org $05DF8B ; <- 2DF8B - Bank05.asm : 2483
;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
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
@@ -377,6 +378,9 @@ Ancilla_SetOam_XY_Long:
org $0985E2 ; (break on $0985E4)
AddReceivedItem:
org $098BAD
AddPendantOrCrystal:
org $0993DF
AddDashTremor:

Binary file not shown.

BIN
c2e3e.gfx

Binary file not shown.

View File

@@ -17,7 +17,7 @@ RTL
;--------------------------------------------------------------------------------
DarkWorldFlagSet:
PHA
STA $FFFFFF
LDA !FORCE_PYRAMID : AND.b #$08 : BNE .pyramid
LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BEQ +
@@ -46,13 +46,17 @@ RTL
RTL
;--------------------------------------------------------------------------------
SetDeathWorldChecked:
PHA
PHA : STA $FFFFFF
LDA $1B : BEQ + ; skip this for indoors
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
;<<<<<<< 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 : 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
BRL DarkWorldFlagSet_pyramid
+

View File

@@ -260,7 +260,8 @@ DialogEtherTablet:
RTL
+
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)
PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
RTL
@@ -276,7 +277,8 @@ DialogBombosTablet:
RTL
+
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)
PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
RTL

View File

@@ -16,30 +16,36 @@ CalculateSpikeFloorDamage:
RTL
;--------------------------------------------------------------------------------
CalculateByrnaUsage:
LDA $1B : BEQ +
LDA $1B : BEQ ++
REP #$20 ; set 16-bit accumulator
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
BNE +
BRA ++
+
SEP #$20 ; set 8-bit accumulator
PHX : TYX
LDA.l ByrnaCaveCaneOfByrnaUsage, X : STA $00
PLX
+
++
LDA $7EF36E ; thing we wrote over
RTL
;--------------------------------------------------------------------------------
CalculateCapeUsage:
LDA $1B : BEQ +
LDA $1B : BEQ ++
REP #$20 ; set 16-bit accumulator
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
BNE +
PHX : TYX
LDA.l ByrnaCaveCapeUsage, X : STA $4C
PLX
BRA ++
+
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
RTL
;--------------------------------------------------------------------------------

View File

@@ -253,13 +253,13 @@ db #$80 ; BRA
org $0DE81A ; <- 6E81A - equipment.asm : 1597 (STA $00)
RTS
org $0DE7B9 ; <- 6E7B9 - equipment.asm : 1548 (LDA.w #$16D0)
LDA.w #$1610
LDA.w #$1590
org $0DE7CF ; <- 6E7CF - equipment.asm : 1554 (LDA.w #$16C8)
LDA.w #$1608
LDA.w #$1588
org $0DE7E5 ; <- 6E7E5 - equipment.asm : 1560 (LDA.w #$16D8)
LDA.w #$1618
LDA.w #$1598
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)
;BRA DrawProgressIcons_initPendantDiagram_notext
@@ -713,9 +713,14 @@ JSL.l ItemCheck_BombosTablet
org $05F285 ; <- 2F285
JSL.l ItemCheck_EtherTablet
;--------------------------------------------------------------------------------
org $098BCC ; <- 48BCC - ancilla_init.asm : 1679 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72)
;JSL.l SetTabletItem
JSL SpawnTabletItem : PLX : PLB : RTL
;org $098BCC ; <- 48BCC - ancilla_init.asm : 1679 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72)
;;JSL.l SetTabletItem
;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)
MVN $207E
;--------------------------------------------------------------------------------
;org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00) - HOOK HERE TO DRAW ON THE ITEM SCREEN
;JSL.l DrawHUDSilverArrows
;NOP
org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00) - HOOK HERE TO DRAW ON THE ITEM SCREEN
JSL.l DrawHUDDungeonItems
NOP
;--------------------------------------------------------------------------------
org $0DFB1F ; 6FB1F - headsup_display.asm : 681 (LDA $7EF340 : BEQ .hastNoBow)
JSL.l CheckHUDSilverArrows
@@ -1748,6 +1753,9 @@ JSL.l CheckForZelda
org $1AFC55 ; <- D7C55 - sprite_movable_mantle.asm:34 (LDA $7EF34A : BEQ .return)
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
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 #272 : BNE + : BRL .shop : + ; red shield 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 #287 : BNE + : BRL .shop : + ; kakariko shop
CMP.w #255 : BNE + : BRL .shop : + ; light world death mountain shop
@@ -257,12 +257,12 @@ AddInventory:
LDA $1B : BNE + : BRL .fullItemCounts : +
; ==BEGIN INDOOR-ONLY SECTION
REP #$20 ; Set 16-bit Accumulator
LDA $A0 ; load room ID
CMP.w #$0010 : BNE + ; Ganon Fall Room
;REP #$20 ; Set 16-bit Accumulator
;LDA $A0 ; load room ID
;CMP.w #$0010 : BNE + ; Ganon Fall Room - I think this got taken out
;!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
LDA $040C ; get dungeon id
@@ -738,6 +738,7 @@ RTL
; GetWitchLootOAMTableIndex
; in: A - Loot ID
; out: A - Loot OAM Table Index
; check if this is even still referenced anywhere
;--------------------------------------------------------------------------------
GetWitchLootOAMTableIndex:
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)
BRL .done
+ CMP.b #$6A : BNE + ; Goal Collectable (Single/Triforce)
JSL.l StatsFinalPrep
JSL.l ActivateGoal
BRL .done
+ CMP.b #$6B : BNE + ; Goal Collectable (Multi/Power Star)
BRA .multi_collect
@@ -228,7 +228,7 @@ AddReceivedItemExpandedGetItem:
.multi_collect
LDA GoalItemRequirement : BEQ ++
LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
CMP GoalItemRequirement : !BLT ++ : JSL.l StatsFinalPrep : ++
CMP GoalItemRequirement : !BLT ++ : JSL.l ActivateGoal : ++
BRL .done
+ CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map
AND #$0F : CMP #$08 : !BGE ++
@@ -237,6 +237,7 @@ AddReceivedItemExpandedGetItem:
++
!SUB #$08
%ValueShift()
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
ORA $7EF369 : STA $7EF369 ; Map 2
BRL .done
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
@@ -246,6 +247,7 @@ AddReceivedItemExpandedGetItem:
++
!SUB #$08
%ValueShift()
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
ORA $7EF365 : STA $7EF365 ; Compass 2
BRL .done
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
@@ -255,6 +257,7 @@ AddReceivedItemExpandedGetItem:
++
!SUB #$08
%ValueShift()
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
ORA $7EF367 : STA $7EF367 ; Big Key 2
BRL .done
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
@@ -801,4 +804,9 @@ CountBottles:
++
TXA
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
LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic
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:
PHP : PHB : PHK : PLB

View File

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

View File

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

View File

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

View File

@@ -8,6 +8,22 @@
; out: A - Sprite GFX ID
;--------------------------------------------------------------------------------
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
PHB : PHK : PLB
;--------
@@ -20,19 +36,37 @@ RTL
JSL.l GetRNGItemSingle : JMP GetSpriteID
++ CMP.b #$FB : BNE ++ ; RNG Item (Multi)
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
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
+ : CMP.b #$01 : BNE + ; Fighter Sword
LDA.b #$44 : RTL
+ : CMP.b #$02 : BNE + ; Master Sword
LDA.b #$45 : RTL
+ ; Everything Else
+ ; CMP.b #$03 : BNE + ; Tempered Sword
LDA.b #$46 : RTL
+
++ : 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
+ : CMP.b #$40 : BNE + ; Fighter Shield
+ : CMP.b #$01 : BNE + ; Fighter Shield
LDA.b #$20 : RTL
+ ; Everything Else
LDA.b #$2E : RTL
@@ -69,7 +103,7 @@ RTL
db $FE, $FF ; Progressive Sword & Shield
;6x
db $04, $0D ; Progressive Armor & Gloves
db $FD, $0D ; Progressive Armor & Gloves
db $FA, $FB ; RNG Single & Multi
db $FF, $FF, $FF, $FF, $FF, $FF ; Unused
db $49, $4A, $49 ; Goal Item Single, Multi & Alt Multi
@@ -95,6 +129,22 @@ RTL
; out: A - Palette
;--------------------------------------------------------------------------------
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
PHB : PHK : PLB
;--------
@@ -104,7 +154,12 @@ GetSpritePalette:
RTL
.specialHandling
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
+ : CMP.b #$01 : BNE + ; Fighter Sword
LDA.b #$04 : RTL
@@ -113,14 +168,23 @@ RTL
+ ; Everything Else
LDA.b #$08 : RTL
++ : 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
+ : CMP.b #$01 : BNE + ; Fighter Shield
LDA.b #$02 : RTL
+ ; Everything Else
LDA.b #$08 : RTL
++ : 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
+ ; Everything Else
LDA.b #$02 : RTL
@@ -184,9 +248,42 @@ IsNarrowSprite:
PHB : PHK : PLB
;--------
CMP.b #$5F : BNE ++ ; Special Handler for Progressive Shield
LDA $7EF35A : BNE + : SEC : BRA .done : +; No Shield
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
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
++ 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)
JSL.l GetRNGItemSingle : BRA .continue
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
@@ -282,7 +379,7 @@ RTS
; in: A - Loot ID
; 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
!SPRITE_OAM = "$7EC025"
!SKIP_EOR = "$7F5008"