fixed shops disregarding item counts (extra hitbox, etc) fixed rupee arrows regarding requiring wooden arrows before being able to fire them finished escape assist mode for ammo management in new game mode
540 lines
11 KiB
NASM
540 lines
11 KiB
NASM
;================================================================================
|
|
; 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 #$05 ; mark sram as 32k
|
|
|
|
org $3FFFFF ; <- 1FFFFF
|
|
db #$00 ; expand file to 2mb
|
|
|
|
org $1FFFF8 ; <- FFFF8 timestamp rom
|
|
db #$20, #$18, #$02, #$23 ; year/month/day
|
|
|
|
;================================================================================
|
|
|
|
!ADD = "CLC : ADC"
|
|
!SUB = "SEC : SBC"
|
|
!BLT = "BCC"
|
|
!BGE = "BCS"
|
|
|
|
!INVENTORY_SWAP = "$7EF38C"
|
|
!INVENTORY_SWAP_2 = "$7EF38E"
|
|
!NPC_FLAGS = "$7EF410"
|
|
!NPC_FLAGS_2 = "$7EF411"
|
|
!MAP_ZOOM = "$7EF415"
|
|
!PROGRESSIVE_SHIELD = "$7EF416" ; ss-- ----
|
|
!HUD_FLAG = "$7EF416" ; --h- ----
|
|
!FORCE_PYRAMID = "$7EF416" ; ---- p---
|
|
!IGNORE_FAIRIES = "$7EF416" ; ---- -i--
|
|
!SHAME_CHEST = "$7EF416" ; ---s ----
|
|
!HAS_GROVE_ITEM = "$7EF416" ; ---- ---g general flags, don't waste these
|
|
!HIGHEST_SWORD_LEVEL = "$7EF417" ; --- -sss
|
|
!SRAM_SINK = "$7EF41E" ; <- change this
|
|
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
|
|
;$7EF41A[w] - Programmable Item #1
|
|
;$7EF41C[w] - Programmable Item #2
|
|
;$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";
|
|
|
|
!TILE_UPLOAD_BUFFER = "$7EA180";
|
|
|
|
!FORCE_HEART_SPAWN = "$7F5033";
|
|
!SKIP_HEART_SAVE = "$7F5034";
|
|
|
|
!INVENTORY_SWAP = "$7EF38C"
|
|
!INVENTORY_SWAP_2 = "$7EF38E"
|
|
|
|
!ITEM_LIMIT_COUNTS = "$7EF390"
|
|
!SHOP_PURCHASE_COUNTS = "$7EF3A0"
|
|
;================================================================================
|
|
|
|
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 zelda.asm
|
|
incsrc maidencrystals.asm
|
|
incsrc zoraking.asm
|
|
incsrc catfish.asm
|
|
incsrc flute.asm
|
|
incsrc dungeondrops.asm
|
|
incsrc halfmagicbat.asm
|
|
incsrc newitems.asm
|
|
incsrc mantle.asm
|
|
incsrc swordswap.asm
|
|
incsrc stats.asm
|
|
incsrc scratchpad.asm
|
|
incsrc map.asm
|
|
incsrc msu.asm
|
|
incsrc dialog.asm
|
|
incsrc events.asm
|
|
incsrc entrances.asm
|
|
incsrc clock.asm
|
|
incsrc accessability.asm
|
|
incsrc heartbeep.asm
|
|
incsrc capacityupgrades.asm
|
|
incsrc timer.asm
|
|
incsrc glitched.asm
|
|
incsrc hardmode.asm
|
|
incsrc goalitem.asm
|
|
incsrc compasses.asm
|
|
incsrc doorframefixes.asm
|
|
incsrc music.asm
|
|
incsrc cuccostorm.asm
|
|
incsrc roomloading.asm
|
|
incsrc icepalacegraphics.asm
|
|
incsrc retro.asm
|
|
incsrc hashalphabet.asm ; <- TAKE OUT THE EXTRA ORGS IN HERE - THIS IS WHY WE COULDN'T ADD MORE FILES EARLIER
|
|
warnpc $A18000
|
|
|
|
org $1C8000 ; text tables for translation
|
|
incbin i18n_en.bin
|
|
warnpc $1CF356
|
|
|
|
org $A18000 ; static mapping area
|
|
incsrc framehook.asm
|
|
warnpc $A186B0
|
|
|
|
org $A186B0 ; static mapping area, do not move
|
|
incsrc hud.asm
|
|
warnpc $A18800
|
|
|
|
org $A18800 ; static mapping area
|
|
incsrc zsnes.asm
|
|
warnpc $A19000
|
|
|
|
org $A1FF00 ; static mapping area
|
|
incsrc init.asm
|
|
|
|
org $A48000 ; code bank - PUT NEW CODE HERE
|
|
incsrc openmode.asm
|
|
incsrc quickswap.asm
|
|
incsrc endingsequence.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
|
|
;incbin eventitems.gfx ; *EVENT*
|
|
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 $328000
|
|
Extra_Text_Table:
|
|
incsrc itemtext.asm
|
|
|
|
incsrc externalhooks.asm
|
|
;================================================================================
|
|
org $AF8000
|
|
incsrc tournament.asm
|
|
warnpc $B00000
|
|
;================================================================================
|
|
org $119100 ; PC 0x89100
|
|
incbin map_icons.gfx
|
|
warnpc $119401
|
|
;================================================================================
|
|
org $AF8000 ; PC 0x178000
|
|
Static_RNG: ; each line below is 512 bytes of rng
|
|
incsrc staticrng.asm
|
|
warnpc $AF8401
|
|
;================================================================================
|
|
;Bank Map
|
|
;$20 Code Bank
|
|
;$21 Reserved (Frame Hook & Init)
|
|
;$22 Contrib Code
|
|
;$23 Stats & Credits
|
|
;$24 Code Bank
|
|
;$30 Main Configuration Table
|
|
;$31 Graphics Bank
|
|
;$32 Text Bank
|
|
;$33 Graphics Bank
|
|
;$2F reserved for tournament use
|
|
;$3A reserved for downstream use (Plandomizer)
|
|
;$3B reserved for downstream use (Plandomizer)
|
|
;$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 except not anymore obviously
|
|
;
|
|
;;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 $008781
|
|
UseImplicitRegIndexedLocalJumpTable:
|
|
|
|
org $008333
|
|
Vram_EraseTilemaps_triforce:
|
|
|
|
org $00893D
|
|
EnableForceBlank:
|
|
|
|
org $00D308
|
|
DecompSwordGfx:
|
|
|
|
org $00D348
|
|
DecompShieldGfx:
|
|
|
|
org $00D463
|
|
Tagalong_LoadGfx:
|
|
|
|
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 $02FD8A ; 17D8A - Bank07.asm: 3732 Note: Different bank
|
|
LoadGearPalettes_bunny:
|
|
|
|
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 $05EC96
|
|
Sprite_ZeldaLong:
|
|
|
|
org $0683E6
|
|
Utility_CheckIfHitBoxesOverlapLong:
|
|
|
|
org $06A7DB
|
|
Chicken_SpawnAvengerChicken: ; returns short
|
|
|
|
org $06DC5C
|
|
Sprite_DrawShadowLong:
|
|
|
|
org $06DD40
|
|
DashKey_Draw:
|
|
|
|
org $06DBF8
|
|
Sprite_PrepAndDrawSingleLargeLong:
|
|
|
|
org $06DC00
|
|
Sprite_PrepAndDrawSingleSmallLong:
|
|
|
|
org $06EA18
|
|
Sprite_ApplySpeedTowardsPlayerLong:
|
|
|
|
org $06EAA6
|
|
Sprite_DirectionToFacePlayerLong:
|
|
|
|
org $06F12F
|
|
Sprite_CheckDamageToPlayerSameLayerLong:
|
|
|
|
org $06F86A
|
|
OAM_AllocateDeferToPlayerLong:
|
|
|
|
org $0791B3
|
|
Player_HaltDashAttackLong:
|
|
|
|
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 $098BAD
|
|
AddPendantOrCrystal:
|
|
|
|
org $0993DF
|
|
AddDashTremor:
|
|
|
|
org $09AE64
|
|
Sprite_SetSpawnedCoords:
|
|
|
|
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 $0DBB6E
|
|
Sound_SetSfx1PanLong:
|
|
|
|
org $0DBB7C
|
|
Sound_SetSfx2PanLong:
|
|
|
|
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 $0DFA78
|
|
HUD_RebuildLong:
|
|
|
|
org $0DFA88
|
|
HUD_RebuildIndoor_Palace:
|
|
|
|
org $0EEE10
|
|
Messaging_Text:
|
|
|
|
org $1BED03
|
|
Palette_Sword:
|
|
|
|
org $1BED29
|
|
Palette_Shield:
|
|
|
|
org $1BEDF9
|
|
Palette_ArmorAndGloves:
|
|
|
|
org $1BEE52
|
|
Palette_Hud:
|
|
|
|
org $1CFAAA
|
|
ShopKeeper_RapidTerminateReceiveItem:
|
|
|
|
org $1CF500
|
|
Sprite_NullifyHookshotDrag:
|
|
|
|
org $1DF65D
|
|
Sprite_SpawnDynamically:
|
|
|
|
org $1DF65F
|
|
Sprite_SpawnDynamically_arbitrary:
|
|
|
|
org $1DFD4B
|
|
DiggingGameGuy_AttemptPrizeSpawn:
|
|
|
|
org $1EDE28
|
|
Sprite_GetEmptyBottleIndex: ; this is totally in sprite_bees.asm
|
|
|
|
org $1EF4E7
|
|
Sprite_PlayerCantPassThrough:
|
|
;================================================================================
|