initial checkin
This commit is contained in:
BIN
99ff1_bombos.gfx
Executable file
BIN
99ff1_bombos.gfx
Executable file
Binary file not shown.
BIN
99ff1_quake.gfx
Executable file
BIN
99ff1_quake.gfx
Executable file
Binary file not shown.
21
LICENSE
21
LICENSE
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Karkat
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
424
LTTP_RND_GeneralBugfixes.asm
Normal file
424
LTTP_RND_GeneralBugfixes.asm
Normal file
@@ -0,0 +1,424 @@
|
||||
;================================================================================
|
||||
; The Legend of Zelda, A Link to the Past - Randomizer General Development & Bugfixes
|
||||
;================================================================================
|
||||
|
||||
lorom
|
||||
|
||||
;================================================================================
|
||||
|
||||
;org $00FFC0 ; <- 7FC0 - Bank00.asm : 9173 (db "THE LEGEND OF ZELDA " ; 21 bytes)
|
||||
;db #$23, $4E
|
||||
|
||||
org $00FFD5 ; <- 7FD5 - Bank00.asm : 9175 (db $20 ; rom layout)
|
||||
;db #$35 ; set fast exhirom
|
||||
db #$30 ; set fast lorom
|
||||
|
||||
;org $00FFD6 ; <- 7FD6 - Bank00.asm : 9176 (db $02 ; cartridge type)
|
||||
;db #$55 ; enable S-RTC
|
||||
|
||||
org $00FFD7 ; <- 7FD7 - Bank00.asm : 9177 (db $0A ; rom size)
|
||||
db #$0B ; mark rom as 16mbit
|
||||
|
||||
org $00FFD8 ; <- 7FD8 - Bank00.asm : 9178 (db $03 ; ram size (sram size))
|
||||
db #$07 ; mark sram as 128k
|
||||
|
||||
org $3FFFFF ; <- 1FFFFF
|
||||
db #$00 ; expand file to 2mb
|
||||
|
||||
;================================================================================
|
||||
|
||||
!ADD = "CLC : ADC"
|
||||
!SUB = "SEC : SBC"
|
||||
!BLT = "BCC"
|
||||
!BGE = "BCS"
|
||||
|
||||
!NPC_FLAGS = "$7EF410"
|
||||
!NPC_FLAGS_2 = "$7EF411"
|
||||
!INVENTORY_SWAP = "$7EF412"
|
||||
!HUD_FLAG = "$7EF416" ; --h- ----
|
||||
!PROGRESSIVE_SHIELD = "$7EF416" ; ss-- ----
|
||||
!INVENTORY_SWAP_2 = "$7EF414"
|
||||
!MAP_ZOOM = "$7EF415"
|
||||
!HAS_GROVE_ITEM = "$7EF416" ; ---- ---g general flags, don't waste these
|
||||
!HIGHEST_SWORD_LEVEL = "$7EF417" ; --- -sss
|
||||
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
|
||||
!SRAM_SINK = "$7EF41E" ; <- change this
|
||||
;$7EF41A[w] - Programmable Item #1
|
||||
;$7EF41C[w] - Programmable Item #3
|
||||
;$7EF41E[w] - Programmable Item #3
|
||||
;$7EF420 - $7EF44F - Stat Tracking Bank 1
|
||||
;$7EF450 - $7EF45F - RNG Item (Single) Flags
|
||||
;$7EF460 - Goal Item Counter
|
||||
|
||||
!MS_GOT = "$7F5031"
|
||||
!DARK_WORLD = "$7EF3CA"
|
||||
|
||||
!REDRAW = "$7F5000"
|
||||
!GANON_WARP_CHAIN = "$7F5032";
|
||||
|
||||
!FORCE_HEART_SPAWN = "$7F5033";
|
||||
!SKIP_HEART_SAVE = "$7F5034";
|
||||
|
||||
;================================================================================
|
||||
|
||||
incsrc hooks.asm
|
||||
incsrc treekid.asm
|
||||
|
||||
;org $208000 ; bank #$20
|
||||
org $A08000 ; bank #$A0
|
||||
incsrc itemdowngrade.asm
|
||||
incsrc bugfixes.asm
|
||||
incsrc darkworldspawn.asm
|
||||
incsrc lampmantlecone.asm
|
||||
incsrc floodgatesoftlock.asm
|
||||
incsrc heartpieces.asm
|
||||
incsrc npcitems.asm
|
||||
incsrc utilities.asm
|
||||
incsrc flipperkill.asm
|
||||
incsrc previewdatacopy.asm
|
||||
incsrc pendantcrystalhud.asm
|
||||
incsrc potions.asm
|
||||
incsrc shopkeeper.asm
|
||||
incsrc bookofmudora.asm
|
||||
incsrc crypto.asm
|
||||
incsrc tablets.asm
|
||||
incsrc rupeelimit.asm
|
||||
incsrc fairyfixes.asm
|
||||
incsrc rngfixes.asm
|
||||
incsrc medallions.asm
|
||||
incsrc inventory.asm
|
||||
incsrc ganonfixes.asm
|
||||
incsrc maidencrystals.asm
|
||||
incsrc zoraking.asm
|
||||
incsrc catfish.asm
|
||||
incsrc flute.asm
|
||||
incsrc dungeondrops.asm
|
||||
incsrc halfmagicbat.asm
|
||||
incsrc newitems.asm
|
||||
incsrc swordswap.asm
|
||||
incsrc stats.asm
|
||||
incsrc scratchpad.asm
|
||||
incsrc map.asm
|
||||
incsrc dialog.asm
|
||||
incsrc events.asm
|
||||
incsrc entrances.asm
|
||||
incsrc clock.asm
|
||||
incsrc accessability.asm
|
||||
incsrc heartbeep.asm
|
||||
incsrc capacityupgrades.asm
|
||||
incsrc hud.asm
|
||||
incsrc timer.asm
|
||||
incsrc glitched.asm
|
||||
incsrc hardmode.asm
|
||||
incsrc goalitem.asm
|
||||
incsrc compasses.asm
|
||||
incsrc hashalphabet.asm ; <- TAKE OUT THE EXTRA ORGS IN HERE - THIS IS WHY WE COULDN'T ADD MORE FILES EARLIER
|
||||
warnpc $A18000
|
||||
|
||||
incsrc translations.asm
|
||||
|
||||
org $A18000 ; static mapping area
|
||||
incsrc framehook.asm
|
||||
warnpc $A19000
|
||||
|
||||
org $A1FF00 ; static mapping area
|
||||
incsrc init.asm
|
||||
|
||||
org $A48000 ; code bank - PUT NEW CODE HERE
|
||||
incsrc openmode.asm
|
||||
|
||||
;org $228000 ; contrib area
|
||||
org $A28000 ; contrib area
|
||||
incsrc contrib.asm
|
||||
|
||||
org $A38000
|
||||
incsrc stats/main.asm
|
||||
|
||||
;incsrc sandbox.asm
|
||||
|
||||
org $308000 ; bank #$30
|
||||
incsrc tables.asm
|
||||
|
||||
org $318000 ; bank #$31
|
||||
GFX_Mire_Bombos:
|
||||
incbin 99ff1_bombos.gfx
|
||||
warnpc $318800
|
||||
|
||||
org $318800
|
||||
GFX_Mire_Quake:
|
||||
incbin 99ff1_quake.gfx
|
||||
warnpc $319000
|
||||
|
||||
org $319000
|
||||
GFX_TRock_Bombos:
|
||||
incbin a6fc4_bombos.gfx
|
||||
warnpc $319800
|
||||
|
||||
org $319800
|
||||
GFX_TRock_Ether:
|
||||
incbin a6fc4_ether.gfx
|
||||
warnpc $31A000
|
||||
|
||||
org $31A000
|
||||
GFX_HUD_Items:
|
||||
incbin c2807_v3.gfx
|
||||
warnpc $31A800
|
||||
|
||||
org $31A800
|
||||
GFX_New_Items:
|
||||
incbin newitems.gfx
|
||||
warnpc $31B000
|
||||
|
||||
org $31B000
|
||||
GFX_HUD_Main:
|
||||
incbin c2e3e.gfx
|
||||
warnpc $31B800
|
||||
|
||||
org $31B800
|
||||
GFX_Hash_Alphabet:
|
||||
incbin hashalphabet.chr.gfx
|
||||
warnpc $31C001
|
||||
|
||||
org $338000
|
||||
GFX_HUD_Palette:
|
||||
incbin hudpalette.pal
|
||||
warnpc $348000
|
||||
|
||||
org $320000
|
||||
Extra_Text_Table:
|
||||
|
||||
incsrc externalhooks.asm
|
||||
;================================================================================
|
||||
org $2F8000 ; PC 0x178000
|
||||
Static_RNG:
|
||||
warnpc $2F8400
|
||||
;================================================================================
|
||||
;bank $3A reserved for downstream use (Plandomizer)
|
||||
;bank $3B reserved for downstream use (Plandomizer)
|
||||
;bank $3F reserved for internal debugging
|
||||
;$7F5700 - $7F57FF reserved for downstream use
|
||||
;================================================================================
|
||||
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
|
||||
;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
|
||||
;
|
||||
;;red pendant
|
||||
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
|
||||
;db $2B, $25, $2C, $25, $2D, $25, $2E, $25
|
||||
;
|
||||
;;blue pendant
|
||||
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
|
||||
;db $2B, $2D, $2C, $2D, $2D, $2D, $2E, $2D
|
||||
;
|
||||
;;green pendant
|
||||
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
|
||||
;db $2B, $3D, $2C, $3D, $2D, $3D, $2E, $3D
|
||||
;================================================================================
|
||||
;org $00CFF2 ; 0x4FF2 - Mire H
|
||||
;db GFX_Mire_Bombos>>16
|
||||
;org $00D0D1 ; 0x50D1 - Mire M
|
||||
;db GFX_Mire_Bombos>>8
|
||||
;org $00D1B0 ; 0x51B0 - Mire L
|
||||
;db GFX_Mire_Bombos
|
||||
|
||||
;org $00D020 ; 0x5020 - Trock H
|
||||
;db GFX_TRock_Bombos>>16
|
||||
;org $00D0FF ; 0x50FF - Trock M
|
||||
;db GFX_TRock_Bombos>>8
|
||||
;org $00D1DE ; 0x51DE - Trock L
|
||||
;db GFX_TRock_Bombos
|
||||
|
||||
org $00D09C ; 0x509C - HUD Items H
|
||||
db GFX_HUD_Items>>16
|
||||
org $00D17B ; 0x517B - HUD Items M
|
||||
db GFX_HUD_Items>>8
|
||||
org $00D25A ; 0x525A - HUD Items L
|
||||
db GFX_HUD_Items
|
||||
|
||||
; this used to be a pointer to a dummy file
|
||||
org $00D065 ; 005065 - New Items H
|
||||
db GFX_New_Items>>16
|
||||
org $00D144 ; 005114 - New Items M
|
||||
db GFX_New_Items>>8
|
||||
org $00D223 ; 005223 - New Items L
|
||||
db GFX_New_Items
|
||||
|
||||
org $00D09D ; 0x509D - HUD Main H
|
||||
db GFX_HUD_Main>>16
|
||||
org $00D17C ; 0x517C - HUD Main M
|
||||
db GFX_HUD_Main>>8
|
||||
org $00D25B ; 0x525B - HUD Main L
|
||||
db GFX_HUD_Main
|
||||
;================================================================================
|
||||
org $008333
|
||||
Vram_EraseTilemaps_triforce:
|
||||
|
||||
org $00893D
|
||||
EnableForceBlank:
|
||||
|
||||
org $00D308
|
||||
DecompSwordGfx:
|
||||
|
||||
org $00D348
|
||||
DecompShieldGfx:
|
||||
|
||||
org $00D51B
|
||||
GetAnimatedSpriteTile:
|
||||
|
||||
org $00D52D
|
||||
GetAnimatedSpriteTile_variable:
|
||||
|
||||
org $00E529
|
||||
LoadSelectScreenGfx:
|
||||
|
||||
org $00F945
|
||||
PrepDungeonExit:
|
||||
|
||||
org $00FDEE
|
||||
Mirror_InitHdmaSettings:
|
||||
|
||||
org $01873A
|
||||
Dungeon_LoadRoom:
|
||||
|
||||
org $02A0A8
|
||||
Dungeon_SaveRoomData:
|
||||
|
||||
org $02A0BE
|
||||
Dungeon_SaveRoomData_justKeys:
|
||||
|
||||
org $02B861
|
||||
Dungeon_SaveRoomQuadrantData:
|
||||
|
||||
org $05A51D
|
||||
Sprite_SpawnFallingItem:
|
||||
|
||||
org $05DF6C ; 02DF6C - Bank05.asm : 2445
|
||||
Sprite_DrawMultiple:
|
||||
|
||||
org $05DF70 ; 02DF70 - Bank05.asm : 2454
|
||||
Sprite_DrawMultiple_quantity_preset:
|
||||
|
||||
org $05DF75 ; 02DF75 - Bank05.asm : 2461
|
||||
Sprite_DrawMultiple_player_deferred:
|
||||
|
||||
org $05E1A7 ; 02E1A7 - Bank05.asm : 2592
|
||||
Sprite_ShowSolicitedMessageIfPlayerFacing:
|
||||
|
||||
org $05E219
|
||||
Sprite_ShowMessageUnconditional:
|
||||
|
||||
org $05FA8E
|
||||
Sprite_ShowMessageMinimal:
|
||||
|
||||
org $06DC5C
|
||||
Sprite_DrawShadowLong:
|
||||
|
||||
org $06DD40
|
||||
DashKey_Draw:
|
||||
|
||||
org $06DBF8
|
||||
Sprite_PrepAndDrawSingleLargeLong:
|
||||
|
||||
org $06DC00
|
||||
Sprite_PrepAndDrawSingleSmallLong:
|
||||
|
||||
org $06EAA6
|
||||
Sprite_DirectionToFacePlayer:
|
||||
|
||||
org $06F12F
|
||||
Sprite_CheckDamageToPlayerSameLayerLong:
|
||||
|
||||
org $07999D
|
||||
Link_ReceiveItem:
|
||||
|
||||
org $07E68F
|
||||
Unknown_Method_0: ; In US version disassembly simply called "$3E6A6 IN ROM"
|
||||
|
||||
org $07F4AA
|
||||
Sprite_CheckIfPlayerPreoccupied:
|
||||
|
||||
org $08C3AE
|
||||
Ancilla_ReceiveItem:
|
||||
|
||||
org $08F710
|
||||
Ancilla_SetOam_XY_Long:
|
||||
|
||||
org $0985E2 ; (break on $0985E4)
|
||||
AddReceivedItem:
|
||||
|
||||
org $0993DF
|
||||
AddDashTremor:
|
||||
|
||||
org $09AD58
|
||||
GiveRupeeGift:
|
||||
|
||||
org $1CFD69
|
||||
Main_ShowTextMessage:
|
||||
|
||||
org $0DBA71
|
||||
GetRandomInt:
|
||||
|
||||
org $0DBA80
|
||||
OAM_AllocateFromRegionA:
|
||||
org $0DBA84
|
||||
OAM_AllocateFromRegionB:
|
||||
org $0DBA88
|
||||
OAM_AllocateFromRegionC:
|
||||
org $0DBA8C
|
||||
OAM_AllocateFromRegionD:
|
||||
org $0DBA90
|
||||
OAM_AllocateFromRegionE:
|
||||
org $0DBA94
|
||||
OAM_AllocateFromRegionF:
|
||||
|
||||
org $0DBB67
|
||||
Sound_SetSfxPanWithPlayerCoords:
|
||||
|
||||
org $0DBB8A
|
||||
Sound_SetSfx3PanLong:
|
||||
|
||||
org $0DDB7F
|
||||
HUD_RefreshIconLong:
|
||||
|
||||
org $0DE01E ; 6E10E - equipment.asm : 787
|
||||
BottleMenu_movingOn:
|
||||
|
||||
org $0DE346
|
||||
RestoreNormalMenu:
|
||||
|
||||
org $0DE9C8
|
||||
DrawProgressIcons: ; this returns short
|
||||
|
||||
org $0DED29
|
||||
DrawEquipment: ; this returns short
|
||||
|
||||
org $0EEE10
|
||||
Messaging_Text:
|
||||
|
||||
org $1BED03
|
||||
Palette_Sword:
|
||||
|
||||
org $1BED29
|
||||
Palette_Shield:
|
||||
|
||||
org $1BEDF9
|
||||
Palette_ArmorAndGloves:
|
||||
|
||||
org $1BEE52
|
||||
Palette_Hud:
|
||||
|
||||
org $1DF65D
|
||||
Sprite_SpawnDynamically:
|
||||
|
||||
org $1DFD4B
|
||||
DiggingGameGuy_AttemptPrizeSpawn:
|
||||
;================================================================================
|
||||
BIN
a6fc4_bombos.gfx
Executable file
BIN
a6fc4_bombos.gfx
Executable file
Binary file not shown.
BIN
a6fc4_ether.gfx
Executable file
BIN
a6fc4_ether.gfx
Executable file
Binary file not shown.
12
accessability.asm
Normal file
12
accessability.asm
Normal file
@@ -0,0 +1,12 @@
|
||||
;================================================================================
|
||||
; 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
|
||||
;================================================================================
|
||||
75
bookofmudora.asm
Normal file
75
bookofmudora.asm
Normal file
@@ -0,0 +1,75 @@
|
||||
;================================================================================
|
||||
; Randomize Book of Mudora
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadLibraryItemGFX:
|
||||
LDA.l LibraryItem
|
||||
JSL.l PrepDynamicTile
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawLibraryItemGFX:
|
||||
PHA
|
||||
LDA.l LibraryItem
|
||||
JSL.l DrawDynamicTile
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
SetLibraryItem:
|
||||
PHA
|
||||
LDA LibraryItem : TAY
|
||||
PLA
|
||||
JSL.l ItemSet_Library ; contains thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;0x0087 - Hera Room w/key
|
||||
;================================================================================
|
||||
; Randomize Bonk Keys
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadBonkItemGFX:
|
||||
LDA.b #$08 : STA $0F50, X ; thing we wrote over
|
||||
LoadBonkItemGFX_inner:
|
||||
LDA.b #$00 : STA !REDRAW
|
||||
JSR LoadBonkItem
|
||||
JSL.l PrepDynamicTile
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawBonkItemGFX:
|
||||
PHA
|
||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
||||
JSL.l LoadBonkItemGFX_inner
|
||||
BRA .done ; don't draw on the init frame
|
||||
|
||||
.skipInit
|
||||
|
||||
JSR LoadBonkItem
|
||||
JSL.l DrawDynamicTile
|
||||
|
||||
.done
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
GiveBonkItem:
|
||||
JSR LoadBonkItem
|
||||
CMP #$24 : BNE .notKey
|
||||
.key
|
||||
LDA $7EF36F : INC A : STA $7EF36F
|
||||
LDA.b #$2F : JSL.l Sound_SetSfx3PanLong
|
||||
RTL
|
||||
.notKey
|
||||
PHY : TAY : JSL.l Link_ReceiveItem : PLY
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadBonkItem:
|
||||
LDA $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte
|
||||
CMP #115 : BNE + ; Desert Bonk Key
|
||||
LDA.l BonkKey_Desert
|
||||
BRA ++
|
||||
+ : CMP #140 : BNE + ; GTower Bonk Key
|
||||
LDA.l BonkKey_GTower
|
||||
BRA ++
|
||||
+
|
||||
LDA.b #$24 ; default to small key
|
||||
++
|
||||
RTS
|
||||
20
bugfixes.asm
Normal file
20
bugfixes.asm
Normal file
@@ -0,0 +1,20 @@
|
||||
;================================================================================
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
AssignKiki:
|
||||
LDA.b #$00 : STA $7EF3D3 ; defuse bomb
|
||||
LDA.b #$0A : STA $7EF3CC ; assign kiki as follower
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Name: AllowSQ
|
||||
; Returns: Accumulator = 0 if S&Q is disallowed, 1 if allowed
|
||||
;--------------------------------------------------------------------------------
|
||||
!ITEM_BUSY = "$7F5091"
|
||||
AllowSQ:
|
||||
LDA $7EF3C5 : BEQ .done ; thing we overwrote - check if link is in his bed
|
||||
LDA !ITEM_BUSY : EOR #$01
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
5
build.sh
Executable file
5
build.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
rm ../working.sfc
|
||||
cp ../alttp.sfc ../working.sfc
|
||||
./xkas LTTP_RND_GeneralBugfixes.asm ../working.sfc
|
||||
BIN
c2807_v3.gfx
Executable file
BIN
c2807_v3.gfx
Executable file
Binary file not shown.
42
capacityupgrades.asm
Normal file
42
capacityupgrades.asm
Normal file
@@ -0,0 +1,42 @@
|
||||
;================================================================================
|
||||
; Capacity Logic
|
||||
;================================================================================
|
||||
!BOMB_UPGRADES = "$7EF370"
|
||||
!BOMB_CURRENT = "$7EF343"
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementBombs:
|
||||
LDA !BOMB_UPGRADES ; get bomb upgrades
|
||||
!ADD.l StartingMaxBombs : DEC
|
||||
|
||||
CMP !BOMB_CURRENT
|
||||
|
||||
!BLT +
|
||||
LDA !BOMB_CURRENT
|
||||
CMP.b #99 : !BGE +
|
||||
INC : STA !BOMB_CURRENT
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!ARROW_UPGRADES = "$7EF371"
|
||||
!ARROW_CURRENT = "$7EF377"
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementArrows:
|
||||
LDA !ARROW_UPGRADES ; get arrow upgrades
|
||||
!ADD.l StartingMaxArrows : DEC
|
||||
|
||||
CMP !ARROW_CURRENT
|
||||
|
||||
!BLT +
|
||||
LDA !ARROW_CURRENT
|
||||
CMP.b #99 : !BGE +
|
||||
INC : STA !ARROW_CURRENT
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CompareBombsToMax:
|
||||
LDA !BOMB_UPGRADES ; get bomb upgrades
|
||||
!ADD.l StartingMaxBombs
|
||||
|
||||
CMP !BOMB_CURRENT
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
37
catfish.asm
Normal file
37
catfish.asm
Normal file
@@ -0,0 +1,37 @@
|
||||
;================================================================================
|
||||
; Randomize Catfish
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadCatfishItemGFX:
|
||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||
JSL.l PrepDynamicTile
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawThrownItem:
|
||||
LDA $8A : CMP.b #$81 : BNE .catfish
|
||||
|
||||
.zora
|
||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
||||
BRA .draw
|
||||
|
||||
.catfish
|
||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||
|
||||
.draw
|
||||
JSL.l DrawDynamicTile
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
MarkThrownItem:
|
||||
JSL Link_ReceiveItem ; thing we wrote over
|
||||
|
||||
LDA $8A : CMP.b #$81 : BNE .catfish
|
||||
|
||||
.zora
|
||||
JSL.l ItemSet_ZoraKing
|
||||
BRA .done
|
||||
|
||||
.catfish
|
||||
JSL.l ItemSet_Catfish
|
||||
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
251
clock.asm
Normal file
251
clock.asm
Normal file
@@ -0,0 +1,251 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; http://problemkaputt.de/fullsnes.htm
|
||||
; 2800h-2801h S-RTC Real Time Clock I/O Ports
|
||||
; cartridge type change from #$02 to #$55 to enable S-RTC
|
||||
; SNES Cart S-RTC (Realtime Clock) (1 game)
|
||||
;
|
||||
; PCB "SHVC-LJ3R-01" with 24pin "Sharp S-RTC" chip. Used only by one japanese game:
|
||||
; Dai Kaiju Monogatari 2 (1996) Birthday/Hudson Soft (JP)
|
||||
;
|
||||
; S-RTC I/O Ports
|
||||
; 002800h S-RTC Read (R)
|
||||
; 002801h S-RTC Write (W)
|
||||
; Both registers are 4bits wide. When writing: Upper 4bit should be zero. When reading: Upper 4bit should be masked-off (they do possibly contain garbage, eg. open-bus).
|
||||
;
|
||||
; S-RTC Communication
|
||||
; The sequence for setting, and then reading the time is:
|
||||
; Send <0Eh,04h,0Dh,0Eh,00h,Timestamp(12 digits),0Dh> to [002801h]
|
||||
; If ([002800h] AND 0F)=0Fh then read <Timestamp(13 digits)>
|
||||
; If ([002800h] AND 0F)=0Fh then read <Timestamp(13 digits)>
|
||||
; If ([002800h] AND 0F)=0Fh then read <Timestamp(13 digits)>
|
||||
; If ([002800h] AND 0F)=0Fh then read <Timestamp(13 digits)>
|
||||
; etc.
|
||||
; The exact meaning of the bytes is unknown. 0Eh/0Dh seems to invoke/terminate commands, 04h might be some configuration stuff (like setting 24-hour mode). 00h is apparently the set-time command. There might be further commands (such like setting interrupts, alarm, 12-hour mode, reading battery low & error flags, etc.). When reading, 0Fh seems to indicate sth like "time available".
|
||||
; The 12/13-digit "SSMMHHDDMYYY(D)" Timestamps are having the following format:
|
||||
; Seconds.lo (BCD, 0..9)
|
||||
; Seconds.hi (BCD, 0..5)
|
||||
; Minutes.lo (BCD, 0..9)
|
||||
; Minutes.hi (BCD, 0..5)
|
||||
; Hours.lo (BCD, 0..9)
|
||||
; Hours.hi (BCD, 0..2)
|
||||
; Day.lo (BCD, 0..9)
|
||||
; Day.hi (BCD, 0..3)
|
||||
; Month (HEX, 01h..0Ch)
|
||||
; Year.lo (BCD, 0..9)
|
||||
; Year.hi (BCD, 0..9)
|
||||
; Century (HEX, 09h..0Ah for 19xx..20xx)
|
||||
; When READING the time, there is one final extra digit (the existing software doesn't transmit that extra digit on WRITING, though maybe it's possible to do writing, too):
|
||||
; Day of Week? (0..6) (unknown if RTC assigns sth like 0=Sunday or 0=Monday)
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
macro A_x10()
|
||||
ASL #1 : PHA
|
||||
ASL #2 : !ADD 1,s
|
||||
STA 1,s : PLA
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
macro A_x24()
|
||||
ASL #3 : PHA
|
||||
ASL #1 : !ADD 1,s
|
||||
STA 1,s : PLA
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
macro A_x60()
|
||||
ASL #2 : PHA
|
||||
ASL #4 : !SUB 1,s
|
||||
STA 1,s : PLA
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
macro Clock_ReadBCD()
|
||||
LDA $002800 : PHA
|
||||
LDA $002800 : %A_x10() : !ADD 1,s
|
||||
STA 1,s : PLA
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
Clock_Test:
|
||||
LDA $FFFFFF
|
||||
JSL.l Clock_Init
|
||||
JSL.l Clock_IsSupported
|
||||
RTL
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Clock_Init
|
||||
;--------------------------------------------------------------------------------
|
||||
Clock_Init:
|
||||
LDA.b #$0E : STA $002801
|
||||
LDA.b #$04 : STA $002801
|
||||
LDA.b #$0D : STA $002801
|
||||
LDA.b #$0E : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$01 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$01 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$00 : STA $002801
|
||||
LDA.b #$0A : STA $002801
|
||||
|
||||
LDA.b #$0D : STA $002801
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Clock_IsSupported
|
||||
;--------------------------------------------------------------------------------
|
||||
; Input: None (8-bit accumulator)
|
||||
;--------------------------------------------------------------------------------
|
||||
; Output:
|
||||
; Carry - unset if unsupported, set if supported
|
||||
; Zero - Undefined
|
||||
;--------------------------------------------------------------------------------
|
||||
; Side Effects:
|
||||
; S-RTC is ready for reading upon exit if supported
|
||||
;--------------------------------------------------------------------------------
|
||||
Clock_IsSupported:
|
||||
PHA : PHX
|
||||
LDX #$00;
|
||||
-
|
||||
LDA $002800 : AND.b #$0F : CMP #$0F : BEQ + ; 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
|
||||
INX
|
||||
BRA - : +
|
||||
SEC ; found a clock chip
|
||||
.done
|
||||
PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Clock_QuickStamp
|
||||
;--------------------------------------------------------------------------------
|
||||
; Input: None
|
||||
;--------------------------------------------------------------------------------
|
||||
; Output:
|
||||
; $00.b - 24-bit timestamp (low)
|
||||
; $01.b - 24-bit timestamp (mid)
|
||||
; $02.b - 24-bit timestamp (high)
|
||||
; $03.b - zero
|
||||
; Carry - Unset if error, Set if success
|
||||
; Zero - Undefined
|
||||
;--------------------------------------------------------------------------------
|
||||
; Side Effects:
|
||||
; Requires Mode-7 Matrix Registers
|
||||
;--------------------------------------------------------------------------------
|
||||
Clock_QuickStamp:
|
||||
PHA : PHX : PHP
|
||||
SEP #$30 ; set 8-bit accumulator and index registers
|
||||
LDX #$00;
|
||||
-
|
||||
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
|
||||
INX
|
||||
BRA -
|
||||
SEC ; indicate success
|
||||
|
||||
.ready
|
||||
%Clock_ReadBCD() : STA $00 ; seconds
|
||||
%Clock_ReadBCD() : STA $01 ; minutes
|
||||
%Clock_ReadBCD() : STA $02 ; hours
|
||||
%Clock_ReadBCD() : STA $03 ; days
|
||||
|
||||
REP $20 ; set 16-bit accumulator
|
||||
LDA $01 : AND #$00FF : %A_x60() ; convert minutes to seconds
|
||||
STZ $01 : !ADD $00 : STA $00 ; store running total seconds to $00
|
||||
|
||||
LDA $03 : AND #$00FF : %A_x24() ; convert days to hours
|
||||
STZ $03 : !ADD $02 ; get total hours
|
||||
%A_x60() ; get total minutes
|
||||
|
||||
LDY #$60
|
||||
JSL.l Multiply_A16Y8
|
||||
STY $02 : STZ $03
|
||||
!ADD $00 : BCC + : INC $02 : +
|
||||
|
||||
.done
|
||||
PLP : PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Multiply_A16Y8:
|
||||
;--------------------------------------------------------------------------------
|
||||
; Expects:
|
||||
; Accumulator - 16-bit
|
||||
; Index Registers - 8-bit
|
||||
;--------------------------------------------------------------------------------
|
||||
; Notes:
|
||||
; Found a (wrong) version of this on wikibooks. This is cleaned up and fixed.
|
||||
;--------------------------------------------------------------------------------
|
||||
Multiply_A16Y8:
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
STY $4202
|
||||
STA $4203
|
||||
NOP #4
|
||||
LDA $4216
|
||||
LDY $4217
|
||||
XBA
|
||||
STA $4203
|
||||
NOP #2
|
||||
TYA
|
||||
CLC
|
||||
ADC $4216
|
||||
LDY $4217
|
||||
BCC carry_bit
|
||||
INY
|
||||
carry_bit:
|
||||
XBA
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Clock_GetTime
|
||||
;--------------------------------------------------------------------------------
|
||||
; Input: None
|
||||
;--------------------------------------------------------------------------------
|
||||
; Output:
|
||||
; $00.b - Seconds
|
||||
; $01.b - Minutes
|
||||
; $02.b - Hours
|
||||
; $03.b - Days
|
||||
; $04.b - Months
|
||||
; $05.w - Years
|
||||
; Carry - Unset if error, Set if success
|
||||
; Zero - Undefined
|
||||
;--------------------------------------------------------------------------------
|
||||
Clock_GetTime:
|
||||
PHA : PHX : PHY : PHP
|
||||
SEP #$30 ; set 8-bit accumulator and index registers
|
||||
LDX #$00;
|
||||
-
|
||||
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
|
||||
INX
|
||||
BRA -
|
||||
SEC ; indicate success
|
||||
|
||||
.ready
|
||||
%Clock_ReadBCD() : STA $00 ; seconds
|
||||
%Clock_ReadBCD() : STA $01 ; minutes
|
||||
%Clock_ReadBCD() : STA $02 ; hours
|
||||
%Clock_ReadBCD() : STA $03 ; days
|
||||
LDA $002800 : STA $04 ; months
|
||||
%Clock_ReadBCD() : STA $05 ; years
|
||||
LDA $002800 : STA $06 ; century
|
||||
|
||||
REP $20 ; set 16-bit accumulator
|
||||
STA $06 : AND #$00FF : %A_x10() : %A_x10() : !ADD #1000 ; multiply century digit by 100 and add 1000
|
||||
STZ $06 : !ADD $05 : STA $05 ; add lower 2 digits of the year and store
|
||||
|
||||
.done
|
||||
PLP : PLY : PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
143
compasses.asm
Normal file
143
compasses.asm
Normal file
@@ -0,0 +1,143 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7F5010 - Scratch Space (Callee Preserved)
|
||||
;--------------------------------------------------------------------------------
|
||||
!GOAL_COUNTER = "$7EF460"
|
||||
DrawDungeonCompassCounts:
|
||||
LDA.l CompassMode : AND.w #$00FF : BNE + : RTL : + ; Item Counts
|
||||
LDA $1B : AND.w #$00FF : BNE + : RTL : + ; Skip if outdoors
|
||||
LDA $040C : CMP.w #$00FF : BNE + : RTL : + ; Skip if not in a dungeon
|
||||
PHX
|
||||
LDX $040C ; Load dungeon ID to X
|
||||
LDA $7EF364 : AND .item_masks, X ; Load compass values to A, mask with dungeon item masks
|
||||
BNE + : BRL .done : + ; skip if we don't have compass
|
||||
|
||||
LDA $040C
|
||||
CMP.w #$0000 : BNE + ; Sewer Passage
|
||||
+ : CMP.w #$0002 : BNE + ; Hyrule Castle
|
||||
LDA $7EF434 : AND.w #$00F0 : LSR #4
|
||||
BRL ++
|
||||
+ : CMP.w #$0004 : BNE + ; Eastern Palace
|
||||
LDA $7EF436 : AND.w #$0007
|
||||
BRL ++
|
||||
+ : CMP.w #$0006 : BNE + ; Desert Palace
|
||||
LDA $7EF435 : AND.w #$00E0 : LSR #5
|
||||
BRL ++
|
||||
+ : CMP.w #$0008 : BNE + ; Agahnim's Tower
|
||||
LDA $7EF435 : AND.w #$0002
|
||||
BRL ++
|
||||
+ : CMP.w #$000A : BNE + ; Swamp Palace
|
||||
LDA $7EF439 : AND.w #$000F
|
||||
BRL ++
|
||||
+ : CMP.w #$000C : BNE + ; Dark Palace
|
||||
LDA $7EF434 : AND.w #$000F
|
||||
BRA ++
|
||||
+ : CMP.w #$000E : BNE + ; Misery Mire
|
||||
LDA $7EF438 : AND.w #$000F
|
||||
BRA ++
|
||||
+ : CMP.w #$0010 : BNE + ; Skull Woods
|
||||
LDA $7EF437 : AND.w #$00F0 : LSR #4
|
||||
BRA ++
|
||||
+ : CMP.w #$0012 : BNE + ; Ice Palace
|
||||
LDA $7EF438 : AND.w #$00F0 : LSR #4
|
||||
BRA ++
|
||||
+ : CMP.w #$0014 : BNE + ; Tower of Hera
|
||||
LDA $7EF435 : AND.w #$001C : LSR #5
|
||||
BRA ++
|
||||
+ : CMP.w #$0016 : BNE + ; Thieves' Town
|
||||
LDA $7EF437 : AND.w #$000F
|
||||
BRA ++
|
||||
+ : CMP.w #$0018 : BNE + ; Turtle Rock
|
||||
LDA $7EF439 : AND.w #$00F0 : LSR #4
|
||||
BRA ++
|
||||
+ : CMP.w #$001A : BNE + ; Ganon's Tower
|
||||
LDA $7EF436 : AND.w #$00F8 : LSR #5
|
||||
BRA ++
|
||||
+ : ++
|
||||
JSL.l HexToDec
|
||||
|
||||
LDA $7F5006 : AND.w #$00FF : ORA #$2400 : STA $7EC794
|
||||
LDA $7F5007 : AND.w #$00FF : ORA #$2400 : STA $7EC796
|
||||
|
||||
LDA.w #$2830 : STA $7EC798
|
||||
|
||||
LDA $040C
|
||||
CMP.w #$0000 : BNE + ; Sewer Passage
|
||||
+ : CMP.w #$0002 : BNE + ; Hyrule Castle
|
||||
LDA.w #$0008
|
||||
BRL ++
|
||||
+ : CMP.w #$0004 : BNE + ; Eastern Palace
|
||||
LDA.w #$0006
|
||||
BRL ++
|
||||
+ : CMP.w #$0006 : BNE + ; Desert Palace
|
||||
LDA.w #$0006
|
||||
BRL ++
|
||||
+ : CMP.w #$0008 : BNE + ; Agahnim's Tower
|
||||
LDA.w #$0002
|
||||
BRL ++
|
||||
+ : CMP.w #$000A : BNE + ; Swamp Palace
|
||||
LDA.w #$000A
|
||||
BRL ++
|
||||
+ : CMP.w #$000C : BNE + ; Dark Palace
|
||||
LDA.w #$000E
|
||||
BRA ++
|
||||
+ : CMP.w #$000E : BNE + ; Misery Mire
|
||||
LDA.w #$0008
|
||||
BRA ++
|
||||
+ : CMP.w #$0010 : BNE + ; Skull Woods
|
||||
LDA.w #$0008
|
||||
BRA ++
|
||||
+ : CMP.w #$0012 : BNE + ; Ice Palace
|
||||
LDA.w #$0008
|
||||
BRA ++
|
||||
+ : CMP.w #$0014 : BNE + ; Tower of Hera
|
||||
LDA.w #$0006
|
||||
BRA ++
|
||||
+ : CMP.w #$0016 : BNE + ; Thieves' Town
|
||||
LDA.w #$0008
|
||||
BRA ++
|
||||
+ : CMP.w #$0018 : BNE + ; Turtle Rock
|
||||
LDA.w #$000C
|
||||
BRA ++
|
||||
+ : CMP.w #$001A : BNE + ; Ganon's Tower
|
||||
LDA.w #$001B
|
||||
BRA ++
|
||||
+ : ++
|
||||
JSL.l HexToDec
|
||||
|
||||
LDA $7F5006 : AND.w #$00FF : ORA #$2400 : STA $7EC79A
|
||||
LDA $7F5007 : AND.w #$00FF : ORA #$2400 : STA $7EC79C
|
||||
|
||||
.done
|
||||
PLX
|
||||
RTL
|
||||
|
||||
.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
|
||||
dw $0080, $0040, $0020, $0010, $0008, $0004
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF434 - hhhhdddd - item locations checked
|
||||
; h - hyrule castle
|
||||
; d - palace of darkness
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF435 - dddhhhaa - item locations checked
|
||||
; d - desert palace
|
||||
; h - tower of hera
|
||||
; a - agahnim's tower
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF436 - gggggeee - item locations checked
|
||||
; g - ganon's tower
|
||||
; e - eastern palace
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF437 - sssstttt - item locations checked
|
||||
; s - skull woods
|
||||
; t - thieves town
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF438 - iiiimmmm - item locations checked
|
||||
; i - ice palace
|
||||
; m - misery mire
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF439 - ttttssss - item locations checked
|
||||
; t - turtle rock
|
||||
; s - swamp palace
|
||||
;--------------------------------------------------------------------------------
|
||||
138
contrib.asm
Normal file
138
contrib.asm
Normal file
@@ -0,0 +1,138 @@
|
||||
;================================================================
|
||||
; Contributor: Myramong
|
||||
;================================================================
|
||||
Sprite_ShowMessageFromPlayerContact_Edit:
|
||||
{
|
||||
STZ $1CE8
|
||||
JSL.l Sprite_CheckDamageToPlayerSameLayerLong : BCC .dont_show
|
||||
|
||||
LDA $4D : CMP.b #$02 : BEQ .dont_show
|
||||
|
||||
JSL.l Sprite_DirectionToFacePlayer : TYA : EOR.b #$03
|
||||
SEC
|
||||
RTL
|
||||
.dont_show
|
||||
LDA $0DE0, X
|
||||
CLC
|
||||
RTL
|
||||
}
|
||||
;================================================================
|
||||
Sprite_ShowSolicitedMessageIfPlayerFacing_Edit:
|
||||
{
|
||||
JSL.l Sprite_CheckDamageToPlayerSameLayerLong : BCC .alpha
|
||||
JSL.l Sprite_CheckIfPlayerPreoccupied : BCS .alpha
|
||||
LDA $F6 : BPL .alpha
|
||||
LDA $0F10, X : BNE .alpha
|
||||
|
||||
LDA $4D : CMP.b #$02 : BEQ .alpha
|
||||
|
||||
STZ $1CE8 ; set text choice to 1st option (usually yes/confirm/etc)
|
||||
JSL.l Sprite_DirectionToFacePlayer : PHX : TYX
|
||||
|
||||
; Make sure that the sprite is facing towards the player, otherwise
|
||||
; talking can't happen. (What sprites actually use this???)
|
||||
LDA $05E1A3, X : PLX : CMP $2F : BNE .not_facing_each_other
|
||||
PHY
|
||||
LDA.b #$40 : STA $0F10, X
|
||||
PLA : EOR.b #$03
|
||||
SEC
|
||||
RTL
|
||||
.not_facing_each_other
|
||||
.alpha
|
||||
LDA $0DE0, X
|
||||
CLC
|
||||
RTL
|
||||
}
|
||||
;================================================================
|
||||
OldMountainMan_TransitionFromTagalong_Edit:
|
||||
{
|
||||
PHA
|
||||
|
||||
LDA.b #$AD : JSL Sprite_SpawnDynamically
|
||||
|
||||
PLA : PHX : TAX
|
||||
|
||||
LDA $1A64, X : AND.b #$03 : STA $0EB0, Y
|
||||
STA $0DE0, Y
|
||||
|
||||
LDA $1A00, X : CLC : ADC.b #$02 : STA $0D00, Y
|
||||
LDA $1A14, X : ADC.b #$00 : STA $0D20, Y
|
||||
|
||||
LDA $1A28, X : CLC : ADC.b #$02 : STA $0D10, Y
|
||||
LDA $1A3C, X : ADC.b #$00 : STA $0D30, Y
|
||||
|
||||
LDA $EE : STA $0F20, Y
|
||||
|
||||
LDA.b #$01 : STA $0BA0, Y
|
||||
STA $0E80, Y
|
||||
|
||||
LDA.b #$01 : STA $02E4 ; OldMountainMan_FreezePlayer
|
||||
STA $037B ; ^
|
||||
|
||||
PLX
|
||||
|
||||
LDA.b #$00 : STA $7EF3CC
|
||||
|
||||
STZ $5E
|
||||
|
||||
JML $09A6B6 ; <- 4A6B6 tagalong.asm:1194 (SEP #$30 : RTS)
|
||||
}
|
||||
;================================================================
|
||||
Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
||||
{
|
||||
STA $1CF0
|
||||
STY $1CF1
|
||||
|
||||
JSL Sprite_CheckDamageToPlayerSameLayerLong : BCC .alpha
|
||||
JSL Sprite_CheckIfPlayerPreoccupied : BCS .alpha
|
||||
|
||||
LDA $F6 : BPL .alpha
|
||||
LDA $0F10, X : BNE .alpha
|
||||
LDA $4D : CMP.b #$02 : BEQ .alpha
|
||||
|
||||
JSL Sprite_DirectionToFacePlayer : PHX : TYX
|
||||
|
||||
; Make sure that the sprite is facing towards the player, otherwise
|
||||
; talking can't happen. (What sprites actually use this???)
|
||||
LDA $05E1A3, X : PLX : CMP $2F : BNE .not_facing_each_other
|
||||
|
||||
PHY
|
||||
|
||||
LDA $1CF0
|
||||
LDY $1CF1
|
||||
|
||||
; Check what room we're in so we know which npc we're talking to
|
||||
LDA.b $A0 : CMP #$03 : BEQ .AlcoholicDialog
|
||||
CMP #$05 : BEQ .SahasrahlaDialogs
|
||||
CMP #$1C : BEQ .BombShopGuyDialog
|
||||
BRA .SayNothing
|
||||
|
||||
.AlcoholicDialog
|
||||
JSL DialogAlcoholic : BRA .SayNothing
|
||||
|
||||
.SahasrahlaDialogs
|
||||
JSL DialogSahasrahla : BRA .SayNothing
|
||||
|
||||
.BombShopGuyDialog
|
||||
JSL DialogBombShopGuy
|
||||
|
||||
.SayNothing
|
||||
|
||||
LDA.b #$40 : STA $0F10, X
|
||||
|
||||
PLA : EOR.b #$03
|
||||
|
||||
SEC
|
||||
|
||||
RTL
|
||||
|
||||
.not_facing_each_other
|
||||
.alpha
|
||||
|
||||
LDA $0DE0, X
|
||||
|
||||
CLC
|
||||
|
||||
RTL
|
||||
}
|
||||
;================================================================
|
||||
284
crypto.asm
Normal file
284
crypto.asm
Normal file
@@ -0,0 +1,284 @@
|
||||
; $7F50D0 - $7F50FF - Block Cypher Parameters
|
||||
; $7F5100 - $7F51FF - Block Cypher Buffer
|
||||
!v = "$7F5100"
|
||||
!n = "$04"
|
||||
!MXResult = "$06"
|
||||
!dpScratch = "$08"
|
||||
!keyBase = "$7F50D0"
|
||||
|
||||
|
||||
!y = "$7F50E0"
|
||||
!z = "$7F50E4"
|
||||
!sum = "$7F50E8"
|
||||
|
||||
!p = "$7F50EC"
|
||||
!rounds = "$05"
|
||||
!e = "$7F50F0"
|
||||
|
||||
!upperScratch = "$7F50F2"
|
||||
|
||||
CryptoDelta:
|
||||
dl #$9e3779b9
|
||||
|
||||
macro LSR32(value,k)
|
||||
LDX.w <k>
|
||||
|
||||
?loop:
|
||||
LDA <value>+2
|
||||
LSR : STA <value>+2 ; do top part
|
||||
PHP ; push carry
|
||||
LDA <value>
|
||||
LSR ; do bottom part
|
||||
PLP ; pull carry
|
||||
BCC ?nc
|
||||
ORA #$80 ; pull in carry
|
||||
?nc:
|
||||
STA <value>
|
||||
|
||||
DEX
|
||||
CPX.w #$0000 : BNE ?loop
|
||||
endmacro
|
||||
|
||||
macro ASL32(value,k)
|
||||
LDX.w <k>
|
||||
|
||||
?loop:
|
||||
LDA <value>
|
||||
LSR : STA <value> ; do bottom part
|
||||
PHP ; push carry
|
||||
LDA <value>+2
|
||||
LSR
|
||||
PLP ; pull carry
|
||||
ADC.w #$0000
|
||||
STA <value>+2 ; do top part
|
||||
|
||||
DEX
|
||||
CPX.w #$0000 : BNE ?loop
|
||||
endmacro
|
||||
|
||||
CryptoMX:
|
||||
PHX
|
||||
LDA !z : STA !dpScratch
|
||||
LDA !z+2 : STA !dpScratch+2
|
||||
%LSR32(!dpScratch,#$05)
|
||||
|
||||
LDA !y : STA !dpScratch+4
|
||||
LDA !y+2 : STA !dpScratch+6
|
||||
%ASL32(!dpScratch+4,#$02)
|
||||
|
||||
LDA !dpScratch : EOR !dpScratch+4 : STA !upperScratch
|
||||
LDA !dpScratch+2 : EOR !dpScratch+6 : STA !upperScratch+2
|
||||
|
||||
;================================
|
||||
|
||||
LDA !z : STA !dpScratch
|
||||
LDA !z+2 : STA !dpScratch+2
|
||||
%ASL32(!dpScratch,#$04)
|
||||
|
||||
LDA !y : STA !dpScratch+4
|
||||
LDA !y+2 : STA !dpScratch+6
|
||||
%LSR32(!dpScratch,#$03)
|
||||
|
||||
LDA !dpScratch : EOR !dpScratch+4 : STA !upperScratch+4
|
||||
LDA !dpScratch+2 : EOR !dpScratch+6 : STA !upperScratch+6
|
||||
|
||||
;================================
|
||||
|
||||
LDA !upperScratch : !ADD !upperScratch+4 : STA !upperScratch
|
||||
LDA !upperScratch+2 : ADC !upperScratch+6 : STA !upperScratch+2
|
||||
|
||||
;================================
|
||||
|
||||
LDA !sum : EOR !y : STA !dpScratch
|
||||
LDA !sum+2 : EOR !y+2 : STA !dpScratch+2
|
||||
|
||||
;================================
|
||||
|
||||
LDA !p : AND.w #$0003 : EOR !e : ASL #2 : TAX ; put (p&3)^e into X
|
||||
LDA !keyBase, X : EOR !z : STA !upperScratch+4
|
||||
LDA !keyBase+2, X : EOR !z+2 : STA !upperScratch+6
|
||||
|
||||
;================================
|
||||
|
||||
LDA !upperScratch : EOR !upperScratch+4 : STA !MXResult
|
||||
LDA !upperScratch+2 : EOR !upperScratch+6 : STA !MXResult+2
|
||||
PLX
|
||||
RTS
|
||||
|
||||
!DIVIDEND_LOW = $4204
|
||||
!DIVIDEND_HIGH = $4205
|
||||
!DIVISOR = $4206
|
||||
!QUOTIENT_LOW = $4214
|
||||
!QUOTIENT_HIGH = $4215
|
||||
|
||||
XXTEA_Decode:
|
||||
PHP
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
|
||||
; rounds = 6 + 52/n;
|
||||
LDA.b #52 : STA !DIVIDEND_LOW ; decimal 52
|
||||
STZ !DIVIDEND_HIGH
|
||||
LDA !n : STA !DIVISOR
|
||||
; NOP #8 ; do something useful here?
|
||||
LDA.b #$06
|
||||
NOP #6
|
||||
!ADD !QUOTIENT_LOW
|
||||
STA !rounds
|
||||
|
||||
; sum = rounds*DELTA;
|
||||
LDA CryptoDelta : STA !dpScratch
|
||||
LDA CryptoDelta+1 : STA !dpScratch+1
|
||||
LDA CryptoDelta+2 : STA !dpScratch+2
|
||||
LDA CryptoDelta+3 : STA !dpScratch+3
|
||||
JSR .multiply
|
||||
LDA !dpScratch
|
||||
STA !sum
|
||||
|
||||
; y = v[0];
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !v : STA !y
|
||||
LDA !v+2 : STA !y+2
|
||||
---
|
||||
LDA !sum : LSR #2 : AND #$03 : STA !e ; e = (sum >> 2) & 3;
|
||||
|
||||
LDA !n : !SUB #$01 : STA !p ; for (p=n-1; p>0; p--) {
|
||||
--
|
||||
; z = v[p-1];
|
||||
DEC : ASL #2 : TAX
|
||||
LDA !v, X : STA !z
|
||||
LDA !v+2, X : STA !z+2
|
||||
|
||||
; y = v[p] -= MX;
|
||||
JSR CryptoMX
|
||||
LDA !p : ASL #2 : TAX
|
||||
LDA !v, X : !SUB !MXResult : STA !v, X : STA !y
|
||||
LDA !v+2, X : SBC !MXResult+2 : STA !v+2, X : STA !y+2
|
||||
|
||||
LDA !p : DEC : STA !p : BNE -- ; }
|
||||
|
||||
; z = v[n-1];
|
||||
LDA !n : DEC : ASL #2 : TAX
|
||||
LDA !v, X : STA !z
|
||||
LDA !v+2, X : STA !z+2
|
||||
|
||||
; y = v[0] -= MX;
|
||||
JSR CryptoMX
|
||||
LDA !v : !SUB !MXResult : STA !v : STA !y
|
||||
LDA !v+2 : SBC !MXResult+2 : STA !v+2 : STA !y+2
|
||||
|
||||
; sum -= DELTA;
|
||||
LDA !sum : !SUB CryptoDelta : STA !sum
|
||||
LDA !sum+2 : !SUB CryptoDelta+2 : STA !sum+2
|
||||
|
||||
LDA !rounds : BEQ + : BRL --- : + ; } while (--rounds);
|
||||
PLP
|
||||
RTL
|
||||
|
||||
;void btea(uint32_t *v, int n, uint32_t const key[4]) {
|
||||
; uint32_t y, z, sum;
|
||||
; unsigned p, rounds, e;
|
||||
|
||||
; } else if (n < -1) { /* Decoding Part */
|
||||
; n = -n;
|
||||
; rounds = 6 + 52/n;
|
||||
; sum = rounds*DELTA;
|
||||
; y = v[0];
|
||||
; do {
|
||||
; e = (sum >> 2) & 3;
|
||||
; for (p=n-1; p>0; p--) {
|
||||
; z = v[p-1];
|
||||
; y = v[p] -= MX;
|
||||
; }
|
||||
; z = v[n-1];
|
||||
; y = v[0] -= MX;
|
||||
; sum -= DELTA;
|
||||
; } while (--rounds);
|
||||
; }
|
||||
|
||||
.multiply
|
||||
LDA #$00
|
||||
STA !upperScratch+4 ;Clear upper half of
|
||||
STA !upperScratch+5 ;!upperScratchuct
|
||||
STA !upperScratch+6
|
||||
STA !upperScratch+7
|
||||
LDX #$20 ;Set binary count to 32
|
||||
.shift_r
|
||||
LSR !dpScratch+3 ;Shift multiplyer right
|
||||
ROR !dpScratch+2
|
||||
ROR !dpScratch+1
|
||||
ROR !dpScratch
|
||||
BCC .rotate_r ;Go rotate right if c = 0
|
||||
LDA !upperScratch+4 ;Get upper half of !upperScratchuct
|
||||
!ADD !rounds ; and add multiplicand to it
|
||||
STA !upperScratch+4
|
||||
LDA !upperScratch+5
|
||||
ADC.w #$00
|
||||
STA !upperScratch+5
|
||||
LDA !upperScratch+6
|
||||
ADC.w #$00
|
||||
STA !upperScratch+6
|
||||
LDA !upperScratch+7
|
||||
ADC.w #$00
|
||||
.rotate_r
|
||||
ROR a ;Rotate partial !upperScratchuct
|
||||
STA !upperScratch+7 ; right
|
||||
ROR !upperScratch+6
|
||||
ROR !upperScratch+5
|
||||
ROR !upperScratch+4
|
||||
ROR !upperScratch+3
|
||||
ROR !upperScratch+2
|
||||
ROR !upperScratch+1
|
||||
ROR !upperScratch
|
||||
DEX ;Decrement bit count and
|
||||
BNE .shift_r ; loop until 32 bits are done
|
||||
;LDA MULXP1 ;Add dps and put sum in MULXP2
|
||||
;!ADD MULXP2
|
||||
;STA MULXP2
|
||||
RTS
|
||||
|
||||
;BTEA will encode or decode n words as a single block where n > 1
|
||||
;
|
||||
;v is the n word data vector
|
||||
;k is the 4 word key
|
||||
;n is negative for decoding
|
||||
;if n is zero result is 1 and no coding or decoding takes place, otherwise the result is zero
|
||||
;assumes 32 bit 'long' and same endian coding and decoding
|
||||
;#include <stdint.h>
|
||||
;#define DELTA 0x9e3779b9
|
||||
;#define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (key[(p&3)^e] ^ z)))
|
||||
;#define MX ((((z>>5)^(y<<2)) + ((y>>3)^(z<<4))) ^ ((sum^y) + (key[(p&3)^e] ^ z)))
|
||||
;
|
||||
;void btea(uint32_t *v, int n, uint32_t const key[4]) {
|
||||
; uint32_t y, z, sum;
|
||||
; unsigned p, rounds, e;
|
||||
; if (n > 1) { /* Coding Part */
|
||||
; rounds = 6 + 52/n;
|
||||
; sum = 0;
|
||||
; z = v[n-1];
|
||||
; do {
|
||||
; sum += DELTA;
|
||||
; e = (sum >> 2) & 3;
|
||||
; for (p=0; p<n-1; p++) {
|
||||
; y = v[p+1];
|
||||
; z = v[p] += MX;
|
||||
; }
|
||||
; y = v[0];
|
||||
; z = v[n-1] += MX;
|
||||
; } while (--rounds);
|
||||
; } else if (n < -1) { /* Decoding Part */
|
||||
; n = -n;
|
||||
; rounds = 6 + 52/n;
|
||||
; sum = rounds*DELTA;
|
||||
; y = v[0];
|
||||
; do {
|
||||
; e = (sum >> 2) & 3;
|
||||
; for (p=n-1; p>0; p--) {
|
||||
; z = v[p-1];
|
||||
; y = v[p] -= MX;
|
||||
; }
|
||||
; z = v[n-1];
|
||||
; y = v[0] -= MX;
|
||||
; sum -= DELTA;
|
||||
; } while (--rounds);
|
||||
; }
|
||||
;}
|
||||
63
darkworldspawn.asm
Normal file
63
darkworldspawn.asm
Normal file
@@ -0,0 +1,63 @@
|
||||
;================================================================================
|
||||
; Dark World Spawn Location Fix & Master Sword Grove Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
DarkWorldSaveFix:
|
||||
LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change
|
||||
JSL.l DarkWorldFlagSet
|
||||
JSL.l MasterSwordFollowerClear
|
||||
JSL.l StatSaveCounter
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DarkWorldLoadFix:
|
||||
SEP #$20 ; set 8 bit accumulator
|
||||
JSL.l OnFileLoad
|
||||
REP #$20 ; restore 16 bit accumulator
|
||||
LDA.w #$0007 : STA $7EC00D : STA $7EC013 ; thing we wrote over - sets up some graphics timers
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DarkWorldFlagSet:
|
||||
PHA
|
||||
LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BEQ +
|
||||
LDA $10 : CMP #$12 : BEQ .done ; don't do anything in death mode
|
||||
+
|
||||
LDA.l Bugfix_MirrorlessSQToLW : BEQ +
|
||||
LDA $7EF353 : BEQ .noMirror ; check if we have the mirror
|
||||
+
|
||||
LDA $7EF3C5 : CMP.b #$03 : !BLT .aga1Alive ; check if agahnim 1 is alive
|
||||
BRA .done
|
||||
.noMirror
|
||||
.aga1Alive
|
||||
LDA #$00 : STA $7EF3CA ; set flag to light world
|
||||
;LDA $7EF3CC : CMP #$07 : BNE + : LDA.b #$00 : STA $7EF3CC : + ; clear frog
|
||||
.done
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
SetDeathWorldChecked:
|
||||
PHA
|
||||
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
|
||||
LDA $A0 : CMP.b #$00 : BEQ .done ; skip if we died in ganon's room
|
||||
LDA.b #$00 : STA $7EF3CA : STA $7E0FFF ; set the world to the light world if he's still alive
|
||||
;LDA $7EF3CC : CMP #$07 : BNE .done : LDA.b #$00 : STA $7EF3CC ; clear dwarf tagalong
|
||||
.done
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
MasterSwordFollowerClear:
|
||||
LDA $7EF3CC
|
||||
CMP #$0E : BEQ .clear ; clear master sword follower
|
||||
CMP #$07 : BEQ .clear ; clear frog
|
||||
;CMP #$08 : BEQ .clear ; clear dwarf - consider flute implications
|
||||
RTL
|
||||
.clear
|
||||
LDA.b #$00 : STA $7EF3CC ; clear follower
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
FixAgahnimFollowers:
|
||||
LDA.b #$00 : STA $7EF3CC ; clear follower
|
||||
JSL PrepDungeonExit ; thing we wrote over
|
||||
RTL
|
||||
;================================================================================
|
||||
399
dialog.asm
Normal file
399
dialog.asm
Normal file
@@ -0,0 +1,399 @@
|
||||
;================================================================================
|
||||
; Dialog Pointer Override
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogOverride:
|
||||
LDA $7F5035 : BEQ .skip
|
||||
LDA $7F5700, X ; use alternate buffer
|
||||
RTL
|
||||
.skip
|
||||
LDA $7F1200, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7F5035 - Alternate Text Pointer Flag ; 0=Disable
|
||||
; $7F5036 - Padding Byte (Must be Zero)
|
||||
; $7F5700 - $7F57FF - Dialog Buffer
|
||||
;--------------------------------------------------------------------------------
|
||||
ResetDialogPointer:
|
||||
LDA.b #$00 : STA $7F5035 ; zero out the alternate flag
|
||||
LDA.b #$1C : STA $1CE9 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;macro LoadDialog(index,table)
|
||||
; PHA : PHX : PHY
|
||||
; PHB : PHK : PLB
|
||||
; LDA $00 : PHA
|
||||
; LDA $01 : PHA
|
||||
; LDA $02 : PHA
|
||||
; LDA.b #$01 : STA $7F5035 ; set flag
|
||||
;
|
||||
; LDA <index> : ASL : !ADD.l <index> : TAX ; get quote offset *3, move to X
|
||||
; LDA <table>, X : STA $00 ; write pointer to direct page
|
||||
; LDA <table>+1, X : STA $01
|
||||
; LDA <table>+2, X : STA $02
|
||||
;
|
||||
; LDX.b #$00 : LDY.b #$00
|
||||
; -
|
||||
; LDA [$00], Y ; load the next character from the pointer
|
||||
; STA $7F5700, X ; write to the buffer
|
||||
; INX : INY
|
||||
; CMP.b #$7F : BNE -
|
||||
; PLA : STA $02
|
||||
; PLA : STA $01
|
||||
; PLA : STA $00
|
||||
; PLB
|
||||
; PLY : PLX : PLA
|
||||
;endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
macro LoadDialogAddress(address)
|
||||
PHP
|
||||
PHA : PHX : PHY
|
||||
PHB : PHK : PLB
|
||||
SEP #$30 ; set 8-bit accumulator and index registers
|
||||
LDA $00 : PHA
|
||||
LDA $01 : PHA
|
||||
LDA $02 : PHA
|
||||
LDA.b #$01 : STA $7F5035 ; set flag
|
||||
|
||||
LDA.b #<address> : STA $00 ; write pointer to direct page
|
||||
LDA.b #<address>>>8 : STA $01
|
||||
LDA.b #<address>>>16 : STA $02
|
||||
|
||||
LDX.b #$00 : LDY.b #$00
|
||||
-
|
||||
LDA [$00], Y ; load the next character from the pointer
|
||||
STA $7F5700, X ; write to the buffer
|
||||
INX : INY
|
||||
CMP.b #$7F : BNE -
|
||||
PLA : STA $02
|
||||
PLA : STA $01
|
||||
PLA : STA $00
|
||||
PLB
|
||||
PLY : PLX : PLA
|
||||
PLP
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogBlind:
|
||||
%LoadDialogAddress(BlindText)
|
||||
JSL.l Sprite_ShowMessageMinimal
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogFatFairy:
|
||||
%LoadDialogAddress(FatFairyText)
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogTriforce:
|
||||
%LoadDialogAddress(TriforceText)
|
||||
JSL.l Messaging_Text
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogGanon1:
|
||||
%LoadDialogAddress(GanonText1)
|
||||
JSL.l Sprite_ShowMessageMinimal
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogGanon2:
|
||||
%LoadDialogAddress(GanonText2)
|
||||
JSL.l Sprite_ShowMessageMinimal
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogPedestal:
|
||||
PHA
|
||||
LDA $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
||||
-
|
||||
PLA : JSL Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||
RTL
|
||||
+
|
||||
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
||||
%LoadDialogAddress(MSPedestalText)
|
||||
PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogUncle:
|
||||
;%LoadDialog(UncleQuote,DialogUncleData)
|
||||
%LoadDialogAddress(UncleText)
|
||||
JSL Sprite_ShowMessageUnconditional
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogSahasrahla:
|
||||
LDA.l $7EF374 : AND #$04 : BEQ + ;Check if player has green pendant
|
||||
%LoadDialogAddress(SahasrahlaAfterItemText)
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
RTL
|
||||
+
|
||||
%LoadDialogAddress(SahasrahlaNoPendantText)
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogAlcoholic:
|
||||
%LoadDialogAddress(AlcoholicText)
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogBombShopGuy:
|
||||
LDA.l $7EF37A : AND #$05 : CMP #$05 : BEQ + ;Check if player has crystals 5 & 6
|
||||
%LoadDialogAddress(BombShopGuyNoCrystalsText)
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
RTL
|
||||
+
|
||||
%LoadDialogAddress(BombShopGuyText)
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; A0 - A9 - 0 - 9
|
||||
; AA - C3 - A - Z
|
||||
; C6 - ?
|
||||
; C7 - !
|
||||
; C8 - ,
|
||||
; C9 - - Hyphen
|
||||
; CD - Japanese period
|
||||
; CE - ~
|
||||
; D8 - ` apostraphe
|
||||
;;--------------------------------------------------------------------------------
|
||||
;DialogUncleData:
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .pointers
|
||||
; dl #DialogUncleData_weetabix
|
||||
; dl #DialogUncleData_bootlessUntilBoots
|
||||
; dl #DialogUncleData_onlyOneBed
|
||||
; dl #DialogUncleData_onlyTextBox
|
||||
; dl #DialogUncleData_mothTutorial
|
||||
; dl #DialogUncleData_seedWorst
|
||||
; dl #DialogUncleData_chasingTail
|
||||
; dl #DialogUncleData_doneBefore
|
||||
; dl #DialogUncleData_capeCanPass
|
||||
; dl #DialogUncleData_bootsAtRace
|
||||
; dl #DialogUncleData_kanzeonSeed
|
||||
; dl #DialogUncleData_notRealUncle
|
||||
; dl #DialogUncleData_haveAVeryBadTime
|
||||
; dl #DialogUncleData_todayBadLuck
|
||||
; dl #DialogUncleData_leavingGoodbye
|
||||
; dl #DialogUncleData_iGotThis
|
||||
; dl #DialogUncleData_raceToCastle
|
||||
; dl #DialogUncleData_69BlazeIt
|
||||
; dl #DialogUncleData_hi
|
||||
; dl #DialogUncleData_gettingSmokes
|
||||
; dl #DialogUncleData_dangerousSeeYa
|
||||
; dl #DialogUncleData_badEnoughDude
|
||||
; dl #DialogUncleData_iAmError
|
||||
; dl #DialogUncleData_sub2Guaranteed
|
||||
; dl #DialogUncleData_chestSecretEverybody
|
||||
; dl #DialogUncleData_findWindFish
|
||||
; dl #DialogUncleData_shortcutToGanon
|
||||
; dl #DialogUncleData_moonCrashing
|
||||
; dl #DialogUncleData_fightVoldemort
|
||||
; dl #DialogUncleData_redMailForCowards
|
||||
; dl #DialogUncleData_heyListen
|
||||
; dl #DialogUncleData_excuseMePrincess
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .weetabix
|
||||
; ; We’re out of / Weetabix. To / the store!
|
||||
; db $00, $c0, $00, $ae, $00, $d8, $00, $bb, $00, $ae, $00, $ff, $00, $b8, $00, $be, $00, $bd, $00, $ff, $00, $b8, $00, $af
|
||||
; db $75, $00, $c0, $00, $ae, $00, $ae, $00, $bd, $00, $aa, $00, $ab, $00, $b2, $00, $c1, $00, $cD, $00, $ff, $00, $bd, $00, $b8
|
||||
; db $76, $00, $bd, $00, $b1, $00, $ae, $00, $ff, $00, $bc, $00, $bd, $00, $b8, $00, $bb, $00, $ae, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .bootlessUntilBoots
|
||||
; ; This seed is / bootless / until boots.
|
||||
; db $00, $bd, $00, $b1, $00, $b2, $00, $bc, $00, $ff, $00, $bc, $00, $ae, $00, $ae, $00, $ad, $00, $ff, $00, $b2, $00, $bc
|
||||
; db $75, $00, $ab, $00, $b8, $00, $b8, $00, $bd, $00, $b5, $00, $ae, $00, $bc, $00, $bc
|
||||
; db $76, $00, $be, $00, $b7, $00, $bd, $00, $b2, $00, $b5, $00, $ff, $00, $ab, $00, $b8, $00, $b8, $00, $bd, $00, $bc, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .onlyOneBed
|
||||
; ; Why do we only / have one bed?
|
||||
; db $00, $c0, $00, $b1, $00, $c2, $00, $ff, $00, $ad, $00, $b8, $00, $ff, $00, $c0, $00, $ae, $00, $ff, $00, $b8, $00, $b7, $00, $b5, $00, $c2
|
||||
; db $75, $00, $b1, $00, $aa, $00, $bf, $00, $ae, $00, $ff, $00, $b8, $00, $b7, $00, $ae, $00, $ff, $00, $ab, $00, $ae, $00, $ad, $00, $c6
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .onlyTextBox
|
||||
; ; This is the / only textbox.
|
||||
; db $00, $bd, $00, $b1, $00, $b2, $00, $bc, $00, $ff, $00, $b2, $00, $bc, $00, $ff, $00, $bd, $00, $b1, $00, $ae
|
||||
; db $75, $00, $b8, $00, $b7, $00, $b5, $00, $c2, $00, $ff, $00, $bd, $00, $ae, $00, $c1, $00, $bd, $00, $ab, $00, $b8, $00, $c1, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .mothTutorial
|
||||
; ; I'm going to / go watch the / Moth tutorial.
|
||||
; db $00, $b2, $00, $d8, $00, $b6, $00, $ff, $00, $b0, $00, $b8, $00, $b2, $00, $b7, $00, $b0, $00, $ff, $00, $bd, $00, $b8
|
||||
; db $75, $00, $b0, $00, $b8, $00, $ff, $00, $c0, $00, $aa, $00, $bd, $00, $ac, $00, $b1, $00, $ff, $00, $bd, $00, $b1, $00, $ae
|
||||
; db $76, $00, $b6, $00, $b8, $00, $bd, $00, $b1, $00, $ff, $00, $bd, $00, $be, $00, $bd, $00, $b8, $00, $bb, $00, $b2, $00, $aa, $00, $b5, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .seedWorst
|
||||
; ; This seed is / the worst.
|
||||
; db $00, $bd, $00, $b1, $00, $b2, $00, $bc, $00, $ff, $00, $bc, $00, $ae, $00, $ae, $00, $ad, $00, $ff, $00, $b2, $00, $bc
|
||||
; db $75, $00, $bd, $00, $b1, $00, $ae, $00, $ff, $00, $c0, $00, $b8, $00, $bb, $00, $bc, $00, $bd, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .chasingTail
|
||||
; ; Chasing tail. / Fly ladies. / Do not follow.
|
||||
; db $00, $ac, $00, $b1, $00, $aa, $00, $bc, $00, $b2, $00, $b7, $00, $b0, $00, $ff, $00, $bd, $00, $aa, $00, $b2, $00, $b5, $00, $cD
|
||||
; db $75, $00, $af, $00, $b5, $00, $c2, $00, $ff, $00, $b5, $00, $aa, $00, $ad, $00, $b2, $00, $ae, $00, $bc, $00, $cD
|
||||
; db $76, $00, $ad, $00, $b8, $00, $ff, $00, $b7, $00, $b8, $00, $bd, $00, $ff, $00, $af, $00, $b8, $00, $b5, $00, $b5, $00, $b8, $00, $c0, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .doneBefore
|
||||
; ; I feel like / I’ve done this / before…
|
||||
; db $00, $b2, $00, $ff, $00, $af, $00, $ae, $00, $ae, $00, $b5, $00, $ff, $00, $b5, $00, $b2, $00, $b4, $00, $ae
|
||||
; db $75, $00, $b2, $00, $d8, $00, $bf, $00, $ae, $00, $ff, $00, $ad, $00, $b8, $00, $b7, $00, $ae, $00, $ff, $00, $bd, $00, $b1, $00, $b2, $00, $bc
|
||||
; db $76, $00, $ab, $00, $ae, $00, $af, $00, $b8, $00, $bb, $00, $ae, $00, $cD, $00, $cD, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .capeCanPass
|
||||
; ; Magic cape can / pass through / the barrier!
|
||||
; db $00, $b6, $00, $aa, $00, $b0, $00, $b2, $00, $ac, $00, $ff, $00, $ac, $00, $aa, $00, $b9, $00, $ae, $00, $ff, $00, $ac, $00, $aa, $00, $b7
|
||||
; db $75, $00, $b9, $00, $aa, $00, $bc, $00, $bc, $00, $ff, $00, $bd, $00, $b1, $00, $bb, $00, $b8, $00, $be, $00, $b0, $00, $b1
|
||||
; db $76, $00, $bd, $00, $b1, $00, $ae, $00, $ff, $00, $ab, $00, $aa, $00, $bb, $00, $bb, $00, $b2, $00, $ae, $00, $bb, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .bootsAtRace
|
||||
; ; Boots at race? / Seed confirmed / impossible.
|
||||
; db $00, $ab, $00, $b8, $00, $b8, $00, $bd, $00, $bc, $00, $ff, $00, $aa, $00, $bd, $00, $ff, $00, $bb, $00, $aa, $00, $ac, $00, $ae, $00, $c6
|
||||
; db $75, $00, $bc, $00, $ae, $00, $ae, $00, $ad, $00, $ff, $00, $ac, $00, $b8, $00, $b7, $00, $af, $00, $b2, $00, $bb, $00, $b6, $00, $ae, $00, $ad
|
||||
; db $76, $00, $b2, $00, $b6, $00, $b9, $00, $b8, $00, $bc, $00, $bc, $00, $b2, $00, $ab, $00, $b5, $00, $ae, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .kanzeonSeed
|
||||
; ; If this is a / Kanzeon seed, / I'm quitting.
|
||||
; db $00, $b2, $00, $af, $00, $ff, $00, $bd, $00, $b1, $00, $b2, $00, $bc, $00, $ff, $00, $b2, $00, $bc, $00, $ff, $00, $aa
|
||||
; db $75, $00, $b4, $00, $aa, $00, $b7, $00, $c3, $00, $ae, $00, $b8, $00, $b7, $00, $ff, $00, $bc, $00, $ae, $00, $ae, $00, $ad, $00, $c8
|
||||
; db $76, $00, $b2, $00, $d8, $00, $b6, $00, $ff, $00, $ba, $00, $be, $00, $b2, $00, $bd, $00, $bd, $00, $b2, $00, $b7, $00, $b0, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .notRealUncle
|
||||
; ; I am not your / real uncle.
|
||||
; db $00, $b2, $00, $ff, $00, $aa, $00, $b6, $00, $ff, $00, $b7, $00, $b8, $00, $bd, $00, $ff, $00, $c2, $00, $b8, $00, $be, $00, $bb
|
||||
; db $75, $00, $bb, $00, $ae, $00, $aa, $00, $b5, $00, $ff, $00, $be, $00, $b7, $00, $ac, $00, $b5, $00, $ae, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .haveAVeryBadTime
|
||||
; ; You're going / to have a very / bad time.
|
||||
; db $00, $c2, $00, $b8, $00, $be, $00, $d8, $00, $bb, $00, $ae, $00, $ff, $00, $b0, $00, $b8, $00, $b2, $00, $b7, $00, $b0
|
||||
; db $75, $00, $bd, $00, $b8, $00, $ff, $00, $b1, $00, $aa, $00, $bf, $00, $ae, $00, $ff, $00, $aa, $00, $ff, $00, $bf, $00, $ae, $00, $bb, $00, $c2
|
||||
; db $76, $00, $ab, $00, $aa, $00, $ad, $00, $ff, $00, $bd, $00, $b2, $00, $b6, $00, $ae, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .todayBadLuck
|
||||
; ; Today you / will have / bad luck.
|
||||
; db $00, $bd, $00, $b8, $00, $ad, $00, $aa, $00, $c2, $00, $ff, $00, $c2, $00, $b8, $00, $be, $00, $ff, $00, $c0, $00, $b2, $00, $b5, $00, $b5
|
||||
; db $75, $00, $b1, $00, $aa, $00, $bf, $00, $ae, $00, $ff, $00, $ab, $00, $aa, $00, $ad, $00, $ff, $00, $b5, $00, $be, $00, $ac, $00, $b4, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .leavingGoodbye
|
||||
; ; I am leaving / forever. / Goodbye.
|
||||
; db $00, $b2, $00, $ff, $00, $aa, $00, $b6, $00, $ff, $00, $b5, $00, $ae, $00, $aa, $00, $bf, $00, $b2, $00, $b7, $00, $b0
|
||||
; db $75, $00, $af, $00, $b8, $00, $bb, $00, $ae, $00, $bf, $00, $ae, $00, $bb, $00, $cD
|
||||
; db $76, $00, $b0, $00, $b8, $00, $b8, $00, $ad, $00, $ab, $00, $c2, $00, $ae, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .iGotThis
|
||||
; ; Don’t worry. / I got this / covered.
|
||||
; db $00, $ad, $00, $b8, $00, $b7, $00, $d8, $00, $bd, $00, $ff, $00, $c0, $00, $b8, $00, $bb, $00, $bb, $00, $c2, $00, $cD
|
||||
; db $75, $00, $b2, $00, $ff, $00, $b0, $00, $b8, $00, $bd, $00, $ff, $00, $bd, $00, $b1, $00, $b2, $00, $bc
|
||||
; db $76, $00, $ac, $00, $b8, $00, $bf, $00, $ae, $00, $bb, $00, $ae, $00, $ad, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .raceToCastle
|
||||
; ; Race you to / the castle!
|
||||
; db $00, $bb, $00, $aa, $00, $ac, $00, $ae, $00, $ff, $00, $c2, $00, $b8, $00, $be, $00, $ff, $00, $bd, $00, $b8
|
||||
; db $75, $00, $bd, $00, $b1, $00, $ae, $00, $ff, $00, $ac, $00, $aa, $00, $bc, $00, $bd, $00, $b5, $00, $ae, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .69BlazeIt
|
||||
; ; ~69 Blaze It!~
|
||||
; db $75, $00, $cE, $00, $a6, $00, $a9, $00, $ff, $00, $ab, $00, $b5, $00, $aa, $00, $c3, $00, $ae, $00, $ff, $00, $b2, $00, $bd, $00, $c7, $00, $cE
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .hi
|
||||
; ; hi
|
||||
; db $75, $00, $ff, $00, $ff, $00, $ff, $00, $ff, $00, $ff, $00, $ff, $00, $b1, $00, $b2
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .gettingSmokes
|
||||
; ; I'M JUST GOING / OUT FOR A / PACK OF SMOKES.
|
||||
; db $00, $b2, $00, $d8, $00, $b6, $00, $ff, $00, $b3, $00, $be, $00, $bc, $00, $bd, $00, $ff, $00, $b0, $00, $b8, $00, $b2, $00, $b7, $00, $b0
|
||||
; db $75, $00, $b8, $00, $be, $00, $bd, $00, $ff, $00, $af, $00, $b8, $00, $bb, $00, $ff, $00, $aa
|
||||
; db $76, $00, $b9, $00, $aa, $00, $ac, $00, $b4, $00, $ff, $00, $b8, $00, $af, $00, $ff, $00, $bc, $00, $b6, $00, $b8, $00, $b4, $00, $ae, $00, $bc, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .dangerousSeeYa
|
||||
; ; It's dangerous / to go alone. / See ya!
|
||||
; db $00, $b2, $00, $bd, $00, $d8, $00, $bc, $00, $ff, $00, $ad, $00, $aa, $00, $b7, $00, $b0, $00, $ae, $00, $bb, $00, $b8, $00, $be, $00, $bc
|
||||
; db $75, $00, $bd, $00, $b8, $00, $ff, $00, $b0, $00, $b8, $00, $ff, $00, $aa, $00, $b5, $00, $b8, $00, $b7, $00, $ae, $00, $cD
|
||||
; db $76, $00, $bc, $00, $ae, $00, $ae, $00, $ff, $00, $c2, $00, $aa, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .badEnoughDude
|
||||
; ; ARE YOU A BAD / ENOUGH DUDE TO / RESCUE ZELDA?
|
||||
; db $00, $aa, $00, $bb, $00, $ae, $00, $ff, $00, $c2, $00, $b8, $00, $be, $00, $ff, $00, $aa, $00, $ff, $00, $ab, $00, $aa, $00, $ad
|
||||
; db $75, $00, $ae, $00, $b7, $00, $b8, $00, $be, $00, $b0, $00, $b1, $00, $ff, $00, $ad, $00, $be, $00, $ad, $00, $ae, $00, $ff, $00, $bd, $00, $b8
|
||||
; db $76, $00, $bb, $00, $ae, $00, $bc, $00, $ac, $00, $be, $00, $ae, $00, $ff, $00, $c3, $00, $ae, $00, $b5, $00, $ad, $00, $aa, $00, $c6
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .iAmError
|
||||
; ; I AM ERROR
|
||||
; db $76, $00, $ff, $00, $ff, $00, $ff, $00, $ff, $00, $b2, $00, $ff, $00, $aa, $00, $b6, $00, $ff, $00, $ae, $00, $bb, $00, $bb, $00, $b8, $00, $bb
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .sub2Guaranteed
|
||||
; ; This seed is / sub 2 hours, / guaranteed.
|
||||
; db $00, $bd, $00, $b1, $00, $b2, $00, $bc, $00, $ff, $00, $bc, $00, $ae, $00, $ae, $00, $ad, $00, $ff, $00, $b2, $00, $bc
|
||||
; db $75, $00, $bc, $00, $be, $00, $ab, $00, $ff, $00, $a2, $00, $ff, $00, $b1, $00, $b8, $00, $be, $00, $bb, $00, $bc, $00, $c8
|
||||
; db $76, $00, $b0, $00, $be, $00, $aa, $00, $bb, $00, $aa, $00, $b7, $00, $bd, $00, $ae, $00, $ae, $00, $ad, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .chestSecretEverybody
|
||||
; ; The chest is / a secret to / everybody.
|
||||
; db $00, $bd, $00, $b1, $00, $ae, $00, $ff, $00, $ac, $00, $b1, $00, $ae, $00, $bc, $00, $bd, $00, $ff, $00, $b2, $00, $bc
|
||||
; db $75, $00, $aa, $00, $ff, $00, $bc, $00, $ae, $00, $ac, $00, $bb, $00, $ae, $00, $bd, $00, $ff, $00, $bd, $00, $b8
|
||||
; db $76, $00, $ae, $00, $bf, $00, $ae, $00, $bb, $00, $c2, $00, $ab, $00, $b8, $00, $ad, $00, $c2, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .findWindFish
|
||||
; ; I'm off to / find the / wind fish.
|
||||
; db $00, $b2, $00, $d8, $00, $b6, $00, $ff, $00, $b8, $00, $af, $00, $af, $00, $ff, $00, $bd, $00, $b8
|
||||
; db $75, $00, $af, $00, $b2, $00, $b7, $00, $ad, $00, $ff, $00, $bd, $00, $b1, $00, $ae
|
||||
; db $76, $00, $c0, $00, $b2, $00, $b7, $00, $ad, $00, $ff, $00, $af, $00, $b2, $00, $bc, $00, $b1, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .shortcutToGanon
|
||||
; ; The shortcut / to Ganon / is this way!
|
||||
; db $00, $bd, $00, $b1, $00, $ae, $00, $ff, $00, $bc, $00, $b1, $00, $b8, $00, $bb, $00, $bd, $00, $ac, $00, $be, $00, $bd
|
||||
; db $75, $00, $bd, $00, $b8, $00, $ff, $00, $b0, $00, $aa, $00, $b7, $00, $b8, $00, $b7
|
||||
; db $76, $00, $b2, $00, $bc, $00, $ff, $00, $bd, $00, $b1, $00, $b2, $00, $bc, $00, $ff, $00, $c0, $00, $aa, $00, $c2, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .moonCrashing
|
||||
; ; THE MOON IS / CRASHING! RUN / FOR YOUR LIFE!
|
||||
; db $00, $bd, $00, $b1, $00, $ae, $00, $ff, $00, $b6, $00, $b8, $00, $b8, $00, $b7, $00, $ff, $00, $b2, $00, $bc
|
||||
; db $75, $00, $ac, $00, $bb, $00, $aa, $00, $bc, $00, $b1, $00, $b2, $00, $b7, $00, $b0, $00, $c7, $00, $ff, $00, $bb, $00, $be, $00, $b7
|
||||
; db $76, $00, $af, $00, $b8, $00, $bb, $00, $ff, $00, $c2, $00, $b8, $00, $be, $00, $bb, $00, $ff, $00, $b5, $00, $b2, $00, $af, $00, $ae, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .fightVoldemort
|
||||
; ; Time to fight / he who must / not be named.
|
||||
; db $00, $bd, $00, $b2, $00, $b6, $00, $ae, $00, $ff, $00, $bd, $00, $b8, $00, $ff, $00, $af, $00, $b2, $00, $b0, $00, $b1, $00, $bd
|
||||
; db $75, $00, $b1, $00, $ae, $00, $ff, $00, $c0, $00, $b1, $00, $b8, $00, $ff, $00, $b6, $00, $be, $00, $bc, $00, $bd
|
||||
; db $76, $00, $b7, $00, $b8, $00, $bd, $00, $ff, $00, $ab, $00, $ae, $00, $ff, $00, $b7, $00, $aa, $00, $b6, $00, $ae, $00, $ad, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .redMailForCowards
|
||||
; ; RED MAIL / IS FOR / COWARDS.
|
||||
; db $00, $bb, $00, $ae, $00, $ad, $00, $ff, $00, $b6, $00, $aa, $00, $b2, $00, $b5
|
||||
; db $75, $00, $b2, $00, $bc, $00, $ff, $00, $af, $00, $b8, $00, $bb
|
||||
; db $76, $00, $ac, $00, $b8, $00, $c0, $00, $aa, $00, $bb, $00, $ad, $00, $bc, $00, $cD
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .heyListen
|
||||
; ; HEY! / / LISTEN!
|
||||
; db $00, $b1, $00, $ae, $00, $c2, $00, $c7
|
||||
; db $76, $00, $b5, $00, $b2, $00, $bc, $00, $bd, $00, $ae, $00, $b7, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;--------------------------------------------------------------------------------
|
||||
; .excuseMePrincess
|
||||
; ; Well / excuuuuuse me, / princess!
|
||||
; db $00, $c0, $00, $ae, $00, $b5, $00, $b5
|
||||
; db $75, $00, $ae, $00, $c1, $00, $ac, $00, $be, $00, $be, $00, $be, $00, $be, $00, $be, $00, $bc, $00, $ae, $00, $ff, $00, $b6, $00, $ae, $00, $c8
|
||||
; db $76, $00, $b9, $00, $bb, $00, $b2, $00, $b7, $00, $ac, $00, $ae, $00, $bc, $00, $bc, $00, $c7
|
||||
; db $7f, $7f
|
||||
;;-------------------------------------------------------------------------------- ^32nd
|
||||
9
dungeondrops.asm
Normal file
9
dungeondrops.asm
Normal file
@@ -0,0 +1,9 @@
|
||||
;================================================================================
|
||||
; Dungeon & Boss Drop Fixes
|
||||
;--------------------------------------------------------------------------------
|
||||
DropSafeDungeon:
|
||||
LDA $040C : CMP #$08 : BEQ +
|
||||
LDA $01C6FC, X : JSL Sprite_SpawnFallingItem
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
15
entrances.asm
Normal file
15
entrances.asm
Normal file
@@ -0,0 +1,15 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; LockAgahnimDoors:
|
||||
; Returns: 0=Unlocked - 1=Locked
|
||||
;--------------------------------------------------------------------------------
|
||||
LockAgahnimDoors:
|
||||
LDA $7EF3C5 : AND.w #$000F : CMP.w #$0002 : !BGE + ; if we rescued zelda, skip
|
||||
LDA $22 : CMP.w #1992 : !BLT + ; door too far left, skip
|
||||
CMP.w #2088 : !BGE + ; door too rat right, skip
|
||||
LDA $20 : CMP.w #1720 : !BGE + ; door too low, skip
|
||||
LDA.w #$0001
|
||||
RTL
|
||||
+
|
||||
LDA.w #$0000
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
82
events.asm
Normal file
82
events.asm
Normal file
@@ -0,0 +1,82 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; OnLoadOW
|
||||
;--------------------------------------------------------------------------------
|
||||
OnLoadMap:
|
||||
JSL.l SetLWDWMap
|
||||
LDA $7EF2DB ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnDrawHud:
|
||||
JSL.l Draw4DigitRupees
|
||||
JSL.l DrawChallengeTimer
|
||||
JSL.l DrawGoalIndicator
|
||||
JSL.l DrawDungeonCompassCounts
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnDungeonEntrance:
|
||||
PHA : PHP
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA $040C : CMP #$FF : BEQ + ; don't do this unless it's a real dungeon
|
||||
LDA $7EF3CC ; load follower
|
||||
CMP #$0C : BNE + ; skip if not the purple chest
|
||||
LDA #$00 : STA $7EF3CC
|
||||
+
|
||||
PLP : PLA
|
||||
STA $7EC172 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||
OnFileLoad:
|
||||
LDA !FRESH_FILE_MARKER : BNE +
|
||||
JSL.l OnNewFile
|
||||
LDA.b #$FF : STA !FRESH_FILE_MARKER
|
||||
+
|
||||
JSL.l DarkWorldFlagSet
|
||||
JSL.l MasterSwordFollowerClear
|
||||
JSL.l InitOpenMode
|
||||
LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||
OnNewFile:
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA.l StartingTime : STA $7EF454
|
||||
LDA.l StartingTime+2 : STA $7EF454+2
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnLinkDamaged:
|
||||
;JSL.l FlipperKill
|
||||
JSL.l OHKOTimer
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnLinkDamagedFromPit:
|
||||
JSL.l OHKOTimer
|
||||
LDA.b #$14 : STA $11 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!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
|
||||
;--------------------------------------------------------------------------------
|
||||
PreItemGet:
|
||||
LDA.b #$01 : STA !ITEM_BUSY ; mark item as busy
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
PostItemGet:
|
||||
;LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
PostItemAnimation:
|
||||
LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished
|
||||
STZ $02E9 : LDA $0C5E, X ; thing we wrote over to get here
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
35
externalhooks.asm
Normal file
35
externalhooks.asm
Normal file
@@ -0,0 +1,35 @@
|
||||
org $298000 ; 0x148000
|
||||
Ext_OnFileCreate: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnFileLoad: ;x immediately after load
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnFileSave: ;x immediately before save
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnPlayerDeath: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnMapUse: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnFairyRevive: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnYItemUse: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnIemMenuOpen: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnItemMenuClose: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnItemChange: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnPlayerDamaged: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnPlayerAttack: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnBossDeath: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnDungeonEnter: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnDungeonExit: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnDungeonCompleted: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
Ext_OnZeldaRescued: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
26
fairyfixes.asm
Normal file
26
fairyfixes.asm
Normal file
@@ -0,0 +1,26 @@
|
||||
;================================================================================
|
||||
; Fairy Changes & Fixes
|
||||
;--------------------------------------------------------------------------------
|
||||
RefillHealthPlusMagic:
|
||||
LDA BigFairyHealth : STA $7EF372
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
RefillHealthPlusMagic8bit:
|
||||
LDA BigFairyHealth : STA $7EF372
|
||||
LDA BigFairyMagic : STA $7EF373
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckFullHealth:
|
||||
LDA BigFairyHealth : BEQ +
|
||||
LDA $7EF36D : CMP $7EF36C : BNE .player_hp_not_full_yet
|
||||
+
|
||||
LDA BigFairyMagic : BEQ +
|
||||
LDA $7EF36E : CMP.b #$80 : BNE .player_mp_not_full_yet
|
||||
+
|
||||
LDA.b #$00
|
||||
RTL
|
||||
.player_hp_not_full_yet
|
||||
.player_mp_not_full_yet
|
||||
LDA.b #$01
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
44
flipperkill.asm
Normal file
44
flipperkill.asm
Normal file
@@ -0,0 +1,44 @@
|
||||
;================================================================================
|
||||
; Fake Flippers Softlock Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
FlipperKill:
|
||||
PHP
|
||||
LDA $5D : CMP #$04 : BNE .done ; skip if we're not swimming
|
||||
LDA $7EF356 : BNE .done ; skip if we have the flippers
|
||||
LDA $7F5001 : BEQ .done ; skip if we're not marked in danger for softlock
|
||||
JSL.l KillFairies ; take away fairies
|
||||
LDA.b #$00 : STA $7EF36D ; kill link
|
||||
LDA.b #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
||||
.done
|
||||
PLP
|
||||
LDA $7EF36D ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
KillFairies:
|
||||
LDA $7EF35C : CMP #$06 : BNE +
|
||||
LDA #$02 : STA $7EF35C
|
||||
+ LDA $7EF35D : CMP #$06 : BNE +
|
||||
LDA #$02 : STA $7EF35D
|
||||
+ LDA $7EF35E : CMP #$06 : BNE +
|
||||
LDA #$02 : STA $7EF35E
|
||||
+ LDA $7EF35F : CMP #$06 : BNE +
|
||||
LDA #$02 : STA $7EF35F
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
FlipperReset:
|
||||
JSL $0998E8 ; AddTransitionSplash
|
||||
LDA #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
FlipperFlag:
|
||||
LDA $5D : CMP #$04 : BNE .done ; skip if we're not swimming
|
||||
LDA $7EF356 : BNE .safe ; skip if we have the flippers
|
||||
LDA #$01 : STA $7F5001 ; mark fake flipper softlock as possible
|
||||
BRA .done
|
||||
.safe
|
||||
LDA #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
13
floodgatesoftlock.asm
Normal file
13
floodgatesoftlock.asm
Normal file
@@ -0,0 +1,13 @@
|
||||
;================================================================================
|
||||
; Floodgate Softlock Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
FloodGateAndMasterSwordFollowerReset:
|
||||
JSL.l MasterSwordFollowerClear
|
||||
FloodGateReset:
|
||||
LDA.l Bugfix_SwampWaterLevel : BEQ +
|
||||
LDA $7EF06E : AND.b #$7F : STA $7EF06E ; clear water room 55
|
||||
LDA $7EF06A : AND.b #$7F : STA $7EF06A ; clear water room 53
|
||||
+
|
||||
LDA $7EF051 : AND.b #$FE : STA $7EF051 ; clear water room 40 - thing we wrote over
|
||||
RTL
|
||||
;================================================================================
|
||||
61
flute.asm
Normal file
61
flute.asm
Normal file
@@ -0,0 +1,61 @@
|
||||
;================================================================================
|
||||
; Randomize Flute Dig Item
|
||||
;--------------------------------------------------------------------------------
|
||||
SpawnHauntedGroveItem:
|
||||
LDA $8A : CMP.b #$2A : BEQ + : RTL : + ; Skip if not the haunted grove
|
||||
LDA $1B : BEQ + : RTL : + ; Skip if indoors
|
||||
|
||||
LDA.l HauntedGroveItem
|
||||
JSL.l PrepDynamicTile
|
||||
|
||||
LDA.b #$EB
|
||||
STA $7FFE00
|
||||
JSL Sprite_SpawnDynamically
|
||||
|
||||
LDX.b #$00
|
||||
LDA $2F : CMP.b #$04 : BEQ + : INX : +
|
||||
|
||||
LDA .x_speeds, X : STA $0D50, Y
|
||||
|
||||
LDA.b #$00 : STA $0D40, Y
|
||||
LDA.b #$18 : STA $0F80, Y
|
||||
LDA.b #$FF : STA $0B58, Y
|
||||
LDA.b #$30 : STA $0F10, Y
|
||||
|
||||
LDA $22 : !ADD .x_offsets, X
|
||||
AND.b #$F0 : STA $0D10, Y
|
||||
LDA $23 : ADC.b #$00 : STA $0D30, Y
|
||||
|
||||
LDA $20 : !ADD.b #$16 : AND.b #$F0 : STA $0D00, Y
|
||||
LDA $21 : ADC.b #$00 : STA $0D20, Y
|
||||
|
||||
LDA.b #$00 : STA $0F20, Y
|
||||
TYX
|
||||
|
||||
LDX $8A ; haunted grove (208D0A)
|
||||
LDA $7EF280, X : AND.b #$40 : BNE +
|
||||
LDA.b #$1B : JSL Sound_SetSfx3PanLong
|
||||
+
|
||||
RTL
|
||||
|
||||
;DATA - Flute Spawn Information
|
||||
{
|
||||
|
||||
.x_speeds
|
||||
db $F0
|
||||
db $10
|
||||
|
||||
.x_offsets
|
||||
db $00
|
||||
db $13
|
||||
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
FluteBoy:
|
||||
LDA $10 : CMP.b #$1A : BEQ +
|
||||
LDA.b #$01 : STA $0FDD
|
||||
JMP.l FluteBoy_Abort
|
||||
+
|
||||
LDA $0D80, X : CMP.b #$03 ; thing we wrote over
|
||||
JMP.l FluteBoy_Continue
|
||||
;--------------------------------------------------------------------------------
|
||||
54
framehook.asm
Normal file
54
framehook.asm
Normal file
@@ -0,0 +1,54 @@
|
||||
;================================================================================
|
||||
; Frame Hook
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF42Ew[2] - loop frame counter (low)
|
||||
!LOOP_FRAMES_LOW = "$7EF42E"
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF430w[2] - loop frame counter (high)
|
||||
!LOOP_FRAMES_HIGH = "$7EF430"
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF43Ew[2] - nmi frame counter (low)
|
||||
!NMI_FRAMES_LOW = "$7EF43E"
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF440w[2] - nmi frame counter (high)
|
||||
!NMI_FRAMES_HIGH = "$7EF440"
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF444w[2] - item menu frame counter (low)
|
||||
!ITEM_FRAMES_LOW = "$7EF444"
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF446w[2] - item menu frame counter (high)
|
||||
!ITEM_FRAMES_HIGH = "$7EF446"
|
||||
;--------------------------------------------------------------------------------
|
||||
!LOCK_STATS = "$7EF443"
|
||||
FrameHookAction:
|
||||
JSL $0080B5 ; Module_MainRouting
|
||||
PHA : PHP
|
||||
LDA EnableSRAMTrace : AND.l TournamentSeedInverse : BEQ +
|
||||
LDA $1A : BNE ++ : JSL.l WriteStatusPreview : ++ ; write every 256 frames
|
||||
+
|
||||
|
||||
LDA !LOCK_STATS : BNE ++
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !LOOP_FRAMES_LOW : INC : STA !LOOP_FRAMES_LOW : BNE +
|
||||
LDA !LOOP_FRAMES_HIGH : INC : STA !LOOP_FRAMES_HIGH
|
||||
+
|
||||
LDA $10 : CMP.w #$010E : BNE + ; move this to nmi hook?
|
||||
LDA !ITEM_FRAMES_LOW : INC : STA !ITEM_FRAMES_LOW : BNE +
|
||||
LDA !ITEM_FRAMES_HIGH : INC : STA !ITEM_FRAMES_HIGH
|
||||
+
|
||||
SEP #$20 ; set 8-bit accumulator ?? check this
|
||||
++
|
||||
PLP : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
NMIHookAction:
|
||||
PHA : PHX : PHY : PHD ; thing we wrote over, push stuff
|
||||
|
||||
LDA !LOCK_STATS : AND.w #$00FF : BNE ++
|
||||
LDA !NMI_FRAMES_LOW : INC : STA !NMI_FRAMES_LOW : BNE +
|
||||
LDA !NMI_FRAMES_HIGH : INC : STA !NMI_FRAMES_HIGH
|
||||
+
|
||||
++
|
||||
|
||||
JML.l NMIHookReturn
|
||||
;--------------------------------------------------------------------------------
|
||||
16
ganonfixes.asm
Normal file
16
ganonfixes.asm
Normal file
@@ -0,0 +1,16 @@
|
||||
;================================================================================
|
||||
; Ganon Fixes
|
||||
;================================================================================
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; GanonWarpRNG
|
||||
; out: Accumulator - #$00 or #01 randomly, with no repeated #$01s
|
||||
;--------------------------------------------------------------------------------
|
||||
GanonWarpRNG:
|
||||
JSL GetRandomInt : AND.b #$01 : BEQ .zero
|
||||
LDA !GANON_WARP_CHAIN : EOR #$01 : STA !GANON_WARP_CHAIN
|
||||
RTL
|
||||
.zero
|
||||
STA !GANON_WARP_CHAIN
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
16
glitched.asm
Normal file
16
glitched.asm
Normal file
@@ -0,0 +1,16 @@
|
||||
;================================================================================
|
||||
; Glitched Mode Fixes
|
||||
;================================================================================
|
||||
GetAgahnimType:
|
||||
PHP
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $A0 ; these are all decimal because i got them that way
|
||||
CMP.w #13 : BNE + ; Agahnim 2 room
|
||||
LDA.w #$0006 ; Use Agahnim 2
|
||||
BRA .done
|
||||
+ ; Elsewhere
|
||||
LDA.w #$0001 ; Use Agahnim 1
|
||||
.done
|
||||
PLP
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
27
goalitem.asm
Normal file
27
goalitem.asm
Normal file
@@ -0,0 +1,27 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7F5010 - Scratch Space (Callee Preserved)
|
||||
;--------------------------------------------------------------------------------
|
||||
!GOAL_COUNTER = "$7EF460"
|
||||
DrawGoalIndicator:
|
||||
LDA.l GoalItemRequirement : AND.w #$00FF : BNE + : RTL : + ; Star Meter
|
||||
PHX
|
||||
LDX.w #$0000
|
||||
|
||||
LDA.l GoalItemIcon : STA $7EC72C, X : INX #2 ; draw star icon and move the cursor
|
||||
|
||||
LDA.l !GOAL_COUNTER
|
||||
AND.w #$00FF
|
||||
JSL.l HexToDec
|
||||
LDA $7F5006 : AND.w #$00FF : ORA.w #$2400 : STA $7EC72C, X : INX #2 ; draw 10's digit and move the cursor
|
||||
LDA $7F5007 : AND.w #$00FF : ORA.w #$2400 : STA $7EC72C, X : INX #2 ; draw 1's and move the cursor
|
||||
|
||||
LDA.w #$2830 : STA $7EC72C, X : INX #2 ; draw slash and move the cursor
|
||||
|
||||
LDA.l GoalItemRequirement
|
||||
AND.w #$00FF
|
||||
JSL.l HexToDec
|
||||
LDA $7F5006 : AND.w #$00FF : ORA.w #$2400 : STA $7EC72C, X : INX #2 ; draw 10's digit and move the cursor
|
||||
LDA $7F5007 : AND.w #$00FF : ORA.w #$2400 : STA $7EC72C, X : INX #2 ; draw 1's and move the cursor
|
||||
PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
15
halfmagicbat.asm
Normal file
15
halfmagicbat.asm
Normal file
@@ -0,0 +1,15 @@
|
||||
;================================================================================
|
||||
; Randomize Half Magic Bat
|
||||
;--------------------------------------------------------------------------------
|
||||
GetMagicBatItem:
|
||||
JSL.l ItemSet_MagicBat
|
||||
LDA MagicBatItem : CMP.b #$FF : BEQ .normalLogic
|
||||
TAY
|
||||
STZ $02E9 ; 0 = Receiving item from an NPC or message
|
||||
JSL.l Link_ReceiveItem
|
||||
RTL
|
||||
.normalLogic
|
||||
LDA HalfMagic
|
||||
STA $7EF37B
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
17
hardmode.asm
Normal file
17
hardmode.asm
Normal file
@@ -0,0 +1,17 @@
|
||||
;================================================================================
|
||||
; Hard & Masochist Mode
|
||||
;================================================================================
|
||||
CalculateSpikeFloorDamage:
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $A0 ; these are all decimal because i got them that way
|
||||
CMP.w #279
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
BNE +
|
||||
LDA.l ByrnaCaveSpikeDamage
|
||||
STA $0373
|
||||
RTL
|
||||
+
|
||||
LDA $D055, Y
|
||||
STA $0373
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
329
hashalphabet.asm
Normal file
329
hashalphabet.asm
Normal file
@@ -0,0 +1,329 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; PrepHashAlphabet:
|
||||
;--------------------------------------------------------------------------------
|
||||
PrepHashAlphabet:
|
||||
LDA $11 : CMP.b #$03 : BNE +
|
||||
LDA.b #$06 : STA $14 ; thing we wrote over
|
||||
RTL
|
||||
+
|
||||
|
||||
LDA $00 : PHA
|
||||
LDA $01 : PHA
|
||||
LDA $02 : PHA
|
||||
LDA $03 : PHA
|
||||
LDA $04 : PHA
|
||||
LDA $05 : PHA
|
||||
LDA $06 : PHA
|
||||
LDA $07 : PHA
|
||||
|
||||
JSL.l NameHash
|
||||
JSL.l LoadAlphabetTiles
|
||||
JSL.l LoadAlphabetTilemap
|
||||
|
||||
PLA : STA $07
|
||||
PLA : STA $06
|
||||
PLA : STA $05
|
||||
PLA : STA $04
|
||||
PLA : STA $03
|
||||
PLA : STA $02
|
||||
PLA : STA $01
|
||||
PLA : STA $00
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; GetAlphabetPalette:
|
||||
; In: X = Alphabet Index
|
||||
; Out: A = Palette
|
||||
;--------------------------------------------------------------------------------
|
||||
GetAlphabetPalette:
|
||||
LDA.l .table, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
.table
|
||||
db $00, $0C, $04, $0C, $04, $00, $0C, $18
|
||||
db $08, $08, $08, $04, $00, $00, $0C, $08
|
||||
db $18, $0C, $18, $04, $04, $0C, $14, $00
|
||||
db $0C, $04, $08, $18, $04, $08, $04, $08
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; GetAlphabetTileAddr:
|
||||
; Notes:
|
||||
; Assumes 16-bit accumulator
|
||||
;--------------------------------------------------------------------------------
|
||||
GetAlphabetTileAddr:
|
||||
ASL #6
|
||||
!ADD.w #$B800 ; $31:B800
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
!ALPHA_TILE_WIDTH = "#$40"
|
||||
!ALPHA_VRAM_DEST_BASE = "#$FA00"
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; LoadAlphabetTiles
|
||||
; In:
|
||||
; $00 - Tile 0
|
||||
; $01 - Tile 1
|
||||
; $02 - Tile 2
|
||||
; $03 - Tile 3
|
||||
; $04 - Tile 4
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadAlphabetTiles:
|
||||
PHA : PHX
|
||||
LDA $4300 : PHA ; preserve DMA parameters
|
||||
LDA $4301 : PHA ; preserve DMA parameters
|
||||
LDA $4302 : PHA ; preserve DMA parameters
|
||||
LDA $4303 : PHA ; preserve DMA parameters
|
||||
LDA $4304 : PHA ; preserve DMA parameters
|
||||
LDA $4305 : PHA ; preserve DMA parameters
|
||||
LDA $4306 : PHA ; preserve DMA parameters
|
||||
;--------------------------------------------------------------------------------
|
||||
LDA.b #$80 : STA $2115 ; write read increment on $2119
|
||||
LDA.b #$01 : STA $4300 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
||||
LDA.b #$18 : STA $4301 ; set bus B destination to VRAM register
|
||||
|
||||
LDA.b !ALPHA_VRAM_DEST_BASE>>1 : STA $2116 ; write VRAM destination address
|
||||
LDA.b !ALPHA_VRAM_DEST_BASE>>9 : STA $2117 ; write VRAM destination address
|
||||
|
||||
LDA.b #GFX_Hash_Alphabet>>16 : STA $4304 ; set bus A source bank
|
||||
|
||||
LDA $2100 : PHA : LDA.b #$80 : STA $2100 ; save screen state & turn screen off
|
||||
LDX.b #$00 : -
|
||||
|
||||
LDA $00, X
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
AND.w #$001F ; mask to alphabet of 32
|
||||
JSL.l GetAlphabetTileAddr : STA $4302 ; set bus A source address to SRAM
|
||||
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
|
||||
LDA.b !ALPHA_TILE_WIDTH : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
|
||||
INX
|
||||
CPX.b #$05 : !BLT -
|
||||
PLA : STA $2100 ; put screen back however it was before
|
||||
;--------------------------------------------------------------------------------
|
||||
PLA : STA $4306 ; restore DMA parameters
|
||||
PLA : STA $4305 ; restore DMA parameters
|
||||
PLA : STA $4304 ; restore DMA parameters
|
||||
PLA : STA $4303 ; restore DMA parameters
|
||||
PLA : STA $4302 ; restore DMA parameters
|
||||
PLA : STA $4301 ; restore DMA parameters
|
||||
PLA : STA $4300 ; restore DMA parameters
|
||||
PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
;Hash Alphabet
|
||||
!ALPHA_BOW = "#$0000"
|
||||
!ALPHA_BOOM = "#$0001"
|
||||
!ALPHA_HOOK = "#$0002"
|
||||
!ALPHA_BOMB = "#$0003"
|
||||
!ALPHA_SHROOM = "#$0004"
|
||||
!ALPHA_POWDER = "#$0005"
|
||||
!ALPHA_ROD = "#$0006"
|
||||
!ALPHA_PENDANT = "#$0007"
|
||||
!ALPHA_BOMBOS = "#$0008"
|
||||
!ALPHA_ETHER = "#$0009"
|
||||
!ALPHA_QUAKE = "#$000A"
|
||||
!ALPHA_LAMP = "#$000B"
|
||||
!ALPHA_HAMMER = "#$000C"
|
||||
!ALPHA_SHOVEL = "#$000D"
|
||||
!ALPHA_FLUTE = "#$000E"
|
||||
!ALPHA_NET = "#$000F"
|
||||
!ALPHA_BOOK = "#$0010"
|
||||
!ALPHA_BOTTLE = "#$0011"
|
||||
!ALPHA_POTION = "#$0012"
|
||||
!ALPHA_CANE = "#$0013"
|
||||
!ALPHA_CAPE = "#$0014"
|
||||
!ALPHA_MIRROR = "#$0015"
|
||||
!ALPHA_BOOTS = "#$0016"
|
||||
!ALPHA_GLOVES = "#$0017"
|
||||
!ALPHA_FLIPPERS = "#$0018"
|
||||
!ALPHA_PEARL = "#$0019"
|
||||
!ALPHA_SHIELD = "#$001A"
|
||||
!ALPHA_TUNIC = "#$001B"
|
||||
!ALPHA_HEART = "#$001C"
|
||||
!ALPHA_MAP = "#$001D"
|
||||
!ALPHA_COMPASS = "#$001E"
|
||||
!ALPHA_KEY = "#$001F"
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
!BIGRAM = "$7EC900";
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadAlphabetTilemap:
|
||||
PHA : PHX : PHY : PHP
|
||||
SEP #$10 ; 8-bit index registers
|
||||
REP #$20 ; 16-bit accumulator
|
||||
|
||||
LDX.b #$00 : -
|
||||
LDA FileSelect_PlayerSelectText_Top, X
|
||||
STA !BIGRAM, X
|
||||
INX #2
|
||||
CPX #128 : !BLT -
|
||||
|
||||
|
||||
SEP #$20 ; 8-bit accumulator
|
||||
|
||||
LDY.b #00
|
||||
LDX.b #$00 : -
|
||||
PHX : TYX : LDA $00, X : PLX
|
||||
AND.b #$1F ; mask to alphabet of 32
|
||||
PHX : TAX : JSL.l GetAlphabetPalette : PLX
|
||||
ORA.b #$01
|
||||
|
||||
STA !BIGRAM+28+1, X
|
||||
STA !BIGRAM+28+1+2, X
|
||||
STA !BIGRAM+28+64+1, X
|
||||
STA !BIGRAM+28+64+1+2, X
|
||||
INX #6 : INY
|
||||
CPX #25 : !BLT -
|
||||
|
||||
JSR DMAAlphabetTilemap:
|
||||
|
||||
PLP : PLY : PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; DMAAlphabetTilemap:
|
||||
;--------------------------------------------------------------------------------
|
||||
DMAAlphabetTilemap:
|
||||
PHA : PHX
|
||||
LDA $4300 : PHA ; preserve DMA parameters
|
||||
LDA $4301 : PHA ; preserve DMA parameters
|
||||
LDA $4302 : PHA ; preserve DMA parameters
|
||||
LDA $4303 : PHA ; preserve DMA parameters
|
||||
LDA $4304 : PHA ; preserve DMA parameters
|
||||
LDA $4305 : PHA ; preserve DMA parameters
|
||||
LDA $4306 : PHA ; preserve DMA parameters
|
||||
;--------------------------------------------------------------------------------
|
||||
LDA.b #$01 : STA $4300 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
||||
LDA.b #$80 : STA $2115 ; write read increment on $2119
|
||||
LDA.b #$18 : STA $4301 ; set bus B destination to VRAM register
|
||||
|
||||
LDA.b #$60 : STA $2116 ; write VRAM destination address
|
||||
STA $2117 ; write VRAM destination address
|
||||
|
||||
LDA.b #!BIGRAM : STA $4302 ; set bus A source address to WRAM
|
||||
LDA.b #!BIGRAM>>8 : STA $4303 ; set bus A source address to WRAM
|
||||
LDA.b #!BIGRAM>>16 : STA $4304 ; set bus A source bank
|
||||
|
||||
LDA.b #$80 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
|
||||
LDA $2100 : PHA : LDA.b #$80 : STA $2100 ; save screen state & turn screen off
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
PLA : STA $2100 ; put screen back however it was before
|
||||
;--------------------------------------------------------------------------------
|
||||
LDA.b #$00 : STA $4300 ; set DMA transfer direction A -> B, bus A auto increment, single-byte mode
|
||||
LDA.b #$22 : STA $4301 ; set bus B destination to CGRAM register
|
||||
|
||||
STZ $2121 ; write CGRAM destination address
|
||||
|
||||
LDA.b #GFX_HUD_Palette : STA $4302 ; set bus A source address to WRAM
|
||||
LDA.b #GFX_HUD_Palette>>8 : STA $4303 ; set bus A source address to WRAM
|
||||
LDA.b #GFX_HUD_Palette>>16 : STA $4304 ; set bus A source bank
|
||||
|
||||
LDA.b #$80 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
||||
|
||||
LDA $2100 : PHA : LDA.b #$80 : STA $2100 ; save screen state & turn screen off
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
PLA : STA $2100 ; put screen back however it was before
|
||||
;--------------------------------------------------------------------------------
|
||||
PLA : STA $4306 ; restore DMA parameters
|
||||
PLA : STA $4305 ; restore DMA parameters
|
||||
PLA : STA $4304 ; restore DMA parameters
|
||||
PLA : STA $4303 ; restore DMA parameters
|
||||
PLA : STA $4302 ; restore DMA parameters
|
||||
PLA : STA $4301 ; restore DMA parameters
|
||||
PLA : STA $4300 ; restore DMA parameters
|
||||
PLX : PLA
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
!FSTILE_SPACE = "$0188"
|
||||
|
||||
!FSTILE_BRACKET_OPEN_TOP = "$1D8A"
|
||||
!FSTILE_BRACKET_OPEN_BOTTOM = "$1D9A"
|
||||
|
||||
!FSTILE_BRACKET_CLOSE_TOP = "$1D8B"
|
||||
!FSTILE_BRACKET_CLOSE_BOTTOM = "$1D9B"
|
||||
;--------------------------------------------------------------------------------
|
||||
FileSelect_PlayerSelectText_Top:
|
||||
;db $60, $62, $00, $37
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_OPEN_TOP
|
||||
dw !FSTILE_SPACE, $1D6C
|
||||
dw !FSTILE_SPACE, $1D4E
|
||||
dw !FSTILE_SPACE, $1D4E
|
||||
dw !FSTILE_SPACE, $1D4D
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_SPACE, $05A0, $05A1
|
||||
dw !FSTILE_SPACE, $05A4, $05A5
|
||||
dw !FSTILE_SPACE, $05A8, $05A9
|
||||
dw !FSTILE_SPACE, $05AC, $05AD
|
||||
dw !FSTILE_SPACE, $05B0, $05B1
|
||||
dw !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_CLOSE_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;--------------------------------------------------------------------------------
|
||||
FileSelect_PlayerSelectText_Bottom:
|
||||
;db $60, $82, $00, $37
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM
|
||||
dw !FSTILE_SPACE, $1D7C
|
||||
dw !FSTILE_SPACE, $1D5E
|
||||
dw !FSTILE_SPACE, $1D5E
|
||||
dw !FSTILE_SPACE, $1D5D
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_SPACE, $05A2, $05A3
|
||||
dw !FSTILE_SPACE, $05A6, $05A7
|
||||
dw !FSTILE_SPACE, $05AA, $05AB
|
||||
dw !FSTILE_SPACE, $05AE, $05AF
|
||||
dw !FSTILE_SPACE, $05B2, $05B3
|
||||
dw !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_CLOSE_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE60 ; <- 65E60
|
||||
FileSelect_CopyFile_Top:
|
||||
db $62, $A5, $00, $15
|
||||
dw $1D4C, !FSTILE_SPACE, $1D68, !FSTILE_SPACE, $1D69, !FSTILE_SPACE, $1D82, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1CAC, !FSTILE_SPACE, $1D23, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D04, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D07
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE7A ; <- 65E7A
|
||||
FileSelect_CopyFile_Bottom:
|
||||
db $62, $C5, $00, $15
|
||||
dw $1D5C, !FSTILE_SPACE, $1D78, !FSTILE_SPACE, $1D79, !FSTILE_SPACE, $1D92, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1CBC, !FSTILE_SPACE, $1D33, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D14, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D17
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE94 ; <- 65E94
|
||||
FileSelect_KillFile_Top:
|
||||
db $63, $25, $00, $19
|
||||
dw $1D64, !FSTILE_SPACE, $1D62, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1D64, !FSTILE_SPACE, $1D62, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D04, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D07
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $0CDEB2 ; <- 65EB2
|
||||
;FileSelect_KillFile_Bottom:
|
||||
db $63, $45, $00, $19
|
||||
dw $1D74, !FSTILE_SPACE, $1D72, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1D74, !FSTILE_SPACE, $1D72, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D14, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D17
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $0CDDE8 ; <- 65DE8
|
||||
;FileSelect_PlayerSelectText_Top:
|
||||
;db $60, $62, $00, $37
|
||||
;db $8A, $1D, $88, $01, $69, $1D, $88, $01, $65, $1D, $88, $01, $4A, $1D, $88, $01
|
||||
;db $82, $1D, $88, $01, $4E, $1D, $88, $01, $6B, $1D, $88, $01, $88, $01, $6C, $1D
|
||||
;db $88, $01, $4E, $1D, $88, $01, $65, $1D, $88, $01, $4E, $1D, $88, $01, $4C, $1D
|
||||
;db $88, $01, $6D, $1D, $88, $01, $8B, $1D
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $0CDE24 ; <- 65E24
|
||||
;FileSelect_PlayerSelectText_Bottom:
|
||||
;db $60, $82, $00, $37
|
||||
;db $9A, $1D, $88, $01, $79, $1D, $88, $01, $75, $1D, $88, $01, $5A, $1D, $88, $01
|
||||
;db $92, $1D, $88, $01, $5E, $1D, $88, $01, $7B, $1D, $88, $01, $88, $01, $7C, $1D
|
||||
;db $88, $01, $5E, $1D, $88, $01, $75, $1D, $88, $01, $5E, $1D, $88, $01, $5C, $1D
|
||||
;db $88, $01, $7D, $1D, $88, $01, $9B, $1D
|
||||
;--------------------------------------------------------------------------------
|
||||
1
hashalphabet.chr.gfx
Normal file
1
hashalphabet.chr.gfx
Normal file
@@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD>Η<EFBFBD>€<EFBFBD>Έ<EFBFBD>ώΟ<EFBFBD>η<EFBFBD>σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>ρ<EFBFBD>1<EFBFBD>-<2D>ί<EFBFBD>§<EFBFBD>gϋώ<CF8B>ύΞϋ<CE9E>χϋοσ<CEBF>χ<EFBFBD><CF87><EFBFBD><EFBFBD>γ<EFBFBD>σσ?ω<>ωΟωοσ<CEBF><CF83><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΐ<EFBFBD><CE90>Ώ<EFBFBD>€<EFBFBD>ΐ<EFBFBD><CE90><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0F>η<EFBFBD>χχχ<1F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>χ<EFBFBD>χ<EFBFBD>χ<EFBFBD>χ<EFBFBD>χ<EFBFBD>χ<EFBFBD><CF87>Ο<EFBFBD><CE9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>ω<EFBFBD>ε<EFBFBD>ύ<EFBFBD>O<EFBFBD><EFBFBD><EFBFBD>ό<EFBFBD>ψ<EFBFBD>υ<EFBFBD>οσίηΏΟ<CE8F><CE9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ώύ<CF8E>ς<EFBFBD>αχθ<CF87>ΐ<EFBFBD><CE90><EFBFBD><EFBFBD>m<EFBFBD>sΏ<73>O<EFBFBD>‡Ο7ηοΠοΠ<CEBF>ΐ<EFBFBD>ΰ<EFBFBD>ΰ<EFBFBD>π<EFBFBD>ό<EFBFBD><CF8C>χχ<0B><03><07><07><0F>?<3F><><EFBFBD><EFBFBD><EFBFBD>ώ<EFBFBD>ψ<EFBFBD>π<EFBFBD>π<EFBFBD>ΰ<EFBFBD>ΐ<EFBFBD>€<EFBFBD><E282AC><EFBFBD><EFBFBD>ΏOο<>wοη<19>€<EFBFBD>€<EFBFBD>ΐϋ<CE90>π<EFBFBD>π<EFBFBD>ψ<EFBFBD><CF88><EFBFBD><EFBFBD><01>a<EFBFBD>σ<1F><0F><0F><1F><><EFBFBD><EFBFBD><EFBFBD>ύϋ½σΎωΧόγ<CF8C>Φ<EFBFBD>Ώω<CE8F><CF89>ί»Ο·Ω<C2B7><03>η<1F><>ηΏπ<CE8F>ΰ<EFBFBD>ΰ<EFBFBD>ΰ<EFBFBD>ΰ<EFBFBD>π<EFBFBD>ό<EFBFBD><CF8C><EFBFBD>s‡yΗ9Ο1<CE9F><01><03><0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ώ<EFBFBD>ύ<EFBFBD>ύ<EFBFBD>ώ<EFBFBD><CF8E><EFBFBD><EFBFBD>Αέγέ£γ<C2A3>w‰oΧ<6F><CEA7>ό<EFBFBD>ψ<EFBFBD>υ<EFBFBD>οσίηΏΟ<CE8F><CE9F><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ψ<EFBFBD>χ<EFBFBD>ο<EFBFBD>ξ<EFBFBD>ρ<EFBFBD><CF81><EFBFBD><1F>o<EFBFBD>χ<EFBFBD>{<7B>»<EFBFBD>έ<EFBFBD>έ<EFBFBD>ϋ<EFBFBD>ηωΗψΞραήχΘ<CF87>α<EFBFBD><CEB1>έ<EFBFBD>½<EFBFBD>½<EFBFBD>½<EFBFBD>Ϋ<EFBFBD>η<EFBFBD><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ό<EFBFBD>π<EFBFBD>ιφΩζΫδΊΕΌΓ<CE8C><CE93>?<3F>Ο?χϋƒa<7F>9Η<39>γ†ωΑώίΰοπσόό<CF8C><CF8C><EFBFBD>=Γ]£Ϋ'›g—o<0F>?<3F><><EFBFBD><EFBFBD><EFBFBD>ό<EFBFBD>ςύξράγάγΈΗΈΗ<CE88><CE97>?<3F>Ο?χϋϋύ
|
||||
12
heartbeep.asm
Normal file
12
heartbeep.asm
Normal file
@@ -0,0 +1,12 @@
|
||||
;================================================================================
|
||||
; Heart Beep Logic
|
||||
;================================================================================
|
||||
BeepLogic:
|
||||
LDA.l HeartBeep : BEQ +
|
||||
STA $04CA
|
||||
LDA.b #$2B : STA $012E
|
||||
RTL
|
||||
+
|
||||
LDA.b #$FF : STA $04CA
|
||||
RTL
|
||||
;================================================================================
|
||||
395
heartpieces.asm
Normal file
395
heartpieces.asm
Normal file
@@ -0,0 +1,395 @@
|
||||
;================================================================================
|
||||
; Randomize Heart Pieces
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartPieceGet:
|
||||
PHX : PHY
|
||||
JSL.l LoadHeartPieceRoomValue : TAY ; load item value into Y register
|
||||
JSL.l MaybeMarkDigSpotCollected
|
||||
|
||||
.skipLoad
|
||||
|
||||
STZ $02E9 ; 0 = Receiving item from an NPC or message
|
||||
|
||||
CPY.b #$26 : BNE .notHeart ; don't add a 1/4 heart if it's not a heart piece
|
||||
LDA $7EF36B : INC A : AND.b #$03 : STA $7EF36B : BNE .unfinished_heart ; add up heart quarters
|
||||
BRA .giveItem
|
||||
|
||||
.notHeart
|
||||
|
||||
.giveItem
|
||||
JSL.l $0791B3 ; Player_HaltDashAttackLong
|
||||
JSL.l Link_ReceiveItem
|
||||
CLC ; return false
|
||||
BRL .done ; finished
|
||||
|
||||
.unfinished_heart
|
||||
SEC ; return true
|
||||
.done
|
||||
|
||||
JSL MaybeUnlockTabletAnimation
|
||||
|
||||
PLY : PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartContainerGet:
|
||||
PHX : PHY
|
||||
JSL.l LoadHeartContainerRoomValue : TAY ; load item value into Y register
|
||||
|
||||
BRA HeartPieceGet_skipLoad
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
DrawHeartPieceGFX:
|
||||
PHP
|
||||
JSL.l Sprite_IsOnscreen : BCC .offscreen
|
||||
|
||||
PHA : PHY
|
||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
||||
JSL.l HeartPieceSpritePrep
|
||||
BRL .done ; don't draw on the init frame
|
||||
|
||||
.skipInit
|
||||
JSL.l LoadHeartPieceRoomValue
|
||||
|
||||
.skipLoad
|
||||
|
||||
PHA
|
||||
JSL.l IsNarrowSprite : BCC +
|
||||
LDA $0E60, X : ORA.b #$20 : STA $0E60, X
|
||||
+
|
||||
;LDA $0E60, X : ORA.b #$10 : STA $0E60, X
|
||||
|
||||
PLA
|
||||
|
||||
JSL.l DrawDynamicTile
|
||||
JSL.l Sprite_DrawShadowLong
|
||||
|
||||
.done
|
||||
PLY : PLA
|
||||
.offscreen
|
||||
PLP
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
DrawHeartContainerGFX:
|
||||
PHP
|
||||
JSL.l Sprite_IsOnscreen : BCC DrawHeartPieceGFX_offscreen
|
||||
|
||||
PHA : PHY
|
||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
||||
JSL.l HeartContainerSpritePrep
|
||||
BRA DrawHeartPieceGFX_done ; don't draw on the init frame
|
||||
|
||||
.skipInit
|
||||
JSL.l LoadHeartContainerRoomValue
|
||||
|
||||
BRA DrawHeartPieceGFX_skipLoad
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartContainerSound:
|
||||
CPY.b #$20 : BEQ + ; Skip for Crystal
|
||||
CPY.b #$37 : BEQ + ; Skip for Pendants
|
||||
CPY.b #$38 : BEQ +
|
||||
CPY.b #$39 : BEQ +
|
||||
JSL.l CheckIfBossRoom : BCC + ; Skip if not in a boss room
|
||||
LDA.b #$2E
|
||||
SEC
|
||||
RTL
|
||||
+
|
||||
CLC
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
NormalItemSkipSound:
|
||||
LDA $0C5E, X ; thing we wrote over
|
||||
|
||||
CPY.b #$20 : BEQ + ; Skip for Crystal
|
||||
CPY.b #$37 : BEQ + ; Skip for Pendants
|
||||
CPY.b #$38 : BEQ +
|
||||
CPY.b #$39 : BEQ +
|
||||
|
||||
PHA
|
||||
JSL.l CheckIfBossRoom
|
||||
PLA
|
||||
RTL
|
||||
+
|
||||
CLC
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartUpgradeSpawnDecision: ; this should return #$00 to make the hp spawn
|
||||
LDA !FORCE_HEART_SPAWN : BEQ .normal_behavior
|
||||
|
||||
DEC : STA !FORCE_HEART_SPAWN
|
||||
LDA #$00
|
||||
RTL
|
||||
|
||||
.normal_behavior
|
||||
LDA $7EF280, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
SaveHeartCollectedStatus:
|
||||
LDA !SKIP_HEART_SAVE : BEQ .normal_behavior
|
||||
|
||||
DEC : STA !SKIP_HEART_SAVE
|
||||
RTL
|
||||
|
||||
.normal_behavior
|
||||
LDA $7EF280, X : ORA.b #$40 : STA $7EF280, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
HeartPieceSpritePrep:
|
||||
PHA
|
||||
|
||||
LDA #$01 : STA !REDRAW
|
||||
LDA $5D : CMP #$14 : BEQ .skip ; skip if we're mid-mirror
|
||||
|
||||
LDA #$00 : STA !REDRAW
|
||||
JSL.l LoadHeartPieceRoomValue ; load item type
|
||||
JSL.l PrepDynamicTile
|
||||
|
||||
.skip
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
HeartContainerSpritePrep:
|
||||
PHA
|
||||
|
||||
LDA #$00 : STA !REDRAW
|
||||
JSL.l LoadHeartContainerRoomValue ; load item type
|
||||
JSL.l PrepDynamicTile
|
||||
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadHeartPieceRoomValue:
|
||||
LDA $1B : BEQ .outdoors ; check if we're indoors or outdoors
|
||||
.indoors
|
||||
JSL.l LoadIndoorValue
|
||||
BRL .done
|
||||
.outdoors
|
||||
JSL.l LoadOutdoorValue
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
HPItemReset:
|
||||
JSL $09AD58 ; GiveRupeeGift - thing we wrote over
|
||||
PHA : LDA #$01 : STA !REDRAW : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
MaybeMarkDigSpotCollected:
|
||||
PHA : PHP
|
||||
LDA $1B : BNE +
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $8A
|
||||
CMP.w #$2A : BNE +
|
||||
LDA !HAS_GROVE_ITEM : ORA.w #$0001 : STA !HAS_GROVE_ITEM
|
||||
+
|
||||
PLP : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadIndoorValue:
|
||||
PHP
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $A0 ; these are all decimal because i got them that way
|
||||
CMP.w #225 : BNE +
|
||||
LDA HeartPiece_Forest_Thieves
|
||||
BRL .done
|
||||
+ CMP.w #226 : BNE +
|
||||
LDA HeartPiece_Lumberjack_Tree
|
||||
BRL .done
|
||||
+ CMP.w #234 : BNE +
|
||||
LDA HeartPiece_Spectacle_Cave
|
||||
BRL .done
|
||||
+ CMP.w #283 : BNE +
|
||||
LDA $22 : XBA : AND.w #$0001 ; figure out where link is
|
||||
BNE ++
|
||||
LDA HeartPiece_Circle_Bushes
|
||||
BRL .done
|
||||
++
|
||||
LDA HeartPiece_Graveyard_Warp
|
||||
BRL .done
|
||||
+ CMP.w #294 : BNE +
|
||||
LDA HeartPiece_Mire_Warp
|
||||
BRL .done
|
||||
+ CMP.w #295 : BNE +
|
||||
LDA HeartPiece_Smith_Pegs
|
||||
BRL .done
|
||||
+ CMP.w #135 : BNE +
|
||||
LDA StandingKey_Hera
|
||||
BRL .done
|
||||
+
|
||||
LDA.w #$0017 ; default to a normal hp
|
||||
.done
|
||||
AND.w #$00FF ; the loads are words but the values are 1-byte so we need to clear the top half of the accumulator - no guarantee it was 8-bit before
|
||||
PLP
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;225 - HeartPiece_Forest_Thieves
|
||||
;226 - HeartPiece_Lumberjack_Tree
|
||||
;234 - HeartPiece_Spectacle_Cave
|
||||
;283 - HeartPiece_Circle_Bushes
|
||||
;283 - HeartPiece_Graveyard_Warp
|
||||
;294 - HeartPiece_Mire_Warp
|
||||
;295 - HeartPiece_Smith_Pegs
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadOutdoorValue:
|
||||
PHP
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $8A
|
||||
CMP.w #$03 : BNE +
|
||||
LDA $22 : CMP.w #1890 : !BLT ++
|
||||
LDA HeartPiece_Spectacle
|
||||
BRL .done
|
||||
++
|
||||
LDA EtherItem
|
||||
BRL .done
|
||||
+ CMP.w #$05 : BNE +
|
||||
LDA HeartPiece_Mountain_Warp
|
||||
BRL .done
|
||||
+ CMP.w #$28 : BNE +
|
||||
LDA HeartPiece_Maze
|
||||
BRL .done
|
||||
+ CMP.w #$2A : BNE +
|
||||
LDA HauntedGroveItem
|
||||
BRL .done
|
||||
+ CMP.w #$30 : BNE +
|
||||
LDA $22 : CMP.w #512 : !BGE ++
|
||||
LDA HeartPiece_Desert
|
||||
BRL .done
|
||||
++
|
||||
LDA BombosItem
|
||||
BRL .done
|
||||
+ CMP.w #$35 : BNE +
|
||||
LDA HeartPiece_Lake
|
||||
BRL .done
|
||||
+ CMP.w #$3B : BNE +
|
||||
LDA HeartPiece_Swamp
|
||||
BRL .done
|
||||
+ CMP.w #$42 : BNE +
|
||||
LDA HeartPiece_Cliffside
|
||||
BRL .done
|
||||
+ CMP.w #$4A : BNE +
|
||||
LDA HeartPiece_Cliffside
|
||||
BRL .done
|
||||
+ CMP.w #$5B : BNE +
|
||||
LDA HeartPiece_Pyramid
|
||||
BRL .done
|
||||
+ CMP.w #$68 : BNE +
|
||||
LDA HeartPiece_Digging
|
||||
BRL .done
|
||||
+ CMP.w #$81 : BNE +
|
||||
LDA HeartPiece_Zora
|
||||
BRL .done
|
||||
+
|
||||
LDA.w #$0017 ; default to a normal hp
|
||||
.done
|
||||
AND.w #$00FF ; the loads are words but the values are 1-byte so we need to clear the top half of the accumulator - no guarantee it was 8-bit before
|
||||
PLP
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;$03 - HeartPiece_Spectacle
|
||||
;$05 - HeartPiece_Mountain_Warp
|
||||
;$28 - HeartPiece_Maze
|
||||
;$30 - HeartPiece_Desert
|
||||
;$35 - HeartPiece_Lake
|
||||
;$3B - HeartPiece_Swamp
|
||||
;$42 - HeartPiece_Cliffside - not really but the gfx load weird otherwise
|
||||
;$4A - HeartPiece_Cliffside
|
||||
;$5B - HeartPiece_Pyramid
|
||||
;$68 - HeartPiece_Digging
|
||||
;$81 - HeartPiece_Zora
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadHeartContainerRoomValue:
|
||||
LoadBossValue:
|
||||
PHP
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $A0 ; these are all decimal because i got them that way
|
||||
CMP.w #200 : BNE +
|
||||
LDA HeartContainer_ArmosKnights
|
||||
BRL .done
|
||||
+ CMP.w #51 : BNE +
|
||||
LDA HeartContainer_Lanmolas
|
||||
BRL .done
|
||||
+ CMP.w #7 : BNE +
|
||||
LDA HeartContainer_Moldorm
|
||||
BRL .done
|
||||
+ CMP.w #90 : BNE +
|
||||
LDA HeartContainer_HelmasaurKing
|
||||
BRL .done
|
||||
+ CMP.w #6 : BNE +
|
||||
LDA HeartContainer_Arrghus
|
||||
BRL .done
|
||||
+ CMP.w #41 : BNE +
|
||||
LDA HeartContainer_Mothula
|
||||
BRL .done
|
||||
+ CMP.w #172 : BNE +
|
||||
LDA HeartContainer_Blind
|
||||
BRL .done
|
||||
+ CMP.w #222 : BNE +
|
||||
LDA HeartContainer_Kholdstare
|
||||
BRL .done
|
||||
+ CMP.w #144 : BNE +
|
||||
LDA HeartContainer_Vitreous
|
||||
BRL .done
|
||||
+ CMP.w #164 : BNE +
|
||||
LDA HeartContainer_Trinexx
|
||||
BRL .done
|
||||
+
|
||||
LDA.w #$003E ; default to a normal boss heart
|
||||
.done
|
||||
AND.w #$00FF ; the loads are words but the values are 1-byte so we need to clear the top half of the accumulator - no guarantee it was 8-bit before
|
||||
PLP
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckIfBossRoom:
|
||||
;--------------------------------------------------------------------------------
|
||||
; Carry set if we're in a boss room, unset otherwise.
|
||||
;--------------------------------------------------------------------------------
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $A0 ; these are all decimal because i got them that way
|
||||
CMP.w #200 : BNE +
|
||||
SEC : BRL .done
|
||||
+ CMP.w #51 : BNE +
|
||||
SEC : BRL .done
|
||||
+ CMP.w #7 : BNE +
|
||||
SEC : BRL .done
|
||||
+ CMP.w #90 : BNE +
|
||||
SEC : BRL .done
|
||||
+ CMP.w #6 : BNE +
|
||||
SEC : BRL .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
|
||||
.done
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;#200 - Eastern Palace - Armos Knights
|
||||
;#51 - Desert Palace - Lanmolas
|
||||
;#7 - Tower of Hera - Moldorm
|
||||
;#32 - Agahnim's Tower - Agahnim I
|
||||
;#90 - Palace of Darkness - Helmasaur King
|
||||
;#6 - Swamp Palace - Arrghus
|
||||
;#41 - Skull Woods - Mothula
|
||||
;#172 - Thieves' Town - Blind
|
||||
;#222 - Ice Palace - Kholdstare
|
||||
;#144 - Misery Mire - Vitreous
|
||||
;#164 - Turtle Rock - Trinexx
|
||||
;#13 - Ganon's Tower - Agahnim II
|
||||
;#0 - Pyramid of Power - Ganon
|
||||
;--------------------------------------------------------------------------------
|
||||
;JSL $06DD40 ; DashKey_Draw
|
||||
;JSL $06DBF8 ; Sprite_PrepAndDrawSingleLargeLong
|
||||
;JSL $06DC00 ; Sprite_PrepAndDrawSingleSmallLong ; draw first cell correctly
|
||||
;JSL $00D51B ; GetAnimatedSpriteTile
|
||||
;JSL $00D52D ; GetAnimatedSpriteTile.variable
|
||||
;================================================================================
|
||||
45
hud.asm
Normal file
45
hud.asm
Normal file
@@ -0,0 +1,45 @@
|
||||
;org $0DFE97 ; <- 6FE97 - headsup_display.asm:1009 (.hud_tilemap)
|
||||
HUD_TileMap:
|
||||
dw $207F, $207F, $2850, $A856
|
||||
dw $2852, $285B, $285B, $285C
|
||||
;dw $207F, $3CA8, $207F, $207F, $207F
|
||||
dw $207F, $3C02, $3C03, $207F, $207F
|
||||
dw $2C88, $2C89, $207F, $20A7
|
||||
dw $20A9, $207F, $2871 ;, $207F
|
||||
dw $207F, $207F, $288B, $288F
|
||||
dw $24AB, $24AC, $688F, $688B
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $2871
|
||||
dw $2858, $207F, $207F, $285D
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $304E
|
||||
dw $2858, $207F, $207F, $285D
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $305E
|
||||
dw $2859, $A85B, $A85B, $A85C
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $305E
|
||||
dw $6854, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $A850, $2856
|
||||
dw $E850
|
||||
BIN
hudpalette.pal
Normal file
BIN
hudpalette.pal
Normal file
Binary file not shown.
27
init.asm
Normal file
27
init.asm
Normal file
@@ -0,0 +1,27 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; Init_Primary
|
||||
;--------------------------------------------------------------------------------
|
||||
; This can be as inefficient as we want. Interrupts are off when this gets
|
||||
; called and it only gets called once ever during RESET.
|
||||
;--------------------------------------------------------------------------------
|
||||
Init_Primary:
|
||||
LDA #$00
|
||||
|
||||
LDX #$00 ; initalize our ram
|
||||
-
|
||||
STA $7EC025, X
|
||||
STA $7F5000, X
|
||||
INX
|
||||
CPX #$10 : !BLT -
|
||||
|
||||
LDX #$10 ; initalize more ram
|
||||
-
|
||||
STA $7F5000, X
|
||||
INX
|
||||
CPX #$FF : !BLT -
|
||||
|
||||
LDA.b #$01 : STA $420D ; enable fastrom access on upper banks
|
||||
|
||||
LDA.b #$81 : STA $4200 ; thing we wrote over, turn on NMI & gamepad
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
984
inventory.asm
Normal file
984
inventory.asm
Normal file
@@ -0,0 +1,984 @@
|
||||
;================================================================================
|
||||
; Inventory Updates
|
||||
;================================================================================
|
||||
!INVENTORY_SWAP = "$7EF412"
|
||||
; Item Tracking Slot
|
||||
; brmp-skf
|
||||
; b = blue boomerang
|
||||
; r = red boomerang
|
||||
; m = mushroom
|
||||
; p = magic powder
|
||||
; -
|
||||
; s = shovel
|
||||
; k = fake flute
|
||||
; f = working flute
|
||||
;--------------------------------------------------------------------------------
|
||||
!INVENTORY_SWAP_2 = "$7EF414"
|
||||
; Item Tracking Slot #2
|
||||
; bs------
|
||||
; b = bow
|
||||
; s = silver arrow bow
|
||||
; -
|
||||
; -
|
||||
; -
|
||||
; -
|
||||
; -
|
||||
; -
|
||||
;--------------------------------------------------------------------------------
|
||||
; ProcessMenuButtons:
|
||||
; out: Carry - 0 = No Button, 1 = Yes Button
|
||||
;--------------------------------------------------------------------------------
|
||||
ProcessMenuButtons:
|
||||
;LDA #$FD : STA !INVENTORY_SWAP ; DEBUG MODE
|
||||
;LDA $F6 : BIT #$20 : BNE .l_pressed ; check for P1 L-button
|
||||
LDA $F4 : BIT #$40 : BNE .y_pressed ; check for P1 Y-button
|
||||
BIT #$20 : BNE .sel_pressed ; check for P1 Select button
|
||||
LDA $F0 : BIT #$20 : BNE .sel_held
|
||||
.sel_unheld
|
||||
LDA !HUD_FLAG : AND #$20 : BEQ +
|
||||
LDA !HUD_FLAG : AND #$DF : STA !HUD_FLAG ; select is released, unset hud flag
|
||||
LDA $1B : BEQ + ; skip if outdoors
|
||||
LDA.b #$20 : STA $012F ; menu select sound
|
||||
+
|
||||
JSL.l ResetEquipment
|
||||
+
|
||||
.sel_held
|
||||
CLC ; no buttons
|
||||
RTL
|
||||
.sel_pressed
|
||||
LDA !HUD_FLAG : ORA #$20 : STA !HUD_FLAG ; set hud flag
|
||||
LDA.b #$20 : STA $012F ; menu select sound
|
||||
JSL.l ResetEquipment
|
||||
RTL
|
||||
.y_pressed
|
||||
LDA.b #$10 : STA $0207
|
||||
LDA $0202 ; check selected item
|
||||
CMP #$02 : BNE + ; boomerang
|
||||
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.b #$20 : STA $012F ; menu select sound
|
||||
BRL .captured
|
||||
+ CMP #$01 : BNE + ; bow
|
||||
LDA !INVENTORY_SWAP_2 : AND #$C0 : CMP #$C0 : BNE .errorJump ; make sure we have both bows
|
||||
LDA $7EF340 : !SUB #$01 : EOR #$02 : !ADD #$01 : STA $7EF340 ; swap bows
|
||||
LDA.b #$20 : STA $012F ; menu select sound
|
||||
BRL .captured
|
||||
+ CMP #$05 : BNE + ; 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.b #$20 : STA $012F ; menu select sound
|
||||
BRL .captured
|
||||
;+ BRA +
|
||||
.errorJump
|
||||
BRA .error
|
||||
+ CMP #$0D : BNE + ; flute
|
||||
LDA $037A : CMP #$01 : BEQ .midShovel ; inside a shovel animation, force the shovel & make error sound
|
||||
LDA !INVENTORY_SWAP : BIT #$04 : BEQ .error ; make sure we have shovel
|
||||
AND #$03 : BEQ .error ; make sure we have one of the flutes
|
||||
LDA $7EF34C : CMP #01 : BNE .toShovel ; not shovel
|
||||
|
||||
LDA !INVENTORY_SWAP : AND #$01 : BEQ .toFakeFlute ; check for real flute
|
||||
LDA #$03 ; set real flute
|
||||
BRA .fluteSuccess
|
||||
.toFakeFlute
|
||||
LDA #$02 ; set fake flute
|
||||
BRA .fluteSuccess
|
||||
.toShovel
|
||||
LDA #$01 ; set shovel
|
||||
.fluteSuccess
|
||||
STA $7EF34C ; store set item
|
||||
LDA.b #$20 : STA $012F ; menu select sound
|
||||
BRA .captured
|
||||
+
|
||||
CMP #$10 : BNE .error : JSL.l ProcessBottleMenu : BRA .captured : +
|
||||
CLC
|
||||
RTL
|
||||
.midShovel
|
||||
LDA #$01 : STA $7EF34C ; set shovel
|
||||
.error
|
||||
LDA.b #$3C : STA $012E ; error sound
|
||||
.captured
|
||||
SEC
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
;ProcessBottleMenu:
|
||||
;--------------------------------------------------------------------------------
|
||||
ProcessBottleMenu:
|
||||
LDA $F4 : AND #$40 : BEQ .y_not_pressed ; skip if Y is not down
|
||||
LDA $7EF34F ; check bottle state
|
||||
BEQ .no_bottles ; skip if we have no bottles
|
||||
PHX
|
||||
INC : CMP #$05 : !BLT + : LDA #$01 : + ;increment and wrap 1-4
|
||||
TAX : LDA $7EF35C-1, X ; check bottle
|
||||
BNE + : LDX #$01 : + ; wrap if we reached the last bottle
|
||||
TXA : STA $7EF34F ; set bottle index
|
||||
LDA.b #$20 : STA $012F ; menu select sound
|
||||
PLX
|
||||
.no_bottles
|
||||
LDA #$00 ; pretend like the controller state was 0 from the overridden load
|
||||
RTL
|
||||
.y_not_pressed
|
||||
LDA $F4 : AND.b #$0C ; thing we wrote over - load controller state
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
;OpenBottleMenu:
|
||||
;--------------------------------------------------------------------------------
|
||||
OpenBottleMenu:
|
||||
LDA $F6 : AND #$40 : BEQ .x_not_pressed ; skip if X is not down
|
||||
LDA.b #$10 : STA $0207 ; set 16 frame cool off
|
||||
LDA.b #$20 : STA $012F ; make menu sound
|
||||
LDA.b #$07 : STA $0200 ; thing we wrote over - opens bottle menu
|
||||
.x_not_pressed
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
;CloseBottleMenu:
|
||||
;--------------------------------------------------------------------------------
|
||||
CloseBottleMenu:
|
||||
LDA $F6 : AND #$40 : BEQ .x_not_pressed ; skip if X is not down
|
||||
|
||||
LDA.b #$10 : STA $0207 ; set 16 frame cool off
|
||||
LDA.b #$20 : STA $012F ; make menu sound
|
||||
|
||||
INC $0200 ; return to normal menu
|
||||
STZ $0205
|
||||
|
||||
LDA #$00
|
||||
RTL
|
||||
.x_not_pressed
|
||||
LDA $F4 : AND.b #$0C ; thing we wrote over (probably)
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; AddInventory:
|
||||
;--------------------------------------------------------------------------------
|
||||
!LOCK_STATS = "$7EF443"
|
||||
|
||||
macro TopHalf(address)
|
||||
LDA <address> : !ADD #$10 : STA <address>
|
||||
endmacro
|
||||
|
||||
macro BottomHalf(address)
|
||||
PHA : PHX
|
||||
LDA <address> : INC : AND #$0F : TAX
|
||||
LDA <address> : AND #$F0 : STA <address>
|
||||
TXA : ORA <address> : STA <address>
|
||||
PLX : PLA
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
FullInventoryExternal:
|
||||
LDA !LOCK_STATS : BEQ + : RTL : +
|
||||
PHA : PHX : PHP : JMP AddInventory_fullItemCounts
|
||||
;--------------------------------------------------------------------------------
|
||||
AddInventory:
|
||||
PHA : PHX : PHP
|
||||
|
||||
CPY.b #$0C : BNE + ; Blue Boomerang
|
||||
LDA !INVENTORY_SWAP : ORA #$80 : STA !INVENTORY_SWAP
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$2A : BNE + ; Red Boomerang
|
||||
LDA !INVENTORY_SWAP : ORA #$40 : STA !INVENTORY_SWAP
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$29 : BNE + ; Mushroom
|
||||
LDA !INVENTORY_SWAP : ORA #$20 : STA !INVENTORY_SWAP
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$0D : BNE + ; Magic Powder
|
||||
LDA !INVENTORY_SWAP : ORA #$10 : STA !INVENTORY_SWAP
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$13 : BNE + ; Shovel
|
||||
LDA !INVENTORY_SWAP : ORA #$04 : STA !INVENTORY_SWAP
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$14 : BNE + ; Flute (Inactive)
|
||||
LDA !INVENTORY_SWAP : ORA #$02 : STA !INVENTORY_SWAP
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
||||
LDA !INVENTORY_SWAP : ORA #$01 : STA !INVENTORY_SWAP
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$0B : BNE + ; Bow
|
||||
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$3A : BNE + ; Bow & Arrows
|
||||
LDA !INVENTORY_SWAP_2 : ORA #$80 : STA !INVENTORY_SWAP_2
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$3B : BNE + ; Bow & Silver Arrows
|
||||
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2
|
||||
BRL .incrementCounts
|
||||
+ CPY.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
||||
LDA !INVENTORY_SWAP_2 : ORA #$40 : STA !INVENTORY_SWAP_2
|
||||
+
|
||||
|
||||
.incrementCounts
|
||||
LDA !LOCK_STATS : BEQ + : BRL .done : +
|
||||
|
||||
; don't count any of this stuff
|
||||
CPY.b #$20 : BNE + : BRL .itemCounts : + ; Crystal
|
||||
CPY.b #$26 : BNE + : BRL .itemCounts : + ; Heart Piece Completion Heart
|
||||
CPY.b #$2E : BNE + : BRL .itemCounts : + ; Red Potion (Refill)
|
||||
CPY.b #$2F : BNE + : BRL .itemCounts : + ; Green Potion (Refill)
|
||||
CPY.b #$30 : BNE + : BRL .itemCounts : + ; Blue Potion (Refill)
|
||||
CPY.b #$37 : BNE + : BRL .itemCounts : + ; Pendant
|
||||
CPY.b #$38 : BNE + : BRL .itemCounts : + ; Pendant
|
||||
CPY.b #$39 : BNE + : BRL .itemCounts : + ; Pendant
|
||||
CPY.b #$00 : BNE + : BRL .itemCounts : + ; Uncle Sword & Shield
|
||||
|
||||
CPY.b #$04 : !BLT .isSword ; Swords - Skip Shop/Fairy Check for Swords
|
||||
CPY.b #$50 : BEQ .isSword
|
||||
BRA +
|
||||
.isSword
|
||||
LDA $7EF42A : AND #$40 : BNE ++ ; skip additional processing if we have the fairy sword flag yet
|
||||
BRL .dungeonCounts
|
||||
++
|
||||
BRL .itemCounts
|
||||
+
|
||||
CPY.b #$3B : BNE + : BRL .dungeonCounts : + ; Silver Arrow Bow - Skip Shop/Fairy Check for Silver Arrow Bow
|
||||
|
||||
LDA $02E9 : CMP #$01 : BEQ ++ ; skip shop check for chests
|
||||
PHP : REP #$20 ; set 16-bit accumulator
|
||||
LDA $048E
|
||||
CMP.w #274 : BNE + : BRL .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 #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 #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
|
||||
CMP.w #276 : BNE + : BRL .shop : + ; waterfall fairy
|
||||
CMP.w #278 : BNE + : BRL .shop : + ; pyramid fairy
|
||||
PLP : BRA ++
|
||||
.shop
|
||||
PLP : BRL .done
|
||||
++
|
||||
|
||||
.dungeonCounts
|
||||
LDA $1B : BNE + : BRL .fullItemCounts : +
|
||||
|
||||
LDA $040C ; get dungeon id
|
||||
|
||||
CMP.b #$00 : BNE + ; Sewers (Escape)
|
||||
BRA ++
|
||||
+ CMP.b #$02 : BNE + ; Hyrule Castle (Escape)
|
||||
++
|
||||
CPY.b #$32 : BNE ++ : BRL .itemCounts : ++ ; Ball & Chain Guard's Big Key
|
||||
%TopHalf($7EF434)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$04 : BNE + ; Eastern Palace
|
||||
LDA $7EF436 : INC : AND #$07 : TAX
|
||||
LDA $7EF436 : AND #$F8 : STA $7EF436
|
||||
TXA : ORA $7EF436 : STA $7EF436
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$06 : BNE + ; Desert Palace
|
||||
LDA $7EF435 : !ADD #$20 : STA $7EF435
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$08 : BNE + ; Agahnim's Tower
|
||||
LDA $7EF435 : INC : AND #$03 : TAX
|
||||
LDA $7EF435 : AND #$FC : STA $7EF435
|
||||
TXA : ORA $7EF435 : STA $7EF435
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$0A : BNE + ; Swamp Palace
|
||||
%BottomHalf($7EF439)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$0C : BNE + ; Palace of Darkness
|
||||
%BottomHalf($7EF434)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$0E : BNE + ; Misery Mire
|
||||
%BottomHalf($7EF438)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$10 : BNE + ; Skull Woods
|
||||
%TopHalf($7EF437)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$12 : BNE + ; Ice Palace
|
||||
%TopHalf($7EF438)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$14 : BNE + ; Tower of Hera
|
||||
LDA $7EF435 : !ADD #$04 : AND #$1C : TAX
|
||||
LDA $7EF435 : AND #$E3 : STA $7EF435
|
||||
TXA : ORA $7EF435 : STA $7EF435
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$16 : BNE + ; Thieves' Town
|
||||
%BottomHalf($7EF437)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$18 : BNE + ; Turtle Rock
|
||||
%TopHalf($7EF439)
|
||||
BRL .fullItemCounts
|
||||
+ CMP.b #$1A : BNE + ; Ganon's Tower
|
||||
LDA $7EF436 : !ADD #$08 : STA $7EF436
|
||||
LDA $7EF366 : AND #$04 : BNE ++
|
||||
JSR .incrementGTowerPreBigKey
|
||||
++
|
||||
;BRL .fullItemCounts
|
||||
+
|
||||
|
||||
.fullItemCounts
|
||||
|
||||
CPY.b #$3B : BNE + ; Skip Total Counts for Repeat Silver Arrows
|
||||
LDA $7EF42A : BIT #$20 : BEQ + : BRA .itemCounts
|
||||
+
|
||||
|
||||
LDA $7EF355 : BNE + ; Check for Boots
|
||||
LDA $7EF432 : INC : STA $7EF432 ; Increment Pre Boots Counter
|
||||
+
|
||||
|
||||
LDA $7EF353 : BNE + ; Check for Mirror
|
||||
LDA $7EF433 : INC : STA $7EF433 ; Increment Pre Mirror Counter
|
||||
+
|
||||
|
||||
LDA $7EF423 : INC : STA $7EF423 ; Increment Item Total
|
||||
|
||||
.itemCounts
|
||||
|
||||
CPY.b #$00 : BNE + ; Fighter's Sword & Fighter's Shield
|
||||
JSR .incrementSword
|
||||
JSR .incrementShield
|
||||
BRL .done
|
||||
+ CPY.b #$01 : BNE + ; Master Sword
|
||||
JSR .incrementSword
|
||||
BRL .done
|
||||
+ CPY.b #$02 : BNE + ; Tempered Sword
|
||||
JSR .incrementSword
|
||||
BRL .done
|
||||
+ CPY.b #$03 : BNE + ; Golden Sword
|
||||
JSR .incrementSword
|
||||
BRL .done
|
||||
+ CPY.b #$04 : BNE + ; Fighter's Shield
|
||||
JSR .incrementShield
|
||||
BRL .done
|
||||
+ CPY.b #$05 : BNE + ; Red Shield
|
||||
JSR .incrementShield
|
||||
BRL .done
|
||||
+ CPY.b #$06 : BNE + ; Mirror Shield
|
||||
JSR .incrementShield
|
||||
BRL .done
|
||||
+ CPY.b #$07 : !BLT + ; Items 7 - D
|
||||
CPY.b #$0E : !BGE +
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$0F : !BLT + ; Items F - 16
|
||||
CPY.b #$17 : !BGE +
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$17 : BNE + ; Heart Piece
|
||||
JSR .incrementHeartPiece
|
||||
BRL .done
|
||||
+ CPY.b #$18 : !BLT + ; Items 18 - 1A
|
||||
CPY.b #$1B : !BGE +
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$1D : BNE + ; Book of Mudora - leave this above the 1B-1F condition
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$1B : !BLT + ; Items 1B - 1F
|
||||
CPY.b #$20 : !BGE +
|
||||
JSR .incrementA
|
||||
BRL .done
|
||||
+ CPY.b #$20 : BNE + ; Crystal
|
||||
JSR .incrementCrystal
|
||||
BRL .done
|
||||
+ CPY.b #$21 : BNE + ; Bug Net
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$22 : !BLT + ; Items 22 - 23
|
||||
CPY.b #$24 : !BGE +
|
||||
JSR .incrementMail
|
||||
BRL .done
|
||||
+ CPY.b #$24 : BNE + ; Small Key
|
||||
JSR .incrementKey
|
||||
BRL .done
|
||||
+ CPY.b #$25 : BNE + ; Compass
|
||||
JSR .incrementCompass
|
||||
BRL .done
|
||||
+ CPY.b #$26 : BNE + ; Liar Heart (Container)
|
||||
;JSR .incrementHeartContainer
|
||||
BRL .done
|
||||
+ CPY.b #$27 : BNE + ; 1 Bomb
|
||||
JSR .maybeIncrementBombs
|
||||
BRL .done
|
||||
+ CPY.b #$28 : BNE + ; 3 Bombs
|
||||
JSR .maybeIncrementBombs
|
||||
BRL .done
|
||||
+ CPY.b #$29 : BNE + ; Musoroom
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$2A : !BLT + ; Items 2A - 2D
|
||||
CPY.b #$2E : !BGE +
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$31 : BNE + ; 10 Bombs
|
||||
JSR .maybeIncrementBombs
|
||||
BRL .done
|
||||
+ CPY.b #$32 : BNE + ; Big Key
|
||||
JSR .incrementBigKey
|
||||
BRL .done
|
||||
+ CPY.b #$33 : BNE + ; Map
|
||||
JSR .incrementMap
|
||||
BRL .done
|
||||
+ CPY.b #$37 : !BLT + ; Items 37 - 39 - Pendants
|
||||
CPY.b #$3A : !BGE +
|
||||
JSR .incrementPendant
|
||||
BRL .done
|
||||
+ CPY.b #$3A : !BLT + ; Items 3A - 3B - Bow & Silver Arrows
|
||||
CPY.b #$3C : !BGE +
|
||||
JSR .incrementBow
|
||||
BRL .done
|
||||
+ CPY.b #$3C : BNE + ; Bottle w/Bee
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$3D : BNE + ; Bottle w/Fairy
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$3E : !BLT + ; Items 3E - 3F - Heart Containers
|
||||
CPY.b #$40 : !BGE +
|
||||
JSR .incrementHeartContainer
|
||||
BRL .done
|
||||
+ CPY.b #$48 : BNE + ; Bottle w/Gold Bee
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$49 : BNE + ; Fighter's Sword
|
||||
JSR .incrementSword
|
||||
BRL .done
|
||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
||||
JSR .incrementY
|
||||
BRL .done
|
||||
+ CPY.b #$4B : BNE + ; Pegasus Boots
|
||||
JSR .incrementA
|
||||
BRL .done
|
||||
+ CPY.b #$4C : BNE + ; Bomb Capacity Upgrade
|
||||
JSR .incrementCapacity
|
||||
JSR .maybeIncrementBombs
|
||||
BRL .done
|
||||
+ CPY.b #$4D : !BLT + ; Items 4D - 4F - Capacity Upgrades
|
||||
CPY.b #$50 : !BGE +
|
||||
JSR .incrementCapacity
|
||||
BRL .done
|
||||
+ CPY.b #$50 : BNE + ; Master Sword (Safe)
|
||||
JSR .incrementSword
|
||||
BRL .done
|
||||
+ CPY.b #$51 : !BLT + ; Items 4D - 4F - Capacity Upgrades
|
||||
CPY.b #$55 : !BGE +
|
||||
JSR .incrementCapacity
|
||||
BRL .done
|
||||
+ CPY.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
||||
JSR .incrementBow
|
||||
BRL .done
|
||||
+
|
||||
.done
|
||||
PLP : PLX : PLA
|
||||
RTL
|
||||
; WHICH BEE IS BOTTLED?
|
||||
; MAKE SURE FAIRY FOUNTAINS DON'T FUCK THE COUNTS UP
|
||||
|
||||
.incrementSword
|
||||
; CHECK FOR DUPLICATE SWORDS
|
||||
TYA ; load sword item
|
||||
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
||||
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter sword to normal one
|
||||
INC : CMP !HIGHEST_SWORD_LEVEL : !BLT + ; skip if highest is higher
|
||||
PHA
|
||||
LDA !HIGHEST_SWORD_LEVEL : AND #$F8 : ORA 1,s : STA !HIGHEST_SWORD_LEVEL
|
||||
PLA
|
||||
+
|
||||
|
||||
LDA $00 : PHA
|
||||
LDA.l FairySword : STA $00
|
||||
CPY $00 : BNE + ; increment if not the fairy sword
|
||||
LDA $7EF42A : BIT #$40 : BNE ++ ; skip if we have the fairy sword flag yet
|
||||
ORA.b #$40 : STA $7EF42A ; set fairy sword flag
|
||||
+
|
||||
LDA $7EF422 : !ADD #$20 : STA $7EF422 ; increment sword counter
|
||||
++
|
||||
PLA : STA $00
|
||||
RTS
|
||||
|
||||
.incrementShield
|
||||
; CHECK FOR DUPLICATE SHIELDS
|
||||
LDA $7EF422 : !ADD #$08 : AND #$18 : TAX
|
||||
LDA $7EF422 : AND #$E7 : STA $7EF422
|
||||
TXA : ORA $7EF422 : STA $7EF422
|
||||
RTS
|
||||
|
||||
.incrementBow
|
||||
CPY.b #$3B : BNE ++
|
||||
LDA $7EF42A : BIT #$20 : BEQ + : RTS : +
|
||||
ORA #$20 : STA $7EF42A
|
||||
++
|
||||
.incrementY
|
||||
LDA $7EF421 : !ADD #$08 : STA $7EF421
|
||||
RTS
|
||||
|
||||
.incrementA
|
||||
LDA $7EF421 : INC : AND #$07 : TAX
|
||||
LDA $7EF421 : AND #$F8 : STA $7EF421
|
||||
TXA : ORA $7EF421 : STA $7EF421
|
||||
RTS
|
||||
|
||||
.incrementPendant
|
||||
LDA $7EF429 : INC : AND #$03 : TAX
|
||||
LDA $7EF429 : AND #$FC : STA $7EF429
|
||||
TXA : ORA $7EF429 : STA $7EF429
|
||||
JSR .incrementBossSword
|
||||
RTS
|
||||
|
||||
.incrementCapacity
|
||||
%BottomHalf($7EF452)
|
||||
RTS
|
||||
|
||||
.incrementHeartPiece
|
||||
LDA $7EF448 : INC : AND #$1F : TAX
|
||||
LDA $7EF448 : AND #$E0 : STA $7EF448
|
||||
TXA : ORA $7EF448 : STA $7EF448
|
||||
RTS
|
||||
|
||||
.incrementHeartContainer
|
||||
%TopHalf($7EF429)
|
||||
RTS
|
||||
|
||||
.incrementCrystal
|
||||
LDA $7EF422 : INC : AND #$07 : TAX
|
||||
LDA $7EF422 : AND #$F8 : STA $7EF422
|
||||
TXA : ORA $7EF422 : STA $7EF422
|
||||
JSR .incrementBossSword
|
||||
RTS
|
||||
|
||||
.incrementMail
|
||||
LDA $7EF424 : !ADD #$40 : STA $7EF424
|
||||
RTS
|
||||
|
||||
.incrementKeyLong
|
||||
JSR .incrementKey
|
||||
RTL
|
||||
|
||||
.incrementKey
|
||||
PHA : PHX
|
||||
LDA $7EF424 : INC : AND #$3F : TAX
|
||||
LDA $7EF424 : AND #$C0 : STA $7EF424
|
||||
TXA : ORA $7EF424 : STA $7EF424
|
||||
PLX : PLA
|
||||
RTS
|
||||
|
||||
.incrementCompass
|
||||
%BottomHalf($7EF428)
|
||||
RTS
|
||||
|
||||
.incrementBigKey
|
||||
LDA $7EF427 : !ADD #$10 : STA $7EF427
|
||||
RTS
|
||||
|
||||
.incrementGTowerPreBigKey
|
||||
LDA $7EF42A : INC : AND #$1F : TAX
|
||||
LDA $7EF42A : AND #$E0 : STA $7EF42A
|
||||
TXA : ORA $7EF42A : STA $7EF42A
|
||||
RTS
|
||||
|
||||
.maybeIncrementBombs
|
||||
LDA $7EF42A : AND #$80 : BNE +
|
||||
LDA $7EF42A : ORA #$80 : STA $7EF42A
|
||||
JSR .incrementY
|
||||
+
|
||||
RTS
|
||||
|
||||
.incrementMap
|
||||
LDA $7EF428 : !ADD #$10 : STA $7EF428
|
||||
RTS
|
||||
|
||||
.incrementBossSwordLong
|
||||
JSR .incrementBossSword
|
||||
RTL
|
||||
|
||||
.incrementBossSword
|
||||
LDA $7EF359
|
||||
CMP #$01 : BNE +
|
||||
%TopHalf($7EF425)
|
||||
+ CMP #$02 : BNE +
|
||||
%BottomHalf($7EF425)
|
||||
+ CMP #$03 : BNE +
|
||||
%TopHalf($7EF426)
|
||||
+ CMP #$04 : BNE +
|
||||
%BottomHalf($7EF426)
|
||||
+
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Link_ReceiveItem_HUDRefresh:
|
||||
;--------------------------------------------------------------------------------
|
||||
Link_ReceiveItem_HUDRefresh:
|
||||
LDA $7EF343 : BNE + ; skip if we have bombs
|
||||
LDA $7EF375 : BEQ + ; skip if we are filling no bombs
|
||||
DEC : STA $7EF375 ; decrease bomb fill count
|
||||
LDA.b #$01 : STA $7EF343 ; increase actual bomb count
|
||||
+
|
||||
|
||||
JSL.l HUD_RefreshIconLong ; thing we wrote over
|
||||
JSL.l PostItemGet
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; HandleBombAbsorbtion: ; NOTE CAREFULLY HOW THESE TWO FUNCTIONS ARE PARTIALLY COMMENTED OUT
|
||||
;--------------------------------------------------------------------------------
|
||||
HandleBombAbsorbtion:
|
||||
STA $7EF375 ; thing we wrote over
|
||||
;RTL ; don't return, fall throgh to next function
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Link_ReceiveItem_PreselectItems:
|
||||
;--------------------------------------------------------------------------------
|
||||
;Link_ReceiveItem_PreselectItems:
|
||||
LDA $0202 : BNE + ; skip if we already have some item selected
|
||||
; LDA $7EF343 : BEQ + ; skip if we have no bombs
|
||||
LDA.b #$04 : STA $0202 ; set selected item to bombs
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; AddYMarker:
|
||||
;--------------------------------------------------------------------------------
|
||||
;!JAR_STATUS = "$7F5030";
|
||||
AddYMarker:
|
||||
LDA $0202 : AND.w #$FF ; load item value
|
||||
CMP.w #$02 : BNE + ; boomerang
|
||||
LDA !INVENTORY_SWAP : AND.w #$C0 : CMP.w #$C0 : BEQ .drawYBubble : BRA .drawNormal
|
||||
+ CMP.w #$01 : BNE + ; bow
|
||||
LDA !INVENTORY_SWAP_2 : AND.w #$C0 : CMP.w #$C0 : BEQ .drawYBubble : BRA .drawNormal
|
||||
+ CMP.w #$05 : BNE + ; powder
|
||||
LDA !INVENTORY_SWAP : AND.w #$30 : CMP.w #$30 : BEQ .drawYBubble : BRA .drawNormal
|
||||
+ CMP.w #$0D : BNE + ; flute
|
||||
LDA !INVENTORY_SWAP : BIT.w #$04 : BEQ .drawNormal ; make sure we have shovel
|
||||
AND.w #$03 : BNE .drawYBubble ; make sure we have one of the flutes
|
||||
BRA .drawNormal
|
||||
+ CMP.w #$10 : BEQ .drawJarMarker
|
||||
|
||||
.drawNormal
|
||||
LDA.w #$7C60
|
||||
BRA .drawTile
|
||||
|
||||
.drawJarMarker
|
||||
;SEP #$20 : LDA !JAR_STATUS : INC : AND.b #$01 : STA !JAR_STATUS : REP #$20 : BEQ .drawXBubble
|
||||
LDA $0207 : AND.w #$0020 : BNE .drawXBubble
|
||||
|
||||
.drawYBubble
|
||||
LDA.w #$3D4F
|
||||
BRA .drawTile
|
||||
|
||||
.drawXBubble
|
||||
JSR MakeCircleBlue
|
||||
LDA.w #$2D3E
|
||||
|
||||
.drawTile
|
||||
STA $FFC4, Y
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; MakeCircleBlue
|
||||
; this is horrible, make it better
|
||||
;--------------------------------------------------------------------------------
|
||||
MakeCircleBlue:
|
||||
LDA $FFC0, Y : AND.w #$EFFF : STA $FFC0, Y
|
||||
LDA $FFC2, Y : AND.w #$EFFF : STA $FFC2, Y
|
||||
|
||||
LDA $FFFE, Y : AND.w #$EFFF : STA $FFFE, Y
|
||||
LDA $0004, Y : AND.w #$EFFF : STA $0004, Y
|
||||
|
||||
LDA $003E, Y : AND.w #$EFFF : STA $003E, Y
|
||||
LDA $0044, Y : AND.w #$EFFF : STA $0044, Y
|
||||
|
||||
LDA $0080, Y : AND.w #$EFFF : STA $0080, Y
|
||||
LDA $0082, Y : AND.w #$EFFF : STA $0082, Y
|
||||
|
||||
LDA $FFBE, Y : AND.w #$EFFF : STA $FFBE, Y
|
||||
LDA $FFC4, Y : AND.w #$EFFF : STA $FFC4, Y
|
||||
LDA $0084, Y : AND.w #$EFFF : STA $0084, Y
|
||||
LDA $007E, Y : AND.w #$EFFF : STA $007E, Y
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; UpgradeFlute:
|
||||
;--------------------------------------------------------------------------------
|
||||
UpgradeFlute:
|
||||
LDA !INVENTORY_SWAP : AND #$FC : ORA #$01 : STA !INVENTORY_SWAP ; switch to the working flute
|
||||
LDA.b #$03 : STA $7EF34C ; upgrade primary inventory
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; GetWitchLootOAMTableIndex
|
||||
; in: A - Loot ID
|
||||
; out: A - Loot OAM Table Index
|
||||
;--------------------------------------------------------------------------------
|
||||
GetWitchLootOAMTableIndex:
|
||||
PHX
|
||||
PHB : PHK : PLB
|
||||
;--------
|
||||
TAX : LDA .gfxSlots, X ; look up item gfx
|
||||
PLB : PLX
|
||||
RTL
|
||||
|
||||
;DATA - Loot Identifier to Sprite ID
|
||||
{
|
||||
.gfxSlots
|
||||
db $FF, $FF, $FF, $FF, $05, $06, $FF, $0C
|
||||
db $0B, $0D, $0A, $07, $13, $0E, $FF, $FF
|
||||
|
||||
db $FF, $FF, $FF, $FF, $FF, $09, $FF, $FF
|
||||
db $08, $FF, $FF, $10, $11, $12, $FF, $FF
|
||||
|
||||
db $FF, $FF, $03, $04, $FF, $FF, $02, $FF
|
||||
db $FF, $FF, $14, $15, $17, $16, $15, $17
|
||||
|
||||
db $16, $0F, $FF, $FF, $FF, $FF, $FF, $FF
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $02, $02
|
||||
|
||||
db $FF, $FF, $FF, $FF, $01, $FF, $FF, $FF
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; PrepItemScreenBigKey:
|
||||
;--------------------------------------------------------------------------------
|
||||
PrepItemScreenBigKey:
|
||||
STZ $02
|
||||
STZ $03
|
||||
REP #$30 ; thing we wrote over - set 16-bit accumulator
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; LoadPowder:
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadPowder:
|
||||
JSL.l Sprite_SpawnDynamically ; thing we wrote over
|
||||
LDA WitchItem
|
||||
JSL.l PrepDynamicTile
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; InitializeBottles:
|
||||
;--------------------------------------------------------------------------------
|
||||
InitializeBottles:
|
||||
STA $7EF35C, X ; thing we wrote over
|
||||
PHA
|
||||
LDA $7EF34F : BNE +
|
||||
TXA : INC : STA $7EF34F ; write bottle index to menu properly
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; DrawPowder:
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawPowder:
|
||||
LDA $02DA : BNE .defer ; defer if link is buying a potion
|
||||
LDA.l !REDRAW : BEQ +
|
||||
LDA WitchItem
|
||||
JSL.l PrepDynamicTile
|
||||
LDA #$00 : STA.l !REDRAW ; reset redraw flag
|
||||
BRA .defer
|
||||
+
|
||||
LDA WitchItem
|
||||
JSL.l DrawDynamicTile
|
||||
.defer
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; LoadMushroom:
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadMushroom:
|
||||
LDA.b #$00 : STA $0DC0, X ; thing we wrote over
|
||||
.justGFX
|
||||
;LDA MushroomItem
|
||||
;JSL.l PrepDynamicTile
|
||||
|
||||
PHA
|
||||
|
||||
LDA #$01 : STA !REDRAW
|
||||
LDA $5D : CMP #$14 : BEQ .skip ; skip if we're mid-mirror
|
||||
|
||||
LDA #$00 : STA !REDRAW
|
||||
LDA MushroomItem
|
||||
JSL.l PrepDynamicTile
|
||||
|
||||
.skip
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; DrawMushroom:
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawMushroom:
|
||||
PHA : PHY
|
||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
||||
JSL.l LoadMushroom_justGFX
|
||||
BRA .done ; don't draw on the init frame
|
||||
|
||||
.skipInit
|
||||
LDA MushroomItem
|
||||
JSL.l DrawDynamicTile
|
||||
|
||||
.done
|
||||
PLY : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; CollectPowder:
|
||||
;--------------------------------------------------------------------------------
|
||||
CollectPowder:
|
||||
LDA.l WitchItem : TAY ; load witch item
|
||||
STZ $02E9 ; item from NPC
|
||||
JSL.l Link_ReceiveItem
|
||||
;JSL.l FullInventoryExternal
|
||||
JSL.l ItemSet_Powder
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; RemoveMushroom:
|
||||
;--------------------------------------------------------------------------------
|
||||
RemoveMushroom:
|
||||
LDA !INVENTORY_SWAP : AND #$DF : STA !INVENTORY_SWAP ; remove the mushroom
|
||||
AND #$10 : BEQ .empty ; check if we have powder
|
||||
LDA.b #$02 : STA $7EF344 ; give powder if we have it
|
||||
RTL
|
||||
.empty
|
||||
LDA.b #$00 : STA $7EF344 ; clear the inventory slot if we don't have powder
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; DrawMagicHeader:
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawMagicHeader:
|
||||
LDA $7EF37B : AND.w #$00FF : CMP.w #$0002 : BEQ .quarterMagic
|
||||
.halfMagic
|
||||
LDA.w #$28F7 : STA $7EC704
|
||||
LDA.w #$2851 : STA $7EC706
|
||||
LDA.w #$28FA : STA $7EC708
|
||||
RTL
|
||||
.quarterMagic
|
||||
LDA.w #$28F7 : STA $7EC704
|
||||
LDA.w #$2800 : STA $7EC706
|
||||
LDA.w #$2801 : STA $7EC708
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; FixShovelLock:
|
||||
;--------------------------------------------------------------------------------
|
||||
;FixShovelLock:
|
||||
; LDA $037A : CMP #$01 : BEQ + ; skip if link is shoveling
|
||||
; LDA $7EF34C ; load shovel/flute item ID
|
||||
; +
|
||||
; CMP #$00
|
||||
;RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; SpawnShovelItem:
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
SpawnShovelItem:
|
||||
LDA.b #$01 : STA !REDRAW
|
||||
|
||||
LDA $03FC : BEQ +
|
||||
JSL DiggingGameGuy_AttemptPrizeSpawn
|
||||
BRL .skip
|
||||
+
|
||||
|
||||
LDA $035B : AND.b #$01 : BNE + : BRL .skip : + ; corner dig fix
|
||||
|
||||
PHY : PHP
|
||||
PHB : PHK : PLB
|
||||
SEP #$30 ; set 8-bit accumulator and index registers
|
||||
|
||||
LDA $1B : BEQ + : JMP .no_drop : + ; skip if indoors
|
||||
|
||||
LDA $8A : CMP #$2A : BEQ .no_drop ; don't drop in the haunted grove
|
||||
CMP #$68 : BEQ .no_drop ; don't drop in the digging game area
|
||||
|
||||
JSL GetRandomInt : BIT #$03 : BNE .no_drop ; drop with 1/4 chance
|
||||
|
||||
LSR #2 : TAX ; clobber lower 2 bis - we have 64 slots now
|
||||
|
||||
LDA .spawn_table, X ; look up the drop on the table
|
||||
|
||||
;most of this part below is copied from the digging game
|
||||
|
||||
STA $7FFE00
|
||||
JSL Sprite_SpawnDynamically
|
||||
|
||||
LDX.b #$00
|
||||
LDA $2F : CMP.b #$04 : BEQ + : INX : +
|
||||
|
||||
LDA .x_speeds, X : STA $0D50, Y
|
||||
|
||||
LDA.b #$00 : STA $0D40, Y
|
||||
LDA.b #$18 : STA $0F80, Y
|
||||
LDA.b #$FF : STA $0B58, Y
|
||||
LDA.b #$30 : STA $0F10, Y
|
||||
|
||||
LDA $22 : !ADD .x_offsets, X
|
||||
AND.b #$F0 : STA $0D10, Y
|
||||
LDA $23 : ADC.b #$00 : STA $0D30, Y
|
||||
|
||||
LDA $20 : !ADD.b #$16 : AND.b #$F0 : STA $0D00, Y
|
||||
LDA $21 : ADC.b #$00 : STA $0D20, Y
|
||||
|
||||
LDA.b #$00 : STA $0F20, Y
|
||||
TYX
|
||||
|
||||
LDA.b #$30 : JSL Sound_SetSfx3PanLong
|
||||
|
||||
.no_drop
|
||||
PLB
|
||||
PLP : PLY
|
||||
.skip
|
||||
RTL
|
||||
|
||||
;DATA - Shovel Spawn Information
|
||||
{
|
||||
|
||||
.x_speeds
|
||||
db $F0
|
||||
db $10
|
||||
|
||||
.x_offsets
|
||||
db $00
|
||||
db $13
|
||||
|
||||
.spawn_table
|
||||
db $B2 ; Gold Bee
|
||||
db $D8, $D8, $D8 ; Single Heart
|
||||
db $D8, $D8, $D8, $D8, $D8 ; Single Heart
|
||||
db $D9, $D9, $D9, $D9, $D9 ; Green Rupee
|
||||
db $DA, $DA, $DA, $DA, $DA ; Blue Rupee
|
||||
db $DB, $DB, $DB, $DB, $DB ; Red Rupee
|
||||
db $DC, $DC, $DC, $DC, $DC ; 1 Bomb
|
||||
db $DD, $DD, $DD, $DD, $DD ; 4 Bombs
|
||||
db $DE, $DE, $DE, $DE, $DE ; 8 Bombs
|
||||
db $DF, $DF, $DF, $DF, $DF ; Small Magic
|
||||
db $E0, $E0, $E0, $E0, $E0 ; Large Magic
|
||||
db $E1, $E1, $E1, $E1, $E1 ; 5 Arrows
|
||||
db $E2, $E2, $E2, $E2, $E2 ; 10 Arrows
|
||||
db $E3, $E3, $E3, $E3, $E3 ; Fairy
|
||||
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
68
itemdowngrade.asm
Normal file
68
itemdowngrade.asm
Normal file
@@ -0,0 +1,68 @@
|
||||
;================================================================================
|
||||
; Item Downgrade Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
ItemDowngradeFix:
|
||||
JSL.l AddInventory
|
||||
BMI .dontWrite ; thing we wrote over part 1
|
||||
|
||||
CPY.b #$1B : BEQ .isPowerGloves ; Power Gloves
|
||||
CPY.b #$05 : BEQ .isRedShield ; Red Shield
|
||||
CPY.b #$04 : BEQ .isBlueShield ; Blue Shield
|
||||
CPY.b #$0C : BEQ .isBlueBoomerang ; Blue Boomerang
|
||||
CPY.b #$0B : BEQ .isBow ; Bow
|
||||
CPY.b #$3A : BEQ .isBowAndArrows ; Bow
|
||||
|
||||
CPY.b #$49 : BEQ .isFightersSword ; Fighter's Sword
|
||||
CPY.b #$01 : BEQ .isMasterSword ; Master Sword
|
||||
CPY.b #$50 : BEQ .isMasterSword ; Master Sword (Safe)
|
||||
CPY.b #$02 : BEQ .isTemperedSword ; Tempered Sword
|
||||
|
||||
CPY.b #$3B : BEQ .isSilverArrowBow ; Silver Arrow Bow
|
||||
CPY.b #$2A : BEQ .isRedBoomerang ; Red Boomerang
|
||||
CPY.b #$0D : BEQ .isMagicPowder ; Magic Powder
|
||||
CPY.b #$14 : BEQ .isFlute ; Flute
|
||||
CPY.b #$13 : BEQ .isShovel ; Shovel
|
||||
CPY.b #$29 : BEQ .isMushroom ; Mushroom
|
||||
|
||||
.done
|
||||
STA [$00] ; thing we wrote over part 2
|
||||
.dontWrite
|
||||
RTL
|
||||
.isPowerGloves
|
||||
.isBlueShield
|
||||
.isRedShield
|
||||
.isBlueBoomerang
|
||||
.isBow
|
||||
.isBowAndArrows
|
||||
CMP [$00] : !BGE .done ; finished if we're upgrading
|
||||
LDA [$00] ; reload old value
|
||||
RTL
|
||||
.isSilverArrowBow
|
||||
.isRedBoomerang
|
||||
.isMagicPowder
|
||||
.isFlute
|
||||
.isShovel
|
||||
.isMushroom
|
||||
PHA
|
||||
LDA [$00] : BNE + ; don't upgrade if we already have the toggle for it
|
||||
PLA
|
||||
STA [$00]
|
||||
RTL
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
.isFightersSword
|
||||
.isMasterSword
|
||||
.isTemperedSword
|
||||
PHA
|
||||
TYA ; load sword item
|
||||
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
||||
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
||||
INC : CMP !HIGHEST_SWORD_LEVEL : !BGE + ; skip if highest is lower (this is an upgrade)
|
||||
LDA !HIGHEST_SWORD_LEVEL : DEC ; convert to item id
|
||||
TAY : PLA : LDA !HIGHEST_SWORD_LEVEL ; put sword id into the thing to write
|
||||
BRL .done
|
||||
+
|
||||
PLA
|
||||
BRL .done
|
||||
;================================================================================
|
||||
33
lampmantlecone.asm
Normal file
33
lampmantlecone.asm
Normal file
@@ -0,0 +1,33 @@
|
||||
;================================================================================
|
||||
; Lamp Mantle & Light Cone Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
; Output: 0 for darkness, 1 for lamp cone
|
||||
;--------------------------------------------------------------------------------
|
||||
LampCheck:
|
||||
LDA $7EF34A : BNE .done ; skip if we already have lantern
|
||||
|
||||
LDA $7EF3CA : BNE +
|
||||
.lightWorld
|
||||
LDA $040C : BNE ++ ; check if we're in sewers
|
||||
LDA LampConeSewers : BRA .done
|
||||
++
|
||||
LDA LampConeLightWorld : BRA .done
|
||||
+
|
||||
.darkWorld
|
||||
LDA LampConeDarkWorld
|
||||
.done
|
||||
;BNE + : STZ $1D : + ; remember to turn cone off after a torch
|
||||
RTL
|
||||
;================================================================================
|
||||
;--------------------------------------------------------------------------------
|
||||
; Output: 0 locked, 1 open
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckForZelda:
|
||||
LDA.l OpenMode : BEQ + ; Skip if not open mode
|
||||
LDA.b #$01 ; open mode, pretend we have zelda anyway
|
||||
RTL
|
||||
+
|
||||
LDA $7EF3CC
|
||||
RTL
|
||||
;================================================================================
|
||||
;LDA $7EF3CA : EOR #$40 : LSR #6 : AND #$01 ; return the same result as having the lantern in the light world
|
||||
7
license.txt
Normal file
7
license.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Copyright 2016, 2017 ALT Computer Solutions
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
24
maidencrystals.asm
Normal file
24
maidencrystals.asm
Normal file
@@ -0,0 +1,24 @@
|
||||
;================================================================================
|
||||
; Maiden Crystal Fixes
|
||||
;================================================================================
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; MaidenCrystalScript
|
||||
;--------------------------------------------------------------------------------
|
||||
MaidenCrystalScript:
|
||||
STZ $02D8
|
||||
STZ $02DA
|
||||
STZ $2E
|
||||
LDA #$02 : STA $2F
|
||||
|
||||
; Load the dungeon index. Is it the Dark Palace?
|
||||
;LDA $040C : !SUB.b #$0A : TAY : CPY.b #$02 : BNE +
|
||||
; LDA $7EF3C7 : CMP.b #$07 : BCS ++ : LDA.b #$07 : STA $7EF3C7 : ++
|
||||
;+
|
||||
|
||||
LDA $7EF37A : AND.b #$7F : CMP.b #$7F : BNE + ; check if we have all crystals
|
||||
LDA.b #$08 : STA $7EF3C7 ; Update the map icon to just be Ganon's Tower
|
||||
+
|
||||
|
||||
JMP $1ECF35 ; <- F4F35 - sprite_crystal_maiden.asm : 426
|
||||
;--------------------------------------------------------------------------------
|
||||
16
map.asm
Normal file
16
map.asm
Normal file
@@ -0,0 +1,16 @@
|
||||
; ==============================================================================
|
||||
PrepMapZoom:
|
||||
LDA.b #$80 : STA $211A ; thing we wrote over
|
||||
|
||||
LDA.b #$00 : STA !MAP_ZOOM
|
||||
RTL
|
||||
; ==============================================================================
|
||||
ForceMapZoom:
|
||||
LDA !MAP_ZOOM : BNE .isPreset
|
||||
LDA.b #$01
|
||||
LDA.b #$01 : STA !MAP_ZOOM
|
||||
RTL
|
||||
.isPreset
|
||||
LDA $F6 : AND.b #$70
|
||||
RTL
|
||||
; ==============================================================================
|
||||
74
medallions.asm
Normal file
74
medallions.asm
Normal file
@@ -0,0 +1,74 @@
|
||||
;================================================================================
|
||||
; Medallion Changes & Fixes
|
||||
;--------------------------------------------------------------------------------
|
||||
TryOpenMire:
|
||||
; Checks if we're in the Swamp of Evil.
|
||||
LDA $8A : CMP.b #$70 : BNE .untriggered
|
||||
|
||||
; Checks whether the Misery Mire dungeon is already revealed.
|
||||
LDA $7EF2F0 : AND.b #$20 : BNE .untriggered
|
||||
|
||||
; You have to be in the trigger window.
|
||||
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered
|
||||
|
||||
; Do the 3rd animation for opening entrances
|
||||
LDA.b #$03 : STA $04C6
|
||||
|
||||
STZ $B0 ; reset the sub-submodule index
|
||||
STZ $C8 ; reset this other index.
|
||||
|
||||
.untriggered
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
TryOpenTRock:
|
||||
; Checks if we're at Turtle Rock.
|
||||
LDA $8A : CMP.b #$47 : BNE .untriggered
|
||||
|
||||
; Checks whether the Turtle Rock dungeon is already revealed.
|
||||
LDA $7EF2C7 : AND.b #$20 : BNE .untriggered
|
||||
|
||||
; You have to be in the trigger window.
|
||||
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered
|
||||
|
||||
; Do the 4rd animation for opening entrances
|
||||
LDA.b #$04 : STA $04C6
|
||||
|
||||
STZ $B0 ; reset the sub-submodule index
|
||||
STZ $C8 ; reset this other index.
|
||||
|
||||
.untriggered
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
MedallionTrigger_Bombos:
|
||||
STZ $50 ; stuff we wrote over
|
||||
STZ $0FC1
|
||||
|
||||
PHA
|
||||
LDA.l MireRequiredMedallion : BNE +
|
||||
JSL.l TryOpenMire
|
||||
+ LDA.l TRockRequiredMedallion : BNE +
|
||||
JSL.l TryOpenTRock
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
MedallionTrigger_Ether:
|
||||
PHA
|
||||
LDA.l MireRequiredMedallion : CMP #$01 : BNE +
|
||||
JSL.l TryOpenMire
|
||||
+ LDA.l TRockRequiredMedallion : CMP #$01 : BNE +
|
||||
JSL.l TryOpenTRock
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
MedallionTrigger_Quake:
|
||||
PHA
|
||||
LDA.l MireRequiredMedallion : CMP #$02 : BNE +
|
||||
JSL.l TryOpenMire
|
||||
+ LDA.l TRockRequiredMedallion : CMP #$02 : BNE +
|
||||
JSL.l TryOpenTRock
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
732
newitems.asm
Executable file
732
newitems.asm
Executable file
@@ -0,0 +1,732 @@
|
||||
;================================================================================
|
||||
; New Item Handlers
|
||||
;--------------------------------------------------------------------------------
|
||||
; REMEMBER TO UPDATE THE TABLES IN UTILITIES.ASM!
|
||||
;--------------------------------------------------------------------------------
|
||||
; #$4C - Bomb Capacity (50)
|
||||
; #$4D - Arrow Capacity (70)
|
||||
; #$4E - 1/2 Magic
|
||||
; #$4F - 1/4 Magic
|
||||
; #$50 - Safe Master Sword
|
||||
; #$51 - Bomb Capacity (+5)
|
||||
; #$52 - Bomb Capacity (+10)
|
||||
; #$53 - Arrow Capacity (+5)
|
||||
; #$54 - Arrow Capacity (+10)
|
||||
; #$55 - Programmable Item 1
|
||||
; #$56 - Programmable Item 2
|
||||
; #$57 - Programmable Item 3
|
||||
; #$58 - Upgrade-Only Silver Arrows
|
||||
; #$59 - Rupoor
|
||||
; #$5A - Null Item
|
||||
; #$5B - Red Clock
|
||||
; #$5C - Blue Clock
|
||||
; #$5D - Green Clock
|
||||
; #$5E - Progressive Sword
|
||||
; #$5F - Progressive Shield
|
||||
; #$60 - Progressive Armor
|
||||
; #$61 - Progressive Lifting Glove
|
||||
; #$62 - RNG Pool Item (Single)
|
||||
; #$63 - RNG Pool Item (Multi)
|
||||
; #$6A - Goal Item (Single/Triforce)
|
||||
; #$6B - Goal Item (Multi/Power Star)
|
||||
; #$70 - Maps
|
||||
; #$80 - Compasses
|
||||
; #$90 - Big Keys
|
||||
; #$A0 - Small Keys
|
||||
;--------------------------------------------------------------------------------
|
||||
;GetAnimatedSpriteGfxFile:
|
||||
; LDY.b #$32
|
||||
; CMP.b #$39 : BCS + ; If tile index >= 0x39, use sprite file 0x32 (Blank file)
|
||||
;
|
||||
; LDY.b #$5D
|
||||
;
|
||||
; CMP.b #$23 : BEQ + ; If tile index is 0x23 (Pendant)...
|
||||
; CMP.b #$37 : BCS + ; ...or tile index >= 0x37, use sprite file 0x5D (Pendant, Boots, 20 Rupees)
|
||||
;
|
||||
; LDY.b #$5C
|
||||
;
|
||||
; CMP.b #$0C : BEQ + ; If tile index is 0x0C (Flute)...
|
||||
; CMP.b #$24 : BCS + ; ...or tile index >= 24, use sprite file 0x5C (Rupees, Crystal, Heart Piece ... ...)
|
||||
;
|
||||
; ; Otherwise, use sprite file 0x5B (Medallions, Mirror, Flippers, Lantern, Compass...)
|
||||
; LDY.b #$5B
|
||||
;+
|
||||
;JML GetAnimatedSpriteGfxFile_return
|
||||
;--------------------------------------------------------------------------------
|
||||
GetAnimatedSpriteGfxFile:
|
||||
CMP.b #$0C : BNE +
|
||||
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
||||
+
|
||||
CMP.b #$23 : BNE +
|
||||
LDY.b #$5D : JML GetAnimatedSpriteGfxFile_return
|
||||
+
|
||||
CMP.b #$48 : BNE +
|
||||
LDY.b #$60 : JML GetAnimatedSpriteGfxFile_return
|
||||
+
|
||||
|
||||
CMP.b #$24 : !BGE +
|
||||
LDY.b #$5B : JML GetAnimatedSpriteGfxFile_return
|
||||
+
|
||||
CMP.b #$37 : !BGE +
|
||||
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
||||
+
|
||||
CMP.b #$39 : !BGE +
|
||||
LDY.b #$5D : JML GetAnimatedSpriteGfxFile_return
|
||||
+
|
||||
LDY.b #$32
|
||||
JML GetAnimatedSpriteGfxFile_return
|
||||
;--------------------------------------------------------------------------------
|
||||
GetAnimatedSpriteBufferPointer_table:
|
||||
; Original data:
|
||||
dw $09C0, $0030, $0060, $0090, $00C0, $0300, $0318, $0330
|
||||
dw $0348, $0360, $0378, $0390, $0930, $03F0, $0420, $0450
|
||||
|
||||
dw $0468, $0600, $0630, $0660, $0690, $06C0, $06F0, $0720 ; disassembly (incorrectly?) says this is $0270
|
||||
dw $0750, $0768, $0900, $0930, $0960, $0990, $09F0, $0000
|
||||
|
||||
dw $00F0, $0A20, $0A50, $0660, $0600, $0618, $0630, $0648
|
||||
dw $0678, $06D8, $06A8, $0708, $0738, $0768, $0960, $0900
|
||||
|
||||
dw $03C0, $0990, $09A8, $09C0, $09D8, $0A08, $0A38, $0600
|
||||
dw $0630
|
||||
; New data:
|
||||
dw $0600, $0630, $0660, $0690 ; 50 Bombs / 70 Arrows / Half Magic / Quarter Magic
|
||||
dw $06C0, $06F0, $0720 ; +5/+10 Bomb Arrows
|
||||
|
||||
;#$4x
|
||||
dw $0750 ; +10 Arrows
|
||||
dw $0900 ; Upgrade-Only Silver Arrows
|
||||
dw $09D8 ; Unused
|
||||
dw $0930, $0960, $0990, $09C0 ; Lvl 1/2/3/4 Sword (Freestanding)
|
||||
dw $09F0 ; Null-Item
|
||||
dw $09C0 ; Clock
|
||||
dw $0A20 ; Triforce
|
||||
dw $0A50 ; Power Star
|
||||
|
||||
GetAnimatedSpriteBufferPointer:
|
||||
;PHB : PHK : PLB
|
||||
LDA.b $00 : ADC.l GetAnimatedSpriteBufferPointer_table, X
|
||||
;PLB
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
macro ProgrammableItemLogic(index)
|
||||
LDA.l ProgrammableItemLogicPointer_<index> : BNE ?jump
|
||||
LDA.l ProgrammableItemLogicPointer_<index>+1 : BNE ?jump
|
||||
LDA.l ProgrammableItemLogicPointer_<index>+2 : BNE ?jump
|
||||
BRA ?end
|
||||
?jump:
|
||||
JSL.l ProgrammableItemLogicJump_<index>
|
||||
?end:
|
||||
endmacro
|
||||
|
||||
macro ValueShift()
|
||||
TAX : LDA.b #$01
|
||||
?start:
|
||||
CPX #$00 : BEQ ?end
|
||||
ASL
|
||||
DEX
|
||||
BRA ?start : ?end:
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHALLENGE_TIMER = "$7EF454"
|
||||
!GOAL_COUNTER = "$7EF460"
|
||||
AddReceivedItemExpandedGetItem:
|
||||
;STA $FFFFFF
|
||||
PHX
|
||||
LDA $02D8 ; check inventory
|
||||
CMP.b #$4C : BNE + ; 50 bombs
|
||||
;LDA.b #$07 : STA $7EF370 ; upgrade bombs
|
||||
LDA.b #50 : !SUB.l StartingMaxBombs : STA $7EF370 ; upgrade bombs
|
||||
LDA.b #50 : STA $7EF375 ; fill bombs
|
||||
BRL .done
|
||||
+ CMP.b #$4D : BNE + ; 70 arrows
|
||||
;LDA #$07 : STA $7EF371 ; upgrade arrows
|
||||
LDA.b #70 : !SUB.l StartingMaxArrows : STA $7EF371 ; upgrade arrows
|
||||
LDA.b #70 : STA $7EF376 ; fill arrows
|
||||
BRL .done
|
||||
+ CMP.b #$4E : BNE + ; 1/2 magic
|
||||
LDA $7EF37B : CMP #$02 : !BGE ++
|
||||
INC : STA $7EF37B ; upgrade magic
|
||||
++
|
||||
LDA.b #$80 : STA $7EF373 ; fill magic
|
||||
BRL .done
|
||||
+ CMP.b #$4F : BNE + ; 1/4 magic
|
||||
LDA.b #$02 : STA $7EF37B ; upgrade magic
|
||||
LDA.b #$80 : STA $7EF373 ; fill magic
|
||||
BRL .done
|
||||
+ CMP.b #$50 : BNE + ; Master Sword (Safe)
|
||||
LDA $7EF359 : CMP.b #$02 : !BGE + ; skip if we have a better sword
|
||||
LDA.b #$02 : STA $7EF359 ; set master sword
|
||||
BRL .done
|
||||
+ CMP.b #$51 : BNE + ; +5 Bombs
|
||||
LDA $7EF370 : !ADD.b #$05 : STA $7EF370 ; upgrade bombs +5
|
||||
LDA.l Upgrade5BombsRefill : STA $7EF375 ; fill bombs
|
||||
BRL .done
|
||||
+ CMP.b #$52 : BNE + ; +10 Bombs
|
||||
LDA $7EF370 : !ADD.b #$0A : STA $7EF370 ; upgrade bombs +10
|
||||
LDA.l Upgrade10BombsRefill : STA $7EF375 ; fill bombs
|
||||
BRL .done
|
||||
+ CMP.b #$53 : BNE + ; +5 Arrows
|
||||
LDA $7EF371 : !ADD.b #$05 : STA $7EF371 ; upgrade arrows +5
|
||||
LDA.l Upgrade5ArrowsRefill : STA $7EF376 ; fill arrows
|
||||
BRL .done
|
||||
+ CMP.b #$54 : BNE + ; +10 Arrows
|
||||
LDA $7EF371 : !ADD.b #$0A : STA $7EF371 ; upgrade arrows +10
|
||||
LDA.l Upgrade10ArrowsRefill : STA $7EF376 ; fill arrows
|
||||
BRL .done
|
||||
+ CMP.b #$55 : BNE + ; Programmable Object 1
|
||||
%ProgrammableItemLogic(1)
|
||||
BRL .done
|
||||
+ CMP.b #$56 : BNE + ; Programmable Object 2
|
||||
%ProgrammableItemLogic(2)
|
||||
BRL .done
|
||||
+ CMP.b #$57 : BNE + ; Programmable Object 3
|
||||
%ProgrammableItemLogic(3)
|
||||
BRL .done
|
||||
+ CMP.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
||||
+ CMP.b #$59 : BNE + ; 1 Rupoor
|
||||
REP #$20 : LDA $7EF360 : !SUB RupoorDeduction : STA $7EF360 : SEP #$20 ; Take 1 rupee
|
||||
BRL .done
|
||||
+ CMP.b #$5A : BNE + ; Null Item
|
||||
BRL .done
|
||||
+ CMP.b #$5B : BNE + ; Red Clock
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !CHALLENGE_TIMER : !ADD.l RedClockAmount : STA !CHALLENGE_TIMER
|
||||
LDA !CHALLENGE_TIMER+2 : ADC.l RedClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
BRL .done
|
||||
+ CMP.b #$5C : BNE + ; Blue Clock
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !CHALLENGE_TIMER : !ADD.l BlueClockAmount : STA !CHALLENGE_TIMER
|
||||
LDA !CHALLENGE_TIMER+2 : ADC.l BlueClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
BRL .done
|
||||
+ CMP.b #$5D : BNE + ; Green Clock
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !CHALLENGE_TIMER : !ADD.l GreenClockAmount : STA !CHALLENGE_TIMER
|
||||
LDA !CHALLENGE_TIMER+2 : ADC.l GreenClockAmount+2 : STA !CHALLENGE_TIMER+2
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
BRL .done
|
||||
+ CMP.b #$5E : BNE + ; Progressive Sword
|
||||
BRL .done
|
||||
+ CMP.b #$5F : BNE + ; Progressive Shield
|
||||
BRL .done
|
||||
+ CMP.b #$60 : BNE + ; Progressive Armor
|
||||
BRL .done
|
||||
+ CMP.b #$61 : BNE + ; Progressive Lifting Glove
|
||||
BRL .done
|
||||
+ CMP.b #$62 : BNE + ; RNG Pool Item (Single)
|
||||
BRL .done
|
||||
+ CMP.b #$63 : BNE + ; RNG Pool Item (Multi)
|
||||
BRL .done
|
||||
+ CMP.b #$6A : BNE + ; Goal Collectable (Single/Triforce)
|
||||
JSL.l StatsFinalPrep
|
||||
BRL .done
|
||||
+ CMP.b #$6B : BNE + ; Goal Collectable (Multi/Power Star)
|
||||
BRA .multi_collect
|
||||
+ CMP.b #$6C : BNE + ; Goal Collectable (Multi/Power Star) Alternate Graphic
|
||||
.multi_collect
|
||||
LDA GoalItemRequirement : BEQ ++
|
||||
LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER
|
||||
CMP GoalItemRequirement : !BLT ++ : JSL.l StatsFinalPrep : ++
|
||||
BRL .done
|
||||
+ CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map
|
||||
AND #$0F : CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA $73F368 : STA $7EF368 ; Map 1
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
ORA $73F369 : STA $7EF369 ; Map 2
|
||||
BRL .done
|
||||
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
|
||||
AND #$0F : CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA $73F364 : STA $7EF364 ; Compass 1
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
ORA $73F365 : STA $7EF365 ; Compass 2
|
||||
BRL .done
|
||||
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
|
||||
AND #$0F : CMP #$08 : !BGE ++
|
||||
%ValueShift()
|
||||
ORA $73F366 : STA $7EF366 ; Big Key 1
|
||||
++
|
||||
!SUB #$08
|
||||
%ValueShift()
|
||||
ORA $73F367 : STA $7EF367 ; Big Key 2
|
||||
BRL .done
|
||||
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
||||
AND #$0F : TAX
|
||||
LDA $7EF37C, X : INC : STA $7EF37C, X ; Increment Key Count
|
||||
BRL .done
|
||||
+
|
||||
.done
|
||||
PLX
|
||||
LDA $02E9 : CMP.b #$01 ; thing we wrote over
|
||||
RTL
|
||||
; #$70 - Maps
|
||||
; #$80 - Compasses
|
||||
; #$90 - Big Keys
|
||||
;--------------------------------------------------------------------------------
|
||||
!PROGRESSIVE_SHIELD = "$7EF416" ; ss-- ----
|
||||
!RNG_ITEM = "$7EF450"
|
||||
!SCRATCH_AREA = "$7F5020"
|
||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
||||
!SINGLE_INDEX_BITMASK_TEMP = "$7F5022"
|
||||
!LOCK_IN = "$7F5090"
|
||||
!ITEM_BUSY = "$7F5091"
|
||||
AddReceivedItemExpanded:
|
||||
{
|
||||
PHA : PHX
|
||||
JSL.l PreItemGet
|
||||
|
||||
LDA $02D8 : CMP #$5E : BNE ++ ; Progressive Sword
|
||||
LDA $7EF359 : BNE + ; No Sword
|
||||
LDA.b #$49 : STA $02D8 : BRL .done
|
||||
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
||||
LDA.b #$50 : STA $02D8 : BRL .done
|
||||
+ : CMP.b #$02 : BNE + ; Master Sword
|
||||
LDA.b #$02 : STA $02D8 : BRL .done
|
||||
+ ; Everything Else
|
||||
LDA.b #$03 : STA $02D8 : BRL .done
|
||||
++ : CMP.b #$5F : BNE ++ ; Progressive Shield
|
||||
LDA !PROGRESSIVE_SHIELD : AND.b #$C0 : BNE + ; No Shield
|
||||
LDA.b #$04 : STA $02D8
|
||||
LDA !PROGRESSIVE_SHIELD : AND.b #$3F : ORA.b #$40 : STA !PROGRESSIVE_SHIELD : BRA .done
|
||||
+ : CMP.b #$40 : BNE + ; Fighter Shield
|
||||
LDA.b #$05 : STA $02D8
|
||||
LDA !PROGRESSIVE_SHIELD : AND.b #$3F : ORA.b #$80 : STA !PROGRESSIVE_SHIELD : BRA .done
|
||||
+ ; Everything Else
|
||||
LDA.b #$06 : STA $02D8 : BRA .done
|
||||
++ : CMP.b #$60 : BNE ++ ; Progressive Armor
|
||||
LDA $7EF35B : BNE + ; No Shield
|
||||
LDA.b #$22 : STA $02D8 : BRA .done
|
||||
+ ; Everything Else
|
||||
LDA.b #$23 : STA $02D8 : BRA .done
|
||||
++ : CMP.b #$61 : BNE ++ ; Progressive Lifting Glove
|
||||
LDA $7EF354 : BNE + ; No Lift
|
||||
LDA.b #$1B : STA $02D8 : BRA .done
|
||||
+ ; Everything Else
|
||||
LDA.b #$1C : STA $02D8 : BRA .done
|
||||
++ : CMP.b #$62 : BNE ++ ; RNG Item (Single)
|
||||
JSL.l GetRNGItemSingle : STA $02D8
|
||||
XBA : JSR.w MarkRNGItemSingle
|
||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
||||
BRA .done
|
||||
++ : CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
||||
JSL.l GetRNGItemMulti : STA $02D8
|
||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
||||
BRA .done
|
||||
++
|
||||
.done
|
||||
PLX : PLA
|
||||
|
||||
PHB : PHK ; we're skipping the corresponding instructions to grab the data bank
|
||||
JMP.l AddReceivedItem+2
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
;DATA AddReceivedItemExpanded
|
||||
{
|
||||
|
||||
.y_offsets
|
||||
db -5, -5, -5, -5, -5, -4, -4, -5
|
||||
db -5, -4, -4, -4, -2, -4, -4, -4
|
||||
|
||||
db -4, -4, -4, -4, -4, -4, -4, -4
|
||||
db -4, -4, -4, -4, -4, -4, -4, -4
|
||||
|
||||
db -4, -4, -4, -5, -4, -4, -4, -4
|
||||
db -4, -4, -2, -4, -4, -4, -4, -4
|
||||
|
||||
db -4, -4, -4, -4, -2, -2, -2, -4
|
||||
db -4, -4, -4, -4, -4, -4, -4, -4
|
||||
|
||||
db -4, -4, -2, -2, -4, -2, -4, -4
|
||||
db -4, -5, -4, -4
|
||||
;new
|
||||
db -4, -4, -4, -4
|
||||
db -5 ; Master Sword (Safe)
|
||||
db -4, -4, -4, -4 ; +5/+10 Bomb Arrows
|
||||
db -4, -4, -4 ; 3x Programmable Item
|
||||
db -4 ; Upgrade-Only Sivler Arrows
|
||||
db -4 ; 1 Rupoor
|
||||
db -4 ; Null Item
|
||||
db -4, -4, -4 ; Red, Blue & Green Clocks
|
||||
db -4, -4, -4, -4 ; Progressive Sword, Shield, Armor & Gloves
|
||||
db -4, -4 ; RNG Single & Multi
|
||||
db -4, -4, -4, -4, -4, -4 ; Unused
|
||||
db -4, -4, -4 ; Goal Item Single, Multi & Alt Multi
|
||||
db -4, -4, -4 ; Unused
|
||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Map
|
||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Compass
|
||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Big Key
|
||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Small Key
|
||||
|
||||
.x_offsets
|
||||
db 4, 4, 4, 4, 4, 0, 0, 4
|
||||
db 4, 4, 4, 4, 5, 0, 0, 0
|
||||
|
||||
db 0, 0, 0, 4, 0, 4, 0, 0
|
||||
db 4, 0, 0, 0, 0, 0, 0, 0
|
||||
|
||||
db 0, 0, 0, 0, 4, 0, 0, 0
|
||||
db 0, 0, 5, 0, 0, 0, 0, 0
|
||||
|
||||
db 0, 0, 0, 0, 4, 4, 4, 0
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0
|
||||
|
||||
db 0, 0, 4, 4, 0, 4, 0, 0
|
||||
db 0, 4, 0, 0
|
||||
;new
|
||||
db 0, 0, 0, 0
|
||||
db 4 ; Master Sword (Safe)
|
||||
db 0, 0, 0, 0 ; +5/+10 Bomb Arrows
|
||||
db 0, 0, 0 ; 3x Programmable Item
|
||||
db 0 ; Upgrade-Only Sivler Arrows
|
||||
db 4 ; 1 Rupoor
|
||||
db 0 ; Null Item
|
||||
db 0, 0, 0 ; Red, Blue & Green Clocks
|
||||
db 0, 0, 0, 0 ; Progressive Sword, Shield, Armor & Gloves
|
||||
db 0, 0 ; RNG Single & Multi
|
||||
db 0, 0, 0, 0, 0, 0 ; Unused
|
||||
db 0, 0, 0 ; Goal Item Single, Multi & Alt Multi
|
||||
db 0, 0, 0 ; Unused
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Free Map
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Free Compass
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Free Big Key
|
||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
||||
|
||||
.item_graphics_indices
|
||||
db $06, $18, $18, $18, $2D, $20, $2E, $09
|
||||
db $09, $0A, $08, $05, $10, $0B, $2C, $1B
|
||||
|
||||
db $1A, $1C, $14, $19, $0C, $07, $1D, $2F
|
||||
db $07, $15, $12, $0D, $0D, $0E, $11, $17
|
||||
|
||||
db $28, $27, $04, $04, $0F, $16, $03, $13
|
||||
db $01, $1E, $10, $00, $00, $00, $00, $00
|
||||
|
||||
db $00, $30, $22, $21, $24, $24, $24, $23
|
||||
db $23, $23, $29, $2A, $2C, $2B, $03, $03
|
||||
|
||||
db $34, $35, $31, $33, $02, $32, $36, $37
|
||||
db $2C, $06, $0C, $38
|
||||
;new
|
||||
db $39, $3A, $3B, $3C
|
||||
db $18 ; Master Sword (Safe)
|
||||
db $3D, $3E, $3F, $40 ; +5/+10 Bomb Arrows
|
||||
db $00, $00, $00 ; 3x Programmable Item
|
||||
db $41 ; Upgrade-Only Sivler Arrows
|
||||
db $24 ; 1 Rupoor
|
||||
db $47 ; Null Item
|
||||
db $48, $48, $48 ; Red, Blue & Green Clocks
|
||||
db $FF, $FF, $04, $0D ; Progressive Sword, Shield, Armor & Gloves
|
||||
db $FF, $FF ; RNG Single & Multi
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||
db $49, $4A, $49 ; Goal Item Single, Multi & Alt Multi
|
||||
db $FF, $FF, $FF ; Unused
|
||||
db $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21 ; Free Map
|
||||
db $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16 ; Free Compass
|
||||
db $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22 ; Free Big Key
|
||||
db $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F ; Free Small Key
|
||||
|
||||
.wide_item_flag
|
||||
db $00, $00, $00, $00, $00, $02, $02, $00
|
||||
db $00, $00, $00, $00, $00, $02, $02, $02
|
||||
|
||||
db $02, $02, $02, $00, $02, $00, $02, $02
|
||||
db $00, $02, $02, $02, $02, $02, $02, $02
|
||||
|
||||
db $02, $02, $02, $02, $00, $02, $02, $02
|
||||
db $02, $02, $00, $02, $02, $02, $02, $02
|
||||
|
||||
db $02, $02, $02, $02, $00, $00, $00, $02
|
||||
db $02, $02, $02, $02, $02, $02, $02, $02
|
||||
|
||||
db $02, $02, $00, $00, $02, $00, $02, $02
|
||||
db $02, $00, $02, $02
|
||||
;new
|
||||
db $02, $02, $02, $02
|
||||
db $00 ; Master Sword (Safe)
|
||||
db $02, $02, $02, $02 ; +5/+10 Bomb Arrows
|
||||
db $02, $02, $02 ; 3x Programmable Item
|
||||
db $02 ; Upgrade-Only Sivler Arrows
|
||||
db $00 ; 1 Rupoor
|
||||
db $02 ; Null Item
|
||||
db $02, $02, $02 ; Red, Blue & Green Clocks
|
||||
db $02, $02, $02, $02 ; Progressive Sword, Shield, Armor & Gloves
|
||||
db $02, $02 ; RNG Single & Multi
|
||||
db $02, $02, $02, $02, $02, $02 ; Unused
|
||||
db $02, $02, $02 ; Goal Item Single, Multi & Alt Multi
|
||||
db $02, $02, $02 ; Unused
|
||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Free Map
|
||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Free Compass
|
||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Free Big Key
|
||||
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; Free Small Key
|
||||
|
||||
.properties
|
||||
db 5, -1, 5, 5, 5, 5, 5, 1
|
||||
db 2, 1, 1, 1, 2, 2, 2, 4
|
||||
db 4, 4, 1, 1, 2, 1, 1, 1
|
||||
db 2, 1, 2, 1, 4, 4, 2, 1
|
||||
db 6, 1, 2, 1, 2, 2, 1, 2
|
||||
db 2, 4, 1, 1, 4, 2, 1, 4
|
||||
db 2, 2, 4, 4, 4, 2, 1, 4
|
||||
db 1, 2, 2, 1, 2, 2, 1, 1
|
||||
db 4, 4, 1, 2, 2, 4, 4, 4
|
||||
db 2, 5, 2, 1
|
||||
;new
|
||||
db 4, 4, 4, 4
|
||||
db 5 ; Master Sword (Safe)
|
||||
db 4, 4, 4, 4 ; +5/+10 Bomb Arrows
|
||||
db 4, 4, 4 ; 3x Programmable Item
|
||||
db 1 ; Upgrade-Only Sivler Arrows
|
||||
db 3 ; 1 Rupoor
|
||||
db 1 ; Null Item
|
||||
db 1, 2, 4 ; Red, Blue & Green Clocks
|
||||
db $FF, $FF, $FF, $FF ; Progressive Sword, Shield, Armor & Gloves
|
||||
db $FF, $FF ; RNG Single & Multi
|
||||
db 0, 0, 0, 0, 0, 0 ; Unused
|
||||
db 4, 4, 4 ; Goal Item Single, Multi & Alt Multi
|
||||
db 0, 0, 0 ; Unused
|
||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Map
|
||||
db 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ; Free Compass
|
||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Big Key
|
||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
||||
|
||||
; \item Target SRAM addresses for items you receive
|
||||
.item_target_addr
|
||||
dw $F359, $F359, $F359, $F359, $F35A, $F35A, $F35A, $F345
|
||||
dw $F346, $F34B, $F342, $F340, $F341, $F344, $F35C, $F347
|
||||
|
||||
dw $F348, $F349, $F34A, $F34C, $F34C, $F350, $F35C, $F36B
|
||||
dw $F351, $F352, $F353, $F354, $F354, $F34E, $F356, $F357
|
||||
|
||||
dw $F37A, $F34D, $F35B, $F35B, $F36F, $F364, $F36C, $F375
|
||||
dw $F375, $F344, $F341, $F35C, $F35C, $F35C, $F36D, $F36E
|
||||
|
||||
dw $F36E, $F375, $F366, $F368, $F360, $F360, $F360, $F374
|
||||
dw $F374, $F374, $F340, $F340, $F35C, $F35C, $F36C, $F36C
|
||||
|
||||
dw $F360, $F360, $F372, $F376, $F376, $F373, $F360, $F360
|
||||
dw $F35C, $F359, $F34C, $F355
|
||||
;new
|
||||
dw $F375, $F376, $F373, $F373
|
||||
dw $F359 ; Master Sword (Safe)
|
||||
dw $F375, $F375, $F376, $F376 ; +5/+10 Bomb Arrows
|
||||
dw $F41A, $F41C, $F41E ; 3x Programmable Item
|
||||
dw $F340 ; Upgrade-Only Sivler Arrows
|
||||
dw $F360 ; 1 Rupoor
|
||||
dw $F36A ; Null Item
|
||||
dw $F454, $F454, $F454 ; Red, Blue & Green Clocks
|
||||
dw $F359, $F35A, $F35B, $F354 ; Progressive Sword, Shield, Armor & Gloves
|
||||
dw $F36A, $F36A ; RNG Single & Multi
|
||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||
dw $F36A, $F36A, $F36A ; Goal Item Single, Multi & Alt Multi
|
||||
dw $F36A, $F36A, $F36A ; Unused
|
||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Map
|
||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Compass
|
||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Big Key
|
||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Small Key
|
||||
}
|
||||
|
||||
; DATA Values to write to the above SRAM locations.
|
||||
{
|
||||
.item_values
|
||||
db $01, $02, $03, $04, $01, $02, $03, $01
|
||||
db $01, $01, $01, $01, $01, $02, $FF, $01
|
||||
|
||||
db $01, $01, $01, $01, $02, $01, $FF, $FF
|
||||
db $01, $01, $02, $01, $02, $01, $01, $01
|
||||
|
||||
db $FF, $01, $FF, $02, $FF, $FF, $FF, $FF
|
||||
db $FF, $FF, $02, $FF, $FF, $FF, $FF, $FF
|
||||
|
||||
db $FF, $FF, $FF, $FF, $FF, $FB, $EC, $FF
|
||||
db $FF, $FF, $01, $03, $FF, $FF, $FF, $FF
|
||||
|
||||
db $9C, $CE, $FF, $01, $0A, $FF, $FF, $FF
|
||||
db $FF, $01, $03, $01
|
||||
;new
|
||||
db $32, $46, $80, $80
|
||||
db $02 ; Master Sword (Safe)
|
||||
db $FF, $FF, $FF, $FF ; +5/+10 Bomb Arrows
|
||||
db $FF, $FF, $FF ; 3x Programmable Item
|
||||
db $FF ; Upgrade-Only Sivler Arrows
|
||||
db $FF ; 1 Rupoor
|
||||
db $FF ; Null Item
|
||||
db $FF, $FF, $FF ; Red, Blue & Green Clocks
|
||||
db $FF, $FF, $FF, $FF ; Progressive Sword, Shield, Armor & Gloves
|
||||
db $FF, $FF ; RNG Single & Multi
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||
db $FF, $FF, $FF ; Goal Item Single, Multi & Alt Multi
|
||||
db $FF, $FF, $FF ; Unused
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Map
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Compass
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Big Key
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Small Key
|
||||
|
||||
;0x00 - Sewer Passage
|
||||
;0x02 - Hyrule Castle
|
||||
;0x04 - Eastern Palace
|
||||
;0x06 - Desert Palace
|
||||
;0x08 - Hyrule Castle 2
|
||||
;0x0A - Swamp Palace
|
||||
;0x0C - Dark Palace
|
||||
;0x0E - Misery Mire
|
||||
;0x10 - Skull Woods
|
||||
;0x12 - Ice Palace
|
||||
;0x14 - Tower of Hera
|
||||
;0x16 - Gargoyle's Domain
|
||||
;0x18 - Turtle Rock
|
||||
;0x1A - Ganon's Tower
|
||||
|
||||
.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
|
||||
dw $0080, $0040, $0020, $0010, $0008, $0004
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
BottleListExpanded:
|
||||
db $16, $2B, $2C, $2D, $3D, $3C, $48
|
||||
|
||||
PotionListExpanded:
|
||||
db $2E, $2F, $30, $FF, $0E
|
||||
;--------------------------------------------------------------------------------
|
||||
Link_ReceiveItemAlternatesExpanded:
|
||||
{
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, -1, -1, $44, -1, -1, -1
|
||||
|
||||
db -1, -1, $35, -1, -1, -1, -1, -1
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, $46, -1, -1, -1, -1, -1
|
||||
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||
db -1, -1, -1, -1
|
||||
|
||||
db -1, -1, -1, -1
|
||||
db -1 ; Master Sword (Safe)
|
||||
db -1, -1, -1, -1 ; +5/+10 Bomb Arrows
|
||||
db -1, -1, -1 ; 3x Programmable Item
|
||||
db -1 ; Upgrade-Only Sivler Arrows
|
||||
db -1 ; 1 Rupoor
|
||||
db -1 ; Null Item
|
||||
db -1, -1, -1 ; Red, Blue & Green Clocks
|
||||
db -1, -1, -1, -1 ; Progressive Sword, Shield, Armor & Gloves
|
||||
db -1, -1 ; RNG Single & Multi
|
||||
db -1, -1, -1, -1, -1, -1 ; Unused
|
||||
db -1, -1 ; Goal Item Single, Multi & Alt Multi
|
||||
db -1, -1, -1, -1 ; Unused
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Map
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Compass
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Big Key
|
||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Small Key
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
.loadAlternate
|
||||
PHB : PHK : PLB
|
||||
LDA Link_ReceiveItemAlternatesExpanded, Y : STA $03
|
||||
PLB
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawHUDSilverArrows:
|
||||
LDA $7EF340 : AND.w #$00FF : BNE +
|
||||
LDA $7EF414 : AND.w #$0040 : BEQ +
|
||||
LDA.w #$2810 : STA $11C8
|
||||
LDA.w #$2811 : STA $11CA
|
||||
LDA.w #$2820 : STA $1208
|
||||
LDA.w #$2821 : STA $120A
|
||||
+
|
||||
LDA.w #$11CE : STA $00 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM = "$7EF450"
|
||||
!SCRATCH_AREA = "$7F5020"
|
||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
||||
!SINGLE_INDEX_BITMASK_TEMP = "$7F5022"
|
||||
!LOCK_IN = "$7F5090"
|
||||
GetRNGItemSingle:
|
||||
LDA !LOCK_IN : CMP #$FF : BEQ + : TAX : XBA : LDA.l RNGSingleItemTable, X : RTL : +
|
||||
LDX.b #$00
|
||||
.single_reroll
|
||||
JSL.l GetRandomInt : AND.b #$7F ; select random value
|
||||
INX : CPX #$7F : !BLT + : LDA.b #$00 : BRA +++ : + ; default to 0 if too many attempts
|
||||
CMP.l RNGSingleTableSize : !BGE .single_reroll
|
||||
+++
|
||||
|
||||
STA !SINGLE_INDEX_TEMP ; put our index value here
|
||||
LDX #$00
|
||||
.recheck
|
||||
JSR.w CheckSingleItem : BEQ .single_unused ; already used
|
||||
LDA !SINGLE_INDEX_TEMP : INC ; increment index
|
||||
CMP.l RNGSingleTableSize : !BLT +++ : LDA.b #$00 : +++ ; rollover index if needed
|
||||
STA !SINGLE_INDEX_TEMP ; store index
|
||||
INX : CPX.l RNGSingleTableSize : !BLT .recheck
|
||||
LDA.b #$5A ; everything is gone, default to null item
|
||||
BRA .single_done
|
||||
.single_unused
|
||||
LDA !SINGLE_INDEX_TEMP
|
||||
.single_done
|
||||
TAX : LDA.l RNGSingleItemTable, X
|
||||
XBA : LDA.l !SINGLE_INDEX_TEMP : STA !LOCK_IN : XBA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckSingleItem:
|
||||
LSR #3 : TAX
|
||||
LDA.l !RNG_ITEM, X : STA !SINGLE_INDEX_BITMASK_TEMP ; load value to temporary
|
||||
PHX
|
||||
LDA !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
||||
LDA !SINGLE_INDEX_BITMASK_TEMP
|
||||
---
|
||||
CPX.b #$00 : BEQ +++
|
||||
LSR
|
||||
DEX
|
||||
BRA ---
|
||||
+++
|
||||
PLX
|
||||
AND.b #$01
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
MarkRNGItemSingle:
|
||||
;STA !SINGLE_INDEX_TEMP
|
||||
|
||||
LSR #3 : STA !SINGLE_INDEX_OFFSET_TEMP : TAX
|
||||
LDA.l !RNG_ITEM, X
|
||||
STA.l !SINGLE_INDEX_BITMASK_TEMP
|
||||
LDA.l !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
||||
LDA.b #01
|
||||
---
|
||||
CPX.b #$00 : BEQ +++
|
||||
ASL
|
||||
DEX
|
||||
BRA ---
|
||||
+++
|
||||
|
||||
PHA
|
||||
LDA.l !SINGLE_INDEX_OFFSET_TEMP : TAX
|
||||
PLA
|
||||
ORA.l !SINGLE_INDEX_BITMASK_TEMP
|
||||
STA.l !RNG_ITEM, X
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
GetRNGItemMulti:
|
||||
LDA !LOCK_IN : CMP #$FF : BEQ + : TAX : XBA : LDA.l RNGMultiItemTable, X : RTL : +
|
||||
LDX.b #$00
|
||||
- ; reroll
|
||||
JSL.l GetRandomInt : AND.b #$7F ; select random value
|
||||
INX : CPX #$7F : !BLT + : LDA.b 00 : BRA .done : + ; default to 0 if too many attempts
|
||||
CMP.l RNGMultiTableSize : !BGE -
|
||||
.done
|
||||
STA !LOCK_IN
|
||||
TAX : XBA : LDA.l RNGMultiItemTable, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
BIN
newitems.gfx
Executable file
BIN
newitems.gfx
Executable file
Binary file not shown.
172
npcitems.asm
Normal file
172
npcitems.asm
Normal file
@@ -0,0 +1,172 @@
|
||||
;================================================================================
|
||||
; Randomize NPC Items
|
||||
;--------------------------------------------------------------------------------
|
||||
; Old Man - Zora King - Sick Kid - Tree Kid - Sahasrala - Catfish - Rupee NPC
|
||||
;=SET 1
|
||||
;OLD_MAN = "#$01"
|
||||
;ZORA_KING = "#$02"
|
||||
;SICK_KID = "#$04"
|
||||
;TREE_KID = "#$08"
|
||||
;SAHASRALA = "#$10"
|
||||
;CATFISH = "#$20"
|
||||
;UNUSED = "#$40"
|
||||
;BOOK_MUDORA = "#$80"
|
||||
;=SET 2
|
||||
;ETHER_TABLET = "#$01"
|
||||
;BOMBOS_TABLET = "#$02"
|
||||
;SMITH_SWORD = "#$04"
|
||||
;FAIRY_SWORD = "#$08"
|
||||
;MUSHROOM = "#$10"
|
||||
;POWDER = "#$20"
|
||||
;UNUSED = "#$40"
|
||||
;MAGIC_BAT = "#$80"
|
||||
;--------------------------------------------------------------------------------
|
||||
!NPC_FLAGS = "$7EF410"
|
||||
!NPC_FLAGS_2 = "$7EF411"
|
||||
|
||||
ItemCheck_FairySword:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$08
|
||||
RTL
|
||||
|
||||
ItemCheck_SmithSword:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$04
|
||||
RTL
|
||||
|
||||
ItemCheck_MagicBat:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$80
|
||||
RTL
|
||||
|
||||
ItemCheck_OldMan:
|
||||
LDA !NPC_FLAGS : AND.b #$01 : CMP #$01
|
||||
RTL
|
||||
|
||||
ItemCheck_ZoraKing:
|
||||
LDA !NPC_FLAGS : AND.b #$02
|
||||
RTL
|
||||
|
||||
ItemCheck_SickKid:
|
||||
LDA !NPC_FLAGS : AND.b #$04
|
||||
RTL
|
||||
|
||||
ItemCheck_TreeKid:
|
||||
LDA !NPC_FLAGS : AND.b #$08 ; FluteBoy_Chillin - 73: LDA $7EF34C
|
||||
RTL
|
||||
|
||||
ItemCheck_TreeKid2:
|
||||
LDA !NPC_FLAGS : AND.b #$08 : LSR #$02 ; FluteAardvark_InitialStateFromFluteState - 225: LDA $7EF34C : AND.b #$03
|
||||
RTL
|
||||
|
||||
ItemCheck_TreeKid3:
|
||||
JSL $0DD030 ; FluteAardvark_Draw - thing we wrote over
|
||||
LDA !NPC_FLAGS : AND.b #$08
|
||||
BEQ .normal
|
||||
BRA .done
|
||||
LDA.b #$05
|
||||
.normal
|
||||
LDA $0D80, X
|
||||
.done
|
||||
RTL
|
||||
|
||||
ItemCheck_Sahasrala:
|
||||
LDA !NPC_FLAGS : AND.b #$10
|
||||
RTL
|
||||
|
||||
ItemCheck_Library:
|
||||
LDA !NPC_FLAGS : AND.b #$80
|
||||
RTL
|
||||
|
||||
ItemCheck_Mushroom:
|
||||
LDA !NPC_FLAGS_2 : ROL #4 ; does the same thing as below
|
||||
; LDA !NPC_FLAGS_2 : AND.b #$10 : BEQ .clear
|
||||
; SEC
|
||||
;RTL
|
||||
; .clear
|
||||
; CLC
|
||||
RTL
|
||||
|
||||
ItemCheck_Powder:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$20
|
||||
RTL
|
||||
|
||||
ItemCheck_Catfish:
|
||||
;LDA CatfishGoodItem : BEQ .junk
|
||||
;PHX
|
||||
; LDA CatfishGoodItem+1 : TAX
|
||||
; LDA $7EF340-1, X
|
||||
;PLX
|
||||
;--
|
||||
;CMP CatfishGoodItem : !BLT .oursNewer
|
||||
;.theirsNewer
|
||||
;LDA #$20 : RTL ; don't give item
|
||||
;.oursNewers
|
||||
;LDA #$00 : RTL ; give item
|
||||
;.junk
|
||||
LDA !NPC_FLAGS : AND.b #$20
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
ItemSet_FairySword:
|
||||
PHA : LDA !NPC_FLAGS_2 : ORA.b #$08 : STA !NPC_FLAGS_2 : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_SmithSword:
|
||||
PHA : LDA !NPC_FLAGS_2 : ORA.b #$04 : STA !NPC_FLAGS_2 : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_MagicBat:
|
||||
PHA : LDA !NPC_FLAGS_2 : ORA.b #$80 : STA !NPC_FLAGS_2 : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_OldMan:
|
||||
JSL.l Link_ReceiveItem ; thing we wrote over
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$01 : STA !NPC_FLAGS : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_ZoraKing:
|
||||
;JSL $1DE1AA ; Sprite_SpawnFlippersItem ; thing we wrote over
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$02 : STA !NPC_FLAGS : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_SickKid:
|
||||
JSL.l Link_ReceiveItem ; thing we wrote over
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$04 : STA !NPC_FLAGS : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_TreeKid:
|
||||
JSL.l Link_ReceiveItem ; thing we wrote over
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$08 : STA !NPC_FLAGS : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_Sahasrala:
|
||||
JSL.l Link_ReceiveItem ; thing we wrote over
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$10 : STA !NPC_FLAGS : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_Catfish:
|
||||
;JSL $00D52D ; GetAnimatedSpriteTile.variable ; thing we wrote over
|
||||
;JSL.l LoadCatfishItemGFX
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$20 : STA !NPC_FLAGS : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_Library:
|
||||
JSL.l Link_ReceiveItem ; thing we wrote over
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$80 : STA !NPC_FLAGS : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_Mushroom:
|
||||
PHA
|
||||
LDA !NPC_FLAGS_2 : ORA.b #$10 : STA !NPC_FLAGS_2
|
||||
LDA.l MushroomItem : TAY
|
||||
PLA
|
||||
;LDY.b #$29
|
||||
STZ $02E9 ; thing we wrote over - the mushroom is an npc for item purposes apparently
|
||||
RTL
|
||||
|
||||
ItemSet_Powder:
|
||||
PHA
|
||||
LDA !NPC_FLAGS_2 : ORA.b #$20 : STA !NPC_FLAGS_2
|
||||
LDA.l WitchItem : TAY
|
||||
PLA
|
||||
;LDY.b #$0D
|
||||
STZ $02E9 ; thing we wrote over
|
||||
RTL
|
||||
;================================================================================
|
||||
18
openmode.asm
Normal file
18
openmode.asm
Normal file
@@ -0,0 +1,18 @@
|
||||
;================================================================================
|
||||
; Open Mode Uncle Rain State Check
|
||||
;================================================================================
|
||||
SetUncleRainState:
|
||||
LDA.l OpenMode : BEQ + : RTL : + ; we're done if open mode is on
|
||||
LDA.b #$01 : STA $7EF3C5
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
InitOpenMode:
|
||||
LDA.l OpenMode : BEQ + ; Skip if not open mode
|
||||
LDA $7EF3C5 : CMP #$02 : !BGE + ; Skip if already past escape
|
||||
LDA.b #02 : STA $7EF3C5 ; Go to post-escape phase (pre aga1)
|
||||
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 $7EF29B : ORA.b #$20 : STA $7EF29B ; open castle gate
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
3
output.txt
Normal file
3
output.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
llh@tinymagnet.com:~/DBMS/Run$ ./dbms -?
|
||||
(Lena Hellstrom) bad option...should be "f" or "b" or "a"
|
||||
llh@tinymagnet.com:~/DBMS/Run$
|
||||
247
pendantcrystalhud.asm
Normal file
247
pendantcrystalhud.asm
Normal file
@@ -0,0 +1,247 @@
|
||||
;================================================================================
|
||||
; Pendant / Crystal HUD Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
;CheckPendantHUD:
|
||||
; LDA !HUD_FLAG : CMP.b #$40 ; check for hud flag instead
|
||||
;RTL
|
||||
;================================================================================
|
||||
FlipLWDWFlag:
|
||||
PHP
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA $7EF3CA : EOR.b #$40 : STA $7EF3CA
|
||||
BEQ +
|
||||
LDA.b #07 : BRA ++ ; dark world - crystals
|
||||
+
|
||||
LDA.b #03 ; light world - pendants
|
||||
++
|
||||
STA $7EF3C7
|
||||
PLP
|
||||
RTL
|
||||
;================================================================================
|
||||
GetCrystalNumber:
|
||||
PHX
|
||||
TXA : ASL : TAX
|
||||
LDA $7EF3CA : EOR.b #$40 : BNE +
|
||||
INX
|
||||
+
|
||||
LDA.l CrystalNumberTable-16, X
|
||||
PLX
|
||||
RTL
|
||||
;================================================================================
|
||||
OverworldMap_CheckObject:
|
||||
LDA $FFFFFF
|
||||
PHX
|
||||
LDA $7EF3C7 : CMP.b #$03 : BNE +
|
||||
;LW Map
|
||||
LDA.l .lw_offsets, X
|
||||
BPL +++ : CLC : BRA .done : +++
|
||||
TAX : BRA ++
|
||||
+ : CMP.b #$07 : BNE .fail
|
||||
;DW Map
|
||||
LDA.l .dw_offsets, X : TAX
|
||||
BRA ++
|
||||
SEC
|
||||
PLX
|
||||
RTL
|
||||
++
|
||||
LDA.l CrystalPendantFlags_2, X
|
||||
AND.b #$40 : BNE .checkCrystal
|
||||
|
||||
.checkPendant
|
||||
LDA $7EF374 : AND.l CrystalPendantFlags, X : BNE .fail
|
||||
CLC : BRA .done
|
||||
|
||||
.checkCrystal
|
||||
LDA $7EF37A : AND.l CrystalPendantFlags, X : BNE .fail
|
||||
CLC : BRA .done
|
||||
|
||||
.fail
|
||||
SEC
|
||||
.done
|
||||
PLX
|
||||
RTL
|
||||
.lw_offsets
|
||||
db $02, $0A, $03, $FF
|
||||
.dw_offsets
|
||||
db $06, $08, $0C, $0B, $07, $09, $05
|
||||
;================================================================================
|
||||
SetLWDWMap:
|
||||
PHP
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA $7EF3CA : EOR.b #$40
|
||||
BNE +
|
||||
LDA.b #07 : BRA ++ ; dark world - crystals
|
||||
+
|
||||
LDA.b #03 ; light world - pendants
|
||||
++
|
||||
STA $7EF3C7
|
||||
PLP
|
||||
RTL
|
||||
;================================================================================
|
||||
GetMapMode:
|
||||
LDA $7EF3CA : AND.b #$40 : BEQ +
|
||||
LDA.b #07 ; dark world - crystals
|
||||
RTL
|
||||
+
|
||||
LDA.b #03 ; light world - pendants
|
||||
RTL
|
||||
;================================================================================
|
||||
CheckHeraObject:
|
||||
LDA CrystalPendantFlags_2_hera : BNE .crystal
|
||||
|
||||
.pendant
|
||||
LDA $7EF374 : AND.l CrystalPendantFlags_hera
|
||||
RTL
|
||||
.crystal
|
||||
LDA $7EF37A : AND.l CrystalPendantFlags_hera
|
||||
RTL
|
||||
;================================================================================
|
||||
;GetPendantCrystalWorld:
|
||||
; PHB : PHK : PLB
|
||||
; PHX
|
||||
; LDA $040C : LSR : TAX
|
||||
; LDA .dungeon_worlds, X
|
||||
; PLX : PLB
|
||||
; CMP.b #$00
|
||||
;RTL
|
||||
;================================================================================
|
||||
ShowDungeonItems:
|
||||
LDA $040C : AND.w #$00FF : CMP.w #$00FF : BNE + : RTL : + ; return normal result if outdoors or in a cave
|
||||
;LDA $F0 : AND.w #$0020 ; check for select
|
||||
LDA !HUD_FLAG : AND.w #$0020 ; check hud flag
|
||||
BEQ + : LDA.w #$0000 : RTL : + ; if set, send the zero onwards
|
||||
LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic
|
||||
RTL
|
||||
;================================================================================
|
||||
DrawPendantCrystalDiagram:
|
||||
PHP : PHB : PHK : PLB
|
||||
REP #$30 ; Set 16-bit accumulator & index registers
|
||||
LDX.w #$0000 ; Paint entire box black & draw empty pendants and crystals
|
||||
-
|
||||
LDA .row0, X : STA $12EA, X
|
||||
LDA .row1, X : STA $132A, X
|
||||
LDA .row2, X : STA $136A, X
|
||||
LDA .row3, X : STA $13AA, X
|
||||
LDA .row4, X : STA $13EA, X
|
||||
LDA .row5, X : STA $142A, X
|
||||
LDA .row6, X : STA $146A, X
|
||||
LDA .row7, X : STA $14AA, X
|
||||
LDA .row8, X : STA $14EA, X
|
||||
INX #2 : CPX.w #$0014 : BCC -
|
||||
|
||||
;pendants
|
||||
LDA $7EF374 : AND.w #$0004 : BEQ + ; pendant of courage (green)
|
||||
LDA.w #$3D2B : STA $1332
|
||||
LDA.w #$3D2C : STA $1334
|
||||
LDA.w #$3D2D : STA $1372
|
||||
LDA.w #$3D2E : STA $1374
|
||||
+ LDA $7EF374 : AND.w #$0002 : BEQ + ; pendant of power (blue)
|
||||
LDA.w #$2D2B : STA $13AE
|
||||
LDA.w #$2D2C : STA $13B0
|
||||
LDA.w #$2D2D : STA $13EE
|
||||
LDA.w #$2D2E : STA $13F0
|
||||
+ LDA $7EF374 : AND.w #$0001 : BEQ + ; pendant of wisdom (red)
|
||||
LDA.w #$252B : STA $13B6
|
||||
LDA.w #$252C : STA $13B8
|
||||
LDA.w #$252D : STA $13F6
|
||||
LDA.w #$252E : STA $13F8
|
||||
+
|
||||
|
||||
;crystals
|
||||
LDA $7EF37A : AND.w #$0002 : BEQ + ; crystal 1
|
||||
LDA.w #$2D44 : STA $14AC
|
||||
LDA.w #$2D45 : STA $14AE
|
||||
+ LDA $7EF37A : AND.w #$0010 : BEQ + ; crystal 2
|
||||
LDA.w #$2D44 : STA $146E
|
||||
LDA.w #$2D45 : STA $1470
|
||||
+ LDA $7EF37A : AND.w #$0040 : BEQ + ; crystal 3
|
||||
LDA.w #$2D44 : STA $14B0
|
||||
LDA.w #$2D45 : STA $14B2
|
||||
+ LDA $7EF37A : AND.w #$0020 : BEQ + ; crystal 4
|
||||
LDA.w #$2D44 : STA $1472
|
||||
LDA.w #$2D45 : STA $1474
|
||||
+ LDA $7EF37A : AND.w #$0004 : BEQ + ; crystal 5
|
||||
LDA.w #$2D44 : STA $14B4
|
||||
LDA.w #$2D45 : STA $14B6
|
||||
+ LDA $7EF37A : AND.w #$0001 : BEQ + ; crystal 6
|
||||
LDA.w #$2D44 : STA $1476
|
||||
LDA.w #$2D45 : STA $1478
|
||||
+ LDA $7EF37A : AND.w #$0008 : BEQ + ; crystal 7
|
||||
LDA.w #$2D44 : STA $14B8
|
||||
LDA.w #$2D45 : STA $14BA
|
||||
+
|
||||
PLB : PLP
|
||||
RTL
|
||||
;================================================================================
|
||||
.row0 dw $28FB, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $68FB
|
||||
.row1 dw $28FC, $24F5, $24F5, $24F5, $312B, $312C, $24F5, $24F5, $24F5, $68FC
|
||||
.row2 dw $28FC, $24F5, $24F5, $24F5, $313D, $312E, $24F5, $24F5, $24F5, $68FC
|
||||
.row3 dw $28FC, $24F5, $312B, $312C, $24F5, $24F5, $312B, $312C, $24F5, $68FC
|
||||
.row4 dw $28FC, $24F5, $313D, $312E, $24F5, $24F5, $313D, $312E, $24F5, $68FC
|
||||
.row5 dw $28FC, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $68FC
|
||||
.row6 dw $28FC, $24F5, $3146, $3147, $3146, $3147, $3146, $3147, $24F5, $68FC
|
||||
.row7 dw $28FC, $3146, $3147, $3146, $3147, $3146, $3147, $3146, $3147, $68FC
|
||||
.row8 dw $A8FB, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $E8FB
|
||||
;================================================================================
|
||||
;Crystal 1: $02
|
||||
;Crystal 2: $10
|
||||
;Crystal 3: $40
|
||||
;Crystal 4: $20
|
||||
;Crystal 5: $04
|
||||
;Crystal 6: $01
|
||||
;Crystal 7: $08
|
||||
;;blank pendant
|
||||
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
|
||||
;
|
||||
;;red pendant
|
||||
;db $2B, $25, $2C, $25, $2D, $25, $2E, $25
|
||||
;
|
||||
;;blue pendant
|
||||
;db $2B, $2D, $2C, $2D, $2D, $2D, $2E, $2D
|
||||
;
|
||||
;;green pendant
|
||||
;db $2B, $3D, $2C, $3D, $2D, $3D, $2E, $3D
|
||||
;================================================================================
|
||||
.pendants
|
||||
dw $28FB, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $68FB
|
||||
dw $28FC, $2521, $2522, $2523, $2524, $253F, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $24F5, $213B, $213C, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $24F5, $213D, $213E, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $213B, $213C, $24F5, $24F5, $213B, $213C, $24F5, $68FC
|
||||
dw $28FC, $24F5, $213D, $213E, $24F5, $24F5, $213D, $213E, $24F5, $68FC
|
||||
dw $A8FB, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $E8FB
|
||||
.crystals
|
||||
dw $28FB, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $28F9, $68FB
|
||||
dw $28FC, $252F, $2534, $2535, $2536, $2537, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $3146, $3147, $3146, $3147, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $3146, $3147, $3146, $3147, $3146, $3147, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $24F5, $68FC
|
||||
dw $28FC, $24F5, $24F5, $3146, $3147, $3146, $3147, $24F5, $24F5, $68FC
|
||||
dw $A8FB, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $A8F9, $E8FB
|
||||
;================================================================================
|
||||
; DATA - Dungeon Worlds
|
||||
;.dungeon_worlds
|
||||
;db $00, $00, $00, $00, $00, $40, $40, $40
|
||||
;db $40, $40, $00, $40, $40, $40, $FF, $FF
|
||||
;================================================================================
|
||||
;0x00 - Sewer Passage
|
||||
;0x02 - Hyrule Castle
|
||||
;0x04 - Eastern Palace
|
||||
;0x06 - Desert Palace
|
||||
;0x08 - Hyrule Castle 2
|
||||
;0x0A - Swamp Palace
|
||||
;0x0C - Palace of Darkness
|
||||
;0x0E - Misery Mire
|
||||
;0x10 - Skull Woods
|
||||
;0x12 - Ice Palace
|
||||
;0x14 - Tower of Hera
|
||||
;0x16 - Thieves' Town
|
||||
;0x18 - Turtle Rock
|
||||
;0x1A - Ganon's Tower
|
||||
;0x1C - ??? possibly unused. (Were they planning two extra dungeons perhaps?)
|
||||
;0x1E - ??? possibly unused.
|
||||
;================================================================================
|
||||
77
potions.asm
Normal file
77
potions.asm
Normal file
@@ -0,0 +1,77 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7F5092 - Potion Animation Busy Flags (Health)
|
||||
; $7F5093 - Potion Animation Busy Flags (Magic)
|
||||
;--------------------------------------------------------------------------------
|
||||
!BUSY_HEALTH = $7F5092
|
||||
RefillHealth:
|
||||
;STA $FFFFFF
|
||||
LDA.l PotionHealthRefill : CMP.b #$A0 : !BGE +
|
||||
LDA !BUSY_HEALTH : BNE ++
|
||||
LDA.l PotionHealthRefill ; load refill amount
|
||||
!ADD $7EF36D ; add to current health
|
||||
CMP $7EF36C : !BLT +++ : LDA $7EF36C : +++
|
||||
STA !BUSY_HEALTH
|
||||
++
|
||||
|
||||
LDA $7EF36D : CMP.l !BUSY_HEALTH : !BLT ++
|
||||
LDA.b #$00 : STA $7EF372
|
||||
LDA $020A : BNE .notDone
|
||||
LDA.b #$00 : STA !BUSY_HEALTH
|
||||
SEC
|
||||
RTL
|
||||
++
|
||||
LDA.b #$08 : STA $7EF372 ; refill some health
|
||||
.notDone
|
||||
CLC
|
||||
RTL
|
||||
+
|
||||
|
||||
; Check goal health versus actual health.
|
||||
; if(actual < goal) then branch.
|
||||
LDA $7EF36D : CMP $7EF36C : BCC .refillAllHealth
|
||||
LDA $7EF36C : STA $7EF36D
|
||||
LDA.b #$00 : STA $7EF372
|
||||
; ??? not sure what purpose this branch serves.
|
||||
LDA $020A : BNE .beta
|
||||
SEC
|
||||
RTL
|
||||
.refillAllHealth
|
||||
; Fill up ze health.
|
||||
LDA.b #$A0 : STA $7EF372
|
||||
.beta
|
||||
CLC
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!BUSY_MAGIC = $7F5093
|
||||
RefillMagic:
|
||||
LDA.l PotionMagicRefill : CMP.b #$80 : !BGE +
|
||||
LDA !BUSY_MAGIC : BNE ++
|
||||
LDA.l PotionMagicRefill ; load refill amount
|
||||
!ADD $7EF36E ; add to current magic
|
||||
CMP.b #$80 : !BLT +++ : LDA.b #$80 : +++
|
||||
STA !BUSY_MAGIC
|
||||
++
|
||||
|
||||
LDA $7EF36E : CMP.l !BUSY_MAGIC : !BLT ++
|
||||
LDA.b #$00 : STA !BUSY_MAGIC
|
||||
SEC
|
||||
RTL
|
||||
++
|
||||
LDA.b #$01 : STA $7EF373 ; refill some magic
|
||||
CLC
|
||||
RTL
|
||||
+
|
||||
|
||||
SEP #$30
|
||||
; Check if Link's magic meter is full
|
||||
LDA $7EF36E : CMP.b #$80
|
||||
BCS .itsFull
|
||||
; Tell the magic meter to fill up until it's full.
|
||||
LDA.b #$80 : STA $7EF373
|
||||
SEP #$30
|
||||
RTL
|
||||
.itsFull
|
||||
; Set the carry, signifying we're done filling it.
|
||||
SEP #$31
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
60
previewdatacopy.asm
Normal file
60
previewdatacopy.asm
Normal file
@@ -0,0 +1,60 @@
|
||||
;================================================================================
|
||||
; RTPreview SRAM Hook
|
||||
;--------------------------------------------------------------------------------
|
||||
WriteStatusPreview:
|
||||
PHA
|
||||
LDA $4300 : PHA ; preserve DMA parameters
|
||||
LDA $4301 : PHA ; preserve DMA parameters
|
||||
LDA $4302 : PHA ; preserve DMA parameters
|
||||
LDA $4303 : PHA ; preserve DMA parameters
|
||||
LDA $4304 : PHA ; preserve DMA parameters
|
||||
LDA $4305 : PHA ; preserve DMA parameters
|
||||
LDA $4306 : PHA ; preserve DMA parameters
|
||||
;--------------------------------------------------------------------------------
|
||||
LDA #$80 : STA $4300 ; set DMA transfer direction B -> A, bus A auto increment, single-byte mode
|
||||
|
||||
STA $4301 ; set bus B source to WRAM register
|
||||
|
||||
LDA #$40 : STA $2181 ; set WRAM register source address
|
||||
LDA #$F3 : STA $2182
|
||||
LDA #$7E : STA $2183
|
||||
|
||||
STZ $4302 ; set bus A destination address to SRAM
|
||||
LDA #$1E : STA $4303
|
||||
LDA #$70 : STA $4304
|
||||
|
||||
LDA #$80 : STA $4305 ; set transfer size to 0x180
|
||||
LDA #$01 : STA $4306 ; STZ $4306
|
||||
|
||||
LDA #$01 : STA $420B ; begin DMA transfer
|
||||
;--------------------------------------------------------------------------------
|
||||
PLA : STA $4306 ; restore DMA parameters
|
||||
PLA : STA $4305 ; restore DMA parameters
|
||||
PLA : STA $4304 ; restore DMA parameters
|
||||
PLA : STA $4303 ; restore DMA parameters
|
||||
PLA : STA $4302 ; restore DMA parameters
|
||||
PLA : STA $4301 ; restore DMA parameters
|
||||
PLA : STA $4300 ; restore DMA parameters
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;WriteStatusPreview:
|
||||
; PHA : PHX : PHP
|
||||
;
|
||||
; REP #$20 ; set 16-bit accumulator
|
||||
; CLC
|
||||
; LDX.b #$00
|
||||
; -
|
||||
; LDA $7EF340, X : STA $701E00, X
|
||||
; LDA $7EF340+2, X : STA $701E00+2, X
|
||||
; LDA $7EF340+4, X : STA $701E00+4, X
|
||||
; TXA : ADC.b #$06 : TAX
|
||||
; CPX #$24 : !BLT -
|
||||
;
|
||||
; SEP #$20 ; set 8-bit accumulator
|
||||
; LDA $7EF374 : STA $701E24
|
||||
; LDA $7EF37A : STA $701E25
|
||||
;
|
||||
; PLP : PLX : PLA
|
||||
;RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
37
rngfixes.asm
Normal file
37
rngfixes.asm
Normal file
@@ -0,0 +1,37 @@
|
||||
;================================================================================
|
||||
; RNG Fixes
|
||||
;--------------------------------------------------------------------------------
|
||||
RigDigRNG:
|
||||
LDA $7FFE01 : CMP.l DiggingGameRNG : !BGE .forceHeart
|
||||
.normalItem
|
||||
JSL $0DBA71 ; GetRandomInt
|
||||
RTL
|
||||
.forceHeart
|
||||
LDA $7FFE00 : BNE .normalItem
|
||||
LDA #$04
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
RigChestRNG:
|
||||
JSL.l DecrementChestCounter
|
||||
LDA $04C4 : CMP.l ChestGameRNG : BEQ .forceHeart
|
||||
.normalItem
|
||||
JSL $0DBA71 ; GetRandomInt
|
||||
AND.b #$07 ; restrict values to 0-7
|
||||
CMP #$07 : BEQ .notHeart
|
||||
JSL.l DecrementItemCounter
|
||||
RTL
|
||||
.forceHeart
|
||||
LDA $0403 : AND.b #$40 : BNE .notHeart
|
||||
LDA #$07 ; give prize item
|
||||
RTL
|
||||
.notHeart
|
||||
JSL.l DecrementItemCounter
|
||||
;LDA #$00 ; bullshit rupee farming in chest game
|
||||
|
||||
JSL $0DBA71 ; GetRandomInt ; spam RNG until we stop getting the prize item
|
||||
AND.b #$07 ; restrict values to 0-7
|
||||
CMP #$07 : BNE + ; player got prize item AGAIN
|
||||
LDA.b #$00 ; give them money instead
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
40
rupeelimit.asm
Normal file
40
rupeelimit.asm
Normal file
@@ -0,0 +1,40 @@
|
||||
;================================================================================
|
||||
; Four Digit Rupees
|
||||
;--------------------------------------------------------------------------------
|
||||
Draw4DigitRupees:
|
||||
LDA $7EF362
|
||||
JSL.l HexToDec
|
||||
|
||||
;REP #$30
|
||||
LDA $7F5004 : AND.w #$00FF : ORA.w #$2400 : STA $7EC750
|
||||
LDA $7F5005 : AND.w #$00FF : ORA.w #$2400 : STA $7EC752
|
||||
LDA $7F5006 : AND.w #$00FF : ORA.w #$2400 : STA $7EC754
|
||||
LDA $7F5007 : AND.w #$00FF : ORA.w #$2400 : STA $7EC756
|
||||
|
||||
;LDA.w #$247F ; clear other hud cells
|
||||
;STA $7EC758
|
||||
;STA $7EC75E
|
||||
;STA $7EC764
|
||||
|
||||
;STA $7EC718 ; bombs
|
||||
;STA $7EC71E ; arrows
|
||||
;STA $7EC724 ; keys
|
||||
|
||||
;LDA.w #$2C88 : STA $7EC71A ; bomb icon
|
||||
;LDA.w #$2C89 : STA $7EC71C
|
||||
|
||||
;LDA $7EF340 : AND.w #$00FF : CMP.w #$0003 : !BGE .silverArrows
|
||||
|
||||
;.woodArrows
|
||||
;LDA.w #$20A7 : STA $7EC720 ; wood arrow icon
|
||||
;LDA.w #$20A9 : STA $7EC722
|
||||
;BRA +
|
||||
|
||||
;.silverArrows
|
||||
;LDA.w #$2486 : STA $7EC720 ; silver arrow icon
|
||||
;LDA.w #$2487 : STA $7EC722
|
||||
;+
|
||||
|
||||
;LDA.w #$2871 : STA $7EC726 ; key icon
|
||||
RTL
|
||||
;================================================================================
|
||||
70
sandbox.asm
Normal file
70
sandbox.asm
Normal file
@@ -0,0 +1,70 @@
|
||||
;org $06FA78 ; set all prize packs to bombs
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
;
|
||||
;;Zarby
|
||||
;org $09E329
|
||||
;db #$6D
|
||||
;org $01E306
|
||||
;db #$00
|
||||
;org $01E397
|
||||
;db #$00
|
||||
;org $09DDC1
|
||||
;db #$07, #$17, #$26, #$0A, #$0A, #$26, #$07, #$18, #$26
|
||||
;org $09E410
|
||||
;db #$05, #$09, #$8B
|
||||
;org $01E28A
|
||||
;db #$00
|
||||
;org $01E2E8
|
||||
;db #$00
|
||||
;org $1BBBCE
|
||||
;db #$82, #$82
|
||||
;
|
||||
;;--
|
||||
;
|
||||
;;Skuj
|
||||
;org $0A84B9 ; Ganon Basement Remodel
|
||||
;db #$E1, #$04, #$93, #$13, #$C4, #$B8, #$38, #$C2, #$FC, #$A1, #$00, #$2B, #$22, #$61, #$FC, #$A9, #$04, #$FD, #$21, #$02, #$4B, #$23, #$62, #$FC, #$69, #$00, #$1A, #$A1, #$61, #$FC, #$6E, #$81, #$48, #$9A, #$62, #$FD, #$2A, #$86, #$58, #$AA, #$01, #$FD, #$AA, #$82, #$FE, #$2A, #$80, #$98, #$AA, #$01, #$FE, #$AA, #$84, #$A9, #$81, #$61, #$FE, #$A7, #$05, #$90, #$73, #$02, #$FE, #$07, #$01, #$83, #$10, #$61, #$FE, #$00, #$00, #$93, #$00, #$01, #$FF, #$C0, #$02, #$F3, #$10, #$62, #$FF, #$C7, #$03, #$D8, #$73, #$02, #$FF, #$27, #$07, #$CA, #$82, #$62, #$FF, #$2D, #$03, #$99, #$D2, #$02, #$FE, #$2D, #$01, #$D1, #$13, #$C4, #$90, #$51, #$C4, #$E0, #$51, #$C4, #$FE, #$92, #$48, #$B4, #$26, #$03, #$FF, #$32, #$4A, #$A4, #$36, #$63, #$FE, #$94, #$C9, #$B4, #$4E, #$04, #$FF, #$34, #$CB, #$CC, #$36, #$64, #$FE, #$C3, #$18, #$B8, #$31, #$07, #$FF, #$23, #$1A, #$B0, #$39, #$67, #$FE, #$C4, #$99, #$B8, #$49, #$08, #$FF, #$24, #$9B, #$C8, #$39, #$68, #$A3, #$20, #$22, #$A3, #$20, #$69, #$A3, #$5C, #$22, #$DF, #$20, #$69, #$B8, #$70, #$A4, #$08, #$00, #$60, #$10, #$00, #$60, #$18, #$13, #$C0, #$18, #$53, #$C0, #$59, #$13, #$C0, #$59, #$53, #$C0, #$59, #$89, #$C0, #$89, #$81, #$C0, #$89, #$A0, #$00, #$8B, #$E1, #$C0, #$CA, #$E1, #$C0, #$D9, #$83, #$C0, #$D9, #$C1, #$C0, #$FF, #$FF, #$2B, #$14, #$FF, #$FF, #$FF, #$F0, #$FF, #$61, #$0A, #$82, #$18
|
||||
;
|
||||
;org $04F4F3 ; Ganon Basement to Hera
|
||||
;db #$07
|
||||
;
|
||||
;org $02D26A ; Pyramid Hole is Hera Entrance
|
||||
;db #$14
|
||||
;
|
||||
;org $02E849 ; Fly 1 to Sanctuary
|
||||
;db #$13, #$00, #$16, #$00, #$18, #$00, #$2C, #$00, #$2F, #$00, #$30, #$00, #$3B, #$00, #$3F, #$00, #$5B, #$00, #$35, #$00, #$0F, #$00, #$15, #$00, #$33, #$00, #$12, #$00, #$3F, #$00, #$55, #$00, #$7F, #$00, #$1A, #$00, #$88, #$08, #$30, #$0B, #$88, #$05, #$98, #$07, #$80, #$18, #$9E, #$06, #$10, #$08, #$2E, #$00, #$42, #$12, #$80, #$06, #$12, #$01, #$9E, #$05, #$8E, #$04, #$80, #$02, #$12, #$01, #$80, #$02, #$00, #$04, #$16, #$05, #$59, #$07, #$B9, #$0A, #$FA, #$0A, #$1E, #$0F, #$DF, #$0E, #$05, #$0F, #$00, #$06, #$46, #$0E, #$C6, #$02, #$2A, #$04, #$BA, #$0C, #$9A, #$04, #$56, #$0E, #$2A, #$04, #$56, #$0E, #$D6, #$06, #$4E, #$0C, #$7E, #$01, #$40, #$08, #$B2, #$0E, #$00, #$00, #$F2, #$06, #$75, #$0E, #$78, #$07, #$0A, #$0C, #$06, #$0E, #$8A, #$0A, #$EA, #$06, #$62, #$04, #$00, #$0E, #$8A, #$0A, #$00, #$0E, #$68, #$04, #$78, #$05, #$B7, #$07, #$17, #$0B, #$58, #$0B, #$A8, #$0F, #$3D, #$0F, #$67, #$0F, #$5C, #$06, #$A8, #$0E, #$28, #$03, #$88, #$04, #$18, #$0D, #$F8, #$04, #$B8, #$0E, #$88, #$04, #$B8, #$0E, #$56, #$07, #$C8, #$0C, #$00, #$02, #$B8, #$08, #$30, #$0F, #$78, #$00, #$78, #$07, #$F3, #$0E, #$F0, #$07, #$90, #$0C, #$80, #$0E, #$10, #$0B, #$70, #$07, #$E8, #$04, #$68, #$0E, #$10, #$0B, #$68, #$0E, #$70, #$04, #$83, #$05, #$C6, #$07, #$26, #$0B, #$67, #$0B, #$8D, #$0F, #$4C, #$0F, #$72, #$0F, #$6D, #$06, #$B3, #$0E, #$33, #$03, #$97, #$04, #$27, #$0D, #$07, #$05, #$C3, #$0E, #$97, #$04, #$C3, #$0E, #$56, #$07, #$D3, #$0C, #$0B, #$02, #$BF, #$08, #$37, #$0F, #$8D, #$00, #$7F, #$07, #$FA, #$0E, #$F7, #$07, #$97, #$0C, #$8B, #$0E, #$17, #$0B, #$77, #$07, #$EF, #$04, #$85, #$0E, #$17, #$0B, #$85, #$0E, #$F6, #$FF, #$FA, #$FF, #$07, #$00, #$F7, #$FF, #$F6, #$FF, #$00, #$00, #$F1, #$FF, #$FB, #$FF, #$00, #$00, #$FA, #$FF, #$0A, #$00, #$F6, #$FF, #$F6, #$FF, #$F6, #$FF, #$FA, #$FF, #$F6, #$FF, #$FA, #$FF, #$F2, #$FF, #$F2, #$FF, #$02, #$00, #$00, #$00, #$0E, #$00, #$00, #$00, #$FE, #$FF, #$0B, #$00, #$F8, #$FF, #$06, #$00, #$FA, #$FF, #$FA, #$FF, #$06, #$00, #$0E, #$00, #$00, #$00, #$FA, #$FF, #$00, #$00
|
||||
;
|
||||
;;---
|
||||
;
|
||||
;org $02A451 ; Disable OW Map
|
||||
;LDA.b #$00
|
||||
;
|
||||
;org $0287FB ; Disable UW Map
|
||||
;LDA.b #$00
|
||||
;
|
||||
;org $06C913 ; 34913 sprite_ponds.asm:933 (LDA.b #$3B : STA $0DC0, X ; silver arrows)
|
||||
;LDA.b #$43
|
||||
;
|
||||
;org $1D9532 ; E9532
|
||||
;JSL CanGanonTakeDamage : NOP
|
||||
;
|
||||
;org $2F8000
|
||||
;CanGanonTakeDamage:
|
||||
; LDA $7EF359 : CMP.b #$02 : BEQ .normal
|
||||
; .invincible
|
||||
; LDA.b #$01 : STA $0D80, X
|
||||
; LDA.b #$80 : STA $0DF0, X
|
||||
;RTL
|
||||
; .normal
|
||||
; LDA.b #$11 : STA $0D80, X
|
||||
; LDA.b #$68 : STA $0DF0, X
|
||||
;RTL
|
||||
;
|
||||
;
|
||||
0
scratchpad.asm
Normal file
0
scratchpad.asm
Normal file
34
seedtag.asm
Normal file
34
seedtag.asm
Normal file
@@ -0,0 +1,34 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; GenerateSeedTags
|
||||
;--------------------------------------------------------------------------------
|
||||
GenerateSeedTags:
|
||||
PHA : PHX : PHY : PHP
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $00 : PHA
|
||||
LDA $02 : PHA
|
||||
LDA $04 : PHA
|
||||
LDA $06 : PHA
|
||||
JSL.l NameHash ; get the titlecard hashes
|
||||
|
||||
LDA $00 : AND.w #$1F1F : STA $00 ; keep it under 0x20 or we'll run out of items
|
||||
LDA $02 : AND.w #$1F1F : STA $02
|
||||
LDA $04 : AND.w #$1F1F : STA $04
|
||||
LDA $06 : AND.w #$1F1F : STA $06
|
||||
|
||||
REP #$30 ; set 8-bit accumulator & index registers
|
||||
|
||||
LDY #$08
|
||||
-
|
||||
|
||||
|
||||
DEY : BNE -
|
||||
|
||||
|
||||
REP #20 ; set 16-bit accumulator
|
||||
PLA : STA $06
|
||||
PLA : STA $04
|
||||
PLA : STA $02
|
||||
PLA : STA $00
|
||||
PLP : PLY : PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
24
shopkeeper.asm
Normal file
24
shopkeeper.asm
Normal file
@@ -0,0 +1,24 @@
|
||||
;================================================================================
|
||||
; Randomize 300 Rupee NPC
|
||||
;--------------------------------------------------------------------------------
|
||||
Set300RupeeNPCItem:
|
||||
INC $0D80, X ; thing we wrote over
|
||||
|
||||
PHA : PHP
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $A0 ; these are all decimal because i got them that way
|
||||
CMP.w #291 : BNE +
|
||||
LDA RupeeNPC_MoldormCave : TAY ; load moldorm cave value into Y
|
||||
BRA .done
|
||||
+ CMP.w #286 : BNE +
|
||||
LDA RupeeNPC_NortheastDarkSwampCave : TAY ; load northeast dark swamp cave value into Y
|
||||
BRA .done
|
||||
+
|
||||
LDY.b #$46 ; default to a normal 300 rupees
|
||||
.done
|
||||
PLP : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; 291 - Moldorm Cave
|
||||
; 286 - Northeast Dark Swamp Cave
|
||||
;--------------------------------------------------------------------------------
|
||||
380
stats.asm
Normal file
380
stats.asm
Normal file
@@ -0,0 +1,380 @@
|
||||
;================================================================================
|
||||
; Stat Tracking
|
||||
;================================================================================
|
||||
; $7EF420 - $7EF441 - Stat Tracking
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF420 - bonk counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF421 yyyyyaaa
|
||||
; y - y item counter
|
||||
; a - a item counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF422 ssshhccc
|
||||
; s - sword counter
|
||||
; h - shield counter
|
||||
; c - crystal counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF423 - item counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF424 mmkkkkkk
|
||||
; m - mail counter
|
||||
; k - small keys
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF425w[2] 1111 2222 3333 4444
|
||||
; 1 - lvl 1 sword bosses
|
||||
; 2 - lvl 2 sword bosses
|
||||
; 3 - lvl 3 sword bosses
|
||||
; 4 - lvl 4 sword bosses
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF427 kkkkcccc
|
||||
; k - big keys
|
||||
; c - big chests
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF428 mmmmcccc
|
||||
; k - maps
|
||||
; c - compases
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF429 bbbb--pp
|
||||
; b - heart containers
|
||||
; p - pendant upgrades
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF42A bfsccccc
|
||||
; b - bomb acquired
|
||||
; f - fairy sword acquired
|
||||
; s - silver arrow bow acquired
|
||||
; c - chests before gtower big key
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF42Bw[2] - rupees spent
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF42D - s&q counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF42Ew[2] - loop frame counter (low)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF430w[2] - loop frame counter (high)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF432 - locations before boots
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF433 - locations before mirror
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF434 - hhhhdddd - item locations checked
|
||||
; h - hyrule castle
|
||||
; d - palace of darkness
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF435 - dddhhhaa - item locations checked
|
||||
; d - desert palace
|
||||
; h - tower of hera
|
||||
; a - agahnim's tower
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF436 - gggggeee - item locations checked
|
||||
; g - ganon's tower
|
||||
; e - eastern palace
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF437 - sssstttt - item locations checked
|
||||
; s - skull woods
|
||||
; t - thieves town
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF438 - iiiimmmm - item locations checked
|
||||
; i - ice palace
|
||||
; m - misery mire
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF439 - ttttssss - item locations checked
|
||||
; t - turtle rock
|
||||
; s - swamp palace
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF43A - times mirrored outdoors
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF43B - times mirrored in dungeons
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF43Cw[2] - screen transition counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF43Ew[2] - nmi frame counter (low)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF440w[2] - nmi frame counter (high)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF442 - chest counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF443 - lock stats
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF444w[2] - item menu frame counter (low)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF446w[2] - item menu frame counter (high)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF448 - ---hhhhh
|
||||
; h - heart pieces
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF449 - death counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF44A - reserved
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF44B - flute counter
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF44Cl[3] - RTA-Timestamp (Start)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF44Fl[3] - RTA-Timestamp (End)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF452 - ----cccc
|
||||
; c - capacity upgrades
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF452 - unused
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF454w[2] - challenge timer (low)
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7EF456w[2] - challenge timer (high)
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
!LOCK_STATS = "$7EF443"
|
||||
;--------------------------------------------------------------------------------
|
||||
!BONK_COUNTER = "$7EF420"
|
||||
!BONK_REPEAT = "$7F503F"
|
||||
!LOOP_FRAMES_LOW = "$7EF42E"
|
||||
StatBonkCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !LOOP_FRAMES_LOW : !SUB !BONK_REPEAT : CMP #30 : !BLT +
|
||||
LDA !LOOP_FRAMES_LOW : STA !BONK_REPEAT
|
||||
LDA !BONK_COUNTER : INC
|
||||
CMP.b #100 : BEQ + ; decimal 100
|
||||
STA !BONK_COUNTER
|
||||
+
|
||||
PLA
|
||||
JSL.l AddDashTremor ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!SAVE_COUNTER = "$7EF42D"
|
||||
StatSaveCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA $10 : CMP.b #$17 : BNE + ; not a proper s&q, link probably died
|
||||
LDA !SAVE_COUNTER : INC
|
||||
CMP.b #100 : BEQ + ; decimal 100
|
||||
STA !SAVE_COUNTER
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!SAVE_COUNTER = "$7EF42D"
|
||||
DecrementSaveCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !SAVE_COUNTER : DEC : STA !SAVE_COUNTER
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!TRANSITION_COUNTER = "$7EF43C"
|
||||
DungeonHoleWarpTransition:
|
||||
LDA $01C31F, X
|
||||
BRA StatTransitionCounter
|
||||
DungeonHoleEntranceTransition:
|
||||
JSL EnableForceBlank
|
||||
BRA StatTransitionCounter
|
||||
DungeonStairsTransition:
|
||||
JSL Dungeon_SaveRoomQuadrantData
|
||||
BRA StatTransitionCounter
|
||||
DungeonExitTransition:
|
||||
LDA.b #$0F : STA $10
|
||||
StatTransitionCounter:
|
||||
PHA : PHP
|
||||
LDA !LOCK_STATS : BNE +
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !TRANSITION_COUNTER : INC
|
||||
CMP.w #999 : BEQ + ; decimal 999
|
||||
STA !TRANSITION_COUNTER
|
||||
+
|
||||
PLP : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!FLUTE_COUNTER = "$7EF44B"
|
||||
IncrementFlute:
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !FLUTE_COUNTER : INC : STA !FLUTE_COUNTER
|
||||
+
|
||||
JSL.l StatTransitionCounter ; also increment transition counter
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementSmallKeys:
|
||||
LDA !LOCK_STATS : BNE +
|
||||
JSL AddInventory_incrementKeyLong
|
||||
+
|
||||
LDA $7EF36F ; thing we wrote over, read small key count
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementAgahnim2Sword:
|
||||
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
JSL AddInventory_incrementBossSwordLong
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!DEATH_COUNTER = "$7EF449"
|
||||
IncrementDeathCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA $7EF36D : BNE + ; link is still alive, skip
|
||||
LDA !DEATH_COUNTER : INC : STA !DEATH_COUNTER
|
||||
;JSL.l DecrementSaveCounter
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHEST_COUNTER = "$7EF442"
|
||||
IncrementChestCounter:
|
||||
LDA.b #$01 : STA $02E9 ; thing we wrote over
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !CHEST_COUNTER : INC : STA !CHEST_COUNTER
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHEST_COUNTER = "$7EF442"
|
||||
DecrementChestCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !CHEST_COUNTER : DEC : STA !CHEST_COUNTER
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!ITEM_TOTAL = "$7EF423"
|
||||
DecrementItemCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !ITEM_TOTAL : DEC : STA !ITEM_TOTAL
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementBigChestCounter:
|
||||
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
%BottomHalf($7EF427)
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!OW_MIRROR_COUNTER = "$7EF43A"
|
||||
IncrementOWMirror:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA $7EF3CA : BEQ + ; only do this for DW->LW
|
||||
LDA !OW_MIRROR_COUNTER : INC : STA !OW_MIRROR_COUNTER
|
||||
+
|
||||
PLA
|
||||
JMP StatTransitionCounter
|
||||
;--------------------------------------------------------------------------------
|
||||
!UW_MIRROR_COUNTER = "$7EF43B"
|
||||
IncrementUWMirror:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA $040C : CMP #$FF : BEQ + ; skip if we're in a cave or house
|
||||
LDA !UW_MIRROR_COUNTER : INC : STA !UW_MIRROR_COUNTER
|
||||
JSL.l StatTransitionCounter
|
||||
+
|
||||
PLA
|
||||
JSL.l Dungeon_SaveRoomData ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!SPENT_RUPEES = "$7EF42B"
|
||||
IncrementSpentRupees:
|
||||
DEC A : BPL .subtractRupees
|
||||
LDA.w #$0000 : STA $7EF360
|
||||
RTL
|
||||
.subtractRupees
|
||||
PHA : PHP
|
||||
LDA !LOCK_STATS : AND.w #$00FF : BNE +
|
||||
LDA !SPENT_RUPEES : INC
|
||||
CMP.w #9999 : BEQ + ; decimal 9999
|
||||
STA !SPENT_RUPEES
|
||||
+
|
||||
PLP : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IndoorTileTransitionCounter:
|
||||
JSL.l Dungeon_LoadRoom ; thing we wrote over
|
||||
JMP StatTransitionCounter
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
IndoorSubtileTransitionCounter:
|
||||
LDA.b #$01 : STA !REDRAW ; set redraw flag for items
|
||||
STZ $0646 ; stuff we wrote over
|
||||
STZ $0642
|
||||
JMP StatTransitionCounter
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHEST_COUNTER = "$7EF442"
|
||||
!MAIL_COUNTER = "$7EF424" ; mmkkkkkk
|
||||
!BOSS_KILLS = "$7F5037"
|
||||
!SWORD_KILLS_1 = "$7EF425"
|
||||
!SWORD_KILLS_2 = "$7EF426"
|
||||
!GTOWER_PRE_BIG_KEY = "$7EF42A" ; ---ccccc
|
||||
!NONCHEST_COUNTER = "$7F503E"
|
||||
!SAVE_COUNTER = "$7EF42D"
|
||||
!TRANSITION_COUNTER = "$7EF43C"
|
||||
|
||||
!NMI_COUNTER = "$7EF43E"
|
||||
!LOOP_COUNTER = "$7EF42E"
|
||||
!LAG_TIME = "$7F5038"
|
||||
|
||||
!RUPEES_COLLECTED = "$7F503C"
|
||||
!ITEM_TOTAL = "$7EF423"
|
||||
|
||||
!RTA_END = "$7EF44F"
|
||||
StatsFinalPrep:
|
||||
PHA : PHX : PHP
|
||||
SEP #$30 ; set 8-bit accumulator and index registers
|
||||
|
||||
LDA !LOCK_STATS : BNE .ramPostOnly
|
||||
INC : STA !LOCK_STATS
|
||||
|
||||
JSL.l AddInventory_incrementBossSwordLong
|
||||
|
||||
LDA !MAIL_COUNTER : !ADD #$40 : STA !MAIL_COUNTER ; add green mail to mail count
|
||||
|
||||
;LDA !GTOWER_PRE_BIG_KEY : DEC : AND #$1F : TAX
|
||||
;LDA !GTOWER_PRE_BIG_KEY : AND #$E0 : STA !GTOWER_PRE_BIG_KEY
|
||||
;TXA : ORA !GTOWER_PRE_BIG_KEY : STA !GTOWER_PRE_BIG_KEY
|
||||
|
||||
LDA !TRANSITION_COUNTER : DEC : STA !TRANSITION_COUNTER ; remove extra transition from exiting gtower via duck
|
||||
|
||||
.ramPostOnly
|
||||
LDA !SWORD_KILLS_1 : LSR #4 : !ADD !SWORD_KILLS_1 : STA !BOSS_KILLS
|
||||
LDA !SWORD_KILLS_2 : LSR #4 : !ADD !SWORD_KILLS_2 : !ADD !BOSS_KILLS : AND #$0F : STA !BOSS_KILLS
|
||||
|
||||
LDA !NMI_COUNTER : !SUB !LOOP_COUNTER : STA !LAG_TIME
|
||||
LDA !NMI_COUNTER+1 : SBC !LOOP_COUNTER+1 : STA !LAG_TIME+1
|
||||
LDA !NMI_COUNTER+2 : SBC !LOOP_COUNTER+2 : STA !LAG_TIME+2
|
||||
LDA !NMI_COUNTER+3 : SBC !LOOP_COUNTER+3 : STA !LAG_TIME+3
|
||||
|
||||
LDA !SPENT_RUPEES : !ADD $7EF362 : STA !RUPEES_COLLECTED
|
||||
LDA !SPENT_RUPEES+1 : ADC $7EF363 : STA !RUPEES_COLLECTED+1
|
||||
|
||||
LDA !ITEM_TOTAL : !SUB !CHEST_COUNTER : STA !NONCHEST_COUNTER
|
||||
|
||||
;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
|
||||
+
|
||||
|
||||
.done
|
||||
PLP : PLX : PLA
|
||||
LDA.b #$19 : STA $10 ; thing we wrote over, load triforce room
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; Notes:
|
||||
; s&q counter
|
||||
;================================================================================
|
||||
930
stats/credits.asm
Executable file
930
stats/credits.asm
Executable file
@@ -0,0 +1,930 @@
|
||||
; SIZE: 5199
|
||||
|
||||
CreditsLine000:
|
||||
;ORIGINAL ALTTP STAFF
|
||||
db $06, $27, $28, $2B, $22, $20, $22, $27, $1A, $25, $9F, $1A, $25, $2D, $2D, $29, $9F, $2C, $2D, $1A, $1F, $1F
|
||||
CreditsLine001:
|
||||
;------------------------------
|
||||
db $00, $01, $9F
|
||||
CreditsLine002:
|
||||
;EXECUTIVE PRODUCER
|
||||
db $07, $23, $3C, $4F, $3C, $3A, $4C, $4B, $40, $4D, $3C, $9F, $47, $49, $46, $3B, $4C, $3A, $3C, $49
|
||||
CreditsLine003:
|
||||
;HIROSHI YAMAUCHI
|
||||
db $08, $1F, $64, $65, $6E, $6B, $6F, $64, $65, $9F, $75, $5D, $69, $5D, $71, $5F, $64, $65
|
||||
CreditsLine004:
|
||||
;HIROSHI YAMAUCHI
|
||||
db $08, $1F, $8A, $8B, $94, $91, $95, $8A, $8B, $9F, $9B, $83, $8F, $83, $97, $85, $8A, $8B
|
||||
CreditsLine005:
|
||||
;PRODUCER
|
||||
db $0C, $0F, $29, $2B, $28, $1D, $2E, $1C, $1E, $2B
|
||||
CreditsLine006:
|
||||
;SHIGERU MIYAMOTO
|
||||
db $08, $1F, $6F, $64, $65, $63, $61, $6E, $71, $9F, $69, $65, $75, $5D, $69, $6B, $70, $6B
|
||||
CreditsLine007:
|
||||
;SHIGERU MIYAMOTO
|
||||
db $08, $1F, $95, $8A, $8B, $89, $87, $94, $97, $9F, $8F, $8B, $9B, $83, $8F, $91, $96, $91
|
||||
CreditsLine008:
|
||||
;DIRECTOR
|
||||
db $0C, $0F, $03, $08, $11, $04, $02, $13, $0E, $11
|
||||
CreditsLine009:
|
||||
;TAKASHI TEZUKA
|
||||
db $09, $1B, $70, $5D, $67, $5D, $6F, $64, $65, $9F, $70, $61, $76, $71, $67, $5D
|
||||
CreditsLine010:
|
||||
;TAKASHI TEZUKA
|
||||
db $09, $1B, $96, $83, $8D, $83, $95, $8A, $8B, $9F, $96, $87, $9C, $97, $8D, $83
|
||||
CreditsLine011:
|
||||
;SCRIPT WRITER
|
||||
db $09, $19, $4A, $3A, $49, $40, $47, $4B, $9F, $4E, $49, $40, $4B, $3C, $49
|
||||
CreditsLine012:
|
||||
;KENSUKE TANABE
|
||||
db $09, $1B, $67, $61, $6A, $6F, $71, $67, $61, $9F, $70, $5D, $6A, $5D, $5E, $61
|
||||
CreditsLine013:
|
||||
;KENSUKE TANABE
|
||||
db $09, $1B, $8D, $87, $90, $95, $97, $8D, $87, $9F, $96, $83, $90, $83, $84, $87
|
||||
CreditsLine014:
|
||||
;ASSISTANT DIRECTORS
|
||||
db $06, $25, $1A, $2C, $2C, $22, $2C, $2D, $1A, $27, $2D, $9F, $1D, $22, $2B, $1E, $1C, $2D, $28, $2B, $2C
|
||||
CreditsLine015:
|
||||
;YASUHISA YAMAMURA
|
||||
db $07, $21, $75, $5D, $6F, $71, $64, $65, $6F, $5D, $9F, $75, $5D, $69, $5D, $69, $71, $6E, $5D
|
||||
CreditsLine016:
|
||||
;YASUHISA YAMAMURA
|
||||
db $07, $21, $9B, $83, $95, $97, $8A, $8B, $95, $83, $9F, $9B, $83, $8F, $83, $8F, $97, $94, $83
|
||||
CreditsLine017:
|
||||
;YOICHI YAMADA
|
||||
db $09, $19, $75, $6B, $65, $5F, $64, $65, $9F, $75, $5D, $69, $5D, $60, $5D
|
||||
CreditsLine018:
|
||||
;YOICHI YAMADA
|
||||
db $09, $19, $9B, $91, $8B, $85, $8A, $8B, $9F, $9B, $83, $8F, $83, $86, $83
|
||||
CreditsLine019:
|
||||
;SCREEN GRAPHICS DESIGNERS
|
||||
db $03, $31, $4A, $3A, $49, $3C, $3C, $45, $9F, $3E, $49, $38, $47, $3F, $40, $3A, $4A, $9F, $3B, $3C, $4A, $40, $3E, $45, $3C, $49, $4A
|
||||
CreditsLine020:
|
||||
;OBJECT DESIGNERS
|
||||
db $08, $1F, $28, $1B, $23, $1E, $1C, $2D, $9F, $1D, $1E, $2C, $22, $20, $27, $1E, $2B, $2C
|
||||
CreditsLine021:
|
||||
;SOICHIRO TOMITA
|
||||
db $08, $1D, $6F, $6B, $65, $5F, $64, $65, $6E, $6B, $9F, $70, $6B, $69, $65, $70, $5D
|
||||
CreditsLine022:
|
||||
;SOICHIRO TOMITA
|
||||
db $08, $1D, $95, $91, $8B, $85, $8A, $8B, $94, $91, $9F, $96, $91, $8F, $8B, $96, $83
|
||||
CreditsLine023:
|
||||
;TAKAYA IMAMURA
|
||||
db $09, $1B, $70, $5D, $67, $5D, $75, $5D, $9F, $65, $69, $5D, $69, $71, $6E, $5D
|
||||
CreditsLine024:
|
||||
;TAKAYA IMAMURA
|
||||
db $09, $1B, $96, $83, $8D, $83, $9B, $83, $9F, $8B, $8F, $83, $8F, $97, $94, $83
|
||||
CreditsLine025:
|
||||
;BACK GROUND DESIGNERS
|
||||
db $05, $29, $1B, $1A, $1C, $24, $9F, $20, $2B, $28, $2E, $27, $1D, $9F, $1D, $1E, $2C, $22, $20, $27, $1E, $2B, $2C
|
||||
CreditsLine026:
|
||||
;MASANAO ARIMOTO
|
||||
db $08, $1D, $69, $5D, $6F, $5D, $6A, $5D, $6B, $9F, $5D, $6E, $65, $69, $6B, $70, $6B
|
||||
CreditsLine027:
|
||||
;MASANAO ARIMOTO
|
||||
db $08, $1D, $8F, $83, $95, $83, $90, $83, $91, $9F, $83, $94, $8B, $8F, $91, $96, $91
|
||||
CreditsLine028:
|
||||
;TSUYOSHI WATANABE
|
||||
db $07, $21, $70, $6F, $71, $75, $6B, $6F, $64, $65, $9F, $73, $5D, $70, $5D, $6A, $5D, $5E, $61
|
||||
CreditsLine029:
|
||||
;TSUYOSHI WATANABE
|
||||
db $07, $21, $96, $95, $97, $9B, $91, $95, $8A, $8B, $9F, $99, $83, $96, $83, $90, $83, $84, $87
|
||||
CreditsLine030:
|
||||
;PROGRAM DIRECTOR
|
||||
db $08, $1F, $0F, $11, $0E, $06, $11, $00, $0C, $9F, $03, $08, $11, $04, $02, $13, $0E, $11
|
||||
CreditsLine031:
|
||||
;TOSHIHIKO NAKAGO
|
||||
db $08, $1F, $70, $6B, $6F, $64, $65, $64, $65, $67, $6B, $9F, $6A, $5D, $67, $5D, $63, $6B
|
||||
CreditsLine032:
|
||||
;TOSHIHIKO NAKAGO
|
||||
db $08, $1F, $96, $91, $95, $8A, $8B, $8A, $8B, $8D, $91, $9F, $90, $83, $8D, $83, $89, $91
|
||||
CreditsLine033:
|
||||
;MAIN PROGRAMMER
|
||||
db $08, $1D, $44, $38, $40, $45, $9F, $47, $49, $46, $3E, $49, $38, $44, $44, $3C, $49
|
||||
CreditsLine034:
|
||||
;YASUNARI SOEJIMA
|
||||
db $08, $1F, $75, $5D, $6F, $71, $6A, $5D, $6E, $65, $9F, $6F, $6B, $61, $66, $65, $69, $5D
|
||||
CreditsLine035:
|
||||
;YASUNARI SOEJIMA
|
||||
db $08, $1F, $9B, $83, $95, $97, $90, $83, $94, $8B, $9F, $95, $91, $87, $8C, $8B, $8F, $83
|
||||
CreditsLine036:
|
||||
;OBJECT PROGRAMMER
|
||||
db $07, $21, $46, $39, $41, $3C, $3A, $4B, $9F, $47, $49, $46, $3E, $49, $38, $44, $44, $3C, $49
|
||||
CreditsLine037:
|
||||
;KAZUAKI MORITA
|
||||
db $09, $1B, $67, $5D, $76, $71, $5D, $67, $65, $9F, $69, $6B, $6E, $65, $70, $5D
|
||||
CreditsLine038:
|
||||
;KAZUAKI MORITA
|
||||
db $09, $1B, $8D, $83, $9C, $97, $83, $8D, $8B, $9F, $8F, $91, $94, $8B, $96, $83
|
||||
CreditsLine039:
|
||||
;PROGRAMMERS
|
||||
db $0A, $15, $29, $2B, $28, $20, $2B, $1A, $26, $26, $1E, $2B, $2C
|
||||
CreditsLine040:
|
||||
;TATSUO NISHIYAMA
|
||||
db $08, $1F, $70, $5D, $70, $6F, $71, $6B, $9F, $6A, $65, $6F, $64, $65, $75, $5D, $69, $5D
|
||||
CreditsLine041:
|
||||
;TATSUO NISHIYAMA
|
||||
db $08, $1F, $96, $83, $96, $95, $97, $91, $9F, $90, $8B, $95, $8A, $8B, $9B, $83, $8F, $83
|
||||
CreditsLine042:
|
||||
;YUICHI YAMAMOTO
|
||||
db $08, $1D, $75, $71, $65, $5F, $64, $65, $9F, $75, $5D, $69, $5D, $69, $6B, $70, $6B
|
||||
CreditsLine043:
|
||||
;YUICHI YAMAMOTO
|
||||
db $08, $1D, $9B, $97, $8B, $85, $8A, $8B, $9F, $9B, $83, $8F, $83, $8F, $91, $96, $91
|
||||
CreditsLine044:
|
||||
;YOSHIHIRO NOMOTO
|
||||
db $08, $1F, $75, $6B, $6F, $64, $65, $64, $65, $6E, $6B, $9F, $6A, $6B, $69, $6B, $70, $6B
|
||||
CreditsLine045:
|
||||
;YOSHIHIRO NOMOTO
|
||||
db $08, $1F, $9B, $91, $95, $8A, $8B, $8A, $8B, $94, $91, $9F, $90, $91, $8F, $91, $96, $91
|
||||
CreditsLine046:
|
||||
;EIJI NOTO
|
||||
db $0B, $11, $61, $65, $66, $65, $9F, $6A, $6B, $70, $6B
|
||||
CreditsLine047:
|
||||
;EIJI NOTO
|
||||
db $0B, $11, $87, $8B, $8C, $8B, $9F, $90, $91, $96, $91
|
||||
CreditsLine048:
|
||||
;SATORU TAKAHATA
|
||||
db $08, $1D, $6F, $5D, $70, $6B, $6E, $71, $9F, $70, $5D, $67, $5D, $64, $5D, $70, $5D
|
||||
CreditsLine049:
|
||||
;SATORU TAKAHATA
|
||||
db $08, $1D, $95, $83, $96, $91, $94, $97, $9F, $96, $83, $8D, $83, $8A, $83, $96, $83
|
||||
CreditsLine050:
|
||||
;TOSHIO IWAWAKI
|
||||
db $09, $1B, $70, $6B, $6F, $64, $65, $6B, $9F, $65, $73, $5D, $73, $5D, $67, $65
|
||||
CreditsLine051:
|
||||
;TOSHIO IWAWAKI
|
||||
db $09, $1B, $96, $91, $95, $8A, $8B, $91, $9F, $8B, $99, $83, $99, $83, $8D, $8B
|
||||
CreditsLine052:
|
||||
;SHIGEHIRO KASAMATSU
|
||||
db $06, $25, $6F, $64, $65, $63, $61, $64, $65, $6E, $6B, $9F, $67, $5D, $6F, $5D, $69, $5D, $70, $6F, $71
|
||||
CreditsLine053:
|
||||
;SHIGEHIRO KASAMATSU
|
||||
db $06, $25, $95, $8A, $8B, $89, $87, $8A, $8B, $94, $91, $9F, $8D, $83, $95, $83, $8F, $83, $96, $95, $97
|
||||
CreditsLine054:
|
||||
;YASUNARI NISHIDA
|
||||
db $08, $1F, $75, $5D, $6F, $71, $6A, $5D, $6E, $65, $9F, $6A, $65, $6F, $64, $65, $60, $5D
|
||||
CreditsLine055:
|
||||
;YASUNARI NISHIDA
|
||||
db $08, $1F, $9B, $83, $95, $97, $90, $83, $94, $8B, $9F, $90, $8B, $95, $8A, $8B, $86, $83
|
||||
CreditsLine056:
|
||||
;SOUND COMPOSER
|
||||
db $09, $1B, $12, $0E, $14, $0D, $03, $9F, $02, $0E, $0C, $0F, $0E, $12, $04, $11
|
||||
CreditsLine057:
|
||||
;KOJI KONDO
|
||||
db $0B, $13, $67, $6B, $66, $65, $9F, $67, $6B, $6A, $60, $6B
|
||||
CreditsLine058:
|
||||
;KOJI KONDO
|
||||
db $0B, $13, $8D, $91, $8C, $8B, $9F, $8D, $91, $90, $86, $91
|
||||
CreditsLine059:
|
||||
;COORDINATORS
|
||||
db $0A, $17, $3A, $46, $46, $49, $3B, $40, $45, $38, $4B, $46, $49, $4A
|
||||
CreditsLine060:
|
||||
;KEIZO KATO
|
||||
db $0B, $13, $67, $61, $65, $76, $6B, $9F, $67, $5D, $70, $6B
|
||||
CreditsLine061:
|
||||
;KEIZO KATO
|
||||
db $0B, $13, $8D, $87, $8B, $9C, $91, $9F, $8D, $83, $96, $91
|
||||
CreditsLine062:
|
||||
;TAKAO SHIMIZU
|
||||
db $09, $19, $70, $5D, $67, $5D, $6B, $9F, $6F, $64, $65, $69, $65, $76, $71
|
||||
CreditsLine063:
|
||||
;TAKAO SHIMIZU
|
||||
db $09, $19, $96, $83, $8D, $83, $91, $9F, $95, $8A, $8B, $8F, $8B, $9C, $97
|
||||
CreditsLine064:
|
||||
;PRINTED ART WORK
|
||||
db $08, $1F, $29, $2B, $22, $27, $2D, $1E, $1D, $9F, $1A, $2B, $2D, $9F, $30, $28, $2B, $24
|
||||
CreditsLine065:
|
||||
;YOICHI KOTABE
|
||||
db $09, $19, $75, $6B, $65, $5F, $64, $65, $9F, $67, $6B, $70, $5D, $5E, $61
|
||||
CreditsLine066:
|
||||
;YOICHI KOTABE
|
||||
db $09, $19, $9B, $91, $8B, $85, $8A, $8B, $9F, $8D, $91, $96, $83, $84, $87
|
||||
CreditsLine067:
|
||||
;HIDEKI FUJII
|
||||
db $0A, $17, $64, $65, $60, $61, $67, $65, $9F, $62, $71, $66, $65, $65
|
||||
CreditsLine068:
|
||||
;HIDEKI FUJII
|
||||
db $0A, $17, $8A, $8B, $86, $87, $8D, $8B, $9F, $88, $97, $8C, $8B, $8B
|
||||
CreditsLine069:
|
||||
;YOSHIAKI KOIZUMI
|
||||
db $08, $1F, $75, $6B, $6F, $64, $65, $5D, $67, $65, $9F, $67, $6B, $65, $76, $71, $69, $65
|
||||
CreditsLine070:
|
||||
;YOSHIAKI KOIZUMI
|
||||
db $08, $1F, $9B, $91, $95, $8A, $8B, $83, $8D, $8B, $9F, $8D, $91, $8B, $9C, $97, $8F, $8B
|
||||
CreditsLine071:
|
||||
;YASUHIRO SAKAI
|
||||
db $09, $1B, $75, $5D, $6F, $71, $64, $65, $6E, $6B, $9F, $6F, $5D, $67, $5D, $65
|
||||
CreditsLine072:
|
||||
;YASUHIRO SAKAI
|
||||
db $09, $1B, $9B, $83, $95, $97, $8A, $8B, $94, $91, $9F, $95, $83, $8D, $83, $8B
|
||||
CreditsLine073:
|
||||
;TOMOAKI KUROUME
|
||||
db $08, $1D, $70, $6B, $69, $6B, $5D, $67, $65, $9F, $67, $71, $6E, $6B, $71, $69, $61
|
||||
CreditsLine074:
|
||||
;TOMOAKI KUROUME
|
||||
db $08, $1D, $96, $91, $8F, $91, $83, $8D, $8B, $9F, $8D, $97, $94, $91, $97, $8F, $87
|
||||
CreditsLine075:
|
||||
;SPECIAL THANKS TO
|
||||
db $07, $21, $12, $0F, $04, $02, $08, $00, $0B, $9F, $13, $07, $00, $0D, $0A, $12, $9F, $13, $0E
|
||||
CreditsLine076:
|
||||
;NOBUO OKAJIMA
|
||||
db $09, $19, $6A, $6B, $5E, $71, $6B, $9F, $6B, $67, $5D, $66, $65, $69, $5D
|
||||
CreditsLine077:
|
||||
;NOBUO OKAJIMA
|
||||
db $09, $19, $90, $91, $84, $97, $91, $9F, $91, $8D, $83, $8C, $8B, $8F, $83
|
||||
CreditsLine078:
|
||||
;YASUNORI TAKETANI
|
||||
db $07, $21, $75, $5D, $6F, $71, $6A, $6B, $6E, $65, $9F, $70, $5D, $67, $61, $70, $5D, $6A, $65
|
||||
CreditsLine079:
|
||||
;YASUNORI TAKETANI
|
||||
db $07, $21, $9B, $83, $95, $97, $90, $91, $94, $8B, $9F, $96, $83, $8D, $87, $96, $83, $90, $8B
|
||||
CreditsLine080:
|
||||
;KIYOSHI KODA
|
||||
db $0A, $17, $67, $65, $75, $6B, $6F, $64, $65, $9F, $67, $6B, $60, $5D
|
||||
CreditsLine081:
|
||||
;KIYOSHI KODA
|
||||
db $0A, $17, $8D, $8B, $9B, $91, $95, $8A, $8B, $9F, $8D, $91, $86, $83
|
||||
CreditsLine082:
|
||||
;TAKAMITSU KUZUHARA
|
||||
db $07, $23, $70, $5D, $67, $5D, $69, $65, $70, $6F, $71, $9F, $67, $71, $76, $71, $64, $5D, $6E, $5D
|
||||
CreditsLine083:
|
||||
;TAKAMITSU KUZUHARA
|
||||
db $07, $23, $96, $83, $8D, $83, $8F, $8B, $96, $95, $97, $9F, $8D, $97, $9C, $97, $8A, $83, $94, $83
|
||||
CreditsLine084:
|
||||
;HIRONOBU KAKUI
|
||||
db $09, $1B, $64, $65, $6E, $6B, $6A, $6B, $5E, $71, $9F, $67, $5D, $67, $71, $65
|
||||
CreditsLine085:
|
||||
;HIRONOBU KAKUI
|
||||
db $09, $1B, $8A, $8B, $94, $91, $90, $91, $84, $97, $9F, $8D, $83, $8D, $97, $8B
|
||||
CreditsLine086:
|
||||
;SHIGEKI YAMASHIRO
|
||||
db $07, $21, $6F, $64, $65, $63, $61, $67, $65, $9F, $75, $5D, $69, $5D, $6F, $64, $65, $6E, $6B
|
||||
CreditsLine087:
|
||||
;SHIGEKI YAMASHIRO
|
||||
db $07, $21, $95, $8A, $8B, $89, $87, $8D, $8B, $9F, $9B, $83, $8F, $83, $95, $8A, $8B, $94, $91
|
||||
CreditsLine088:
|
||||
;ALTTP RANDOMIZER CONTRIBUTORS
|
||||
db $01, $39, $38, $43, $4B, $4B, $47, $9F, $49, $38, $45, $3B, $46, $44, $40, $51, $3C, $49, $9F, $3A, $46, $45, $4B, $49, $40, $39, $4C, $4B, $46, $49, $4A
|
||||
CreditsLine089:
|
||||
;APPLICATION DEVELOPMENT
|
||||
db $04, $2D, $1A, $29, $29, $25, $22, $1C, $1A, $2D, $22, $28, $27, $9F, $1D, $1E, $2F, $1E, $25, $28, $29, $26, $1E, $27, $2D
|
||||
CreditsLine090:
|
||||
;DESSYREQT
|
||||
db $0B, $11, $60, $61, $6F, $6F, $75, $6E, $61, $6D, $70
|
||||
CreditsLine091:
|
||||
;DESSYREQT
|
||||
db $0B, $11, $86, $87, $95, $95, $9B, $94, $87, $93, $96
|
||||
CreditsLine092:
|
||||
;SNES DEVELOPMENT
|
||||
db $08, $1F, $12, $0D, $04, $12, $9F, $03, $04, $15, $04, $0B, $0E, $0F, $0C, $04, $0D, $13
|
||||
CreditsLine093:
|
||||
;KARKAT / MMXBASS
|
||||
db $08, $1F, $67, $5D, $6E, $67, $5D, $70, $9F, $A2, $9F, $69, $69, $74, $5E, $5D, $6F, $6F
|
||||
CreditsLine094:
|
||||
;KARKAT / MMXBASS
|
||||
db $08, $1F, $8D, $83, $94, $8D, $83, $96, $9F, $C2, $9F, $8F, $8F, $9A, $84, $83, $95, $95
|
||||
CreditsLine095:
|
||||
;SMALLHACKER
|
||||
db $0A, $15, $6F, $69, $5D, $68, $68, $64, $5D, $5F, $67, $61, $6E
|
||||
CreditsLine096:
|
||||
;SMALLHACKER
|
||||
db $0A, $15, $95, $8F, $83, $8E, $8E, $8A, $83, $85, $8D, $87, $94
|
||||
CreditsLine097:
|
||||
;LOGIC AND ROUTING
|
||||
db $07, $21, $43, $46, $3E, $40, $3A, $9F, $38, $45, $3B, $9F, $49, $46, $4C, $4B, $40, $45, $3E
|
||||
CreditsLine098:
|
||||
;CHRISTOSOWEN
|
||||
db $0A, $17, $5F, $64, $6E, $65, $6F, $70, $6B, $6F, $6B, $73, $61, $6A
|
||||
CreditsLine099:
|
||||
;CHRISTOSOWEN
|
||||
db $0A, $17, $85, $8A, $94, $8B, $95, $96, $91, $95, $91, $99, $87, $90
|
||||
CreditsLine100:
|
||||
;VEETORP
|
||||
db $0C, $0D, $72, $61, $61, $70, $6B, $6E, $6C
|
||||
CreditsLine101:
|
||||
;VEETORP
|
||||
db $0C, $0D, $98, $87, $87, $96, $91, $94, $92
|
||||
CreditsLine102:
|
||||
;SPECIAL THANKS
|
||||
db $09, $1B, $2C, $29, $1E, $1C, $22, $1A, $25, $9F, $2D, $21, $1A, $27, $24, $2C
|
||||
CreditsLine103:
|
||||
;SUPERSKUJ
|
||||
db $0B, $11, $6F, $71, $6C, $61, $6E, $6F, $67, $71, $66
|
||||
CreditsLine104:
|
||||
;SUPERSKUJ
|
||||
db $0B, $11, $95, $97, $92, $87, $94, $95, $8D, $97, $8C
|
||||
CreditsLine105:
|
||||
;BLUEVIPER85
|
||||
db $0A, $15, $5E, $68, $71, $61, $72, $65, $6C, $61, $6E, $5B, $58
|
||||
CreditsLine106:
|
||||
;BLUEVIPER85
|
||||
db $0A, $15, $84, $8E, $97, $87, $98, $8B, $92, $87, $94, $81, $7E
|
||||
CreditsLine107:
|
||||
;ZARBY89
|
||||
db $0C, $0D, $76, $5D, $6E, $5E, $75, $5B, $5C
|
||||
CreditsLine108:
|
||||
;ZARBY89
|
||||
db $0C, $0D, $9C, $83, $94, $84, $9B, $81, $82
|
||||
CreditsLine109:
|
||||
;MATHONNAPKINS
|
||||
db $09, $19, $69, $5D, $70, $64, $6B, $6A, $6A, $5D, $6C, $67, $65, $6A, $6F
|
||||
CreditsLine110:
|
||||
;MATHONNAPKINS
|
||||
db $09, $19, $8F, $83, $96, $8A, $91, $90, $90, $83, $92, $8D, $8B, $90, $95
|
||||
CreditsLine111:
|
||||
;ACMLM
|
||||
db $0D, $09, $5D, $5F, $69, $68, $69
|
||||
CreditsLine112:
|
||||
;ACMLM
|
||||
db $0D, $09, $83, $85, $8F, $8E, $8F
|
||||
CreditsLine113:
|
||||
;DARKMAGICIAN1184
|
||||
db $08, $1F, $60, $5D, $6E, $67, $69, $5D, $63, $65, $5F, $65, $5D, $6A, $54, $54, $5B, $57
|
||||
CreditsLine114:
|
||||
;DARKMAGICIAN1184
|
||||
db $08, $1F, $86, $83, $94, $8D, $8F, $83, $89, $8B, $85, $8B, $83, $90, $7A, $7A, $81, $7D
|
||||
CreditsLine115:
|
||||
;JOSH
|
||||
db $0E, $07, $66, $6B, $6F, $64
|
||||
CreditsLine116:
|
||||
;JOSH
|
||||
db $0E, $07, $8C, $91, $95, $8A
|
||||
CreditsLine117:
|
||||
;MISHRAK109
|
||||
db $0B, $13, $69, $65, $6F, $64, $6E, $5D, $67, $54, $53, $5C
|
||||
CreditsLine118:
|
||||
;MISHRAK109
|
||||
db $0B, $13, $8F, $8B, $95, $8A, $94, $83, $8D, $7A, $79, $82
|
||||
CreditsLine119:
|
||||
;SEANCASS
|
||||
db $0C, $0F, $6F, $61, $5D, $6A, $5F, $5D, $6F, $6F
|
||||
CreditsLine120:
|
||||
;SEANCASS
|
||||
db $0C, $0F, $95, $87, $83, $90, $85, $83, $95, $95
|
||||
CreditsLine121:
|
||||
;SCREEVO
|
||||
db $0C, $0D, $6F, $5F, $6E, $61, $61, $72, $6B
|
||||
CreditsLine122:
|
||||
;SCREEVO
|
||||
db $0C, $0D, $95, $85, $94, $87, $87, $98, $91
|
||||
CreditsLine123:
|
||||
;GREENHAM
|
||||
db $0C, $0F, $63, $6E, $61, $61, $6A, $64, $5D, $69
|
||||
CreditsLine124:
|
||||
;GREENHAM
|
||||
db $0C, $0F, $89, $94, $87, $87, $90, $8A, $83, $8F
|
||||
CreditsLine125:
|
||||
;GREENLINENSHIRT
|
||||
db $08, $1D, $63, $6E, $61, $61, $6A, $68, $65, $6A, $61, $6A, $6F, $64, $65, $6E, $70
|
||||
CreditsLine126:
|
||||
;GREENLINENSHIRT
|
||||
db $08, $1D, $89, $94, $87, $87, $90, $8E, $8B, $90, $87, $90, $95, $8A, $8B, $94, $96
|
||||
CreditsLine127:
|
||||
;WIZZROBEZC
|
||||
db $0B, $13, $73, $65, $76, $76, $6E, $6B, $5E, $61, $76, $5F
|
||||
CreditsLine128:
|
||||
;WIZZROBEZC
|
||||
db $0B, $13, $99, $8B, $9C, $9C, $94, $91, $84, $87, $9C, $85
|
||||
CreditsLine129:
|
||||
;MYRAMONG
|
||||
db $0C, $0F, $69, $75, $6E, $5D, $69, $6B, $6A, $63
|
||||
CreditsLine130:
|
||||
;MYRAMONG
|
||||
db $0C, $0F, $8F, $9B, $94, $83, $8F, $91, $90, $89
|
||||
CreditsLine131:
|
||||
;BARNOWL
|
||||
db $0C, $0D, $5E, $5D, $6E, $6A, $6B, $73, $68
|
||||
CreditsLine132:
|
||||
;BARNOWL
|
||||
db $0C, $0D, $84, $83, $94, $90, $91, $99, $8E
|
||||
CreditsLine133:
|
||||
;EVILASH25
|
||||
db $0B, $11, $61, $72, $65, $68, $5D, $6F, $64, $55, $58
|
||||
CreditsLine134:
|
||||
;EVILASH25
|
||||
db $0B, $11, $87, $98, $8B, $8E, $83, $95, $8A, $7B, $7E
|
||||
CreditsLine135:
|
||||
;KANZEON
|
||||
db $0C, $0D, $67, $5D, $6A, $76, $61, $6B, $6A
|
||||
CreditsLine136:
|
||||
;KANZEON
|
||||
db $0C, $0D, $8D, $83, $90, $9C, $87, $91, $90
|
||||
CreditsLine137:
|
||||
;RAMBLY
|
||||
db $0D, $0B, $6E, $5D, $69, $5E, $68, $75
|
||||
CreditsLine138:
|
||||
;RAMBLY
|
||||
db $0D, $0B, $94, $83, $8F, $84, $8E, $9B
|
||||
CreditsLine139:
|
||||
;FECHDOG
|
||||
db $0C, $0D, $62, $61, $5F, $64, $60, $6B, $63
|
||||
CreditsLine140:
|
||||
;FECHDOG
|
||||
db $0C, $0D, $88, $87, $85, $8A, $86, $91, $89
|
||||
CreditsLine141:
|
||||
;FLUFFGUCK
|
||||
db $0B, $11, $62, $68, $71, $62, $62, $63, $71, $5F, $67
|
||||
CreditsLine142:
|
||||
;FLUFFGUCK
|
||||
db $0B, $11, $88, $8E, $97, $88, $88, $89, $97, $85, $8D
|
||||
CreditsLine143:
|
||||
;MOPPLETON
|
||||
db $0B, $11, $69, $6B, $6C, $6C, $68, $61, $70, $6B, $6A
|
||||
CreditsLine144:
|
||||
;MOPPLETON
|
||||
db $0B, $11, $8F, $91, $92, $92, $8E, $87, $96, $91, $90
|
||||
CreditsLine145:
|
||||
;DUST N STUFF
|
||||
db $0A, $17, $60, $71, $6F, $70, $9F, $6A, $9F, $6F, $70, $71, $62, $62
|
||||
CreditsLine146:
|
||||
;DUST N STUFF
|
||||
db $0A, $17, $86, $97, $95, $96, $9F, $90, $9F, $95, $96, $97, $88, $88
|
||||
CreditsLine147:
|
||||
;MRJ
|
||||
db $0E, $05, $69, $6E, $66
|
||||
CreditsLine148:
|
||||
;MRJ
|
||||
db $0E, $05, $8F, $94, $8C
|
||||
CreditsLine149:
|
||||
;QUEST PERFORMANCE
|
||||
db $07, $21, $2A, $2E, $1E, $2C, $2D, $9F, $29, $1E, $2B, $1F, $28, $2B, $26, $1A, $27, $1C, $1E
|
||||
CreditsLine150:
|
||||
;ITEM LOCATIONS CHECKED
|
||||
db $05, $2B, $40, $4B, $3C, $44, $9F, $43, $46, $3A, $38, $4B, $40, $46, $45, $4A, $9F, $3A, $3F, $3C, $3A, $42, $3C, $3B
|
||||
CreditsLine151:
|
||||
;CHESTS $$$$/160
|
||||
db $01, $3B, $5F, $64, $61, $6F, $70, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $54, $59, $53
|
||||
CreditsLine152:
|
||||
;CHESTS $$$$/160
|
||||
db $01, $3B, $85, $8A, $87, $95, $96, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $7A, $7F, $79
|
||||
CreditsLine153:
|
||||
;OTHER $$$$/ 56
|
||||
db $01, $3B, $6B, $70, $64, $61, $6E, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $58, $59
|
||||
CreditsLine154:
|
||||
;OTHER $$$$/ 56
|
||||
db $01, $3B, $91, $96, $8A, $87, $94, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7E, $7F
|
||||
CreditsLine155:
|
||||
;TOTAL $$$$/216
|
||||
db $01, $3B, $70, $6B, $70, $5D, $68, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $55, $54, $59
|
||||
CreditsLine156:
|
||||
;TOTAL $$$$/216
|
||||
db $01, $3B, $96, $91, $96, $83, $8E, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $7B, $7A, $7F
|
||||
CreditsLine157:
|
||||
;ITEM COMPLETION
|
||||
db $08, $1D, $08, $13, $04, $0C, $9F, $02, $0E, $0C, $0F, $0B, $04, $13, $08, $0E, $0D
|
||||
CreditsLine158:
|
||||
;Y ITEMS $$$$/ 26
|
||||
db $01, $3B, $75, $9F, $65, $70, $61, $69, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $55, $59
|
||||
CreditsLine159:
|
||||
;Y ITEMS $$$$/ 26
|
||||
db $01, $3B, $9B, $9F, $8B, $96, $87, $8F, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7B, $7F
|
||||
CreditsLine160:
|
||||
;A ITEMS $$$$/ 5
|
||||
db $01, $3B, $5D, $9F, $65, $70, $61, $69, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $58
|
||||
CreditsLine161:
|
||||
;A ITEMS $$$$/ 5
|
||||
db $01, $3B, $83, $9F, $8B, $96, $87, $8F, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7E
|
||||
CreditsLine162:
|
||||
;SWORDS $$$$/ 4
|
||||
db $01, $3B, $6F, $73, $6B, $6E, $60, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $57
|
||||
CreditsLine163:
|
||||
;SWORDS $$$$/ 4
|
||||
db $01, $3B, $95, $99, $91, $94, $86, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7D
|
||||
CreditsLine164:
|
||||
;SHIELDS $$$$/ 3
|
||||
db $01, $3B, $6F, $64, $65, $61, $68, $60, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $56
|
||||
CreditsLine165:
|
||||
;SHIELDS $$$$/ 3
|
||||
db $01, $3B, $95, $8A, $8B, $87, $8E, $86, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7C
|
||||
CreditsLine166:
|
||||
;MAILS $$$$/ 3
|
||||
db $01, $3B, $69, $5D, $65, $68, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $56
|
||||
CreditsLine167:
|
||||
;MAILS $$$$/ 3
|
||||
db $01, $3B, $8F, $83, $8B, $8E, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7C
|
||||
CreditsLine168:
|
||||
;CAPACITY UPGRADES $$$$/ 15
|
||||
db $01, $3B, $5F, $5D, $6C, $5D, $5F, $65, $70, $75, $9F, $71, $6C, $63, $6E, $5D, $60, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $58
|
||||
CreditsLine169:
|
||||
;CAPACITY UPGRADES $$$$/ 15
|
||||
db $01, $3B, $85, $83, $92, $83, $85, $8B, $96, $9B, $9F, $97, $92, $89, $94, $83, $86, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7E
|
||||
CreditsLine170:
|
||||
;HEART PIECES $$$$/ 24
|
||||
db $01, $3B, $64, $61, $5D, $6E, $70, $9F, $6C, $65, $61, $5F, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $55, $57
|
||||
CreditsLine171:
|
||||
;HEART PIECES $$$$/ 24
|
||||
db $01, $3B, $8A, $87, $83, $94, $96, $9F, $92, $8B, $87, $85, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7B, $7D
|
||||
CreditsLine172:
|
||||
;HEART CONTAINERS $$$$/ 11
|
||||
db $01, $3B, $64, $61, $5D, $6E, $70, $9F, $5F, $6B, $6A, $70, $5D, $65, $6A, $61, $6E, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $54
|
||||
CreditsLine173:
|
||||
;HEART CONTAINERS $$$$/ 11
|
||||
db $01, $3B, $8A, $87, $83, $94, $96, $9F, $85, $91, $90, $96, $83, $8B, $90, $87, $94, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7A
|
||||
CreditsLine174:
|
||||
;DUNGEON COMPLETION
|
||||
db $07, $23, $3B, $4C, $45, $3E, $3C, $46, $45, $9F, $3A, $46, $44, $47, $43, $3C, $4B, $40, $46, $45
|
||||
CreditsLine175:
|
||||
;MAPS $$$$/ 12
|
||||
db $01, $3B, $69, $5D, $6C, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $55
|
||||
CreditsLine176:
|
||||
;MAPS $$$$/ 12
|
||||
db $01, $3B, $8F, $83, $92, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7B
|
||||
CreditsLine177:
|
||||
;COMPASSES $$$$/ 11
|
||||
db $01, $3B, $5F, $6B, $69, $6C, $5D, $6F, $6F, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $54
|
||||
CreditsLine178:
|
||||
;COMPASSES $$$$/ 11
|
||||
db $01, $3B, $85, $91, $8F, $92, $83, $95, $95, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7A
|
||||
CreditsLine179:
|
||||
;SMALL KEYS $$$$/ 61
|
||||
db $01, $3B, $6F, $69, $5D, $68, $68, $9F, $67, $61, $75, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $59, $54
|
||||
CreditsLine180:
|
||||
;SMALL KEYS $$$$/ 61
|
||||
db $01, $3B, $95, $8F, $83, $8E, $8E, $9F, $8D, $87, $9B, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7F, $7A
|
||||
CreditsLine181:
|
||||
;BIG KEYS $$$$/ 12
|
||||
db $01, $3B, $5E, $65, $63, $9F, $67, $61, $75, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $55
|
||||
CreditsLine182:
|
||||
;BIG KEYS $$$$/ 12
|
||||
db $01, $3B, $84, $8B, $89, $9F, $8D, $87, $9B, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7B
|
||||
CreditsLine183:
|
||||
;BIG CHESTS $$$$/ 11
|
||||
db $01, $3B, $5E, $65, $63, $9F, $5F, $64, $61, $6F, $70, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $54
|
||||
CreditsLine184:
|
||||
;BIG CHESTS $$$$/ 11
|
||||
db $01, $3B, $84, $8B, $89, $9F, $85, $8A, $87, $95, $96, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7A
|
||||
CreditsLine185:
|
||||
;PENDANTS $$$$/ 3
|
||||
db $01, $3B, $6C, $61, $6A, $60, $5D, $6A, $70, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $56
|
||||
CreditsLine186:
|
||||
;PENDANTS $$$$/ 3
|
||||
db $01, $3B, $92, $87, $90, $86, $83, $90, $96, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7C
|
||||
CreditsLine187:
|
||||
;CRYSTALS $$$$/ 7
|
||||
db $01, $3B, $5F, $6E, $75, $6F, $70, $5D, $68, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $5A
|
||||
CreditsLine188:
|
||||
;CRYSTALS $$$$/ 7
|
||||
db $01, $3B, $85, $94, $9B, $95, $96, $83, $8E, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $80
|
||||
CreditsLine189:
|
||||
;BOSSES $$$$/ 13
|
||||
db $01, $3B, $5E, $6B, $6F, $6F, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $56
|
||||
CreditsLine190:
|
||||
;BOSSES $$$$/ 13
|
||||
db $01, $3B, $84, $91, $95, $95, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7C
|
||||
CreditsLine191:
|
||||
;DUNGEON PERFORMANCE
|
||||
db $06, $25, $1D, $2E, $27, $20, $1E, $28, $27, $9F, $29, $1E, $2B, $1F, $28, $2B, $26, $1A, $27, $1C, $1E
|
||||
CreditsLine192:
|
||||
;HYRULE CASTLE $$$$/ 8
|
||||
db $01, $3B, $64, $75, $6E, $71, $68, $61, $9F, $5F, $5D, $6F, $70, $68, $61, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $5B
|
||||
CreditsLine193:
|
||||
;HYRULE CASTLE $$$$/ 8
|
||||
db $01, $3B, $8A, $9B, $94, $97, $8E, $87, $9F, $85, $83, $95, $96, $8E, $87, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $81
|
||||
CreditsLine194:
|
||||
;EASTERN PALACE $$$$/ 6
|
||||
db $01, $3B, $61, $5D, $6F, $70, $61, $6E, $6A, $9F, $6C, $5D, $68, $5D, $5F, $61, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $59
|
||||
CreditsLine195:
|
||||
;EASTERN PALACE $$$$/ 6
|
||||
db $01, $3B, $87, $83, $95, $96, $87, $94, $90, $9F, $92, $83, $8E, $83, $85, $87, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7F
|
||||
CreditsLine196:
|
||||
;DESERT PALACE $$$$/ 6
|
||||
db $01, $3B, $60, $61, $6F, $61, $6E, $70, $9F, $6C, $5D, $68, $5D, $5F, $61, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $59
|
||||
CreditsLine197:
|
||||
;DESERT PALACE $$$$/ 6
|
||||
db $01, $3B, $86, $87, $95, $87, $94, $96, $9F, $92, $83, $8E, $83, $85, $87, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7F
|
||||
CreditsLine198:
|
||||
;TOWER OF HERA $$$$/ 5
|
||||
db $01, $3B, $70, $6B, $73, $61, $6E, $9F, $6B, $62, $9F, $64, $61, $6E, $5D, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $58
|
||||
CreditsLine199:
|
||||
;TOWER OF HERA $$$$/ 5
|
||||
db $01, $3B, $96, $91, $99, $87, $94, $9F, $91, $88, $9F, $8A, $87, $94, $83, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7E
|
||||
CreditsLine200:
|
||||
;AGAHNIM'S TOWER $$$$/ 2
|
||||
db $01, $3B, $5D, $63, $5D, $64, $6A, $65, $69, $77, $6F, $9F, $70, $6B, $73, $61, $6E, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $55
|
||||
CreditsLine201:
|
||||
;AGAHNIM'S TOWER $$$$/ 2
|
||||
db $01, $3B, $83, $89, $83, $8A, $90, $8B, $8F, $9D, $95, $9F, $96, $91, $99, $87, $94, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $7B
|
||||
CreditsLine202:
|
||||
;PALACE OF DARKNESS $$$$/ 14
|
||||
db $01, $3B, $6C, $5D, $68, $5D, $5F, $61, $9F, $6B, $62, $9F, $60, $5D, $6E, $67, $6A, $61, $6F, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $57
|
||||
CreditsLine203:
|
||||
;PALACE OF DARKNESS $$$$/ 14
|
||||
db $01, $3B, $92, $83, $8E, $83, $85, $87, $9F, $91, $88, $9F, $86, $83, $94, $8D, $90, $87, $95, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7D
|
||||
CreditsLine204:
|
||||
;SWAMP PALACE $$$$/ 10
|
||||
db $01, $3B, $6F, $73, $5D, $69, $6C, $9F, $6C, $5D, $68, $5D, $5F, $61, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $53
|
||||
CreditsLine205:
|
||||
;SWAMP PALACE $$$$/ 10
|
||||
db $01, $3B, $95, $99, $83, $8F, $92, $9F, $92, $83, $8E, $83, $85, $87, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $79
|
||||
CreditsLine206:
|
||||
;SKULL WOODS $$$$/ 8
|
||||
db $01, $3B, $6F, $67, $71, $68, $68, $9F, $73, $6B, $6B, $60, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $5B
|
||||
CreditsLine207:
|
||||
;SKULL WOODS $$$$/ 8
|
||||
db $01, $3B, $95, $8D, $97, $8E, $8E, $9F, $99, $91, $91, $86, $95, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $81
|
||||
CreditsLine208:
|
||||
;THIEVES' TOWN $$$$/ 8
|
||||
db $01, $3B, $70, $64, $65, $61, $72, $61, $6F, $77, $9F, $70, $6B, $73, $6A, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $5B
|
||||
CreditsLine209:
|
||||
;THIEVES' TOWN $$$$/ 8
|
||||
db $01, $3B, $96, $8A, $8B, $87, $98, $87, $95, $9D, $9F, $96, $91, $99, $90, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $81
|
||||
CreditsLine210:
|
||||
;ICE PALACE $$$$/ 8
|
||||
db $01, $3B, $65, $5F, $61, $9F, $6C, $5D, $68, $5D, $5F, $61, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $5B
|
||||
CreditsLine211:
|
||||
;ICE PALACE $$$$/ 8
|
||||
db $01, $3B, $8B, $85, $87, $9F, $92, $83, $8E, $83, $85, $87, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $81
|
||||
CreditsLine212:
|
||||
;MISERY MIRE $$$$/ 8
|
||||
db $01, $3B, $69, $65, $6F, $61, $6E, $75, $9F, $69, $65, $6E, $61, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $9F, $5B
|
||||
CreditsLine213:
|
||||
;MISERY MIRE $$$$/ 8
|
||||
db $01, $3B, $8F, $8B, $95, $87, $94, $9B, $9F, $8F, $8B, $94, $87, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $9F, $81
|
||||
CreditsLine214:
|
||||
;TURTLE ROCK $$$$/ 12
|
||||
db $01, $3B, $70, $71, $6E, $70, $68, $61, $9F, $6E, $6B, $5F, $67, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $55
|
||||
CreditsLine215:
|
||||
;TURTLE ROCK $$$$/ 12
|
||||
db $01, $3B, $96, $97, $94, $96, $8E, $87, $9F, $94, $91, $85, $8D, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7B
|
||||
CreditsLine216:
|
||||
;GANON'S TOWER $$$$/ 27
|
||||
db $01, $3B, $63, $5D, $6A, $6B, $6A, $77, $6F, $9F, $70, $6B, $73, $61, $6E, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $55, $5A
|
||||
CreditsLine217:
|
||||
;GANON'S TOWER $$$$/ 27
|
||||
db $01, $3B, $89, $83, $90, $91, $90, $9D, $95, $9F, $96, $91, $99, $87, $94, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7B, $80
|
||||
CreditsLine218:
|
||||
;THE IMPORTANT STUFF
|
||||
db $06, $25, $2D, $21, $1E, $9F, $22, $26, $29, $28, $2B, $2D, $1A, $27, $2D, $9F, $2C, $2D, $2E, $1F, $1F
|
||||
CreditsLine219:
|
||||
;ITEMS PRE GANON KEY $$$$/ 22
|
||||
db $01, $3B, $65, $70, $61, $69, $6F, $9F, $6C, $6E, $61, $9F, $63, $5D, $6A, $6B, $6A, $9F, $67, $61, $75, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $55, $55
|
||||
CreditsLine220:
|
||||
;ITEMS PRE GANON KEY $$$$/ 22
|
||||
db $01, $3B, $8B, $96, $87, $8F, $95, $9F, $92, $94, $87, $9F, $89, $83, $90, $91, $90, $9F, $8D, $87, $9B, $9F, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7B, $7B
|
||||
CreditsLine221:
|
||||
;LEVEL 1 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $68, $61, $72, $61, $68, $9F, $54, $9F, $6F, $73, $6B, $6E, $60, $9F, $5E, $6B, $6F, $6F, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $56
|
||||
CreditsLine222:
|
||||
;LEVEL 1 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $8E, $87, $98, $87, $8E, $9F, $7A, $9F, $95, $99, $91, $94, $86, $9F, $84, $91, $95, $95, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7C
|
||||
CreditsLine223:
|
||||
;LEVEL 2 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $68, $61, $72, $61, $68, $9F, $55, $9F, $6F, $73, $6B, $6E, $60, $9F, $5E, $6B, $6F, $6F, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $56
|
||||
CreditsLine224:
|
||||
;LEVEL 2 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $8E, $87, $98, $87, $8E, $9F, $7B, $9F, $95, $99, $91, $94, $86, $9F, $84, $91, $95, $95, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7C
|
||||
CreditsLine225:
|
||||
;LEVEL 3 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $68, $61, $72, $61, $68, $9F, $56, $9F, $6F, $73, $6B, $6E, $60, $9F, $5E, $6B, $6F, $6F, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $56
|
||||
CreditsLine226:
|
||||
;LEVEL 3 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $8E, $87, $98, $87, $8E, $9F, $7C, $9F, $95, $99, $91, $94, $86, $9F, $84, $91, $95, $95, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7C
|
||||
CreditsLine227:
|
||||
;LEVEL 4 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $68, $61, $72, $61, $68, $9F, $57, $9F, $6F, $73, $6B, $6E, $60, $9F, $5E, $6B, $6F, $6F, $61, $6F, $9F, $9F, $9F, $9F, $9F, $9F, $A2, $9F, $54, $56
|
||||
CreditsLine228:
|
||||
;LEVEL 4 SWORD BOSSES $$$$/ 13
|
||||
db $01, $3B, $8E, $87, $98, $87, $8E, $9F, $7D, $9F, $95, $99, $91, $94, $86, $9F, $84, $91, $95, $95, $87, $95, $9F, $9F, $9F, $9F, $9F, $9F, $C2, $9F, $7A, $7C
|
||||
CreditsLine229:
|
||||
;LOCATIONS PRE BOOTS $$$$
|
||||
db $01, $25, $68, $6B, $5F, $5D, $70, $65, $6B, $6A, $6F, $9F, $6C, $6E, $61, $9F, $5E, $6B, $6B, $70, $6F
|
||||
CreditsLine230:
|
||||
;LOCATIONS PRE BOOTS $$$$
|
||||
db $01, $25, $8E, $91, $85, $83, $96, $8B, $91, $90, $95, $9F, $92, $94, $87, $9F, $84, $91, $91, $96, $95
|
||||
CreditsLine231:
|
||||
;LOCATIONS PRE MIRROR $$$$
|
||||
db $01, $27, $68, $6B, $5F, $5D, $70, $65, $6B, $6A, $6F, $9F, $6C, $6E, $61, $9F, $69, $65, $6E, $6E, $6B, $6E
|
||||
CreditsLine232:
|
||||
;LOCATIONS PRE MIRROR $$$$
|
||||
db $01, $27, $8E, $91, $85, $83, $96, $8B, $91, $90, $95, $9F, $92, $94, $87, $9F, $8F, $8B, $94, $94, $91, $94
|
||||
CreditsLine233:
|
||||
;NUMBER OF BONKS $$$$
|
||||
db $01, $1D, $6A, $71, $69, $5E, $61, $6E, $9F, $6B, $62, $9F, $5E, $6B, $6A, $67, $6F
|
||||
CreditsLine234:
|
||||
;NUMBER OF BONKS $$$$
|
||||
db $01, $1D, $90, $97, $8F, $84, $87, $94, $9F, $91, $88, $9F, $84, $91, $90, $8D, $95
|
||||
CreditsLine235:
|
||||
;MIRROR USES OUTDOORS $$$$
|
||||
db $01, $27, $69, $65, $6E, $6E, $6B, $6E, $9F, $71, $6F, $61, $6F, $9F, $6B, $71, $70, $60, $6B, $6B, $6E, $6F
|
||||
CreditsLine236:
|
||||
;MIRROR USES OUTDOORS $$$$
|
||||
db $01, $27, $8F, $8B, $94, $94, $91, $94, $9F, $97, $95, $87, $95, $9F, $91, $97, $96, $86, $91, $91, $94, $95
|
||||
CreditsLine237:
|
||||
;MIRROR USES IN DUNGEONS $$$$
|
||||
db $01, $2D, $69, $65, $6E, $6E, $6B, $6E, $9F, $71, $6F, $61, $6F, $9F, $65, $6A, $9F, $60, $71, $6A, $63, $61, $6B, $6A, $6F
|
||||
CreditsLine238:
|
||||
;MIRROR USES IN DUNGEONS $$$$
|
||||
db $01, $2D, $8F, $8B, $94, $94, $91, $94, $9F, $97, $95, $87, $95, $9F, $8B, $90, $9F, $86, $97, $90, $89, $87, $91, $90, $95
|
||||
CreditsLine239:
|
||||
;TIMES FLUTED $$$$
|
||||
db $01, $17, $70, $65, $69, $61, $6F, $9F, $62, $68, $71, $70, $61, $60
|
||||
CreditsLine240:
|
||||
;TIMES FLUTED $$$$
|
||||
db $01, $17, $96, $8B, $8F, $87, $95, $9F, $88, $8E, $97, $96, $87, $86
|
||||
CreditsLine241:
|
||||
;SCREEN TRANSITIONS $$$$
|
||||
db $01, $23, $6F, $5F, $6E, $61, $61, $6A, $9F, $70, $6E, $5D, $6A, $6F, $65, $70, $65, $6B, $6A, $6F
|
||||
CreditsLine242:
|
||||
;SCREEN TRANSITIONS $$$$
|
||||
db $01, $23, $95, $85, $94, $87, $87, $90, $9F, $96, $94, $83, $90, $95, $8B, $96, $8B, $91, $90, $95
|
||||
CreditsLine243:
|
||||
;TOTAL RUPEES COLLECTED $$$$
|
||||
db $01, $2B, $70, $6B, $70, $5D, $68, $9F, $6E, $71, $6C, $61, $61, $6F, $9F, $5F, $6B, $68, $68, $61, $5F, $70, $61, $60
|
||||
CreditsLine244:
|
||||
;TOTAL RUPEES COLLECTED $$$$
|
||||
db $01, $2B, $96, $91, $96, $83, $8E, $9F, $94, $97, $92, $87, $87, $95, $9F, $85, $91, $8E, $8E, $87, $85, $96, $87, $86
|
||||
CreditsLine245:
|
||||
;TOTAL RUPEES SPENT $$$$
|
||||
db $01, $23, $70, $6B, $70, $5D, $68, $9F, $6E, $71, $6C, $61, $61, $6F, $9F, $6F, $6C, $61, $6A, $70
|
||||
CreditsLine246:
|
||||
;TOTAL RUPEES SPENT $$$$
|
||||
db $01, $23, $96, $91, $96, $83, $8E, $9F, $94, $97, $92, $87, $87, $95, $9F, $95, $92, $87, $90, $96
|
||||
CreditsLine247:
|
||||
;SAVE AND QUITS $$$$
|
||||
db $01, $1B, $6F, $5D, $72, $61, $9F, $5D, $6A, $60, $9F, $6D, $71, $65, $70, $6F
|
||||
CreditsLine248:
|
||||
;SAVE AND QUITS $$$$
|
||||
db $01, $1B, $95, $83, $98, $87, $9F, $83, $90, $86, $9F, $93, $97, $8B, $96, $95
|
||||
CreditsLine249:
|
||||
;DEATHS $$$$
|
||||
db $01, $0B, $60, $61, $5D, $70, $64, $6F
|
||||
CreditsLine250:
|
||||
;DEATHS $$$$
|
||||
db $01, $0B, $86, $87, $83, $96, $8A, $95
|
||||
CreditsLine251:
|
||||
;TIME IN ITEM MENU $$$$$$$$$$$
|
||||
db $01, $21, $70, $65, $69, $61, $9F, $65, $6A, $9F, $65, $70, $61, $69, $9F, $69, $61, $6A, $71
|
||||
CreditsLine252:
|
||||
;TIME IN ITEM MENU $$$$$$$$$$$
|
||||
db $01, $21, $96, $8B, $8F, $87, $9F, $8B, $90, $9F, $8B, $96, $87, $8F, $9F, $8F, $87, $90, $97
|
||||
CreditsLine253:
|
||||
;TOTAL LAG TIME $$$$$$$$$$$
|
||||
db $01, $1B, $70, $6B, $70, $5D, $68, $9F, $68, $5D, $63, $9F, $70, $65, $69, $61
|
||||
CreditsLine254:
|
||||
;TOTAL LAG TIME $$$$$$$$$$$
|
||||
db $01, $1B, $96, $91, $96, $83, $8E, $9F, $8E, $83, $89, $9F, $96, $8B, $8F, $87
|
||||
CreditsLine255:
|
||||
;TOTAL TIME $$$$$$$$$$$
|
||||
db $04, $13, $70, $6B, $70, $5D, $68, $9F, $70, $65, $69, $61
|
||||
CreditsLine256:
|
||||
;TOTAL TIME $$$$$$$$$$$
|
||||
db $04, $13, $96, $91, $96, $83, $8E, $9F, $96, $8B, $8F, $87
|
||||
CreditsLine257:
|
||||
;(Blank line)
|
||||
db $FF
|
||||
|
||||
CreditsLineTable:
|
||||
dw CreditsLine000, CreditsLine001, CreditsLine002, CreditsLine003, CreditsLine004, CreditsLine257, CreditsLine005, CreditsLine006
|
||||
dw CreditsLine007, CreditsLine257, CreditsLine008, CreditsLine009, CreditsLine010, CreditsLine257, CreditsLine011, CreditsLine012
|
||||
dw CreditsLine013, CreditsLine257, CreditsLine014, CreditsLine015, CreditsLine016, CreditsLine257, CreditsLine017, CreditsLine018
|
||||
dw CreditsLine257, CreditsLine019, CreditsLine001, CreditsLine020, CreditsLine021, CreditsLine022, CreditsLine257, CreditsLine023
|
||||
dw CreditsLine024, CreditsLine257, CreditsLine025, CreditsLine026, CreditsLine027, CreditsLine257, CreditsLine028, CreditsLine029
|
||||
dw CreditsLine257, CreditsLine030, CreditsLine031, CreditsLine032, CreditsLine257, CreditsLine033, CreditsLine034, CreditsLine035
|
||||
dw CreditsLine257, CreditsLine036, CreditsLine037, CreditsLine038, CreditsLine257, CreditsLine039, CreditsLine040, CreditsLine041
|
||||
dw CreditsLine257, CreditsLine042, CreditsLine043, CreditsLine257, CreditsLine044, CreditsLine045, CreditsLine257, CreditsLine046
|
||||
dw CreditsLine047, CreditsLine257, CreditsLine048, CreditsLine049, CreditsLine257, CreditsLine050, CreditsLine051, CreditsLine257
|
||||
dw CreditsLine052, CreditsLine053, CreditsLine257, CreditsLine054, CreditsLine055, CreditsLine257, CreditsLine056, CreditsLine057
|
||||
dw CreditsLine058, CreditsLine257, CreditsLine059, CreditsLine060, CreditsLine061, CreditsLine257, CreditsLine062, CreditsLine063
|
||||
dw CreditsLine257, CreditsLine064, CreditsLine065, CreditsLine066, CreditsLine257, CreditsLine067, CreditsLine068, CreditsLine257
|
||||
dw CreditsLine069, CreditsLine070, CreditsLine257, CreditsLine071, CreditsLine072, CreditsLine257, CreditsLine073, CreditsLine074
|
||||
dw CreditsLine257, CreditsLine075, CreditsLine076, CreditsLine077, CreditsLine257, CreditsLine078, CreditsLine079, CreditsLine257
|
||||
dw CreditsLine080, CreditsLine081, CreditsLine257, CreditsLine082, CreditsLine083, CreditsLine257, CreditsLine084, CreditsLine085
|
||||
dw CreditsLine257, CreditsLine086, CreditsLine087, CreditsLine257, CreditsLine088, CreditsLine001, CreditsLine089, CreditsLine090
|
||||
dw CreditsLine091, CreditsLine257, CreditsLine092, CreditsLine093, CreditsLine094, CreditsLine257, CreditsLine095, CreditsLine096
|
||||
dw CreditsLine257, CreditsLine097, CreditsLine098, CreditsLine099, CreditsLine257, CreditsLine100, CreditsLine101, CreditsLine257
|
||||
dw CreditsLine102, CreditsLine103, CreditsLine104, CreditsLine257, CreditsLine105, CreditsLine106, CreditsLine257, CreditsLine107
|
||||
dw CreditsLine108, CreditsLine257, CreditsLine109, CreditsLine110, CreditsLine257, CreditsLine111, CreditsLine112, CreditsLine257
|
||||
dw CreditsLine113, CreditsLine114, CreditsLine257, CreditsLine115, CreditsLine116, CreditsLine257, CreditsLine117, CreditsLine118
|
||||
dw CreditsLine257, CreditsLine119, CreditsLine120, CreditsLine257, CreditsLine121, CreditsLine122, CreditsLine257, CreditsLine123
|
||||
dw CreditsLine124, CreditsLine257, CreditsLine125, CreditsLine126, CreditsLine257, CreditsLine127, CreditsLine128, CreditsLine257
|
||||
dw CreditsLine129, CreditsLine130, CreditsLine257, CreditsLine131, CreditsLine132, CreditsLine257, CreditsLine133, CreditsLine134
|
||||
dw CreditsLine257, CreditsLine135, CreditsLine136, CreditsLine257, CreditsLine137, CreditsLine138, CreditsLine257, CreditsLine139
|
||||
dw CreditsLine140, CreditsLine257, CreditsLine141, CreditsLine142, CreditsLine257, CreditsLine143, CreditsLine144, CreditsLine257
|
||||
dw CreditsLine145, CreditsLine146, CreditsLine257, CreditsLine147, CreditsLine148, CreditsLine257, CreditsLine149, CreditsLine001
|
||||
dw CreditsLine150, CreditsLine151, CreditsLine152, CreditsLine257, CreditsLine153, CreditsLine154, CreditsLine257, CreditsLine155
|
||||
dw CreditsLine156, CreditsLine257, CreditsLine157, CreditsLine158, CreditsLine159, CreditsLine257, CreditsLine160, CreditsLine161
|
||||
dw CreditsLine257, CreditsLine162, CreditsLine163, CreditsLine257, CreditsLine164, CreditsLine165, CreditsLine257, CreditsLine166
|
||||
dw CreditsLine167, CreditsLine257, CreditsLine168, CreditsLine169, CreditsLine257, CreditsLine170, CreditsLine171, CreditsLine257
|
||||
dw CreditsLine172, CreditsLine173, CreditsLine257, CreditsLine174, CreditsLine175, CreditsLine176, CreditsLine257, CreditsLine177
|
||||
dw CreditsLine178, CreditsLine257, CreditsLine179, CreditsLine180, CreditsLine257, CreditsLine181, CreditsLine182, CreditsLine257
|
||||
dw CreditsLine183, CreditsLine184, CreditsLine257, CreditsLine185, CreditsLine186, CreditsLine257, CreditsLine187, CreditsLine188
|
||||
dw CreditsLine257, CreditsLine189, CreditsLine190, CreditsLine257, CreditsLine191, CreditsLine001, CreditsLine150, CreditsLine192
|
||||
dw CreditsLine193, CreditsLine257, CreditsLine194, CreditsLine195, CreditsLine257, CreditsLine196, CreditsLine197, CreditsLine257
|
||||
dw CreditsLine198, CreditsLine199, CreditsLine257, CreditsLine200, CreditsLine201, CreditsLine257, CreditsLine202, CreditsLine203
|
||||
dw CreditsLine257, CreditsLine204, CreditsLine205, CreditsLine257, CreditsLine206, CreditsLine207, CreditsLine257, CreditsLine208
|
||||
dw CreditsLine209, CreditsLine257, CreditsLine210, CreditsLine211, CreditsLine257, CreditsLine212, CreditsLine213, CreditsLine257
|
||||
dw CreditsLine214, CreditsLine215, CreditsLine257, CreditsLine216, CreditsLine217, CreditsLine257, CreditsLine218, CreditsLine219
|
||||
dw CreditsLine220, CreditsLine257, CreditsLine221, CreditsLine222, CreditsLine257, CreditsLine223, CreditsLine224, CreditsLine257
|
||||
dw CreditsLine225, CreditsLine226, CreditsLine257, CreditsLine227, CreditsLine228, CreditsLine257, CreditsLine229, CreditsLine230
|
||||
dw CreditsLine257, CreditsLine231, CreditsLine232, CreditsLine257, CreditsLine233, CreditsLine234, CreditsLine257, CreditsLine235
|
||||
dw CreditsLine236, CreditsLine257, CreditsLine237, CreditsLine238, CreditsLine257, CreditsLine239, CreditsLine240, CreditsLine257
|
||||
dw CreditsLine241, CreditsLine242, CreditsLine257, CreditsLine243, CreditsLine244, CreditsLine257, CreditsLine245, CreditsLine246
|
||||
dw CreditsLine257, CreditsLine247, CreditsLine248, CreditsLine257, CreditsLine249, CreditsLine250, CreditsLine257, CreditsLine251
|
||||
dw CreditsLine252, CreditsLine257, CreditsLine253, CreditsLine254, CreditsLine257, CreditsLine257, CreditsLine257, CreditsLine257
|
||||
dw CreditsLine257, CreditsLine257, CreditsLine257, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001
|
||||
dw CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine255, CreditsLine256
|
||||
|
||||
!CHESTS_X = 23
|
||||
!CHESTS_Y = 217
|
||||
!OTHER_X = 23
|
||||
!OTHER_Y = 220
|
||||
!TOTAL_X = 23
|
||||
!TOTAL_Y = 223
|
||||
!Y_ITEMS_X = 23
|
||||
!Y_ITEMS_Y = 227
|
||||
!A_ITEMS_X = 23
|
||||
!A_ITEMS_Y = 230
|
||||
!SWORDS_X = 23
|
||||
!SWORDS_Y = 233
|
||||
!SHIELDS_X = 23
|
||||
!SHIELDS_Y = 236
|
||||
!MAILS_X = 23
|
||||
!MAILS_Y = 239
|
||||
!CAPACITY_UPGRADES_X = 23
|
||||
!CAPACITY_UPGRADES_Y = 242
|
||||
!HEART_PIECES_X = 23
|
||||
!HEART_PIECES_Y = 245
|
||||
!HEART_CONTAINERS_X = 23
|
||||
!HEART_CONTAINERS_Y = 248
|
||||
!MAPS_X = 23
|
||||
!MAPS_Y = 252
|
||||
!COMPASSES_X = 23
|
||||
!COMPASSES_Y = 255
|
||||
!SMALL_KEYS_X = 23
|
||||
!SMALL_KEYS_Y = 258
|
||||
!BIG_KEYS_X = 23
|
||||
!BIG_KEYS_Y = 261
|
||||
!BIG_CHESTS_X = 23
|
||||
!BIG_CHESTS_Y = 264
|
||||
!PENDANTS_X = 23
|
||||
!PENDANTS_Y = 267
|
||||
!CRYSTALS_X = 23
|
||||
!CRYSTALS_Y = 270
|
||||
!BOSSES_X = 23
|
||||
!BOSSES_Y = 273
|
||||
!HYRULE_CASTLE_X = 23
|
||||
!HYRULE_CASTLE_Y = 279
|
||||
!EASTERN_PALACE_X = 23
|
||||
!EASTERN_PALACE_Y = 282
|
||||
!DESERT_PALACE_X = 23
|
||||
!DESERT_PALACE_Y = 285
|
||||
!TOWER_OF_HERA_X = 23
|
||||
!TOWER_OF_HERA_Y = 288
|
||||
!AGAHNIMS_TOWER_X = 23
|
||||
!AGAHNIMS_TOWER_Y = 291
|
||||
!PALACE_OF_DARKNESS_X = 23
|
||||
!PALACE_OF_DARKNESS_Y = 294
|
||||
!SWAMP_PALACE_X = 23
|
||||
!SWAMP_PALACE_Y = 297
|
||||
!SKULL_WOODS_X = 23
|
||||
!SKULL_WOODS_Y = 300
|
||||
!THIEVES_TOWN_X = 23
|
||||
!THIEVES_TOWN_Y = 303
|
||||
!ICE_PALACE_X = 23
|
||||
!ICE_PALACE_Y = 306
|
||||
!MISERY_MIRE_X = 23
|
||||
!MISERY_MIRE_Y = 309
|
||||
!TURTLE_ROCK_X = 23
|
||||
!TURTLE_ROCK_Y = 312
|
||||
!GANONS_TOWER_X = 23
|
||||
!GANONS_TOWER_Y = 315
|
||||
!ITEMS_PRE_GANON_KEY_X = 23
|
||||
!ITEMS_PRE_GANON_KEY_Y = 319
|
||||
!LEVEL_1_SWORD_BOSSES_X = 23
|
||||
!LEVEL_1_SWORD_BOSSES_Y = 322
|
||||
!LEVEL_2_SWORD_BOSSES_X = 23
|
||||
!LEVEL_2_SWORD_BOSSES_Y = 325
|
||||
!LEVEL_3_SWORD_BOSSES_X = 23
|
||||
!LEVEL_3_SWORD_BOSSES_Y = 328
|
||||
!LEVEL_4_SWORD_BOSSES_X = 23
|
||||
!LEVEL_4_SWORD_BOSSES_Y = 331
|
||||
!LOCATIONS_PRE_BOOTS_X = 27
|
||||
!LOCATIONS_PRE_BOOTS_Y = 334
|
||||
!LOCATIONS_PRE_MIRROR_X = 27
|
||||
!LOCATIONS_PRE_MIRROR_Y = 337
|
||||
!NUMBER_OF_BONKS_X = 27
|
||||
!NUMBER_OF_BONKS_Y = 340
|
||||
!MIRROR_USES_OUTDOORS_X = 27
|
||||
!MIRROR_USES_OUTDOORS_Y = 343
|
||||
!MIRROR_USES_IN_DUNGEONS_X = 27
|
||||
!MIRROR_USES_IN_DUNGEONS_Y = 346
|
||||
!TIMES_FLUTED_X = 27
|
||||
!TIMES_FLUTED_Y = 349
|
||||
!SCREEN_TRANSITIONS_X = 27
|
||||
!SCREEN_TRANSITIONS_Y = 352
|
||||
!TOTAL_RUPEES_COLLECTED_X = 27
|
||||
!TOTAL_RUPEES_COLLECTED_Y = 355
|
||||
!TOTAL_RUPEES_SPENT_X = 27
|
||||
!TOTAL_RUPEES_SPENT_Y = 358
|
||||
!SAVE_AND_QUITS_X = 27
|
||||
!SAVE_AND_QUITS_Y = 361
|
||||
!DEATHS_X = 27
|
||||
!DEATHS_Y = 364
|
||||
!TIME_IN_ITEM_MENU_X = 20
|
||||
!TIME_IN_ITEM_MENU_Y = 367
|
||||
!TOTAL_LAG_TIME_X = 20
|
||||
!TOTAL_LAG_TIME_Y = 370
|
||||
!TOTAL_TIME_X = 17
|
||||
!TOTAL_TIME_Y = 390
|
||||
BIN
stats/font.gb
Executable file
BIN
stats/font.gb
Executable file
Binary file not shown.
1
stats/fonttable.bin
Executable file
1
stats/fonttable.bin
Executable file
@@ -0,0 +1 @@
|
||||
ź9°9±9´9µ9¶9·9Ü9Ý9Ţ9ß9đ9ń9ň9ó9ô9ő9ö9÷9ř9ů9ú9ű9ü9ý9ţ9ź-°-±-´-µ-¶-·-Ü-Ý-Ţ-ß-đ-ń-ň-ó-ô-ő-ö-÷-ř-ů-ú-ű-ü-ý-ţ-©-ą-ş-»-ź)°)±)´)µ)¶)·)Ü)Ý)Ţ)ß)đ)ń)ň)ó)ô)ő)ö)÷)ř)ů)ú)ű)ü)ý)ţ)Ľ)@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=€=<3D>=‚=<3D>=¨=‡=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==<3D>=‘=’=“=¸=—=<3D>=Ŕ=Á=Â=Ă=˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Đ=Ń=Ň=Ó=˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
|
||||
599
stats/main.asm
Executable file
599
stats/main.asm
Executable file
@@ -0,0 +1,599 @@
|
||||
lorom
|
||||
|
||||
!ADD = "CLC : ADC"
|
||||
!SUB = "SEC : SBC"
|
||||
!BLT = "BCC"
|
||||
!BGE = "BCS"
|
||||
|
||||
org $238000
|
||||
incsrc stats/credits.asm
|
||||
|
||||
FontGfx:
|
||||
incbin stats/font.gb
|
||||
FontGfxEnd:
|
||||
|
||||
; Custom addresses. Most are arbitrary. Feel free to make sure they're okay or moving them elsewhere within ZP
|
||||
!CreditsPtr = $7C ; 3 bytes
|
||||
!Temp = $B3 ; 2 bytes
|
||||
!StatsBottom = $B5 ; 2 bytes
|
||||
!StatsPtr = $B7 ; 3 bytes
|
||||
!ValueLow = $BA ; 2 bytes
|
||||
!ValueHigh = $BC ; 2 bytes
|
||||
!Hours = $72 ; 2 bytes
|
||||
!Minutes = $74 ; 2 bytes
|
||||
!Seconds = $76 ; 2 bytes
|
||||
!RemoveZero = $78 ; 2 bytes
|
||||
|
||||
|
||||
; Original addresses
|
||||
!LineNumber = $CA ; 2 bytes
|
||||
|
||||
PreparePointer:
|
||||
LDA.w #$2300
|
||||
STA.b !CreditsPtr+1
|
||||
LDA.w #CreditsLineTable
|
||||
STA.b !CreditsPtr
|
||||
LDA [!CreditsPtr],Y
|
||||
STA.b !CreditsPtr
|
||||
LDY.w #$0000
|
||||
RTL
|
||||
|
||||
; Regular stat: XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
|
||||
; Time stat: XXXX X01L LLLL LLLL ---- ---- ---- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
|
||||
; End of data: 1111 1111 1111 1111
|
||||
|
||||
; X X offset (measured in 8x8 tiles)
|
||||
; L Line number
|
||||
; B Amount of bits to keep after shifting (0000 = 16 bits, 0001 = 1 bit, 1111 = 15 bits)
|
||||
; S Amount of bits to right shift the value by (0000 = 0 bits, 1111 = 15 bits)
|
||||
; C Value cap
|
||||
; 000 No cap
|
||||
; 001 9
|
||||
; 010 99
|
||||
; 011 999
|
||||
; 100 9999
|
||||
; A Memory Address
|
||||
|
||||
ValueCaps:
|
||||
dw 0
|
||||
dw 9
|
||||
dw 99
|
||||
dw 999
|
||||
dw 9999
|
||||
|
||||
BitMasks:
|
||||
dw $FFFF
|
||||
dw $0001
|
||||
dw $0003
|
||||
dw $0007
|
||||
dw $000F
|
||||
dw $001F
|
||||
dw $003F
|
||||
dw $007F
|
||||
dw $00FF
|
||||
dw $01FF
|
||||
dw $03FF
|
||||
dw $07FF
|
||||
dw $0FFF
|
||||
dw $1FFF
|
||||
dw $3FFF
|
||||
dw $7FFF
|
||||
|
||||
macro AddStat(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
||||
db <xPos><<2|<type><<9|<lineNumber>>>8
|
||||
db <lineNumber>
|
||||
db <bits><<4|<shiftRight>
|
||||
db <digits><<5
|
||||
db $00
|
||||
dl <address>
|
||||
endmacro
|
||||
|
||||
macro StripeStart(xPos, length)
|
||||
LDA $C8
|
||||
CLC
|
||||
ADC.w #<xPos>
|
||||
XBA
|
||||
STA $1002,x
|
||||
|
||||
LDA.w #<length>*2-1
|
||||
XBA
|
||||
LDA #$0500
|
||||
STA $1004,x
|
||||
endmacro
|
||||
|
||||
macro StripeTile()
|
||||
STA $1006,x
|
||||
INX
|
||||
INX
|
||||
endmacro
|
||||
|
||||
macro StripeEnd()
|
||||
INX
|
||||
INX
|
||||
INX
|
||||
INX
|
||||
endmacro
|
||||
|
||||
HexToDecStats:
|
||||
PHA
|
||||
PHA
|
||||
LDA.w #$0000
|
||||
STA $7F5003 : STA $7F5005 : STA $7F5006 ; clear digit storage
|
||||
PLA
|
||||
-
|
||||
CMP.w #10000 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5003 : INC : STA $7F5003 : REP #$20 : PLA
|
||||
!SUB.w #10000 : BRA -
|
||||
+ -
|
||||
CMP.w #1000 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5004 : INC : STA $7F5004 : REP #$20 : PLA
|
||||
!SUB.w #1000 : BRA -
|
||||
+ -
|
||||
CMP.w #100 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5005 : INC : STA $7F5005 : REP #$20 : PLA
|
||||
!SUB.w #100 : BRA -
|
||||
+ -
|
||||
CMP.w #10 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5006 : INC : STA $7F5006 : REP #$20 : PLA
|
||||
!SUB.w #10 : BRA -
|
||||
+ -
|
||||
CMP.w #1 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5007 : INC : STA $7F5007 : REP #$20 : PLA
|
||||
!SUB.w #1 : BRA -
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
|
||||
LastHexDigit:
|
||||
TYA
|
||||
AND #$000F
|
||||
PHA
|
||||
TYA
|
||||
LSR #4
|
||||
TAY
|
||||
CLC
|
||||
LDA !StatsBottom
|
||||
BNE +
|
||||
; Upper half
|
||||
PLA
|
||||
ADC #$3D40
|
||||
RTS
|
||||
+ ; Lower half
|
||||
PLA
|
||||
ADC #$3D50
|
||||
RTS
|
||||
|
||||
FindLine:
|
||||
LDY.w #$0000
|
||||
|
||||
- LDA.w CreditsStats,y
|
||||
STZ !StatsBottom
|
||||
CMP #$FFFF
|
||||
BEQ .noLine
|
||||
|
||||
XBA
|
||||
AND #$01FF
|
||||
CMP !LineNumber
|
||||
BEQ .lineFound
|
||||
|
||||
INC
|
||||
INC !StatsBottom
|
||||
CMP !LineNumber
|
||||
BEQ .lineFound
|
||||
|
||||
INY #8
|
||||
BRA -
|
||||
|
||||
.lineFound
|
||||
SEC
|
||||
RTS
|
||||
|
||||
.noLine
|
||||
CLC
|
||||
RTS
|
||||
|
||||
!FRAMES_PER_SECOND = 60
|
||||
!FRAMES_PER_MINUTE = 60*60
|
||||
!FRAMES_PER_HOUR = 60*60*60
|
||||
!MAX_FRAME_COUNT = 59*60+59*60+59*60+99
|
||||
|
||||
macro CountUnits(framesPerUnit, unitCounter)
|
||||
STZ <unitCounter>
|
||||
?loop:
|
||||
LDA !ValueLow
|
||||
SEC
|
||||
SBC.w #<framesPerUnit>
|
||||
STA !Temp
|
||||
LDA !ValueHigh
|
||||
SBC.w #<framesPerUnit>>>16
|
||||
BCC ?end
|
||||
STA !ValueHigh
|
||||
LDA !Temp
|
||||
STA !ValueLow
|
||||
INC <unitCounter>
|
||||
BRA ?loop
|
||||
?end:
|
||||
endmacro
|
||||
|
||||
!ColonOffset = $83
|
||||
!PeriodOffset = $80
|
||||
!BlankTile = $883D
|
||||
|
||||
RenderCreditsStatCounter:
|
||||
PHB
|
||||
PHK
|
||||
PLB
|
||||
|
||||
JSR FindLine
|
||||
BCS +
|
||||
BRL .endStats
|
||||
+
|
||||
|
||||
; XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
|
||||
|
||||
; == Determine stat type ==
|
||||
LDA CreditsStats,y ; LLLL LLLL XXXX XTTL
|
||||
LSR
|
||||
AND #$0003 ; TT
|
||||
CMP.w #$0000
|
||||
BEQ .normalStat
|
||||
BRL .timeStat
|
||||
|
||||
.normalStat
|
||||
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
||||
LDA CreditsStats,y ; LLLL LLLL XXXX XTTL
|
||||
LSR #3
|
||||
AND #$001F ; X XXXX
|
||||
CLC
|
||||
ADC $C8
|
||||
XBA
|
||||
STA $1002,x
|
||||
|
||||
; == Write Stripe header (Length of data) ==
|
||||
LDA.w #4*2-1 ; 4 tiles = 8 bytes
|
||||
XBA
|
||||
STA $1004,x
|
||||
PHX
|
||||
|
||||
; == Load tile base (upper or lower half of white two-line zero) ==
|
||||
LDA !StatsBottom
|
||||
BNE +
|
||||
LDA #$3D40
|
||||
BRA ++
|
||||
+ LDA #$3D50
|
||||
++ STA !Temp
|
||||
|
||||
; == Load the actual stat word ==
|
||||
LDA.w CreditsStats+5,y
|
||||
STA.b !StatsPtr
|
||||
LDA.w CreditsStats+6,y
|
||||
STA.b !StatsPtr+1
|
||||
LDA.b [!StatsPtr]
|
||||
STA !ValueLow
|
||||
|
||||
; == Shift value ==
|
||||
LDA CreditsStats+2,y; CCC- ---- BBBB SSSS
|
||||
AND.w #$000F ; SSSS
|
||||
BEQ +
|
||||
TAX
|
||||
LDA !ValueLow
|
||||
- LSR
|
||||
DEX
|
||||
BNE -
|
||||
STA !ValueLow
|
||||
+
|
||||
; == Mask value ==
|
||||
LDA CreditsStats+2,y; CCC- ---- BBBB SSSS
|
||||
;LSR #4
|
||||
;AND.w #$000F ; BBBB
|
||||
LSR #3
|
||||
AND.w #$001E
|
||||
TAX
|
||||
LDA BitMasks,x
|
||||
AND !ValueLow
|
||||
STA !ValueLow
|
||||
|
||||
; == Cap value ==
|
||||
LDA CreditsStats+3,y; ---- ---- CCC- ----
|
||||
LSR #5
|
||||
AND.w #$0007 ; CCC
|
||||
BEQ +
|
||||
ASL : TAX
|
||||
LDA ValueCaps,x
|
||||
CMP !ValueLow
|
||||
!BGE +
|
||||
STA !ValueLow
|
||||
+
|
||||
; == Display value ==
|
||||
LDA !ValueLow
|
||||
JSL HexToDecStats
|
||||
PLX
|
||||
STZ !RemoveZero
|
||||
|
||||
LDA $7F5004
|
||||
AND #$00FF
|
||||
CMP !RemoveZero
|
||||
BNE +
|
||||
LDA !BlankTile
|
||||
BRA ++
|
||||
+ DEC !RemoveZero
|
||||
CLC
|
||||
ADC !Temp
|
||||
++ %StripeTile()
|
||||
|
||||
LDA $7F5005
|
||||
AND #$00FF
|
||||
CMP !RemoveZero
|
||||
BNE +
|
||||
LDA !BlankTile
|
||||
BRA ++
|
||||
+ DEC !RemoveZero
|
||||
CLC
|
||||
ADC !Temp
|
||||
++ %StripeTile()
|
||||
|
||||
LDA $7F5006
|
||||
AND #$00FF
|
||||
CMP !RemoveZero
|
||||
BNE +
|
||||
LDA !BlankTile
|
||||
BRA ++
|
||||
+ DEC !RemoveZero
|
||||
CLC
|
||||
ADC !Temp
|
||||
++ %StripeTile()
|
||||
|
||||
LDA $7F5007
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
%StripeEnd()
|
||||
.endStats
|
||||
|
||||
;JSR RenderLineNumber
|
||||
|
||||
PLB
|
||||
RTL
|
||||
|
||||
.timeStat
|
||||
; Output format: HH:MM:SS.FF
|
||||
|
||||
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
||||
LDA CreditsStats,y ; LLLL LLLL XXXX XTTL
|
||||
LSR #3
|
||||
AND #$001F ; X XXXX
|
||||
CLC
|
||||
ADC $C8
|
||||
XBA
|
||||
STA $1002,x
|
||||
|
||||
; == Write Stripe header (Length of data) ==
|
||||
LDA.w #11*2-1 ; 11 tiles = 22 bytes
|
||||
XBA
|
||||
STA $1004,x
|
||||
PHX
|
||||
|
||||
; == Load the actual stat words ==
|
||||
LDA.w CreditsStats+5,y
|
||||
STA.b !StatsPtr
|
||||
LDA.w CreditsStats+6,y
|
||||
STA.b !StatsPtr+1
|
||||
LDA.b [!StatsPtr]
|
||||
STA !ValueLow
|
||||
INC !StatsPtr
|
||||
INC !StatsPtr
|
||||
LDA.b [!StatsPtr]
|
||||
STA !ValueHigh
|
||||
|
||||
CMP.w #!MAX_FRAME_COUNT>>16+1
|
||||
!BGE ++
|
||||
|
||||
; == Convert total frames into hours, minutes, seconds and frames ==
|
||||
%CountUnits(!FRAMES_PER_HOUR, !Hours)
|
||||
%CountUnits(!FRAMES_PER_MINUTE, !Minutes)
|
||||
%CountUnits(!FRAMES_PER_SECOND, !Seconds)
|
||||
|
||||
; == Cap at 99:59:59.59 ==
|
||||
LDA !Hours
|
||||
CMP.w #100
|
||||
!BLT +
|
||||
++ LDA.w #99
|
||||
STA !Hours
|
||||
LDA.w #59
|
||||
STA !Minutes
|
||||
STA !Seconds
|
||||
STA !ValueLow
|
||||
+
|
||||
|
||||
; == Load tile base (upper or lower half of white two-line zero) ==
|
||||
LDA !StatsBottom
|
||||
BNE +
|
||||
LDA #$3D40
|
||||
BRA ++
|
||||
+ LDA #$3D50
|
||||
++ STA !Temp
|
||||
|
||||
PLX
|
||||
|
||||
; == Display value ==
|
||||
LDA !Hours
|
||||
JSL HexToDecStats
|
||||
|
||||
LDA $7F5006
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA $7F5007
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA.w #!ColonOffset
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA !Minutes
|
||||
JSL HexToDecStats
|
||||
LDA $7F5006
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA $7F5007
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA.w #!ColonOffset
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA !Seconds
|
||||
JSL HexToDecStats
|
||||
LDA $7F5006
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA $7F5007
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA.w #!PeriodOffset
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA !ValueLow
|
||||
JSL HexToDecStats
|
||||
LDA $7F5006
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
LDA $7F5007
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC !Temp
|
||||
%StripeTile()
|
||||
|
||||
%StripeEnd()
|
||||
BRL .endStats
|
||||
|
||||
|
||||
RenderLineNumber:
|
||||
%StripeStart(0, 3)
|
||||
|
||||
STZ !StatsBottom
|
||||
LDA $CA
|
||||
TAY
|
||||
AND #$0001
|
||||
BEQ +
|
||||
DEY
|
||||
INC !StatsBottom
|
||||
+
|
||||
JSR LastHexDigit
|
||||
PHA
|
||||
JSR LastHexDigit
|
||||
PHA
|
||||
JSR LastHexDigit
|
||||
%StripeTile()
|
||||
PLA
|
||||
%StripeTile()
|
||||
PLA
|
||||
%StripeTile()
|
||||
|
||||
%StripeEnd()
|
||||
|
||||
RTS
|
||||
|
||||
LoadModifiedFont:
|
||||
; Based on CopyFontToVram(Bank00)
|
||||
; copies font graphics to VRAM (for BG3)
|
||||
|
||||
; set name base table to vram $4000 (word)
|
||||
LDA.b #$02 : STA $2101
|
||||
|
||||
; increment on writes to $2119
|
||||
LDA.b #$80 : STA $2115
|
||||
|
||||
; set bank of the source address (see below)
|
||||
LDA.b #FontGfx>>16 : STA $02
|
||||
|
||||
REP #$30
|
||||
|
||||
; vram target address is $7000 (word)
|
||||
LDA.w #$7000 : STA $2116
|
||||
|
||||
; $00[3] = $0E8000 (offset for the font data)
|
||||
LDA.w #FontGfx : STA $00
|
||||
|
||||
; going to write 0x1000 bytes (0x800 words)
|
||||
LDX.w #FontGfxEnd-FontGfx/2-1
|
||||
|
||||
.nextWord
|
||||
|
||||
; read a word from the font data
|
||||
LDA [$00] : STA $2118
|
||||
|
||||
; increment source address by 2
|
||||
INC $00 : INC $00
|
||||
|
||||
DEX : BPL .nextWord
|
||||
|
||||
SEP #$30
|
||||
|
||||
RTL
|
||||
|
||||
CheckFontTable:
|
||||
TAY
|
||||
PHB
|
||||
PHK
|
||||
PLB
|
||||
LDA.w FontTable,Y
|
||||
PLB
|
||||
RTL
|
||||
|
||||
FontTable:
|
||||
incbin stats/fonttable.bin
|
||||
|
||||
CreditsStats:
|
||||
incsrc stats/statConfig.asm
|
||||
dw $FFFF
|
||||
|
||||
org $0EE651
|
||||
JSL LoadModifiedFont
|
||||
|
||||
org $0EE828
|
||||
JSL PreparePointer
|
||||
LDA [!CreditsPtr],Y
|
||||
NOP
|
||||
org $0EE83F
|
||||
LDA [!CreditsPtr],Y
|
||||
NOP
|
||||
org $0EE853
|
||||
LDA [!CreditsPtr],Y
|
||||
NOP
|
||||
AND.w #$00ff
|
||||
ASL A
|
||||
JSL CheckFontTable
|
||||
|
||||
org $0ee86d
|
||||
JSL RenderCreditsStatCounter
|
||||
JMP.w AfterDeathCounterOutput
|
||||
|
||||
org $0ee8fd
|
||||
AfterDeathCounterOutput:
|
||||
57
stats/statConfig.asm
Executable file
57
stats/statConfig.asm
Executable file
@@ -0,0 +1,57 @@
|
||||
;(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
||||
|
||||
%AddStat($7EF442, 0, 0, 08, 3, !CHESTS_X, !CHESTS_Y)
|
||||
%AddStat($7F503E, 0, 0, 06, 2, !OTHER_X, !OTHER_Y)
|
||||
%AddStat($7EF423, 0, 0, 08, 3, !TOTAL_X, !TOTAL_Y)
|
||||
%AddStat($7EF421, 0, 3, 05, 2, !Y_ITEMS_X, !Y_ITEMS_Y)
|
||||
%AddStat($7EF421, 0, 0, 03, 1, !A_ITEMS_X, !A_ITEMS_Y)
|
||||
%AddStat($7EF422, 0, 5, 03, 1, !SWORDS_X, !SWORDS_Y)
|
||||
%AddStat($7EF422, 0, 3, 02, 1, !SHIELDS_X, !SHIELDS_Y)
|
||||
%AddStat($7EF424, 0, 6, 02, 1, !MAILS_X, !MAILS_Y)
|
||||
%AddStat($7EF452, 0, 0, 04, 2, !CAPACITY_UPGRADES_X, !CAPACITY_UPGRADES_Y)
|
||||
%AddStat($7EF448, 0, 0, 05, 2, !HEART_PIECES_X, !HEART_PIECES_Y)
|
||||
%AddStat($7EF429, 0, 4, 04, 2, !HEART_CONTAINERS_X, !HEART_CONTAINERS_Y)
|
||||
%AddStat($7EF428, 0, 4, 04, 2, !MAPS_X, !MAPS_Y)
|
||||
%AddStat($7EF428, 0, 0, 04, 2, !COMPASSES_X, !COMPASSES_Y)
|
||||
%AddStat($7EF424, 0, 0, 06, 2, !SMALL_KEYS_X, !SMALL_KEYS_Y)
|
||||
%AddStat($7EF427, 0, 4, 04, 2, !BIG_KEYS_X, !BIG_KEYS_Y)
|
||||
%AddStat($7EF427, 0, 0, 04, 2, !BIG_CHESTS_X, !BIG_CHESTS_Y)
|
||||
;%AddStat($7E0000, 0, 8, 16, 4, !DOORS_UNLOCKED_X, !DOORS_UNLOCKED_Y)
|
||||
%AddStat($7EF429, 0, 0, 02, 1, !PENDANTS_X, !PENDANTS_Y)
|
||||
%AddStat($7EF422, 0, 0, 03, 1, !CRYSTALS_X, !CRYSTALS_Y)
|
||||
%AddStat($7F5037, 0, 0, 08, 2, !BOSSES_X, !BOSSES_Y)
|
||||
%AddStat($7EF434, 0, 4, 04, 1, !HYRULE_CASTLE_X, !HYRULE_CASTLE_Y)
|
||||
%AddStat($7EF436, 0, 0, 03, 1, !EASTERN_PALACE_X, !EASTERN_PALACE_Y)
|
||||
%AddStat($7EF435, 0, 5, 03, 1, !DESERT_PALACE_X, !DESERT_PALACE_Y)
|
||||
%AddStat($7EF435, 0, 2, 03, 1, !TOWER_OF_HERA_X, !TOWER_OF_HERA_Y)
|
||||
%AddStat($7EF435, 0, 0, 02, 1, !AGAHNIMS_TOWER_X, !AGAHNIMS_TOWER_Y)
|
||||
%AddStat($7EF434, 0, 0, 04, 2, !PALACE_OF_DARKNESS_X, !PALACE_OF_DARKNESS_Y)
|
||||
%AddStat($7EF439, 0, 0, 04, 2, !SWAMP_PALACE_X, !SWAMP_PALACE_Y)
|
||||
|
||||
;(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
||||
|
||||
%AddStat($7EF437, 0, 4, 04, 1, !SKULL_WOODS_X, !SKULL_WOODS_Y)
|
||||
%AddStat($7EF437, 0, 0, 04, 1, !THIEVES_TOWN_X, !THIEVES_TOWN_Y)
|
||||
%AddStat($7EF438, 0, 4, 04, 1, !ICE_PALACE_X, !ICE_PALACE_Y)
|
||||
%AddStat($7EF438, 0, 0, 04, 1, !MISERY_MIRE_X, !MISERY_MIRE_Y)
|
||||
%AddStat($7EF439, 0, 4, 04, 2, !TURTLE_ROCK_X, !TURTLE_ROCK_Y)
|
||||
%AddStat($7EF436, 0, 3, 05, 2, !GANONS_TOWER_X, !GANONS_TOWER_Y)
|
||||
%AddStat($7EF42A, 0, 0, 05, 2, !ITEMS_PRE_GANON_KEY_X, !ITEMS_PRE_GANON_KEY_Y)
|
||||
%AddStat($7EF425, 0, 4, 04, 2, !LEVEL_1_SWORD_BOSSES_X, !LEVEL_1_SWORD_BOSSES_Y)
|
||||
%AddStat($7EF425, 0, 0, 04, 2, !LEVEL_2_SWORD_BOSSES_X, !LEVEL_2_SWORD_BOSSES_Y)
|
||||
%AddStat($7EF426, 0, 4, 04, 2, !LEVEL_3_SWORD_BOSSES_X, !LEVEL_3_SWORD_BOSSES_Y)
|
||||
%AddStat($7EF426, 0, 0, 04, 2, !LEVEL_4_SWORD_BOSSES_X, !LEVEL_4_SWORD_BOSSES_Y)
|
||||
%AddStat($7EF432, 0, 0, 08, 3, !LOCATIONS_PRE_BOOTS_X, !LOCATIONS_PRE_BOOTS_Y)
|
||||
%AddStat($7EF433, 0, 0, 08, 3, !LOCATIONS_PRE_MIRROR_X, !LOCATIONS_PRE_MIRROR_Y)
|
||||
%AddStat($7EF420, 0, 0, 08, 3, !NUMBER_OF_BONKS_X, !NUMBER_OF_BONKS_Y)
|
||||
%AddStat($7EF43A, 0, 0, 08, 2, !MIRROR_USES_OUTDOORS_X, !MIRROR_USES_OUTDOORS_Y)
|
||||
%AddStat($7EF43B, 0, 0, 08, 2, !MIRROR_USES_IN_DUNGEONS_X, !MIRROR_USES_IN_DUNGEONS_Y)
|
||||
%AddStat($7EF44B, 0, 0, 08, 2, !TIMES_FLUTED_X, !TIMES_FLUTED_Y)
|
||||
%AddStat($7EF43C, 0, 0, 16, 3, !SCREEN_TRANSITIONS_X, !SCREEN_TRANSITIONS_Y)
|
||||
%AddStat($7F503C, 0, 0, 16, 5, !TOTAL_RUPEES_COLLECTED_X, !TOTAL_RUPEES_COLLECTED_Y)
|
||||
%AddStat($7EF42B, 0, 0, 16, 5, !TOTAL_RUPEES_SPENT_X, !TOTAL_RUPEES_SPENT_Y)
|
||||
%AddStat($7EF42D, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
|
||||
%AddStat($7EF449, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
|
||||
%AddStat($7EF444, 1, 8, 32, 4, !TIME_IN_ITEM_MENU_X, !TIME_IN_ITEM_MENU_Y)
|
||||
%AddStat($7F5038, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y)
|
||||
%AddStat($7EF43E, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)
|
||||
44
swordswap.asm
Normal file
44
swordswap.asm
Normal file
@@ -0,0 +1,44 @@
|
||||
;================================================================================
|
||||
; Master / Tempered / Golden Sword Swap
|
||||
;================================================================================
|
||||
;$03348E: smith sword check (to see if uprade-able)
|
||||
;================================================================================
|
||||
GetFairySword:
|
||||
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one
|
||||
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert safe master sword to normal one
|
||||
CMP #$04 : !BLT + : JMP.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer
|
||||
JSL ItemCheck_FairySword : BEQ + : JMP.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this
|
||||
JSL ItemSet_FairySword ; mark as got
|
||||
LDA FairySword : STA $0DC0, X ; whichever sword
|
||||
LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose
|
||||
|
||||
JMP.l PyramidFairy_BRANCH_GAMMA
|
||||
;================================================================================
|
||||
;GetSmithSword:
|
||||
; JSL ItemCheck_SmithSword : BEQ + : JMP.l Smithy_AlreadyGotSword : + ; check if we're not already done
|
||||
; ;JSL ItemSet_SmithSword - too early
|
||||
;JMP.l Smithy_DoesntHaveSword
|
||||
;================================================================================
|
||||
LoadSwordForDamage:
|
||||
LDA $7EF359 : CMP #$04 : BNE .done ; skip if not gold sword
|
||||
LDA $1B : BEQ + ; skip if outdoors
|
||||
LDA $A0 : CMP #41 : BNE + ; decimal 41 ; skip if not in the mothula room
|
||||
LDA #$03 ; pretend we're using tempered
|
||||
BRA .done
|
||||
+
|
||||
LDA #$04 ; nvm gold sword is fine
|
||||
.done
|
||||
RTL
|
||||
;================================================================================
|
||||
GetSmithSword:
|
||||
JSL ItemCheck_SmithSword : BEQ + : JMP.l Smithy_AlreadyGotSword : +
|
||||
LDA.l SmithItemMode : BNE +
|
||||
JMP.l Smithy_DoesntHaveSword ; Classic Smithy
|
||||
+
|
||||
LDA.l SmithItem : TAY
|
||||
STZ $02E9 ; Item from NPC
|
||||
PHX : JSL Link_ReceiveItem : PLX
|
||||
REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees
|
||||
JSL ItemSet_SmithSword
|
||||
JMP.l Smithy_AlreadyGotSword
|
||||
;================================================================================
|
||||
1097
tables.asm
Normal file
1097
tables.asm
Normal file
File diff suppressed because it is too large
Load Diff
135
tablets.asm
Normal file
135
tablets.asm
Normal file
@@ -0,0 +1,135 @@
|
||||
;================================================================================
|
||||
; Randomize Tablets
|
||||
;--------------------------------------------------------------------------------
|
||||
ItemSet_EtherTablet:
|
||||
PHA : LDA !NPC_FLAGS_2 : ORA.b #$01 : STA !NPC_FLAGS_2 : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
ItemSet_BombosTablet:
|
||||
PHA : LDA !NPC_FLAGS_2 : ORA.b #$02 : STA !NPC_FLAGS_2 : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
ItemCheck_EtherTablet:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$01
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
ItemCheck_BombosTablet:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$02
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
SetTabletItem:
|
||||
JSL.l GetSpriteID
|
||||
PHA
|
||||
LDA $8A : CMP.b #$03 : BEQ .ether ; if we're on the map where ether is, we're the ether tablet
|
||||
.bombos
|
||||
JSL.l ItemSet_BombosTablet : BRA .done
|
||||
.ether
|
||||
JSL.l ItemSet_EtherTablet
|
||||
.done
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
SpawnTabletItem:
|
||||
; JSL.l HeartPieceGet
|
||||
;RTL
|
||||
JSL.l LoadOutdoorValue
|
||||
JSL.l PrepDynamicTile
|
||||
|
||||
LDA.b #$01 : STA !FORCE_HEART_SPAWN : STA !SKIP_HEART_SAVE
|
||||
JSL.l SetTabletItem
|
||||
|
||||
LDA.b #$EB
|
||||
STA $7FFE00
|
||||
JSL Sprite_SpawnDynamically
|
||||
|
||||
LDA $22 : STA $0D10, Y
|
||||
LDA $23 : STA $0D30, Y
|
||||
|
||||
LDA $20 : STA $0D00, Y
|
||||
LDA $21 : STA $0D20, Y
|
||||
|
||||
LDA.b #$00 : STA $0F20, Y
|
||||
|
||||
LDA.b #$7F : STA $0F70, Y ; spawn WAY up high
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
MaybeUnlockTabletAnimation:
|
||||
PHA : PHP
|
||||
JSL.l IsMedallion : BCC +
|
||||
STZ $0112 ; disable falling-medallion mode
|
||||
STZ $03EF ; release link from item-up pose
|
||||
LDA.b #$00 : STA $5D ; set link to ground state
|
||||
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $8A : CMP.w #$0030 : BNE ++ ; Desert
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA.b #$02 : STA $2F ; face link forward
|
||||
LDA.b #$3C : STA $46 ; lock link for 60f
|
||||
++
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
+
|
||||
PLP : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IsMedallion:
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $8A
|
||||
CMP.w #$03 : BNE + ; Death Mountain
|
||||
LDA $22 : CMP.w #1890 : !BGE ++
|
||||
SEC
|
||||
BRL .done
|
||||
++
|
||||
BRA .false
|
||||
+ CMP.w #$30 : BNE + ; Desert
|
||||
LDA $22 : CMP.w #512 : !BLT ++
|
||||
SEC
|
||||
BRL .done
|
||||
++
|
||||
+
|
||||
.false
|
||||
CLC
|
||||
.done
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadNarrowObject:
|
||||
LDA AddReceivedItemExpanded_wide_item_flag, X : STA ($92), Y ; AddReceiveItem.wide_item_flag? ; LDA.b #$00 : STA ($92), Y in the japanese version
|
||||
PLY
|
||||
;JSL.l DrawNarrowDroppedObject
|
||||
JMP.l LoadNarrowObjectReturn
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawNarrowDroppedObject:
|
||||
; If it's a 16x16 sprite, we'll only draw one, otherwise we'll end up drawing
|
||||
; two 8x8 sprites stack on top of each other
|
||||
CMP.b #$02 : BEQ .large_sprite
|
||||
|
||||
REP #$20
|
||||
|
||||
; Shift Y coordinate 8 pixels down
|
||||
LDA $08 : STA $00
|
||||
|
||||
SEP #$20
|
||||
|
||||
JSL.l Ancilla_SetOam_XY_Long
|
||||
|
||||
; always use the same character graphic (0x34)
|
||||
LDA.b #$34 : STA ($90), Y : INY
|
||||
|
||||
LDA AddReceivedItemExpanded_properties, X : BPL .valid_lower_properties
|
||||
|
||||
LDA $74
|
||||
|
||||
.valid_lower_properties
|
||||
|
||||
ASL A : ORA.b #$30 : STA ($90), Y
|
||||
|
||||
INY : PHY
|
||||
|
||||
TYA : !SUB.b #$04 : LSR #2 : TAY
|
||||
|
||||
LDA.b #$00 : STA ($92), Y
|
||||
|
||||
PLY
|
||||
.large_sprite
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
168
timer.asm
Normal file
168
timer.asm
Normal file
@@ -0,0 +1,168 @@
|
||||
;================================================================================
|
||||
; Challenge Timer
|
||||
;================================================================================
|
||||
!Temp = "$7F5020"
|
||||
!BaseTimer = "$7EF43E"
|
||||
!ChallengeTimer = "$7EF454"
|
||||
;--------------------------------------------------------------------------------
|
||||
!CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours
|
||||
!CLOCK_MINUTES = "$7F5084" ; $7F5084 - $7F5087 - Clock Minutes
|
||||
!CLOCK_SECONDS = "$7F5088" ; $7F5088 - $7F508B - Clock Seconds
|
||||
!CLOCK_TEMPORARY = "$7F508C" ; $7F508C - $7F508F - Clock Temporary
|
||||
;--------------------------------------------------------------------------------
|
||||
!FRAMES_PER_SECOND = #60
|
||||
!FRAMES_PER_MINUTE = #60*60
|
||||
!FRAMES_PER_HOUR = #60*60*60
|
||||
;--------------------------------------------------------------------------------
|
||||
!Status = "$7F507E"
|
||||
; ---- --dn
|
||||
; d - dnf
|
||||
; n - negative
|
||||
;--------------------------------------------------------------------------------
|
||||
macro DecIncr(value)
|
||||
LDA.l <value> : INC
|
||||
CMP.w #$000A : !BLT ?noIncr
|
||||
LDA.l <value>+2 : INC : STA.l <value>+2
|
||||
LDA.w #$0000
|
||||
?noIncr:
|
||||
STA.l <value>
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
macro Sub32(minuend,subtrahend,result)
|
||||
LDA.l <minuend>
|
||||
!SUB.l <subtrahend> ; perform subtraction on the LSBs
|
||||
STA.l <result>
|
||||
LDA.l <minuend>+2 ; do the same for the MSBs, with carry
|
||||
SBC.l <subtrahend>+2 ; set according to the previous result
|
||||
STA.l <result>+2
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
macro Blt32(value1,value2)
|
||||
LDA.l <value1>+2
|
||||
CMP.l <value2>+2
|
||||
!BLT ?done
|
||||
BNE ?done
|
||||
LDA.l <value1>
|
||||
CMP.l <value2>
|
||||
?done:
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
CalculateTimer:
|
||||
LDA $FFFFFF
|
||||
LDA.w #$0000
|
||||
STA.l !CLOCK_HOURS ; clear digit storage
|
||||
STA.l !CLOCK_HOURS+2
|
||||
STA.l !CLOCK_MINUTES
|
||||
STA.l !CLOCK_MINUTES+2
|
||||
STA.l !CLOCK_SECONDS
|
||||
STA.l !CLOCK_SECONDS+2
|
||||
|
||||
LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode
|
||||
%Sub32(!BaseTimer,!ChallengeTimer,!CLOCK_TEMPORARY)
|
||||
BRA ++
|
||||
+ CMP.w #$0001 : BNE ++ ; Countdown Mode
|
||||
%Sub32(!ChallengeTimer,!BaseTimer,!CLOCK_TEMPORARY)
|
||||
++
|
||||
|
||||
%Blt32(!CLOCK_TEMPORARY,.halfCycle) : !BLT +
|
||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||
LDA.w #$0002 : STA.l !Status ; Set DNF Mode
|
||||
LDA.l !BaseTimer : STA.l !ChallengeTimer
|
||||
LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2
|
||||
RTS
|
||||
++ CMP.w #$0001 : BNE ++ ; Negative Time
|
||||
LDA.l !CLOCK_TEMPORARY : EOR.w #$FFFF : !ADD.w #$0001 : STA.l !CLOCK_TEMPORARY
|
||||
LDA.l !CLOCK_TEMPORARY+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.l !CLOCK_TEMPORARY+2
|
||||
LDA.w #$0001 : STA.l !Status ; Set Negative Mode
|
||||
BRA .prepDigits
|
||||
++ ; OHKO
|
||||
LDA.w #$0002 : STA.l !Status ; Set DNF Mode
|
||||
LDA.l !BaseTimer : STA.l !ChallengeTimer
|
||||
LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2
|
||||
RTS
|
||||
+
|
||||
|
||||
LDA.l TimerRestart : AND.w #$00FF : BEQ +
|
||||
LDA.w #$0000 : STA.l !Status ; Set Positive Mode
|
||||
+
|
||||
.prepDigits
|
||||
|
||||
-
|
||||
%Blt32(!CLOCK_TEMPORARY,.hour) : !BLT +
|
||||
%DecIncr(!CLOCK_HOURS)
|
||||
%Sub32(!CLOCK_TEMPORARY,.hour,!CLOCK_TEMPORARY) : BRA -
|
||||
+ -
|
||||
%Blt32(!CLOCK_TEMPORARY,.minute) : !BLT +
|
||||
%DecIncr(!CLOCK_MINUTES)
|
||||
%Sub32(!CLOCK_TEMPORARY,.minute,!CLOCK_TEMPORARY) : BRA -
|
||||
+ -
|
||||
%Blt32(!CLOCK_TEMPORARY,.second) : !BLT +
|
||||
%DecIncr(!CLOCK_SECONDS)
|
||||
%Sub32(!CLOCK_TEMPORARY,.second,!CLOCK_TEMPORARY) : BRA -
|
||||
+
|
||||
|
||||
LDA !CLOCK_HOURS : !ADD.w #$2490 : STA !CLOCK_HOURS ; convert decimal values to tiles
|
||||
LDA !CLOCK_HOURS+2 : !ADD.w #$2490 : STA !CLOCK_HOURS+2
|
||||
LDA !CLOCK_MINUTES : !ADD.w #$2490 : STA !CLOCK_MINUTES
|
||||
LDA !CLOCK_MINUTES+2 : !ADD.w #$2490 : STA !CLOCK_MINUTES+2
|
||||
LDA !CLOCK_SECONDS : !ADD.w #$2490 : STA !CLOCK_SECONDS
|
||||
LDA !CLOCK_SECONDS+2 : !ADD.w #$2490 : STA !CLOCK_SECONDS+2
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
.hour
|
||||
dw #$4BC0, #$0003
|
||||
.minute
|
||||
dw #$0E10, #$0000
|
||||
.second
|
||||
dw #$003C, #$0000
|
||||
.halfCycle
|
||||
dw #$FFFF, #$7FFF
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawChallengeTimer:
|
||||
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
|
||||
LDA.w #$2807 : STA $7EC792
|
||||
|
||||
LDA.l !Status : AND.w #$0002 : BEQ + ; DNF / OKHO
|
||||
|
||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||
LDA.w #$2808 : STA $7EC794
|
||||
LDA.w #$2809 : STA $7EC796
|
||||
LDA.w #$247F : STA $7EC798
|
||||
STA $7EC79A
|
||||
BRA +++
|
||||
++ ; OHKO
|
||||
LDA.w #$280A : STA $7EC794
|
||||
LDA.w #$280B : STA $7EC796
|
||||
LDA.w #$280C : STA $7EC798
|
||||
LDA.w #$247F : STA $7EC79A
|
||||
+++
|
||||
STA $7EC79C
|
||||
STA $7EC79E
|
||||
STA $7EC7A0
|
||||
STA $7EC7A2
|
||||
STA $7EC7A4
|
||||
LDA.l TimerRestart : BNE +++ : RTL : +++
|
||||
BRA ++
|
||||
+ ; Show Timer
|
||||
LDA.l !Status : AND.w #$0001 : !ADD.w #$2804 : STA $7EC794
|
||||
LDA !CLOCK_HOURS+2 : STA $7EC796
|
||||
LDA !CLOCK_HOURS : STA $7EC798
|
||||
LDA.w #$2806 : STA $7EC79A
|
||||
LDA !CLOCK_MINUTES+2 : STA $7EC79C
|
||||
LDA !CLOCK_MINUTES : STA $7EC79E
|
||||
LDA.w #$2806 : STA $7EC7A0
|
||||
LDA !CLOCK_SECONDS+2 : STA $7EC7A2
|
||||
LDA !CLOCK_SECONDS : STA $7EC7A4
|
||||
++
|
||||
LDA $1A : AND.w #$001F : BNE + : JSR CalculateTimer : +
|
||||
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OHKOTimer:
|
||||
LDA.l TimeoutBehavior : CMP #$02 : BNE +
|
||||
LDA.l !Status : AND.b #$02 : BEQ +
|
||||
LDA.b #$00 : STA $7EF36D ; kill link
|
||||
+
|
||||
LDA $7EF36D
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
202
translations.asm
Normal file
202
translations.asm
Normal file
@@ -0,0 +1,202 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C801B ; <- E001B - E003E ; game over menu - 0x24
|
||||
db $FC, $00, $BC, $AA, $BF, $AE, $C9, $AC, $B8, $B7, $BD, $B2, $B7, $BE, $AE, $F8, $BC, $AA, $BF, $AE, $C9, $BA, $BE, $B2, $BD, $F9, $AC, $B8, $B7, $BD, $B2, $B7, $BE, $AE, $FB, $FC
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C818F ; <- E018F - E01B6 ; tutorial guard's text 1 - 0x28
|
||||
db $B8, $B7, $B5, $C2, $FF, $AA, $AD, $BE, $B5, $BD, $BC, $FF, $FF, $FF, $F8, $BC, $B1, $B8, $BE, $B5, $AD, $FF, $BD, $BB, $AA, $BF, $AE, $B5, $FF, $F9, $AA, $BD, $FF, $B7, $B2, $B0, $B1, $BD, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1C81B7 ; <- E01B7 - E01E3 ; tutorial guard's text 2 - 0x2D
|
||||
db $C2, $B8, $BE, $FF, $AC, $AA, $B7, $FF, $B9, $BE, $BC, $B1, $FF, $C1, $F8, $BD, $B8, $FF, $BF, $B2, $AE, $C0, $FF, $BD, $B1, $AE, $FF, $FF, $FF, $F9, $B6, $AA, $B9, $CD, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1C81E4 ; <- E01E4 - E0210 ; tutorial guard's text 3 - 0x2D
|
||||
db $B9, $BB, $AE, $BC, $BC, $FF, $BD, $B1, $AE, $FF, $AA, $FF, $FF, $FF, $F8, $AB, $BE, $BD, $BD, $B8, $B7, $FF, $BD, $B8, $FF, $B5, $B2, $AF, $BD, $F9, $BD, $B1, $B2, $B7, $B0, $BC, $FF, $AB, $C2, $FF, $C2, $B8, $BE, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1C8211 ; <- E0211 - E023D ; tutorial guard's text 4 - 0x2D
|
||||
db $C0, $B1, $AE, $B7, $FF, $C2, $B8, $BE, $FF, $B1, $AA, $BC, $FF, $AA, $FF, $FF, $F8, $BC, $C0, $B8, $BB, $AD, $FF, $B9, $BB, $AE, $BC, $BC, $FF, $AB, $F9, $BD, $B8, $FF, $BC, $B5, $AA, $BC, $B1, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1C823E ; <- E023E - E0269 ; tutorial guard's text 5 - 0x2C
|
||||
db $BE, $BC, $AE, $FF, $C2, $B8, $BE, $BB, $FF, $B6, $AA, $B9, $FF, $FF, $F8, $BD, $B8, $FF, $AF, $B2, $B7, $AD, $FF, $BD, $B1, $AE, $FF, $FF, $FF, $F9, $AC, $BB, $C2, $BC, $BD, $AA, $B5, $BC, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1C826A ; <- E026A - E0296 ; tutorial guard's text 6 - 0x2D
|
||||
db $AA, $BB, $AE, $FF, $C0, $AE, $FF, $BB, $AE, $AA, $B5, $B5, $C2, $F8, $BC, $BD, $B2, $B5, $B5, $FF, $BB, $AE, $AA, $AD, $B2, $B7, $B0, $F9, $BD, $B1, $AE, $BC, $AE, $C6, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $F9, $F9, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1C8297 ; <- E0297 - E02BF ; tutorial guard's text 7 - 0x29
|
||||
db $B3, $AE, $AE, $C3, $AE, $FF, $BD, $B1, $AE, $BB, $AE, $F8, $BB, $AE, $AA, $B5, $B5, $C2, $FF, $AA, $BB, $AE, $FF, $AA, $FF, $F9, $B5, $B8, $BD, $FF, $B8, $AF, $FF, $BD, $B1, $B2, $B7, $B0, $BC, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1C8CB0 ; <- E0CB0 - ; Saharala text (skipping selection) Eventual text
|
||||
; free space
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C935A ; <- E135A - E1388 ; first sign (rain state) - 0x2F
|
||||
db $E0, $FF, $AD, $C2, $B2, $B7, $B0, $FF, $BE, $B7, $AC, $B5, $AE, $FF, $F8, $FF, $FF, $BD, $B1, $B2, $BC, $FF, $C0, $AA, $C2, $FF, $FF, $FF, $FF, $F9, $F9, $F9, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C9389 ; <- E1389 - E13B4 ; first sign - 0x2C
|
||||
db $D2, $D3, $FF, $BB, $AA, $B7, $AD, $B8, $B6, $B2, $C3, $AE, $BB, $FF, $F8, $AD, $B8, $B7, $D8, $BD, $FF, $BB, $AE, $AA, $AD, $FF, $B6, $AE, $C8, $F9, $B0, $B8, $FF, $AB, $AE, $AA, $BD, $FF, $B0, $AA, $B7, $B8, $B7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C93B5 ; <- E13B5 - E13D7 ; DM cave sign - 0x23
|
||||
db $AC, $AA, $BF, $AE, $FF, $BD, $B8, $FF, $BD, $B1, $AE, $F8, $B5, $B8, $BC, $BD, $FF, $B8, $B5, $AD, $FF, $B6, $AA, $B7, $F9, $B0, $B8, $B8, $AD, $FF, $B5, $BE, $AC, $B4, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C93D8 ; <- E13D8 - E13E6 ; Skull Woods sign - 0xF
|
||||
db $E0, $FF, $B5, $B8, $BC, $BD, $FF, $C0, $B8, $B8, $AD, $BC, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C944B ; <- E144B - E145B ; {left} kakariko sign - 0x11 (0x12)
|
||||
db $E3, $FF, $B4, $AA, $B4, $AA, $BB, $B2, $B4, $B8, $F8, $FF, $FF, $BD, $B8, $C0, $B7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C94FE ; <- E14FE - E150E ; {down} kakariko sign - 0x11
|
||||
db $E1, $FF, $B4, $AA, $B4, $AA, $BB, $B2, $B4, $B8, $F8, $FF, $FF, $BD, $B8, $C0, $B7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C9631 ; <- E1631 - E164F ; Potion Shop no empty bottles - 0x1F (0x20)
|
||||
db $C0, $B1, $B8, $AA, $FF, $AB, $BE, $AC, $B4, $B8, $C8, $F8, $B7, $B8, $FF, $AE, $B6, $B9, $BD, $C2, $FF, $FF, $F9, $AB, $B8, $BD, $BD, $B5, $AE, $BC, $CD, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1C9E13 ; <- E1E13 ; no big key
|
||||
db $BC, $B8, $B6, $AE, $BD, $B1, $B2, $B7, $B0, $FF, $B2, $BC, $F8, $B6, $B2, $BC, $BC, $B2, $B7, $B0, $CC, $FF, $FF, $F9, $BD, $B1, $AE, $FF, $AB, $B2, $B0, $FF, $B4, $AE, $C2, $C6, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CA96D ; <- E296D - E29F1 ; unkown - 0x85 (0x2D)
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $F8, $FF, $FF, $FF, $FF, $FF, $C2, $B8, $C7, $FF, $FF, $FF, $FF, $FF, $FF, $F9, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CA9F2 ; <- E29F2 - E2A0E ; Old Man in Tavern - 0x1D (0x70)
|
||||
db $B5, $B2, $AF, $AE, $C6, $FF, $B5, $B8, $BF, $AE, $C6, $FF, $FF, $FF, $F8, $B1, $AA, $B9, $B9, $B2, $B7, $AE, $BC, $BC, $C6, $FF, $BD, $B1, $AE, $F9, $BA, $BE, $AE, $BC, $BD, $B2, $B8, $B7, $FF, $C2, $B8, $BE, $FF, $FF, $FA, $F6, $BC, $B1, $B8, $BE, $B5, $AD, $FF, $BB, $AE, $AA, $B5, $B5, $C2, $F6, $AA, $BC, $B4, $FF, $B2, $BC, $C8, $FF, $C0, $AA, $BC, $F6, $BD, $B1, $B2, $BC, $FF, $B0, $AE, $B7, $AE, $BB, $AA, $BD, $AE, $AD, $FA, $F6, $AB, $C2, $FF, $BC, $BD, $B8, $B8, $B9, $BC, $FF, $AA, $B5, $BE, $F6, $B8, $BB, $FF, $BC, $BD, $B8, $B8, $B9, $BC, $FF, $B3, $AE, $BD, $C6, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CAA0F ; <- E2A0F - E2A3D ; Chicken hut lady - 0x2F (0x36)
|
||||
db $BD, $B1, $B2, $BC, $FF, $B2, $BC, $F8, $AC, $B1, $BB, $B2, $BC, $BD, $B8, $BC, $D8, $FF, $B1, $BE, $BD, $C8, $FA, $F9, $B1, $AE, $D8, $BC, $FF, $B8, $BE, $BD, $F6, $BC, $AE, $AA, $BB, $AC, $B1, $B2, $B7, $B0, $F6, $AF, $B8, $BB, $FF, $AA, $FF, $AB, $B8, $C0, $CD, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CAA3E ; <- E2A3E - E2AD2 ; Running Man - 0x95 (0x8E)
|
||||
db $B1, $B2, $C8, $FF, $AD, $B8, $FF, $C2, $B8, $BE, $F8, $B4, $B7, $B8, $C0, $FF, $BF, $AE, $AE, $BD, $B8, $BB, $B9, $C6, $F9, $FA, $F6, $C2, $B8, $BE, $FF, $BB, $AE, $AA, $B5, $B5, $C2, $F6, $BC, $B1, $B8, $BE, $B5, $AD, $CD, $FF, $AA, $B7, $AD, $F6, $AA, $B5, $B5, $FF, $BD, $B1, $AE, $FF, $B8, $BD, $B1, $AE, $BB, $FA, $F6, $B0, $BB, $AE, $AA, $BD, $FF, $B0, $BE, $C2, $BC, $FF, $C0, $B1, $B8, $F6, $B6, $AA, $AD, $AE, $FF, $BD, $B1, $B2, $BC, $F6, $B9, $B8, $BC, $BC, $B2, $AB, $B5, $AE, $CD, $FA, $F6, $B0, $B8, $FF, $BD, $B1, $AA, $B7, $B4, $FF, $BD, $B1, $AE, $B6, $F6, $F6, $FA, $F6, $B2, $AF, $FF, $C2, $B8, $BE, $FF, $AC, $AA, $B7, $FF, $F6, $AC, $AA, $BD, $AC, $B1, $FF, $BD, $B1, $AE, $B6, $CC, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAAD3 ; <- E2AD3 ; race game sign
|
||||
db $C0, $B1, $C2, $FF, $AA, $BB, $AE, $FF, $C2, $B8, $BE, $FF, $F8, $BB, $AE, $AA, $AD, $B2, $B7, $B0, $FF, $BD, $B1, $B2, $BC, $F9, $BC, $B2, $B0, $B7, $C6, $FF, $BB, $BE, $B7, $C7, $C7, $C7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAAFA ; <- E2AFA ; cape cave sign
|
||||
db $C2, $B8, $BE, $FF, $B7, $AE, $AE, $AD, $FF, $AC, $AA, $B9, $AE, $F8, $AB, $BE, $BD, $FF, $B7, $B8, $BD, $F9, $B1, $B8, $B8, $B4, $BC, $B1, $B8, $BD, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAB34 ; <- E2B34 ; north of outcasts
|
||||
db $E0, $FF, $BC, $B4, $BE, $B5, $B5, $FF, $C0, $B8, $B8, $AD, $BC, $F9, $E1, $FF, $BC, $BD, $AE, $BF, $AE, $D8, $BC, $FF, $BD, $B8, $C0, $B7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAB51 ; <- E2B51 ; there is a cave sign
|
||||
db $F8, $E2, $FF, $B4, $AA, $BB, $B4, $AA, $BD, $BC, $FF, $AC, $AA, $BF, $AE, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAB61 ; <- E2B61 ; temple of Yami sign
|
||||
db $F8, $E2, $FF, $AD, $AA, $BB, $B4, $FF, $B9, $AA, $B5, $AA, $AC, $AE, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAB70 ; <- E2B70 ; bomb shop sign
|
||||
db $F8, $E3, $FF, $AB, $B8, $B6, $AB, $FF, $BC, $B1, $B8, $B9, $B9, $AE, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAB7F ; <- E2B7F ; Misery Mire sign
|
||||
db $E3, $FF, $B6, $B2, $BC, $AE, $BB, $C2, $FF, $B6, $B2, $BB, $AE, $FF, $F8, $B7, $B8, $FF, $C0, $AA, $C2, $FF, $B2, $B7, $FF, $AA, $B7, $AD, $FF, $F9, $B7, $B8, $FF, $C0, $AA, $C2, $FF, $B8, $BE, $BD, $CD, $FF, $FF, $FF, $F9, $F9, $F9, $F9, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CABB0 ; <- E2BB0 ; outcasts sign
|
||||
db $B1, $AA, $BF, $AE, $FF, $AA, $FF, $BD, $BB, $BE, $B5, $B2, $AE, $F8, $AA, $C0, $AE, $BC, $B8, $B6, $AE, $FF, $AD, $AA, $C2, $C7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CABED ; <- E2BED - E2C1C ; guard on top of castle - 0x30
|
||||
db $B5, $B8, $B8, $B4, $B2, $B7, $B0, $FF, $AF, $B8, $BB, $FF, $AA, $FF, $F8, $B9, $BB, $B2, $B7, $AC, $AE, $BC, $BC, $C6, $FF, $B5, $B8, $B8, $B4, $F9, $AD, $B8, $C0, $B7, $BC, $BD, $AA, $B2, $BB, $BC, $CD, $FF, $FF, $FF, $F9, $F9, $F9, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CAC1D ; <- E2C1D - E2C40 ; Gate guard - 0x24
|
||||
db $B7, $B8, $FF, $B5, $B8, $B7, $B4, $BC, $FF, $FF, $FF, $FF, $FF, $FF, $F8, $AA, $B5, $B5, $B8, $C0, $AE, $AD, $C7, $FF, $FF, $FF, $FF, $FF, $F9, $FF, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB019 ; <- E3019 - E3067 ; telepathic tile: Ice Palace large ice room - 0x4F
|
||||
db $FE, $6B, $02, $AA, $B5, $B5, $FF, $BB, $B2, $B0, $B1, $BD, $FF, $BC, $BD, $B8, $B9, $F8, $AC, $B8, $B5, $B5, $AA, $AB, $B8, $BB, $AA, $BD, $AE, $F9, $AA, $B7, $AD, $FF, $B5, $B2, $BC, $BD, $AE, $B7, $FF, $B2, $AC, $AE, $FA, $F6, $B2, $BC, $FF, $AB, $AA, $AC, $B4, $FF, $C0, $B2, $BD, $B1, $F6, $B6, $C2, $FF, $AB, $BB, $AA, $B7, $AD, $FF, $B7, $AE, $C0, $F6, $B2, $B7, $BF, $AE, $B7, $BD, $B2, $B8, $B7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CB068 ; <- E3068 - E3098 ; telepathic tile: Turtle Rock entrance - 0x31
|
||||
db $FE, $6B, $02, $C2, $B8, $BE, $FF, $BC, $B1, $AA, $B5, $B5, $FF, $B7, $B8, $BD, $FF, $F8, $B9, $AA, $BC, $BC, $CC, $FF, $C0, $B2, $BD, $B1, $B8, $BE, $BD, $FF, $F9, $BD, $B1, $AE, $FF, $BB, $AE, $AD, $FF, $AC, $AA, $B7, $AE, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB099 ; <- E3099 - E30C1 ; telepathic tile: Ice Palace entrance - 0x24
|
||||
db $FE, $6B, $02, $C2, $B8, $BE, $FF, $AC, $AA, $B7, $FF, $BE, $BC, $AE, $FF, $FF, $F8, $AF, $B2, $BB, $AE, $FF, $BB, $B8, $AD, $FF, $B8, $BB, $F9, $AB, $B8, $B6, $AB, $B8, $BC, $FF, $BD, $B8, $FF, $B9, $AA, $BC, $BC, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CB0C2 ; <- E30C2 - E30F3 ; telepathic tile: Ice Palace Stalfos Knights room - 0x32
|
||||
db $FE, $6B, $02, $B4, $B7, $B8, $AC, $B4, $FF, $AE, $B6, $FF, $AD, $B8, $C0, $B7, $FF, $F8, $AA, $B7, $AD, $FF, $BD, $B1, $AE, $B7, $FF, $AB, $B8, $B6, $AB, $F9, $BD, $B1, $AE, $B6, $FF, $AD, $AE, $AA, $AD, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB176 ; <- E3176 ; catch a bee
|
||||
db $AC, $AA, $BE, $B0, $B1, $BD, $FF, $AA, $FF, $AB, $AE, $AE, $FF, $FF, $F8, $FF, $FF, $E4, $FF, $FF, $B4, $AE, $AE, $B9, $FF, $FF, $FF, $FF, $FF, $F9, $FF, $FF, $FF, $FF, $FF, $BB, $AE, $B5, $AE, $AA, $BC, $AE, $FE, $68
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB1A3 ; <- E31A3 ; catch a fairy
|
||||
db $AC, $AA, $BE, $B0, $B1, $BD, $FF, $AF, $AA, $B2, $BB, $C2, $C7, $FF, $FF, $FF, $E4, $FF, $B4, $AE, $AE, $B9, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $BB, $AE, $B5, $AE, $AA, $BC, $AE, $FE, $68
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB1CD ; <- E31CD ; no empty bottles
|
||||
db $C0, $B1, $B8, $AA, $FF, $AB, $BE, $AC, $B4, $B8, $C8, $F8, $B7, $B8, $FF, $AE, $B6, $B9, $BD, $C2, $FF, $FF, $F9, $AB, $B8, $BD, $BD, $B5, $AE, $BC, $CD
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB1ED ; <- E31ED ; race game boy
|
||||
db $C2, $B8, $BE, $BB, $FF, $BD, $B2, $B6, $AE, $F8, $C0, $AA, $BC, $F9, $FE, $6C, $03, $FE, $6C, $02, $FF, $B6, $B2, $B7, $FF, $FE, $6C, $01, $FE, $6C, $00, $FF, $BC, $AE, $AC, $CD
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB212 ; <- E3212 ; race game girl
|
||||
db $C2, $B8, $BE, $FF, $B1, $AA, $BF, $AE, $FF, $A1, $A5, $FF, $FF, $FF, $F8, $BC, $AE, $AC, $B8, $B7, $AD, $BC, $C8, $FF, $FF, $FF, $FF, $FF, $FF, $F9, $B0, $B8, $CC, $FF, $B0, $B8, $CC, $FF, $B0, $B8, $CC, $FF, $FF
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB23E ; <- E323E ; race game boy success
|
||||
db $B7, $B2, $AC, $AE, $C7, $FF, $FF, $FF, $FF, $F8, $C2, $B8, $BE, $FF, $AC, $AA, $B7, $FF, $B1, $AA, $BF, $AE, $F9, $BD, $B1, $B2, $BC, $FF, $BD, $BB, $AA, $BC, $B1, $C7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB261 ; <- E3261 ; race game boy fail
|
||||
db $BD, $B8, $B8, $FF, $BC, $B5, $B8, $C0, $C7, $FF, $F8, $B2, $FF, $B4, $AE, $AE, $B9, $FF, $B6, $C2, $F9, $B9, $BB, $AE, $AC, $B2, $B8, $BE, $BC, $C7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CB280 ; <- E3280 - E3299 ; race game already collected - 0x1A (E32A2 - 0x23)
|
||||
db $C2, $B8, $BE, $FF, $AA, $B5, $BB, $AE, $AA, $AD, $C2, $F8, $B1, $AA, $BF, $AE, $FF, $C2, $B8, $BE, $BB, $F9, $B9, $BB, $B2, $C3, $AE, $FF, $AD, $B2, $B7, $B0, $BE, $BC, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CBE1D ; <- E3E1D - E3E4B ; sick kid no bottle - 0x2F
|
||||
db $FE, $6D, $01, $B2, $D8, $B6, $FF, $BC, $B2, $AC, $B4, $C7, $FF, $BC, $B1, $B8, $C0, $F8, $B6, $AE, $FF, $AA, $FF, $AB, $B8, $BD, $BD, $B5, $AE, $C8, $FF, $F9, $B0, $AE, $BD, $FF, $BC, $B8, $B6, $AE, $BD, $B1, $B2, $B7, $B0, $C7, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CBE4C ; <- E3E4C - E3ED3 ; sick kid get item - 0x88
|
||||
; free space
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CBEC8 ; <- E3ED4 - E3EF3 ; sick kid after bottle - 0x20 (0x2B)
|
||||
db $FB ; close free space
|
||||
db $B5, $AE, $AA, $BF, $AE, $FF, $B6, $AE, $FF, $AA, $B5, $B8, $B7, $AE, $F8, $B2, $D8, $B6, $FF, $BC, $B2, $AC, $B4, $CD, $FF, $C2, $B8, $BE, $F9, $B1, $AA, $BF, $AE, $FF, $B6, $C2, $FF, $B2, $BD, $AE, $B6, $CD, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CC2AA : db $FF ; <- E42AA ; overwrite end boxes for intro
|
||||
org $1CC2EA : db $FF ; <- E42EA ; overwrite end boxes for intro
|
||||
org $1CC32B : db $FF ; <- E432B ; overwrite end boxes for intro
|
||||
org $1CC369 : db $FF ; <- E4369 ; overwrite end boxes for intro
|
||||
org $1CC0DD ; <- E40DD - E438C ; Intro sequence - 0x2B0
|
||||
; Main intro
|
||||
db $FE, $6E, $00, $FE, $77, $07, $FC, $03, $FE, $6B, $02, $FE, $67, $FF, $AE, $B9, $B2, $BC, $B8, $AD, $AE, $FF, $FF, $B2, $B2, $B2, $FF, $FE, $78, $03, $F8, $FF, $AA, $FF, $B5, $B2, $B7, $B4, $FF, $BD, $B8, $FF, $FF, $FF, $FF, $F9, $FF, $FF, $FF, $BD, $B1, $AE, $FF, $B9, $AA, $BC, $BD, $FF, $FF, $FF, $FE, $78, $03, $F6, $F9, $FF, $FF, $BB, $AA, $B7, $AD, $B8, $B6, $B2, $C3, $AE, $BB, $FE, $78, $03, $F6, $F9, $AA, $AF, $BD, $AE, $BB, $FF, $B6, $B8, $BC, $BD, $B5, $C2, $F6, $F9, $AD, $B2, $BC, $BB, $AE, $B0, $AA, $BB, $AD, $B2, $B7, $B0, $F6, $F9, $C0, $B1, $AA, $BD, $FF, $B1, $AA, $B9, $B9, $AE, $B7, $AE, $AD, $F6, $F9, $B2, $B7, $FF, $BD, $B1, $AE, $FF, $AF, $B2, $BB, $BC, $BD, $F6, $F9, $BD, $C0, $B8, $FF, $B0, $AA, $B6, $AE, $BC, $CD, $FE, $78, $03, $F6, $F9, $B5, $B2, $B7, $B4, $FF, $AA, $C0, $AA, $B4, $AE, $B7, $BC, $F6, $F9, $BD, $B8, $FF, $B1, $B2, $BC, $FF, $BE, $B7, $AC, $B5, $AE, $F6, $F9, $B5, $AE, $AA, $BF, $B2, $B7, $B0, $FF, $BD, $B1, $AE, $F6, $F9, $B1, $B8, $BE, $BC, $AE, $C8, $FE, $78, $03, $F6, $F9, $B1, $AE, $FF, $B3, $BE, $BC, $BD, $FF, $BB, $BE, $B7, $BC, $F6, $F9, $B8, $BE, $BD, $FF, $BD, $B1, $AE, $FF, $AD, $B8, $B8, $BB, $FE, $78, $03, $F6, $F9, $B2, $B7, $BD, $B8, $FF, $BD, $B1, $AE, $FF, $BB, $AA, $B2, $B7, $C2, $F6, $F9, $B7, $B2, $B0, $B1, $BD, $CD, $FE, $78, $03, $FE, $67, $FE, $67, $F6, $F9, $B0, $AA, $B7, $B8, $B7, $FF, $B1, $AA, $BC, $F6, $F9, $B6, $B8, $BF, $AE, $AD, $FF, $AA, $B5, $B5, $FF, $BD, $B1, $AE, $F6, $F9, $B2, $BD, $AE, $B6, $BC, $FF, $AA, $BB, $B8, $BE, $B7, $AD, $F6, $F9, $B1, $C2, $BB, $BE, $B5, $AE, $CD, $FE, $78, $07, $F6, $F9, $C2, $B8, $BE, $FF, $C0, $B2, $B5, $B5, $FF, $B1, $AA, $BF, $AE, $F6, $F9, $BD, $B8, $FF, $AF, $B2, $B7, $AD, $FF, $AA, $B5, $B5, $F6, $F9, $BD, $B1, $AE, $FF, $B2, $BD, $AE, $B6, $BC, $F6, $F9, $B7, $AE, $AC, $AE, $BC, $BC, $AA, $BB, $C2, $FF, $BD, $B8, $F6, $F9, $AB, $AE, $AA, $BD, $FF, $B0, $AA, $B7, $B8, $B7, $CD, $FE, $78, $07, $F6, $F9, $BD, $B1, $B2, $BC, $FF, $B2, $BC, $FF, $C2, $B8, $BE, $BB, $F6, $F9, $AC, $B1, $AA, $B7, $AC, $AE, $FF, $BD, $B8, $FF, $AB, $AE, $FF, $AA, $F6, $F9, $B1, $AE, $BB, $B8, $FE, $78, $03, $FE, $67, $FE, $67, $F6, $F9, $C2, $B8, $BE, $FF, $B6, $BE, $BC, $BD, $FF, $B0, $AE, $BD, $F6, $F9, $BD, $B1, $AE, $FF, $A7, $FF, $AC, $BB, $C2, $BC, $BD, $AA, $B5, $BC, $F6, $F9, $BD, $B8, $FF, $AB, $AE, $AA, $BD, $FF, $B0, $AA, $B7, $B8, $B7, $CD, $FE, $78, $09, $FE, $67, $FE, $67, $FB
|
||||
; Skeleton King
|
||||
db $FE, $6B, $02, $FE, $77, $07, $FC, $03, $F7, $B5, $B8, $B8, $B4, $FF, $AA, $BD, $FF, $BD, $B1, $B2, $BC, $FF, $FF, $F8, $BC, $BD, $AA, $B5, $AF, $B8, $BC, $FF, $B8, $B7, $FF, $BD, $B1, $AE, $F9, $BD, $B1, $BB, $B8, $B7, $AE, $CD, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
; Zelda's cell
|
||||
db $FE, $6B, $02, $FE, $77, $07, $FC, $03, $F7, $B2, $BD, $FF, $B2, $BC, $FF, $C2, $B8, $BE, $BB, $FF, $FF, $FF, $FF, $F8, $BD, $B2, $B6, $AE, $FF, $BD, $B8, $FF, $BC, $B1, $B2, $B7, $AE, $C7, $FB
|
||||
; Agahnim magic'ing
|
||||
db $FE, $6B, $02, $FE, $77, $07, $FC, $03, $F7, $AA, $B5, $BC, $B8, $FF, $C2, $B8, $BE, $FF, $B7, $AE, $AE, $AD, $FF, $F8, $BD, $B8, $FF, $AD, $AE, $AF, $AE, $AA, $BD, $FF, $BD, $B1, $B2, $BC, $F9, $B0, $BE, $C2, $C7, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CC820 ; <- E4820 - E484A ; Lumberjack left - 0x2B
|
||||
db $B8, $B7, $AE, $FF, $B8, $AF, $FF, $BE, $BC, $FF, $FF, $FF, $FF, $F8, $AA, $B5, $C0, $AA, $C2, $BC, $FF, $B5, $B2, $AE, $BC, $CD, $FF, $FF, $F9, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CC84B ; <- E484B - E4874 ; Lumberjack right - 0x2A
|
||||
db $B8, $B7, $AE, $FF, $B8, $AF, $FF, $BE, $BC, $FF, $FF, $FF, $FF, $F8, $AA, $B5, $C0, $AA, $C2, $BC, $FF, $BD, $AE, $B5, $B5, $BC, $F9, $BD, $B1, $AE, $FF, $BD, $BB, $BE, $BD, $B1, $CD, $FF, $FF, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CE792 ; <- E6792 - E67B8 ; treasure chest game not played yet - 0x27
|
||||
db $C2, $B8, $BE, $FF, $C0, $AA, $B7, $BD, $FF, $BD, $B8, $FF, $FF, $F8, $B9, $B5, $AA, $C2, $FF, $B0, $AA, $B6, $AE, $C6, $F9, $BD, $AA, $B5, $B4, $FF, $BD, $B8, $FF, $B6, $AE, $CD, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CE7B9 ; <- E67B9 - E67DD ; treasure chest game played - 0x25
|
||||
db $C2, $B8, $BE, $D8, $BF, $AE, $FF, $B8, $B9, $AE, $B7, $AE, $AD, $F8, $BD, $B1, $AE, $FF, $AC, $B1, $AE, $BC, $BD, $BC, $CD, $F9, $BD, $B2, $B6, $AE, $FF, $BD, $B8, $FF, $B0, $B8, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CE91B ; <- E691B ; no empty bottles
|
||||
db $AE, $B6, $B9, $BD, $C2, $FF, $AB, $B8, $BD, $BD, $B5, $AE, $BC, $FF, $F8, $AA, $BB, $AE, $FF, $C0, $B1, $AA, $BD, $FF, $C2, $B8, $BE, $FF, $FF, $F9, $BB, $AE, $AA, $B5, $B5, $C2, $FF, $B7, $AE, $AE, $AD, $C7, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CEF09 ; <- E6F09 - E6F24 ; powdered pickle - 0x1C
|
||||
db $B2, $D8, $B6, $FF, $AA, $FF, $B5, $B8, $B7, $AE, $B5, $C2, $F8, $AD, $AA, $B7, $AC, $B2, $B7, $B0, $FF, $B9, $B2, $AC, $B4, $B5, $AE, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CEF45 ; <- E6F45 - E6F61 ; potion shop no cash - 0x1D (0x24)
|
||||
db $C2, $B8, $C7, $FF, $B2, $D8, $B6, $FF, $B7, $B8, $BD, $F8, $BB, $BE, $B7, $B7, $B2, $B7, $B0, $FF, $AA, $F9, $AC, $B1, $AA, $BB, $B2, $BD, $C2, $FF, $B1, $AE, $BB, $AE, $CD, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CEFEA ; <- E6FEA - E7039 ; LW chest game south of Kakriko do you want to play? - 0x4F
|
||||
db $B9, $AA, $C2, $FF, $A2, $A0, $FF, $BB, $BE, $B9, $AE, $AE, $BC, $F8, $B8, $B9, $AE, $B7, $FF, $A1, $FF, $AC, $B1, $AE, $BC, $BD, $F9, $AA, $BB, $AE, $FF, $C2, $B8, $BE, $FF, $B5, $BE, $AC, $B4, $C2, $C6, $FA, $F6, $BC, $B8, $C8, $FF, $B9, $B5, $AA, $C2, $FF, $B0, $AA, $B6, $AE, $C6, $F6, $FF, $FF, $E4, $FF, $B9, $B5, $AA, $C2, $F6, $FF, $FF, $FF, $FF, $B7, $AE, $BF, $AE, $BB, $C7, $FE, $68, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CF03A ; <- E703A - E704B ; LW chest game yes play - 0x12
|
||||
db $B0, $B8, $B8, $AD, $FF, $B5, $BE, $AC, $B4, $FF, $BD, $B1, $AE, $B7, $F8, $FF, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $1CF04C ; <- E704C - E7071 ; LW chest game no play - 0x26
|
||||
db $C0, $AE, $B5, $B5, $FF, $AF, $B2, $B7, $AE, $C8, $FF, $B2, $F8, $AD, $B2, $AD, $B7, $D8, $BD, $FF, $C0, $AA, $B7, $BD, $F9, $C2, $B8, $BE, $BB, $FF, $BB, $BE, $B9, $AE, $AE, $BC, $CD, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CF072; <- E7072 - E7039 ; LW chest game south of Kakriko do you want to play? - 0x50
|
||||
db $B9, $AA, $C2, $FF, $A1, $A0, $A0, $FF, $BB, $BE, $B9, $AE, $AE, $BC, $F8, $B8, $B9, $AE, $B7, $FF, $A1, $FF, $AC, $B1, $AE, $BC, $BD, $F9, $AA, $BB, $AE, $FF, $C2, $B8, $BE, $FF, $B5, $BE, $AC, $B4, $C2, $C6, $FA, $F6, $BC, $B8, $C8, $FF, $B9, $B5, $AA, $C2, $FF, $B0, $AA, $B6, $AE, $C6, $F6, $FF, $FF, $E4, $FF, $B9, $B5, $AA, $C2, $F6, $FF, $FF, $FF, $FF, $B7, $AE, $BF, $AE, $BB, $C7, $FE, $68, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CF1E4 ; <- E71E4 ; translate house/sanc spawn menu
|
||||
db $FE, $6D, $00, $FC, $00, $E4, $FE, $6A, $D8, $BC, $FF, $B1, $B8, $BE, $BC, $AE, $FF, $FF, $F8, $FF, $BC, $AA, $B7, $AC, $BD, $BE, $AA, $BB, $C2, $FE, $72, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CF204 ; <- E7204 ; translate house/sanc/mountain spawn menu
|
||||
db $FE, $6D, $00, $FC, $00, $E4, $FE, $6A, $D8, $BC, $FF, $B1, $B8, $BE, $BC, $AE, $F8, $FF, $BC, $AA, $B7, $AC, $BD, $BE, $AA, $BB, $C2, $F9, $FF, $B6, $B8, $BE, $B7, $BD, $AA, $B2, $B7, $FF, $AC, $AA, $BF, $AE, $FE, $71, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CF2C8 ; <- E72C8 ; digging game no cash
|
||||
db $C2, $B8, $BE, $FF, $C0, $AA, $B7, $BD, $FF, $BD, $B8, $F8, $AD, $B2, $B0, $C6, $FF, $B2, $FF, $C0, $AA, $B7, $BD, $F9, $A8, $A0, $FF, $BB, $BE, $B9, $AE, $AE, $BC, $CD, $FF, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CF231 ; <- E7231 - Save and quit
|
||||
db $FC, $00, $E4, $AC, $B8, $B7, $BD, $B2, $B7, $BE, $AE, $F8, $FF, $BC, $AA, $BF, $AE, $FF, $AA, $B7, $AD, $FF, $BA, $BE, $B2, $BD, $FE, $72, $FB
|
||||
;--------------------------------------------------------------------------------
|
||||
org $1CF325 ; <- E7325 ; digging game, no follower
|
||||
db $BC, $B8, $B6, $AE, $BD, $B1, $B2, $B7, $B0, $FF, $B2, $BC, $FF, $F8, $AF, $B8, $B5, $B5, $B8, $C0, $B2, $B7, $B0, $FF, $C2, $B8, $BE, $F9, $B2, $FF, $AD, $B8, $B7, $D8, $BD, $FF, $B5, $B2, $B4, $AE, $CD, $F9, $F9, $F9, $F9, $F9, $F9, $F9
|
||||
;--------------------------------------------------------------------------------
|
||||
9
treekid.asm
Normal file
9
treekid.asm
Normal file
@@ -0,0 +1,9 @@
|
||||
;================================================================================
|
||||
; Tree Kid Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
org $06B12B ; <- 3312B - tree status set - 418 - LDA $7EF3C9 : ORA.b #$08 : STA $7EF3C9
|
||||
LDA $7EF3C9 : AND.b #$F7 : STA $7EF3C9 ; unset arboration instead of setting it
|
||||
;--------------------------------------------------------------------------------
|
||||
org $06B072 ; <- 33072 - FluteAardvark_InitialStateFromFluteState - 418 : dw FluteAardvark_AlreadyArborated
|
||||
db #$8B
|
||||
;================================================================================
|
||||
463
utilities.asm
Normal file
463
utilities.asm
Normal file
@@ -0,0 +1,463 @@
|
||||
;================================================================================
|
||||
; Utility Functions
|
||||
;================================================================================
|
||||
!PROGRESSIVE_SHIELD = "$7EF416" ; ss-- ----
|
||||
;--------------------------------------------------------------------------------
|
||||
; GetSpriteTile
|
||||
; in: A - Loot ID
|
||||
; out: A - Sprite GFX ID
|
||||
;--------------------------------------------------------------------------------
|
||||
GetSpriteID:
|
||||
PHX
|
||||
PHB : PHK : PLB
|
||||
;--------
|
||||
TAX : LDA .gfxSlots, X ; look up item gfx
|
||||
PLB : PLX
|
||||
CMP.b #$FA : !BGE .specialHandling
|
||||
RTL
|
||||
.specialHandling
|
||||
CMP.b #$FA : BNE ++ ; RNG Item (Single)
|
||||
JSL.l GetRNGItemSingle : JMP GetSpriteID
|
||||
++ CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
||||
JSL.l GetRNGItemMulti : JMP GetSpriteID
|
||||
++ CMP.b #$FE : BNE ++ ; Progressive Sword
|
||||
LDA $7EF359 : 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
|
||||
LDA.b #$46 : RTL
|
||||
++ : CMP.b #$FF : BNE ++ ; Progressive Shield
|
||||
LDA !PROGRESSIVE_SHIELD : AND #$C0 : BNE + ; No Shield
|
||||
LDA.b #$2D : RTL
|
||||
+ : CMP.b #$40 : BNE + ; Fighter Shield
|
||||
LDA.b #$20 : RTL
|
||||
+ ; Everything Else
|
||||
LDA.b #$2E : RTL
|
||||
++
|
||||
RTL
|
||||
|
||||
;DATA - Loot Identifier to Sprite ID
|
||||
{
|
||||
.gfxSlots
|
||||
db $06, $44, $45, $46, $2D, $20, $2E, $09
|
||||
db $09, $0A, $08, $05, $10, $0B, $2C, $1B
|
||||
|
||||
db $1A, $1C, $14, $19, $0C, $07, $1D, $2F
|
||||
db $07, $15, $12, $0D, $0D, $0E, $11, $17
|
||||
|
||||
db $28, $27, $04, $04, $0F, $16, $03, $13
|
||||
db $01, $1E, $10, $00, $00, $00, $00, $00
|
||||
|
||||
db $00, $30, $22, $21, $24, $24, $24, $23
|
||||
db $23, $23, $29, $2A, $2C, $2B, $03, $03
|
||||
|
||||
db $34, $35, $31, $33, $02, $32, $36, $37
|
||||
db $2C, $43, $0C, $38, $39, $3A, $3B, $3C
|
||||
; db $2C, $06, $0C, $38, $FF, $FF, $FF, $FF
|
||||
|
||||
;5x
|
||||
db $44 ; Safe Master Sword
|
||||
db $3D, $3E, $3F, $40 ; Bomb & Arrow +5/+10
|
||||
db $00, $00, $00 ; 3x Programmable Item
|
||||
db $41 ; Upgrade-Only Silver Arrows
|
||||
db $24 ; 1 Rupoor
|
||||
db $47 ; Null Item
|
||||
db $48, $48, $48 ; Red, Blue & Green Clocks
|
||||
db $FE, $FF ; Progressive Sword & Shield
|
||||
|
||||
;6x
|
||||
db $04, $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
|
||||
db $FF, $FF, $FF ; Unused
|
||||
|
||||
;7x
|
||||
db $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21 ; Free Map
|
||||
|
||||
;7x
|
||||
db $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16 ; Free Compass
|
||||
|
||||
;7x
|
||||
db $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22 ; Free Big Key
|
||||
|
||||
;7x
|
||||
db $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F ; Free Small Key
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; GetSpritePalette
|
||||
; in: A - Loot ID
|
||||
; out: A - Palette
|
||||
;--------------------------------------------------------------------------------
|
||||
GetSpritePalette:
|
||||
PHX
|
||||
PHB : PHK : PLB
|
||||
;--------
|
||||
TAX : LDA .gfxPalettes, X ; look up item gfx
|
||||
PLB : PLX
|
||||
CMP.b #$FA : !BGE .specialHandling
|
||||
RTL
|
||||
.specialHandling
|
||||
CMP.b #$FD : BNE ++ ; Progressive Sword
|
||||
LDA $7EF359 : BNE + ; No Sword
|
||||
LDA.b #$04 : RTL
|
||||
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
||||
LDA.b #$04 : RTL
|
||||
+ : CMP.b #$02 : BNE + ; Master Sword
|
||||
LDA.b #$02 : RTL
|
||||
+ ; Everything Else
|
||||
LDA.b #$08 : RTL
|
||||
++ : CMP.b #$FE : BNE ++ ; Progressive Shield
|
||||
LDA $7EF35A : 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.b #$04 : RTL
|
||||
+ ; Everything Else
|
||||
LDA.b #$02 : RTL
|
||||
++ : CMP.b #$FC : BNE ++ ; Progressive Gloves
|
||||
LDA $7EF354 : BNE + ; No Gloves
|
||||
LDA.b #$02 : RTL
|
||||
+ ; Everything Else
|
||||
LDA.b #$08 : RTL
|
||||
++ : CMP.b #$FA : BNE ++ ; RNG Item (Single)
|
||||
JSL.l GetRNGItemSingle : JMP GetSpritePalette
|
||||
++ : CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
||||
JSL.l GetRNGItemMulti : JMP GetSpritePalette
|
||||
++
|
||||
RTL
|
||||
|
||||
;DATA - Loot Identifier to Sprite Palette
|
||||
{
|
||||
.gfxPalettes
|
||||
db $00, $04, $02, $08, $04, $02, $08, $02
|
||||
db $04, $02, $02, $02, $04, $04, $04, $08
|
||||
|
||||
db $08, $08, $02, $02, $04, $02, $02, $02
|
||||
db $04, $02, $04, $02, $08, $08, $04, $02
|
||||
|
||||
db $0A, $02, $04, $02, $04, $04, $00, $04
|
||||
db $04, $08, $02, $02, $08, $04, $02, $08
|
||||
|
||||
db $04, $04, $08, $08, $08, $04, $02, $08
|
||||
db $02, $04, $08, $02, $04, $04, $02, $02
|
||||
|
||||
db $08, $08, $02, $04, $04, $08, $08, $08
|
||||
db $04, $04, $04, $02, $08, $08, $08, $08
|
||||
; db $04, $0A, $04, $02, $FF, $FF, $FF, $FF
|
||||
|
||||
db $04 ; Safe Master Sword
|
||||
db $08, $08, $08, $08 ; Bomb & Arrow +5/+10
|
||||
db $00, $00, $00 ; Programmable Items 1-2
|
||||
db $02 ; Upgrade-Only Silver Arrows
|
||||
db $06 ; 1 Rupoor
|
||||
db $02 ; Null Item
|
||||
db $02, $04, $08 ; Red, Blue & Green Clocks
|
||||
db $FD, $FE, $FF, $FC ; Progressive Sword, Shield, Armor & Gloves
|
||||
db $FA, $FB ; RNG Single & Multi
|
||||
db $00, $00, $00, $00, $00, $00 ; Unused
|
||||
db $08, $08, $08 ; Goal Item Single, Multi & Alt Multi
|
||||
db $00, $00, $00 ; Unused
|
||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Map
|
||||
db $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04 ; Free Compass
|
||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Big Key
|
||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Small Key
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; IsNarrowSprite
|
||||
; in: A - Loot ID
|
||||
; out: Carry - 0 = Full, 1 = Narrow
|
||||
;--------------------------------------------------------------------------------
|
||||
IsNarrowSprite:
|
||||
PHA : PHX
|
||||
PHB : PHK : PLB
|
||||
|
||||
;--------
|
||||
CMP.b #$5F : BNE ++ ; Special Handler for Progressive Shield
|
||||
LDA $7EF35A : BNE + : SEC : BRA .done : +; No Shield
|
||||
BRA .false ; Everything Else
|
||||
++ CMP.b #$62 : BNE ++ ; RNG Item (Single)
|
||||
JSL.l GetRNGItemSingle : BRA .continue
|
||||
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
||||
JSL.l GetRNGItemMulti
|
||||
++
|
||||
|
||||
.continue
|
||||
;--------
|
||||
|
||||
LDX.b #$00 ; set index counter to 0
|
||||
;----
|
||||
-
|
||||
CPX.b #$24 : !BGE .false ; finish if we've done the whole list
|
||||
CMP .smallSprites, X : BNE + ; skip to next if we don't match
|
||||
;--
|
||||
SEC ; set true state
|
||||
BRA .done ; we're done
|
||||
;--
|
||||
+
|
||||
INX ; increment index
|
||||
BRA - ; go back to beginning of loop
|
||||
;----
|
||||
.false
|
||||
CLC
|
||||
.done
|
||||
PLB : PLX : PLA
|
||||
RTL
|
||||
|
||||
;DATA - Half-Size Sprite Markers
|
||||
{
|
||||
.smallSprites
|
||||
db $04, $07, $08, $09, $0A, $0B, $0C, $13
|
||||
db $15, $18, $24, $2A, $31, $34, $35, $36
|
||||
db $42, $43, $45, $59, $A0, $A1, $A2, $A3
|
||||
db $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB
|
||||
db $AC, $AD, $AE, $AF, $FF, $FF, $FF, $FF
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; PrepDynamicTile
|
||||
; in: A - Loot ID
|
||||
;-------------------------------------------------------------------------------- 20/8477
|
||||
PrepDynamicTile:
|
||||
PHA : PHX : PHY
|
||||
JSR.w LoadDynamicTileOAMTable
|
||||
JSL.l GetSpriteID ; convert loot id to sprite id
|
||||
JSL.l GetAnimatedSpriteTile_variable
|
||||
PLY : PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; LoadDynamicTileOAMTable
|
||||
; in: A - Loot ID
|
||||
;-------------------------------------------------------------------------------- 20/847B
|
||||
!SPRITE_OAM = "$7EC025"
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadDynamicTileOAMTable:
|
||||
PHA : PHP
|
||||
|
||||
PHA
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA.w #$0000 : STA.l !SPRITE_OAM
|
||||
STA.l !SPRITE_OAM+2
|
||||
LDA.w #$0200 : STA.l !SPRITE_OAM+6
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA.b #$24 : STA.l !SPRITE_OAM+4
|
||||
|
||||
LDA $01,s
|
||||
|
||||
JSL.l GetSpritePalette
|
||||
STA !SPRITE_OAM+5 : STA !SPRITE_OAM+13
|
||||
PLA
|
||||
JSL.l IsNarrowSprite : BCS .narrow
|
||||
|
||||
BRA .done
|
||||
|
||||
.narrow
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA.w #$0000 : STA.l !SPRITE_OAM+7
|
||||
STA.l !SPRITE_OAM+14
|
||||
LDA.w #$0800 : STA.l !SPRITE_OAM+9
|
||||
LDA.w #$3400 : STA.l !SPRITE_OAM+11
|
||||
|
||||
.done
|
||||
PLP : PLA
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; DrawDynamicTile
|
||||
; in: A - Loot ID
|
||||
; out: A - OAM Slots Taken
|
||||
;--------------------------------------------------------------------------------
|
||||
; This wastes two OAM slots if you don't want a shadow - fix later
|
||||
;-------------------------------------------------------------------------------- 2084B8
|
||||
!SPRITE_OAM = "$7EC025"
|
||||
!SKIP_EOR = "$7F5008"
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawDynamicTile:
|
||||
JSL.l IsNarrowSprite : BCS .narrow
|
||||
|
||||
.full
|
||||
LDA.b #$01 : STA $06
|
||||
LDA #$0C : JSL.l OAM_AllocateFromRegionC
|
||||
LDA #$02 : PHA
|
||||
BRA .draw
|
||||
|
||||
.narrow
|
||||
LDA.b #$02 : STA $06
|
||||
LDA #$10 : JSL.l OAM_AllocateFromRegionC
|
||||
LDA #$03 : PHA
|
||||
|
||||
.draw
|
||||
LDA.b #!SPRITE_OAM>>0 : STA $08
|
||||
LDA.b #!SPRITE_OAM>>8 : STA $09
|
||||
STZ $07
|
||||
LDA #$7E : PHB : PHA : PLB
|
||||
LDA.b #$01 : STA.l !SKIP_EOR
|
||||
JSL Sprite_DrawMultiple_quantity_preset
|
||||
PLB
|
||||
|
||||
LDA $90 : !ADD.b #$08 : STA $90 ; leave the pointer in the right spot to draw the shadow, if desired
|
||||
LDA $92 : INC #2 : STA $92
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Sprite_IsOnscreen
|
||||
; in: X - Sprite Slot
|
||||
; out: Carry - 1 = On Screen, 0 = Off Screen
|
||||
;--------------------------------------------------------------------------------
|
||||
Sprite_IsOnscreen:
|
||||
JSR _Sprite_IsOnscreen_DoWork
|
||||
BCS +
|
||||
REP #$20
|
||||
LDA $E2 : PHA : !SUB.w #$0F : STA $E2
|
||||
LDA $E8 : PHA : !SUB.w #$0F : STA $E8
|
||||
SEP #$20
|
||||
JSR _Sprite_IsOnscreen_DoWork
|
||||
REP #$20
|
||||
PLA : STA $E8
|
||||
PLA : STA $E2
|
||||
SEP #$20
|
||||
+
|
||||
RTL
|
||||
|
||||
_Sprite_IsOnscreen_DoWork:
|
||||
LDA $0D10, X : CMP $E2
|
||||
LDA $0D30, X : SBC $E3 : BNE .offscreen
|
||||
|
||||
LDA $0D00, X : CMP $E8
|
||||
LDA $0D20, X : SBC $E9 : BNE .offscreen
|
||||
SEC
|
||||
RTS
|
||||
.offscreen
|
||||
CLC
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Sprite_GetScreenRelativeCoords:
|
||||
; out: $00.w Sprite Y
|
||||
; out: $02.w Sprite X
|
||||
; out: $06.b Sprite Y Relative
|
||||
; out: $07.b Sprite X Relative
|
||||
;--------------------------------------------------------------------------------
|
||||
; Copied from bank $06
|
||||
;--------------------------------------------------------------------------------
|
||||
!spr_y_lo = $00
|
||||
!spr_y_hi = $01
|
||||
|
||||
!spr_x_lo = $02
|
||||
!spr_x_hi = $03
|
||||
|
||||
!spr_y_screen_rel = $06
|
||||
!spr_x_screen_rel = $07
|
||||
;--------------------------------------------------------------------------------
|
||||
Sprite_GetScreenRelativeCoords:
|
||||
STY $0B
|
||||
|
||||
STA $08
|
||||
|
||||
LDA $0D00, X : STA $00
|
||||
!SUB $E8 : STA $06
|
||||
LDA $0D20, X : STA $01
|
||||
|
||||
LDA $0D10, X : STA $02
|
||||
!SUB $E2 : STA $07
|
||||
LDA $0D30, X : STA $03
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; SkipDrawEOR - Shims in Bank05.asm : 2499
|
||||
;--------------------------------------------------------------------------------
|
||||
!SKIP_EOR = "$7F5008"
|
||||
;--------------------------------------------------------------------------------
|
||||
SkipDrawEOR:
|
||||
LDA.l !SKIP_EOR : BEQ .normal
|
||||
LDA.w #$0000 : STA.l !SKIP_EOR
|
||||
LDA $04 : AND.w #$F0FF : STA $04
|
||||
.normal
|
||||
LDA ($08), Y : EOR $04 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; HexToDec
|
||||
; in: A(w) - Word to Convert
|
||||
; out: $7F5003 - $7F5007 (high - low)
|
||||
;--------------------------------------------------------------------------------
|
||||
HexToDec:
|
||||
PHA
|
||||
PHA
|
||||
LDA.w #$9090
|
||||
STA $7F5003 : STA $7F5005 : STA $7F5006 ; clear digit storage
|
||||
PLA
|
||||
-
|
||||
CMP.w #10000 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5003 : INC : STA $7F5003 : REP #$20 : PLA
|
||||
!SUB.w #10000 : BRA -
|
||||
+ -
|
||||
CMP.w #1000 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5004 : INC : STA $7F5004 : REP #$20 : PLA
|
||||
!SUB.w #1000 : BRA -
|
||||
+ -
|
||||
CMP.w #100 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5005 : INC : STA $7F5005 : REP #$20 : PLA
|
||||
!SUB.w #100 : BRA -
|
||||
+ -
|
||||
CMP.w #10 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5006 : INC : STA $7F5006 : REP #$20 : PLA
|
||||
!SUB.w #10 : BRA -
|
||||
+ -
|
||||
CMP.w #1 : !BLT +
|
||||
PHA : SEP #$20 : LDA $7F5007 : INC : STA $7F5007 : REP #$20 : PLA
|
||||
!SUB.w #1 : BRA -
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; NameHash
|
||||
; out:
|
||||
; $00 - $07 - 64-bit Seed Hash
|
||||
;--------------------------------------------------------------------------------
|
||||
NameHash:
|
||||
PHP
|
||||
SEP #$30 ; set 8-bit accumulator & index registers
|
||||
LDY #$00; ; for (j = 0; j < 8; ++j) {
|
||||
-
|
||||
CPY #$08 : !BGE +
|
||||
LDA $00FFC0 : PHY : !ADD 1,s : STA 1,s : PLX : LDA.l NameHashTable, X ; h = T[(x[0] + j) % 256];
|
||||
PHY
|
||||
LDY #$01 ; for (i = 1; i < len; ++i) {
|
||||
--
|
||||
CPY #21 : !BGE ++ ; 21 decimal
|
||||
TYX : EOR $00FFC0, X : TAX : LDA.l NameHashTable, X ; h = T[h ^ x[i]];
|
||||
INY
|
||||
BRA --
|
||||
++ ; }
|
||||
PLY : TYX
|
||||
STA $00, X
|
||||
INY
|
||||
BRA -
|
||||
+ ; }
|
||||
PLP
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;================================================================================
|
||||
8
zoraking.asm
Normal file
8
zoraking.asm
Normal file
@@ -0,0 +1,8 @@
|
||||
;================================================================================
|
||||
; Randomize Zora King
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadZoraKingItemGFX:
|
||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
||||
JSL.l PrepDynamicTile
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user