Compare commits
4 Commits
overworld_
...
overworld_
| Author | SHA1 | Date | |
|---|---|---|---|
| f0c7b26d0f | |||
| f87b95525f | |||
| 148a9760e6 | |||
| 45b56c6328 |
@@ -4,9 +4,13 @@
|
||||
!BOOTS_MODIFIER = "$7F50CE"
|
||||
ModifyBoots:
|
||||
PHA
|
||||
LDA.b $A0 : CMP.b #$06 : BNE +
|
||||
LDA.b $A1 : CMP.b #$00 : BEQ .no_boots
|
||||
+
|
||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BNE +
|
||||
PLA : AND AbilityFlags : ORA.b #$04 : RTL ; yes boots
|
||||
+ : CMP.b #$02 : BNE +
|
||||
.no_boots
|
||||
PLA : AND AbilityFlags : AND.b #$FB : RTL ; no boots
|
||||
+ : LDA FakeBoots : CMP.b #$01 : BNE +
|
||||
LDA $5B : BEQ ++ : LDA $59 : BNE + ; hover check
|
||||
|
||||
@@ -79,7 +79,10 @@ InvertDPad:
|
||||
|
||||
.crowd_control
|
||||
LDA !INVERT_DPAD : BNE +
|
||||
LDA.b $A0 : CMP.b #$DE : BNE .off
|
||||
LDA.b #$01 : BRA +
|
||||
|
||||
.off
|
||||
LDA $4218 : STA $00
|
||||
LDA $4219 : STA $01
|
||||
JML.l InvertDPadReturn
|
||||
|
||||
@@ -25,7 +25,7 @@ CuccoStorm:
|
||||
LDA.l !CUCCO_STORM : BEQ + ; only if storm is on
|
||||
LDA.b $10 : CMP.b #$09 : BEQ .check ; only if outdoors
|
||||
.indoors
|
||||
LDA.b #$00 : STA.l !CUCCO_STORM ; turn off cucco storm if indoors
|
||||
LDA.b #$00 : STA.l !CUCCO_STORM
|
||||
BRA +
|
||||
.check
|
||||
LDA.l LoopFrames : AND.b #$7F : BNE + ; check every 128 frames
|
||||
|
||||
BIN
damage_table.bin
BIN
damage_table.bin
Binary file not shown.
@@ -284,7 +284,10 @@ DialogGanon1:
|
||||
REP #$20
|
||||
LDA.w #$018C
|
||||
BCC +
|
||||
JSL CheckMushroom
|
||||
LDA.w #$016D
|
||||
BCC +
|
||||
LDA.w #$0197
|
||||
+ STA $1CF0
|
||||
SEP #$20
|
||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||
@@ -304,6 +307,10 @@ DialogGanon2:
|
||||
REP #$20
|
||||
BCS +
|
||||
LDA.w #$018D : JMP .done
|
||||
+
|
||||
JSL CheckMushroom
|
||||
BCC +
|
||||
LDA.w #$0198 : JMP .done
|
||||
+
|
||||
LDA.l GanonVulnerabilityItem : AND #$00FF : BNE .special_item
|
||||
LDA.l SpecialWeapons : AND.w #$00FF
|
||||
|
||||
@@ -7,8 +7,11 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
GoalItemGanonCheck:
|
||||
LDA $0E20, X : CMP.b #$D6 : BNE .success ; skip if not ganon
|
||||
LDA.w $0D80, X : CMP.b #$12 : BEQ .fail
|
||||
JSL.l CheckGanonVulnerability
|
||||
BCS .success
|
||||
BCC .fail
|
||||
JSL CheckMushroom
|
||||
BCC .success
|
||||
|
||||
.fail
|
||||
LDA $0D80, X : CMP.b #17 : !BLT .success ; decmial 17 because Acmlm's chart is decimal
|
||||
|
||||
42
hooks.asm
42
hooks.asm
@@ -3131,3 +3131,45 @@ BCC .not_moldorm
|
||||
NOP
|
||||
skip 17
|
||||
.not_moldorm
|
||||
|
||||
; make mini moldorms faster
|
||||
org $0697DF
|
||||
db $30, $2C, $22, $12, $00, $EE, $DE, $D4
|
||||
db $D0, $D4, $DE, $EE, $00, $12, $22, $2C
|
||||
db $00, $12, $22, $2C, $30, $2C, $22, $12
|
||||
db $00, $EE, $DE, $D4, $D0, $D4, $DE, $EE
|
||||
|
||||
; make lanmolas faster
|
||||
org $05A4B7
|
||||
LDA.b #$18
|
||||
|
||||
; ganon - silvers just don't work like they used to
|
||||
org $0DB93D
|
||||
db $08
|
||||
|
||||
; ganon - randomize vulnerability when stunned
|
||||
org $1D9010
|
||||
JSL StunGanon : NOP
|
||||
|
||||
; agahnim - pattern? we don't need no steenken pattern!
|
||||
org $1ED637
|
||||
JSL AgaDecision : NOP
|
||||
|
||||
; agahnim - no guaranteed normal balls
|
||||
org $1ED6ED
|
||||
NOP #2
|
||||
|
||||
; helmie's mask is brittle
|
||||
org $1E8112
|
||||
db $03, $03, $03, $03, $00
|
||||
|
||||
; vitreous - bombs work a bit better
|
||||
org $0DB938
|
||||
db $0C
|
||||
|
||||
; tile rooms - make them a bit faster
|
||||
org $09BA20
|
||||
LDA.b #$B8
|
||||
|
||||
org $1EBC56
|
||||
LDA.b #$28
|
||||
|
||||
@@ -5,7 +5,7 @@ NewDrawHud:
|
||||
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
||||
;================================================================================
|
||||
|
||||
LDA InfiniteBombsModifier : BNE .infinite_bombs
|
||||
JSL CheckInfiniteBombs : BNE .infinite_bombs
|
||||
.finite_bombs
|
||||
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
||||
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
||||
|
||||
10
retro.asm
10
retro.asm
@@ -1,5 +1,5 @@
|
||||
IsItemAvailable:
|
||||
LDA InfiniteBombsModifier : BEQ .finite
|
||||
JSL CheckInfiniteBombs : BEQ .finite
|
||||
.infinite
|
||||
CPX.b #$04 : BNE .finite
|
||||
LDA.b #$01 : RTL
|
||||
@@ -7,27 +7,27 @@ IsItemAvailable:
|
||||
LDA EquipmentWRAM-1, X
|
||||
RTL
|
||||
LoadBombCount:
|
||||
LDA InfiniteBombsModifier : BNE .infinite
|
||||
JSL CheckInfiniteBombs : BNE .infinite
|
||||
.finite
|
||||
LDA BombsEquipment
|
||||
.infinite
|
||||
RTL
|
||||
LoadBombCount16:
|
||||
LDA InfiniteBombsModifier : AND.w #$00FF : BNE .infinite
|
||||
JSL CheckInfiniteBombs16 : BNE .infinite
|
||||
.finite
|
||||
LDA BombsEquipment
|
||||
.infinite
|
||||
RTL
|
||||
StoreBombCount:
|
||||
JSL IncrementBombsPlacedCounter
|
||||
PHA : LDA InfiniteBombsModifier : BEQ .finite
|
||||
PHA : JSL CheckInfiniteBombs : BEQ .finite
|
||||
.infinite
|
||||
PLA : LDA.b #$01 : RTL
|
||||
.finite
|
||||
PLA : STA BombsEquipment
|
||||
RTL
|
||||
SearchForEquippedItem:
|
||||
LDA InfiniteBombsModifier : BEQ +
|
||||
JSL CheckInfiniteBombs : BEQ +
|
||||
LDA.b #$01 : LDX.b #$00 : RTL
|
||||
+
|
||||
LDA BowEquipment ; thing we wrote over
|
||||
|
||||
@@ -276,10 +276,10 @@ Utility_CheckHammerHelmasaurKingMask:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
Utility_CheckImpervious:
|
||||
LDA.w $0E20, X : CMP.b #$CE : BEQ .blind
|
||||
CMP.b #$CB : BNE .normal
|
||||
LDA $0E20, X : CMP.b #$CE : BEQ .blind
|
||||
CMP.b #$CB : BNE .normal
|
||||
.trinexx
|
||||
LDA.l SpecialWeapons : CMP #$01 : BEQ +
|
||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
||||
CMP #$03 : BEQ +
|
||||
CMP #$04 : BEQ +
|
||||
CMP #$05 : BEQ +
|
||||
@@ -289,16 +289,16 @@ Utility_CheckImpervious:
|
||||
LDA.w $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||
BRA .normal
|
||||
+
|
||||
LDA.w $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||
.check_sidenexx
|
||||
LDA.w $0DD1 : ORA.w $0DD2 : BNE .impervious ; at least one sidenexx alive
|
||||
LDA.w $0D80, X : CMP.b #$02 : BCS .impervious ; at least one sidenexx alive
|
||||
BRA .not_impervious
|
||||
.normal
|
||||
LDA.w $0E60, X : AND.b #$40 : BNE .impervious
|
||||
LDA.w $0CF2 : CMP.b #$FF : BEQ .impervious ; special "always-impervious" class
|
||||
LDA.w $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
||||
LDA.w $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
||||
LDA $0E60, X : AND.b #$40 : BNE .impervious
|
||||
LDA $0CF2 : CMP #$FF : BEQ .impervious ; special "always-impervious" class
|
||||
LDA $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
||||
LDA $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
||||
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
||||
CMP #$03 : BEQ +
|
||||
@@ -306,7 +306,7 @@ Utility_CheckImpervious:
|
||||
CMP #$05 : BEQ +
|
||||
BRA .not_impervious
|
||||
+
|
||||
LDA.w $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
||||
BRA .impervious
|
||||
.not_impervious
|
||||
|
||||
1
sram.asm
1
sram.asm
@@ -392,6 +392,7 @@ InvertDPadModifier: skip 1
|
||||
TemporaryOHKO: skip 1
|
||||
SpriteSwapper: skip 1
|
||||
BootsModifier: skip 1 ; (0=Off, 1=Always, 2=Never)
|
||||
GanonVulnerabilityItem: skip 1 ; item ganon is vulnerable to while stunned
|
||||
|
||||
;================================================================================
|
||||
; Expanded SRAM ($7F6000 - $7F6FFF)
|
||||
|
||||
@@ -119,6 +119,7 @@ LoadModifiedIceFloorValue:
|
||||
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
||||
LDA $5E : CMP #$02 : BEQ +
|
||||
LDA $5B : BNE +
|
||||
LDA.b $A0 : CMP.b #$29 : BEQ .yes
|
||||
LDA.w $0308 : BIT #$80 : BNE .yes
|
||||
LDA.l $30802D : BIT #$01 : BEQ ++
|
||||
LDA $A0 : CMP #$16 : BEQ ++ ; swamp supertile with current -- fine for temporary physics but impossible without boots for permanent
|
||||
|
||||
@@ -107,7 +107,7 @@ ChallengeModes:
|
||||
db #$00 ; #$00 = Default behavior;
|
||||
;--------------------------------------------------------------------------------
|
||||
org $30802E ; PC 0x18003E
|
||||
GanonVulnerabilityItem:
|
||||
DONOTUSE__GanonVulnerabilityItem:
|
||||
db #$00 ; #$00 = Default behavior (silver arrows)
|
||||
;--------------------------------------------------------------------------------
|
||||
org $30802F ; PC 0x18003F
|
||||
|
||||
@@ -122,8 +122,10 @@ dw #$FFFF, #$7FFF
|
||||
;--------------------------------------------------------------------------------
|
||||
!TEMPORARY_OHKO = "$7F50CC"
|
||||
DrawChallengeTimer:
|
||||
LDA.b $A0 : AND.w #$00FF : CMP.w #$00C8 : BEQ .is_ohko
|
||||
LDA !TEMPORARY_OHKO : AND.w #$00FF : BEQ +
|
||||
LDA.w #$2807 : STA $7EC790
|
||||
.is_ohko
|
||||
LDA.w #$2807 : STA $7EC790
|
||||
LDA.w #$280A : STA $7EC792
|
||||
LDA.w #$280B : STA $7EC794
|
||||
LDA.w #$280C : STA $7EC796
|
||||
@@ -175,6 +177,7 @@ DrawChallengeTimer:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OHKOTimer:
|
||||
LDA.b $A0 : CMP.b #$C8 : BEQ .kill
|
||||
LDA TemporaryOHKO : BNE .kill
|
||||
LDA.l TimeoutBehavior : CMP #$02 : BNE +
|
||||
LDA !Status : AND.b #$02 : BEQ +
|
||||
|
||||
63
trolls.asm
63
trolls.asm
@@ -1,5 +1,5 @@
|
||||
IFrameData:
|
||||
db $00, $14, $28
|
||||
db $00, $10, $20
|
||||
CalcIFrames:
|
||||
LDA.l ArmorEquipment
|
||||
PHX : TAX
|
||||
@@ -18,7 +18,11 @@ SetBombTimer:
|
||||
|
||||
SetDashTimer:
|
||||
JSL GetRandomInt
|
||||
AND.b #$3F
|
||||
AND.b #$1F
|
||||
STA.w $0374
|
||||
JSL GetRandomInt
|
||||
AND.b #$0F
|
||||
CLC : ADC.w $0374
|
||||
STA.w $0374
|
||||
RTL
|
||||
|
||||
@@ -40,7 +44,7 @@ ProcessFlute:
|
||||
.cucco
|
||||
JSR PlayCluck ; outdoors; play cucco sound
|
||||
LDA.b #$01
|
||||
STA.l $7F50C5 ; turn on cucco storm
|
||||
STA.l !CUCCO_STORM ; turn on cucco storm
|
||||
CLC : RTL ; do not summon duck
|
||||
.play_and_leave
|
||||
JSR PlayDuck
|
||||
@@ -64,7 +68,7 @@ PlayCluck:
|
||||
|
||||
FluteMap:
|
||||
LDA.b #$00
|
||||
STA.l $7F50C5 ; turn off cuccos
|
||||
STA.l !CUCCO_STORM ; turn off cuccos
|
||||
LDA.b #$0E
|
||||
STA.b $10
|
||||
RTL
|
||||
@@ -88,11 +92,15 @@ UseShovel:
|
||||
RTL
|
||||
|
||||
BunnyThrowPot:
|
||||
LDA.b $A0 : CMP.b #$0D : BNE .throw
|
||||
LDA.b $A1 : CMP.b #$00 : BEQ .no_throw
|
||||
.throw
|
||||
LDA.b #$02
|
||||
JSL $068156
|
||||
LDA.b $3B
|
||||
AND.b #$7F
|
||||
STA.b $3B
|
||||
.no_throw
|
||||
RTL
|
||||
|
||||
SwordSwingDelay:
|
||||
@@ -163,3 +171,50 @@ CheckMoldormRepel:
|
||||
SEC : RTL
|
||||
.not_moldorm
|
||||
CLC : RTL
|
||||
|
||||
CheckMushroom:
|
||||
PHP
|
||||
SEP #$20
|
||||
LDA.l InventoryTracking
|
||||
AND.b #$20
|
||||
BEQ +
|
||||
PLP : SEC : RTL
|
||||
+ PLP : CLC : RTL
|
||||
|
||||
AgaDecision:
|
||||
LDA.b $A0
|
||||
CMP.b #$20
|
||||
BNE .aga2
|
||||
JSL RNG_Agahnim1
|
||||
AND.b #$04
|
||||
STA.w $0E30, X
|
||||
CMP.b #$04
|
||||
RTL
|
||||
.aga2
|
||||
STZ.w $0E30, X
|
||||
CMP.b #$04
|
||||
RTL
|
||||
|
||||
CheckInfiniteBombs:
|
||||
LDA.l InfiniteBombsModifier : BNE .yes
|
||||
LDA.b $A0
|
||||
CMP.b #$90
|
||||
BEQ .yes
|
||||
.no
|
||||
LDA.b #$00
|
||||
RTL
|
||||
.yes
|
||||
LDA.b #$01
|
||||
RTL
|
||||
|
||||
CheckInfiniteBombs16:
|
||||
LDA.l InfiniteBombsModifier : AND.w #$00FF : BNE .yes
|
||||
LDA.b $A0 : AND.w #$00FF
|
||||
CMP.w #$0090
|
||||
BEQ .yes
|
||||
.no
|
||||
LDA.w #$0000
|
||||
RTL
|
||||
.yes
|
||||
LDA.w #$0001
|
||||
RTL
|
||||
|
||||
@@ -126,6 +126,53 @@ CheckBeeBoss:
|
||||
RTL
|
||||
; return non-zero A if entity is a boss (and bee should not attack)
|
||||
;--------------------------------------------------------------------------------
|
||||
StunGanon:
|
||||
JSL RNG_Ganon
|
||||
BIT.b #$30
|
||||
BEQ .non_magic
|
||||
.magic
|
||||
AND.b #$0E
|
||||
LSR
|
||||
BRA .chosen
|
||||
.non_magic
|
||||
AND.b #$0C
|
||||
LSR #2
|
||||
ORA.b #$08
|
||||
.chosen
|
||||
PHX
|
||||
TAX
|
||||
LDA.l Ganon_RandomizeItem, X
|
||||
STA.l GanonVulnerabilityItem
|
||||
PLX
|
||||
JSL DialogItem
|
||||
LDA.b #$D7
|
||||
STA.w $0E20, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogItem:
|
||||
PHX : PHY
|
||||
LDA.l GanonVulnerabilityItem
|
||||
ASL
|
||||
TAX
|
||||
LDA.l Ganon_TextBox+1, X
|
||||
TAY
|
||||
LDA.l Ganon_TextBox, X
|
||||
JSL Sprite_ShowMessageUnconditional
|
||||
PLY : PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
Ganon_RandomizeItem:
|
||||
db #$05, #$06, #$07, #$08
|
||||
db #$09, #$0A, #$11, #$12
|
||||
db #$01, #$02, #$03, #$0C
|
||||
;--------------------------------------------------------------------------------
|
||||
Ganon_TextBox:
|
||||
dw #$0000 ; default behavior--assume silvers
|
||||
dw #$0199, #$019A, #$019B, #$019C, #$019D
|
||||
dw #$019E, #$019F, #$01A0, #$01A1, #$01A2
|
||||
dw #$0000, #$01A3, #$0000, #$0000, #$0000
|
||||
dw #$01A4, #$01A5, #$01A6, #$0000, #$0000
|
||||
;--------------------------------------------------------------------------------
|
||||
Ganon_CheckByAncilla:
|
||||
db #$00 ; default behavior--we shouldn't be checking the table here anyway
|
||||
db #$00, #$05, #$1F, #$07, #$00
|
||||
|
||||
Reference in New Issue
Block a user