;-------------------------------------------------------------------------------- ; OnLoadOW ;-------------------------------------------------------------------------------- ;OnLoadMap: ; LDA $7EF2DB ; thing we wrote over ;RTL ;-------------------------------------------------------------------------------- OnPrepFileSelect: LDA $11 : CMP.b #$03 : BNE + LDA.b #$06 : STA $14 ; thing we wrote over RTL + JSL.l LoadAlphabetTilemap JML.l LoadFullItemTiles ;-------------------------------------------------------------------------------- OnDrawHud: JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter JSL.l DrHudOverride JSL.l NewDrawHud JSL.l SwapSpriteIfNecissary JSL.l CuccoStorm JSL.l PollService JML.l ReturnFromOnDrawHud ;-------------------------------------------------------------------------------- ;OnDungeonEntrance: ; STA $7EC172 ; thing we wrote over ;RTL ;-------------------------------------------------------------------------------- OnPlayerDead: PHA JSL.l SetDeathWorldChecked JSL.l SetSilverBowMode JSL.l RefreshRainAmmo PLA RTL ;-------------------------------------------------------------------------------- OnDungeonExit: PHA : PHP SEP #$20 ; set 8-bit accumulator JSL.l PodEGFix PLP : PLA STA $040C : STZ $04AC ; thing we wrote over PHA : PHP JSL.l HUD_RebuildLong JSL.l FloodGateResetInner JSL.l SetSilverBowMode PLP : PLA RTL ;-------------------------------------------------------------------------------- OnQuit: JSL.l PodEGFix LDA.b #$10 : STA $1C ; thing we wrote over RTL ;-------------------------------------------------------------------------------- OnUncleItemGet: PHA LDA.l EscapeAssist BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : + BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : + BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : + LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID PLA JSL Link_ReceiveItem LDA.l UncleRefill : BIT.b #$04 : BEQ + : LDA.b #$80 : STA $7EF373 : + ; refill magic LDA.l UncleRefill : BIT.b #$02 : BEQ + : LDA.b #50 : STA $7EF375 : + ; refill bombs LDA.l UncleRefill : BIT.b #$01 : BEQ + ; refill arrows LDA.b #70 : STA $7EF376 LDA.l ArrowMode : BEQ + LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2 ; enable bow toggle REP #$20 ; set 16-bit accumulator LDA $7EF360 : !ADD.l FreeUncleItemAmount : STA $7EF360 ; rupee arrows, so also give the player some money to start SEP #$20 ; set 8-bit accumulator + RTL ;-------------------------------------------------------------------------------- OnAga2Defeated: JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first 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 ;-------------------------------------------------------------------------------- !RNG_ITEM_LOCK_IN = "$7F5090" OnFileLoad: REP #$10 ; set 16 bit index registers JSL.l EnableForceBlank ; what we wrote over REP #$20 : LDA.l $30F010 : STA.l $7EF33E : SEP #$20 LDA MultiClientFlags : STA.l $7EF33D LDA.b #$07 : STA $210C ; Restore screen 3 to normal tile area LDA !FRESH_FILE_MARKER : BNE + JSL.l OnNewFile LDA.b #$FF : STA !FRESH_FILE_MARKER + LDA.w $010A : BNE + ; don't adjust the worlds for "continue" or "save-continue" LDA.l $7EC011 : BNE + ; don't adjust worlds if mosiac is enabled (Read: mirroring in dungeon) JSL.l DoWorldFix + JSL.l MasterSwordFollowerClear JSL.l InitOpenMode LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in LDA #$00 : STA $7F5001 ; mark fake flipper softlock as impossible LDA.l GenericKeys : BEQ + LDA $7EF38B : STA $7EF36F ; copy generic keys to key counter + JSL.l SetSilverBowMode JSL.l RefreshRainAmmo JSL.l SetEscapeAssist LDA.l IsEncrypted : CMP.b #01 : BNE + JSL LoadStaticDecryptionKey + SEP #$10 ; restore 8 bit index registers RTL ;-------------------------------------------------------------------------------- !RNG_ITEM_LOCK_IN = "$7F5090" OnNewFile: PHX : PHP REP #$20 ; set 16-bit accumulator LDA.l LinkStartingRupees : STA $7EF362 : STA $7EF360 LDA.l StartingTime : STA $7EF454 LDA.l StartingTime+2 : STA $7EF454+2 LDX.w #$004E : - ; copy over starting equipment LDA StartingEquipment, X : STA $7EF340, X DEX : DEX BPL - LDX #$000E : - LDA $7EF37C, X : STA $7EF4E0, X DEX : DEX BPL - LDX #$000E : - LDA $7EF37C, X : STA $7EF4E0, X DEX : DEX BPL - SEP #$20 ; set 8-bit accumulator ;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in LDA.l PreopenCurtains : BEQ + LDA.b #$80 : STA $7EF061 ; open aga tower curtain LDA.b #$80 : STA $7EF093 ; open skull woods curtain + LDA.l PreopenPyramid : BEQ + LDA.b #$20 : STA $7EF2DB ; pyramid hole already open + LDA.l PreopenGanonsTower : BEQ + LDA.b #$20 : STA $7EF2C3 ; Ganons Tower already open + LDA StartingSword : STA $7EF359 ; set starting sword type ; 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 RTL ;-------------------------------------------------------------------------------- OnInitFileSelect: ; LDA.b #$10 : STA $BC ; init sprite pointer - does nothing unless spriteswap.asm is included ; JSL.l SpriteSwap_SetSprite LDA.b #$51 : STA $0AA2 ;<-- Line missing from JP1.0, needed to ensure "extra" copy of naming screen graphics are loaded. JSL.l EnableForceBlank RTL ;-------------------------------------------------------------------------------- OnLinkDamaged: JSL.l FlipperKill JML.l OHKOTimer ;-------------------------------------------------------------------------------- OnEnterWater: JSL.l RegisterWaterEntryScreen JSL.l MysteryWaterFunction LDX.b #$04 RTL ;-------------------------------------------------------------------------------- OnLinkDamagedFromPit: JSL.l OHKOTimer LDA.b #$14 : STA $11 ; thing we wrote over RTL ;-------------------------------------------------------------------------------- OnLinkDamagedFromPitOutdoors: JML.l OHKOTimer ; make sure this is last ;-------------------------------------------------------------------------------- !RNG_ITEM_LOCK_IN = "$7F5090" OnOWTransition: JSL.l FloodGateReset JSL.l FlipperFlag JSL.l StatTransitionCounter PHP SEP #$20 ; set 8-bit accumulator LDA.b #$FF : STA !RNG_ITEM_LOCK_IN ; clear lock-in PLP RTL ;-------------------------------------------------------------------------------- !DARK_DUCK_TEMP = "$7F509C" OnLoadDuckMap: LDA !DARK_DUCK_TEMP BNE + INC : STA !DARK_DUCK_TEMP JSL OverworldMap_InitGfx : DEC $0200 RTL + LDA.b #$00 : STA !DARK_DUCK_TEMP JML OverworldMap_DarkWorldTilemap ;-------------------------------------------------------------------------------- PreItemGet: LDA.b #$01 : STA !ITEM_BUSY ; mark item as busy RTL ;-------------------------------------------------------------------------------- PostItemGet: JML.l MaybeWriteSRAMTrace ;-------------------------------------------------------------------------------- PostItemAnimation: LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished LDA $7F509F : BEQ + STZ $1CF0 : STZ $1CF1 ; reset decompression buffer JSL.l Main_ShowTextMessage_Alt LDA.b #$00 : STA $7F509F + LDA $1B : BEQ + REP #$20 : LDA $A0 : STA !MULTIWORLD_ROOMID : SEP #$20 LDA $0403 : STA !MULTIWORLD_ROOMDATA + LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ + STZ $02E9 LDA #$00 : STA !MULTIWORLD_ITEM_PLAYER_ID JML.l Ancilla_ReceiveItem_objectFinished + STZ $02E9 : LDA $0C5E, X ; thing we wrote over to get here JML.l Ancilla_ReceiveItem_optimus+6 ;--------------------------------------------------------------------------------