Merge branch 'master' into NewMinecart

This commit is contained in:
Jared_Brian_
2025-02-11 18:37:42 -07:00
98 changed files with 4641 additions and 3961 deletions

135
.gitignore vendored
View File

@@ -22,3 +22,138 @@ oos165x.smp.sym
oos165x.srm
buildJ.bat
oos165x.cht
Roms
Dungeons/Assets
Items/gfx/jump_frames.xcf
Masks/etc
Menu/rings/
Overworld/project_files/DarkWorldMainSet.xcf
Sprites/Project Files/
Thumbs.db
.favorites.json
Dungeons/Assets/
Roms/oos111.bps
Roms/oos112.sfc
Sprites/Enemies/deku_scrub_enemy.zsm
Dungeons/Objects/object_files/kydreeok_body.zob
Sprites/Objects/Minecart/
Util/tools
Util/rom_map.txt
Sprites/NPCs/korok_hollo.asm
Sprites/NPCs/korok_makar.asm
Sprites/NPCs/korok_rown.asm
Overworld/world_map/test_dw.bmp
Overworld/world_map/zelda3.sfc
Overworld/world_map/maptest.bmp
Sprites/Objects/whirlpool_export.asm
Sprites/Objects/ice_block_export.asm
Masks/gfx/[108]tlp11
Masks/gfx/extra/
Overworld/project_files/OverworldCastleBridge.png
Overworld/project_files/OverworldCastleBridge.xcf
Overworld/gfx/boat2_1.bin
Overworld/gfx/boat2_3.bin
Overworld/gfx/boat2_4.bin
Overworld/gfx/boat2_2.bin
Sprites/NPCs/zora_princess_proj.zsm
Util/SpcToASM/SpcConverter.deps.json
Util/SpcToASM/SpcConverter.dll
Util/SpcToASM/SpcConverter.exe
Util/SpcToASM/SpcConverter.pdb
Util/SpcToASM/SpcConverter.runtimeconfig.json
Masks/gfx/deku_link.pal
Masks/gfx/deku_new.pal
Masks/gfx/dekulinkpal.pal
Masks/gfx/dekulinkpal.pal.bak
Masks/gfx/gbc-link.pal
Masks/gfx/image.bin
Masks/gfx/image.png
Overworld/project_files/zora_overlay_2.zsa
Overworld/project_files/zora_temple_overlay.zsa
Sprites/wolfos_export.asm
Sprites/wolf_boss.zsm
Sprites/NPCs/project_files/korok_hollo.asm
Sprites/NPCs/project_files/korok_makar.asm
Sprites/NPCs/project_files/korok_rown.asm
Sprites/NPCs/project_files/zora_princess_proj.zsm
Util/zelda3.sfc
Util/templatemusic.asm
Util/ZSCustomOverworld.asm
Sprites/Objects/Project Files/ice_block_export.asm
Sprites/Objects/Project Files/whirlpool_export.asm
Overworld/world_map/dw_gfx_new.bmp
Menu/tilemaps/dung_map.bin
Dungeons/intro_cutscene.asm
Dungeons/water_switch.asm
run.sh
Sprites/Bosses/left_kydreeok_head.asm
Sprites/Bosses/kydreeok_wings.asm
Sprites/Bosses/kydreeok_body.zsm
Sprites/Bosses/dark_link.pal
Sprites/NPCs/deku_scrub_npcs.asm
Sprites/Enemies/anti_kirby_v2.asm
Masks/gfx/gbc_dark_link.4bpp
Sprites/kydrog_intro.asm
Util/ZScreamNew/ZScream.exe
Util/ZScreamNew/ZSCustomOverworld.asm
Util/dark_link.bin
Sprites/NPCs/project_files/deku_scrub_npcs.asm
Util/ZScreamNew/asar.dll
Util/ZScreamNew/CustomCollision.asm
Util/ZScreamNew/debug.asm
Util/ZScreamNew/DefaultNames.txt
Util/ZScreamNew/DW.png
Util/ZScreamNew/Lidgren.Network.dll
Util/ZScreamNew/Lidgren.Network.pdb
Util/ZScreamNew/Logs.txt
Util/ZScreamNew/LW.png
Util/ZScreamNew/MapTest.png
Util/ZScreamNew/newgraves.asm
Util/ZScreamNew/ScratchPad.dat
Util/ZScreamNew/SP.png
Util/ZScreamNew/spritesmove.asm
Util/ZScreamNew/tempPatch.asm
Util/ZScreamNew/ZScream.application
Util/ZScreamNew/ZScream.exe.config
Util/ZScreamNew/ZScream.exe.manifest
Util/ZScreamNew/ZS_Patches/Version.txt
Util/ZScreamNew/ZS_Patches/Hex Edits/Misc Small Patches.asm
Util/ZScreamNew/ZS_Patches/Items/AST Boots.asm
Util/ZScreamNew/ZS_Patches/Misc/Big Bomb Requirements.asm
Util/ZScreamNew/ZS_Patches/Misc/IntroSkip.asm
Util/ZScreamNew/ZS_Patches/Misc/JP1.0 Glitches.asm
Util/ZScreamNew/ZS_Patches/Misc/Link Bed Start Position.asm
Util/ZScreamNew/ZS_Patches/Misc/NoRocks.asm
Util/ZScreamNew/ZS_Patches/Misc/Rainstate Skip.asm
Util/ZScreamNew/ZS_Patches/Misc/TorchTags.asm
Util/ZScreamNew/ZS_Patches/Misc/Weathervane.asm
Util/ZScreamNew/ZS_Patches/Music/LostWoodsExitMusic.asm
Util/ZScreamNew/ZS_Patches/Npcs/Bottle Vendor.asm
Util/ZScreamNew/ZS_Patches/Sprites/Crystalswitch Conveyor.asm
Util/ZScreamNew/ZS_Patches/Sprites/Elemental Trinexx.asm
Util/ZScreamNew/ZS_Patches/Sprites/Eye Lasers Active.asm
Util/ZScreamNew/ZS_Patches/Sprites/Khodstare Speeds.asm
Util/ZScreamNew/ZS_Patches/Sprites/Spike Damage.asm
Util/ZScreamNew/ZS_Patches/Sprites/Spikes_Subtype.asm
Sprites/Bosses/bigchuchu_grow.asm
Sprites/Bosses/manhandla_chuchu_blast.asm
Sprites/Bosses/manhandla_export_2.asm
Sprites/Bosses/manhandla_export.asm
Music/Z3_SongOfHealingThemeV1-00.asm
Dungeons/experimental/HitBoxProperties.asm
Dungeons/experimental/intro_cutscene.asm
Dungeons/experimental/KillSprites
Dungeons/experimental/warpswitch.asm
Dungeons/experimental/water_switch.asm
Overworld/weathervane.asm
Util/banana.asm
Menu/tilemaps/sheet.png
Sprites/NPCs/project_files/eon_owl.zsm
Music/wip/oot_title.asm
Music/wip/phantom_ganon.asm
Music/wip/template_song.asm
Music/wip/twinrova_battle.asm
Sprites/NPCs/piratian.zsm
Masks/gfx/moosh.png
Masks/gfx/moosh.pal
Dungeons/DungeonMaps.asm

185
Core/link.asm Normal file
View File

@@ -0,0 +1,185 @@
; =========================================================
; Link RAM and Functions
LinkY = $20 ; Position Y of link
LinkYH = $21 ; High position Y of link
LinkX = $22 ; Position X of link
LinkXH = $23 ; High position X of link
LinkZ = $24 ; Position Z of link
; ----UDLR
; [U Up][D Down][L Left][R Right]
; Direction link is pushing against
LinkPushDir = $26
; Link's recoiling speed
; By themselves, these do not do much
; They will be reset every frame Link is not in recoil state
LinkRecoilY = $27
LinkRecoilX = $28
LinkRecoilZ = $29
; Link's subpixel velocity
; when this value overflows, Link's main velocity gains an extra pixel
; reset on direction change, so not really a positional subpixel
LinkSubVelY = $2A
LinkSubVelX = $2B
; Direction link is facing
; 00:Up, 02:Down, 04:Left, 06:Right
LinkFaceDir = $2F
; Last direction link moved towards
; 00:Up, 01:Down, 02:Left, 03:Right
LinkLastDir = $66
; ----UDLR
; [U Up][D Down][L Left][R Right]
; direction link is "walking towards"
LinkMoveDir = $67
; 0: Not moving, 1: Moving cardinal, 2: Moving diagonally
LinkMoveInfo = $6A
LinkVisible = $4B ; if set to 0x0C link will be invisible
LinkBunnyGfx = $56 ; if set to 1 link will be bunny, otherwise link
; 0x00: normal speed, 0x01-0x0F: slow,<2C>> 0x10:fast
LinkSpeed = $57
; 0x00: normal speed, 0x02: walking on stair speed, 0x10: dashing speed
LinkSpeedTbl = $5E
; if is set to 0x02 or 0x03 link is falling
LinkFalling = $5B
FallTimer = $5C
; LinkState_Default : 0x00
; LinkState_Pits : 0x01
; LinkState_Recoil : 0x02
; LinkState_SpinAttack : 0x03
; LinkState_Swimming : 0x04 (ZoraDive)
; LinkState_OnIce : 0x05
; LinkState_Recoil : 0x06
; LinkState_Zapped : 0x07
; LinkState_UsingEther : 0x08
; LinkState_UsingBombos : 0x09
; LinkState_UsingQuake : 0x0A (DekuHover)
; LinkState_HoppingSouthOW : 0x0B
; LinkState_HoppingHorizontallyOW : 0x0C
; LinkState_HoppingDiagonallyUpOW : 0x0D
; LinkState_HoppingDiagonallyDownOW : 0x0E
; LinkState_0F : 0x0F
; LinkState_0F : 0x10
; LinkState_Dashing : 0x11
; LinkState_ExitingDash : 0x12
; LinkState_Hookshotting : 0x13
; LinkState_CrossingWorlds : 0x14
; LinkState_ShowingOffItem : 0x15
; LinkState_Sleeping : 0x16
; LinkState_Bunny : 0x17
; LinkState_HoldingBigRock : 0x18
; LinkState_ReceivingEther : 0x19
; LinkState_ReceivingBombos : 0x1A
; LinkState_ReadingDesertTablet : 0x1B
; LinkState_TemporaryBunny : 0x1C
; LinkState_TreePull : 0x1D
; LinkState_SpinAttack : 0x1E
LinkState = $5D
; 0: Link is not in a doorway
; 1: is in a vertical doorway
; 2: is in horizontal doorway
LinkDoorway = $6C
; 0: Nothing
; 1: a hand in the air
; 2: 2 hands in the air (like getting triforce)
LinkGrabGfx = $02DA
; if not 0 add a poof gfx on link
LinkPoofGfx = $02E1
; Bunny timer for link before transforming back
LinkBunTimer = $02E2
; if not 0 prevent link from moving and opening the menu
LinkMenuMove = $02E4
; if not 0 prevent link from getting any damages from sprites
LinkDamage = $037B
; ----CCCC
; [C Touching chest id]
LinkColChest = $02E5
; 0: Not on somaria platform, 2: On somaria platform
LinkSomaria = $02F5
; BP-AETHR
; [B Boomerang][P Powder]
; [A Bow&Arrows][E UnusedItem]
; [T UnusedItem][H Hammer][R Rods]
LinkItemUse = $0301
LinkItemY = $0303 ; Currently equipped item on the Y button
; 0: Nothing, 1:Picking up something, 2: Throwing something
LinkCarrying = $0308
; .... ..tl
; t - tossing object
; l - lifting object
LinkCarryOrToss = $0309
; 0: Normal
; 1: Shovel
; 2: Praying
; 4: Hookshot
; 8: Somaria
; 10: Bug net
; 20: Read book
; 40: Tree pull
LinkAnim = $037A
LinkWallCheat = $037F ; If non zero can walk through walls
; Animation step/graphics for spin attack animations; including medallions.
LinkSpinGfx = $031C
LinkSpinStep = $031D
; =========================================================
Link_ReceiveItem = $0799AD ; Y = item id
Link_CancelDash = $0791B9
Link_Initialize = $07F13C
Link_ResetProperties_A = $07F1A3
Link_ResetProperties_B = $07F1E6
Link_ResetProperties_C = $07F1FA
Link_ResetSwimmingState = $07983A
Link_ResetStateAfterDamagingPit = $07984B
Link_ItemReset_FromOverworldThings = $07B107
Link_CalculateSFXPan = $0DBB67
; Used by Agahnim2 fight
CallForDuckIndoors = $07A45F
ApplyLinksMovementToCamera = $07E9D3
HandleIndoorCameraAndDoors = $07F42F
Link_HandleVelocityAndSandDrag = $07E3DD
Link_HandleMovingAnimation_FullLongEntry = $07E6A6
Link_HandleMovingAnimation_General = $07E765
Link_HandleMovingAnimationSwimming = $07E7FA
LinkHop_FindArbitraryLandingSpot = $07E370
CheckIfLinkIsBusy = $07F4D0
Refund_Magic = $07B0E9
Hookshot_CheckTileCollision = $07D576

View File

@@ -16,11 +16,9 @@ endwhile
; Temporary fix for the message bank
; ZS does not clear message data when bank is changed
; So the end of the data bank is not as easily searchable.
org $0EEE76
db $80
org $0EEE75 : db $80
org !addr+1
db $80
org !addr+1 : db $80
org $0ED436
JML MessageExpand
@@ -45,93 +43,98 @@ MessageExpandedData:
Message_18D:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $E3, $59, $2D, $21, $A6, $1E, $3E, $76, $03, $28, $59, $E3, $59, $D0, $1E, $24, $59, $BD, $29, $2C, $42, $59, $26, $32, $59, $1F, $2B, $22, $A5, $1D, $3F, $7E, $73, $13, $B4, $20, $25, $1E, $59, $AE, $59, $DB, $1A, $2F, $1E, $25, $A4, $1F, $1A, $2B, $59, $90, $73, $E2, $1D, $1E, $59, $1A, $1C, $2B, $28, $2C, $2C, $59, $0A, $1A, $25, $32, $31, $28, $59, $DA, $59, $1C, $B1, $2B, $2D, $73, $D8, $59, $2E, $27, $B8, $27, $3E, $59, $05, $C8, $59, $1A, $59, $2C, $26, $8E, $1F, $1E, $1E, $42, $7E, $73, $C6, $59, $1C, $28, $2E, $2B, $D0, $43, $73, $88, $44, $59, $16, $21, $91, $9F, $59, $E3, $59, $AD, $3F, $73, $88, $89, $08, $51, $26, $59, $28, $24, $1A, $32, $41, $68, $7F
Message_18E:
db $00, $21, $42, $59, $1A, $59, $30, $B5, $1E, $59, $1C, $21, $28, $22, $1C, $1E, $3E, $75, $16, $B6, $21, $59, $2D, $B0, $2C, $59, $BD, $29, $42, $59, $27, $28, $59, $D0, $1C, $CE, $2D, $76, $E2, $25, $25, $59, $97, $59, $B0, $1D, $1D, $A0, $A9, $26, $59, $E3, $3E, $7E, $73, $09, $2E, $D3, $59, $21, $8C, $28, $2F, $A1, $D8, $59, $2B, $DC, $1E, $1E, $2C, $73, $8C, $25, $1E, $2D, $59, $D8, $59, $1A, $1D, $2F, $A3, $2E, $CD, $97, $20, $B4, $3E, $7F
db $00, $21, $42, $59, $1A, $59, $30, $B5, $1E, $59, $1C, $21, $28, $22, $1C, $1E, $3E, $75, $16, $B6, $21, $59, $2D, $B0, $2C, $59, $BD, $29, $42, $59, $27, $28, $59, $D0, $1C, $CE, $2D, $76, $E2, $25, $25, $59, $97, $59, $B0, $1D, $1D, $A0, $A9, $26, $59, $E3, $3E, $7E, $73, $09, $2E, $D3, $59, $21, $8C, $28, $2F, $A1, $D8, $59, $2B, $DC, $1E, $1E, $2C, $73, $8C, $25, $1E, $2D, $59, $D8, $59, $1A, $1D, $2F, $A3, $2E, $CD, $97, $20, $B4, $3E, $7F
Message_18F:
db $0E, $21, $59, $1D, $A2, $41, $41, $41, $75, $08, $2D, $59, $D0, $1E, $26, $2C, $59, $E3, $2B, $59, $29, $28, $9C, $1E, $2D, $2C, $59, $8D, $1A, $76, $1A, $59, $1B, $B6, $59, $25, $22, $20, $21, $2D, $41, $59, $02, $28, $BE, $59, $96, $9C, $59, $E1, $A5, $7E, $73, $E3, $2B, $59, $DF, $25, $25, $1E, $2D, $59, $B5, $59, $1A, $2C, $59, $1F, $2E, $25, $25, $59, $1A, $2C, $59, $26, $B4, $1E, $3E, $73, $13, $B4, $20, $25, $1E, $59, $E2, $25, $25, $59, $DF, $B6, $42, $59, $9F, $27, $51, $2D, $73, $E3, $59, $30, $C8, $2B, $32, $3E, $7F
db $0E, $21, $59, $1D, $A2, $41, $41, $41, $75, $08, $2D, $59, $D0, $1E, $26, $2C, $59, $E3, $2B, $59, $29, $28, $9C, $1E, $2D, $2C, $59, $8D, $1A, $76, $1A, $59, $1B, $B6, $59, $25, $22, $20, $21, $2D, $41, $59, $02, $28, $BE, $59, $96, $9C, $59, $E1, $A5, $7E, $73, $E3, $2B, $59, $DF, $25, $25, $1E, $2D, $59, $B5, $59, $1A, $2C, $59, $1F, $2E, $25, $25, $59, $1A, $2C, $59, $26, $B4, $1E, $3E, $73, $13, $B4, $20, $25, $1E, $59, $E2, $25, $25, $59, $DF, $B6, $42, $59, $9F, $27, $51, $2D, $73, $E3, $59, $30, $C8, $2B, $32, $3E, $7F
Message_190:
db $00, $21, $42, $59, $26, $32, $59, $97, $D3, $59, $1C, $2E, $D3, $28, $26, $A6, $3E, $75, $E8, $59, $8D, $97, $9B, $B3, $2A, $2E, $B6, $1E, $76, $D8, $59, $1C, $28, $25, $25, $1E, $1C, $2D, $C8, $59, $C6, $59, $BD, $29, $2C, $3E, $7E, $73, $0C, $1A, $32, $97, $59, $C7, $1E, $59, $1D, $1A, $32, $59, $13, $B4, $20, $25, $1E, $73, $E2, $25, $25, $59, $27, $1A, $BE, $59, $1A, $59, $29, $BA, $1C, $1E, $59, $1A, $1F, $2D, $A1, $E3, $3E, $7F
db $00, $21, $42, $59, $26, $32, $59, $97, $D3, $59, $1C, $2E, $D3, $28, $26, $A6, $3E, $75, $E8, $59, $8D, $97, $9B, $B3, $2A, $2E, $B6, $1E, $76, $D8, $59, $1C, $28, $25, $25, $1E, $1C, $2D, $C8, $59, $C6, $59, $BD, $29, $2C, $3E, $7E, $73, $0C, $1A, $32, $97, $59, $C7, $1E, $59, $1D, $1A, $32, $59, $13, $B4, $20, $25, $1E, $73, $E2, $25, $25, $59, $27, $1A, $BE, $59, $1A, $59, $29, $BA, $1C, $1E, $59, $1A, $1F, $2D, $A1, $E3, $3E, $7F
Message_191:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D0, $1E, $24, $B3, $D8, $59, $D0, $1C, $CE, $2D, $2C, $59, $C6, $76, $D8, $59, $0C, $2E, $D1, $2B, $28, $28, $26, $59, $06, $2B, $28, $2D, $DA, $42, $59, $8D, $E3, $3F, $7E, $73, $E6, $59, $13, $28, $1A, $1D, $D3, $28, $28, $25, $59, $16, $28, $28, $1D, $2C, $59, $8D, $1A, $73, $DB, $22, $9C, $32, $59, $29, $BA, $1C, $1E, $43, $59, $29, $94, $21, $2C, $59, $D0, $1E, $26, $59, $DA, $73, $2D, $30, $B5, $2D, $59, $8C, $2D, $2E, $2B, $27, $59, $A8, $A7, $A6, $41, $7E, $73, $0C, $1A, $32, $97, $59, $D2, $BE, $C7, $1E, $59, $B4, $59, $DA, $30, $27, $59, $AE, $73, $1F, $22, $20, $2E, $2B, $A4, $C5, $21, $28, $30, $59, $DA, $59, $D2, $25, $2F, $1E, $59, $B6, $2C, $73, $26, $32, $D3, $A6, $22, $1E, $2C, $3E, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $39, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D0, $1E, $24, $B3, $D8, $59, $D0, $1C, $CE, $2D, $2C, $59, $C6, $76, $D8, $59, $0C, $2E, $D1, $2B, $28, $28, $26, $59, $06, $2B, $28, $2D, $DA, $42, $59, $8D, $E3, $3F, $7E, $73, $E6, $59, $13, $28, $1A, $1D, $D3, $28, $28, $25, $59, $16, $28, $28, $1D, $2C, $59, $8D, $1A, $73, $DB, $22, $9C, $32, $59, $29, $BA, $1C, $1E, $43, $59, $29, $94, $21, $2C, $59, $D0, $1E, $26, $59, $DA, $73, $2D, $30, $B5, $2D, $59, $8C, $2D, $2E, $2B, $27, $59, $A8, $A7, $A6, $41, $7E, $73, $0C, $1A, $32, $97, $59, $D2, $BE, $C7, $1E, $59, $B4, $59, $DA, $30, $27, $59, $AE, $73, $1F, $22, $20, $2E, $2B, $A4, $C5, $21, $28, $30, $59, $DA, $59, $D2, $25, $2F, $1E, $59, $B6, $2C, $73, $26, $32, $D3, $A6, $22, $1E, $2C, $3E, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $39, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
Message_192:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D8, $59, $13, $1A, $22, $25, $59, $0F, $1A, $BA, $1C, $1E, $3E, $76, $7E, $73, $E6, $59, $29, $94, $21, $59, $2D, $21, $2B, $28, $2E, $20, $21, $59, $D8, $59, $2C, $DF, $26, $29, $2C, $73, $B5, $59, $D2, $BE, $2D, $B0, $27, $20, $59, $C7, $B9, $1A, $59, $03, $1E, $24, $2E, $59, $1C, $28, $2E, $25, $1D, $73, $27, $1A, $2F, $22, $20, $94, $1E, $59, $9B, $A8, $2D, $1A, $1B, $25, $32, $43, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3B, $39, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D8, $59, $13, $1A, $22, $25, $59, $0F, $1A, $BA, $1C, $1E, $3E, $76, $7E, $73, $E6, $59, $29, $94, $21, $59, $2D, $21, $2B, $28, $2E, $20, $21, $59, $D8, $59, $2C, $DF, $26, $29, $2C, $73, $B5, $59, $D2, $BE, $2D, $B0, $27, $20, $59, $C7, $B9, $1A, $59, $03, $1E, $24, $2E, $59, $1C, $28, $2E, $25, $1D, $73, $27, $1A, $2F, $22, $20, $94, $1E, $59, $9B, $A8, $2D, $1A, $1B, $25, $32, $43, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3B, $39, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
Message_193:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $E6, $59, $20, $2B, $8C, $0A, $1A, $25, $32, $31, $28, $59, $02, $92, $25, $1E, $3E, $76, $7E, $73, $E6, $32, $59, $2C, $1A, $32, $59, $D8, $59, $0A, $B3, $C6, $59, $0A, $1A, $25, $32, $31, $28, $73, $B0, $1D, $59, $1A, $59, $CB, $A6, $1F, $2E, $25, $59, $E0, $1A, $29, $C7, $42, $59, $1D, $1E, $1E, $29, $73, $30, $B6, $B0, $27, $59, $D8, $59, $1C, $92, $25, $1E, $59, $DF, $25, $25, $2C, $41, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $35, $34, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $E6, $59, $20, $2B, $8C, $0A, $1A, $25, $32, $31, $28, $59, $02, $92, $25, $1E, $3E, $76, $7E, $73, $E6, $32, $59, $2C, $1A, $32, $59, $D8, $59, $0A, $B3, $C6, $59, $0A, $1A, $25, $32, $31, $28, $73, $B0, $1D, $59, $1A, $59, $CB, $A6, $1F, $2E, $25, $59, $E0, $1A, $29, $C7, $42, $59, $1D, $1E, $1E, $29, $73, $30, $B6, $B0, $27, $59, $D8, $59, $1C, $92, $25, $1E, $59, $DF, $25, $25, $2C, $41, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $35, $34, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
Message_194:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D8, $59, $19, $C8, $1A, $59, $13, $1E, $26, $CA, $3E, $76, $7E, $73, $E6, $59, $19, $C8, $1A, $59, $24, $B4, $20, $9F, $26, $59, $B5, $59, $B4, $73, $1C, $B1, $28, $2C, $41, $41, $41, $59, $D8, $59, $2B, $22, $2F, $A1, $8C, $D0, $1A, $73, $19, $C8, $1A, $2C, $59, $AD, $59, $97, $A0, $91, $28, $1D, $1D, $2C, $41, $7E, $73, $0F, $A6, $B1, $29, $2C, $59, $B6, $8B, $1C, $C7, $27, $1E, $1C, $2D, $A4, $DA, $73, $1A, $59, $1C, $A6, $2D, $8F, $41, $41, $41, $59, $2B, $28, $32, $1A, $25, $59, $2C, $1C, $90, $1A, $25, $3F, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3C, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D8, $59, $19, $C8, $1A, $59, $13, $1E, $26, $CA, $3E, $76, $7E, $73, $E6, $59, $19, $C8, $1A, $59, $24, $B4, $20, $9F, $26, $59, $B5, $59, $B4, $73, $1C, $B1, $28, $2C, $41, $41, $41, $59, $D8, $59, $2B, $22, $2F, $A1, $8C, $D0, $1A, $73, $19, $C8, $1A, $2C, $59, $AD, $59, $97, $A0, $91, $28, $1D, $1D, $2C, $41, $7E, $73, $0F, $A6, $B1, $29, $2C, $59, $B6, $8B, $1C, $C7, $27, $1E, $1C, $2D, $A4, $DA, $73, $1A, $59, $1C, $A6, $2D, $8F, $41, $41, $41, $59, $2B, $28, $32, $1A, $25, $59, $2C, $1C, $90, $1A, $25, $3F, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3C, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
Message_195:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $E3, $59, $30, $B5, $21, $59, $DA, $59, $1E, $31, $29, $BB, $CE, $76, $06, $BA, $1C, $22, $1A, $59, $04, $D3, $94, $1E, $3F, $7E, $73, $00, $59, $29, $BA, $1C, $1E, $59, $C7, $1C, $1E, $59, $1F, $22, $25, $25, $A4, $30, $B6, $21, $59, $E0, $1A, $25, $2D, $21, $73, $8C, $CB, $A6, $41, $41, $41, $59, $1B, $2E, $2D, $59, $27, $28, $30, $3F, $59, $E6, $32, $73, $2C, $1A, $32, $59, $2C, $29, $22, $2B, $B6, $2C, $59, $DF, $25, $24, $59, $B6, $2C, $59, $B1, $25, $25, $2C, $43, $7E, $73, $00, $27, $1D, $59, $2D, $21, $91, $2D, $21, $A6, $1E, $8B, $D2, $BE, $C7, $1E, $73, $DF, $B6, $B3, $A8, $59, $E3, $41, $41, $41, $59, $1A, $59, $2F, $A6, $32, $73, $1C, $B0, $25, $25, $B3, $E0, $25, $9B, $1E, $41, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3D, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $E3, $59, $30, $B5, $21, $59, $DA, $59, $1E, $31, $29, $BB, $CE, $76, $06, $BA, $1C, $22, $1A, $59, $04, $D3, $94, $1E, $3F, $7E, $73, $00, $59, $29, $BA, $1C, $1E, $59, $C7, $1C, $1E, $59, $1F, $22, $25, $25, $A4, $30, $B6, $21, $59, $E0, $1A, $25, $2D, $21, $73, $8C, $CB, $A6, $41, $41, $41, $59, $1B, $2E, $2D, $59, $27, $28, $30, $3F, $59, $E6, $32, $73, $2C, $1A, $32, $59, $2C, $29, $22, $2B, $B6, $2C, $59, $DF, $25, $24, $59, $B6, $2C, $59, $B1, $25, $25, $2C, $43, $7E, $73, $00, $27, $1D, $59, $2D, $21, $91, $2D, $21, $A6, $1E, $8B, $D2, $BE, $C7, $1E, $73, $DF, $B6, $B3, $A8, $59, $E3, $41, $41, $41, $59, $1A, $59, $2F, $A6, $32, $73, $1C, $B0, $25, $25, $B3, $E0, $25, $9B, $1E, $41, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3D, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
Message_196:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D8, $59, $06, $C8, $C7, $59, $0C, $B4, $1E, $2C, $3F, $76, $7E, $73, $08, $51, $2F, $1E, $59, $21, $A2, $1D, $59, $D8, $59, $06, $C8, $C7, $2C, $73, $8D, $CE, $D3, $25, $1E, $2C, $2C, $41, $41, $41, $59, $D2, $BE, $2D, $B0, $27, $20, $73, $1A, $98, $2E, $2D, $59, $26, $B5, $2C, $B3, $2B, $28, $9C, $59, $BE, $94, $3F, $7E, $73, $E8, $25, $25, $59, $27, $1E, $A4, $26, $C8, $1E, $59, $2D, $21, $93, $73, $B7, $59, $D3, $2B, $A5, $20, $2D, $21, $59, $DA, $59, $1C, $2B, $1A, $9C, $73, $2D, $21, $28, $D0, $59, $26, $B4, $1E, $2C, $59, $28, $29, $A5, $3E, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3A, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $D8, $59, $06, $C8, $C7, $59, $0C, $B4, $1E, $2C, $3F, $76, $7E, $73, $08, $51, $2F, $1E, $59, $21, $A2, $1D, $59, $D8, $59, $06, $C8, $C7, $2C, $73, $8D, $CE, $D3, $25, $1E, $2C, $2C, $41, $41, $41, $59, $D2, $BE, $2D, $B0, $27, $20, $73, $1A, $98, $2E, $2D, $59, $26, $B5, $2C, $B3, $2B, $28, $9C, $59, $BE, $94, $3F, $7E, $73, $E8, $25, $25, $59, $27, $1E, $A4, $26, $C8, $1E, $59, $2D, $21, $93, $73, $B7, $59, $D3, $2B, $A5, $20, $2D, $21, $59, $DA, $59, $1C, $2B, $1A, $9C, $73, $2D, $21, $28, $D0, $59, $26, $B4, $1E, $2C, $59, $28, $29, $A5, $3E, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $3A, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
Message_197:
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $0A, $32, $1D, $2B, $28, $20, $8B, $2C, $B0, $29, $3E, $76, $7E, $73, $00, $59, $1F, $A2, $D2, $BE, $59, $2F, $1E, $2C, $D0, $25, $42, $59, $D8, $32, $59, $2C, $1A, $32, $73, $C7, $B9, $2D, $21, $28, $D0, $59, $E1, $28, $59, $1C, $93, $59, $D2, $1A, $2B, $73, $E2, $25, $25, $59, $CE, $1A, $1C, $21, $59, $B6, $3E, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $35, $36, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
db $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $42, $59, $0A, $28, $28, $BB, $40, $0B, $22, $26, $29, $1A, $21, $3E, $75, $00, $21, $42, $59, $0A, $32, $1D, $2B, $28, $20, $8B, $2C, $B0, $29, $3E, $76, $7E, $73, $00, $59, $1F, $A2, $D2, $BE, $59, $2F, $1E, $2C, $D0, $25, $42, $59, $D8, $32, $59, $2C, $1A, $32, $73, $C7, $B9, $2D, $21, $28, $D0, $59, $E1, $28, $59, $1C, $93, $59, $D2, $1A, $2B, $73, $E2, $25, $25, $59, $CE, $1A, $1C, $21, $59, $B6, $3E, $7E, $73, $59, $07, $28, $30, $59, $9F, $1E, $2C, $59, $35, $36, $34, $59, $2B, $DC, $1E, $1E, $2C, $59, $2C, $C4, $3F, $73, $88, $44, $59, $12, $C4, $2C, $59, $AC, $28, $1D, $73, $88, $89, $08, $51, $25, $25, $59, $2D, $1A, $24, $1E, $59, $26, $32, $59, $1C, $21, $93, $1C, $1E, $2C, $68, $7F
Message_198:
db $00, $21, $42, $59, $E0, $25, $25, $59, $2D, $21, $94, $8B, $DA, $28, $59, $96, $1D, $41, $75, $02, $28, $BE, $59, $96, $9C, $59, $22, $1F, $59, $E3, $51, $CD, $B4, $2D, $A6, $1E, $D3, $1E, $1D, $76, $B4, $59, $13, $B4, $20, $25, $1E, $8B, $BD, $29, $2C, $3E, $7E, $73, $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $3E, $59, $0A, $28, $28, $BB, $28, $40, $0B, $22, $26, $29, $1A, $21, $3E, $73, $43, $E6, $D0, $59, $8D, $D8, $59, $BD, $20, $22, $1C, $59, $30, $C8, $1D, $2C, $73, $2D, $21, $91, $13, $B4, $20, $25, $1E, $59, $1C, $CE, $94, $A4, $B0, $26, $D0, $25, $1F, $41, $7E, $73, $03, $28, $C0, $D3, $1E, $1A, $25, $59, $D8, $26, $3E, $7F
db $00, $21, $42, $59, $E0, $25, $25, $59, $2D, $21, $94, $8B, $DA, $28, $59, $96, $1D, $41, $75, $02, $28, $BE, $59, $96, $9C, $59, $22, $1F, $59, $E3, $51, $CD, $B4, $2D, $A6, $1E, $D3, $1E, $1D, $76, $B4, $59, $13, $B4, $20, $25, $1E, $8B, $BD, $29, $2C, $3E, $7E, $73, $13, $B4, $20, $25, $1E, $42, $59, $13, $B4, $20, $25, $1E, $3E, $59, $0A, $28, $28, $BB, $28, $40, $0B, $22, $26, $29, $1A, $21, $3E, $73, $43, $E6, $D0, $59, $8D, $D8, $59, $BD, $20, $22, $1C, $59, $30, $C8, $1D, $2C, $73, $2D, $21, $91, $13, $B4, $20, $25, $1E, $59, $1C, $CE, $94, $A4, $B0, $26, $D0, $25, $1F, $41, $7E, $73, $03, $28, $C0, $D3, $1E, $1A, $25, $59, $D8, $26, $3E, $7F
Message_199:
db $E6, $59, $BF, $D1, $2B, $28, $28, $26, $59, $B5, $59, $27, $28, $59, $26, $A6, $1E, $75, $20, $2B, $28, $30, $2D, $21, $59, $C6, $59, $D8, $59, $A2, $2D, $21, $41, $76, $12, $2D, $1E, $1E, $29, $A4, $B4, $59, $93, $1C, $22, $A3, $59, $BD, $20, $22, $1C, $42, $59, $B6, $7E, $73, $1B, $2B, $B4, $20, $2C, $59, $A8, $2D, $21, $59, $E1, $91, $B5, $59, $B0, $1D, $1D, $A5, $41, $73, $08, $27, $59, $B6, $2C, $59, $CB, $1D, $A1, $25, $22, $1E, $2C, $59, $D8, $59, $CB, $A6, $73, $DA, $59, $2B, $A7, $1E, $1A, $25, $59, $DB, $2E, $1E, $59, $A8, $26, $2C, $42, $59, $D0, $1C, $CE, $2D, $2C, $7E, $73, $BB, $27, $20, $59, $1C, $C7, $1C, $1E, $1A, $25, $A4, $1B, $32, $59, $27, $94, $2E, $CE, $41, $7F
db $E6, $59, $BF, $D1, $2B, $28, $28, $26, $59, $B5, $59, $27, $28, $59, $26, $A6, $1E, $75, $20, $2B, $28, $30, $2D, $21, $59, $C6, $59, $D8, $59, $A2, $2D, $21, $41, $76, $12, $2D, $1E, $1E, $29, $A4, $B4, $59, $93, $1C, $22, $A3, $59, $BD, $20, $22, $1C, $42, $59, $B6, $7E, $73, $1B, $2B, $B4, $20, $2C, $59, $A8, $2D, $21, $59, $E1, $91, $B5, $59, $B0, $1D, $1D, $A5, $41, $73, $08, $27, $59, $B6, $2C, $59, $CB, $1D, $A1, $25, $22, $1E, $2C, $59, $D8, $59, $CB, $A6, $73, $DA, $59, $2B, $A7, $1E, $1A, $25, $59, $DB, $2E, $1E, $59, $A8, $26, $2C, $42, $59, $D0, $1C, $CE, $2D, $2C, $7E, $73, $BB, $27, $20, $59, $1C, $C7, $1C, $1E, $1A, $25, $A4, $1B, $32, $59, $27, $94, $2E, $CE, $41, $7F
Message_19A:
db $E6, $59, $30, $B4, $1D, $2C, $59, $C7, $1C, $1E, $59, $1C, $1A, $2B, $2B, $22, $A4, $2D, $21, $28, $D0, $75, $E1, $28, $59, $D2, $1A, $2B, $A4, $30, $B6, $21, $59, $1F, $1E, $94, $21, $A1, $90, $76, $25, $1E, $1A, $1F, $42, $59, $2E, $27, $B0, $27, $1D, $A6, $A4, $1B, $32, $59, $D8, $59, $A2, $2D, $21, $41, $7E, $73, $01, $2E, $2D, $59, $30, $B6, $21, $59, $D8, $59, $2B, $B5, $1E, $59, $C6, $59, $1D, $1A, $2B, $24, $27, $1E, $2C, $2C, $42, $73, $D8, $59, $2C, $24, $32, $59, $2D, $2E, $2B, $27, $A4, $1A, $20, $8F, $D3, $59, $D8, $26, $41, $73, $0D, $28, $30, $42, $59, $C7, $B9, $2D, $21, $28, $D0, $59, $E1, $28, $59, $1E, $26, $1B, $2B, $1A, $1C, $1E, $7E, $73, $D8, $59, $2C, $24, $32, $8B, $20, $22, $1F, $2D, $2C, $59, $BD, $32, $59, $2B, $22, $1D, $1E, $59, $D8, $73, $1C, $2E, $2B, $2B, $A3, $2C, $59, $C6, $59, $1F, $CE, $1E, $9F, $26, $41, $7F
db $E6, $59, $30, $B4, $1D, $2C, $59, $C7, $1C, $1E, $59, $1C, $1A, $2B, $2B, $22, $A4, $2D, $21, $28, $D0, $75, $E1, $28, $59, $D2, $1A, $2B, $A4, $30, $B6, $21, $59, $1F, $1E, $94, $21, $A1, $90, $76, $25, $1E, $1A, $1F, $42, $59, $2E, $27, $B0, $27, $1D, $A6, $A4, $1B, $32, $59, $D8, $59, $A2, $2D, $21, $41, $7E, $73, $01, $2E, $2D, $59, $30, $B6, $21, $59, $D8, $59, $2B, $B5, $1E, $59, $C6, $59, $1D, $1A, $2B, $24, $27, $1E, $2C, $2C, $42, $73, $D8, $59, $2C, $24, $32, $59, $2D, $2E, $2B, $27, $A4, $1A, $20, $8F, $D3, $59, $D8, $26, $41, $73, $0D, $28, $30, $42, $59, $C7, $B9, $2D, $21, $28, $D0, $59, $E1, $28, $59, $1E, $26, $1B, $2B, $1A, $1C, $1E, $7E, $73, $D8, $59, $2C, $24, $32, $8B, $20, $22, $1F, $2D, $2C, $59, $BD, $32, $59, $2B, $22, $1D, $1E, $59, $D8, $73, $1C, $2E, $2B, $2B, $A3, $2C, $59, $C6, $59, $1F, $CE, $1E, $9F, $26, $41, $7F
Message_19B:
db $00, $59, $1B, $BA, $1D, $1E, $59, $98, $2B, $27, $59, $B4, $59, $2C, $B1, $9F, $30, $42, $59, $D8, $75, $0C, $1E, $1A, $9F, $30, $59, $01, $BA, $1D, $1E, $59, $C7, $1C, $1E, $59, $D1, $C7, $1E, $59, $B4, $76, $D8, $59, $21, $90, $2C, $59, $C6, $59, $1A, $59, $21, $A6, $28, $41, $7E, $73, $01, $2E, $2D, $59, $1D, $1A, $2B, $24, $27, $1E, $2C, $2C, $59, $1C, $25, $2E, $27, $20, $59, $DA, $59, $B6, $2C, $73, $1E, $1D, $20, $1E, $42, $59, $8C, $D8, $59, $21, $A6, $28, $59, $DF, $2C, $59, $BB, $D3, $41, $73, $0D, $28, $30, $42, $59, $D8, $59, $1B, $BA, $1D, $1E, $59, $DF, $B6, $2C, $42, $59, $1B, $2E, $2B, $22, $1E, $1D, $7E, $73, $97, $27, $1E, $94, $21, $59, $D8, $59, $E0, $B2, $C6, $73, $A8, $AC, $2D, $2D, $A0, $1A, $26, $1B, $B6, $22, $C7, $2C, $41, $7F
db $00, $59, $1B, $BA, $1D, $1E, $59, $98, $2B, $27, $59, $B4, $59, $2C, $B1, $9F, $30, $42, $59, $D8, $75, $0C, $1E, $1A, $9F, $30, $59, $01, $BA, $1D, $1E, $59, $C7, $1C, $1E, $59, $D1, $C7, $1E, $59, $B4, $76, $D8, $59, $21, $90, $2C, $59, $C6, $59, $1A, $59, $21, $A6, $28, $41, $7E, $73, $01, $2E, $2D, $59, $1D, $1A, $2B, $24, $27, $1E, $2C, $2C, $59, $1C, $25, $2E, $27, $20, $59, $DA, $59, $B6, $2C, $73, $1E, $1D, $20, $1E, $42, $59, $8C, $D8, $59, $21, $A6, $28, $59, $DF, $2C, $59, $BB, $D3, $41, $73, $0D, $28, $30, $42, $59, $D8, $59, $1B, $BA, $1D, $1E, $59, $DF, $B6, $2C, $42, $59, $1B, $2E, $2B, $22, $1E, $1D, $7E, $73, $97, $27, $1E, $94, $21, $59, $D8, $59, $E0, $B2, $C6, $73, $A8, $AC, $2D, $2D, $A0, $1A, $26, $1B, $B6, $22, $C7, $2C, $41, $7F
Message_19C:
db $05, $2B, $28, $26, $59, $1C, $2B, $32, $D3, $1A, $25, $59, $8C, $30, $94, $A6, $42, $59, $D8, $75, $19, $C8, $1A, $59, $1C, $2B, $1A, $1F, $2D, $A4, $30, $C7, $1D, $A6, $2C, $59, $2D, $21, $94, $76, $29, $22, $A6, $1C, $A4, $D8, $59, $2F, $1E, $22, $25, $59, $C6, $59, $CE, $1A, $25, $26, $2C, $41, $7E, $73, $E6, $22, $2B, $59, $30, $C8, $24, $2C, $59, $28, $29, $A5, $A4, $29, $94, $21, $2C, $59, $DA, $73, $29, $BA, $1C, $1E, $2C, $59, $2E, $27, $D0, $A5, $42, $59, $1B, $2E, $2D, $59, $91, $20, $CE, $94, $73, $1C, $28, $D3, $41, $7E, $73, $16, $21, $91, $1F, $BB, $30, $2C, $59, $2D, $21, $2B, $28, $2E, $20, $21, $59, $D8, $59, $30, $94, $A6, $73, $BD, $32, $59, $25, $1E, $1A, $1D, $59, $DA, $59, $2C, $1A, $25, $2F, $94, $22, $C7, $43, $59, $C8, $73, $2B, $2E, $B4, $41, $7F
db $05, $2B, $28, $26, $59, $1C, $2B, $32, $D3, $1A, $25, $59, $8C, $30, $94, $A6, $42, $59, $D8, $75, $19, $C8, $1A, $59, $1C, $2B, $1A, $1F, $2D, $A4, $30, $C7, $1D, $A6, $2C, $59, $2D, $21, $94, $76, $29, $22, $A6, $1C, $A4, $D8, $59, $2F, $1E, $22, $25, $59, $C6, $59, $CE, $1A, $25, $26, $2C, $41, $7E, $73, $E6, $22, $2B, $59, $30, $C8, $24, $2C, $59, $28, $29, $A5, $A4, $29, $94, $21, $2C, $59, $DA, $73, $29, $BA, $1C, $1E, $2C, $59, $2E, $27, $D0, $A5, $42, $59, $1B, $2E, $2D, $59, $91, $20, $CE, $94, $73, $1C, $28, $D3, $41, $7E, $73, $16, $21, $91, $1F, $BB, $30, $2C, $59, $2D, $21, $2B, $28, $2E, $20, $21, $59, $D8, $59, $30, $94, $A6, $73, $BD, $32, $59, $25, $1E, $1A, $1D, $59, $DA, $59, $2C, $1A, $25, $2F, $94, $22, $C7, $43, $59, $C8, $73, $2B, $2E, $B4, $41, $7F
Message_19D:
db $E6, $59, $B1, $25, $25, $2C, $59, $C6, $59, $06, $BA, $1C, $22, $1A, $59, $C7, $1C, $1E, $59, $1E, $1C, $21, $28, $1E, $1D, $75, $30, $B6, $21, $59, $DF, $2B, $26, $2D, $21, $59, $8C, $E0, $1A, $25, $2D, $21, $42, $59, $32, $1E, $2D, $76, $22, $1C, $1E, $59, $1F, $22, $25, $25, $A4, $D8, $22, $2B, $59, $21, $A2, $2D, $2C, $41, $7E, $73, $08, $27, $59, $D8, $22, $2B, $59, $20, $CE, $1E, $1D, $42, $59, $D8, $32, $59, $30, $A6, $1E, $59, $1D, $2B, $1A, $30, $27, $73, $DA, $59, $CB, $A6, $2C, $59, $2D, $21, $91, $A9, $33, $1E, $59, $D8, $26, $59, $A9, $26, $73, $30, $B6, $B0, $27, $41, $7E, $73, $0D, $28, $30, $42, $59, $D8, $22, $2B, $59, $25, $1E, $20, $1A, $1C, $32, $59, $B5, $59, $1B, $2E, $2D, $59, $1C, $28, $25, $1D, $73, $D3, $C7, $1E, $42, $59, $1A, $59, $29, $2B, $B5, $C7, $59, $A8, $59, $2D, $21, $28, $D0, $73, $E1, $28, $59, $D2, $2E, $20, $21, $2D, $59, $DA, $28, $59, $BF, $1C, $21, $41, $7F
db $E6, $59, $B1, $25, $25, $2C, $59, $C6, $59, $06, $BA, $1C, $22, $1A, $59, $C7, $1C, $1E, $59, $1E, $1C, $21, $28, $1E, $1D, $75, $30, $B6, $21, $59, $DF, $2B, $26, $2D, $21, $59, $8C, $E0, $1A, $25, $2D, $21, $42, $59, $32, $1E, $2D, $76, $22, $1C, $1E, $59, $1F, $22, $25, $25, $A4, $D8, $22, $2B, $59, $21, $A2, $2D, $2C, $41, $7E, $73, $08, $27, $59, $D8, $22, $2B, $59, $20, $CE, $1E, $1D, $42, $59, $D8, $32, $59, $30, $A6, $1E, $59, $1D, $2B, $1A, $30, $27, $73, $DA, $59, $CB, $A6, $2C, $59, $2D, $21, $91, $A9, $33, $1E, $59, $D8, $26, $59, $A9, $26, $73, $30, $B6, $B0, $27, $41, $7E, $73, $0D, $28, $30, $42, $59, $D8, $22, $2B, $59, $25, $1E, $20, $1A, $1C, $32, $59, $B5, $59, $1B, $2E, $2D, $59, $1C, $28, $25, $1D, $73, $D3, $C7, $1E, $42, $59, $1A, $59, $29, $2B, $B5, $C7, $59, $A8, $59, $2D, $21, $28, $D0, $73, $E1, $28, $59, $D2, $2E, $20, $21, $2D, $59, $DA, $28, $59, $BF, $1C, $21, $41, $7F
Message_19E:
db $E6, $59, $A2, $2D, $21, $59, $2C, $B4, $20, $2C, $59, $C6, $59, $CB, $A6, $42, $75, $1B, $2E, $2B, $22, $A4, $1D, $1E, $1E, $29, $59, $B4, $59, $B6, $2C, $59, $2F, $1E, $B4, $2C, $41, $76, $02, $2B, $32, $D3, $1A, $25, $2C, $42, $59, $A8, $20, $A4, $B4, $59, $D8, $59, $93, $1C, $22, $A3, $7E, $73, $1F, $22, $CE, $2C, $42, $59, $21, $28, $25, $1D, $59, $D8, $59, $24, $1E, $32, $2C, $59, $DA, $59, $CE, $1A, $25, $26, $2C, $73, $97, $32, $C7, $1D, $41, $59, $01, $2E, $2D, $59, $CB, $A1, $9B, $1E, $2C, $59, $91, $1A, $73, $29, $2B, $22, $1C, $1E, $42, $59, $A8, $59, $D8, $59, $AC, $1D, $9D, $D0, $2C, $7E, $73, $2C, $1C, $94, $2D, $A6, $A4, $D8, $22, $2B, $59, $20, $22, $1F, $2D, $2C, $59, $1A, $1C, $2B, $28, $2C, $2C, $73, $D8, $59, $25, $90, $42, $59, $B0, $1D, $1D, $A0, $A9, $26, $59, $26, $C8, $2D, $1A, $25, $2C, $41, $7F
db $E6, $59, $A2, $2D, $21, $59, $2C, $B4, $20, $2C, $59, $C6, $59, $CB, $A6, $42, $75, $1B, $2E, $2B, $22, $A4, $1D, $1E, $1E, $29, $59, $B4, $59, $B6, $2C, $59, $2F, $1E, $B4, $2C, $41, $76, $02, $2B, $32, $D3, $1A, $25, $2C, $42, $59, $A8, $20, $A4, $B4, $59, $D8, $59, $93, $1C, $22, $A3, $7E, $73, $1F, $22, $CE, $2C, $42, $59, $21, $28, $25, $1D, $59, $D8, $59, $24, $1E, $32, $2C, $59, $DA, $59, $CE, $1A, $25, $26, $2C, $73, $97, $32, $C7, $1D, $41, $59, $01, $2E, $2D, $59, $CB, $A1, $9B, $1E, $2C, $59, $91, $1A, $73, $29, $2B, $22, $1C, $1E, $42, $59, $A8, $59, $D8, $59, $AC, $1D, $9D, $D0, $2C, $7E, $73, $2C, $1C, $94, $2D, $A6, $A4, $D8, $22, $2B, $59, $20, $22, $1F, $2D, $2C, $59, $1A, $1C, $2B, $28, $2C, $2C, $73, $D8, $59, $25, $90, $42, $59, $B0, $1D, $1D, $A0, $A9, $26, $59, $26, $C8, $2D, $1A, $25, $2C, $41, $7F
Message_19F:
db $00, $59, $21, $A6, $28, $59, $C7, $1C, $1E, $59, $2C, $1A, $22, $25, $A4, $D8, $59, $D0, $1A, $2C, $42, $75, $1B, $2E, $2D, $59, $1F, $94, $1E, $59, $2D, $2E, $2B, $27, $A4, $B0, $26, $59, $DA, $59, $2B, $2E, $B4, $42, $76, $1D, $1E, $1E, $29, $59, $B4, $59, $D8, $59, $BE, $1A, $9F, $30, $2C, $43, $7E, $73, $05, $2B, $28, $26, $59, $27, $28, $95, $59, $21, $A2, $2D, $59, $DA, $59, $1C, $2E, $2B, $D0, $1D, $73, $1C, $1A, $29, $2D, $8F, $42, $59, $0A, $32, $1D, $2B, $28, $20, $59, $27, $28, $30, $59, $2B, $22, $9D, $73, $D8, $59, $DF, $2F, $1E, $2C, $59, $C6, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $41, $7E, $73, $08, $27, $59, $B0, $2C, $59, $2A, $2E, $1E, $D3, $59, $DA, $59, $1D, $1E, $1F, $32, $59, $D8, $59, $AC, $1D, $2C, $42, $73, $21, $1E, $59, $D0, $1E, $24, $2C, $59, $C2, $59, $20, $BB, $2B, $32, $42, $59, $1B, $2E, $2D, $59, $1A, $73, $CE, $2D, $2E, $2B, $27, $59, $DA, $59, $E1, $91, $DF, $2C, $59, $BB, $D3, $41, $7F
db $00, $59, $21, $A6, $28, $59, $C7, $1C, $1E, $59, $2C, $1A, $22, $25, $A4, $D8, $59, $D0, $1A, $2C, $42, $75, $1B, $2E, $2D, $59, $1F, $94, $1E, $59, $2D, $2E, $2B, $27, $A4, $B0, $26, $59, $DA, $59, $2B, $2E, $B4, $42, $76, $1D, $1E, $1E, $29, $59, $B4, $59, $D8, $59, $BE, $1A, $9F, $30, $2C, $43, $7E, $73, $05, $2B, $28, $26, $59, $27, $28, $95, $59, $21, $A2, $2D, $59, $DA, $59, $1C, $2E, $2B, $D0, $1D, $73, $1C, $1A, $29, $2D, $8F, $42, $59, $0A, $32, $1D, $2B, $28, $20, $59, $27, $28, $30, $59, $2B, $22, $9D, $73, $D8, $59, $DF, $2F, $1E, $2C, $59, $C6, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $41, $7E, $73, $08, $27, $59, $B0, $2C, $59, $2A, $2E, $1E, $D3, $59, $DA, $59, $1D, $1E, $1F, $32, $59, $D8, $59, $AC, $1D, $2C, $42, $73, $21, $1E, $59, $D0, $1E, $24, $2C, $59, $C2, $59, $20, $BB, $2B, $32, $42, $59, $1B, $2E, $2D, $59, $1A, $73, $CE, $2D, $2E, $2B, $27, $59, $DA, $59, $E1, $91, $DF, $2C, $59, $BB, $D3, $41, $7F
Message_1A0:
db $00, $21, $42, $59, $93, $28, $2D, $21, $A1, $D0, $1C, $CE, $2D, $59, $2C, $1C, $2B, $28, $25, $25, $3E, $75, $E6, $D0, $59, $93, $1C, $22, $A3, $59, $30, $2B, $B6, $B4, $20, $2C, $59, $21, $28, $25, $1D, $76, $26, $32, $D3, $A6, $22, $1E, $2C, $59, $BB, $27, $20, $59, $BB, $D3, $59, $DA, $59, $2D, $22, $BE, $41, $7E, $73, $12, $21, $8E, $08, $59, $DB, $93, $2C, $25, $94, $1E, $59, $B6, $2C, $59, $A8, $AC, $2D, $2D, $A5, $73, $30, $C8, $1D, $2C, $59, $A8, $59, $E3, $3F, $73, $7E, $73, $44, $59, $13, $2B, $93, $2C, $25, $94, $1E, $59, $D8, $59, $2C, $1C, $2B, $28, $25, $25, $73, $89, $11, $1E, $1A, $1D, $59, $29, $2B, $A7, $22, $28, $2E, $2C, $59, $2C, $1C, $2B, $28, $25, $25, $73, $89, $03, $28, $C0, $DA, $2E, $1C, $21, $59, $26, $32, $59, $D3, $2E, $1F, $1F, $71, $7F
db $00, $21, $42, $59, $93, $28, $2D, $21, $A1, $D0, $1C, $CE, $2D, $59, $2C, $1C, $2B, $28, $25, $25, $3E, $75, $E6, $D0, $59, $93, $1C, $22, $A3, $59, $30, $2B, $B6, $B4, $20, $2C, $59, $21, $28, $25, $1D, $76, $26, $32, $D3, $A6, $22, $1E, $2C, $59, $BB, $27, $20, $59, $BB, $D3, $59, $DA, $59, $2D, $22, $BE, $41, $7E, $73, $12, $21, $8E, $08, $59, $DB, $93, $2C, $25, $94, $1E, $59, $B6, $2C, $59, $A8, $AC, $2D, $2D, $A5, $73, $30, $C8, $1D, $2C, $59, $A8, $59, $E3, $3F, $73, $7E, $73, $44, $59, $13, $2B, $93, $2C, $25, $94, $1E, $59, $D8, $59, $2C, $1C, $2B, $28, $25, $25, $73, $89, $11, $1E, $1A, $1D, $59, $29, $2B, $A7, $22, $28, $2E, $2C, $59, $2C, $1C, $2B, $28, $25, $25, $73, $89, $03, $28, $C0, $DA, $2E, $1C, $21, $59, $26, $32, $59, $D3, $2E, $1F, $1F, $71, $7F
Message_1A1:
db $15, $A6, $32, $59, $E0, $25, $25, $41, $59, $0B, $1E, $2D, $59, $2E, $2C, $59, $2E, $27, $2F, $1E, $22, $25, $59, $D8, $75, $D0, $1C, $CE, $2D, $2C, $59, $B0, $1D, $1D, $A0, $30, $B6, $B0, $27, $59, $2D, $B0, $2C, $76, $93, $1C, $22, $A3, $59, $2D, $1E, $31, $2D, $41, $7E, $73, $0B, $B5, $2D, $A0, $1C, $BB, $D0, $25, $32, $42, $59, $A8, $59, $D8, $D0, $73, $30, $C8, $1D, $2C, $59, $1C, $1A, $2B, $2B, $32, $59, $20, $CE, $91, $E0, $22, $20, $21, $2D, $41, $7F
db $15, $A6, $32, $59, $E0, $25, $25, $41, $59, $0B, $1E, $2D, $59, $2E, $2C, $59, $2E, $27, $2F, $1E, $22, $25, $59, $D8, $75, $D0, $1C, $CE, $2D, $2C, $59, $B0, $1D, $1D, $A0, $30, $B6, $B0, $27, $59, $2D, $B0, $2C, $76, $93, $1C, $22, $A3, $59, $2D, $1E, $31, $2D, $41, $7E, $73, $0B, $B5, $2D, $A0, $1C, $BB, $D0, $25, $32, $42, $59, $A8, $59, $D8, $D0, $73, $30, $C8, $1D, $2C, $59, $1C, $1A, $2B, $2B, $32, $59, $20, $CE, $91, $E0, $22, $20, $21, $2D, $41, $7F
Message_1A2:
db $E6, $59, $2C, $1C, $2B, $28, $25, $25, $59, $AE, $59, $97, $A0, $DB, $93, $2C, $25, $94, $1E, $1D, $41, $75, $00, $C2, $21, $A1, $29, $22, $1E, $1C, $1E, $59, $C6, $59, $0A, $1A, $25, $32, $31, $28, $2C, $76, $B0, $D3, $C8, $32, $59, $2B, $A7, $1E, $1A, $25, $1E, $1D, $41, $7E, $73, $E6, $D0, $59, $30, $C8, $1D, $2C, $59, $BD, $32, $59, $2C, $A6, $2F, $1E, $59, $E3, $73, $E0, $25, $25, $42, $59, $22, $1F, $59, $E3, $59, $21, $1E, $A4, $D8, $26, $41, $7F
db $E6, $59, $2C, $1C, $2B, $28, $25, $25, $59, $AE, $59, $97, $A0, $DB, $93, $2C, $25, $94, $1E, $1D, $41, $75, $00, $C2, $21, $A1, $29, $22, $1E, $1C, $1E, $59, $C6, $59, $0A, $1A, $25, $32, $31, $28, $2C, $76, $B0, $D3, $C8, $32, $59, $2B, $A7, $1E, $1A, $25, $1E, $1D, $41, $7E, $73, $E6, $D0, $59, $30, $C8, $1D, $2C, $59, $BD, $32, $59, $2C, $A6, $2F, $1E, $59, $E3, $73, $E0, $25, $25, $42, $59, $22, $1F, $59, $E3, $59, $21, $1E, $A4, $D8, $26, $41, $7F
Message_1A3:
db $08, $2D, $59, $D0, $1E, $26, $2C, $59, $E3, $51, $2F, $1E, $59, $1C, $28, $25, $25, $1E, $1C, $2D, $A4, $1A, $25, $25, $75, $D8, $59, $2C, $1C, $2B, $28, $25, $25, $2C, $59, $B4, $59, $D8, $59, $25, $8C, $C6, $76, $0A, $1A, $25, $32, $31, $28, $3E, $59, $E8, $59, $DB, $2E, $B9, $8D, $D8, $59, $21, $A6, $28, $41, $7F
db $08, $2D, $59, $D0, $1E, $26, $2C, $59, $E3, $51, $2F, $1E, $59, $1C, $28, $25, $25, $1E, $1C, $2D, $A4, $1A, $25, $25, $75, $D8, $59, $2C, $1C, $2B, $28, $25, $25, $2C, $59, $B4, $59, $D8, $59, $25, $8C, $C6, $76, $0A, $1A, $25, $32, $31, $28, $3E, $59, $E8, $59, $DB, $2E, $B9, $8D, $D8, $59, $21, $A6, $28, $41, $7F
Message_1A4:
db $E6, $59, $29, $2B, $B4, $1C, $1E, $2C, $2C, $43, $59, $2D, $1A, $24, $A0, $A9, $26, $59, $2E, $2C, $3E, $75, $16, $1E, $59, $D1, $28, $2E, $25, $1D, $59, $AD, $59, $D0, $A0, $B6, $59, $9B, $B4, $20, $41, $76, $E6, $59, $11, $22, $2F, $A1, $19, $C8, $1A, $2C, $59, $20, $2B, $28, $30, $59, $98, $25, $1D, $A6, $7E, $73, $1E, $1A, $1C, $21, $59, $1D, $1A, $32, $41, $59, $0D, $28, $30, $42, $59, $D8, $32, $51, $2F, $1E, $59, $D3, $28, $25, $A5, $73, $28, $2E, $2B, $59, $26, $28, $D3, $59, $29, $CE, $1C, $22, $28, $2E, $2C, $59, $2D, $CE, $1A, $2C, $2E, $CE, $3E, $73, $16, $21, $28, $59, $E2, $25, $25, $59, $CC, $2D, $1E, $1C, $2D, $59, $2E, $2C, $59, $27, $28, $30, $3F, $7F
db $E6, $59, $29, $2B, $B4, $1C, $1E, $2C, $2C, $43, $59, $2D, $1A, $24, $A0, $A9, $26, $59, $2E, $2C, $3E, $75, $16, $1E, $59, $D1, $28, $2E, $25, $1D, $59, $AD, $59, $D0, $A0, $B6, $59, $9B, $B4, $20, $41, $76, $E6, $59, $11, $22, $2F, $A1, $19, $C8, $1A, $2C, $59, $20, $2B, $28, $30, $59, $98, $25, $1D, $A6, $7E, $73, $1E, $1A, $1C, $21, $59, $1D, $1A, $32, $41, $59, $0D, $28, $30, $42, $59, $D8, $32, $51, $2F, $1E, $59, $D3, $28, $25, $A5, $73, $28, $2E, $2B, $59, $26, $28, $D3, $59, $29, $CE, $1C, $22, $28, $2E, $2C, $59, $2D, $CE, $1A, $2C, $2E, $CE, $3E, $73, $16, $21, $28, $59, $E2, $25, $25, $59, $CC, $2D, $1E, $1C, $2D, $59, $2E, $2C, $59, $27, $28, $30, $3F, $7F
Message_1A5:
db $E8, $59, $1C, $93, $2D, $59, $2C, $E2, $26, $42, $59, $1C, $93, $59, $E3, $3F, $59, $08, $2D, $51, $2C, $75, $27, $28, $59, $2C, $2E, $2B, $29, $2B, $B5, $1E, $43, $59, $D8, $59, $30, $94, $A6, $2C, $59, $21, $A6, $1E, $76, $8D, $2D, $CE, $1A, $9A, $2B, $28, $2E, $2C, $41, $7E, $73, $01, $2E, $2D, $59, $08, $51, $2F, $1E, $59, $21, $A2, $1D, $59, $30, $B0, $2C, $29, $A6, $2C, $59, $C6, $59, $D8, $73, $00, $1B, $32, $2C, $2C, $43, $59, $B4, $59, $2D, $21, $91, $1D, $1A, $2B, $24, $59, $29, $BA, $1C, $1E, $42, $59, $D8, $73, $1F, $25, $22, $29, $29, $A6, $2C, $59, $8D, $2C, $1A, $22, $1D, $59, $DA, $59, $97, $59, $B0, $1D, $1D, $A5, $41, $7E, $73, $08, $1F, $59, $E3, $59, $1C, $28, $2E, $25, $1D, $59, $1F, $B4, $1D, $59, $D8, $26, $42, $59, $29, $A6, $B1, $29, $2C, $73, $D8, $59, $30, $94, $A6, $2C, $59, $30, $28, $2E, $25, $1D, $59, $27, $28, $59, $BB, $27, $20, $A6, $73, $21, $28, $25, $1D, $59, $E3, $59, $96, $9C, $41, $7F
db $E8, $59, $1C, $93, $2D, $59, $2C, $E2, $26, $42, $59, $1C, $93, $59, $E3, $3F, $59, $08, $2D, $51, $2C, $75, $27, $28, $59, $2C, $2E, $2B, $29, $2B, $B5, $1E, $43, $59, $D8, $59, $30, $94, $A6, $2C, $59, $21, $A6, $1E, $76, $8D, $2D, $CE, $1A, $9A, $2B, $28, $2E, $2C, $41, $7E, $73, $01, $2E, $2D, $59, $08, $51, $2F, $1E, $59, $21, $A2, $1D, $59, $30, $B0, $2C, $29, $A6, $2C, $59, $C6, $59, $D8, $73, $00, $1B, $32, $2C, $2C, $43, $59, $B4, $59, $2D, $21, $91, $1D, $1A, $2B, $24, $59, $29, $BA, $1C, $1E, $42, $59, $D8, $73, $1F, $25, $22, $29, $29, $A6, $2C, $59, $8D, $2C, $1A, $22, $1D, $59, $DA, $59, $97, $59, $B0, $1D, $1D, $A5, $41, $7E, $73, $08, $1F, $59, $E3, $59, $1C, $28, $2E, $25, $1D, $59, $1F, $B4, $1D, $59, $D8, $26, $42, $59, $29, $A6, $B1, $29, $2C, $73, $D8, $59, $30, $94, $A6, $2C, $59, $30, $28, $2E, $25, $1D, $59, $27, $28, $59, $BB, $27, $20, $A6, $73, $21, $28, $25, $1D, $59, $E3, $59, $96, $9C, $41, $7F
Message_1A6:
db $E6, $59, $29, $2B, $B4, $1C, $1E, $2C, $2C, $59, $BD, $32, $59, $97, $59, $AC, $27, $1E, $59, $A9, $26, $75, $2D, $B0, $2C, $59, $30, $C8, $25, $1D, $42, $59, $1B, $2E, $2D, $59, $21, $A1, $2C, $29, $22, $2B, $B6, $59, $AE, $76, $1F, $C4, $59, $27, $1E, $30, $59, $25, $22, $1F, $1E, $59, $B4, $59, $E3, $41, $7E, $73, $E6, $59, $19, $C8, $1A, $59, $0C, $1A, $2C, $24, $59, $1C, $1A, $2B, $2B, $22, $1E, $2C, $59, $21, $A6, $73, $2F, $28, $22, $1C, $1E, $42, $59, $21, $A1, $30, $B5, $9F, $26, $43, $59, $8C, $1A, $73, $29, $22, $1E, $1C, $1E, $59, $C6, $59, $28, $2E, $2B, $59, $21, $A2, $2D, $2C, $41, $7E, $73, $0F, $2B, $28, $2D, $1E, $1C, $2D, $59, $B6, $59, $E0, $25, $25, $42, $59, $1B, $2B, $1A, $2F, $1E, $59, $C7, $1E, $41, $7F
db $E6, $59, $29, $2B, $B4, $1C, $1E, $2C, $2C, $59, $BD, $32, $59, $97, $59, $AC, $27, $1E, $59, $A9, $26, $75, $2D, $B0, $2C, $59, $30, $C8, $25, $1D, $42, $59, $1B, $2E, $2D, $59, $21, $A1, $2C, $29, $22, $2B, $B6, $59, $AE, $76, $1F, $C4, $59, $27, $1E, $30, $59, $25, $22, $1F, $1E, $59, $B4, $59, $E3, $41, $7E, $73, $E6, $59, $19, $C8, $1A, $59, $0C, $1A, $2C, $24, $59, $1C, $1A, $2B, $2B, $22, $1E, $2C, $59, $21, $A6, $73, $2F, $28, $22, $1C, $1E, $42, $59, $21, $A1, $30, $B5, $9F, $26, $43, $59, $8C, $1A, $73, $29, $22, $1E, $1C, $1E, $59, $C6, $59, $28, $2E, $2B, $59, $21, $A2, $2D, $2C, $41, $7E, $73, $0F, $2B, $28, $2D, $1E, $1C, $2D, $59, $B6, $59, $E0, $25, $25, $42, $59, $1B, $2B, $1A, $2F, $1E, $59, $C7, $1E, $41, $7F
Message_1A7:
db $07, $1E, $32, $42, $59, $DB, $1A, $2F, $1E, $25, $A6, $3E, $59, $E6, $D0, $59, $26, $B4, $1E, $2C, $75, $8D, $D0, $1A, $25, $A4, $2D, $22, $20, $21, $2D, $41, $59, $16, $B6, $21, $C5, $11, $28, $9C, $76, $12, $22, $2B, $BB, $B4, $2C, $42, $59, $08, $59, $9F, $27, $2D, $59, $AD, $59, $D8, $7E, $73, $D3, $2B, $A5, $20, $2D, $21, $59, $DA, $59, $1B, $CE, $1A, $24, $59, $2D, $21, $2B, $28, $2E, $20, $21, $3E, $73, $16, $1E, $59, $06, $C8, $C7, $2C, $59, $27, $1E, $A4, $2D, $21, $91, $21, $A2, $2D, $32, $73, $BE, $91, $DA, $59, $1F, $2E, $1E, $25, $59, $2E, $2C, $43, $7E, $73, $C2, $B0, $27, $20, $59, $1E, $25, $D0, $59, $29, $1A, $9C, $2C, $59, $D8, $59, $29, $2E, $27, $1C, $21, $3E, $73, $01, $2B, $B3, $BE, $59, $1F, $22, $2F, $1E, $42, $59, $8C, $08, $51, $25, $25, $59, $28, $29, $A5, $73, $D8, $59, $DF, $32, $59, $A8, $59, $E3, $3E, $7F
db $07, $1E, $32, $42, $59, $DB, $1A, $2F, $1E, $25, $A6, $3E, $59, $E6, $D0, $59, $26, $B4, $1E, $2C, $75, $8D, $D0, $1A, $25, $A4, $2D, $22, $20, $21, $2D, $41, $59, $16, $B6, $21, $C5, $11, $28, $9C, $76, $12, $22, $2B, $BB, $B4, $2C, $42, $59, $08, $59, $9F, $27, $2D, $59, $AD, $59, $D8, $7E, $73, $D3, $2B, $A5, $20, $2D, $21, $59, $DA, $59, $1B, $CE, $1A, $24, $59, $2D, $21, $2B, $28, $2E, $20, $21, $3E, $73, $16, $1E, $59, $06, $C8, $C7, $2C, $59, $27, $1E, $A4, $2D, $21, $91, $21, $A2, $2D, $32, $73, $BE, $91, $DA, $59, $1F, $2E, $1E, $25, $59, $2E, $2C, $43, $7E, $73, $C2, $B0, $27, $20, $59, $1E, $25, $D0, $59, $29, $1A, $9C, $2C, $59, $D8, $59, $29, $2E, $27, $1C, $21, $3E, $73, $01, $2B, $B3, $BE, $59, $1F, $22, $2F, $1E, $42, $59, $8C, $08, $51, $25, $25, $59, $28, $29, $A5, $73, $D8, $59, $DF, $32, $59, $A8, $59, $E3, $3E, $7F
Message_1A8:
db $07, $26, $26, $43, $59, $2D, $B0, $2C, $59, $B5, $59, $1A, $59, $D3, $1A, $2B, $2D, $42, $59, $1B, $2E, $2D, $59, $08, $75, $27, $1E, $A4, $1F, $22, $2F, $1E, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $59, $DA, $76, $AB, $59, $D8, $59, $23, $28, $1B, $59, $9F, $27, $1E, $3E, $7E, $73, $0A, $1E, $1E, $29, $59, $2C, $A2, $1C, $B0, $27, $20, $42, $59, $1F, $2B, $22, $A5, $1D, $3E, $59, $13, $21, $28, $D0, $73, $2B, $28, $9C, $2C, $59, $1A, $2B, $A5, $51, $2D, $59, $AC, $B3, $DA, $59, $1B, $2E, $1D, $20, $1E, $73, $C7, $59, $D8, $22, $2B, $59, $28, $30, $27, $3E, $7F
db $07, $26, $26, $43, $59, $2D, $B0, $2C, $59, $B5, $59, $1A, $59, $D3, $1A, $2B, $2D, $42, $59, $1B, $2E, $2D, $59, $08, $75, $27, $1E, $A4, $1F, $22, $2F, $1E, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $59, $DA, $76, $AB, $59, $D8, $59, $23, $28, $1B, $59, $9F, $27, $1E, $3E, $7E, $73, $0A, $1E, $1E, $29, $59, $2C, $A2, $1C, $B0, $27, $20, $42, $59, $1F, $2B, $22, $A5, $1D, $3E, $59, $13, $21, $28, $D0, $73, $2B, $28, $9C, $2C, $59, $1A, $2B, $A5, $51, $2D, $59, $AC, $B3, $DA, $59, $1B, $2E, $1D, $20, $1E, $73, $C7, $59, $D8, $22, $2B, $59, $28, $30, $27, $3E, $7F
Message_1A9:
db $00, $21, $3E, $59, $0D, $28, $30, $59, $2D, $21, $94, $8B, $E1, $91, $08, $51, $26, $59, $2D, $1A, $25, $24, $B4, $51, $75, $1A, $98, $2E, $2D, $3E, $59, $05, $22, $2F, $1E, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $3E, $76, $13, $B0, $2C, $59, $B5, $59, $CE, $1A, $25, $B9, $B6, $3E, $7E, $73, $16, $B6, $21, $59, $2D, $B0, $2C, $42, $59, $08, $51, $2F, $1E, $59, $AC, $2D, $59, $8E, $D8, $73, $D3, $2B, $A5, $20, $2D, $21, $59, $08, $59, $27, $1E, $A4, $DA, $59, $1C, $2B, $1A, $9C, $59, $D8, $D0, $73, $26, $B4, $1E, $2C, $59, $28, $29, $A5, $3E, $7E, $73, $12, $2D, $8C, $96, $9C, $42, $59, $1F, $2B, $22, $A5, $1D, $43, $D8, $D0, $73, $D3, $C7, $1E, $2C, $59, $8D, $1A, $98, $2E, $2D, $59, $DA, $59, $1F, $1E, $1E, $25, $59, $D8, $73, $26, $B2, $C6, $59, $1A, $59, $DB, $2E, $1E, $59, $06, $C8, $C7, $3E, $7F
db $00, $21, $3E, $59, $0D, $28, $30, $59, $2D, $21, $94, $8B, $E1, $91, $08, $51, $26, $59, $2D, $1A, $25, $24, $B4, $51, $75, $1A, $98, $2E, $2D, $3E, $59, $05, $22, $2F, $1E, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $3E, $76, $13, $B0, $2C, $59, $B5, $59, $CE, $1A, $25, $B9, $B6, $3E, $7E, $73, $16, $B6, $21, $59, $2D, $B0, $2C, $42, $59, $08, $51, $2F, $1E, $59, $AC, $2D, $59, $8E, $D8, $73, $D3, $2B, $A5, $20, $2D, $21, $59, $08, $59, $27, $1E, $A4, $DA, $59, $1C, $2B, $1A, $9C, $59, $D8, $D0, $73, $26, $B4, $1E, $2C, $59, $28, $29, $A5, $3E, $7E, $73, $12, $2D, $8C, $96, $9C, $42, $59, $1F, $2B, $22, $A5, $1D, $43, $D8, $D0, $73, $D3, $C7, $1E, $2C, $59, $8D, $1A, $98, $2E, $2D, $59, $DA, $59, $1F, $1E, $1E, $25, $59, $D8, $73, $26, $B2, $C6, $59, $1A, $59, $DB, $2E, $1E, $59, $06, $C8, $C7, $3E, $7F
Message_1AA:
db $00, $21, $42, $59, $DB, $1A, $2F, $1E, $25, $A1, $A9, $26, $59, $97, $32, $C7, $1D, $41, $41, $41, $75, $E3, $59, $D3, $8C, $27, $A2, $59, $D8, $59, $13, $1E, $26, $29, $C8, $1A, $25, $76, $0F, $32, $2B, $1A, $26, $22, $1D, $42, $59, $1A, $59, $29, $BA, $1C, $1E, $59, $C6, $59, $97, $20, $B4, $27, $B4, $20, $2C, $41, $7E, $73, $E6, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0E, $2B, $22, $20, $B4, $2C, $59, $25, $22, $1E, $2C, $59, $E0, $D3, $42, $73, $1A, $59, $29, $BA, $1C, $1E, $59, $C6, $59, $93, $1C, $22, $A3, $59, $CB, $A6, $41, $7E, $73, $0E, $27, $B9, $D8, $59, $2C, $26, $8E, $BD, $32, $59, $2D, $CE, $1A, $1D, $59, $B6, $2C, $73, $29, $94, $21, $2C, $42, $59, $A8, $59, $D8, $59, $D0, $1C, $CE, $2D, $2C, $59, $30, $B6, $B0, $27, $73, $8D, $B0, $1D, $1D, $A0, $A9, $26, $59, $D8, $59, $2E, $27, $30, $C8, $2D, $21, $32, $41, $7E, $73, $0B, $1E, $20, $A5, $1D, $2C, $59, $2C, $1A, $32, $59, $B6, $59, $20, $2B, $93, $2D, $2C, $59, $1A, $59, $CE, $25, $22, $1C, $73, $2D, $21, $91, $21, $28, $25, $1D, $2C, $59, $A8, $26, $59, $D3, $1E, $1A, $1D, $32, $59, $A7, $A0, $B4, $73, $2D, $B0, $2C, $59, $2E, $27, $D3, $1A, $95, $59, $CE, $1A, $25, $26, $41, $7F
db $00, $21, $42, $59, $DB, $1A, $2F, $1E, $25, $A1, $A9, $26, $59, $97, $32, $C7, $1D, $41, $41, $41, $75, $E3, $59, $D3, $8C, $27, $A2, $59, $D8, $59, $13, $1E, $26, $29, $C8, $1A, $25, $76, $0F, $32, $2B, $1A, $26, $22, $1D, $42, $59, $1A, $59, $29, $BA, $1C, $1E, $59, $C6, $59, $97, $20, $B4, $27, $B4, $20, $2C, $41, $7E, $73, $E6, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0E, $2B, $22, $20, $B4, $2C, $59, $25, $22, $1E, $2C, $59, $E0, $D3, $42, $73, $1A, $59, $29, $BA, $1C, $1E, $59, $C6, $59, $93, $1C, $22, $A3, $59, $CB, $A6, $41, $7E, $73, $0E, $27, $B9, $D8, $59, $2C, $26, $8E, $BD, $32, $59, $2D, $CE, $1A, $1D, $59, $B6, $2C, $73, $29, $94, $21, $2C, $42, $59, $A8, $59, $D8, $59, $D0, $1C, $CE, $2D, $2C, $59, $30, $B6, $B0, $27, $73, $8D, $B0, $1D, $1D, $A0, $A9, $26, $59, $D8, $59, $2E, $27, $30, $C8, $2D, $21, $32, $41, $7E, $73, $0B, $1E, $20, $A5, $1D, $2C, $59, $2C, $1A, $32, $59, $B6, $59, $20, $2B, $93, $2D, $2C, $59, $1A, $59, $CE, $25, $22, $1C, $73, $2D, $21, $91, $21, $28, $25, $1D, $2C, $59, $A8, $26, $59, $D3, $1E, $1A, $1D, $32, $59, $A7, $A0, $B4, $73, $2D, $B0, $2C, $59, $2E, $27, $D3, $1A, $95, $59, $CE, $1A, $25, $26, $41, $7F
Message_1AB:
db $E8, $51, $2F, $1E, $59, $9B, $1E, $59, $1F, $1A, $2B, $59, $DA, $59, $2D, $B0, $2C, $59, $29, $BA, $1C, $1E, $41, $75, $E6, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0F, $28, $30, $A1, $25, $22, $1E, $2C, $59, $30, $B6, $B0, $27, $76, $D8, $59, $26, $28, $2E, $27, $2D, $8F, $2C, $42, $59, $E1, $A6, $1E, $59, $D8, $59, $25, $90, $7E, $73, $B6, $D0, $25, $1F, $59, $20, $2B, $28, $93, $2C, $59, $2E, $27, $1D, $A1, $B6, $2C, $59, $E0, $22, $20, $21, $2D, $41, $73, $13, $21, $A6, $1E, $42, $59, $E3, $59, $E2, $25, $25, $59, $1F, $B4, $1D, $59, $1A, $59, $2D, $CE, $1A, $2C, $2E, $CE, $73, $2D, $21, $91, $20, $2B, $93, $2D, $2C, $59, $D8, $59, $D3, $2B, $A5, $20, $2D, $21, $59, $DA, $7E, $73, $26, $28, $2F, $1E, $59, $A7, $A0, $D8, $59, $2E, $27, $26, $28, $2F, $1A, $95, $41, $73, $01, $2E, $2D, $59, $97, $DF, $CE, $42, $59, $2C, $2E, $1C, $21, $59, $CB, $A1, $B5, $73, $27, $A7, $A1, $20, $22, $2F, $A0, $1F, $CE, $1E, $25, $32, $41, $59, $0E, $27, $B9, $2D, $21, $28, $D0, $7E, $73, $30, $B6, $21, $59, $2E, $27, $DF, $2F, $A6, $B3, $CE, $D2, $25, $2F, $1E, $59, $A5, $1D, $2E, $CE, $41, $7F
db $E8, $51, $2F, $1E, $59, $9B, $1E, $59, $1F, $1A, $2B, $59, $DA, $59, $2D, $B0, $2C, $59, $29, $BA, $1C, $1E, $41, $75, $E6, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0F, $28, $30, $A1, $25, $22, $1E, $2C, $59, $30, $B6, $B0, $27, $76, $D8, $59, $26, $28, $2E, $27, $2D, $8F, $2C, $42, $59, $E1, $A6, $1E, $59, $D8, $59, $25, $90, $7E, $73, $B6, $D0, $25, $1F, $59, $20, $2B, $28, $93, $2C, $59, $2E, $27, $1D, $A1, $B6, $2C, $59, $E0, $22, $20, $21, $2D, $41, $73, $13, $21, $A6, $1E, $42, $59, $E3, $59, $E2, $25, $25, $59, $1F, $B4, $1D, $59, $1A, $59, $2D, $CE, $1A, $2C, $2E, $CE, $73, $2D, $21, $91, $20, $2B, $93, $2D, $2C, $59, $D8, $59, $D3, $2B, $A5, $20, $2D, $21, $59, $DA, $7E, $73, $26, $28, $2F, $1E, $59, $A7, $A0, $D8, $59, $2E, $27, $26, $28, $2F, $1A, $95, $41, $73, $01, $2E, $2D, $59, $97, $DF, $CE, $42, $59, $2C, $2E, $1C, $21, $59, $CB, $A1, $B5, $73, $27, $A7, $A1, $20, $22, $2F, $A0, $1F, $CE, $1E, $25, $32, $41, $59, $0E, $27, $B9, $2D, $21, $28, $D0, $7E, $73, $30, $B6, $21, $59, $2E, $27, $DF, $2F, $A6, $B3, $CE, $D2, $25, $2F, $1E, $59, $A5, $1D, $2E, $CE, $41, $7F
Message_1AC:
db $E6, $59, $30, $94, $A6, $2C, $59, $C6, $59, $2D, $B0, $2C, $59, $CE, $1A, $25, $26, $59, $1A, $CE, $75, $C2, $59, $24, $B4, $1D, $59, $DA, $59, $28, $2E, $2D, $2C, $22, $1D, $A6, $2C, $59, $25, $22, $24, $1E, $59, $E3, $41, $76, $01, $1E, $32, $C7, $1D, $59, $2D, $B0, $2C, $59, $2C, $DF, $26, $29, $59, $25, $22, $1E, $2C, $7E, $73, $D8, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $16, $B5, $9F, $26, $42, $59, $E1, $A6, $1E, $73, $D8, $59, $1F, $25, $22, $29, $29, $A6, $2C, $59, $CE, $D3, $41, $73, $16, $B6, $21, $59, $D8, $26, $42, $59, $C7, $1E, $59, $BD, $32, $59, $2C, $E2, $26, $59, $D8, $7E, $73, $1D, $1E, $1E, $29, $1E, $D3, $59, $1C, $2E, $2B, $2B, $A3, $2C, $59, $8C, $2E, $27, $1C, $28, $2F, $A6, $73, $E1, $91, $D8, $59, $00, $1B, $32, $2C, $2C, $59, $B0, $9D, $41, $73, $01, $2E, $2D, $59, $DA, $59, $1C, $BA, $22, $26, $59, $D8, $26, $42, $59, $E3, $59, $BF, $D3, $7E, $73, $29, $94, $21, $59, $D8, $59, $DF, $32, $59, $A8, $DF, $2B, $1D, $59, $2D, $21, $2B, $28, $2E, $20, $21, $73, $D2, $BE, $59, $28, $2D, $21, $A1, $BE, $93, $2C, $43, $7F
db $E6, $59, $30, $94, $A6, $2C, $59, $C6, $59, $2D, $B0, $2C, $59, $CE, $1A, $25, $26, $59, $1A, $CE, $75, $C2, $59, $24, $B4, $1D, $59, $DA, $59, $28, $2E, $2D, $2C, $22, $1D, $A6, $2C, $59, $25, $22, $24, $1E, $59, $E3, $41, $76, $01, $1E, $32, $C7, $1D, $59, $2D, $B0, $2C, $59, $2C, $DF, $26, $29, $59, $25, $22, $1E, $2C, $7E, $73, $D8, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $16, $B5, $9F, $26, $42, $59, $E1, $A6, $1E, $73, $D8, $59, $1F, $25, $22, $29, $29, $A6, $2C, $59, $CE, $D3, $41, $73, $16, $B6, $21, $59, $D8, $26, $42, $59, $C7, $1E, $59, $BD, $32, $59, $2C, $E2, $26, $59, $D8, $7E, $73, $1D, $1E, $1E, $29, $1E, $D3, $59, $1C, $2E, $2B, $2B, $A3, $2C, $59, $8C, $2E, $27, $1C, $28, $2F, $A6, $73, $E1, $91, $D8, $59, $00, $1B, $32, $2C, $2C, $59, $B0, $9D, $41, $73, $01, $2E, $2D, $59, $DA, $59, $1C, $BA, $22, $26, $59, $D8, $26, $42, $59, $E3, $59, $BF, $D3, $7E, $73, $29, $94, $21, $59, $D8, $59, $DF, $32, $59, $A8, $DF, $2B, $1D, $59, $2D, $21, $2B, $28, $2E, $20, $21, $73, $D2, $BE, $59, $28, $2D, $21, $A1, $BE, $93, $2C, $43, $7F
Message_1AD:
db $0A, $32, $1D, $2B, $28, $20, $59, $DF, $2C, $59, $C7, $1C, $1E, $59, $1A, $59, $21, $A6, $28, $42, $75, $1C, $21, $28, $2C, $A0, $1B, $32, $59, $D8, $59, $0C, $1E, $1A, $9F, $30, $59, $01, $BA, $1D, $1E, $76, $B4, $59, $D8, $59, $0C, $1E, $1A, $9F, $30, $59, $C6, $59, $12, $B1, $9F, $30, $2C, $41, $7E, $73, $01, $2E, $2D, $59, $1A, $26, $1B, $B6, $22, $C7, $59, $1C, $BB, $2E, $1D, $A4, $B0, $2C, $59, $21, $A2, $2D, $42, $73, $8C, $21, $1E, $59, $1F, $1E, $25, $25, $59, $DA, $59, $D8, $59, $DB, $22, $9C, $2C, $59, $C6, $73, $06, $93, $C7, $9F, $2B, $1F, $42, $59, $24, $B3, $C6, $59, $2D, $B0, $A7, $1E, $2C, $41, $7E, $73, $16, $21, $A0, $0A, $32, $1D, $2B, $28, $20, $8B, $1D, $1E, $1E, $1D, $2C, $59, $2D, $2E, $2B, $27, $A4, $DA, $73, $1D, $1A, $2B, $24, $27, $1E, $2C, $2C, $42, $59, $D8, $59, $AC, $1D, $9D, $D0, $2C, $59, $1C, $92, $73, $B0, $26, $59, $B4, $DA, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $43, $7E, $73, $18, $1E, $2D, $59, $A7, $A0, $21, $A6, $1E, $42, $59, $B0, $2C, $59, $21, $2E, $27, $20, $A1, $20, $CE, $30, $42, $73, $8C, $21, $1E, $59, $2B, $28, $D0, $59, $1A, $20, $8F, $42, $59, $27, $28, $59, $BB, $27, $20, $A6, $73, $1A, $59, $21, $A6, $28, $42, $59, $1B, $2E, $2D, $59, $1A, $59, $24, $B3, $C6, $59, $29, $22, $2B, $94, $1E, $2C, $41, $7F
db $0A, $32, $1D, $2B, $28, $20, $59, $DF, $2C, $59, $C7, $1C, $1E, $59, $1A, $59, $21, $A6, $28, $42, $75, $1C, $21, $28, $2C, $A0, $1B, $32, $59, $D8, $59, $0C, $1E, $1A, $9F, $30, $59, $01, $BA, $1D, $1E, $76, $B4, $59, $D8, $59, $0C, $1E, $1A, $9F, $30, $59, $C6, $59, $12, $B1, $9F, $30, $2C, $41, $7E, $73, $01, $2E, $2D, $59, $1A, $26, $1B, $B6, $22, $C7, $59, $1C, $BB, $2E, $1D, $A4, $B0, $2C, $59, $21, $A2, $2D, $42, $73, $8C, $21, $1E, $59, $1F, $1E, $25, $25, $59, $DA, $59, $D8, $59, $DB, $22, $9C, $2C, $59, $C6, $73, $06, $93, $C7, $9F, $2B, $1F, $42, $59, $24, $B3, $C6, $59, $2D, $B0, $A7, $1E, $2C, $41, $7E, $73, $16, $21, $A0, $0A, $32, $1D, $2B, $28, $20, $8B, $1D, $1E, $1E, $1D, $2C, $59, $2D, $2E, $2B, $27, $A4, $DA, $73, $1D, $1A, $2B, $24, $27, $1E, $2C, $2C, $42, $59, $D8, $59, $AC, $1D, $9D, $D0, $2C, $59, $1C, $92, $73, $B0, $26, $59, $B4, $DA, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $43, $7E, $73, $18, $1E, $2D, $59, $A7, $A0, $21, $A6, $1E, $42, $59, $B0, $2C, $59, $21, $2E, $27, $20, $A1, $20, $CE, $30, $42, $73, $8C, $21, $1E, $59, $2B, $28, $D0, $59, $1A, $20, $8F, $42, $59, $27, $28, $59, $BB, $27, $20, $A6, $73, $1A, $59, $21, $A6, $28, $42, $59, $1B, $2E, $2D, $59, $1A, $59, $24, $B3, $C6, $59, $29, $22, $2B, $94, $1E, $2C, $41, $7F
Message_1AE:
db $0E, $21, $42, $59, $E1, $94, $8B, $2D, $B0, $2C, $3F, $59, $00, $59, $2B, $B4, $20, $3F, $59, $08, $75, $1F, $C4, $59, $B6, $59, $DF, $D1, $A4, $DC, $59, $C7, $59, $D8, $76, $00, $1B, $32, $2C, $2C, $1A, $25, $59, $12, $21, $C8, $1E, $41, $7E, $73, $08, $2D, $59, $20, $25, $22, $26, $26, $A6, $2C, $59, $D3, $2B, $93, $20, $1E, $25, $32, $42, $59, $25, $22, $24, $1E, $59, $B6, $73, $21, $28, $25, $1D, $2C, $59, $D2, $BE, $59, $B0, $1D, $1D, $A0, $CB, $A6, $41, $59, $08, $59, $AD, $73, $27, $28, $59, $2E, $D0, $59, $A8, $59, $B6, $42, $59, $1B, $2E, $2D, $59, $E3, $59, $26, $22, $20, $21, $2D, $41, $7E, $73, $13, $1A, $24, $1E, $59, $B6, $59, $DA, $59, $1A, $59, $23, $1E, $E0, $25, $A6, $42, $59, $2D, $21, $A6, $1E, $51, $2C, $73, $C7, $1E, $59, $27, $A2, $59, $D8, $59, $15, $22, $25, $BA, $20, $1E, $59, $C6, $59, $04, $1C, $21, $28, $1E, $2C, $42, $73, $E1, $28, $59, $1A, $29, $29, $2B, $1A, $B5, $1E, $2C, $59, $2C, $2E, $1C, $21, $59, $2D, $CE, $1A, $2C, $2E, $CE, $2C, $41, $7F
db $0E, $21, $42, $59, $E1, $94, $8B, $2D, $B0, $2C, $3F, $59, $00, $59, $2B, $B4, $20, $3F, $59, $08, $75, $1F, $C4, $59, $B6, $59, $DF, $D1, $A4, $DC, $59, $C7, $59, $D8, $76, $00, $1B, $32, $2C, $2C, $1A, $25, $59, $12, $21, $C8, $1E, $41, $7E, $73, $08, $2D, $59, $20, $25, $22, $26, $26, $A6, $2C, $59, $D3, $2B, $93, $20, $1E, $25, $32, $42, $59, $25, $22, $24, $1E, $59, $B6, $73, $21, $28, $25, $1D, $2C, $59, $D2, $BE, $59, $B0, $1D, $1D, $A0, $CB, $A6, $41, $59, $08, $59, $AD, $73, $27, $28, $59, $2E, $D0, $59, $A8, $59, $B6, $42, $59, $1B, $2E, $2D, $59, $E3, $59, $26, $22, $20, $21, $2D, $41, $7E, $73, $13, $1A, $24, $1E, $59, $B6, $59, $DA, $59, $1A, $59, $23, $1E, $E0, $25, $A6, $42, $59, $2D, $21, $A6, $1E, $51, $2C, $73, $C7, $1E, $59, $27, $A2, $59, $D8, $59, $15, $22, $25, $BA, $20, $1E, $59, $C6, $59, $04, $1C, $21, $28, $1E, $2C, $42, $73, $E1, $28, $59, $1A, $29, $29, $2B, $1A, $B5, $1E, $2C, $59, $2C, $2E, $1C, $21, $59, $2D, $CE, $1A, $2C, $2E, $CE, $2C, $41, $7F
Message_1AF:
db $E6, $59, $05, $C8, $2D, $CE, $2C, $2C, $59, $C6, $59, $12, $1E, $1C, $CE, $2D, $2C, $59, $25, $22, $1E, $2C, $75, $1D, $1E, $1E, $29, $59, $30, $B6, $B0, $27, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $42, $59, $D0, $1A, $25, $1E, $1D, $76, $1B, $32, $59, $93, $1C, $22, $A3, $59, $CB, $A6, $41, $7E, $73, $13, $28, $59, $28, $29, $A0, $B6, $2C, $59, $20, $94, $1E, $2C, $42, $59, $E3, $59, $BF, $D3, $73, $2E, $27, $B6, $1E, $59, $D8, $59, $04, $2C, $2C, $A5, $1C, $1E, $2C, $59, $C6, $59, $D8, $73, $13, $2B, $22, $A8, $1C, $1E, $59, $A9, $26, $59, $0A, $1A, $25, $32, $31, $28, $41, $7E, $73, $01, $2E, $2D, $59, $97, $DF, $CE, $42, $59, $A8, $59, $97, $32, $C7, $1D, $59, $D8, $73, $A8, $2D, $CE, $2C, $2C, $59, $25, $22, $1E, $2C, $59, $0A, $32, $1D, $2B, $28, $20, $42, $59, $D8, $73, $1F, $1A, $25, $25, $A0, $21, $A6, $28, $42, $59, $2D, $30, $B5, $2D, $A4, $1B, $32, $59, $20, $CE, $1E, $1D, $41, $7E, $73, $E6, $59, $0C, $92, $A1, $12, $30, $C8, $1D, $59, $B5, $59, $D8, $59, $C7, $25, $32, $73, $1B, $BA, $1D, $1E, $59, $2D, $21, $91, $1C, $93, $59, $1B, $CE, $1A, $24, $59, $B0, $2C, $59, $1C, $2E, $2B, $D0, $42, $73, $32, $1E, $2D, $59, $B6, $59, $CE, $D3, $2C, $59, $20, $2E, $1A, $2B, $1D, $A4, $1B, $32, $59, $DB, $22, $1A, $25, $2C, $42, $73, $D1, $2B, $B4, $1E, $2C, $59, $1B, $2E, $22, $25, $2D, $59, $1B, $32, $59, $D8, $59, $AC, $1D, $9D, $D0, $2C, $41, $7E, $73, $13, $28, $59, $1C, $BA, $22, $26, $59, $B6, $42, $59, $E3, $59, $BF, $D3, $59, $1C, $C7, $2A, $2E, $A6, $73, $1E, $1A, $1C, $21, $59, $1C, $B1, $25, $25, $A5, $20, $1E, $59, $8C, $2D, $21, $A0, $CE, $2D, $2E, $2B, $27, $73, $DA, $59, $E1, $A6, $1E, $59, $B6, $59, $8E, $97, $20, $93, $43, $7F
db $E6, $59, $05, $C8, $2D, $CE, $2C, $2C, $59, $C6, $59, $12, $1E, $1C, $CE, $2D, $2C, $59, $25, $22, $1E, $2C, $75, $1D, $1E, $1E, $29, $59, $30, $B6, $B0, $27, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $42, $59, $D0, $1A, $25, $1E, $1D, $76, $1B, $32, $59, $93, $1C, $22, $A3, $59, $CB, $A6, $41, $7E, $73, $13, $28, $59, $28, $29, $A0, $B6, $2C, $59, $20, $94, $1E, $2C, $42, $59, $E3, $59, $BF, $D3, $73, $2E, $27, $B6, $1E, $59, $D8, $59, $04, $2C, $2C, $A5, $1C, $1E, $2C, $59, $C6, $59, $D8, $73, $13, $2B, $22, $A8, $1C, $1E, $59, $A9, $26, $59, $0A, $1A, $25, $32, $31, $28, $41, $7E, $73, $01, $2E, $2D, $59, $97, $DF, $CE, $42, $59, $A8, $59, $97, $32, $C7, $1D, $59, $D8, $73, $A8, $2D, $CE, $2C, $2C, $59, $25, $22, $1E, $2C, $59, $0A, $32, $1D, $2B, $28, $20, $42, $59, $D8, $73, $1F, $1A, $25, $25, $A0, $21, $A6, $28, $42, $59, $2D, $30, $B5, $2D, $A4, $1B, $32, $59, $20, $CE, $1E, $1D, $41, $7E, $73, $E6, $59, $0C, $92, $A1, $12, $30, $C8, $1D, $59, $B5, $59, $D8, $59, $C7, $25, $32, $73, $1B, $BA, $1D, $1E, $59, $2D, $21, $91, $1C, $93, $59, $1B, $CE, $1A, $24, $59, $B0, $2C, $59, $1C, $2E, $2B, $D0, $42, $73, $32, $1E, $2D, $59, $B6, $59, $CE, $D3, $2C, $59, $20, $2E, $1A, $2B, $1D, $A4, $1B, $32, $59, $DB, $22, $1A, $25, $2C, $42, $73, $D1, $2B, $B4, $1E, $2C, $59, $1B, $2E, $22, $25, $2D, $59, $1B, $32, $59, $D8, $59, $AC, $1D, $9D, $D0, $2C, $41, $7E, $73, $13, $28, $59, $1C, $BA, $22, $26, $59, $B6, $42, $59, $E3, $59, $BF, $D3, $59, $1C, $C7, $2A, $2E, $A6, $73, $1E, $1A, $1C, $21, $59, $1C, $B1, $25, $25, $A5, $20, $1E, $59, $8C, $2D, $21, $A0, $CE, $2D, $2E, $2B, $27, $73, $DA, $59, $E1, $A6, $1E, $59, $B6, $59, $8E, $97, $20, $93, $43, $7F
Message_1B0:
db $E6, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0F, $28, $30, $A6, $3F, $59, $00, $59, $DB, $22, $9C, $32, $75, $29, $BA, $1C, $1E, $42, $59, $2D, $21, $91, $C7, $1E, $41, $59, $E6, $59, $1C, $1A, $2F, $1E, $2C, $76, $8D, $1F, $2E, $25, $25, $59, $C6, $59, $2C, $2E, $2B, $29, $2B, $B5, $1E, $2C, $41, $7E, $73, $E6, $32, $59, $2C, $1A, $32, $59, $D8, $59, $29, $94, $21, $59, $A8, $DF, $2B, $1D, $59, $B5, $73, $B0, $1D, $1D, $A5, $42, $59, $C7, $B9, $2B, $A7, $1E, $1A, $25, $A4, $DA, $59, $2D, $21, $28, $D0, $73, $E2, $25, $25, $B3, $DA, $59, $2D, $1A, $24, $1E, $59, $1A, $59, $25, $1E, $1A, $29, $59, $C6, $59, $1F, $1A, $B6, $21, $41, $7E, $73, $08, $2D, $8B, $C2, $59, $A8, $59, $D8, $59, $1F, $8F, $2D, $59, $C6, $59, $21, $A2, $2D, $41, $73, $E8, $51, $1D, $59, $97, $D3, $59, $DB, $2E, $D3, $59, $E3, $2B, $73, $B4, $D3, $B4, $1C, $2D, $2C, $42, $59, $DB, $1A, $2F, $1E, $25, $A6, $41, $7F
db $E6, $59, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0F, $28, $30, $A6, $3F, $59, $00, $59, $DB, $22, $9C, $32, $75, $29, $BA, $1C, $1E, $42, $59, $2D, $21, $91, $C7, $1E, $41, $59, $E6, $59, $1C, $1A, $2F, $1E, $2C, $76, $8D, $1F, $2E, $25, $25, $59, $C6, $59, $2C, $2E, $2B, $29, $2B, $B5, $1E, $2C, $41, $7E, $73, $E6, $32, $59, $2C, $1A, $32, $59, $D8, $59, $29, $94, $21, $59, $A8, $DF, $2B, $1D, $59, $B5, $73, $B0, $1D, $1D, $A5, $42, $59, $C7, $B9, $2B, $A7, $1E, $1A, $25, $A4, $DA, $59, $2D, $21, $28, $D0, $73, $E2, $25, $25, $B3, $DA, $59, $2D, $1A, $24, $1E, $59, $1A, $59, $25, $1E, $1A, $29, $59, $C6, $59, $1F, $1A, $B6, $21, $41, $7E, $73, $08, $2D, $8B, $C2, $59, $A8, $59, $D8, $59, $1F, $8F, $2D, $59, $C6, $59, $21, $A2, $2D, $41, $73, $E8, $51, $1D, $59, $97, $D3, $59, $DB, $2E, $D3, $59, $E3, $2B, $73, $B4, $D3, $B4, $1C, $2D, $2C, $42, $59, $DB, $1A, $2F, $1E, $25, $A6, $41, $7F
Message_1B1:
db $0C, $26, $26, $42, $59, $D8, $59, $2C, $BE, $25, $25, $59, $C6, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $3E, $75, $0D, $28, $2D, $B0, $27, $20, $59, $1F, $2E, $1E, $25, $2C, $59, $1A, $59, $06, $C8, $C7, $59, $25, $22, $24, $1E, $76, $2D, $21, $28, $D0, $59, $21, $A2, $2D, $32, $59, $1C, $21, $2E, $27, $24, $2C, $59, $C6, $59, $D3, $C7, $1E, $41, $7E, $73, $E8, $51, $25, $25, $59, $1F, $B4, $1D, $59, $D8, $26, $59, $2C, $1C, $94, $2D, $A6, $1E, $1D, $73, $1A, $2B, $C4, $59, $21, $A6, $1E, $42, $59, $1B, $2E, $2D, $59, $25, $22, $1F, $2D, $B3, $D8, $26, $3F, $73, $13, $21, $94, $8B, $93, $28, $2D, $21, $A1, $26, $94, $2D, $A6, $41, $7E, $73, $0E, $27, $B9, $D2, $BE, $C7, $1E, $59, $30, $B6, $21, $59, $CE, $1A, $25, $59, $CB, $A6, $73, $1C, $28, $2E, $25, $1D, $59, $26, $28, $2F, $1E, $59, $2D, $21, $28, $D0, $59, $97, $1A, $2E, $2D, $22, $1E, $2C, $41, $59, $06, $28, $2D, $73, $1A, $59, $0F, $28, $30, $A1, $06, $BB, $2F, $1E, $59, $21, $90, $32, $3F, $7F
db $0C, $26, $26, $42, $59, $D8, $59, $2C, $BE, $25, $25, $59, $C6, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $3E, $75, $0D, $28, $2D, $B0, $27, $20, $59, $1F, $2E, $1E, $25, $2C, $59, $1A, $59, $06, $C8, $C7, $59, $25, $22, $24, $1E, $76, $2D, $21, $28, $D0, $59, $21, $A2, $2D, $32, $59, $1C, $21, $2E, $27, $24, $2C, $59, $C6, $59, $D3, $C7, $1E, $41, $7E, $73, $E8, $51, $25, $25, $59, $1F, $B4, $1D, $59, $D8, $26, $59, $2C, $1C, $94, $2D, $A6, $1E, $1D, $73, $1A, $2B, $C4, $59, $21, $A6, $1E, $42, $59, $1B, $2E, $2D, $59, $25, $22, $1F, $2D, $B3, $D8, $26, $3F, $73, $13, $21, $94, $8B, $93, $28, $2D, $21, $A1, $26, $94, $2D, $A6, $41, $7E, $73, $0E, $27, $B9, $D2, $BE, $C7, $1E, $59, $30, $B6, $21, $59, $CE, $1A, $25, $59, $CB, $A6, $73, $1C, $28, $2E, $25, $1D, $59, $26, $28, $2F, $1E, $59, $2D, $21, $28, $D0, $59, $97, $1A, $2E, $2D, $22, $1E, $2C, $41, $59, $06, $28, $2D, $73, $1A, $59, $0F, $28, $30, $A1, $06, $BB, $2F, $1E, $59, $21, $90, $32, $3F, $7F
Message_1B2:
db $E8, $59, $29, $25, $93, $27, $B3, $DA, $59, $21, $1E, $1A, $1D, $59, $B4, $DA, $59, $D8, $75, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0F, $28, $30, $A6, $3F, $76, $07, $1E, $21, $42, $59, $AC, $28, $1D, $59, $25, $2E, $9C, $3E, $7E, $73, $E6, $59, $1F, $BB, $C8, $2C, $59, $9F, $27, $2D, $59, $1A, $25, $DF, $32, $2C, $59, $D0, $1E, $26, $41, $41, $41, $73, $CE, $1A, $25, $42, $59, $22, $1F, $59, $E3, $59, $1C, $94, $1C, $21, $59, $26, $32, $59, $1D, $2B, $22, $1F, $2D, $41, $73, $00, $27, $1D, $59, $2D, $21, $28, $D0, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $3F, $59, $7E, $73, $07, $1E, $1A, $2F, $32, $59, $1A, $2C, $59, $98, $2E, $25, $1D, $A6, $2C, $41, $59, $16, $B6, $21, $C5, $D8, $73, $0F, $28, $30, $A1, $06, $BB, $2F, $1E, $42, $59, $E3, $CD, $C5, $C6, $59, $25, $2E, $9C, $41, $7F
db $E8, $59, $29, $25, $93, $27, $B3, $DA, $59, $21, $1E, $1A, $1D, $59, $B4, $DA, $59, $D8, $75, $12, $21, $2B, $B4, $1E, $59, $C6, $59, $0F, $28, $30, $A6, $3F, $76, $07, $1E, $21, $42, $59, $AC, $28, $1D, $59, $25, $2E, $9C, $3E, $7E, $73, $E6, $59, $1F, $BB, $C8, $2C, $59, $9F, $27, $2D, $59, $1A, $25, $DF, $32, $2C, $59, $D0, $1E, $26, $41, $41, $41, $73, $CE, $1A, $25, $42, $59, $22, $1F, $59, $E3, $59, $1C, $94, $1C, $21, $59, $26, $32, $59, $1D, $2B, $22, $1F, $2D, $41, $73, $00, $27, $1D, $59, $2D, $21, $28, $D0, $59, $11, $28, $9C, $59, $12, $22, $2B, $BB, $B4, $2C, $3F, $59, $7E, $73, $07, $1E, $1A, $2F, $32, $59, $1A, $2C, $59, $98, $2E, $25, $1D, $A6, $2C, $41, $59, $16, $B6, $21, $C5, $D8, $73, $0F, $28, $30, $A1, $06, $BB, $2F, $1E, $42, $59, $E3, $CD, $C5, $C6, $59, $25, $2E, $9C, $41, $7F
Message_1B3:
db $0E, $21, $28, $40, $21, $28, $3E, $59, $16, $1E, $25, $25, $42, $59, $BB, $28, $24, $59, $E1, $28, $59, $D3, $2E, $26, $95, $1D, $75, $B4, $DA, $59, $26, $32, $59, $03, $CE, $1A, $26, $59, $07, $2E, $2D, $3E, $59, $02, $21, $1E, $9C, $B4, $20, $76, $C5, $D8, $59, $04, $C7, $59, $00, $1B, $32, $2C, $2C, $42, $59, $8D, $E0, $3F, $7E, $73, $08, $51, $26, $59, $0C, $1A, $CA, $42, $59, $32, $1E, $2C, $42, $59, $2D, $21, $91, $0C, $1A, $CA, $3E, $73, $16, $1E, $51, $2F, $1E, $59, $1C, $2B, $28, $2C, $2C, $A4, $29, $94, $21, $2C, $59, $97, $A8, $1E, $59, $B4, $73, $07, $28, $BB, $1D, $2B, $2E, $26, $43, $59, $C8, $59, $DF, $2C, $59, $B6, $59, $0B, $1A, $1B, $2B, $32, $27, $27, $1A, $3F, $7E, $73, $07, $1E, $21, $42, $59, $E3, $59, $30, $A6, $1E, $59, $1A, $59, $1B, $B6, $59, $C6, $59, $1A, $59, $29, $1E, $D3, $73, $C7, $59, $26, $32, $59, $1B, $2B, $28, $28, $26, $59, $2B, $28, $2E, $2D, $1E, $42, $59, $1B, $2E, $2D, $59, $08, $59, $D0, $1E, $73, $E3, $2F, $1E, $59, $9B, $1E, $59, $1A, $59, $BB, $27, $20, $59, $DF, $32, $3E, $7E, $73, $44, $59, $0B, $C7, $20, $59, $2D, $22, $BE, $59, $27, $28, $59, $D0, $1E, $42, $59, $0C, $1A, $CA, $3E, $73, $89, $16, $21, $91, $B5, $59, $2D, $B0, $2C, $59, $29, $BA, $1C, $1E, $3F, $73, $89, $08, $51, $25, $25, $59, $9B, $1E, $59, $96, $9C, $59, $25, $94, $A6, $41, $71, $7F
db $0E, $21, $28, $40, $21, $28, $3E, $59, $16, $1E, $25, $25, $42, $59, $BB, $28, $24, $59, $E1, $28, $59, $D3, $2E, $26, $95, $1D, $75, $B4, $DA, $59, $26, $32, $59, $03, $CE, $1A, $26, $59, $07, $2E, $2D, $3E, $59, $02, $21, $1E, $9C, $B4, $20, $76, $C5, $D8, $59, $04, $C7, $59, $00, $1B, $32, $2C, $2C, $42, $59, $8D, $E0, $3F, $7E, $73, $08, $51, $26, $59, $0C, $1A, $CA, $42, $59, $32, $1E, $2C, $42, $59, $2D, $21, $91, $0C, $1A, $CA, $3E, $73, $16, $1E, $51, $2F, $1E, $59, $1C, $2B, $28, $2C, $2C, $A4, $29, $94, $21, $2C, $59, $97, $A8, $1E, $59, $B4, $73, $07, $28, $BB, $1D, $2B, $2E, $26, $43, $59, $C8, $59, $DF, $2C, $59, $B6, $59, $0B, $1A, $1B, $2B, $32, $27, $27, $1A, $3F, $7E, $73, $07, $1E, $21, $42, $59, $E3, $59, $30, $A6, $1E, $59, $1A, $59, $1B, $B6, $59, $C6, $59, $1A, $59, $29, $1E, $D3, $73, $C7, $59, $26, $32, $59, $1B, $2B, $28, $28, $26, $59, $2B, $28, $2E, $2D, $1E, $42, $59, $1B, $2E, $2D, $59, $08, $59, $D0, $1E, $73, $E3, $2F, $1E, $59, $9B, $1E, $59, $1A, $59, $BB, $27, $20, $59, $DF, $32, $3E, $7E, $73, $44, $59, $0B, $C7, $20, $59, $2D, $22, $BE, $59, $27, $28, $59, $D0, $1E, $42, $59, $0C, $1A, $CA, $3E, $73, $89, $16, $21, $91, $B5, $59, $2D, $B0, $2C, $59, $29, $BA, $1C, $1E, $3F, $73, $89, $08, $51, $25, $25, $59, $9B, $1E, $59, $96, $9C, $59, $25, $94, $A6, $41, $71, $7F
Message_1B4:
db $07, $1A, $3E, $59, $E8, $59, $9F, $59, $CE, $BE, $26, $97, $2B, $59, $BE, $3E, $75, $06, $2E, $1E, $2C, $2C, $59, $8E, $2D, $21, $91, $1C, $AE, $B3, $1A, $2B, $C4, $76, $25, $1E, $1F, $2D, $59, $93, $59, $22, $26, $29, $CE, $2C, $2C, $22, $C7, $41, $7E, $73, $0D, $28, $30, $59, $08, $51, $2F, $1E, $59, $D0, $2D, $59, $DC, $59, $D1, $28, $29, $59, $21, $A6, $1E, $42, $73, $9E, $2F, $B3, $B4, $DA, $59, $1D, $CE, $1A, $26, $2C, $59, $B4, $D3, $1E, $1A, $1D, $73, $C6, $59, $1C, $2B, $1A, $2C, $B0, $27, $20, $59, $1B, $2B, $28, $28, $26, $2C, $41, $7E, $73, $05, $1E, $1E, $25, $59, $1F, $CE, $1E, $59, $DA, $59, $25, $1E, $2D, $59, $BE, $59, $29, $28, $24, $1E, $73, $1A, $2B, $C4, $59, $B4, $59, $E3, $2B, $59, $26, $B4, $1D, $43, $73, $B6, $59, $1C, $28, $2E, $25, $1D, $59, $97, $59, $1F, $2E, $27, $3E, $7E, $73, $44, $59, $12, $2E, $CE, $42, $59, $D1, $28, $30, $59, $BE, $59, $1A, $59, $1D, $CE, $1A, $26, $41, $73, $89, $07, $28, $30, $59, $9F, $1E, $2C, $59, $2D, $B0, $2C, $59, $30, $C8, $24, $3F, $73, $89, $0C, $1A, $32, $97, $59, $D2, $BE, $59, $28, $2D, $21, $A1, $2D, $22, $BE, $41, $71, $7F
db $07, $1A, $3E, $59, $E8, $59, $9F, $59, $CE, $BE, $26, $97, $2B, $59, $BE, $3E, $75, $06, $2E, $1E, $2C, $2C, $59, $8E, $2D, $21, $91, $1C, $AE, $B3, $1A, $2B, $C4, $76, $25, $1E, $1F, $2D, $59, $93, $59, $22, $26, $29, $CE, $2C, $2C, $22, $C7, $41, $7E, $73, $0D, $28, $30, $59, $08, $51, $2F, $1E, $59, $D0, $2D, $59, $DC, $59, $D1, $28, $29, $59, $21, $A6, $1E, $42, $73, $9E, $2F, $B3, $B4, $DA, $59, $1D, $CE, $1A, $26, $2C, $59, $B4, $D3, $1E, $1A, $1D, $73, $C6, $59, $1C, $2B, $1A, $2C, $B0, $27, $20, $59, $1B, $2B, $28, $28, $26, $2C, $41, $7E, $73, $05, $1E, $1E, $25, $59, $1F, $CE, $1E, $59, $DA, $59, $25, $1E, $2D, $59, $BE, $59, $29, $28, $24, $1E, $73, $1A, $2B, $C4, $59, $B4, $59, $E3, $2B, $59, $26, $B4, $1D, $43, $73, $B6, $59, $1C, $28, $2E, $25, $1D, $59, $97, $59, $1F, $2E, $27, $3E, $7E, $73, $44, $59, $12, $2E, $CE, $42, $59, $D1, $28, $30, $59, $BE, $59, $1A, $59, $1D, $CE, $1A, $26, $41, $73, $89, $07, $28, $30, $59, $9F, $1E, $2C, $59, $2D, $B0, $2C, $59, $30, $C8, $24, $3F, $73, $89, $0C, $1A, $32, $97, $59, $D2, $BE, $59, $28, $2D, $21, $A1, $2D, $22, $BE, $41, $71, $7F
Message_1B5:
db $13, $B0, $2C, $59, $25, $B6, $2D, $25, $1E, $59, $B1, $2F, $A5, $3F, $59, $08, $59, $1C, $8E, $B6, $59, $26, $32, $75, $03, $CE, $1A, $26, $59, $07, $2E, $2D, $43, $59, $C2, $59, $2C, $DC, $A1, $C8, $22, $20, $B4, $1A, $25, $42, $76, $1B, $2E, $2D, $59, $B6, $59, $AB, $2C, $59, $D8, $59, $29, $28, $B4, $2D, $59, $1A, $1C, $2B, $28, $2C, $2C, $41, $7E, $73, $07, $A6, $1E, $42, $59, $08, $59, $2D, $2E, $20, $59, $91, $D8, $59, $1E, $1D, $20, $1E, $2C, $59, $C6, $73, $E3, $2B, $59, $26, $B4, $1D, $42, $59, $2C, $29, $B4, $27, $B3, $1D, $CE, $1A, $26, $2C, $59, $2D, $21, $94, $73, $26, $B2, $2B, $A7, $1E, $1A, $25, $59, $D2, $BE, $2D, $B0, $27, $20, $59, $2E, $D0, $1F, $2E, $25, $41, $7E, $73, $09, $2E, $D3, $59, $97, $DF, $CE, $40, $D8, $59, $04, $C7, $59, $00, $1B, $32, $2C, $2C, $73, $2D, $1A, $24, $1E, $2C, $59, $B6, $2C, $59, $DA, $25, $25, $42, $59, $A7, $A0, $B4, $59, $2C, $25, $1E, $1E, $29, $41, $73, $16, $1E, $22, $2B, $1D, $59, $D3, $2E, $1F, $1F, $59, $B1, $29, $29, $A5, $2C, $59, $21, $A6, $1E, $41, $7F
db $13, $B0, $2C, $59, $25, $B6, $2D, $25, $1E, $59, $B1, $2F, $A5, $3F, $59, $08, $59, $1C, $8E, $B6, $59, $26, $32, $75, $03, $CE, $1A, $26, $59, $07, $2E, $2D, $43, $59, $C2, $59, $2C, $DC, $A1, $C8, $22, $20, $B4, $1A, $25, $42, $76, $1B, $2E, $2D, $59, $B6, $59, $AB, $2C, $59, $D8, $59, $29, $28, $B4, $2D, $59, $1A, $1C, $2B, $28, $2C, $2C, $41, $7E, $73, $07, $A6, $1E, $42, $59, $08, $59, $2D, $2E, $20, $59, $91, $D8, $59, $1E, $1D, $20, $1E, $2C, $59, $C6, $73, $E3, $2B, $59, $26, $B4, $1D, $42, $59, $2C, $29, $B4, $27, $B3, $1D, $CE, $1A, $26, $2C, $59, $2D, $21, $94, $73, $26, $B2, $2B, $A7, $1E, $1A, $25, $59, $D2, $BE, $2D, $B0, $27, $20, $59, $2E, $D0, $1F, $2E, $25, $41, $7E, $73, $09, $2E, $D3, $59, $97, $DF, $CE, $40, $D8, $59, $04, $C7, $59, $00, $1B, $32, $2C, $2C, $73, $2D, $1A, $24, $1E, $2C, $59, $B6, $2C, $59, $DA, $25, $25, $42, $59, $A7, $A0, $B4, $59, $2C, $25, $1E, $1E, $29, $41, $73, $16, $1E, $22, $2B, $1D, $59, $D3, $2E, $1F, $1F, $59, $B1, $29, $29, $A5, $2C, $59, $21, $A6, $1E, $41, $7F
Message_1B6:
db $0E, $28, $21, $42, $59, $08, $59, $1C, $93, $59, $2C, $A5, $D0, $59, $B6, $43, $75, $2D, $21, $91, $29, $A5, $1D, $93, $2D, $59, $E3, $59, $AD, $59, $2D, $21, $A6, $1E, $41, $76, $0F, $A6, $1F, $1E, $1C, $2D, $59, $A8, $59, $1D, $CE, $1A, $26, $40, $E0, $1A, $2F, $B4, $20, $3E, $7E, $73, $02, $BB, $D0, $59, $2D, $21, $28, $D0, $59, $1E, $32, $1E, $2C, $42, $59, $07, $A6, $28, $41, $59, $0B, $1E, $2D, $51, $2C, $73, $D0, $1E, $59, $E1, $91, $D0, $1C, $CE, $2D, $2C, $59, $8D, $25, $2E, $2B, $24, $B3, $B4, $73, $2D, $21, $91, $27, $28, $20, $20, $B4, $59, $C6, $59, $E3, $2B, $2C, $41, $7F
db $0E, $28, $21, $42, $59, $08, $59, $1C, $93, $59, $2C, $A5, $D0, $59, $B6, $43, $75, $2D, $21, $91, $29, $A5, $1D, $93, $2D, $59, $E3, $59, $AD, $59, $2D, $21, $A6, $1E, $41, $76, $0F, $A6, $1F, $1E, $1C, $2D, $59, $A8, $59, $1D, $CE, $1A, $26, $40, $E0, $1A, $2F, $B4, $20, $3E, $7E, $73, $02, $BB, $D0, $59, $2D, $21, $28, $D0, $59, $1E, $32, $1E, $2C, $42, $59, $07, $A6, $28, $41, $59, $0B, $1E, $2D, $51, $2C, $73, $D0, $1E, $59, $E1, $91, $D0, $1C, $CE, $2D, $2C, $59, $8D, $25, $2E, $2B, $24, $B3, $B4, $73, $2D, $21, $91, $27, $28, $20, $20, $B4, $59, $C6, $59, $E3, $2B, $2C, $41, $7F
Message_1B7:
db $07, $2E, $21, $42, $59, $27, $28, $59, $2C, $29, $1A, $2B, $24, $59, $B4, $59, $2C, $22, $20, $21, $2D, $41, $75, $0D, $28, $59, $0F, $A5, $1D, $93, $2D, $42, $59, $27, $28, $59, $1D, $CE, $1A, $26, $42, $59, $2C, $C8, $2B, $32, $3E, $76, $01, $2E, $2D, $59, $21, $1E, $32, $42, $59, $2B, $28, $1A, $26, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $59, $1A, $59, $1B, $B6, $41, $7E, $73, $08, $51, $26, $59, $2C, $2E, $CD, $E3, $51, $25, $25, $59, $2C, $1C, $2B, $28, $2E, $27, $20, $1E, $59, $C7, $1E, $59, $DC, $73, $A7, $A3, $2E, $1A, $25, $25, $32, $43, $59, $00, $27, $1D, $59, $E1, $A0, $E3, $59, $9F, $42, $73, $08, $51, $25, $25, $59, $97, $59, $21, $A6, $1E, $42, $59, $DF, $B6, $B4, $20, $41, $7F
db $07, $2E, $21, $42, $59, $27, $28, $59, $2C, $29, $1A, $2B, $24, $59, $B4, $59, $2C, $22, $20, $21, $2D, $41, $75, $0D, $28, $59, $0F, $A5, $1D, $93, $2D, $42, $59, $27, $28, $59, $1D, $CE, $1A, $26, $42, $59, $2C, $C8, $2B, $32, $3E, $76, $01, $2E, $2D, $59, $21, $1E, $32, $42, $59, $2B, $28, $1A, $26, $59, $D8, $59, $00, $1B, $32, $2C, $2C, $59, $1A, $59, $1B, $B6, $41, $7E, $73, $08, $51, $26, $59, $2C, $2E, $CD, $E3, $51, $25, $25, $59, $2C, $1C, $2B, $28, $2E, $27, $20, $1E, $59, $C7, $1E, $59, $DC, $73, $A7, $A3, $2E, $1A, $25, $25, $32, $43, $59, $00, $27, $1D, $59, $E1, $A0, $E3, $59, $9F, $42, $73, $08, $51, $25, $25, $59, $97, $59, $21, $A6, $1E, $42, $59, $DF, $B6, $B4, $20, $41, $7F
Message_1B8:
db $0E, $21, $28, $3E, $59, $02, $2E, $2B, $22, $28, $2E, $2C, $59, $1A, $98, $2E, $2D, $59, $26, $32, $59, $25, $B6, $2D, $25, $1E, $75, $1D, $CE, $1A, $26, $40, $E0, $1A, $2F, $B3, $1A, $1C, $2D, $42, $59, $8D, $E0, $3F, $76, $0B, $B5, $2D, $A0, $1C, $BB, $D0, $42, $59, $07, $A6, $28, $41, $7E, $73, $12, $1E, $1E, $42, $59, $B4, $59, $D8, $59, $04, $C7, $59, $00, $1B, $32, $2C, $2C, $42, $59, $2D, $21, $A6, $1E, $73, $8D, $2D, $21, $CE, $1E, $59, $29, $A5, $1D, $93, $2D, $2C, $42, $59, $1A, $2B, $2D, $22, $1F, $1A, $1C, $2D, $2C, $73, $25, $1E, $1F, $2D, $59, $97, $B0, $27, $1D, $59, $1B, $32, $59, $D8, $59, $06, $28, $1D, $9D, $D0, $2C, $41, $7E, $73, $16, $21, $A0, $E3, $59, $20, $94, $21, $A1, $1E, $1A, $1C, $21, $59, $29, $A5, $1D, $93, $2D, $42, $73, $D8, $32, $59, $CE, $2C, $C7, $94, $1E, $59, $30, $B6, $21, $59, $E3, $2B, $59, $2C, $29, $22, $2B, $B6, $42, $73, $B4, $2F, $28, $24, $B3, $1D, $CE, $1A, $26, $2C, $59, $C6, $59, $D8, $59, $29, $92, $43, $7E, $73, $13, $21, $94, $8B, $E1, $A6, $1E, $59, $08, $59, $9B, $1E, $59, $B4, $42, $59, $21, $1E, $25, $29, $B4, $20, $73, $DA, $59, $27, $1A, $2F, $22, $20, $94, $1E, $59, $D8, $59, $1D, $CE, $1A, $26, $2C, $59, $90, $73, $2B, $A7, $1E, $1A, $25, $59, $D0, $1C, $CE, $2D, $2C, $59, $C6, $59, $D8, $59, $29, $92, $41, $7E, $73, $01, $2E, $2D, $59, $D8, $59, $20, $2B, $8C, $29, $2B, $22, $33, $1E, $3F, $59, $0E, $27, $1C, $1E, $73, $E3, $51, $2F, $1E, $59, $CC, $2F, $A0, $E3, $2B, $D0, $25, $1F, $42, $73, $D8, $59, $0C, $92, $A1, $12, $30, $C8, $1D, $59, $1A, $DF, $B6, $2C, $41, $7E, $73, $13, $21, $91, $1B, $BA, $1D, $1E, $8B, $B0, $1D, $1D, $A0, $1D, $1E, $1E, $29, $59, $B4, $59, $D8, $73, $00, $1B, $32, $2C, $2C, $42, $59, $8C, $C7, $B9, $D8, $59, $C7, $1E, $59, $30, $B6, $21, $73, $D8, $59, $29, $A5, $1D, $93, $2D, $2C, $59, $1C, $93, $59, $1A, $DF, $24, $A0, $B6, $41, $7E, $73, $12, $28, $42, $59, $2D, $B0, $27, $24, $59, $C6, $59, $D8, $D0, $59, $25, $B6, $2D, $25, $1E, $59, $1D, $CE, $1A, $26, $2C, $73, $1A, $2C, $59, $D3, $1E, $29, $29, $B3, $D3, $C7, $1E, $2C, $59, $DA, $59, $E3, $2B, $73, $9D, $2D, $B4, $32, $3E, $7F
db $FF ; end of message pointers checks
db $0E, $21, $28, $3E, $59, $02, $2E, $2B, $22, $28, $2E, $2C, $59, $1A, $98, $2E, $2D, $59, $26, $32, $59, $25, $B6, $2D, $25, $1E, $75, $1D, $CE, $1A, $26, $40, $E0, $1A, $2F, $B3, $1A, $1C, $2D, $42, $59, $8D, $E0, $3F, $76, $0B, $B5, $2D, $A0, $1C, $BB, $D0, $42, $59, $07, $A6, $28, $41, $7E, $73, $12, $1E, $1E, $42, $59, $B4, $59, $D8, $59, $04, $C7, $59, $00, $1B, $32, $2C, $2C, $42, $59, $2D, $21, $A6, $1E, $73, $8D, $2D, $21, $CE, $1E, $59, $29, $A5, $1D, $93, $2D, $2C, $42, $59, $1A, $2B, $2D, $22, $1F, $1A, $1C, $2D, $2C, $73, $25, $1E, $1F, $2D, $59, $97, $B0, $27, $1D, $59, $1B, $32, $59, $D8, $59, $06, $28, $1D, $9D, $D0, $2C, $41, $7E, $73, $16, $21, $A0, $E3, $59, $20, $94, $21, $A1, $1E, $1A, $1C, $21, $59, $29, $A5, $1D, $93, $2D, $42, $73, $D8, $32, $59, $CE, $2C, $C7, $94, $1E, $59, $30, $B6, $21, $59, $E3, $2B, $59, $2C, $29, $22, $2B, $B6, $42, $73, $B4, $2F, $28, $24, $B3, $1D, $CE, $1A, $26, $2C, $59, $C6, $59, $D8, $59, $29, $92, $43, $7E, $73, $13, $21, $94, $8B, $E1, $A6, $1E, $59, $08, $59, $9B, $1E, $59, $B4, $42, $59, $21, $1E, $25, $29, $B4, $20, $73, $DA, $59, $27, $1A, $2F, $22, $20, $94, $1E, $59, $D8, $59, $1D, $CE, $1A, $26, $2C, $59, $90, $73, $2B, $A7, $1E, $1A, $25, $59, $D0, $1C, $CE, $2D, $2C, $59, $C6, $59, $D8, $59, $29, $92, $41, $7E, $73, $01, $2E, $2D, $59, $D8, $59, $20, $2B, $8C, $29, $2B, $22, $33, $1E, $3F, $59, $0E, $27, $1C, $1E, $73, $E3, $51, $2F, $1E, $59, $CC, $2F, $A0, $E3, $2B, $D0, $25, $1F, $42, $73, $D8, $59, $0C, $92, $A1, $12, $30, $C8, $1D, $59, $1A, $DF, $B6, $2C, $41, $7E, $73, $13, $21, $91, $1B, $BA, $1D, $1E, $8B, $B0, $1D, $1D, $A0, $1D, $1E, $1E, $29, $59, $B4, $59, $D8, $73, $00, $1B, $32, $2C, $2C, $42, $59, $8C, $C7, $B9, $D8, $59, $C7, $1E, $59, $30, $B6, $21, $73, $D8, $59, $29, $A5, $1D, $93, $2D, $2C, $59, $1C, $93, $59, $1A, $DF, $24, $A0, $B6, $41, $7E, $73, $12, $28, $42, $59, $2D, $B0, $27, $24, $59, $C6, $59, $D8, $D0, $59, $25, $B6, $2D, $25, $1E, $59, $1D, $CE, $1A, $26, $2C, $73, $1A, $2C, $59, $D3, $1E, $29, $29, $B3, $D3, $C7, $1E, $2C, $59, $DA, $59, $E3, $2B, $73, $9D, $2D, $B4, $32, $3E, $7F
Message_1B9:
db $0C, $32, $59, $1D, $1E, $1E, $29, $1E, $D3, $59, $20, $2B, $94, $B6, $2E, $1D, $1E, $42, $59, $21, $A6, $28, $41, $75, $01, $1E, $1C, $1A, $2E, $D0, $59, $C6, $59, $E3, $2B, $59, $2F, $1A, $BB, $2B, $42, $76, $13, $1A, $22, $25, $59, $0F, $1A, $BA, $1C, $1E, $59, $2C, $B0, $27, $1E, $2C, $59, $C7, $1C, $1E, $59, $26, $C8, $1E, $41, $7E, $73, $16, $1E, $59, $03, $1E, $24, $2E, $59, $28, $E0, $59, $E3, $59, $1A, $59, $1D, $1E, $1B, $2D, $28, $2E, $2B, $73, $21, $28, $BE, $59, $DF, $2C, $59, $B4, $59, $2D, $2E, $2B, $26, $28, $22, $25, $59, $1A, $1F, $2D, $A6, $73, $0A, $32, $1D, $2B, $28, $20, $8B, $BE, $1D, $1D, $25, $B4, $20, $41, $7E, $73, $01, $2E, $2D, $59, $30, $B6, $21, $59, $D8, $59, $0C, $28, $25, $9F, $2B, $26, $59, $1C, $1A, $25, $BE, $1D, $42, $73, $29, $1E, $1A, $1C, $1E, $59, $CE, $2D, $2E, $2B, $27, $2C, $59, $DA, $59, $28, $2E, $2B, $59, $B1, $25, $25, $2C, $42, $73, $2D, $21, $93, $24, $2C, $59, $DA, $59, $E3, $3E, $7F
Message_1BA:
db $00, $21, $42, $59, $E3, $59, $29, $25, $93, $59, $DA, $59, $21, $1E, $1A, $1D, $59, $C7, $DF, $2B, $1D, $42, $75, $32, $1E, $2C, $3F, $59, $E6, $59, $27, $1E, $31, $2D, $59, $2D, $21, $CE, $91, $BB, $28, $26, $2C, $76, $B4, $59, $0A, $1A, $25, $32, $31, $28, $59, $02, $92, $25, $1E, $41, $7E, $73, $08, $51, $2F, $1E, $59, $2D, $1A, $24, $A0, $D8, $59, $25, $22, $97, $2B, $2D, $32, $59, $C6, $73, $BD, $2B, $24, $B3, $D8, $59, $1C, $92, $25, $1E, $59, $C7, $59, $E3, $2B, $59, $BD, $29, $41, $73, $01, $1E, $DF, $CE, $59, $B6, $2C, $59, $2C, $B1, $9F, $30, $2C, $59, $2B, $2E, $27, $59, $1D, $1E, $1E, $29, $41, $7E, $73, $12, $1E, $1E, $24, $59, $D8, $59, $0C, $1E, $1A, $9F, $30, $59, $01, $BA, $1D, $1E, $59, $2D, $21, $A6, $1E, $42, $73, $25, $1E, $20, $A5, $1D, $2C, $59, $2C, $1A, $32, $59, $B6, $59, $21, $28, $25, $1D, $2C, $59, $CB, $A1, $1F, $B6, $73, $A8, $59, $E3, $2B, $59, $2A, $2E, $1E, $D3, $41, $7F
Message_1BB:
db $00, $21, $28, $32, $42, $59, $26, $94, $1E, $32, $3E, $59, $E8, $51, $CD, $BB, $28, $24, $B4, $51, $75, $A8, $59, $D8, $59, $0F, $22, $2B, $94, $1E, $59, $0A, $B4, $20, $42, $59, $1E, $21, $3F, $76, $16, $1E, $25, $25, $42, $59, $08, $59, $1C, $93, $51, $2D, $59, $21, $1E, $25, $29, $59, $E3, $59, $2D, $21, $A6, $1E, $41, $7E, $73, $01, $2E, $2D, $59, $08, $59, $1C, $93, $59, $2D, $1E, $25, $25, $59, $E3, $59, $2D, $B0, $2C, $59, $D8, $73, $0F, $22, $2B, $94, $1E, $59, $0A, $B3, $B1, $1D, $59, $93, $59, $28, $25, $1D, $59, $2C, $B0, $29, $42, $73, $21, $A6, $1E, $59, $B4, $59, $D8, $59, $1A, $1B, $32, $2C, $2C, $59, $D2, $BE, $E1, $A6, $1E, $41, $7E, $73, $08, $1F, $59, $E3, $51, $CD, $BB, $28, $24, $B4, $51, $59, $DA, $59, $1F, $B4, $1D, $59, $B0, $26, $42, $73, $2D, $21, $94, $8B, $1A, $59, $AC, $28, $1D, $59, $29, $BA, $1C, $1E, $59, $DA, $59, $D3, $1A, $2B, $2D, $41, $7F
db $FF ; end of message pointers checks
print "End of expanded dialogue ", pc

View File

@@ -1,4 +1,4 @@
* Oracle of Secrets Non-Vanilla Dialogue
* Oracle of Secrets English Dialogue
** 0F - Skeleton Guard
Press L or R in your menu to
[2]see the status of your quest
@@ -416,6 +416,7 @@ Today, I have a very special
[V] What will you do?
[V] > Give him 850 Rupees
[V] Never give him anything[CH2I]
** 83 - Pendant of Power
You got the Pendant Of Power!
[2]Your newfounded abilities will
@@ -1841,3 +1842,35 @@ Oho! Curious about my little
[V]So, think of these little dreams
[V]as stepping stones to your
[V]destiny!
** 1B9 - Deku NPC
My deepest gratitude, hero.
[2]Because of your valor,
[3]Tail Palace shines once more.[K]
[V]We Deku owe you a debt—our
[V]home was in turmoil after
[V]Kydrog's meddling.[K]
[V]But with the Moldorm calmed,
[V]peace returns to our halls,
[V]thanks to you!
** 1BA - Deku NPC 2
Ah, you plan to head onward,
[2]yes? The next threat looms
[3]in Kalyxo Castle.[K]
[V]I've taken the liberty of
[V]marking the castle on your map.
[V]Beware: its shadows run deep.[K]
[V]Seek the Meadow Blade there,
[V]legends say it holds power fit
[V]for your quest.
** 1BB - Piratian Friendly Hint
Ahoy, matey! You're lookin'
[2]for the Pirate King, eh?
[3]Well, I can't help you there.[K]
[V]But I can tell you this: the
[V]Pirate King had an old ship,
[V]here in the abyss somewhere.[K]
[V]If you're lookin' to find him,
[V]that's a good place to start.

1212
Core/messages_es.org Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,42 +4,17 @@
; music.txt, sfx.txt, registers.asm
; Credit to spannerisms and MathOnNapkins
; =========================================================
; ---------------------------------------------------------
; USING THIS SYMBOLS MAP
; ---------------------------------------------------------
; Except for larger blocks of data, every address will be given at least one symbol
; Symbols are each given a unique name with focus on hierarchy by nature of usage
;
; Low bytes may be indicated with an "L" suffix
; High bytes are indicated with an "H" suffix
; High bytes that are unused may have a "U" suffix
;
; Bitfields, full or partial, will name each property with a unique letter
; If multiple bits share a letter, they are part of the same property
; and form a larger number that is only part of the address
; All unused bits are marked with a period (.) and no mention of them is made
;
; Unused addresses will be named "UNUSED_AAAAAA"
; Unused addresses will be grouped together and include a comment:
; "FREE RAM: <size>" to make finding free space easier
; Larger blocks will say "BIG FREE RAM"
;
; For documentation on hardware registers, see «registers.asm»
; For documentation on save game data, see «symbols_sram.asm»
; For documentation on APU addresses, see «symbols_apu.asm»
; =========================================================
; =========================================================
; ---------------------------------------------------------
; DIRECT PAGE
; ---------------------------------------------------------
; Reminder that direct page is always an address in bank 00.
; For ALTTP's mapping and functionality this will always be a mirror of bank 7E page 00 or page 1F.
; this will always be a mirror of bank 7E page 00 or page 1F.
; For the most part, ALTTP leaves the direct page register (D) at $0000.
; The polyhedral code that draws the triforce and crystals will change this register during IRQ.
; polyhedral code for 3d objects will change this register during IRQ.
; The symbols here mirror page 00 of bank 7E.
; ---------------------------------------------------------
; =========================================================
; Any use of these addresses should be considered incredibly volatile.
@@ -3551,7 +3526,7 @@ ANC9SUBX = $7E0C49
; 0x22 - Received Item Sprite
; 0x23 - Bunny / Cape transformation poof
; 0x24 - Gravestone sprite when in motion
; 0x25 -
; 0x25 -
; 0x26 - Sparkles when swinging lvl 2 or higher sword
; 0x27 - the bird (when called by flute)
; 0x28 - item sprite that you throw into magic faerie ponds.
@@ -3559,7 +3534,7 @@ ANC9SUBX = $7E0C49
; 0x2A - Start of spin attack sparkle
; 0x2B - During Spin attack sparkles
; 0x2C - Cane of Somaria blocks
; 0x2D -
; 0x2D -
; 0x2E - ????
; 0x2F - Torch's flame
@@ -3582,7 +3557,7 @@ ANC9SUBX = $7E0C49
; 0x40 - Dwarf transformation cloud
; 0x41 - Water splash in the waterfall of wishing entrance (and swamp palace)
; 0x42 - Rupees that you throw in to the Pond of Wishing
; 0x43 - Ganon's Tower seal being broken. (not opened up though!)
; 0x43 - Ganon's Tower seal being broken. (not opened up though!)
ANC0ID = $7E0C4A
ANC1ID = $7E0C4B
ANC2ID = $7E0C4C
@@ -3702,12 +3677,12 @@ SPRFSCR = $7E0CA9
; aixd tspr
; a - TODO
; i -
; x -
; d -
; t -
; s -
; p -
; i -
; x -
; d -
; t -
; s -
; p -
; r - Handles behavior with previous deaths flagged in $7F:DF80 (0: default | 1: ignore)
SPR0DEFL = $7E0CAA
SPR1DEFL = $7E0CAB
@@ -7283,28 +7258,7 @@ SPR_7FFF00 = $7FFF00
; Use of unused SRAM is not recommended for general purpose memory
; As it will be kept across game sessions
; =========================================================
; The following ASCII art is included because MathOnNapkins likes it:
; ---------------------------------------------------------
;
; /\/\/\/ ||\\\\ || |||\\ /\ |||||||||||| /\
; /| || || // \\ //\\ || || || //\\
; /| ||\\ || // || // \\ || || || ///\\\
; /| ||// || // || //||||\\ || || || /\ /\
; /| || || // // // \\ || || || //\\ //\\
; /\/\/\/ ||//// ||//// |||// // \\ |||||||||||| ///\\\///\\\
;
; <^^> <^^> **** **** **** **** **** ****
; <<<##^^^^##>>> *** **** *** *** **** *** *** **** ***
; <<############>> ** ** ** ** ** **
; <<############>> ** ** ** ** ** **
; <<##########>> ** ** ** ** ** **
; <<########>> ** ** ** ** ** **
; <<######>> ** ** ** ** ** **
; <<##>> ** ** ** ** ** **
; <<>> **** **** ****
; <> ** ** **
;
; =========================================================
FILE1MAIN = $700000
FILE2MAIN = $700500
FILE3MAIN = $700A00
@@ -7835,416 +7789,7 @@ OWFLG9E = $7EF31E
OWFLG9F = $7EF31F
; =========================================================
; Items
; =========================================================
; 0x00 - Nothing
; 0x01 - Bow
; 0x02 - Bow and arrows
; 0x03 - Silver bow
; 0x04 - Silver bow and arrows
; Picking the arrow and nonarrow versions is done by the HUD draw routines
BOW = $7EF340
; 0x00 - Nothing
; 0x01 - Blue boomerang
; 0x02 - Red boomerang
BOOMER = $7EF341
; 0x00 - Nothing
; 0x01 - Hookshot
HOOKSHOT = $7EF342
; Number of bombs
BOMBS = $7EF343
; 0x00 - Nothing
; 0x01 - Mushroom
; 0x02 - Powder
SHROOM = $7EF344
; 0x00 - Nothing
; 0x01 - Fire rod
FIREROD = $7EF345
; 0x00 - Nothing
; 0x01 - Ice rod
ICEROD = $7EF346
; 0x00 - Nothing
; 0x01 - Bombos medallion
BOMBOS = $7EF347
; 0x00 - Nothing
; 0x01 - Ether medallion
ETHER = $7EF348
; 0x00 - Nothing
; 0x01 - Quake medallion
QUAKE = $7EF349
; 0x00 - Nothing
; 0x01 - Lamp
LAMP = $7EF34A
; 0x00 - Nothing
; 0x01 - Magic hammer
HAMMER = $7EF34B
; 0x00 - Nothing
; 0x01 - Shovel
; 0x02 - Inactive flute
; 0x03 - Active flute
FLUTE = $7EF34C
; 0x00 - Nothing
; 0x01 - Bug catching net
BUGNET = $7EF34D
; 0x00 - Nothing
; 0x01 - Book of Mudora
BOOK = $7EF34E
; 0x00 - Nothing
; Other values indicate the index of the currently selected bottle
BOTSEL = $7EF34F
; 0x00 - Nothing
; 0x01 - Cane of Somaria
SOMARIA = $7EF350
; 0x00 - Nothing
; 0x01 - Cane of Byrna
BYRNA = $7EF351
; 0x00 - Nothing
; 0x01 - Magic cape
CAPE = $7EF352
; 0x00 - Nothing
; 0x01 - Letter (works like mirror)
; 0x02 - Mirror
; 0x03 - Deleted triforce item
MIRROR = $7EF353
; 0x00 - Lift 1 (nothing)
; 0x01 - Lift 2 (power glove)
; 0x02 - Lift 3 (titan's mitt)
GLOVES = $7EF354
; 0x00 - Nothing
; 0x01 - Pegasus boots
; bit 2 of $7E:F379 also needs to be set to actually dash
BOOTS = $7EF355
; 0x00 - Nothing
; 0x01 - Zora's flippers
FLIPPERS = $7EF356
; 0x00 - Nothing
; 0x01 - Moon pearl
PEARL = $7EF357
; Appears to be for nothing
UNUSED_7EF358 = $7EF358
; 0x00 - Nothing
; 0x01 - Fighter sword
; 0x02 - Master sword
; 0x03 - Tempered sword
; 0x04 - Golden sword
; 0xFF - Set when sword is handed in to smithy
SWORD = $7EF359
; 0x00 - Nothing
; 0x01 - Fighter shield
; 0x02 - Fire shield
; 0x03 - Mirror shield
SHIELD = $7EF35A
; 0x00 - Green jerkin
; 0x01 - Blue mail
; 0x02 - Red mail
ARMOR = $7EF35B
; 0x00 - Nothing
; 0x01 - Mushroom (unused)
; 0x02 - Empty bottle
; 0x03 - Red potion
; 0x04 - Green potion
; 0x05 - Blue potion
; 0x06 - Fairy
; 0x07 - Bee
; 0x08 - Good bee
BOTTLE1 = $7EF35C
BOTTLE2 = $7EF35D
BOTTLE3 = $7EF35E
BOTTLE4 = $7EF35F
; Number of rupees you have
; RUPEEDISP will be incremented or decremented until it reaches this value
RUPEES = $7EF360
; Rupee count displayed on the HUD
RUPEEDISP = $7EF362
; Bitfields for ownership of various dungeon items
; SET 2 SET 1
; xced aspm wihb tg..
; c - Hyrule Castle
; x - Sewers
; a - Agahnim's Tower
;
; e - Eastern Palace
; d - Desert Palace
; h - Tower of Hera
;
; p - Palace of Darkness
; s - Swamp Palace
; w - Skull Woods
; b - Thieves' Town
; i - Ice Palace
; m - Misery Mire
; t - Turtle Rock
; g - Ganon's Tower
COMPASS1 = $7EF364
COMPASS2 = $7EF365
BIGKEY1 = $7EF366
BIGKEY2 = $7EF367
DNGMAP1 = $7EF368
DNGMAP2 = $7EF369
; Number of rupees donated to fairies
WISHRUP = $7EF36A
; Number of heart pieces towards next container
; Intended to be a value from 0-3
HEARTPC = $7EF36B
; Maximum health; 1 heart container = 0x08 HP
MAXHP = $7EF36C
; Current health
; You die at 0x00
; You also die at ≥0xA8
CURHP = $7EF36D
; Magic power, capped at 128
MAGPOW = $7EF36E
; Current number of keys for whatever dungeon is loaded
KEYS = $7EF36F
; Number of capacity upgrades received
BOMBCAP = $7EF370
ARROWCAP = $7EF371
; Refills health
; Expects multiples of 8
HEALME = $7EF372
; Refills magic
ZAPME = $7EF373
; ... ..gbr
; r - Wisdom (red)
; b - Power (blue)
; g - Courage (green)
PENDANTS = $7EF374
; Refills bombs
BOMBME = $7EF375
; Refills arrows
SHOOTME = $7EF376
; Arrow count
ARROWS = $7EF377
; Unused
UNUSED_7EF378 = $7EF378
; Displays ability flags
; lrtu pbsh
; h - Pray (unused and mostly cut off by HUD borders)
; s - Swim
; b - Run
; u - unused but set by default
; p - Pull
; t - Talk
; r - Read
; l - Lift
; This only controls the display of "LIFT.1"
; If this bit is unset but LIFT is set then the proper lift text is displayed
ABILITY = $7EF379
; .wbs tipm
; p - Palace of Darkness
; s - Swamp Palace
; w - Skull Woods
; b - Thieves' Town
; i - Ice Palace
; m - Misery Mire
; t - Turtle Rock
CRYSTALS = $7EF37A
; 0x00 - Normal magic
; 0x01 - Half magic
; 0x02 - Quarter magic
; Quarter magic has no special HUD graphic, unlike half magic
; Also, not everything is necessarily quarter magic
MAGCON = $7EF37B
; Keys earned per dungeon
; Sewers and Castle are kept in sync
KEYSSEWER = $7EF37C
KEYSHYRULE = $7EF37D
KEYSEAST = $7EF37E
KEYSDESERT = $7EF37F
KEYSAGA = $7EF380
KEYSSWAMP = $7EF381
KEYSPOD = $7EF382
KEYSMIRE = $7EF383
KEYSWOODS = $7EF384
KEYSICE = $7EF385
KEYSHERA = $7EF386
KEYSTHIEF = $7EF387
KEYSTROCK = $7EF388
KEYSGANON = $7EF389
; Unused block of SRAM
UNUSED_7EF38A = $7EF38A
; Game state
; 0x00 - Very start; progress cannot be saved in this state
; 0x01 - Uncle reached
; 0x02 - Zelda rescued
; 0x03 - Agahnim defeated
GAMESTATE = $7EF3C5
; Bitfield of less important progression
; .fbh .zsu
; u - Uncle visited in secret passage; controls spawn (0: spawn | 1: gone)
; s - Priest visited in sanc after Zelda is kidnapped again
; z - Zelda brought to sanc
; h - Uncle has left Link's house; controls spawn (0: spawn | 1: gone)
; b - Book of Mudora obtained/mentioned; controls Aginah dialog
; f - Flipped by fortune tellers to decide which fortune set to give
PROGLITE = $7EF3C6
; Map icon to guide noob players
; 0x00 - Red X on castle | Save zelda
; 0x01 - Red X on Kakariko | Talk to villagers about elders
; 0x02 - Red X on Eastern | Talk to Sahasrahla
; 0x03 - Pendants and MS | Obtain the master sword
; 0x04 - Master sword on LW | Grab the master sword
; 0x05 - Skull on castle | Kill Agahnim
; 0x06 - Crystal on POD | Get the first crystal
; 0x07 - Crystals | Get all 7 crystals
; 0x08 - Skull on GT | Climb Ganon's Tower
MAPICON = $7EF3C7
; 0x00 - Link's house
; 0x01 - Sanctuary
; 0x02 - Prison
; 0x03 - Uncle
; 0x04 - Throne
; 0x05 - Old man cave
; 0x06 - Old man home
SPAWNPT = $7EF3C8
; Another bitfield for progress
; t.dp s.bh
; t - smiths are currently tempering sword
; d - swordsmith rescued
; p - purple chest has been opened
; s - stumpy has been stumped
; b - bottle purchased from vendor
; h - bottle received from hobo
PROGLITE2 = $7EF3C9
; .d.. ....
; d - World (0: Light World | 1: Dark World)
SAVEWORLD = $7EF3CA
; Not used
UNUSED_7EF3CB = $7EF3CB
; Current follower ID
FOLLOWER = $7EF3CC
; Cache of follower properties
FOLLOWCYL = $7EF3CD
FOLLOWCYH = $7EF3CE
FOLLOWCXL = $7EF3CF
FOLLOWCXH = $7EF3D0
; Copies INDOORS
FOLLOWERINOUT = $7EF3D1
; Copies LAYER
FOLLOWERCLAYER = $7EF3D2
; Indicates the follower is currently following
; 0x00 - Following
; 0x80 - Not following
FOLLOWERING = $7EF3D3
; Unused
UNUSED_7EF3D4 = $7EF3D4
UNUSED_7EF3D5 = $7EF3D5
UNUSED_7EF3D6 = $7EF3D6
UNUSED_7EF3D7 = $7EF3D7
UNUSED_7EF3D8 = $7EF3D8
; Player name
NAME1L = $7EF3D9
NAME1H = $7EF3DA
NAME2L = $7EF3DB
NAME2H = $7EF3DC
NAME3L = $7EF3DD
NAME3H = $7EF3DE
NAME4L = $7EF3DF
NAME4H = $7EF3E0
; Save file checksum; expected to be $55AA
SCHKSML = $7EF3E1
SCHKSMH = $7EF3E2
; Games played in each dungeon
GPSEWER = $7EF3E3
GPHYRULE = $7EF3E5
GPEAST = $7EF3E7
GPDESERT = $7EF3E9
GPAGA = $7EF3EB
GPSWAMP = $7EF3ED
GPPOD = $7EF3EF
GPMIRE = $7EF3F1
GPWOODS = $7EF3F3
GPICE = $7EF3F5
GPHERA = $7EF3F7
GPTHIEF = $7EF3F9
GPTROCK = $7EF3FB
GPGANON = $7EF3FD
; Games played for current segment
GPNOW = $7EF3FF
; Total games played
; No display on file select if 0xFFFF
GAMESPLAYED = $7EF401
; Big unused block
UNUSED_7EF403 = $7EF403
DEATHS_MAXED = $7EF405
; Inverse checksum for save file
SAVEICKSML = $7EF4FE
SAVEICKSMH = $7EF4FF
; =========================================================
; Music
; Music
; Transfers (+4 for first byte of data)
; ---------------------------------------------------------
@@ -8451,330 +7996,6 @@ SAVEICKSMH = $7EF4FF
; SRCN 17 $B0EC $B32C $0240* $FF $E0 $B8 $02C0 Oof - S
; SRCN 18 $B32C $BA61 $0735 $FE $8F $B8 $06F0 Piano M -
; =========================================================
; SFX instruments - Table: ARAM $3E00, ROM $1A:9C04
; ID VOL L,R Pitch SRCN ADSR Gain Mult Name
; -----------------------------------------------------------------------------
; $00 $70, $70 $1000 $00 $F6 $6A $B8 $03 Fwoosh
; $01 $70, $70 $1000 $01 $8E $E0 $B8 $02 Swish
; $02 $70, $70 $1000 $14 $FE $6A $B8 $02 Bomp
; $03 $70, $70 $1000 $03 $FE $F8 $B8 $0D Ting
; $04 $70, $70 $1000 $04 $FE $6A $7F $03 Rrrrr
; $05 $70, $70 $1000 $02 $FE $6A $7F $03 Clunk
; $06 $70, $70 $1000 $05 $FE $6A $70 $03 Ching
; $07 $70, $70 $1000 $06 $FE $6A $70 $03 Fwomp
; $08 $70, $70 $1000 $08 $FA $6A $70 $03 Squee
; $09 $70, $70 $1000 $06 $FE $6A $70 $01 Unused
; $0A $70, $70 $1000 $07 $FE $6A $70 $05 Bzzzrt
; $0B $70, $70 $1000 $0B $FE $6A $B8 $03 Brrfft
; $0C $70, $70 $1000 $0C $FE $E0 $B8 $02 Brrwwww
; $0D $70, $70 $1000 $0D $F9 $6E $B8 $03 Twee
; $0E $70, $70 $1000 $0E $FE $F5 $B8 $07 Pwing
; $0F $70, $70 $1000 $0F $FE $F5 $B8 $06 Pling
; $10 $70, $70 $1000 $01 $FE $FC $B8 $03 Chshtsh
; $11 $70, $70 $1000 $10 $8E $E0 $B8 $03 Splssh
; $12 $70, $70 $1000 $08 $8E $E0 $B8 $02 Weewoo
; $13 $70, $70 $1000 $14 $8E $E0 $B8 $02 Brbrbrb
; $14 $70, $70 $1000 $0A $88 $E0 $B8 $02 Bwow
; $15 $70, $70 $1000 $17 $8E $E0 $B8 $02 Uughf
; $16 $70, $70 $1000 $15 $FF $E0 $B8 $04 Aaaaaa
; $17 $70, $70 $1000 $03 $DF $11 $B8 $0F Twing
; $18 $70, $70 $1000 $01 $88 $E0 $B8 $01 Whooo
; -----------------------------------------------------------------------------
; SFX instruments by usage
; $00 SFX1.13, SFX1.14
; SFX2.07, SFX2.09, SFX2.0D, SFX2.0E, SFX2.2C, SFX2.3A
; SFX3.05, SFX3.26
; SFXU2533
; $01 SFX1.01, SFX1.02, SFX1.03, SFX1.04
; SFX2.01, SFX2.02, SFX2.12, SFX2.1A, SFX2.1E, SFX2.1F
; SFX2.21, SFX2.23, SFX2.29, SFX2.32, SFX2.39
; SFX3.02, SFX3.1E, SFX3.23, SFX3.31
; $02 SFX2.03, SFX2.04, SFX2.08, SFX2.0B, SFX2.12, SFX2.1F, SFX2.21
; SFX3.06, SFX3.0E
; SFXU2831
; $03 SFX2.06
; SFX3.0A, SFX3.30
; $04 SFX2.3C
; SFX3.32
; SFXU2831
; $05 SFX2.10, SFX2.11, SFX2.22
; SFX3.18, SFX3.3E
; SFXU252D
; $06 SFX2.05, SFX2.0A, SFX2.0F, SFX2.3B
; SFX3.04, SFX3.14, SFX3.25
; $07 SFX2.14, SFX2.15, SFX2.33
; SFX3.01, SFX3.11, SFX3.12, SFX3.19, SFX3.27, SFX3.28, SFX3.29, SFX3.35, SFX3.39
; SFXU26A2
; $08 SFX3.17
; $09 nothing
; $0A SFX1.15, SFX1.16
; SFX3.1C, SFX3.2A, SFX3.2B, SFX3.2C
; $0B SFX2.27
; SFX3.0B, SFX3.0F, SFX3.2E, SFX3.34, SFX3.35, SFX3.36, SFX3.3C, SFX3.3D, SFX3.3F
; $0C SFX2.2A
; SFX3.07, SFX3.08, SFX3.09
; $0D SFX1.0B, SFX1.0C, SFX1.17, SFX1.18, SFX1.1B, SFX1.1C
; SFX2.13, SFX2.20, SFX2.31, SFX2.3E, SFX2.3F
; SFX3.0C, SFX3.13, SFX3.24
; SFXU1EE2, SFXU279D, SFXU27F6, SFXU2807, SFXU2818
; $0E SFX1.0D, SFX1.0E, SFX1.0F, SFX1.10, SFX1.1D, SFX1.1E, SFX1.1F, SFX1.20
; SFX2.2B, SFX2.37
; SFX3.0D, SFX3.10, SFX3.1B, SFX3.2F, SFX3.33, SFX3.3A, SFX3.3B
; $0F SFX2.2D
; SFX3.1A, SFX3.1D, SFX3.20, SFX3.2D, SFX3.37
; SFXU1D1C
; $10 SFX2.16, SFX2.17, SFX2.18, SFX2.19
; $11 SFX2.1B, SFX2.1C, SFX2.24, SFX2.25, SFX2.28, SFX2.2E, SFX2.34, SFX3.28, SFX2.3D
; $12 SFX3.04
; $13 SFX1.07, SFX1.08
; SFX2.0C, SFX2.35, SFX2.36
; SFX3.03, SFX3.15, SFX3.16, SFX3.25, SFX3.38
; $14 SFX3.21, SFX3.22
; SFXU277E
; $15 SFX2.26, SFX2.30
; SFXU1F13
; $16 SFX1.11, SFX1.12
; SFX2.1D
; SFX3.1F
; $17 SFX2.2C, SFX2.3A
; $18 SFX1.09, SFX1.0A
; -----------------------------------------------------------------------------
; SFX1 - queued via $012D | Table: ARAM $17C0, ROM $1A:8B70
; ID ARAM ROM Name
; -----------------------------------------------------------------------------
; SFX1.01 $2652 $1A9A02 Rain / Zora area
; SFX1.02 $2662 $1A9A12 Rain / Zora area (packaged with $01)
; SFX1.03 $2677 $1A9A27 Rain
; SFX1.04 $2687 $1A9A37 Rain (packaged with $03)
; SFX1.05 $284F $1A9BFF Silence
; SFX1.06 $284F $1A9BFF Silence (packaged with $05)
; SFX1.07 $2739 $1A9AE9 The Rumbling
; SFX1.08 $2736 $1A9AE6 The Rumbling (packaged with $08)
; SFX1.09 $1C8E $1A903E Wind
; SFX1.0A $1CBC $1A906C Wind (packaged with $09 by APU)
; SFX1.0B $1BA3 $1A8F53 Flute song by flute boy
; SFX1.0C $1B62 $1A8F12 Flute song by flute boy (packaged with $0B)
; SFX1.0D $1B0E $1A8EBE Magic jingle
; SFX1.0E $1B1D $1A8ECD Magic jingle (packaged with $0D)
; SFX1.0F $1B2C $1A8EDC Crystal / Save and quit
; SFX1.10 $1B3E $1A8EEE Crystal / Save and quit (packaged with $0F)
; SFX1.11 $1EAC $1A925C Choir melody
; SFX1.12 $1EC8 $1A9278 Choir countermelody (packaged with $11)
; SFX1.13 $1AD2 $1A8E82 Large boss swoosh
; SFX1.14 $1AE1 $1A8E91 Large boss swoosh (packaged with $13)
; SFX1.15 $1AF0 $1A8EA0 Triforce door / Pyramid hole opening
; SFX1.16 $1AFF $1A8EAF VOMP (packaged with $15)
; SFX1.17 $1C24 $1A8FD4 Flute song for weathervane
; SFX1.18 $1BE3 $1A8F93 Flute song for weathervane (packaged with $17)
; SFX1.19 $0000 ------- Nothing (unused)
; SFX1.1A $0000 ------- Nothing (unused; packaged with $19)
; SFX1.1B $1BA3 $1A8F53 Flute song by flute boy duplicate (unused)
; SFX1.1C $1B62 $1A8F12 Flute song by flute boy duplicate (unused; packaged with $1B)
; SFX1.1D $1B0E $1A8EBE Magic jingle duplicate (unused)
; SFX1.1E $1B1D $1A8ECD Magic jingle duplicate (unused; packaged with $1D)
; SFX1.1F $1B2C $1A8EDC Crystal / Save and quit duplicate (unused)
; SFX1.20 $1B3E $1A8EEE Crystal / Save and quit duplicate (unused; packaged with $1F)
; $80..$FF Initiates a fade to half volume for SFX1
; -----------------------------------------------------------------------------
; SFX2 - queued via $012E | Table: ARAM $1820, ROM $1A:8BD0
; ID ARAM ROM Name
; -----------------------------------------------------------------------------
; 00 $0020 ------- Undefined; when queued value of $40, $C0, $80
; SFX2.01 $2614 $1A99C4 Slash
; SFX2.02 $2625 $1A99D5 Slash
; SFX2.03 $2634 $1A99E4 Slash
; SFX2.04 $2643 $1A99F3 Slash
; SFX2.05 $25DD $1A998D Clink
; SFX2.06 $25D7 $1A9987 Bombable door clink
; SFX2.07 $25B7 $1A9967 Fwoosh
; SFX2.08 $25E3 $1A9993 Arrow smash
; SFX2.09 $25AD $1A995D Boomerang fwish
; SFX2.0A $25C7 $1A9977 Hookshot clink
; SFX2.0B $2478 $1A9828 Placing bomb
; SFX2.0C $269C $1A9A4C Explosion
; SFX2.0D $2414 $1A97C4 Powder (paired $0D→$3F)
; SFX2.0E $2404 $1A97B4 Fire rod shot
; SFX2.0F $24C3 $1A9873 Ice rod shot
; SFX2.10 $23FA $1A97AA Hammer use
; SFX2.11 $23F0 $1A97A0 Hammering peg
; SFX2.12 $23CD $1A977D Digging
; SFX2.13 $23A0 $1A9750 Flute (paired $13→$3E)
; SFX2.14 $2380 $1A9730 Cape on
; SFX2.15 $2390 $1A9740 Cape off / Wallmaster grab
; SFX2.16 $232C $1A96DC Staircase
; SFX2.17 $2344 $1A96F4 Staircase
; SFX2.18 $2356 $1A9706 Staircase
; SFX2.19 $236E $1A971E Staircase
; SFX2.1A $2316 $1A96C6 Tall grass / Hammer hitting bush
; SFX2.1B $2307 $1A96B7 Shallow water
; SFX2.1C $2301 $1A96B1 Mire shallow water
; SFX2.1D $22BB $1A966B Lifting object
; SFX2.1E $2577 $1A9927 Cutting grass
; SFX2.1F $22E9 $1A9699 Item breaking
; SFX2.20 $22DA $1A968A Item falling in pit
; SFX2.21 $22CF $1A967F Bomb hitting ground / General thud
; SFX2.22 $2107 $1A94B7 Pushing object / Armos bounce
; SFX2.23 $22B1 $1A9661 Boots dust
; SFX2.24 $22A5 $1A9655 Splashing (paired $24→$3D)
; SFX2.25 $2296 $1A9646 Mire shallow water again?
; SFX2.26 $2844 $1A9BF4 Link taking damage
; SFX2.27 $2252 $1A9602 Fainting
; SFX2.28 $2287 $1A9637 Item splash
; SFX2.29 $243F $1A97EF Rupee refill (paired $29→$3B)
; SFX2.2A $2033 $1A93E3 Fire splash / Bombos spell
; SFX2.2B $1FF2 $1A93A2 Heart beep / Text box
; SFX2.2C $1FD9 $1A9389 Sword up (paired $2C→$3A) (also uses instrument $17)
; SFX2.2D $20A6 $1A9456 Magic drain
; SFX2.2E $1FCA $1A937A GT opening (paired $2E→$39)
; SFX2.2F $1F47 $1A92F7 GT opening / Water drain (paired $2F→$38)
; SFX2.30 $1EF1 $1A92A1 Cucco
; SFX2.31 $20CE $1A947E Fairy
; SFX2.32 $1D47 $1A90F7 Bug net
; SFX2.33 $1CDC $1A908C Teleport (paired $34→$33)
; SFX2.34 $1F6F $1A931F Teleport (paired $34→$33)
; SFX2.35 $1C67 $1A9017 Shaking
; SFX2.36 $1C64 $1A9014 Mire entrance (extends above; paired $35→$36)
; SFX2.37 $1A43 $1A8DF3 Spin charged
; SFX2.38 $1F6F $1A931F Water sound (paired $2F→$38)
; SFX2.39 $1F9C $1A934C Thunder (paired $2E→$39)
; SFX2.3A $1FE7 $1A9397 Sword up (paired $2C→$3A)
; SFX2.3B $2462 $1A9812 Rupee refill (paired $29→$3B)
; SFX2.3C $1A37 $1A8DE7 Error beep
; SFX2.3D $22AB $1A965B Big splash (paired $24→$3D)
; SFX2.3E $23B5 $1A9765 Flute (paired $13→$3E)
; SFX2.3F $2435 $1A97E5 Powder (paired $0D→$3F)
; -----------------------------------------------------------------------------
; SFX3 - queued via $012F | Table: ARAM $191C, ROM $1A:8CCC
; ID ARAM ROM Name
; -----------------------------------------------------------------------------
; 00 $003C ------- Undefined; when queued value of $40, $C0, $80
; SFX3.01 $1A18 $1A8DC8 Sword beam
; SFX3.02 $254E $1A98FE TR opening
; SFX3.03 $224A $1A95FA Pyramid hole
; SFX3.04 $220E $1A95BE Angry soldier
; SFX3.05 $25B7 $1A9967 Lynel shot / Javelin toss
; SFX3.06 $21F5 $1A95A5 Swoosh
; SFX3.07 $223D $1A95ED Cannon fire
; SFX3.08 $21E6 $1A9596 Damage to enemy; $0BEX.4=1
; SFX3.09 $21C1 $1A9571 Enemy death
; SFX3.0A $21A9 $1A9559 Collecting rupee
; SFX3.0B $2198 $1A9548 Collecting heart
; SFX3.0C $218E $1A953E Non-blank text character
; SFX3.0D $21B5 $1A9565 HUD heart
; SFX3.0E $2182 $1A9532 Opening chest
; SFX3.0F $24B9 $1A9869 ♪Do do do doooooo♫ (paired $0F→$3C→$3D→$3E→$3F)
; SFX3.10 $216D $1A951D Map (paired $10→$3B)
; SFX3.11 $214F $1A94FF Opening item menu / Bomb shop guy breathing
; SFX3.12 $215E $1A950E Closing item menu / Bomb shop guy breathing
; SFX3.13 $213B $1A94EB Throwing object / Stalfos jump
; SFX3.14 $246C $1A981C Key door
; SFX3.15 $212F $1A94DF Door / Chest (used with SFX2.29)
; SFX3.16 $2123 $1A94D3 Armos Knight thud
; SFX3.17 $25A6 $1A9956 Rat squeak
; SFX3.18 $20DD $1A948D Dragging
; SFX3.19 $250A $1A98BA Fireball / Laser shot
; SFX3.1A $1E8A $1A923A Chest reveal jingle (paired $1A→$38)
; SFX3.1B $20B6 $1A9466 Puzzle jingle (paired $1B→$3A)
; SFX3.1C $1A62 $1A8E12 Damage to enemy
; SFX3.1D $20A6 $1A9456 Magic meter
; SFX3.1E $2091 $1A9441 Wing flapping
; SFX3.1F $204B $1A93FB Link falling
; SFX3.20 $276C $1A9B1C Menu / Text cursor moved
; SFX3.21 $27E2 $1A9B92 Damage to boss
; SFX3.22 $26CF $1A9A7F Boss dying / Deleting file
; SFX3.23 $2001 $1A93B1 Spin attack swoosh (paired $23→$39)
; SFX3.24 $2043 $1A93F3 OW map perspective change
; SFX3.25 $1E9D $1A924D Pressure switch (also uses instrument $06)
; SFX3.26 $1E7B $1A922B Lightning / Game over / Laser / Ganon bat / Trinexx lunge
; SFX3.27 $1E40 $1A91F0 Agahnim charge
; SFX3.28 $26F7 $1A9AA7 Agahnim / Ganon teleport
; SFX3.29 $1E21 $1A91D1 Agahnim shot
; SFX3.2A $1E12 $1A91C2 Somaria / Byrna / Ether spell / Helma fire ball
; SFX3.2B $1DF3 $1A91A3 Electrocution
; SFX3.2C $1DC0 $1A9170 Bees
; SFX3.2D $1DA9 $1A9159 Milestone jingle (paired $2D→$37)
; SFX3.2E $1D5D $1A910D Heart container jingle (paired $2E→$35→$34)
; SFX3.2F $1D80 $1A9130 Key jingle (paired $2F→$33)
; SFX3.30 $1B53 $1A8F03 Magic zap / Plop
; SFX3.31 $1ACA $1A8E7A Sprite falling / Moldorm shuffle
; SFX3.32 $1A78 $1A8E28 BOING
; SFX3.33 $1D93 $1A9143 Key jingle (paired $2F→$33)
; SFX3.34 $1D66 $1A9116 Heart container jingle (paired $2E→$35→$34)
; SFX3.35 $1D73 $1A9123 Heart container jingle (paired $2E→$35→$34)
; SFX3.36 $1AA7 $1A8E57 Magic attack
; SFX3.37 $1DB4 $1A9164 Milestone jingle (paired $2D→$37)
; SFX3.38 $1E93 $1A9243 Chest reveal jingle (paired $1A→$38)
; SFX3.39 $2017 $1A93C7 Swish (paired $23→$39)
; SFX3.3A $20C0 $1A9470 Puzzle jingle (paired $1B→$3A)
; SFX3.3B $2176 $1A9526 Map (paired $10→$3B)
; SFX3.3C $248A $1A983A Item jingle (paired $0F→$3C→$3D→$3E→$3F)
; SFX3.3D $2494 $1A9844 Item jingle ($0F→$3C→$3D→$3E→$3F)
; SFX3.3E $249E $1A984E Item jingle (paired $0F→$3C→$3D→$3E→$3F)
; SFX3.3F $2480 $1A9830 Item jingle (paired $0F→$3C→$3D→$3E→$3F)
; -----------------------------------------------------------------------------
; Unused SFX
; ARAM ROM Description
; -----------------------------------------------------------------------------
; $1A5B $1A8E0B Noisy fsssh; bleeds into SFX3.1C
; $1D1C $1A90CC Radar ping
; $1EE2 $1A9292 Slide whistle / Chirp
; $1F13 $1A92C3 Cucco clucking
; $252D $1A98DD Brighter hammer peg
; $2533 $1A98E3 Bat wings flapping
; $2657 $1A9A07 Broken static
; $267C $1A9A2C Static; Loops
; $26A2 $1A9A52 Tuba jingle followed by a roar
; $277E $1A9B2E UFO winding up
; $279D $1A9B4D Distant whistling
; $27C9 $1A9B79 Bwuuuoow
; $27F6 $1A9BA6 Cat call
; $2807 $1A9BB7 Higher pitched cat call
; $2818 $1A9BC8 Reverse cat call
; $2829 $1A9BD9 Dial-up
; $2831 $1A9BE1 Bumper peg
; =========================================================
; Registers

321
Core/sfx.asm Normal file
View File

@@ -0,0 +1,321 @@
; =========================================================
; SFX instruments - Table: ARAM $3E00, ROM $1A:9C04
; ID VOL L,R Pitch SRCN ADSR Gain Mult Name
; -----------------------------------------------------------------------------
; $00 $70, $70 $1000 $00 $F6 $6A $B8 $03 Fwoosh
; $01 $70, $70 $1000 $01 $8E $E0 $B8 $02 Swish
; $02 $70, $70 $1000 $14 $FE $6A $B8 $02 Bomp
; $03 $70, $70 $1000 $03 $FE $F8 $B8 $0D Ting
; $04 $70, $70 $1000 $04 $FE $6A $7F $03 Rrrrr
; $05 $70, $70 $1000 $02 $FE $6A $7F $03 Clunk
; $06 $70, $70 $1000 $05 $FE $6A $70 $03 Ching
; $07 $70, $70 $1000 $06 $FE $6A $70 $03 Fwomp
; $08 $70, $70 $1000 $08 $FA $6A $70 $03 Squee
; $09 $70, $70 $1000 $06 $FE $6A $70 $01 Unused
; $0A $70, $70 $1000 $07 $FE $6A $70 $05 Bzzzrt
; $0B $70, $70 $1000 $0B $FE $6A $B8 $03 Brrfft
; $0C $70, $70 $1000 $0C $FE $E0 $B8 $02 Brrwwww
; $0D $70, $70 $1000 $0D $F9 $6E $B8 $03 Twee
; $0E $70, $70 $1000 $0E $FE $F5 $B8 $07 Pwing
; $0F $70, $70 $1000 $0F $FE $F5 $B8 $06 Pling
; $10 $70, $70 $1000 $01 $FE $FC $B8 $03 Chshtsh
; $11 $70, $70 $1000 $10 $8E $E0 $B8 $03 Splssh
; $12 $70, $70 $1000 $08 $8E $E0 $B8 $02 Weewoo
; $13 $70, $70 $1000 $14 $8E $E0 $B8 $02 Brbrbrb
; $14 $70, $70 $1000 $0A $88 $E0 $B8 $02 Bwow
; $15 $70, $70 $1000 $17 $8E $E0 $B8 $02 Uughf
; $16 $70, $70 $1000 $15 $FF $E0 $B8 $04 Aaaaaa
; $17 $70, $70 $1000 $03 $DF $11 $B8 $0F Twing
; $18 $70, $70 $1000 $01 $88 $E0 $B8 $01 Whooo
; -----------------------------------------------------------------------------
; SFX instruments by usage
; $00 SFX1.13, SFX1.14
; SFX2.07, SFX2.09, SFX2.0D, SFX2.0E, SFX2.2C, SFX2.3A
; SFX3.05, SFX3.26
; SFXU2533
; $01 SFX1.01, SFX1.02, SFX1.03, SFX1.04
; SFX2.01, SFX2.02, SFX2.12, SFX2.1A, SFX2.1E, SFX2.1F
; SFX2.21, SFX2.23, SFX2.29, SFX2.32, SFX2.39
; SFX3.02, SFX3.1E, SFX3.23, SFX3.31
; $02 SFX2.03, SFX2.04, SFX2.08, SFX2.0B, SFX2.12, SFX2.1F, SFX2.21
; SFX3.06, SFX3.0E
; SFXU2831
; $03 SFX2.06
; SFX3.0A, SFX3.30
; $04 SFX2.3C
; SFX3.32
; SFXU2831
; $05 SFX2.10, SFX2.11, SFX2.22
; SFX3.18, SFX3.3E
; SFXU252D
; $06 SFX2.05, SFX2.0A, SFX2.0F, SFX2.3B
; SFX3.04, SFX3.14, SFX3.25
; $07 SFX2.14, SFX2.15, SFX2.33
; SFX3.01, SFX3.11, SFX3.12, SFX3.19, SFX3.27, SFX3.28, SFX3.29, SFX3.35, SFX3.39
; SFXU26A2
; $08 SFX3.17
; $09 nothing
; $0A SFX1.15, SFX1.16
; SFX3.1C, SFX3.2A, SFX3.2B, SFX3.2C
; $0B SFX2.27
; SFX3.0B, SFX3.0F, SFX3.2E, SFX3.34, SFX3.35, SFX3.36, SFX3.3C, SFX3.3D, SFX3.3F
; $0C SFX2.2A
; SFX3.07, SFX3.08, SFX3.09
; $0D SFX1.0B, SFX1.0C, SFX1.17, SFX1.18, SFX1.1B, SFX1.1C
; SFX2.13, SFX2.20, SFX2.31, SFX2.3E, SFX2.3F
; SFX3.0C, SFX3.13, SFX3.24
; SFXU1EE2, SFXU279D, SFXU27F6, SFXU2807, SFXU2818
; $0E SFX1.0D, SFX1.0E, SFX1.0F, SFX1.10, SFX1.1D, SFX1.1E, SFX1.1F, SFX1.20
; SFX2.2B, SFX2.37
; SFX3.0D, SFX3.10, SFX3.1B, SFX3.2F, SFX3.33, SFX3.3A, SFX3.3B
; $0F SFX2.2D
; SFX3.1A, SFX3.1D, SFX3.20, SFX3.2D, SFX3.37
; SFXU1D1C
; $10 SFX2.16, SFX2.17, SFX2.18, SFX2.19
; $11 SFX2.1B, SFX2.1C, SFX2.24, SFX2.25, SFX2.28, SFX2.2E, SFX2.34, SFX3.28, SFX2.3D
; $12 SFX3.04
; $13 SFX1.07, SFX1.08
; SFX2.0C, SFX2.35, SFX2.36
; SFX3.03, SFX3.15, SFX3.16, SFX3.25, SFX3.38
; $14 SFX3.21, SFX3.22
; SFXU277E
; $15 SFX2.26, SFX2.30
; SFXU1F13
; $16 SFX1.11, SFX1.12
; SFX2.1D
; SFX3.1F
; $17 SFX2.2C, SFX2.3A
; $18 SFX1.09, SFX1.0A
; -----------------------------------------------------------------------------
; SFX1 - queued via $012D | Table: ARAM $17C0, ROM $1A:8B70
; ID ARAM ROM Name
; -----------------------------------------------------------------------------
; SFX1.01 $2652 $1A9A02 Rain / Zora area
; SFX1.02 $2662 $1A9A12 Rain / Zora area (packaged with $01)
; SFX1.03 $2677 $1A9A27 Rain
; SFX1.04 $2687 $1A9A37 Rain (packaged with $03)
; SFX1.05 $284F $1A9BFF Silence
; SFX1.06 $284F $1A9BFF Silence (packaged with $05)
; SFX1.07 $2739 $1A9AE9 The Rumbling
; SFX1.08 $2736 $1A9AE6 The Rumbling (packaged with $08)
; SFX1.09 $1C8E $1A903E Wind
; SFX1.0A $1CBC $1A906C Wind (packaged with $09 by APU)
; SFX1.0B $1BA3 $1A8F53 Flute song by flute boy
; SFX1.0C $1B62 $1A8F12 Flute song by flute boy (packaged with $0B)
; SFX1.0D $1B0E $1A8EBE Magic jingle
; SFX1.0E $1B1D $1A8ECD Magic jingle (packaged with $0D)
; SFX1.0F $1B2C $1A8EDC Crystal / Save and quit
; SFX1.10 $1B3E $1A8EEE Crystal / Save and quit (packaged with $0F)
; SFX1.11 $1EAC $1A925C Choir melody
; SFX1.12 $1EC8 $1A9278 Choir countermelody (packaged with $11)
; SFX1.13 $1AD2 $1A8E82 Large boss swoosh
; SFX1.14 $1AE1 $1A8E91 Large boss swoosh (packaged with $13)
; SFX1.15 $1AF0 $1A8EA0 Triforce door / Pyramid hole opening
; SFX1.16 $1AFF $1A8EAF VOMP (packaged with $15)
; SFX1.17 $1C24 $1A8FD4 Flute song for weathervane
; SFX1.18 $1BE3 $1A8F93 Flute song for weathervane (packaged with $17)
; SFX1.19 $0000 ------- Nothing (unused)
; SFX1.1A $0000 ------- Nothing (unused; packaged with $19)
; SFX1.1B $1BA3 $1A8F53 Flute song by flute boy duplicate (unused)
; SFX1.1C $1B62 $1A8F12 Flute song by flute boy duplicate (unused; packaged with $1B)
; SFX1.1D $1B0E $1A8EBE Magic jingle duplicate (unused)
; SFX1.1E $1B1D $1A8ECD Magic jingle duplicate (unused; packaged with $1D)
; SFX1.1F $1B2C $1A8EDC Crystal / Save and quit duplicate (unused)
; SFX1.20 $1B3E $1A8EEE Crystal / Save and quit duplicate (unused; packaged with $1F)
; $80..$FF Initiates a fade to half volume for SFX1
; -----------------------------------------------------------------------------
; SFX2 - queued via $012E | Table: ARAM $1820, ROM $1A:8BD0
; ID ARAM ROM Name
; -----------------------------------------------------------------------------
; 00 $0020 ------- Undefined; when queued value of $40, $C0, $80
; SFX2.01 $2614 $1A99C4 Slash
; SFX2.02 $2625 $1A99D5 Slash
; SFX2.03 $2634 $1A99E4 Slash
; SFX2.04 $2643 $1A99F3 Slash
; SFX2.05 $25DD $1A998D Clink
; SFX2.06 $25D7 $1A9987 Bombable door clink
; SFX2.07 $25B7 $1A9967 Fwoosh
; SFX2.08 $25E3 $1A9993 Arrow smash
; SFX2.09 $25AD $1A995D Boomerang fwish
; SFX2.0A $25C7 $1A9977 Hookshot clink
; SFX2.0B $2478 $1A9828 Placing bomb
; SFX2.0C $269C $1A9A4C Explosion
; SFX2.0D $2414 $1A97C4 Powder (paired $0D→$3F)
; SFX2.0E $2404 $1A97B4 Fire rod shot
; SFX2.0F $24C3 $1A9873 Ice rod shot
; SFX2.10 $23FA $1A97AA Hammer use
; SFX2.11 $23F0 $1A97A0 Hammering peg
; SFX2.12 $23CD $1A977D Digging
; SFX2.13 $23A0 $1A9750 Flute (paired $13→$3E)
; SFX2.14 $2380 $1A9730 Cape on
; SFX2.15 $2390 $1A9740 Cape off / Wallmaster grab
; SFX2.16 $232C $1A96DC Staircase
; SFX2.17 $2344 $1A96F4 Staircase
; SFX2.18 $2356 $1A9706 Staircase
; SFX2.19 $236E $1A971E Staircase
; SFX2.1A $2316 $1A96C6 Tall grass / Hammer hitting bush
; SFX2.1B $2307 $1A96B7 Shallow water
; SFX2.1C $2301 $1A96B1 Mire shallow water
; SFX2.1D $22BB $1A966B Lifting object
; SFX2.1E $2577 $1A9927 Cutting grass
; SFX2.1F $22E9 $1A9699 Item breaking
; SFX2.20 $22DA $1A968A Item falling in pit
; SFX2.21 $22CF $1A967F Bomb hitting ground / General thud
; SFX2.22 $2107 $1A94B7 Pushing object / Armos bounce
; SFX2.23 $22B1 $1A9661 Boots dust
; SFX2.24 $22A5 $1A9655 Splashing (paired $24→$3D)
; SFX2.25 $2296 $1A9646 Mire shallow water again?
; SFX2.26 $2844 $1A9BF4 Link taking damage
; SFX2.27 $2252 $1A9602 Fainting
; SFX2.28 $2287 $1A9637 Item splash
; SFX2.29 $243F $1A97EF Rupee refill (paired $29→$3B)
; SFX2.2A $2033 $1A93E3 Fire splash / Bombos spell
; SFX2.2B $1FF2 $1A93A2 Heart beep / Text box
; SFX2.2C $1FD9 $1A9389 Sword up (paired $2C→$3A) (also uses instrument $17)
; SFX2.2D $20A6 $1A9456 Magic drain
; SFX2.2E $1FCA $1A937A GT opening (paired $2E→$39)
; SFX2.2F $1F47 $1A92F7 GT opening / Water drain (paired $2F→$38)
; SFX2.30 $1EF1 $1A92A1 Cucco
; SFX2.31 $20CE $1A947E Fairy
; SFX2.32 $1D47 $1A90F7 Bug net
; SFX2.33 $1CDC $1A908C Teleport (paired $34→$33)
; SFX2.34 $1F6F $1A931F Teleport (paired $34→$33)
; SFX2.35 $1C67 $1A9017 Shaking
; SFX2.36 $1C64 $1A9014 Mire entrance (extends above; paired $35→$36)
; SFX2.37 $1A43 $1A8DF3 Spin charged
; SFX2.38 $1F6F $1A931F Water sound (paired $2F→$38)
; SFX2.39 $1F9C $1A934C Thunder (paired $2E→$39)
; SFX2.3A $1FE7 $1A9397 Sword up (paired $2C→$3A)
; SFX2.3B $2462 $1A9812 Rupee refill (paired $29→$3B)
; SFX2.3C $1A37 $1A8DE7 Error beep
; SFX2.3D $22AB $1A965B Big splash (paired $24→$3D)
; SFX2.3E $23B5 $1A9765 Flute (paired $13→$3E)
; SFX2.3F $2435 $1A97E5 Powder (paired $0D→$3F)
; -----------------------------------------------------------------------------
; SFX3 - queued via $012F | Table: ARAM $191C, ROM $1A:8CCC
; ID ARAM ROM Name
; -----------------------------------------------------------------------------
; 00 $003C ------- Undefined; when queued value of $40, $C0, $80
; SFX3.01 $1A18 $1A8DC8 Sword beam
; SFX3.02 $254E $1A98FE TR opening
; SFX3.03 $224A $1A95FA Pyramid hole
; SFX3.04 $220E $1A95BE Angry soldier
; SFX3.05 $25B7 $1A9967 Lynel shot / Javelin toss
; SFX3.06 $21F5 $1A95A5 Swoosh
; SFX3.07 $223D $1A95ED Cannon fire
; SFX3.08 $21E6 $1A9596 Damage to enemy; $0BEX.4=1
; SFX3.09 $21C1 $1A9571 Enemy death
; SFX3.0A $21A9 $1A9559 Collecting rupee
; SFX3.0B $2198 $1A9548 Collecting heart
; SFX3.0C $218E $1A953E Non-blank text character
; SFX3.0D $21B5 $1A9565 HUD heart
; SFX3.0E $2182 $1A9532 Opening chest
; SFX3.0F $24B9 $1A9869 ♪Do do do doooooo♫ (paired $0F→$3C→$3D→$3E→$3F)
; SFX3.10 $216D $1A951D Map (paired $10→$3B)
; SFX3.11 $214F $1A94FF Opening item menu / Bomb shop guy breathing
; SFX3.12 $215E $1A950E Closing item menu / Bomb shop guy breathing
; SFX3.13 $213B $1A94EB Throwing object / Stalfos jump
; SFX3.14 $246C $1A981C Key door
; SFX3.15 $212F $1A94DF Door / Chest (used with SFX2.29)
; SFX3.16 $2123 $1A94D3 Armos Knight thud
; SFX3.17 $25A6 $1A9956 Rat squeak
; SFX3.18 $20DD $1A948D Dragging
; SFX3.19 $250A $1A98BA Fireball / Laser shot
; SFX3.1A $1E8A $1A923A Chest reveal jingle (paired $1A→$38)
; SFX3.1B $20B6 $1A9466 Puzzle jingle (paired $1B→$3A)
; SFX3.1C $1A62 $1A8E12 Damage to enemy
; SFX3.1D $20A6 $1A9456 Magic meter
; SFX3.1E $2091 $1A9441 Wing flapping
; SFX3.1F $204B $1A93FB Link falling
; SFX3.20 $276C $1A9B1C Menu / Text cursor moved
; SFX3.21 $27E2 $1A9B92 Damage to boss
; SFX3.22 $26CF $1A9A7F Boss dying / Deleting file
; SFX3.23 $2001 $1A93B1 Spin attack swoosh (paired $23→$39)
; SFX3.24 $2043 $1A93F3 OW map perspective change
; SFX3.25 $1E9D $1A924D Pressure switch (also uses instrument $06)
; SFX3.26 $1E7B $1A922B Lightning / Game over / Laser / Ganon bat / Trinexx lunge
; SFX3.27 $1E40 $1A91F0 Agahnim charge
; SFX3.28 $26F7 $1A9AA7 Agahnim / Ganon teleport
; SFX3.29 $1E21 $1A91D1 Agahnim shot
; SFX3.2A $1E12 $1A91C2 Somaria / Byrna / Ether spell / Helma fire ball
; SFX3.2B $1DF3 $1A91A3 Electrocution
; SFX3.2C $1DC0 $1A9170 Bees
; SFX3.2D $1DA9 $1A9159 Milestone jingle (paired $2D→$37)
; SFX3.2E $1D5D $1A910D Heart container jingle (paired $2E→$35→$34)
; SFX3.2F $1D80 $1A9130 Key jingle (paired $2F→$33)
; SFX3.30 $1B53 $1A8F03 Magic zap / Plop
; SFX3.31 $1ACA $1A8E7A Sprite falling / Moldorm shuffle
; SFX3.32 $1A78 $1A8E28 BOING
; SFX3.33 $1D93 $1A9143 Key jingle (paired $2F→$33)
; SFX3.34 $1D66 $1A9116 Heart container jingle (paired $2E→$35→$34)
; SFX3.35 $1D73 $1A9123 Heart container jingle (paired $2E→$35→$34)
; SFX3.36 $1AA7 $1A8E57 Magic attack
; SFX3.37 $1DB4 $1A9164 Milestone jingle (paired $2D→$37)
; SFX3.38 $1E93 $1A9243 Chest reveal jingle (paired $1A→$38)
; SFX3.39 $2017 $1A93C7 Swish (paired $23→$39)
; SFX3.3A $20C0 $1A9470 Puzzle jingle (paired $1B→$3A)
; SFX3.3B $2176 $1A9526 Map (paired $10→$3B)
; SFX3.3C $248A $1A983A Item jingle (paired $0F→$3C→$3D→$3E→$3F)
; SFX3.3D $2494 $1A9844 Item jingle ($0F→$3C→$3D→$3E→$3F)
; SFX3.3E $249E $1A984E Item jingle (paired $0F→$3C→$3D→$3E→$3F)
; SFX3.3F $2480 $1A9830 Item jingle (paired $0F→$3C→$3D→$3E→$3F)
; -----------------------------------------------------------------------------
; Unused SFX
; ARAM ROM Description
; -----------------------------------------------------------------------------
; $1A5B $1A8E0B Noisy fsssh; bleeds into SFX3.1C
; $1D1C $1A90CC Radar ping
; $1EE2 $1A9292 Slide whistle / Chirp
; $1F13 $1A92C3 Cucco clucking
; $252D $1A98DD Brighter hammer peg
; $2533 $1A98E3 Bat wings flapping
; $2657 $1A9A07 Broken static
; $267C $1A9A2C Static; Loops
; $26A2 $1A9A52 Tuba jingle followed by a roar
; $277E $1A9B2E UFO winding up
; $279D $1A9B4D Distant whistling
; $27C9 $1A9B79 Bwuuuoow
; $27F6 $1A9BA6 Cat call
; $2807 $1A9BB7 Higher pitched cat call
; $2818 $1A9BC8 Reverse cat call
; $2829 $1A9BD9 Dial-up
; $2831 $1A9BE1 Bumper peg

View File

@@ -94,14 +94,13 @@ Sprite_BounceTowardPlayer:
}
; A = Speed, Y = Height
; Maintain altitude (float effect)
Sprite_FloatTowardPlayer:
{
; Maintain altitude (float effect)
TYA : STA.w SprHeight, X
JSL Sprite_MoveAltitude
JSL Sprite_ApplySpeedTowardsPlayer
JSL Sprite_MoveHoriz
JSL Sprite_MoveVert
JSL Sprite_Move
RTL
}
@@ -317,7 +316,23 @@ Sprite_CheckForPresence:
.done
PLX
RTL
}
; $00 - ID of the sprite to check
; $02 - Number of sprites found
Sprite_CountActiveById:
{
STZ $02
LDX.b #$10
.x_loop
DEX
LDA $0E20, X : CMP.b $00 : BEQ .increment
BRA .continue
.increment
INC $02
.continue
CPX.b #$00 : BNE .x_loop
RTL
}
; =========================================================
@@ -843,20 +858,21 @@ Sprite_Twinrova_FireAttack:
; $1DBDD6 - TrinexxFire_AddFireGarnish
AddFireGarnish:
{
INC.w SprDelay, X : LDA.w SprDelay, X : AND.b #$07 : BNE .return
LDA.b #$2A : JSL Sound_SetSfx2PanLong
LDA.b #$1D : PHX : TXY : TAX : STA $00
INC.w SprDelay, X : LDA.w SprDelay, X : AND.b #$07 : BNE .return
LDA.b #$2A : JSL Sound_SetSfx2PanLong
LDA.b #$1D : PHX : TXY : TAX : STA $00
.next_slot
LDA $7FF800, X : BEQ .free_slot ; Search for free Garnish slot
DEX : BPL .next_slot
DEC $0FF8 : BPL .use_search_index
LDA $00 : STA $0FF8
LDA $7FF800, X : BEQ .free_slot ; Search for free Garnish slot
DEX : BPL .next_slot
DEC $0FF8 : BPL .use_search_index
LDA $00 : STA $0FF8
.use_search_index
LDX $0FF8
LDX $0FF8
.free_slot
; Set garnish ID, set garnish handled flag, set garnish parent sprite
LDA.b #$10 : STA $7FF800, X : STA $0FB4 : TYA : STA $7FF92C, X
; Set garnish ID, set garnish handled flag
LDA.b #$10 : STA $7FF800, X : STA $0FB4
TYA : STA $7FF92C, X ; set garnish parent sprite
LDA.w SprX, Y : STA $7FF83C, X ; Garnish XL
LDA.w SprXH, Y : STA $7FF878, X ; Garnish XH
LDA.w SprY, Y : CLC : ADC.b #$10 : STA $7FF81E, X ; Garnish YL
@@ -865,7 +881,7 @@ AddFireGarnish:
PLX
.return
RTS
RTS
}
; =========================================================

View File

@@ -299,6 +299,18 @@ macro SetupDistanceFromSprite()
LDA.w SprY, X : STA $05
endmacro
macro ProbCheck(mask, label)
JSL GetRandomInt
AND.b #<mask>
BNE <label>
endmacro
macro ProbCheck2(mask, label)
JSL GetRandomInt
AND.b #<mask>
BEQ <label>
endmacro
macro DrawSprite()
{
JSL Sprite_PrepOamCoord

515
Core/sram.asm Normal file
View File

@@ -0,0 +1,515 @@
; Game state
; 0x00 - Very start; progress cannot be saved in this state
; 0x01 - Uncle reached
; 0x02 - Zelda rescued
; 0x03 - Agahnim defeated
GameState = $7EF3C5
; Red X on Hall of Secrets
; Red X on Kalyxo Pyramid
; .fmp h.i.
; f - fortress of secrets
; m - master sword
; p - pendant quest
; h - hall of secrets
; i - intro over, maku tree
OOSPROG = $7EF3D6
; Bitfield of less important progression
; .fbh .zsu
; u - Uncle
; s - Priest visited in sanc after Zelda is kidnapped again
; z - Zelda brought to sanc
; h - Uncle left Link's house (0: spawn | 1: gone)
; b - Book of Mudora obtained/mentioned; controls Aginah dialog
; f - Flipped by fortune tellers to decide fortune set to give
OOSPROG2 = $7EF3C6
; .... ...m
; m - maku tree has met link (0: no | 1: yes)
MakuTreeQuest = $7EF3D4
; Map icon
; 0x00 - Red X on Maku Tree/Maku Warp
; 0x01 - Toadstool Woods Crystal
; 0x02 - Kalyxo All Crystals
; 0x03 -
; 0x04 -
; 0x05 -
; 0x06 -
; 0x07 -
; 0x08 - Skull on GT | Climb Ganon's Tower
MapIcon = $7EF3C7
; 01 - Fishing Rod
; 02 - Portal Rod
CustomRods = $7EF351
; Free SRAM Block 38A-3C4
FishingRod = $7EF38A
; Collectibles
Bananas = $7EF38B
Pineapples = $7EF38D
RockMeat = $7EF38F
Seashells = $7EF391
Honeycomb = $7EF393
DekuSticks = $7EF395
TingleMaps = $7EF396
TingleId = $7EF397
; .dgi zktm
; m - Mushroom Grotto
; t - Tail Palace
; k - Kalyxo Castle
; z - Zora Temple
; i - Glacia Estate
; g - Goron Mines
; d - Dragon Ship
Scrolls = $7EF398
; Keep track of the previous scroll
; For re-reading old hints.
PrevScroll = $7EF39A
; .dts fwpb
; b - bean planted
; w - plant watered
; p - pollinated by bee
; f - first day
; s - second day
; t - third day
; d - done
MagicBeanProg = $7EF39B
; .... .cpw
; c - courage
; p - power
; w - wisdom
Dreams = $7EF410
; =========================================================
; Items
; =========================================================
; 0x00 - Nothing
; 0x01 - Bow
; 0x02 - Bow and arrows
; 0x03 - Silver bow
; 0x04 - Silver bow and arrows
; Picking the arrow and nonarrow versions is done by the HUD draw routines
Bow = $7EF340
; 0x00 - Nothing
; 0x01 - Blue boomerang
; 0x02 - Red boomerang
Boomerang = $7EF341
; 0x00 - Nothing
; 0x01 - Hookshot
; 0x02 - Goldstar (L/R)
Hookshot = $7EF342
; Number of bombs
Bombs = $7EF343
; 0x00 - Nothing
; 0x01 - Mushroom
; 0x02 - Powder
MagicPowder = $7EF344
; 0x00 - Nothing
; 0x01 - Fire rod
FireRod = $7EF345
; 0x00 - Nothing
; 0x01 - Ice rod
IceRod = $7EF346
; 0x00 - Nothing
; 0x01 - Zora Mask
ZoraMask = $7EF347
; 0x00 - Nothing
; 0x01 - Bunny Hood
BunnyHood = $7EF348
; 0x00 - Nothing
; 0x01 - Deku Mask
DekuMask = $7EF349
; 0x00 - Nothing
; 0x01 - Lamp
Lamp = $7EF34A
; 0x00 - Nothing
; 0x01 - Magic hammer
Hammer = $7EF34B
; 0x00 - Nothing
; 0x01 - Shovel
; 0x02 - Inactive flute
; 0x03 - Active flute
Flute = $7EF34C
; 0x00 - Nothing
; 0x01 - Roc's Feather
RocsFeather = $7EF34D
; 0x00 - Nothing
; 0x01 - Book of Mudora
Book = $7EF34E
; 0x00 - Nothing
; Other values indicate the index of the currently selected bottle
BottleIndex = $7EF34F
; 0x00 - Nothing
; 0x01 - Cane of Somaria
Somaria = $7EF350
; 0x00 - Nothing
; 0x01 - Cane of Byrna
Byrna = $7EF351
; 0x00 - Nothing
; 0x01 - Stone Mask
StoneMask = $7EF352
; 0x00 - Nothing
; 0x01 - Letter (works like mirror)
; 0x02 - Mirror
; 0x03 - Deleted triforce item
Mirror = $7EF353
; 0x00 - Lift 1 (nothing)
; 0x01 - Lift 2 (power glove)
; 0x02 - Lift 3 (titan's mitt)
Gloves = $7EF354
; 0x00 - Nothing
; 0x01 - Pegasus boots
; bit 2 of $7E:F379 also needs to be set to actually dash
Boots = $7EF355
; 0x00 - Nothing
; 0x01 - Zora's flippers
Flippers = $7EF356
; 0x00 - Nothing
; 0x01 - Moon pearl
Pearl = $7EF357
; 0x00 - Nothing
; 0x01 - Wolf Mask
WolfMask = $7EF358
; 0x00 - Nothing
; 0x01 - Fighter sword
; 0x02 - Master sword
; 0x03 - Tempered sword
; 0x04 - Golden sword
; 0xFF - Set when sword is handed in to smithy
Sword = $7EF359
; 0x00 - Nothing
; 0x01 - Fighter shield
; 0x02 - Fire shield
; 0x03 - Mirror shield
Shield = $7EF35A
; 0x00 - Green mail
; 0x01 - Blue mail
; 0x02 - Red mail
Armor = $7EF35B
; 0x00 - Nothing
; 0x01 - Mushroom (unused)
; 0x02 - Empty bottle
; 0x03 - Red potion
; 0x04 - Green potion
; 0x05 - Blue potion
; 0x06 - Fairy
; 0x07 - Bee
; 0x08 - Good bee
; 0x09 - Magic Bean
; 0x0A - Milk Bottle
Bottle1 = $7EF35C
Bottle2 = $7EF35D
Bottle3 = $7EF35E
Bottle4 = $7EF35F
; Number of rupees you have
; RUPEEDISP will be incremented or decremented until it reaches this value
Rupees = $7EF360
RupeesGoal = $7EF361
; Rupee count displayed on the HUD
RUPEEDISP = $7EF362
; Bitfields for ownership of various dungeon items
; SET 2 SET 1
; xced aspm wihb tg..
; c - Hyrule Castle
; x - Sewers
; a - Agahnim's Tower
;
; e - Eastern Palace
; d - Desert Palace
; h - Tower of Hera
;
; p - Palace of Darkness
; s - Swamp Palace
; w - Skull Woods
; b - Thieves' Town
; i - Ice Palace
; m - Misery Mire
; t - Turtle Rock
; g - Ganon's Tower
COMPASS1 = $7EF364
COMPASS2 = $7EF365
BIGKEY1 = $7EF366
BIGKEY2 = $7EF367
DNGMAP1 = $7EF368
DNGMAP2 = $7EF369
; Number of rupees donated to fairies
WISHRUP = $7EF36A
; Number of heart pieces towards next container
; Intended to be a value from 0-3
HEARTPC = $7EF36B
; Maximum health; 1 heart container = 0x08 HP
MAXHP = $7EF36C
; Current health
; You die at 0x00
; You also die at ≥0xA8
CURHP = $7EF36D
; Magic power, capped at 128
MagicPower = $7EF36E
; Current number of keys for whatever dungeon is loaded
KEYS = $7EF36F
; Number of capacity upgrades received
BOMBCAP = $7EF370
ARROWCAP = $7EF371
; Refills health
; Expects multiples of 8
HeartRefill = $7EF372
; Refills magic
ZAPME = $7EF373
; ... ..gbr
; r - Wisdom (red)
; b - Power (blue)
; g - Courage (green)
Pendants = $7EF374
; Refills bombs
BOMBME = $7EF375
; Refills arrows
SHOOTME = $7EF376
; Arrow count
Arrows = $7EF377
; Unused
UNUSED_7EF378 = $7EF378
; Displays ability flags
; lrtu pbsh
; h - Pray (unused and mostly cut off by HUD borders)
; s - Swim
; b - Run
; u - unused but set by default
; p - Pull
; t - Talk
; r - Read
; l - Lift
; This only controls the display of "LIFT.1"
; If this bit is unset but LIFT is set then the proper lift text is displayed
Ability = $7EF379
; Dungeon ID Legend
; Mushroom Grotto ID 0x0C (Palace of Darkness)
; Tail Palace ID 0x0A (Swamp Palace)
; Kalyxo Castle ID 0x10 (Skull Woods)
; Zora Temple ID 0x16 (Thieves Town)
; Glacia Estate 0x12 (Ice Palace)
; Goron Mines 0x0E (Misery Mire)
; Dragon Ship 0x18 (Turtle Rock)
; .wbs tipm
; p - Palace of Darkness
; s - Swamp Palace
; w - Skull Woods
; b - Thieves' Town
; i - Ice Palace
; m - Misery Mire
; t - Turtle Rock
Crystals = $7EF37A
; 0x00 - Normal magic
; 0x01 - Half magic
; 0x02 - Quarter magic
; Quarter magic has no special HUD graphic, unlike half magic
; Also, not everything is necessarily quarter magic
MagicUsage = $7EF37B
; Keys earned per dungeon
; Sewers and Castle are kept in sync
KEYSSEWER = $7EF37C
KEYSHYRULE = $7EF37D
KEYSEAST = $7EF37E
KEYSDESERT = $7EF37F
KEYSAGA = $7EF380
KEYSSWAMP = $7EF381
KEYSPOD = $7EF382
KEYSMIRE = $7EF383
KEYSWOODS = $7EF384
KEYSICE = $7EF385
KEYSHERA = $7EF386
KEYSTHIEF = $7EF387
KEYSTROCK = $7EF388
KEYSGANON = $7EF389
; Unused block of SRAM
UNUSED_7EF38A = $7EF38A
; Game state
; 0x00 - Very start; progress cannot be saved in this state
; 0x01 - Uncle reached
; 0x02 - Zelda rescued
; 0x03 - Agahnim defeated
GAMESTATE = $7EF3C5
; Bitfield of less important progression
; .fbh .zsu
; u - Uncle visited in secret passage; controls spawn (0: spawn | 1: gone)
; s - Priest visited in sanc after Zelda is kidnapped again
; z - Zelda brought to sanc
; h - Uncle has left Link's house; controls spawn (0: spawn | 1: gone)
; b - Book of Mudora obtained/mentioned; controls Aginah dialog
; f - Flipped by fortune tellers to decide which fortune set to give
PROGLITE = $7EF3C6
; Map icon to guide noob players
; 0x00 - Red X on castle | Save zelda
; 0x01 - Red X on Kakariko | Talk to villagers about elders
; 0x02 - Red X on Eastern | Talk to Sahasrahla
; 0x03 - Pendants and MS | Obtain the master sword
; 0x04 - Master sword on LW | Grab the master sword
; 0x05 - Skull on castle | Kill Agahnim
; 0x06 - Crystal on POD | Get the first crystal
; 0x07 - Crystals | Get all 7 crystals
; 0x08 - Skull on GT | Climb Ganon's Tower
MAPICON = $7EF3C7
; 0x00 - Link's house
; 0x01 - Sanctuary
; 0x02 - Prison
; 0x03 - Uncle
; 0x04 - Throne
; 0x05 - Old man cave
; 0x06 - Old man home
SpawnPoint = $7EF3C8
; Another bitfield for progress
; t.dp s.bh
; t - smiths are currently tempering sword
; d - swordsmith rescued
; p - purple chest has been opened
; s - stumpy has been stumped
; b - bottle purchased from vendor
; h - bottle received from hobo
PROGLITE2 = $7EF3C9
; .d.. ....
; d - World (0: Light World | 1: Dark World)
SAVEWORLD = $7EF3CA
; Not used
UNUSED_7EF3CB = $7EF3CB
; Current follower ID
FOLLOWER = $7EF3CC
; Cache of follower properties
FOLLOWCYL = $7EF3CD
FOLLOWCYH = $7EF3CE
FOLLOWCXL = $7EF3CF
FOLLOWCXH = $7EF3D0
; Copies INDOORS
FOLLOWERINOUT = $7EF3D1
; Copies LAYER
FOLLOWERCLAYER = $7EF3D2
; Indicates the follower is currently following
; 0x00 - Following
; 0x80 - Not following
FOLLOWERING = $7EF3D3
; Unused
UNUSED_7EF3D4 = $7EF3D4
UNUSED_7EF3D5 = $7EF3D5
UNUSED_7EF3D6 = $7EF3D6
UNUSED_7EF3D7 = $7EF3D7
UNUSED_7EF3D8 = $7EF3D8
; Player name
NAME1L = $7EF3D9
NAME1H = $7EF3DA
NAME2L = $7EF3DB
NAME2H = $7EF3DC
NAME3L = $7EF3DD
NAME3H = $7EF3DE
NAME4L = $7EF3DF
NAME4H = $7EF3E0
; Save file checksum; expected to be $55AA
SCHKSML = $7EF3E1
SCHKSMH = $7EF3E2
; Games played in each dungeon
GPSEWER = $7EF3E3
GPHYRULE = $7EF3E5
GPEAST = $7EF3E7
GPDESERT = $7EF3E9
GPAGA = $7EF3EB
GPSWAMP = $7EF3ED
GPPOD = $7EF3EF
GPMIRE = $7EF3F1
GPWOODS = $7EF3F3
GPICE = $7EF3F5
GPHERA = $7EF3F7
GPTHIEF = $7EF3F9
GPTROCK = $7EF3FB
GPGANON = $7EF3FD
; Games played for current segment
GPNOW = $7EF3FF
; Total games played
; No display on file select if 0xFFFF
GAMESPLAYED = $7EF401
; Big unused block
UNUSED_7EF403 = $7EF403
DEATHS_MAXED = $7EF405
; Inverse checksum for save file
SAVEICKSML = $7EF4FE
SAVEICKSMH = $7EF4FF

View File

@@ -30,130 +30,18 @@ base off
; =========================================================
function RGBto555(R,G,B) = ((R/8)<<10)|((G/8)<<5)|(B/8) ; zarby
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0)) ; kan
function menu_offset(y,x) = (y*64)+(x*2)
; =========================================================
; SRAM in Use
SaveRam:
{
; Game state
; 0x00 - Very start; progress cannot be saved in this state
; 0x01 - Uncle reached
; 0x02 - Zelda rescued
; 0x03 - Agahnim defeated
GAMESTATE = $7EF3C5
; Red X on Hall of Secrets
; Red X on Kalyxo Pyramid
; .fmp h.i.
; f - fortress of secrets
; m - master sword
; p - pendant quest
; h - hall of secrets
; i - intro over, maku tree
OOSPROG = $7EF3D6
; Bitfield of less important progression
; .fbh .zsu
; u - Uncle
; s - Priest visited in sanc after Zelda is kidnapped again
; z - Zelda brought to sanc
; h - Uncle left Link's house (0: spawn | 1: gone)
; b - Book of Mudora obtained/mentioned; controls Aginah dialog
; f - Flipped by fortune tellers to decide fortune set to give
OOSPROG2 = $7EF3C6
; .... ...m
; m - maku tree has met link (0: no | 1: yes)
MakuTreeQuest = $7EF3D4
; Map icon
; 0x00 - Red X on Maku Tree/Maku Warp
; 0x01 - Toadstool Woods Crystal
; 0x02 - Kalyxo All Crystals
; 0x03 -
; 0x04 -
; 0x05 -
; 0x06 -
; 0x07 -
; 0x08 - Skull on GT | Climb Ganon's Tower
MapIcon = $7EF3C7
; Dungeon ID Legend
; Mushroom Grotto ID 0x0C (Palace of Darkness)
; Tail Palace ID 0x0A (Swamp Palace)
; Kalyxo Castle ID 0x10 (Skull Woods)
; Zora Temple ID 0x16 (Thieves Town)
; Glacia Estate 0x12 (Ice Palace)
; Goron Mines 0x0E (Misery Mire)
; Dragon Ship 0x18 (Turtle Rock)
; .wbs tipm
; p - Palace of Darkness
; s - Swamp Palace
; w - Skull Woods
; b - Thieves' Town
; i - Ice Palace
; m - Misery Mire
; t - Turtle Rock
CRYSTALS = $7EF37A
; 01 - Fishing Rod
; 02 - Portal Rod
CustomRods = $7EF351
; Free SRAM Block 38A-3C4
FishingRod = $7EF38A
; Collectibles
Bananas = $7EF38B
Pineapples = $7EF38D
RockMeat = $7EF38F
Seashells = $7EF391
Honeycomb = $7EF393
DekuSticks = $7EF395
TingleMaps = $7EF396
TingleId = $7EF397
; .dgi zktm
; m - Mushroom Grotto
; t - Tail Palace
; k - Kalyxo Castle
; z - Zora Temple
; i - Glacia Estate
; g - Goron Mines
; d - Dragon Ship
Scrolls = $7EF398
; Keep track of the previous scroll
; For re-reading old hints.
PrevScroll = $7EF39A
; .dts fwpb
; b - bean planted
; w - plant watered
; p - pollinated by bee
; f - first day
; s - second day
; t - third day
; d - done
MagicBeanProg = $7EF39B
; .... .cpw
; c - courage
; p - power
; w - wisdom
Dreams = $7EF410
; Current Dream ID (0x00-0x03)
CurrentDream = $0426
; Current Song
CurrentSong = $030F
}
; 01 - Song of Healing
; 02 - Song of Time
; 03 - Song of Storms
SongFlag = $FE
; =========================================================
; The record format for the low table is 4 bytes:
@@ -180,10 +68,8 @@ OamPtrH = $92
OamBackup = $0FEC
; =========================================================
; Sprite RAM and Functions
; Sprite RAM
SpriteRam:
{
SprY = $0D00
SprX = $0D10
SprYH = $0D20
@@ -215,9 +101,7 @@ SprCustom = $1CC0 ;
; Used in sprite state 0x03 (falling in water)
; used as delay in most of the sprites
SprDelay = $0E80
; Enemy color flash buffer
SprFlash = $0B89
SprFlash = $0B89 ; Enemy color flash buffer
SprTimerA = $0DF0 ; Action, decreased by 1 each frame
SprTimerB = $0E00 ; Animation, decreased by 1 each frame
@@ -323,14 +207,6 @@ SprFreeze = $0FC1 ; Seems to freeze sprites
; 0x07 32 24 16
; 0x08 24 16 8
; 0x09 64 48 24
;
; Higher values are invalid, but here's what they are:
; 0x0A 169 48 32
; 0x0B 142 246 169
; 0x0C 144 133 71
; 0x0D 169 16 133
; 0x0E 70 169 33
; 0x0F 34 124 187
SprBump = $0CD2
; Damage sprite is enduring
@@ -344,9 +220,7 @@ SprDmgTaken = $0CE2
; d - If hit from front, deflect Ice Rod, Somarian missile,
; boomerang, hookshot, and sword beam, and arrows stick in
; it harmlessly. If bit 1 is also set, frontal arrows will
; instead disappear harmlessly. No monsters have bit 4 set
; in the ROM data, but it was functional and interesting
; enough to include.
; instead disappear harmlessly.
; e - If set, sprite collides with less tiles than usual
; f - If set, impervious to sword and hammer type attacks
; g - If set, impervious to arrows, but may have other additional meanings.
@@ -378,10 +252,8 @@ SprBulletproof = $0BA0
SprRoom = $0C9A ;X W Contains the area or room id the sprite has been loaded in
SprDrop = $0CBA ;X W 00: Drop nothing, 01: drop normal key, 03: Drop green rupee, OtherValues: Drop big key
}
; Overlord
OverlordId = $0B00
OverlordX = $0B08
OverlordXH = $0B10
@@ -392,16 +264,17 @@ OverlordTimerA = $0B28
OverlordTimerB = $0B30
OverlordTimerC = $0B38
; =========================================================
; Sprite Functions
SpriteData_OAMProp = $0DB359
; Clear all properties for sprites
SpritePrep_ResetProperties = $0DB871
; =========================================================
; set the oam coordinate for the sprite draw
Sprite_PrepOamCoord = $06E416
; =========================================================
; Draw the sprite depending of the position of the player
; (if he has to be over or under link)
Sprite_OAM_AllocateDeferToPlayer = $06F864
@@ -415,24 +288,18 @@ OAM_AllocateFromRegionF = $0DBA94 ; Above
Sprite_DrawMultiple_quantity_preset = $05DF70
; =========================================================
; check if the sprite is getting damage from player or items
Sprite_CheckDamageFromPlayer = $06F2AA
; =========================================================
; check if the sprite is touching the player to damage
Sprite_CheckDamageToPlayer = $06F121
; =========================================================
; damage the player everywhere on screen?
Sprite_AttemptDamageToPlayerPlusRecoil = $06F41F
; =========================================================
; makes all the sprites on screen shaking
ApplyRumbleToSprites = $0680FA
; =========================================================
Sprite_MoveLong = $1D808C
Sprite_ProjectSpeedTowardsPlayer = $06EA1A
@@ -463,74 +330,59 @@ ans_high = $0C
CheckIfHitBoxesOverlap = $0683E6
; =========================================================
; $0FD8 = sprite's X coordinate
; $0FDA = sprite's Y coordinate
Sprite_Get16BitCoords_Local = $0684C1
Sprite_Get_16_bit_Coords = $0684BD
; =========================================================
; load / draw a 16x16 sprite
Sprite_PrepAndDrawSingleLarge = $06DBF0
; =========================================================
; load / draw a 8x8 sprite
Sprite_PrepAndDrawSingleSmall = $06DBF8
; =========================================================
; draw shadow (requires additional oam allocation)
Sprite_DrawShadow = $06DC54
Sprite_DrawWaterRipple = $059FFA
Sprite_DrawRippleIfInWater = $1EFF8D
; =========================================================
; check if the sprite is colliding with a solid tile set $0E70, X
; ----udlr , u = up, d = down, l = left, r = right
Sprite_CheckTileCollision = $06E496
Sprite_CheckTileCollision_long = $06E496
; =========================================================
; $00[0x02] - Entity Y coordinate
; $00[0x02] - Entity Y coordinate
; $02[0x03?] - Entity X coordinate
; $0FA5
; $0FA5 - Tile ID result
Sprite_GetTileAttr = $06E87B
; =========================================================
; check if the sprite is colliding with a solid sloped tile
Sprite_CheckSlopedTileCollision = $06E8FD
; =========================================================
; set the velocity x,y towards the player (A = speed)
Sprite_ApplySpeedTowardsPlayer = $06EA12
; =========================================================
; \return $0E is low byte of player_y_pos - sprite_y_pos
; \return $0F is low byte of player_x_pos - sprite_x_pos
Sprite_DirectionToFacePlayer = $06EAA0
; =========================================================
; if Link is to the left of the sprite, Y = 1, otherwise Y = 0.
Sprite_IsToRightOfPlayer = $06EACD
; =========================================================
; return Y=1 sprite is below player, otherwise Y = 0
Sprite_IsBelowPlayer = $06EAE4
; =========================================================
; $06 = sprite's Y coordinate
; $07 = sprite's X coordinate
Sprite_IsBelowLocation = $06EB1D
; =========================================================
; check damage done to player if they collide on same layer
Sprite_CheckDamageToPlayerSameLayer = $06F129
; =========================================================
; check damage done to player if they collide even if they are not on same layer
Sprite_CheckDamageToPlayerIgnoreLayer = $06F131
; =========================================================
; play a sound loaded in A
Sound_SetSfx1PanLong = $0DBB6E
Sound_SetSfx2PanLong = $0DBB7C
@@ -551,41 +403,31 @@ Sprite_SpawnDynamically_slot_limited = $1DF65F
Sprite_SetSpawnedCoords = $09AE64
Sprite_SetSpawnedCoordinates = $09AE64
; =========================================================
; move the sprite if he stand on a conveyor belt
Sprite_ApplyConveyorAdjustment = $1D8010
; =========================================================
; Setup sprite hitbox for comparison with scrap ram
Sprite_SetupHitBoxLong = $0683EA
; =========================================================
; set tile of dungeon
Dungeon_SpriteInducedTilemapUpdate = $01E7A9
; =========================================================
; player can't pass through the sprite
Sprite_BehaveAsBarrier = $1EF4F3
Sprite_PlayerCantPassThrough = $1EF4F3
; =========================================================
; player can't hookshot to that sprite
Sprite_CancelHookshot = $0FF540
Sprite_NullifyHookshotDrag = $0FF540
; =========================================================
; show a message box without any condition
; A = low byte of message ID to use.
; Y = high byte of message ID to use.
Sprite_ShowMessageUnconditional = $05E219
; =========================================================
; show a message if we press A and face the sprite
; A = low byte of message ID to use.
; Y = high byte of message ID to use.
Sprite_ShowSolicitedMessage = $05E1A7
Sprite_ShowSolicitedMessageIfPlayerFacing = $05E1A7
; =========================================================
; show a message if we touch the sprite
; should be used with Sprite_PlayerCantPassThrough
; A = low byte of message ID to use.
@@ -605,6 +447,8 @@ Sprite_KillFriends = $09EF56
Sprite_KillSelf = $09F1F8
Dungeon_SpriteInducedTilemapUpdate = $01E7A9
; =========================================================
; $04 = X
; $05 = HighX
@@ -644,10 +488,9 @@ Sprite_TrackBodyToHead = $05DCA2
GetRandomInt = $0DBA71
Sprite_SpawnFireball = $0DDA06
Sprite_SpawnSmallSplash = $1EA820
Sprite_SpawnSparkleGarnish = $058008
Sprite_SpawnPoofGarnish = $05AB9C
Sprite_CheckIfLifted = $06AA0C
@@ -655,12 +498,12 @@ Sprite_TransmuteToBomb = $06AD50
Sprite_RepelDash = $079291
Sprite_SpawnPoofGarnish = $05AB9C
Sprite_LoadGfxProperties = $00FC41
ThrownSprite_TileAndSpriteInteraction_long = $06DFF2
Overworld_DrawMap16_Persist = $1BC97C
; =========================================================
; Local functions which may be useful for sprites
; Sprite_AttemptZapDamage - 06EC02
@@ -694,6 +537,14 @@ UWDEATH = $7FDF80
RebuildHUD_long = $0DFA58
ForcePrizeDrop_long = $06FA54
TileDetect_BigArea_long = $07CF0A
Follower_Initialize = $099EFC
HandleFollowersAfterMirroring = $07AAA2
; =========================================================
; Controllers
@@ -734,199 +585,6 @@ ButtonAFlag = $3B ; bit7: Button A is down (A-------)
; Desert tablet: 0x0001
BFLAG = $3C
; =========================================================
; Link RAM and Functions
LinkY = $20 ; Position Y of link
LinkYH = $21 ; High position Y of link
LinkX = $22 ; Position X of link
LinkXH = $23 ; High position X of link
LinkZ = $24 ; Position Z of link
; ----UDLR
; [U Up][D Down][L Left][R Right]
; Direction link is pushing against
LinkPushDir = $26
; Link's recoiling speed
; By themselves, these do not do much
; They will be reset every frame Link is not in recoil state
LinkRecoilY = $27
LinkRecoilX = $28
LinkRecoilZ = $29
; Link's subpixel velocity
; when this value overflows, Link's main velocity gains an extra pixel
; reset on direction change, so not really a positional subpixel
LinkSubVelY = $2A
LinkSubVelX = $2B
; Direction link is facing
; 00:Up, 02:Down, 04:Left, 06:Right
LinkFaceDir = $2F
; Last direction link moved towards
; 00:Up, 01:Down, 02:Left, 03:Right
LinkLastDir = $66
; ----UDLR
; [U Up][D Down][L Left][R Right]
; direction link is "walking towards"
LinkMoveDir = $67
; 0: Not moving, 1: Moving cardinal, 2: Moving diagonally
LinkMoveInfo = $6A
LinkVisible = $4B ; if set to 0x0C link will be invisible
LinkBunnyGfx = $56 ; if set to 1 link will be bunny, otherwise link
; 0x00: normal speed, 0x01-0x0F: slow,<2C>> 0x10:fast
LinkSpeed = $57
; 0x00: normal speed, 0x02: walking on stair speed, 0x10: dashing speed
LinkSpeedTbl = $5E
; if is set to 0x02 or 0x03 link is falling
LinkFalling = $5B
FallTimer = $5C
; LinkState_Default : 0x00
; LinkState_Pits : 0x01
; LinkState_Recoil : 0x02
; LinkState_SpinAttack : 0x03
; LinkState_Swimming : 0x04 (ZoraDive)
; LinkState_OnIce : 0x05
; LinkState_Recoil : 0x06
; LinkState_Zapped : 0x07
; LinkState_UsingEther : 0x08
; LinkState_UsingBombos : 0x09
; LinkState_UsingQuake : 0x0A (DekuHover)
; LinkState_HoppingSouthOW : 0x0B
; LinkState_HoppingHorizontallyOW : 0x0C
; LinkState_HoppingDiagonallyUpOW : 0x0D
; LinkState_HoppingDiagonallyDownOW : 0x0E
; LinkState_0F : 0x0F
; LinkState_0F : 0x10
; LinkState_Dashing : 0x11
; LinkState_ExitingDash : 0x12
; LinkState_Hookshotting : 0x13
; LinkState_CrossingWorlds : 0x14
; LinkState_ShowingOffItem : 0x15
; LinkState_Sleeping : 0x16
; LinkState_Bunny : 0x17
; LinkState_HoldingBigRock : 0x18
; LinkState_ReceivingEther : 0x19
; LinkState_ReceivingBombos : 0x1A
; LinkState_ReadingDesertTablet : 0x1B
; LinkState_TemporaryBunny : 0x1C
; LinkState_TreePull : 0x1D
; LinkState_SpinAttack : 0x1E
LinkState = $5D
; 0: Link is not in a doorway
; 1: is in a vertical doorway
; 2: is in horizontal doorway
LinkDoorway = $6C
; 0: Nothing
; 1: a hand in the air
; 2: 2 hands in the air (like getting triforce)
LinkGrabGfx = $02DA
; if not 0 add a poof gfx on link
LinkPoofGfx = $02E1
; Bunny timer for link before transforming back
LinkBunTimer = $02E2
; if not 0 prevent link from moving and opening the menu
LinkMenuMove = $02E4
; if not 0 prevent link from getting any damages from sprites
LinkDamage = $037B
; ----CCCC
; [C Touching chest id]
LinkColChest = $02E5
; 0: Not on somaria platform, 2: On somaria platform
LinkSomaria = $02F5
; BP-AETHR
; [B Boomerang][P Powder]
; [A Bow&Arrows][E UnusedItem]
; [T UnusedItem][H Hammer][R Rods]
LinkItemUse = $0301
LinkItemY = $0303 ; Currently equipped item on the Y button
; 0: Nothing, 1:Picking up something, 2: Throwing something
LinkCarrying = $0308
; .... ..tl
; t - tossing object
; l - lifting object
LinkCarryOrToss = $0309
; 0: Normal
; 1: Shovel
; 2: Praying
; 4: Hookshot
; 8: Somaria
; 10: Bug net
; 20: Read book
; 40: Tree pull
LinkAnim = $037A
LinkWallCheat = $037F ; If non zero can walk through walls
; Animation step/graphics for spin attack animations; including medallions.
LinkSpinGfx = $031C
LinkSpinStep = $031D
; =========================================================
Link_ReceiveItem = $0799AD ; Y = item id
Link_CancelDash = $0791B9
Link_Initialize = $07F13C
Link_ResetProperties_A = $07F1A3
Link_ResetProperties_B = $07F1E6
Link_ResetProperties_C = $07F1FA
Link_ResetSwimmingState = $07983A
Link_ResetStateAfterDamagingPit = $07984B
Link_ItemReset_FromOverworldThings = $07B107
Link_CalculateSFXPan = $0DBB67
; Used by Agahnim2 fight
CallForDuckIndoors = $07A45F
ApplyLinksMovementToCamera = $07E9D3
HandleIndoorCameraAndDoors = $07F42F
Link_HandleVelocityAndSandDrag = $07E3DD
Link_HandleMovingAnimation_FullLongEntry = $07E6A6
Link_HandleMovingAnimation_General = $07E765
Link_HandleMovingAnimationSwimming = $07E7FA
LinkHop_FindArbitraryLandingSpot = $07E370
HandleFollowersAfterMirroring = $07AAA2
TileDetect_BigArea_long = $07CF0A
Hookshot_CheckTileCollision = $07D576
Refund_Magic = $07B0E9
CheckIfLinkIsBusy = $07F4D0
Follower_Initialize = $099EFC
; =========================================================
; Ancilla
@@ -1097,5 +755,4 @@ Sparkle_PrepOAMFromRadial = $08DA17
Fireball_SpawnTrailGarnish = $09B020
SpriteSFX_QueueSFX2WithPan = $0DBB7C
SpriteSFX_QueueSFX3WithPan = $0DBB8A

View File

@@ -309,3 +309,107 @@ db $1A, $0A, $00, $00 ; 0x25 Dragon Ship
db $00, $00, $03, $02 ; 0x26
db $0E, $00, $03, $07 ; 0x27
db $1A, $05, $05, $0B ; 0x28 Dragon Ship
PrizePackRarities:
{
db $01 ; pack 1 : 50%
db $01 ; pack 2 : 50%
db $01 ; pack 3 : 50%
db $00 ; pack 4 : 100%
db $01 ; pack 5 : 50%
db $01 ; pack 6 : 50%
db $01 ; pack 7 : 50%
db $00 ; pack 8 : 100% - doesn't exist
}
ItemDropBounceProps:
{
db $24 ; GREEN RUPEE
db $24 ; BLUE RUPEE
db $24 ; RED RUPEE
db $20 ; BOMB REFILL 1
db $20 ; BOMB REFILL 4
db $20 ; BOMB REFILL 8
db $24 ; SMALL MAGIC DECANTER
db $24 ; LARGE MAGIC DECANTER
db $24 ; ARROW REFILL 5
db $24 ; ARROW REFILL 10
db $00 ; FAIRY
db $24 ; SMALL KEY
db $20 ; BIG KEY
db $20 ; STOLEN SHIELD
}
PrizePackPrizes:
{
.pack_1
db $D8 ; SPRITE D8 - heart
db $D8 ; SPRITE D8 - heart
db $D8 ; SPRITE D8 - heart
db $D8 ; SPRITE D8 - heart
db $D9 ; SPRITE D9 - green rupee
db $D8 ; SPRITE D8 - heart
db $D8 ; SPRITE D8 - heart
db $D9 ; SPRITE D9 - green rupee
.pack_2
db $DA ; SPRITE DA - blue rupee
db $D9 ; SPRITE D9 - green rupee
db $DA ; SPRITE DA - blue rupee
db $DB ; SPRITE DB - red rupee
db $DA ; SPRITE DA - blue rupee
db $D9 ; SPRITE D9 - green rupee
db $DA ; SPRITE DA - blue rupee
db $DA ; SPRITE DA - blue rupee
.pack_3
db $E0 ; SPRITE E0 - full magic
db $DF ; SPRITE DF - small magic
db $DF ; SPRITE DF - small magic
db $DA ; SPRITE DA - blue rupee
db $E0 ; SPRITE E0 - full magic
db $DF ; SPRITE DF - small magic
db $D8 ; SPRITE D8 - heart
db $DF ; SPRITE DF - small magic
.pack_4
db $DC ; SPRITE DC - 1 bomb
db $DC ; SPRITE DC - 1 bomb
db $DC ; SPRITE DC - 1 bomb
db $DD ; SPRITE DD - 4 bombs
db $DC ; SPRITE DC - 1 bomb
db $DC ; SPRITE DC - 1 bomb
db $DE ; SPRITE DE - 8 bombs
db $DC ; SPRITE DC - 1 bomb
.pack_5
db $E1 ; SPRITE E1 - 5 arrows
db $D8 ; SPRITE D8 - heart
db $E1 ; SPRITE E1 - 5 arrows
db $E2 ; SPRITE E2 - 10 arrows
db $E1 ; SPRITE E1 - 5 arrows
db $D8 ; SPRITE D8 - heart
db $E1 ; SPRITE E1 - 5 arrows
db $E2 ; SPRITE E2 - 10 arrows
.pack_6
db $DF ; SPRITE DF - small magic
db $D9 ; SPRITE D9 - green rupee
db $D8 ; SPRITE D8 - heart
db $E1 ; SPRITE E1 - 5 arrows
db $DF ; SPRITE DF - small magic
db $DC ; SPRITE DC - 1 bomb
db $D9 ; SPRITE D9 - green rupee
db $D8 ; SPRITE D8 - heart
.pack_7
db $D8 ; SPRITE D8 - heart
db $E3 ; SPRITE E3 - fairy
db $E0 ; SPRITE E0 - full magic
db $DB ; SPRITE DB - red rupee
db $DE ; SPRITE DE - 8 bombs
db $D8 ; SPRITE D8 - heart
db $DB ; SPRITE DB - red rupee
db $E2 ; SPRITE E2 - 10 arrows
}

View File

@@ -39,23 +39,20 @@ HouseTag_Main:
LDA.b #$08 : STA $7EE000 ; Set the time to 8:00am
LDA.b #$03 : STA.w $012C ; Play the deku tree music
; -------------------------------
; Set Link's coordinates to this specific position.
LDA.b #$40 : STA $0FC2
LDA.b #$09 : STA $0FC3
LDA.b #$5A : STA $0FC4
LDA.b #$21 : STA $0FC5
; "Accept our quest, Link!"
LDA.b #$1F : LDY.b #$00
JSL $05E219 ; Sprite_ShowMessageUnconditional
JSL Sprite_ShowMessageUnconditional
INC.b StoryState
RTS
}
HouseTag_WakeUpPlayer:
{
; Lighten the screen gradually and then wake Link up partially
@@ -80,7 +77,7 @@ HouseTag_Main:
LDA $7EF3C6 : ORA.b #$10 : STA $7EF3C6
; Set the game mode
LDA #$00 : STA $7EF3C5 ; (0 - intro, 1 - pendants, 2 - crystals)
LDA #$00 : STA GameState ; (0 - intro, 1 - pendants, 2 - crystals)
LDA #$00 : STA $7EF3CC ; disable telepathic message
JSL Sprite_LoadGfxProperties
RTS

View File

@@ -1,8 +1,6 @@
;================================================
;use holes_0 tag routine
; DO NOT USE holes_1 tag (broken because of holes_0 tag)
;==================================================
; ================================================
; use holes_0 tag routine
org $01CC00 ; holes_0 tag routine
JSL NewTagRoutine
@@ -17,10 +15,10 @@ NewTagRoutine:
LDA.b $20 : CLC : ADC #$10 : AND.b #$F0 : STA.w $0224 ; y
LDA.b $22 : CLC : ADC #$08 : AND.b #$F0 : STA.w $0225 ; x
LDA.w $0224 : CMP.w $0226 : BNE .differentTile
LDA.w $0225 : CMP.w $0227 : BNE .differentTile
JMP .sameTile
.differentTile
LDA.w $0224 : CMP.w $0226 : BNE .different_tile
LDA.w $0225 : CMP.w $0227 : BNE .different_tile
JMP .same_tile
.different_tile
; do code here for tile code
REP #$30
@@ -32,7 +30,7 @@ NewTagRoutine:
LDA.l $7E2000, X : CMP.w #$0DED : BNE +
JSR update_star_tile
JSR SearchForEmptyStar
BRA .doneupdate
BRA .done_update
+
LDA.l $7E2000, X : CMP.w #$0DEE : BNE +
;JSR SearchToRedStar
@@ -43,10 +41,10 @@ NewTagRoutine:
;JSR SearchForEmptyStar
+
.doneupdate
.done_update
SEP #$30
.sameTile
.same_tile
LDA.w $0224 : STA.w $0226 ; Last Y
LDA.w $0225 : STA.w $0227 ; Last X
@@ -93,26 +91,19 @@ update_red_star_tile:
replace_red_tile_star:
{
LDX.w $1000
LDA.w #$19EE : STA.w $1006,X
LDA.w #$99EE : STA.w $100C,X
LDA.w #$59EE : STA.w $1012,X
LDA.w #$D9EE : STA.w $1018,X
LDA.w #$19EE : STA.w $1006, X
LDA.w #$99EE : STA.w $100C, X
LDA.w #$59EE : STA.w $1012, X
LDA.w #$D9EE : STA.w $1018, X
LDX.b $06
LDA.w #$19EE : STA.l $7E2000, X
LDA.w #$99EE : STA.l $7E2080, X
LDA.w #$59EE : STA.l $7E2002, X
LDA.w #$D9EE : STA.l $7E2082, X
AND.w #$03FF
TAX
LDA.l $7EFE00,X
AND.w #$00FF
STA.b $08
STA.b $09
AND.w #$03FF : TAX
LDA.l $7EFE00,X : AND.w #$00FF
STA.b $08 : STA.b $09
JMP replace_tile_continue
}

View File

@@ -18,22 +18,65 @@ MagicBeanGfx:
MagicBeanSwapDynamicGfx:
{
PHX
PHP
PHX : PHP
REP #$30
LDX #$01BE
--
LDA.l MagicBeanGfx, X : STA.l $7EA480, X
DEX : DEX
BPL --
PLP
PLX
DEX : DEX : BPL --
PLP : PLX
RTL
}
Link_ConsumeMagicBagItem:
{
LDA.w $020B
JSL JumpTableLocal
dw Link_Banana
dw Link_Pineapple
dw Link_RockMeat
dw Link_Seashells
dw Link_Honeycombs
dw Link_DekuSticks
Link_Banana:
{
LDA.l CURHP : CMP.w MAXHP : BCS +
LDA.l CURHP : CLC : ADC.b #$10 : STA.l CURHP
LDA.b #$0D : STA.w $012F ; HUD Heart SFX
+
RTS
}
Link_Pineapple:
{
RTS
}
Link_RockMeat:
{
RTS
}
Link_Seashells:
{
RTS
}
Link_Honeycombs:
{
RTS
}
Link_DekuSticks:
{
RTS
}
}
pushpc
; League of its own
incsrc "Items/ice_rod.asm"

View File

@@ -9,21 +9,45 @@
; a - BG4 enabled
; b - BG3 enabled
; c - BG2 enabled
; d - (BG1 disabled) --> only works properly if the room uses the feature "BG2 on Top"
; d - (BG1 disabled) --> only works if the room uses the feature "BG2 on Top"
;
; Originally by XaserLE, updated by scawful
; =========================================================
; long subroutine that is executed every frame
; LinkItem_Book
; Desert Book activation trigger
org $07A484 ; LDA $02ED : BNE BRANCH_BETA
NOP #01
JML LinkItem_BookOfSecrets
return_pos:
org $068365
JSL LinkItem_SecretsBook ; overwrite it (originally JSL $099F91)
; =========================================================
pullpc
LinkItem_BookOfSecrets:
{
; set link in praying mode
; LDA.b #$02 : STA.w $037A
; LDA #$FF : STA $8C
; LDA #$00 : STA $7EE00E
; STZ $1D : STZ $9A
; STZ.w $012D
LinkItem_SecretsBook:
; Are we on the castle map?
LDA $8A : CMP.b #$1B : BNE +
; Is there an overlay playing?
LDA $04C6 : BNE +
; If not, start the castle entrance animation
LDA.b #$02 : STA.w $04C6 ; Set the overlay
STZ.b $B0 : STZ.b $C8
; Cache the camera
REP #$20
LDA.w $0618 : STA.w CameraCache
SEP #$20
+
JML $07A493 ; return do not !
}
Dungeon_RevealSecrets:
{
; Check if we are in a building
LDA $1B : AND #$01 : BEQ .end
@@ -47,7 +71,7 @@ LinkItem_SecretsBook:
; ----------
.end
JSL $099F91
; @ $068365, JSL $099F91 old hook
RTL
}

View File

@@ -14,8 +14,8 @@ org $07A15B
LinkItem_NewBottle:
{
; Check if we have a bottle or not
LDA $7EF34F : DEC A : TAX
LDA $7EF35C, X : BEQ .exit
LDA.l BottleIndex : DEC A : TAX
LDA.l Bottle1, X : BEQ .exit
; Check if the bottle is empty
CMP.b #$03 : BCC .empty_bottle
@@ -103,7 +103,7 @@ LinkItem_Bottles:
LDA.b $3A : AND.b #$BF : STA.b $3A
; Check if we have a bottle or not
LDA.l $7EF34F : DEC A : TAX
LDA.l BottleIndex : DEC A : TAX
LDA.l $7EF35C, X : BEQ NetExit ; (RTS)
CMP.b #$03 : BCC .LinkItem_UselessBottle

View File

@@ -1000,7 +1000,7 @@ ApplyGoldstarDamageClass:
CheckForSwitchToGoldstar:
{
%CheckNewR_ButtonPress() : BEQ .continue
JSL CheckNewRButtonPress : BEQ .continue
LDA.l $7EF342 : CMP.b #$02 : BNE .continue
LDA.w GoldstarOrHookshot : CMP.b #$01 : BEQ .set_hookshot
LDA.b #$01 : STA.w GoldstarOrHookshot

View File

@@ -148,17 +148,18 @@ LinkItem_NewFlute:
JMP .song_of_storms
.song_of_time
LDA.b #$27 : JSR $802F ; Player_DoSfx3
LDA.b #$02 : STA $FE
LDA.b #$02 : STA.b SongFlag
RTS
.song_of_healing
LDA.b #$13 : JSR Player_DoSfx2
LDA.b #$01 : STA $FE
LDA.b #$01 : STA.b SongFlag
RTS
.song_of_storms
; Play the Song of Storms SFX
LDA.b #$2F : JSR Player_DoSfx2
LDA.b #$03 : STA.b SongFlag
JSL OcarinaEffect_SummonStorms
RTS
@@ -247,7 +248,6 @@ OcarinaEffect_SummonStorms:
{
; Dismiss the rain in the Zora area where it is already raining
LDA.w $8A : CMP.b #$00 : BEQ .check_for_magic_bean
CMP.b #$1E : BEQ .checkForEvent
CMP.b #$2E : BEQ .dismiss_storms
CMP.b #$2F : BEQ .dismiss_storms
; Check for areas which should not be allowed to have rain
@@ -280,10 +280,6 @@ OcarinaEffect_SummonStorms:
LDA.b #$3C : STA.w $012E ; Error beep
RTL
.checkForEvent
JSR CheckForZoraEvent : BCC .error_beep
JMP .dismiss_storms
.check_for_magic_bean
LDA.b #Sprite_BeanVendor : LDX.b #$00
JSL Sprite_CheckForPresence : BCC .not_active
@@ -300,19 +296,6 @@ OcarinaEffect_SummonStorms:
RTL
}
; Y: E8 06, X: 48 0C
CheckForZoraEvent:
{
LDA $20 : CMP.w #$06E8 : BNE .not_zora
LDA $22 : CMP.w #$0C48 : BNE .not_zora
LDA.b #$01 : STA $04C6
SEC
RTS
.not_zora
CLC
RTS
}
PlayThunderAndRain:
{
LDA.b #$01 : STA $012D
@@ -337,8 +320,8 @@ CheckRealTable:
ResetOcarinaFlag:
{
LDA $7EF3C5 : BEQ .continue
CMP #$01 : BEQ .continue
LDA.l GameState : BEQ .continue
CMP #$01 : BEQ .continue
REP #$30
LDA #$0000 : STA.l $7EE00E
SEP #$30
@@ -416,7 +399,7 @@ RainAnimation_Overridden:
JSL CheckRealTable : BEQ .rainOverlaySet
; LDA.b $8C : CMP.b #$9F :
; Check the progress indicator
LDA.l $7EF3C5 : CMP.b #$02 : BRA .skipMovement
LDA.l GameState : CMP.b #$02 : BRA .skipMovement
.rainOverlaySet
; If misery mire has been opened already, we're done.

View File

@@ -9,27 +9,26 @@ RodAnimationTimer:
LinkItem_PortalRod:
{
BIT $3A : BVS .y_button_held
LDA $6C : BNE .return
LDA $6C : BNE .return
JSR Link_CheckNewY_ButtonPress : BCC .return
LDX.b #$00
JSR LinkItem_EvaluateMagicCost : BCC .insufficient_mp
LDA.b #$30 : JSR $802F ; Sfx3
JSL LinkItem_FirePortal
.y_button_held
JSR Link_CheckNewY_ButtonPress : BCC .return
LDX.b #$00
JSR LinkItem_EvaluateMagicCost : BCC .insufficient_mp
LDA.b #$30 : JSR $802F ; Sfx3
JSL LinkItem_FirePortal
.y_button_held
JSR $AE65 ; HaltLinkWhenUsingItems
DEC $3D : BPL .return
LDA $0300 : INC A : STA $0300 : TAX
LDA RodAnimationTimer, X : STA $3D
CPX.b #$03 : BNE .return
STZ $0300
STZ $5E
STZ $3D
LDA $0301 : AND.b #$FE : STA $0301
JSR $AE65 ; HaltLinkWhenUsingItems
DEC $3D : BPL .return
LDA $0300 : INC A : STA $0300 : TAX
LDA RodAnimationTimer, X : STA $3D
CPX.b #$03 : BNE .return
STZ $0300
STZ $5E
STZ $3D
LDA $0301 : AND.b #$FE : STA $0301
.insufficient_mp
LDA $3A : AND.b #$BF : STA $3A
.insufficient_mp
LDA $3A : AND.b #$BF : STA $3A
.return
RTS

View File

@@ -27,7 +27,7 @@ UpdateBunnyPalette:
.loop
LDA.l bunny_palette, X
PHX
STA.l !pal_color
STA.l !SubPalColor
JSL ColorSubEffect
PLX
STA $7EC6E0, X

View File

@@ -15,7 +15,7 @@ UpdateDekuPalette:
.loop
LDA.l deku_palette, X
PHX
STA.l !pal_color
STA.l !SubPalColor
JSL ColorSubEffect
PLX
STA $7EC6E0, X

View File

@@ -48,10 +48,10 @@ GameboyLinkRedMail:
LinkState_GameboyInDungeonEntrance:
{
print pc
; if link is in the dark world, change his sprite to the gbc one
LDA $0FFF : CMP #$00 : BEQ .return
LDA.w !CurrentMask : BNE .return
LDA $BC : CMP #$06 : BEQ .return
LDA.w !CurrentMask : CMP.b #$05 : BEQ .return
JSL UpdateGbcPalette
LDA #$3B : STA $BC ; change link's sprite
.return
@@ -64,10 +64,10 @@ LoadOverworld_CheckForGbcLink:
{
LDA $0FFF : BEQ .return_lw
LDA.w !CurrentMask : CMP.b #$05 : BEQ .return
LDA.b #$06 : STA $02B2
LDA.b #$3B : STA $BC ; change link's sprite
JSL UpdateGbcPalette
JMP .return
LDA.b #$06 : STA $02B2
LDA.b #$3B : STA $BC ; change link's sprite
JSL UpdateGbcPalette
JMP .return
.return_lw
STZ.w $02B2
.return
@@ -108,14 +108,14 @@ LinkState_GameboyForm:
LDA $02B2 : CMP.b #$06 : BEQ .already_gbc
LDA $0FFF : BEQ .return ; not in dark world
.transform
%PlayerTransform()
JSL PlayerTransform
LDA #$3B : STA $BC ; change link's sprite
LDA #$06 : STA $02B2
JSL UpdateGbcPalette
BRA .return
.already_gbc
%PlayerTransform()
JSL PlayerTransform
LDA #$10 : STA $BC
STZ $02B2
JSL Palette_ArmorAndGloves

View File

@@ -1,19 +1,3 @@
; =========================================================
; Macros
macro PlayerTransform()
LDY.b #$04 : LDA.b #$23
JSL AddTransformationCloud
LDA.b #$14 : STA.w $0CF8
JSL $0DBB67 ; Link_CalculateSFXPan
ORA.w $0CF8
STA $012E
endmacro
macro CheckNewR_ButtonPress()
LDA.b $F6 : BIT.b #$10
endmacro
; =========================================================
; Change Link's sprite by setting $BC to the gfx bank
@@ -51,8 +35,7 @@ org $09F7B5 : JSL ForceResetMask_SaveAndQuit
org $3A8000
StartupMasks:
{
; from vanilla:
; bring the screen into force blank after NMI
; vanilla: bring the screen into force blank after NMI
LDA.b #$80 : STA $13
; set links sprite bank
@@ -60,6 +43,17 @@ StartupMasks:
RTL
}
PlayerTransform:
{
LDY.b #$04 : LDA.b #$23
JSL AddTransformationCloud
LDA.b #$14 : STA.w $0CF8
JSL $0DBB67 ; Link_CalculateSFXPan
ORA.w $0CF8
STA $012E
RTL
}
ResetToLinkGraphics:
{
LDA $0FFF : BNE +
@@ -197,13 +191,11 @@ Palette_ArmorAndGloves:
; =========================================================
; Overworld Palette Persist
Overworld_CgramAuxToMain_Override:
Overworld_CgramAuxToMain:
{
; Copies the auxiliary CGRAM buffer to the main one
; Causes NMI to reupload the palette.
REP #$20
LDX.b #$00
.loop
@@ -217,16 +209,21 @@ Overworld_CgramAuxToMain_Override:
LDA !CurrentMask : BNE .has_mask_palette
LDA $7EC4C0, X : STA $7EC6C0, X
.has_mask_palette
INX #2 : CPX.b #$40 : BNE .loop
INX #2 : CPX.b #$40 : BNE .loop
SEP #$20
; tell NMI to upload new CGRAM data
INC $15
RTL
}
pushpc
org $02C769 ; Overworld_CgramAuxToMain
JSL Overworld_CgramAuxToMain
RTS
pullpc
; =========================================================
LinkState_ResetMaskAnimated:
@@ -245,7 +242,7 @@ LinkState_ResetMaskAnimated:
LDA.w $0202 : SEC : SBC.b #$13 : BEQ .no_transform
.transform
%PlayerTransform()
JSL PlayerTransform
JSL ResetToLinkGraphics
.gbc_form
@@ -254,24 +251,14 @@ LinkState_ResetMaskAnimated:
RTL
}
pushpc
; =========================================================
org $02C769
Overworld_CgramAuxToMain:
JSL Overworld_CgramAuxToMain_Override
RTS
; =========================================================
; Change which mask forms have access to the sword.
; =========================================================
pushpc
; Link_CheckForSwordSwing
org $079CD9
JSL LinkItem_CheckForSwordSwing_Masks
org $079CD9 : JSL LinkItem_CheckForSwordSwing_Masks
pullpc
LinkItem_CheckForSwordSwing_Masks:
{
LDA !CurrentMask : BEQ .return
@@ -293,11 +280,11 @@ Link_TransformMask:
{
PHB : PHK : PLB
PHA ; save mask ID
%CheckNewR_ButtonPress() : BEQ .return
JSL CheckNewRButtonPress : BEQ .return
LDA $6C : BNE .return ; in a doorway
LDA $0FFC : BNE .return ; can't open menu
%PlayerTransform()
JSL PlayerTransform
PLA ; restore mask ID
TAY
CPY !CurrentMask : BEQ .unequip ; check if mask is on
@@ -321,8 +308,6 @@ Link_TransformMask:
db $00, $35, $36, $38, $37, $39, $3A, $3B
}
; =========================================================
Link_TransformMoosh:
{
PHB : PHK : PLB
@@ -331,13 +316,13 @@ Link_TransformMoosh:
JMP .done
++
LDA.w !CurrentMask : CMP.b #$07 : BNE +
%PlayerTransform()
JSL PlayerTransform
JSL ResetToLinkGraphics
PLB : RTL
+
LDA.b #$07 : STA.w !CurrentMask
LDA.b #$33 : STA $BC
%PlayerTransform()
JSL PlayerTransform
JSL Palette_ArmorAndGloves
.done
PLB
@@ -391,8 +376,6 @@ PrepareQuakeSpell:
RTL
}
; =========================================================
HandleMovement:
{
LDA $F0 : AND #$08 : BEQ .not_up
@@ -752,8 +735,6 @@ Ancilla_Move_X:
BRL Ancilla_RestoreIndex
}
; ---------------------------------------------------------
Ancilla_Move_Y:
{
LDA.w $0C22, X
@@ -790,8 +771,6 @@ Ancilla_Move_Y:
RTS
}
; =========================================================
Ancilla_Move_Z:
{
LDA.w AnciZSpeed, X

View File

@@ -21,7 +21,7 @@ pullpc
LinkState_CheckForMinishForm:
{
SEP #$30
LDA.l GAMESTATE : BEQ .return
LDA.l GameState : BEQ .return
JSL $0FF979 ; AncillaSpawn_SwordChargeSparkle
; Check for the R button (like minish cap)
@@ -44,14 +44,14 @@ LinkState_CheckForMinishForm:
CMP.b #$00 : BEQ .transform
CMP.b #$06 : BCC .return ; don't transform if not human
.transform
%PlayerTransform()
JSL PlayerTransform
LDA #$39 : STA $BC ; Change link's sprite
LDA #$05 : STA $02B2 ; Set the current mask form
BRA .return
.already_minish
%PlayerTransform()
JSL PlayerTransform
JSL ResetToLinkGraphics
.return

View File

@@ -11,7 +11,7 @@ UpdateWolfPalette:
.loop
LDA.l WolfPalette, X
PHX
STA.l !pal_color
STA.l !SubPalColor
JSL ColorSubEffect
PLX
STA $7EC6E0, X

View File

@@ -19,7 +19,7 @@ UpdateZoraPalette:
.loop
LDA.l zora_palette, X
PHX
STA.l !pal_color
STA.l !SubPalColor
JSL ColorSubEffect
PLX
STA $7EC6E0, X

View File

@@ -10,14 +10,6 @@
; =========================================================
pushpc
; update in game hud colors
org $1BD662 : dw hexto555($814f16), hexto555($552903)
org $1BD66A : dw hexto555($d51d00), hexto555($f9f9f9)
org $1DB672 : dw hexto555($d0a050), hexto555($f9f9f9)
org $1DB67A : dw hexto555($5987e0), hexto555($f9f9f9)
org $1DB682 : dw hexto555($7b7b83), hexto555($bbbbbb)
org $1DB68A : dw hexto555($a58100), hexto555($dfb93f)
; Free ROM in Bank 00
org $0098AB : db $6C
org $0098AC : db $64
@@ -344,7 +336,7 @@ Menu_CheckBottle:
LDA.w $0202 : CMP.b #$18 : BNE .not_any
LDA.b #$0004
.prepare_bottle
STA.l $7EF34F
STA.l BottleIndex
.not_any
RTS
}
@@ -471,7 +463,7 @@ Menu_MagicBag:
JSR Menu_DeleteCursor_AltEntry
INC.w $020B
LDA.w $020B : CMP.b #$06 : BCS .zero
BRA .continue
BRA .continue
.move_down
.move_left
@@ -479,8 +471,8 @@ Menu_MagicBag:
LDX.w Menu_MagicBagCursorPositions-2, Y
JSR Menu_DeleteCursor_AltEntry
LDA.w $020B : CMP.b #$00 : BEQ .continue
DEC.w $020B
BRA .continue
DEC.w $020B
BRA .continue
.zero
STZ.w $020B
.continue

View File

@@ -526,7 +526,7 @@ CheckPalaceItemPossession:
{
SEP #$30
LDA $040C : LSR A
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw .no_item
dw .no_item
dw .bow

View File

@@ -8,115 +8,76 @@
NothingGFX:
dw $20F5, $20F5, $20F5, $20F5
; ---------------------------------------------------------
BowsGFX:
dw $28BA, $28E9, $28E8, $28CB ; Empty bow
dw $28BA, $28BB, $28CA, $28CB ; Bow and arrows
dw $28BA, $28E9, $28E8, $28CB ; Empty silvers bow
dw $28BA, $28BB, $24CA, $28CB ; Silver bow and arrows
; ---------------------------------------------------------
BoomsGFX:
dw $2CB8, $2CB9, $2CC9, $ACB9 ; Blue boomerang
dw $24B8, $24B9, $24C9, $A4B9 ; Red boomerang
; ---------------------------------------------------------
HookGFX:
dw $24F5, $24F6, $24C0, $24F5 ; Hookshot
dw $2C17, $3531, $2D40, $3541 ; Ball & Chain
; ---------------------------------------------------------
BombsGFX:
dw $2CB2, $2CB3, $2CC2, $6CC2 ; Bombs
; ---------------------------------------------------------
PowderGFX:
dw $2444, $2445, $2446, $2447 ; Mushroom
dw $283B, $283C, $283D, $283E ; Powder
; ---------------------------------------------------------
Fire_rodGFX:
dw $24B0, $24B1, $24C0, $24C1 ; Fire Rod
; ---------------------------------------------------------
Ice_rodGFX:
dw $2CB0, $2CBE, $2CC0, $2CC1 ; Ice Rod
; ---------------------------------------------------------
; formerly Quake
DekuMaskGFX:
dw $2066, $6066, $2076, $6076
; ---------------------------------------------------------
; formerly Ether
BunnyHoodGFX:
dw $3469, $7469, $3479, $7479
; ---------------------------------------------------------
LampGFX:
dw $24BC, $24BD, $24CC, $64CC
; ---------------------------------------------------------
HammerGFX:
dw $24B6, $24B7, $20C6, $24C7
; ---------------------------------------------------------
ShovelGFX:
dw $30D0, $20D1, $30E0, $30E1
; ---------------------------------------------------------
OcarinaGFX:
dw $2CD4, $2CD5, $2CE4, $2CE5 ; Blue
dw $3CD4, $3CD5, $3CE4, $3CE5 ; Green
dw $24D4, $24D5, $24E4, $24E5 ; Red
dw $34D4, $34D5, $34E4, $34E5 ; Gold
; ---------------------------------------------------------
BigKeyGFX:
dw $34D6, $74D6, $34E6, $34E7
; ---------------------------------------------------------
BigChestKeyGFX:
dw $34BF, $74BF, $34E6, $34E7
; ---------------------------------------------------------
MapGFX:
dw $2936, $2937, $2946, $2947
; ---------------------------------------------------------
TreasureChestGFX:
dw $294B, $294C, $294D, $294E
; ---------------------------------------------------------
; formerly fishing net
JumpFeatherGFX:
dw $2840, $2841, $3C42, $3C43
; ---------------------------------------------------------
BookGFX:
dw $3CA5, $3CA6, $3CD8, $3CD9
; ---------------------------------------------------------
BottlesGFX:
dw $2044, $2045, $2046, $2047 ; Mushroom
dw $2837, $2838, $2CC3, $2CD3 ; Empty bottle
@@ -129,13 +90,9 @@ BottlesGFX:
dw $2837, $2838, $3CF7, $3CF8 ; Magic Bean
dw $2837, $2838, $3CFB, $3CFC ; Milk Bottle
; ---------------------------------------------------------
SomariaGFX:
dw $24DC, $24DD, $24EC, $24ED
; ---------------------------------------------------------
ByrnaGFX:
dw $2CDC, $2CDD, $2CEC, $2CED
@@ -145,28 +102,20 @@ FishingRodGFX:
PortalRodGFX:
dw $2CF0, $24F1, $30EC, $E4F0
; ---------------------------------------------------------
; formerly Magic Cape
StoneMaskGFX:
dw $30B4, $30B5, $30C4, $30C5
; ---------------------------------------------------------
WolfMaskGFX:
dw $3086, $7086, $3087, $7087
dw $3086, $7086, $3087, $7087
dw $3086, $7086, $3087, $7087
dw $3086, $7086, $3087, $7087
; ---------------------------------------------------------
; Formerly Bombos
ZoraMaskGFX:
dw $2C88, $6C88, $2C89, $6C89
; ---------------------------------------------------------
MirrorGFX:
dw $2C72, $2C73, $2C62, $2C63 ; Mirror
dw $2C62, $2C63, $2C72, $2C73 ; Mirror
@@ -174,7 +123,6 @@ MirrorGFX:
; =========================================================
; Collectibles
; ---------------------------------------------------------
; vhopppcc cccccccc
@@ -185,8 +133,6 @@ QuarterNoteGFX:
dw $24AA, $246B, $247A, $246A ; Red Note
dw $34AA, $346B, $347A, $346A ; Gold Note
; ---------------------------------------------------------
BananaGFX:
dw $341E, $341F, $342E, $342F ; Banana
@@ -220,45 +166,32 @@ DekuStickGFX:
PegasusBootsGFX:
dw $2429, $242A, $242B, $242C ; Pegasus Boots
; ---------------------------------------------------------
PowerGloveGFX:
dw $30DA, $30DB, $30EA, $30EB ; Worn-Out Glove
dw $28DA, $28DB, $28EA, $28EB ; Power Glove
; ---------------------------------------------------------
FlippersGFX:
dw $2C9A, $2C9B, $2C9D, $2C9E
; ---------------------------------------------------------
MoonPearlGFX:
dw $2433, $2434, $2435, $2436
; ---------------------------------------------------------
SwordGFX:
dw $2C64, $2CCE, $2C75, $EC64 ; level one
dw $2C64, $2C65, $2C74, $2D26 ; level two
dw $248A, $2465, $3C74, $2D48 ; level three
dw $288A, $2865, $2C74, $2D39 ; level four
; ---------------------------------------------------------
ShieldGFX:
dw $2CFD, $6CFD, $2CFE, $6CFE ; baby shield
dw $2CFF, $6CFF, $2C9F, $6C9F ; island shield
dw $2C80, $2C81, $2C8D, $2C8E ; mirror shield
; ---------------------------------------------------------
TunicGFX:
dw $3C68, $7C68, $3C78, $7C78 ; green tunic
dw $2C68, $6C68, $2C78, $6C78 ; blue tunic
dw $2468, $6468, $2478, $6478 ; red tunic
; =============================================================================
; Static Text on the Menu
SelectItemTXT:

View File

@@ -538,8 +538,6 @@ FloorIndicatorNumberHigh:
dw $E51C, $250E, $007F
}
; ==========================================================
; $57CF6 DATA
org $0AFCF6
FloorIndicatorNumberLow:
@@ -548,8 +546,6 @@ FloorIndicatorNumberLow:
dw $E50C, $A50E, $007F
}
; ==========================================================
; *$57D0C-$57DA7 JUMP LOCATION (LONG)
org $0AFD0C
FloorIndicator:

View File

@@ -1,3 +1,17 @@
; Menu Palette
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
pushpc
; update in game hud colors
org $1BD662 : dw hexto555($814f16), hexto555($552903)
org $1BD66A : dw hexto555($d51d00), hexto555($f9f9f9)
org $1DB672 : dw hexto555($d0a050), hexto555($f9f9f9)
org $1DB67A : dw hexto555($5987e0), hexto555($f9f9f9)
org $1DB682 : dw hexto555($7b7b83), hexto555($bbbbbb)
org $1DB68A : dw hexto555($a58100), hexto555($dfb93f)
pullpc
Menu_Palette:
dw hexto555($814f16)
dw hexto555($552903)

17
Music/all_music.asm Normal file
View File

@@ -0,0 +1,17 @@
incsrc "Core/music_macros.asm"
incsrc "Music/lost_woods_v2.asm"
print "End of Music/lost_woods_v2.asm ", pc
incsrc "Music/color_dungeon_theme.asm"
print "End of color_dungeon_theme.asm ", pc
incsrc "Music/deku_theme.asm"
print "End of Music/deku_theme.asm ", pc
incsrc "Music/song_of_healing.asm"
print "End of Music/song_of_healing.asm ", pc
; incsrc "Music/ww_ganondorf.asm"
; incsrc "Music/great_sea.asm"

View File

@@ -27,9 +27,6 @@
; 41 - DW World Map
; =========================================================
; ZSCustomOverworld version
; Kept in case of serious issues which impedes progress
ZS_CUSTOM_OW_V2 = 1
incsrc "Overworld/ZSCustomOverworld_Latest.asm"
print "End of ZSCustomOverworld.asm ", pc
@@ -38,76 +35,46 @@ incsrc "Core/ram.asm"
namespace Oracle
{
print ""
print "Applying patches to Oracle of Secrets"
print ""
incsrc "Core/music_macros.asm"
incsrc "Core/link.asm"
incsrc "Core/sram.asm"
incsrc "Core/symbols.asm"
incsrc "Core/message.asm"
print " -- Music -- "
print ""
incsrc "Music/lost_woods_v2.asm"
print "End of Music/lost_woods_v2.asm ", pc
incsrc "Music/color_dungeon_theme.asm"
print "End of color_dungeon_theme.asm ", pc
incsrc "Music/deku_theme.asm"
print "End of Music/deku_theme.asm ", pc
incsrc "Music/song_of_healing.asm"
print "End of Music/song_of_healing.asm ", pc
incsrc "Music/all_music.asm"
print ""
print " -- Overworld -- "
print ""
incsrc "Overworld/overworld.asm"
print ""
print " -- Dungeon -- "
print ""
incsrc "Dungeons/dungeons.asm"
print ""
print " -- Sprites -- "
print ""
incsrc "Sprites/all_sprites.asm"
print ""
print " -- Masks -- "
print ""
incsrc "Masks/all_masks.asm"
print ""
print " -- Items -- "
print ""
incsrc "Items/all_items.asm"
print ""
print " -- Menu -- "
print ""
incsrc "Menu/menu.asm"
incsrc "Util/item_cheat.asm"
; incsrc "Music/ww_ganondorf.asm"
; incsrc "Music/great_sea.asm"
print ""
print "Finished applying patches"
}

View File

@@ -1041,7 +1041,6 @@ ActivateSubScreen:
; If $7EF3C5 >= 0x02.
LDA.l $7EF3C5 : AND.w #$00FF : CMP.w #$0002 : BCS .noRain
BRA .turnOn
.noRain
; Get the overlay value for this overworld area.
@@ -1881,7 +1880,6 @@ EnableSubScreenCheckForPyramid:
CMP.w #$0096 : BNE .notPyramidOrCastle
SEP #$20 ; Set A in 8bit mode.
LDA.b #$01 : STA.b $1D
.notPyramidOrCastle
SEP #$20 ; Set A in 8bit mode.

View File

@@ -1,29 +1,30 @@
CheckForChangeGraphicsNormalLoadBoat:
{
LDA $8A : CMP.b #$30 : BNE .boat_area
LDA $8A : CMP.b #$30 : BNE .boat_area
PHB : PHK : PLB
JSR ApplyGraphics1
JSR ApplyGraphics2
PLB
RTL
.boat_area
RTL
RTL
}
macro ApplyGraphicsSheet(sheet, dest)
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #<dest> : STA $2116 ; Destination of the DMA $7800 in vram <- this need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
; "001 => 2 registers write once (2 bytes: p, p+1)"
LDA.w #<sheet> : STA $4302
LDX.b #<sheet>>>16 : STX $4304
LDA #$2000 : STA $4305 ; Size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Execute the DMA
SEP #$30
endmacro
ApplyGraphics1:
{
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #$2C00 : STA $2116 ; Destination of the DMA $5800 in vram <- this need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
; "001 => 2 registers write once (2 bytes: p, p+1)"
LDA.w #BoatBitmap : STA $4302 ; Source address where you want gfx from ROM
LDX.b #BoatBitmap>>16 : STX $4304
LDA #$2000 : STA $4305 ; size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Do the DMA
SEP #$30
%ApplyGraphicsSheet(BoatBitmap, $2C00)
RTS
BoatBitmap:
@@ -32,18 +33,7 @@ ApplyGraphics1:
ApplyGraphics2:
{
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #$5000 : STA $2116 ; Destination of the DMA $7800 in vram <- this need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
; "001 => 2 registers write once (2 bytes: p, p+1)"
LDA.w #AdditionalBitmap : STA $4302 ; Source address where you want gfx from ROM
LDX.b #AdditionalBitmap>>16 : STX $4304
LDA #$2000 : STA $4305 ; size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Do the DMA
SEP #$30
%ApplyGraphicsSheet(AdditionalBitmap, $5000)
RTS
AdditionalBitmap:

View File

@@ -4,7 +4,6 @@
; Or ZS Expanded @ $3D8000
Map16Definitions = $3D8000
Overworld_DrawMap16_Persist = $1BC97C
Overworld_DrawMap16_Anywhere = $1BC983
Interface_PrepAndDisplayMessage = $0FFDAA
Overworld_EntranceTileIndex = $1BBA71

View File

@@ -1,16 +1,13 @@
; =========================================================
; Normal Overlays:
; Overworld_DrawQuadrantsAndOverlays
; -> ApplyOverworldOverlay
; Animated Entrances:
; Module09_00_PlayerControl
; -> Overworld_AnimateEntrance
; =========================================================
; Overlays $04C6
; 01 - Zora Temple (OW 1E)
; 02 - Castle Bridge (OW 1B)
; 03 - Tail Palace (OW 2F)
; 04 - Goron Mines Entrance (OW 36)
; 05 - Fortress of Secrets (OW 5E)
; Trigger Zora Temple from Tablet
org $1EE061
CMP.b #$1E ; Zora Temple Map
org $1EE061 : CMP.b #$1E ; Zora Temple Map
; InitiateDesertCutscene
org $07866D
@@ -20,50 +17,8 @@ org $07866D
LDA.b #$1B : STA.b $5D
RTL
; =========================================================
; Overlays $04C6
; 01 - Zora Temple (OW 1E)
; 02 - Castle Bridge (OW 1B)
; 03 - Tail Palace (OW 2F)
; 04 - Goron Mines Entrance (OW 36)
; 05 - Fortress of Secrets (OW 5E)
CameraCache = $0632
; LinkItem_Book
; Desert Book activation trigger
org $07A484 ; LDA $02ED : BNE BRANCH_BETA
NOP #01
JML NewDesertCheck
returnPos:
pullpc
NewDesertCheck:
{
; set link in praying mode
; LDA.b #$02 : STA.w $037A
; LDA #$FF : STA $8C
; LDA #$00 : STA $7EE00E
; STZ $1D : STZ $9A
; STZ.w $012D
; Are we on the castle map?
LDA $8A : CMP.b #$1B : BNE +
; Is there an overlay playing?
LDA $04C6 : BNE +
; If not, start the castle entrance animation
LDA.b #$02 : STA.w $04C6 ; Set the overlay
STZ.b $B0 : STZ.b $C8
; Cache the camera
REP #$20
LDA.w $0618 : STA.w CameraCache
SEP #$20
+
JML $07A493 ; return do not !
}
pushpc
org $1BCADE
JSL ZoraTemple_EntranceAnimation
RTS
@@ -145,40 +100,40 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0965
LDX.w #$0490
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0175
LDX.w #$0492
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0965
LDX.w #$049C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0175
LDX.w #$049E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02D5
LDX.w #$0510
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0730
LDX.w #$0512
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02D5
LDX.w #$051C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0730
LDX.w #$051E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$0410
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$0412
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$041C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$041E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -199,40 +154,40 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0965
LDX.w #$0510
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0183
LDX.w #$0512
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02D5
LDX.w #$0590
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0730
LDX.w #$0592
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0965
LDX.w #$051C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0183
LDX.w #$051E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02D5
LDX.w #$059C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0730
LDX.w #$059E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$0490
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$0492
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$049C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$049E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -254,40 +209,40 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$00CE
LDX.w #$0510
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$0512
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$051C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$051E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0965
LDX.w #$0590
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0183
LDX.w #$0592
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02D5
LDX.w #$0610
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0730
LDX.w #$0612
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0965
LDX.w #$059C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0183
LDX.w #$059E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02D5
LDX.w #$061C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0730
LDX.w #$061E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -308,46 +263,46 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0530
LDX.w #$0616
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02E4
LDX.w #$0618
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$05A1
LDX.w #$0594
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$05A1
LDX.w #$059A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0530
LDX.w #$0596
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02E4
LDX.w #$0598
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0599
LDX.w #$0614
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0599
LDX.w #$061A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0094
LDX.w #$0494
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0094
LDX.w #$049A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$05A1
LDX.w #$0514
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$05A1
LDX.w #$051A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0530
LDX.w #$0516
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02E4
LDX.w #$0518
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -368,34 +323,34 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$056D
LDX.w #$0396
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$056D
LDX.w #$0398
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$056D
LDX.w #$0416
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$056D
LDX.w #$0418
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$056D
LDX.w #$0496
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$056D
LDX.w #$0498
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$056D
LDX.w #$0414
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$056D
LDX.w #$041A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06AF
LDX.w #$0394
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06AF
LDX.w #$039A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -417,52 +372,52 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$02C0
LDX.w #$0292
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02BD
LDX.w #$029C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$031C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$0392
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$039C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$0412
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00D5
LDX.w #$041C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0965
LDX.w #$0492
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0175
LDX.w #$049C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C7
LDX.w #$0512
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C8
LDX.w #$051C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$057D
LDX.w #$0592
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$057D
LDX.w #$059C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0156
LDX.w #$0612
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0156
LDX.w #$061C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00CE
LDX.w #$0312
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
LDA.b #$07 : STA.w $012D
@@ -485,52 +440,52 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$02BF
LDX.w #$0192
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0312
LDX.w #$019C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02B9
LDX.w #$0212
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02B6
LDX.w #$021C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06B0
LDX.w #$0214
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06B1
LDX.w #$0216
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06B2
LDX.w #$0218
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06B3
LDX.w #$021A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06B5
LDX.w #$0294
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00DF
LDX.w #$0296
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00E0
LDX.w #$0298
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$06B6
LDX.w #$029A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$02D5
LDX.w #$0314
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0223
LDX.w #$0316
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0205
LDX.w #$0318
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0730
LDX.w #$031A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -552,52 +507,52 @@ ZoraTemple_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$00C7
LDX.w #$0014
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0016
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0018
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C8
LDX.w #$001A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C7
LDX.w #$0094
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0096
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0098
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C8
LDX.w #$009A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C7
LDX.w #$0114
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0116
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0118
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C8
LDX.w #$011A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C7
LDX.w #$0194
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0196
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0158
LDX.w #$0198
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$00C8
LDX.w #$019A
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
LDA.b #$0D : STA.w $012D
@@ -713,40 +668,40 @@ Castle_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0611
LDX.w #$031C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0613
LDX.w #$031E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0613
LDX.w #$0320
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0612
LDX.w #$0322
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0614
LDX.w #$039C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0613
LDX.w #$039E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0613
LDX.w #$03A0
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0615
LDX.w #$03A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0480
LDX.w #$029C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0479
LDX.w #$029E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0479
LDX.w #$02A0
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0481
LDX.w #$02A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -770,64 +725,64 @@ Castle_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$049E
LDX.w #$039C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$049C
LDX.w #$039E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0604
LDX.w #$03A0
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0608
LDX.w #$03A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$060A
LDX.w #$041C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0495
LDX.w #$041E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0496
LDX.w #$0420
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0499
LDX.w #$0422
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0602
LDX.w #$049C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0606
LDX.w #$049E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0606
LDX.w #$04A0
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$060E
LDX.w #$04A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0610
LDX.w #$051C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0606
LDX.w #$051E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0606
LDX.w #$0520
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$046C
LDX.w #$0522
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$046F
LDX.w #$059C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0469
LDX.w #$059E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$046A
LDX.w #$05A0
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$046E
LDX.w #$05A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -849,16 +804,16 @@ Castle_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0108
LDX.w #$061C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$010A
LDX.w #$0622
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$04E2
LDX.w #$0620
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$04E2
LDX.w #$061E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -880,28 +835,28 @@ Castle_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0611
LDX.w #$039C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0612
LDX.w #$03A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0613
LDX.w #$039E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0613
LDX.w #$03A0
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$048F
LDX.w #$031C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0474
LDX.w #$031E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$061C
LDX.w #$0320
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$061A
LDX.w #$0322
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -937,7 +892,7 @@ TailPalace_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0A8C
LDX.w #$02A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -958,7 +913,7 @@ TailPalace_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0AF3
LDX.w #$0328
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -979,10 +934,10 @@ TailPalace_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0AF1
LDX.w #$0328
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0AF3
LDX.w #$03A8
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -1033,7 +988,7 @@ Goron_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0789
LDX.w #$10A2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
LDA.b #$16 : STA.w $012F
@@ -1053,7 +1008,7 @@ Goron_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$09C1
LDX.w #$109C
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -1072,10 +1027,10 @@ Goron_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$09C1
LDX.w #$1024
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$078A
LDX.w #$101E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
LDA.b #$16 : STA.w $012F
@@ -1095,10 +1050,10 @@ Goron_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0791
LDX.w #$0FA2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0797
LDX.w #$0F9E
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -1116,7 +1071,7 @@ Goron_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0787
LDX.w #$0FA0
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
LDA.b #$1B : STA.w $012F
@@ -1180,28 +1135,28 @@ Fortress_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0196
LDX.w #$0754
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$0756
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$06D4
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$06D6
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$0752
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$06D2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A3
LDX.w #$0758
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A3
LDX.w #$06D8
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -1223,28 +1178,28 @@ Fortress_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$09A3
LDX.w #$0658
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A3
LDX.w #$05D8
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$0652
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$05D2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$0654
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$0656
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$05D6
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$05D4
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -1266,28 +1221,28 @@ Fortress_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$09A3
LDX.w #$04D8
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A3
LDX.w #$0558
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$04D2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$0552
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$04D6
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$0556
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$04D4
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$0554
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -1309,28 +1264,28 @@ Fortress_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$0196
LDX.w #$0454
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$0456
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$03D6
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$0196
LDX.w #$03D4
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$03D2
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A2
LDX.w #$0452
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A3
LDX.w #$03D8
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$09A3
LDX.w #$0458
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe
@@ -1351,10 +1306,10 @@ Fortress_EntranceAnimation:
REP #$30 ; 16 bit mode
LDA.w #$099C
LDX.w #$0354
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
LDA.w #$099C
LDX.w #$0356
JSL $1BC97C ; Overworld_DrawMap16_Persist
JSL Overworld_DrawMap16_Persist
SEP #$30 ; 8 bit mode
INC.b $14 ; Do tiles transfer
.notfirstframe

View File

@@ -6,7 +6,7 @@ org $1AFBC7 : db $0B ; Heart Index
org $1AFBD7 : db $00
; Remove rain sound effects from beginning
org $02838C : LDA.l $7EF3C5 : CMP.b #$00
org $02838C : LDA.l GameState : CMP.b #$00
; RoomTag_GanonDoor
; Replace SprState == 04 -> .exit
@@ -121,7 +121,7 @@ LoadDarkWorldIntro:
LDA.b #$40 : STA.l $7EF3CA
RTL
.not_dw_spawn
LDA.l GAMESTATE : CMP.b #$02 : BNE .intro_sequence
LDA.l GameState : CMP.b #$02 : BNE .intro_sequence
; Check for maku tree progress flag
LDA.l OOSPROG : CMP.b #$02 : BCS .has_pearl
STZ.w $1B
@@ -148,7 +148,7 @@ org $0281E2 : LDA.l $7EF342 : CMP.b #$02
org $0281CD : LDA.l $7EF3D6 : CMP.b #$04
; GameOver_FadeAndRevive
org $09F520 : LDA.l $7EF3C5 : CMP.b #$02
org $09F520 : LDA.l GameState : CMP.b #$02
pullpc
LoadOverworldPitAreas:

View File

@@ -12,7 +12,7 @@ TimeSpeed = $7EE002
; HUD Template adjusts timer's color
org $0DFF07
db $10, $24, $11, $24
db $10, $24, $11, $24
db $6C, $25
db $90, $24, $90, $24
db $6C, $25, $90, $24, $90, $24
@@ -20,14 +20,14 @@ org $0DFF07
; Sprite_Main.dont_reset_drag
; Executes every frame to update the clock
org $068361
JSL HUD_ClockDisplay
JSL HUD_ClockDisplay
pullpc
HUD_ClockDisplay:
{
JSR RunClock
JSR DrawClockToHud
JSL $09B06E ; Restore Garnish_ExecuteUpperSlots_long
RTL
JSR RunClock
JSR DrawClockToHud
JSL $09B06E ; Restore Garnish_ExecuteUpperSlots_long
RTL
}
; Zarby Intro and Credits fix
@@ -38,8 +38,8 @@ pullpc
LogoFadeInSetClock:
{
JSL $00ED7C ; IntroLogoPaletteFadeIn
LDA.b #$08 : STA.l $7EE000 ; Set the time to 6:00am
LDA.b #$3F : STA.l $7EE002 ; Set the time speed
LDA.b #$08 : STA.l Hours ; Set the time to 6:00am
LDA.b #$3F : STA.l TimeSpeed ; Set the time speed
RTL
}
@@ -50,8 +50,8 @@ pullpc
ResetClockTriforceRoom:
{
JSL $00E384 ; LoadCommonSprites_long
LDA.b #$00 : STA.l $7EE000 ; low hours for palette?
LDA.b #$00 : STA.l $7EE001 ; high hours for palette?
LDA.b #$00 : STA.l Hours ; low hours for palette?
LDA.b #$00 : STA.l Minutes ; high hours for palette?
RTL
}
@@ -65,7 +65,7 @@ DrawClockToHud:
{
LDX #$00
.debut
LDY #$00 : LDA $7EE000,x
LDY #$00 : LDA Hours,x
.debut2
CMP #$0A : BMI .draw
SBC #$0A : INY : BRA .debut2
@@ -87,7 +87,7 @@ DrawClockToHud:
STA.l !hud_min_high
LDA #$30 : STA.l !hud_min_high+1 ; white palette
.finish_draw
INX : CPX #$02 : BMI .debut
INX : CPX #$02 : BMI .debut
RTS
}
@@ -146,7 +146,7 @@ RunClock:
LDA #$00 : STA.l Minutes
LDA.l Hours : INC A : STA.l Hours
CMP #$18 : BPL .reset_hours ; hours = 24 ?
;check indoors/outdoors
; check indoors/outdoors
LDA $1B : BEQ .outdoors0
RTS
.outdoors0
@@ -154,7 +154,7 @@ RunClock:
JSL RomToPaletteBuffer ; update buffer palette
JSL PaletteBufferToEffective ; update effective palette
;rain layer ?
; rain layer ?
LDA $8C : CMP #$9F : BEQ .skip_bg_updt0
LDA $8C : CMP #$9E : BEQ .skip_bg_updt0 ; canopy layer ?
CMP #$97 : BEQ .skip_bg_updt0 ; fog layer?
@@ -170,10 +170,9 @@ RunClock:
JSR CheckForDailyQuests
LDA #$00 : STA $7EE000
.update_palette
LDA.b #$00 : STA.l Hours
; check indoors/outdoors
LDA $1B : BEQ .outdoors1
LDA.b $1B : BEQ .outdoors1
RTS
.outdoors1
@@ -194,7 +193,7 @@ RunClock:
CheckForSongOfTime:
{
; Check if Song of Time was activated
LDA $FE : CMP.b #$02 : BNE +
LDA.b SongFlag : CMP.b #$02 : BNE +
; Speed up the time
LDA.b #$00 : STA.l TimeSpeed
@@ -202,14 +201,14 @@ CheckForSongOfTime:
LDA.l Hours : CMP.b #$06 : BNE ++
LDA.l Minutes : BNE ++
LDA.b #$3F : STA.l TimeSpeed
STZ $FE
STZ.b SongFlag
++
; If we reached 6pm
LDA.l Hours : CMP.b #$12 : BNE ++
LDA.l Minutes : BNE ++
LDA.b #$3F : STA.l TimeSpeed
STZ $FE
STZ.b SongFlag
++
+
RTS
@@ -234,43 +233,83 @@ CheckForDailyQuests:
RTS
}
CheckIfNight:
{
JSR LoadPeacetimeSprites : BCS +
RTL
+
LDA.l GameState : CMP.b #$02 : BCC .day_time
LDA Hours : CMP.b #$12 : BCS .night_time
LDA Hours : CMP.b #$06 : BCC .night_time
.day_time
LDA.l GameState
RTL
.night_time
LDA.b #$03
RTL
}
CheckIfNight16Bit:
{
SEP #$30
JSR LoadPeacetimeSprites : BCS +
REP #$30
RTL
+
REP #$30
; Don't change the spriteset during the intro sequence
LDA.l GameState : AND.w #$00FF : CMP.w #$0002 : BCC .day_time
; 0x12 = 18 hours or 6 pm
LDA Hours : AND.w #$00FF : CMP.w #$0012 : BCS .night_time
; If it's less than 6 am, jump to night time
LDA Hours : AND.w #$00FF : CMP.w #$0006 : BCC .night_time
.day_time
LDA.l GameState
RTL
.night_time
; Load the gamestate 03 spritesets, but don't change the save ram
LDA.l GameState : CLC : ADC #$0001
RTL
}
pushpc
; Overworld_LoadSprites
org $09C4E3 : JSL CheckIfNight
; Sprite_LoadGraphicsProperties_light_world_only
org $00FC6A : JSL CheckIfNight16Bit
; =========================================================
; ----[ Day / Night system * palette effect ]----
; =========================================================
!blue_value = $7EE010
!green_value = $7EE012
!red_value = $7EE014
!BlueVal = $7EE010
!GreenVal = $7EE012
!RedVal = $7EE014
!temp_value = $7EE016
!pal_color = $7EE018
!TempPalColor = $7EE016
!SubPalColor = $7EE018
Overworld_CopyPalettesToCache = $02C769
org $02FF80 ; free space on bank $02
PaletteBufferToEffective:
JSR $C769 ; $02:C65F -> palette buffer to effective routine
RTL
JSR $C769 ; $02:C65F -> palette buffer to effective routine
RTL
RomToPaletteBuffer:
JSR $AAF4 ; $02:AAF4 -> change buffer palette of trees,houses,rivers,etc.
JSR $C692 ; $02:C692 -> rom to palette buffer for other colors
RTL
JSR $AAF4 ; $02:AAF4 -> change buffer palette of trees,houses,rivers,etc.
JSR $C692 ; $02:C692 -> rom to palette buffer for other colors
RTL
PaletteBuffer_HUD = $7EC300
PaletteBuffer_BG = $7EC340
PaletteBuffer_Spr = $7EC400
PalBuf300_HUD = $7EC300
PalBuf340_BG = $7EC340
PalBuf400_Spr = $7EC400
PaletteCgram_HUD = $7EC500
PaletteCgram_BG = $7EC540
PaletteCgram_Spr = $7EC600
; part of rom pal to buffer routine
; $1B/EF61 9F 00 C3 7E STA $7EC300,x[$7E:C422]
; $1B/EF3D 9F 00 C3 7E STA $7EC300,x[$7E:C412]
; $1B/EF84 9F 00 C3 7E STA $7EC300,x[$7E:C4B2]
PalCgram500_HUD = $7EC500
PalCgram540_BG = $7EC540
PalCgram600_Spr = $7EC600
; Palettes_LoadSingle.next_color
org $1BEF3D : JSL LoadDayNightPaletteEffect
@@ -284,15 +323,15 @@ org $1BEF84 : JSL LoadDayNightPaletteEffect
pullpc
LoadDayNightPaletteEffect:
{
STA.l !pal_color : CPX #$0041 : BPL .title_check
STA.l PaletteBuffer_HUD, X
STA.l !SubPalColor : CPX #$0041 : BPL .title_check
STA.l PalBuf300_HUD, X
RTL
.title_check
; title or file select screen ?
LDA $10 : AND #$00FF : CMP #$0002 : BCS .outin_check
LDA.l !pal_color
STA.l PaletteBuffer_HUD, X
LDA.l !SubPalColor
STA.l PalBuf300_HUD, X
RTL
.outin_check
@@ -300,63 +339,67 @@ LoadDayNightPaletteEffect:
CMP.w #$0012 : BCS .restorecode
BRA .overworld
.restorecode
LDA.l !pal_color
STA.l PaletteBuffer_HUD, X
LDA.l !SubPalColor
STA.l PalBuf300_HUD, X
RTL
.overworld
LDA $1B : AND #$00FF : BEQ .outdoors2
LDA.l !pal_color
STA.l PaletteBuffer_HUD,X
LDA.l !SubPalColor
STA.l PalBuf300_HUD,X
RTL
.outdoors2
PHX
JSL ColorSubEffect
PLX
STA.l PaletteBuffer_HUD, X
STA.l PalBuf300_HUD, X
RTL
}
; =========================================================
!SmallestBlue = #$0400
!SmallestGreen = #$0020
!SmallestRed = #$0001
ColorSubEffect:
{
LDA.l Hours : AND #$00FF : CLC : ADC.l Hours ; hours * 2
AND #$00FF : TAX
LDA.l Hours : AND #$00FF : CLC : ADC.l Hours ; hours * 2
AND #$00FF : TAX
; Subtract amount to blue field based on a table
LDA.l !pal_color : AND #$7C00 : STA !blue_value
SEC : SBC.l .blue, X : STA !temp_value
LDA.l !SubPalColor : AND #$7C00 : STA !BlueVal
SEC : SBC.l .blue, X : STA !TempPalColor
; mask out everything except the blue bits
AND #$7C00 : CMP !temp_value : BEQ .no_blue_sign_change ; overflow ?
LDA #$0400 ; LDA smallest blue value
AND #$7C00 : CMP !TempPalColor : BEQ .no_blue_sign_change ; overflow ?
LDA !SmallestBlue
.no_blue_sign_change
STA.l !blue_value
STA.l !BlueVal
; Subtract amount to blue field based on a table
LDA !pal_color : AND #$03E0 : STA !green_value
SEC : SBC.l .green, X : STA.l !temp_value
LDA !SubPalColor : AND #$03E0 : STA !GreenVal
SEC : SBC.l .green, X : STA.l !TempPalColor
; Mask out everything except the green bits
AND #$03E0 : CMP !temp_value : BEQ .no_green_sign_change ; overflow ?
LDA #$0020 ; LDA smallest green value
AND #$03E0 : CMP !TempPalColor : BEQ .no_green_sign_change ; overflow ?
LDA !SmallestGreen
.no_green_sign_change
STA.l !green_value
STA.l !GreenVal
; substract amount to red field based on a table
LDA.l !pal_color : AND #$001F : STA.l !red_value
SEC : SBC.l .red, X : STA.l !temp_value
LDA.l !SubPalColor : AND #$001F : STA.l !RedVal
SEC : SBC.l .red, X : STA.l !TempPalColor
; mask out everything except the red bits
AND #$001F : CMP !temp_value : BEQ .no_red_sign_change ; overflow ?
LDA #$0001 ; LDA smallest red value
AND #$001F : CMP !TempPalColor : BEQ .no_red_sign_change ; overflow ?
LDA !SmallestRed
.no_red_sign_change
STA.l !red_value
STA.l !RedVal
LDA.l !blue_value : ORA.l !green_value : ORA.l !red_value
RTL
LDA.l !BlueVal : ORA.l !GreenVal : ORA.l !RedVal
RTL
; color_sub_tables : 24 * 2 bytes each = 48 bytes
; (2 bytes = 1 color sub for each hour)
@@ -391,10 +434,10 @@ BackgroundFix:
BEQ .no_effect ;BRAnch if A=#$0000 (transparent bg)
JSL ColorSubEffect
.no_effect:
STA.l PaletteCgram_HUD
STA.l PaletteBuffer_HUD
STA.l PaletteCgram_BG
STA.l PaletteBuffer_BG
STA.l PalCgram500_HUD
STA.l PalBuf300_HUD
STA.l PalCgram540_BG
STA.l PalBuf340_BG
RTL
}
@@ -403,57 +446,41 @@ MosaicFix:
BEQ +
JSL ColorSubEffect
+
STA.l PaletteBuffer_HUD
STA.l PaletteBuffer_BG
STA.l PalBuf300_HUD
STA.l PalBuf340_BG
RTL
}
SubAreasFix:
{
BEQ .no_effect
STA.l !pal_color
PHX
STA.l !SubPalColor
PHX
REP #$20
JSL ColorSubEffect
SEP #$20
PLX
PLX
.no_effect
STA.l PaletteBuffer_HUD
STA.l PaletteBuffer_BG
RTL
STA.l PalBuf300_HUD
STA.l PalBuf340_BG
RTL
}
GlovePalettePosition = $7EC4FA
GlovesFix:
{
STA.l !pal_color
LDA $1B : AND #$00FF : BEQ .outdoors3
LDA.l !pal_color
STA.l !SubPalColor
LDA $1B : AND #$00FF : BEQ .outdoors3
LDA.l !SubPalColor
STA GlovePalettePosition
RTL
.outdoors3:
PHX
JSL ColorSubEffect
PLX
STA GlovePalettePosition
RTL
}
CheckIfNight:
{
JSR LoadPeacetimeSprites : BCS +
RTL
+
LDA.l $7EF3C5 : CMP.b #$02 : BCC .day_time
LDA $7EE000 : CMP.b #$12 : BCS .night_time
LDA $7EE000 : CMP.b #$06 : BCC .night_time
.day_time
LDA.l $7EF3C5
RTL
.night_time
LDA.b #$03
PHX
JSL ColorSubEffect
PLX
STA GlovePalettePosition
RTL
}
@@ -463,56 +490,32 @@ ColorBgFix:
SEP #$30
; Check for save and quit
LDA.b $10 : CMP.b #$17 : BEQ .vanilla
REP #$30
PLA
STA.l !pal_color
JSL ColorSubEffect
STA.l PaletteCgram_HUD
STA.l PaletteCgram_BG
RTL
REP #$30
PLA
STA.l !SubPalColor
JSL ColorSubEffect
STA.l PalCgram500_HUD
STA.l PalCgram540_BG
RTL
.vanilla
REP #$30
PLA
STA.l PaletteCgram_HUD
RTL
}
CheckIfNight16Bit:
{
SEP #$30
JSR LoadPeacetimeSprites : BCS +
REP #$30
RTL
+
REP #$30
; Don't change the spriteset during the intro sequence
LDA.l $7EF3C5 : AND.w #$00FF : CMP.w #$0002 : BCC .day_time
; 0x12 = 18 hours or 6 pm
LDA $7EE000 : AND.w #$00FF : CMP.w #$0012 : BCS .night_time
; If it's less than 6 am, jump to night time
LDA $7EE000 : AND.w #$00FF : CMP.w #$0006 : BCC .night_time
.day_time
LDA.l $7EF3C5
RTL
.night_time
; Load the gamestate 03 spritesets, but don't change the save ram
LDA.l $7EF3C5 : CLC : ADC #$0001
STA.l PalCgram500_HUD
RTL
}
LoadPeacetimeSprites:
{
; Map 2E, 2F if CRYSTALS && 0x10 == 0
; Map 2E, 2F if Crystals && 0x10 == 0
LDA $8A : CMP.b #$2E : BEQ .tail_palace
CMP.b #$2F : BEQ .tail_palace
CMP.b #$1E : BEQ .zora_sanctuary
JMP +
.tail_palace
LDA.l CRYSTALS : AND #$10 : BNE .load_peacetime
LDA.l Crystals : AND #$10 : BNE .load_peacetime
JMP +
.zora_sanctuary
LDA.l CRYSTALS : AND #$20 : BNE .load_peacetime
LDA.l Crystals : AND #$20 : BNE .load_peacetime
JMP +
.load_peacetime
LDA.b #$01
@@ -525,21 +528,21 @@ LoadPeacetimeSprites:
FixSaveAndQuit:
{
LDA #$08 : STA $7EE000
LDA.l $7EF3C5
LDA.b #$08 : STA.l Hours
LDA.l GameState
RTL
}
FixShockPalette:
{
PHA
LDA $1B : BNE .indoors
LDA.b $1B : BNE .indoors
PLA
STA !pal_color
STA !SubPalColor
PHX
JSL ColorSubEffect
PLX
STA.l PaletteCgram_HUD, X
STA.l PalCgram500_HUD, X
RTL
.indoors
PLA
@@ -550,48 +553,39 @@ FixDungeonMapColors:
{
PHA
; Cache the current time
LDA $7EE000 : STA $7EF900
LDA $7EE001 : STA $7EF901
LDA Hours : STA $7EF900
LDA Minutes : STA $7EF901
; Set the time to 8:00am while map is open
LDA #$08 : STA $7EE000
LDA #$00 : STA $7EE001
LDA.b #$08 : STA Hours
LDA.b #$00 : STA Minutes
PLA
STA $7EC229
STA.l $7EC229
RTL
}
RestoreTimeForDungeonMap:
{
LDA $7EF900 : STA $7EE000
LDA $7EF901 : STA $7EE001
LDA $7EF900 : STA Hours
LDA $7EF901 : STA Minutes
LDA.l $7EC017
RTL
}
pushpc
; Overworld_LoadSprites
org $09C4E3 : JSL CheckIfNight
; Sprite_LoadGraphicsProperties_light_world_only
org $00FC6A : JSL CheckIfNight16Bit
; $0BFE70 -> background color loading routine
; Background color write fix - 16 bytes
; $0B/FEB6 8F 00 C5 7E STA $7EC500
; $0B/FEBA 8F 00 C3 7E STA $7EC300
; $0B/FEBE 8F 40 C5 7E STA $7EC540
; $0B/FEC2 8F 40 C3 7E STA $7EC340
org $0BFEB6
JSL BackgroundFix
org $0BFEB6 : JSL BackgroundFix
; SetBGColorMainBuffer
org $0ED5F9
JSL ColorBgFix
org $0ED5F9 : JSL ColorBgFix
; OverworldMosaicTransition_HandleScreensAndLoadShroom
org $02AE92
NOP #6
org $02AE92 : NOP #6
; =========================================================
@@ -599,8 +593,7 @@ org $02AE92
; $0E/D601 8F 00 C3 7E STA $7EC300[$7E:C300]
; $0E/D605 8F 40 C3 7E STA $7EC340[$7E:C340]
org $0ED601
JSL SubAreasFix
org $0ED601 : JSL SubAreasFix
; =========================================================
; Gloves color loading routine
@@ -619,20 +612,19 @@ org $0ED601
; $1B/EE39 6B RTL
; Palettes_Load_LinkGloves
org $1BEE2D
JSL GlovesFix
; =========================================================
org $1BEE2D : JSL GlovesFix
; org $0ABA5A
; TODO: Handle overworld map palette for flashing icons
; Module0E_03_00_DarkenAndPrep
org $0ED956 : JSL FixDungeonMapColors
; UnderworldMap_RecoverGFX
org $0AEFA6 : JSL RestoreTimeForDungeonMap
; RefreshLinkEquipmentPalettes
org $0ED745 : JSL FixShockPalette
org $09F604
GameOver_SaveAndQuit:
JSL FixSaveAndQuit
; GameOver_SaveAndQuit:
org $09F604 : JSL FixSaveAndQuit

View File

@@ -209,16 +209,14 @@ MapIconDraw:
LDA.l OOSPROG : CMP.b #$02 : BNE +
JSL DrawHallOfSecretsIcon
JSR HandleMapDrawIcon
JMP .main_quest
+
LDA.l OOSPROG : AND.b #$10 : BEQ .main_quest
; Pyramid of Power
JSL DrawPyramidIcon
JSR HandleMapDrawIcon_noflash
.main_quest
LDA.l MapIcon : CMP.b #$01 : BEQ .draw_crystal_1
CMP.b #$02 : BEQ .draw_crystals
CMP.b #$02 : BCS .draw_crystals
JSL DrawEonEscapeIcon
JSR HandleMapDrawIcon
JMP restore_coords_and_exit

View File

@@ -1,7 +1,7 @@
; =========================================================
; Dark Link Boss
!SPRID = $C1 ; The sprite ID you are overwriting (HEX)
!SPRID = $C1
!NbrTiles = 4 ; Number of tiles used in a frame
!Harmless = 00 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
@@ -125,7 +125,7 @@ DarkLink_Palette:
Sprite_DarkLink_Main:
{
LDA.w SprAction, X : JSL UseImplicitRegIndexedLocalJumpTable
LDA.w SprAction, X : JSL JumpTableLocal
dw Handler
dw SwordSlash
@@ -1526,7 +1526,7 @@ GanonInit:
Sprite_Ganon_Main:
{
LDA.w SprAction, X : JSL UseImplicitRegIndexedLocalJumpTable
LDA.w SprAction, X : JSL JumpTableLocal
dw Wait
dw ShowMessage

View File

@@ -48,8 +48,6 @@ Sprite_Kydreeok_Long:
RTL
}
; =========================================================
Sprite_Kydreeok_Prep:
{
PHB : PHK : PLB
@@ -121,8 +119,6 @@ MaybeRespawnHead:
RTS
}
; =========================================================
Sprite_Kydreeok_Main:
{
%SpriteJumpTable(Kydreeok_Start,

View File

@@ -47,8 +47,6 @@ Sprite_KydreeokHead_Long:
RTL
}
; =========================================================
Sprite_KydreeokHead_Prep:
{
PHB : PHK : PLB
@@ -59,8 +57,6 @@ Sprite_KydreeokHead_Prep:
RTL
}
; =========================================================
SpeedTable:
db $00, $02, $04, $06, $07, $01, $06, $03
db 0, -2, -4, -6, -7, -1, -6, -3
@@ -68,7 +64,7 @@ SpeedTable:
Sprite_KydreeokHead_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw KydreeokHead_ForwardAnim ; 0x00
dw KydreeokHead_RightAnim ; 0x01
@@ -77,7 +73,6 @@ Sprite_KydreeokHead_Main:
dw KydreeokHead_FarLeft ; 0x04
dw KydreeokHead_SummonFire ; 0x05
; -------------------------------------------------------
; 0x00
KydreeokHead_ForwardAnim:
{
@@ -109,7 +104,6 @@ Sprite_KydreeokHead_Main:
RTS
}
; -------------------------------------------------------
; 0x01
KydreeokHead_RightAnim:
{
@@ -131,7 +125,6 @@ Sprite_KydreeokHead_Main:
RTS
}
; -------------------------------------------------------
; 0x02
KydreeokHead_LeftAnim:
{
@@ -152,7 +145,6 @@ Sprite_KydreeokHead_Main:
RTS
}
; -------------------------------------------------------
; 0x03
KydreeokHead_FarRight:
{
@@ -172,7 +164,6 @@ Sprite_KydreeokHead_Main:
RTS
}
; -------------------------------------------------------
; 0x04
KydreeokHead_FarLeft:
{
@@ -219,8 +210,6 @@ KydreeokHead_RotationMove:
RTS
}
; =========================================================
CoordinateBasedRotation:
{
LDA.w Neck_Index : TAY
@@ -238,20 +227,18 @@ CoordinateBasedRotation:
LDA #0 : STA.w Neck_Index
.not_full
RTS
; Table for X coordinates (based on a radius of 8)
X_Coords:
db 8, 11, 8, 3, -4, -9, -12, -9
db -4, 3, 8, 11, 8, 3, -4, -9
; Table for Y coordinates (based on a radius of 8)
Y_Coords:
db 0, -3, -8, -11, -15, -15, -11, -8
db -3, 0, 3, 8, 11, 15, 15, 11
}
; Table for X coordinates (based on a radius of 8)
X_Coords:
db 8, 11, 8, 3, -4, -9, -12, -9
db -4, 3, 8, 11, 8, 3, -4, -9
; Table for Y coordinates (based on a radius of 8)
Y_Coords:
db 0, -3, -8, -11, -15, -15, -11, -8
db -3, 0, 3, 8, 11, 15, 15, 11
; =========================================================
RotateHeadUsingSpeedValues:
{
LDY.w Neck_Index
@@ -284,8 +271,6 @@ RotateHeadUsingSpeedValues:
db -12, -9, -6, -3
}
; =========================================================
RandomlyAttack:
{
JSL Sprite_DamageFlash_Long
@@ -302,8 +287,6 @@ RandomlyAttack:
RTS
}
; =========================================================
MoveWithBody:
{
LDA.w Kydreeok_Id : TAY
@@ -545,8 +528,6 @@ KydreeokHead_NeckControl:
RTS
}
; =========================================================
Sprite_KydreeokHead_DrawNeck:
{
LDA.w SprSubtype, X : CMP.b #$01 : BEQ .neck2
@@ -619,8 +600,6 @@ DrawNeckPart:
RTS
}
; =========================================================
Sprite_KydreeokHead_Draw:
{
JSL Sprite_PrepOamCoord

View File

@@ -43,8 +43,6 @@ Sprite_Kydrog_Long:
RTL
}
; =========================================================
Sprite_Kydrog_Prep:
{
PHB : PHK : PLB
@@ -55,12 +53,10 @@ Sprite_Kydrog_Prep:
RTL
}
; =========================================================
Sprite_Kydrog_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Kydrog_StartCutscene
dw Kydrog_AttractPlayer
@@ -139,8 +135,6 @@ Sprite_Kydrog_Main:
}
}
; =========================================================
Sprite_Kydrog_Draw:
{
JSL Sprite_PrepOamCoord
@@ -189,8 +183,6 @@ Sprite_Kydrog_Draw:
RTS
; =========================================================
.start_index
db $00
.nbr_of_tiles

View File

@@ -49,8 +49,6 @@ Sprite_KydrogBoss_Long:
RTL
}
; =========================================================
Sprite_KydrogBoss_CheckIfDead:
{
LDA.w SprAction, X : CMP.b #$09 : BEQ .not_dead
@@ -71,8 +69,6 @@ Sprite_KydrogBoss_CheckIfDead:
RTS
}
; =========================================================
Sprite_KydrogBoss_Prep:
{
PHB : PHK : PLB
@@ -95,7 +91,6 @@ Sprite_KydrogBoss_Prep:
PLB
RTL
}
; =========================================================
pushpc
org $1ECD97
@@ -153,8 +148,8 @@ KydrogBoss_DoMovement:
Sprite_KydrogBoss_Main:
{
LDA.w SprAction, X; Load the SprAction
JSL UseImplicitRegIndexedLocalJumpTable; Goto the SprAction we are currently in
LDA.w SprAction, X
JSL JumpTableLocal
dw KydrogBoss_Init ; 00
dw KydrogBoss_WalkState ; 01
@@ -171,8 +166,6 @@ Sprite_KydrogBoss_Main:
dw KydrogBoss_Descend ; 0B
dw KydrogBoss_Abscond ; 0C
; -------------------------------------------------------
KydrogBoss_Init:
{
%StartOnFrame(15)
@@ -186,8 +179,6 @@ Sprite_KydrogBoss_Main:
RTS
}
; -------------------------------------------------------
KydrogBoss_WalkState:
{
JSR CheckForNextPhase
@@ -231,8 +222,6 @@ Sprite_KydrogBoss_Main:
RTS
}
; -------------------------------------------------------
KydrogBoss_WalkForward:
{
%PlayAnimation(0, 2, 8)
@@ -261,8 +250,6 @@ Sprite_KydrogBoss_Main:
RTS
}
; -------------------------------------------------------
KydrogBoss_TakeDamage: ;0x06
{
%StartOnFrame(12)
@@ -298,8 +285,6 @@ Sprite_KydrogBoss_Main:
RTS
}
; -------------------------------------------------------
KydrogBoss_TauntPlayer: ;0x07
{
%StartOnFrame(15)
@@ -317,8 +302,6 @@ Sprite_KydrogBoss_Main:
RTS
}
; -------------------------------------------------------
KydrogBoss_SummonStalfos: ;0x08
{
%StartOnFrame(17)
@@ -339,8 +322,6 @@ Sprite_KydrogBoss_Main:
RTS
}
; -------------------------------------------------------
KydrogBoss_Death: ;0x09
{
%StartOnFrame(0)
@@ -421,8 +402,6 @@ Sprite_KydrogBoss_Main:
}
}
; =========================================================
CheckForNextPhase:
{
LDA !KydrogPhase : CMP.b #$00 : BEQ .phase_one
@@ -461,8 +440,6 @@ CheckForNextPhase:
RTS
}
; =========================================================
; TODO: Use a timer to unfreeze the sprite
Sprite_CheckIfFrozen:
{
@@ -508,8 +485,6 @@ KydrogBoss_Set_Damage:
;BA D1 D2 D3 D4 D5 AR HS BM SA PD FR IR BB ET QU
}
; =========================================================
Sprite_Offspring_SpawnHead:
{
JSL GetRandomInt : AND.b #$3F : BNE .normal_head
@@ -610,8 +585,6 @@ GetNumberSpawnStalfos:
db $7C, $02, $A7, $85
}
; =========================================================
Sprite_KydrogBoss_Draw:
{
JSL Sprite_PrepOamCoord

View File

@@ -1,4 +1,3 @@
; ==============================================================================\
; RAM used
;$35-$37 as some temp draw ram
@@ -6,42 +5,22 @@
;$7EEA00-$7EEAB8 draw table storage
;$7EEAB8-$7EEAC9 room cleared flags
; ==============================================================================
; Hooks
org $05AB93
Sprite2_CheckDamage:
org $05F955
Sprite2_CheckIfActivePermissive:
org $05FA2E
Sprite2_MoveAltitude:
org $05F9ED
Sprite2_Move:
Sprite2_CheckDamage = $05AB93
Sprite2_CheckIfActivePermissive = $05F955
Sprite2_MoveAltitude = $05FA2E
Sprite2_Move = $05F9ED
org $068F95 ; skip SpritePrep_Bosses
NOP : NOP : NOP
;JSR $8F1C ; original JSR
JSL Lanmola_FinishInitialization
NOP #3
JSL Lanmola_FinishInitialization ;JSR $8F1C ; original JSR
org $05B60E
dw Sprite_Lanmola
org $1AF9D6
JSL SetShrapnelTimer
org $1AF981
Lanmola_SpawnShrapnel:
org $1DF614
Sprite_ConvertVelocityToAngle:
org $05A377 ;replace vanilla sprite_lanmola.asm
; ==============================================================================
org $05B60E : dw Sprite_Lanmola
org $1AF9D6 : JSL SetShrapnelTimer
org $1AF981 : Lanmola_SpawnShrapnel:
org $1DF614 : Sprite_ConvertVelocityToAngle:
org $05A377 ; replace vanilla sprite_lanmola.asm
Lanmola_FinishInitialization:
{
PHB : PHK : PLB
@@ -79,15 +58,13 @@ Lanmola_FinishInitialization:
db $80, $CF, $FF, $60
}
; ==============================================================================
Sprite_Lanmola:
{
;JSR Sprite2_CheckIfActivePermissive
LDA $0D80, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Lanmola_Wait ;0x00
dw Lanmola_Mound ;0x01
@@ -97,7 +74,7 @@ Sprite_Lanmola:
dw Lanmola_Death ;0x05
}
; ==============================================================================
Lanmola_Wait: ;0x00
{
@@ -116,7 +93,7 @@ Lanmola_Wait: ;0x00
RTS
}
; ==============================================================================
Lanmola_Mound: ;0x01
{
@@ -160,7 +137,7 @@ Lanmola_Mound: ;0x01
RTS
}
; ==============================================================================
Lanmola_Fly: ;0x02
{
@@ -229,8 +206,6 @@ Lanmola_Fly: ;0x02
RTS
}
; ==============================================================================
Lanmola_Dive: ;0x03
{
JSR Lanmola_Draw
@@ -259,8 +234,6 @@ Lanmola_Dive: ;0x03
RTS
}
; ==============================================================================
Lanmola_Reset: ;0x04
{
JSR Lanmola_Draw
@@ -283,8 +256,6 @@ Lanmola_Reset: ;0x04
RTS
}
; ==============================================================================
Lanmola_Death: ;0x05
{
JSR Lanmola_Draw
@@ -369,8 +340,6 @@ Lanmola_Death: ;0x05
RTS
}
; ==============================================================================
Lanmola_Draw:
{
JSL Lanmola_MoveSegment
@@ -520,8 +489,6 @@ Lanmola_Draw:
RTS
}
; ==============================================================================
Lanmola_DrawMound:
{
LDA.b #$04 : JSL OAM_AllocateFromRegionB
@@ -570,13 +537,9 @@ Lanmola_DrawMound:
RTS
}
; ==============================================================================
assert pc() <= $05A880
; ==============================================================================
org $1DCFCB
Sprite_Shrapnel:
{
; This sprite manifests as a boulder outdoors, and as shrapnel indoors.
@@ -630,6 +593,4 @@ Sprite_Shrapnel:
RTS
}
; ==============================================================================
assert pc() <= $1DD02A

View File

@@ -1,6 +1,5 @@
; =========================================================
; Sprite Properties
; =========================================================
; Manhandla / Big ChuChu Sprite
!SPRID = Sprite_Manhandla
!NbrTiles = 03 ; Number of tiles used in a frame
@@ -32,8 +31,6 @@
%Set_Sprite_Properties(Sprite_Manhandla_Prep, Sprite_Manhandla_Long)
; =========================================================
Sprite_Manhandla_Long:
{
PHB : PHK : PLB
@@ -52,15 +49,11 @@ Sprite_Manhandla_Long:
}
pushpc
; Sprite_DoTheDeath#PrepareEnemyDrop.post_death_stuff
org $06FA25
LDA.w $0E20, X : CMP.b #$88
pullpc
; =========================================================
Sprite_Manhandla_Prep:
{
PHB : PHK : PLB
@@ -119,9 +112,7 @@ Sprite_Manhandla_CheckForNextPhaseOrDeath:
RTS
}
; =========================================================
macro SetLeftHeadPos()
SetLeftHeadPos:
REP #$20
LDA.w SprCachedX : SEC : SBC.w #$0016
SEP #$20
@@ -131,9 +122,9 @@ macro SetLeftHeadPos()
LDA.w SprCachedY : SEC : SBC.w #$000F
SEP #$20
STA.w SprY, Y : XBA : STA.w SprYH, Y
endmacro
RTS
macro SetRightHeadPos()
SetRightHeadPos:
REP #$20
LDA.w SprCachedX : CLC : ADC.w #$0016
SEP #$20
@@ -143,9 +134,9 @@ macro SetRightHeadPos()
LDA.w SprCachedY : SEC : SBC.w #$000F
SEP #$20
STA.w SprY, Y : XBA : STA.w SprYH, Y
endmacro
RTS
macro SetCenterHeadPos()
SetCenterHeadPos:
REP #$20
LDA.w SprCachedX
SEP #$20
@@ -155,12 +146,12 @@ macro SetCenterHeadPos()
LDA.w SprCachedY
SEP #$20
STA.w SprY, Y : XBA : STA.w SprYH, Y
endmacro
RTS
Sprite_Manhandla_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Manhandla_Intro
dw Manhandla_FrontHead ; 0x01
@@ -257,7 +248,7 @@ Sprite_Manhandla_Main:
LDY.w Offspring3_Id
LDA.w SprType, Y : CMP.b #$88 : BNE .not_head3
LDA.w SprState, Y : BEQ .offspring3_dead
%SetCenterHeadPos()
JSR SetCenterHeadPos
.offspring3_dead
.not_head3
@@ -267,16 +258,16 @@ Sprite_Manhandla_Main:
Flower_Flicker:
{
%PlayAnimation(11, 12, 10)
LDA $1C : ORA.b #$01 : STA $1C ;turn on BG2 (Body)
LDA $1C : ORA.b #$01 : STA $1C ; turn on BG2 (Body)
; Flicker the body every other frame using the timer
LDA.w SprTimerA, X : AND.b #$01 : BEQ .flicker
LDA $1C : AND.b #$FE : STA $1C ;turn off BG2 (Body)
LDA $1C : AND.b #$FE : STA $1C ; turn off BG2 (Body)
.flicker
LDA.w SprTimerA, X : BNE .continue
STZ.w $0422
STZ.w $0424
LDA $1C : AND.b #$FE : STA $1C ;turn off BG2 (Body)
LDA $1C : AND.b #$FE : STA $1C ; turn off BG2 (Body)
%GotoAction($04)
LDA.b #$10 : STA.w SprTimerC, X
@@ -285,27 +276,19 @@ Sprite_Manhandla_Main:
LDA #$88
JSL Sprite_SpawnDynamically : BMI .return
TYA : STA.w Offspring3_Id
PHX
%SetCenterHeadPos()
JSR SetCenterHeadPos
LDA.b #$08 : STA.w SprSubtype, Y
STA.w SprAction, Y
LDA.b #$20 : STA.w SprHealth, Y
LDA.b #$07 : STA.w SprNbrOAM, Y
LDA.w SprY, Y : CLC : ADC.b #$20 : STA.w SprY, Y
LDA.b #$10 : STA.w SprTimerC, Y
TYX
STZ.w SprYRound, X
STZ.w SprXRound, X
PLX
.return
.continue
RTS
}
@@ -328,54 +311,47 @@ Sprite_Manhandla_Main:
LDY.w Offspring1_Id
LDA.w SprType, Y : CMP.b #$88 : BNE .not_head
LDA.w SprState, Y : BEQ .offspring1_dead
%SetLeftHeadPos()
.offspring1_dead
LDA.w SprState, Y : BEQ .offspring1_dead
JSR SetLeftHeadPos
.offspring1_dead
.not_head
LDY.w Offspring2_Id
LDA.w SprType, Y : CMP.b #$88 : BNE .not_head2
LDA.w SprState, Y : BEQ .offspring2_dead
%SetRightHeadPos()
.offspring2_dead
LDA.w SprState, Y : BEQ .offspring2_dead
JSR SetRightHeadPos
.offspring2_dead
.not_head2
LDY.w Offspring3_Id
LDA.w SprType, Y : CMP.b #$88 : BNE .not_head3
LDA.w SprState, Y : BEQ .offspring3_dead
%SetCenterHeadPos()
LDA.w SprState, Y : BEQ .offspring3_dead
JSR SetCenterHeadPos
.offspring3_dead
.not_head3
PLX
RTS
}
BigChuchu_Emerge:
{
%PlayAnimation(9, 12, 10)
JSL Sprite_DamageFlash_Long
LDA.w SprTimerA, X : BNE +
LDA.b #$02 : STA.w SprMiscD, X ; Set phase flag
LDA.b #$20 : STA.w SprTimerA, X
%GotoAction($05)
+
RTS
}
BigChuchu_Flower:
{
%PlayAnimation(12, 12, 1)
JSL Sprite_DamageFlash_Long
LDA.w SprTimerC, X : BEQ +
LDA.w SprY, X : DEC : STA.w SprY, X
+
RTS
}
@@ -391,11 +367,8 @@ Sprite_Manhandla_Main:
ChuchuBlast:
{
%PlayAnimation(3, 4, 4)
JSL Sprite_Move
%DoDamageToPlayerSameLayerOnContact()
RTS
}
}
@@ -403,7 +376,7 @@ Sprite_Manhandla_Main:
Sprite_Manhandla_Move:
{
LDA.w SprMiscC, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw StageControl
dw MoveXandY
@@ -427,7 +400,6 @@ Sprite_Manhandla_Move:
JSL Sprite_ApplySpeedTowardsPlayer
JSR Manhandla_StopIfOutOfBounds
JSL MoveBody
INC.w SprMiscC, X
RTS
}
@@ -438,7 +410,6 @@ Sprite_Manhandla_Move:
JSL Sprite_ApplySpeedTowardsPlayerXOrY
JSR Manhandla_StopIfOutOfBounds
JSL MoveBody
INC.w SprMiscC, X
RTS
}
@@ -521,8 +492,6 @@ Manhandla_StopIfOutOfBounds:
RTS
}
; =========================================================
Sprite_Manhandla_Draw:
{
JSL Sprite_PrepOamCoord
@@ -579,9 +548,6 @@ Sprite_Manhandla_Draw:
RTS
; =========================================================
.start_index
db $00, $02, $04, $08, $0C, $10, $14, $17, $1A, $1D, $23, $29, $33
.nbr_of_tiles
@@ -719,7 +685,6 @@ Sprite_BigChuchu_Draw:
RTS
; =======================================================
.start_index
db $00, $09, $12, $1B, $1C
.nbr_of_tiles
@@ -761,12 +726,8 @@ Chuchu_SpawnBlast:
PHX
LDA.b #$88
JSL Sprite_SpawnDynamically : BMI .return
LDA.b #$0A : STA.w SprSubtype, Y
STA.w SprAction, Y
LDA.b #$0A : STA.w SprSubtype, Y : STA.w SprAction, Y
JSL GetRandomInt : AND.b #$01 : TAX
LDA.w .speed_and_offset_x, X : STA.w SprXSpeed, Y
LDA.w SprX, Y : CLC : ADC.w .speed_and_offset_x, X : STA.w SprX, Y
STA.w SprXRound, Y
@@ -779,12 +740,10 @@ Chuchu_SpawnBlast:
LDA.b #$10 : STA.w SprTimerB, Y
LDA.b #$00 : STA.w SprNbrOAM, Y
LDA.b #$03 : STA.w SprHitbox, Y
.return
PLX
RTS
.speed_and_offset_x
db -16, 16
@@ -797,43 +756,27 @@ Mothula_SpawnBeams:
LDA.b #$36 ; SFX3.36
JSL $0DBB8A ; SpriteSFX_QueueSFX3WithPan
LDA.b #$02
STA.w $0FB5
LDA.b #$02 : STA.w $0FB5
.next_spawn
LDA.b #$89 ; SPRITE 89
JSL Sprite_SpawnDynamically
BMI .no_space
JSL Sprite_SpawnDynamically : BMI .no_space
JSL Sprite_SetSpawnedCoordinates
LDA.b $02 : SEC : SBC.b $04
CLC : ADC.b #$03 : STA.w SprY,Y
LDA.b #$10 : STA.w SprTimerA,Y : STA.w SprBulletproof,Y
JSL Sprite_SetSpawnedCoordinates
LDA.b $02 : SEC : SBC.b $04
CLC : ADC.b #$03 : STA.w SprY,Y
LDA.b #$10 : STA.w SprTimerA,Y : STA.w SprBulletproof,Y
PHX
LDX.w $0FB5
LDA.b $00 : CLC : ADC.w .speed_and_offset_x,X
STA.w SprX,Y
LDA.w .speed_and_offset_x,X : STA.w SprXSpeed,Y
LDA.w .speed_y,X
STA.w SprYSpeed,Y
LDA.b #$00
STA.w SprHeight,Y
PLX
PHX
LDX.w $0FB5
LDA.b $00 : CLC : ADC.w .speed_and_offset_x,X : STA.w SprX,Y
LDA.w .speed_and_offset_x,X : STA.w SprXSpeed,Y
LDA.w .speed_y,X : STA.w SprYSpeed,Y
LDA.b #$00 : STA.w SprHeight,Y
PLX
.no_space
DEC.w $0FB5
BPL .next_spawn
RTS
.speed_and_offset_x
db -20, 0, 20
@@ -845,23 +788,19 @@ Mothula_SpawnBeams:
SpawnLeftManhandlaHead:
{
LDA #$88
JSL Sprite_SpawnDynamically : BMI .return
TYA : STA.w Offspring1_Id
JSL Sprite_SpawnDynamically : BMI .return
TYA : STA.w Offspring1_Id
PHX
%SetLeftHeadPos()
; store the sub-type
JSR SetLeftHeadPos
LDA.b #$03 : STA.w SprSubtype, Y
STA.w SprAction, Y
LDA.b #$14 : STA.w SprHealth, Y
LDA.b #$90 : STA.w SprTileDie, Y
LDA.w SprGfxProps : ORA.b #$80 : STA.w SprGfxProps, Y
TYX
STZ.w SprYRound, X
STZ.w SprXRound, X
PLX
.return
RTS
}
@@ -871,17 +810,14 @@ SpawnRightManhandlaHead:
LDA #$88
JSL Sprite_SpawnDynamically : BMI .return
TYA : STA.w Offspring2_Id
PHX
%SetRightHeadPos()
JSR SetRightHeadPos
LDA.b #$02
STA.w SprSubtype, Y
LDA.b #$14 : STA.w SprHealth, Y
LDA.b #$90 : STA.w SprTileDie, Y
LDA.w SprGfxProps : AND.b #$80 : STA.w SprGfxProps, Y
TYX
STZ.w SprYRound, X
STZ.w SprXRound, X
PLX
@@ -894,18 +830,14 @@ SpawnCenterMandhandlaHead:
LDA #$88
JSL Sprite_SpawnDynamically : BMI .return
TYA : STA.w Offspring3_Id
PHX
%SetCenterHeadPos()
JSR SetCenterHeadPos
LDA.b #$01
STA.w SprSubtype, Y
LDA.b #$14 : STA.w SprHealth, Y
LDA.b #$90 : STA.w SprTileDie, Y
LDA.w SprGfxProps : AND.b #$80 : STA.w SprGfxProps, Y
TYX
STZ.w SprYRound, X
STZ.w SprXRound, X
PLX
@@ -915,45 +847,40 @@ SpawnCenterMandhandlaHead:
ApplyManhandlaPalette:
{
REP #$20 ;Set A in 16bit mode
;note, this uses adresses like 7EC300 and not 7EC500 because the game
;will fade the colors into 7EC500 based on the colors found in 7EC300
LDA #$7FFF : STA $7EC5E2 ;BG2
LDA #$08D9 : STA $7EC5E4
LDA #$1E07 : STA $7EC5E6
LDA #$4ACA : STA $7EC5E8
LDA #$14A5 : STA $7EC5EA
LDA #$133F : STA $7EC5EC
LDA #$19DF : STA $7EC5EE
INC $15
SEP #$20 ;Set A in 8bit mode
RTS
REP #$20 ;Set A in 16bit mode
; note, this uses adresses like 7EC300 and not 7EC500 because the game
; will fade the colors into 7EC500 based on the colors found in 7EC300
LDA #$7FFF : STA $7EC5E2 ;BG2
LDA #$08D9 : STA $7EC5E4
LDA #$1E07 : STA $7EC5E6
LDA #$4ACA : STA $7EC5E8
LDA #$14A5 : STA $7EC5EA
LDA #$133F : STA $7EC5EC
LDA #$19DF : STA $7EC5EE
INC $15
SEP #$20 ;Set A in 8bit mode
RTS
}
ApplyManhandlaGraphics:
{
PHX
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2100 ; turn the screen off (required)
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #$5000 : STA $2116 ; Destination of the DMA $5800 in vram <- this need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
; "001 => 2 registers write once (2 bytes: p, p+1)"
PHX
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2100 ; turn the screen off (required)
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #$5000 : STA $2116 ; Destination of the DMA $5800 in vram, need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
; "001 => 2 registers write once (2 bytes: p, p+1)"
LDA.w #ManhandlaGraphics : STA $4302
LDX.b #ManhandlaGraphics>>16 : STX $4304
LDA.w #ManhandlaGraphics : STA $4302
LDX.b #ManhandlaGraphics>>16 : STX $4304
LDA #$2000 : STA $4305 ; Size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Do the DMA
LDX #$0F : STX $2100 ; Turn the screen back on
SEP #$30
PLX
RTS
LDA #$2000 : STA $4305 ; Size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Do the DMA
LDX #$0F : STX $2100 ; Turn the screen back on
SEP #$30
PLX
RTS
ManhandlaGraphics:
incbin manhandla.bin

View File

@@ -2,12 +2,10 @@
; Octoboss by Zarby89
pushpc
; Sprite_A2_Kholdstare
org $1E9518
JSL Sprite_Octoboss_Long
RTS
pullpc
BrotherSpr = $0EB0
@@ -74,7 +72,7 @@ Sprite_Octoboss_Long:
Sprite_Octoboss_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw WaitForPlayerToApproach ; 00
dw Emerge ; 01
@@ -97,7 +95,7 @@ Sprite_Octoboss_Main:
Sprite_Octoboss_Secondary:
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw WaitForPlayerToApproach ; 00
dw Emerge ; 01
@@ -501,7 +499,7 @@ Sprite_Octoboss_Secondary:
LDA.w SprHealth, Y : STA.b $00
LDA.w SprHealth, X : CLC : ADC.b $00
RTS
}
}
}
Sprite_Octoboss_Draw:
@@ -509,10 +507,9 @@ Sprite_Octoboss_Draw:
JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer
LDA $0DC0, X : CLC : ADC SprFrame, X : TAY;Animation Frame
LDA $0DC0, X : CLC : ADC.w SprFrame, X : TAY
LDA .start_index, Y : STA $06
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
@@ -560,11 +557,6 @@ Sprite_Octoboss_Draw:
RTS
; =========================================================
; Sprite Draw Generated Data
; This is where the generated Data for the sprite go
; =========================================================
.start_index
db $00, $04, $0A, $10, $16, $1C, $20, $24, $28, $2C, $30, $34, $38, $3C, $40, $44
.nbr_of_tiles
@@ -662,7 +654,7 @@ Sprite_Octoboss_Draw2:
JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer
LDA $0DC0, X : CLC : ADC SprFrame, X : TAY;Animation Frame
LDA $0DC0, X : CLC : ADC.w SprFrame, X : TAY;Animation Frame
LDA .start_index, Y : STA $06

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -9,7 +9,7 @@ Sprite_VampireBat_Main:
JSL Sprite_BounceFromTileCollision
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw VampireBat_Idle
dw VampireBat_Ascend
@@ -38,7 +38,7 @@ Sprite_VampireBat_Main:
INC.w SprAction, X
LDA.b #$50 : STA.w SprTimerC, X
JSL GetRandomInt : AND.b #$3F : BNE +
JSR Sprite_SpawnFireKeese
JSL Sprite_SpawnFireKeese
+
RTS
}
@@ -87,7 +87,16 @@ Sprite_SpawnFireKeese:
LDA.b #$01 : STA.w SprSubtype, Y ; Fire Keese
JSL Sprite_SetSpawnedCoords
.spawn_failed
RTS
RTL
}
Sprite_SpawnIceKeese:
{
LDA.b #$11
JSL Sprite_SpawnDynamically : BMI +
JSL Sprite_SetSpawnedCoords
+
RTL
}
Sprite_VampireBat_Draw:

View File

@@ -60,7 +60,7 @@ Sprite_Wolfos_Prep:
RTL
.spawn_wolfos
LDA.b #$40 : STA.w SprTimerA, X
LDA.b #$80 : STA.w SprDefl, X ; Sprite persist
LDA.b #$82 : STA.w SprDefl, X ; persist, impervious to arrows
LDA.b #$08 : STA.w SprNbrOAM, X ; Nbr Oam Entries
PLB
RTL
@@ -137,7 +137,7 @@ Wolfos_DecideAction:
Sprite_Wolfos_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Wolfos_AttackForward ; 0x00
dw Wolfos_AttackBack ; 0x01
@@ -249,8 +249,8 @@ Sprite_Wolfos_Main:
.wait
; Wait for Song of Healing before granting the mask.
LDA $FE : BEQ .ninguna_cancion
STZ $FE
LDA.b SongFlag : CMP.b #$01 : BNE .ninguna_cancion
STZ.b SongFlag
LDA.b #$20 : STA.w SprTimerD, X
LDA.w POSX : STA.w SprX, X
LDA.w POSXH : STA.w SprXH, X

View File

@@ -43,15 +43,13 @@ Sprite_AntiKirby_Long:
RTL
}
; =========================================================
Sprite_AntiKirby_Prep:
{
PHB : PHK : PLB
STZ.w SprDefl, X
STZ.w SprTileDie, X
STZ.w SprMiscB, X
LDA.l SWORD : DEC : TAY
LDA.l Sword : DEC : TAY
LDA .bump_damage, Y : STA.w SprBump, X
LDA .health, Y : STA.w SprHealth, X
LDA .prize_pack, Y : STA.w SprPrize, X
@@ -83,7 +81,7 @@ Sprite_AntiKirby_Main:
JSL Sprite_CheckIfRecoiling
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw AntiKirby_Main
dw AntiKirby_Hurt

View File

@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_Booki_Prep, Sprite_Booki_Long)
; =========================================================
Sprite_Booki_Long:
{
PHB : PHK : PLB
@@ -46,12 +44,10 @@ Sprite_Booki_Long:
RTL
}
; =========================================================
Sprite_Booki_Prep:
{
PHB : PHK : PLB
LDA.l SWORD : DEC A : TAY
LDA.l Sword : DEC A : TAY
LDA.w .health, Y : STA.w SprHealth, X
STZ.w SprMiscB, X
PLB
@@ -61,12 +57,10 @@ Sprite_Booki_Prep:
db $04, $08, $10, $18
}
; =========================================================
Sprite_Booki_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw StalkPlayer
dw HideFromPlayer
@@ -76,16 +70,13 @@ Sprite_Booki_Main:
StalkPlayer:
{
%PlayAnimation(0,1,16)
JSR Sprite_Booki_Move
RTS
}
HideFromPlayer:
{
%PlayAnimation(0,4,16)
LDA.w SprTimerA, X : BNE +
INC.w SprAction, X
+
@@ -95,9 +86,7 @@ Sprite_Booki_Main:
HiddenFromPlayer:
{
%PlayAnimation(4,4,16)
JSR Sprite_Booki_Move
JSL GetRandomInt : AND.b #$03 : BEQ +
INC.w SprAction, X
+
@@ -107,9 +96,7 @@ Sprite_Booki_Main:
ApproachPlayer:
{
%PlayAnimation(5,9,16)
JSR Sprite_Booki_Move
RTS
}
}
@@ -135,7 +122,7 @@ Sprite_Booki_Move:
.no_damage
LDA.w SprMiscB, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw SlowFloat
dw FloatAway
@@ -198,9 +185,7 @@ Sprite_Booki_Draw:
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset?
ASL A : TAX

View File

@@ -29,7 +29,7 @@
!ImpervSwordHammer = 00 ; 01 = Impervious to sword and hammer attacks
!Boss = 00 ; 00 = normal sprite, 01 = sprite is a boss
%Set_Sprite_Properties(Sprite_BusinessScrub_Prep, Sprite_BusinessScrub_Long);
%Set_Sprite_Properties(Sprite_BusinessScrub_Prep, Sprite_BusinessScrub_Long)
Sprite_BusinessScrub_Long:
{
@@ -60,14 +60,10 @@ Sprite_BusinessScrub_Prep:
{
PHB : PHK : PLB
LDA.w SprSubtype, X : CMP.b #$01 : BEQ .pea_shot
CMP.b #$02 : BEQ .cutscene_scrub
JMP +
.pea_shot
LDA.b #$06 : STA.w SprAction, X ; Pea Shot State
LDA.b #$20 : STA.b SprPrize, X
JMP +
.cutscene_scrub
LDA.b #$08 : STA.w SprAction, X
+
PLB
RTL
@@ -84,7 +80,7 @@ Sprite_BusinessScrub_Prep:
Sprite_BusinessScrub_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw BusinessScrub_Hiding
dw BusinessScrub_Attack
@@ -96,8 +92,6 @@ Sprite_BusinessScrub_Main:
dw BusinessScrub_PeaShot
dw BusinessScrub_HidingDefeated
dw BusinessScrub_CutsceneStart
; 0x00
BusinessScrub_Hiding:
{
@@ -239,12 +233,6 @@ Sprite_BusinessScrub_Main:
RTS
}
BusinessScrub_CutsceneStart:
{
; TODO: Add deku dream cutscene
RTS
}
}
; =========================================================

View File

@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_Darknut_Prep, Sprite_Darknut_Long)
; =========================================================
Sprite_Darknut_Long:
{
PHB : PHK : PLB
@@ -46,8 +44,6 @@ Sprite_Darknut_Long:
RTL
}
; =========================================================
Sprite_Darknut_Prep:
{
PHB : PHK : PLB
@@ -59,21 +55,14 @@ Sprite_Darknut_Prep:
RTL
.health
db $04, $0C, $0F, $10
db $04, $06, $08, $0A
}
; =========================================================
DarknutSpeed = 04
Sprite_Darknut_Main:
{
LDA.w POSX : STA $02
LDA.w POSY : STA $03
LDA.w SprX, X : STA $04
LDA.w SprY, X : STA $05
JSL GetDistance8bit_Long
CMP.b #$80 : BCS .no_probe
JSL GetDistance8bit_Long : CMP.b #$80 : BCS .no_probe
; JSL Sprite_SendOutProbe
JSL Sprite_SpawnProbeAlways_long
.no_probe
@@ -83,11 +72,14 @@ Sprite_Darknut_Main:
JSL Sprite_Move
JSL Sprite_BounceFromTileCollision
JSL Sprite_PlayerCantPassThrough
JSL Sprite_DamageFlash_Long
JSL Sprite_CheckIfRecoiling
JSL Sprite_CheckDamageFromPlayer : BCC .no_dano
LDA.b #$FF : STA.w SprTimerD, X
.no_dano
LDA.w SprTimerA, X : BEQ +
LDA.b #$90 : STA.w SprTimerD, X
+
@@ -107,7 +99,7 @@ Sprite_Darknut_Main:
JSR Goriya_HandleTileCollision
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw FaceRight
dw FaceLeft
@@ -181,8 +173,6 @@ Sprite_Darknut_BasicMove:
}
}
; =========================================================
Sprite_Darknut_Draw:
{
JSL Sprite_PrepOamCoord
@@ -239,8 +229,6 @@ Sprite_Darknut_Draw:
RTS
; =======================================================
.start_index
db $00, $03, $06, $09, $0C, $0E, $10, $12
.nbr_of_tiles
@@ -290,5 +278,4 @@ Sprite_Darknut_Draw:
db $02, $02
db $02, $02
db $02, $02
}

View File

@@ -12,7 +12,7 @@
Sprite_EonScrub_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw EonScrub_Stalking
dw EonScrub_Attack
@@ -33,10 +33,6 @@ Sprite_EonScrub_Main:
JSL Sprite_IsBelowPlayer : TYA
CMP #$00 : BNE .is_below_player
; Check if the player is too close
LDA $22 : STA $02
LDA $20 : STA $03
LDA.w SprX, X : STA $04
LDA.w SprY, X : STA $05
JSL GetDistance8bit_Long : CMP.b #$24 : BCC .too_close
; The player is below the scrub, so it should pop up
LDA #$20 : STA.w SprTimerA, X
@@ -60,10 +56,6 @@ Sprite_EonScrub_Main:
INC.w SprAction, X
.not_done
LDA.w POSX : STA $02
LDA.w POSY : STA $03
LDA.w SprX, X : STA $04
LDA.w SprY, X : STA $05
JSL GetDistance8bit_Long : CMP #$18 : BCS .not_too_close
%GotoAction(0)
.not_too_close

View File

@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_Goriya_Prep, Sprite_Goriya_Long)
; =========================================================
Sprite_Goriya_Long:
{
PHB : PHK : PLB
@@ -51,8 +49,6 @@ Sprite_Goriya_Long:
RTL
}
; =========================================================
Sprite_Goriya_Prep:
{
PHB : PHK : PLB
@@ -61,12 +57,10 @@ Sprite_Goriya_Prep:
RTL
}
; =========================================================
Sprite_Goriya_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Goriya_WalkingUp
dw Goriya_WalkingDown
@@ -197,7 +191,7 @@ Sprite_Goriya_Move:
+
LDA.w SprMiscB, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Goriya_MoveUp
dw Goriya_MoveDown
@@ -309,9 +303,6 @@ Sprite_Goriya_Draw:
RTS
; =========================================================
.start_index
db $00, $02, $04, $06, $08, $0A, $0C, $0E
.nbr_of_tiles

View File

@@ -51,7 +51,7 @@ Sprite_HelmetChuchu_Long:
Sprite_HelmetChuchu_Prep:
{
PHB : PHK : PLB
LDA.l SWORD : DEC A : TAY
LDA.l Sword : DEC A : TAY
LDA.w .health, Y : STA.w SprHealth, X
JSL GetRandomInt : AND.b #$02 : STA.w SprAction, X
STZ.w SprMiscB, X
@@ -66,7 +66,7 @@ Sprite_HelmetChuchu_Prep:
RTL
.health
db $08, $0C, $40, $C0
db $08, $0C, $0F, $10
}
; =========================================================
@@ -222,7 +222,7 @@ Sprite_Chuchu_Move:
JSL Sprite_CheckIfRecoiling
LDA.w SprMiscB, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw BounceTowardPlayer
dw RecoilFromPlayer

View File

@@ -4,7 +4,7 @@
; 01 - Fire
; 02 - Vampire Bat
!SPRID = $11 ; The sprite ID you are overwriting (HEX)
!SPRID = $11
!NbrTiles = 08 ; Number of tiles used in a frame
!Harmless = 00 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
@@ -58,11 +58,13 @@ Sprite_Keese_Prep:
{
PHB : PHK : PLB
LDA.b #$80 : STA.w SprDefl, X
LDA.b #$30 : STA.w SprTimerC, X
LDA.w SprSubtype, X : CMP.b #$02 : BNE +
LDA.b #$20 : STA.w SprHealth, X
BRA ++
+
LDA.b #$02 : STA.w SprNbrOAM, X
LDA.b #$03 : STA.w SprNbrOAM, X
LDA.b #$03 : STA.w SprPrize, X
++
PLB
RTL
@@ -71,7 +73,7 @@ Sprite_Keese_Prep:
Sprite_Keese_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Keese_Idle
dw Keese_FlyAround
@@ -80,7 +82,9 @@ Sprite_Keese_Main:
{
STZ.w SprFrame, X
; Wait til the player is nearby then fly around
LDA.w SprTimerC, X : BEQ .move
JSL GetDistance8bit_Long : CMP.b #$20 : BCS +
.move
INC.w SprAction, X
JSL GetRandomInt
STA.w SprTimerA, X
@@ -90,21 +94,21 @@ Sprite_Keese_Main:
Keese_FlyAround:
{
%PlayAnimation(0,5,10)
%PlayAnimation(0,5,8)
JSL Sprite_CheckDamageToPlayer
JSL Sprite_CheckDamageFromPlayer
JSL Sprite_CheckDamageFromPlayer : BCC +
JSL ForcePrizeDrop_long
+
JSL Sprite_DamageFlash_Long
JSL Sprite_BounceFromTileCollision
JSL GetRandomInt : AND.b #$1F : BNE +
LDA.w SprSubtype, X : BEQ ++
JSL Sprite_Twinrova_FireAttack
JMP +
++
; Ice Attack
JSL GetRandomInt : AND.b #$3F : BNE +
LDA.b #$10 : STA.w SprTimerC, X
+
JSR Sprite_Keese_Attack
LDA.w SprTimerA, X : AND.b #$10 : BNE +
LDA.b #$40
JSL Sprite_ProjectSpeedTowardsPlayer
+
@@ -118,6 +122,19 @@ Sprite_Keese_Main:
}
}
Sprite_Keese_Attack:
{
LDA.w SprTimerC, X : BEQ +
LDA.w SprSubtype, X : BEQ ++
JSL Sprite_Twinrova_FireAttack
JMP +
++
JSL Sprite_SpawnSparkleGarnish
JSL BlindLaser_SpawnTrailGarnish
+
RTS
}
Sprite_Keese_Draw:
{
JSL Sprite_PrepOamCoord
@@ -126,6 +143,7 @@ Sprite_Keese_Draw:
LDA.w SprFrame, X : TAY ;Animation Frame
LDA .start_index, Y : STA $06
LDA.w SprFlash, X : STA $08
LDA.w SprMiscB, X : STA $09
LDA.w SprSubtype, X : CMP.b #$01 : BNE +
LDA.b #$0A : EOR $08 : STA $08
+
@@ -159,7 +177,14 @@ Sprite_Keese_Draw:
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY
; If SprMiscA != 0, then use 4th sheet
LDA.b $09 : BEQ +
LDA .chr_2, X : STA ($90), Y
JMP ++
+
LDA .chr, X : STA ($90), Y
++
INY
LDA .properties, X : ORA $08 : STA ($90), Y
@@ -202,6 +227,13 @@ Sprite_Keese_Draw:
db $84, $84
db $A4, $A4
db $A0
.chr_2
db $C0
db $E2, $E2
db $C2
db $C4, $C4
db $E4, $E4
db $E0
.properties
db $35
db $35, $75

View File

@@ -47,7 +47,7 @@ Sprite_Leever_Main:
{
JSL Sprite_DamageFlash_Long
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Leever_Underground
dw Leever_Emerge

View File

@@ -2,7 +2,7 @@
; Sprite Properties
; =========================================================
!SPRID = $08 ; The sprite ID you are overwriting (HEX)
!SPRID = $08
!NbrTiles = 05 ; Number of tiles used in a frame
!Harmless = 00 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_Octorok_Prep, Sprite_Octorok_Long)
; =========================================================
Sprite_Octorok_Long:
{
PHB : PHK : PLB
@@ -52,8 +50,6 @@ Sprite_Octorok_Long:
RTL
}
; =========================================================
Sprite_Octorok_Prep:
{
PHB : PHK : PLB
@@ -62,8 +58,6 @@ Sprite_Octorok_Prep:
RTL
}
; =========================================================
Sprite_Octorok_Main:
{
JSR Sprite_Octorok_Move
@@ -80,7 +74,7 @@ Sprite_Octorok_Main:
.not_water_tile
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Octorok_MoveDown
dw Octorok_MoveUp
@@ -148,9 +142,8 @@ Sprite_Octorok_Move:
.wait
LDY.w SprMiscC, X
LDA.w .speed_x, Y : STA.w SprXSpeed,X
LDA.w .speed_y, Y : STA.w SprYSpeed,X
LDA.w .speed_x, Y : STA.w SprXSpeed, X
LDA.w .speed_y, Y : STA.w SprYSpeed, X
JSL Sprite_CheckTileCollision
LDA.w $0E70, X : BEQ .no_collision
@@ -159,26 +152,18 @@ Sprite_Octorok_Move:
.no_collision
RTS
; ---------------------------------------------------------
.octorok_used_barrage
STZ.w SprXSpeed, X : STZ.w SprYSpeed,X
LDA.w SprTimerA, X : BNE Octorock_ShootEmUp
INC.w SprMiscF, X
LDA.w SprMiscC, X
PHA
JSL GetRandomInt : AND.b #$3F : ADC.b #$30 : STA.w SprTimerA, X
AND.b #$03 : STA.w SprMiscC, X
PLA
CMP.w SprMiscC, X : BEQ .exit
EOR.w SprMiscC, X : BNE .exit
LDA.b #$08 : STA.w SprTimerB,X
EOR.w SprMiscC, X : BNE .exit
LDA.b #$08 : STA.w SprTimerB,X
.exit
RTS
@@ -221,7 +206,7 @@ Sprite_WaterOctorok_Main:
JSR Sprite_WaterOctorok_Attack
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw WaterOctorok_FaceDown
dw WaterOctorok_FaceUp
@@ -270,7 +255,7 @@ Sprite_WaterOctorok_Attack:
JSL Sprite_CheckDamageToPlayer
LDA.w SprMiscG, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw WaterOctorok_Hidden
dw WaterOctorok_PoppingUp
@@ -284,8 +269,7 @@ Sprite_WaterOctorok_Attack:
+
JSL GetDistance8bit_Long
CMP.b #$40
BCC .not_close_enough ; LD < 64
CMP.b #$40 : BCC .not_close_enough ; LD < 64
INC.w SprMiscG, X
%SetTimerA($10)
.not_close_enough
@@ -332,19 +316,14 @@ Sprite_WaterOctorok_Attack:
Octorok_ShootSingle:
{
LDA.w SprTimerA,X : CMP.b #$1C : BNE .bide_time
LDA.w SprTimerA, X : CMP.b #$1C : BNE .bide_time
PHA
JSR Octorok_SpawnRock
PLA
.bide_time
LSR A
LSR A
LSR A
LSR #3
TAY
LDA.w .mouth_anim_step,Y
STA.w SprMiscB,X
LDA.w .mouth_anim_step, Y : STA.w SprMiscB, X
RTS
.mouth_anim_step
@@ -355,33 +334,24 @@ Octorok_ShootSingle:
db $02, $01, $01, $00
}
; ---------------------------------------------------------
Octorok_Shoot4Ways:
{
LDA.w SprTimerA,X
LDA.w SprTimerA, X
PHA
CMP.b #$80 : BCS .animate
AND.b #$0F : BNE .delay_turn
PHA
LDY.w SprMiscC,X
LDA.w .next_direction,Y : STA.w SprMiscC,X
LDY.w SprMiscC, X
LDA.w .next_direction, Y : STA.w SprMiscC, X
PLA
.delay_turn
CMP.b #$08 : BNE .animate
JSR Octorok_SpawnRock
.animate
PLA
LSR A
LSR A
LSR A
LSR A
LSR #4
TAY
LDA.w .mouth_anim_step,Y : STA.w SprMiscB,X
LDA.w .mouth_anim_step, Y : STA.w SprMiscB, X
RTS
.next_direction

View File

@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_PolsVoice_Prep, Sprite_PolsVoice_Long)
; =========================================================
Sprite_PolsVoice_Long:
{
PHB : PHK : PLB
@@ -46,8 +44,6 @@ Sprite_PolsVoice_Long:
RTL
}
; =========================================================
Sprite_PolsVoice_Prep:
{
PHB : PHK : PLB
@@ -58,8 +54,6 @@ Sprite_PolsVoice_Prep:
RTL
}
; =========================================================
Sprite_PolsVoice_Main:
{
JSR PolsVoice_CheckForFluteSong
@@ -132,8 +126,9 @@ Sprite_PolsVoice_Main:
PolsVoice_CheckForFluteSong:
{
; If the player plays the flute
LDA $FE : BEQ +
LDA.b SongFlag : BEQ +
LDA.b #$03 : STA.w SprState, X
JSL ForcePrizeDrop_long
+
RTS
}

File diff suppressed because it is too large Load Diff

View File

@@ -124,6 +124,7 @@ Sprite_Puffstool_Main:
JSL Sprite_CheckDamageToPlayerSameLayer
LDA.w SprTimerC, X : BNE +
JSL ForcePrizeDrop_long
STZ.w SprState, X
+
RTS

View File

@@ -60,7 +60,7 @@ Sprite_SeaUrchin_Prep:
Sprite_SeaUrchin_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Idle
dw Death
@@ -80,11 +80,9 @@ Sprite_SeaUrchin_Main:
{
LDA.b #$06 : STA.w SprState, X
LDA.b #$0A : STA.w SprTimerA, X
STZ.w SprPrize,X
LDA.b #$09 ; SFX2.1E
JSL $0DBB8A ; SpriteSFX_QueueSFX3WithPan
JSL ForcePrizeDrop_long
LDA.b #$09 : JSL SpriteSFX_QueueSFX3WithPan
RTS
}
}

View File

@@ -50,7 +50,7 @@ Sprite_ThunderGhost_Long:
Sprite_ThunderGhost_Prep:
{
PHB : PHK : PLB
LDA.l SWORD : DEC A : TAY
LDA.l Sword : DEC A : TAY
LDA.w .health, Y : STA.w SprHealth, X
LDA.b #$08 : STA.w SprTimerB, X
LDA.b #$08 : STA.w SprTimerA, X
@@ -146,7 +146,7 @@ Sprite_ThunderGhost_Move:
.Continue
LDA.w SprMiscB, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw ThunderGhostMove

View File

@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_BeanVendor_Prep, Sprite_BeanVendor_Long)
; =========================================================
Sprite_BeanVendor_Long:
{
PHB : PHK : PLB
@@ -53,8 +51,6 @@ Sprite_BeanVendor_Long:
RTL
}
; =========================================================
Sprite_BeanVendor_Prep:
{
PHB : PHK : PLB
@@ -62,24 +58,23 @@ Sprite_BeanVendor_Prep:
LDA.b #$40 : STA.w SprTimerA, X
STZ.w SprMiscD, X
LDA.b $8A : CMP.b #$00 : BNE +
LDA.l MagicBeanProg : BNE .in_progress
LDA.b #$01 : STA.w SprMiscD, X
LDA.b #$04 : STA.w SprAction, X
JMP +
.in_progress
LDA.l MagicBeanProg : CMP.b #$3F : BCS .not_flower
; Sprite is the flower on ranch map
LDA.b #$05 : STA.w SprAction, X
.not_flower
STA.w SprFrame, X
LDA.b $1B : BNE +
LDA.b $8A : CMP.b #$00 : BNE +
LDA.l MagicBeanProg : BNE .in_progress
LDA.b #$01 : STA.w SprMiscD, X
LDA.b #$05 : STA.w SprAction, X
JMP +
.in_progress
LDA.l MagicBeanProg : CMP.b #$3F : BCS .not_flower
; Sprite is the flower on ranch map
LDA.b #$05 : STA.w SprAction, X
.not_flower
STA.w SprFrame, X
+
PLB
RTL
}
; =========================================================
Sprite_BeanVendor_Main:
{
%SpriteJumpTable(BeanVendor,
@@ -398,8 +393,6 @@ Sprite_BeanVendor_Draw:
RTS
; =======================================================
.start_index
db $00, $04, $05, $0B, $11, $13, $15
.nbr_of_tiles

View File

@@ -3,10 +3,10 @@
SickKid_CheckForSongOfHealing:
{
LDA $FE : CMP.b #$01 : BNE .no_song
LDA.b SongFlag : CMP.b #$01 : BNE .no_song
INC $0D80, X
INC $02E4
STZ $FE
STZ.b SongFlag
.no_song
RTL
}

View File

@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_DekuScrub_Prep, Sprite_DekuScrub_Long)
; =========================================================
Sprite_DekuScrub_Long:
{
PHB : PHK : PLB
@@ -45,15 +43,13 @@ Sprite_DekuScrub_Long:
RTL
}
; =========================================================
Sprite_DekuScrub_Prep:
{
PHB : PHK : PLB
LDA.b #$80 : STA.w SprDefl, X
; Peacetime Deku Scrub NPCs
LDA.b $8A : CMP.b #$2E : BNE .check_next
LDA.b AreaIndex : CMP.b #$2E : BNE .check_next
; Deku Butler
LDA.b #$07 : STA.w SprAction, X
JMP +
@@ -75,19 +71,17 @@ Sprite_DekuScrub_Prep:
LDA.b #$06 : STA.w SprAction, X
++
; Check if tail palace is cleared
LDA.l CRYSTALS : AND #$10 : BEQ +
LDA.l Crystals : AND #$10 : BEQ +
STZ.w SprState, X
+
PLB
RTL
}
; =========================================================
Sprite_DekuScrub_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw EstadoInactivo
dw QuiereCuracion
@@ -100,7 +94,6 @@ Sprite_DekuScrub_Main:
dw DekuButler_Peacetime
dw DekuPrinces_Peacetime
EstadoInactivo:
{
%PlayAnimation(0, 1, 16)
@@ -114,8 +107,8 @@ Sprite_DekuScrub_Main:
QuiereCuracion:
{
%PlayAnimation(0, 1, 16)
LDA $FE : BEQ .ninguna_cancion
STZ $FE
LDA.b SongFlag : CMP.b #$01 : BNE .ninguna_cancion
STZ.b SongFlag
LDA.b #$C0 : STA.w SprTimerD, X
%GotoAction(2)
.ninguna_cancion
@@ -171,7 +164,9 @@ Sprite_DekuScrub_Main:
%StartOnFrame(3)
%PlayAnimation(3, 3, 10)
JSL Sprite_PlayerCantPassThrough
; %ShowSolicitedMessage($0C4)
%ShowSolicitedMessage($1B9) : BCC +
LDA.b #$02 : STA.l MapIcon
+
RTS
}
@@ -180,13 +175,13 @@ Sprite_DekuScrub_Main:
%StartOnFrame(4)
%PlayAnimation(4, 4, 10)
JSL Sprite_PlayerCantPassThrough
; %ShowSolicitedMessage($0C5)
%ShowSolicitedMessage($1BA) : BCC +
LDA.b #$02 : STA.l MapIcon
+
RTS
}
}
; =========================================================
Sprite_DekuScrub_Draw:
{
JSL Sprite_PrepOamCoord

View File

@@ -62,13 +62,16 @@ Sprite_EonOwl_Long:
Sprite_EonOwl_Prep:
{
PHB : PHK : PLB
STZ.w SprHitbox, X
LDA.b $8A : CMP.b #$0E : BNE .NotGaebora
LDA.b #$20 : STA.w SprTimerA, X
LDA.b #$03 : STA.w SprAction, X
.NotGaebora
LDA.w AreaIndex : CMP.b #$50 : BNE .not_intro
; If Map 0x50, don't spawn after getting sword
LDA.l SWORD : CMP.b #$01 : BCC .continue
.Despawn
LDA.l Sword : CMP.b #$01 : BCC .continue
STZ.w SprState, X
.continue
.not_intro
@@ -81,7 +84,7 @@ Sprite_EonOwl_Prep:
Sprite_EonOwl_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw EonOwl_Idle
dw EonOwl_IntroDialogue
@@ -94,10 +97,6 @@ Sprite_EonOwl_Main:
EonOwl_Idle:
{
%PlayAnimation(0,1,16)
LDA.w POSX : STA $02
LDA.w POSY : STA $03
LDA.w SprX, X : STA $04
LDA.w SprY, X : STA $05
JSL GetDistance8bit_Long : CMP #$28 : BCS .not_too_close
%GotoAction(1)
.not_too_close
@@ -134,9 +133,10 @@ Sprite_EonOwl_Main:
KaeporaGaebora:
{
%PlayAnimation(0,0,1)
LDA.w SprTimerA, X : BNE .not_ready
%ShowUnconditionalMessage($146)
%GotoAction(4)
JSL GetDistance8bit_Long : CMP.b #$50 : BCC .not_ready
LDA.w SprTimerA, X : BNE .not_ready
%ShowUnconditionalMessage($146)
%GotoAction(4)
.not_ready
RTS
}
@@ -144,7 +144,7 @@ Sprite_EonOwl_Main:
KaeporaGaebora_Respond:
{
LDA $1CE8 : BNE .player_said_no
%GotoAction(5)
%GotoAction(3)
RTS
.player_said_no
%GotoAction(5)

View File

@@ -9,7 +9,7 @@ Sprite_EonZora_Main:
JSL Sprite_BounceFromTileCollision
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw EonZora_Forward
dw EonZora_Left

View File

@@ -3,7 +3,7 @@
Sprite_EonZoraElder_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw EonZoraElder_Idle
dw EonZoraElder_Surprised

View File

@@ -31,8 +31,6 @@
%Set_Sprite_Properties(Sprite_Farore_Prep, Sprite_Farore_Long)
; =========================================================
Sprite_Farore_Long:
{
PHB : PHK : PLB
@@ -50,8 +48,6 @@ Sprite_Farore_Long:
RTL
}
; =========================================================
Sprite_Farore_Prep:
{
PHB : PHK : PLB
@@ -67,8 +63,6 @@ Sprite_Farore_Prep:
RTL
}
; =========================================================
; Movement key bitwise ---- udlr
WALKSPEED = 14
@@ -77,7 +71,7 @@ STORY_STATE = $B6
Sprite_Farore_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw IntroStart
dw MoveUpTowardsFarore
@@ -198,19 +192,12 @@ Sprite_Farore_Main:
}
; 07
; Look at the RAM SprY to SprYRound, the first few are the actual positions of the sprite
; that you can just set manually or SprYSpeed and SprXSpeed are the "speeds" of the sprites irrc
; You can set one of the speeds and then call the function called Sprite_Move
; And then that will handle it applying the speed for you
MakuArea_FaroreWaitForKydrog:
{
%PlayAnimation(5, 5, 8)
RTS
}
}
; =========================================================
Sprite_Farore_Draw:
{
@@ -220,16 +207,13 @@ Sprite_Farore_Draw:
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset?
ASL A : TAX
@@ -246,7 +230,7 @@ Sprite_Farore_Draw:
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E
.on_screen_y
.on_screen_y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY
@@ -268,50 +252,48 @@ Sprite_Farore_Draw:
RTS
; =========================================================
.start_index
db $00, $02, $04, $06, $08, $0A, $0C
.nbr_of_tiles
db 1, 1, 1, 1, 1, 1, 1
.x_offsets
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, -1
.y_offsets
dw -8, 4
dw -8, 4
dw 4, -8
dw -8, 4
dw 4, -7
dw -8, 4
dw 4, -7
.chr
db $A8, $AA
db $A8, $88
db $AA, $A8
db $8A, $8C
db $8C, $8A
db $8A, $AC
db $AA, $86
.properties
db $3B, $3B
db $3B, $7B
db $3B, $3B
db $3B, $3B
db $7B, $3B
db $3B, $3B
db $3B, $7B
.sizes
db $02, $02
db $02, $02
db $02, $02
db $02, $02
db $02, $02
db $02, $02
db $02, $02
.start_index
db $00, $02, $04, $06, $08, $0A, $0C
.nbr_of_tiles
db 1, 1, 1, 1, 1, 1, 1
.x_offsets
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, 0
dw 0, -1
.y_offsets
dw -8, 4
dw -8, 4
dw 4, -8
dw -8, 4
dw 4, -7
dw -8, 4
dw 4, -7
.chr
db $A8, $AA
db $A8, $88
db $AA, $A8
db $8A, $8C
db $8C, $8A
db $8A, $AC
db $AA, $86
.properties
db $3B, $3B
db $3B, $7B
db $3B, $3B
db $3B, $3B
db $7B, $3B
db $3B, $3B
db $3B, $7B
.sizes
db $02, $02
db $02, $02
db $02, $02
db $02, $02
db $02, $02
db $02, $02
db $02, $02
}

View File

@@ -1020,12 +1020,42 @@ LinkState_Minecart:
db -1, 0, 0, 0
}
TileBehavior_TL_Long:
{
LDA.w !MinecartDirection : CMP.b #East : BNE +
+
CMP.b #West
RTL
}
TileBehavior_StopLeft_Long:
{
; Transition back to sprite, put link in state default
LDA.w !LinkInCart : BEQ +
JSL MinecartFollower_TransitionToSprite
STZ.w LinkState
STZ.w !LinkInCart
+
RTL
}
pushpc
org $07A5F7
JSL LinkState_Minecart
RTS
TileBehavior_TL:
JSL TileBehavior_TL_Long
RTS
TileBehavior_StopLeft:
JSL TileBehavior_StopLeft_Long
RTS
assert pc() <= $07A64B
; Minecart Track tile types

View File

@@ -1,6 +1,6 @@
; Goron Sprite
!SPRID = $F2 ; The sprite ID you are overwriting (HEX)
!SPRID = $F2
!NbrTiles = 04 ; Number of tiles used in a frame
!Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
@@ -81,7 +81,7 @@ Sprite_Goron_Main:
JSL Sprite_PlayerCantPassThrough
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw KalyxoGoron_Main
dw KalyxoGoron_OpenMines

View File

@@ -70,7 +70,7 @@ KorokWalkSpeed = $02
Sprite_Korok_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Sprite_Korok_Idle
dw Sprite_Korok_WalkingDown

View File

@@ -1,6 +1,5 @@
; =========================================================
; Sprite Properties
; =========================================================
; Maku Tree
!SPRID = Sprite_MakuTree
!NbrTiles = 00 ; Number of tiles used in a frame
@@ -32,8 +31,6 @@
%Set_Sprite_Properties(Sprite_MakuTree_Prep, Sprite_MakuTree_Long)
; =========================================================
Sprite_MakuTree_Long:
{
PHB : PHK : PLB
@@ -43,7 +40,6 @@ Sprite_MakuTree_Long:
PLB
RTL
}
; =========================================================
Sprite_MakuTree_Prep:
{
@@ -56,8 +52,6 @@ Sprite_MakuTree_Prep:
RTL
}
; =========================================================
PaletteFilter_StartBlindingWhite = $00EEF1
ApplyPaletteFilter = $00E914
@@ -66,7 +60,7 @@ Sprite_MakuTree_Main:
JSL Sprite_PlayerCantPassThrough
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw MakuTree_Handler
dw MakuTree_MeetLink
@@ -86,10 +80,6 @@ Sprite_MakuTree_Main:
MakuTree_MeetLink:
{
LDA.w POSX : STA $02
LDA.w POSY : STA $03
LDA.w SprX, X : STA $04
LDA.w SprY, X : STA $05
JSL GetDistance8bit_Long : CMP #$28 : BCS .not_too_close
%ShowUnconditionalMessage($20)
LDA.b #$01 : STA.l MakuTreeQuest

View File

@@ -16,17 +16,16 @@ MapleHandler:
dw Maple_PutLinkToSleep
dw Maple_HandleDreams
; LDA.l $7EF351 : BEQ +
; LDA.b #$02 : STA.l $7EF351
; LDA.b #$1B : STA.w $012F
; STZ.w SprAction, X
; +
Maple_Idle:
{
%ShowSolicitedMessage($01B3) : BCC +
INC.w SprAction, X
+
LDA.l $7EF351 : BEQ +
LDA.b #$02 : STA.l $7EF351
LDA.b #$1B : STA.w $012F
+
RTS
}
@@ -77,9 +76,9 @@ MapleHandler:
Maple_CheckForPendant:
{
; Check for pendant
LDA.l PENDANTS : AND.b #$04 : BNE .courage
LDA.l PENDANTS : AND.b #$02 : BNE .power
LDA.l PENDANTS : AND.b #$01 : BNE .wisdom
LDA.l Pendants : AND.b #$04 : BNE .courage
LDA.l Pendants : AND.b #$02 : BNE .power
LDA.l Pendants : AND.b #$01 : BNE .wisdom
JMP .none
.courage
LDA.l Dreams : AND.b #$04 : BNE .power

View File

@@ -53,7 +53,7 @@ Sprite_MaskSalesman_Main:
JSL Sprite_PlayerCantPassThrough
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw InquiryHandler
dw NoOcarina
@@ -120,7 +120,7 @@ Sprite_MaskSalesman_Main:
HasOcarina:
{
%PlayAnimation(0, 1, 16)
%ShowSolicitedMessage($080) ; Oh! You got it!
%ShowSolicitedMessage($081) ; Oh! You got it!
%GotoAction(3)
RTS
}

View File

@@ -79,7 +79,7 @@ Sprite_Mermaid_Prep:
Sprite_Mermaid_Main:
{
LDA.w SprMiscE, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw MermaidHandler
dw MapleHandler

View File

@@ -1,8 +1,6 @@
; =========================================================
; Sprite Properties
; =========================================================
; Piratian
!SPRID = $0E ; The sprite ID you are overwriting (HEX)
!SPRID = $0E
!NbrTiles = 02 ; Number of tiles used in a frame
!Harmless = 00 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
@@ -44,33 +42,33 @@ Sprite_Piratian_Long:
RTL
}
; =========================================================
Sprite_Piratian_Prep:
{
PHB : PHK : PLB
LDA.l $7EF359 : TAY
LDA.w .health, Y : STA.w SprHealth, X
STZ.w SprMiscA, X
LDA.w SprNbrOAM, X : ORA.b #$80 : STA.w SprNbrOAM, X
PLB
RTL
}
; =========================================================
.health
db $08, $0A, $0C, $0F
}
Sprite_Piratian_Main:
{
JSR Sprite_Piratian_Move
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Piratian_MoveDown
dw Piratian_MoveUp
dw Piratian_MoveLeft
dw Piratian_MoveRight
dw SkullHead
Piratian_MoveDown:
{
%PlayAnimation(0,1,16)
@@ -119,68 +117,38 @@ Sprite_Piratian_Move:
JSL ThrownSprite_TileAndSpriteInteraction_long
JSL Sprite_CheckDamageFromPlayer : BCC .no_dano
LDA.b #$01 : STA.w SprMiscA, X
LDA.w SprNbrOAM, X : AND.b #$7F : STA.w SprNbrOAM, X
%SetTimerA($60)
%SetTimerF($20)
.no_dano
LDA.w SprMiscA, X : BEQ .no_aggro
LDA.b #$10 : STA.w SprTimerA, X
LDA.b #$08
JSL Sprite_ProjectSpeedTowardsPlayer
JSL Sprite_CheckDamageToPlayer
JMP .return
.no_aggro
JSR Sprite_Piratian_Friendly
.return
RTS
}
; =========================================================
Sprite_Piratian_Friendly:
{
LDA.w SprTimerD, X : BNE +
%ShowMessageOnContact($01BB) : BCC +
LDA.b #$FF : STA.w SprTimerD, X
+
RTS
}
Sprite_Piratian_Draw:
{
JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer
%DrawSprite()
LDA.w SprFrame, X : TAY ;Animation Frame
LDA .start_index, Y : STA $06
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset?
ASL A : TAX
REP #$20
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
SEP #$20
BCC .on_screen_y
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E
.on_screen_y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY
LDA .chr, X : STA ($90), Y
INY
LDA .properties, X : STA ($90), Y
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PLX
RTS
; =========================================================
.start_index
db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09
.nbr_of_tiles

View File

@@ -43,13 +43,7 @@ RanchGirl_TeachSong:
.not_started
.running_dialog
.has_song
LDA.b $1A
LSR A
LSR A
LSR A
LSR A
AND.b #$01
STA.w $0DC0,X
LDA.b $1A : LSR #4 : AND.b #$01 : STA.w $0DC0,X
RTL
}

View File

@@ -1,6 +1,6 @@
; Tingle Sprite
!SPRID = $22 ; The sprite ID you are overwriting (HEX)
!SPRID = $22
!NbrTiles = 03 ; Number of tiles used in a frame
!Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
@@ -54,7 +54,7 @@ Sprite_Tingle_Main:
{
JSL Sprite_PlayerCantPassThrough
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Tingle_Forward
dw Tingle_Right

View File

@@ -31,12 +31,9 @@
!Boss = 00 ; 00 = normal sprite, 01 = sprite is a boss
%Set_Sprite_Properties(Sprite_Vasu_Prep, Sprite_Vasu_Long)
; =========================================================
Sprite_Vasu_Long:
{
PHB : PHK : PLB
LDA.w SprSubtype, X : BNE +
JSR Sprite_Vasu_Draw
JMP ++
@@ -45,14 +42,12 @@ Sprite_Vasu_Long:
++
JSL Sprite_DrawShadow
JSL Sprite_CheckActive : BCC .SpriteIsNotActive
JSR Sprite_Vasu_Main
JSR Sprite_Vasu_Main
.SpriteIsNotActive
PLB
RTL
}
; =========================================================
Sprite_Vasu_Prep:
{
PHB : PHK : PLB
@@ -64,14 +59,12 @@ Sprite_Vasu_Prep:
RTL
}
; =========================================================
Sprite_Vasu_Main:
{
JSL Sprite_PlayerCantPassThrough
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Vasu_Idle
dw Vasu_MessageHandler
@@ -180,8 +173,6 @@ Sprite_Vasu_Main:
}
}
; =========================================================
Sprite_Vasu_Draw:
{
JSL Sprite_PrepOamCoord

View File

@@ -88,7 +88,7 @@ LiftOrTalk:
Sprite_VillageDog_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Dog_Handler ; 00
dw Dog_LookLeftAtLink ; 01

View File

@@ -3,11 +3,11 @@ Sprite_VillageElder_Main:
%PlayAnimation(2,3,16)
JSL Sprite_PlayerCantPassThrough
REP #$30
LDA.l MAPICON : AND.w #$00FF
LDA.l OOSPROG : AND.w #$00FF
SEP #$30
CMP.b #$02 : BCS .already_met
AND.b #$10 : BNE .already_met
%ShowSolicitedMessage($143) : BCC .no_message
LDA.b #$02 : STA.l $7EF3C7
LDA.l OOSPROG : ORA.b #$10 : STA.l OOSPROG
.no_message
RTS

View File

@@ -52,7 +52,7 @@ Sprite_Zora_Handler:
RTS
.not_princess
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Sprite_Zora_Main
dw Sprite_ZoraPrincess_Main
@@ -68,7 +68,7 @@ Sprite_Zora_Main:
JSR Zora_HandleDialogue
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Zora_Forward
dw Zora_Right
@@ -105,7 +105,7 @@ Zora_TrackHeadToPlayer:
Zora_HandleDialogue:
{
LDA.l CRYSTALS : AND.b #$20 : BEQ +++
LDA.l Crystals : AND.b #$20 : BEQ +++
%ShowSolicitedMessage($01A6)
JMP +
+++

View File

@@ -35,7 +35,7 @@ Sprite_ZoraPrincess_Long:
PHB : PHK : PLB
JSR Sprite_ZoraPrincess_Draw
JSL Sprite_CheckActive : BCC .SpriteIsNotActive
JSR Sprite_ZoraPrincess_Main
JSR Sprite_ZoraPrincess_Main
.SpriteIsNotActive
PLB
RTL
@@ -44,7 +44,7 @@ Sprite_ZoraPrincess_Long:
Sprite_ZoraPrincess_Prep:
{
PHB : PHK : PLB
LDA.l $7EF302 : BEQ .doesnt_have_mask
LDA.l $7EF302 : BEQ .doesnt_have_mask
STZ.w SprState, X ; Kill the sprite
.doesnt_have_mask
@@ -60,7 +60,7 @@ Sprite_ZoraPrincess_Main:
JSL Sprite_PlayerCantPassThrough
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw WaitForLink
dw CheckForSongOfHealing
@@ -79,8 +79,8 @@ Sprite_ZoraPrincess_Main:
CheckForSongOfHealing:
{
%PlayAnimation(0, 1, 10)
LDA $FE : BEQ .ninguna_cancion
STZ $FE
LDA.b SongFlag : BEQ .ninguna_cancion
STZ.b SongFlag
LDA.b #$C0 : STA.w SprTimerD, X
%GotoAction(2)
.ninguna_cancion

View File

@@ -1,8 +1,8 @@
; =========================================================
; Sprite Properties
; =========================================================
; Collectible Sprites
; (Pineapple, Seashell, Sword/Shield, Rock Sirloin)
!SPRID = $52 ; The sprite ID you are overwriting (HEX)
!SPRID = $52
!NbrTiles = 03 ; Number of tiles used in a frame
!Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_Collectible_Prep, Sprite_Collectible_Long)
; =========================================================
Sprite_Collectible_Long:
{
PHB : PHK : PLB
@@ -59,8 +57,6 @@ Sprite_Collectible_Long:
RTL
}
; =========================================================
Sprite_Collectible_Prep:
{
PHB : PHK : PLB
@@ -80,12 +76,10 @@ Sprite_Collectible_Prep:
RTL
}
; =========================================================
Sprite_Collectible_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw Pineapple
dw Seashell
@@ -139,8 +133,6 @@ Sprite_Collectible_Main:
}
; =========================================================
Sprite_Pineapple_Draw:
{
JSL Sprite_PrepOamCoord
@@ -196,9 +188,6 @@ Sprite_Pineapple_Draw:
RTS
; =========================================================
.start_index
db $00
.nbr_of_tiles
@@ -271,7 +260,6 @@ Sprite_SwordShield_Draw:
RTS
.start_index
db $00
.nbr_of_tiles

View File

@@ -32,8 +32,6 @@
%Set_Sprite_Properties(Sprite_DekuLeaf_Prep, Sprite_DekuLeaf_Long)
; =========================================================
Sprite_DekuLeaf_Long:
{
PHB : PHK : PLB
@@ -50,8 +48,6 @@ Sprite_DekuLeaf_Long:
RTL
}
; =========================================================
Sprite_DekuLeaf_Prep:
{
PHB : PHK : PLB
@@ -62,12 +58,10 @@ Sprite_DekuLeaf_Prep:
RTL
}
; =========================================================
Sprite_DekuLeaf_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw WaitForPlayer
dw Whirlpool_Main
@@ -95,61 +89,35 @@ Sprite_DekuLeaf_Main:
LDA $0AAB : BEQ .not_on
STZ $55 ; Reset cape flag
STZ $0AAB ; Reset underwater flag
STZ $0351 ; Reset ripple flag
STZ $037B ; Reset invincibility flag
STZ $02B2
STZ $55 ; Reset cape flag
STZ $0AAB ; Reset underwater flag
STZ $0351 ; Reset ripple flag
STZ $037B ; Reset invincibility flag
STZ $02B2 ; Reset mask flag
LDA.b $10
CMP.b #$0B
BEQ .exit
LDA.b $10 : CMP.b #$0B : BEQ .exit
LDA.b $8A : AND.b #$40 : STA.b $7B : BEQ .no_mirror_portal
LDA.b $20 : STA.w $1ADF
LDA.b $21 : STA.w $1AEF
LDA.b $22 : STA.w $1ABF
LDA.b $23 : STA.w $1ACF
.no_mirror_portal
LDA.b #$23
LDA.b $8A
AND.b #$40
STA.b $7B
#SetGameModeLikeMirror:
STA.b $11
STZ.w $03F8
LDA.b #$01 : STA.w $02DB
STZ.b $B0
STZ.b $27 : STZ.b $28
LDA.b #$14 : STA.b $5D
BEQ .no_mirror_portal
LDA.b $20
STA.w $1ADF
LDA.b $21
STA.w $1AEF
LDA.b $22
STA.w $1ABF
LDA.b $23
STA.w $1ACF
.no_mirror_portal
LDA.b #$23
#SetGameModeLikeMirror:
STA.b $11
STZ.w $03F8
LDA.b #$01
STA.w $02DB
STZ.b $B0
STZ.b $27
STZ.b $28
LDA.b #$14 ; LINKSTATE 14
STA.b $5D
.not_on
.exit
.not_on
.exit
RTS
}
}
; =========================================================
Sprite_DekuLeaf_Draw:
{
JSL Sprite_PrepOamCoord
@@ -159,7 +127,6 @@ Sprite_DekuLeaf_Draw:
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
@@ -207,9 +174,6 @@ Sprite_DekuLeaf_Draw:
RTS
; =========================================================
.start_index
db $00
.nbr_of_tiles
@@ -280,8 +244,6 @@ Sprite_Whirlpool_Draw:
RTS
.start_index
db $00, $04, $08
.nbr_of_tiles

View File

@@ -1,7 +1,7 @@
; Pushable Ice Block
!SPRID = $D5; The sprite ID you are overwriting (HEX)
!NbrTiles = 03 ; Number of tiles used in a frame
!SPRID = $D5
!NbrTiles = 02
!Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
!Health = 00 ; Number of Health the sprite have
@@ -11,7 +11,7 @@
!SmallShadow = 00 ; 01 = small shadow, 00 = no shadow
!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow
!Palette = 00 ; Unused in this template (can be 0 to 7)
!Hitbox = 00 ; 00 to 31, can be viewed in sprite draw tool
!Hitbox = 09 ; 00 to 31, can be viewed in sprite draw tool
!Persist = 00 ; 01 = your sprite continue to live offscreen
!Statis = 00 ; 00 = is sprite is alive?, (kill all enemies room)
!CollisionLayer = 00 ; 01 = will check both layer for collision
@@ -33,15 +33,17 @@
Sprite_IceBlock_Long:
{
PHB : PHK : PLB
LDA.w SprMiscC, X : BEQ .not_being_pushed
STZ.w SprMiscC, X
STZ.b $5E ; Clear Links speed
STZ.b LinkSpeedTbl
STZ.b $48 ; Clear push actions bitfield
.not_being_pushed
LDA.w SprTimerA, X : BEQ .retain_momentum
LDA.b #$01 : STA.w SprMiscC, X
LDA.b #$84 : STA.b $48 ; Set statue and push block actions
LDA.b #$04 : STA.b $5E ; Slipping into pit speed
LDA.b #$04 : STA.b LinkSpeedTbl ; Slipping into pit speed
.retain_momentum
JSR Sprite_IceBlock_Draw
@@ -60,122 +62,115 @@ Sprite_IceBlock_Prep:
LDA.w SprY, X : STA.w SprMiscE, X
LDA.w SprXH, X : STA.w SprMiscF, X
LDA.w SprYH, X : STA.w SprMiscG, X
STZ.w SprDefl, X
LDA.w SprHitbox, X : ORA.b #$09 : STA.w SprHitbox, X
PLB
RTL
}
Sprite_IceBlock_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
dw MovementHandler
%PlayAnimation(0, 0, 1)
MovementHandler:
{
%PlayAnimation(0, 0, 1)
JSR Statue_BlockSprites
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
LDA.w SprMiscD, X : STA.w SprX, X
LDA.w SprMiscE, X : STA.w SprY, X
LDA.w SprMiscF, X : STA.w SprXH, X
LDA.w SprMiscG, X : STA.w SprYH, X
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
STZ.w SprTimerA, X : STZ.w SprMiscA, X
.no_damage
JSR Statue_BlockSprites
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
LDA.w SprMiscD, X : STA.w SprX, X
LDA.w SprMiscE, X : STA.w SprY, X
LDA.w SprMiscF, X : STA.w SprXH, X
LDA.w SprMiscG, X : STA.w SprYH, X
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
.no_damage
STZ.w $0642
JSR Sprite_IceBlock_CheckForSwitch : BCC .no_switch
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
LDA.b #$01 : STA.w $0642
.no_switch
STZ.w $0642
JSR Sprite_IceBlock_CheckForSwitch : BCC .no_switch
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
LDA.b #$01 : STA.w $0642
.no_switch
JSL Sprite_Move
JSL Sprite_Get_16_bit_Coords
JSL Sprite_CheckTileCollision
; ----udlr , u = up, d = down, l = left, r = right
LDA.w SprCollision, X : AND.b #$0F : BEQ +
STZ.w SprMiscA, X
+
JSL Sprite_Move ; Sprite MoveXY
JSL Sprite_Get_16_bit_Coords ; Get 16bit coords
JSL Sprite_CheckTileCollision ; Check Tile collision
; ----udlr , u = up, d = down, l = left, r = right
LDA.w SprCollision, X : AND.b #$0F : BEQ +
STZ.w SprMiscA, X
+
; If link is in contact, register a push with the sprite
; Run a timer briefly, and confirm the facing direction
; matches the push direction (cached) and then initiate
; the speed changes if they agree
JSL Sprite_CheckDamageToPlayerSameLayer : BCC .NotInContact
LDA.w SprMiscA, X : BNE .push_cached
LDA.b $26 : STA.w SprMiscA, X
JSR Sprite_ApplyPush
.push_cached
; TODO: Update Link push collision reaction
; If link is in contact, register a push with the sprite
; Run a timer briefly, and confirm the facing direction
; matches the push direction (cached) and then initiate
; the speed changes if they agree
JSL Sprite_CheckDamageToPlayerSameLayer : BCC .NotInContact
LDA.w SprMiscA, X : BNE .push_cached
LDA.b $26 : STA.w SprMiscA, X
JSR ApplyPush
.push_cached
LDA.b #$07 : STA.w SprTimerA, X
STZ.b $5E
JSL Sprite_RepelDash
LDA.w SprTimerB, X : BNE .CancelHookshot
LDA.w SprX, X : AND #$F8 : STA.w SprX, X
LDA.w SprY, X : AND #$F8 : STA.w SprY, X
RTS
.CancelHookshot:
JSL $0FF540
LDA.b #$07 : STA.w SprTimerA, X
STZ.b $5E
JSL Sprite_RepelDash
LDA.w SprTimerB, X : BNE .CancelHookshot
LDA.w SprX, X : AND #$F8 : STA.w SprX, X
LDA.w SprY, X : AND #$F8 : STA.w SprY, X
RTS
.NotInContact:
LDA.w SprTimerA, X : BNE .delay_timer
LDA.b #$0D : STA.w SprTimerB,X
.delay_timer
.CancelHookshot:
JSL Sprite_CancelHookshot
RTS
}
.NotInContact:
ApplyPush:
{
; Only apply the push if the facing direction
; and pushing direction agree with each other
LDA $26 : CMP.b #$01 : BEQ .push_right
CMP.b #$02 : BEQ .push_left
CMP.b #$04 : BEQ .push_down
CMP.b #$08 : BEQ .push_up
LDA.w SprTimerA, X : BNE .delay_timer
LDA.b #$0D : STA.w SprTimerB, X
.delay_timer
RTS
}
.push_right
LDA #16 : STA.w SprXSpeed, X
STZ.w SprYSpeed, X
JMP +
.push_left
LDA #-16 : STA.w SprXSpeed, X
STZ.w SprYSpeed, X
JMP +
.push_down
STZ.w SprXSpeed, X
LDA #16 : STA.w SprYSpeed, X
JMP +
.push_up
STZ.w SprXSpeed, X
LDA #-16 : STA.w SprYSpeed, X
+
Sprite_ApplyPush:
{
; Only apply the push if the facing direction
; and pushing direction agree with each other
LDA.w SprMiscA, X : CMP.b $26 : BEQ .push
RTS
}
.push
LDA $26 : CMP.b #$01 : BEQ .push_right
CMP.b #$02 : BEQ .push_left
CMP.b #$04 : BEQ .push_down
CMP.b #$08 : BEQ .push_up
.push_right
LDA #16 : STA.w SprXSpeed, X : STZ.w SprYSpeed, X
JMP +
.push_left
LDA #-16 : STA.w SprXSpeed, X : STZ.w SprYSpeed, X
JMP +
.push_down
LDA #16 : STA.w SprYSpeed, X : STZ.w SprXSpeed, X
JMP +
.push_up
LDA #-16 : STA.w SprYSpeed, X : STZ.w SprXSpeed, X
+
RTS
}
; Check if the tile beneath the sprite is the sliding ice
; Currently unused as it doesnt play well with the hitbox choices
IceBlock_CheckForGround:
{
LDA.w SprY,X : CLC : ADC.b #$08 : STA.b $00
LDA.w SprYH,X : ADC.b #$00 : STA.b $01
LDA.w SprX,X : STA.b $02
LDA.w SprXH,X : ADC.b #$00 : STA.b $03
LDA.w $0F20,X
LDA.w SprY, X : CLC : ADC.b #$08 : STA.b $00
LDA.w SprYH, X : ADC.b #$00 : STA.b $01
LDA.w SprX, X : STA.b $02
LDA.w SprXH, X : ADC.b #$00 : STA.b $03
LDA.w SprFloor, X
PHY
JSL $06E87B ; GetTileType_long
JSL Sprite_GetTileAttr
PLY
LDA.w $0FA5
CMP.b #$0E : BNE .stop
SEC
RTS
.stop
STZ.w SprXSpeed,X
STZ.w SprYSpeed,X
LDA.w $0FA5 : CMP.b #$0E : BNE .stop
SEC
RTS
.stop
STZ.w SprXSpeed, X
STZ.w SprYSpeed, X
CLC
RTS
}
@@ -185,14 +180,14 @@ Sprite_IceBlock_CheckForSwitch:
LDY.b #$03
.next_tile
LDA.w SprY,X : CLC : ADC.w .offset_y,Y : STA.b $00
LDA.w SprYH,X : ADC.b #$00 : STA.b $01
LDA.w SprX,X : CLC : ADC.w .offset_x,Y : STA.b $02
LDA.w SprXH,X : ADC.b #$00 : STA.b $03
LDA.w $0F20,X
LDA.w SprY, X : CLC : ADC.w .offset_y, Y : STA.b $00
LDA.w SprYH, X : ADC.b #$00 : STA.b $01
LDA.w SprX, X : CLC : ADC.w .offset_x, Y : STA.b $02
LDA.w SprXH, X : ADC.b #$00 : STA.b $03
LDA.w SprFloor, X
PHY
JSL $06E87B ; GetTileType_long
JSL Sprite_GetTileAttr
PLY
LDA.w $0FA5
@@ -227,71 +222,38 @@ Statue_BlockSprites:
LDY.b #$0F
.next
LDA.w $0E20,Y
CMP.b #$1C ; SPRITE 1C
BEQ .skip
; SPRITE 1C
LDA.w SprType, Y : CMP.b #$1C : BEQ .skip
CPY.w SprSlot : BEQ .skip
TYA : EOR.b $1A : AND.b #$01 : BNE .skip
LDA.w SprState, Y : CMP.b #$09 : BCC .skip
CPY.w $0FA0
BEQ .skip
TYA
EOR.b $1A
AND.b #$01
BNE .skip
LDA.w SprState,Y
CMP.b #$09
BCC .skip
LDA.w SprX,Y
STA.b $04
LDA.w SprXH,Y
STA.b $05
LDA.w SprY,Y
STA.b $06
LDA.w SprYH,Y
STA.b $07
LDA.w SprX, Y : STA.b $04
LDA.w SprXH, Y : STA.b $05
LDA.w SprY, Y : STA.b $06
LDA.w SprYH, Y : STA.b $07
REP #$20
LDA.w SprCachedX
SEC
SBC.b $04
CLC
ADC.w #$000C
LDA.w SprCachedX
SEC : SBC.b $04
CLC : ADC.w #$000C : CMP.w #$0018 : BCS .skip
CMP.w #$0018
BCS .skip
LDA.w SprCachedY
SEC
SBC.b $06
CLC
ADC.w #$000C
CMP.w #$0024
BCS .skip
LDA.w SprCachedY
SEC : SBC.b $06
CLC : ADC.w #$000C : CMP.w #$0024 : BCS .skip
SEP #$20
LDA.b #$04
STA.w $0EA0,Y
LDA.b #$04 : STA.w $0EA0, Y
PHY
LDA.b #$20
JSL Sprite_CheckSlopedTileCollision ; JSR Sprite_ProjectSpeedTowardsLocation
PLY
LDA.b $00
STA.w SprYRecoil,Y
LDA.b $01
STA.w SprXRecoil,Y
LDA.b $00 : STA.w SprYRecoil, Y
LDA.b $01 : STA.w SprXRecoil, Y
.skip
SEP #$20

View File

@@ -0,0 +1,53 @@
; Magic Pedestal Sprite
;
; Zora Temple (Map 1E)
; Goron Desert (Map 36)
; Fortress Secrets (Map 5E)
pushpc
org $1EE05F
JSL CheckForBook
pullpc
CheckForBook:
{
LDA.b $2F : BNE .exit
JSL Sprite_CheckDamageToPlayer : BCC .exit
LDA.w $0202 : CMP.b #$0F : BNE .not_holding_book
LDY.b #$01 : BIT.b $F4 : BVS .not_pressing_y
.not_holding_book
LDY.b #$00
.not_pressing_y
CPY.b #$01 : BNE .no_book_pose
STZ.w $0300
LDA.b #$20
STA.w $037A
STZ.w $012E
.no_book_pose
JSR PedestalPlaque
.exit
LDA.b AreaIndex : CMP.b #$30
RTL
}
PedestalPlaque:
{
LDA.b AreaIndex : CMP.b #$1E : BEQ .zora_temple
CMP.b #$36 : BEQ .goron_desert
CMP.b #$5E : BEQ .fortress_secrets
JMP .return
.zora_temple
LDA.l $7EF29E : AND.b #$20 : BNE .return
LDA.b SongFlag : CMP.b #$03 : BNE .return
LDA.b #$01 : STA $04C6
STZ.b SongFlag
JMP .return
.goron_desert
.fortress_secrets
.return
RTS
}

View File

@@ -73,7 +73,7 @@ BlueSpriteIndex = $7E0632
Sprite_Portal_Main:
{
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
JSL JumpTableLocal
dw StateHandler
dw BluePortal
@@ -104,7 +104,6 @@ Sprite_Portal_Main:
LDA.w SprY, X : STA.w BluePortal_X
LDA.w SprX, X : STA.w BluePortal_Y
LDA.b #$02 : STA.w SprSubtype, X
%GotoAction(1)
RTS
}
@@ -124,9 +123,7 @@ Sprite_Portal_Main:
JSL $0683EA ; Sprite_SetupHitbox_long
JSL CheckIfHitBoxesOverlap : BCC .NoOverlap
CLC
LDA $1B : BEQ .outdoors
%GotoAction(3) ; BluePortal_WarpDungeon
.NoOverlap
RTS
@@ -171,10 +168,6 @@ Sprite_Portal_Main:
LDA $7EC18A : STA $0604
LDA $7EC18C : STA $0608
LDA $7EC18E : STA $060C
; LDA $7EC190 : STA $0610
; LDA $7EC192 : STA $0612
; LDA $7EC194 : STA $0614
; LDA $7EC196 : STA $0616
PHX
LDA.w OrangeSpriteIndex : TAX
@@ -200,10 +193,6 @@ Sprite_Portal_Main:
LDA $7EC18A : STA $0604 ; Small Room South
LDA $7EC18C : STA $0608 ; Small Room West
LDA $7EC18E : STA $060C ; Small Room South
; LDA $7EC190 : STA $0610
; LDA $7EC192 : STA $0612
; LDA $7EC194 : STA $0614
; LDA $7EC196 : STA $0616
PHX
LDA.w BlueSpriteIndex : TAX

View File

@@ -82,6 +82,9 @@ print "End of bottle_vendor.asm ", pc
incsrc "Sprites/Enemies/leever.asm"
print "End of leever.asm ", pc
incsrc "Sprites/Objects/pedestal.asm"
print "End of pedestal.asm ", pc
DontTeleportWithoutFlippers:
{
LDA.l $7EF356 : BNE +
@@ -432,3 +435,6 @@ SpriteDraw_RunningBoy:
#_05EA3D: dw 0, -7 : db $2E, $40, $00, $02
#_05EA45: dw 0, 1 : db $CE, $4E, $00, $02
; Sword Barrier Sprite Prep
; Skip overworld flag check, sprite is indoors now
org $06891B : NOP #12

View File

@@ -2,7 +2,7 @@
SummonGuards:
{
LDA.l SWORD : CMP.b #$02 : BNE +
LDA.l Sword : CMP.b #$02 : BNE +
JSR Overlord_SpawnSoldierPath
+
RTL

View File

@@ -8,55 +8,10 @@
; -wiiqwertyuiop for his Zelda Disassembly
;===========================================================
lorom
!Bow = $7EF340
!Boomerang = $7EF341
!Hookshot = $7EF342
!Bombs = $7EF343
!MagicPowder = $7EF344
!FireRod = $7EF345
!IceRod = $7EF346
!BunnyMask = $7EF348
!DekuMask = $7EF349
!ZoraMask = $7EF347
!Lamp = $7EF34A
!MagicHammer = $7EF34B
!Flute = $7EF34C
!JumpFeather = $7EF34D
!BookOfMudora = $7EF34E
!Bottles = $7EF34F
!CaneOfSomaria = $7EF350
!CaneOfByrna = $7EF351
!MagicCape = $7EF352
!Mirror = $7EF353
!TitansMitt = $7EF354
!PegasusBoots = $7EF355
!Flippers = $7EF356
!MoonPearl = $7EF357
!WolfMask = $7EF358
!Sword = $7EF359
!Shield = $7EF35A
!Mail = $7EF35B
!Bottle1 = $7EF35C
!Bottle2 = $7EF35D
!Bottle3 = $7EF35E
!Bottle4 = $7EF35F
!Rupees = $7EF360
!RupeesGoal = $7EF361
!HealthCapacity = $7EF36C
!MagicPower = $7EF36E
!Hearts = $7EF372
!Pendants = $7EF374
!Arrows = $7EF377
!AbilityFlags = $7EF379
!Crystals = $7EF37A
!MagicUsage = $7EF37B
!BetaRelease = $00
org $068365
JSL $3CA62A ; Overwrite JSL executed every frame
; Overwrite JSL executed every frame
org $068365 : JSL $3CA62A
Follower_Main = $099F91
@@ -70,107 +25,67 @@ org $3CA62A ; Expanded space for our routine
if !BetaRelease == 0
; How many bombs you have. Can exceed 0x50, up to 0xff.
LDA #$50 : STA !Bombs
LDA #$50 : STA Bombs
; 0 - nothing. 1 - Mushroom. 2 - Magic Powder
LDA #$02 : STA !MagicPowder
STA !TitansMitt
LDA #$02 : STA MagicPowder
STA Gloves
; 0 - nothing. 1 - Fire Rod
LDA #$01 : STA !FireRod
STA !IceRod
LDA #$01 : STA FireRod
STA IceRod
LDA #$01 : STA !BunnyMask
LDA #$01 : STA BunnyHood
LDA #$01 : STA !DekuMask
LDA #$01 : STA !ZoraMask
LDA #$01 : STA !WolfMask
LDA #$01 : STA !MagicCape
LDA #$01 : STA DekuMask
LDA #$01 : STA ZoraMask
LDA #$01 : STA WolfMask
LDA #$01 : STA StoneMask
; 0 - nothing. 1 - shovel. 2 - flute, no bird. 3 - flue, bird activated
LDA #$01 : STA !BookOfMudora
LDA #$01 : STA !CaneOfSomaria
LDA #$01 : STA !PegasusBoots
STA !Flippers
STA !WolfMask
LDA #$01 : STA Book
LDA #$01 : STA Somaria
LDA #$01 : STA Boots
STA Flippers
STA WolfMask
; 0 - nothing. 1 - Fighter Sword. 2 - Master Sword. 3 - Tempered Sword. 4 - Golden Sword
LDA #$04 : STA !Sword
LDA #$04 : STA Sword
; 0 - nothing. 1 - Fighter Shield. 2 - Fire Shield. 3 - Mirror Shield
LDA #$03 : STA !Shield
LDA #$03 : STA Shield
; 0 - nothing. 1 - Green Mail. 2 - Blue Mail. 3 - Red Mail
LDA #$02 : STA !Mail
LDA #$02 : STA Armor
; 0-No bottle.
; 1-Mushroom (no use). 2-Empty bottle.
; 3-Red Potion. 4-Green Potion.
; 5-Blue Potion. 6-Fairy.
; 7-Bee. 8-Good Bee
LDA #$01 : STA !Bottles ; has bottles
LDA #$03 : STA !Bottle1
LDA #$05 : STA !Bottle2
LDA #$04 : STA !Bottle3
LDA #$06 : STA !Bottle4
LDA #$01 : STA BottleIndex ; has bottles
LDA #$03 : STA Bottle1
LDA #$05 : STA Bottle2
LDA #$04 : STA Bottle3
LDA #$06 : STA Bottle4
; How many arrows you have. Can exceed 0x70.
LDA #$32 : STA !Arrows
LDA #$32 : STA Arrows
; 2 bytes for rupees (goal, for counting up)
LDA #$E7 : STA !Rupees
LDA #$03 : STA !RupeesGoal
LDA #$E7 : STA Rupees
LDA #$03 : STA RupeesGoal
LDA #$07 : STA Pendants
LDA #$6E : STA Ability
LDA #$00 : STA Crystals
LDA #$01 : STA Hookshot
LDA #$02 : STA MagicUsage
; Pendants: Bit 0 = Courage, Bit 1 = Wisdom, Bit 2 = Power
LDA #$07 : STA !Pendants
; Ability Flags: Bit 0: ----.
; Bit 1: Swim.
; Bit 2: Run / Dash.
; Bit 3: Pull. Bit 4: ----.
; Bit 5: Talk.
; Bit 6: Read. Bit 7: ----
LDA #$6E : STA !AbilityFlags
; Crystals:
; Bit 0 = Misery Mire
; Bit 1 = Dark Palace
; Bit 2 = Ice Palace
; Bit 3 = Turtle Rock
; Bit 4 = Swamp Palace
; Bit 5 = Gargoyle's Domain
; Bit 6 = Skull Woods
LDA #$00 : STA !Crystals
; 0 - nothing. 1 - hookshot
LDA #$01 : STA !Hookshot
; Magic usage: 0: normal consumption. 1: 1/2 consumption. 2: 1/4 consumption
LDA #$02 : STA !MagicUsage
; health capacity (maximum number of hearts)
LDA #$A0 : STA !HealthCapacity
LDA #$A0 : STA MAXHP
endif
LDA #$04 : STA !Flute
LDA #$01 : STA !JumpFeather
; 0 - nothing. 1 - bow w/ no arrows. 2 - bow w/ arrows. 3 - silver arrows
LDA #$03 : STA !Bow
LDA #$04 : STA Flute
LDA #$01 : STA RocsFeather
LDA #$03 : STA Bow
LDA #$02 : STA Boomerang
STA Mirror
STA Byrna
; 0 - nothing. 1 - blue boomerang. 2 - red boomerang
LDA #$02 : STA !Boomerang
STA !Mirror
STA !CaneOfByrna
LDA #$01 : STA Lamp
; STA MagicHammer
STA Pearl
; 0 - nothing. 1 - Lamp
LDA #$01 : STA !Lamp
; STA !MagicHammer
STA !MoonPearl
; fill all hearts
LDA #$A0 : STA !Hearts
; magic power, maximum is 0x80
LDA #$80 : STA !MagicPower
LDA #$A0 : STA HeartRefill
LDA #$80 : STA MagicPower
; Skip story events, test goron mines
LDX.b #$36