ram.asm initial commit. Replaced all address defines with labels
Value defines styled without quotes, # moved to load/store/cmp site Added registers.asm (copied from spannerisms JP disassembly) Added a bunch of length annotations Deleted old or trivial commented out code Deleted: ganonfixes.asm, map.asm, seedtag.asm Replaced obsolete credits.asm with creditsnew.asm Moved scratch space at $7F5020-3F to mirrored WRAM (7E1E70-8F) Moved clock RAM to mirrored WRAM (7E1E90-9F) dialog.asm: FreeDungeonItemNotice preserves callee-preserved scratch RAM Toast buffer moved to mirrored WRAM (7E1E0E-0F) servicerequest.asm: long store to $012E converted to word length store
This commit is contained in:
@@ -36,41 +36,11 @@ dw !ROM_VERSION_LOW
|
|||||||
dw !ROM_VERSION_HIGH
|
dw !ROM_VERSION_HIGH
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
!ADD = "CLC : ADC"
|
!ADD = "CLC : ADC"
|
||||||
!SUB = "SEC : SBC"
|
!SUB = "SEC : SBC"
|
||||||
!BLT = "BCC"
|
!BLT = "BCC"
|
||||||
!BGE = "BCS"
|
!BGE = "BCS"
|
||||||
|
|
||||||
!MS_GOT = "$7F5031"
|
|
||||||
|
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
!GANON_WARP_CHAIN = "$7F5032";
|
|
||||||
|
|
||||||
!TILE_UPLOAD_BUFFER = "$7EA180";
|
|
||||||
|
|
||||||
!FORCE_HEART_SPAWN = "$7F5033";
|
|
||||||
!SKIP_HEART_SAVE = "$7F5034";
|
|
||||||
|
|
||||||
; MSU-1
|
|
||||||
!REG_MSU_FALLBACK_TABLE = $7F50A0 ; 8 bytes
|
|
||||||
!REG_MSU_DELAYED_COMMAND = $7F50A9
|
|
||||||
!REG_MSU_PACK_COUNT = $7F50AA
|
|
||||||
!REG_MSU_PACK_CURRENT = $7F50AB
|
|
||||||
!REG_MSU_PACK_REQUEST = $7F50AC
|
|
||||||
!REG_MSU_LOADED_TRACK = $7F50AD ; 2 bytes
|
|
||||||
!REG_SPC_LOADING = $7F50AF
|
|
||||||
!MSU_LOADED_TRACK = $7F5400
|
|
||||||
!MSU_RESUME_TRACK = $7F5401
|
|
||||||
!MSU_RESUME_TIME = $7F5402 ; 4 bytes
|
|
||||||
!MSU_RESUME_CONTROL = $7F5406
|
|
||||||
!REG_MUSIC_CONTROL = $012B
|
|
||||||
;!REG_MUSIC_CONTROL = $012C
|
|
||||||
!REG_MUSIC_CONTROL_REQUEST = $012C
|
|
||||||
|
|
||||||
!ONEMIND_ID = $7F5072
|
|
||||||
!ONEMIND_TIMER = $7F5073
|
|
||||||
|
|
||||||
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
||||||
|
|
||||||
; Feature flags, run asar with -DFEATURE_X=1 to enable
|
; Feature flags, run asar with -DFEATURE_X=1 to enable
|
||||||
@@ -85,6 +55,8 @@ incsrc hashalphabethooks.asm
|
|||||||
incsrc sharedplayerpalettefix.asm
|
incsrc sharedplayerpalettefix.asm
|
||||||
incsrc ram.asm
|
incsrc ram.asm
|
||||||
incsrc sram.asm
|
incsrc sram.asm
|
||||||
|
incsrc registers.asm
|
||||||
|
incsrc vanillalabels.asm
|
||||||
|
|
||||||
;org $208000 ; bank #$20
|
;org $208000 ; bank #$20
|
||||||
org $A08000 ; bank #$A0
|
org $A08000 ; bank #$A0
|
||||||
@@ -108,7 +80,6 @@ incsrc fairyfixes.asm
|
|||||||
incsrc rngfixes.asm
|
incsrc rngfixes.asm
|
||||||
incsrc medallions.asm
|
incsrc medallions.asm
|
||||||
incsrc inventory.asm
|
incsrc inventory.asm
|
||||||
incsrc ganonfixes.asm
|
|
||||||
incsrc zelda.asm
|
incsrc zelda.asm
|
||||||
incsrc maidencrystals.asm
|
incsrc maidencrystals.asm
|
||||||
incsrc zoraking.asm
|
incsrc zoraking.asm
|
||||||
@@ -120,7 +91,6 @@ incsrc mantle.asm
|
|||||||
incsrc swordswap.asm
|
incsrc swordswap.asm
|
||||||
incsrc stats.asm
|
incsrc stats.asm
|
||||||
incsrc scratchpad.asm
|
incsrc scratchpad.asm
|
||||||
incsrc map.asm
|
|
||||||
incsrc dialog.asm
|
incsrc dialog.asm
|
||||||
incsrc entrances.asm
|
incsrc entrances.asm
|
||||||
incsrc clock.asm
|
incsrc clock.asm
|
||||||
@@ -212,9 +182,6 @@ incsrc tables.asm
|
|||||||
org $348000
|
org $348000
|
||||||
incsrc spc.asm
|
incsrc spc.asm
|
||||||
|
|
||||||
; uncomment for inverted adjustments
|
|
||||||
;incsrc sandbox.asm
|
|
||||||
|
|
||||||
org $318000 ; bank #$31
|
org $318000 ; bank #$31
|
||||||
GFX_Mire_Bombos:
|
GFX_Mire_Bombos:
|
||||||
incbin 99ff1_bombos.gfx
|
incbin 99ff1_bombos.gfx
|
||||||
@@ -336,8 +303,9 @@ warnpc $B08000
|
|||||||
;$3F reserved for internal debugging
|
;$3F reserved for internal debugging
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;RAM
|
;RAM
|
||||||
|
;See ram.asm for label assignments
|
||||||
;$7E021B[0x1]: Used by race game instead of $0ABF to avoid witch item conflict
|
;$7E021B[0x1]: Used by race game instead of $0ABF to avoid witch item conflict
|
||||||
;$7EC900[0x1F00]: BIGRAM buffer
|
;$7EC900[0x1F00]: BigRAM buffer
|
||||||
;$7EF000[0x500]: SRAM mirror First 0x500 bytes of SRAM
|
;$7EF000[0x500]: SRAM mirror First 0x500 bytes of SRAM
|
||||||
; See sram.asm for labels and assignments
|
; See sram.asm for labels and assignments
|
||||||
;$7F5000[0x800]: Rando's main free ram region
|
;$7F5000[0x800]: Rando's main free ram region
|
||||||
@@ -347,7 +315,7 @@ warnpc $B08000
|
|||||||
;$7F7667[0x6719] - free ram
|
;$7F7667[0x6719] - free ram
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;SRAM Map
|
;SRAM Map
|
||||||
;See sram.asm for rando-specific assignments
|
;See sram.asm for label assignments and documentation
|
||||||
;$70:0000 (5K) Game state
|
;$70:0000 (5K) Game state
|
||||||
; 0000-04FF Vanilla Slot 1 (mirrored at $7EF000)
|
; 0000-04FF Vanilla Slot 1 (mirrored at $7EF000)
|
||||||
; 0500-14FF Ext Slot 1 (mirrored at $7F6000)
|
; 0500-14FF Ext Slot 1 (mirrored at $7F6000)
|
||||||
@@ -355,44 +323,6 @@ warnpc $B08000
|
|||||||
;$70:3000 (0x16) Password
|
;$70:3000 (0x16) Password
|
||||||
;$70:6000 (8K) Scratch buffers
|
;$70:6000 (8K) Scratch buffers
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;org $0080DC ; <- 0xDC - Bank00.asm:179 - Kill Music
|
|
||||||
;db #$A9, #$00, #$EA
|
|
||||||
;LDA.b #$00 : NOP
|
|
||||||
;================================================================================
|
|
||||||
;org $0AC53E ; <- 5453E - Bank0A.asm:1103 - (LDA $0AC51F, X) - i have no idea what this is for anymore
|
|
||||||
;LDA.b #$7F
|
|
||||||
;NOP #2
|
|
||||||
;================================================================================
|
|
||||||
;org $05DF8B ; <- 2DF8B - Bank05.asm : 2483
|
|
||||||
;AND.w #$0100 ; allow Sprite_DrawMultiple to access lower half of sprite tiles
|
|
||||||
;================================================================================
|
|
||||||
;org $0DF8F1 ; this is required for the X-indicator in the HUD except not anymore obviously
|
|
||||||
;
|
|
||||||
;;red pendant
|
|
||||||
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
|
|
||||||
;db $2B, $25, $2C, $25, $2D, $25, $2E, $25
|
|
||||||
;
|
|
||||||
;;blue pendant
|
|
||||||
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
|
|
||||||
;db $2B, $2D, $2C, $2D, $2D, $2D, $2E, $2D
|
|
||||||
;
|
|
||||||
;;green pendant
|
|
||||||
;db $2B, $31, $2C, $31, $3D, $31, $2E, $31
|
|
||||||
;db $2B, $3D, $2C, $3D, $2D, $3D, $2E, $3D
|
|
||||||
;================================================================================
|
|
||||||
;org $00CFF2 ; 0x4FF2 - Mire H
|
|
||||||
;db GFX_Mire_Bombos>>16
|
|
||||||
;org $00D0D1 ; 0x50D1 - Mire M
|
|
||||||
;db GFX_Mire_Bombos>>8
|
|
||||||
;org $00D1B0 ; 0x51B0 - Mire L
|
|
||||||
;db GFX_Mire_Bombos
|
|
||||||
|
|
||||||
;org $00D020 ; 0x5020 - Trock H
|
|
||||||
;db GFX_TRock_Bombos>>16
|
|
||||||
;org $00D0FF ; 0x50FF - Trock M
|
|
||||||
;db GFX_TRock_Bombos>>8
|
|
||||||
;org $00D1DE ; 0x51DE - Trock L
|
|
||||||
;db GFX_TRock_Bombos
|
|
||||||
|
|
||||||
org $00D09C ; 0x509C - HUD Items H
|
org $00D09C ; 0x509C - HUD Items H
|
||||||
db GFX_HUD_Items>>16
|
db GFX_HUD_Items>>16
|
||||||
@@ -416,308 +346,3 @@ db GFX_HUD_Main>>8
|
|||||||
org $00D25B ; 0x525B - HUD Main L
|
org $00D25B ; 0x525B - HUD Main L
|
||||||
db GFX_HUD_Main
|
db GFX_HUD_Main
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $008781
|
|
||||||
UseImplicitRegIndexedLocalJumpTable:
|
|
||||||
|
|
||||||
org $00879c
|
|
||||||
UseImplicitRegIndexedLongJumpTable:
|
|
||||||
|
|
||||||
org $008333
|
|
||||||
Vram_EraseTilemaps_triforce:
|
|
||||||
|
|
||||||
org $008913
|
|
||||||
Sound_LoadLightWorldSongBank:
|
|
||||||
org $00891D
|
|
||||||
.do_load
|
|
||||||
|
|
||||||
org $00893D
|
|
||||||
EnableForceBlank:
|
|
||||||
|
|
||||||
DungeonMask = $0098C0
|
|
||||||
|
|
||||||
org $00D308
|
|
||||||
DecompSwordGfx:
|
|
||||||
|
|
||||||
org $00D348
|
|
||||||
DecompShieldGfx:
|
|
||||||
|
|
||||||
org $00D463
|
|
||||||
Tagalong_LoadGfx:
|
|
||||||
|
|
||||||
org $00D51B
|
|
||||||
GetAnimatedSpriteTile:
|
|
||||||
|
|
||||||
org $00D52D
|
|
||||||
GetAnimatedSpriteTile_variable:
|
|
||||||
|
|
||||||
org $00D84E
|
|
||||||
Attract_DecompressStoryGfx:
|
|
||||||
|
|
||||||
org $00E529
|
|
||||||
LoadSelectScreenGfx:
|
|
||||||
|
|
||||||
org $00F945
|
|
||||||
PrepDungeonExit:
|
|
||||||
|
|
||||||
org $00FDEE
|
|
||||||
Mirror_InitHdmaSettings:
|
|
||||||
|
|
||||||
org $01873A
|
|
||||||
Dungeon_LoadRoom:
|
|
||||||
|
|
||||||
org $02821E
|
|
||||||
Module_PreDungeon:
|
|
||||||
org $028296
|
|
||||||
.setAmbientSfx
|
|
||||||
|
|
||||||
org $02A0A8
|
|
||||||
Dungeon_SaveRoomData:
|
|
||||||
|
|
||||||
org $02A0BE
|
|
||||||
Dungeon_SaveRoomData_justKeys:
|
|
||||||
|
|
||||||
org $02B861
|
|
||||||
Dungeon_SaveRoomQuadrantData:
|
|
||||||
|
|
||||||
org $02FD8A ; 17D8A - Bank0E.asm: 3732 Note: Different bank
|
|
||||||
LoadGearPalettes_bunny:
|
|
||||||
|
|
||||||
org $02FD95 ; 17D95 - Bank0E.asm: 3742 Note: Different bank
|
|
||||||
LoadGearPalettes_variable:
|
|
||||||
|
|
||||||
org $02FEAB
|
|
||||||
Filter_Majorly_Whiten_Color:
|
|
||||||
|
|
||||||
org $05A51D
|
|
||||||
Sprite_SpawnFallingItem:
|
|
||||||
|
|
||||||
org $05DF6C ; 02DF6C - Bank05.asm : 2445
|
|
||||||
Sprite_DrawMultiple:
|
|
||||||
|
|
||||||
org $05DF70 ; 02DF70 - Bank05.asm : 2454
|
|
||||||
Sprite_DrawMultiple_quantity_preset:
|
|
||||||
|
|
||||||
org $05DF75 ; 02DF75 - Bank05.asm : 2461
|
|
||||||
Sprite_DrawMultiple_player_deferred:
|
|
||||||
|
|
||||||
org $05E1A7 ; 02E1A7 - Bank05.asm : 2592
|
|
||||||
Sprite_ShowSolicitedMessageIfPlayerFacing:
|
|
||||||
|
|
||||||
org $05E1F0
|
|
||||||
Sprite_ShowMessageFromPlayerContact:
|
|
||||||
|
|
||||||
org $05E219
|
|
||||||
Sprite_ShowMessageUnconditional:
|
|
||||||
|
|
||||||
org $05EC96
|
|
||||||
Sprite_ZeldaLong:
|
|
||||||
|
|
||||||
org $0680FA
|
|
||||||
Player_ApplyRumbleToSprites:
|
|
||||||
|
|
||||||
org $0683E6
|
|
||||||
Utility_CheckIfHitBoxesOverlapLong:
|
|
||||||
|
|
||||||
org $06A7DB
|
|
||||||
Chicken_SpawnAvengerChicken: ; returns short
|
|
||||||
|
|
||||||
org $06DC5C
|
|
||||||
Sprite_DrawShadowLong:
|
|
||||||
|
|
||||||
org $06DD40
|
|
||||||
DashKey_Draw:
|
|
||||||
|
|
||||||
org $06DBF8
|
|
||||||
Sprite_PrepAndDrawSingleLargeLong:
|
|
||||||
|
|
||||||
org $06DC00
|
|
||||||
Sprite_PrepAndDrawSingleSmallLong:
|
|
||||||
|
|
||||||
org $06EA18
|
|
||||||
Sprite_ApplySpeedTowardsPlayerLong:
|
|
||||||
|
|
||||||
org $06EAA6
|
|
||||||
Sprite_DirectionToFacePlayerLong:
|
|
||||||
|
|
||||||
org $06F12F
|
|
||||||
Sprite_CheckDamageToPlayerSameLayerLong:
|
|
||||||
|
|
||||||
org $06F86A
|
|
||||||
OAM_AllocateDeferToPlayerLong:
|
|
||||||
|
|
||||||
org $0791B3
|
|
||||||
Player_HaltDashAttackLong:
|
|
||||||
|
|
||||||
org $07999D
|
|
||||||
Link_ReceiveItem:
|
|
||||||
|
|
||||||
org $07E68F
|
|
||||||
Unknown_Method_0: ; In US version disassembly simply called "$3E6A6 IN ROM"
|
|
||||||
|
|
||||||
org $07F4AA
|
|
||||||
Sprite_CheckIfPlayerPreoccupied:
|
|
||||||
|
|
||||||
org $08C3AE
|
|
||||||
Ancilla_ReceiveItem:
|
|
||||||
|
|
||||||
org $08CE93
|
|
||||||
Ancilla_BreakTowerSeal_draw_single_crystal:
|
|
||||||
|
|
||||||
org $08CEC3
|
|
||||||
Ancilla_BreakTowerSeal_stop_spawning_sparkles:
|
|
||||||
|
|
||||||
org $08CF59
|
|
||||||
BreakTowerSeal_ExecuteSparkles:
|
|
||||||
|
|
||||||
org $08F710
|
|
||||||
Ancilla_SetOam_XY_Long:
|
|
||||||
|
|
||||||
org $0985E2 ; (break on $0985E4)
|
|
||||||
AddReceivedItem:
|
|
||||||
|
|
||||||
org $098BAD
|
|
||||||
AddPendantOrCrystal:
|
|
||||||
|
|
||||||
org $098CFD
|
|
||||||
AddWeathervaneExplosion:
|
|
||||||
|
|
||||||
org $0993DF
|
|
||||||
AddDashTremor:
|
|
||||||
|
|
||||||
org $099D04
|
|
||||||
AddAncillaLong:
|
|
||||||
|
|
||||||
org $099D1A
|
|
||||||
Ancilla_CheckIfAlreadyExistsLong:
|
|
||||||
|
|
||||||
org $09AE64
|
|
||||||
Sprite_SetSpawnedCoords:
|
|
||||||
|
|
||||||
org $09AD58
|
|
||||||
GiveRupeeGift:
|
|
||||||
|
|
||||||
org $0ABA4F
|
|
||||||
OverworldMap_InitGfx:
|
|
||||||
|
|
||||||
org $0ABA99
|
|
||||||
OverworldMap_DarkWorldTilemap:
|
|
||||||
|
|
||||||
org $0ABAB9
|
|
||||||
OverworldMap_LoadSprGfx:
|
|
||||||
|
|
||||||
org $0CD7D1
|
|
||||||
NameFile_MakeScreenVisible:
|
|
||||||
org $0CDB3E
|
|
||||||
InitializeSaveFile:
|
|
||||||
org $0CDBC0
|
|
||||||
InitializeSaveFile_build_checksum:
|
|
||||||
|
|
||||||
org $0DBA71
|
|
||||||
GetRandomInt:
|
|
||||||
|
|
||||||
org $0DBA80
|
|
||||||
OAM_AllocateFromRegionA:
|
|
||||||
org $0DBA84
|
|
||||||
OAM_AllocateFromRegionB:
|
|
||||||
org $0DBA88
|
|
||||||
OAM_AllocateFromRegionC:
|
|
||||||
org $0DBA8C
|
|
||||||
OAM_AllocateFromRegionD:
|
|
||||||
org $0DBA90
|
|
||||||
OAM_AllocateFromRegionE:
|
|
||||||
org $0DBA94
|
|
||||||
OAM_AllocateFromRegionF:
|
|
||||||
|
|
||||||
org $0DBB67
|
|
||||||
Sound_SetSfxPanWithPlayerCoords:
|
|
||||||
|
|
||||||
org $0DBB6E
|
|
||||||
Sound_SetSfx1PanLong:
|
|
||||||
|
|
||||||
org $0DBB7C
|
|
||||||
Sound_SetSfx2PanLong:
|
|
||||||
|
|
||||||
org $0DBB8A
|
|
||||||
Sound_SetSfx3PanLong:
|
|
||||||
|
|
||||||
org $0DDB7F
|
|
||||||
HUD_RefreshIconLong:
|
|
||||||
|
|
||||||
org $0DDD32
|
|
||||||
Equipment_UpdateEquippedItemLong:
|
|
||||||
|
|
||||||
org $0DE01E ; 6E10E - equipment.asm : 787
|
|
||||||
BottleMenu_movingOn:
|
|
||||||
|
|
||||||
org $0DE346
|
|
||||||
RestoreNormalMenu:
|
|
||||||
|
|
||||||
org $0DE395
|
|
||||||
Equipment_SearchForEquippedItemLong:
|
|
||||||
|
|
||||||
org $0DE9C8
|
|
||||||
DrawProgressIcons: ; this returns short
|
|
||||||
|
|
||||||
org $0DED29
|
|
||||||
DrawEquipment: ; this returns short
|
|
||||||
|
|
||||||
org $0DFA78
|
|
||||||
HUD_RebuildLong:
|
|
||||||
|
|
||||||
org $0DFA88
|
|
||||||
HUD_RebuildIndoor_Palace:
|
|
||||||
|
|
||||||
org $0DFA88
|
|
||||||
HUD_RebuildLong2:
|
|
||||||
|
|
||||||
org $0EEE10
|
|
||||||
Messaging_Text:
|
|
||||||
|
|
||||||
org $0FFD94
|
|
||||||
Overworld_TileAttr:
|
|
||||||
|
|
||||||
org $1BC97C
|
|
||||||
Overworld_DrawPersistentMap16:
|
|
||||||
|
|
||||||
org $1BED03
|
|
||||||
Palette_Sword:
|
|
||||||
|
|
||||||
org $1BED29
|
|
||||||
Palette_Shield:
|
|
||||||
|
|
||||||
org $1BEDF9
|
|
||||||
Palette_ArmorAndGloves:
|
|
||||||
|
|
||||||
org $1BEE52
|
|
||||||
Palette_Hud:
|
|
||||||
|
|
||||||
org $1BEF96
|
|
||||||
Palette_SelectScreen:
|
|
||||||
|
|
||||||
org $1CFAAA
|
|
||||||
ShopKeeper_RapidTerminateReceiveItem:
|
|
||||||
|
|
||||||
org $1CF500
|
|
||||||
Sprite_NullifyHookshotDrag:
|
|
||||||
|
|
||||||
org $1CF537
|
|
||||||
Ancilla_CheckForAvailableSlot:
|
|
||||||
|
|
||||||
org $1DE9B6
|
|
||||||
Filter_MajorWhitenMain:
|
|
||||||
|
|
||||||
org $1DF65D
|
|
||||||
Sprite_SpawnDynamically:
|
|
||||||
|
|
||||||
org $1DF65F
|
|
||||||
Sprite_SpawnDynamically_arbitrary:
|
|
||||||
|
|
||||||
org $1DFD4B
|
|
||||||
DiggingGameGuy_AttemptPrizeSpawn:
|
|
||||||
|
|
||||||
org $1EDE28
|
|
||||||
Sprite_GetEmptyBottleIndex: ; this is totally in sprite_bees.asm
|
|
||||||
|
|
||||||
org $1EF4E7
|
|
||||||
Sprite_PlayerCantPassThrough:
|
|
||||||
;================================================================================
|
|
||||||
|
|||||||
@@ -1,15 +1,6 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Accessibility Fixes
|
; Accessibility Fixes
|
||||||
;================================================================================
|
;================================================================================
|
||||||
FlipGreenPendant:
|
|
||||||
LDA $0C : CMP #$38 : BNE + ; check if we have green pendant
|
|
||||||
ORA #$40 : STA $0C ; flip it
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA $0D : STA $0802, X ; stuff we wrote over "Set CHR, palette, and priority of the sprite"
|
|
||||||
LDA $0C : STA $0803, X
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
|
||||||
ConditionalLightning:
|
ConditionalLightning:
|
||||||
CMP.b #$05 : BEQ ++
|
CMP.b #$05 : BEQ ++
|
||||||
CMP.b #$2C : BEQ ++
|
CMP.b #$2C : BEQ ++
|
||||||
@@ -19,109 +10,109 @@ ConditionalLightning:
|
|||||||
RTL
|
RTL
|
||||||
++
|
++
|
||||||
LDA.b #$72
|
LDA.b #$72
|
||||||
STA $9A
|
STA.b $9A
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
ConditionalWhitenBg:
|
ConditionalWhitenBg:
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
LDA $00,X
|
LDA.b $00,X
|
||||||
JSR WhitenLoopReal
|
JSR WhitenLoopReal
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA $00
|
LDA.b Scrap00
|
||||||
JSR WhitenLoopDummy
|
JSR WhitenLoopDummy
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
WhitenLoopReal:
|
WhitenLoopReal:
|
||||||
-
|
-
|
||||||
LDA $7EC340, X : JSL Filter_Majorly_Whiten_Color : STA $7EC540, X
|
LDA.l $7EC340, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC540, X
|
||||||
LDA $7EC350, X : JSL Filter_Majorly_Whiten_Color : STA $7EC550, X
|
LDA.l $7EC350, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC550, X
|
||||||
LDA $7EC360, X : JSL Filter_Majorly_Whiten_Color : STA $7EC560, X
|
LDA.l $7EC360, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC560, X
|
||||||
LDA $7EC370, X : JSL Filter_Majorly_Whiten_Color : STA $7EC570, X
|
LDA.l $7EC370, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC570, X
|
||||||
LDA $7EC380, X : JSL Filter_Majorly_Whiten_Color : STA $7EC580, X
|
LDA.l $7EC380, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC580, X
|
||||||
LDA $7EC390, X : JSL Filter_Majorly_Whiten_Color : STA $7EC590, X
|
LDA.l $7EC390, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC590, X
|
||||||
LDA $7EC3A0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5A0, X
|
LDA.l $7EC3A0, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5A0, X
|
||||||
LDA $7EC3B0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5B0, X
|
LDA.l $7EC3B0, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5B0, X
|
||||||
LDA $7EC3C0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5C0, X
|
LDA.l $7EC3C0, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5C0, X
|
||||||
LDA $7EC3D0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5D0, X
|
LDA.l $7EC3D0, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5D0, X
|
||||||
LDA $7EC3E0, X : JSL Filter_Majorly_Whiten_Color : STA $7EC5E0, X
|
LDA.l $7EC3E0, X : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5E0, X
|
||||||
INX #2 : CPX.b #$10 : BEQ +
|
INX #2 : CPX.b #$10 : BEQ +
|
||||||
JMP -
|
JMP -
|
||||||
+
|
+
|
||||||
LDA $7EC3F0 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F0
|
LDA.l $7EC3F0 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F0
|
||||||
LDA $7EC3F2 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F2
|
LDA.l $7EC3F2 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F2
|
||||||
LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F4
|
LDA.l $7EC3F4 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F4
|
||||||
LDA $10 : CMP.w #$07 : BNE +
|
LDA.b $10 : CMP.w #$0007 : BNE +
|
||||||
LDA $048E
|
LDA.w $048E
|
||||||
CMP.w #$3C : BEQ ++
|
CMP.w #$003C : BEQ ++
|
||||||
CMP.w #$9D : BEQ ++
|
CMP.w #$009D : BEQ ++
|
||||||
CMP.w #$9C : BEQ ++
|
CMP.w #$009C : BEQ ++
|
||||||
CMP.w #$A5 : BEQ ++
|
CMP.w #$00A5 : BEQ ++
|
||||||
+
|
+
|
||||||
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6
|
LDA.l $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F6
|
||||||
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
|
LDA.l $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F8
|
||||||
BRA +++
|
BRA +++
|
||||||
++
|
++
|
||||||
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6
|
LDA.l $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F6
|
||||||
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
|
LDA.l $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F8
|
||||||
BRA +++
|
BRA +++
|
||||||
+++
|
+++
|
||||||
LDA $7EC3FA : JSL Filter_Majorly_Whiten_Color : STA $7EC5FA
|
LDA.l $7EC3FA : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5FA
|
||||||
LDA $7EC3FC : JSL Filter_Majorly_Whiten_Color : STA $7EC5FC
|
LDA.l $7EC3FC : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5FC
|
||||||
LDA $7EC3FE : JSL Filter_Majorly_Whiten_Color : STA $7EC5FE
|
LDA.l $7EC3FE : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5FE
|
||||||
REP #$10
|
REP #$10
|
||||||
LDA $7EC540 : TAY
|
LDA.l $7EC540 : TAY
|
||||||
LDA $7EC300 : BNE +
|
LDA.l $7EC300 : BNE +
|
||||||
TAY
|
TAY
|
||||||
+
|
+
|
||||||
TYA : STA $7EC500
|
TYA : STA.l $7EC500
|
||||||
SEP #$30
|
SEP #$30
|
||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
WhitenLoopDummy:
|
WhitenLoopDummy:
|
||||||
-
|
-
|
||||||
LDA $7EC340, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC540, X
|
LDA.l $7EC340, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC540, X
|
||||||
LDA $7EC350, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC550, X
|
LDA.l $7EC350, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC550, X
|
||||||
LDA $7EC360, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC560, X
|
LDA.l $7EC360, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC560, X
|
||||||
LDA $7EC370, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC570, X
|
LDA.l $7EC370, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC570, X
|
||||||
LDA $7EC380, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC580, X
|
LDA.l $7EC380, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC580, X
|
||||||
LDA $7EC390, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC590, X
|
LDA.l $7EC390, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC590, X
|
||||||
LDA $7EC3A0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5A0, X
|
LDA.l $7EC3A0, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5A0, X
|
||||||
LDA $7EC3B0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5B0, X
|
LDA.l $7EC3B0, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5B0, X
|
||||||
LDA $7EC3C0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5C0, X
|
LDA.l $7EC3C0, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5C0, X
|
||||||
LDA $7EC3D0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5D0, X
|
LDA.l $7EC3D0, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5D0, X
|
||||||
LDA $7EC3E0, X : JSL Filter_Majorly_Whiten_Color : LDA $7EC5E0, X
|
LDA.l $7EC3E0, X : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5E0, X
|
||||||
INX #2 : CPX.b #$10 : BEQ +
|
INX #2 : CPX.b #$10 : BEQ +
|
||||||
JMP -
|
JMP -
|
||||||
+
|
+
|
||||||
LDA $7EC3F0 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F0
|
LDA.l $7EC3F0 : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5F0
|
||||||
LDA $7EC3F2 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F2
|
LDA.l $7EC3F2 : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5F2
|
||||||
LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F4
|
LDA.l $7EC3F4 : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5F4
|
||||||
LDA $10 : CMP.w #$07 : BNE + ; only light invisifloor if we're in dungeon submodule
|
LDA.b $10 : CMP.w #$0007 : BNE + ; only light invisifloor if we're in dungeon submodule
|
||||||
LDA $048E
|
LDA.w $048E
|
||||||
CMP.w #$3C : BEQ ++ ; hookshot cave
|
CMP.w #$003C : BEQ ++ ; hookshot cave
|
||||||
CMP.w #$9D : BEQ ++ ; gt right
|
CMP.w #$009D : BEQ ++ ; gt right
|
||||||
CMP.w #$9C : BEQ ++ ; gt big room
|
CMP.w #$009C : BEQ ++ ; gt big room
|
||||||
CMP.w #$A5 : BEQ ++ ; wizzrobes 1
|
CMP.w #$00A5 : BEQ ++ ; wizzrobes 1
|
||||||
+
|
+
|
||||||
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F6
|
LDA.l $7EC3F6 : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5F6
|
||||||
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F8
|
LDA.l $7EC3F8 : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5F8
|
||||||
BRA +++
|
BRA +++
|
||||||
++
|
++
|
||||||
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6
|
LDA.l $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F6
|
||||||
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
|
LDA.l $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA.l $7EC5F8
|
||||||
BRA +++
|
BRA +++
|
||||||
+++
|
+++
|
||||||
LDA $7EC3FA : JSL Filter_Majorly_Whiten_Color : LDA $7EC5FA
|
LDA.l $7EC3FA : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5FA
|
||||||
LDA $7EC3FC : JSL Filter_Majorly_Whiten_Color : LDA $7EC5FC
|
LDA.l $7EC3FC : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5FC
|
||||||
LDA $7EC3FE : JSL Filter_Majorly_Whiten_Color : LDA $7EC5FE
|
LDA.l $7EC3FE : JSL Filter_Majorly_Whiten_Color : LDA.l $7EC5FE
|
||||||
REP #$10
|
REP #$10
|
||||||
LDA $7EC540 : TAY
|
LDA.l $7EC540 : TAY
|
||||||
LDA $7EC300 : BNE +
|
LDA.l $7EC300 : BNE +
|
||||||
TAY
|
TAY
|
||||||
+
|
+
|
||||||
TYA : STA $7EC500
|
TYA : STA.l $7EC500
|
||||||
SEP #$30
|
SEP #$30
|
||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -129,36 +120,36 @@ RestoreBgEther:
|
|||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
-
|
-
|
||||||
LDA $00,X
|
LDA.b $00,X
|
||||||
LDA $7EC340, X : STA $7EC540, X
|
LDA.l $7EC340, X : STA.l $7EC540, X
|
||||||
LDA $7EC350, X : STA $7EC550, X
|
LDA.l $7EC350, X : STA.l $7EC550, X
|
||||||
LDA $7EC360, X : STA $7EC560, X
|
LDA.l $7EC360, X : STA.l $7EC560, X
|
||||||
LDA $7EC370, X : STA $7EC570, X
|
LDA.l $7EC370, X : STA.l $7EC570, X
|
||||||
LDA $7EC380, X : STA $7EC580, X
|
LDA.l $7EC380, X : STA.l $7EC580, X
|
||||||
LDA $7EC390, X : STA $7EC590, X
|
LDA.l $7EC390, X : STA.l $7EC590, X
|
||||||
LDA $7EC3A0, X : STA $7EC5A0, X
|
LDA.l $7EC3A0, X : STA.l $7EC5A0, X
|
||||||
LDA $7EC3B0, X : STA $7EC5B0, X
|
LDA.l $7EC3B0, X : STA.l $7EC5B0, X
|
||||||
LDA $7EC3C0, X : STA $7EC5C0, X
|
LDA.l $7EC3C0, X : STA.l $7EC5C0, X
|
||||||
LDA $7EC3D0, X : STA $7EC5D0, X
|
LDA.l $7EC3D0, X : STA.l $7EC5D0, X
|
||||||
LDA $7EC3E0, X : STA $7EC5E0, X
|
LDA.l $7EC3E0, X : STA.l $7EC5E0, X
|
||||||
LDA $7EC3F0, X : STA $7EC5F0, X
|
LDA.l $7EC3F0, X : STA.l $7EC5F0, X
|
||||||
INX #2 : CPX.b #$10 : BNE -
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
-
|
-
|
||||||
LDA $00
|
LDA.b Scrap00
|
||||||
LDA $7EC340, X : LDA $7EC540, X
|
LDA.l $7EC340, X : LDA.l $7EC540, X
|
||||||
LDA $7EC350, X : LDA $7EC550, X
|
LDA.l $7EC350, X : LDA.l $7EC550, X
|
||||||
LDA $7EC360, X : LDA $7EC560, X
|
LDA.l $7EC360, X : LDA.l $7EC560, X
|
||||||
LDA $7EC370, X : LDA $7EC570, X
|
LDA.l $7EC370, X : LDA.l $7EC570, X
|
||||||
LDA $7EC380, X : LDA $7EC580, X
|
LDA.l $7EC380, X : LDA.l $7EC580, X
|
||||||
LDA $7EC390, X : LDA $7EC590, X
|
LDA.l $7EC390, X : LDA.l $7EC590, X
|
||||||
LDA $7EC3A0, X : LDA $7EC5A0, X
|
LDA.l $7EC3A0, X : LDA.l $7EC5A0, X
|
||||||
LDA $7EC3B0, X : LDA $7EC5B0, X
|
LDA.l $7EC3B0, X : LDA.l $7EC5B0, X
|
||||||
LDA $7EC3C0, X : LDA $7EC5C0, X
|
LDA.l $7EC3C0, X : LDA.l $7EC5C0, X
|
||||||
LDA $7EC3D0, X : LDA $7EC5D0, X
|
LDA.l $7EC3D0, X : LDA.l $7EC5D0, X
|
||||||
LDA $7EC3E0, X : LDA $7EC5E0, X
|
LDA.l $7EC3E0, X : LDA.l $7EC5E0, X
|
||||||
LDA $7EC3F0, X : LDA $7EC5F0, X
|
LDA.l $7EC3F0, X : LDA.l $7EC5F0, X
|
||||||
INX #2 : CPX.b #$10 : BNE -
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
BRA ++
|
BRA ++
|
||||||
++
|
++
|
||||||
@@ -168,105 +159,105 @@ DDMConditionalLightning:
|
|||||||
LDA.l DisableFlashing
|
LDA.l DisableFlashing
|
||||||
REP #$20
|
REP #$20
|
||||||
BNE +
|
BNE +
|
||||||
LDA.w $0000
|
LDA.w Scrap
|
||||||
LDX.b #$02
|
LDX.b #$02
|
||||||
JML $07FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00
|
JML $07FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00
|
||||||
+
|
+
|
||||||
LDA.b $00 : LDX.b #$02 : LDY #$00
|
LDA.b Scrap00 : LDX.b #$02 : LDY.b #$00
|
||||||
-
|
-
|
||||||
LDA $F4EB, Y : LDA $7EC560, X
|
LDA.w $F4EB, Y : LDA.l $7EC560, X
|
||||||
LDA $F4F9, Y : LDA $7EC570, X
|
LDA.w $F4F9, Y : LDA.l $7EC570, X
|
||||||
LDA $F507, Y : LDA $7EC590, X
|
LDA.w $F507, Y : LDA.l $7EC590, X
|
||||||
LDA $F515, Y : LDA $7EC5E0, X
|
LDA.w $F515, Y : LDA.l $7EC5E0, X
|
||||||
LDA $F523, Y : LDA $7EC5F0, X
|
LDA.w $F523, Y : LDA.l $7EC5F0, X
|
||||||
INY #2
|
INY #2
|
||||||
INX #2 : CPX.b #$10 : BNE -
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
JML $07FAAC ; Bank0E.asm : 4754 both branches converge here
|
JML $07FAAC ; Bank0E.asm : 4754 both branches converge here
|
||||||
;================================================================================
|
;================================================================================
|
||||||
ConditionalGTFlash:
|
ConditionalGTFlash:
|
||||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
LDA $0000
|
LDA.w Scrap
|
||||||
-
|
-
|
||||||
LDA $F9C1, Y : STA $7EC5D0, X
|
LDA.w $F9C1, Y : STA.l $7EC5D0, X
|
||||||
INY #2
|
INY #2
|
||||||
INX #2 : CPX.b #$10 : BNE -
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA $00
|
LDA.b Scrap00
|
||||||
-
|
-
|
||||||
LDA $F9C1, Y : LDA $7EC5D0, X
|
LDA.w $F9C1, Y : LDA.l $7EC5D0, X
|
||||||
INY #2
|
INY #2
|
||||||
INX #2 : CPX.b #$10 : BNE -
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
ConditionalRedFlash:
|
ConditionalRedFlash:
|
||||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
LDA $00,X
|
LDA.b Scrap,X
|
||||||
LDA.w #$1D59 : STA $7EC5DA
|
LDA.w #$1D59 : STA.l $7EC5DA
|
||||||
LDA.w #$25FF : STA $7EC5DC
|
LDA.w #$25FF : STA.l $7EC5DC
|
||||||
LDA.w #$001A
|
LDA.w #$001A
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA $00
|
LDA.b Scrap00
|
||||||
LDA.w #$1D59 : LDA $7EC5DA
|
LDA.w #$1D59 : LDA.l $7EC5DA
|
||||||
LDA.w #$25FF : LDA $7EC5DC
|
LDA.w #$25FF : LDA.l $7EC5DC
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
ConditionalPedAncilla:
|
ConditionalPedAncilla:
|
||||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
LDA $00,X
|
LDA.b Scrap,X
|
||||||
LDA $00 : STA $04
|
LDA.b Scrap00 : STA.b Scrap04
|
||||||
LDA $02 : STA $06
|
LDA.b Scrap02 : STA.b Scrap06
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA $00
|
LDA.b Scrap
|
||||||
LDA $00 : LDA $04
|
LDA.b Scrap00 : LDA.b Scrap04
|
||||||
LDA $02 : LDA $06
|
LDA.b Scrap02 : LDA.b Scrap06
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
LoadElectroPalette:
|
LoadElectroPalette:
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$0202 : STA $0C
|
LDA.w #$0202 : STA.b Scrap0C
|
||||||
LDA.w #$0404 : STA $0E
|
LDA.w #$0404 : STA.b Scrap0E
|
||||||
LDA.w #$001B : STA $02
|
LDA.w #$001B : STA.b Scrap02
|
||||||
SEP #$10
|
SEP #$10
|
||||||
LDX $0C : LDA $1BEBB4, X : AND.w #$00FF : ADC #$D630
|
LDX.b Scrap0C : LDA.l $1BEBB4, X : AND.w #$00FF : ADC.w #$D630
|
||||||
REP #$10 : LDX.w #$01B2 : LDY.w #$0002
|
REP #$10 : LDX.w #$01B2 : LDY.w #$0002
|
||||||
JSR ConditionalLoadGearPalette
|
JSR ConditionalLoadGearPalette
|
||||||
SEP #$10
|
SEP #$10
|
||||||
LDX $0D
|
LDX.b Scrap0D
|
||||||
LDA $1BEBC1, X : AND.w #$00FF : ADC #$D648
|
LDA.l $1BEBC1, X : AND.w #$00FF : ADC.w #$D648
|
||||||
REP #$10 : LDX.w #$01B8 : LDY.w #$0003
|
REP #$10 : LDX.w #$01B8 : LDY.w #$0003
|
||||||
JSR ConditionalLoadGearPalette
|
JSR ConditionalLoadGearPalette
|
||||||
SEP #$10
|
SEP #$10
|
||||||
LDX $0E
|
LDX.b Scrap0E
|
||||||
LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC #$D308
|
LDA.l $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$D308
|
||||||
REP #$10 : LDX.w #$01E2 : LDY.w #$000E
|
REP #$10 : LDX.w #$01E2 : LDY.w #$000E
|
||||||
JSR ConditionalLoadGearPalette
|
JSR ConditionalLoadGearPalette
|
||||||
SEP #$30
|
SEP #$30
|
||||||
INC $15
|
INC.b $15
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
ConditionalLoadGearPalette:
|
ConditionalLoadGearPalette:
|
||||||
STA $00
|
STA.b Scrap00
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
LDA $00,X
|
LDA.b Scrap,X
|
||||||
-
|
-
|
||||||
LDA [$00]
|
LDA.b [Scrap00]
|
||||||
STA $7EC500, X
|
STA.l $7EC500, X
|
||||||
INC $00 : INC $00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
INX #2
|
INX #2
|
||||||
DEY
|
DEY
|
||||||
BPL -
|
BPL -
|
||||||
RTS
|
RTS
|
||||||
+
|
+
|
||||||
LDA $00
|
LDA.b Scrap
|
||||||
-
|
-
|
||||||
LDA [$00]
|
LDA.b [Scrap00]
|
||||||
LDA $7EC500, X
|
LDA.l $7EC500, X
|
||||||
INC $00 : INC $00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
INX #2
|
INX #2
|
||||||
DEY
|
DEY
|
||||||
BPL -
|
BPL -
|
||||||
@@ -281,13 +272,13 @@ RestoreElectroPalette:
|
|||||||
LDX.w #$01E2 : LDY.w #$000E
|
LDX.w #$01E2 : LDY.w #$000E
|
||||||
JSR FillPaletteBufferFromAux
|
JSR FillPaletteBufferFromAux
|
||||||
SEP #$30
|
SEP #$30
|
||||||
INC $15
|
INC.b $15
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
FillPaletteBufferFromAux:
|
FillPaletteBufferFromAux:
|
||||||
-
|
-
|
||||||
LDA $7EC300, X
|
LDA.l $7EC300, X
|
||||||
STA $7EC500, X
|
STA.l $7EC500, X
|
||||||
INX #2
|
INX #2
|
||||||
DEY
|
DEY
|
||||||
BPL -
|
BPL -
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
; Randomize Book of Mudora
|
; Randomize Book of Mudora
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadLibraryItemGFX:
|
LoadLibraryItemGFX:
|
||||||
%GetPossiblyEncryptedItem(LibraryItem, SpriteItemValues)
|
%GetPossiblyEncryptedItem(LibraryItem, SpriteItemValues)
|
||||||
STA $0E80, X ; Store item type
|
STA.w $0E80, X ; Store item type
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawLibraryItemGFX:
|
DrawLibraryItemGFX:
|
||||||
PHA
|
PHA
|
||||||
LDA $0E80, X ; Retrieve stored item type
|
LDA $0E80, X ; Retrieve stored item type
|
||||||
JSL.l DrawDynamicTile
|
JSL.l DrawDynamicTile
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetLibraryItem:
|
SetLibraryItem:
|
||||||
LDY $0E80, X ; Retrieve stored item type
|
LDY.w $0E80, X ; Retrieve stored item type
|
||||||
JSL.l ItemSet_Library ; contains thing we wrote over
|
JSL.l ItemSet_Library ; contains thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -24,37 +24,34 @@ RTL
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Randomize Bonk Keys
|
; Randomize Bonk Keys
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
LoadBonkItemGFX:
|
LoadBonkItemGFX:
|
||||||
LDA.b #$08 : STA $0F50, X ; thing we wrote over
|
LDA.b #$08 : STA.w $0F50, X ; thing we wrote over
|
||||||
LoadBonkItemGFX_inner:
|
LoadBonkItemGFX_inner:
|
||||||
LDA.b #$00 : STA !REDRAW
|
LDA.b #$00 : STA.l RedrawFlag
|
||||||
JSR LoadBonkItem
|
JSR LoadBonkItem
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawBonkItemGFX:
|
DrawBonkItemGFX:
|
||||||
PHA
|
PHA
|
||||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
||||||
JSL.l LoadBonkItemGFX_inner
|
JSL.l LoadBonkItemGFX_inner
|
||||||
BRA .done ; don't draw on the init frame
|
BRA .done ; don't draw on the init frame
|
||||||
|
|
||||||
.skipInit
|
.skipInit
|
||||||
|
JSR LoadBonkItem
|
||||||
|
JSL.l DrawDynamicTileNoShadow
|
||||||
|
|
||||||
JSR LoadBonkItem
|
.done
|
||||||
JSL.l DrawDynamicTileNoShadow
|
PLA
|
||||||
|
|
||||||
.done
|
|
||||||
PLA
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GiveBonkItem:
|
GiveBonkItem:
|
||||||
JSR LoadBonkItem
|
JSR LoadBonkItem
|
||||||
CMP #$24 : BNE .notKey
|
CMP.b #$24 : BNE .notKey
|
||||||
.key
|
.key
|
||||||
PHY : LDY.b #$24 : JSL.l AddInventory : PLY ; do inventory processing for a small key
|
PHY : LDY.b #$24 : JSL.l AddInventory : PLY ; do inventory processing for a small key
|
||||||
LDA CurrentSmallKeys : INC A : STA CurrentSmallKeys
|
LDA.l CurrentSmallKeys : INC A : STA.l CurrentSmallKeys
|
||||||
LDA.b #$2F : JSL.l Sound_SetSfx3PanLong
|
LDA.b #$2F : JSL.l Sound_SetSfx3PanLong
|
||||||
JSL CountBonkItem
|
JSL CountBonkItem
|
||||||
RTL
|
RTL
|
||||||
@@ -64,11 +61,11 @@ RTL
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadBonkItem:
|
LoadBonkItem:
|
||||||
LDA $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte
|
LDA.b $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte
|
||||||
CMP #115 : BNE + ; Desert Bonk Key
|
CMP.b #115 : BNE + ; Desert Bonk Key
|
||||||
LDA.l BonkKey_Desert
|
LDA.l BonkKey_Desert
|
||||||
BRA ++
|
BRA ++
|
||||||
+ : CMP #140 : BNE + ; GTower Bonk Key
|
+ : CMP.b #140 : BNE + ; GTower Bonk Key
|
||||||
LDA.l BonkKey_GTower
|
LDA.l BonkKey_GTower
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
|
|||||||
57
boots.asm
57
boots.asm
@@ -1,28 +1,27 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Boots State Modifier
|
; Boots State Modifier
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!BOOTS_MODIFIER = "$7F50CE"
|
|
||||||
ModifyBoots:
|
ModifyBoots:
|
||||||
PHA
|
PHA
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BNE +
|
LDA.l BootsModifier : CMP.b #$01 : BNE +
|
||||||
PLA : AND AbilityFlags : ORA.b #$04 : RTL ; yes boots
|
PLA : AND.l AbilityFlags : ORA.b #$04 : RTL ; yes boots
|
||||||
+ : CMP.b #$02 : BNE +
|
+ : CMP.b #$02 : BNE +
|
||||||
PLA : AND AbilityFlags : AND.b #$FB : RTL ; no boots
|
PLA : AND.l AbilityFlags : AND.b #$FB : RTL ; no boots
|
||||||
+ : LDA FakeBoots : CMP.b #$01 : BNE +
|
+ : LDA.l FakeBoots : CMP.b #$01 : BNE +
|
||||||
LDA $5B : BEQ ++ : LDA $59 : BNE + ; hover check
|
LDA.b $5B : BEQ ++ : LDA.b $59 : BNE + ; hover check
|
||||||
++ : PLA : AND AbilityFlags : ORA.b #$04 : RTL ; yes boots, not hovering
|
++ : PLA : AND.l AbilityFlags : ORA.b #$04 : RTL ; yes boots, not hovering
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
AND AbilityFlags ; regular boots
|
AND.l AbilityFlags ; regular boots
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AddBonkTremors:
|
AddBonkTremors:
|
||||||
PHA
|
PHA
|
||||||
LDA $46 : BNE + ; Check for incapacitated Link
|
LDA.b $46 : BNE + ; Check for incapacitated Link
|
||||||
JSL.l IncrementBonkCounter
|
JSL.l IncrementBonkCounter
|
||||||
+
|
+
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA BootsEquipment : BNE + ; Check for Boots
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
||||||
PLA : RTL
|
PLA : RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -32,46 +31,46 @@ RTL
|
|||||||
BonkBreakableWall:
|
BonkBreakableWall:
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
SEP #$30 ; set 8-bit accumulator and index registers
|
SEP #$30 ; set 8-bit accumulator and index registers
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA BootsEquipment : BNE + ; Check for Boots
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
||||||
PLP : PLX : LDA.w #$0000 : RTL
|
PLP : PLX : LDA.w #$0000 : RTL
|
||||||
+
|
+
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
LDA $0372 : AND.w #$00FF ; things we wrote over
|
LDA.w $0372 : AND.w #$00FF ; things we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
BonkRockPile:
|
BonkRockPile:
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA BootsEquipment : BNE + ; Check for Boots
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
||||||
LDA.b #$00 : RTL
|
LDA.b #$00 : RTL
|
||||||
+
|
+
|
||||||
LDA $02EF : AND.b #$70 ; things we wrote over
|
LDA.w $02EF : AND.b #$70 ; things we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GravestoneHook:
|
GravestoneHook:
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA BootsEquipment : BEQ .done ; Check for Boots
|
LDA.l BootsEquipment : BEQ .done ; Check for Boots
|
||||||
+
|
+
|
||||||
LDA $0372 : BEQ .done ; things we wrote over
|
LDA.w $0372 : BEQ .done ; things we wrote over
|
||||||
JML.l moveGravestone
|
JML.l moveGravestone
|
||||||
.done
|
.done
|
||||||
JML.l GravestoneHook_continue
|
JML.l GravestoneHook_continue
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
JumpDownLedge:
|
JumpDownLedge:
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA BootsEquipment : BNE + ; Check for Boots
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
||||||
; Disarm Waterwalk
|
; Disarm Waterwalk
|
||||||
LDA $5B : CMP.b #$01 : BNE +
|
LDA.b $5B : CMP.b #$01 : BNE +
|
||||||
STZ $5B
|
STZ.b $5B
|
||||||
+
|
+
|
||||||
LDA $1B : BNE .done : LDA.b #$02 : STA $EE ; things we wrote over
|
LDA.b $1B : BNE .done : LDA.b #$02 : STA.b $EE ; things we wrote over
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
BonkRecoil:
|
BonkRecoil:
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA BootsEquipment : BNE + ; Check for Boots
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
||||||
LDA.b #$16 : STA $29 : RTL
|
LDA.b #$16 : STA.b $29 : RTL
|
||||||
+
|
+
|
||||||
LDA.b #$24 : STA $29 ; things we wrote over
|
LDA.b #$24 : STA.b $29 ; things we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
45
bugfixes.asm
45
bugfixes.asm
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AssignKiki:
|
AssignKiki:
|
||||||
LDA.b #$00 : STA FollowerDropped ; defuse bomb
|
LDA.b #$00 : STA.l FollowerDropped ; defuse bomb
|
||||||
LDA.b #$0A : STA FollowerIndicator ; assign kiki as follower
|
LDA.b #$0A : STA.l FollowerIndicator ; assign kiki as follower
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -11,10 +11,9 @@ RTL
|
|||||||
; Name: AllowSQ
|
; Name: AllowSQ
|
||||||
; Returns: Accumulator = 0 if S&Q is disallowed, 1 if allowed
|
; Returns: Accumulator = 0 if S&Q is disallowed, 1 if allowed
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!ITEM_BUSY = "$7F5091"
|
|
||||||
AllowSQ:
|
AllowSQ:
|
||||||
LDA ProgressIndicator : BEQ .done ; thing we overwrote - check if link is in his bed
|
LDA.l ProgressIndicator : BEQ .done ; thing we overwrote - check if link is in his bed
|
||||||
LDA !ITEM_BUSY : EOR #$01
|
LDA.l BusyItem : EOR.b #$01
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -23,8 +22,8 @@ RTL
|
|||||||
;0 = Reset Music
|
;0 = Reset Music
|
||||||
;1 = Don't Reset Music
|
;1 = Don't Reset Music
|
||||||
MSMusicReset:
|
MSMusicReset:
|
||||||
LDA $8A : CMP.b #$80 : BNE +
|
LDA.b $8A : CMP.b #$80 : BNE +
|
||||||
LDA $23
|
LDA.b $23
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -32,11 +31,11 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;0 = Become (Perma)bunny
|
;0 = Become (Perma)bunny
|
||||||
DecideIfBunny:
|
DecideIfBunny:
|
||||||
LDA MoonPearlEquipment : BNE .done
|
LDA.l MoonPearlEquipment : BNE .done
|
||||||
LDA CurrentWorld : AND.b #$40
|
LDA.l CurrentWorld : AND.b #$40
|
||||||
PHA : LDA.l InvertedMode : BNE .inverted
|
PHA : LDA.l InvertedMode : BNE .inverted
|
||||||
.normal
|
.normal
|
||||||
PLA : EOR #$40
|
PLA : EOR.b #$40
|
||||||
BRA .done
|
BRA .done
|
||||||
.inverted
|
.inverted
|
||||||
PLA
|
PLA
|
||||||
@@ -136,21 +135,21 @@ SQEGFix:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Fix crystal not spawning when using somaria vs boss
|
; Fix crystal not spawning when using somaria vs boss
|
||||||
TryToSpawnCrystalUntilSuccess:
|
TryToSpawnCrystalUntilSuccess:
|
||||||
STX $02D8 ; what we overwrote
|
STX.w $02D8 ; what we overwrote
|
||||||
JSL AddAncillaLong : BCS .failed ; a clear carry flag indicates success
|
JSL AddAncillaLong : BCS .failed ; a clear carry flag indicates success
|
||||||
.spawned
|
.spawned
|
||||||
STZ $AE ; the "trying to spawn crystal" flag
|
STZ.b $AE ; the "trying to spawn crystal" flag
|
||||||
STZ $AF ; the "trying to spawn pendant" flag
|
STZ.b $AF ; the "trying to spawn pendant" flag
|
||||||
.failed
|
.failed
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Fix crystal not spawning when using somaria vs boss
|
; Fix crystal not spawning when using somaria vs boss
|
||||||
WallmasterCameraFix:
|
WallmasterCameraFix:
|
||||||
STZ $A7 ; disable vertical camera scrolling for current room
|
STZ.b $A7 ; disable vertical camera scrolling for current room
|
||||||
REP #$20
|
REP #$20
|
||||||
STZ $0618 ; something about scrolling, setting these to 0 tricks the game
|
STZ.w $0618 ; something about scrolling, setting these to 0 tricks the game
|
||||||
STZ $061A ; into thinking we're at the edge of the room so it doesn't scroll.
|
STZ.w $061A ; into thinking we're at the edge of the room so it doesn't scroll.
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JML Sound_SetSfx3PanLong ; what we wrote over, also this will RTL
|
JML Sound_SetSfx3PanLong ; what we wrote over, also this will RTL
|
||||||
|
|
||||||
@@ -158,8 +157,8 @@ WallmasterCameraFix:
|
|||||||
; Fix losing glove colors
|
; Fix losing glove colors
|
||||||
LoadActualGearPalettesWithGloves:
|
LoadActualGearPalettesWithGloves:
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA SwordEquipment : STA $0C
|
LDA.l SwordEquipment : STA.b Scrap0C
|
||||||
LDA ArmorEquipment : AND.w #$00FF
|
LDA.l ArmorEquipment : AND.w #$00FF
|
||||||
JSL LoadGearPalettes_variable
|
JSL LoadGearPalettes_variable
|
||||||
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
|
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
|
||||||
RTL
|
RTL
|
||||||
@@ -167,24 +166,24 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Fix Bunny Palette Map Bug
|
; Fix Bunny Palette Map Bug
|
||||||
LoadGearPalette_safe_for_bunny:
|
LoadGearPalette_safe_for_bunny:
|
||||||
LDA $10
|
LDA.b $10
|
||||||
CMP.w #$030E : BEQ .new ; opening dungeon map
|
CMP.w #$030E : BEQ .new ; opening dungeon map
|
||||||
CMP.w #$070E : BEQ .new ; opening overworld map
|
CMP.w #$070E : BEQ .new ; opening overworld map
|
||||||
.original
|
.original
|
||||||
-
|
-
|
||||||
LDA [$00]
|
LDA.b [Scrap00]
|
||||||
STA $7EC300, X
|
STA $7EC300, X
|
||||||
STA $7EC500, X
|
STA $7EC500, X
|
||||||
INC $00 : INC $00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
INX #2
|
INX #2
|
||||||
DEY
|
DEY
|
||||||
BPL -
|
BPL -
|
||||||
RTL
|
RTL
|
||||||
.new
|
.new
|
||||||
-
|
-
|
||||||
LDA [$00]
|
LDA.b [Scrap00]
|
||||||
STA $7EC500, X
|
STA $7EC500, X
|
||||||
INC $00 : INC $00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
INX #2
|
INX #2
|
||||||
DEY
|
DEY
|
||||||
BPL -
|
BPL -
|
||||||
|
|||||||
40
catfish.asm
40
catfish.asm
@@ -1,34 +1,26 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Randomize Catfish
|
; Randomize Catfish
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!HEART_REDRAW = "$7F5000"
|
|
||||||
LoadCatfishItemGFX:
|
LoadCatfishItemGFX:
|
||||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||||
JML PrepDynamicTile
|
JML PrepDynamicTile
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawThrownItem:
|
DrawThrownItem:
|
||||||
LDA $8A : CMP.b #$81 : BNE .catfish
|
LDA.b $8A : CMP.b #$81 : BNE .catfish
|
||||||
|
.zora
|
||||||
.zora
|
LDA.b #$01 : STA.l RedrawFlag
|
||||||
LDA.b #$01 : STA !HEART_REDRAW
|
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
||||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
BRA .draw
|
||||||
BRA .draw
|
.catfish
|
||||||
|
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||||
.catfish
|
.draw
|
||||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
JML DrawDynamicTile
|
||||||
|
|
||||||
.draw
|
|
||||||
JML DrawDynamicTile
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MarkThrownItem:
|
MarkThrownItem:
|
||||||
JSL Link_ReceiveItem ; thing we wrote over
|
JSL Link_ReceiveItem ; thing we wrote over
|
||||||
|
LDA.b $8A : CMP.b #$81 : BNE .catfish
|
||||||
LDA $8A : CMP.b #$81 : BNE .catfish
|
.zora
|
||||||
|
JML ItemSet_ZoraKing
|
||||||
.zora
|
.catfish
|
||||||
JML ItemSet_ZoraKing
|
JML ItemSet_Catfish
|
||||||
|
|
||||||
.catfish
|
|
||||||
JML ItemSet_Catfish
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
52
clock.asm
52
clock.asm
@@ -148,23 +148,23 @@ Clock_QuickStamp:
|
|||||||
SEC ; indicate success
|
SEC ; indicate success
|
||||||
|
|
||||||
.ready
|
.ready
|
||||||
%Clock_ReadBCD() : STA $00 ; seconds
|
%Clock_ReadBCD() : STA.b Scrap00 ; seconds
|
||||||
%Clock_ReadBCD() : STA $01 ; minutes
|
%Clock_ReadBCD() : STA.b Scrap01 ; minutes
|
||||||
%Clock_ReadBCD() : STA $02 ; hours
|
%Clock_ReadBCD() : STA.b Scrap02 ; hours
|
||||||
%Clock_ReadBCD() : STA $03 ; days
|
%Clock_ReadBCD() : STA.b Scrap03 ; days
|
||||||
|
|
||||||
REP $20 ; set 16-bit accumulator
|
REP $20 ; set 16-bit accumulator
|
||||||
LDA $01 : AND #$00FF : %A_x60() ; convert minutes to seconds
|
LDA.b Scrap01 : AND.w #$00FF : %A_x60() ; convert minutes to seconds
|
||||||
STZ $01 : !ADD $00 : STA $00 ; store running total seconds to $00
|
STZ.b Scrap01 : !ADD Scrap00 : STA.b Scrap00 ; store running total seconds to $00
|
||||||
|
|
||||||
LDA $03 : AND #$00FF : %A_x24() ; convert days to hours
|
LDA.b Scrap03 : AND.w #$00FF : %A_x24() ; convert days to hours
|
||||||
STZ $03 : !ADD $02 ; get total hours
|
STZ.b Scrap03 : !ADD Scrap02 ; get total hours
|
||||||
%A_x60() ; get total minutes
|
%A_x60() ; get total minutes
|
||||||
|
|
||||||
LDY #$60
|
LDY #$60
|
||||||
JSL.l Multiply_A16Y8
|
JSL.l Multiply_A16Y8
|
||||||
STY $02 : STZ $03
|
STY.b Scrap02 : STZ.b Scrap03
|
||||||
!ADD $00 : BCC + : INC $02 : +
|
!ADD Scrap00 : BCC + : INC.b Scrap02 : +
|
||||||
|
|
||||||
.done
|
.done
|
||||||
PLP : PLX : PLA
|
PLP : PLX : PLA
|
||||||
@@ -183,18 +183,18 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Multiply_A16Y8:
|
Multiply_A16Y8:
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
STY $4202
|
STY.w WRMPYA
|
||||||
STA $4203
|
STA.w WRMPYB
|
||||||
NOP #4
|
NOP #4
|
||||||
LDA $4216
|
LDA.w RDMPYL
|
||||||
LDY $4217
|
LDY.w RDMPYH
|
||||||
XBA
|
XBA
|
||||||
STA $4203
|
STA.w WRMPYB
|
||||||
NOP #2
|
NOP #2
|
||||||
TYA
|
TYA
|
||||||
CLC
|
CLC
|
||||||
ADC $4216
|
ADC.w RDMPYL
|
||||||
LDY $4217
|
LDY.w RDMPYH
|
||||||
BCC .carry_bit
|
BCC .carry_bit
|
||||||
INY
|
INY
|
||||||
.carry_bit:
|
.carry_bit:
|
||||||
@@ -230,17 +230,17 @@ Clock_GetTime:
|
|||||||
SEC ; indicate success
|
SEC ; indicate success
|
||||||
|
|
||||||
.ready
|
.ready
|
||||||
%Clock_ReadBCD() : STA $00 ; seconds
|
%Clock_ReadBCD() : STA.b Scrap00 ; seconds
|
||||||
%Clock_ReadBCD() : STA $01 ; minutes
|
%Clock_ReadBCD() : STA.b Scrap01 ; minutes
|
||||||
%Clock_ReadBCD() : STA $02 ; hours
|
%Clock_ReadBCD() : STA.b Scrap02 ; hours
|
||||||
%Clock_ReadBCD() : STA $03 ; days
|
%Clock_ReadBCD() : STA.b Scrap03 ; days
|
||||||
LDA $002800 : STA $04 ; months
|
LDA $002800 : STA.b Scrap04 ; months
|
||||||
%Clock_ReadBCD() : STA $05 ; years
|
%Clock_ReadBCD() : STA.b Scrap05 ; years
|
||||||
LDA $002800 : STA $06 ; century
|
LDA $002800 : STA.b Scrap06 ; century
|
||||||
|
|
||||||
REP $20 ; set 16-bit accumulator
|
REP $20 ; set 16-bit accumulator
|
||||||
STA $06 : AND #$00FF : %A_x10() : %A_x10() : !ADD #1000 ; multiply century digit by 100 and add 1000
|
STA.b Scrap06 : AND #$00FF : %A_x10() : %A_x10() : !ADD #1000 ; multiply century digit by 100 and add 1000
|
||||||
STZ $06 : !ADD $05 : STA $05 ; add lower 2 digits of the year and store
|
STZ.b Scrap06 : !ADD Scrap05 : STA.b Scrap05 ; add lower 2 digits of the year and store
|
||||||
|
|
||||||
.done
|
.done
|
||||||
PLP : PLY : PLX : PLA
|
PLP : PLY : PLX : PLA
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
; $7F5010 - Scratch Space
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
DrawDungeonCompassCounts:
|
DrawDungeonCompassCounts:
|
||||||
LDX $1B : BNE + : RTL : + ; Skip if outdoors
|
LDX.b $1B : BNE + : RTL : + ; Skip if outdoors
|
||||||
|
|
||||||
; extra hard safeties for getting dungeon ID to prevent crashes
|
; extra hard safeties for getting dungeon ID to prevent crashes
|
||||||
PHA
|
PHA
|
||||||
@@ -13,7 +9,7 @@ DrawDungeonCompassCounts:
|
|||||||
CPX.b #$1B : BCS .done ; Skip if not in a valid dungeon ID
|
CPX.b #$1B : BCS .done ; Skip if not in a valid dungeon ID
|
||||||
|
|
||||||
BIT.w #$0002 : BNE ++ ; if CompassMode==2, we don't check for the compass
|
BIT.w #$0002 : BNE ++ ; if CompassMode==2, we don't check for the compass
|
||||||
LDA CompassField : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks
|
LDA.l CompassField : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks
|
||||||
BEQ .done ; skip if we don't have compass
|
BEQ .done ; skip if we don't have compass
|
||||||
++
|
++
|
||||||
|
|
||||||
@@ -21,23 +17,23 @@ DrawDungeonCompassCounts:
|
|||||||
BNE +
|
BNE +
|
||||||
INC
|
INC
|
||||||
+
|
+
|
||||||
LDA.l CompassTotalsWRAM, X : AND #$00FF
|
LDA.l CompassTotalsWRAM, X : AND.w #$00FF
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSR HudHexToDec2Digit
|
JSR HudHexToDec2Digit
|
||||||
REP #$20
|
REP #$20
|
||||||
PHX
|
PHX
|
||||||
LDX.b $06 : TXA : ORA #$2400 : STA $7EC79A
|
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l $7EC79A
|
||||||
LDX.b $07 : TXA : ORA #$2400 : STA $7EC79C
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l $7EC79C
|
||||||
PLX
|
PLX
|
||||||
|
|
||||||
LDA DungeonLocationsChecked, X : AND #$00FF
|
LDA.l DungeonLocationsChecked, X : AND.w #$00FF
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSR HudHexToDec2Digit
|
JSR HudHexToDec2Digit
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.b $06 : TXA : ORA #$2400 : STA $7EC794 ; Draw the item count
|
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l $7EC794 ; Draw the item count
|
||||||
LDX.b $07 : TXA : ORA #$2400 : STA $7EC796
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l $7EC796
|
||||||
|
|
||||||
LDA.w #$2830 : STA $7EC798 ; draw the slash
|
LDA.w #$2830 : STA.l $7EC798 ; draw the slash
|
||||||
|
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
@@ -47,10 +43,10 @@ DungeonItemMasks: ; these are dungeon correlations to $7EF364 - $7EF369 so it kn
|
|||||||
dw $0080, $0040, $0020, $0010, $0008, $0004
|
dw $0080, $0040, $0020, $0010, $0008, $0004
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
InitCompassTotalsRAM:
|
InitCompassTotalsRAM:
|
||||||
LDX #$00
|
LDX.b #$00
|
||||||
-
|
-
|
||||||
LDA CompassTotalsROM, X : STA CompassTotalsWRAM, X
|
LDA.l CompassTotalsROM, X : STA.l CompassTotalsWRAM, X
|
||||||
INX
|
INX
|
||||||
CPX #$0F : !BLT -
|
CPX.b #$0F : !BLT -
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ParadoxCaveGfxFix:
|
ParadoxCaveGfxFix:
|
||||||
; Always upload line unless you're moving into paradox cave (0x0FF) from above (0x0EF)
|
; Always upload line unless you're moving into paradox cave (0x0FF) from above (0x0EF)
|
||||||
LDA $1B : BEQ .uploadLine
|
LDA.b $1B : BEQ .uploadLine
|
||||||
LDX $A0 : CPX #$00FF : BNE .uploadLine
|
LDX.b $A0 : CPX.w #$00FF : BNE .uploadLine
|
||||||
LDX $A2 : CPX #$00EF : BNE .uploadLine
|
LDX.b $A2 : CPX.w #$00EF : BNE .uploadLine
|
||||||
|
|
||||||
;Ignore uploading four specific lines of tiles to VRAM
|
;Ignore uploading four specific lines of tiles to VRAM
|
||||||
LDX $0118
|
LDX.w $0118
|
||||||
; Line 1
|
; Line 1
|
||||||
CPX #$1800 : BEQ .skipMostOfLine
|
CPX.w #$1800 : BEQ .skipMostOfLine
|
||||||
; Line 2
|
; Line 2
|
||||||
CPX #$1A00 : BEQ .skipMostOfLine
|
CPX.w #$1A00 : BEQ .skipMostOfLine
|
||||||
; Line 3
|
; Line 3
|
||||||
CPX #$1C00 : BEQ .uploadLine
|
CPX.w #$1C00 : BEQ .uploadLine
|
||||||
; Line 4
|
; Line 4
|
||||||
CPX #$1E00 : BEQ .uploadLine
|
CPX.w #$1E00 : BEQ .uploadLine
|
||||||
|
|
||||||
.uploadLine
|
.uploadLine
|
||||||
LDA.b #$01 : STA $420B
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
|
|
||||||
.skipLine
|
.skipLine
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.skipMostOfLine
|
.skipMostOfLine
|
||||||
; Set line length to 192 bytes (the first 6 8x8 tiles in the line)
|
; Set line length to 192 bytes (the first 6 8x8 tiles in the line)
|
||||||
LDX.w #$00C0 : STX $4305
|
LDX.w #$00C0 : STX.w DAS0L
|
||||||
BRA .uploadLine
|
BRA .uploadLine
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -4,29 +4,28 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Filtered Joypad 1 Register: [AXLR | ????]
|
; Filtered Joypad 1 Register: [AXLR | ????]
|
||||||
; Filtered Joypad 1 Register: [BYST | udlr] [AXLR | ????]
|
; Filtered Joypad 1 Register: [BYST | udlr] [AXLR | ????]
|
||||||
!INVERT_DPAD = "$7F50CB"
|
|
||||||
|
|
||||||
InvertDPad:
|
InvertDPad:
|
||||||
LDA.l OneMindPlayerCount : BEQ .crowd_control
|
LDA.l OneMindPlayerCount : BEQ .crowd_control
|
||||||
|
|
||||||
LDA.l !ONEMIND_ID
|
LDA.l OneMindId
|
||||||
AND.b #$03
|
AND.b #$03
|
||||||
TAX
|
TAX
|
||||||
LDA.l .onemind_controller_offset, X
|
LDA.l .onemind_controller_offset, X
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
LDA.w $4218,X : STA.w $00
|
LDA.w JOY1L,X : STA.w Scrap00
|
||||||
LDA.w $4219,X : STA.w $01
|
LDA.w JOY1H,X : STA.w Scrap01
|
||||||
|
|
||||||
LDA #$80 : STA $4201 ; reset this so latch can read it, otherwise RNG breaks
|
LDA.b #$80 : STA.w WRIO ; reset this so latch can read it, otherwise RNG breaks
|
||||||
|
|
||||||
JML.l InvertDPadReturn
|
JML.l InvertDPadReturn
|
||||||
|
|
||||||
.crowd_control
|
.crowd_control
|
||||||
LDA !INVERT_DPAD : BNE +
|
LDA.l DPadInverter : BNE +
|
||||||
|
|
||||||
LDA $4218 : STA $00
|
LDA.w JOY1L : STA.b Scrap00
|
||||||
LDA $4219 : STA $01
|
LDA.w JOY1H : STA.b Scrap01
|
||||||
JML.l InvertDPadReturn
|
JML.l InvertDPadReturn
|
||||||
|
|
||||||
+ DEC : BEQ .dpadOnly
|
+ DEC : BEQ .dpadOnly
|
||||||
@@ -34,47 +33,47 @@ InvertDPad:
|
|||||||
DEC : BEQ .invertBoth
|
DEC : BEQ .invertBoth
|
||||||
.swapSides
|
.swapSides
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $4218
|
LDA.w JOY1L
|
||||||
BIT.w #$0840 : BEQ + : EOR.w #$0840 : + ; swap X/up
|
BIT.w #$0840 : BEQ + : EOR.w #$0840 : + ; swap X/up
|
||||||
BIT.w #$0180 : BEQ + : EOR.w #$0180 : + ; swap A/right
|
BIT.w #$0180 : BEQ + : EOR.w #$0180 : + ; swap A/right
|
||||||
BIT.w #$4200 : BEQ + : EOR.w #$4200 : + ; swap Y/left
|
BIT.w #$4200 : BEQ + : EOR.w #$4200 : + ; swap Y/left
|
||||||
BIT.w #$8400 : BEQ + : EOR.w #$8400 : + ; swap B/down
|
BIT.w #$8400 : BEQ + : EOR.w #$8400 : + ; swap B/down
|
||||||
STA $00
|
STA.b Scrap00
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
JML.l InvertDPadReturn
|
JML.l InvertDPadReturn
|
||||||
.invertBoth
|
.invertBoth
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $4218
|
LDA.w JOY1L
|
||||||
BIT.w #$8040 : BEQ + : EOR.w #$8040 : + ; swap X/B
|
BIT.w #$8040 : BEQ + : EOR.w #$8040 : + ; swap X/B
|
||||||
BIT.w #$4080 : BEQ + : EOR.w #$4080 : + ; swap Y/A
|
BIT.w #$4080 : BEQ + : EOR.w #$4080 : + ; swap Y/A
|
||||||
BIT.w #$0C00 : BEQ + : EOR.w #$0C00 : + ; swap up/down
|
BIT.w #$0C00 : BEQ + : EOR.w #$0C00 : + ; swap up/down
|
||||||
BIT.w #$0300 : BEQ + : EOR.w #$0300 : + ; swap left/right
|
BIT.w #$0300 : BEQ + : EOR.w #$0300 : + ; swap left/right
|
||||||
STA $00
|
STA.b Scrap00
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
JML.l InvertDPadReturn
|
JML.l InvertDPadReturn
|
||||||
.buttonsOnly
|
.buttonsOnly
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $4218
|
LDA.w JOY1L
|
||||||
BIT.w #$8040 : BEQ + : EOR.w #$8040 : + ; swap X/B
|
BIT.w #$8040 : BEQ + : EOR.w #$8040 : + ; swap X/B
|
||||||
BIT.w #$4080 : BEQ + : EOR.w #$4080 : + ; swap Y/A
|
BIT.w #$4080 : BEQ + : EOR.w #$4080 : + ; swap Y/A
|
||||||
STA $00
|
STA.b Scrap00
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
JML.l InvertDPadReturn
|
JML.l InvertDPadReturn
|
||||||
.dpadOnly
|
.dpadOnly
|
||||||
LDA $4218 : STA $00
|
LDA.w JOY1L : STA.b Scrap00
|
||||||
LDA $4219
|
LDA.w JOY1H
|
||||||
BIT.b #$0C : BEQ + : EOR.b #$0C : + ; swap up/down
|
BIT.b #$0C : BEQ + : EOR.b #$0C : + ; swap up/down
|
||||||
BIT.b #$03 : BEQ + : EOR.b #$03 : + ; swap left/right
|
BIT.b #$03 : BEQ + : EOR.b #$03 : + ; swap left/right
|
||||||
STA $01
|
STA.b Scrap01
|
||||||
JML.l InvertDPadReturn
|
JML.l InvertDPadReturn
|
||||||
|
|
||||||
.onemind_controller_offset
|
.onemind_controller_offset
|
||||||
db 0 ; player 0 - $4218 - joy1d1
|
db 0 ; player 0 - JOY1L - joy1d1
|
||||||
db 0 ; player 1 - $4218 - joy1d1
|
db 0 ; player 1 - JOY1L - joy1d1
|
||||||
db 2 ; player 2 - $421A - joy2d1
|
db 2 ; player 2 - JOY2L - joy2d1
|
||||||
db 6 ; player 3 - $421E - joy2d2
|
db 6 ; player 3 - JOY4L - joy2d2
|
||||||
db 2 ; player 4 - $421A - joy2d1
|
db 2 ; player 4 - JOY2L - joy2d1
|
||||||
db 6 ; player 5 - $421E - joy2d2
|
db 6 ; player 5 - JOY4L - joy2d2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -86,12 +85,12 @@ HandleOneMindController:
|
|||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
LDA.l !ONEMIND_TIMER
|
LDA.l OneMindTimerRAM
|
||||||
DEC
|
DEC
|
||||||
BPL .no_switch
|
BPL .no_switch
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l !ONEMIND_ID
|
LDA.l OneMindId
|
||||||
INC
|
INC
|
||||||
CMP.l OneMindPlayerCount
|
CMP.l OneMindPlayerCount
|
||||||
BCC .no_wrap
|
BCC .no_wrap
|
||||||
@@ -99,21 +98,21 @@ HandleOneMindController:
|
|||||||
LDA.b #$01 ; reset to player 1
|
LDA.b #$01 ; reset to player 1
|
||||||
|
|
||||||
.no_wrap
|
.no_wrap
|
||||||
STA.l !ONEMIND_ID
|
STA.l OneMindId
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l OneMindTimer
|
LDA.l OneMindTimerInit
|
||||||
|
|
||||||
.no_switch
|
.no_switch
|
||||||
STA.l !ONEMIND_TIMER
|
STA.l OneMindTimerRAM
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l !ONEMIND_ID
|
LDA.l OneMindId
|
||||||
|
|
||||||
CMP.b #$04 ; is it player 4 or 5?
|
CMP.b #$04 ; is it player 4 or 5?
|
||||||
BCC .no_multitap_switch
|
BCC .no_multitap_switch
|
||||||
|
|
||||||
STZ.w $4201
|
STZ.w WRIO
|
||||||
|
|
||||||
.no_multitap_switch
|
.no_multitap_switch
|
||||||
|
|
||||||
|
|||||||
155
crypto.asm
155
crypto.asm
@@ -1,21 +1,6 @@
|
|||||||
; $7F50D0 - $7F50FF - Block Cypher Parameters
|
; Scrap04 used for n
|
||||||
; $7F5100 - $7F51FF - Block Cypher Buffer
|
; Scrap06 used for rounds
|
||||||
!v = "$7F5100"
|
; Scrap08 use for dpScratch/MXResult (lower 32 of dpScratch)
|
||||||
!n = "$04"
|
|
||||||
!MXResult = "$08" ; an alternate name for the lower 32 bits of dpScratch
|
|
||||||
!dpScratch = "$08"
|
|
||||||
!keyBase = "$7F50D0"
|
|
||||||
|
|
||||||
|
|
||||||
!y = "$7F50E0"
|
|
||||||
!z = "$7F50E4"
|
|
||||||
!sum = "$7F50E8"
|
|
||||||
|
|
||||||
!p = "$7F50EC"
|
|
||||||
!rounds = "$06"
|
|
||||||
!e = "$7F50F0"
|
|
||||||
|
|
||||||
!upperScratch = "$7F50F2"
|
|
||||||
|
|
||||||
CryptoDelta:
|
CryptoDelta:
|
||||||
dd #$9e3779b9
|
dd #$9e3779b9
|
||||||
@@ -53,146 +38,140 @@ CryptoMX:
|
|||||||
PHX
|
PHX
|
||||||
|
|
||||||
; upperScratch = (z>>5 ^ y <<2)
|
; upperScratch = (z>>5 ^ y <<2)
|
||||||
LDA.w !z : STA.b !dpScratch
|
LDA.w z : STA.b Scrap08
|
||||||
LDA.w !z+2 : STA.b !dpScratch+2
|
LDA.w z+2 : STA.b Scrap08+2
|
||||||
%LSR32Single(!dpScratch)
|
%LSR32Single(Scrap08)
|
||||||
%LSR32Single(!dpScratch)
|
%LSR32Single(Scrap08)
|
||||||
%LSR32Single(!dpScratch)
|
%LSR32Single(Scrap08)
|
||||||
%LSR32Single(!dpScratch)
|
%LSR32Single(Scrap08)
|
||||||
%LSR32Single(!dpScratch)
|
%LSR32Single(Scrap08)
|
||||||
;%LSR32(!dpScratch,#$05)
|
;%LSR32(Scrap08,#$05)
|
||||||
|
|
||||||
LDA.w !y : STA.b !dpScratch+4
|
LDA.w y : STA.b Scrap08+4
|
||||||
LDA.w !y+2 : STA.b !dpScratch+6
|
LDA.w y+2 : STA.b Scrap08+6
|
||||||
%ASL32Single(!dpScratch+4)
|
%ASL32Single(Scrap08+4)
|
||||||
%ASL32Single(!dpScratch+4)
|
%ASL32Single(Scrap08+4)
|
||||||
;%ASL32(!dpScratch+4,#$02)
|
;%ASL32(Scrap08+4,#$02)
|
||||||
|
|
||||||
LDA.b !dpScratch : EOR.b !dpScratch+4 : STA.w !upperScratch
|
LDA.b Scrap08 : EOR.b Scrap08+4 : STA.w CryptoScratch
|
||||||
LDA.b !dpScratch+2 : EOR.b !dpScratch+6 : STA.w !upperScratch+2
|
LDA.b Scrap08+2 : EOR.b Scrap08+6 : STA.w CryptoScratch+2
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; upperscratch2 = (y>>3^z<<4)
|
; upperscratch2 = (y>>3^z<<4)
|
||||||
|
|
||||||
LDA.w !z : STA.b !dpScratch
|
LDA.w z : STA.b Scrap08
|
||||||
LDA.w !z+2 : STA.b !dpScratch+2
|
LDA.w z+2 : STA.b Scrap08+2
|
||||||
%ASL32Single(!dpScratch)
|
%ASL32Single(Scrap08)
|
||||||
%ASL32Single(!dpScratch)
|
%ASL32Single(Scrap08)
|
||||||
%ASL32Single(!dpScratch)
|
%ASL32Single(Scrap08)
|
||||||
%ASL32Single(!dpScratch)
|
%ASL32Single(Scrap08)
|
||||||
;%ASL32(!dpScratch,#$04)
|
;%ASL32(Scrap08,#$04)
|
||||||
|
|
||||||
LDA.w !y : STA.b !dpScratch+4
|
LDA.w y : STA.b Scrap08+4
|
||||||
LDA.w !y+2 : STA.b !dpScratch+6
|
LDA.w y+2 : STA.b Scrap08+6
|
||||||
%LSR32Single(!dpScratch+4)
|
%LSR32Single(Scrap08+4)
|
||||||
%LSR32Single(!dpScratch+4)
|
%LSR32Single(Scrap08+4)
|
||||||
%LSR32Single(!dpScratch+4)
|
%LSR32Single(Scrap08+4)
|
||||||
;%LSR32(!dpScratch+4,#$03)
|
;%LSR32(Scrap08+4,#$03)
|
||||||
|
|
||||||
LDA.b !dpScratch : EOR.b !dpScratch+4 : STA.w !upperScratch+4
|
LDA.b Scrap08 : EOR.b Scrap08+4 : STA.w CryptoScratch+4
|
||||||
LDA.b !dpScratch+2 : EOR.b !dpScratch+6 : STA.w !upperScratch+6
|
LDA.b Scrap08+2 : EOR.b Scrap08+6 : STA.w CryptoScratch+6
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; upperscratch = upperscratch + upperscratch2 ( == (z>>5^y<<2) + (y>>3^z<<4) )
|
; upperscratch = upperscratch + upperscratch2 ( == (z>>5^y<<2) + (y>>3^z<<4) )
|
||||||
|
|
||||||
LDA.w !upperScratch : !ADD.w !upperScratch+4 : STA.w !upperScratch
|
LDA.w CryptoScratch : !ADD.w CryptoScratch+4 : STA.w CryptoScratch
|
||||||
LDA.w !upperScratch+2 : ADC.w !upperScratch+6 : STA.w !upperScratch+2
|
LDA.w CryptoScratch+2 : ADC.w CryptoScratch+6 : STA.w CryptoScratch+2
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; dpscratch = sum^y
|
; dpscratch = sum^y
|
||||||
|
|
||||||
LDA.w !sum : EOR.w !y : STA.b !dpScratch
|
LDA.w Sum : EOR.w y : STA.b Scrap08
|
||||||
LDA.w !sum+2 : EOR.w !y+2 : STA.b !dpScratch+2
|
LDA.w Sum+2 : EOR.w y+2 : STA.b Scrap08+2
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; dpscratch2 = (k[p&3^e]^z)
|
; dpscratch2 = (k[p&3^e]^z)
|
||||||
|
|
||||||
LDA.w !p : AND.w #$0003 : EOR.w !e : ASL #2 : TAX ; put (p&3)^e into X
|
LDA.w p : AND.w #$0003 : EOR.w e : ASL #2 : TAX ; put (p&3)^e into X
|
||||||
LDA.w !keyBase, X : EOR.w !z : STA.b !dpScratch+4
|
LDA.w KeyBase, X : EOR.w z : STA.b Scrap08+4
|
||||||
LDA.w !keyBase+2, X : EOR.w !z+2 : STA.b !dpScratch+6
|
LDA.w KeyBase+2, X : EOR.w z+2 : STA.b Scrap08+6
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; upperscratch2 = dpscratch + dpscratch2 (== (sum^y) + (k[p&3^e]^z))
|
; upperscratch2 = dpscratch + dpscratch2 (== (sum^y) + (k[p&3^e]^z))
|
||||||
LDA.b !dpScratch : !ADD.b !dpScratch+4 : STA.w !upperScratch+4
|
LDA.b Scrap08 : !ADD.b Scrap08+4 : STA.w CryptoScratch+4
|
||||||
LDA.b !dpScratch+2 : ADC.b !dpScratch+6 : STA.w !upperScratch+6
|
LDA.b Scrap08+2 : ADC.b Scrap08+6 : STA.w CryptoScratch+6
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; MXResult = uppserscratch ^ upperscratch2
|
; MXResult = uppserscratch ^ upperscratch2
|
||||||
|
|
||||||
LDA.w !upperScratch : EOR.w !upperScratch+4 : STA.b !MXResult
|
LDA.w CryptoScratch : EOR.w CryptoScratch+4 : STA.b Scrap08
|
||||||
LDA.w !upperScratch+2 : EOR.w !upperScratch+6 : STA.b !MXResult+2
|
LDA.w CryptoScratch+2 : EOR.w CryptoScratch+6 : STA.b Scrap08+2
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
;!DIVIDEND_LOW = $4204
|
|
||||||
;!DIVIDEND_HIGH = $4205
|
|
||||||
;!DIVISOR = $4206
|
|
||||||
;!QUOTIENT_LOW = $4214
|
|
||||||
;!QUOTIENT_HIGH = $4215
|
|
||||||
|
|
||||||
XXTEA_Decode:
|
XXTEA_Decode:
|
||||||
PHP : PHB
|
PHP : PHB
|
||||||
SEP #$30 ; set 8-bit accumulator and index
|
SEP #$30 ; set 8-bit accumulator and index
|
||||||
|
|
||||||
LDA.b #$7F : PHA : PLB
|
LDA.b #$7F : PHA : PLB
|
||||||
|
|
||||||
STZ.b !n+1 ; set upper byte of n to be zero, so it can safely be accessed in 16-bit mode
|
STZ.b Scrap04+1 ; set upper byte of n to be zero, so it can safely be accessed in 16-bit mode
|
||||||
|
|
||||||
; search for lookup table index to avoid division and multiplication
|
; search for lookup table index to avoid division and multiplication
|
||||||
LDX.b #0
|
LDX.b #0
|
||||||
-
|
-
|
||||||
LDA.l .n_lookup, X
|
LDA.l .n_lookup, X
|
||||||
CMP.b !n : !BLT +
|
CMP.b Scrap04 : !BLT +
|
||||||
INX
|
INX
|
||||||
BRA -
|
BRA -
|
||||||
+
|
+
|
||||||
; rounds = 6 + 52/n;
|
; rounds = 6 + 52/n;
|
||||||
LDA.l .round_counts, X : STA.b !rounds : STZ.b !rounds+1
|
LDA.l .round_counts, X : STA.b Scrap06 : STZ.b Scrap06+1
|
||||||
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
|
|
||||||
; sum = rounds*DELTA;
|
; sum = rounds*DELTA;
|
||||||
TXA : ASL #2 : TAX
|
TXA : ASL #2 : TAX
|
||||||
LDA.l .initial_sums, X : STA.w !sum
|
LDA.l .initial_sums, X : STA.w Sum
|
||||||
LDA.l .initial_sums+2, X : STA.w !sum+2
|
LDA.l .initial_sums+2, X : STA.w Sum+2
|
||||||
|
|
||||||
; y = v[0];
|
; y = v[0];
|
||||||
LDA.w !v : STA.w !y
|
LDA.w v : STA.w y
|
||||||
LDA.w !v+2 : STA.w !y+2
|
LDA.w v+2 : STA.w y+2
|
||||||
---
|
---
|
||||||
LDA.w !sum : LSR #2 : AND.w #$0003 : STA.w !e ; e = (sum >> 2) & 3;
|
LDA.w Sum : LSR #2 : AND.w #$0003 : STA.w e ; e = (sum >> 2) & 3;
|
||||||
|
|
||||||
LDA.b !n : DEC : STA.w !p
|
LDA.b Scrap04 : DEC : STA.w p
|
||||||
-- BEQ + ; for (p=n-1; p>0; p--) {
|
-- BEQ + ; for (p=n-1; p>0; p--) {
|
||||||
; z = v[p-1];
|
; z = v[p-1];
|
||||||
ASL #2 : TAX
|
ASL #2 : TAX
|
||||||
LDA.w !v-4, X : STA.w !z
|
LDA.w v-4, X : STA.w z
|
||||||
LDA.w !v-4+2, X : STA.w !z+2
|
LDA.w v-4+2, X : STA.w z+2
|
||||||
|
|
||||||
; y = v[p] -= MX;
|
; y = v[p] -= MX;
|
||||||
JSR CryptoMX
|
JSR CryptoMX
|
||||||
LDA.w !p : ASL #2 : TAX
|
LDA.w p : ASL #2 : TAX
|
||||||
LDA.w !v, X : !SUB.b !MXResult : STA.w !v, X : STA.w !y
|
LDA.w v, X : !SUB.b Scrap08 : STA.w v, X : STA.w y
|
||||||
LDA.w !v+2, X : SBC.b !MXResult+2 : STA.w !v+2, X : STA.w !y+2
|
LDA.w v+2, X : SBC.b Scrap08+2 : STA.w v+2, X : STA.w y+2
|
||||||
|
|
||||||
LDA.w !p : DEC : STA.w !p : BRA -- ; }
|
LDA.w p : DEC : STA.w p : BRA -- ; }
|
||||||
+
|
+
|
||||||
|
|
||||||
; z = v[n-1];
|
; z = v[n-1];
|
||||||
LDA.b !n : DEC : ASL #2 : TAX
|
LDA.b Scrap04 : DEC : ASL #2 : TAX
|
||||||
LDA.w !v, X : STA.w !z
|
LDA.w v, X : STA.w z
|
||||||
LDA.w !v+2, X : STA.w !z+2
|
LDA.w v+2, X : STA.w z+2
|
||||||
|
|
||||||
; y = v[0] -= MX;
|
; y = v[0] -= MX;
|
||||||
JSR CryptoMX
|
JSR CryptoMX
|
||||||
LDA.w !v : !SUB.b !MXResult : STA.w !v : STA.w !y
|
LDA.w v : !SUB.b Scrap08 : STA.w v : STA.w y
|
||||||
LDA.w !v+2 : SBC.b !MXResult+2 : STA.w !v+2 : STA.w !y+2
|
LDA.w v+2 : SBC.b Scrap08+2 : STA.w v+2 : STA.w y+2
|
||||||
|
|
||||||
; sum -= DELTA;
|
; sum -= DELTA;
|
||||||
LDA.w !sum : !SUB.l CryptoDelta : STA.w !sum
|
LDA.w Sum : !SUB.l CryptoDelta : STA.w Sum
|
||||||
LDA.w !sum+2 : SBC.l CryptoDelta+2 : STA.w !sum+2
|
LDA.w Sum+2 : SBC.l CryptoDelta+2 : STA.w Sum+2
|
||||||
|
|
||||||
DEC !rounds : BEQ + : JMP --- : + ; } while (--rounds);
|
DEC.b Scrap06 : BEQ + : JMP --- : + ; } while (--rounds);
|
||||||
PLB : PLP
|
PLB : PLP
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +1,14 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
!CUCCO_STORM = "$7F50C5"
|
!CUCCO = $0B
|
||||||
!IS_INDOORS = "$7E001B"
|
!INERT = $00
|
||||||
!ENEMY_STATE_TABLE = "$7E0DD0"
|
!INIT = $08
|
||||||
!ENEMY_TYPE_TABLE = "$7E0E20"
|
!ALIVE = $09
|
||||||
!ENEMY_AUX1_TABLE = "$7E0DA0"
|
!CUCCO_ENRAGED = $23
|
||||||
!ENEMY_AUX2_TABLE = "$7E0DB0"
|
|
||||||
!ENEMY_DIRECTION_TABLE = "$7E0EB0"
|
|
||||||
!CUCCO = "#$0B"
|
|
||||||
!INERT = "#$00"
|
|
||||||
!INIT = "#$08"
|
|
||||||
!ALIVE = "#$09"
|
|
||||||
!CUCCO_ENRAGED = "#$23"
|
|
||||||
!LINK_POS_Y_LOW = "$20"
|
|
||||||
!LINK_POS_Y_HIGH = "$21"
|
|
||||||
!LINK_POS_X_LOW = "$22"
|
|
||||||
!LINK_POS_X_HIGH = "$23"
|
|
||||||
!ENEMY_POS_Y_LOW = "$7E0D00"
|
|
||||||
!ENEMY_POS_X_LOW = "$7E0D10"
|
|
||||||
!ENEMY_POS_Y_HIGH = "$7E0D20"
|
|
||||||
!ENEMY_POS_X_HIGH = "$7E0D30"
|
|
||||||
CuccoStorm:
|
CuccoStorm:
|
||||||
|
|
||||||
SEP #$30 ; set 8-bit accumulator index registers
|
SEP #$30 ; set 8-bit accumulator index registers
|
||||||
LDA.l !CUCCO_STORM : BEQ + ; only if storm is on
|
LDA.l CuccoStormer : BEQ + ; only if storm is on
|
||||||
LDA.b $10 : CMP.b #$09 : BNE + ; only if outdoors
|
LDA.b $10 : CMP.b #$09 : BNE + ; only if outdoors
|
||||||
LDA.l LoopFrames : AND.b #$7F : BNE + ; check every 128 frames
|
LDA.l LoopFrames : AND.b #$7F : BNE + ; check every 128 frames
|
||||||
|
|
||||||
@@ -32,18 +18,18 @@ CuccoStorm:
|
|||||||
LDY.b #$FF : PHY ; push "cucco not found"
|
LDY.b #$FF : PHY ; push "cucco not found"
|
||||||
|
|
||||||
LDX.b #$00 : -- : CPX.b #$10 : !BGE .ldone
|
LDX.b #$00 : -- : CPX.b #$10 : !BGE .ldone
|
||||||
LDA.w !ENEMY_STATE_TABLE, X : CMP.b !ALIVE : BEQ +++
|
LDA.w SpriteAITable, X : CMP.b #!ALIVE : BEQ +++
|
||||||
; enemy not found
|
; enemy not found
|
||||||
CMP.b !INERT : BNE ++
|
CMP.b #!INERT : BNE ++
|
||||||
; log inert enemy slot
|
; log inert enemy slot
|
||||||
PLA : PHX
|
PLA : PHX
|
||||||
BRA ++
|
BRA ++
|
||||||
+++
|
+++
|
||||||
; found an enemy
|
; found an enemy
|
||||||
LDA.l !ENEMY_TYPE_TABLE, X : CMP.b !CUCCO : BNE ++
|
LDA.l SpriteTypeTable, X : CMP.b #!CUCCO : BNE ++
|
||||||
; it's a cucco
|
; it's a cucco
|
||||||
TXY ; record where we found the living cucco in case we don't find any angry ones
|
TXY ; record where we found the living cucco in case we don't find any angry ones
|
||||||
LDA.w !ENEMY_AUX1_TABLE, X : CMP.b !CUCCO_ENRAGED : !BLT ++
|
LDA.w SpriteAuxTable, X : CMP.b #!CUCCO_ENRAGED : !BLT ++
|
||||||
PLA : BRA + ; we found an angry cucco, done
|
PLA : BRA + ; we found an angry cucco, done
|
||||||
++ : INX : BRA -- : .ldone
|
++ : INX : BRA -- : .ldone
|
||||||
|
|
||||||
@@ -53,12 +39,12 @@ CuccoStorm:
|
|||||||
; we didn't find a cucco, so try to create one
|
; we didn't find a cucco, so try to create one
|
||||||
PLY
|
PLY
|
||||||
CPY.b #$FF : BEQ + ; fail if no slots found
|
CPY.b #$FF : BEQ + ; fail if no slots found
|
||||||
LDA.b !CUCCO : STA.w !ENEMY_TYPE_TABLE, Y
|
LDA.b #!CUCCO : STA.w SpriteTypeTable, Y
|
||||||
LDA.b !INIT : STA.w !ENEMY_STATE_TABLE, Y
|
LDA.b #!INIT : STA.w SpriteAITable, Y
|
||||||
LDA.b !LINK_POS_Y_LOW : STA.w !ENEMY_POS_Y_LOW, Y
|
LDA.b LinkPosY : STA.w SpritePosYLow, Y
|
||||||
LDA.b !LINK_POS_Y_HIGH : STA.w !ENEMY_POS_Y_HIGH, Y
|
LDA.b LinkPosY+1 : STA.w SpritePosYHigh, Y
|
||||||
LDA.b !LINK_POS_X_LOW : STA.w !ENEMY_POS_X_LOW, Y
|
LDA.b LinkPosX : STA.w SpritePosXLow, Y
|
||||||
LDA.b !LINK_POS_X_HIGH : STA.w !ENEMY_POS_X_HIGH, Y
|
LDA.b LinkPosX+1 : STA.w SpritePosXHigh, Y
|
||||||
BRA +++
|
BRA +++
|
||||||
++
|
++
|
||||||
PLA
|
PLA
|
||||||
@@ -66,8 +52,8 @@ CuccoStorm:
|
|||||||
|
|
||||||
;==== Enrage a Cucco
|
;==== Enrage a Cucco
|
||||||
|
|
||||||
LDA.b !CUCCO_ENRAGED : STA.w !ENEMY_AUX1_TABLE, Y ; enrage the cucco
|
LDA.b #!CUCCO_ENRAGED : STA.w SpriteAuxTable, Y ; enrage the cucco
|
||||||
LDA.b #$00 : STA.w !ENEMY_AUX2_TABLE, Y : STA.w !ENEMY_DIRECTION_TABLE, Y
|
LDA.b #$00 : STA.w SpriteAuxTable+$10, Y : STA.w SpriteDirectionTable, Y
|
||||||
|
|
||||||
;====
|
;====
|
||||||
+
|
+
|
||||||
|
|||||||
@@ -7,55 +7,55 @@ DarkWorldSaveFix:
|
|||||||
JML.l StatSaveCounter
|
JML.l StatSaveCounter
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DoWorldFix:
|
DoWorldFix:
|
||||||
LDA InvertedMode : BEQ +
|
LDA.l InvertedMode : BEQ +
|
||||||
JMP DoWorldFix_Inverted
|
JMP DoWorldFix_Inverted
|
||||||
+
|
+
|
||||||
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
||||||
LDA.l FollowerIndicator : CMP #$04 : BEQ .setLightWorld ; check if old man is following
|
LDA.l FollowerIndicator : CMP.b #$04 : BEQ .setLightWorld ; check if old man is following
|
||||||
LDA MirrorEquipment : BEQ .noMirror ; check if we have the mirror
|
LDA.l MirrorEquipment : BEQ .noMirror ; check if we have the mirror
|
||||||
.skip_mirror_check ; alt entrance point
|
.skip_mirror_check ; alt entrance point
|
||||||
LDA ProgressIndicator : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
|
LDA.l ProgressIndicator : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
|
||||||
.setLightWorld
|
.setLightWorld
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
.noMirror
|
.noMirror
|
||||||
STA CurrentWorld ; set flag to light world
|
STA.l CurrentWorld ; set flag to light world
|
||||||
LDA FollowerIndicator : CMP #$07 : BNE .done : INC : STA FollowerIndicator ; convert frog to dwarf
|
LDA.l FollowerIndicator : CMP.b #$07 : BNE .done : INC : STA.l FollowerIndicator ; convert frog to dwarf
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetDeathWorldChecked:
|
SetDeathWorldChecked:
|
||||||
LDA InvertedMode : BEQ +
|
LDA.l InvertedMode : BEQ +
|
||||||
JMP SetDeathWorldChecked_Inverted
|
JMP SetDeathWorldChecked_Inverted
|
||||||
+
|
+
|
||||||
LDA $1B : BEQ .outdoors
|
LDA.b $1B : BEQ .outdoors
|
||||||
LDA $040C : CMP #$FF : BNE .dungeon
|
LDA.w $040C : CMP #$FF : BNE .dungeon
|
||||||
LDA $A0 : ORA $A1 : BNE ++
|
LDA.b $A0 : ORA.b $A1 : BNE ++
|
||||||
LDA GanonPyramidRespawn : BNE .pyramid ; if flag is set, force respawn at pyramid on death to ganon
|
LDA.l GanonPyramidRespawn : BNE .pyramid ; if flag is set, force respawn at pyramid on death to ganon
|
||||||
++
|
++
|
||||||
.outdoors
|
.outdoors
|
||||||
JMP DoWorldFix
|
JMP DoWorldFix
|
||||||
|
|
||||||
.dungeon
|
.dungeon
|
||||||
LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BNE .done ; if the bugfix is enabled, we do nothing on death in dungeon
|
LDA.l Bugfix_PreAgaDWDungeonDeathToFakeDW : BNE .done ; if the bugfix is enabled, we do nothing on death in dungeon
|
||||||
JMP DoWorldFix_skip_mirror_check
|
JMP DoWorldFix_skip_mirror_check
|
||||||
|
|
||||||
.pyramid
|
.pyramid
|
||||||
LDA #$40 : STA CurrentWorld ; set flag to dark world
|
LDA.b #$40 : STA.l CurrentWorld ; set flag to dark world
|
||||||
LDA FollowerIndicator : CMP #$08 : BNE .done : DEC : STA FollowerIndicator : + ; convert dwarf to frog
|
LDA.l FollowerIndicator : CMP.b #$08 : BNE .done : DEC : STA.l FollowerIndicator : + ; convert dwarf to frog
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
DoWorldFix_Inverted:
|
DoWorldFix_Inverted:
|
||||||
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
|
||||||
LDA.l FollowerIndicator : CMP #$04 : BEQ .setDarkWorld ; check if old man is following
|
LDA.l FollowerIndicator : CMP.b #$04 : BEQ .setDarkWorld ; check if old man is following
|
||||||
LDA MirrorEquipment : BEQ .setDarkWorld ; check if we have the mirror
|
LDA.l MirrorEquipment : BEQ .setDarkWorld ; check if we have the mirror
|
||||||
.skip_mirror_check ; alt entrance point
|
.skip_mirror_check ; alt entrance point
|
||||||
LDA ProgressIndicator : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
|
LDA.l ProgressIndicator : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
|
||||||
.setDarkWorld
|
.setDarkWorld
|
||||||
LDA #$40 : STA CurrentWorld ; set flag to dark world
|
LDA.b #$40 : STA CurrentWorld ; set flag to dark world
|
||||||
LDA FollowerIndicator
|
LDA.l FollowerIndicator
|
||||||
CMP #$07 : BEQ .clear ; clear frog
|
CMP.b #$07 : BEQ .clear ; clear frog
|
||||||
CMP #$08 : BEQ .clear ; clear dwarf - consider flute implications
|
CMP.b #$08 : BEQ .clear ; clear dwarf - consider flute implications
|
||||||
BRA .done
|
BRA .done
|
||||||
.clear
|
.clear
|
||||||
LDA.b #$00 : STA FollowerIndicator ; clear follower
|
LDA.b #$00 : STA FollowerIndicator ; clear follower
|
||||||
@@ -63,21 +63,21 @@ DoWorldFix_Inverted:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetDeathWorldChecked_Inverted:
|
SetDeathWorldChecked_Inverted:
|
||||||
LDA $1B : BEQ .outdoors
|
LDA.b $1B : BEQ .outdoors
|
||||||
LDA $040C : CMP #$FF : BNE .dungeon
|
LDA.w $040C : CMP #$FF : BNE .dungeon
|
||||||
LDA $A0 : ORA $A1 : BNE ++
|
LDA.b $A0 : ORA $A1 : BNE ++
|
||||||
LDA GanonPyramidRespawn : BNE .castle ; if flag is set, force respawn at pyramid on death to ganon
|
LDA.l GanonPyramidRespawn : BNE .castle ; if flag is set, force respawn at pyramid on death to ganon
|
||||||
++
|
++
|
||||||
.outdoors
|
.outdoors
|
||||||
JMP DoWorldFix
|
JMP DoWorldFix
|
||||||
|
|
||||||
.dungeon
|
.dungeon
|
||||||
LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BNE .done ; if the bugfix is enabled, we do nothing on death in dungeon
|
LDA.l Bugfix_PreAgaDWDungeonDeathToFakeDW : BNE .done ; if the bugfix is enabled, we do nothing on death in dungeon
|
||||||
JMP DoWorldFix_Inverted_skip_mirror_check
|
JMP DoWorldFix_Inverted_skip_mirror_check
|
||||||
|
|
||||||
.castle
|
.castle
|
||||||
LDA #$00 : STA CurrentWorld ; set flag to dark world
|
LDA.b #$00 : STA.l CurrentWorld ; set flag to dark world
|
||||||
LDA FollowerIndicator : CMP #$07 : BNE + : LDA.b #$08 : STA FollowerIndicator : + ; convert frog to dwarf
|
LDA.l FollowerIndicator : CMP.b #$07 : BNE + : LDA.b #$08 : STA FollowerIndicator : + ; convert frog to dwarf
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -85,20 +85,20 @@ RTL
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FakeWorldFix:
|
FakeWorldFix:
|
||||||
LDA FixFakeWorld : BEQ +
|
LDA.l FixFakeWorld : BEQ +
|
||||||
LDA $8A : AND.b #$40 : STA CurrentWorld
|
LDA.b $8A : AND.b #$40 : STA.l CurrentWorld
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MasterSwordFollowerClear:
|
MasterSwordFollowerClear:
|
||||||
LDA FollowerIndicator
|
LDA.l FollowerIndicator
|
||||||
CMP #$0E : BNE .exit ; clear master sword follower
|
CMP.b #$0E : BNE .exit ; clear master sword follower
|
||||||
LDA.b #$00 : STA FollowerIndicator ; clear follower
|
LDA.b #$00 : STA.l FollowerIndicator ; clear follower
|
||||||
.exit
|
.exit
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FixAgahnimFollowers:
|
FixAgahnimFollowers:
|
||||||
LDA.b #$00 : STA FollowerIndicator ; clear follower
|
LDA.b #$00 : STA.l FollowerIndicator ; clear follower
|
||||||
JML PrepDungeonExit ; thing we wrote over
|
JML PrepDungeonExit ; thing we wrote over
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -108,10 +108,10 @@ macro SetMinimum(base,filler,compare)
|
|||||||
?done:
|
?done:
|
||||||
endmacro
|
endmacro
|
||||||
RefreshRainAmmo:
|
RefreshRainAmmo:
|
||||||
LDA ProgressIndicator : CMP.b #$01 : BEQ .rain ; check if we're in rain state
|
LDA.l ProgressIndicator : CMP.b #$01 : BEQ .rain ; check if we're in rain state
|
||||||
RTL
|
RTL
|
||||||
.rain
|
.rain
|
||||||
LDA StartingEntrance
|
LDA.l StartingEntrance
|
||||||
+ CMP.b #$03 : BNE + ; Uncle
|
+ CMP.b #$03 : BNE + ; Uncle
|
||||||
%SetMinimum(CurrentMagic,MagicFiller,RainDeathRefillMagic_Uncle)
|
%SetMinimum(CurrentMagic,MagicFiller,RainDeathRefillMagic_Uncle)
|
||||||
%SetMinimum(BombsEquipment,BombsFiller,RainDeathRefillBombs_Uncle)
|
%SetMinimum(BombsEquipment,BombsFiller,RainDeathRefillBombs_Uncle)
|
||||||
@@ -130,27 +130,25 @@ RefreshRainAmmo:
|
|||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
|
||||||
!INFINITE_MAGIC = "$7F50CA"
|
|
||||||
SetEscapeAssist:
|
SetEscapeAssist:
|
||||||
LDA ProgressIndicator : CMP.b #$01 : BNE .no_train ; check if we're in rain state
|
LDA.l ProgressIndicator : CMP.b #$01 : BNE .no_train ; check if we're in rain state
|
||||||
.rain
|
.rain
|
||||||
LDA.l EscapeAssist
|
LDA.l EscapeAssist
|
||||||
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
|
BIT.b #$04 : BEQ + : STA.l InfiniteArrows : +
|
||||||
BIT.b #$02 : BEQ + : STA InfiniteBombs : +
|
BIT.b #$02 : BEQ + : STA.l InfiniteBombs : +
|
||||||
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
BIT.b #$01 : BEQ + : STA.l InfiniteArrows : +
|
||||||
BRA ++
|
BRA ++
|
||||||
.no_train ; choo choo
|
.no_train ; choo choo
|
||||||
LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : +
|
LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA.l InfiniteMagic : +
|
||||||
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA InfiniteBombs : +
|
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA.l InfiniteBombs : +
|
||||||
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : +
|
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA.l InfiniteArrows : +
|
||||||
++
|
++
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetSilverBowMode:
|
SetSilverBowMode:
|
||||||
LDA SilverArrowsUseRestriction : BEQ + ; fix bow type for restricted arrow mode
|
LDA.l SilverArrowsUseRestriction : BEQ + ; fix bow type for restricted arrow mode
|
||||||
LDA BowEquipment : CMP.b #$3 : BCC +
|
LDA.l BowEquipment : CMP.b #$3 : BCC +
|
||||||
SBC.b #$02 : STA BowEquipment
|
SBC.b #$02 : STA.l BowEquipment
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
|
|
||||||
!CryptoBuffer = "$7F5100"
|
|
||||||
;!keyBase = "$7F50D0"
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadStaticDecryptionKey:
|
LoadStaticDecryptionKey:
|
||||||
PHB : PHA : PHX : PHY : PHP
|
PHB : PHA : PHX : PHY : PHP
|
||||||
REP #$30 ; set 16-bit accumulator & index registers
|
REP #$30 ; set 16-bit accumulator & index registers
|
||||||
LDX.w #StaticDecryptionKey ; Source
|
LDX.w #StaticDecryptionKey ; Source
|
||||||
LDY.w #!keyBase ; Target
|
LDY.w #KeyBase ; Target
|
||||||
LDA.w #$000F ; Length
|
LDA.w #$000F ; Length
|
||||||
MVN $307F
|
MVN $307F
|
||||||
|
|
||||||
@@ -23,65 +20,63 @@ RetrieveValueFromEncryptedTable:
|
|||||||
;Returns result in A
|
;Returns result in A
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
PHA
|
PHA
|
||||||
LDY $04 : PHY : LDY $06 : PHY : LDY $08 : PHY
|
LDY.b Scrap04 : PHY : LDY.b Scrap06 : PHY : LDY.b Scrap08 : PHY
|
||||||
LDY $0A : PHY : LDY $0C : PHY : LDY $0E : PHY
|
LDY.b Scrap0A : PHY : LDY.b Scrap0C : PHY : LDY.b Scrap0E : PHY
|
||||||
|
|
||||||
AND.w #$FFF8 : TAY
|
AND.w #$FFF8 : TAY
|
||||||
LDA [$00], Y : STA.l !CryptoBuffer : INY #2
|
LDA.b [$00], Y : STA.l CryptoBuffer : INY #2
|
||||||
LDA [$00], Y : STA.l !CryptoBuffer+2 : INY #2
|
LDA.b [$00], Y : STA.l CryptoBuffer+2 : INY #2
|
||||||
LDA [$00], Y : STA.l !CryptoBuffer+4 : INY #2
|
LDA.b [$00], Y : STA.l CryptoBuffer+4 : INY #2
|
||||||
LDA [$00], Y : STA.l !CryptoBuffer+6
|
LDA.b [$00], Y : STA.l CryptoBuffer+6
|
||||||
|
|
||||||
LDA.w #$0002 : STA $04 ;set block size
|
LDA.w #$0002 : STA.b Scrap04 ;set block size
|
||||||
|
|
||||||
JSL.l XXTEA_Decode
|
JSL.l XXTEA_Decode
|
||||||
|
|
||||||
PLA : STA $0E : PLA : STA $0C : PLA : STA $0A
|
PLA : STA.b Scrap0E : PLA : STA.b Scrap0C : PLA : STA.b Scrap0A
|
||||||
PLA : STA $08 : PLA : STA $06 : PLA : STA $04
|
PLA : STA.b Scrap08 : PLA : STA.b Scrap06 : PLA : STA.b Scrap04
|
||||||
PLA : AND.w #$0007 : TAX
|
PLA : AND.w #$0007 : TAX
|
||||||
LDA.l !CryptoBuffer, X
|
LDA.l CryptoBuffer, X
|
||||||
PHA
|
PHA
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
STA.l !CryptoBuffer
|
STA.l CryptoBuffer
|
||||||
STA.l !CryptoBuffer+2
|
STA.l CryptoBuffer+2
|
||||||
STA.l !CryptoBuffer+4
|
STA.l CryptoBuffer+4
|
||||||
STA.l !CryptoBuffer+6
|
STA.l CryptoBuffer+6
|
||||||
PLA
|
PLA
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
ChestData = $01E96C
|
||||||
!ChestData = "$01E96C"
|
ChestDataPayload = $01EABC ; ChestData+$0150
|
||||||
!ChestData_Payload = "$1EABC" ; !ChestData+$0150
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetChestData:
|
GetChestData:
|
||||||
LDA.l IsEncrypted : BNE .encrypted
|
LDA.l IsEncrypted : BNE .encrypted
|
||||||
INC $0E : LDX.w #$FFFD ; what we wrote over
|
INC.b Scrap0E : LDX.w #$FFFD ; what we wrote over
|
||||||
JML.l Dungeon_OpenKeyedObject_nextChest
|
JML.l Dungeon_OpenKeyedObject_nextChest
|
||||||
|
|
||||||
.encrypted
|
.encrypted
|
||||||
INC $0E : LDX.w #$FFFE
|
INC.b Scrap0E : LDX.w #$FFFE
|
||||||
|
|
||||||
.nextChest
|
.nextChest
|
||||||
|
|
||||||
INX #2 : CPX.w #$0150 : BEQ .couldntFindChest
|
INX #2 : CPX.w #$0150 : BEQ .couldntFindChest
|
||||||
LDA !ChestData, X : AND.w #$7FFF : CMP $A0 : BNE .nextChest
|
LDA.l ChestData, X : AND.w #$7FFF : CMP.b $A0 : BNE .nextChest
|
||||||
|
|
||||||
DEC $0E : BNE .nextChest
|
DEC.b Scrap0E : BNE .nextChest
|
||||||
|
|
||||||
LDA $00 : PHA : LDA $02 : PHA
|
LDA.b Scrap00 : PHA : LDA.b Scrap02 : PHA
|
||||||
|
|
||||||
LDA.w #!ChestData_Payload : STA $00
|
LDA.w #ChestDataPayload : STA.b Scrap00
|
||||||
LDA.w #!ChestData_Payload>>16 : STA $02
|
LDA.w #ChestDataPayload>>16 : STA.b Scrap02
|
||||||
|
|
||||||
TXA : LSR
|
TXA : LSR
|
||||||
JSL RetrieveValueFromEncryptedTable
|
JSL RetrieveValueFromEncryptedTable
|
||||||
STA $0C
|
STA.b Scrap0C
|
||||||
|
|
||||||
PLA : STA $02 : PLA : STA $00
|
PLA : STA.b Scrap02 : PLA : STA.b Scrap00
|
||||||
|
|
||||||
LDA !ChestData, X : ASL A : BCC .smallChest
|
LDA.l ChestData, X : ASL A : BCC .smallChest
|
||||||
|
|
||||||
JML.l Dungeon_OpenKeyedObject_bigChest ;(bank01.asm line #13783)
|
JML.l Dungeon_OpenKeyedObject_bigChest ;(bank01.asm line #13783)
|
||||||
|
|
||||||
|
|||||||
270
dialog.asm
270
dialog.asm
@@ -2,200 +2,139 @@
|
|||||||
; Dialog Pointer Override
|
; Dialog Pointer Override
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogOverride:
|
DialogOverride:
|
||||||
LDA $7F5035 : BEQ .skip
|
LDA.l AltTextFlag : BEQ .skip
|
||||||
LDA $7F5700, X ; use alternate buffer
|
LDA.l DialogBuffer, X ; use alternate buffer
|
||||||
RTL
|
RTL
|
||||||
.skip
|
.skip
|
||||||
LDA $7F1200, X
|
LDA.l $7F1200, X
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; $7F5035 - Alternate Text Pointer Flag ; 0=Disable
|
|
||||||
; $7F5036 - Padding Byte (Must be Zero)
|
|
||||||
; $7F5700 - $7F57FF - Dialog Buffer
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
ResetDialogPointer:
|
ResetDialogPointer:
|
||||||
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
STZ.w $1CF0 : STZ.w $1CF1 ; reset decompression buffer
|
||||||
LDA.b #$00 : STA $7F5035 ; zero out the alternate flag
|
LDA.b #$00 : STA.l AltTextFlag ; zero out the alternate flag
|
||||||
LDA.b #$1C : STA $1CE9 ; thing we wrote over
|
LDA.b #$1C : STA.w $1CE9 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;macro LoadDialog(index,table)
|
|
||||||
; PHA : PHX : PHY
|
|
||||||
; PHB : PHK : PLB
|
|
||||||
; LDA $00 : PHA
|
|
||||||
; LDA $01 : PHA
|
|
||||||
; LDA $02 : PHA
|
|
||||||
; LDA.b #$01 : STA $7F5035 ; set flag
|
|
||||||
;
|
|
||||||
; LDA <index> : ASL : !ADD.l <index> : TAX ; get quote offset *3, move to X
|
|
||||||
; LDA <table>, X : STA $00 ; write pointer to direct page
|
|
||||||
; LDA <table>+1, X : STA $01
|
|
||||||
; LDA <table>+2, X : STA $02
|
|
||||||
;
|
|
||||||
; LDX.b #$00 : LDY.b #$00
|
|
||||||
; -
|
|
||||||
; LDA [$00], Y ; load the next character from the pointer
|
|
||||||
; STA $7F5700, X ; write to the buffer
|
|
||||||
; INX : INY
|
|
||||||
; CMP.b #$7F : BNE -
|
|
||||||
; PLA : STA $02
|
|
||||||
; PLA : STA $01
|
|
||||||
; PLA : STA $00
|
|
||||||
; PLB
|
|
||||||
; PLY : PLX : PLA
|
|
||||||
;endmacro
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;macro LoadDialogAddress(address)
|
|
||||||
; PHA : PHX : PHY
|
|
||||||
; PHP
|
|
||||||
; PHB : PHK : PLB
|
|
||||||
; SEP #$30 ; set 8-bit accumulator and index registers
|
|
||||||
; LDA $00 : PHA
|
|
||||||
; LDA $01 : PHA
|
|
||||||
; LDA $02 : PHA
|
|
||||||
; LDA.b #$01 : STA $7F5035 ; set flag
|
|
||||||
;
|
|
||||||
; LDA.b #<address> : STA $00 ; write pointer to direct page
|
|
||||||
; LDA.b #<address>>>8 : STA $01
|
|
||||||
; LDA.b #<address>>>16 : STA $02
|
|
||||||
;
|
|
||||||
; LDX.b #$00 : LDY.b #$00
|
|
||||||
; -
|
|
||||||
; LDA [$00], Y ; load the next character from the pointer
|
|
||||||
; STA $7F5700, X ; write to the buffer
|
|
||||||
; INX : INY
|
|
||||||
; CMP.b #$7F : BNE -
|
|
||||||
; PLA : STA $02
|
|
||||||
; PLA : STA $01
|
|
||||||
; PLA : STA $00
|
|
||||||
; PLB
|
|
||||||
; PLP
|
|
||||||
; PLY : PLX : PLA
|
|
||||||
;endmacro
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!OFFSET_POINTER = "$7F5094"
|
|
||||||
!OFFSET_RETURN = "$7F5096"
|
|
||||||
!DIALOG_BUFFER = "$7F5700"
|
|
||||||
macro LoadDialogAddress(address)
|
macro LoadDialogAddress(address)
|
||||||
PHA : PHX : PHY
|
PHA : PHX : PHY
|
||||||
PHP
|
PHP
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
REP #$10 ; set 16-bit index registers
|
REP #$10 ; set 16-bit index registers
|
||||||
PEI ($00)
|
PEI.b ($00)
|
||||||
LDA $02 : PHA
|
LDA.b Scrap02 : PHA
|
||||||
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
STZ.w $1CF0 : STZ.w $1CF1 ; reset decompression buffer
|
||||||
LDA.b #$01 : STA $7F5035 ; set flag
|
LDA.b #$01 : STA.l AltTextFlag ; set flag
|
||||||
%CopyDialog(<address>)
|
%CopyDialog(<address>)
|
||||||
PLA : STA $02
|
PLA : STA.b Scrap02
|
||||||
REP #$20
|
REP #$20
|
||||||
PLA : STA $00
|
PLA : STA.b Scrap00
|
||||||
PLB
|
PLB
|
||||||
PLP
|
PLP
|
||||||
PLY : PLX : PLA
|
PLY : PLX : PLA
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro CopyDialog(address)
|
macro CopyDialog(address)
|
||||||
LDA.b #<address> : STA $00 ; write pointer to direct page
|
LDA.b #<address> : STA.b Scrap00 ; write pointer to direct page
|
||||||
LDA.b #<address>>>8 : STA $01
|
LDA.b #<address>>>8 : STA.b Scrap01
|
||||||
LDA.b #<address>>>16 : STA $02
|
LDA.b #<address>>>16 : STA.b Scrap02
|
||||||
%CopyDialogIndirect()
|
%CopyDialogIndirect()
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro CopyDialogIndirect()
|
macro CopyDialogIndirect()
|
||||||
REP #$20 : LDA !OFFSET_POINTER : TAX : LDY.w #$0000 : SEP #$20 ; copy 2-byte offset pointer to X and set Y to 0
|
REP #$20 : LDA.l DialogOffsetPointer : TAX : LDY.w #$0000 : SEP #$20 ; copy 2-byte offset pointer to X and set Y to 0
|
||||||
?loop:
|
?loop:
|
||||||
LDA [$00], Y ; load the next character from the pointer
|
LDA.b [$00], Y ; load the next character from the pointer
|
||||||
STA !DIALOG_BUFFER, X ; write to the buffer
|
STA.l DialogBuffer, X ; write to the buffer
|
||||||
INX : INY
|
INX : INY
|
||||||
CMP.b #$7F : BNE ?loop
|
CMP.b #$7F : BNE ?loop
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
TXA : INC : STA !OFFSET_RETURN ; copy out X into
|
TXA : INC : STA.l DialogReturnPointer ; copy out X into
|
||||||
LDA.w #$0000 : STA !OFFSET_POINTER
|
LDA.w #$0000 : STA.l DialogOffsetPointer
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadDialogAddressIndirect:
|
LoadDialogAddressIndirect:
|
||||||
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
STZ.w $1CF0 : STZ.w $1CF1 ; reset decompression buffer
|
||||||
LDA.b #$01 : STA $7F5035 ; set flag
|
LDA.b #$01 : STA.l AltTextFlag ; set flag
|
||||||
%CopyDialogIndirect()
|
%CopyDialogIndirect()
|
||||||
;%LoadDialogAddress(UncleText)
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!ITEM_TEMPORARY = "$7F5040"
|
|
||||||
FreeDungeonItemNotice:
|
FreeDungeonItemNotice:
|
||||||
STA !ITEM_TEMPORARY
|
STA.w ScratchBufferV
|
||||||
|
|
||||||
PHA : PHX : PHY
|
PHA : PHX : PHY
|
||||||
PHP
|
PHP
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
REP #$10 ; set 16-bit index registers
|
REP #$10 ; set 16-bit index registers
|
||||||
PEI ($00)
|
PEI.b (Scrap00)
|
||||||
LDA $02 : PHA
|
LDA.b Scrap02 : PHA
|
||||||
|
LDA.w ScratchBufferNV : PHA
|
||||||
|
LDA.w ScratchBufferNV+1 : PHA
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
|
|
||||||
LDA.l FreeItemText : BNE + : JMP .skip : +
|
LDA.l FreeItemText : BNE + : JMP .skip : +
|
||||||
|
|
||||||
LDA #$00 : STA $7F5010 ; initialize scratch
|
LDA.b #$00 : STA.w ScratchBufferNV ; initialize scratch
|
||||||
LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for general small key
|
LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for general small key
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$24 : BNE + ; general small key
|
LDA.w ScratchBufferV : CMP.b #$24 : BNE + ; general small key
|
||||||
%CopyDialog(Notice_SmallKeyOf)
|
%CopyDialog(Notice_SmallKeyOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
JMP .done
|
JMP .done
|
||||||
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for general compass
|
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for general compass
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$25 : BNE + ; general compass
|
LDA.w ScratchBufferV : CMP.b #$25 : BNE + ; general compass
|
||||||
%CopyDialog(Notice_CompassOf)
|
%CopyDialog(Notice_CompassOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
JMP .done
|
JMP .done
|
||||||
+ : LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for general map
|
+ : LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for general map
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$33 : BNE + ; general map
|
LDA.w ScratchBufferV : CMP.b #$33 : BNE + ; general map
|
||||||
%CopyDialog(Notice_MapOf)
|
%CopyDialog(Notice_MapOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
JMP .done
|
JMP .done
|
||||||
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for general big key
|
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for general big key
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$32 : BNE + ; general big key
|
LDA.w ScratchBufferV : CMP.b #$32 : BNE + ; general big key
|
||||||
%CopyDialog(Notice_BigKeyOf)
|
%CopyDialog(Notice_BigKeyOf)
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||||
%CopyDialog(Notice_Self)
|
%CopyDialog(Notice_Self)
|
||||||
JMP .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for dungeon map
|
LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for dungeon map
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 ; looking at high bits only
|
LDA.w ScratchBufferV : AND.b #$F0 ; looking at high bits only
|
||||||
CMP.b #$70 : BNE + ; map of...
|
CMP.b #$70 : BNE + ; map of...
|
||||||
%CopyDialog(Notice_MapOf)
|
%CopyDialog(Notice_MapOf)
|
||||||
JMP .dungeon
|
JMP .dungeon
|
||||||
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for dungeon compass
|
+ : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for dungeon compass
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of...
|
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of...
|
||||||
%CopyDialog(Notice_CompassOf)
|
%CopyDialog(Notice_CompassOf)
|
||||||
JMP .dungeon
|
JMP .dungeon
|
||||||
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key
|
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
|
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
|
||||||
%CopyDialog(Notice_BigKeyOf)
|
%CopyDialog(Notice_BigKeyOf)
|
||||||
BRA .dungeon
|
BRA .dungeon
|
||||||
+ : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key
|
+ : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key
|
||||||
LDA !ITEM_TEMPORARY : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
|
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
|
||||||
LDA !ITEM_TEMPORARY : CMP.b #$AF : BNE ++ : JMP .skip : ++
|
LDA.w ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++
|
||||||
%CopyDialog(Notice_SmallKeyOf)
|
%CopyDialog(Notice_SmallKeyOf)
|
||||||
PLA : AND.b #$0F : STA $7F5020 : LDA.b #$0F : !SUB $7F5020 : PHA
|
PLA : AND.b #$0F : STA.w ScratchBufferV : LDA.b #$0F : !SUB.w ScratchBufferV : PHA
|
||||||
LDA #$01 : STA $7F5010 ; set up a flip for small keys
|
LDA.b #$01 : STA.w ScratchBufferNV ; set up a flip for small keys
|
||||||
BRA .dungeon
|
BRA .dungeon
|
||||||
+
|
+
|
||||||
JMP .skip ; it's not something we are going to give a notice for
|
JMP .skip ; it's not something we are going to give a notice for
|
||||||
|
|
||||||
.dungeon
|
.dungeon
|
||||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||||
LDA !ITEM_TEMPORARY
|
LDA.w ScratchBufferV
|
||||||
AND.b #$0F ; looking at low bits only
|
AND.b #$0F ; looking at low bits only
|
||||||
STA $7F5011
|
STA.w ScratchBufferNV+1
|
||||||
LDA $7F5010 : BEQ +
|
LDA.w ScratchBufferNV : BEQ +
|
||||||
LDA $7F5010
|
LDA.w ScratchBufferNV
|
||||||
LDA #$0F : !SUB $7F5011 : STA $7F5011 ; flip the values for small keys
|
LDA.b #$0F : !SUB.w ScratchBufferNV+1 : STA.w ScratchBufferNV+1 ; flip the values for small keys
|
||||||
+
|
+
|
||||||
LDA $7F5011
|
LDA.w ScratchBufferNV+1
|
||||||
CMP.b #$00 : BNE + ; ...light world
|
CMP.b #$00 : BNE + ; ...light world
|
||||||
%CopyDialog(Notice_LightWorld) : JMP .done
|
%CopyDialog(Notice_LightWorld) : JMP .done
|
||||||
+ : CMP.b #$01 : BNE + ; ...dark world
|
+ : CMP.b #$01 : BNE + ; ...dark world
|
||||||
@@ -231,19 +170,20 @@ FreeDungeonItemNotice:
|
|||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
|
|
||||||
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
STZ.w $1CF0 : STZ.w $1CF1 ; reset decompression buffer
|
||||||
LDA.b #$01 : STA $7F5035 ; set alternate dialog flag
|
LDA.b #$01 : STA.l AltTextFlag ; set alternate dialog flag
|
||||||
STA $7F509F
|
STA.l $7F509F
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
.skip
|
.skip
|
||||||
PLA : STA $02
|
PLA : STA.w ScratchBufferNV+1
|
||||||
REP #$20
|
PLA : STA.w ScratchBufferNV
|
||||||
PLA : STA $00
|
PLA : STA.b Scrap02
|
||||||
PLB
|
REP #$20
|
||||||
PLP
|
PLA : STA.b Scrap00
|
||||||
PLY : PLX : PLA
|
PLB
|
||||||
;JSL.l Main_ShowTextMessage_Alt ; .skip can be here so long as this line remains commented out
|
PLP
|
||||||
|
PLY : PLX : PLA
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -254,7 +194,7 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogItemReceive:
|
DialogItemReceive:
|
||||||
BCS .nomessage ; if doubling the item value overflowed it must be a rando item
|
BCS .nomessage ; if doubling the item value overflowed it must be a rando item
|
||||||
CPY #$98 : BCC ++ ;if the item is $4C or greater it must be a rando item
|
CPY.b #$98 : BCC ++ ;if the item is $4C or greater it must be a rando item
|
||||||
.nomessage
|
.nomessage
|
||||||
LDA.w #$FFFF
|
LDA.w #$FFFF
|
||||||
|
|
||||||
@@ -267,11 +207,11 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogFairyThrow:
|
DialogFairyThrow:
|
||||||
LDA.l Restrict_Ponds : BEQ .normal
|
LDA.l Restrict_Ponds : BEQ .normal
|
||||||
LDA BottleContentsOne
|
LDA.l BottleContentsOne
|
||||||
ORA BottleContentsTwo : ORA BottleContentsThree : ORA BottleContentsFour : BNE .normal
|
ORA.l BottleContentsTwo : ORA.l BottleContentsThree : ORA.l BottleContentsFour : BNE .normal
|
||||||
|
|
||||||
.noInventory
|
.noInventory
|
||||||
LDA $0D80, X : !ADD #$08 : STA $0D80, X
|
LDA.w $0D80, X : !ADD #$08 : STA.w $0D80, X
|
||||||
LDA.b #$51
|
LDA.b #$51
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
RTL
|
RTL
|
||||||
@@ -286,7 +226,7 @@ DialogGanon1:
|
|||||||
LDA.w #$018C
|
LDA.w #$018C
|
||||||
BCC +
|
BCC +
|
||||||
LDA.w #$016D
|
LDA.w #$016D
|
||||||
+ STA $1CF0
|
+ STA.w $1CF0
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
RTL
|
RTL
|
||||||
@@ -322,22 +262,22 @@ DialogGanon2:
|
|||||||
+
|
+
|
||||||
LDA.w #$016E
|
LDA.w #$016E
|
||||||
++
|
++
|
||||||
STA $1CF0
|
STA.w $1CF0
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogEtherTablet:
|
DialogEtherTablet:
|
||||||
PHA
|
PHA
|
||||||
LDA $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
LDA.w $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
||||||
-
|
-
|
||||||
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
+
|
+
|
||||||
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
||||||
LDA.l AllowHammerTablets : BEQ ++
|
LDA.l AllowHammerTablets : BEQ ++
|
||||||
LDA HammerEquipment : BEQ .yesText : BRA .noText
|
LDA.l HammerEquipment : BEQ .yesText : BRA .noText
|
||||||
++
|
++
|
||||||
LDA SwordEquipment : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : BCS .noText
|
LDA.l SwordEquipment : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : BCS .noText
|
||||||
;++
|
;++
|
||||||
.yesText
|
.yesText
|
||||||
PLA
|
PLA
|
||||||
@@ -351,15 +291,15 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogBombosTablet:
|
DialogBombosTablet:
|
||||||
PHA
|
PHA
|
||||||
LDA $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
LDA.w $0202 : CMP.b #$0F : BEQ + ; Show normal text if book is not equipped
|
||||||
-
|
-
|
||||||
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
+
|
+
|
||||||
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
||||||
LDA.l AllowHammerTablets : BEQ ++
|
LDA.l AllowHammerTablets : BEQ ++
|
||||||
LDA HammerEquipment : BEQ .yesText : BRA .noText
|
LDA.l HammerEquipment : BEQ .yesText : BRA .noText
|
||||||
++
|
++
|
||||||
LDA SwordEquipment : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
|
LDA.l SwordEquipment : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
|
||||||
;++
|
;++
|
||||||
.yesText
|
.yesText
|
||||||
PLA
|
PLA
|
||||||
@@ -406,47 +346,47 @@ AgahnimAsksAboutPed:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Main_ShowTextMessage_Alt:
|
Main_ShowTextMessage_Alt:
|
||||||
; Are we in text mode? If so then end the routine.
|
; Are we in text mode? If so then end the routine.
|
||||||
LDA $10 : CMP.b #$0E : BEQ .already_in_text_mode
|
LDA.b $10 : CMP.b #$0E : BEQ .already_in_text_mode
|
||||||
Sprite_ShowMessageMinimal_Alt:
|
Sprite_ShowMessageMinimal_Alt:
|
||||||
STZ $11
|
STZ.b $11
|
||||||
|
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
PEI ($00)
|
PEI.b (Scrap00)
|
||||||
LDA.b $02 : PHA
|
LDA.b Scrap02 : PHA
|
||||||
|
|
||||||
LDA.b #$1C : STA.b $02
|
LDA.b #$1C : STA.b Scrap02
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.w $1CF0 : ASL : TAX
|
LDA.w $1CF0 : ASL : TAX
|
||||||
LDA.l $7F71C0, X
|
LDA.l $7F71C0, X
|
||||||
STA.b $00
|
STA.b Scrap00
|
||||||
SEP #$30
|
SEP #$30
|
||||||
|
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
LDA [$00], Y : CMP.b #$FE : BNE +
|
LDA.b [Scrap00], Y : CMP.b #$FE : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$6E : BNE +
|
INY : LDA.b [Scrap00], Y : CMP.b #$6E : BNE +
|
||||||
INY : LDA [$00], Y : : BNE +
|
INY : LDA.b [Scrap00], Y : : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$FE : BNE +
|
INY : LDA.b [Scrap00], Y : CMP.b #$FE : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$6B : BNE +
|
INY : LDA.b [Scrap00], Y : CMP.b #$6B : BNE +
|
||||||
INY : LDA [$00], Y : CMP.b #$04 : BNE +
|
INY : LDA.b [Scrap00], Y : CMP.b #$04 : BNE +
|
||||||
STZ $1CE8
|
STZ.w $1CE8
|
||||||
JMP .end
|
JMP .end
|
||||||
+
|
+
|
||||||
|
|
||||||
STZ $0223 ; Otherwise set it so we are in text mode.
|
STZ.w $0223 ; Otherwise set it so we are in text mode.
|
||||||
STZ $1CD8 ; Initialize the step in the submodule
|
STZ.w $1CD8 ; Initialize the step in the submodule
|
||||||
|
|
||||||
; Go to text display mode (as opposed to maps, etc)
|
; Go to text display mode (as opposed to maps, etc)
|
||||||
LDA.b #$02 : STA $11
|
LDA.b #$02 : STA.b $11
|
||||||
|
|
||||||
; Store the current module in the temporary location.
|
; Store the current module in the temporary location.
|
||||||
LDA $10 : STA $010C
|
LDA.b $10 : STA.w $010C
|
||||||
|
|
||||||
; Switch the main module ($10) to text mode.
|
; Switch the main module ($10) to text mode.
|
||||||
LDA.b #$0E : STA $10
|
LDA.b #$0E : STA.b $10
|
||||||
.end
|
.end
|
||||||
PLA : STA.b $02
|
PLA : STA.b Scrap02
|
||||||
PLA : STA.b $01
|
PLA : STA.b Scrap01
|
||||||
PLA : STA.b $00
|
PLA : STA.b Scrap00
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
|
|
||||||
Main_ShowTextMessage_Alt_already_in_text_mode:
|
Main_ShowTextMessage_Alt_already_in_text_mode:
|
||||||
@@ -458,15 +398,15 @@ CalculateSignIndex:
|
|||||||
; And we do this in a way that will likely give the right value even
|
; And we do this in a way that will likely give the right value even
|
||||||
; with major glitches.
|
; with major glitches.
|
||||||
|
|
||||||
LDA $8A : ASL A : TAY ;what we wrote over
|
LDA.b $8A : ASL A : TAY ;what we wrote over
|
||||||
|
|
||||||
LDA $0712 : BEQ .done ; If a small map, we can skip these calculations.
|
LDA.w $0712 : BEQ .done ; If a small map, we can skip these calculations.
|
||||||
|
|
||||||
LDA $21 : AND.w #$0002 : ASL #2 : EOR $8A : AND.w #$0008 : BEQ +
|
LDA.b $21 : AND.w #$0002 : ASL #2 : EOR $8A : AND.w #$0008 : BEQ +
|
||||||
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA $23 : AND.w #$0002 : LSR : EOR $8A : AND.w #$0001 : BEQ +
|
LDA.b $23 : AND.w #$0002 : LSR : EOR.b $8A : AND.w #$0001 : BEQ +
|
||||||
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
||||||
|
|||||||
@@ -12,13 +12,6 @@ DoDungeonMapBossIcon:
|
|||||||
LDX.w $040C
|
LDX.w $040C
|
||||||
BMI .cave
|
BMI .cave
|
||||||
|
|
||||||
; LDA.l DungeonMapIcons
|
|
||||||
; AND.b #$01
|
|
||||||
; BNE ++
|
|
||||||
;
|
|
||||||
; INC ; so it's not equal to $01
|
|
||||||
; BRA .cave
|
|
||||||
|
|
||||||
; get dungeon boss room
|
; get dungeon boss room
|
||||||
++ REP #$30
|
++ REP #$30
|
||||||
LDA.l $8AE817,X
|
LDA.l $8AE817,X
|
||||||
@@ -57,7 +50,7 @@ DoDungeonMapBossIcon:
|
|||||||
|
|
||||||
.match
|
.match
|
||||||
LDA.b #$80
|
LDA.b #$80
|
||||||
STA.w $2121
|
STA.w CGADD
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
@@ -74,14 +67,14 @@ DoDungeonMapBossIcon:
|
|||||||
ASL ; x128 for graphics
|
ASL ; x128 for graphics
|
||||||
ASL
|
ASL
|
||||||
ADC.w #BossMapIconGFX
|
ADC.w #BossMapIconGFX
|
||||||
STA.w $4312
|
STA.w A1T1L
|
||||||
|
|
||||||
PHY
|
PHY
|
||||||
LDY.w #32
|
LDY.w #32
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
-- LDA.l .boss_palettes,X
|
-- LDA.l .boss_palettes,X
|
||||||
STA.w $2122
|
STA.w CGDATA
|
||||||
INX
|
INX
|
||||||
DEY
|
DEY
|
||||||
BNE --
|
BNE --
|
||||||
@@ -94,24 +87,24 @@ DoDungeonMapBossIcon:
|
|||||||
SEP #$10
|
SEP #$10
|
||||||
|
|
||||||
LDA.w #$1801
|
LDA.w #$1801
|
||||||
STA.w $4310
|
STA.w DMAP1
|
||||||
|
|
||||||
LDX.b #BossMapIconGFX>>16
|
LDX.b #BossMapIconGFX>>16
|
||||||
STX.w $4314
|
STX.w A1B1
|
||||||
|
|
||||||
LDA.w #$A060>>1
|
LDA.w #$A060>>1
|
||||||
STA.w $2116
|
STA.w VMADDL
|
||||||
LDA.w #$0040
|
LDA.w #$0040
|
||||||
STA.w $4315
|
STA.w DAS1L
|
||||||
|
|
||||||
LDX.b #$02
|
LDX.b #$02
|
||||||
STX.w $420B
|
STX.w MDMAEN
|
||||||
|
|
||||||
STA.w $4315
|
STA.w DAS1L
|
||||||
LDA.w #$A260>>1
|
LDA.w #$A260>>1
|
||||||
STA.w $2116
|
STA.w VMADDL
|
||||||
|
|
||||||
STX.w $420B
|
STX.w MDMAEN
|
||||||
|
|
||||||
; done
|
; done
|
||||||
SEP #$30
|
SEP #$30
|
||||||
|
|||||||
14
elder.asm
14
elder.asm
@@ -1,11 +1,11 @@
|
|||||||
NewElderCode:
|
NewElderCode:
|
||||||
{
|
{
|
||||||
LDA $8A : CMP #$1B : BEQ .newCodeContinue
|
LDA.b $8A : CMP.b #$1B : BEQ .newCodeContinue
|
||||||
;Restore Jump we can keep the RTL so JML
|
;Restore Jump we can keep the RTL so JML
|
||||||
JML $05F0CD
|
JML $05F0CD
|
||||||
.newCodeContinue
|
.newCodeContinue
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
LDA.b #$07 : STA $0F50, X ;Palette
|
LDA.b #$07 : STA.w $0F50, X ;Palette
|
||||||
JSR Elder_Draw
|
JSR Elder_Draw
|
||||||
JSL Sprite_PlayerCantPassThrough
|
JSL Sprite_PlayerCantPassThrough
|
||||||
JSR Elder_Code
|
JSR Elder_Code
|
||||||
@@ -17,12 +17,12 @@ RTL
|
|||||||
Elder_Draw:
|
Elder_Draw:
|
||||||
{
|
{
|
||||||
|
|
||||||
LDA.b #$02 : STA $06 : STZ $07 ;Number of Tiles
|
LDA.b #$02 : STA.b Scrap06 : STZ.b Scrap07 ;Number of Tiles
|
||||||
|
|
||||||
LDA $0DC0, X : ASL #04
|
LDA.w $0DC0, X : ASL #04
|
||||||
|
|
||||||
ADC.b #.animation_states : STA $08
|
ADC.b #.animation_states : STA.b Scrap08
|
||||||
LDA.b #.animation_states>>8 : ADC.b #$00 : STA $09
|
LDA.b #.animation_states>>8 : ADC.b #$00 : STA.b Scrap09
|
||||||
|
|
||||||
JSL Sprite_DrawMultiple_player_deferred
|
JSL Sprite_DrawMultiple_player_deferred
|
||||||
JSL Sprite_DrawShadowLong
|
JSL Sprite_DrawShadowLong
|
||||||
@@ -46,7 +46,7 @@ RTL
|
|||||||
LDA.l TurnInGoalItems : AND.w #$00FF : BNE +
|
LDA.l TurnInGoalItems : AND.w #$00FF : BNE +
|
||||||
.despawn
|
.despawn
|
||||||
SEP #$20
|
SEP #$20
|
||||||
STZ $0DD0, X ; despawn self
|
STZ.w $0DD0, X ; despawn self
|
||||||
RTS
|
RTS
|
||||||
+
|
+
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ JML.l Overworld_Entrance_BRANCH_RHO
|
|||||||
AllowStartFromSingleEntranceCave:
|
AllowStartFromSingleEntranceCave:
|
||||||
; 16 Bit A, 16 bit XY
|
; 16 Bit A, 16 bit XY
|
||||||
; do not need to preserve A or X or Y
|
; do not need to preserve A or X or Y
|
||||||
LDA StartingEntrance : AND.w #$00FF ; What we wrote over
|
LDA.l StartingEntrance : AND.w #$00FF ; What we wrote over
|
||||||
PHA
|
PHA
|
||||||
TAX
|
TAX
|
||||||
LDA.l StartingAreaExitOffset, X
|
LDA.l StartingAreaExitOffset, X
|
||||||
@@ -88,29 +88,29 @@ AllowStartFromSingleEntranceCave:
|
|||||||
+
|
+
|
||||||
|
|
||||||
DEC
|
DEC
|
||||||
STA $00
|
STA.b Scrap00
|
||||||
ASL #2 : !ADD $00 : ASL #2 ; mult by 20
|
ASL #2 : !ADD Scrap00 : ASL #2 ; mult by 20
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
LDA #$0016 : STA $7EC142 ; Cache the main screen designation
|
LDA.w #$0016 : STA $7EC142 ; Cache the main screen designation
|
||||||
LDA.l StartingAreaExitTable+$05, X : STA $7EC144 ; Cache BG1 V scroll
|
LDA.l StartingAreaExitTable+$05, X : STA.l $7EC144 ; Cache BG1 V scroll
|
||||||
LDA.l StartingAreaExitTable+$07, X : STA $7EC146 ; Cache BG1 H scroll
|
LDA.l StartingAreaExitTable+$07, X : STA.l $7EC146 ; Cache BG1 H scroll
|
||||||
LDA.l StartingAreaExitTable+$09, X : !ADD.w #$0010 : STA $7EC148 ; Cache Link's Y coordinate
|
LDA.l StartingAreaExitTable+$09, X : !ADD.w #$0010 : STA $7EC148 ; Cache Link's Y coordinate
|
||||||
LDA.l StartingAreaExitTable+$0B, X : STA $7EC14A ; Cache Link's X coordinate
|
LDA.l StartingAreaExitTable+$0B, X : STA.l $7EC14A ; Cache Link's X coordinate
|
||||||
LDA.l StartingAreaExitTable+$0D, X : STA $7EC150 ; Cache Camera Y coord lower bound.
|
LDA.l StartingAreaExitTable+$0D, X : STA.l $7EC150 ; Cache Camera Y coord lower bound.
|
||||||
LDA.l StartingAreaExitTable+$0F, X : STA $7EC152 ; Cache Camera X coord lower bound.
|
LDA.l StartingAreaExitTable+$0F, X : STA.l $7EC152 ; Cache Camera X coord lower bound.
|
||||||
LDA.l StartingAreaExitTable+$03, X : STA $7EC14E ; Cache Link VRAM Location
|
LDA.l StartingAreaExitTable+$03, X : STA.l $7EC14E ; Cache Link VRAM Location
|
||||||
|
|
||||||
; Handle the 2 "unknown" bytes, which control what area of the backgound
|
; Handle the 2 "unknown" bytes, which control what area of the backgound
|
||||||
; relative to the camera? gets loaded with new tile data as the player moves around
|
; relative to the camera? gets loaded with new tile data as the player moves around
|
||||||
; (because some overworld areas like Kak are too big for a single VRAM tilemap)
|
; (because some overworld areas like Kak are too big for a single VRAM tilemap)
|
||||||
|
|
||||||
LDA.l StartingAreaExitTable+$11, X : AND.w #$00FF
|
LDA.l StartingAreaExitTable+$11, X : AND.w #$00FF
|
||||||
BIT.w #$0080 : BEQ + : ORA #$FF00 : + ; Sign extend
|
BIT.w #$0080 : BEQ + : ORA.w #$FF00 : + ; Sign extend
|
||||||
STA.l $7EC16A
|
STA.l $7EC16A
|
||||||
|
|
||||||
LDA.l StartingAreaExitTable+$12, X : AND.w #$00FF
|
LDA.l StartingAreaExitTable+$12, X : AND.w #$00FF
|
||||||
BIT.w #$0080 : BEQ + : ORA #$FF00 : + ; Sign extend
|
BIT.w #$0080 : BEQ + : ORA.w #$FF00 : + ; Sign extend
|
||||||
STA.l $7EC16E
|
STA.l $7EC16E
|
||||||
|
|
||||||
LDA.w #$0000 : !SUB.l $7EC16A : STA $7EC16C
|
LDA.w #$0000 : !SUB.l $7EC16A : STA $7EC16C
|
||||||
@@ -167,7 +167,7 @@ RTL
|
|||||||
CheckHole:
|
CheckHole:
|
||||||
LDX.w #$0024
|
LDX.w #$0024
|
||||||
.nextHoleClassic
|
.nextHoleClassic
|
||||||
LDA.b $00 : CMP.l $1BB800, X
|
LDA.b Scrap00 : CMP.l $1BB800, X
|
||||||
BNE .wrongMap16Classic
|
BNE .wrongMap16Classic
|
||||||
LDA.w $040A : CMP.l $1BB826, X
|
LDA.w $040A : CMP.l $1BB826, X
|
||||||
BEQ .matchedHoleClassic
|
BEQ .matchedHoleClassic
|
||||||
@@ -176,7 +176,7 @@ CheckHole:
|
|||||||
|
|
||||||
LDX.w #$001E
|
LDX.w #$001E
|
||||||
.nextHoleExtra
|
.nextHoleExtra
|
||||||
LDA.b $00 : CMP.l ExtraHole_Map16, X
|
LDA.b Scrap00 : CMP.l ExtraHole_Map16, X
|
||||||
BNE .wrongMap16Extra
|
BNE .wrongMap16Extra
|
||||||
LDA.w $040A : CMP.l ExtraHole_Area, X
|
LDA.w $040A : CMP.l ExtraHole_Area, X
|
||||||
BEQ .matchedHoleExtra
|
BEQ .matchedHoleExtra
|
||||||
@@ -193,7 +193,7 @@ CheckHole:
|
|||||||
JML Overworld_Hole_End
|
JML Overworld_Hole_End
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PreventEnterOnBonk:
|
PreventEnterOnBonk:
|
||||||
STA $00 ; part of what we wrote over
|
STA.b Scrap00 ; part of what we wrote over
|
||||||
LDA.l InvertedMode : AND.w #$00FF : BEQ .done
|
LDA.l InvertedMode : AND.w #$00FF : BEQ .done
|
||||||
LDA.l $5D : AND.w #$00FF : CMP.w #$0014 : BNE .done ;in mirror mode?
|
LDA.l $5D : AND.w #$00FF : CMP.w #$0014 : BNE .done ;in mirror mode?
|
||||||
LDA.b $8A : AND.w #$0040 : CMP $7B : BEQ .done ; Are we bonking, or doing the superbunny glitch?
|
LDA.b $8A : AND.w #$0040 : CMP $7B : BEQ .done ; Are we bonking, or doing the superbunny glitch?
|
||||||
|
|||||||
69
events.asm
69
events.asm
@@ -1,13 +1,6 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
; OnLoadOW
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;OnLoadMap:
|
|
||||||
; LDA OverworldEventDataWRAM+$5B ; thing we wrote over
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
OnPrepFileSelect:
|
OnPrepFileSelect:
|
||||||
LDA $11 : CMP.b #$03 : BNE +
|
LDA.b $11 : CMP.b #$03 : BNE +
|
||||||
LDA.b #$06 : STA $14 ; thing we wrote over
|
LDA.b #$06 : STA.b $14 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
JSL.l LoadAlphabetTilemap
|
JSL.l LoadAlphabetTilemap
|
||||||
@@ -22,7 +15,7 @@ OnDrawHud:
|
|||||||
JML.l ReturnFromOnDrawHud
|
JML.l ReturnFromOnDrawHud
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnDungeonEntrance:
|
OnDungeonEntrance:
|
||||||
STA $7EC172 ; thing we wrote over
|
STA.l $7EC172 ; thing we wrote over
|
||||||
JSL MaybeFlagCompassTotalEntrance
|
JSL MaybeFlagCompassTotalEntrance
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -40,7 +33,7 @@ OnDungeonExit:
|
|||||||
JSL.l SQEGFix
|
JSL.l SQEGFix
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
|
|
||||||
STA $040C : STZ $04AC ; thing we wrote over
|
STA.w $040C : STZ.w $04AC ; thing we wrote over
|
||||||
|
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
JSL.l HUD_RebuildLong
|
JSL.l HUD_RebuildLong
|
||||||
@@ -51,17 +44,17 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnQuit:
|
OnQuit:
|
||||||
JSL.l SQEGFix
|
JSL.l SQEGFix
|
||||||
LDA.b #$00 : STA $7F5035 ; bandaid patch bug with mirroring away from text
|
LDA.b #$00 : STA.l $7F5035 ; bandaid patch bug with mirroring away from text
|
||||||
LDA.b #$10 : STA $1C ; thing we wrote over
|
LDA.b #$10 : STA.b $1C ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnUncleItemGet:
|
OnUncleItemGet:
|
||||||
PHA
|
PHA
|
||||||
|
|
||||||
LDA.l EscapeAssist
|
LDA.l EscapeAssist
|
||||||
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
|
BIT.b #$04 : BEQ + : STA.l InfiniteMagic : +
|
||||||
BIT.b #$02 : BEQ + : STA InfiniteBombs : +
|
BIT.b #$02 : BEQ + : STA.l InfiniteBombs : +
|
||||||
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
BIT.b #$01 : BEQ + : STA.l InfiniteArrows : +
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
JSL.l Link_ReceiveItem
|
JSL.l Link_ReceiveItem
|
||||||
@@ -112,20 +105,19 @@ OnFileCreation:
|
|||||||
|
|
||||||
; Set validity value and do some cleanup. Jump to checksum.
|
; Set validity value and do some cleanup. Jump to checksum.
|
||||||
LDA.w #$55AA : STA.l $7003E1
|
LDA.w #$55AA : STA.l $7003E1
|
||||||
STZ $00
|
STZ.b Scrap00
|
||||||
STZ $01
|
STZ.b Scrap01
|
||||||
LDX.b $00
|
LDX.b Scrap00
|
||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
TYA
|
TYA
|
||||||
|
|
||||||
JML.l InitializeSaveFile_build_checksum
|
JML.l InitializeSaveFile_build_checksum
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
|
||||||
OnFileLoad:
|
OnFileLoad:
|
||||||
REP #$10 ; set 16 bit index registers
|
REP #$10 ; set 16 bit index registers
|
||||||
JSL.l EnableForceBlank ; what we wrote over
|
JSL.l EnableForceBlank ; what we wrote over
|
||||||
|
|
||||||
LDA.b #$07 : STA $210C ; Restore screen 3 to normal tile area
|
LDA.b #$07 : STA.w BG34NBA ; Restore screen 3 to normal tile area
|
||||||
|
|
||||||
LDA.l FileMarker : BNE +
|
LDA.l FileMarker : BNE +
|
||||||
JSL.l OnNewFile
|
JSL.l OnNewFile
|
||||||
@@ -136,8 +128,8 @@ OnFileLoad:
|
|||||||
JSL.l DoWorldFix
|
JSL.l DoWorldFix
|
||||||
+
|
+
|
||||||
JSL.l MasterSwordFollowerClear
|
JSL.l MasterSwordFollowerClear
|
||||||
LDA.b #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
|
LDA.b #$FF : STA.l RNGLockIn ; reset rng item lock-in
|
||||||
LDA.b #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
LDA.b #$00 : STA.l $7F5001 ; mark fake flipper softlock as impossible
|
||||||
LDA.l GenericKeys : BEQ +
|
LDA.l GenericKeys : BEQ +
|
||||||
LDA.l CurrentGenericKeys : STA.l CurrentSmallKeys ; copy generic keys to key counter
|
LDA.l CurrentGenericKeys : STA.l CurrentSmallKeys ; copy generic keys to key counter
|
||||||
+
|
+
|
||||||
@@ -152,7 +144,6 @@ OnFileLoad:
|
|||||||
SEP #$10 ; restore 8 bit index registers
|
SEP #$10 ; restore 8 bit index registers
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
|
||||||
OnNewFile:
|
OnNewFile:
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
; reset some values on new file that are otherwise only reset on hard reset
|
; reset some values on new file that are otherwise only reset on hard reset
|
||||||
@@ -163,15 +154,13 @@ OnNewFile:
|
|||||||
STZ $0CFB ; enemies killed (pull trees)
|
STZ $0CFB ; enemies killed (pull trees)
|
||||||
STZ $0CFC ; times taken damage (pull trees)
|
STZ $0CFC ; times taken damage (pull trees)
|
||||||
STZ $0FC7 : STZ $0FC8 : STZ $0FC9 : STZ $0FCA : STZ $0FCB : STZ $0FCC : STZ $0FCD ; prize packs
|
STZ $0FC7 : STZ $0FC8 : STZ $0FC9 : STZ $0FCA : STZ $0FCB : STZ $0FCC : STZ $0FCD ; prize packs
|
||||||
LDA #$00 : STA $7EC011 ; mosaic
|
LDA #$00 : STA.l $7EC011 ; mosaic
|
||||||
JSL InitRNGPointerTable ; boss RNG
|
JSL InitRNGPointerTable ; boss RNG
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnInitFileSelect:
|
OnInitFileSelect:
|
||||||
; LDA.b #$10 : STA $BC ; init sprite pointer - does nothing unless spriteswap.asm is included
|
LDA.b #$51 : STA.w $0AA2 ;<-- Line missing from JP1.0, needed to ensure "extra" copy of naming screen graphics are loaded.
|
||||||
; JSL.l SpriteSwap_SetSprite
|
|
||||||
LDA.b #$51 : STA $0AA2 ;<-- Line missing from JP1.0, needed to ensure "extra" copy of naming screen graphics are loaded.
|
|
||||||
JSL.l EnableForceBlank
|
JSL.l EnableForceBlank
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -193,7 +182,7 @@ OnLinkDamagedFromPit:
|
|||||||
|
|
||||||
LDA.l AllowAccidentalMajorGlitch
|
LDA.l AllowAccidentalMajorGlitch
|
||||||
BEQ ++
|
BEQ ++
|
||||||
-- LDA.b #$14 : STA $11 ; thing we wrote over
|
-- LDA.b #$14 : STA.b $11 ; thing we wrote over
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -206,32 +195,30 @@ OnLinkDamagedFromPitOutdoors:
|
|||||||
JML.l OHKOTimer ; make sure this is last
|
JML.l OHKOTimer ; make sure this is last
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
|
||||||
OnOWTransition:
|
OnOWTransition:
|
||||||
JSL.l FloodGateReset
|
JSL.l FloodGateReset
|
||||||
JSL.l FlipperFlag
|
JSL.l FlipperFlag
|
||||||
JSL.l StatTransitionCounter
|
JSL.l StatTransitionCounter
|
||||||
PHP
|
PHP
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$FF : STA !RNG_ITEM_LOCK_IN ; clear lock-in
|
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
|
||||||
PLP
|
PLP
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!DARK_DUCK_TEMP = "$7F509C"
|
|
||||||
OnLoadDuckMap:
|
OnLoadDuckMap:
|
||||||
LDA !DARK_DUCK_TEMP
|
LDA.l ScratchBufferV
|
||||||
BNE +
|
BNE +
|
||||||
INC : STA !DARK_DUCK_TEMP
|
INC : STA.l ScratchBufferV
|
||||||
JSL OverworldMap_InitGfx : DEC $0200
|
JSL OverworldMap_InitGfx : DEC $0200
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.b #$00 : STA !DARK_DUCK_TEMP
|
LDA.b #$00 : STA.l ScratchBufferV
|
||||||
JML OverworldMap_DarkWorldTilemap
|
JML OverworldMap_DarkWorldTilemap
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PreItemGet:
|
PreItemGet:
|
||||||
LDA.b #$01 : STA !ITEM_BUSY ; mark item as busy
|
LDA.b #$01 : STA.l BusyItem ; mark item as busy
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PostItemGet:
|
PostItemGet:
|
||||||
@@ -239,12 +226,12 @@ PostItemGet:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PostItemAnimation:
|
PostItemAnimation:
|
||||||
LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished
|
LDA.b #$00 : STA.l BusyItem ; mark item as finished
|
||||||
|
|
||||||
LDA $7F509F : BEQ +
|
LDA.l $7F509F : BEQ +
|
||||||
STZ $1CF0 : STZ $1CF1 ; reset decompression buffer
|
STZ.w $1CF0 : STZ.w $1CF1 ; reset decompression buffer
|
||||||
JSL.l Main_ShowTextMessage_Alt
|
JSL.l Main_ShowTextMessage_Alt
|
||||||
LDA.b #$00 : STA $7F509F
|
LDA.b #$00 : STA.l $7F509F
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.w $02E9 : CMP.b #$01 : BNE +
|
LDA.w $02E9 : CMP.b #$01 : BNE +
|
||||||
@@ -252,6 +239,6 @@ PostItemAnimation:
|
|||||||
JSL.l IncrementChestTurnCounter
|
JSL.l IncrementChestTurnCounter
|
||||||
+
|
+
|
||||||
|
|
||||||
STZ $02E9 : LDA $0C5E, X ; thing we wrote over to get here
|
STZ.w $02E9 : LDA.w $0C5E, X ; thing we wrote over to get here
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
142
failure.asm
142
failure.asm
@@ -3,7 +3,7 @@ pushtable
|
|||||||
table "bsodencode.txt"
|
table "bsodencode.txt"
|
||||||
|
|
||||||
; Uncomment this to force a crash to test message
|
; Uncomment this to force a crash to test message
|
||||||
;pushpc : org $008132 : db 0 : pullpc
|
; pushpc : org $008132 : db 0 : pullpc
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
@@ -11,29 +11,29 @@ DontUseZSNES:
|
|||||||
SEP #$35 ; sets carry and I flag too
|
SEP #$35 ; sets carry and I flag too
|
||||||
|
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
STA.l $4200 ; disable NMI and IRQ
|
STA.l NMITIMEN ; disable NMI and IRQ
|
||||||
STA.l $420C ; disable HDMA
|
STA.l HDMAEN ; disable HDMA
|
||||||
|
|
||||||
ROR ; A = 0x80 from carry
|
ROR ; A = 0x80 from carry
|
||||||
STA.l $2100
|
STA.l INIDISP
|
||||||
STA.l $2115
|
STA.l VMAIN
|
||||||
|
|
||||||
; Empty VRAM
|
; Empty VRAM
|
||||||
LDA.b #AllZeros>>16 : STA.l $4304
|
LDA.b #AllZeros>>16 : STA.l A1B0
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
LDA.w #AllZeros
|
LDA.w #AllZeros
|
||||||
STA.l $4302
|
STA.l A1T0L
|
||||||
|
|
||||||
LDA.w #$1809
|
LDA.w #$1809
|
||||||
STA.l $4300
|
STA.l DMAP0
|
||||||
|
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
STA.l $4305
|
STA.l DAS0L
|
||||||
|
|
||||||
LDA.w #$0001
|
LDA.w #$0001
|
||||||
STA.l $420B
|
STA.l MDMAEN
|
||||||
|
|
||||||
JSR ConfigurePPUForFailureReport
|
JSR ConfigurePPUForFailureReport
|
||||||
JSR ConfigureBSODVWF
|
JSR ConfigureBSODVWF
|
||||||
@@ -43,7 +43,7 @@ DontUseZSNES:
|
|||||||
JSR DrawVWFMessage
|
JSR DrawVWFMessage
|
||||||
|
|
||||||
LDA.w #$0F0F
|
LDA.w #$0F0F
|
||||||
STA.w $2100
|
STA.w INIDISP
|
||||||
|
|
||||||
-- BRA --
|
-- BRA --
|
||||||
|
|
||||||
@@ -77,29 +77,29 @@ Crashed:
|
|||||||
SEP #$35 ; sets carry and I flag too
|
SEP #$35 ; sets carry and I flag too
|
||||||
|
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
STA.l $4200 ; disable NMI and IRQ
|
STA.l NMITIMEN ; disable NMI and IRQ
|
||||||
STA.l $420C ; disable HDMA
|
STA.l HDMAEN ; disable HDMA
|
||||||
|
|
||||||
ROR ; A = 0x80 from carry
|
ROR ; A = 0x80 from carry
|
||||||
STA.l $2100
|
STA.l INIDISP
|
||||||
STA.l $2115
|
STA.l VMAIN
|
||||||
|
|
||||||
; Empty VRAM
|
; Empty VRAM
|
||||||
LDA.b #AllZeros>>16 : STA.l $4304
|
LDA.b #AllZeros>>16 : STA.l A1B0
|
||||||
|
|
||||||
REP #$38
|
REP #$38
|
||||||
|
|
||||||
LDA.w #AllZeros
|
LDA.w #AllZeros
|
||||||
STA.l $4302
|
STA.l A1T0L
|
||||||
|
|
||||||
LDA.w #$1809
|
LDA.w #$1809
|
||||||
STA.l $4300
|
STA.l DMAP0
|
||||||
|
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
STA.l $4305
|
STA.l DAS0L
|
||||||
|
|
||||||
LDA.w #$0001
|
LDA.w #$0001
|
||||||
STA.l $420B
|
STA.l MDMAEN
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
@@ -113,32 +113,32 @@ Crashed:
|
|||||||
|
|
||||||
; stack pointer
|
; stack pointer
|
||||||
LDA.w #$0C38>>1
|
LDA.w #$0C38>>1
|
||||||
STA.b $2116
|
STA.b VMADDL
|
||||||
|
|
||||||
TSC
|
TSC
|
||||||
XBA
|
XBA
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
ORA.w #$0100
|
ORA.w #$0100
|
||||||
STA.b $2118
|
STA.b VMDATAL
|
||||||
|
|
||||||
TSC
|
TSC
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
ORA.w #$0100
|
ORA.w #$0100
|
||||||
STA.l $2118
|
STA.l VMDATAL
|
||||||
|
|
||||||
; game module
|
; game module
|
||||||
LDA.w #$0C78>>1
|
LDA.w #$0C78>>1
|
||||||
STA.b $2116
|
STA.b VMADDL
|
||||||
|
|
||||||
LDA.l $10
|
LDA.l $10
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
ORA.w #$0100
|
ORA.w #$0100
|
||||||
STA.b $2118
|
STA.b VMDATAL
|
||||||
|
|
||||||
LDA.l $11
|
LDA.l $11
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
ORA.w #$0100
|
ORA.w #$0100
|
||||||
STA.b $2118
|
STA.b VMDATAL
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ Crashed:
|
|||||||
|
|
||||||
.next_row
|
.next_row
|
||||||
STA.l $7F0004
|
STA.l $7F0004
|
||||||
STA.b $2116
|
STA.b VMADDL
|
||||||
|
|
||||||
LDY.w #20
|
LDY.w #20
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@ Crashed:
|
|||||||
AND.w #$01FF
|
AND.w #$01FF
|
||||||
|
|
||||||
.in_stack
|
.in_stack
|
||||||
STA.b $2118
|
STA.b VMDATAL
|
||||||
|
|
||||||
DEX
|
DEX
|
||||||
TXA
|
TXA
|
||||||
@@ -235,7 +235,7 @@ Crashed:
|
|||||||
JSR DrawVWFMessage
|
JSR DrawVWFMessage
|
||||||
|
|
||||||
LDA.w #$0F0F
|
LDA.w #$0F0F
|
||||||
STA.w $2100
|
STA.w INIDISP
|
||||||
|
|
||||||
-- BRA --
|
-- BRA --
|
||||||
|
|
||||||
@@ -260,11 +260,11 @@ BSODMessage:
|
|||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
DrawVWFMessage:
|
DrawVWFMessage:
|
||||||
STA.b $06
|
STA.b Scrap06
|
||||||
|
|
||||||
.next
|
.next
|
||||||
LDA.b ($06)
|
LDA.b (Scrap06)
|
||||||
INC.b $06
|
INC.b Scrap06
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
CMP.w #$0080
|
CMP.w #$0080
|
||||||
BEQ .done_row
|
BEQ .done_row
|
||||||
@@ -284,26 +284,26 @@ DrawVWFMessage:
|
|||||||
ASL
|
ASL
|
||||||
TAX
|
TAX
|
||||||
LDA.w .row_offset,X
|
LDA.w .row_offset,X
|
||||||
STA.w $2116
|
STA.w VMADDL
|
||||||
|
|
||||||
INC.b VWFR
|
INC.b VWFR
|
||||||
|
|
||||||
LDA.w #$1800
|
LDA.w #$1800
|
||||||
STA.w $4300
|
STA.w DMAP0
|
||||||
|
|
||||||
LDA.w #20*16
|
LDA.w #20*16
|
||||||
STA.w $4305
|
STA.w DAS0L
|
||||||
|
|
||||||
LDA.w #$1000
|
LDA.w #$1000
|
||||||
STA.w $4302
|
STA.w A1T0L
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
STZ.w $2115
|
STZ.w VMAIN
|
||||||
STZ.w $4304
|
STZ.w A1B0
|
||||||
|
|
||||||
LDA.b #$01
|
LDA.b #$01
|
||||||
STA.w $420B
|
STA.w MDMAEN
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
@@ -347,7 +347,7 @@ DrawFailureVWFChar:
|
|||||||
ASL
|
ASL
|
||||||
ASL
|
ASL
|
||||||
ADC.w #BSODFontGFX
|
ADC.w #BSODFontGFX
|
||||||
STA.b $08
|
STA.b Scrap08
|
||||||
|
|
||||||
LDA.b VWFP
|
LDA.b VWFP
|
||||||
AND.w #$FFF8
|
AND.w #$FFF8
|
||||||
@@ -402,23 +402,23 @@ LoadBSODHexFont:
|
|||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
LDA.w #BSODHex
|
LDA.w #BSODHex
|
||||||
STA.w $4302
|
STA.w A1T0L
|
||||||
|
|
||||||
LDA.w #$1801
|
LDA.w #$1801
|
||||||
STA.w $4300
|
STA.w DMAP0
|
||||||
|
|
||||||
LDA.w #$1000
|
LDA.w #$1000
|
||||||
STA.w $4305
|
STA.w DAS0L
|
||||||
|
|
||||||
LDA.w #$2800
|
LDA.w #$2800
|
||||||
STA.w $2116
|
STA.w VMADDL
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b #BSODHex>>16
|
LDA.b #BSODHex>>16
|
||||||
STA.w $4304
|
STA.w A1B0
|
||||||
|
|
||||||
LDA.b #$01
|
LDA.b #$01
|
||||||
STA.w $420B
|
STA.w MDMAEN
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
@@ -437,21 +437,21 @@ ConfigureBSODVWF:
|
|||||||
LDX.b #$FF
|
LDX.b #$FF
|
||||||
LDY.b #$7F
|
LDY.b #$7F
|
||||||
|
|
||||||
STZ.b $2121
|
STZ.b CGADD
|
||||||
STZ.b $2122 : STZ.b $2122
|
STZ.b CGDATA : STZ.b CGDATA
|
||||||
|
|
||||||
STX.b $2122 : STY.b $2122
|
STX.b CGDATA : STY.b CGDATA
|
||||||
|
|
||||||
LDA.b #$05
|
LDA.b #$05
|
||||||
STA.b $2121
|
STA.b CGADD
|
||||||
|
|
||||||
LDA.b #$11 : STA.b $2122 : STY.b $2122
|
LDA.b #$11 : STA.b CGDATA : STY.b CGDATA
|
||||||
|
|
||||||
LDA.b #$21 : STA.b $2121
|
LDA.b #$21 : STA.b CGADD
|
||||||
STX.b $2122 : STY.b $2122
|
STX.b CGDATA : STY.b CGDATA
|
||||||
|
|
||||||
LDA.b #$25 : STA.b $2121
|
LDA.b #$25 : STA.b CGADD
|
||||||
LDA.b #$11 : STA.b $2122 : STY.b $2122
|
LDA.b #$11 : STA.b CGDATA : STY.b CGDATA
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
@@ -473,14 +473,14 @@ ConfigureBSODVWF:
|
|||||||
|
|
||||||
.start
|
.start
|
||||||
STA.w $20
|
STA.w $20
|
||||||
STA.b $2116
|
STA.b VMADDL
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
|
|
||||||
LDY.w #30
|
LDY.w #30
|
||||||
|
|
||||||
.next_char
|
.next_char
|
||||||
STA.b $2118
|
STA.b VMDATAL
|
||||||
INC
|
INC
|
||||||
DEY
|
DEY
|
||||||
BNE .next_char
|
BNE .next_char
|
||||||
@@ -516,29 +516,29 @@ ConfigurePPUForFailureReport:
|
|||||||
PHK
|
PHK
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
STZ.w $2105 ; BG mode 0
|
STZ.w BGMODE ; BG mode 0
|
||||||
STZ.w $2106 ; no mosaic
|
STZ.w MOSAIC ; no mosaic
|
||||||
STZ.w $2107 ; BG1 tilemap to $0000
|
STZ.w BG1SC ; BG1 tilemap to $0000
|
||||||
STZ.w $212D
|
STZ.w TS
|
||||||
|
|
||||||
STZ.w $210D : STZ.w $210D
|
STZ.w BG1HOFS : STZ.w BG1HOFS
|
||||||
STZ.w $210E : STZ.w $210E
|
STZ.w BG1VOFS : STZ.w BG1VOFS
|
||||||
STZ.w $210F : STZ.w $210F
|
STZ.w BG2HOFS : STZ.w BG2HOFS
|
||||||
STZ.w $2110 : STZ.w $2110
|
STZ.w BG2VOFS : STZ.w BG2VOFS
|
||||||
|
|
||||||
|
|
||||||
STZ.w $2123
|
STZ.w W12SEL
|
||||||
STZ.w $2131
|
STZ.w CGADSUB
|
||||||
STZ.w $2133
|
STZ.w SETINI
|
||||||
|
|
||||||
LDA.b #$04
|
LDA.b #$04
|
||||||
STA.w $2108 ; BG1 tilemap to $0800
|
STA.w BG2SC ; BG1 tilemap to $0800
|
||||||
|
|
||||||
LDA.b #$21
|
LDA.b #$21
|
||||||
STA.w $210B
|
STA.w BG12NBA
|
||||||
|
|
||||||
LDA.b #$03
|
LDA.b #$03
|
||||||
STA.w $212C
|
STA.w TM
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|||||||
@@ -51,11 +51,11 @@ FastCreditsCutsceneScroll:
|
|||||||
LDA.w $00E2,Y
|
LDA.w $00E2,Y
|
||||||
CMP.l $0EC308,X ; compare to target
|
CMP.l $0EC308,X ; compare to target
|
||||||
|
|
||||||
ROL.b $00 ; put carry in here
|
ROL.b Scrap00 ; put carry in here
|
||||||
LDA.l $0EC348,X ; get movement
|
LDA.l $0EC348,X ; get movement
|
||||||
BPL ++ ; if positive, leave saved carry alone
|
BPL ++ ; if positive, leave saved carry alone
|
||||||
INC.b $00 ; otherwise, flip it
|
INC.b Scrap00 ; otherwise, flip it
|
||||||
++ ROR.b $00 ; recover carry
|
++ ROR.b Scrap00 ; recover carry
|
||||||
|
|
||||||
BCC ++ ; scroll if carry not set
|
BCC ++ ; scroll if carry not set
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
|
|||||||
343
fileselect.asm
343
fileselect.asm
@@ -1,18 +1,17 @@
|
|||||||
!ValidKeyLoaded = "$7F509E"
|
|
||||||
|
|
||||||
;FS prefix means file_select, since these defines and macros are specific to this screen
|
;FS prefix means file_select, since these defines and macros are specific to this screen
|
||||||
|
|
||||||
!FS_COLOR_BROWN = "$0000" ;(only used for: Shovel, hammer, powder)
|
!FS_COLOR_BROWN = $0000 ;(only used for: Shovel, hammer, powder)
|
||||||
!FS_COLOR_RED = "$0400"
|
!FS_COLOR_RED = $0400
|
||||||
!FS_COLOR_YELLOW = "$0800"
|
!FS_COLOR_YELLOW = $0800
|
||||||
!FS_COLOR_BLUE = "$0C00"
|
!FS_COLOR_BLUE = $0C00
|
||||||
!FS_COLOR_GRAY = "$1000" ;(Used to gray out items)
|
!FS_COLOR_GRAY = $1000 ;(Used to gray out items)
|
||||||
!FS_COLOR_BOOTS = "$1400"
|
!FS_COLOR_BOOTS = $1400
|
||||||
!FS_COLOR_GREEN = "$1800"
|
!FS_COLOR_GREEN = $1800
|
||||||
!FS_COLOR_BW = "$1C00"
|
!FS_COLOR_BW = $1C00
|
||||||
|
|
||||||
!FS_HFLIP = "$4000"
|
!FS_HFLIP = $4000
|
||||||
!FS_VFLIP = "$8000"
|
!FS_VFLIP = $8000
|
||||||
|
|
||||||
macro fs_draw8x8(screenrow,screencol)
|
macro fs_draw8x8(screenrow,screencol)
|
||||||
;Note due to XKAS's screwy math this formula is misleading.
|
;Note due to XKAS's screwy math this formula is misleading.
|
||||||
@@ -109,19 +108,19 @@ JMP DrawItem
|
|||||||
|
|
||||||
|
|
||||||
DrawPlayerFile:
|
DrawPlayerFile:
|
||||||
LDA $1A : AND.w #$0001 : BNE .normal
|
LDA.b $1A : AND.w #$0001 : BNE .normal
|
||||||
JSR DrawPlayerFileShared
|
JSR DrawPlayerFileShared
|
||||||
INC $0710 ; Suppress animated tile updates for this frame
|
INC $0710 ; Suppress animated tile updates for this frame
|
||||||
|
|
||||||
; re-enable Stripe Image format upload on this frame
|
; re-enable Stripe Image format upload on this frame
|
||||||
; Value loaded must match what gets set by AltBufferTable
|
; Value loaded must match what gets set by AltBufferTable
|
||||||
LDA.w #$0161 : STA $1002
|
LDA.w #$0161 : STA.w $1002
|
||||||
BRA .done
|
BRA .done
|
||||||
.normal
|
.normal
|
||||||
STZ $0710 ; ensure core animated tile updates are not suppressed
|
STZ $0710 ; ensure core animated tile updates are not suppressed
|
||||||
LDA #$FFFF : STA.w $1002 ; Suppress Stripe Image format upload on this frame
|
LDA.w #$FFFF : STA.w $1002 ; Suppress Stripe Image format upload on this frame
|
||||||
.done
|
.done
|
||||||
LDA.w #$0004 : STA $02 ; thing we wrote over
|
LDA.w #$0004 : STA.b Scrap02 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
|
||||||
@@ -132,29 +131,29 @@ DrawPlayerFileShared:
|
|||||||
LDA.b #FileSelectItems>>16 : PHA : PLB
|
LDA.b #FileSelectItems>>16 : PHA : PLB
|
||||||
REP #$20 ; restore 16 bit accumulator
|
REP #$20 ; restore 16 bit accumulator
|
||||||
|
|
||||||
LDA ExtendedFileNameSRAM+$08 : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$08 : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(6,5)
|
%fs_draw8x16(6,5)
|
||||||
LDA ExtendedFileNameSRAM+$0A : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$0A : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(6,6)
|
%fs_draw8x16(6,6)
|
||||||
LDA ExtendedFileNameSRAM+$0C : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$0C : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(6,7)
|
%fs_draw8x16(6,7)
|
||||||
LDA ExtendedFileNameSRAM+$0E : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$0E : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(6,8)
|
%fs_draw8x16(6,8)
|
||||||
|
|
||||||
LDA ExtendedFileNameSRAM+$10 : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$10 : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(9,5)
|
%fs_draw8x16(9,5)
|
||||||
LDA ExtendedFileNameSRAM+$12 : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$12 : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(9,6)
|
%fs_draw8x16(9,6)
|
||||||
LDA ExtendedFileNameSRAM+$14 : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$14 : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(9,7)
|
%fs_draw8x16(9,7)
|
||||||
LDA ExtendedFileNameSRAM+$16 : ORA.w #!FS_COLOR_BW
|
LDA.l ExtendedFileNameSRAM+$16 : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(9,8)
|
%fs_draw8x16(9,8)
|
||||||
|
|
||||||
JSR FileSelectDrawHudBar
|
JSR FileSelectDrawHudBar
|
||||||
|
|
||||||
; Bow
|
; Bow
|
||||||
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
||||||
LDA EquipmentSRAM+$00 : AND.w #$00FF : BEQ ++
|
LDA.l EquipmentSRAM+$00 : AND.w #$00FF : BEQ ++
|
||||||
%fs_drawItem(3,12,FileSelectItems_silver_bow)
|
%fs_drawItem(3,12,FileSelectItems_silver_bow)
|
||||||
BRA .bow_end
|
BRA .bow_end
|
||||||
++
|
++
|
||||||
@@ -327,10 +326,10 @@ DrawPlayerFileShared:
|
|||||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_3_of_4)
|
%fs_drawItem(9,26,FileSelectItems_heart_piece_3_of_4)
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA EquipmentSRAM+$0108 : AND.w #$00FF
|
LDA.l EquipmentSRAM+$0108 : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HexToDec
|
||||||
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(11,26)
|
LDA.l $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(11,26)
|
||||||
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(11,27)
|
LDA.l $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(11,27)
|
||||||
|
|
||||||
; Boots
|
; Boots
|
||||||
%fs_drawItemBasic(EquipmentSRAM+$15,3,28,FileSelectItems_boots)
|
%fs_drawItemBasic(EquipmentSRAM+$15,3,28,FileSelectItems_boots)
|
||||||
@@ -353,21 +352,21 @@ DrawPlayerFileShared:
|
|||||||
%fs_drawItemBasic(EquipmentSRAM+$17,9,28,FileSelectItems_pearl)
|
%fs_drawItemBasic(EquipmentSRAM+$17,9,28,FileSelectItems_pearl)
|
||||||
|
|
||||||
; Pendants
|
; Pendants
|
||||||
LDA EquipmentSRAM+$34 : AND.w #$0004 : BEQ +
|
LDA.l EquipmentSRAM+$34 : AND.w #$0004 : BEQ +
|
||||||
%fs_drawItem(12,12,FileSelectItems_green_pendant)
|
%fs_drawItem(12,12,FileSelectItems_green_pendant)
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
%fs_drawItem(12,12,FileSelectItems_no_pendant)
|
%fs_drawItem(12,12,FileSelectItems_no_pendant)
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA EquipmentSRAM+$34 : AND.w #$0002 : BEQ +
|
LDA.l EquipmentSRAM+$34 : AND.w #$0002 : BEQ +
|
||||||
%fs_drawItem(12,14,FileSelectItems_blue_pendant)
|
%fs_drawItem(12,14,FileSelectItems_blue_pendant)
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
%fs_drawItem(12,14,FileSelectItems_no_pendant)
|
%fs_drawItem(12,14,FileSelectItems_no_pendant)
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA EquipmentSRAM+$34 : AND.w #$0001 : BEQ +
|
LDA.l EquipmentSRAM+$34 : AND.w #$0001 : BEQ +
|
||||||
%fs_drawItem(12,16,FileSelectItems_red_pendant)
|
%fs_drawItem(12,16,FileSelectItems_red_pendant)
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
@@ -375,49 +374,49 @@ DrawPlayerFileShared:
|
|||||||
++
|
++
|
||||||
|
|
||||||
; Crystals
|
; Crystals
|
||||||
LDA EquipmentSRAM+$3A : AND.w #$0002 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0002 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$0297|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$0287|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(13,18)
|
++ : %fs_draw16x8(13,18)
|
||||||
|
|
||||||
LDA EquipmentSRAM+$3A : AND.w #$0010 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0010 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$0297|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$0287|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(12,19)
|
++ : %fs_draw16x8(12,19)
|
||||||
|
|
||||||
LDA EquipmentSRAM+$3A : AND.w #$0040 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0040 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$0297|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$0287|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(13,20)
|
++ : %fs_draw16x8(13,20)
|
||||||
|
|
||||||
LDA EquipmentSRAM+$3A : AND.w #$0020 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0020 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$0297|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$0287|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(12,21)
|
++ : %fs_draw16x8(12,21)
|
||||||
|
|
||||||
LDA EquipmentSRAM+$3A : AND.w #$0004 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0004 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_RED
|
LDA.w #$0297|!FS_COLOR_RED
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$0287|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(13,22)
|
++ : %fs_draw16x8(13,22)
|
||||||
|
|
||||||
LDA EquipmentSRAM+$3A : AND.w #$0001 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0001 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_RED
|
LDA.w #$0297|!FS_COLOR_RED
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$0287|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(12,23)
|
++ : %fs_draw16x8(12,23)
|
||||||
|
|
||||||
LDA EquipmentSRAM+$3A : AND.w #$0008 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0008 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$0297|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
@@ -558,104 +557,103 @@ FileSelectItems:
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FileSelectDrawHudBar:
|
FileSelectDrawHudBar:
|
||||||
LDA #$029B|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
LDA.w #$029B|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
||||||
LDA EquipmentSRAM+$22
|
LDA.l DisplayRupeesSRAM
|
||||||
JSL.l HexToDec
|
JSL.l HexToDec
|
||||||
LDA $7F5004 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
LDA.l $7F5004 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
||||||
LDA $7F5005 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
LDA.l $7F5005 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
||||||
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
LDA.l $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
||||||
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
LDA.l $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
||||||
|
|
||||||
LDA #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
LDA.w #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
||||||
LDA EquipmentSRAM+$03 : AND.w #$00FF
|
LDA.l BombsEquipmentSRAM : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HexToDec
|
||||||
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
LDA.l $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
||||||
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
LDA.l $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
||||||
|
|
||||||
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
||||||
LDA #$0299|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
LDA.w #$0299|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA #$0289|!FS_COLOR_BROWN : %fs_draw16x8(0,17)
|
LDA.w #$0289|!FS_COLOR_BROWN : %fs_draw16x8(0,17)
|
||||||
++
|
++
|
||||||
LDA EquipmentSRAM+$37 : AND.w #$00FF
|
LDA.l CurrentArrowsSRAM : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HexToDec
|
||||||
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
LDA.l $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
||||||
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
LDA.l $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AltBufferTable:
|
AltBufferTable:
|
||||||
LDA.b #$02 : STA $210c ; Have Screen 3 use same tile area as screens 1
|
LDA.b #$02 : STA.w BG34NBA ; Have Screen 3 use same tile area as screens 1
|
||||||
.noScreen3Change
|
.noScreen3Change
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.w #$0400 ; 14 rows with 64 bytes (30 tiles * 2 + 4 byte header)
|
LDX.w #$0400 ; 14 rows with 64 bytes (30 tiles * 2 + 4 byte header)
|
||||||
;fill with the blank character
|
;fill with the blank character
|
||||||
LDA.w #$0188
|
LDA.w #$0188
|
||||||
-
|
-
|
||||||
STA $1000, X
|
STA.w $1000, X
|
||||||
DEX : DEX : BNE -
|
DEX : DEX : BNE -
|
||||||
|
|
||||||
; set vram offsets
|
; set vram offsets
|
||||||
LDA.w #$0161 : STA $1002 ;file 1 top row
|
LDA.w #$0161 : STA.w $1002 ;file 1 top row
|
||||||
LDA.w #$2161 : STA $1042 ;file 1 bottom row
|
LDA.w #$2161 : STA.w $1042 ;file 1 bottom row
|
||||||
|
|
||||||
LDA.w #$4161 : STA $1082 ;gap row top
|
LDA.w #$4161 : STA.w $1082 ;gap row top
|
||||||
LDA.w #$6161 : STA $10C2 ;gap row bottom
|
LDA.w #$6161 : STA.w $10C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$8161 : STA $1102 ;file 2 top row
|
LDA.w #$8161 : STA.w $1102 ;file 2 top row
|
||||||
LDA.w #$A161 : STA $1142 ;file 2 bottom row
|
LDA.w #$A161 : STA.w $1142 ;file 2 bottom row
|
||||||
|
|
||||||
LDA.w #$C161 : STA $1182 ;gap row top
|
LDA.w #$C161 : STA.w $1182 ;gap row top
|
||||||
LDA.w #$E161 : STA $11c2 ;gap row bottom
|
LDA.w #$E161 : STA.w $11c2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$0162 : STA $1202 ;file 3 top row
|
LDA.w #$0162 : STA.w $1202 ;file 3 top row
|
||||||
LDA.w #$2162 : STA $1242 ;file 3 bottom row
|
LDA.w #$2162 : STA.w $1242 ;file 3 bottom row
|
||||||
|
|
||||||
LDA.w #$4162 : STA $1282 ;extra gap row top
|
LDA.w #$4162 : STA.w $1282 ;extra gap row top
|
||||||
LDA.w #$6162 : STA $12c2 ;extra gap row bottom
|
LDA.w #$6162 : STA.w $12c2 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$8162 : STA $1302 ;extra gap row top
|
LDA.w #$8162 : STA.w $1302 ;extra gap row top
|
||||||
LDA.w #$A162 : STA $1342 ;extra gap row bottom
|
LDA.w #$A162 : STA.w $1342 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$C162 : STA $1382 ;extra gap row top
|
LDA.w #$C162 : STA.w $1382 ;extra gap row top
|
||||||
LDA.w #$E162 : STA $13C2 ;extra gap row bottom
|
LDA.w #$E162 : STA.w $13C2 ;extra gap row bottom
|
||||||
|
|
||||||
; set lengths
|
; set lengths
|
||||||
LDA.w #$3B00
|
LDA.w #$3B00
|
||||||
STA $1004 ;file 1 top row
|
STA.w $1004 ;file 1 top row
|
||||||
STA $1044 ;file 1 bottom row
|
STA.w $1044 ;file 1 bottom row
|
||||||
STA $1084 ;gap row top
|
STA.w $1084 ;gap row top
|
||||||
STA $10C4 ;gap row bottom
|
STA.w $10C4 ;gap row bottom
|
||||||
STA $1104 ;file 2 top row
|
STA.w $1104 ;file 2 top row
|
||||||
STA $1144 ;file 2 bottom row
|
STA.w $1144 ;file 2 bottom row
|
||||||
STA $1184 ;gap row top
|
STA.w $1184 ;gap row top
|
||||||
STA $11C4 ;gap row bottom
|
STA.w $11C4 ;gap row bottom
|
||||||
STA $1204 ;file 3 top row
|
STA.w $1204 ;file 3 top row
|
||||||
STA $1244 ;file 3 bottom row
|
STA.w $1244 ;file 3 bottom row
|
||||||
STA $1284 ;extra gap row top
|
STA.w $1284 ;extra gap row top
|
||||||
STA $12C4 ;extra gap row bottom
|
STA.w $12C4 ;extra gap row bottom
|
||||||
STA $1304 ;extra gap row top
|
STA.w $1304 ;extra gap row top
|
||||||
STA $1344 ;extra gap row bottom
|
STA.w $1344 ;extra gap row bottom
|
||||||
STA $1384 ;extra gap row top
|
STA.w $1384 ;extra gap row top
|
||||||
STA $13C4 ;extra gap row bottom
|
STA.w $13C4 ;extra gap row bottom
|
||||||
|
|
||||||
; Set last packet marker
|
; Set last packet marker
|
||||||
LDA.w #$00FF : STA $1402
|
LDA.w #$00FF : STA.w $1402
|
||||||
|
|
||||||
; Draw Unlock option if applicable
|
; Draw Unlock option if applicable
|
||||||
LDA $10 : AND.w #$00FF : CMP.w #$0001 : BNE +
|
LDA.b $10 : AND.w #$00FF : CMP.w #$0001 : BNE +
|
||||||
LDA.l IsEncrypted : AND.w #$00FF : CMP.w #$0002 : BNE +
|
LDA.l IsEncrypted : AND.w #$00FF : CMP.w #$0002 : BNE +
|
||||||
PHP : SEP #$30 : PHX : PHY : JSL ValidatePassword : PLY : PLX : PLP
|
PHP : SEP #$30 : PHX : PHY : JSL ValidatePassword : PLY : PLX : PLP
|
||||||
AND.w #$00FF : BNE +
|
AND.w #$00FF : BNE +
|
||||||
LDA.w #!FSTILE_U_TOP : %fs_draw8x16(14,5)
|
LDA.w #!FSTILE_U_TOP : %fs_draw8x16(14,5)
|
||||||
LDA.w #!FSTILE_N_TOP : %fs_draw8x16(14,6)
|
LDA.w #!FSTILE_N_TOP : %fs_draw8x16(14,6)
|
||||||
LDA.w #!FSTILE_L_TOP : %fs_draw8x16(14,7)
|
LDA.w #!FSTILE_L_TOP : %fs_draw8x16(14,7)
|
||||||
LDA.w #!FSTILE_O_TOP : %fs_draw8x16(14,8)
|
LDA.w #!FSTILE_O_TOP : %fs_draw8x16(14,8)
|
||||||
LDA.w #!FSTILE_C_TOP : %fs_draw8x16(14,9)
|
LDA.w #!FSTILE_C_TOP : %fs_draw8x16(14,9)
|
||||||
LDA.w #!FSTILE_K_TOP : %fs_draw8x16(14,10)
|
LDA.w #!FSTILE_K_TOP : %fs_draw8x16(14,10)
|
||||||
+
|
+
|
||||||
|
SEP #$20
|
||||||
SEP #$20
|
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -663,29 +661,29 @@ AltBufferTable_credits:
|
|||||||
JSL AltBufferTable_noScreen3Change
|
JSL AltBufferTable_noScreen3Change
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$6168 : STA $1002 ;file 1 top row
|
LDA.w #$6168 : STA.w $1002 ;file 1 top row
|
||||||
LDA.w #$8168 : STA $1042 ;file 1 bottom row
|
LDA.w #$8168 : STA.w $1042 ;file 1 bottom row
|
||||||
|
|
||||||
LDA.w #$A168 : STA $1082 ;gap row top
|
LDA.w #$A168 : STA.w $1082 ;gap row top
|
||||||
LDA.w #$C168 : STA $10C2 ;gap row bottom
|
LDA.w #$C168 : STA.w $10C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$E168 : STA $1102 ;file 2 top row
|
LDA.w #$E168 : STA.w $1102 ;file 2 top row
|
||||||
LDA.w #$0169 : STA $1142 ;file 2 bottom row
|
LDA.w #$0169 : STA.w $1142 ;file 2 bottom row
|
||||||
|
|
||||||
LDA.w #$2169 : STA $1182 ;gap row top
|
LDA.w #$2169 : STA.w $1182 ;gap row top
|
||||||
LDA.w #$4169 : STA $11c2 ;gap row bottom
|
LDA.w #$4169 : STA.w $11c2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$6169 : STA $1202 ;file 3 top row
|
LDA.w #$6169 : STA.w $1202 ;file 3 top row
|
||||||
LDA.w #$8169 : STA $1242 ;file 3 bottom row
|
LDA.w #$8169 : STA.w $1242 ;file 3 bottom row
|
||||||
|
|
||||||
LDA.w #$A169 : STA $1282 ;extra gap row top
|
LDA.w #$A169 : STA.w $1282 ;extra gap row top
|
||||||
LDA.w #$C169 : STA $12c2 ;extra gap row bottom
|
LDA.w #$C169 : STA.w $12c2 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$E169 : STA $1302 ;extra gap row top
|
LDA.w #$E169 : STA.w $1302 ;extra gap row top
|
||||||
LDA.w #$016A : STA $1342 ;extra gap row bottom
|
LDA.w #$016A : STA.w $1342 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$216A : STA $1382 ;extra gap row top
|
LDA.w #$216A : STA.w $1382 ;extra gap row top
|
||||||
LDA.w #$416A : STA $13C2 ;extra gap row bottom
|
LDA.w #$416A : STA.w $13C2 ;extra gap row bottom
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTL
|
RTL
|
||||||
@@ -718,47 +716,47 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadFullItemTiles:
|
LoadFullItemTiles:
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
LDA $4300 : PHA ; preserve DMA parameters
|
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
||||||
LDA $4301 : PHA ; preserve DMA parameters
|
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
||||||
LDA $4302 : PHA ; preserve DMA parameters
|
LDA.w A1T0L : PHA ; preserve DMA parameters
|
||||||
LDA $4303 : PHA ; preserve DMA parameters
|
LDA.w A1T0H : PHA ; preserve DMA parameters
|
||||||
LDA $4304 : PHA ; preserve DMA parameters
|
LDA.w A1B0 : PHA ; preserve DMA parameters
|
||||||
LDA $4305 : PHA ; preserve DMA parameters
|
LDA.w DAS0L : PHA ; preserve DMA parameters
|
||||||
LDA $4306 : PHA ; preserve DMA parameters
|
LDA.w DAS0H : PHA ; preserve DMA parameters
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LDA.b #$80 : STA $2115 ; write read increment on $2119
|
LDA.b #$80 : STA.w VMAIN ; write read increment on $2119
|
||||||
LDA.b #$01 : STA $4300 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
LDA.b #$01 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
||||||
LDA.b #$18 : STA $4301 ; set bus B destination to VRAM register
|
LDA.b #$18 : STA.w BBAD0 ; set bus B destination to VRAM register
|
||||||
|
|
||||||
LDA.b #$00 : STA $2116 ; write VRAM destination address
|
LDA.b #$00 : STA.w VMADDL ; write VRAM destination address
|
||||||
LDA.b #$30 : STA $2117 ; write VRAM destination address
|
LDA.b #$30 : STA.w VMADDH ; write VRAM destination address
|
||||||
|
|
||||||
LDA.b #$31 : STA $4304 ; set bus A source bank
|
LDA.b #$31 : STA.w A1B0 ; set bus A source bank
|
||||||
LDA.b #FileSelectNewGraphics : STA $4302 ; set bus A source address to ROM
|
LDA.b #FileSelectNewGraphics : STA.w A1T0L ; set bus A source address to ROM
|
||||||
LDA.b #FileSelectNewGraphics>>8 : STA $4303 ; set bus A source address to ROM
|
LDA.b #FileSelectNewGraphics>>8 : STA.w A1T0H ; set bus A source address to ROM
|
||||||
|
|
||||||
LDA $2100 : PHA : LDA.b #$80 : STA $2100 ; save screen state & turn screen off
|
LDA.w INIDISP : PHA : LDA.b #$80 : STA.w INIDISP ; save screen state & turn screen off
|
||||||
|
|
||||||
STZ $4305 : LDA.b #$10 : STA $4306 ; set transfer size to 0x1000
|
STZ.w DAS0L : LDA.b #$10 : STA.w DAS0H ; set transfer size to 0x1000
|
||||||
LDA #$01 : STA $420B ; begin DMA transfer
|
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
||||||
|
|
||||||
PLA : STA $2100 ; put screen back however it was before
|
PLA : STA.w INIDISP ; put screen back however it was before
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PLA : STA $4306 ; restore DMA parameters
|
PLA : STA.w DAS0H ; restore DMA parameters
|
||||||
PLA : STA $4305 ; restore DMA parameters
|
PLA : STA.w DAS0L ; restore DMA parameters
|
||||||
PLA : STA $4304 ; restore DMA parameters
|
PLA : STA.w A1B0 ; restore DMA parameters
|
||||||
PLA : STA $4303 ; restore DMA parameters
|
PLA : STA.w A1T0H ; restore DMA parameters
|
||||||
PLA : STA $4302 ; restore DMA parameters
|
PLA : STA.w A1T0L ; restore DMA parameters
|
||||||
PLA : STA $4301 ; restore DMA parameters
|
PLA : STA.w BBAD0 ; restore DMA parameters
|
||||||
PLA : STA $4300 ; restore DMA parameters
|
PLA : STA.w DMAP0 ; restore DMA parameters
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
SetFileSelectPalette:
|
SetFileSelectPalette:
|
||||||
LDA $10 : CMP.b #$04 : BNE +
|
LDA.b $10 : CMP.b #$04 : BNE +
|
||||||
; load the vanilla file select screen BG3 palette for naming screen
|
; load the vanilla file select screen BG3 palette for naming screen
|
||||||
LDA.b #$01 : STA $0AB2
|
LDA.b #$01 : STA.w $0AB2
|
||||||
JSL.l Palette_Hud
|
JSL.l Palette_Hud
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
@@ -787,16 +785,16 @@ DrawPlayerFile_credits:
|
|||||||
; see $6563C for drawing first file name and hearts
|
; see $6563C for drawing first file name and hearts
|
||||||
REP #$20 ; set 16 bit accumulator
|
REP #$20 ; set 16 bit accumulator
|
||||||
|
|
||||||
LDA EquipmentSRAM+$99 : ORA.w #!FS_COLOR_BW
|
LDA.l EquipmentSRAM+$99 : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(3,5)
|
%fs_draw8x16(3,5)
|
||||||
LDA EquipmentSRAM+$9B : ORA.w #!FS_COLOR_BW
|
LDA.l EquipmentSRAM+$9B : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(3,6)
|
%fs_draw8x16(3,6)
|
||||||
LDA EquipmentSRAM+$9D : ORA.w #!FS_COLOR_BW
|
LDA.l EquipmentSRAM+$9D : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(3,7)
|
%fs_draw8x16(3,7)
|
||||||
LDA EquipmentSRAM+$9F : ORA.w #!FS_COLOR_BW
|
LDA.l EquipmentSRAM+$9F : ORA.w #!FS_COLOR_BW
|
||||||
%fs_draw8x16(3,8)
|
%fs_draw8x16(3,8)
|
||||||
|
|
||||||
LDA EquipmentSRAM+$2C : AND.w #$00FF : LSR #3 : STA $02
|
LDA.l EquipmentSRAM+$2C : AND.w #$00FF : LSR #3 : STA.b Scrap02
|
||||||
%fs_LDY_screenpos(0,20)
|
%fs_LDY_screenpos(0,20)
|
||||||
LDA.w #$028F|!FS_COLOR_RED
|
LDA.w #$028F|!FS_COLOR_RED
|
||||||
LDX.w #$000A
|
LDX.w #$000A
|
||||||
@@ -810,44 +808,45 @@ DrawPlayerFile_credits:
|
|||||||
TYA : !ADD.w #$40-$14 : TAY
|
TYA : !ADD.w #$40-$14 : TAY
|
||||||
PLA
|
PLA
|
||||||
+
|
+
|
||||||
DEC $02 : BNE .nextHeart
|
DEC.b Scrap02 : BNE .nextHeart
|
||||||
|
|
||||||
JSR DrawPlayerFileShared
|
JSR DrawPlayerFileShared
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FSCursorUp:
|
FSCursorUp:
|
||||||
LDA $C8 : BNE +
|
LDA.b $C8 : BNE +
|
||||||
LDA #$04 ; up from file becomes delete
|
LDA.b #$04 ; up from file becomes delete
|
||||||
BRA .done
|
BRA .done
|
||||||
+ : CMP #$03 : BNE +
|
+ : CMP.b #$03 : BNE +
|
||||||
LDA #$00 ; up from unlock is the file
|
LDA.b #$00 ; up from unlock is the file
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
LDA.l IsEncrypted : CMP.b #$02 : BNE +
|
LDA.l IsEncrypted : CMP.b #$02 : BNE +
|
||||||
LDA.l !ValidKeyLoaded : BNE +
|
LDA.l ValidKeyLoaded : BNE +
|
||||||
LDA #$03 ; up from delete is unlock for password protected seeds
|
LDA.b #$03 ; up from delete is unlock for password protected seeds
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
LDA #$00 ;otherwise up from delete is file
|
LDA.b #$00 ;otherwise up from delete is file
|
||||||
.done
|
.done
|
||||||
STA $C8
|
STA.b $C8
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
FSCursorDown:
|
FSCursorDown:
|
||||||
LDA $C8 : BNE +
|
LDA.b $C8 : BNE +
|
||||||
LDA.l IsEncrypted : CMP.b #$02 : BNE ++
|
LDA.l IsEncrypted : CMP.b #$02 : BNE ++
|
||||||
LDA.l !ValidKeyLoaded : BNE ++
|
LDA.l ValidKeyLoaded : BNE ++
|
||||||
LDA #$03 ; down from file is unlock for password protected seeds
|
LDA.b #$03 ; down from file is unlock for password protected seeds
|
||||||
BRA .done
|
BRA .done
|
||||||
++
|
++
|
||||||
LDA #$04 ;otherwise down from file is delete
|
LDA.b #$04 ;otherwise down from file is delete
|
||||||
BRA .done
|
BRA .done
|
||||||
+ : CMP #$03 : BNE +
|
+ : CMP.b #$03 : BNE +
|
||||||
LDA #$04 ; down from unlock is delete
|
LDA.b #$04 ; down from unlock is delete
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
LDA #$00 ; down from delete is file
|
LDA.b #$00 ; down from delete is file
|
||||||
.done
|
.done
|
||||||
STA $C8
|
STA.b $C8
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FSSelectFile:
|
FSSelectFile:
|
||||||
@@ -856,14 +855,14 @@ FSSelectFile:
|
|||||||
PHX : PHY
|
PHX : PHY
|
||||||
JSL ValidatePassword : BEQ .must_unlock
|
JSL ValidatePassword : BEQ .must_unlock
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
LDA.b #$2C : STA $012E ;file screen selection sound
|
LDA.b #$2C : STA.w $012E ;file screen selection sound
|
||||||
.normal
|
.normal
|
||||||
LDA.b #$F1 : STA $012C
|
LDA.b #$F1 : STA.w $012C
|
||||||
JML FSSelectFile_continue
|
JML FSSelectFile_continue
|
||||||
.must_unlock
|
.must_unlock
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
LDA #$03 : STA $C8 ;set cursor to unlock
|
LDA.b #$03 : STA.b $C8 ;set cursor to unlock
|
||||||
LDA.b #$3C : STA $012E ; play error sound
|
LDA.b #$3C : STA.w $012E ; play error sound
|
||||||
JML FSSelectFile_return
|
JML FSSelectFile_return
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybeForceFileName:
|
MaybeForceFileName:
|
||||||
@@ -873,8 +872,8 @@ MaybeForceFileName:
|
|||||||
-
|
-
|
||||||
INX : INX
|
INX : INX
|
||||||
LDA.l StaticFileName, X : STA.l ExtendedFileNameSRAM, X
|
LDA.l StaticFileName, X : STA.l ExtendedFileNameSRAM, X
|
||||||
CPX #$16 : BEQ .done
|
CPX.b #$16 : BEQ .done
|
||||||
CPX #$08 : BCS -
|
CPX.b #$08 : BCS -
|
||||||
STA.l FileNameVanillaSRAM, X
|
STA.l FileNameVanillaSRAM, X
|
||||||
BRA -
|
BRA -
|
||||||
.done
|
.done
|
||||||
|
|||||||
@@ -3,69 +3,56 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FlipperKill:
|
FlipperKill:
|
||||||
PHP
|
PHP
|
||||||
LDA $5D : CMP #$04 : BNE .done ; skip if we're not swimming
|
LDA.b $5D : CMP.b #$04 : BNE .done ; skip if we're not swimming
|
||||||
LDA FlippersEquipment : BNE .done ; skip if we have the flippers
|
LDA.l FlippersEquipment : BNE .done ; skip if we have the flippers
|
||||||
LDA $7F5001 : BEQ .done ; skip if we're not marked in danger for softlock
|
LDA.l $7F5001 : BEQ .done ; skip if we're not marked in danger for softlock
|
||||||
LDA $8A : CMP $7F5098 : BEQ .done ; skip if we're on the same screen we entered the water on
|
LDA.b $8A : CMP.l $7F5098 : BEQ .done ; skip if we're on the same screen we entered the water on
|
||||||
;JSL.l KillFairies ; take away fairies
|
LDA.l IgnoreFaeries : ORA.b #$04 : STA.l IgnoreFaeries
|
||||||
LDA IgnoreFaeries : ORA.b #$04 : STA IgnoreFaeries
|
|
||||||
LDA.b #$00 : STA CurrentHealth ; kill link
|
LDA.b #$00 : STA CurrentHealth ; kill link
|
||||||
LDA.b #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
LDA.b #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
||||||
.done
|
.done
|
||||||
PLP
|
PLP
|
||||||
LDA CurrentHealth ; thing we wrote over
|
LDA.l CurrentHealth ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IgnoreFairyCheck:
|
IgnoreFairyCheck:
|
||||||
LDX.b #$00 ; thing we wrote over
|
LDX.b #$00 ; thing we wrote over
|
||||||
LDA IgnoreFaeries : BIT.b #$04 : BEQ .normal
|
LDA.l IgnoreFaeries : BIT.b #$04 : BEQ .normal
|
||||||
|
|
||||||
AND.b #$FB : STA IgnoreFaeries ; clear ignore fairy flag
|
AND.b #$FB : STA.l IgnoreFaeries ; clear ignore fairy flag
|
||||||
LDA.b #$F0 ; set check to invalid entry
|
LDA.b #$F0 ; set check to invalid entry
|
||||||
RTL
|
RTL
|
||||||
.normal
|
.normal
|
||||||
LDA.b #$06 ; set check to fairy
|
LDA.b #$06 ; set check to fairy
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;KillFairies:
|
|
||||||
; LDA BottleContentsOne : CMP #$06 : BNE +
|
|
||||||
; LDA #$02 : STA BottleContentsOne
|
|
||||||
; + LDA BottleContentsTwo : CMP #$06 : BNE +
|
|
||||||
; LDA #$02 : STA BottleContentsTwo
|
|
||||||
; + LDA BottleContentsThree : CMP #$06 : BNE +
|
|
||||||
; LDA #$02 : STA BottleContentsThree
|
|
||||||
; + LDA BottleContentsFour : CMP #$06 : BNE +
|
|
||||||
; LDA #$02 : STA BottleContentsFour
|
|
||||||
; +
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
FlipperReset:
|
FlipperReset:
|
||||||
JSL $0998E8 ; AddTransitionSplash
|
JSL $0998E8 ; AddTransitionSplash
|
||||||
LDA #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
LDA.b #$00 : STA.l $7F5001 ; mark fake flipper softlock as impossible
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FlipperFlag:
|
FlipperFlag:
|
||||||
LDA $5D : CMP #$04 : BNE .done ; skip if we're not swimming
|
LDA.b $5D : CMP.b #$04 : BNE .done ; skip if we're not swimming
|
||||||
LDA FlippersEquipment : BNE .safe ; skip if we have the flippers
|
LDA.l FlippersEquipment : BNE .safe ; skip if we have the flippers
|
||||||
LDA #$01 : STA $7F5001 ; mark fake flipper softlock as possible
|
LDA.b #$01 : STA.l $7F5001 ; mark fake flipper softlock as possible
|
||||||
BRA .done
|
BRA .done
|
||||||
.safe
|
.safe
|
||||||
LDA #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
|
LDA.b #$00 : STA.l $7F5001 ; mark fake flipper softlock as impossible
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
RegisterWaterEntryScreen:
|
RegisterWaterEntryScreen:
|
||||||
PHA
|
PHA
|
||||||
LDA $8A : STA $7F5098 ; store ow index
|
LDA.b $8A : STA.l $7F5098 ; store ow index
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MysteryWaterFunction: ; *$3AE54 ALTERNATE ENTRY POINT
|
MysteryWaterFunction: ; *$3AE54 ALTERNATE ENTRY POINT
|
||||||
LDA.b #$20 : STA $02E2
|
LDA.b #$20 : STA $02E2
|
||||||
STZ $037B
|
STZ.w $037B
|
||||||
STZ $55
|
STZ.b $55
|
||||||
STZ $0360
|
STZ.w $0360
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -88,11 +75,11 @@ protectff:
|
|||||||
ASL
|
ASL
|
||||||
ASL
|
ASL
|
||||||
ASL
|
ASL
|
||||||
STA.b $06
|
STA.b Scrap06
|
||||||
|
|
||||||
LDA.b $22
|
LDA.b $22
|
||||||
AND.w #$1E00
|
AND.w #$1E00
|
||||||
ORA.b $06
|
ORA.b Scrap06
|
||||||
|
|
||||||
XBA
|
XBA
|
||||||
LSR
|
LSR
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ FrameHookAction:
|
|||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
LDA StatsLocked : BNE ++
|
LDA.l StatsLocked : BNE ++
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA LoopFrames : INC : STA LoopFrames : BNE +
|
LDA.l LoopFrames : INC : STA.l LoopFrames : BNE +
|
||||||
LDA LoopFrames+2 : INC : STA LoopFrames+2
|
LDA.l LoopFrames+2 : INC : STA.l LoopFrames+2
|
||||||
+
|
+
|
||||||
LDA $10 : CMP.w #$010E : BNE + ; move this to nmi hook?
|
LDA.l $10 : CMP.w #$010E : BNE + ; move this to nmi hook?
|
||||||
LDA MenuFrames : INC : STA MenuFrames : BNE +
|
LDA.l MenuFrames : INC : STA.l MenuFrames : BNE +
|
||||||
LDA MenuFrames+2 : INC : STA MenuFrames+2
|
LDA.l MenuFrames+2 : INC : STA.l MenuFrames+2
|
||||||
+
|
+
|
||||||
++
|
++
|
||||||
REP #$30 : PLA : PLP
|
REP #$30 : PLA : PLP
|
||||||
@@ -24,36 +24,35 @@ RTL
|
|||||||
NMIHookAction:
|
NMIHookAction:
|
||||||
PHA : PHX : PHY : PHD ; thing we wrote over, push stuff
|
PHA : PHX : PHY : PHD ; thing we wrote over, push stuff
|
||||||
|
|
||||||
LDA StatsLocked : AND.w #$00FF : BNE ++
|
LDA.l StatsLocked : AND.w #$00FF : BNE ++
|
||||||
LDA NMIFrames : INC : STA NMIFrames : BNE +
|
LDA.l NMIFrames : INC : STA.l NMIFrames : BNE +
|
||||||
LDA NMIFrames+2 : INC : STA NMIFrames+2
|
LDA.l NMIFrames+2 : INC : STA.l NMIFrames+2
|
||||||
+
|
+
|
||||||
++
|
++
|
||||||
|
|
||||||
JML.l NMIHookReturn
|
JML.l NMIHookReturn
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!NMI_AUX = "$7F5044"
|
|
||||||
PostNMIHookAction:
|
PostNMIHookAction:
|
||||||
LDA !NMI_AUX : BEQ +
|
LDA.l NMIAux : BEQ +
|
||||||
LDA $00 : PHA ; preserve DP ram
|
LDA.b Scrap00 : PHA ; preserve DP ram
|
||||||
LDA $01 : PHA
|
LDA.b Scrap01 : PHA
|
||||||
LDA $02 : PHA
|
LDA.b Scrap02 : PHA
|
||||||
|
|
||||||
LDA !NMI_AUX+2 : STA $02 ; set up jump pointer
|
LDA.l NMIAux+2 : STA.b Scrap02 ; set up jump pointer
|
||||||
LDA !NMI_AUX+1 : STA $01
|
LDA.l NMIAux+1 : STA.b Scrap01
|
||||||
LDA !NMI_AUX+0 : STA $00
|
LDA.l NMIAux+0 : STA.b Scrap00
|
||||||
|
|
||||||
PHK : PER .return-1 ; push stack for RTL return
|
PHK : PER .return-1 ; push stack for RTL return
|
||||||
JMP [$0000]
|
JMP [$0000]
|
||||||
|
|
||||||
.return
|
.return
|
||||||
LDA.b #$00 : STA !NMI_AUX ; zero bank byte of NMI hook pointer
|
LDA.b #$00 : STA.l NMIAux ; zero bank byte of NMI hook pointer
|
||||||
|
|
||||||
PLA : STA $02
|
PLA : STA.b Scrap02
|
||||||
PLA : STA $01
|
PLA : STA.b Scrap01
|
||||||
PLA : STA $00
|
PLA : STA.b Scrap00
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA $13 : STA $2100 ; thing we wrote over, turn screen back on
|
LDA.b $13 : STA.w INIDISP ; thing we wrote over, turn screen back on
|
||||||
JML.l PostNMIHookReturn
|
JML.l PostNMIHookReturn
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
;================================================================================
|
|
||||||
; Ganon Fixes
|
|
||||||
;================================================================================
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; GanonWarpRNG
|
|
||||||
; out: Accumulator - #$00 or #01 randomly, with no repeated #$01s
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;GanonWarpRNG:
|
|
||||||
; JSL GetRandomInt : AND.b #$01 : BEQ .zero
|
|
||||||
; LDA !GANON_WARP_CHAIN : EOR #$01 : STA !GANON_WARP_CHAIN
|
|
||||||
;RTL
|
|
||||||
; .zero
|
|
||||||
; STA !GANON_WARP_CHAIN
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
19
goalitem.asm
19
goalitem.asm
@@ -1,21 +1,14 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
; $7F5010 - Scratch Space (Callee Preserved)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!GOAL_DRAW_ADDRESS = "$7EC72A"
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; DrawGoalIndicator moved to newhud.asm
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
GoalItemGanonCheck:
|
GoalItemGanonCheck:
|
||||||
LDA $0E20, X : CMP.b #$D6 : BNE .success ; skip if not ganon
|
LDA.w $0E20, X : CMP.b #$D6 : BNE .success ; skip if not ganon
|
||||||
JSL.l CheckGanonVulnerability
|
JSL.l CheckGanonVulnerability
|
||||||
BCS .success
|
BCS .success
|
||||||
|
|
||||||
.fail
|
.fail
|
||||||
LDA $0D80, X : CMP.b #17 : !BLT .success ; decmial 17 because Acmlm's chart is decimal
|
LDA.w $0D80, X : CMP.b #17 : !BLT .success ; decmial 17 because Acmlm's chart is decimal
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
RTL
|
RTL
|
||||||
.success
|
.success
|
||||||
LDA $44 : CMP.b #$80 ; thing we wrote over
|
LDA.b $44 : CMP.b #$80 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;Carry clear = ganon invincible
|
;Carry clear = ganon invincible
|
||||||
@@ -182,7 +175,7 @@ CheckForCrystalBossesDefeated:
|
|||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
; count of number of bosses killed
|
; count of number of bosses killed
|
||||||
STZ.b $00
|
STZ.b Scrap00
|
||||||
|
|
||||||
LDY.w #10
|
LDY.w #10
|
||||||
|
|
||||||
@@ -202,7 +195,7 @@ CheckForCrystalBossesDefeated:
|
|||||||
AND.w #$0800
|
AND.w #$0800
|
||||||
BEQ ++
|
BEQ ++
|
||||||
|
|
||||||
INC.b $00
|
INC.b Scrap00
|
||||||
|
|
||||||
++ DEY
|
++ DEY
|
||||||
BPL .next_check
|
BPL .next_check
|
||||||
@@ -210,7 +203,7 @@ CheckForCrystalBossesDefeated:
|
|||||||
SEP #$30
|
SEP #$30
|
||||||
PLY : PLX : PLB
|
PLY : PLX : PLB
|
||||||
|
|
||||||
LDA.b $00 : CMP.l NumberOfCrystalsRequiredForGanon
|
LDA.b Scrap00 : CMP.l NumberOfCrystalsRequiredForGanon
|
||||||
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|||||||
40
hardmode.asm
40
hardmode.asm
@@ -3,22 +3,22 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
CalculateSpikeFloorDamage:
|
CalculateSpikeFloorDamage:
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #279
|
CMP.w #279
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
BNE +
|
BNE +
|
||||||
LDA.l ByrnaCaveSpikeDamage
|
LDA.l ByrnaCaveSpikeDamage
|
||||||
STA $0373
|
STA.w $0373
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA $D055, Y
|
LDA.w $D055, Y
|
||||||
STA $0373
|
STA.w $0373
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CalculateByrnaUsage:
|
CalculateByrnaUsage:
|
||||||
LDA $1B : BEQ ++
|
LDA.b $1B : BEQ ++
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #95 : BEQ + ; Ice Palace Spike Room
|
CMP.w #95 : BEQ + ; Ice Palace Spike Room
|
||||||
CMP.w #172 : BEQ + ; Blind Boss Room
|
CMP.w #172 : BEQ + ; Blind Boss Room
|
||||||
CMP.w #179 : BEQ + ; Room in Misery Mire
|
CMP.w #179 : BEQ + ; Room in Misery Mire
|
||||||
@@ -29,16 +29,16 @@ CalculateByrnaUsage:
|
|||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
PHX : TYX
|
PHX : TYX
|
||||||
LDA.l HardModeExclusionCaneOfByrnaUsage, X : STA $00
|
LDA.l HardModeExclusionCaneOfByrnaUsage, X : STA.b Scrap00
|
||||||
PLX
|
PLX
|
||||||
++
|
++
|
||||||
LDA CurrentMagic ; thing we wrote over
|
LDA.l CurrentMagic ; thing we wrote over
|
||||||
JML IncrementMagicUseCounterByrna
|
JML IncrementMagicUseCounterByrna
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CalculateCapeUsage:
|
CalculateCapeUsage:
|
||||||
LDA $1B : BEQ ++
|
LDA.b $1B : BEQ ++
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #95 : BEQ + ; Ice Palace Spike Room
|
CMP.w #95 : BEQ + ; Ice Palace Spike Room
|
||||||
CMP.w #179 : BEQ + ; Room in Misery Mire
|
CMP.w #179 : BEQ + ; Room in Misery Mire
|
||||||
CMP.w #213 : BEQ + ; Laser Bridge
|
CMP.w #213 : BEQ + ; Laser Bridge
|
||||||
@@ -48,15 +48,15 @@ CalculateCapeUsage:
|
|||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
PHX : TYX
|
PHX : TYX
|
||||||
LDA.l HardModeExclusionCapeUsage, X : STA $4C ; set cape decrement timer
|
LDA.l HardModeExclusionCapeUsage, X : STA.b $4C ; set cape decrement timer
|
||||||
PLX
|
PLX
|
||||||
++
|
++
|
||||||
JML IncrementMagicUseCounterOne
|
JML IncrementMagicUseCounterOne
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ActivateInvulnerabilityOrDont:
|
ActivateInvulnerabilityOrDont:
|
||||||
LDA $1B : BEQ .nowhere_special
|
LDA.b $1B : BEQ .nowhere_special
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #95 : BEQ .somewhere_cool ; Ice Palace Spike Room
|
CMP.w #95 : BEQ .somewhere_cool ; Ice Palace Spike Room
|
||||||
CMP.w #179 : BEQ .somewhere_cool ; Room in Misery Mire
|
CMP.w #179 : BEQ .somewhere_cool ; Room in Misery Mire
|
||||||
CMP.w #213 : BEQ .somewhere_cool ; Laser Bridge
|
CMP.w #213 : BEQ .somewhere_cool ; Laser Bridge
|
||||||
@@ -66,9 +66,9 @@ ActivateInvulnerabilityOrDont:
|
|||||||
BRA .nowhere_special
|
BRA .nowhere_special
|
||||||
.somewhere_cool
|
.somewhere_cool
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$01 : STA $037B : RTL
|
LDA.b #$01 : STA.w $037B : RTL
|
||||||
.nowhere_special
|
.nowhere_special
|
||||||
LDA.l ByrnaInvulnerability : STA $037B
|
LDA.l ByrnaInvulnerability : STA.w $037B
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetItemDamageValue:
|
GetItemDamageValue:
|
||||||
@@ -95,17 +95,17 @@ RTL
|
|||||||
;Argument : A = id we want to find return 00 if none found, 01 if found
|
;Argument : A = id we want to find return 00 if none found, 01 if found
|
||||||
SearchAncilla:
|
SearchAncilla:
|
||||||
{
|
{
|
||||||
STA $05
|
STA.b Scrap05
|
||||||
PHX
|
PHX
|
||||||
LDX #$00
|
LDX #$00
|
||||||
.loop
|
.loop
|
||||||
LDA $0C4A, X
|
LDA.w $0C4A, X
|
||||||
INX : CPX #$0A : BEQ .notFound
|
INX : CPX #$0A : BEQ .notFound
|
||||||
CMP $05 : BNE .loop
|
CMP Scrap05 : BNE .loop
|
||||||
LDA #$01
|
LDA.b #$01
|
||||||
BRA .return
|
BRA .return
|
||||||
.notFound
|
.notFound
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
.return
|
.return
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|||||||
134
hashalphabet.asm
134
hashalphabet.asm
@@ -1,41 +1,39 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;Hash Alphabet
|
; Hash Alphabet
|
||||||
!ALPHA_BOW = "#$0000"
|
; ALPHA_BOW = $0000
|
||||||
!ALPHA_BOOM = "#$0001"
|
; ALPHA_BOOM = $0001
|
||||||
!ALPHA_HOOK = "#$0002"
|
; ALPHA_HOOK = $0002
|
||||||
!ALPHA_BOMB = "#$0003"
|
; ALPHA_BOMB = $0003
|
||||||
!ALPHA_SHROOM = "#$0004"
|
; ALPHA_SHROOM = $0004
|
||||||
!ALPHA_POWDER = "#$0005"
|
; ALPHA_POWDER = $0005
|
||||||
!ALPHA_ROD = "#$0006"
|
; ALPHA_ROD = $0006
|
||||||
!ALPHA_PENDANT = "#$0007"
|
; ALPHA_PENDANT = $0007
|
||||||
!ALPHA_BOMBOS = "#$0008"
|
; ALPHA_BOMBOS = $0008
|
||||||
!ALPHA_ETHER = "#$0009"
|
; ALPHA_ETHER = $0009
|
||||||
!ALPHA_QUAKE = "#$000A"
|
; ALPHA_QUAKE = $000A
|
||||||
!ALPHA_LAMP = "#$000B"
|
; ALPHA_LAMP = $000B
|
||||||
!ALPHA_HAMMER = "#$000C"
|
; ALPHA_HAMMER = $000C
|
||||||
!ALPHA_SHOVEL = "#$000D"
|
; ALPHA_SHOVEL = $000D
|
||||||
!ALPHA_FLUTE = "#$000E"
|
; ALPHA_FLUTE = $000E
|
||||||
!ALPHA_NET = "#$000F"
|
; ALPHA_NET = $000F
|
||||||
!ALPHA_BOOK = "#$0010"
|
; ALPHA_BOOK = $0010
|
||||||
!ALPHA_BOTTLE = "#$0011"
|
; ALPHA_BOTTLE = $0011
|
||||||
!ALPHA_POTION = "#$0012"
|
; ALPHA_POTION = $0012
|
||||||
!ALPHA_CANE = "#$0013"
|
; ALPHA_CANE = $0013
|
||||||
!ALPHA_CAPE = "#$0014"
|
; ALPHA_CAPE = $0014
|
||||||
!ALPHA_MIRROR = "#$0015"
|
; ALPHA_MIRROR = $0015
|
||||||
!ALPHA_BOOTS = "#$0016"
|
; ALPHA_BOOTS = $0016
|
||||||
!ALPHA_GLOVES = "#$0017"
|
; ALPHA_GLOVES = $0017
|
||||||
!ALPHA_FLIPPERS = "#$0018"
|
; ALPHA_FLIPPERS = $0018
|
||||||
!ALPHA_PEARL = "#$0019"
|
; ALPHA_PEARL = $0019
|
||||||
!ALPHA_SHIELD = "#$001A"
|
; ALPHA_SHIELD = $001A
|
||||||
!ALPHA_TUNIC = "#$001B"
|
; ALPHA_TUNIC = $001B
|
||||||
!ALPHA_HEART = "#$001C"
|
; ALPHA_HEART = $001C
|
||||||
!ALPHA_MAP = "#$001D"
|
; ALPHA_MAP = $001D
|
||||||
!ALPHA_COMPASS = "#$001E"
|
; ALPHA_COMPASS = $001E
|
||||||
!ALPHA_KEY = "#$001F"
|
; ALPHA_KEY = $001F
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!BIGRAM = "$7EC900";
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadAlphabetTilemap:
|
LoadAlphabetTilemap:
|
||||||
PHB : PHA : PHX : PHY : PHP
|
PHB : PHA : PHX : PHY : PHP
|
||||||
@@ -45,9 +43,9 @@ LoadAlphabetTilemap:
|
|||||||
|
|
||||||
LDX.b #$00 : -
|
LDX.b #$00 : -
|
||||||
LDA.w FileSelect_PlayerSelectText_Top, X
|
LDA.w FileSelect_PlayerSelectText_Top, X
|
||||||
STA !BIGRAM, X
|
STA.l BigRAM, X
|
||||||
INX #2
|
INX #2
|
||||||
CPX #128 : !BLT -
|
CPX.b #128 : !BLT -
|
||||||
|
|
||||||
LDY.b #00
|
LDY.b #00
|
||||||
LDX.b #$00 : -
|
LDX.b #$00 : -
|
||||||
@@ -55,12 +53,12 @@ LoadAlphabetTilemap:
|
|||||||
AND.w #$001F ; mask to alphabet of 32
|
AND.w #$001F ; mask to alphabet of 32
|
||||||
|
|
||||||
ASL #3 : PHY : TAY
|
ASL #3 : PHY : TAY
|
||||||
LDA.w HashAlphabetTiles,Y : STA !BIGRAM+24, X
|
LDA.w HashAlphabetTiles,Y : STA.l BigRAM+24, X
|
||||||
LDA.w HashAlphabetTiles+2,Y : STA !BIGRAM+24+2, X
|
LDA.w HashAlphabetTiles+2,Y : STA.l BigRAM+24+2, X
|
||||||
LDA.w HashAlphabetTiles+4,Y : STA !BIGRAM+24+64, X
|
LDA.w HashAlphabetTiles+4,Y : STA.l BigRAM+24+64, X
|
||||||
LDA.w HashAlphabetTiles+6,Y : STA !BIGRAM+24+64+2, X
|
LDA.w HashAlphabetTiles+6,Y : STA.l BigRAM+24+64+2, X
|
||||||
PLY : INX #6 : INY
|
PLY : INX #6 : INY
|
||||||
CPX #25 : !BLT -
|
CPX.b #25 : !BLT -
|
||||||
|
|
||||||
SEP #$20 ; 8-bit accumulator
|
SEP #$20 ; 8-bit accumulator
|
||||||
|
|
||||||
@@ -72,38 +70,38 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DMAAlphabetTilemap:
|
DMAAlphabetTilemap:
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
LDA $4300 : PHA ; preserve DMA parameters
|
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
||||||
LDA $4301 : PHA ; preserve DMA parameters
|
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
||||||
LDA $4302 : PHA ; preserve DMA parameters
|
LDA.w A1T0L : PHA ; preserve DMA parameters
|
||||||
LDA $4303 : PHA ; preserve DMA parameters
|
LDA.w A1T0H : PHA ; preserve DMA parameters
|
||||||
LDA $4304 : PHA ; preserve DMA parameters
|
LDA.w A1B0 : PHA ; preserve DMA parameters
|
||||||
LDA $4305 : PHA ; preserve DMA parameters
|
LDA.w DAS0L : PHA ; preserve DMA parameters
|
||||||
LDA $4306 : PHA ; preserve DMA parameters
|
LDA.w DAS0H : PHA ; preserve DMA parameters
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LDA.b #$01 : STA $4300 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
LDA.b #$01 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
||||||
LDA.b #$80 : STA $2115 ; write read increment on $2119
|
LDA.b #$80 : STA.w VMAIN ; write read increment on $2119
|
||||||
LDA.b #$18 : STA $4301 ; set bus B destination to VRAM register
|
LDA.b #$18 : STA.w BBAD0 ; set bus B destination to VRAM register
|
||||||
|
|
||||||
LDA.b #$60 : STA $2116 ; write VRAM destination address
|
LDA.b #$60 : STA.w VMADDL ; write VRAM destination address
|
||||||
STA $2117 ; write VRAM destination address
|
STA.w VMADDH ; write VRAM destination address
|
||||||
|
|
||||||
LDA.b #!BIGRAM : STA $4302 ; set bus A source address to WRAM
|
LDA.b #BigRAM : STA.w A1T0L ; set bus A source address to WRAM
|
||||||
LDA.b #!BIGRAM>>8 : STA $4303 ; set bus A source address to WRAM
|
LDA.b #BigRAM>>8 : STA.w A1T0H ; set bus A source address to WRAM
|
||||||
LDA.b #!BIGRAM>>16 : STA $4304 ; set bus A source bank
|
LDA.b #BigRAM>>16 : STA.w A1B0 ; set bus A source bank
|
||||||
|
|
||||||
LDA.b #$80 : STA $4305 : STZ $4306 ; set transfer size to 0x40
|
LDA.b #$80 : STA.w DAS0L : STZ.w DAS0H ; set transfer size to 0x40
|
||||||
|
|
||||||
LDA $2100 : PHA : LDA.b #$80 : STA $2100 ; save screen state & turn screen off
|
LDA.w INIDISP : PHA : LDA.b #$80 : STA.w INIDISP ; save screen state & turn screen off
|
||||||
LDA #$01 : STA $420B ; begin DMA transfer
|
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
||||||
PLA : STA $2100 ; put screen back however it was before
|
PLA : STA.w INIDISP ; put screen back however it was before
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PLA : STA $4306 ; restore DMA parameters
|
PLA : STA.w DAS0H ; restore DMA parameters
|
||||||
PLA : STA $4305 ; restore DMA parameters
|
PLA : STA.w DAS0L ; restore DMA parameters
|
||||||
PLA : STA $4304 ; restore DMA parameters
|
PLA : STA.w A1B0 ; restore DMA parameters
|
||||||
PLA : STA $4303 ; restore DMA parameters
|
PLA : STA.w A1T0H ; restore DMA parameters
|
||||||
PLA : STA $4302 ; restore DMA parameters
|
PLA : STA.w A1T0L ; restore DMA parameters
|
||||||
PLA : STA $4301 ; restore DMA parameters
|
PLA : STA.w BBAD0 ; restore DMA parameters
|
||||||
PLA : STA $4300 ; restore DMA parameters
|
PLA : STA.w DMAP0 ; restore DMA parameters
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,106 +1,80 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!FSTILE_SPACE = "$0188"
|
!FSTILE_SPACE = $0188
|
||||||
|
|
||||||
!FSTILE_BRACKET_OPEN_TOP = "$1D8A"
|
!FSTILE_BRACKET_OPEN_TOP = $1D8A
|
||||||
!FSTILE_BRACKET_OPEN_BOTTOM = "$1D9A"
|
!FSTILE_BRACKET_OPEN_BOTTOM = $1D9A
|
||||||
|
|
||||||
!FSTILE_BRACKET_CLOSE_TOP = "$1D8B"
|
!FSTILE_BRACKET_CLOSE_TOP = $1D8B
|
||||||
!FSTILE_BRACKET_CLOSE_BOTTOM = "$1D9B"
|
!FSTILE_BRACKET_CLOSE_BOTTOM = $1D9B
|
||||||
|
|
||||||
!FSTILE_A_TOP = "$1D4A"
|
!FSTILE_A_TOP = $1D4A
|
||||||
!FSTILE_A_BOTTOM = "$1D5A"
|
!FSTILE_A_BOTTOM = $1D5A
|
||||||
|
|
||||||
!FSTILE_C_TOP = "$1D4C"
|
!FSTILE_C_TOP = $1D4C
|
||||||
!FSTILE_C_BOTTOM = "$1D5C"
|
!FSTILE_C_BOTTOM = $1D5C
|
||||||
|
|
||||||
!FSTILE_D_TOP = "$1D4D"
|
!FSTILE_D_TOP = $1D4D
|
||||||
!FSTILE_D_BOTTOM = "$1D5D"
|
!FSTILE_D_BOTTOM = $1D5D
|
||||||
|
|
||||||
!FSTILE_E_TOP = "$1D4E"
|
!FSTILE_E_TOP = $1D4E
|
||||||
!FSTILE_E_BOTTOM = "$1D5E"
|
!FSTILE_E_BOTTOM = $1D5E
|
||||||
|
|
||||||
!FSTILE_F_TOP = "$1D4F"
|
!FSTILE_F_TOP = $1D4F
|
||||||
!FSTILE_F_BOTTOM = "$1D5F"
|
!FSTILE_F_BOTTOM = $1D5F
|
||||||
|
|
||||||
!FSTILE_H_TOP = "$1D61"
|
!FSTILE_H_TOP = $1D61
|
||||||
!FSTILE_H_BOTTOM = "$1D71"
|
!FSTILE_H_BOTTOM = $1D71
|
||||||
|
|
||||||
!FSTILE_I_TOP = "$1D62"
|
!FSTILE_I_TOP = $1D62
|
||||||
!FSTILE_I_BOTTOM = "$1D72"
|
!FSTILE_I_BOTTOM = $1D72
|
||||||
|
|
||||||
!FSTILE_K_TOP = "$1D64"
|
!FSTILE_K_TOP = $1D64
|
||||||
!FSTILE_K_BOTTOM = "$1D74"
|
!FSTILE_K_BOTTOM = $1D74
|
||||||
|
|
||||||
!FSTILE_L_TOP = "$1D65"
|
!FSTILE_L_TOP = $1D65
|
||||||
!FSTILE_L_BOTTOM = "$1D75"
|
!FSTILE_L_BOTTOM = $1D75
|
||||||
|
|
||||||
!FSTILE_N_TOP = "$1D67"
|
!FSTILE_N_TOP = $1D67
|
||||||
!FSTILE_N_BOTTOM = "$1D77"
|
!FSTILE_N_BOTTOM = $1D77
|
||||||
|
|
||||||
!FSTILE_O_TOP = "$1D68"
|
!FSTILE_O_TOP = $1D68
|
||||||
!FSTILE_O_BOTTOM = "$1D78"
|
!FSTILE_O_BOTTOM = $1D78
|
||||||
|
|
||||||
!FSTILE_P_TOP = "$1D69"
|
!FSTILE_P_TOP = $1D69
|
||||||
!FSTILE_P_BOTTOM = "$1D79"
|
!FSTILE_P_BOTTOM = $1D79
|
||||||
|
|
||||||
!FSTILE_S_TOP = "$1D6C"
|
!FSTILE_S_TOP = $1D6C
|
||||||
!FSTILE_S_BOTTOM = "$1D7C"
|
!FSTILE_S_BOTTOM = $1D7C
|
||||||
|
|
||||||
!FSTILE_T_TOP = "$1D6D"
|
!FSTILE_T_TOP = $1D6D
|
||||||
!FSTILE_T_BOTTOM = "$1D7D"
|
!FSTILE_T_BOTTOM = $1D7D
|
||||||
|
|
||||||
!FSTILE_U_TOP = "$1D6E"
|
!FSTILE_U_TOP = $1D6E
|
||||||
!FSTILE_U_BOTTOM = "$1D7E"
|
!FSTILE_U_BOTTOM = $1D7E
|
||||||
|
|
||||||
!FSTILE_Y_TOP = "$1D82"
|
!FSTILE_Y_TOP = $1D82
|
||||||
!FSTILE_Y_BOTTOM = "$1D92"
|
!FSTILE_Y_BOTTOM = $1D92
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0CDE60 ; <- 65E60
|
org $0CDE60 ; <- 65E60
|
||||||
FileSelect_CopyFile_Top:
|
FileSelect_CopyFile_Top:
|
||||||
db $62, $A5, $00, $15
|
db $62, $A5, $00, $15
|
||||||
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
||||||
;dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_O_TOP, !FSTILE_SPACE, !FSTILE_P_TOP, !FSTILE_SPACE, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
;dw $1CAC, !FSTILE_SPACE, $1D23, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D04, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D07
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0CDE7A ; <- 65E7A
|
org $0CDE7A ; <- 65E7A
|
||||||
FileSelect_CopyFile_Bottom:
|
FileSelect_CopyFile_Bottom:
|
||||||
db $62, $C5, $00, $15
|
db $62, $C5, $00, $15
|
||||||
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
||||||
;dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_O_BOTTOM, !FSTILE_SPACE, !FSTILE_P_BOTTOM, !FSTILE_SPACE, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
;dw $1CBC, !FSTILE_SPACE, $1D33, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D14, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D17
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0CDE94 ; <- 65E94
|
org $0CDE94 ; <- 65E94
|
||||||
FileSelect_KillFile_Top:
|
FileSelect_KillFile_Top:
|
||||||
db $63, $25, $00, $19
|
db $63, $25, $00, $19
|
||||||
dw !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
dw !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||||
;dw !FSTILE_D_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_T_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
;dw !FSTILE_K_TOP, !FSTILE_SPACE, !FSTILE_I_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
;dw !FSTILE_K_TOP, !FSTILE_SPACE, !FSTILE_I_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, $1D04, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D07
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $0CDEB2 ; <- 65EB2
|
org $0CDEB2 ; <- 65EB2
|
||||||
FileSelect_KillFile_Bottom:
|
FileSelect_KillFile_Bottom:
|
||||||
db $63, $45, $00, $19
|
db $63, $45, $00, $19
|
||||||
dw !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
dw !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||||
;dw !FSTILE_D_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_T_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
;dw !FSTILE_K_BOTTOM, !FSTILE_SPACE, !FSTILE_I_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
;dw !FSTILE_K_BOTTOM, !FSTILE_SPACE, !FSTILE_I_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, $1D14, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D17
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $0CDDE8 ; <- 65DE8
|
|
||||||
;FileSelect_PlayerSelectText_Top:
|
|
||||||
;db $60, $62, $00, $37
|
|
||||||
;db $8A, $1D, $88, $01, $69, $1D, $88, $01, $65, $1D, $88, $01, $4A, $1D, $88, $01
|
|
||||||
;db $82, $1D, $88, $01, $4E, $1D, $88, $01, $6B, $1D, $88, $01, $88, $01, $6C, $1D
|
|
||||||
;db $88, $01, $4E, $1D, $88, $01, $65, $1D, $88, $01, $4E, $1D, $88, $01, $4C, $1D
|
|
||||||
;db $88, $01, $6D, $1D, $88, $01, $8B, $1D
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $0CDE24 ; <- 65E24
|
|
||||||
;FileSelect_PlayerSelectText_Bottom:
|
|
||||||
;db $60, $82, $00, $37
|
|
||||||
;db $9A, $1D, $88, $01, $79, $1D, $88, $01, $75, $1D, $88, $01, $5A, $1D, $88, $01
|
|
||||||
;db $92, $1D, $88, $01, $5E, $1D, $88, $01, $7B, $1D, $88, $01, $88, $01, $7C, $1D
|
|
||||||
;db $88, $01, $5E, $1D, $88, $01, $75, $1D, $88, $01, $5E, $1D, $88, $01, $5C, $1D
|
|
||||||
;db $88, $01, $7D, $1D, $88, $01, $9B, $1D
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;CopyFile_Header:
|
;CopyFile_Header:
|
||||||
org $0CE228 ; <- 66228
|
org $0CE228 ; <- 66228
|
||||||
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_O_TOP, !FSTILE_P_TOP, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP
|
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_O_TOP, !FSTILE_P_TOP, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP
|
||||||
@@ -140,10 +114,8 @@ dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_D_BOTTOM, !FSTILE_E_BOTTO
|
|||||||
;KillFile_Which:
|
;KillFile_Which:
|
||||||
org $0CE04E ; <- 6604E
|
org $0CE04E ; <- 6604E
|
||||||
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||||
;dw $0D4D, $0D4E, $0D65, $0D4E, $0D6D, $0D4E, !FSTILE_SPACE, $0D80, $0D61, $0D62, $0D4C, $0D61, !FSTILE_SPACE, $0D4F, $0D62, $0D65, $0D4E, $0D86, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
org $0CE084 ; <- 66084
|
org $0CE084 ; <- 66084
|
||||||
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||||
;dw $0D5D, $0D5E, $0D75, $0D5E, $0D7D, $0D5E, !FSTILE_SPACE, $0D90, $0D71, $0D72, $0D5C, $0D71, !FSTILE_SPACE, $0D5F, $0D72, $0D75, $0D5E, $0D96, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
|
||||||
|
|
||||||
;KillFile_Execute:
|
;KillFile_Execute:
|
||||||
org $0CD328 ; <- 65328
|
org $0CD328 ; <- 65328
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ HeartPieceGet:
|
|||||||
|
|
||||||
.skipLoad
|
.skipLoad
|
||||||
|
|
||||||
STZ $02E9 ; 0 = Receiving item from an NPC or message
|
STZ.w $02E9 ; 0 = Receiving item from an NPC or message
|
||||||
|
|
||||||
CPY.b #$26 : BNE .notHeart ; don't add a 1/4 heart if it's not a heart piece
|
CPY.b #$26 : BNE .notHeart ; don't add a 1/4 heart if it's not a heart piece
|
||||||
LDA HeartPieceQuarter : INC A : AND.b #$03 : STA HeartPieceQuarter : BNE .unfinished_heart ; add up heart quarters
|
LDA.l HeartPieceQuarter : INC A : AND.b #$03 : STA.l HeartPieceQuarter : BNE .unfinished_heart ; add up heart quarters
|
||||||
BRA .giveItem
|
BRA .giveItem
|
||||||
|
|
||||||
.notHeart
|
.notHeart
|
||||||
@@ -46,27 +46,24 @@ HeartContainerGet:
|
|||||||
|
|
||||||
BRA HeartPieceGet_skipLoad
|
BRA HeartPieceGet_skipLoad
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
DrawHeartPieceGFX:
|
DrawHeartPieceGFX:
|
||||||
PHP
|
PHP
|
||||||
JSL.l Sprite_IsOnscreen : BCC .offscreen
|
JSL.l Sprite_IsOnscreen : BCC .offscreen
|
||||||
|
|
||||||
PHA : PHY
|
PHA : PHY
|
||||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
||||||
JSL.l HeartPieceSpritePrep
|
JSL.l HeartPieceSpritePrep
|
||||||
JMP .done ; don't draw on the init frame
|
JMP .done ; don't draw on the init frame
|
||||||
|
|
||||||
.skipInit
|
.skipInit
|
||||||
LDA $0E80, X ; Retrieve stored item type
|
LDA.w $0E80, X ; Retrieve stored item type
|
||||||
|
|
||||||
.skipLoad
|
.skipLoad
|
||||||
|
|
||||||
PHA
|
PHA
|
||||||
JSL.l IsNarrowSprite : BCC +
|
JSL.l IsNarrowSprite : BCC +
|
||||||
LDA $0E60, X : ORA.b #$20 : STA $0E60, X
|
LDA.w $0E60, X : ORA.b #$20 : STA.w $0E60, X
|
||||||
+
|
+
|
||||||
;LDA $0E60, X : ORA.b #$10 : STA $0E60, X
|
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
|
|
||||||
JSL.l DrawDynamicTile
|
JSL.l DrawDynamicTile
|
||||||
@@ -78,18 +75,17 @@ DrawHeartPieceGFX:
|
|||||||
PLP
|
PLP
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
DrawHeartContainerGFX:
|
DrawHeartContainerGFX:
|
||||||
PHP
|
PHP
|
||||||
JSL.l Sprite_IsOnscreen : BCC DrawHeartPieceGFX_offscreen
|
JSL.l Sprite_IsOnscreen : BCC DrawHeartPieceGFX_offscreen
|
||||||
|
|
||||||
PHA : PHY
|
PHA : PHY
|
||||||
LDA !REDRAW : BEQ .skipInit ; skip init if already ready
|
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
||||||
JSL.l HeartContainerSpritePrep
|
JSL.l HeartContainerSpritePrep
|
||||||
BRA DrawHeartPieceGFX_done ; don't draw on the init frame
|
BRA DrawHeartPieceGFX_done ; don't draw on the init frame
|
||||||
|
|
||||||
.skipInit
|
.skipInit
|
||||||
LDA $0E80, X ; Retrieve stored item type
|
LDA.w $0E80, X ; Retrieve stored item type
|
||||||
|
|
||||||
BRA DrawHeartPieceGFX_skipLoad
|
BRA DrawHeartPieceGFX_skipLoad
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -107,7 +103,7 @@ HeartContainerSound:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
NormalItemSkipSound:
|
NormalItemSkipSound:
|
||||||
LDA $0C5E, X ; thing we wrote over
|
LDA.w $0C5E, X ; thing we wrote over
|
||||||
|
|
||||||
CPY.b #$20 : BEQ + ; Skip for Crystal
|
CPY.b #$20 : BEQ + ; Skip for Crystal
|
||||||
CPY.b #$37 : BEQ + ; Skip for Pendants
|
CPY.b #$37 : BEQ + ; Skip for Pendants
|
||||||
@@ -115,7 +111,7 @@ NormalItemSkipSound:
|
|||||||
CPY.b #$39 : BEQ +
|
CPY.b #$39 : BEQ +
|
||||||
|
|
||||||
PHA
|
PHA
|
||||||
JSL.l CheckIfBossRoom
|
JSL.l CheckIfBossRoom
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
@@ -123,58 +119,56 @@ RTL
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HeartUpgradeSpawnDecision: ; this should return #$00 to make the hp spawn
|
HeartUpgradeSpawnDecision: ; this should return #$00 to make the hp spawn
|
||||||
LDA !FORCE_HEART_SPAWN : BEQ .normal_behavior
|
LDA.l ForceHeartSpawn : BEQ .normal_behavior
|
||||||
|
|
||||||
DEC : STA !FORCE_HEART_SPAWN
|
DEC : STA.l ForceHeartSpawn
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.normal_behavior
|
.normal_behavior
|
||||||
LDA OverworldEventDataWRAM, X
|
LDA.l OverworldEventDataWRAM, X
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SaveHeartCollectedStatus:
|
SaveHeartCollectedStatus:
|
||||||
LDA !SKIP_HEART_SAVE : BEQ .normal_behavior
|
LDA.l SkipHeartSave : BEQ .normal_behavior
|
||||||
|
|
||||||
DEC : STA !SKIP_HEART_SAVE
|
DEC : STA.l SkipHeartSave
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.normal_behavior
|
.normal_behavior
|
||||||
LDA OverworldEventDataWRAM, X : ORA.b #$40 : STA OverworldEventDataWRAM, X
|
LDA.l OverworldEventDataWRAM, X : ORA.b #$40 : STA.l OverworldEventDataWRAM, X
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
HeartPieceSpritePrep:
|
HeartPieceSpritePrep:
|
||||||
PHA
|
PHA
|
||||||
|
|
||||||
LDA ServerRequestMode : BEQ + : : +
|
LDA.l ServerRequestMode : BEQ + : : +
|
||||||
|
|
||||||
LDA #$01 : STA !REDRAW
|
LDA.b #$01 : STA.l RedrawFlag
|
||||||
LDA $5D : CMP #$14 : BEQ .skip ; skip if we're mid-mirror
|
LDA.b $5D : CMP.b #$14 : BEQ .skip ; skip if we're mid-mirror
|
||||||
|
|
||||||
LDA #$00 : STA !REDRAW
|
LDA.b #$00 : STA.l RedrawFlag
|
||||||
JSL.l LoadHeartPieceRoomValue ; load item type
|
JSL.l LoadHeartPieceRoomValue ; load item type
|
||||||
STA $0E80, X ; Store item type
|
STA.w $0E80, X ; Store item type
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile
|
||||||
|
|
||||||
.skip
|
.skip
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
HeartContainerSpritePrep:
|
HeartContainerSpritePrep:
|
||||||
PHA
|
PHA
|
||||||
|
|
||||||
LDA #$00 : STA !REDRAW
|
LDA.b #$00 : STA.l RedrawFlag
|
||||||
JSL.l LoadHeartContainerRoomValue ; load item type
|
JSL.l LoadHeartContainerRoomValue ; load item type
|
||||||
STA $0E80, X ; Store item type
|
STA.w $0E80, X ; Store item type
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadHeartPieceRoomValue:
|
LoadHeartPieceRoomValue:
|
||||||
LDA $1B : BEQ .outdoors ; check if we're indoors or outdoors
|
LDA.b $1B : BEQ .outdoors ; check if we're indoors or outdoors
|
||||||
.indoors
|
.indoors
|
||||||
JSL.l LoadIndoorValue
|
JSL.l LoadIndoorValue
|
||||||
JMP .done
|
JMP .done
|
||||||
@@ -183,38 +177,37 @@ LoadHeartPieceRoomValue:
|
|||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
HPItemReset:
|
HPItemReset:
|
||||||
JSL $09AD58 ; GiveRupeeGift - thing we wrote over
|
JSL $09AD58 ; GiveRupeeGift - thing we wrote over
|
||||||
PHA : LDA #$01 : STA !REDRAW : PLA
|
PHA : LDA.b #$01 : STA.l RedrawFlag : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybeMarkDigSpotCollected:
|
MaybeMarkDigSpotCollected:
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
LDA $1B : BNE +
|
LDA.b $1B : BNE +
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $8A
|
LDA.b $8A
|
||||||
CMP.w #$2A : BNE +
|
CMP.w #$2A : BNE +
|
||||||
LDA HasGroveItem : ORA.w #$0001 : STA HasGroveItem
|
LDA.l HasGroveItem : ORA.w #$0001 : STA.l HasGroveItem
|
||||||
+
|
+
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro GetPossiblyEncryptedItem(ItemLabel,TableLabel)
|
macro GetPossiblyEncryptedItem(ItemLabel,TableLabel)
|
||||||
LDA IsEncrypted : BNE ?encrypted
|
LDA.l IsEncrypted : BNE ?encrypted
|
||||||
LDA.l <ItemLabel>
|
LDA.l <ItemLabel>
|
||||||
BRA ?done
|
BRA ?done
|
||||||
?encrypted:
|
?encrypted:
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
REP #$30 ; set 16-bit accumulator & index registers
|
REP #$30 ; set 16-bit accumulator & index registers
|
||||||
LDA $00 : PHA : LDA $02 : PHA
|
LDA.b Scrap00 : PHA : LDA.b Scrap02 : PHA
|
||||||
|
|
||||||
LDA.w #<TableLabel> : STA $00
|
LDA.w #<TableLabel> : STA.b Scrap00
|
||||||
LDA.w #<TableLabel>>>16 : STA $02
|
LDA.w #<TableLabel>>>16 : STA.b Scrap02
|
||||||
LDA.w #<ItemLabel>-<TableLabel>
|
LDA.w #<ItemLabel>-<TableLabel>
|
||||||
JSL RetrieveValueFromEncryptedTable
|
JSL RetrieveValueFromEncryptedTable
|
||||||
|
|
||||||
PLX : STX $02 : PLX : STX $01
|
PLX : STX.b Scrap02 : PLX : STX.b Scrap01
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
?done:
|
?done:
|
||||||
endmacro
|
endmacro
|
||||||
@@ -222,7 +215,7 @@ endmacro
|
|||||||
LoadIndoorValue:
|
LoadIndoorValue:
|
||||||
PHP
|
PHP
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #225 : BNE +
|
CMP.w #225 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Forest_Thieves, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Forest_Thieves, HeartPieceIndoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
@@ -233,7 +226,7 @@ LoadIndoorValue:
|
|||||||
%GetPossiblyEncryptedItem(HeartPiece_Spectacle_Cave, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Spectacle_Cave, HeartPieceIndoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.w #283 : BNE +
|
+ CMP.w #283 : BNE +
|
||||||
LDA $22 : XBA : AND.w #$0001 ; figure out where link is
|
LDA.b $22 : XBA : AND.w #$0001 ; figure out where link is
|
||||||
BNE ++
|
BNE ++
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Circle_Bushes, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Circle_Bushes, HeartPieceIndoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
@@ -247,7 +240,7 @@ LoadIndoorValue:
|
|||||||
%GetPossiblyEncryptedItem(HeartPiece_Smith_Pegs, HeartPieceIndoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Smith_Pegs, HeartPieceIndoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.w #135 : BNE +
|
+ CMP.w #135 : BNE +
|
||||||
LDA StandingKey_Hera
|
LDA.l StandingKey_Hera
|
||||||
JMP .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.w #$0017 ; default to a normal hp
|
LDA.w #$0017 ; default to a normal hp
|
||||||
@@ -267,9 +260,9 @@ RTL
|
|||||||
LoadOutdoorValue:
|
LoadOutdoorValue:
|
||||||
PHP
|
PHP
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $8A
|
LDA.b $8A
|
||||||
CMP.w #$03 : BNE +
|
CMP.w #$03 : BNE +
|
||||||
LDA $22 : CMP.w #1890 : !BLT ++
|
LDA.b $22 : CMP.w #1890 : !BLT ++
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Spectacle, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Spectacle, HeartPieceOutdoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
++
|
++
|
||||||
@@ -285,7 +278,7 @@ LoadOutdoorValue:
|
|||||||
%GetPossiblyEncryptedItem(HauntedGroveItem, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HauntedGroveItem, HeartPieceOutdoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.w #$30 : BNE +
|
+ CMP.w #$30 : BNE +
|
||||||
LDA $22 : CMP.w #512 : !BGE ++
|
LDA.b $22 : CMP.w #512 : !BGE ++
|
||||||
%GetPossiblyEncryptedItem(HeartPiece_Desert, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Desert, HeartPieceOutdoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
++
|
++
|
||||||
@@ -335,7 +328,7 @@ LoadHeartContainerRoomValue:
|
|||||||
LoadBossValue:
|
LoadBossValue:
|
||||||
PHP
|
PHP
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #200 : BNE +
|
CMP.w #200 : BNE +
|
||||||
%GetPossiblyEncryptedItem(HeartContainer_ArmosKnights, HeartContainerBossValues)
|
%GetPossiblyEncryptedItem(HeartContainer_ArmosKnights, HeartContainerBossValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
@@ -378,7 +371,7 @@ CheckIfBossRoom:
|
|||||||
; Carry set if we're in a boss room, unset otherwise.
|
; Carry set if we're in a boss room, unset otherwise.
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #200 : BEQ .done
|
CMP.w #200 : BEQ .done
|
||||||
CMP.w #51 : BEQ .done
|
CMP.w #51 : BEQ .done
|
||||||
CMP.w #7 : BEQ .done
|
CMP.w #7 : BEQ .done
|
||||||
|
|||||||
169
hooks.asm
169
hooks.asm
@@ -70,8 +70,6 @@ JSL.l OnDungeonEntrance
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; D-Pad Invert
|
; D-Pad Invert
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0083D9 ; <- 3D9 - Bank00.asm : 611 (LDA $4219 : STA $01)
|
|
||||||
;JSL.l InvertDPad : NOP
|
|
||||||
org $0083D1 ; <- 3D1 - Bank00.asm (STZ.w JOYPAD - useless instruction here)
|
org $0083D1 ; <- 3D1 - Bank00.asm (STZ.w JOYPAD - useless instruction here)
|
||||||
JML.l InvertDPad : SKIP 9
|
JML.l InvertDPad : SKIP 9
|
||||||
InvertDPadReturn:
|
InvertDPadReturn:
|
||||||
@@ -361,11 +359,10 @@ JSL.l NewBatInit
|
|||||||
org $06EDB5 ;<- 36DBE - Bank06.asm : 4882 (LDA $7F6000, X : STA $02)
|
org $06EDB5 ;<- 36DBE - Bank06.asm : 4882 (LDA $7F6000, X : STA $02)
|
||||||
JSL.l LookupDamageLevel
|
JSL.l LookupDamageLevel
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!StalfosBombDamage = "$7F509D"
|
org $1EAB5E ;<- F2B5E - sprite_stalfos_knight.asm : 135 (LDA.b #$00 : STA $7F6918)
|
||||||
org $1eab5e ;<- F2B5E - sprite_stalfos_knight.asm : 135 (LDA.b #$00 : STA $7F6918)
|
STA.l StalfosBombDamage
|
||||||
STA.l !StalfosBombDamage
|
org $1EAAD6 ;<- F2AB6 - sprite_stalfos_knight.asm : 32 (LDA.b #$02 : STA $7F6918)
|
||||||
org $1eaad6 ;<- F2AB6 - sprite_stalfos_knight.asm : 32 (LDA.b #$02 : STA $7F6918)
|
STA.l StalfosBombDamage
|
||||||
STA.l !StalfosBombDamage
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -810,10 +807,6 @@ dw $0000, $0002, $0004, $0032, $0004, $0006, $0030
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Accessibility
|
; Accessibility
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0AC574 ; <- 54574 - Bank0A.asm : 1797 (LDA $0D : STA $0802, X)
|
|
||||||
;JSL FlipGreenPendant
|
|
||||||
;NOP #6
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $02A3F4 ; <- 123F4 - Bank02.asm : 6222 (LDA.b #$72 : BRA .setBrightness)
|
org $02A3F4 ; <- 123F4 - Bank02.asm : 6222 (LDA.b #$72 : BRA .setBrightness)
|
||||||
BRA + : NOP #2 : +
|
BRA + : NOP #2 : +
|
||||||
org $02A3FD ; <- 123FD - Bank02.asm : 6233 (LDA.b #$32 : STA $9a)
|
org $02A3FD ; <- 123FD - Bank02.asm : 6233 (LDA.b #$32 : STA $9a)
|
||||||
@@ -874,21 +867,11 @@ db $B1, $C6, $F9, $C9, $C6, $F9 ; data insert - 2 chests, fat fairy room
|
|||||||
org $01E97E ; <- E97E ($280016, $250016)
|
org $01E97E ; <- E97E ($280016, $250016)
|
||||||
dl $080116, $070116; <- E97E
|
dl $080116, $070116; <- E97E
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $06C9BC ; <- 349BC - sprite_ponds.asm : 1066
|
|
||||||
;org $06C9C0 ; <- 349C0 - sprite_ponds.asm : 1068
|
|
||||||
;org $06C926 ; <- 34926 - sprite_ponds.asm : 945
|
|
||||||
;JML.l GetFairySword
|
|
||||||
;NOP #12
|
|
||||||
org $06C936 ; <- 34936 - sprite_ponds.asm : 952
|
org $06C936 ; <- 34936 - sprite_ponds.asm : 952
|
||||||
PyramidFairy_BRANCH_IOTA:
|
PyramidFairy_BRANCH_IOTA:
|
||||||
org $06C948 ; <- 34948 - sprite_ponds.asm : 961
|
org $06C948 ; <- 34948 - sprite_ponds.asm : 961
|
||||||
PyramidFairy_BRANCH_GAMMA:
|
PyramidFairy_BRANCH_GAMMA:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0EF7BD ; <- 777BD - sprite_ponds.asm : 1890 (LDA $7EF340, X : BMI .invalidValue : BNE VWF_ChangeItemTiles)
|
|
||||||
;JSL.l ReadInventoryPond
|
|
||||||
;org $0EF7E4 ; <- 777E4 - sprite_ponds.asm : 1922 (LDA $7EF340, X : BMI .invalidValue : BNE VWF_ChangeItemTiles)
|
|
||||||
;JSL.l ReadInventoryPond
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $1EE16E ; <- F616E - sprite_bomb_shop_entity.asm : 73
|
org $1EE16E ; <- F616E - sprite_bomb_shop_entity.asm : 73
|
||||||
NOP #8 ; fix bomb shop dialog for dwarfless big bomb
|
NOP #8 ; fix bomb shop dialog for dwarfless big bomb
|
||||||
org $068A14 ; <- 30A14 - sprite_prep.asm : 716
|
org $068A14 ; <- 30A14 - sprite_prep.asm : 716
|
||||||
@@ -957,9 +940,6 @@ db $03 ; fade out speed. Should be power of 2 minus 1
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; New Items
|
; New Items
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $07B57B ; <- 3B57B - Bank07.asm : 8523 (BMI .cantOpen)
|
|
||||||
;NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $07B574 ; <- 3B574 - Bank07.asm : 8519 (LDA.b #$01 : STA $02E9)
|
org $07B574 ; <- 3B574 - Bank07.asm : 8519 (LDA.b #$01 : STA $02E9)
|
||||||
JSL.l ChestPrep
|
JSL.l ChestPrep
|
||||||
NOP #3
|
NOP #3
|
||||||
@@ -1037,15 +1017,9 @@ LDA.w BottleListExpanded, X
|
|||||||
org $09895C ; 4895C - ancilla_init.asm:1344 (LDA PotionList, X)
|
org $09895C ; 4895C - ancilla_init.asm:1344 (LDA PotionList, X)
|
||||||
LDA.w PotionListExpanded, X
|
LDA.w PotionListExpanded, X
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $098A36 ; <- 48A36 - ancilla_init.asm:1432 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72)
|
|
||||||
;LDA AddReceivedItemExpanded_item_graphics_indices, Y
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $06D1EB ; 351EB - sprite_absorbable.asm:364 (STA $7EF375) ; bugbug commented out until i figure out why it doesn't work
|
org $06D1EB ; 351EB - sprite_absorbable.asm:364 (STA $7EF375) ; bugbug commented out until i figure out why it doesn't work
|
||||||
JSL HandleBombAbsorbtion
|
JSL HandleBombAbsorbtion
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $09873F ; <- 04873F - ancilla_init.asm : 960 (ADC [$00] : STA [$00] )
|
|
||||||
;JSL.l AddToStock
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Kholdstare Shell Fix
|
; Kholdstare Shell Fix
|
||||||
@@ -1061,14 +1035,6 @@ LDA.w #$00B0
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Potion Refill Fixes
|
; Potion Refill Fixes
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0DF1B3 ; <- 6F1B3 - headsup_display.asm:492 - (SEP #$30)
|
|
||||||
;JSL.l RefillMagic
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $0DF128 ; <- 6F128 - headsup_display.asm:407 - (LDA $7EF36D : CMP $7EF36C : BCC .refillAllHealth)
|
|
||||||
;JSL.l RefillHealth
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $00F8FB ; <- 78FB - Bank00.asm:8507 - (JSL HUD.RefillHealth : BCC BRANCH_ALPHA)
|
org $00F8FB ; <- 78FB - Bank00.asm:8507 - (JSL HUD.RefillHealth : BCC BRANCH_ALPHA)
|
||||||
JSL.l RefillHealth
|
JSL.l RefillHealth
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1119,36 +1085,9 @@ db 80 ; BRA
|
|||||||
org $05DA81 ; <- 2DA81 - sprite_uncle_and_priest.asm : 65 (BCC .dontHaveMasterSword)
|
org $05DA81 ; <- 2DA81 - sprite_uncle_and_priest.asm : 65 (BCC .dontHaveMasterSword)
|
||||||
db 80 ; BRA
|
db 80 ; BRA
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $05DE1D ; <- 2DE1D - sprite_uncle_and_priest.asm : 725 (LDA.b #$A0 : STA $7EF372)
|
|
||||||
;JSL.l RefillHealthPlusMagic8bit
|
|
||||||
;NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $05DEF8 ; <- 2DEF8 - sprite_uncle_and_priest.asm : 917 (LDA.b #$05)
|
org $05DEF8 ; <- 2DEF8 - sprite_uncle_and_priest.asm : 917 (LDA.b #$05)
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $1EEAB6 ; <- F6AB6 - sprite_old_mountain_man.asm : 338 (LDA.b #$A0 : STA $7EF372)
|
|
||||||
;JSL.l RefillHealthPlusMagic8bit
|
|
||||||
;NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $01E5B2 ; <- E5B8 - lower pot link's house
|
|
||||||
;db $14 ; fairy
|
|
||||||
;org $01E5B5 ; <- E5B8 - lower pot link's house
|
|
||||||
;db $14 ; fairy
|
|
||||||
;org $01E5B8 ; <- E5B8 - lower pot link's house
|
|
||||||
;db $0D ; big magic
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Ganon's Tower Basement Door Fix
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $1FF3F4 ; <- 0FF3F4
|
|
||||||
;db $00
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; Misery Mire Basement Door Fix
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $1FB8E4 ; <- 0FB8E4
|
|
||||||
;db $00
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;0xFE465 -> 0x1E
|
;0xFE465 -> 0x1E
|
||||||
org $1FE465
|
org $1FE465
|
||||||
db #$1E
|
db #$1E
|
||||||
@@ -1208,7 +1147,6 @@ org $0DDF38 ; <- 6DF38 - equipment.asm : 480
|
|||||||
JSL.l ProcessMenuButtons
|
JSL.l ProcessMenuButtons
|
||||||
BCC _equipment_497
|
BCC _equipment_497
|
||||||
JMP.w _equipment_544
|
JMP.w _equipment_544
|
||||||
;NOP #7
|
|
||||||
ResetEquipment:
|
ResetEquipment:
|
||||||
JSR.w RestoreNormalMenu ; (short)
|
JSR.w RestoreNormalMenu ; (short)
|
||||||
RTL
|
RTL
|
||||||
@@ -1217,16 +1155,10 @@ NOP #3
|
|||||||
warnpc $0DDF49
|
warnpc $0DDF49
|
||||||
org $0DDF49 ; <- 6DF49 - equipment.asm : 497
|
org $0DDF49 ; <- 6DF49 - equipment.asm : 497
|
||||||
_equipment_497: ; LDA $F4 : AND.b #$08 : BEQ .notPressingUp - NO BUTTON CAPTURE
|
_equipment_497: ; LDA $F4 : AND.b #$08 : BEQ .notPressingUp - NO BUTTON CAPTURE
|
||||||
;org $0DDF7E ; <- 6DF7E - equipment.asm : 539
|
|
||||||
org $0DDF88 ; <- 6DF88 - equipment.asm : 544
|
org $0DDF88 ; <- 6DF88 - equipment.asm : 544
|
||||||
;org $0DE10E ; <- 6E10E - equipment.asm : 806
|
|
||||||
_equipment_544:
|
_equipment_544:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0DEB98 ; <- 6EB98 - equipment.asm : 1803
|
org $0DEB98 ; <- 6EB98 - equipment.asm : 1803
|
||||||
;LDA.w #$3C60 : STA $FFBE, Y
|
|
||||||
;ORA.w #$4000 : STA $FFC4, Y
|
|
||||||
;ORA.w #$8000 : STA $0084, Y
|
|
||||||
;EOR.w #$4000 : STA $007E, Y
|
|
||||||
LDA.w #$3C60 : STA $FFBE, Y
|
LDA.w #$3C60 : STA $FFBE, Y
|
||||||
ORA.w #$8000 : STA $007E, Y
|
ORA.w #$8000 : STA $007E, Y
|
||||||
ORA.w #$4000 : STA $0084, Y
|
ORA.w #$4000 : STA $0084, Y
|
||||||
@@ -1248,9 +1180,6 @@ dw #$2C4F ; (Orig: #$6C78)
|
|||||||
org $0DF8A1+6+16 ; red mail tile, lower right
|
org $0DF8A1+6+16 ; red mail tile, lower right
|
||||||
dw #$242F ; (Orig: #$6478)
|
dw #$242F ; (Orig: #$6478)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0DDE9B ; <- 6DE9B equipment.asm:296 - LDA $0202 : CMP.b #$10 : BNE .notOnBottleMenu (CMP instruction)
|
|
||||||
;CMP.b #$FF
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $0DDE9F ; <- 6DE9F equipment.asm:300 - LDA.b #$0A : STA $0200
|
org $0DDE9F ; <- 6DE9F equipment.asm:300 - LDA.b #$0A : STA $0200
|
||||||
LDA.b #$04
|
LDA.b #$04
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1312,16 +1241,11 @@ NOP #5
|
|||||||
org $07A379 ; <- 3A379 - Bank07.asm : 5687
|
org $07A379 ; <- 3A379 - Bank07.asm : 5687
|
||||||
JSL.l SpawnHauntedGroveItem
|
JSL.l SpawnHauntedGroveItem
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $07A303 ; 3A303 - Bank07.asm : 5622
|
|
||||||
;JSL.l FixShovelLock
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $07A3A2 ; 3A3A2 - Bank07.asm : 5720 - JSL DiggingGameGuy_AttemptPrizeSpawn
|
org $07A3A2 ; 3A3A2 - Bank07.asm : 5720 - JSL DiggingGameGuy_AttemptPrizeSpawn
|
||||||
JSL.l SpawnShovelItem
|
JSL.l SpawnShovelItem
|
||||||
BRA _Bank07_5726
|
BRA _Bank07_5726
|
||||||
org $07A3AB ; 3A3AB - Bank07.asm : 5726 - LDA.b #$12 : JSR Player_DoSfx2
|
org $07A3AB ; 3A3AB - Bank07.asm : 5726 - LDA.b #$12 : JSR Player_DoSfx2
|
||||||
_Bank07_5726:
|
_Bank07_5726:
|
||||||
;org $07A381 ; 3A381 - Bank07.asm : 5693 - ORA $035B
|
|
||||||
;ORA $035B
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $079A0E ; 39A0E - Bank07.asm : 4117 - JSL HUD.RefreshIconLong
|
org $079A0E ; 39A0E - Bank07.asm : 4117 - JSL HUD.RefreshIconLong
|
||||||
JSL.l Link_ReceiveItem_HUDRefresh
|
JSL.l Link_ReceiveItem_HUDRefresh
|
||||||
@@ -1358,10 +1282,6 @@ JSL.l ItemCheck_BombosTablet
|
|||||||
org $05F285 ; <- 2F285
|
org $05F285 ; <- 2F285
|
||||||
JSL.l ItemCheck_EtherTablet
|
JSL.l ItemCheck_EtherTablet
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $098BCC ; <- 48BCC - ancilla_init.asm : 1679 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72)
|
|
||||||
;;JSL.l SetTabletItem
|
|
||||||
;JSL SpawnTabletItem : PLX : PLB : RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $07859F ; <- 3859F - Bank07.asm : 965 (JSL AddPendantOrCrystal)
|
org $07859F ; <- 3859F - Bank07.asm : 965 (JSL AddPendantOrCrystal)
|
||||||
JSL SpawnTabletItem
|
JSL SpawnTabletItem
|
||||||
org $07862A ; <- 3862A - Bank07.asm : 1064 (JSL AddPendantOrCrystal)
|
org $07862A ; <- 3862A - Bank07.asm : 1064 (JSL AddPendantOrCrystal)
|
||||||
@@ -1441,9 +1361,6 @@ JSL RNG_Ganon_Extra_Warp
|
|||||||
org $1D9488 ; <- E9488 - sprite_ganon.asm
|
org $1D9488 ; <- E9488 - sprite_ganon.asm
|
||||||
JSL RNG_Ganon
|
JSL RNG_Ganon
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $01EDB2 ; <- EDB2 - Bank01.asm : 14038
|
|
||||||
;INC $04C4
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $05A3F4 ; <- 2A3F4 - sprite_lanmola.asm : 112 (JSL GetRandomInt : AND.b #$07 : TAY)
|
org $05A3F4 ; <- 2A3F4 - sprite_lanmola.asm : 112 (JSL GetRandomInt : AND.b #$07 : TAY)
|
||||||
JSL.l RNG_Lanmolas1
|
JSL.l RNG_Lanmolas1
|
||||||
org $05A401 ; <- 2A401 - sprite_lanmola.asm : 116 (JSL GetRandomInt : AND.b #$07 : TAY)
|
org $05A401 ; <- 2A401 - sprite_lanmola.asm : 116 (JSL GetRandomInt : AND.b #$07 : TAY)
|
||||||
@@ -1528,22 +1445,11 @@ ReturnFromOnDrawHud:
|
|||||||
SEP #$30
|
SEP #$30
|
||||||
LDX.b #$FF ; vanilla hud code ends with #$FF in X, and it's required for unknown reasons.
|
LDX.b #$FF ; vanilla hud code ends with #$FF in X, and it's required for unknown reasons.
|
||||||
|
|
||||||
|
|
||||||
;org $0DFD0A ; <- 6FD0A - headsup_display.asm : 900
|
|
||||||
;STA $7EC766 ; nudge key digit right
|
|
||||||
|
|
||||||
;org $0DFD13 ; <- 6FD13 - headsup_display.asm : 905
|
|
||||||
;STA $7EC726 ; key icon blank
|
|
||||||
|
|
||||||
org $0DFC37 ; <- 6FC37 - headsup_display.asm : 828 (LDA.w #$28F7)
|
org $0DFC37 ; <- 6FC37 - headsup_display.asm : 828 (LDA.w #$28F7)
|
||||||
JSL.l DrawMagicHeader
|
JSL.l DrawMagicHeader
|
||||||
BRA + : NOP #15 : +
|
BRA + : NOP #15 : +
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0DFB29 ; <- headsup_display.asm : 688 (LDA.b #$86 : STA $7EC71E)
|
org $0DFB29 ; <- headsup_display.asm : 688 (LDA.b #$86 : STA $7EC71E)
|
||||||
;LDA.b #$86 : STA $7EC720 ; nudge silver arrow right - remember to update this in newit
|
|
||||||
;LDA.b #$24 : STA $7EC721
|
|
||||||
;LDA.b #$87 : STA $7EC722
|
|
||||||
;LDA.b #$24 : STA $7EC723
|
|
||||||
JSL.l DrawHUDArrows : BRA +
|
JSL.l DrawHUDArrows : BRA +
|
||||||
NOP #18
|
NOP #18
|
||||||
+
|
+
|
||||||
@@ -1653,16 +1559,16 @@ JSL.l EndingMusicWait
|
|||||||
|
|
||||||
; Process music commands in NMI from new location after muting is processed
|
; Process music commands in NMI from new location after muting is processed
|
||||||
org $0080DD
|
org $0080DD
|
||||||
dw !REG_MUSIC_CONTROL
|
dw MusicControl
|
||||||
|
|
||||||
org $008101
|
org $008101
|
||||||
dw !REG_MUSIC_CONTROL
|
dw MusicControl
|
||||||
|
|
||||||
org $09F512
|
org $09F512
|
||||||
dw !REG_MUSIC_CONTROL
|
dw MusicControl
|
||||||
|
|
||||||
org $0CF05F
|
org $0CF05F
|
||||||
dw !REG_MUSIC_CONTROL
|
dw MusicControl
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -1704,9 +1610,6 @@ JSL.l FixAga2Bunny : NOP
|
|||||||
org $05DF65 ; <- 2DF65 - sprite_uncle_and_priest.asm:994 - (LDA.b #$01 : STA $7EF3C5)
|
org $05DF65 ; <- 2DF65 - sprite_uncle_and_priest.asm:994 - (LDA.b #$01 : STA $7EF3C5)
|
||||||
NOP #6
|
NOP #6
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0280DD ; <- 100DD - Bank02.asm:298 - (LDA $7EF3C5 : CMP.b #$02 : BCC .indoors)
|
|
||||||
;JSL.l ForceLinksHouse
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $05EDDF ; <- 2EDDF - sprite_zelda.asm:398 - (LDA.b #$02 : STA $7EF3C5)
|
org $05EDDF ; <- 2EDDF - sprite_zelda.asm:398 - (LDA.b #$02 : STA $7EF3C5)
|
||||||
JSL.l EndRainState : NOP #2
|
JSL.l EndRainState : NOP #2
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1745,10 +1648,6 @@ JSL.l HUDRebuildIndoorHole
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Pendant / Crystal Fixes
|
; Pendant / Crystal Fixes
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $0DE9C8 ; <- 6E9C8 - original check for agahnim 1 being defeated
|
|
||||||
;;LDA $7EF3CA : CMP.b #$40 ; check for dark world instead
|
|
||||||
;JSL.l CheckPendantHUD
|
|
||||||
;NOP #2
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $098BB0 ; <- 048BB0 - ancilla_init.asm:1663 - (STX $02D8 : JSR AddAncilla)
|
org $098BB0 ; <- 048BB0 - ancilla_init.asm:1663 - (STX $02D8 : JSR AddAncilla)
|
||||||
JSL.l TryToSpawnCrystalUntilSuccess
|
JSL.l TryToSpawnCrystalUntilSuccess
|
||||||
@@ -1772,15 +1671,6 @@ JSL.l ShowDungeonItems : NOP #5
|
|||||||
org $0DEF3B ; <- 6EF3B - equipment.asm:2290 - (LDA $040C : AND.w #$00FF : CMP.w #$00FF : BEQ .notInPalace)
|
org $0DEF3B ; <- 6EF3B - equipment.asm:2290 - (LDA $040C : AND.w #$00FF : CMP.w #$00FF : BEQ .notInPalace)
|
||||||
JSL.l ShowDungeonItems : NOP #5
|
JSL.l ShowDungeonItems : NOP #5
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $0DEA5F ; <- 6EA5F - equipment.asm:1679 - (SEP #$30)
|
|
||||||
;NOP #5
|
|
||||||
;JMP .skipCrystalInit
|
|
||||||
;org $0DEAA4 ; <- 6EAA4 - equipment.asm:1706 - (LDA $7EF37A : AND.w #$0001)
|
|
||||||
;.skipCrystalInit
|
|
||||||
;================================================================================
|
|
||||||
org $0DE9D8 ; <- 6E9D8 - equipment.asm:1635 - (LDA $E860, X : STA $12EA, X)
|
|
||||||
org $0DEA15 ; <- 6EA15 - equipment.asm:1647 - (LDA.w #$13B2 : STA $00)
|
|
||||||
;================================================================================
|
|
||||||
org $00F97E ; <- 797E - Bank00.asm:8586 - (LDA $7EF3CA : EOR.b #$40 : STA $7EF3CA)
|
org $00F97E ; <- 797E - Bank00.asm:8586 - (LDA $7EF3CA : EOR.b #$40 : STA $7EF3CA)
|
||||||
JSL.l FlipLWDWFlag : NOP #6
|
JSL.l FlipLWDWFlag : NOP #6
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -1796,11 +1686,6 @@ LDA CrystalPendantFlags_2, X
|
|||||||
;Kill enemy to clear level
|
;Kill enemy to clear level
|
||||||
org $01C715 ; <- C715 - Bank01.asm:10358 - (LDA $7EF3CA : BNE .inDarkWorld)
|
org $01C715 ; <- C715 - Bank01.asm:10358 - (LDA $7EF3CA : BNE .inDarkWorld)
|
||||||
LDA CrystalPendantFlags_2, X
|
LDA CrystalPendantFlags_2, X
|
||||||
;JSL.l GetPendantCrystalWorld
|
|
||||||
;================================================================================
|
|
||||||
;org $0AC5C3 ; <- 545C3 - Bank0A.asm:1859 - (LDA $7EF374 : AND $0AC5A6, X : BEQ .fail)
|
|
||||||
;NOP #10
|
|
||||||
;CLC
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $0AC5BB ; < 545BB - Bank0A.asm:1856 - (LDA $7EF3C7 : CMP.b #$03 : BNE .fail)
|
org $0AC5BB ; < 545BB - Bank0A.asm:1856 - (LDA $7EF3C7 : CMP.b #$03 : BNE .fail)
|
||||||
JSL.l OverworldMap_CheckObject : RTS
|
JSL.l OverworldMap_CheckObject : RTS
|
||||||
@@ -1878,8 +1763,6 @@ JSL.l GetMapMode
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
org $0AC012 ; <- 54012 - Bank0A.asm:1039 (LDA $7EF2DB : AND.b #$20 : BNE BRANCH_DELTA)
|
org $0AC012 ; <- 54012 - Bank0A.asm:1039 (LDA $7EF2DB : AND.b #$20 : BNE BRANCH_DELTA)
|
||||||
NOP #8
|
NOP #8
|
||||||
;org $0AC012 ; <- 54012 - Bank0A.asm:1039 - (LDA $7EF2DB)
|
|
||||||
;JSL.l OnLoadMap
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $028B8F ; <- 10B8F - Bank02.asm:2236 (LDA $7EF374 : LSR A : BCS BRANCH_BETA)
|
org $028B8F ; <- 10B8F - Bank02.asm:2236 (LDA $7EF374 : LSR A : BCS BRANCH_BETA)
|
||||||
JSL CheckHeraBossDefeated : BNE + : NOP
|
JSL CheckHeraBossDefeated : BNE + : NOP
|
||||||
@@ -1987,9 +1870,7 @@ org $1ECD39
|
|||||||
SkipCrystalPalette:
|
SkipCrystalPalette:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $08C3FD ; <- 443FD - ancilla_receive_item.asm : 89
|
org $08C3FD ; <- 443FD - ancilla_receive_item.asm : 89
|
||||||
!MS_GOT = "$7F5031"
|
LDA.b #$40 : STA.l MSReceived
|
||||||
LDA #$40 : STA !MS_GOT
|
|
||||||
;;NOP #6 ; don't set master sword follower
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $08C5E5 ; <- 445ED - ancilla_receive_item.asm:395 (LDA .item_messages, Y : CMP.w #$FFFF : BEQ .handleGraphics)
|
org $08C5E5 ; <- 445ED - ancilla_receive_item.asm:395 (LDA .item_messages, Y : CMP.w #$FFFF : BEQ .handleGraphics)
|
||||||
JSL.l DialogItemReceive : NOP #2
|
JSL.l DialogItemReceive : NOP #2
|
||||||
@@ -2065,9 +1946,6 @@ JSL.l OnPlayerDead
|
|||||||
JSL.l IncrementDeathCounter
|
JSL.l IncrementDeathCounter
|
||||||
NOP #6
|
NOP #6
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $02D61A ; <- 1561A
|
|
||||||
;LDA.b #$01 : STA $1B ; fix something i wrote over i shouldn't have
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $1ED379 ; <- F5379 - sprite_agahnim.asm:75 - JSL PrepDungeonExit
|
org $1ED379 ; <- F5379 - sprite_agahnim.asm:75 - JSL PrepDungeonExit
|
||||||
JSL FixAgahnimFollowers
|
JSL FixAgahnimFollowers
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -2141,8 +2019,6 @@ FluteBoy_Abort:
|
|||||||
RTS
|
RTS
|
||||||
FluteBoy_Continue:
|
FluteBoy_Continue:
|
||||||
|
|
||||||
;org $1E9968 ; <- F1968 - sprite_flute_boy_ostrich.asm : 14 (dw FluteBoyOstrich_Chillin)
|
|
||||||
;dw #$9991 ; FluteBoyOstrich_RunAway
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $06B0C9 ; <- 330C9
|
org $06B0C9 ; <- 330C9
|
||||||
JSL.l ItemSet_TreeKid
|
JSL.l ItemSet_TreeKid
|
||||||
@@ -2174,9 +2050,6 @@ LDA.b #$FF
|
|||||||
org $1DDF81 ; <- EDF81 - sprite_great_catfish.asm : 61
|
org $1DDF81 ; <- EDF81 - sprite_great_catfish.asm : 61
|
||||||
JSL.l DrawThrownItem
|
JSL.l DrawThrownItem
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $1DE1B0 ; <- EE1B0 - sprite_great_catfish.asm : 461
|
|
||||||
;NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $05EE53 ; <- 2EE53 - mushroom.asm : 22
|
org $05EE53 ; <- 2EE53 - mushroom.asm : 22
|
||||||
JSL.l ItemCheck_Mushroom
|
JSL.l ItemCheck_Mushroom
|
||||||
NOP #2
|
NOP #2
|
||||||
@@ -2193,22 +2066,10 @@ CMP.b #$20
|
|||||||
org $1DDF71 ; <- EDF71 - sprite_great_catfish.asm : 47
|
org $1DDF71 ; <- EDF71 - sprite_great_catfish.asm : 47
|
||||||
JSL.l MarkThrownItem
|
JSL.l MarkThrownItem
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $05F65D ; <- 2F65D - DONE IN INVENTORY
|
|
||||||
;JSL.l ItemSet_Powder
|
|
||||||
;NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;JSL.l ItemCheck_RupeeNPC
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;JSL.l ItemSet_RupeeNPC
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $08D01B ; PC 0x4501B - ancilla_flute.asm - 55
|
|
||||||
;JSL.l ItemSet_Flute
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $05FAFF ; <- 2FAFF - sprite_mad_batter.asm:57 (LDA $7EF37B : CMP.b #$01 : BCS .magic_already_doubled)
|
org $05FAFF ; <- 2FAFF - sprite_mad_batter.asm:57 (LDA $7EF37B : CMP.b #$01 : BCS .magic_already_doubled)
|
||||||
JSL.l ItemCheck_MagicBat : BEQ + : RTS : NOP : +
|
JSL.l ItemCheck_MagicBat : BEQ + : RTS : NOP : +
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Boss Hearts
|
; Boss Hearts
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -2265,8 +2126,8 @@ NOP #6
|
|||||||
; Fake Flippers Softlock Fix + General Damage Hooks
|
; Fake Flippers Softlock Fix + General Damage Hooks
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $078091 ; <- 38091 - Bank07.asm:138 (LDA $037B : BNE .linkNotDamaged)
|
org $078091 ; <- 38091 - Bank07.asm:138 (LDA $037B : BNE .linkNotDamaged)
|
||||||
LDA $0373 : STA $00 : STZ $0373 ; store and zero damage
|
LDA.w $0373 : STA.b Scrap00 : STZ.w $0373 ; store and zero damage
|
||||||
LDA $037B : BNE LinkDamaged_linkNotDamaged ; skip if immune
|
LDA.w $037B : BNE LinkDamaged_linkNotDamaged ; skip if immune
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0780C6 ; <- 380C6 - Bank07.asm:174 (LDA $7EF36D)
|
org $0780C6 ; <- 380C6 - Bank07.asm:174 (LDA $7EF36D)
|
||||||
JSL.l OnLinkDamaged
|
JSL.l OnLinkDamaged
|
||||||
@@ -2542,7 +2403,7 @@ Overworld_Entrance_BRANCH_RHO: ; branch here to continue into door
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Paradox Cave Shopkeeper Fixes
|
; Paradox Cave Shopkeeper Fixes
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $008C19 ; Bank00.asm@1633 (LDA.b #$01 : STA $420B)
|
org $008C19 ; Bank00.asm@1633 (LDA.b #$01 : STA MDMAEN)
|
||||||
JSL ParadoxCaveGfxFix
|
JSL ParadoxCaveGfxFix
|
||||||
NOP
|
NOP
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -2552,10 +2413,10 @@ NOP
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Change race game to use $021B instead of $0ABF for detecting cheating
|
; Change race game to use $021B instead of $0ABF for detecting cheating
|
||||||
org $0DCB9D ; STZ.w $0ABF
|
org $0DCB9D ; STZ.w $0ABF
|
||||||
STZ $021B
|
STZ.w $021B
|
||||||
|
|
||||||
org $0DCBFE ; LDA.w $0ABF
|
org $0DCBFE ; LDA.w $0ABF
|
||||||
LDA $021B
|
LDA.w $021B
|
||||||
|
|
||||||
org $02BFE0 ; LDA.b #$01 : STA.w $0ABF
|
org $02BFE0 ; LDA.b #$01 : STA.w $0ABF
|
||||||
JSL SetOverworldTransitionFlags
|
JSL SetOverworldTransitionFlags
|
||||||
@@ -2571,7 +2432,7 @@ org $0DA9C8 ; <- 06A9C8 - player_oam.asm: 1663 (AND.w #$00FF : CMP.w #$00F8 : BC
|
|||||||
; CMP into $02 into constant time code, so that player sprite head-bobbing can
|
; CMP into $02 into constant time code, so that player sprite head-bobbing can
|
||||||
; be removed by sprites while remaining race legal (cycle-for-cycle identical
|
; be removed by sprites while remaining race legal (cycle-for-cycle identical
|
||||||
; to the link sprite).
|
; to the link sprite).
|
||||||
LDA $02 ; always zero! (this replaces the BCC)
|
LDA.b Scrap02 ; always zero! (this replaces the BCC)
|
||||||
ADC.w #0000 ; put the carry bit into the accumulator instead of a hardcoded 1.
|
ADC.w #0000 ; put the carry bit into the accumulator instead of a hardcoded 1.
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
org $02FD6F ; <- 017d6f - bank0E.asm: 3694 (LoadActualGearPalettes:) Note: Overflow of bank02 moved to 0e in US Rom
|
org $02FD6F ; <- 017d6f - bank0E.asm: 3694 (LoadActualGearPalettes:) Note: Overflow of bank02 moved to 0e in US Rom
|
||||||
|
|||||||
32
hudtext.asm
32
hudtext.asm
@@ -9,17 +9,17 @@ PHP
|
|||||||
; $7EC026 = When we find an empty item get set on 1
|
; $7EC026 = When we find an empty item get set on 1
|
||||||
; $7EC027 = character data
|
; $7EC027 = character data
|
||||||
|
|
||||||
LDX #$80 : STX $2100
|
LDX.b #$80 : STX.w INIDISP
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA #$6000+$0340 : STA $2116
|
LDA.w #$6000+$0340 : STA.w VMADDL
|
||||||
|
|
||||||
LDA.w #$C027 : STA $4342
|
LDA.w #$C027 : STA.w A1T4L
|
||||||
LDX.b #$7E : STX $4344
|
LDX.b #$7E : STX.w A1B4
|
||||||
LDA #$0040 : STA $4345
|
LDA.w #$0040 : STA.w DAS4L
|
||||||
LDA #$1801 : STA $4340
|
LDA.w #$1801 : STA.w DMAP4
|
||||||
LDX #$10 : STX $420B
|
LDX.b #$10 : STX.w MDMAEN
|
||||||
|
|
||||||
LDX #$0F : STX $2100
|
LDX.b #$0F : STX.w INIDISP
|
||||||
PLP
|
PLP
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
@@ -28,17 +28,17 @@ RTL
|
|||||||
ClearBG:
|
ClearBG:
|
||||||
{
|
{
|
||||||
PHP
|
PHP
|
||||||
LDX #$80 : STX $2100
|
LDX.b #$80 : STX.w INIDISP
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA #$6000+$0340 : STA $2116
|
LDA.w #$6000+$0340 : STA.w VMADDL
|
||||||
LDA.w #clearTable : STA $4342
|
LDA.w #clearTable : STA.w A1T4L
|
||||||
LDX.b #clearTable>>16 : STX $4344
|
LDX.b #clearTable>>16 : STX.w A1B4
|
||||||
|
|
||||||
LDA #$0040 : STA $4345
|
LDA.w #$0040 : STA.w DAS4L
|
||||||
LDA #$1801 : STA $4340
|
LDA.w #$1801 : STA.w DMAP4
|
||||||
LDX #$10 : STX $420B
|
LDX.b #$10 : STX.w MDMAEN
|
||||||
|
|
||||||
LDX #$0F : STX $2100
|
LDX.b #$0F : STX.w INIDISP
|
||||||
PLP
|
PLP
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@ ShouldOverrideFileLoad:
|
|||||||
CPY #$0A ; 0A = Ice/Mire floor file
|
CPY #$0A ; 0A = Ice/Mire floor file
|
||||||
BNE .no
|
BNE .no
|
||||||
|
|
||||||
LDA $040C ; Dungeon number
|
LDA.w $040C ; Dungeon number
|
||||||
CMP #$12 ; Ice Palace
|
CMP #$12 ; Ice Palace
|
||||||
BEQ .yes
|
BEQ .yes
|
||||||
.no
|
.no
|
||||||
@@ -13,9 +13,9 @@ ShouldOverrideFileLoad:
|
|||||||
|
|
||||||
BgGraphicsLoading:
|
BgGraphicsLoading:
|
||||||
; Instructions overwritten
|
; Instructions overwritten
|
||||||
STZ $00
|
STZ.b Scrap00
|
||||||
STX $01
|
STX.b Scrap01
|
||||||
STA $02
|
STA.b Scrap02
|
||||||
|
|
||||||
JSR ShouldOverrideFileLoad
|
JSR ShouldOverrideFileLoad
|
||||||
BCS .useSpecialIcePalaceFile
|
BCS .useSpecialIcePalaceFile
|
||||||
@@ -25,24 +25,22 @@ BgGraphicsLoading:
|
|||||||
; We're loading the floor tiles in Ice Palace. Instead of the normal file,
|
; We're loading the floor tiles in Ice Palace. Instead of the normal file,
|
||||||
; load another one that replaces the bridge tiles with the Bombos medallion
|
; load another one that replaces the bridge tiles with the Bombos medallion
|
||||||
|
|
||||||
;LDA $FFFFFF
|
|
||||||
|
|
||||||
LDA.b #IcePalaceFloorGfx>>16
|
LDA.b #IcePalaceFloorGfx>>16
|
||||||
STA $02
|
STA.b Scrap02
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #IcePalaceFloorGfx
|
LDA.w #IcePalaceFloorGfx
|
||||||
STA $00
|
STA.b Scrap00
|
||||||
LDX.b #64*2 ; Tiles to load * 2
|
LDX.b #64*2 ; Tiles to load * 2
|
||||||
-
|
-
|
||||||
; Unrolled loop to upload half a tile
|
; Unrolled loop to upload half a tile
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
LDA [$00] : STA $2118 : INC $00 : INC $00
|
LDA.b [$00] : STA.w VMDATAL : INC.b Scrap00 : INC.b Scrap00
|
||||||
DEX
|
DEX
|
||||||
BNE -
|
BNE -
|
||||||
|
|
||||||
@@ -51,7 +49,7 @@ BgGraphicsLoading:
|
|||||||
|
|
||||||
ReloadingFloors:
|
ReloadingFloors:
|
||||||
SEP #$30 ; 8 AXY
|
SEP #$30 ; 8 AXY
|
||||||
LDA $7EC2F8 ; Floor file that has been decompressed
|
LDA.l $7EC2F8 ; Floor file that has been decompressed
|
||||||
TAY
|
TAY
|
||||||
JSR ShouldOverrideFileLoad
|
JSR ShouldOverrideFileLoad
|
||||||
REP #$30 ; 16 AXY
|
REP #$30 ; 16 AXY
|
||||||
@@ -76,6 +74,6 @@ ReloadingFloors:
|
|||||||
; Pretend that we ran the original routine
|
; Pretend that we ran the original routine
|
||||||
LDX.w #$0800
|
LDX.w #$0800
|
||||||
LDA.w #$6600
|
LDA.w #$6600
|
||||||
STA $03
|
STA.b Scrap03
|
||||||
|
|
||||||
JML ReloadingFloorsCancel
|
JML ReloadingFloorsCancel
|
||||||
|
|||||||
8
init.asm
8
init.asm
@@ -47,15 +47,15 @@ Init_Primary:
|
|||||||
.done
|
.done
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l OneMindTimer : STA.l !ONEMIND_TIMER
|
LDA.l OneMindTimerInit : STA.l OneMindTimerRAM
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
LDA.b #$01 : STA $420D ; enable fastrom access on upper banks
|
LDA.b #$01 : STA.w MEMSEL ; enable fastrom access on upper banks
|
||||||
STA.l !ONEMIND_ID
|
STA.l OneMindId
|
||||||
|
|
||||||
LDA.b #$10 : STA $BC ; set default player sprite bank
|
LDA.b #$10 : STA $BC ; set default player sprite bank
|
||||||
|
|
||||||
LDA.b #$81 : STA $4200 ; thing we wrote over, turn on NMI & gamepad
|
LDA.b #$81 : STA.w NMITIMEN ; thing we wrote over, turn on NMI & gamepad
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Init_PostRAMClear
|
; Init_PostRAMClear
|
||||||
|
|||||||
554
inventory.asm
554
inventory.asm
File diff suppressed because it is too large
Load Diff
84
inverted.asm
84
inverted.asm
@@ -35,7 +35,7 @@ Overworld_CreatePyramidHoleModified:
|
|||||||
JSL C9DE_LONG
|
JSL C9DE_LONG
|
||||||
JSL C9DE_LONG
|
JSL C9DE_LONG
|
||||||
|
|
||||||
LDA.w #$FFFF : STA $1012, Y
|
LDA.w #$FFFF : STA.w $1012, Y
|
||||||
|
|
||||||
JMP .ending
|
JMP .ending
|
||||||
.originalBehaviour
|
.originalBehaviour
|
||||||
@@ -64,33 +64,33 @@ Overworld_CreatePyramidHoleModified:
|
|||||||
JSL C9DE_LONG
|
JSL C9DE_LONG
|
||||||
JSL C9DE_LONG
|
JSL C9DE_LONG
|
||||||
|
|
||||||
LDA.w #$FFFF : STA $1012, Y
|
LDA.w #$FFFF : STA.w $1012, Y
|
||||||
|
|
||||||
.ending
|
.ending
|
||||||
LDA.w #$3515 : STA $012D
|
LDA.w #$3515 : STA.w $012D
|
||||||
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
|
|
||||||
LDA OverworldEventDataWRAM+$5B : ORA.b #$20 : STA OverworldEventDataWRAM+$5B
|
LDA.l OverworldEventDataWRAM+$5B : ORA.b #$20 : STA.l OverworldEventDataWRAM+$5B
|
||||||
|
|
||||||
LDA.b #$03 : STA $012F
|
LDA.b #$03 : STA.w $012F
|
||||||
|
|
||||||
LDA.b #$01 : STA $14
|
LDA.b #$01 : STA.b $14
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
Draw_PyramidOverlay:
|
Draw_PyramidOverlay:
|
||||||
LDA.l InvertedMode : AND.w #$00FF : BNE .done
|
LDA.l InvertedMode : AND.w #$00FF : BNE .done
|
||||||
.normal
|
.normal
|
||||||
LDA.w #$0E39 : STA $23BC
|
LDA.w #$0E39 : STA.w $23BC
|
||||||
INC A : STA $23BE
|
INC A : STA.w $23BE
|
||||||
INC A : STA $23C0
|
INC A : STA.w $23C0
|
||||||
INC A : STA $243C
|
INC A : STA.w $243C
|
||||||
INC A : STA $243E
|
INC A : STA.w $243E
|
||||||
INC A : STA $2440
|
INC A : STA.w $2440
|
||||||
INC A : STA $24BC
|
INC A : STA.w $24BC
|
||||||
INC A : STA $24BE
|
INC A : STA.w $24BE
|
||||||
INC A : STA $24C0
|
INC A : STA.w $24C0
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
@@ -130,43 +130,43 @@ db $02, $02, $02, $00, $08, $02, $02, $00, $00, $00, $00, $01, $00, $00, $20, $0
|
|||||||
db $02, $02, $02, $02, $02, $02, $02, $00, $00, $01, $01, $01, $02, $00, $08, $00
|
db $02, $02, $02, $02, $02, $02, $02, $00, $00, $01, $01, $01, $02, $00, $08, $00
|
||||||
|
|
||||||
Electric_Barrier:
|
Electric_Barrier:
|
||||||
LDA InvertedMode : BEQ .done
|
LDA.l InvertedMode : BEQ .done
|
||||||
LDA OverworldEventDataWRAM, X : ORA #$40 : STA OverworldEventDataWRAM, X ;set barrier dead
|
LDA.l OverworldEventDataWRAM, X : ORA.b #$40 : STA.l OverworldEventDataWRAM, X ;set barrier dead
|
||||||
.done
|
.done
|
||||||
LDA OverworldEventDataWRAM, X ; what we wrote over
|
LDA.l OverworldEventDataWRAM, X ; what we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
|
||||||
GanonTowerAnimation:
|
GanonTowerAnimation:
|
||||||
LDA InvertedMode : BEQ .done
|
LDA.l InvertedMode : BEQ .done
|
||||||
LDA.b #$1B : STA $012F
|
LDA.b #$1B : STA.w $012F
|
||||||
STZ $04C6
|
STZ.w $04C6
|
||||||
STZ $B0
|
STZ.b $B0
|
||||||
STZ $0710
|
STZ.w $0710
|
||||||
STZ $02E4
|
STZ.w $02E4
|
||||||
|
|
||||||
STZ $0FC1
|
STZ.w $0FC1
|
||||||
|
|
||||||
STZ $011A
|
STZ.w $011A
|
||||||
STZ $011B
|
STZ.w $011B
|
||||||
STZ $011C
|
STZ.w $011C
|
||||||
STZ $011D
|
STZ.w $011D
|
||||||
LDA.b #$02 : STA $012C
|
LDA.b #$02 : STA.w $012C
|
||||||
LDA.b #$09 : STA $012D
|
LDA.b #$09 : STA.w $012D
|
||||||
RTL
|
RTL
|
||||||
.done
|
.done
|
||||||
LDA.b #$05 : STA $04C6 ;what we wrote over
|
LDA.b #$05 : STA.w $04C6 ;what we wrote over
|
||||||
STZ $B0 ; (continued)
|
STZ.b $B0 ; (continued)
|
||||||
STZ $C8 ; (continued)
|
STZ.b $C8 ; (continued)
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
GanonTowerInvertedCheck:
|
GanonTowerInvertedCheck:
|
||||||
{
|
{
|
||||||
LDA InvertedMode : BEQ .done
|
LDA.l InvertedMode : BEQ .done
|
||||||
LDA #$01 ; Load a random value so it doesn't BEQ
|
LDA.b #$01 ; Load a random value so it doesn't BEQ
|
||||||
RTL
|
RTL
|
||||||
.done
|
.done
|
||||||
LDA $8A : CMP.b #$43 ;what we wrote over
|
LDA.b $8A : CMP.b #$43 ;what we wrote over
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,14 +174,14 @@ GanonTowerInvertedCheck:
|
|||||||
;Hard coded rock removed in LW for Inverted mode
|
;Hard coded rock removed in LW for Inverted mode
|
||||||
HardcodedRocks:
|
HardcodedRocks:
|
||||||
|
|
||||||
LDA InvertedMode : AND.w #$00FF : BEQ .normalrocks
|
LDA.l InvertedMode : AND.w #$00FF : BEQ .normalrocks
|
||||||
BRA .noRock2
|
BRA .noRock2
|
||||||
.normalrocks
|
.normalrocks
|
||||||
LDA.w #$020F : LDX $8A : CPX.w #$0033 : BNE .noRock
|
LDA.w #$020F : LDX $8A : CPX.w #$0033 : BNE .noRock
|
||||||
STA $7E22A8
|
STA.l $7E22A8
|
||||||
.noRock
|
.noRock
|
||||||
CPX.w #$002F : BNE .noRock2
|
CPX.w #$002F : BNE .noRock2
|
||||||
STA $7E2BB2
|
STA.l $7E2BB2
|
||||||
.noRock2
|
.noRock2
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ MirrorBonk:
|
|||||||
; otherwise fall through to .normal
|
; otherwise fall through to .normal
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
LDA $8A : AND.b #$40 : BEQ .endLoop ;World we're in? branch if we are in LW we don't want bonks
|
LDA.b $8A : AND.b #$40 : BEQ .endLoop ;World we're in? branch if we are in LW we don't want bonks
|
||||||
REP #$30
|
REP #$30
|
||||||
LDX #$0000
|
LDX #$0000
|
||||||
.loop
|
.loop
|
||||||
@@ -231,7 +231,7 @@ MirrorBonk:
|
|||||||
PLB : PLP : PLX
|
PLB : PLP : PLX
|
||||||
.normal
|
.normal
|
||||||
;Not forcing a bonk, so the vanilla bonk detection run.
|
;Not forcing a bonk, so the vanilla bonk detection run.
|
||||||
LDA $0C : ORA $0E
|
LDA.b Scrap0C : ORA.b Scrap0E
|
||||||
JML.l MirrorBonk_NormalReturn
|
JML.l MirrorBonk_NormalReturn
|
||||||
.forceBonk
|
.forceBonk
|
||||||
JML.l MirrorBonk_BranchGamma
|
JML.l MirrorBonk_BranchGamma
|
||||||
|
|||||||
1774
invertedmaps.asm
1774
invertedmaps.asm
File diff suppressed because it is too large
Load Diff
@@ -32,7 +32,7 @@ ItemDowngradeFixMain:
|
|||||||
CPY.b #$00 : BEQ .isUncleSwordShield ; Fighter's Sword & Shield
|
CPY.b #$00 : BEQ .isUncleSwordShield ; Fighter's Sword & Shield
|
||||||
|
|
||||||
.done
|
.done
|
||||||
STA [$00] ; thing we wrote over part 2
|
STA.b [Scrap00] ; thing we wrote over part 2
|
||||||
.dontWrite
|
.dontWrite
|
||||||
RTS
|
RTS
|
||||||
.isPowerGloves
|
.isPowerGloves
|
||||||
@@ -41,8 +41,8 @@ RTS
|
|||||||
.isBlueBoomerang
|
.isBlueBoomerang
|
||||||
.isBow
|
.isBow
|
||||||
.isBowAndArrows
|
.isBowAndArrows
|
||||||
CMP [$00] : !BGE .done ; finished if we're upgrading
|
CMP.b [$00] : !BGE .done ; finished if we're upgrading
|
||||||
LDA [$00] ; reload old value
|
LDA.b [$00] ; reload old value
|
||||||
RTS
|
RTS
|
||||||
.isSilverArrowBow
|
.isSilverArrowBow
|
||||||
.isRedBoomerang
|
.isRedBoomerang
|
||||||
@@ -51,31 +51,31 @@ RTS
|
|||||||
.isShovel
|
.isShovel
|
||||||
.isMushroom
|
.isMushroom
|
||||||
PHA
|
PHA
|
||||||
LDA [$00] : BNE + ; don't upgrade if we already have the toggle for it
|
LDA.b [Scrap00] : BNE + ; don't upgrade if we already have the toggle for it
|
||||||
PLA
|
PLA
|
||||||
STA [$00]
|
STA.b [Scrap00]
|
||||||
RTS
|
RTS
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTS
|
RTS
|
||||||
.isSword
|
.isSword
|
||||||
PHA
|
PHA
|
||||||
LDA HighestSword : STA $04
|
LDA.l HighestSword : STA.b Scrap04
|
||||||
TYA ; load sword item
|
TYA ; load sword item
|
||||||
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
||||||
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
||||||
INC : CMP $04 : !BGE + ; skip if highest is lower (this is an upgrade)
|
INC : CMP.b Scrap04 : !BGE + ; skip if highest is lower (this is an upgrade)
|
||||||
LDA $04 : DEC ; convert to item id
|
LDA.b Scrap04 : DEC ; convert to item id
|
||||||
TAY : PLA : LDA $04 ; put sword id into the thing to write
|
TAY : PLA : LDA.b Scrap04 ; put sword id into the thing to write
|
||||||
JMP .done
|
JMP .done
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
JMP .done
|
JMP .done
|
||||||
.isUncleSwordShield
|
.isUncleSwordShield
|
||||||
PHA
|
PHA
|
||||||
LDA HighestSword : STA [$00] ; already set to 1 if we had no sword, always keep highest
|
LDA.l HighestSword : STA.b [Scrap00] ; already set to 1 if we had no sword, always keep highest
|
||||||
INC $00
|
INC.b Scrap00
|
||||||
LDA HighestShield : STA [$00]
|
LDA.l HighestShield : STA.b [Scrap00]
|
||||||
PLA
|
PLA
|
||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -4,22 +4,21 @@
|
|||||||
; Output: 0 for darkness, 1 for lamp cone
|
; Output: 0 for darkness, 1 for lamp cone
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LampCheck:
|
LampCheck:
|
||||||
LDA $7F50C4 : CMP.b #$01 : BNE + : RTL : +
|
LDA.l LightConeModifier : CMP.b #$01 : BNE + : RTL : +
|
||||||
CMP.b #$FF : BNE + : INC : RTL : +
|
CMP.b #$FF : BNE + : INC : RTL : +
|
||||||
|
|
||||||
LDA LampEquipment : BNE .done ; skip if we already have lantern
|
LDA.l LampEquipment : BNE .done ; skip if we already have lantern
|
||||||
|
|
||||||
LDA CurrentWorld : BNE +
|
LDA.l CurrentWorld : BNE +
|
||||||
.lightWorld
|
.lightWorld
|
||||||
LDA $040C : BNE ++ ; check if we're in sewers
|
LDA.w $040C : BNE ++ ; check if we're in sewers
|
||||||
LDA LampConeSewers : BRA .done
|
LDA.l LampConeSewers : BRA .done
|
||||||
++
|
++
|
||||||
LDA LampConeLightWorld : BRA .done
|
LDA.l LampConeLightWorld : BRA .done
|
||||||
+
|
+
|
||||||
.darkWorld
|
.darkWorld
|
||||||
LDA LampConeDarkWorld
|
LDA LampConeDarkWorld
|
||||||
.done
|
.done
|
||||||
;BNE + : STZ $1D : + ; remember to turn cone off after a torch
|
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -30,13 +29,12 @@ CheckForZelda:
|
|||||||
LDA.b #$01 ; pretend we have zelda anyway
|
LDA.b #$01 ; pretend we have zelda anyway
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA FollowerIndicator
|
LDA.l FollowerIndicator
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetOverlayIfLamp:
|
SetOverlayIfLamp:
|
||||||
JSL.l LampCheck
|
JSL.l LampCheck
|
||||||
STA $1D ; write it directly to the overlay, this isn't a terrible idea at all
|
STA.b $1D ; write it directly to the overlay, this isn't a terrible idea at all
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;LDA CurrentWorld : EOR #$40 : LSR #6 : AND #$01 ; return the same result as having the lantern in the light world
|
|
||||||
|
|||||||
16
map.asm
16
map.asm
@@ -1,16 +0,0 @@
|
|||||||
; ==============================================================================
|
|
||||||
;PrepMapZoom:
|
|
||||||
; LDA.b #$80 : STA $211A ; thing we wrote over
|
|
||||||
;
|
|
||||||
; LDA.b #$00 : STA !MAP_ZOOM
|
|
||||||
;RTL
|
|
||||||
; ==============================================================================
|
|
||||||
;ForceMapZoom:
|
|
||||||
; LDA !MAP_ZOOM : BNE .isPreset
|
|
||||||
; LDA.b #$01
|
|
||||||
; LDA.b #$01 : STA !MAP_ZOOM
|
|
||||||
;RTL
|
|
||||||
; .isPreset
|
|
||||||
; LDA $F6 : AND.b #$70
|
|
||||||
;RTL
|
|
||||||
; ==============================================================================
|
|
||||||
@@ -52,10 +52,8 @@ MedallionTrigger_Bombos:
|
|||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!EPILEPSY_TIMER = "$7F5041"
|
|
||||||
MedallionTrigger_Ether:
|
MedallionTrigger_Ether:
|
||||||
PHA
|
PHA
|
||||||
LDA.b #$00 : STA !EPILEPSY_TIMER
|
|
||||||
LDA.l MireRequiredMedallion : CMP.b #$01 : BNE +
|
LDA.l MireRequiredMedallion : CMP.b #$01 : BNE +
|
||||||
JSL.l TryOpenMire
|
JSL.l TryOpenMire
|
||||||
+ LDA.l TRockRequiredMedallion : CMP.b #$01 : BNE +
|
+ LDA.l TRockRequiredMedallion : CMP.b #$01 : BNE +
|
||||||
|
|||||||
526
msu.asm
526
msu.asm
@@ -81,72 +81,34 @@
|
|||||||
;
|
;
|
||||||
;=======================================
|
;=======================================
|
||||||
|
|
||||||
!REG_MSU_STATUS = $2000
|
!VAL_MSU_ID_01 = $2D53 ; 'S-'
|
||||||
|
!VAL_MSU_ID_23 = $534D ; 'MS'
|
||||||
|
!VAL_MSU_ID_45 = $3155 ; 'U1'
|
||||||
|
|
||||||
!REG_MSU_ID_0 = $2002
|
!FLAG_MSU_PLAY = $01
|
||||||
!REG_MSU_ID_1 = $2003
|
!FLAG_MSU_REPEAT = $02
|
||||||
!REG_MSU_ID_2 = $2004
|
!FLAG_MSU_RESUME = $04
|
||||||
!REG_MSU_ID_3 = $2005
|
!FLAG_MSU_STATUS_TRACK_MISSING = $08
|
||||||
!REG_MSU_ID_4 = $2006
|
!FLAG_MSU_STATUS_AUDIO_PLAYING = $10
|
||||||
!REG_MSU_ID_5 = $2007
|
!FLAG_MSU_STATUS_AUDIO_REPEATING = $20
|
||||||
|
!FLAG_MSU_STATUS_AUDIO_BUSY = $40
|
||||||
|
!FLAG_MSU_STATUS_DATA_BUSY = $80
|
||||||
|
|
||||||
!REG_MSU_ID_01 = $2002
|
!FLAG_RESUME_CANCEL = $01
|
||||||
!REG_MSU_ID_23 = $2004
|
!FLAG_RESUME_FADEIN = $02
|
||||||
!REG_MSU_ID_45 = $2006
|
|
||||||
|
|
||||||
|
!VAL_COMMAND_STOP_PLAYBACK = $F0
|
||||||
|
!VAL_COMMAND_FADE_OUT = $F1
|
||||||
|
!VAL_COMMAND_FADE_HALF = $F2
|
||||||
|
!VAL_COMMAND_FULL_VOLUME = $F3
|
||||||
|
!VAL_COMMAND_MUTE_SPC = $FA
|
||||||
|
!VAL_COMMAND_UNMUTE_SPC = $FB
|
||||||
|
!VAL_COMMAND_LOAD_NEW_BANK = $FF
|
||||||
|
|
||||||
!VAL_MSU_ID_0 = #$53 ; 'S'
|
!VAL_VOLUME_INCREMENT = $10
|
||||||
!VAL_MSU_ID_1 = #$2D ; '-'
|
!VAL_VOLUME_DECREMENT = $02
|
||||||
!VAL_MSU_ID_2 = #$4D ; 'M'
|
!VAL_VOLUME_HALF = $80
|
||||||
!VAL_MSU_ID_3 = #$53 ; 'S'
|
!VAL_VOLUME_FULL = $FF
|
||||||
!VAL_MSU_ID_4 = #$55 ; 'U'
|
|
||||||
!VAL_MSU_ID_5 = #$31 ; '1'
|
|
||||||
|
|
||||||
!VAL_MSU_ID_01 = #$2D53 ; 'S-'
|
|
||||||
!VAL_MSU_ID_23 = #$534D ; 'MS'
|
|
||||||
!VAL_MSU_ID_45 = #$3155 ; 'U1'
|
|
||||||
|
|
||||||
|
|
||||||
!REG_MSU_TRACK = $2004
|
|
||||||
!REG_MSU_TRACK_LO = $2004
|
|
||||||
!REG_MSU_TRACK_HI = $2005
|
|
||||||
!REG_MSU_VOLUME = $2006
|
|
||||||
!REG_MSU_CONTROL = $2007
|
|
||||||
|
|
||||||
|
|
||||||
!FLAG_MSU_PLAY = #$01
|
|
||||||
!FLAG_MSU_REPEAT = #$02
|
|
||||||
!FLAG_MSU_RESUME = #$04
|
|
||||||
!FLAG_MSU_STATUS_TRACK_MISSING = #$08
|
|
||||||
!FLAG_MSU_STATUS_AUDIO_PLAYING = #$10
|
|
||||||
!FLAG_MSU_STATUS_AUDIO_REPEATING = #$20
|
|
||||||
!FLAG_MSU_STATUS_AUDIO_BUSY = #$40
|
|
||||||
!FLAG_MSU_STATUS_DATA_BUSY = #$80
|
|
||||||
|
|
||||||
!FLAG_RESUME_CANCEL = #$01
|
|
||||||
!FLAG_RESUME_FADEIN = #$02
|
|
||||||
|
|
||||||
!REG_CURRENT_MSU_TRACK = $010B
|
|
||||||
!REG_CURRENT_VOLUME = $0127
|
|
||||||
!REG_TARGET_VOLUME = $0129
|
|
||||||
!REG_CURRENT_TRACK = $0130
|
|
||||||
!REG_CURRENT_COMMAND = $0133
|
|
||||||
|
|
||||||
!REG_SPC_CONTROL = $2140
|
|
||||||
!REG_NMI_FLAGS = $4210
|
|
||||||
|
|
||||||
!VAL_COMMAND_STOP_PLAYBACK = #$F0
|
|
||||||
!VAL_COMMAND_FADE_OUT = #$F1
|
|
||||||
!VAL_COMMAND_FADE_HALF = #$F2
|
|
||||||
!VAL_COMMAND_FULL_VOLUME = #$F3
|
|
||||||
!VAL_COMMAND_MUTE_SPC = #$FA
|
|
||||||
!VAL_COMMAND_UNMUTE_SPC = #$FB
|
|
||||||
!VAL_COMMAND_LOAD_NEW_BANK = #$FF
|
|
||||||
|
|
||||||
!VAL_VOLUME_INCREMENT = #$10
|
|
||||||
!VAL_VOLUME_DECREMENT = #$02
|
|
||||||
!VAL_VOLUME_HALF = #$80
|
|
||||||
!VAL_VOLUME_FULL = #$FF
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Check if A has an overworld track
|
; Check if A has an overworld track
|
||||||
@@ -172,7 +134,7 @@ SEC : RTS
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IsResumableTrack:
|
IsResumableTrack:
|
||||||
PHA
|
PHA
|
||||||
LDA MSUResumeType : BEQ +
|
LDA.l MSUResumeType : BEQ +
|
||||||
PLA
|
PLA
|
||||||
JSR IsOverworldTrack
|
JSR IsOverworldTrack
|
||||||
RTS
|
RTS
|
||||||
@@ -187,54 +149,54 @@ RTS
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckMusicLoadRequest:
|
CheckMusicLoadRequest:
|
||||||
PHP : PHB : PHD : REP #$30 : PHA : PHX : PHY
|
PHP : PHB : PHD : REP #$30 : PHA : PHX : PHY
|
||||||
LDA #$0000 : TCD : SEP #$20 : PHA : PLB
|
LDA.w #$0000 : TCD : SEP #$20 : PHA : PLB
|
||||||
LDA !REG_MUSIC_CONTROL_REQUEST : BEQ .skip+3 : BMI .skip+3
|
LDA.w MusicControlRequest : BEQ .skip+3 : BMI .skip+3
|
||||||
CMP !REG_CURRENT_COMMAND : BNE .continue
|
CMP.w CurrentControlRequest : BNE .continue
|
||||||
CMP.b #22 : BNE .skip ; Check GT when mirroring from upstairs
|
CMP.b #22 : BNE .skip ; Check GT when mirroring from upstairs
|
||||||
LDA !REG_CURRENT_MSU_TRACK : CMP.b #59 : BNE .skip
|
LDA.w CurrentMSUTrack : CMP.b #59 : BNE .skip
|
||||||
LDA.b #$00 : STA !REG_CURRENT_COMMAND
|
LDA.b #$00 : STA.w CurrentControlRequest
|
||||||
BRA .continue
|
BRA .continue
|
||||||
.skip
|
.skip
|
||||||
LDA !REG_MUSIC_CONTROL_REQUEST
|
LDA.w MusicControlRequest
|
||||||
STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST
|
STA.w MusicControl : STZ.w MusicControlRequest
|
||||||
REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP
|
REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.continue
|
.continue
|
||||||
LDA TournamentSeed : BNE +++
|
LDA.l TournamentSeed : BNE +++
|
||||||
LDA !REG_MSU_PACK_REQUEST
|
LDA.l MSUPackRequest
|
||||||
CMP !REG_MSU_PACK_CURRENT : BEQ +++
|
CMP.l MSUPackCurrent : BEQ +++
|
||||||
CMP !REG_MSU_PACK_COUNT : !BLT ++
|
CMP.l MSUPackCount : !BLT ++
|
||||||
CMP #$FE : !BLT +
|
CMP.b #$FE : !BLT +
|
||||||
STA !REG_MSU_PACK_CURRENT
|
STA.l MSUPackCurrent
|
||||||
SEP #$10
|
SEP #$10
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
LDX #$07
|
LDX.b #$07
|
||||||
-
|
-
|
||||||
STA !REG_MSU_FALLBACK_TABLE,X
|
STA.l MSUFallbackTable,X
|
||||||
DEX : BPL -
|
DEX : BPL -
|
||||||
REP #$10
|
REP #$10
|
||||||
BRA +++
|
BRA +++
|
||||||
+ : LDA !REG_MSU_PACK_CURRENT : STA !REG_MSU_PACK_REQUEST
|
+ : LDA.l MSUPackCurrent : STA.l MSUPackRequest
|
||||||
++ : STA !REG_MSU_PACK_CURRENT
|
++ : STA.l MSUPackCurrent
|
||||||
JSL MSUInit_check_fallback
|
JSL MSUInit_check_fallback
|
||||||
+++
|
+++
|
||||||
|
|
||||||
LDA !REG_MUSIC_CONTROL_REQUEST : CMP #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
|
LDA.w MusicControlRequest : CMP.b #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
|
||||||
LDA NoBGM : BNE +
|
LDA.l NoBGM : BNE +
|
||||||
LDA !REG_MSU_PACK_CURRENT : CMP #$FE : BNE ++
|
LDA.l MSUPackCurrent : CMP.b #$FE : BNE ++
|
||||||
+ : JMP .mute
|
+ : JMP .mute
|
||||||
++
|
++
|
||||||
|
|
||||||
LDX !REG_MSU_ID_01 : CPX !VAL_MSU_ID_01 : BEQ +
|
LDX.w MSUID : CPX.w #!VAL_MSU_ID_01 : BEQ +
|
||||||
- : JMP .unmute
|
- : JMP .unmute
|
||||||
+
|
+
|
||||||
LDX !REG_MSU_ID_23 : CPX !VAL_MSU_ID_23 : BNE -
|
LDX.w MSUID+2 : CPX.w #!VAL_MSU_ID_23 : BNE -
|
||||||
LDX !REG_MSU_ID_45 : CPX !VAL_MSU_ID_45 : BNE -
|
LDX.w MSUID+4 : CPX.w #!VAL_MSU_ID_45 : BNE -
|
||||||
|
|
||||||
SEP #$10
|
SEP #$10
|
||||||
; Load alternate or dungeon-specific tracks
|
; Load alternate or dungeon-specific tracks
|
||||||
LDA !REG_MUSIC_CONTROL_REQUEST
|
LDA.w MusicControlRequest
|
||||||
|
|
||||||
CMP.b #02 : BEQ .lightworld
|
CMP.b #02 : BEQ .lightworld
|
||||||
CMP.b #09 : BEQ .darkworld
|
CMP.b #09 : BEQ .darkworld
|
||||||
@@ -246,39 +208,39 @@ CheckMusicLoadRequest:
|
|||||||
CMP.b #21 : BNE .check_fallback
|
CMP.b #21 : BNE .check_fallback
|
||||||
|
|
||||||
;.boss
|
;.boss
|
||||||
LDA $040C : LSR : !ADD.b #45
|
LDA.w $040C : LSR : !ADD.b #45
|
||||||
BRA .check_fallback-3
|
BRA .check_fallback-3
|
||||||
.lightworld
|
.lightworld
|
||||||
PHA
|
PHA
|
||||||
LDA OverworldEventDataWRAM+$80 : AND.b #$40 : BEQ +
|
LDA.l OverworldEventDataWRAM+$80 : AND.b #$40 : BEQ +
|
||||||
PLA
|
PLA
|
||||||
LDA.b #60 : BRA .check_fallback-3
|
LDA.b #60 : BRA .check_fallback-3
|
||||||
+
|
+
|
||||||
-- : PLA : BRA .check_fallback-3
|
-- : PLA : BRA .check_fallback-3
|
||||||
.darkworld
|
.darkworld
|
||||||
PHA
|
PHA
|
||||||
LDA CrystalsField : CMP.b #$7F : BNE --
|
LDA.l CrystalsField : CMP.b #$7F : BNE --
|
||||||
- : PLA
|
- : PLA
|
||||||
LDA.b #61 : BRA .check_fallback-3
|
LDA.b #61 : BRA .check_fallback-3
|
||||||
.darkwoods
|
.darkwoods
|
||||||
PHA
|
PHA
|
||||||
LDA CrystalsField : CMP.b #$7F : BEQ -
|
LDA.l CrystalsField : CMP.b #$7F : BEQ -
|
||||||
LDA CurrentWorld : BEQ --
|
LDA.l CurrentWorld : BEQ --
|
||||||
LDA $8A : CMP #$40 : BNE --
|
LDA.b $8A : CMP #$40 : BNE --
|
||||||
PLA
|
PLA
|
||||||
LDA.b #15 : BRA .check_fallback-3
|
LDA.b #15 : BRA .check_fallback-3
|
||||||
.castle
|
.castle
|
||||||
LDA $040C
|
LDA.w $040C
|
||||||
CMP.b #$08 : BNE .check_fallback ; Hyrule Castle 2
|
CMP.b #$08 : BNE .check_fallback ; Hyrule Castle 2
|
||||||
.dungeon
|
.dungeon
|
||||||
LDA $040C : LSR : !ADD.b #33 : STA !REG_MUSIC_CONTROL_REQUEST
|
LDA.w $040C : LSR : !ADD.b #33 : STA.w MusicControlRequest
|
||||||
|
|
||||||
.check_fallback
|
.check_fallback
|
||||||
LDX !REG_MUSIC_CONTROL_REQUEST
|
LDX.w MusicControlRequest
|
||||||
LDA MusicShuffleTable-1,X : DEC : PHA
|
LDA.l MusicShuffleTable-1,X : DEC : PHA
|
||||||
AND.b #$07 : TAY
|
AND.b #$07 : TAY
|
||||||
PLA : LSR #3 : TAX
|
PLA : LSR #3 : TAX
|
||||||
LDA !REG_MSU_FALLBACK_TABLE,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute
|
LDA.l MSUFallbackTable,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute
|
||||||
|
|
||||||
- : CPY #$00 : BEQ +
|
- : CPY #$00 : BEQ +
|
||||||
LSR : DEY : BRA -
|
LSR : DEY : BRA -
|
||||||
@@ -287,49 +249,49 @@ CheckMusicLoadRequest:
|
|||||||
AND.b #$01 : BEQ .secondary_fallback
|
AND.b #$01 : BEQ .secondary_fallback
|
||||||
|
|
||||||
.mute
|
.mute
|
||||||
LDA.b !VAL_COMMAND_MUTE_SPC
|
LDA.b #!VAL_COMMAND_MUTE_SPC
|
||||||
BRA .load
|
BRA .load
|
||||||
|
|
||||||
.secondary_fallback
|
.secondary_fallback
|
||||||
LDX !REG_MUSIC_CONTROL_REQUEST : LDA MSUExtendedFallbackList-1,X
|
LDX.w MusicControlRequest : LDA.l MSUExtendedFallbackList-1,X
|
||||||
PHX
|
PHX
|
||||||
TAX : LDA MusicShuffleTable-1,X
|
TAX : LDA.l MusicShuffleTable-1,X
|
||||||
PLX
|
PLX
|
||||||
CMP !REG_MUSIC_CONTROL_REQUEST : BEQ .unmute
|
CMP.w MusicControlRequest : BEQ .unmute
|
||||||
CPX #35 : !BLT +
|
CPX #35 : !BLT +
|
||||||
CPX #47 : !BLT .dungeon_fallback
|
CPX #47 : !BLT .dungeon_fallback
|
||||||
+
|
+
|
||||||
|
|
||||||
STA !REG_MUSIC_CONTROL_REQUEST
|
STA.w MusicControlRequest
|
||||||
BRA .check_fallback
|
BRA .check_fallback
|
||||||
|
|
||||||
.dungeon_fallback
|
.dungeon_fallback
|
||||||
PHB : REP #$10
|
PHB : REP #$10
|
||||||
LDX $040C
|
LDX $040C
|
||||||
LDA.b #Music_Eastern>>16 : PHA : PLB ; Set bank to music pointers
|
LDA.b #Music_Eastern>>16 : PHA : PLB ; Set bank to music pointers
|
||||||
LDY $00 : PHY
|
LDY.b Scrap00 : PHY
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA MSUDungeonFallbackList,X : STA $00
|
LDA.l MSUDungeonFallbackList,X : STA.b Scrap00
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA ($00)
|
LDA.b (Scrap00)
|
||||||
PLY : STY $00 : SEP #$10 : PLB
|
PLY : STY.b Scrap00 : SEP #$10 : PLB
|
||||||
TAX : LDA MusicShuffleTable-1,X
|
TAX : LDA.l MusicShuffleTable-1,X
|
||||||
STA !REG_MUSIC_CONTROL_REQUEST
|
STA.w MusicControlRequest
|
||||||
JMP .check_fallback
|
JMP .check_fallback
|
||||||
|
|
||||||
.unmute
|
.unmute
|
||||||
LDA.b !VAL_COMMAND_UNMUTE_SPC
|
LDA.b #!VAL_COMMAND_UNMUTE_SPC
|
||||||
|
|
||||||
.load
|
.load
|
||||||
REP #$10
|
REP #$10
|
||||||
STZ $4200
|
STZ.w NMITIMEN
|
||||||
- : STA !REG_SPC_CONTROL : CMP !REG_SPC_CONTROL : BNE - ; Wait until mute/unmute command is ACK'ed
|
- : STA.w APUIO0 : CMP.w APUIO0 : BNE - ; Wait until mute/unmute command is ACK'ed
|
||||||
- : STZ !REG_SPC_CONTROL : LDA !REG_SPC_CONTROL : BNE - ; Wait until mute/unmute command is completed
|
- : STZ.w APUIO0 : LDA.w APUIO0 : BNE - ; Wait until mute/unmute command is completed
|
||||||
LDA.b #$81 : STA $4200
|
LDA.b #$81 : STA.w NMITIMEN
|
||||||
|
|
||||||
LDA !REG_MUSIC_CONTROL_REQUEST : CMP.b #08 : BEQ .done+3 ; No SFX during warp track
|
LDA.w MusicControlRequest : CMP.b #08 : BEQ .done+3 ; No SFX during warp track
|
||||||
|
|
||||||
LDA $10
|
LDA.b $10
|
||||||
CMP.b #$07 : BEQ .sfx_indoors
|
CMP.b #$07 : BEQ .sfx_indoors
|
||||||
CMP.b #$0E : BEQ .sfx_indoors
|
CMP.b #$0E : BEQ .sfx_indoors
|
||||||
CMP.b #$09 : BNE .done
|
CMP.b #$09 : BNE .done
|
||||||
@@ -338,30 +300,30 @@ CheckMusicLoadRequest:
|
|||||||
SEP #$10
|
SEP #$10
|
||||||
LDX.b #$09
|
LDX.b #$09
|
||||||
|
|
||||||
LDA $8A ; Dark Death Mountain
|
LDA.b $8A ; Dark Death Mountain
|
||||||
CMP.b #$43 : BEQ + : CMP.b #$45 : BEQ + : CMP.b #$47 : BEQ +
|
CMP.b #$43 : BEQ + : CMP.b #$45 : BEQ + : CMP.b #$47 : BEQ +
|
||||||
LDX.b #$05
|
LDX.b #$05
|
||||||
+
|
+
|
||||||
|
|
||||||
CMP.b #$70 : BNE + ; Misery Mire
|
CMP.b #$70 : BNE + ; Misery Mire
|
||||||
LDA OverworldEventDataWRAM+$70 : AND.b #$20 : BEQ .rain
|
LDA.l OverworldEventDataWRAM+$70 : AND.b #$20 : BEQ .rain
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA ProgressIndicator : CMP.b #$02 : BCS +
|
LDA.l ProgressIndicator : CMP.b #$02 : BCS +
|
||||||
.rain
|
.rain
|
||||||
LDX.b #$01
|
LDX.b #$01
|
||||||
+
|
+
|
||||||
STX $012D
|
STX.w $012D
|
||||||
REP #$10
|
REP #$10
|
||||||
|
|
||||||
.done
|
.done
|
||||||
LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST
|
LDA.w MusicControlRequest : STA.w MusicControl : STZ.w MusicControlRequest
|
||||||
REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP
|
REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.sfx_indoors
|
.sfx_indoors
|
||||||
LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST
|
LDA.w MusicControlRequest : STA.w MusicControl : STZ.w MusicControlRequest
|
||||||
SEP #$20 : LDA.b #$05 : STA $012D
|
SEP #$20 : LDA.b #$05 : STA.w $012D
|
||||||
REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP
|
REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP
|
||||||
JML Module_PreDungeon_setAmbientSfx
|
JML Module_PreDungeon_setAmbientSfx
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -371,28 +333,28 @@ CheckMusicLoadRequest:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SpiralStairsPreCheck:
|
SpiralStairsPreCheck:
|
||||||
REP #$20 ; thing we wrote over
|
REP #$20 ; thing we wrote over
|
||||||
LDA $A0
|
LDA.b $A0
|
||||||
CMP.w #$000C : BNE +
|
CMP.w #$000C : BNE +
|
||||||
LDA !REG_CURRENT_MSU_TRACK : AND.w #$00FF : CMP.w #59 : BNE .done
|
LDA.w CurrentMSUTrack : AND.w #$00FF : CMP.w #59 : BNE .done
|
||||||
BRA .fade
|
BRA .fade
|
||||||
+
|
+
|
||||||
|
|
||||||
CMP.w #$006B : BNE .done+2
|
CMP.w #$006B : BNE .done+2
|
||||||
|
|
||||||
LDA TournamentSeed : CMP.w #$0001 : BEQ +
|
LDA.l TournamentSeed : CMP.w #$0001 : BEQ +
|
||||||
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .done
|
LDA.w MSUID : CMP.w #!VAL_MSU_ID_01 : BNE .done
|
||||||
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .done
|
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .done
|
||||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .done
|
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .done
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA BigKeyField : AND.w #$0004 : BEQ .done ; Check that we have the GT big key
|
LDA.l BigKeyField : AND.w #$0004 : BEQ .done ; Check that we have the GT big key
|
||||||
LDA !REG_MSU_FALLBACK_TABLE+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track
|
LDA.l MSUFallbackTable+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track
|
||||||
|
|
||||||
.fade
|
.fade
|
||||||
LDX.b #$F1 : STX !REG_MUSIC_CONTROL_REQUEST
|
LDX.b #$F1 : STX.w MusicControlRequest
|
||||||
|
|
||||||
.done
|
.done
|
||||||
LDA $A0 ; thing we wrote over
|
LDA.b $A0 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -400,24 +362,24 @@ SpiralStairsPreCheck:
|
|||||||
; Change music on stair transition (ToH/GT)
|
; Change music on stair transition (ToH/GT)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SpiralStairsPostCheck:
|
SpiralStairsPostCheck:
|
||||||
LDA $A0
|
LDA.b $A0
|
||||||
CMP.w #$000C : BNE +
|
CMP.w #$000C : BNE +
|
||||||
; Ganon's tower entrance
|
; Ganon's tower entrance
|
||||||
LDX $0130 : CPX.b #$F1 : BNE .done ; Check that we were fading out
|
LDX.w $0130 : CPX.b #$F1 : BNE .done ; Check that we were fading out
|
||||||
|
|
||||||
LDX #22 : STX !REG_MUSIC_CONTROL_REQUEST
|
LDX.b #22 : STX.w MusicControlRequest
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
|
|
||||||
CMP.w #$006B : BNE .done
|
CMP.w #$006B : BNE .done
|
||||||
|
|
||||||
; Ganon's tower upstairs (with big key)
|
; Ganon's tower upstairs (with big key)
|
||||||
LDX $0130 : CPX.b #$F1 : BNE .done ; Check that we were fading out
|
LDX.w $0130 : CPX.b #$F1 : BNE .done ; Check that we were fading out
|
||||||
|
|
||||||
LDX #59 : STX !REG_MUSIC_CONTROL_REQUEST
|
LDX.b #59 : STX.w MusicControlRequest
|
||||||
|
|
||||||
.done
|
.done
|
||||||
LDX.b #$1C : LDA $A0 ; thing we wrote over
|
LDX.b #$1C : LDA.b $A0 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -426,8 +388,8 @@ SpiralStairsPostCheck:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
StoreMusicOnDeath:
|
StoreMusicOnDeath:
|
||||||
STA.l $7EC227 ; thing we wrote over
|
STA.l $7EC227 ; thing we wrote over
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
||||||
LDA !REG_CURRENT_MSU_TRACK : STA.l $7EC227
|
LDA.w CurrentMSUTrack : STA.l $7EC227
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -438,19 +400,19 @@ StoreMusicOnDeath:
|
|||||||
MSUInit:
|
MSUInit:
|
||||||
PHP
|
PHP
|
||||||
|
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
STA !MSU_LOADED_TRACK
|
STA.l MSULoadedTrack
|
||||||
STA !MSU_RESUME_TRACK
|
STA.l MSUResumeTrack
|
||||||
STA !MSU_RESUME_TIME : STA !MSU_RESUME_TIME+1 : STA !MSU_RESUME_TIME+2 : STA !MSU_RESUME_TIME+3
|
STA.l MSUResumeTime : STA.l MSUResumeTime+1 : STA.l MSUResumeTime+2 : STA.l MSUResumeTime+3
|
||||||
STA !MSU_RESUME_CONTROL
|
STA.l MSUResumeControl
|
||||||
|
|
||||||
LDA NoBGM : BNE .done
|
LDA.l NoBGM : BNE .done
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .done
|
LDA.w MSUID : CMP.w #!VAL_MSU_ID_01 : BNE .done
|
||||||
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .done
|
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .done
|
||||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .done
|
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .done
|
||||||
|
|
||||||
; Count the number of available MSU-1 packs
|
; Count the number of available MSU-1 packs
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
@@ -461,37 +423,37 @@ MSUInit:
|
|||||||
.check_pack
|
.check_pack
|
||||||
TYA
|
TYA
|
||||||
REP #$20
|
REP #$20
|
||||||
STA !REG_MSU_TRACK
|
STA.w MSUTRACK
|
||||||
!ADD.w #100
|
!ADD.w #100
|
||||||
INX
|
INX
|
||||||
SEP #$20
|
SEP #$20
|
||||||
TAY
|
TAY
|
||||||
.wait_pack
|
.wait_pack
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_pack
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_pack
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .check_pack
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BEQ .check_pack
|
||||||
TXA : STA !REG_MSU_PACK_COUNT
|
TXA : STA.l MSUPackCount
|
||||||
BRA +
|
BRA +
|
||||||
|
|
||||||
; Check the current MSU-1 pack for tracks that require SPC fallback
|
; Check the current MSU-1 pack for tracks that require SPC fallback
|
||||||
.check_fallback
|
.check_fallback
|
||||||
PHP : SEP #$10
|
PHP : SEP #$10
|
||||||
LDA NoBGM : BNE .done
|
LDA.l NoBGM : BNE .done
|
||||||
+ : LDA.b #64
|
+ : LDA.b #64
|
||||||
LDX.b #7
|
LDX.b #7
|
||||||
LDY.b #7
|
LDY.b #7
|
||||||
|
|
||||||
.check_track
|
.check_track
|
||||||
STA !REG_MSU_TRACK_LO
|
STA.w MSUTRACK
|
||||||
STZ !REG_MSU_TRACK_HI
|
STZ.w MSUTRACK+1
|
||||||
PHA
|
PHA
|
||||||
CLC
|
CLC
|
||||||
|
|
||||||
.wait_track
|
.wait_track
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_track
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_track
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE +
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE +
|
||||||
SEC
|
SEC
|
||||||
+
|
+
|
||||||
LDA !REG_MSU_FALLBACK_TABLE,X : ROL : STA !REG_MSU_FALLBACK_TABLE,X
|
LDA.l MSUFallbackTable,X : ROL : STA.l MSUFallbackTable,X
|
||||||
|
|
||||||
DEY : BPL .next_track
|
DEY : BPL .next_track
|
||||||
DEX : BPL +
|
DEX : BPL +
|
||||||
@@ -512,32 +474,32 @@ MSUInit:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MSUStopPlaying:
|
MSUStopPlaying:
|
||||||
PHA : XBA : PHA
|
PHA : XBA : PHA
|
||||||
LDA !MSU_LOADED_TRACK
|
LDA.l MSULoadedTrack
|
||||||
JSR IsResumableTrack : BCC +
|
JSR IsResumableTrack : BCC +
|
||||||
; dont save if we already saved recently
|
; dont save if we already saved recently
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA !MSU_RESUME_TRACK : AND #$00FF : BEQ ++
|
LDA.l MSUResumeTrack : AND #$00FF : BEQ ++
|
||||||
LDA NMIFrames : !SUB !MSU_RESUME_TIME : PHA
|
LDA.l NMIFrames : !SUB MSUResumeTime : PHA
|
||||||
LDA NMIFrames+2 : SBC !MSU_RESUME_TIME+2 : BNE +++
|
LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE +++
|
||||||
PLA : CMP MSUResumeTimer : !BLT .too_early
|
PLA : CMP.l MSUResumeTimer : !BLT .too_early
|
||||||
BRA ++
|
BRA ++
|
||||||
+++
|
+++
|
||||||
PLA
|
PLA
|
||||||
++
|
++
|
||||||
; saving
|
; saving
|
||||||
LDA NMIFrames : STA !MSU_RESUME_TIME
|
LDA.l NMIFrames : STA.l MSUResumeTime
|
||||||
LDA NMIFrames+2 : STA !MSU_RESUME_TIME+2
|
LDA.l NMIFrames+2 : STA.l MSUResumeTime+2
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
LDA !MSU_LOADED_TRACK : STA !MSU_RESUME_TRACK
|
LDA.l MSULoadedTrack : STA.l MSUResumeTrack
|
||||||
LDA #$00 : STA !MSU_LOADED_TRACK ; dont take this path if we're calling again
|
LDA.b #$00 : STA.l MSULoadedTrack ; dont take this path if we're calling again
|
||||||
LDA !FLAG_MSU_RESUME : STA !REG_MSU_CONTROL ; save this track's position
|
LDA.b #!FLAG_MSU_RESUME : STA.w MSUCTL ; save this track's position
|
||||||
PLA : XBA : PLA
|
PLA : XBA : PLA
|
||||||
RTS
|
RTS
|
||||||
.too_early
|
.too_early
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+
|
+
|
||||||
LDA #$00 : STA !REG_MSU_CONTROL
|
LDA.b #$00 : STA.w MSUCTL
|
||||||
PLA : XBA : PLA
|
PLA : XBA : PLA
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -547,124 +509,124 @@ RTS
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MSUMain:
|
MSUMain:
|
||||||
SEP #$20 ; set 8-BIT accumulator
|
SEP #$20 ; set 8-BIT accumulator
|
||||||
LDA $4210 ; thing we wrote over
|
LDA.w RDNMI ; thing we wrote over
|
||||||
REP #$20 ; set 16-BIT accumulator
|
REP #$20 ; set 16-BIT accumulator
|
||||||
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BEQ .continue
|
LDA.w MSUID : CMP.w #!VAL_MSU_ID_01 : BEQ .continue
|
||||||
.nomsu
|
.nomsu
|
||||||
SEP #$30
|
SEP #$30
|
||||||
-
|
-
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
.continue
|
.continue
|
||||||
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .nomsu
|
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .nomsu
|
||||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .nomsu
|
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .nomsu
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDX !REG_MUSIC_CONTROL : BEQ +
|
LDX.w MusicControl : BEQ +
|
||||||
JMP .command_ff
|
JMP .command_ff
|
||||||
+
|
+
|
||||||
LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade
|
LDA.l MSUDelayedCommand : BEQ .do_fade
|
||||||
|
|
||||||
.check_busy
|
.check_busy
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BNE -
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE -
|
||||||
.ready
|
.ready
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE -
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE -
|
||||||
.start
|
.start
|
||||||
LDA !MSU_RESUME_CONTROL : BIT !FLAG_RESUME_CANCEL : BEQ +
|
LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_CANCEL : BEQ +
|
||||||
EOR !FLAG_RESUME_CANCEL : STA !MSU_RESUME_CONTROL
|
EOR.b #!FLAG_RESUME_CANCEL : STA.l MSUResumeControl
|
||||||
REP #$20 : LDA !REG_MSU_LOADED_TRACK : STA !REG_MSU_TRACK : SEP #$20
|
REP #$20 : LDA.l MSULoadedTrack : STA.w MSUTRACK : SEP #$20
|
||||||
BRA -
|
BRA -
|
||||||
+
|
+
|
||||||
LDA !VAL_VOLUME_FULL
|
LDA.b #!VAL_VOLUME_FULL
|
||||||
STA !REG_TARGET_VOLUME
|
STA.w TargetVolume
|
||||||
|
|
||||||
LDA !MSU_RESUME_CONTROL : BIT !FLAG_RESUME_FADEIN : BEQ +
|
LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_FADEIN : BEQ +
|
||||||
EOR !FLAG_RESUME_FADEIN : STA !MSU_RESUME_CONTROL
|
EOR.b #!FLAG_RESUME_FADEIN : STA.l MSUResumeControl
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA !VAL_VOLUME_FULL
|
LDA.b #!VAL_VOLUME_FULL
|
||||||
++
|
++
|
||||||
STA !REG_CURRENT_VOLUME
|
STA.w CurrentVolume
|
||||||
STA !REG_MSU_VOLUME
|
STA.w MSUVOL
|
||||||
|
|
||||||
LDA !REG_CURRENT_MSU_TRACK : DEC : PHA
|
LDA.w CurrentMSUTrack : DEC : PHA
|
||||||
AND.b #$07 : TAY
|
AND.b #$07 : TAY
|
||||||
PLA : LSR #3 : TAX
|
PLA : LSR #3 : TAX
|
||||||
LDA !REG_MSU_FALLBACK_TABLE,X : BEQ +++ : CMP.b #$FF : BEQ ++
|
LDA.l MSUFallbackTable,X : BEQ +++ : CMP.b #$FF : BEQ ++
|
||||||
|
|
||||||
- : CPY #$00 : BEQ +
|
- : CPY #$00 : BEQ +
|
||||||
LSR : DEY : BRA -
|
LSR : DEY : BRA -
|
||||||
+
|
+
|
||||||
|
|
||||||
AND.b #$01 : BEQ +++
|
AND.b #$01 : BEQ +++
|
||||||
++ : LDA !REG_MSU_DELAYED_COMMAND
|
++ : LDA.l MSUDelayedCommand
|
||||||
+++ : STA !REG_MSU_CONTROL
|
+++ : STA.w MSUCTL
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
STA !REG_MSU_DELAYED_COMMAND
|
STA.l MSUDelayedCommand
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
|
|
||||||
.do_fade:
|
.do_fade:
|
||||||
LDA !REG_CURRENT_VOLUME : CMP !REG_TARGET_VOLUME : BNE +
|
LDA.w CurrentVolume : CMP.w TargetVolume : BNE +
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
+ : BCC .increment
|
+ : BCC .increment
|
||||||
.decrement
|
.decrement
|
||||||
SBC !VAL_VOLUME_DECREMENT : BCC .mute
|
SBC.b #!VAL_VOLUME_DECREMENT : BCC .mute
|
||||||
CMP !REG_TARGET_VOLUME : !BGE .set
|
CMP.w TargetVolume : !BGE .set
|
||||||
LDA !REG_TARGET_VOLUME : BRA .set
|
LDA.w TargetVolume : BRA .set
|
||||||
.mute
|
.mute
|
||||||
STZ !REG_CURRENT_VOLUME
|
STZ.w CurrentVolume
|
||||||
JSR MSUStopPlaying
|
JSR MSUStopPlaying
|
||||||
BRA .set
|
BRA .set
|
||||||
.increment
|
.increment
|
||||||
ADC !VAL_VOLUME_INCREMENT : BCS .max
|
ADC.b #!VAL_VOLUME_INCREMENT : BCS .max
|
||||||
CMP !REG_TARGET_VOLUME : !BLT .set
|
CMP.w TargetVolume : !BLT .set
|
||||||
LDA !REG_TARGET_VOLUME : BRA .set
|
LDA.w TargetVolume : BRA .set
|
||||||
.max
|
.max
|
||||||
LDA !VAL_VOLUME_FULL
|
LDA.b #!VAL_VOLUME_FULL
|
||||||
.set
|
.set
|
||||||
STA !REG_CURRENT_VOLUME
|
STA.w CurrentVolume
|
||||||
STA !REG_MSU_VOLUME
|
STA.w MSUVOL
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
|
|
||||||
.command_ff:
|
.command_ff:
|
||||||
CPX !VAL_COMMAND_LOAD_NEW_BANK : BNE .command_f3
|
CPX.b #!VAL_COMMAND_LOAD_NEW_BANK : BNE .command_f3
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
|
|
||||||
.command_f3:
|
.command_f3:
|
||||||
CPX !VAL_COMMAND_FULL_VOLUME : BNE .command_f2
|
CPX.b #!VAL_COMMAND_FULL_VOLUME : BNE .command_f2
|
||||||
LDA !VAL_VOLUME_FULL
|
LDA.b #!VAL_VOLUME_FULL
|
||||||
STA !REG_TARGET_VOLUME
|
STA.w TargetVolume
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
|
|
||||||
.command_f2:
|
.command_f2:
|
||||||
CPX !VAL_COMMAND_FADE_HALF : BNE .command_f1
|
CPX.b #!VAL_COMMAND_FADE_HALF : BNE .command_f1
|
||||||
LDA !VAL_VOLUME_HALF
|
LDA.b #!VAL_VOLUME_HALF
|
||||||
STA !REG_TARGET_VOLUME
|
STA.w TargetVolume
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
|
|
||||||
.command_f1:
|
.command_f1:
|
||||||
CPX !VAL_COMMAND_FADE_OUT : BNE .command_f0
|
CPX.b #!VAL_COMMAND_FADE_OUT : BNE .command_f0
|
||||||
STZ !REG_TARGET_VOLUME
|
STZ.w TargetVolume
|
||||||
STZ !REG_CURRENT_MSU_TRACK
|
STZ.w CurrentMSUTrack
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
|
|
||||||
.command_f0:
|
.command_f0:
|
||||||
CPX !VAL_COMMAND_STOP_PLAYBACK : !BLT .load_track
|
CPX.b #!VAL_COMMAND_STOP_PLAYBACK : !BLT .load_track
|
||||||
CPX !VAL_COMMAND_MUTE_SPC : BEQ + ; Don't allow executing the mute/umute
|
CPX.b #!VAL_COMMAND_MUTE_SPC : BEQ + ; Don't allow executing the mute/umute
|
||||||
CPX !VAL_COMMAND_UNMUTE_SPC : BNE ++ ; commands during NMI like this
|
CPX.b #!VAL_COMMAND_UNMUTE_SPC : BNE ++ ; commands during NMI like this
|
||||||
+ : LDA.b #$00 : STA !REG_MUSIC_CONTROL
|
+ : LDA.b #$00 : STA.w MusicControl
|
||||||
++ : JML SPCContinue
|
++ : JML SPCContinue
|
||||||
|
|
||||||
.load_track:
|
.load_track:
|
||||||
CPX !REG_CURRENT_MSU_TRACK : BNE +
|
CPX.w CurrentMSUTrack : BNE +
|
||||||
- : CPX #27 : BEQ +
|
- : CPX.b #27 : BEQ +
|
||||||
TXA
|
TXA
|
||||||
JMP .done+1
|
JMP .done+1
|
||||||
+
|
+
|
||||||
CPX !REG_CURRENT_COMMAND : BEQ -
|
CPX.w CurrentControlRequest : BEQ -
|
||||||
LDA.b #$00 : XBA
|
LDA.b #$00 : XBA
|
||||||
LDA !REG_MSU_PACK_CURRENT : BEQ +
|
LDA.l MSUPackCurrent : BEQ +
|
||||||
- : CMP !REG_MSU_PACK_COUNT : !BLT +
|
- : CMP.l MSUPackCount : !BLT +
|
||||||
!SUB !REG_MSU_PACK_COUNT : BRA -
|
!SUB.l MSUPackCount : BRA -
|
||||||
+
|
+
|
||||||
|
|
||||||
JSR MSUStopPlaying
|
JSR MSUStopPlaying
|
||||||
@@ -676,42 +638,42 @@ MSUMain:
|
|||||||
!ADD.w #100
|
!ADD.w #100
|
||||||
DEX : BNE -
|
DEX : BNE -
|
||||||
+
|
+
|
||||||
STA !REG_MSU_TRACK
|
STA.w MSUTRACK
|
||||||
STA !REG_MSU_LOADED_TRACK
|
STA.l MSULoadedTrack
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
PLX
|
PLX
|
||||||
TXA : CMP !MSU_RESUME_TRACK : BNE + ; dont resume if too late
|
TXA : CMP.l MSUResumeTrack : BNE + ; dont resume if too late
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA NMIFrames : !SUB !MSU_RESUME_TIME : PHA
|
LDA.l NMIFrames : !SUB MSUResumeTime : PHA
|
||||||
LDA NMIFrames+2 : SBC !MSU_RESUME_TIME+2 : BNE ++
|
LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE ++
|
||||||
PLA : CMP MSUResumeTimer : !BGE +++
|
PLA : CMP.l MSUResumeTimer : !BGE +++
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA !FLAG_RESUME_FADEIN : BRA .done_resume
|
LDA.b #!FLAG_RESUME_FADEIN : BRA .done_resume
|
||||||
++
|
++
|
||||||
PLA
|
PLA
|
||||||
+++
|
+++
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA !FLAG_RESUME_CANCEL
|
LDA.b #!FLAG_RESUME_CANCEL
|
||||||
.done_resume:
|
.done_resume:
|
||||||
STA !MSU_RESUME_CONTROL
|
STA.l MSUResumeControl
|
||||||
LDA #$00 : STA !MSU_RESUME_TRACK
|
LDA.b #$00 : STA.l MSUResumeTrack
|
||||||
+
|
+
|
||||||
CPX #07 : BNE + ; Kakariko Village
|
CPX #07 : BNE + ; Kakariko Village
|
||||||
LDA $10 : CMP #$07 : BNE +
|
LDA.b $10 : CMP #$07 : BNE +
|
||||||
; we're in link's house -> ignore
|
; we're in link's house -> ignore
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
TXA
|
TXA
|
||||||
++
|
++
|
||||||
STA !MSU_LOADED_TRACK
|
STA.l MSULoadedTrack
|
||||||
STX !REG_CURRENT_MSU_TRACK
|
STX.w CurrentMSUTrack
|
||||||
LDA !REG_MSU_PACK_CURRENT : CMP #$FE : !BLT +
|
LDA.l MSUPackCurrent : CMP #$FE : !BLT +
|
||||||
LDA #$00 : BRA ++
|
LDA.b #$00 : BRA ++
|
||||||
+ : LDA MSUTrackList-1,X
|
+ : LDA.l MSUTrackList-1,X
|
||||||
++ : STA !REG_MSU_DELAYED_COMMAND
|
++ : STA.l MSUDelayedCommand
|
||||||
LDA MSUExtendedFallbackList-1,X
|
LDA.l MSUExtendedFallbackList-1,X
|
||||||
CMP.b #17 : BEQ +
|
CMP.b #17 : BEQ +
|
||||||
CMP.b #22 : BEQ +
|
CMP.b #22 : BEQ +
|
||||||
CMP.b #35 : !BLT .done
|
CMP.b #35 : !BLT .done
|
||||||
@@ -720,18 +682,18 @@ MSUMain:
|
|||||||
+ : PHB : REP #$10
|
+ : PHB : REP #$10
|
||||||
LDX $040C
|
LDX $040C
|
||||||
LDA.b #Music_Eastern>>16 : PHA : PLB ; Set bank to music pointers
|
LDA.b #Music_Eastern>>16 : PHA : PLB ; Set bank to music pointers
|
||||||
LDY $00 : PHY
|
LDY.b Scrap00 : PHY
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA MSUDungeonFallbackList,X : STA $00
|
LDA.l MSUDungeonFallbackList,X : STA.b Scrap00
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA ($00)
|
LDA.b (Scrap00)
|
||||||
PLY : STY $00 : SEP #$10 : PLB
|
PLY : STY.b Scrap00 : SEP #$10 : PLB
|
||||||
|
|
||||||
.done
|
.done
|
||||||
- : TAX : CMP MSUExtendedFallbackList-1,X : BEQ +
|
- : TAX : CMP.l MSUExtendedFallbackList-1,X : BEQ +
|
||||||
LDA MSUExtendedFallbackList-1,X : BRA -
|
LDA.l MSUExtendedFallbackList-1,X : BRA -
|
||||||
+
|
+
|
||||||
STA !REG_MUSIC_CONTROL
|
STA.w MusicControl
|
||||||
JML SPCContinue
|
JML SPCContinue
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -740,12 +702,12 @@ MSUMain:
|
|||||||
; Wait for the fanfare music to start, or else it can get skipped entirely
|
; Wait for the fanfare music to start, or else it can get skipped entirely
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FanfarePreload:
|
FanfarePreload:
|
||||||
STA.l !REG_MUSIC_CONTROL_REQUEST ; thing we wrote over
|
STA.w MusicControlRequest ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
JSL CheckMusicLoadRequest
|
JSL CheckMusicLoadRequest
|
||||||
WAI
|
WAI
|
||||||
PLA
|
PLA
|
||||||
- : CMP.l !REG_SPC_CONTROL : BNE -
|
- : CMP.w APUIO0 : BNE -
|
||||||
JML AddReceivedItem_doneWithSoundEffects
|
JML AddReceivedItem_doneWithSoundEffects
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -753,22 +715,22 @@ FanfarePreload:
|
|||||||
; Wait for pendant fanfare to finish
|
; Wait for pendant fanfare to finish
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PendantFanfareWait:
|
PendantFanfareWait:
|
||||||
LDA TournamentSeed : BNE .spc
|
LDA.l TournamentSeed : BNE .spc
|
||||||
LDA FastFanfare : BNE .done
|
LDA.l FastFanfare : BNE .done
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .spc
|
LDA.w MSUID : CMP.w #!VAL_MSU_ID_01 : BNE .spc
|
||||||
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .spc
|
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc
|
||||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .spc
|
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA !REG_MSU_PACK_CURRENT : CMP #$FE : !BGE .spc
|
LDA.l MSUPackCurrent : CMP #$FE : !BGE .spc
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
|
||||||
LDA !REG_MSU_DELAYED_COMMAND : BNE .continue
|
LDA.l MSUDelayedCommand : BNE .continue
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
||||||
.continue
|
.continue
|
||||||
jml PendantFanfareContinue
|
jml PendantFanfareContinue
|
||||||
.spc
|
.spc
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l !REG_SPC_CONTROL : BNE .continue
|
LDA.l APUIO0 : BNE .continue
|
||||||
.done
|
.done
|
||||||
jml PendantFanfareDone
|
jml PendantFanfareDone
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -777,32 +739,32 @@ PendantFanfareWait:
|
|||||||
; Wait for crystal fanfare to finish
|
; Wait for crystal fanfare to finish
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CrystalFanfareWait:
|
CrystalFanfareWait:
|
||||||
LDA TournamentSeed : BNE .spc
|
LDA.l TournamentSeed : BNE .spc
|
||||||
LDA FastFanfare : BNE .done
|
LDA.l FastFanfare : BNE .done
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .spc
|
LDA.w MSUID : CMP.w #!VAL_MSU_ID_01 : BNE .spc
|
||||||
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .spc
|
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc
|
||||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .spc
|
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA !REG_MSU_PACK_CURRENT : CMP #$FE : !BGE .spc
|
LDA.l MSUPackCurrent : CMP.b #$FE : !BGE .spc
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
|
||||||
LDA !REG_MSU_DELAYED_COMMAND : BNE .continue
|
LDA.l MSUDelayedCommand : BNE .continue
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
||||||
.continue
|
.continue
|
||||||
jml CrystalFanfareContinue
|
jml CrystalFanfareContinue
|
||||||
.spc
|
.spc
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l !REG_SPC_CONTROL : BNE .continue
|
LDA.l APUIO0 : BNE .continue
|
||||||
.done
|
.done
|
||||||
jml CrystalFanfareDone
|
JML CrystalFanfareDone
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Delay input scanning on startup/S&Q to avoid hard-lock from button mashing
|
; Delay input scanning on startup/S&Q to avoid hard-lock from button mashing
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
StartupWait:
|
StartupWait:
|
||||||
LDA $11 : CMP.b #$04 : BCC .done ; thing we wrote over
|
LDA.b $11 : CMP.b #$04 : BCC .done ; thing we wrote over
|
||||||
LDA !REG_SPC_CONTROL : BEQ .done-1
|
LDA.w APUIO0 : BEQ .done-1
|
||||||
CMP.b #$01 : BEQ .done
|
CMP.b #$01 : BEQ .done
|
||||||
CLC
|
CLC
|
||||||
.done
|
.done
|
||||||
@@ -814,13 +776,13 @@ StartupWait:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
EndingMusicWait:
|
EndingMusicWait:
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .done
|
LDA.w MSUID : CMP.w #!VAL_MSU_ID_01 : BNE .done
|
||||||
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .done
|
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .done
|
||||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .done
|
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
.wait
|
.wait
|
||||||
LDA.b $50 : BNE .done
|
LDA.b $50 : BNE .done
|
||||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BNE .wait
|
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BNE .wait
|
||||||
.done
|
.done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b #$22
|
LDA.b #$22
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ PreOverworld_LoadProperties_ChooseMusic:
|
|||||||
Overworld_FinishMirrorWarp:
|
Overworld_FinishMirrorWarp:
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
LDA.w #$2641 : STA $4370
|
LDA.w #$2641 : STA.w DMAP7
|
||||||
|
|
||||||
LDX.b #$3E
|
LDX.b #$3E
|
||||||
|
|
||||||
|
|||||||
1148
musicvolumes.asm
1148
musicvolumes.asm
File diff suppressed because it is too large
Load Diff
145
newhud.asm
145
newhud.asm
@@ -1,8 +1,7 @@
|
|||||||
NewDrawHud:
|
NewDrawHud:
|
||||||
SEP #$30
|
SEP #$30
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw bomb count
|
; Draw bomb count
|
||||||
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
LDA.l InfiniteBombs : BNE .infinite_bombs
|
LDA.l InfiniteBombs : BNE .infinite_bombs
|
||||||
@@ -10,54 +9,50 @@ SEP #$30
|
|||||||
LDA.l BombsEquipment ; bombs
|
LDA.l BombsEquipment ; bombs
|
||||||
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.b $06 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS ; Draw bombs 10 digit
|
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDBombCount ; Draw bombs 10 digit
|
||||||
LDX.b $07 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; Draw bombs 1 digit
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDBombCount+2 ; Draw bombs 1 digit
|
||||||
BRA +
|
BRA +
|
||||||
|
|
||||||
.infinite_bombs
|
.infinite_bombs
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$2431 : STA !BOMBCOUNT_DRAW_ADDRESS ; infinity (left half)
|
LDA.w #$2431 : STA.l HUDBombCount ; infinity (left half)
|
||||||
INC A : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; infinity (right half)
|
INC A : STA.l HUDBombCount+2 ; infinity (right half)
|
||||||
+
|
+
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw rupee counter
|
; Draw rupee counter
|
||||||
!RUPEE_DRAW_ADDRESS = "$7EC750"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
LDA.l DisplayRupees ; Drawing bombs (above) always ends with 16-bit A, so, no need to REP here
|
LDA.l DisplayRupees ; Drawing bombs (above) always ends with 16-bit A, so, no need to REP here
|
||||||
JSR HudHexToDec4Digit
|
JSR HudHexToDec4Digit
|
||||||
LDX.b $04 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS ; 1000s
|
LDX.b Scrap04 : TXA : ORA.w #$2400 : STA.l HUDRupees ; 1000s
|
||||||
LDX.b $05 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+2 ; 100s
|
LDX.b Scrap05 : TXA : ORA.w #$2400 : STA.l HUDRupees+2 ; 100s
|
||||||
LDX.b $06 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+4 ; 10s
|
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDRupees+4 ; 10s
|
||||||
LDX.b $07 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+6 ; 1s
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDRupees+6 ; 1s
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw arrow count
|
; Draw arrow count
|
||||||
!ARROWCOUNT_DRAW_ADDRESS = "$7EC760"
|
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l ArrowMode : BNE +
|
LDA.l ArrowMode : BNE +
|
||||||
LDA !INFINITE_ARROWS : BNE .infinite_arrows
|
LDA.l InfiniteArrows : BNE .infinite_arrows
|
||||||
.finite_arrows
|
.finite_arrows
|
||||||
LDA.l CurrentArrows ; arrows
|
LDA.l CurrentArrows ; arrows
|
||||||
JSR HudHexToDec2Digit
|
JSR HudHexToDec2Digit
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.b $06 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS ; Draw arrows 10 digit
|
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDArrowCount ; Draw arrows 10 digit
|
||||||
LDX.b $07 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS+2 ; Draw arrows 1 digit
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDArrowCount+2 ; Draw arrows 1 digit
|
||||||
BRA +
|
BRA +
|
||||||
|
|
||||||
.infinite_arrows
|
.infinite_arrows
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$2431 : STA !ARROWCOUNT_DRAW_ADDRESS ; infinity (left half)
|
LDA.w #$2431 : STA.l HUDArrowCount ; infinity (left half)
|
||||||
INC A : STA !ARROWCOUNT_DRAW_ADDRESS+2 ; infinity (right half)
|
INC A : STA.l HUDArrowCount+2 ; infinity (right half)
|
||||||
+
|
+
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw Goal Item Indicator
|
; Draw Goal Item Indicator
|
||||||
!GOAL_DRAW_ADDRESS = "$7EC72A"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -66,25 +61,25 @@ SEP #$30
|
|||||||
LDA.l GoalCounter
|
LDA.l GoalCounter
|
||||||
JSR HudHexToDec4Digit
|
JSR HudHexToDec4Digit
|
||||||
|
|
||||||
LDA.l GoalItemIcon : STA.l !GOAL_DRAW_ADDRESS ; draw star icon
|
LDA.l GoalItemIcon : STA.l HUDGoalIndicator ; draw star icon
|
||||||
|
|
||||||
LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+2 ; draw 100's digit
|
LDX.b Scrap05 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+2 ; draw 100's digit
|
||||||
LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+4 ; draw 10's digit
|
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+4 ; draw 10's digit
|
||||||
LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+6 ; draw 1's digit
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+6 ; draw 1's digit
|
||||||
|
|
||||||
LDA.l GoalItemRequirement : CMP.w #$FFFF : BEQ .skip
|
LDA.l GoalItemRequirement : CMP.w #$FFFF : BEQ .skip
|
||||||
LDA.l GoalItemRequirement
|
LDA.l GoalItemRequirement
|
||||||
JSR HudHexToDec4Digit
|
JSR HudHexToDec4Digit
|
||||||
LDA.w #$2830 : STA !GOAL_DRAW_ADDRESS+8 ; draw slash
|
LDA.w #$2830 : STA.l HUDGoalIndicator+8 ; draw slash
|
||||||
LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+10 ; draw 100's digit
|
LDX.b Scrap05 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+10 ; draw 100's digit
|
||||||
LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+12 ; draw 10's digit
|
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+12 ; draw 10's digit
|
||||||
LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+14 ; draw 1's digit
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+14 ; draw 1's digit
|
||||||
BRA .done
|
BRA .done
|
||||||
.skip
|
.skip
|
||||||
LDA.w #$207F ; transparent tile
|
LDA.w #$207F ; transparent tile
|
||||||
STA !GOAL_DRAW_ADDRESS+8
|
STA.l HUDGoalIndicator+8
|
||||||
STA !GOAL_DRAW_ADDRESS+10
|
STA.l HUDGoalIndicator+10
|
||||||
STA !GOAL_DRAW_ADDRESS+12
|
STA.l HUDGoalIndicator+12
|
||||||
.done
|
.done
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -96,8 +91,6 @@ SEP #$30
|
|||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw key count
|
; Draw key count
|
||||||
!KEY_DIGITS_ADDRESS = "$7EC764"
|
|
||||||
!KEY_ICON_ADDRESS = "$7EC726"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l CurrentSmallKeys : CMP.b #$FF : BEQ .not_in_dungeon
|
LDA.l CurrentSmallKeys : CMP.b #$FF : BEQ .not_in_dungeon
|
||||||
@@ -105,21 +98,21 @@ SEP #$30
|
|||||||
JSR HudHexToDec2Digit : REP #$20
|
JSR HudHexToDec2Digit : REP #$20
|
||||||
|
|
||||||
; if 10s digit is 0, draw transparent tile instead of 0
|
; if 10s digit is 0, draw transparent tile instead of 0
|
||||||
LDX.b $06 : TXA : CPX.b #$90 : BNE +
|
LDX.b Scrap06 : TXA : CPX.b #$90 : BNE +
|
||||||
LDA.w #$007F
|
LDA.w #$007F
|
||||||
+
|
+
|
||||||
ORA.w #$2400 : STA !KEY_DIGITS_ADDRESS
|
ORA.w #$2400 : STA.l HUDKeyDigits
|
||||||
|
|
||||||
; 1s digit
|
; 1s digit
|
||||||
LDX.b $07 : TXA : ORA.w #$2400 : STA !KEY_DIGITS_ADDRESS+2
|
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDKeyDigits+2
|
||||||
BRA .done_keys
|
BRA .done_keys
|
||||||
|
|
||||||
.not_in_dungeon
|
.not_in_dungeon
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
;in the overworld, draw transparent tiles instead of key count
|
;in the overworld, draw transparent tiles instead of key count
|
||||||
LDA.w #$247F : STA !KEY_DIGITS_ADDRESS : STA !KEY_DIGITS_ADDRESS+2
|
LDA.w #$247F : STA.l HUDKeyDigits : STA.l HUDKeyDigits+2
|
||||||
STA !KEY_ICON_ADDRESS
|
STA.l HUDKeyIcon
|
||||||
|
|
||||||
.done_keys
|
.done_keys
|
||||||
|
|
||||||
@@ -129,7 +122,6 @@ SEP #$30
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Draw pendant/crystal icon
|
; Draw pendant/crystal icon
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!PRIZE_ICON = $7EC742
|
|
||||||
!P_ICON = $296C
|
!P_ICON = $296C
|
||||||
!C_ICON = $295F
|
!C_ICON = $295F
|
||||||
|
|
||||||
@@ -141,7 +133,7 @@ SEP #$30
|
|||||||
CPX #$04 : !BLT .noprize
|
CPX #$04 : !BLT .noprize
|
||||||
CPX #$08 : BEQ .noprize
|
CPX #$08 : BEQ .noprize
|
||||||
|
|
||||||
LDA $10 : CMP #$12 : BEQ .noprize
|
LDA.b $10 : CMP #$12 : BEQ .noprize
|
||||||
|
|
||||||
LDA.l MapMode
|
LDA.l MapMode
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -168,54 +160,53 @@ SEP #$30
|
|||||||
LDA.w #$207F
|
LDA.w #$207F
|
||||||
|
|
||||||
.doneprize
|
.doneprize
|
||||||
STA.l !PRIZE_ICON
|
STA.l HUDPrizeIcon
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Draw Magic Meter
|
; Draw Magic Meter
|
||||||
!INFINITE_MAGIC = "$7F50CA"
|
DrawMagicMeter_mp_tilemap = $0DFE0F
|
||||||
!DrawMagicMeter_mp_tilemap = "$0DFE0F"
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LDA CurrentMagic : AND #$00FF ; crap we wrote over when placing the hook for OnDrawHud
|
LDA.l CurrentMagic : AND.w #$00FF ; crap we wrote over when placing the hook for OnDrawHud
|
||||||
!ADD #$0007
|
!ADD #$0007
|
||||||
AND #$FFF8
|
AND.w #$FFF8
|
||||||
TAX ; end of crap
|
TAX ; end of crap
|
||||||
|
|
||||||
LDA !INFINITE_MAGIC : AND.w #$00FF : BNE + : JMP .green : +
|
LDA.l InfiniteMagic : AND.w #$00FF : BNE + : JMP .green : +
|
||||||
SEP #$20 : LDA.b #$80 : STA CurrentMagic : REP #$30 ; set magic to max
|
SEP #$20 : LDA.b #$80 : STA.l CurrentMagic : REP #$30 ; set magic to max
|
||||||
LDX.w #$0080 ; load full magic meter graphics
|
LDX.w #$0080 ; load full magic meter graphics
|
||||||
LDA $1A : AND.w #$000C : LSR #2
|
LDA.b $1A : AND.w #$000C : LSR #2
|
||||||
BEQ .red
|
BEQ .red
|
||||||
CMP.w #0001 : BEQ .yellow
|
CMP.w #0001 : BEQ .yellow
|
||||||
CMP.w #0002 : BNE + : JMP .green : +
|
CMP.w #0002 : BNE + : JMP .green : +
|
||||||
.blue
|
.blue
|
||||||
LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA $7EC746
|
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA.l $7EC746
|
||||||
LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA $7EC786
|
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA.l $7EC786
|
||||||
LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EFFF : STA $7EC7C6
|
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$EFFF : STA.l $7EC7C6
|
||||||
LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EFFF : STA $7EC806
|
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$EFFF : STA.l $7EC806
|
||||||
RTL
|
RTL
|
||||||
.red
|
.red
|
||||||
LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E7FF : STA $7EC746
|
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$E7FF : STA.l $7EC746
|
||||||
LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E7FF : STA $7EC786
|
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$E7FF : STA.l $7EC786
|
||||||
LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E7FF : STA $7EC7C6
|
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$E7FF : STA.l $7EC7C6
|
||||||
LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E7FF : STA $7EC806
|
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$E7FF : STA.l $7EC806
|
||||||
RTL
|
RTL
|
||||||
.yellow
|
.yellow
|
||||||
LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EBFF : STA $7EC746
|
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$EBFF : STA.l $7EC746
|
||||||
LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EBFF : STA $7EC786
|
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$EBFF : STA.l $7EC786
|
||||||
LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EBFF : STA $7EC7C6
|
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$EBFF : STA.l $7EC7C6
|
||||||
LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EBFF : STA $7EC806
|
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$EBFF : STA.l $7EC806
|
||||||
RTL
|
RTL
|
||||||
.orange
|
.orange
|
||||||
LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E3FF : STA $7EC746
|
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$E3FF : STA.l $7EC746
|
||||||
LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E3FF : STA $7EC786
|
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$E3FF : STA.l $7EC786
|
||||||
LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E3FF : STA $7EC7C6
|
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$E3FF : STA.l $7EC7C6
|
||||||
LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E3FF : STA $7EC806
|
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$E3FF : STA.l $7EC806
|
||||||
RTL
|
RTL
|
||||||
.green
|
.green
|
||||||
LDA !DrawMagicMeter_mp_tilemap+0, X : STA $7EC746
|
LDA.l DrawMagicMeter_mp_tilemap+0, X : STA.l $7EC746
|
||||||
LDA !DrawMagicMeter_mp_tilemap+2, X : STA $7EC786
|
LDA.l DrawMagicMeter_mp_tilemap+2, X : STA.l $7EC786
|
||||||
LDA !DrawMagicMeter_mp_tilemap+4, X : STA $7EC7C6
|
LDA.l DrawMagicMeter_mp_tilemap+4, X : STA.l $7EC7C6
|
||||||
LDA !DrawMagicMeter_mp_tilemap+6, X : STA $7EC806
|
LDA.l DrawMagicMeter_mp_tilemap+6, X : STA.l $7EC806
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -230,25 +221,25 @@ HudHexToDec4Digit:
|
|||||||
INY
|
INY
|
||||||
SBC.w #1000 : BRA -
|
SBC.w #1000 : BRA -
|
||||||
+
|
+
|
||||||
STY $04 : LDY #$90 ; Store 1000s digit & reset Y
|
STY.b Scrap04 : LDY.b #$90 ; Store 1000s digit & reset Y
|
||||||
-
|
-
|
||||||
CMP.w #100 : !BLT +
|
CMP.w #100 : !BLT +
|
||||||
INY
|
INY
|
||||||
SBC.w #100 : BRA -
|
SBC.w #100 : BRA -
|
||||||
+
|
+
|
||||||
STY $05 : LDY #$90 ; Store 100s digit & reset Y
|
STY.b Scrap05 : LDY.b #$90 ; Store 100s digit & reset Y
|
||||||
-
|
-
|
||||||
CMP.w #10 : !BLT +
|
CMP.w #10 : !BLT +
|
||||||
INY
|
INY
|
||||||
SBC.w #10 : BRA -
|
SBC.w #10 : BRA -
|
||||||
+
|
+
|
||||||
STY $06 : LDY #$90 ; Store 10s digit & reset Y
|
STY.b Scrap06 : LDY.b #$90 ; Store 10s digit & reset Y
|
||||||
CMP.w #1 : !BLT +
|
CMP.w #1 : !BLT +
|
||||||
-
|
-
|
||||||
INY
|
INY
|
||||||
DEC : BNE -
|
DEC : BNE -
|
||||||
+
|
+
|
||||||
STY $07 ; Store 1s digit
|
STY.b Scrap07 ; Store 1s digit
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -290,11 +281,11 @@ HudHexToDec2Digit:
|
|||||||
INY
|
INY
|
||||||
SBC.b #10 : BRA -
|
SBC.b #10 : BRA -
|
||||||
+
|
+
|
||||||
STY $06 : LDY #$90 ; Store 10s digit and reset Y
|
STY.b Scrap06 : LDY.b #$90 ; Store 10s digit and reset Y
|
||||||
CMP.b #1 : !BLT +
|
CMP.b #1 : !BLT +
|
||||||
-
|
-
|
||||||
INY
|
INY
|
||||||
DEC : BNE -
|
DEC : BNE -
|
||||||
+
|
+
|
||||||
STY $07 ; Store 1s digit
|
STY.b Scrap07 ; Store 1s digit
|
||||||
RTS
|
RTS
|
||||||
|
|||||||
427
newitems.asm
427
newitems.asm
@@ -48,25 +48,6 @@
|
|||||||
; 0xF1 - freestanding heart 2 / boss heart / npc
|
; 0xF1 - freestanding heart 2 / boss heart / npc
|
||||||
; 0xF3 - tablet/pedestal
|
; 0xF3 - tablet/pedestal
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;GetAnimatedSpriteGfxFile:
|
|
||||||
; LDY.b #$32
|
|
||||||
; CMP.b #$39 : BCS + ; If tile index >= 0x39, use sprite file 0x32 (Blank file)
|
|
||||||
;
|
|
||||||
; LDY.b #$5D
|
|
||||||
;
|
|
||||||
; CMP.b #$23 : BEQ + ; If tile index is 0x23 (Pendant)...
|
|
||||||
; CMP.b #$37 : BCS + ; ...or tile index >= 0x37, use sprite file 0x5D (Pendant, Boots, 20 Rupees)
|
|
||||||
;
|
|
||||||
; LDY.b #$5C
|
|
||||||
;
|
|
||||||
; CMP.b #$0C : BEQ + ; If tile index is 0x0C (Flute)...
|
|
||||||
; CMP.b #$24 : BCS + ; ...or tile index >= 24, use sprite file 0x5C (Rupees, Crystal, Heart Piece ... ...)
|
|
||||||
;
|
|
||||||
; ; Otherwise, use sprite file 0x5B (Medallions, Mirror, Flippers, Lantern, Compass...)
|
|
||||||
; LDY.b #$5B
|
|
||||||
;+
|
|
||||||
;JML GetAnimatedSpriteGfxFile_return
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
GetAnimatedSpriteGfxFile:
|
GetAnimatedSpriteGfxFile:
|
||||||
CMP.b #$0C : BNE +
|
CMP.b #$0C : BNE +
|
||||||
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
||||||
@@ -119,7 +100,7 @@ dw $0A50 ; Power Star
|
|||||||
|
|
||||||
GetAnimatedSpriteBufferPointer:
|
GetAnimatedSpriteBufferPointer:
|
||||||
;PHB : PHK : PLB
|
;PHB : PHK : PLB
|
||||||
LDA.b $00 : ADC.l GetAnimatedSpriteBufferPointer_table, X
|
LDA.b Scrap00 : ADC.l GetAnimatedSpriteBufferPointer_table, X
|
||||||
;PLB
|
;PLB
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -146,30 +127,29 @@ endmacro
|
|||||||
;carry set if caught
|
;carry set if caught
|
||||||
;incsrc eventdata.asm
|
;incsrc eventdata.asm
|
||||||
ProcessEventItems:
|
ProcessEventItems:
|
||||||
;STA $FFFFFF
|
LDA.b Scrap00 : PHA
|
||||||
LDA $00 : PHA
|
LDA.b Scrap01 : PHA
|
||||||
LDA $01 : PHA
|
LDA.b Scrap02 : PHA
|
||||||
LDA $02 : PHA
|
|
||||||
PHY : PHP
|
PHY : PHP
|
||||||
PHB : LDA.b #$AF : PHA : PLB
|
PHB : LDA.b #$AF : PHA : PLB
|
||||||
LDA $02D8
|
LDA.w ItemReceiptID
|
||||||
CMP.b #$E0 : BNE +
|
CMP.b #$E0 : BNE +
|
||||||
REP #$30 ; set 16-bit accumulator & index registers
|
REP #$30 ; set 16-bit accumulator & index registers
|
||||||
LDA RNGItem : ASL : TAX
|
LDA.l RNGItem : ASL : TAX
|
||||||
LDA.l EventDataOffsets, X : !ADD #EventDataTable : STA $00
|
LDA.l EventDataOffsets, X : !ADD #EventDataTable : STA.b Scrap00
|
||||||
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$AF : STA $02
|
LDA.b #$AF : STA.b Scrap02
|
||||||
|
|
||||||
JSL.l LoadDialogAddressIndirect
|
JSL.l LoadDialogAddressIndirect
|
||||||
LDA RNGItem : INC : STA RNGItem
|
LDA.l RNGItem : INC : STA.l RNGItem
|
||||||
|
|
||||||
SEP #$10 ; set 8-bit index registers
|
SEP #$10 ; set 8-bit index registers
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA GoalItemRequirement : BEQ ++
|
LDA.l GoalItemRequirement : BEQ ++
|
||||||
LDA GoalCounter : INC : STA GoalCounter
|
LDA.l GoalCounter : INC : STA.l GoalCounter
|
||||||
CMP GoalItemRequirement : !BLT ++
|
CMP.l GoalItemRequirement : !BLT ++
|
||||||
LDA TurnInGoalItems : AND.w #$00FF : BNE ++
|
LDA.l TurnInGoalItems : AND.w #$00FF : BNE ++
|
||||||
JSL.l ActivateGoal
|
JSL.l ActivateGoal
|
||||||
++
|
++
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
@@ -179,71 +159,71 @@ ProcessEventItems:
|
|||||||
.done
|
.done
|
||||||
PLB
|
PLB
|
||||||
PLP : PLY
|
PLP : PLY
|
||||||
PLA : STA $02
|
PLA : STA.b Scrap02
|
||||||
PLA : STA $01
|
PLA : STA.b Scrap01
|
||||||
PLA : STA $00
|
PLA : STA.b Scrap00
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AddReceivedItemExpandedGetItem:
|
AddReceivedItemExpandedGetItem:
|
||||||
PHX
|
PHX
|
||||||
|
|
||||||
LDA $02D8 ; check inventory
|
LDA.w ItemReceiptID ; check inventory
|
||||||
JSL.l FreeDungeonItemNotice
|
JSL.l FreeDungeonItemNotice
|
||||||
CMP.b #$0B : BNE + ; Bow
|
CMP.b #$0B : BNE + ; Bow
|
||||||
LDA BowTracking : AND.b #$40 : BEQ ++
|
LDA.l BowTracking : AND.b #$40 : BEQ ++
|
||||||
LDA.l SilverArrowsUseRestriction : BNE ++
|
LDA.l SilverArrowsUseRestriction : BNE ++
|
||||||
LDA.b #03 : STA BowEquipment ; set bow to silver
|
LDA.b #03 : STA.l BowEquipment ; set bow to silver
|
||||||
++
|
++
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$3B : BNE + ; Silver Bow
|
+ CMP.b #$3B : BNE + ; Silver Bow
|
||||||
LDA.l SilverArrowsUseRestriction : BNE .noequip
|
LDA.l SilverArrowsUseRestriction : BNE .noequip
|
||||||
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
|
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
|
||||||
LDA ArrowsFiller : BNE ++ ; check arrows
|
LDA.l ArrowsFiller : BNE ++ ; check arrows
|
||||||
LDA.b #$03 : BRA +++ ; bow without arrow
|
LDA.b #$03 : BRA +++ ; bow without arrow
|
||||||
++
|
++
|
||||||
LDA.b #$04 ; bow with arrow
|
LDA.b #$04 ; bow with arrow
|
||||||
+++
|
+++
|
||||||
STA BowEquipment
|
STA.l BowEquipment
|
||||||
.noequip
|
.noequip
|
||||||
LDA BowTracking : ORA #$40 : STA BowTracking ; mark silver bow on y-toggle
|
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking ; mark silver bow on y-toggle
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$4C : BNE + ; 50 bombs
|
+ CMP.b #$4C : BNE + ; 50 bombs
|
||||||
LDA.b #50 : STA BombCapacity ; upgrade bombs
|
LDA.b #50 : STA.l BombCapacity ; upgrade bombs
|
||||||
LDA.b #50 : STA BombsFiller ; fill bombs
|
LDA.b #50 : STA.l BombsFiller ; fill bombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$4D : BNE + ; 70 arrows
|
+ CMP.b #$4D : BNE + ; 70 arrows
|
||||||
LDA.b #70 : STA ArrowCapacity ; upgrade arrows
|
LDA.b #70 : STA.l ArrowCapacity ; upgrade arrows
|
||||||
LDA.b #70 : STA ArrowsFiller ; fill arrows
|
LDA.b #70 : STA.l ArrowsFiller ; fill arrows
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$4E : BNE + ; 1/2 magic
|
+ CMP.b #$4E : BNE + ; 1/2 magic
|
||||||
LDA MagicConsumption : CMP #$02 : !BGE ++
|
LDA.l MagicConsumption : CMP.b #$02 : !BGE ++
|
||||||
INC : STA MagicConsumption ; upgrade magic
|
INC : STA.l MagicConsumption ; upgrade magic
|
||||||
++
|
++
|
||||||
LDA.b #$80 : STA MagicFiller ; fill magic
|
LDA.b #$80 : STA.l MagicFiller ; fill magic
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$4F : BNE + ; 1/4 magic
|
+ CMP.b #$4F : BNE + ; 1/4 magic
|
||||||
LDA.b #$02 : STA MagicConsumption ; upgrade magic
|
LDA.b #$02 : STA.l MagicConsumption ; upgrade magic
|
||||||
LDA.b #$80 : STA MagicFiller ; fill magic
|
LDA.b #$80 : STA.l MagicFiller ; fill magic
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$50 : BNE + ; Master Sword (Safe)
|
+ CMP.b #$50 : BNE + ; Master Sword (Safe)
|
||||||
LDA SwordEquipment : CMP.b #$02 : !BGE + ; skip if we have a better sword
|
LDA.l SwordEquipment : CMP.b #$02 : !BGE + ; skip if we have a better sword
|
||||||
LDA.b #$02 : STA SwordEquipment ; set master sword
|
LDA.b #$02 : STA.l SwordEquipment ; set master sword
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$51 : BNE + ; +5 Bombs
|
+ CMP.b #$51 : BNE + ; +5 Bombs
|
||||||
LDA BombCapacity : !ADD.b #$05 : STA BombCapacity ; upgrade bombs +5
|
LDA.l BombCapacity : !ADD.b #$05 : STA.l BombCapacity ; upgrade bombs +5
|
||||||
LDA.l Upgrade5BombsRefill : STA BombsFiller ; fill bombs
|
LDA.l Upgrade5BombsRefill : STA.l BombsFiller ; fill bombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$52 : BNE + ; +10 Bombs
|
+ CMP.b #$52 : BNE + ; +10 Bombs
|
||||||
LDA BombCapacity : !ADD.b #$0A : STA BombCapacity ; upgrade bombs +10
|
LDA.l BombCapacity : !ADD.b #$0A : STA.l BombCapacity ; upgrade bombs +10
|
||||||
LDA.l Upgrade10BombsRefill : STA BombsFiller ; fill bombs
|
LDA.l Upgrade10BombsRefill : STA.l BombsFiller ; fill bombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$53 : BNE + ; +5 Arrows
|
+ CMP.b #$53 : BNE + ; +5 Arrows
|
||||||
LDA ArrowCapacity : !ADD.b #$05 : STA ArrowCapacity ; upgrade arrows +5
|
LDA.l ArrowCapacity : !ADD.b #$05 : STA.l ArrowCapacity ; upgrade arrows +5
|
||||||
LDA.l Upgrade5ArrowsRefill : STA ArrowsFiller ; fill arrows
|
LDA.l Upgrade5ArrowsRefill : STA.l ArrowsFiller ; fill arrows
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$54 : BNE + ; +10 Arrows
|
+ CMP.b #$54 : BNE + ; +10 Arrows
|
||||||
LDA ArrowCapacity : !ADD.b #$0A : STA ArrowCapacity ; upgrade arrows +10
|
LDA.l ArrowCapacity : !ADD.b #$0A : STA.l ArrowCapacity ; upgrade arrows +10
|
||||||
LDA.l Upgrade10ArrowsRefill : STA ArrowsFiller ; fill arrows
|
LDA.l Upgrade10ArrowsRefill : STA.l ArrowsFiller ; fill arrows
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$55 : BNE + ; Programmable Object 1
|
+ CMP.b #$55 : BNE + ; Programmable Object 1
|
||||||
%ProgrammableItemLogic(1)
|
%ProgrammableItemLogic(1)
|
||||||
@@ -257,34 +237,34 @@ AddReceivedItemExpandedGetItem:
|
|||||||
+ CMP.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
+ CMP.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
||||||
LDA.l SilverArrowsUseRestriction : BNE +++
|
LDA.l SilverArrowsUseRestriction : BNE +++
|
||||||
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ +++
|
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ +++
|
||||||
LDA BowEquipment : BEQ ++ : CMP.b #$03 : !BGE ++
|
LDA.l BowEquipment : BEQ ++ : CMP.b #$03 : !BGE ++
|
||||||
!ADD.b #$02 : STA BowEquipment ; switch to silver bow
|
!ADD.b #$02 : STA.l BowEquipment ; switch to silver bow
|
||||||
++
|
++
|
||||||
+++
|
+++
|
||||||
LDA.l ArrowMode : BEQ ++
|
LDA.l ArrowMode : BEQ ++
|
||||||
LDA.b #$01 : STA ArrowsFiller
|
LDA.b #$01 : STA.l ArrowsFiller
|
||||||
++
|
++
|
||||||
+ CMP.b #$59 : BNE + ; 1 Rupoor
|
+ CMP.b #$59 : BNE + ; 1 Rupoor
|
||||||
REP #$20 : LDA CurrentRupees : !SUB RupoorDeduction : STA CurrentRupees : SEP #$20 ; Take 1 rupee
|
REP #$20 : LDA.l CurrentRupees : !SUB RupoorDeduction : STA.l CurrentRupees : SEP #$20 ; Take 1 rupee
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$5A : BNE + ; Null Item
|
+ CMP.b #$5A : BNE + ; Null Item
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$5B : BNE + ; Red Clock
|
+ CMP.b #$5B : BNE + ; Red Clock
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA ChallengeTimer : !ADD.l RedClockAmount : STA ChallengeTimer
|
LDA.l ChallengeTimer : !ADD.l RedClockAmount : STA.l ChallengeTimer
|
||||||
LDA ChallengeTimer+2 : ADC.l RedClockAmount+2 : STA ChallengeTimer+2
|
LDA.l ChallengeTimer+2 : ADC.l RedClockAmount+2 : STA.l ChallengeTimer+2
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$5C : BNE + ; Blue Clock
|
+ CMP.b #$5C : BNE + ; Blue Clock
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA ChallengeTimer : !ADD.l BlueClockAmount : STA ChallengeTimer
|
LDA.l ChallengeTimer : !ADD.l BlueClockAmount : STA.l ChallengeTimer
|
||||||
LDA ChallengeTimer+2 : ADC.l BlueClockAmount+2 : STA ChallengeTimer+2
|
LDA.l ChallengeTimer+2 : ADC.l BlueClockAmount+2 : STA.l ChallengeTimer+2
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$5D : BNE + ; Green Clock
|
+ CMP.b #$5D : BNE + ; Green Clock
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA ChallengeTimer : !ADD.l GreenClockAmount : STA ChallengeTimer
|
LDA.l ChallengeTimer : !ADD.l GreenClockAmount : STA.l ChallengeTimer
|
||||||
LDA ChallengeTimer+2 : ADC.l GreenClockAmount+2 : STA ChallengeTimer+2
|
LDA.l ChallengeTimer+2 : ADC.l GreenClockAmount+2 : STA.l ChallengeTimer+2
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$5E : BNE + ; Progressive Sword
|
+ CMP.b #$5E : BNE + ; Progressive Sword
|
||||||
@@ -332,73 +312,67 @@ AddReceivedItemExpandedGetItem:
|
|||||||
; JSL.l ItemGetServiceRequest
|
; JSL.l ItemGetServiceRequest
|
||||||
; JMP .done
|
; JMP .done
|
||||||
+ CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map
|
+ CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map
|
||||||
AND #$0F : CMP #$08 : !BGE ++
|
AND.b #$0F : CMP.b #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA MapField : STA MapField ; Map 1
|
ORA.l MapField : STA.l MapField ; Map 1
|
||||||
JMP .done
|
JMP .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA MapField+1 : STA MapField+1 ; Map 2
|
ORA.l MapField+1 : STA.l MapField+1 ; Map 2
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
|
+ CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass
|
||||||
AND #$0F : CMP #$08 : !BGE ++
|
AND.b #$0F : CMP.b #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA CompassField : STA CompassField ; Compass 1
|
ORA.l CompassField : STA.l CompassField ; Compass 1
|
||||||
JMP .done
|
JMP .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA CompassField+1 : STA CompassField+1 ; Compass 2
|
ORA.l CompassField+1 : STA.l CompassField+1 ; Compass 2
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
|
+ CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key
|
||||||
AND #$0F : CMP #$08 : !BGE ++
|
AND.b #$0F : CMP.b #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA BigKeyField : STA BigKeyField ; Big Key 1
|
ORA.l BigKeyField : STA.l BigKeyField ; Big Key 1
|
||||||
JMP .done
|
JMP .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA BigKeyField+1 : STA BigKeyField+1 ; Big Key 2
|
ORA.l BigKeyField+1 : STA.l BigKeyField+1 ; Big Key 2
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
||||||
AND #$0F : TAX
|
AND.b #$0F : TAX
|
||||||
LDA DungeonKeys, X : INC : STA DungeonKeys, X ; Increment Key Count
|
LDA.l DungeonKeys, X : INC : STA.l DungeonKeys, X ; Increment Key Count
|
||||||
|
|
||||||
CPX.b #$00 : BNE ++
|
CPX.b #$00 : BNE ++
|
||||||
STA HyruleCastleKeys ; copy HC to sewers
|
STA.l HyruleCastleKeys ; copy HC to sewers
|
||||||
++ : CPX.b #$01 : BNE ++
|
++ : CPX.b #$01 : BNE ++
|
||||||
STA SewerKeys ; copy sewers to HC
|
STA.l SewerKeys ; copy sewers to HC
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA.l GenericKeys : BEQ +
|
LDA.l GenericKeys : BEQ +
|
||||||
.generic
|
.generic
|
||||||
LDA CurrentSmallKeys : INC : STA CurrentSmallKeys
|
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys
|
||||||
JMP .done
|
JMP .done
|
||||||
.normal
|
.normal
|
||||||
TXA : ASL : CMP $040C : BNE ++
|
TXA : ASL : CMP.w $040C : BNE ++
|
||||||
LDA CurrentSmallKeys : INC : STA CurrentSmallKeys
|
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys
|
||||||
++
|
++
|
||||||
JMP .done
|
JMP .done
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
PLX
|
PLX
|
||||||
LDA $02E9 : CMP.b #$01 ; thing we wrote over
|
LDA.w $02E9 : CMP.b #$01 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
; #$70 - Maps
|
; #$70 - Maps
|
||||||
; #$80 - Compasses
|
; #$80 - Compasses
|
||||||
; #$90 - Big Keys
|
; #$90 - Big Keys
|
||||||
; #$A0 - Small Keys
|
; #$A0 - Small Keys
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!SCRATCH_AREA = "$7F5020"
|
|
||||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
|
||||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
|
||||||
!SINGLE_INDEX_BITMASK_TEMP = "$7F5022"
|
|
||||||
!LOCK_IN = "$7F5090"
|
|
||||||
!ITEM_BUSY = "$7F5091"
|
|
||||||
;2B:Bottle Already Filled w/ Red Potion
|
;2B:Bottle Already Filled w/ Red Potion
|
||||||
;2C:Bottle Already Filled w/ Green Potion
|
;2C:Bottle Already Filled w/ Green Potion
|
||||||
;2D:Bottle Already Filled w/ Blue Potion
|
;2D:Bottle Already Filled w/ Blue Potion
|
||||||
@@ -410,97 +384,97 @@ AddReceivedItemExpanded:
|
|||||||
PHA : PHX
|
PHA : PHX
|
||||||
JSL.l PreItemGet
|
JSL.l PreItemGet
|
||||||
|
|
||||||
LDA $02D8 ; Item Value
|
LDA.w ItemReceiptID ; Item Value
|
||||||
JSR AttemptItemSubstitution
|
JSR AttemptItemSubstitution
|
||||||
STA $02D8
|
STA.w ItemReceiptID
|
||||||
|
|
||||||
JSR IncrementItemCounters
|
JSR IncrementItemCounters
|
||||||
|
|
||||||
CMP.b #$16 : BNE ++ ; Bottle
|
CMP.b #$16 : BNE ++ ; Bottle
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$2B : BNE ++ ; Red Potion w/bottle
|
++ : CMP.b #$2B : BNE ++ ; Red Potion w/bottle
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$2C : BNE ++ ; Green Potion w/bottle
|
++ : CMP.b #$2C : BNE ++ ; Green Potion w/bottle
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$2D : BNE ++ ; Blue Potion w/bottle
|
++ : CMP.b #$2D : BNE ++ ; Blue Potion w/bottle
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$3C : BNE ++ ; Bee w/bottle
|
++ : CMP.b #$3C : BNE ++ ; Bee w/bottle
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$3D : BNE ++ ; Fairy w/bottle
|
++ : CMP.b #$3D : BNE ++ ; Fairy w/bottle
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$48 : BNE ++ ; Gold Bee w/bottle
|
++ : CMP.b #$48 : BNE ++ ; Gold Bee w/bottle
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
JSR.w CountBottles : CMP.l BottleLimit : !BLT +++
|
||||||
LDA.l BottleLimitReplacement : STA $02D8
|
LDA.l BottleLimitReplacement : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$4E : BNE ++ ; Progressive Magic
|
++ : CMP.b #$4E : BNE ++ ; Progressive Magic
|
||||||
LDA MagicConsumption : BEQ +++
|
LDA.l MagicConsumption : BEQ +++
|
||||||
LDA.b #$4F : STA $02D8
|
LDA.b #$4F : STA.w ItemReceiptID
|
||||||
+++ : JMP .done
|
+++ : JMP .done
|
||||||
++ : CMP.b #$5E : BNE ++ ; Progressive Sword
|
++ : CMP.b #$5E : BNE ++ ; Progressive Sword
|
||||||
LDA HighestSword : CMP.l ProgressiveSwordLimit : !BLT +
|
LDA.l HighestSword : CMP.l ProgressiveSwordLimit : !BLT +
|
||||||
LDA.l ProgressiveSwordReplacement : STA $02D8 : JMP .done
|
LDA.l ProgressiveSwordReplacement : STA.w ItemReceiptID : JMP .done
|
||||||
+ : CMP.b #$00 : BNE + ; No Sword
|
+ : CMP.b #$00 : BNE + ; No Sword
|
||||||
LDA.b #$49 : STA $02D8 : JMP .done
|
LDA.b #$49 : STA.w ItemReceiptID : JMP .done
|
||||||
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
||||||
LDA.b #$50 : STA $02D8 : JMP .done
|
LDA.b #$50 : STA.w ItemReceiptID : JMP .done
|
||||||
+ : CMP.b #$02 : BNE + ; Master Sword
|
+ : CMP.b #$02 : BNE + ; Master Sword
|
||||||
LDA.b #$02 : STA $02D8 : JMP .done
|
LDA.b #$02 : STA.w ItemReceiptID : JMP .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$03 : STA $02D8 : JMP .done
|
LDA.b #$03 : STA.w ItemReceiptID : JMP .done
|
||||||
++ : CMP.b #$5F : BNE ++ ; Progressive Shield
|
++ : CMP.b #$5F : BNE ++ ; Progressive Shield
|
||||||
LDA HighestShield : CMP.l ProgressiveShieldLimit : !BLT +
|
LDA.l HighestShield : CMP.l ProgressiveShieldLimit : !BLT +
|
||||||
LDA.l ProgressiveShieldReplacement : STA $02D8 : JMP .done
|
LDA.l ProgressiveShieldReplacement : STA.w ItemReceiptID : JMP .done
|
||||||
+ : CMP.b #$00 : BNE + ; No Shield
|
+ : CMP.b #$00 : BNE + ; No Shield
|
||||||
LDA.b #$04 : STA $02D8 : JMP .done
|
LDA.b #$04 : STA.w ItemReceiptID : JMP .done
|
||||||
+ : CMP.b #$01 : BNE + ; Fighter Shield
|
+ : CMP.b #$01 : BNE + ; Fighter Shield
|
||||||
LDA.b #$05 : STA $02D8 : JMP .done
|
LDA.b #$05 : STA.w ItemReceiptID : JMP .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$06 : STA $02D8 : JMP .done
|
LDA.b #$06 : STA.w ItemReceiptID : JMP .done
|
||||||
++ : CMP.b #$60 : BNE ++ ; Progressive Armor
|
++ : CMP.b #$60 : BNE ++ ; Progressive Armor
|
||||||
LDA HighestMail : CMP.l ProgressiveArmorLimit : !BLT +
|
LDA.l HighestMail : CMP.l ProgressiveArmorLimit : !BLT +
|
||||||
LDA.l ProgressiveArmorReplacement : STA $02D8 : JMP .done
|
LDA.l ProgressiveArmorReplacement : STA.w ItemReceiptID : JMP .done
|
||||||
+ : CMP.b #$00 : BNE + ; No Armor
|
+ : CMP.b #$00 : BNE + ; No Armor
|
||||||
LDA.b #$22 : STA $02D8 : JMP .done
|
LDA.b #$22 : STA.w ItemReceiptID : JMP .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$23 : STA $02D8 : JMP .done
|
LDA.b #$23 : STA.w ItemReceiptID : JMP .done
|
||||||
++ : CMP.b #$61 : BNE ++ ; Progressive Lifting Glove
|
++ : CMP.b #$61 : BNE ++ ; Progressive Lifting Glove
|
||||||
LDA GloveEquipment : BNE + ; No Lift
|
LDA.l GloveEquipment : BNE + ; No Lift
|
||||||
LDA.b #$1B : STA $02D8 : BRA .done
|
LDA.b #$1B : STA.w ItemReceiptID : BRA .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$1C : STA $02D8 : BRA .done
|
LDA.b #$1C : STA.w ItemReceiptID : BRA .done
|
||||||
++ : CMP.b #$64 : BNE ++ : -- ; Progressive Bow
|
++ : CMP.b #$64 : BNE ++ : -- ; Progressive Bow
|
||||||
LDA BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
LDA.l BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done
|
LDA.l ProgressiveBowReplacement : STA.w ItemReceiptID : JMP .done
|
||||||
+ : CMP.b #$00 : BNE + ; No Bow
|
+ : CMP.b #$00 : BNE + ; No Bow
|
||||||
LDA.b #$3A : STA $02D8 : BRA .done
|
LDA.b #$3A : STA.w ItemReceiptID : BRA .done
|
||||||
+ ; Any Bow
|
+ ; Any Bow
|
||||||
LDA.b #$3B : STA $02D8 : BRA .done
|
LDA.b #$3B : STA.w ItemReceiptID : BRA .done
|
||||||
++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2
|
++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2
|
||||||
LDA.l BowTracking : ORA #$20 : STA.l BowTracking
|
LDA.l BowTracking : ORA.b #$20 : STA.l BowTracking
|
||||||
BRA --
|
BRA --
|
||||||
; ++ : CMP.b #$FE : BNE ++ ; Server Request (Null Chest)
|
; ++ : CMP.b #$FE : BNE ++ ; Server Request (Null Chest)
|
||||||
; JSL ChestItemServiceRequest
|
; JSL ChestItemServiceRequest
|
||||||
; BRA .done
|
; BRA .done
|
||||||
++ : CMP.b #$62 : BNE ++ ; RNG Item (Single)
|
++ : CMP.b #$62 : BNE ++ ; RNG Item (Single)
|
||||||
JSL.l GetRNGItemSingle : STA $02D8
|
JSL.l GetRNGItemSingle : STA.w ItemReceiptID
|
||||||
XBA : JSR.w MarkRNGItemSingle
|
XBA : JSR.w MarkRNGItemSingle
|
||||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
|
||||||
BRA .done
|
BRA .done
|
||||||
++ : CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
++ : CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
||||||
JSL.l GetRNGItemMulti : STA $02D8
|
JSL.l GetRNGItemMulti : STA.w ItemReceiptID
|
||||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
|
||||||
BRA .done
|
BRA .done
|
||||||
++
|
++
|
||||||
.done
|
.done
|
||||||
@@ -892,37 +866,24 @@ Link_ReceiveItemAlternatesExpanded:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
.loadAlternate
|
.loadAlternate
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
;TYA : JSR IncrementItemCounters
|
TYA : JSR AttemptItemSubstitution : STA.b Scrap03
|
||||||
;LDA Link_ReceiveItemAlternatesExpanded, Y : STA $03
|
CPY.b Scrap03 : BNE + : LDA.b #$FF : STA.b Scrap03 : +
|
||||||
TYA : JSR AttemptItemSubstitution : STA $03
|
|
||||||
CPY $03 : BNE + : LDA.b #$FF : STA $03 : +
|
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;DrawHUDSilverArrows:
|
|
||||||
; LDA BowEquipment : AND.w #$00FF : BNE +
|
|
||||||
; LDA BowTracking : AND.w #$0040 : BEQ +
|
|
||||||
; LDA.w #$2810 : STA $11C8
|
|
||||||
; LDA.w #$2811 : STA $11CA
|
|
||||||
; LDA.w #$2820 : STA $1208
|
|
||||||
; LDA.w #$2821 : STA $120A
|
|
||||||
; +
|
|
||||||
; LDA.w #$11CE : STA $00 ; thing we wrote over
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;Return BowEquipment but also draw silver arrows if you have the upgrade even if you don't have the bow
|
;Return BowEquipment but also draw silver arrows if you have the upgrade even if you don't have the bow
|
||||||
CheckHUDSilverArrows:
|
CheckHUDSilverArrows:
|
||||||
LDA.l ArrowMode : BEQ .normal
|
LDA.l ArrowMode : BEQ .normal
|
||||||
.rupee_arrows
|
.rupee_arrows
|
||||||
JSL.l DrawHUDArrows
|
JSL.l DrawHUDArrows
|
||||||
LDA BowEquipment
|
LDA.l BowEquipment
|
||||||
RTL
|
RTL
|
||||||
.normal
|
.normal
|
||||||
LDA BowEquipment : BNE +
|
LDA.l BowEquipment : BNE +
|
||||||
LDA BowTracking : AND.b #$40 : BEQ ++
|
LDA.l BowTracking : AND.b #$40 : BEQ ++
|
||||||
JSL.l DrawHUDArrows
|
JSL.l DrawHUDArrows
|
||||||
++
|
++
|
||||||
LDA BowEquipment
|
LDA.l BowEquipment
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -930,73 +891,68 @@ DrawHUDArrows:
|
|||||||
LDA.l ArrowMode : BEQ .normal
|
LDA.l ArrowMode : BEQ .normal
|
||||||
.rupee_arrows
|
.rupee_arrows
|
||||||
|
|
||||||
LDA CurrentArrows : BEQ .none ; assuming silvers will increment this. if we go with something else, reorder these checks
|
LDA.l CurrentArrows : BEQ .none ; assuming silvers will increment this. if we go with something else, reorder these checks
|
||||||
LDA BowEquipment : BNE +
|
LDA.l BowEquipment : BNE +
|
||||||
LDA BowTracking : AND.b #$40 : BNE .silver
|
LDA.l BowTracking : AND.b #$40 : BNE .silver
|
||||||
BRA .wooden
|
BRA .wooden
|
||||||
+ CMP.b #03 : !BGE .silver
|
+ CMP.b #03 : !BGE .silver
|
||||||
|
|
||||||
.wooden
|
.wooden
|
||||||
LDA.b #$A7 : STA $7EC720 ; draw wooden arrow marker
|
LDA.b #$A7 : STA.l $7EC720 ; draw wooden arrow marker
|
||||||
LDA.b #$20 : STA $7EC721
|
LDA.b #$20 : STA.l $7EC721
|
||||||
LDA.b #$A9 : STA $7EC722
|
LDA.b #$A9 : STA.l $7EC722
|
||||||
LDA.b #$20 : STA $7EC723
|
LDA.b #$20 : STA.l $7EC723
|
||||||
RTL
|
RTL
|
||||||
.normal ; in normal arrow mode this function is only ever called for silvers
|
.normal ; in normal arrow mode this function is only ever called for silvers
|
||||||
.silver
|
.silver
|
||||||
LDA.b #$86 : STA $7EC720 ; draw silver arrow marker
|
LDA.b #$86 : STA.l $7EC720 ; draw silver arrow marker
|
||||||
LDA.b #$24 : STA $7EC721
|
LDA.b #$24 : STA.l $7EC721
|
||||||
LDA.b #$87 : STA $7EC722
|
LDA.b #$87 : STA.l $7EC722
|
||||||
LDA.b #$24 : STA $7EC723
|
LDA.b #$24 : STA.l $7EC723
|
||||||
RTL
|
RTL
|
||||||
.none
|
.none
|
||||||
LDA.b #$7F : STA $7EC720 ; draw no arrow marker
|
LDA.b #$7F : STA.l $7EC720 ; draw no arrow marker
|
||||||
LDA.b #$24 : STA $7EC721
|
LDA.b #$24 : STA.l $7EC721
|
||||||
LDA.b #$7F : STA $7EC722
|
LDA.b #$7F : STA.l $7EC722
|
||||||
LDA.b #$24 : STA $7EC723
|
LDA.b #$24 : STA.l $7EC723
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!SCRATCH_AREA = "$7F5020"
|
|
||||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
|
||||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
|
||||||
!SINGLE_INDEX_BITMASK_TEMP = "$7F5022"
|
|
||||||
!LOCK_IN = "$7F5090"
|
|
||||||
GetRNGItemSingle:
|
GetRNGItemSingle:
|
||||||
PHY
|
PHY
|
||||||
LDA !LOCK_IN : CMP.b #$FF : BEQ + : TAX : XBA : LDA.l RNGSingleItemTable, X : RTL : +
|
LDA.l RNGLockIn : CMP.b #$FF : BEQ + : TAX : XBA : LDA.l RNGSingleItemTable, X : RTL : +
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
.single_reroll
|
.single_reroll
|
||||||
JSL.l GetRandomInt : AND.b #$7F ; select random value
|
JSL.l GetRandomInt : AND.b #$7F ; select random value
|
||||||
INX : CPX #$7F : !BLT + : LDA.b #$00 : BRA +++ : + ; default to 0 if too many attempts
|
INX : CPX.b #$7F : !BLT + : LDA.b #$00 : BRA +++ : + ; default to 0 if too many attempts
|
||||||
CMP.l RNGSingleTableSize : !BGE .single_reroll
|
CMP.l RNGSingleTableSize : !BGE .single_reroll
|
||||||
+++
|
+++
|
||||||
|
|
||||||
STA !SINGLE_INDEX_TEMP ; put our index value here
|
STA.w ScratchBufferV ; put our index value here
|
||||||
LDX #$00
|
LDX.b #$00
|
||||||
TAY
|
TAY
|
||||||
.recheck
|
.recheck
|
||||||
TYA
|
TYA
|
||||||
JSR.w CheckSingleItem : BEQ .single_unused ; already used
|
JSR.w CheckSingleItem : BEQ .single_unused ; already used
|
||||||
LDA !SINGLE_INDEX_TEMP : INC ; increment index
|
LDA.w ScratchBufferV : INC ; increment index
|
||||||
CMP.l RNGSingleTableSize : !BLT +++ : LDA.b #$00 : +++ ; rollover index if needed
|
CMP.l RNGSingleTableSize : !BLT +++ : LDA.b #$00 : +++ ; rollover index if needed
|
||||||
STA !SINGLE_INDEX_TEMP ; store index
|
STA.w ScratchBufferV ; store index
|
||||||
INX : TAY : TXA : CMP.l RNGSingleTableSize : !BLT .recheck
|
INX : TAY : TXA : CMP.l RNGSingleTableSize : !BLT .recheck
|
||||||
LDA.b #$5A ; everything is gone, default to null item - MAKE THIS AN OPTION FOR THIS AND THE OTHER ONE
|
LDA.b #$5A ; everything is gone, default to null item - MAKE THIS AN OPTION FOR THIS AND THE OTHER ONE
|
||||||
BRA .single_done
|
BRA .single_done
|
||||||
.single_unused
|
.single_unused
|
||||||
LDA !SINGLE_INDEX_TEMP
|
LDA.w ScratchBufferV
|
||||||
.single_done
|
.single_done
|
||||||
TAX : LDA.l RNGSingleItemTable, X
|
TAX : LDA.l RNGSingleItemTable, X
|
||||||
XBA : LDA.l !SINGLE_INDEX_TEMP : STA !LOCK_IN : XBA
|
XBA : LDA.w ScratchBufferV : STA.l RNGLockIn : XBA
|
||||||
PLY
|
PLY
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckSingleItem:
|
CheckSingleItem:
|
||||||
LSR #3 : TAX
|
LSR #3 : TAX
|
||||||
LDA.l RNGItem, X : STA !SINGLE_INDEX_BITMASK_TEMP ; load value to temporary
|
LDA.l RNGItem, X : STA.w ScratchBufferV+2 ; load value to temporary
|
||||||
PHX
|
PHX
|
||||||
LDA !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
LDA.w ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X
|
||||||
LDA !SINGLE_INDEX_BITMASK_TEMP
|
LDA.w ScratchBufferV+2
|
||||||
---
|
---
|
||||||
CPX.b #$00 : BEQ +++
|
CPX.b #$00 : BEQ +++
|
||||||
LSR
|
LSR
|
||||||
@@ -1008,12 +964,10 @@ CheckSingleItem:
|
|||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MarkRNGItemSingle:
|
MarkRNGItemSingle:
|
||||||
;STA !SINGLE_INDEX_TEMP
|
LSR #3 : STA.w ScratchBufferV+1 : TAX
|
||||||
|
|
||||||
LSR #3 : STA !SINGLE_INDEX_OFFSET_TEMP : TAX
|
|
||||||
LDA.l RNGItem, X
|
LDA.l RNGItem, X
|
||||||
STA.l !SINGLE_INDEX_BITMASK_TEMP
|
STA.w ScratchBufferV+2
|
||||||
LDA.l !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
LDA.w ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X
|
||||||
LDA.b #01
|
LDA.b #01
|
||||||
---
|
---
|
||||||
CPX.b #$00 : BEQ +++
|
CPX.b #$00 : BEQ +++
|
||||||
@@ -1023,21 +977,21 @@ MarkRNGItemSingle:
|
|||||||
+++
|
+++
|
||||||
|
|
||||||
PHA
|
PHA
|
||||||
LDA.l !SINGLE_INDEX_OFFSET_TEMP : TAX
|
LDA.w ScratchBufferV+1 : TAX
|
||||||
PLA
|
PLA
|
||||||
ORA.l !SINGLE_INDEX_BITMASK_TEMP
|
ORA.w ScratchBufferV+2
|
||||||
STA.l RNGItem, X
|
STA.l RNGItem, X
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetRNGItemMulti:
|
GetRNGItemMulti:
|
||||||
LDA !LOCK_IN : CMP #$FF : BEQ + : TAX : XBA : LDA.l RNGMultiItemTable, X : RTL : +
|
LDA.l RNGLockIn : CMP.b #$FF : BEQ + : TAX : XBA : LDA.l RNGMultiItemTable, X : RTL : +
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
- ; reroll
|
- ; reroll
|
||||||
JSL.l GetRandomInt : AND.b #$7F ; select random value
|
JSL.l GetRandomInt : AND.b #$7F ; select random value
|
||||||
INX : CPX #$7F : !BLT + : LDA.b 00 : BRA .done : + ; default to 0 if too many attempts
|
INX : CPX.b #$7F : !BLT + : LDA.b 00 : BRA .done : + ; default to 0 if too many attempts
|
||||||
CMP.l RNGMultiTableSize : !BGE -
|
CMP.l RNGMultiTableSize : !BGE -
|
||||||
.done
|
.done
|
||||||
STA !LOCK_IN
|
STA.l RNGLockIn
|
||||||
TAX : XBA : LDA.l RNGMultiItemTable, X
|
TAX : XBA : LDA.l RNGMultiItemTable, X
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1047,11 +1001,11 @@ IncrementItemCounters:
|
|||||||
-
|
-
|
||||||
LDA.l ItemSubstitutionRules, X
|
LDA.l ItemSubstitutionRules, X
|
||||||
CMP.b #$FF : BEQ .exit
|
CMP.b #$FF : BEQ .exit
|
||||||
CMP 1,s : BNE .noMatch
|
CMP.b 1,s : BNE .noMatch
|
||||||
.match
|
.match
|
||||||
PHX
|
PHX
|
||||||
TXA : LSR #2 : TAX
|
TXA : LSR #2 : TAX
|
||||||
LDA ItemLimitCounts, X : INC : STA ItemLimitCounts, X
|
LDA.l ItemLimitCounts, X : INC : STA.l ItemLimitCounts, X
|
||||||
PLX
|
PLX
|
||||||
BEQ .exit
|
BEQ .exit
|
||||||
.noMatch
|
.noMatch
|
||||||
@@ -1062,53 +1016,52 @@ IncrementItemCounters:
|
|||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AttemptItemSubstitution:
|
AttemptItemSubstitution:
|
||||||
PHX : PHA
|
PHX : PHA
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
-
|
-
|
||||||
LDA.l ItemSubstitutionRules, X
|
LDA.l ItemSubstitutionRules, X
|
||||||
CMP.b #$FF : BEQ .exit
|
CMP.b #$FF : BEQ .exit
|
||||||
CMP 1,s : BNE .noMatch
|
CMP.b 1,s : BNE .noMatch
|
||||||
.match
|
.match
|
||||||
PHX
|
PHX
|
||||||
TXA : LSR #2 : TAX
|
TXA : LSR #2 : TAX
|
||||||
LDA ItemLimitCounts, X
|
LDA.l ItemLimitCounts, X
|
||||||
PLX
|
PLX
|
||||||
CMP.l ItemSubstitutionRules+1, X : !BLT +
|
CMP.l ItemSubstitutionRules+1, X : !BLT +
|
||||||
LDA.l ItemSubstitutionRules+2, X : STA 1,s
|
LDA.l ItemSubstitutionRules+2, X : STA.b 1,s
|
||||||
+
|
+: BEQ .exit
|
||||||
BEQ .exit
|
.noMatch
|
||||||
.noMatch
|
INX #4
|
||||||
INX #4
|
BRA -
|
||||||
BRA -
|
.exit
|
||||||
.exit
|
PLA : PLX
|
||||||
PLA : PLX
|
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountBottles:
|
CountBottles:
|
||||||
PHX
|
PHX
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
LDA BottleContentsOne : BEQ ++ : INX
|
LDA.l BottleContentsOne : BEQ ++ : INX
|
||||||
++ : LDA BottleContentsTwo : BEQ ++ : INX
|
++ : LDA.l BottleContentsTwo : BEQ ++ : INX
|
||||||
++ : LDA BottleContentsThree : BEQ ++ : INX
|
++ : LDA.l BottleContentsThree : BEQ ++ : INX
|
||||||
++ : LDA BottleContentsFour : BEQ ++ : INX
|
++ : LDA.l BottleContentsFour : BEQ ++ : INX
|
||||||
++
|
++
|
||||||
TXA
|
TXA
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ActivateGoal:
|
ActivateGoal:
|
||||||
STZ $11
|
STZ.b $11
|
||||||
STZ $B0
|
STZ.b $B0
|
||||||
JML.l StatsFinalPrep
|
JML.l StatsFinalPrep
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ChestPrep:
|
ChestPrep:
|
||||||
LDA.b #$01 : STA $02E9
|
LDA.b #$01 : STA.w $02E9
|
||||||
JSL.l IncrementChestCounter
|
JSL.l IncrementChestCounter
|
||||||
LDA.l ServerRequestMode : BEQ +
|
LDA.l ServerRequestMode : BEQ +
|
||||||
JSL.l ChestItemServiceRequest
|
JSL.l ChestItemServiceRequest
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDY $0C ; get item value
|
LDY.b $0C ; get item value
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1116,44 +1069,44 @@ RTL
|
|||||||
; counts on
|
; counts on
|
||||||
MaybeFlagCompassTotalPickup:
|
MaybeFlagCompassTotalPickup:
|
||||||
LDA.l CompassMode : AND.b #$0F : BEQ .done
|
LDA.l CompassMode : AND.b #$0F : BEQ .done
|
||||||
LDA $040C : CMP #$FF : BEQ .done
|
LDA.w $040C : CMP.b #$FF : BEQ .done
|
||||||
LSR : STA $04 : LDA #$0F : !SUB $04 ; Compute flag "index"
|
LSR : STA.b Scrap04 : LDA.b #$0F : !SUB Scrap04 ; Compute flag "index"
|
||||||
CPY #$25 : BEQ .setFlag ; Set flag if it's a compass for this dungeon
|
CPY.b #$25 : BEQ .setFlag ; Set flag if it's a compass for this dungeon
|
||||||
STA $04
|
STA.b Scrap04
|
||||||
TYA : AND #$0F : CMP $04 : BNE .done ; Check if compass is for this dungeon
|
TYA : AND.b #$0F : CMP.b Scrap04 : BNE .done ; Check if compass is for this dungeon
|
||||||
.setFlag
|
.setFlag
|
||||||
CMP #$08 : !BGE ++
|
CMP.b #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA CompassCountDisplay : STA CompassCountDisplay
|
ORA.l CompassCountDisplay : STA.l CompassCountDisplay
|
||||||
BRA .done
|
BRA .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
ORA.l CompassCountDisplay+1 : STA.l CompassCountDisplay+1
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Set the compass count display flag if we're entering a dungeon and alerady have
|
; Set the compass count display flag if we're entering a dungeon and alerady have
|
||||||
; that compass
|
; that compass
|
||||||
MaybeFlagCompassTotalEntrance:
|
MaybeFlagCompassTotalEntrance:
|
||||||
LDX $040C : CPX #$FF : BEQ .done ; Skip if we're not entering dungeon
|
LDX.w $040C : CPX.b #$FF : BEQ .done ; Skip if we're not entering dungeon
|
||||||
LDA.l CompassMode : AND.w #$000F : BEQ .done ; Skip if we're not showing compass counts
|
LDA.l CompassMode : AND.w #$000F : BEQ .done ; Skip if we're not showing compass counts
|
||||||
CMP.w #$0002 : BEQ .countShown
|
CMP.w #$0002 : BEQ .countShown
|
||||||
LDA CompassField : AND.l DungeonItemMasks, X : BEQ .done ; skip if we don't have compass
|
LDA.l CompassField : AND.l DungeonItemMasks, X : BEQ .done ; skip if we don't have compass
|
||||||
.countShown
|
.countShown
|
||||||
SEP #$20
|
SEP #$20
|
||||||
TXA : LSR : STA.b $04 : LDA.b #$0F : !SUB $04 ; Compute flag "index"
|
TXA : LSR : STA.b Scrap04 : LDA.b #$0F : !SUB Scrap04 ; Compute flag index
|
||||||
CMP #$08 : !BGE ++
|
CMP.b #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA CompassCountDisplay : STA CompassCountDisplay
|
ORA.l CompassCountDisplay : STA.l CompassCountDisplay
|
||||||
REP #$20
|
REP #$20
|
||||||
BRA .done
|
BRA .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
ORA.l CompassCountDisplay+1 : STA.l CompassCountDisplay+1
|
||||||
REP #$20
|
REP #$20
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
295
password.asm
295
password.asm
@@ -1,8 +1,8 @@
|
|||||||
!PASSWORD_CODE_POSITION = "$C8"
|
PASSWORD_CODE_POSITION = $C8
|
||||||
!PASSWORD_SELECTION_POSITION = "$C9"
|
PASSWORD_SELECTION_POSITION = $C9
|
||||||
|
|
||||||
Module_Password:
|
Module_Password:
|
||||||
LDA $11
|
LDA.b $11
|
||||||
|
|
||||||
JSL.l UseImplicitRegIndexedLongJumpTable
|
JSL.l UseImplicitRegIndexedLongJumpTable
|
||||||
|
|
||||||
@@ -13,35 +13,34 @@ Module_Password:
|
|||||||
dl Password_Return ; 4
|
dl Password_Return ; 4
|
||||||
|
|
||||||
Password_BeginInit:
|
Password_BeginInit:
|
||||||
LDA.b #$80 : STA $0710 ;skip animated sprite updates in NMI
|
LDA.b #$80 : STA.w $0710 ;skip animated sprite updates in NMI
|
||||||
|
|
||||||
JSL EnableForceBlank
|
JSL EnableForceBlank
|
||||||
JSL Vram_EraseTilemaps_triforce
|
JSL Vram_EraseTilemaps_triforce
|
||||||
;JSL Palette_SelectScreen
|
|
||||||
|
|
||||||
JSL LoadCustomHudPalette ; replace the 2bpp palettes, and trigger upload
|
JSL LoadCustomHudPalette ; replace the 2bpp palettes, and trigger upload
|
||||||
LDA.b #$07 : STA $14 ; have NMI load up the initial tilemap from Password_Tilemap
|
LDA.b #$07 : STA.b $14 ; have NMI load up the initial tilemap from Password_Tilemap
|
||||||
|
|
||||||
INC $11
|
INC.b $11
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
Password_EndInit:
|
Password_EndInit:
|
||||||
JSR LoadPasswordStripeTemplate
|
JSR LoadPasswordStripeTemplate
|
||||||
|
|
||||||
;reset the variables used by this screen
|
;reset the variables used by this screen
|
||||||
STZ !PASSWORD_CODE_POSITION
|
STZ.b PASSWORD_CODE_POSITION
|
||||||
STZ !PASSWORD_SELECTION_POSITION
|
STZ.b PASSWORD_SELECTION_POSITION
|
||||||
|
|
||||||
JSL ValidatePassword : BNE +
|
JSL ValidatePassword : BNE +
|
||||||
; zero out password if not valid
|
; zero out password if not valid
|
||||||
LDX.b #$0F
|
LDX.b #$0F
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
-
|
-
|
||||||
STA.l PasswordSRAM, X
|
STA.l PasswordSRAM, X
|
||||||
DEX : BPL -
|
DEX : BPL -
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.b #$0F : STA $13
|
LDA.b #$0F : STA.b $13
|
||||||
INC $11
|
INC $11
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -52,70 +51,70 @@ Password_Main:
|
|||||||
JSR PasswordEraseOldCursors
|
JSR PasswordEraseOldCursors
|
||||||
|
|
||||||
; handle joypad input
|
; handle joypad input
|
||||||
LDA $F6 : AND.b #$10 : BEQ + ; R Button
|
LDA.b $F6 : AND.b #$10 : BEQ + ; R Button
|
||||||
JSR PasswordMoveCursorRight
|
JSR PasswordMoveCursorRight
|
||||||
+
|
+
|
||||||
LDA $F6 : AND.b #$20 : BEQ + ; L Button
|
LDA.b $F6 : AND.b #$20 : BEQ + ; L Button
|
||||||
JSR PasswordMoveCursorLeft
|
JSR PasswordMoveCursorLeft
|
||||||
+
|
+
|
||||||
LDA $F4 : AND.b #$01 : BEQ + ; right
|
LDA.b $F4 : AND.b #$01 : BEQ + ; right
|
||||||
LDA !PASSWORD_SELECTION_POSITION : INC A : CMP.b #$24 : !BLT ++
|
LDA.b PASSWORD_SELECTION_POSITION : INC A : CMP.b #$24 : !BLT ++
|
||||||
!SUB.b #$24
|
!SUB.b #$24
|
||||||
++
|
++
|
||||||
STA !PASSWORD_SELECTION_POSITION
|
STA.b PASSWORD_SELECTION_POSITION
|
||||||
LDA.b #$20 : STA $012F
|
LDA.b #$20 : STA.w $012F
|
||||||
+
|
+
|
||||||
LDA $F4 : AND.b #$02 : BEQ + ; left
|
LDA.b $F4 : AND.b #$02 : BEQ + ; left
|
||||||
LDA !PASSWORD_SELECTION_POSITION : DEC A : BPL ++
|
LDA.b PASSWORD_SELECTION_POSITION : DEC A : BPL ++
|
||||||
!ADD.b #$24
|
!ADD.b #$24
|
||||||
++
|
++
|
||||||
STA !PASSWORD_SELECTION_POSITION
|
STA.b PASSWORD_SELECTION_POSITION
|
||||||
LDA.b #$20 : STA $012F
|
LDA.b #$20 : STA.w $012F
|
||||||
+
|
+
|
||||||
LDA $F4 : AND.b #$04 : BEQ + ; down
|
LDA.b $F4 : AND.b #$04 : BEQ + ; down
|
||||||
LDA !PASSWORD_SELECTION_POSITION : !ADD.b #$09 : CMP.b #$24 : !BLT ++
|
LDA.b PASSWORD_SELECTION_POSITION : !ADD.b #$09 : CMP.b #$24 : !BLT ++
|
||||||
!SUB.b #$24
|
!SUB.b #$24
|
||||||
++
|
++
|
||||||
STA !PASSWORD_SELECTION_POSITION
|
STA.b PASSWORD_SELECTION_POSITION
|
||||||
LDA.b #$20 : STA $012F
|
LDA.b #$20 : STA.w $012F
|
||||||
+
|
+
|
||||||
LDA $F4 : AND.b #$08 : BEQ + ; up
|
LDA.b $F4 : AND.b #$08 : BEQ + ; up
|
||||||
LDA !PASSWORD_SELECTION_POSITION : !SUB.b #$09 : BPL ++
|
LDA.b PASSWORD_SELECTION_POSITION : !SUB.b #$09 : BPL ++
|
||||||
!ADD.b #$24
|
!ADD.b #$24
|
||||||
++
|
++
|
||||||
STA !PASSWORD_SELECTION_POSITION
|
STA.b PASSWORD_SELECTION_POSITION
|
||||||
LDA.b #$20 : STA $012F
|
LDA.b #$20 : STA.w $012F
|
||||||
+
|
+
|
||||||
LDA $F4 : ORA $F6 : AND.b #$C0 : BEQ + ; face button
|
LDA.b $F4 : ORA.b $F6 : AND.b #$C0 : BEQ + ; face button
|
||||||
LDX !PASSWORD_SELECTION_POSITION
|
LDX.b PASSWORD_SELECTION_POSITION
|
||||||
LDA.l .selectionValues, X : BPL ++
|
LDA.l .selectionValues, X : BPL ++
|
||||||
CMP #$F0 : BNE +++
|
CMP.b #$F0 : BNE +++
|
||||||
INC $11
|
INC $11
|
||||||
BRA .endOfButtonChecks
|
BRA .endOfButtonChecks
|
||||||
+++ : CMP #$F1 : BNE +++
|
+++ : CMP.b #$F1 : BNE +++
|
||||||
JSR PasswordMoveCursorLeft
|
JSR PasswordMoveCursorLeft
|
||||||
BRA +
|
BRA +
|
||||||
+++ : CMP #$F2 : BNE +++
|
+++ : CMP.b #$F2 : BNE +++
|
||||||
JSR PasswordMoveCursorRight
|
JSR PasswordMoveCursorRight
|
||||||
BRA +
|
BRA +
|
||||||
+++ : CMP #$F3 : BNE +++
|
+++ : CMP.b #$F3 : BNE +++
|
||||||
INC $11 : INC $11 ; skip to return submodule
|
INC $11 : INC $11 ; skip to return submodule
|
||||||
LDA.b #$2C : STA $012E ;file screen selection sound
|
LDA.b #$2C : STA.w $012E ;file screen selection sound
|
||||||
BRA .endOfButtonChecks
|
BRA .endOfButtonChecks
|
||||||
+++
|
+++
|
||||||
BRA +
|
BRA +
|
||||||
++
|
++
|
||||||
LDX !PASSWORD_CODE_POSITION
|
LDX.b PASSWORD_CODE_POSITION
|
||||||
STA PasswordSRAM,X
|
STA.l PasswordSRAM,X
|
||||||
TXA : INC A : AND.b #$0F : STA !PASSWORD_CODE_POSITION
|
TXA : INC A : AND.b #$0F : STA.b PASSWORD_CODE_POSITION
|
||||||
BNE ++
|
BNE ++
|
||||||
STZ $012E
|
STZ.w $012E
|
||||||
INC $11
|
INC $11
|
||||||
BRA .endOfButtonChecks
|
BRA .endOfButtonChecks
|
||||||
++
|
++
|
||||||
LDA.b #$2B : STA $012E
|
LDA.b #$2B : STA.w $012E
|
||||||
+
|
+
|
||||||
LDA $F4 : AND.b #$10 : BEQ + ; start
|
LDA.b $F4 : AND.b #$10 : BEQ + ; start
|
||||||
INC $11
|
INC $11
|
||||||
+
|
+
|
||||||
.endOfButtonChecks
|
.endOfButtonChecks
|
||||||
@@ -123,7 +122,7 @@ Password_Main:
|
|||||||
JSR UpdatePasswordTiles
|
JSR UpdatePasswordTiles
|
||||||
|
|
||||||
JSR PasswordSetNewCursors
|
JSR PasswordSetNewCursors
|
||||||
LDA.b #$01 : STA $14
|
LDA.b #$01 : STA.b $14
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
.selectionValues
|
.selectionValues
|
||||||
@@ -134,17 +133,17 @@ db $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $F3
|
|||||||
|
|
||||||
Password_Check:
|
Password_Check:
|
||||||
JSL.l ValidatePassword : BNE .correct
|
JSL.l ValidatePassword : BNE .correct
|
||||||
LDA.b #$3C : STA $012E ; error
|
LDA.b #$3C : STA.w $012E ; error
|
||||||
DEC $11
|
DEC $11
|
||||||
RTL
|
RTL
|
||||||
.correct
|
.correct
|
||||||
LDA.b #$1B : STA $012F ; solved puzzle sound
|
LDA.b #$1B : STA.w $012F ; solved puzzle sound
|
||||||
INC $11
|
INC $11
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
Password_Return:
|
Password_Return:
|
||||||
LDA.b #$01 : STA $10 ; select screen
|
LDA.b #$01 : STA.w $10 ; select screen
|
||||||
LDA.b #$01 : STA $11 ; Skip the first submodule
|
LDA.b #$01 : STA.w $11 ; Skip the first submodule
|
||||||
STZ $B0
|
STZ $B0
|
||||||
STZ $0B9D ; Reset file screen cursor pre-selection
|
STZ $0B9D ; Reset file screen cursor pre-selection
|
||||||
STZ $C8
|
STZ $C8
|
||||||
@@ -162,7 +161,7 @@ ValidatePassword:
|
|||||||
PHX : PHY
|
PHX : PHY
|
||||||
|
|
||||||
;check for incomplete password
|
;check for incomplete password
|
||||||
LDX #$0F
|
LDX.b #$0F
|
||||||
-
|
-
|
||||||
LDA.l PasswordSRAM, X : BNE +
|
LDA.l PasswordSRAM, X : BNE +
|
||||||
JMP .incorrect
|
JMP .incorrect
|
||||||
@@ -174,45 +173,45 @@ ValidatePassword:
|
|||||||
; Clear out any existing encryption key
|
; Clear out any existing encryption key
|
||||||
LDX.b #$0E
|
LDX.b #$0E
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
- : STA.l !keyBase, X : DEX #2 : BPL -
|
- : STA.l KeyBase, X : DEX #2 : BPL -
|
||||||
|
|
||||||
JSR PasswordToKey
|
JSR PasswordToKey
|
||||||
|
|
||||||
|
|
||||||
LDA.l StaticDecryptionKey+$0A : STA.l !keyBase+$0A
|
LDA.l StaticDecryptionKey+$0A : STA.l KeyBase+$0A
|
||||||
LDA.l StaticDecryptionKey+$0C : STA.l !keyBase+$0C
|
LDA.l StaticDecryptionKey+$0C : STA.l KeyBase+$0C
|
||||||
LDA.l StaticDecryptionKey+$0E : STA.l !keyBase+$0E
|
LDA.l StaticDecryptionKey+$0E : STA.l KeyBase+$0E
|
||||||
|
|
||||||
LDA.l KnownEncryptedValue : STA.l !CryptoBuffer
|
LDA.l KnownEncryptedValue : STA.l CryptoBuffer
|
||||||
LDA.l KnownEncryptedValue+2 : STA.l !CryptoBuffer+2
|
LDA.l KnownEncryptedValue+2 : STA.l CryptoBuffer+2
|
||||||
LDA.l KnownEncryptedValue+4 : STA.l !CryptoBuffer+4
|
LDA.l KnownEncryptedValue+4 : STA.l CryptoBuffer+4
|
||||||
LDA.l KnownEncryptedValue+6 : STA.l !CryptoBuffer+6
|
LDA.l KnownEncryptedValue+6 : STA.l CryptoBuffer+6
|
||||||
|
|
||||||
LDA.w #$0002 : STA $04 ;set block size
|
LDA.w #$0002 : STA.b $04 ;set block size
|
||||||
|
|
||||||
JSL.l XXTEA_Decode
|
JSL.l XXTEA_Decode
|
||||||
|
|
||||||
SEP #$20 ; 8 bit accumulator
|
SEP #$20 ; 8 bit accumulator
|
||||||
|
|
||||||
LDA !CryptoBuffer+0 : CMP #$31 : BNE .incorrect
|
LDA.l CryptoBuffer+0 : CMP.b #$31 : BNE .incorrect
|
||||||
LDA !CryptoBuffer+1 : CMP #$41 : BNE .incorrect
|
LDA.l CryptoBuffer+1 : CMP.b #$41 : BNE .incorrect
|
||||||
LDA !CryptoBuffer+2 : CMP #$59 : BNE .incorrect
|
LDA.l CryptoBuffer+2 : CMP.b #$59 : BNE .incorrect
|
||||||
LDA !CryptoBuffer+3 : CMP #$26 : BNE .incorrect
|
LDA.l CryptoBuffer+3 : CMP.b #$26 : BNE .incorrect
|
||||||
LDA !CryptoBuffer+4 : CMP #$53 : BNE .incorrect
|
LDA.l CryptoBuffer+4 : CMP.b #$53 : BNE .incorrect
|
||||||
LDA !CryptoBuffer+5 : CMP #$58 : BNE .incorrect
|
LDA.l CryptoBuffer+5 : CMP.b #$58 : BNE .incorrect
|
||||||
LDA !CryptoBuffer+6 : CMP #$97 : BNE .incorrect
|
LDA.l CryptoBuffer+6 : CMP.b #$97 : BNE .incorrect
|
||||||
LDA !CryptoBuffer+7 : CMP #$93 : BNE .incorrect
|
LDA.l CryptoBuffer+7 : CMP.b #$93 : BNE .incorrect
|
||||||
|
|
||||||
;trial decrypt the known plaintext, and verify if result is correct
|
;trial decrypt the known plaintext, and verify if result is correct
|
||||||
|
|
||||||
.correct
|
.correct
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
|
|
||||||
LDA #$01 : STA.l !ValidKeyLoaded
|
LDA.b #$01 : STA.l ValidKeyLoaded
|
||||||
RTL
|
RTL
|
||||||
.incorrect
|
.incorrect
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
LDA #$00
|
LDA.b #$00
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -223,75 +222,69 @@ PasswordToKey:
|
|||||||
; $00 input offset
|
; $00 input offset
|
||||||
; $02 output offset
|
; $02 output offset
|
||||||
; $04 shift amount
|
; $04 shift amount
|
||||||
LDA.w #$0000 : STA $00 : STA $02
|
LDA.w #$0000 : STA.b $00 : STA.b $02
|
||||||
LDA.w #$000B : STA $04
|
LDA.w #$000B : STA.b $04
|
||||||
-
|
-
|
||||||
LDX $00
|
LDX.b $00
|
||||||
LDA PasswordSRAM, X : DEC : AND #$001F
|
LDA.l PasswordSRAM, X : DEC : AND.w #$001F
|
||||||
LDY $04
|
LDY.b $04
|
||||||
-- : BEQ + : ASL : DEY : BRA -- : + ; Shift left by Y
|
-- : BEQ + : ASL : DEY : BRA -- : + ; Shift left by Y
|
||||||
XBA
|
XBA
|
||||||
LDX $02
|
LDX.b $02
|
||||||
ORA !keyBase, X
|
ORA.l KeyBase, X
|
||||||
STA !keyBase, X
|
STA.l KeyBase, X
|
||||||
|
|
||||||
LDA $04 : !SUB.w #$0005 : BPL +
|
LDA.b $04 : !SUB.w #$0005 : BPL +
|
||||||
!ADD.w #$0008
|
!ADD.w #$0008
|
||||||
INC $02
|
INC $02
|
||||||
+ : STA $04
|
+ : STA.b $04
|
||||||
|
|
||||||
LDA $00 : INC : STA $00 : CMP.w #$0010 : !BLT -
|
LDA.b $00 : INC : STA.b $00 : CMP.w #$0010 : !BLT -
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
LoadPasswordStripeTemplate:
|
LoadPasswordStripeTemplate:
|
||||||
LDA $4300 : PHA : LDA $4301 : PHA : LDA $4302 : PHA ; preserve DMA parameters
|
LDA.w DMAP0 : PHA : LDA.w BBAD0 : PHA : LDA.w A1T0L : PHA ; preserve DMA parameters
|
||||||
LDA $4303 : PHA : LDA $4304 : PHA : LDA $4305 : PHA ; preserve DMA parameters
|
LDA.w A1T0H : PHA : LDA.w A1B0 : PHA : LDA.w DAS0L : PHA ; preserve DMA parameters
|
||||||
LDA $4306 : PHA ; preserve DMA parameters
|
LDA.w DAS0H : PHA ; preserve DMA parameters
|
||||||
|
|
||||||
LDA.b #$00 : STA $4300 ; set DMA transfer direction A -> B, bus A auto increment, single-byte mode
|
LDA.b #$00 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, single-byte mode
|
||||||
LDA.b #$80 : STA $4301 ; set bus B destination to WRAM register
|
LDA.b #$80 : STA.w BBAD0 ; set bus B destination to WRAM register
|
||||||
|
|
||||||
LDA.b #$02 : STA $2181 ; set WRAM register source address
|
LDA.b #$02 : STA.w WMADDL ; set WRAM register source address
|
||||||
LDA.b #$10 : STA $2182
|
LDA.b #$10 : STA.w WMADDH
|
||||||
LDA.b #$7E : STA $2183
|
LDA.b #$7E : STA.w WMADDB
|
||||||
|
|
||||||
LDA.b #Password_StripeImageTemplate : STA $4302 ; set bus A source address
|
LDA.b #Password_StripeImageTemplate : STA.w A1T0L ; set bus A source address
|
||||||
LDA.b #Password_StripeImageTemplate>>8 : STA $4303 ; set bus A source address
|
LDA.b #Password_StripeImageTemplate>>8 : STA.w A1T0H ; set bus A source address
|
||||||
LDA.b #Password_StripeImageTemplate>>16 : STA $4304 ; set bus A source bank
|
LDA.b #Password_StripeImageTemplate>>16 : STA.w A1B0 ; set bus A source bank
|
||||||
|
|
||||||
LDA.b #Password_StripeImageTemplate_end-Password_StripeImageTemplate
|
LDA.b #Password_StripeImageTemplate_end-Password_StripeImageTemplate
|
||||||
STA $4305 ;
|
STA.w DAS0L ;
|
||||||
LDA.b #Password_StripeImageTemplate_end-Password_StripeImageTemplate>>8
|
LDA.b #Password_StripeImageTemplate_end-Password_StripeImageTemplate>>8
|
||||||
STA $4306 ; set transfer size
|
STA.w DAS0H ; set transfer size
|
||||||
|
|
||||||
LDA #$01 : STA $420B ; begin DMA transfer
|
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
||||||
|
|
||||||
PLA : STA $4306 : PLA : STA $4305 : PLA : STA $4304 ; restore DMA parameters
|
PLA : STA.w DAS0H : PLA : STA.w DAS0L : PLA : STA.w A1B0 ; restore DMA parameters
|
||||||
PLA : STA $4303 : PLA : STA $4302 : PLA : STA $4301 ; restore DMA parameters
|
PLA : STA.w A1T0H : PLA : STA.w A1T0L : PLA : STA.w BBAD0 ; restore DMA parameters
|
||||||
PLA : STA $4300 ; restore DMA parameters
|
PLA : STA.w DMAP0 ; restore DMA parameters
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
!PASSWORD_INPUT_START_X = $03
|
|
||||||
!PASSWORD_INPUT_START_Y = $0D
|
|
||||||
|
|
||||||
!PASSWORD_DISPLAY_START_X = $04
|
|
||||||
!PASSWORD_DISPLAY_START_Y = $04
|
|
||||||
|
|
||||||
PasswordEraseOldCursors:
|
PasswordEraseOldCursors:
|
||||||
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
|
|
||||||
;Code Cursor
|
;Code Cursor
|
||||||
LDA !PASSWORD_CODE_POSITION : AND.w #$00FF : ASL : TAX
|
LDA.b PASSWORD_CODE_POSITION : AND.w #$00FF : ASL : TAX
|
||||||
LDA.l .code_offsets, X
|
LDA.l .code_offsets, X
|
||||||
!ADD.w #$20*!PASSWORD_DISPLAY_START_Y+!PASSWORD_DISPLAY_START_X+$6000
|
!ADD.w #$20*Scrap04+Scrap04+$6000
|
||||||
XBA ; because big endian is needed
|
XBA ; because big endian is needed
|
||||||
STA.l $1002+Password_StripeImageTemplate_CodeCursorErase-Password_StripeImageTemplate
|
STA.l $1002+Password_StripeImageTemplate_CodeCursorErase-Password_StripeImageTemplate
|
||||||
|
|
||||||
;selection cursor
|
;selection cursor
|
||||||
LDA !PASSWORD_SELECTION_POSITION : AND.w #$00FF : ASL : TAX
|
LDA.b PASSWORD_SELECTION_POSITION : AND.w #$00FF : ASL : TAX
|
||||||
LDA.l .selection_offsets, X
|
LDA.l .selection_offsets, X
|
||||||
!ADD.w #$20*!PASSWORD_INPUT_START_Y+!PASSWORD_INPUT_START_X+$6000
|
!ADD.w #$20*Scrap0D+Scrap03+$6000
|
||||||
XBA ; because big endian is needed
|
XBA ; because big endian is needed
|
||||||
STA.l $1002+Password_StripeImageTemplate_SelectionCursorErase-Password_StripeImageTemplate
|
STA.l $1002+Password_StripeImageTemplate_SelectionCursorErase-Password_StripeImageTemplate
|
||||||
XBA : !ADD.w #$0020 : XBA
|
XBA : !ADD.w #$0020 : XBA
|
||||||
@@ -315,16 +308,16 @@ RTS
|
|||||||
PasswordSetNewCursors:
|
PasswordSetNewCursors:
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
;Code Cursor
|
;Code Cursor
|
||||||
LDA !PASSWORD_CODE_POSITION : AND.w #$00FF : ASL : TAX
|
LDA.b PASSWORD_CODE_POSITION : AND.w #$00FF : ASL : TAX
|
||||||
LDA.l PasswordEraseOldCursors_code_offsets, X
|
LDA.l PasswordEraseOldCursors_code_offsets, X
|
||||||
!ADD.w #$20*!PASSWORD_DISPLAY_START_Y+!PASSWORD_DISPLAY_START_X+$6000
|
!ADD.w #$20*Scrap04+Scrap04+$6000
|
||||||
XBA ; because big endian is needed
|
XBA ; because big endian is needed
|
||||||
STA.l $1002+Password_StripeImageTemplate_CodeCursorDraw-Password_StripeImageTemplate
|
STA.l $1002+Password_StripeImageTemplate_CodeCursorDraw-Password_StripeImageTemplate
|
||||||
|
|
||||||
;Selection cursor
|
;Selection cursor
|
||||||
LDA !PASSWORD_SELECTION_POSITION : AND.w #$00FF : ASL : TAX
|
LDA.b PASSWORD_SELECTION_POSITION : AND.w #$00FF : ASL : TAX
|
||||||
LDA.l PasswordEraseOldCursors_selection_offsets, X
|
LDA.l PasswordEraseOldCursors_selection_offsets, X
|
||||||
!ADD.w #$20*!PASSWORD_INPUT_START_Y+!PASSWORD_INPUT_START_X+$6000
|
!ADD.w #$20*Scrap0D+Scrap03+$6000
|
||||||
XBA ; because big endian is needed
|
XBA ; because big endian is needed
|
||||||
STA.l $1002+Password_StripeImageTemplate_SelectionCursorDraw-Password_StripeImageTemplate
|
STA.l $1002+Password_StripeImageTemplate_SelectionCursorDraw-Password_StripeImageTemplate
|
||||||
XBA : !ADD.w #$0020 : XBA
|
XBA : !ADD.w #$0020 : XBA
|
||||||
@@ -342,16 +335,16 @@ UpdatePasswordTiles:
|
|||||||
LDX.w #$000F
|
LDX.w #$000F
|
||||||
-
|
-
|
||||||
LDA.l PasswordSRAM, X : AND.w #$00FF : TXY
|
LDA.l PasswordSRAM, X : AND.w #$00FF : TXY
|
||||||
ASL #3 : STA $00
|
ASL #3 : STA.b $00
|
||||||
TYA : ASL #4 : STA $03
|
TYA : ASL #4 : STA.b $03
|
||||||
LDX $00 : LDA.l HashAlphabetTilesWithBlank, X
|
LDX.b $00 : LDA.l HashAlphabetTilesWithBlank, X
|
||||||
LDX $03 : STA $1006, X
|
LDX.b $03 : STA.w $1006, X
|
||||||
LDX $00 : LDA.l HashAlphabetTilesWithBlank+$02, X
|
LDX.b $00 : LDA.l HashAlphabetTilesWithBlank+$02, X
|
||||||
LDX $03 : STA $1008, X
|
LDX.b $03 : STA.w $1008, X
|
||||||
LDX $00 : LDA.l HashAlphabetTilesWithBlank+$04, X
|
LDX.b $00 : LDA.l HashAlphabetTilesWithBlank+$04, X
|
||||||
LDX $03 : STA $100E, X
|
LDX.b $03 : STA.w $100E, X
|
||||||
LDX $00 : LDA.l HashAlphabetTilesWithBlank+$06, X
|
LDX.b $00 : LDA.l HashAlphabetTilesWithBlank+$06, X
|
||||||
LDX $03 : STA $1010, X
|
LDX.b $03 : STA.w $1010, X
|
||||||
|
|
||||||
TYX : DEX : BMI + : BRA -
|
TYX : DEX : BMI + : BRA -
|
||||||
+
|
+
|
||||||
@@ -360,13 +353,13 @@ RTS
|
|||||||
|
|
||||||
PasswordMoveCursorRight:
|
PasswordMoveCursorRight:
|
||||||
; return new code position
|
; return new code position
|
||||||
LDA.b #$2B : STA $012E
|
LDA.b #$2B : STA.w $012E
|
||||||
LDA !PASSWORD_CODE_POSITION : INC A : AND.b #$0F : STA !PASSWORD_CODE_POSITION
|
LDA.b PASSWORD_CODE_POSITION : INC A : AND.b #$0F : STA.b PASSWORD_CODE_POSITION
|
||||||
RTS
|
RTS
|
||||||
PasswordMoveCursorLeft:
|
PasswordMoveCursorLeft:
|
||||||
; return new code position
|
; return new code position
|
||||||
LDA.b #$2B : STA $012E
|
LDA.b #$2B : STA.w $012E
|
||||||
LDA !PASSWORD_CODE_POSITION : DEC A : AND.b #$0F : STA !PASSWORD_CODE_POSITION
|
LDA.b PASSWORD_CODE_POSITION : DEC A : AND.b #$0F : STA.b PASSWORD_CODE_POSITION
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
macro dw_big_endian(value)
|
macro dw_big_endian(value)
|
||||||
@@ -380,7 +373,7 @@ endmacro
|
|||||||
|
|
||||||
Password_Tilemap:
|
Password_Tilemap:
|
||||||
;Add any graphics for background 0 here
|
;Add any graphics for background 0 here
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+0)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+0)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$0201|!FS_COLOR_YELLOW, #$0202|!FS_COLOR_YELLOW ;BOW
|
dw #$0201|!FS_COLOR_YELLOW, #$0202|!FS_COLOR_YELLOW ;BOW
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -400,7 +393,7 @@ dw #$0285|!FS_COLOR_GREEN, #$0286|!FS_COLOR_GREEN ;PENDANT
|
|||||||
dw #$0200
|
dw #$0200
|
||||||
dw #$02AB|!FS_COLOR_BW, #$02AB|!FS_COLOR_BW ;placeholder upper half action button
|
dw #$02AB|!FS_COLOR_BW, #$02AB|!FS_COLOR_BW ;placeholder upper half action button
|
||||||
|
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+1)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+1)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$0211|!FS_COLOR_YELLOW, #$0212|!FS_COLOR_YELLOW ;BOW
|
dw #$0211|!FS_COLOR_YELLOW, #$0212|!FS_COLOR_YELLOW ;BOW
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -420,7 +413,7 @@ dw #$0295|!FS_COLOR_GREEN, #$0296|!FS_COLOR_GREEN ;PENDANT
|
|||||||
dw #$0200
|
dw #$0200
|
||||||
dw #$02AB|!FS_COLOR_BW, #$02AB|!FS_COLOR_BW ;placeholder lower half action button
|
dw #$02AB|!FS_COLOR_BW, #$02AB|!FS_COLOR_BW ;placeholder lower half action button
|
||||||
|
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+3)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+3)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$0207|!FS_COLOR_YELLOW, #$0217|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP ;BOMBOS
|
dw #$0207|!FS_COLOR_YELLOW, #$0217|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP ;BOMBOS
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -440,7 +433,7 @@ dw #$0228|!FS_COLOR_YELLOW, #$0229|!FS_COLOR_YELLOW ;NET
|
|||||||
dw #$0200
|
dw #$0200
|
||||||
dw #$018A|!FS_COLOR_BW, #$0200 ; Left
|
dw #$018A|!FS_COLOR_BW, #$0200 ; Left
|
||||||
|
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+4)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+4)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$0217|!FS_COLOR_YELLOW, #$0207|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP ;BOMBOS
|
dw #$0217|!FS_COLOR_YELLOW, #$0207|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP ;BOMBOS
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -460,7 +453,7 @@ dw #$0238|!FS_COLOR_YELLOW, #$0239|!FS_COLOR_YELLOW ;NET
|
|||||||
dw #$0200
|
dw #$0200
|
||||||
dw #$019A|!FS_COLOR_BW, #$0200 ; Left
|
dw #$019A|!FS_COLOR_BW, #$0200 ; Left
|
||||||
|
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+6)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+6)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$022A|!FS_COLOR_GREEN, #$022B|!FS_COLOR_GREEN ;BOOK
|
dw #$022A|!FS_COLOR_GREEN, #$022B|!FS_COLOR_GREEN ;BOOK
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -480,7 +473,7 @@ dw #$024E|!FS_COLOR_BROWN, #$024F|!FS_COLOR_BROWN
|
|||||||
dw #$0200
|
dw #$0200
|
||||||
dw #$0200, #$018B|!FS_COLOR_BW ; Right
|
dw #$0200, #$018B|!FS_COLOR_BW ; Right
|
||||||
|
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+7)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+7)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$023A|!FS_COLOR_GREEN, #$023B|!FS_COLOR_GREEN ;BOOK
|
dw #$023A|!FS_COLOR_GREEN, #$023B|!FS_COLOR_GREEN ;BOOK
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -500,7 +493,7 @@ dw #$025E|!FS_COLOR_BROWN, #$025F|!FS_COLOR_BROWN ;GLOVES
|
|||||||
dw #$0200
|
dw #$0200
|
||||||
dw #$0200, #$019B|!FS_COLOR_BW ; Right
|
dw #$0200, #$019B|!FS_COLOR_BW ; Right
|
||||||
|
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+9)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+9)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$020E|!FS_COLOR_BLUE, #$020F|!FS_COLOR_BLUE ;FLIPPERS
|
dw #$020E|!FS_COLOR_BLUE, #$020F|!FS_COLOR_BLUE ;FLIPPERS
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -520,7 +513,7 @@ dw #$022F|!FS_COLOR_YELLOW|!FS_HFLIP, #$022F|!FS_COLOR_YELLOW ;KEY
|
|||||||
dw #$0200
|
dw #$0200
|
||||||
dw #$0267|!FS_COLOR_BW|!FS_HFLIP, #$0267|!FS_COLOR_BW ;cancel
|
dw #$0267|!FS_COLOR_BW|!FS_HFLIP, #$0267|!FS_COLOR_BW ;cancel
|
||||||
|
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X,!PASSWORD_INPUT_START_Y+10)
|
%Layer3_VRAM_Address(Scrap03,Scrap0D+10)
|
||||||
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
%dw_big_endian(51) ;(9*4)+(8*2)-1
|
||||||
dw #$021F|!FS_COLOR_BLUE|!FS_HFLIP, #$021F|!FS_COLOR_BLUE ;FLIPPERS
|
dw #$021F|!FS_COLOR_BLUE|!FS_HFLIP, #$021F|!FS_COLOR_BLUE ;FLIPPERS
|
||||||
dw #$0200
|
dw #$0200
|
||||||
@@ -543,10 +536,10 @@ dw #$0267|!FS_COLOR_BW|!FS_HFLIP|!FS_VFLIP, #$0267|!FS_VFLIP|!FS_COLOR_BW ;cance
|
|||||||
dw $FFFF
|
dw $FFFF
|
||||||
|
|
||||||
macro PasswordDisplaySlot(x,y)
|
macro PasswordDisplaySlot(x,y)
|
||||||
%Layer3_VRAM_Address(!PASSWORD_DISPLAY_START_X+<x>,!PASSWORD_DISPLAY_START_Y+<y>)
|
%Layer3_VRAM_Address(Scrap04+<x>,Scrap04+<y>)
|
||||||
%dw_big_endian(3)
|
%dw_big_endian(3)
|
||||||
dw #$0186|!FS_COLOR_BW, #$0186|!FS_COLOR_BW
|
dw #$0186|!FS_COLOR_BW, #$0186|!FS_COLOR_BW
|
||||||
%Layer3_VRAM_Address(!PASSWORD_DISPLAY_START_X+<x>,!PASSWORD_DISPLAY_START_Y+1+<y>)
|
%Layer3_VRAM_Address(Scrap04+<x>,Scrap04+1+<y>)
|
||||||
%dw_big_endian(3)
|
%dw_big_endian(3)
|
||||||
dw #$0196|!FS_COLOR_BW, #$0196|!FS_COLOR_BW
|
dw #$0196|!FS_COLOR_BW, #$0196|!FS_COLOR_BW
|
||||||
endmacro
|
endmacro
|
||||||
@@ -569,37 +562,37 @@ Password_StripeImageTemplate:
|
|||||||
%PasswordDisplaySlot(18,3)
|
%PasswordDisplaySlot(18,3)
|
||||||
%PasswordDisplaySlot(21,3)
|
%PasswordDisplaySlot(21,3)
|
||||||
.CodeCursorErase ; a code cursor erase (position get be updated)
|
.CodeCursorErase ; a code cursor erase (position get be updated)
|
||||||
%Layer3_VRAM_Address(!PASSWORD_DISPLAY_START_X,!PASSWORD_DISPLAY_START_Y+2)
|
%Layer3_VRAM_Address(Scrap04,Scrap04+2)
|
||||||
%dw_big_endian(3)
|
%dw_big_endian(3)
|
||||||
dw #$0200, #$0200
|
dw #$0200, #$0200
|
||||||
.CodeCursorDraw ; Then comes a code cursor draw (will override the erase if same position)
|
.CodeCursorDraw ; Then comes a code cursor draw (will override the erase if same position)
|
||||||
%Layer3_VRAM_Address(!PASSWORD_DISPLAY_START_X,!PASSWORD_DISPLAY_START_Y+2)
|
%Layer3_VRAM_Address(Scrap04,Scrap04+2)
|
||||||
%dw_big_endian(3)
|
%dw_big_endian(3)
|
||||||
dw #$0267|!FS_COLOR_BW|!FS_HFLIP|!FS_VFLIP, #$0267|!FS_VFLIP|!FS_COLOR_BW
|
dw #$0267|!FS_COLOR_BW|!FS_HFLIP|!FS_VFLIP, #$0267|!FS_VFLIP|!FS_COLOR_BW
|
||||||
.SelectionCursorErase ; a selection cursor erase (position get be updated)
|
.SelectionCursorErase ; a selection cursor erase (position get be updated)
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X-1,!PASSWORD_INPUT_START_Y-1)
|
%Layer3_VRAM_Address(Scrap03-1,Scrap0D-1)
|
||||||
%dw_big_endian(7)
|
%dw_big_endian(7)
|
||||||
dw #$0200, #$0200, #$0200, #$0200
|
dw #$0200, #$0200, #$0200, #$0200
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X-1,!PASSWORD_INPUT_START_Y)
|
%Layer3_VRAM_Address(Scrap03-1,Scrap0D)
|
||||||
%dw_big_endian(3|!FS_VERT_STRIPE)
|
%dw_big_endian(3|!FS_VERT_STRIPE)
|
||||||
dw #$0200, #$0200
|
dw #$0200, #$0200
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X+2,!PASSWORD_INPUT_START_Y)
|
%Layer3_VRAM_Address(Scrap03+2,Scrap0D)
|
||||||
%dw_big_endian(3|!FS_VERT_STRIPE)
|
%dw_big_endian(3|!FS_VERT_STRIPE)
|
||||||
dw #$0200, #$0200
|
dw #$0200, #$0200
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X-1,!PASSWORD_INPUT_START_Y+2)
|
%Layer3_VRAM_Address(Scrap03-1,Scrap0D+2)
|
||||||
%dw_big_endian(7)
|
%dw_big_endian(7)
|
||||||
dw #$0200, #$0200, #$0200, #$0200
|
dw #$0200, #$0200, #$0200, #$0200
|
||||||
.SelectionCursorDraw ; Then comes a selection cursor draw (will override the erase if same position)
|
.SelectionCursorDraw ; Then comes a selection cursor draw (will override the erase if same position)
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X-1,!PASSWORD_INPUT_START_Y-1)
|
%Layer3_VRAM_Address(Scrap03-1,Scrap0D-1)
|
||||||
%dw_big_endian(7)
|
%dw_big_endian(7)
|
||||||
dw #$02BB|!FS_COLOR_GREEN, #$02BC|!FS_COLOR_GREEN, #$02BC|!FS_COLOR_GREEN|!FS_HFLIP, #$02BB|!FS_COLOR_GREEN|!FS_HFLIP
|
dw #$02BB|!FS_COLOR_GREEN, #$02BC|!FS_COLOR_GREEN, #$02BC|!FS_COLOR_GREEN|!FS_HFLIP, #$02BB|!FS_COLOR_GREEN|!FS_HFLIP
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X-1,!PASSWORD_INPUT_START_Y)
|
%Layer3_VRAM_Address(Scrap03-1,Scrap0D)
|
||||||
%dw_big_endian(3|!FS_VERT_STRIPE)
|
%dw_big_endian(3|!FS_VERT_STRIPE)
|
||||||
dw #$02BD|!FS_COLOR_GREEN, #$02BD|!FS_COLOR_GREEN|!FS_VFLIP
|
dw #$02BD|!FS_COLOR_GREEN, #$02BD|!FS_COLOR_GREEN|!FS_VFLIP
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X+2,!PASSWORD_INPUT_START_Y)
|
%Layer3_VRAM_Address(Scrap03+2,Scrap0D)
|
||||||
%dw_big_endian(3|!FS_VERT_STRIPE)
|
%dw_big_endian(3|!FS_VERT_STRIPE)
|
||||||
dw #$02BD|!FS_COLOR_GREEN|!FS_HFLIP, #$02BD|!FS_COLOR_GREEN|!FS_HFLIP|!FS_VFLIP
|
dw #$02BD|!FS_COLOR_GREEN|!FS_HFLIP, #$02BD|!FS_COLOR_GREEN|!FS_HFLIP|!FS_VFLIP
|
||||||
%Layer3_VRAM_Address(!PASSWORD_INPUT_START_X-1,!PASSWORD_INPUT_START_Y+2)
|
%Layer3_VRAM_Address(Scrap03-1,Scrap0D+2)
|
||||||
%dw_big_endian(7)
|
%dw_big_endian(7)
|
||||||
dw #$02BB|!FS_COLOR_GREEN|!FS_VFLIP, #$02BC|!FS_COLOR_GREEN|!FS_VFLIP, #$02BC|!FS_COLOR_GREEN|!FS_HFLIP|!FS_VFLIP, #$02BB|!FS_COLOR_GREEN|!FS_HFLIP|!FS_VFLIP
|
dw #$02BB|!FS_COLOR_GREEN|!FS_VFLIP, #$02BC|!FS_COLOR_GREEN|!FS_VFLIP, #$02BC|!FS_COLOR_GREEN|!FS_HFLIP|!FS_VFLIP, #$02BB|!FS_COLOR_GREEN|!FS_HFLIP|!FS_VFLIP
|
||||||
dw $FFFF
|
dw $FFFF
|
||||||
|
|||||||
50
potions.asm
50
potions.asm
@@ -2,32 +2,31 @@
|
|||||||
; $7F5092 - Potion Animation Busy Flags (Health)
|
; $7F5092 - Potion Animation Busy Flags (Health)
|
||||||
; $7F5093 - Potion Animation Busy Flags (Magic)
|
; $7F5093 - Potion Animation Busy Flags (Magic)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!BUSY_HEALTH = $7F5092
|
|
||||||
RefillHealth:
|
RefillHealth:
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #279 : BNE + ; Spike Cave bottles work normally
|
CMP.w #279 : BNE + ; Spike Cave bottles work normally
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA #$A0
|
LDA.b #$A0
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.l PotionHealthRefill : CMP.b #$A0 : !BGE .done
|
LDA.l PotionHealthRefill : CMP.b #$A0 : !BGE .done
|
||||||
LDA !BUSY_HEALTH : BNE ++
|
LDA.l BusyHealth : BNE ++
|
||||||
LDA.l PotionHealthRefill ; load refill amount
|
LDA.l PotionHealthRefill ; load refill amount
|
||||||
!ADD CurrentHealth ; add to current health
|
!ADD CurrentHealth ; add to current health
|
||||||
CMP MaximumHealth : !BLT +++ : LDA MaximumHealth : +++
|
CMP.l MaximumHealth : !BLT +++ : LDA.l MaximumHealth : +++
|
||||||
STA !BUSY_HEALTH
|
STA.l BusyHealth
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA CurrentHealth : CMP.l !BUSY_HEALTH : !BLT ++
|
LDA.l CurrentHealth : CMP.l BusyHealth : !BLT ++
|
||||||
LDA.b #$00 : STA HeartsFiller
|
LDA.b #$00 : STA.l HeartsFiller
|
||||||
LDA $020A : BNE .notDone
|
LDA.w $020A : BNE .notDone
|
||||||
LDA.b #$00 : STA !BUSY_HEALTH
|
LDA.b #$00 : STA.l BusyHealth
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
++
|
++
|
||||||
LDA.b #$08 : STA HeartsFiller ; refill some health
|
LDA.b #$08 : STA.l HeartsFiller ; refill some health
|
||||||
.notDone
|
.notDone
|
||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
@@ -35,54 +34,53 @@ RefillHealth:
|
|||||||
|
|
||||||
; Check goal health versus actual health.
|
; Check goal health versus actual health.
|
||||||
; if(actual < goal) then branch.
|
; if(actual < goal) then branch.
|
||||||
LDA CurrentHealth : CMP MaximumHealth : BCC .refillAllHealth
|
LDA.l CurrentHealth : CMP.l MaximumHealth : BCC .refillAllHealth
|
||||||
LDA MaximumHealth : STA CurrentHealth
|
LDA.l MaximumHealth : STA.l CurrentHealth
|
||||||
LDA.b #$00 : STA HeartsFiller
|
LDA.b #$00 : STA.l HeartsFiller
|
||||||
; ??? not sure what purpose this branch serves.
|
; ??? not sure what purpose this branch serves.
|
||||||
LDA $020A : BNE .beta
|
LDA.w $020A : BNE .beta
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
.refillAllHealth
|
.refillAllHealth
|
||||||
; Fill up ze health.
|
; Fill up ze health.
|
||||||
LDA.b #$A0 : STA HeartsFiller
|
LDA.b #$A0 : STA.l HeartsFiller
|
||||||
.beta
|
.beta
|
||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!BUSY_MAGIC = $7F5093
|
|
||||||
RefillMagic:
|
RefillMagic:
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; these are all decimal because i got them that way
|
LDA.b $A0 ; these are all decimal because i got them that way
|
||||||
CMP.w #279 : BNE + ; Spike Cave bottles work normally
|
CMP.w #279 : BNE + ; Spike Cave bottles work normally
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA #$80
|
LDA.b #$80
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.l PotionMagicRefill : CMP.b #$80 : !BGE .done
|
LDA.l PotionMagicRefill : CMP.b #$80 : !BGE .done
|
||||||
LDA !BUSY_MAGIC : BNE ++
|
LDA.l BusyMagic : BNE ++
|
||||||
LDA.l PotionMagicRefill ; load refill amount
|
LDA.l PotionMagicRefill ; load refill amount
|
||||||
!ADD CurrentMagic ; add to current magic
|
!ADD CurrentMagic ; add to current magic
|
||||||
CMP.b #$80 : !BLT +++ : LDA.b #$80 : +++
|
CMP.b #$80 : !BLT +++ : LDA.b #$80 : +++
|
||||||
STA !BUSY_MAGIC
|
STA.l BusyMagic
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA CurrentMagic : CMP.l !BUSY_MAGIC : !BLT ++
|
LDA.l CurrentMagic : CMP.l BusyMagic : !BLT ++
|
||||||
LDA.b #$00 : STA !BUSY_MAGIC
|
LDA.b #$00 : STA.l BusyMagic
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
++
|
++
|
||||||
LDA.b #$01 : STA MagicFiller ; refill some magic
|
LDA.b #$01 : STA.l MagicFiller ; refill some magic
|
||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
.done
|
.done
|
||||||
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
; Check if Link's magic meter is full
|
; Check if Link's magic meter is full
|
||||||
LDA CurrentMagic : CMP.b #$80
|
LDA.l CurrentMagic : CMP.b #$80
|
||||||
BCS .itsFull
|
BCS .itsFull
|
||||||
; Tell the magic meter to fill up until it's full.
|
; Tell the magic meter to fill up until it's full.
|
||||||
LDA.b #$80 : STA MagicFiller
|
LDA.b #$80 : STA.l MagicFiller
|
||||||
SEP #$30
|
SEP #$30
|
||||||
RTL
|
RTL
|
||||||
.itsFull
|
.itsFull
|
||||||
|
|||||||
420
ram.asm
420
ram.asm
@@ -1,14 +1,211 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; RAM Labels & Assertions
|
; RAM Labels & Assertions
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Labels for values in WRAM and assertions that ensure they're correct and
|
; This module is primarily concerned with labeling WRAM addresses used by the
|
||||||
; at the expected addresses. All values larger than one byte are little endian.
|
; randomizer and documenting their usage.
|
||||||
|
;
|
||||||
|
; See the JP 1.0 disassembly for reference as well
|
||||||
|
; (https://github.com/spannerisms/jpdasm/ - 31/10/2022)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Placeholder and for compass item max count allocations, still WIP
|
pushpc
|
||||||
|
org 0
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Direct Page
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
base $7E0000
|
||||||
|
Scrap:
|
||||||
|
Scrap00: skip 1 ; Used as short-term scratch space. If you need some short-term
|
||||||
|
Scrap01: skip 1 ; RAM, you can often use these. Double check that the next use
|
||||||
|
Scrap02: skip 1 ; of the addresses you want to use is a write.
|
||||||
|
Scrap03: skip 1 ;
|
||||||
|
Scrap04: skip 1 ;
|
||||||
|
Scrap05: skip 1 ;
|
||||||
|
Scrap06: skip 1 ;
|
||||||
|
Scrap07: skip 1 ;
|
||||||
|
Scrap08: skip 1 ;
|
||||||
|
Scrap09: skip 1 ;
|
||||||
|
Scrap0A: skip 1 ;
|
||||||
|
Scrap0B: skip 1 ;
|
||||||
|
Scrap0C: skip 1 ;
|
||||||
|
Scrap0D: skip 1 ;
|
||||||
|
Scrap0E: skip 1 ;
|
||||||
|
Scrap0F: skip 1 ;
|
||||||
|
|
||||||
|
|
||||||
|
LinkPosY = $7E0020 ; 2 bytes
|
||||||
|
LinkPosX = $7E0022 ; 2 bytes
|
||||||
|
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Bank 7E
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
;================================================================================
|
||||||
|
; Mirrored WRAM
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Pages 0x00–0x1F of Bank7E are mirrored to every program bank ALTTP uses.
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CurrentMSUTrack = $7E010B
|
||||||
|
CurrentVolume = $7E0127
|
||||||
|
TargetVolume = $7E0129
|
||||||
|
CurrentControlRequest = $7E0133 ; Last thing written to MusicControlRequest
|
||||||
|
MusicControl = $7E012B
|
||||||
|
MusicControlRequest = $7E012C
|
||||||
|
|
||||||
|
ItemReceiptID = $7E02D8
|
||||||
|
|
||||||
|
SpritePosYLow = $7E0D00 ; all $10 bytes
|
||||||
|
SpritePosXLow = $7E0D10
|
||||||
|
SpritePosYHigh = $7E0D20
|
||||||
|
SpritePosXHigh = $7E0D30
|
||||||
|
|
||||||
|
SpriteAuxTable = $7E0DA0 ; 0x1F bytes
|
||||||
|
SpriteAITable = $7E0DD0
|
||||||
|
|
||||||
|
SpriteTypeTable = $7E0E20
|
||||||
|
|
||||||
|
SpriteDirectionTable = $7E0EB0
|
||||||
|
|
||||||
|
ToastBuffer = $7E1E0E ; 2 bytes DoToast
|
||||||
|
|
||||||
|
ScratchBufferNV = $7E1E70 ; Callee preserved, not ok to clobber
|
||||||
|
ScratchBufferV = $7E1E80 ; Caller preserved, okay to clobber
|
||||||
|
|
||||||
|
;1E90
|
||||||
|
ClockHours = $7E1E90 ; Clock Hours
|
||||||
|
ClockMinutes = $7E1E94 ; Clock Minutes
|
||||||
|
ClockSeconds = $7E1E98 ; Clock Seconds
|
||||||
|
ClockBuffer = $7E1E9C ; Clock Temporary
|
||||||
|
;1EA0
|
||||||
|
;1EB0
|
||||||
|
;1EC0
|
||||||
|
;1ED0
|
||||||
|
;1EE0
|
||||||
|
;1EF0
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; UNMIRRORED WRAM
|
||||||
|
; Addresses from here on can only be accessed with long addressing
|
||||||
|
; or absolute addressing with the appropriate data bank set
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
TileUploadBuffer = $7EA180 ; 0x300 bytes
|
||||||
|
SpriteOAM = $7EC025 ;
|
||||||
|
|
||||||
|
; $7EC700 - Tile map buffer for HUD
|
||||||
|
|
||||||
|
HUDKeyIcon = $7EC726
|
||||||
|
HUDGoalIndicator = $7EC72A
|
||||||
|
HUDPrizeIcon = $7EC742
|
||||||
|
HUDRupees = $7EC750
|
||||||
|
HUDBombCount = $7EC75A
|
||||||
|
HUDArrowCount = $7EC760
|
||||||
|
HUDKeyDigits = $7EC764
|
||||||
|
|
||||||
|
BigRAM = $7EC900 ; Big buffer of free ram (0x1F00)
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Bank 7F
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
RedrawFlag = $7F5000
|
||||||
|
|
||||||
|
SpriteSkipEOR = $7F5008
|
||||||
|
|
||||||
|
MSReceived = $7F5031
|
||||||
|
; GanonWarpChain = $7F5032
|
||||||
|
ForceHeartSpawn = $7F5033
|
||||||
|
SkipHeartSave = $7F5034
|
||||||
|
AltTextFlag = $7F5035 ; two bytes, next must be zero. 0=disable
|
||||||
|
BossKills = $7F5037
|
||||||
|
LagTime = $7F5038
|
||||||
|
RupeesCollected = $7F503C ; 2 bytes
|
||||||
|
NonChestCounter = $7F503E
|
||||||
|
|
||||||
|
TileUploadOffsetOverride = $7F5042
|
||||||
|
|
||||||
|
NMIAux = $7F5044
|
||||||
|
|
||||||
|
ShopId = $7F5050
|
||||||
|
ShopType = $7F5051
|
||||||
|
ShopInventory = $7F5052 ; 0x0C
|
||||||
|
ShopState = $7F505F
|
||||||
|
ShopCapacity = $7F5060
|
||||||
|
ShopScratch = $7F5061
|
||||||
|
ShopSRAMIndex = $7F5062
|
||||||
|
ShopMerchant = $7F5063
|
||||||
|
; ShopDMATimer = $7F5064 unused
|
||||||
|
ShopPriceColumn = $7F5066 ; two bytes
|
||||||
|
|
||||||
|
OneMindId = $7F5072
|
||||||
|
OneMindTimerRAM = $7F5073
|
||||||
|
|
||||||
|
ClockStatus = $7F507E ; 2 bytes
|
||||||
|
; ---- --dn
|
||||||
|
; d - dnf
|
||||||
|
; n - negative
|
||||||
|
|
||||||
|
RNGLockIn = $7F5090 ; RNG Item
|
||||||
|
BusyItem = $7F5091
|
||||||
|
BusyHealth = $7F5092
|
||||||
|
BusyMagic = $7F5093
|
||||||
|
DialogOffsetPointer = $7F5094 ; 2 bytes
|
||||||
|
DialogReturnPointer = $7F5096 ; 2 bytes
|
||||||
|
|
||||||
|
StalfosBombDamage = $7F509D
|
||||||
|
ValidKeyLoaded = $7F509E
|
||||||
|
|
||||||
|
SwordModifier = $7F50C0
|
||||||
|
ShieldModifier = $7F50C1 ; not implemented
|
||||||
|
ArmorModifier = $7F50C2
|
||||||
|
MagicModifier = $7F50C3
|
||||||
|
LightConeModifier = $7F50C4
|
||||||
|
CuccoStormer = $7F50C5 ; non-zero write causes storm, needs to be zeroed
|
||||||
|
OldManDash = $7F50C6
|
||||||
|
IceModifier = $7F50C7
|
||||||
|
InfiniteArrows = $7F50C8
|
||||||
InfiniteBombs = $7F50C9
|
InfiniteBombs = $7F50C9
|
||||||
|
InfiniteMagic = $7F50CA
|
||||||
|
DPadInverter = $7F50CB ; fill in values
|
||||||
|
OHKOFlag = $7F50CC
|
||||||
|
SpriteSwapper = $7F50CD
|
||||||
|
BootsModifier = $7F50CE
|
||||||
|
|
||||||
|
; $7F50D0 - $7F50FF - Block Cypher Parameters
|
||||||
|
; $7F5100 - $7F51FF - Block Cypher Buffer
|
||||||
|
|
||||||
|
; Crypto buffer ($7F50D0 - $7F51FF)
|
||||||
|
KeyBase = $7F50D0
|
||||||
|
y = $7F50E0
|
||||||
|
z = $7F50E4
|
||||||
|
Sum = $7F50E8
|
||||||
|
p = $7F50EC
|
||||||
|
e = $7F50F0
|
||||||
|
CryptoScratch = $7F50F2
|
||||||
|
CryptoBuffer = $7F5100
|
||||||
|
v = $7F5100
|
||||||
|
|
||||||
|
RNGPointers = $7F5200 ; $FF bytes
|
||||||
|
|
||||||
|
RxBuffer = $7F5300 ; $00-$5F buffer $60-7E reserved
|
||||||
|
RxStatus = $7F537F ; 1 byte
|
||||||
|
TxBuffer = $7F5380 ; $80 - $EF buffer $F0 - $FE reserved
|
||||||
|
TxStatus = $7F53FF ; $F0 - $FE
|
||||||
|
|
||||||
|
MSUFallbackTable = $7F5460 ; 8 bytes
|
||||||
|
MSUDelayedCommand = $7F5469
|
||||||
|
MSUPackCount = $7F546A
|
||||||
|
MSUPackCurrent = $7F546B
|
||||||
|
MSUPackRequest = $7F546C
|
||||||
|
MSULoadedTrack = $7F546D ; 2 bytes
|
||||||
|
MSUResumeTrack = $7F546F
|
||||||
|
MSUResumeTime = $7F5470 ; 4 bytes
|
||||||
|
MSUResumeControl = $7F5474
|
||||||
|
|
||||||
CompassTotalsWRAM = $7F5410
|
CompassTotalsWRAM = $7F5410
|
||||||
|
|
||||||
|
DialogBuffer = $7F5700 ; $FF bytes
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; RAM Assertions
|
; RAM Assertions
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -16,5 +213,222 @@ macro assertRAM(label, address)
|
|||||||
assert <label> = <address>, "<label> labeled at incorrect address."
|
assert <label> = <address>, "<label> labeled at incorrect address."
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
|
%assertRAM(Scrap00, $7E0000)
|
||||||
|
%assertRAM(Scrap01, $7E0001)
|
||||||
|
%assertRAM(Scrap02, $7E0002)
|
||||||
|
%assertRAM(Scrap03, $7E0003)
|
||||||
|
%assertRAM(Scrap04, $7E0004)
|
||||||
|
%assertRAM(Scrap05, $7E0005)
|
||||||
|
%assertRAM(Scrap06, $7E0006)
|
||||||
|
%assertRAM(Scrap07, $7E0007)
|
||||||
|
%assertRAM(Scrap08, $7E0008)
|
||||||
|
%assertRAM(Scrap09, $7E0009)
|
||||||
|
%assertRAM(Scrap0A, $7E000A)
|
||||||
|
%assertRAM(Scrap0B, $7E000B)
|
||||||
|
%assertRAM(Scrap0C, $7E000C)
|
||||||
|
%assertRAM(Scrap0D, $7E000D)
|
||||||
|
%assertRAM(Scrap0E, $7E000E)
|
||||||
|
%assertRAM(Scrap0F, $7E000F)
|
||||||
|
|
||||||
|
|
||||||
|
%assertRAM(LinkPosY, $7E0020)
|
||||||
|
%assertRAM(LinkPosX, $7E0022)
|
||||||
|
%assertRAM(CurrentMSUTrack, $7E010B)
|
||||||
|
%assertRAM(CurrentVolume, $7E0127)
|
||||||
|
%assertRAM(TargetVolume, $7E0129)
|
||||||
|
%assertRAM(CurrentControlRequest, $7E0133)
|
||||||
|
%assertRAM(MusicControl, $7E012B)
|
||||||
|
%assertRAM(MusicControlRequest, $7E012C)
|
||||||
|
%assertRAM(ItemReceiptID, $7E02D8)
|
||||||
|
%assertRAM(SpritePosYLow, $7E0D00)
|
||||||
|
%assertRAM(SpritePosXLow, $7E0D10)
|
||||||
|
%assertRAM(SpritePosYHigh, $7E0D20)
|
||||||
|
%assertRAM(SpritePosXHigh, $7E0D30)
|
||||||
|
%assertRAM(SpriteAuxTable, $7E0DA0)
|
||||||
|
%assertRAM(SpriteAITable, $7E0DD0)
|
||||||
|
%assertRAM(SpriteTypeTable, $7E0E20)
|
||||||
|
%assertRAM(SpriteDirectionTable, $7E0EB0)
|
||||||
|
%assertRAM(ToastBuffer, $7E1E0E)
|
||||||
|
%assertRAM(ScratchBufferNV, $7E1E70)
|
||||||
|
%assertRAM(ScratchBufferV, $7E1E80)
|
||||||
|
%assertRAM(ClockHours, $7E1E90)
|
||||||
|
%assertRAM(ClockMinutes, $7E1E94)
|
||||||
|
%assertRAM(ClockSeconds, $7E1E98)
|
||||||
|
%assertRAM(ClockBuffer, $7E1E9C)
|
||||||
|
%assertRAM(TileUploadBuffer, $7EA180)
|
||||||
|
%assertRAM(SpriteOAM, $7EC025)
|
||||||
|
%assertRAM(HUDKeyIcon, $7EC726)
|
||||||
|
%assertRAM(HUDGoalIndicator, $7EC72A)
|
||||||
|
%assertRAM(HUDPrizeIcon, $7EC742)
|
||||||
|
%assertRAM(HUDRupees, $7EC750)
|
||||||
|
%assertRAM(HUDBombCount, $7EC75A)
|
||||||
|
%assertRAM(HUDArrowCount, $7EC760)
|
||||||
|
%assertRAM(HUDKeyDigits, $7EC764)
|
||||||
|
%assertRAM(BigRAM, $7EC900)
|
||||||
|
%assertRAM(RedrawFlag, $7F5000)
|
||||||
|
%assertRAM(SpriteSkipEOR, $7F5008)
|
||||||
|
%assertRAM(MSReceived, $7F5031)
|
||||||
|
%assertRAM(ForceHeartSpawn, $7F5033)
|
||||||
|
%assertRAM(SkipHeartSave, $7F5034)
|
||||||
|
%assertRAM(AltTextFlag, $7F5035)
|
||||||
|
%assertRAM(BossKills, $7F5037)
|
||||||
|
%assertRAM(LagTime, $7F5038)
|
||||||
|
%assertRAM(RupeesCollected, $7F503C)
|
||||||
|
%assertRAM(NonChestCounter, $7F503E)
|
||||||
|
%assertRAM(TileUploadOffsetOverride, $7F5042)
|
||||||
|
%assertRAM(NMIAux, $7F5044)
|
||||||
|
%assertRAM(ShopId, $7F5050)
|
||||||
|
%assertRAM(ShopType, $7F5051)
|
||||||
|
%assertRAM(ShopInventory, $7F5052)
|
||||||
|
%assertRAM(ShopState, $7F505F)
|
||||||
|
%assertRAM(ShopCapacity, $7F5060)
|
||||||
|
%assertRAM(ShopScratch, $7F5061)
|
||||||
|
%assertRAM(ShopSRAMIndex, $7F5062)
|
||||||
|
%assertRAM(ShopMerchant, $7F5063)
|
||||||
|
%assertRAM(ShopPriceColumn, $7F5066)
|
||||||
|
%assertRAM(OneMindId, $7F5072)
|
||||||
|
%assertRAM(OneMindTimerRAM, $7F5073)
|
||||||
|
%assertRAM(ClockStatus, $7F507E)
|
||||||
|
%assertRAM(RNGLockIn, $7F5090)
|
||||||
|
%assertRAM(BusyItem, $7F5091)
|
||||||
|
%assertRAM(BusyHealth, $7F5092)
|
||||||
|
%assertRAM(BusyMagic, $7F5093)
|
||||||
|
%assertRAM(DialogOffsetPointer, $7F5094)
|
||||||
|
%assertRAM(DialogReturnPointer, $7F5096)
|
||||||
|
%assertRAM(StalfosBombDamage, $7F509D)
|
||||||
|
%assertRAM(ValidKeyLoaded, $7F509E)
|
||||||
|
%assertRAM(SwordModifier, $7F50C0)
|
||||||
|
%assertRAM(ShieldModifier, $7F50C1)
|
||||||
|
%assertRAM(ArmorModifier, $7F50C2)
|
||||||
|
%assertRAM(MagicModifier, $7F50C3)
|
||||||
|
%assertRAM(LightConeModifier, $7F50C4)
|
||||||
|
%assertRAM(CuccoStormer, $7F50C5)
|
||||||
|
%assertRAM(OldManDash, $7F50C6)
|
||||||
|
%assertRAM(IceModifier, $7F50C7)
|
||||||
|
%assertRAM(InfiniteArrows, $7F50C8)
|
||||||
%assertRAM(InfiniteBombs, $7F50C9)
|
%assertRAM(InfiniteBombs, $7F50C9)
|
||||||
|
%assertRAM(InfiniteMagic, $7F50CA)
|
||||||
|
%assertRAM(DPadInverter, $7F50CB)
|
||||||
|
%assertRAM(OHKOFlag, $7F50CC)
|
||||||
|
%assertRAM(SpriteSwapper, $7F50CD)
|
||||||
|
%assertRAM(BootsModifier, $7F50CE)
|
||||||
|
%assertRAM(KeyBase, $7F50D0)
|
||||||
|
%assertRAM(y, $7F50E0)
|
||||||
|
%assertRAM(z, $7F50E4)
|
||||||
|
%assertRAM(Sum, $7F50E8)
|
||||||
|
%assertRAM(p, $7F50EC)
|
||||||
|
%assertRAM(e, $7F50F0)
|
||||||
|
%assertRAM(CryptoScratch, $7F50F2)
|
||||||
|
%assertRAM(CryptoBuffer, $7F5100)
|
||||||
|
%assertRAM(v, $7F5100)
|
||||||
|
%assertRAM(RNGPointers, $7F5200)
|
||||||
|
%assertRAM(RxBuffer, $7F5300)
|
||||||
|
%assertRAM(RxStatus, $7F537F)
|
||||||
|
%assertRAM(TxBuffer, $7F5380)
|
||||||
|
%assertRAM(TxStatus, $7F53FF)
|
||||||
|
%assertRAM(MSUFallbackTable, $7F5460)
|
||||||
|
%assertRAM(MSUDelayedCommand, $7F5469)
|
||||||
|
%assertRAM(MSUPackCount, $7F546A)
|
||||||
|
%assertRAM(MSUPackCurrent, $7F546B)
|
||||||
|
%assertRAM(MSUPackRequest, $7F546C)
|
||||||
|
%assertRAM(MSULoadedTrack, $7F546D)
|
||||||
|
%assertRAM(MSUResumeTrack, $7F546F)
|
||||||
|
%assertRAM(MSUResumeTime, $7F5470)
|
||||||
|
%assertRAM(MSUResumeControl, $7F5474)
|
||||||
%assertRAM(CompassTotalsWRAM, $7F5410)
|
%assertRAM(CompassTotalsWRAM, $7F5410)
|
||||||
|
%assertRAM(DialogBuffer, $7F5700)
|
||||||
|
|
||||||
|
|
||||||
|
pullpc
|
||||||
|
;================================================================================
|
||||||
|
; Bank 7F
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
; $7F5000 - Redraw Flag
|
||||||
|
; $7F5001 - Flipper Softlock Possible
|
||||||
|
; $7F5002 - L/R Rotate
|
||||||
|
; $7F5003 - HexToDec 1st Digit
|
||||||
|
; $7F5004 - HexToDec 2nd Digit
|
||||||
|
; $7F5005 - HexToDec 3rd Digit
|
||||||
|
; $7F5006 - HexToDec 4th Digit
|
||||||
|
; $7F5007 - HexToDec 5th Digit
|
||||||
|
; $7F5008 - Skip Sprite_DrawMultiple EOR
|
||||||
|
; $7F5009 - Always Zero
|
||||||
|
; $7F5010 - Unused
|
||||||
|
; $7F5020 - Unused
|
||||||
|
; $7F5030 - Unused
|
||||||
|
; $7F5031 - HUD Master Sword Flag
|
||||||
|
; $7F5032 - Unused
|
||||||
|
; $7F5033 - Force Heart Spawn Counter
|
||||||
|
; $7F5034 - Skip Heart Collection Save Counter
|
||||||
|
; $7F5035 - Alternate Text Pointer Flag ; 0=Disable
|
||||||
|
; $7F5036 - Padding Byte (Must be Zero)
|
||||||
|
; $7F5037 - Stats Boss Kills
|
||||||
|
; $7F5038 - Stats Lag Time
|
||||||
|
; $7F5039 - Stats Lag Time
|
||||||
|
; $7F503A - Stats Lag Time
|
||||||
|
; $7F503B - Stats Lag Time
|
||||||
|
; $7F503C - Stats Rupee Total
|
||||||
|
; $7F503D - Stats Rupee Total
|
||||||
|
; $7F503E - Stats Item Total
|
||||||
|
; $7F503F - Unused
|
||||||
|
; $7F5040 - Free Item Dialog Temporary
|
||||||
|
; $7F5041 - Unused
|
||||||
|
; $7F5042 - Tile Upload Offset Override (Low)
|
||||||
|
; $7F5043 - Tile Upload Offset Override (High)
|
||||||
|
; $7F5044 - $7F5046 - NMI Auxiliary Function
|
||||||
|
; $7F5047 - $7F504F - Unused
|
||||||
|
; $7F5050 - $7F506F - Shop Block
|
||||||
|
; $7F5070 - Reserved for OneMind
|
||||||
|
; $7F5071 - Reserved for OneMind
|
||||||
|
; $7F5072 - OneMind player ID
|
||||||
|
; $7F5073 - $7F5074 - OneMind timer
|
||||||
|
; $7F5075 - $7F507D - Unused
|
||||||
|
; $7F507E - Clock Status
|
||||||
|
; $7F507F - Always Zero
|
||||||
|
; $7F5080 - $7F508F - unused
|
||||||
|
; $7F5090 - RNG Item Lock-In
|
||||||
|
; $7F5091 - Item Animation Busy Flag
|
||||||
|
; $7F5092 - Potion Animation Busy Flags (Health)
|
||||||
|
; $7F5093 - Potion Animation Busy Flags (Magic)
|
||||||
|
; $7F5094 - Dialog Offset Pointer (Low)
|
||||||
|
; $7F5095 - Dialog Offset Pointer (High)
|
||||||
|
; $7F5096 - Dialog Offset Pointer Return (Low)
|
||||||
|
; $7F5097 - Dialog Offset Pointer Return (High)
|
||||||
|
; $7F5098 - Water Entry Index
|
||||||
|
; $7F5099 - Last Entered Overworld Door ID
|
||||||
|
; $7F509A - (Reserved)
|
||||||
|
; $7F509B - Unused
|
||||||
|
; $7F509C - Unused
|
||||||
|
; $7F509E - Valid Key Loaded
|
||||||
|
; $7F509F - Text Box Defer Flag
|
||||||
|
; $7F50A0 - $7F50AF - Unused
|
||||||
|
|
||||||
|
; $7F50B0 - $7F50BF - Downstream Reserved (Enemizer)
|
||||||
|
|
||||||
|
; $7F50C1 - Shield Modifier (Not Implemented)
|
||||||
|
; $7F50C2 - Armor Modifier
|
||||||
|
; $7F50C3 - Magic Modifier
|
||||||
|
; $7F50C4 - Light Cone Modifier
|
||||||
|
; $7F50C5 - Cucco Storm
|
||||||
|
; $7F50C6 - Old Man Dash Modifier
|
||||||
|
; $7F50C7 - Ice Physics Modifier
|
||||||
|
; $7F50C8 - Infinite Arrows Modifier
|
||||||
|
; $7F50C9 - Infinite Bombs Modifier
|
||||||
|
; $7F50CA - Infinite Magic Modifier
|
||||||
|
; $7F50CB - Invert D-Pad (Fill in values)
|
||||||
|
; $7F50CC - OHKO Flag
|
||||||
|
; $7F50CD - Sprite Swapper
|
||||||
|
; $7F50CE - Boots Modifier (0=Off, 1=Always, 2=Never)
|
||||||
|
|
||||||
|
; $7F50D0 - $7F50FF - Block Cypher Parameters
|
||||||
|
; $7F5100 - $7F51FF - Block Cypher Buffer
|
||||||
|
; $7F5200 - $7F52FF - RNG Pointer Block
|
||||||
|
; $7F5300 - $7F53FF - Multiworld Block
|
||||||
|
; $7F5400 - $7F540F - Unused
|
||||||
|
; $7F5410 - $7F545F - Dungeon Tracking Block
|
||||||
|
; $7F5460 - $7F549F - MSU Block
|
||||||
|
; $7F54A0 - $7F56FF - Unused
|
||||||
|
|
||||||
|
; $7F5700 - $7F57FF - Dialog Buffer
|
||||||
|
|
||||||
|
|||||||
1500
registers.asm
Normal file
1500
registers.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -24,9 +24,8 @@ SearchForEquippedItem:
|
|||||||
LDA.l BowEquipment ; thing we wrote over
|
LDA.l BowEquipment ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
|
||||||
DecrementArrows:
|
DecrementArrows:
|
||||||
LDA.l !INFINITE_ARROWS : BNE .infinite
|
LDA.l InfiniteArrows : BNE .infinite
|
||||||
LDA.l ArrowMode : BNE .rupees : BRA .normal
|
LDA.l ArrowMode : BNE .rupees : BRA .normal
|
||||||
.infinite
|
.infinite
|
||||||
LDA.b #$01 : RTL
|
LDA.b #$01 : RTL
|
||||||
@@ -36,7 +35,7 @@ DecrementArrows:
|
|||||||
BRA .done
|
BRA .done
|
||||||
.rupees
|
.rupees
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.b $A0 : CMP #$0111 : SEP #$20 : BNE .not_archery_game
|
LDA.b $A0 : CMP.w #$0111 : SEP #$20 : BNE .not_archery_game
|
||||||
LDA.b $1B : BEQ .not_archery_game ; in overworld
|
LDA.b $1B : BEQ .not_archery_game ; in overworld
|
||||||
LDA.w $0B9A : BEQ .shoot_arrow ; arrow game active
|
LDA.w $0B9A : BEQ .shoot_arrow ; arrow game active
|
||||||
LDA.b #$00 : BRA .done
|
LDA.b #$00 : BRA .done
|
||||||
|
|||||||
54
rngfixes.asm
54
rngfixes.asm
@@ -2,42 +2,41 @@
|
|||||||
; RNG Fixes
|
; RNG Fixes
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
RigDigRNG:
|
RigDigRNG:
|
||||||
LDA $7FFE01 : CMP.l DiggingGameRNG : !BGE .forceHeart
|
LDA.l $7FFE01 : CMP.l DiggingGameRNG : !BGE .forceHeart
|
||||||
.normalItem
|
.normalItem
|
||||||
JML GetRandomInt
|
JML GetRandomInt
|
||||||
.forceHeart
|
.forceHeart
|
||||||
LDA $7FFE00 : BNE .normalItem
|
LDA.l $7FFE00 : BNE .normalItem
|
||||||
LDA #$04
|
LDA.b #$04
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
RigChestRNG:
|
RigChestRNG:
|
||||||
JSL.l DecrementChestCounter
|
JSL.l DecrementChestCounter
|
||||||
LDA $04C4 : CMP.l ChestGameRNG : BEQ .forceHeart
|
LDA.w $04C4 : CMP.l ChestGameRNG : BEQ .forceHeart
|
||||||
.normalItem
|
.normalItem
|
||||||
JSL GetRandomInt
|
JSL GetRandomInt
|
||||||
AND.b #$07 ; restrict values to 0-7
|
AND.b #$07 ; restrict values to 0-7
|
||||||
CMP #$07 : BEQ .notHeart
|
CMP.b #$07 : BEQ .notHeart
|
||||||
JSL.l DecrementItemCounter
|
JSL.l DecrementItemCounter
|
||||||
RTL
|
RTL
|
||||||
.forceHeart
|
.forceHeart
|
||||||
LDA #$33 : STA $C8 ; assure the correct state if player talked to shopkeeper
|
LDA.b #$33 : STA.b $C8 ; assure the correct state if player talked to shopkeeper
|
||||||
LDA $0403 : AND.b #$40 : BNE .notHeart
|
LDA.w $0403 : AND.b #$40 : BNE .notHeart
|
||||||
LDA #$07 ; give prize item
|
LDA.b #$07 ; give prize item
|
||||||
RTL
|
RTL
|
||||||
.notHeart
|
.notHeart
|
||||||
JSL.l DecrementItemCounter
|
JSL.l DecrementItemCounter
|
||||||
;LDA #$00 ; bullshit rupee farming in chest game
|
|
||||||
|
|
||||||
JSL GetRandomInt ; spam RNG until we stop getting the prize item
|
JSL GetRandomInt ; spam RNG until we stop getting the prize item
|
||||||
AND.b #$07 ; restrict values to 0-7
|
AND.b #$07 ; restrict values to 0-7
|
||||||
CMP #$07 : BNE + ; player got prize item AGAIN
|
CMP.b #$07 : BNE + ; player got prize item AGAIN
|
||||||
LDA.b #$00 ; give them money instead
|
LDA.b #$00 ; give them money instead
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FixChestCounterForChestGame:
|
FixChestCounterForChestGame:
|
||||||
JSL.l DecrementItemCounter
|
JSL.l DecrementItemCounter
|
||||||
JSL $0DBA71
|
JSL.l $0DBA71
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
RNG_Lanmolas1:
|
RNG_Lanmolas1:
|
||||||
@@ -45,12 +44,12 @@ RNG_Lanmolas1:
|
|||||||
RNG_Moldorm1:
|
RNG_Moldorm1:
|
||||||
LDA.b #$01 : BRA _rng_done
|
LDA.b #$01 : BRA _rng_done
|
||||||
RNG_Agahnim1:
|
RNG_Agahnim1:
|
||||||
LDA.b $A0 : CMP #$20 : BNE RNG_Agahnim2 ; Agah 1 and 2 use the same code, check which agah we're fighting and branch
|
LDA.b $A0 : CMP.b #$20 : BNE RNG_Agahnim2 ; Agah 1 and 2 use the same code, check which agah we're fighting and branch
|
||||||
LDA.b #$02
|
LDA.b #$02
|
||||||
JSL.l GetStaticRNG : PHA
|
JSL.l GetStaticRNG : PHA
|
||||||
LDA.l GanonAgahRNG : BEQ + ; check if blue balls are disabled
|
LDA.l GanonAgahRNG : BEQ + ; check if blue balls are disabled
|
||||||
PLA
|
PLA
|
||||||
ORA #$01 ; guarantee no blue ball
|
ORA.b #$01 ; guarantee no blue ball
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -77,7 +76,7 @@ RNG_Agahnim2:
|
|||||||
JSL.l GetStaticRNG : PHA
|
JSL.l GetStaticRNG : PHA
|
||||||
LDA.l GanonAgahRNG : BEQ + ; check if blue balls are disabled
|
LDA.l GanonAgahRNG : BEQ + ; check if blue balls are disabled
|
||||||
PLA
|
PLA
|
||||||
ORA #$01 ; guarantee no blue ball
|
ORA.b #$01 ; guarantee no blue ball
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -89,32 +88,31 @@ RNG_Ganon:
|
|||||||
RNG_Ganon_Extra_Warp:
|
RNG_Ganon_Extra_Warp:
|
||||||
LDA.b #$0E
|
LDA.b #$0E
|
||||||
JSL.l GetStaticRNG : PHA
|
JSL.l GetStaticRNG : PHA
|
||||||
LDA GanonAgahRNG : BEQ + ; check if warps are disabled
|
LDA.l GanonAgahRNG : BEQ + ; check if warps are disabled
|
||||||
PLA
|
PLA
|
||||||
AND #$FE ; set least significant bit to 0 to prevent teleport
|
AND.b #$FE ; set least significant bit to 0 to prevent teleport
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
RNG_Enemy_Drops:
|
RNG_Enemy_Drops:
|
||||||
LDA.l ProgressIndicator : CMP #$01 : BEQ + ; drops are static after uncle pickup & before rescuing zelda
|
LDA.l ProgressIndicator : CMP.b #$01 : BEQ + ; drops are static after uncle pickup & before rescuing zelda
|
||||||
JML GetRandomInt
|
JML GetRandomInt
|
||||||
+
|
+
|
||||||
LDA.b #$0F
|
LDA.b #$0F
|
||||||
_rng_done:
|
_rng_done:
|
||||||
JSL.l GetStaticRNG
|
JSL.l GetStaticRNG
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; In: A = RNG Index
|
; In: A = RNG Index
|
||||||
; Out: A = RNG Result
|
; Out: A = RNG Result
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_POINTERS = "$7F5200"
|
|
||||||
GetStaticRNG:
|
GetStaticRNG:
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
REP #$30 ; set 16-bit accumulator and index registers
|
REP #$30 ; set 16-bit accumulator and index registers
|
||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
ASL : TAX : LDA !RNG_POINTERS, X : INC : AND.w #$03FF : STA !RNG_POINTERS, X : TAX ; increment pointer and move value to X
|
ASL : TAX : LDA.l RNGPointers, X : INC : AND.w #$03FF : STA.l RNGPointers, X : TAX ; increment pointer and move value to X
|
||||||
LDA Static_RNG, X ; load RNG value
|
LDA.l Static_RNG, X ; load RNG value
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -123,10 +121,10 @@ InitRNGPointerTable:
|
|||||||
REP #$30 ; set 16-bit accumulator & index registers
|
REP #$30 ; set 16-bit accumulator & index registers
|
||||||
LDX.w #$0000
|
LDX.w #$0000
|
||||||
-
|
-
|
||||||
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
LDA.l .rngDefaults, X : STA.l RNGPointers, X : INX #2
|
||||||
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
LDA.l .rngDefaults, X : STA.l RNGPointers, X : INX #2
|
||||||
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
LDA.l .rngDefaults, X : STA.l RNGPointers, X : INX #2
|
||||||
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
LDA.l .rngDefaults, X : STA.l RNGPointers, X : INX #2
|
||||||
CPX.w #$001F : !BLT -
|
CPX.w #$001F : !BLT -
|
||||||
PLP : PLX
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -19,9 +19,6 @@ LoadRoomHook:
|
|||||||
NoCallback:
|
NoCallback:
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
!RL_TILE = 2
|
|
||||||
!RL_LINE = 128
|
|
||||||
|
|
||||||
macro setTilePointer(roomX, roomY, quadX, quadY)
|
macro setTilePointer(roomX, roomY, quadX, quadY)
|
||||||
; Left-to-right math. Should be equivalent to 0x7e2000+(roomX*2)+(roomY*128)+(quadX*64)+(quadY*4096)
|
; Left-to-right math. Should be equivalent to 0x7e2000+(roomX*2)+(roomY*128)+(quadX*64)+(quadY*4096)
|
||||||
LDX.w #<quadY>*32+<roomY>*2+<quadX>*32+<roomX>*2
|
LDX.w #<quadY>*32+<roomY>*2+<quadX>*32+<roomX>*2
|
||||||
@@ -36,15 +33,15 @@ macro writeTileAt(roomX, roomY, quadX, quadY)
|
|||||||
STA.l <quadY>*32+<roomY>*2+<quadX>*32+<roomX>*2+$7E2000
|
STA.l <quadY>*32+<roomY>*2+<quadX>*32+<roomX>*2+$7E2000
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
!BOMBOS_BORDER = #$08D0
|
!BOMBOS_BORDER = $08D0
|
||||||
!BOMBOS_ICON_1 = #$0CCA
|
!BOMBOS_ICON_1 = $0CCA
|
||||||
!BOMBOS_ICON_2 = #$0CCB
|
!BOMBOS_ICON_2 = $0CCB
|
||||||
!BOMBOS_ICON_3 = #$0CDA
|
!BOMBOS_ICON_3 = $0CDA
|
||||||
!BOMBOS_ICON_4 = #$0CDB
|
!BOMBOS_ICON_4 = $0CDB
|
||||||
macro DrawBombosPlatform(roomX, roomY, quadX, quadY)
|
macro DrawBombosPlatform(roomX, roomY, quadX, quadY)
|
||||||
REP #$30 ; 16 AXY
|
REP #$30 ; 16 AXY
|
||||||
%setTilePointer(<roomX>, <roomY>, <quadX>, <quadY>)
|
%setTilePointer(<roomX>, <roomY>, <quadX>, <quadY>)
|
||||||
LDA.w !BOMBOS_BORDER
|
LDA.w #!BOMBOS_BORDER
|
||||||
%writeTile()
|
%writeTile()
|
||||||
%writeTile()
|
%writeTile()
|
||||||
%writeTile()
|
%writeTile()
|
||||||
@@ -52,15 +49,15 @@ macro DrawBombosPlatform(roomX, roomY, quadX, quadY)
|
|||||||
|
|
||||||
%setTilePointer(<roomX>, <roomY>+1, <quadX>, <quadY>)
|
%setTilePointer(<roomX>, <roomY>+1, <quadX>, <quadY>)
|
||||||
%writeTile()
|
%writeTile()
|
||||||
LDA.w !BOMBOS_ICON_1 : %writeTile()
|
LDA.w #!BOMBOS_ICON_1 : %writeTile()
|
||||||
LDA.w !BOMBOS_ICON_2 : %writeTile()
|
LDA.w #!BOMBOS_ICON_2 : %writeTile()
|
||||||
LDA.w !BOMBOS_BORDER : %writeTile()
|
LDA.w #!BOMBOS_BORDER : %writeTile()
|
||||||
|
|
||||||
%setTilePointer(<roomX>, <roomY>+2, <quadX>, <quadY>)
|
%setTilePointer(<roomX>, <roomY>+2, <quadX>, <quadY>)
|
||||||
%writeTile()
|
%writeTile()
|
||||||
LDA.w !BOMBOS_ICON_3 : %writeTile()
|
LDA.w #!BOMBOS_ICON_3 : %writeTile()
|
||||||
LDA.w !BOMBOS_ICON_4 : %writeTile()
|
LDA.w #!BOMBOS_ICON_4 : %writeTile()
|
||||||
LDA.w !BOMBOS_BORDER : %writeTile()
|
LDA.w #!BOMBOS_BORDER : %writeTile()
|
||||||
|
|
||||||
%setTilePointer(<roomX>, <roomY>+3, <quadX>, <quadY>)
|
%setTilePointer(<roomX>, <roomY>+3, <quadX>, <quadY>)
|
||||||
%writeTile()
|
%writeTile()
|
||||||
|
|||||||
128
save.asm
128
save.asm
@@ -8,9 +8,9 @@ WriteSaveChecksumAndBackup:
|
|||||||
CLC : ADC.l ExtendedFileNameWRAM, X
|
CLC : ADC.l ExtendedFileNameWRAM, X
|
||||||
INX #2
|
INX #2
|
||||||
CPX.w #$0FFE : BNE -
|
CPX.w #$0FFE : BNE -
|
||||||
STA.b $00
|
STA.b Scrap00
|
||||||
LDA.w #$5A5A
|
LDA.w #$5A5A
|
||||||
SEC : SBC.b $00
|
SEC : SBC.b Scrap00
|
||||||
STA.l InverseChecksumSRAM
|
STA.l InverseChecksumSRAM
|
||||||
|
|
||||||
PHB
|
PHB
|
||||||
@@ -32,9 +32,9 @@ ValidateSRAM:
|
|||||||
CLC : ADC.l ExtendedFileNameSRAM, X
|
CLC : ADC.l ExtendedFileNameSRAM, X
|
||||||
INX #2
|
INX #2
|
||||||
CPX.w #$0FFE : BNE -
|
CPX.w #$0FFE : BNE -
|
||||||
STA.b $00
|
STA.b Scrap00
|
||||||
LDA.w #$5A5A
|
LDA.w #$5A5A
|
||||||
SEC : SBC.b $00
|
SEC : SBC.b Scrap00
|
||||||
CMP.l InverseChecksumSRAM : BEQ .goodchecksum
|
CMP.l InverseChecksumSRAM : BEQ .goodchecksum
|
||||||
LDX.w #$0000 : TXA : - ; Do the same for the backup save
|
LDX.w #$0000 : TXA : - ; Do the same for the backup save
|
||||||
CLC : ADC.l SaveBackupSRAM, X
|
CLC : ADC.l SaveBackupSRAM, X
|
||||||
@@ -44,9 +44,9 @@ ValidateSRAM:
|
|||||||
CLC : ADC.l SaveBackupSRAM+$500, X
|
CLC : ADC.l SaveBackupSRAM+$500, X
|
||||||
INX #2
|
INX #2
|
||||||
CPX.w #$0FFE : BNE -
|
CPX.w #$0FFE : BNE -
|
||||||
STA.b $00
|
STA.b Scrap00
|
||||||
LDA.w #$5A5A
|
LDA.w #$5A5A
|
||||||
SEC : SBC.b $00
|
SEC : SBC.b Scrap00
|
||||||
CMP.l SaveBackupSRAM+$4FE : BEQ +
|
CMP.l SaveBackupSRAM+$4FE : BEQ +
|
||||||
TDC : STA.l FileValiditySRAM ; Delete save by way of zeroing validity marker
|
TDC : STA.l FileValiditySRAM ; Delete save by way of zeroing validity marker
|
||||||
BRA .goodchecksum : +
|
BRA .goodchecksum : +
|
||||||
@@ -132,86 +132,86 @@ RTL
|
|||||||
CopyExtendedSaveFileToWRAM:
|
CopyExtendedSaveFileToWRAM:
|
||||||
PHA
|
PHA
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA.w $4300 : PHA ; preserve DMA parameters
|
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
||||||
LDA.w $4301 : PHA ; preserve DMA parameters
|
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
||||||
LDA.w $4302 : PHA ; preserve DMA parameters
|
LDA.w A1T0L : PHA ; preserve DMA parameters
|
||||||
LDA.w $4303 : PHA ; preserve DMA parameters
|
LDA.w A1T0H : PHA ; preserve DMA parameters
|
||||||
LDA.w $4304 : PHA ; preserve DMA parameters
|
LDA.w A1B0 : PHA ; preserve DMA parameters
|
||||||
LDA.w $4305 : PHA ; preserve DMA parameters
|
LDA.w DAS0L : PHA ; preserve DMA parameters
|
||||||
LDA.w $4306 : PHA ; preserve DMA parameters
|
LDA.w DAS0H : PHA ; preserve DMA parameters
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
STZ.w $4200 ; Disable NMI, V/H, joypad
|
STZ.w NMITIMEN ; Disable NMI, V/H, joypad
|
||||||
STZ.w $420C ; Disable HDMA
|
STZ.w HDMAEN ; Disable HDMA
|
||||||
LDA.b #$00 : STA.w $4300 ; set DMA transfer direction A -> B, bus A auto increment, single-byte mode
|
LDA.b #$00 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, single-byte mode
|
||||||
|
|
||||||
LDA.b #$80 : STA.w $4301 ; set bus B source to WRAM register
|
LDA.b #$80 : STA.w BBAD0 ; set bus B source to WRAM register
|
||||||
|
|
||||||
LDA.b #$00 : STA.w $2181 ; set WRAM register source address
|
LDA.b #$00 : STA.w WMADDL ; set WRAM register source address
|
||||||
LDA.b #$60 : STA.w $2182
|
LDA.b #$60 : STA.w WMADDH
|
||||||
LDA.b #$7F : STA.w $2183
|
LDA.b #$7F : STA.w WMADDB
|
||||||
|
|
||||||
STZ.w $4302 ; set bus A destination address to SRAM
|
STZ.w A1T0L ; set bus A destination address to SRAM
|
||||||
LDA.b #$05 : STA.w $4303
|
LDA.b #$05 : STA.w A1T0H
|
||||||
LDA.b #$70 : STA.w $4304
|
LDA.b #$70 : STA.w A1B0
|
||||||
|
|
||||||
LDA.b #$00 : STA.w $4305 ; set transfer size to 0x1000
|
LDA.b #$00 : STA.w DAS0L ; set transfer size to 0x1000
|
||||||
LDA.b #$10 : STA.w $4306 ; STZ $4307
|
LDA.b #$10 : STA.w DAS0H ; STZ DAS0B
|
||||||
|
|
||||||
LDA.b #$01 : STA.w $420B ; begin DMA transfer
|
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
||||||
LDA.b #$81 : STA.w $4200 ; Re-enable NMI and joypad
|
LDA.b #$81 : STA.w NMITIMEN ; Re-enable NMI and joypad
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PLA : STA.w $4306 ; restore DMA parameters
|
PLA : STA.w DAS0H ; restore DMA parameters
|
||||||
PLA : STA.w $4305 ; restore DMA parameters
|
PLA : STA.w DAS0L ; restore DMA parameters
|
||||||
PLA : STA.w $4304 ; restore DMA parameters
|
PLA : STA.w A1B0 ; restore DMA parameters
|
||||||
PLA : STA.w $4303 ; restore DMA parameters
|
PLA : STA.w A1T0H ; restore DMA parameters
|
||||||
PLA : STA.w $4302 ; restore DMA parameters
|
PLA : STA.w A1T0L ; restore DMA parameters
|
||||||
PLA : STA.w $4301 ; restore DMA parameters
|
PLA : STA.w BBAD0 ; restore DMA parameters
|
||||||
PLA : STA.w $4300 ; restore DMA parameters
|
PLA : STA.w DMAP0 ; restore DMA parameters
|
||||||
REP #$30
|
REP #$30
|
||||||
PLA
|
PLA
|
||||||
STA $7EC00D ; what we wrote over
|
STA.l $7EC00D ; what we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CopyExtendedWRAMSaveFileToSRAM:
|
CopyExtendedWRAMSaveFileToSRAM:
|
||||||
PHA
|
PHA
|
||||||
PHB
|
PHB
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA #$00 : PHA : PLB
|
LDA.b #$00 : PHA : PLB
|
||||||
LDA.w $4300 : PHA ; preserve DMA parameters
|
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
||||||
LDA.w $4301 : PHA ; preserve DMA parameters
|
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
||||||
LDA.w $4302 : PHA ; preserve DMA parameters
|
LDA.w A1T0L : PHA ; preserve DMA parameters
|
||||||
LDA.w $4303 : PHA ; preserve DMA parameters
|
LDA.w A1T0H : PHA ; preserve DMA parameters
|
||||||
LDA.w $4304 : PHA ; preserve DMA parameters
|
LDA.w A1B0 : PHA ; preserve DMA parameters
|
||||||
LDA.w $4305 : PHA ; preserve DMA parameters
|
LDA.w DAS0L : PHA ; preserve DMA parameters
|
||||||
LDA.w $4306 : PHA ; preserve DMA parameters
|
LDA.w DAS0H : PHA ; preserve DMA parameters
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
STZ.w $4200 ; Disable NMI, V/H, joypad
|
STZ.w NMITIMEN ; Disable NMI, V/H, joypad
|
||||||
STZ.w $420C ; Disable HDMA
|
STZ.w HDMAEN ; Disable HDMA
|
||||||
LDA.b #$80 : STA.w $4300 ; set DMA transfer direction B -> A, bus A auto increment, single-byte mode
|
LDA.b #$80 : STA.w DMAP0 ; set DMA transfer direction B -> A, bus A auto increment, single-byte mode
|
||||||
|
|
||||||
STA.w $4301 ; set bus B source to WRAM register
|
STA.w BBAD0 ; set bus B source to WRAM register
|
||||||
|
|
||||||
LDA.b #$00 : STA.w $2181 ; set WRAM register source address
|
LDA.b #$00 : STA.w WMADDL ; set WRAM register source address
|
||||||
LDA.b #$60 : STA.w $2182
|
LDA.b #$60 : STA.w WMADDH
|
||||||
LDA.b #$7F : STA.w $2183
|
LDA.b #$7F : STA.w WMADDB
|
||||||
|
|
||||||
STZ.w $4302 ; set bus A destination address to SRAM
|
STZ.w A1T0L ; set bus A destination address to SRAM
|
||||||
LDA.b #$05 : STA.w $4303
|
LDA.b #$05 : STA.w A1T0H
|
||||||
LDA.b #$70 : STA.w $4304
|
LDA.b #$70 : STA.w A1B0
|
||||||
|
|
||||||
LDA.b #$10 : STA.w $4305 ; set transfer size to 0xB00
|
LDA.b #$10 : STA.w DAS0L ; set transfer size to 0xB00
|
||||||
LDA.b #$0B : STA.w $4306 ; STZ $4307
|
LDA.b #$0B : STA.w DAS0H ; STZ DAS0B
|
||||||
|
|
||||||
LDA.b #$01 : STA.w $420B ; begin DMA transfer
|
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
||||||
LDA.b #$81 : STA.w $4200 ; Re-enable NMI and joypad
|
LDA.b #$81 : STA.w NMITIMEN; Re-enable NMI and joypad
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PLA : STA.w $4306 ; restore DMA parameters
|
PLA : STA.w DAS0H ; restore DMA parameters
|
||||||
PLA : STA.w $4305 ; restore DMA parameters
|
PLA : STA.w DAS0L ; restore DMA parameters
|
||||||
PLA : STA.w $4304 ; restore DMA parameters
|
PLA : STA.w A1B0 ; restore DMA parameters
|
||||||
PLA : STA.w $4303 ; restore DMA parameters
|
PLA : STA.w A1T0H ; restore DMA parameters
|
||||||
PLA : STA.w $4302 ; restore DMA parameters
|
PLA : STA.w A1T0L ; restore DMA parameters
|
||||||
PLA : STA.w $4301 ; restore DMA parameters
|
PLA : STA.w BBAD0 ; restore DMA parameters
|
||||||
PLA : STA.w $4300 ; restore DMA parameters
|
PLA : STA.w DMAP0 ; restore DMA parameters
|
||||||
REP #$30
|
REP #$30
|
||||||
PLB
|
PLB
|
||||||
PLA
|
PLA
|
||||||
|
|||||||
34
seedtag.asm
34
seedtag.asm
@@ -1,34 +0,0 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
; GenerateSeedTags
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;GenerateSeedTags:
|
|
||||||
; PHA : PHX : PHY : PHP
|
|
||||||
; REP #$20 ; set 16-bit accumulator
|
|
||||||
; LDA $00 : PHA
|
|
||||||
; LDA $02 : PHA
|
|
||||||
; LDA $04 : PHA
|
|
||||||
; LDA $06 : PHA
|
|
||||||
; JSL.l NameHash ; get the titlecard hashes
|
|
||||||
;
|
|
||||||
; LDA $00 : AND.w #$1F1F : STA $00 ; keep it under 0x20 or we'll run out of items
|
|
||||||
; LDA $02 : AND.w #$1F1F : STA $02
|
|
||||||
; LDA $04 : AND.w #$1F1F : STA $04
|
|
||||||
; LDA $06 : AND.w #$1F1F : STA $06
|
|
||||||
;
|
|
||||||
; REP #$30 ; set 8-bit accumulator & index registers
|
|
||||||
;
|
|
||||||
; LDY #$08
|
|
||||||
; -
|
|
||||||
;
|
|
||||||
;
|
|
||||||
; DEY : BNE -
|
|
||||||
;
|
|
||||||
;
|
|
||||||
; REP #20 ; set 16-bit accumulator
|
|
||||||
; PLA : STA $06
|
|
||||||
; PLA : STA $04
|
|
||||||
; PLA : STA $02
|
|
||||||
; PLA : STA $00
|
|
||||||
; PLP : PLY : PLX : PLA
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
@@ -6,13 +6,13 @@
|
|||||||
; $60 - $7E - Reserved
|
; $60 - $7E - Reserved
|
||||||
; $7F - RX Status
|
; $7F - RX Status
|
||||||
; $80 - $EF - TX Buffer
|
; $80 - $EF - TX Buffer
|
||||||
; $E0 - $FE - Reserved
|
; $F0 - $FE - Reserved
|
||||||
; $FF - TX Status
|
; $FF - TX Status
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Status Codes
|
; Status Codes
|
||||||
; #$00 - Idle
|
; $00 - Idle
|
||||||
; #$01 - Ready to Read
|
; $01 - Ready to Read
|
||||||
; #$FF - Busy
|
; $FF - Busy
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Service Indexes
|
; Service Indexes
|
||||||
; 0x00 - 0x04 - chests
|
; 0x00 - 0x04 - chests
|
||||||
@@ -21,80 +21,73 @@
|
|||||||
; 0xF2 - tablet/pedestal
|
; 0xF2 - tablet/pedestal
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Block Commands
|
; Block Commands
|
||||||
!SCM_WAIT = "#$00"
|
!SCM_WAIT = $00
|
||||||
|
|
||||||
!SCM_SEEN = "#$01"
|
!SCM_SEEN = $01
|
||||||
!SCM_SHOW = "#$02"
|
!SCM_SHOW = $02
|
||||||
!SCM_GET = "#$03"
|
!SCM_GET = $03
|
||||||
!SCM_GIVE = "#$04"
|
!SCM_GIVE = $04
|
||||||
!SCM_PROMPT = "#$05"
|
!SCM_PROMPT = $05
|
||||||
|
|
||||||
!SCM_AREACHG = "#$10"
|
!SCM_AREACHG = $10
|
||||||
!SCM_DUNGEON = "#$11"
|
!SCM_DUNGEON = $11
|
||||||
!SCM_DEATH = "#$12"
|
!SCM_DEATH = $12
|
||||||
!SCM_SAVEQUIT = "#$13"
|
!SCM_SAVEQUIT = $13
|
||||||
!SCM_FCREATE = "#$14"
|
!SCM_FCREATE = $14
|
||||||
!SCM_FLOAD = "#$15"
|
!SCM_FLOAD = $15
|
||||||
!SCM_FCDELETE = "#$16"
|
!SCM_FCDELETE = $16
|
||||||
!SCM_SPAWN = "#$17"
|
!SCM_SPAWN = $17
|
||||||
!SCM_PAUSE = "#$18"
|
!SCM_PAUSE = $18
|
||||||
|
|
||||||
!SCM_STALL = "#$70"
|
!SCM_STALL = $70
|
||||||
!SCM_RESUME = "#$71"
|
!SCM_RESUME = $71
|
||||||
|
|
||||||
!SCM_VERSION = "#$80"
|
!SCM_VERSION = $80
|
||||||
; ;--------------------------------------------------------------------------------
|
|
||||||
!RX_BUFFER = "$7F5300"
|
|
||||||
!RX_STATUS = "$7F537F"
|
|
||||||
;ServiceSequenceRx = $7EF4A0
|
|
||||||
!TX_BUFFER = "$7F5380"
|
|
||||||
!TX_STATUS = "$7F53FF"
|
|
||||||
;ServiceSequenceTx = $7EF4A0
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro ServiceRequestVersion()
|
macro ServiceRequestVersion()
|
||||||
LDA !TX_STATUS : BEQ + : CLC : RTL : + ; return fail if we don't have the lock
|
LDA.l TxStatus : BEQ + : CLC : RTL : + ; return fail if we don't have the lock
|
||||||
LDA.b #$01 : STA !TX_BUFFER+8 ; version
|
LDA.b #$01 : STA.l TxBuffer+8 ; version
|
||||||
LDA.b #$00 : STA !TX_BUFFER+9
|
LDA.b #$00 : STA.l TxBuffer+9
|
||||||
STA !TX_BUFFER+10
|
STA.l TxBuffer+10
|
||||||
STA !TX_BUFFER+11
|
STA.l TxBuffer+11
|
||||||
LDA.b !SCM_VERSION : STA !TX_BUFFER
|
LDA.b #!SCM_VERSION : STA.l TxBuffer
|
||||||
LDA #$01 : STA !TX_STATUS ; mark ready for reading
|
LDA.b #$01 : STA.l TxStatus ; mark ready for reading
|
||||||
SEC ; mark request as successful
|
SEC ; mark request as successful
|
||||||
RTL
|
RTL
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro ServiceRequestChest(type)
|
macro ServiceRequestChest(type)
|
||||||
LDA !TX_STATUS : BEQ + : CLC : RTL : + ; return fail if we don't have the lock
|
LDA.l TxStatus : BEQ + : CLC : RTL : + ; return fail if we don't have the lock
|
||||||
LDA $1B : STA !TX_BUFFER+8 ; indoor/outdoor
|
LDA.b $1B : STA.l TxBuffer+8 ; indoor/outdoor
|
||||||
BEQ +
|
BEQ +
|
||||||
LDA $A0 : STA !TX_BUFFER+9 ; roomid low
|
LDA.b $A0 : STA.l TxBuffer+9 ; roomid low
|
||||||
LDA $A1 : STA !TX_BUFFER+10 ; roomid high
|
LDA.b $A1 : STA.l TxBuffer+10 ; roomid high
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA $040A : STA !TX_BUFFER+9 ; area id
|
LDA.w $040A : STA.l TxBuffer+9 ; area id
|
||||||
LDA.b #$00 : STA !TX_BUFFER+10 ; protocol defines this as a ushort
|
LDA.b #$00 : STA.l TxBuffer+10 ; protocol defines this as a ushort
|
||||||
++
|
++
|
||||||
LDA $76 : !SUB #$58 : STA !TX_BUFFER+11 ; object index (type 2 only)
|
LDA.b $76 : !SUB #$58 : STA.l TxBuffer+11 ; object index (type 2 only)
|
||||||
LDA <type> : STA !TX_BUFFER ; item get
|
LDA.b #<type> : STA.l TxBuffer ; item get
|
||||||
LDA #$01 : STA !TX_STATUS ; mark ready for reading
|
LDA.b #$01 : STA.l TxStatus ; mark ready for reading
|
||||||
SEC ; mark request as successful
|
SEC ; mark request as successful
|
||||||
RTL
|
RTL
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro ServiceRequest(type,index)
|
macro ServiceRequest(type,index)
|
||||||
LDA !TX_STATUS : BEQ + : CLC : RTL : + ; return fail if we don't have the lock
|
LDA.l TxStatus : BEQ + : CLC : RTL : + ; return fail if we don't have the lock
|
||||||
LDA $1B : STA !TX_BUFFER+8 ; indoor/outdoor
|
LDA.b $1B : STA.l TxBuffer+8 ; indoor/outdoor
|
||||||
BEQ +
|
BEQ +
|
||||||
LDA $A0 : STA !TX_BUFFER+9 ; roomid low
|
LDA.b $A0 : STA.l TxBuffer+9 ; roomid low
|
||||||
LDA $A1 : STA !TX_BUFFER+10 ; roomid high
|
LDA.b $A1 : STA.l TxBuffer+10 ; roomid high
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA $040A : STA !TX_BUFFER+9 ; area id
|
LDA.w $040A : STA.l TxBuffer+9 ; area id
|
||||||
LDA.b #$00 : STA !TX_BUFFER+10 ; protocol defines this as a ushort
|
LDA.b #$00 : STA.l TxBuffer+10 ; protocol defines this as a ushort
|
||||||
++
|
++
|
||||||
LDA <index> : STA !TX_BUFFER+11 ; object index (type 2 only)
|
LDA.b #<index> : STA.l TxBuffer+11 ; object index (type 2 only)
|
||||||
LDA <type> : STA !TX_BUFFER ; item get
|
LDA.b #<type> : STA.l TxBuffer ; item get
|
||||||
LDA #$01 : STA !TX_STATUS ; mark ready for reading
|
LDA.b #$01 : STA.l TxStatus ; mark ready for reading
|
||||||
SEC ; mark request as successful
|
SEC ; mark request as successful
|
||||||
RTL
|
RTL
|
||||||
endmacro
|
endmacro
|
||||||
@@ -102,55 +95,55 @@ endmacro
|
|||||||
PollService:
|
PollService:
|
||||||
PHP
|
PHP
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA !RX_STATUS : DEC : BEQ + : PLP : CLC : RTL : + ; return fail if there's nothing to read
|
LDA.l RxStatus : DEC : BEQ + : PLP : CLC : RTL : + ; return fail if there's nothing to read
|
||||||
LDA #$FF : STA !RX_STATUS ; stop calls from recursing in
|
LDA.b #$FF : STA.l RxStatus ; stop calls from recursing in
|
||||||
LDA !RX_BUFFER : CMP.b !SCM_GIVE : BNE + ; give item
|
LDA.l RxBuffer : CMP.b #!SCM_GIVE : BNE + ; give item
|
||||||
PHY : LDA.l !RX_BUFFER+8 : TAY
|
PHY : LDA.l RxBuffer+8 : TAY
|
||||||
LDA.l !RX_BUFFER+9 : BNE ++
|
LDA.l RxBuffer+9 : BNE ++
|
||||||
JSL.l Link_ReceiveItem ; do something else
|
JSL.l Link_ReceiveItem ; do something else
|
||||||
PLY : BRA .done
|
PLY : BRA .done
|
||||||
++
|
++
|
||||||
JSL.l Link_ReceiveItem
|
JSL.l Link_ReceiveItem
|
||||||
PLY : BRA .done
|
PLY : BRA .done
|
||||||
+ : CMP.b !SCM_SHOW : BNE + ; show item
|
+ : CMP.b #!SCM_SHOW : BNE + ; show item
|
||||||
; you could check here if you're on the right screen, etc
|
; you could check here if you're on the right screen, etc
|
||||||
LDA.l !RX_BUFFER+12 : JSL.l PrepDynamicTile ; we could properly process the whole message but we're not going to
|
LDA.l RxBuffer+12 : JSL.l PrepDynamicTile ; we could properly process the whole message but we're not going to
|
||||||
BRA .done
|
BRA .done
|
||||||
+ : CMP.b !SCM_PROMPT : BNE + ; item prompt
|
+ : CMP.b #!SCM_PROMPT : BNE + ; item prompt
|
||||||
LDA.l !RX_BUFFER+8 : TAX
|
LDA.l RxBuffer+8 : TAX
|
||||||
LDA.l !RX_BUFFER+9 : STA $7E012E, X ; set sound effect, could possibly make this STA not-long
|
LDA.l RxBuffer+9 : STA.w $012E, X ; set sound effect
|
||||||
REP #$30 ; set 16-bit accumulator and index registers
|
REP #$30 ; set 16-bit accumulator and index registers
|
||||||
LDA !RX_BUFFER+10 : TAX
|
LDA.l RxBuffer+10 : TAX
|
||||||
LDA !RX_BUFFER+12
|
LDA.l RxBuffer+12
|
||||||
JSL.l DoToast
|
JSL.l DoToast
|
||||||
SEP #$30 ; set 8-bit accumulator and index registers
|
SEP #$30 ; set 8-bit accumulator and index registers
|
||||||
+ : CMP.b !SCM_VERSION : BNE + ; version
|
+ : CMP.b #!SCM_VERSION : BNE + ; version
|
||||||
%ServiceRequestVersion()
|
%ServiceRequestVersion()
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
LDA #$00 : STA !RX_STATUS ; release lock
|
LDA.l #$00 : STA.l RxStatus ; release lock
|
||||||
PLP
|
PLP
|
||||||
SEC ; mark request as successful
|
SEC ; mark request as successful
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemVisualServiceRequest_F0:
|
ItemVisualServiceRequest_F0:
|
||||||
%ServiceRequest(!SCM_SEEN, #$F0)
|
%ServiceRequest(!SCM_SEEN, $F0)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemVisualServiceRequest_F1:
|
ItemVisualServiceRequest_F1:
|
||||||
%ServiceRequest(!SCM_SEEN, #$F1)
|
%ServiceRequest(!SCM_SEEN, $F1)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemVisualServiceRequest_F2:
|
ItemVisualServiceRequest_F2:
|
||||||
%ServiceRequest(!SCM_SEEN, #$F2)
|
%ServiceRequest(!SCM_SEEN, $F2)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ChestItemServiceRequest:
|
ChestItemServiceRequest:
|
||||||
%ServiceRequestChest(!SCM_GET)
|
%ServiceRequestChest(!SCM_GET)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemGetServiceRequest_F0:
|
ItemGetServiceRequest_F0:
|
||||||
%ServiceRequest(!SCM_GET, #$F0)
|
%ServiceRequest(!SCM_GET, $F0)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemGetServiceRequest_F1:
|
ItemGetServiceRequest_F1:
|
||||||
%ServiceRequest(!SCM_GET, #$F1)
|
%ServiceRequest(!SCM_GET, $F1)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemGetServiceRequest_F2:
|
ItemGetServiceRequest_F2:
|
||||||
%ServiceRequest(!SCM_GET, #$F2)
|
%ServiceRequest(!SCM_GET, $F2)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
681
shopkeeper.asm
681
shopkeeper.asm
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
org $008A01 ; 0xA01 - Bank00.asm (LDA.b #$10 : STA $4304 : STA $4314 : STA $4324)
|
org $008A01 ; 0xA01 - Bank00.asm (LDA.b #$10 : STA $4304 : STA $4314 : STA $4324)
|
||||||
LDA $BC
|
LDA.b $BC
|
||||||
|
|
||||||
org $1BEDF9
|
org $1BEDF9
|
||||||
JSL SpriteSwap_Palette_ArmorAndGloves ;4bytes
|
JSL SpriteSwap_Palette_ArmorAndGloves ;4bytes
|
||||||
@@ -10,17 +10,15 @@ org $1BEE1B
|
|||||||
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
|
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
!SPRITE_SWAP = "$7F50CD"
|
!BANK_BASE = $29
|
||||||
;!STABLE_SCRATCH = "$7EC178"
|
|
||||||
!BANK_BASE = "#$29"
|
|
||||||
|
|
||||||
org $BF8000
|
org $BF8000
|
||||||
SwapSpriteIfNecessary:
|
SwapSpriteIfNecessary:
|
||||||
PHP
|
PHP
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA !SPRITE_SWAP : BEQ + : !ADD !BANK_BASE : CMP $BC : BEQ +
|
LDA.l SpriteSwapper : BEQ + : !ADD #!BANK_BASE : CMP.b $BC : BEQ +
|
||||||
STA $BC
|
STA.b $BC
|
||||||
STZ $0710 ; Set Normal Sprite NMI
|
STZ.w $0710 ; Set Normal Sprite NMI
|
||||||
JSL.l SpriteSwap_Palette_ArmorAndGloves_part_two
|
JSL.l SpriteSwap_Palette_ArmorAndGloves_part_two
|
||||||
+
|
+
|
||||||
PLP
|
PLP
|
||||||
@@ -29,17 +27,17 @@ RTL
|
|||||||
SpriteSwap_Palette_ArmorAndGloves:
|
SpriteSwap_Palette_ArmorAndGloves:
|
||||||
{
|
{
|
||||||
;DEDF9
|
;DEDF9
|
||||||
LDA !SPRITE_SWAP : BNE .continue
|
LDA.l SpriteSwapper : BNE .continue
|
||||||
LDA.b #$10 : STA $BC ; Load Original Sprite Location
|
LDA.b #$10 : STA.b $BC ; Load Original Sprite Location
|
||||||
REP #$21
|
REP #$21
|
||||||
LDA ArmorEquipment
|
LDA.l ArmorEquipment
|
||||||
JSL $1BEDFF ; Read Original Palette Code
|
JSL $1BEDFF ; Read Original Palette Code
|
||||||
RTL
|
RTL
|
||||||
.part_two
|
.part_two
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA !SPRITE_SWAP : BNE .continue
|
LDA.l SpriteSwapper : BNE .continue
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA GloveEquipment
|
LDA.l GloveEquipment
|
||||||
JSL $1BEE21 ; Read Original Palette Code
|
JSL $1BEE21 ; Read Original Palette Code
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -47,15 +45,13 @@ SpriteSwap_Palette_ArmorAndGloves:
|
|||||||
|
|
||||||
PHX : PHY : PHA
|
PHX : PHY : PHA
|
||||||
; Load armor palette
|
; Load armor palette
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
|
|
||||||
; Check what Link's armor value is.
|
; Check what Link's armor value is.
|
||||||
LDA ArmorEquipment : AND.w #$00FF : TAX
|
LDA.l ArmorEquipment : AND.w #$00FF : TAX
|
||||||
|
|
||||||
; (DEC06, X)
|
LDA.l $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA.b Scrap00
|
||||||
|
|
||||||
LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA $00
|
|
||||||
;replace D308 by 7000 and search
|
;replace D308 by 7000 and search
|
||||||
REP #$10 ; set 16-bit index registers
|
REP #$10 ; set 16-bit index registers
|
||||||
|
|
||||||
@@ -64,13 +60,13 @@ SpriteSwap_Palette_ArmorAndGloves:
|
|||||||
|
|
||||||
TXY : TAX
|
TXY : TAX
|
||||||
|
|
||||||
LDA.b $BC : AND #$00FF : STA $02
|
LDA.b $BC : AND.w #$00FF : STA.b Scrap02
|
||||||
|
|
||||||
.loop
|
.loop
|
||||||
|
|
||||||
LDA [$00] : STA $7EC300, X : STA $7EC500, X
|
LDA.b [Scrap00] : STA.l $7EC300, X : STA.l $7EC500, X
|
||||||
|
|
||||||
INC $00 : INC $00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
|
|
||||||
INX #2
|
INX #2
|
||||||
|
|
||||||
|
|||||||
10
sram.asm
10
sram.asm
@@ -395,8 +395,11 @@ RoomDataSRAM: ;
|
|||||||
skip $280 ;
|
skip $280 ;
|
||||||
OverworldEventDataSRAM: ;
|
OverworldEventDataSRAM: ;
|
||||||
skip $C0 ;
|
skip $C0 ;
|
||||||
EquipmentSRAM: skip 76 ;
|
EquipmentSRAM: skip 3 ; skip 76
|
||||||
InventoryTrackingSRAM: skip 2 ;
|
BombsEquipmentSRAM: skip 31 ; 343
|
||||||
|
DisplayRupeesSRAM: skip 21 ; 362
|
||||||
|
CurrentArrowsSRAM: skip 21 ; 377
|
||||||
|
InventoryTrackingSRAM: skip 2 ; 38C
|
||||||
BowTrackingSRAM: skip 2 ;
|
BowTrackingSRAM: skip 2 ;
|
||||||
skip 53 ;
|
skip 53 ;
|
||||||
ProgressIndicatorSRAM: skip 1 ;
|
ProgressIndicatorSRAM: skip 1 ;
|
||||||
@@ -659,6 +662,9 @@ endmacro
|
|||||||
%assertSRAM(RoomDataSRAM, $700000)
|
%assertSRAM(RoomDataSRAM, $700000)
|
||||||
%assertSRAM(OverworldEventDataSRAM, $700280)
|
%assertSRAM(OverworldEventDataSRAM, $700280)
|
||||||
%assertSRAM(EquipmentSRAM, $700340)
|
%assertSRAM(EquipmentSRAM, $700340)
|
||||||
|
%assertSRAM(BombsEquipmentSRAM, $700343)
|
||||||
|
%assertSRAM(DisplayRupeesSRAM, $700362)
|
||||||
|
%assertSRAM(CurrentArrowsSRAM, $700377)
|
||||||
%assertSRAM(InventoryTrackingSRAM, $70038C)
|
%assertSRAM(InventoryTrackingSRAM, $70038C)
|
||||||
%assertSRAM(BowTrackingSRAM, $70038E)
|
%assertSRAM(BowTrackingSRAM, $70038E)
|
||||||
%assertSRAM(ProgressIndicatorSRAM, $7003C5)
|
%assertSRAM(ProgressIndicatorSRAM, $7003C5)
|
||||||
|
|||||||
196
stats.asm
196
stats.asm
@@ -6,44 +6,44 @@
|
|||||||
; See sram.asm for adresses and documentation of stat values
|
; See sram.asm for adresses and documentation of stat values
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementBonkCounter:
|
IncrementBonkCounter:
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA BonkCounter : INC
|
LDA.l BonkCounter : INC
|
||||||
CMP.b #100 : BEQ + ; decimal 100
|
CMP.b #100 : BEQ + ; decimal 100
|
||||||
STA BonkCounter
|
STA.l BonkCounter
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
StatSaveCounter:
|
StatSaveCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA $10 : CMP.b #$17 : BNE + ; not a proper s&q, link probably died
|
LDA.b $10 : CMP.b #$17 : BNE + ; not a proper s&q, link probably died
|
||||||
LDA SaveQuitCounter : INC
|
LDA.l SaveQuitCounter : INC
|
||||||
CMP.b #100 : BEQ + ; decimal 100
|
CMP.b #100 : BEQ + ; decimal 100
|
||||||
STA SaveQuitCounter
|
STA.l SaveQuitCounter
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DecrementSaveCounter:
|
DecrementSaveCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA SaveQuitCounter : DEC : STA SaveQuitCounter
|
LDA.l SaveQuitCounter : DEC : STA.l SaveQuitCounter
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DungeonHoleWarpTransition:
|
DungeonHoleWarpTransition:
|
||||||
LDA $01C31F, X
|
LDA.l $01C31F, X
|
||||||
BRA StatTransitionCounter
|
BRA StatTransitionCounter
|
||||||
DungeonHoleEntranceTransition:
|
DungeonHoleEntranceTransition:
|
||||||
JSL EnableForceBlank
|
JSL EnableForceBlank
|
||||||
|
|
||||||
LDA.l SilverArrowsAutoEquip : AND.b #$02 : BEQ +
|
LDA.l SilverArrowsAutoEquip : AND.b #$02 : BEQ +
|
||||||
LDA $010E : CMP.b #$7B : BNE + ; skip unless falling to ganon's room
|
LDA $010E : CMP.b #$7B : BNE + ; skip unless falling to ganon's room
|
||||||
LDA BowTracking : AND.b #$40 : BEQ + ; skip if we don't have silvers
|
LDA.l BowTracking : AND.b #$40 : BEQ + ; skip if we don't have silvers
|
||||||
LDA BowEquipment : BEQ + ; skip if we have no bow
|
LDA.l BowEquipment : BEQ + ; skip if we have no bow
|
||||||
CMP.b #$03 : !BGE + ; skip if the bow is already silver
|
CMP.b #$03 : !BGE + ; skip if the bow is already silver
|
||||||
!ADD #$02 : STA BowEquipment ; increase bow to silver
|
!ADD #$02 : STA.l BowEquipment ; increase bow to silver
|
||||||
+
|
+
|
||||||
|
|
||||||
BRA StatTransitionCounter
|
BRA StatTransitionCounter
|
||||||
@@ -51,33 +51,33 @@ DungeonStairsTransition:
|
|||||||
JSL Dungeon_SaveRoomQuadrantData
|
JSL Dungeon_SaveRoomQuadrantData
|
||||||
BRA StatTransitionCounter
|
BRA StatTransitionCounter
|
||||||
DungeonExitTransition:
|
DungeonExitTransition:
|
||||||
LDA $7F50C7 : BEQ + ; ice physics
|
LDA.l IceModifier : BEQ + ; ice physics
|
||||||
JSL Player_HaltDashAttackLong
|
JSL Player_HaltDashAttackLong
|
||||||
LDA.b #$00 : STA $0301 ; stop item dashing
|
LDA.b #$00 : STA.w $0301 ; stop item dashing
|
||||||
+
|
+
|
||||||
LDA.b #$0F : STA $10 ; stop running through the transition
|
LDA.b #$0F : STA.b $10 ; stop running through the transition
|
||||||
StatTransitionCounter:
|
StatTransitionCounter:
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA ScreenTransitions : INC
|
LDA.l ScreenTransitions : INC
|
||||||
CMP.w #999 : BEQ + ; decimal 999
|
CMP.w #999 : BEQ + ; decimal 999
|
||||||
STA ScreenTransitions
|
STA.l ScreenTransitions
|
||||||
+
|
+
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementFlute:
|
IncrementFlute:
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA FluteCounter : INC : STA FluteCounter
|
LDA.l FluteCounter : INC : STA.l FluteCounter
|
||||||
+
|
+
|
||||||
JSL.l StatTransitionCounter ; also increment transition counter
|
JSL.l StatTransitionCounter ; also increment transition counter
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementSmallKeys:
|
IncrementSmallKeys:
|
||||||
STA CurrentSmallKeys ; thing we wrote over, write small key count
|
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||||
PHX
|
PHX
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
JSL AddInventory_incrementKeyLong
|
JSL AddInventory_incrementKeyLong
|
||||||
+
|
+
|
||||||
JSL.l UpdateKeys
|
JSL.l UpdateKeys
|
||||||
@@ -87,15 +87,15 @@ IncrementSmallKeys:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementSmallKeysNoPrimary:
|
IncrementSmallKeysNoPrimary:
|
||||||
STA CurrentSmallKeys ; thing we wrote over, write small key count
|
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||||
PHX
|
PHX
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
JSL AddInventory_incrementKeyLong
|
JSL AddInventory_incrementKeyLong
|
||||||
+
|
+
|
||||||
JSL.l UpdateKeys
|
JSL.l UpdateKeys
|
||||||
LDA $1B : BEQ + ; skip room check if outdoors
|
LDA.b $1B : BEQ + ; skip room check if outdoors
|
||||||
PHP : REP #$20 ; set 16-bit accumulator
|
PHP : REP #$20 ; set 16-bit accumulator
|
||||||
LDA $048E : CMP.w #$0087 : BNE ++ ; hera basement
|
LDA.w $048E : CMP.w #$0087 : BNE ++ ; hera basement
|
||||||
PLP : PHY : LDY.b #$24 : JSL.l FullInventoryExternal
|
PLP : PHY : LDY.b #$24 : JSL.l FullInventoryExternal
|
||||||
JSR CountChestKey : PLY : BRA +
|
JSR CountChestKey : PLY : BRA +
|
||||||
++
|
++
|
||||||
@@ -106,7 +106,7 @@ IncrementSmallKeysNoPrimary:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DecrementSmallKeys:
|
DecrementSmallKeys:
|
||||||
STA CurrentSmallKeys ; thing we wrote over, write small key count
|
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||||
JSL.l UpdateKeys
|
JSL.l UpdateKeys
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -116,31 +116,31 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountChestKey: ; called by neighbor functions
|
CountChestKey: ; called by neighbor functions
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
CPY #$24 : BEQ + ; small key for this dungeon - use $040C
|
CPY.b #$24 : BEQ + ; small key for this dungeon - use $040C
|
||||||
CPY #$A0 : !BLT .end ; Ignore most items
|
CPY.b #$A0 : !BLT .end ; Ignore most items
|
||||||
CPY #$AE : !BGE .end ; Ignore reserved key and generic key
|
CPY.b #$AE : !BGE .end ; Ignore reserved key and generic key
|
||||||
TYA : AND.B #$0F : BNE ++ ; If this is an HC key, instead count it as a sewers key
|
TYA : AND.B #$0F : BNE ++ ; If this is an HC key, instead count it as a sewers key
|
||||||
INC
|
INC
|
||||||
++ TAX : BRA .count ; use Key id instead of $040C (Keysanity)
|
++ TAX : BRA .count ; use Key id instead of $040C (Keysanity)
|
||||||
+ LDA $040C : LSR
|
+ LDA.w $040C : LSR
|
||||||
BNE +
|
BNE +
|
||||||
INC ; combines HC and Sewer counts
|
INC ; combines HC and Sewer counts
|
||||||
+ TAX
|
+ TAX
|
||||||
.count
|
.count
|
||||||
LDA DungeonCollectedKeys, X : INC : STA DungeonCollectedKeys, X
|
LDA.l DungeonCollectedKeys, X : INC : STA.l DungeonCollectedKeys, X
|
||||||
.end
|
.end
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountBonkItem: ; called from GetBonkItem in bookofmudora.asm
|
CountBonkItem: ; called from GetBonkItem in bookofmudora.asm
|
||||||
LDA $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte
|
LDA.b $A0 ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte
|
||||||
CMP #115 : BNE + ; Desert Bonk Key
|
CMP.b #115 : BNE + ; Desert Bonk Key
|
||||||
LDA.L BonkKey_Desert : BRA ++
|
LDA.l BonkKey_Desert : BRA ++
|
||||||
+ : CMP #140 : BNE + ; GTower Bonk Key
|
+ : CMP.b #140 : BNE + ; GTower Bonk Key
|
||||||
LDA.L BonkKey_GTower : BRA ++
|
LDA.l BonkKey_GTower : BRA ++
|
||||||
+ LDA.B #$24 ; default to small key
|
+ LDA.b #$24 ; default to small key
|
||||||
++
|
++
|
||||||
CMP #$24 : BNE +
|
CMP.b #$24 : BNE +
|
||||||
PHY
|
PHY
|
||||||
TAY : JSR CountChestKey
|
TAY : JSR CountChestKey
|
||||||
PLY
|
PLY
|
||||||
@@ -149,7 +149,7 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementAgahnim2Sword:
|
IncrementAgahnim2Sword:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
JSL AddInventory_incrementBossSwordLong
|
JSL AddInventory_incrementBossSwordLong
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -157,52 +157,52 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementDeathCounter:
|
IncrementDeathCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA CurrentHealth : BNE + ; link is still alive, skip
|
LDA.l CurrentHealth : BNE + ; link is still alive, skip
|
||||||
LDA DeathCounter : INC : STA DeathCounter
|
LDA.l DeathCounter : INC : STA.l DeathCounter
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementFairyRevivalCounter:
|
IncrementFairyRevivalCounter:
|
||||||
STA BottleContents, X ; thing we wrote over
|
STA.l BottleContents, X ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA FaerieRevivalCounter : INC : STA FaerieRevivalCounter
|
LDA.l FaerieRevivalCounter : INC : STA.l FaerieRevivalCounter
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementChestTurnCounter:
|
IncrementChestTurnCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA ChestTurnCounter : INC : STA ChestTurnCounter
|
LDA.l ChestTurnCounter : INC : STA.l ChestTurnCounter
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementChestCounter:
|
IncrementChestCounter:
|
||||||
LDA.b #$01 : STA $02E9 ; thing we wrote over
|
LDA.b #$01 : STA.w $02E9 ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA ChestsOpened : INC : STA ChestsOpened
|
LDA.l ChestsOpened : INC : STA.l ChestsOpened
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DecrementChestCounter:
|
DecrementChestCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA ChestsOpened : DEC : STA ChestsOpened
|
LDA.l ChestsOpened : DEC : STA.l ChestsOpened
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DecrementItemCounter:
|
DecrementItemCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA TotalItemCounter : DEC : STA TotalItemCounter
|
LDA.l TotalItemCounter : DEC : STA.l TotalItemCounter
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -211,7 +211,7 @@ RTL
|
|||||||
IncrementBigChestCounter:
|
IncrementBigChestCounter:
|
||||||
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
%BottomHalf(BigKeysBigChests)
|
%BottomHalf(BigKeysBigChests)
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -220,7 +220,7 @@ RTL
|
|||||||
IncrementDamageTakenCounter_Eight:
|
IncrementDamageTakenCounter_Eight:
|
||||||
STA.l CurrentHealth
|
STA.l CurrentHealth
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
REP #$21
|
REP #$21
|
||||||
LDA.l DamageCounter
|
LDA.l DamageCounter
|
||||||
ADC.w #$0008
|
ADC.w #$0008
|
||||||
@@ -233,7 +233,7 @@ IncrementDamageTakenCounter_Eight:
|
|||||||
|
|
||||||
IncrementDamageTakenCounter_Arb:
|
IncrementDamageTakenCounter_Arb:
|
||||||
PHP
|
PHP
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
REP #$21
|
REP #$21
|
||||||
LDA.b $00
|
LDA.b $00
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
@@ -251,7 +251,7 @@ IncrementMagicUseCounter:
|
|||||||
|
|
||||||
IncrementMagicUseCounterByrna:
|
IncrementMagicUseCounterByrna:
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
REP #$21
|
REP #$21
|
||||||
LDA.b $00
|
LDA.b $00
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
@@ -264,7 +264,7 @@ IncrementMagicUseCounterByrna:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
IncrementMagicUseCounterOne:
|
IncrementMagicUseCounterOne:
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l MagicCounter
|
LDA.l MagicCounter
|
||||||
INC
|
INC
|
||||||
@@ -276,21 +276,21 @@ IncrementMagicUseCounterOne:
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementOWMirror:
|
IncrementOWMirror:
|
||||||
PHA
|
PHA
|
||||||
LDA #$08 : STA $021B ; fail race game
|
LDA.b #$08 : STA.w $021B ; fail race game
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA CurrentWorld : BEQ + ; only do this for DW->LW
|
LDA.l CurrentWorld : BEQ + ; only do this for DW->LW
|
||||||
LDA OverworldMirrors : INC : STA OverworldMirrors
|
LDA.l OverworldMirrors : INC : STA.l OverworldMirrors
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
JMP StatTransitionCounter
|
JMP StatTransitionCounter
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementUWMirror:
|
IncrementUWMirror:
|
||||||
PHA
|
PHA
|
||||||
LDA.b #$00 : STA $7F5035 ; bandaid patch bug with mirroring away from text
|
LDA.b #$00 : STA.l $7F5035 ; bandaid patch bug with mirroring away from text
|
||||||
LDA StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
LDA $040C : CMP #$FF : BEQ + ; skip if we're in a cave or house
|
LDA $040C : CMP #$FF : BEQ + ; skip if we're in a cave or house
|
||||||
LDA UnderworldMirrors : INC : STA UnderworldMirrors
|
LDA.l UnderworldMirrors : INC : STA.l UnderworldMirrors
|
||||||
JSL.l StatTransitionCounter
|
JSL.l StatTransitionCounter
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -299,14 +299,14 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementSpentRupees:
|
IncrementSpentRupees:
|
||||||
DEC A : BPL .subtractRupees
|
DEC A : BPL .subtractRupees
|
||||||
LDA.w #$0000 : STA CurrentRupees
|
LDA.w #$0000 : STA.l CurrentRupees
|
||||||
RTL
|
RTL
|
||||||
.subtractRupees
|
.subtractRupees
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
LDA StatsLocked : AND.w #$00FF : BNE +
|
LDA.l StatsLocked : AND.w #$00FF : BNE +
|
||||||
LDA RupeesSpent : INC
|
LDA.l RupeesSpent : INC
|
||||||
CMP.w #9999 : BEQ + ; decimal 9999
|
CMP.w #9999 : BEQ + ; decimal 9999
|
||||||
STA RupeesSpent
|
STA.l RupeesSpent
|
||||||
+
|
+
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -314,53 +314,45 @@ RTL
|
|||||||
IndoorTileTransitionCounter:
|
IndoorTileTransitionCounter:
|
||||||
JMP StatTransitionCounter
|
JMP StatTransitionCounter
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!REDRAW = "$7F5000"
|
|
||||||
IndoorSubtileTransitionCounter:
|
IndoorSubtileTransitionCounter:
|
||||||
LDA.b #$01 : STA !REDRAW ; set redraw flag for items
|
LDA.b #$01 : STA.l RedrawFlag ; set redraw flag for items
|
||||||
STZ $0646 ; stuff we wrote over
|
STZ.w $0646 ; stuff we wrote over
|
||||||
STZ $0642
|
STZ.w $0642
|
||||||
JMP StatTransitionCounter
|
JMP StatTransitionCounter
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!BOSS_KILLS = "$7F5037"
|
|
||||||
!NONCHEST_COUNTER = "$7F503E"
|
|
||||||
|
|
||||||
!LAG_TIME = "$7F5038"
|
|
||||||
|
|
||||||
!RUPEES_COLLECTED = "$7F503C"
|
|
||||||
|
|
||||||
StatsFinalPrep:
|
StatsFinalPrep:
|
||||||
PHA : PHX : PHP
|
PHA : PHX : PHP
|
||||||
SEP #$30 ; set 8-bit accumulator and index registers
|
SEP #$30 ; set 8-bit accumulator and index registers
|
||||||
|
|
||||||
LDA StatsLocked : BNE .ramPostOnly
|
LDA.l StatsLocked : BNE .ramPostOnly
|
||||||
INC : STA StatsLocked
|
INC : STA.l StatsLocked
|
||||||
|
|
||||||
JSL.l AddInventory_incrementBossSwordLong
|
JSL.l AddInventory_incrementBossSwordLong
|
||||||
|
|
||||||
LDA HighestMail : INC : STA HighestMail ; add green mail to mail count
|
LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count
|
||||||
|
|
||||||
LDA ScreenTransitions : DEC : STA ScreenTransitions ; remove extra transition from exiting gtower via duck
|
LDA.l ScreenTransitions : DEC : STA.l ScreenTransitions ; remove extra transition from exiting gtower via duck
|
||||||
|
|
||||||
.ramPostOnly
|
.ramPostOnly
|
||||||
LDA SwordBossKills : LSR #4 : !ADD SwordBossKills : STA !BOSS_KILLS
|
LDA.l SwordBossKills : LSR #4 : !ADD SwordBossKills : STA.l BossKills
|
||||||
LDA SwordBossKills+1 : LSR #4 : !ADD SwordBossKills+1 : !ADD !BOSS_KILLS : AND #$0F : STA !BOSS_KILLS
|
LDA.l SwordBossKills+1 : LSR #4 : !ADD SwordBossKills+1 : !ADD BossKills : AND.b #$0F : STA.l BossKills
|
||||||
|
|
||||||
LDA NMIFrames : !SUB LoopFrames : STA !LAG_TIME
|
LDA.l NMIFrames : !SUB LoopFrames : STA.l LagTime
|
||||||
LDA NMIFrames+1 : SBC LoopFrames+1 : STA !LAG_TIME+1
|
LDA.l NMIFrames+1 : SBC LoopFrames+1 : STA.l LagTime+1
|
||||||
LDA NMIFrames+2 : SBC LoopFrames+2 : STA !LAG_TIME+2
|
LDA.l NMIFrames+2 : SBC LoopFrames+2 : STA.l LagTime+2
|
||||||
LDA NMIFrames+3 : SBC LoopFrames+3 : STA !LAG_TIME+3
|
LDA.l NMIFrames+3 : SBC LoopFrames+3 : STA.l LagTime+3
|
||||||
|
|
||||||
LDA RupeesSpent : !ADD DisplayRupees : STA !RUPEES_COLLECTED
|
LDA.l RupeesSpent : !ADD DisplayRupees : STA.l RupeesCollected
|
||||||
LDA RupeesSpent+1 : ADC DisplayRupees+1 : STA !RUPEES_COLLECTED+1
|
LDA.l RupeesSpent+1 : ADC DisplayRupees+1 : STA.l RupeesCollected+1
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA TotalItemCounter : !SUB ChestsOpened : STA !NONCHEST_COUNTER
|
LDA.l TotalItemCounter : !SUB ChestsOpened : STA.l NonChestCounter
|
||||||
|
|
||||||
.done
|
.done
|
||||||
PLP : PLX : PLA
|
PLP : PLX : PLA
|
||||||
LDA.b #$19 : STA $10 ; thing we wrote over, load triforce room
|
LDA.b #$19 : STA.b $10 ; thing we wrote over, load triforce room
|
||||||
STZ $11
|
STZ.b $11
|
||||||
STZ $B0
|
STZ.b $B0
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Notes:
|
; Notes:
|
||||||
|
|||||||
1311
stats/credits.asm
Executable file → Normal file
1311
stats/credits.asm
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,752 +0,0 @@
|
|||||||
;===================================================================================================
|
|
||||||
; LEAVE THIS HERE FOR PHP WRITES
|
|
||||||
;===================================================================================================
|
|
||||||
table "creditscharmapbighi.txt"
|
|
||||||
YourSpriteCreditsHi:
|
|
||||||
db 2
|
|
||||||
db 55
|
|
||||||
db " " ; $238002
|
|
||||||
|
|
||||||
table "creditscharmapbiglo.txt"
|
|
||||||
YourSpriteCreditsLo:
|
|
||||||
db 2
|
|
||||||
db 55
|
|
||||||
db " " ; $238020
|
|
||||||
|
|
||||||
;===================================================================================================
|
|
||||||
|
|
||||||
CreditsLineTable:
|
|
||||||
fillword CreditsLineBlank : fill 800
|
|
||||||
|
|
||||||
;===================================================================================================
|
|
||||||
|
|
||||||
!CLINE = -1
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
macro smallcredits(text, color)
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
table "creditscharmapsmall_<color>.txt"
|
|
||||||
|
|
||||||
?line:
|
|
||||||
db (32-(?end-?text))/2
|
|
||||||
db 2*(?end-?text)-1
|
|
||||||
?text:
|
|
||||||
db "<text>"
|
|
||||||
?end:
|
|
||||||
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw ?line
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
|
||||||
macro bigcredits(text)
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
table "creditscharmapbighi.txt"
|
|
||||||
|
|
||||||
?line_top:
|
|
||||||
db (32-(?end-?text))/2
|
|
||||||
db 2*(?end-?text)-1
|
|
||||||
?text:
|
|
||||||
db "<text>"
|
|
||||||
?end:
|
|
||||||
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw ?line_top
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
|
|
||||||
table "creditscharmapbiglo.txt"
|
|
||||||
?line_bottom:
|
|
||||||
db (32-(?end-?text))/2
|
|
||||||
db 2*(?end-?text)-1
|
|
||||||
db "<text>"
|
|
||||||
|
|
||||||
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw ?line_bottom
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
macro bigcreditsleft(text)
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
table "creditscharmapbighi.txt"
|
|
||||||
|
|
||||||
?line_top:
|
|
||||||
db 2
|
|
||||||
db 2*(?end-?text)-1
|
|
||||||
?text:
|
|
||||||
db "<text>"
|
|
||||||
?end:
|
|
||||||
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw ?line_top
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
|
|
||||||
table "creditscharmapbiglo.txt"
|
|
||||||
?line_bottom:
|
|
||||||
db 2
|
|
||||||
db 2*(?end-?text)-1
|
|
||||||
db "<text>"
|
|
||||||
|
|
||||||
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw ?line_bottom
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
macro emptyline()
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw CreditsEmptyLine
|
|
||||||
pullpc
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro blankline()
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw CreditsLineBlank
|
|
||||||
pullpc
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro addarbline(l)
|
|
||||||
!CLINE #= !CLINE+1
|
|
||||||
pushpc
|
|
||||||
org CreditsLineTable+!CLINE+!CLINE : dw <l>
|
|
||||||
pullpc
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
;===================================================================================================
|
|
||||||
|
|
||||||
CreditsEmptyLine:
|
|
||||||
db $00, $01, $9F
|
|
||||||
|
|
||||||
CreditsLineBlank:
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%smallcredits("ORIGINAL GAME STAFF", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("EXECUTIVE PRODUCER", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("HIROSHI YAMAUCHI")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("PRODUCER", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SHIGERU MIYAMOTO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("DIRECTOR", "red")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TAKASHI TEZUKA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("SCRIPT WRITER", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KENSUKE TANABE")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("ASSISTANT DIRECTORS", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YASUHISA YAMAMURA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YOICHI YAMADA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("SCREEN GRAPHICS DESIGNERS", "green")
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
|
|
||||||
%smallcredits("OBJECT DESIGNERS", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SOICHIRO TOMITA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TAKAYA IMAMURA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("BACK GROUND DESIGNERS", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("MASANAO ARIMOTO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TSUYOSHI WATANABE")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("PROGRAM DIRECTOR", "red")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TOSHIHIKO NAKAGO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("MAIN PROGRAMMER", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YASUNARI SOEJIMA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("OBJECT PROGRAMMER", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KAZUAKI MORITA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("PROGRAMMERS", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TATSUO NISHIYAMA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YUICHI YAMAMOTO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YOSHIHIRO NOMOTO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("EIJI NOTO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SATORU TAKAHATA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TOSHIO IWAWAKI")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SHIGEHIRO KASAMATSU")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YASUNARI NISHIDA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("SOUND COMPOSER", "red")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KOJI KONDO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("COORDINATORS", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KEIZO KATO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TAKAO SHIMIZU")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("PRINTED ART WORK", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YOICHI KOTABE")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("HIDEKI FUJII")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YOSHIAKI KOIZUMI")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YASUHIRO SAKAI")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TOMOAKI KUROUME")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("SPECIAL THANKS TO", "red")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("NOBUO OKAJIMA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("YASUNORI TAKETANI")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KIYOSHI KODA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("TAKAMITSU KUZUHARA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("HIRONOBU KAKUI")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SHIGEKI YAMASHIRO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
%smallcredits("RANDOMIZER CONTRIBUTORS", "red")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("ITEM RANDOMIZER", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KATDEVSGAMES VEETORP")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("CHRISTOSOWEN DESSYREQT")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SMALLHACKER SYNACK")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("ENTRANCE RANDOMIZER", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("AMAZINGAMPHAROS LLCOOLDAVE")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KEVINCATHCART CASSIDYMOEN")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("ENEMY RANDOMIZER", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("ZARBY89 SOSUKE3")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("ENDEROFGAMES")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("DOOR RANDOMIZER", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("AERINON COMPILING")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("FESTIVE RANDOMIZER", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("KAN TOTAL")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("CATOBAT DINSAPHIR")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("SPRITE DEVELOPMENT", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("MIKETRETHEWEY IBAZLY")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%bigcredits("FISH_WAFFLE64 KRELBEL")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("ACHY ARTHEAU")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("GLAN TWROXAS")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("PLAGUEDONE TARTHORON")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("YOUR SPRITE BY", "yellow")
|
|
||||||
|
|
||||||
%addarbline(YourSpriteCreditsHi)
|
|
||||||
%addarbline(YourSpriteCreditsLo)
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("MSU SUPPORT", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("QWERTYMODO")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("PALETTE SHUFFLER", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("NELSON AKA SWR")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("WEBSITE LOGO", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("PLEASURE")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("SPECIAL THANKS", "red")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SUPERSKUJ EVILASH25")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("MYRAMONG JOSHRTA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("WALKINGEYE MATHONNAPKINS")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("MICHAELK FOUTON")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("BONTA EMOSARU")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("PINKUS YUZUHARA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("SAKURATSUBASA")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("AND...")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("THE ALTTP RANDOMIZER COMMUNITY")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("COMMUNITY DISCORD", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcredits("HTTPS://ALTTPR.COM/DISCORD")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
|
|
||||||
;===================================================================================================
|
|
||||||
|
|
||||||
print "Credits line number: !CLINE | Expected: 302"
|
|
||||||
|
|
||||||
if !CLINE > 302
|
|
||||||
error "Too many credits lines. !CLINE > 302"
|
|
||||||
|
|
||||||
elseif !CLINE < 302
|
|
||||||
warn "Too few credits lines. !CLINE < 302; Adding additional empties for alignment."
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
; Set line always to line up with stats
|
|
||||||
!CLINE #= 302
|
|
||||||
|
|
||||||
;===================================================================================================
|
|
||||||
|
|
||||||
%smallcredits("THE IMPORTANT STUFF", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%smallcredits("TIME FOUND", "green")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("FIRST SWORD")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("PEGASUS BOOTS")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("FLUTE")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("MIRROR")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%smallcredits("BOSS KILLS", "yellow")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("SWORDLESS /13")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("FIGHTER'S SWORD /13")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("MASTER SWORD /13")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("TEMPERED SWORD /13")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("GOLD SWORD /13")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%smallcredits("GAME STATS", "red")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("DAMAGE TAKEN")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("MAGIC USED")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("BONKS")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("SAVE AND QUITS")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("DEATHS")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("FAERIE REVIVALS")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("TOTAL MENU TIME")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("TOTAL LAG TIME")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%bigcreditsleft("COLLECTION RATE /216")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%bigcreditsleft("TOTAL TIME")
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
!FIRST_SWORD_X = 19
|
|
||||||
!FIRST_SWORD_Y = 310
|
|
||||||
!PEGASUS_BOOTS_X = 19
|
|
||||||
!PEGASUS_BOOTS_Y = 313
|
|
||||||
!FLUTE_X = 19
|
|
||||||
!FLUTE_Y = 316
|
|
||||||
!MIRROR_X = 19
|
|
||||||
!MIRROR_Y = 319
|
|
||||||
!SWORDLESS_X = 23
|
|
||||||
!SWORDLESS_Y = 327
|
|
||||||
!FIGHTERS_SWORD_X = 23
|
|
||||||
!FIGHTERS_SWORD_Y = 330
|
|
||||||
!MASTER_SWORD_X = 23
|
|
||||||
!MASTER_SWORD_Y = 333
|
|
||||||
!TEMPERED_SWORD_X = 23
|
|
||||||
!TEMPERED_SWORD_Y = 336
|
|
||||||
!GOLD_SWORD_X = 23
|
|
||||||
!GOLD_SWORD_Y = 339
|
|
||||||
!DAMAGETAKEN_X = 26
|
|
||||||
!DAMAGETAKEN_Y = 346
|
|
||||||
!MAGICUSED_X = 26
|
|
||||||
!MAGICUSED_Y = 349
|
|
||||||
!BONKS_X = 26
|
|
||||||
!BONKS_Y = 352
|
|
||||||
!SAVE_AND_QUITS_X = 26
|
|
||||||
!SAVE_AND_QUITS_Y = 355
|
|
||||||
!DEATHS_X = 26
|
|
||||||
!DEATHS_Y = 358
|
|
||||||
!FAERIE_REVIVALS_X = 26
|
|
||||||
!FAERIE_REVIVALS_Y = 361
|
|
||||||
!TOTAL_MENU_TIME_X = 19
|
|
||||||
!TOTAL_MENU_TIME_Y = 364
|
|
||||||
!TOTAL_LAG_TIME_X = 19
|
|
||||||
!TOTAL_LAG_TIME_Y = 367
|
|
||||||
!COLLECTION_RATE_X = 22
|
|
||||||
!COLLECTION_RATE_Y = 380
|
|
||||||
!TOTAL_TIME_X = 19
|
|
||||||
!TOTAL_TIME_Y = 383
|
|
||||||
330
stats/main.asm
330
stats/main.asm
@@ -6,7 +6,7 @@ lorom
|
|||||||
!BGE = "BCS"
|
!BGE = "BCS"
|
||||||
|
|
||||||
org $238000
|
org $238000
|
||||||
incsrc stats/creditsnew.asm
|
incsrc stats/credits.asm
|
||||||
|
|
||||||
FontGfx:
|
FontGfx:
|
||||||
if !FEATURE_NEW_TEXT
|
if !FEATURE_NEW_TEXT
|
||||||
@@ -17,28 +17,27 @@ endif
|
|||||||
FontGfxEnd:
|
FontGfxEnd:
|
||||||
|
|
||||||
; Custom addresses. Most are arbitrary. Feel free to make sure they're okay or moving them elsewhere within ZP
|
; Custom addresses. Most are arbitrary. Feel free to make sure they're okay or moving them elsewhere within ZP
|
||||||
!CreditsPtr = $7C ; 3 bytes
|
CreditsPtr = $7C ; 3 bytes
|
||||||
!Temp = $B3 ; 2 bytes
|
Temp = $B3 ; 2 bytes
|
||||||
!StatsBottom = $B5 ; 2 bytes
|
StatsBottom = $B5 ; 2 bytes
|
||||||
!StatsPtr = $B7 ; 3 bytes
|
StatsPtr = $B7 ; 3 bytes
|
||||||
!ValueLow = $BA ; 2 bytes
|
ValueLow = $BA ; 2 bytes
|
||||||
!ValueHigh = $BC ; 2 bytes
|
ValueHigh = $BC ; 2 bytes
|
||||||
!Hours = $72 ; 2 bytes
|
Hours = $72 ; 2 bytes
|
||||||
!Minutes = $74 ; 2 bytes
|
Minutes = $74 ; 2 bytes
|
||||||
!Seconds = $76 ; 2 bytes
|
Seconds = $76 ; 2 bytes
|
||||||
!RemoveZero = $78 ; 2 bytes
|
RemoveZero = $78 ; 2 bytes
|
||||||
|
|
||||||
|
|
||||||
; Original addresses
|
; Original addresses
|
||||||
!LineNumber = $CA ; 2 bytes
|
LineNumber = $CA ; 2 bytes
|
||||||
|
|
||||||
PreparePointer:
|
PreparePointer:
|
||||||
LDA.w #$2300
|
LDA.w #$2300
|
||||||
STA.b !CreditsPtr+1
|
STA.b CreditsPtr+1
|
||||||
LDA.w #CreditsLineTable
|
LDA.w #CreditsLineTable
|
||||||
STA.b !CreditsPtr
|
STA.b CreditsPtr
|
||||||
LDA [!CreditsPtr],Y
|
LDA.b [CreditsPtr],Y
|
||||||
STA.b !CreditsPtr
|
STA.b CreditsPtr
|
||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -84,30 +83,21 @@ BitMasks:
|
|||||||
dw $3FFF
|
dw $3FFF
|
||||||
dw $7FFF
|
dw $7FFF
|
||||||
|
|
||||||
macro AddStat(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
|
||||||
db <xPos><<2|<type><<9|<lineNumber>>>8
|
|
||||||
db <lineNumber>
|
|
||||||
db <bits><<4|<shiftRight>
|
|
||||||
db <digits><<5
|
|
||||||
db $00
|
|
||||||
dl <address>
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro StripeStart(xPos, length)
|
macro StripeStart(xPos, length)
|
||||||
LDA $C8
|
LDA.b $C8
|
||||||
CLC
|
CLC
|
||||||
ADC.w #<xPos>
|
ADC.w #<xPos>
|
||||||
XBA
|
XBA
|
||||||
STA $1002,x
|
STA.w $1002,x
|
||||||
|
|
||||||
LDA.w #<length>*2-1
|
LDA.w #<length>*2-1
|
||||||
XBA
|
XBA
|
||||||
LDA #$0500
|
LDA.w #$0500
|
||||||
STA $1004,x
|
STA.w $1004,x
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
macro StripeTile()
|
macro StripeTile()
|
||||||
STA $1006,x
|
STA.w $1006,x
|
||||||
INX
|
INX
|
||||||
INX
|
INX
|
||||||
endmacro
|
endmacro
|
||||||
@@ -123,27 +113,27 @@ HexToDecStats:
|
|||||||
PHA
|
PHA
|
||||||
PHA
|
PHA
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
STA $7F5003 : STA $7F5005 : STA $7F5006 ; clear digit storage
|
STA.l $7F5003 : STA.l $7F5005 : STA.l $7F5006 ; clear digit storage
|
||||||
PLA
|
PLA
|
||||||
-
|
-
|
||||||
CMP.w #10000 : !BLT +
|
CMP.w #10000 : !BLT +
|
||||||
PHA : SEP #$20 : LDA $7F5003 : INC : STA $7F5003 : REP #$20 : PLA
|
PHA : SEP #$20 : LDA.l $7F5003 : INC : STA.l $7F5003 : REP #$20 : PLA
|
||||||
!SUB.w #10000 : BRA -
|
!SUB.w #10000 : BRA -
|
||||||
+ -
|
+ -
|
||||||
CMP.w #1000 : !BLT +
|
CMP.w #1000 : !BLT +
|
||||||
PHA : SEP #$20 : LDA $7F5004 : INC : STA $7F5004 : REP #$20 : PLA
|
PHA : SEP #$20 : LDA.l $7F5004 : INC : STA.l $7F5004 : REP #$20 : PLA
|
||||||
!SUB.w #1000 : BRA -
|
!SUB.w #1000 : BRA -
|
||||||
+ -
|
+ -
|
||||||
CMP.w #100 : !BLT +
|
CMP.w #100 : !BLT +
|
||||||
PHA : SEP #$20 : LDA $7F5005 : INC : STA $7F5005 : REP #$20 : PLA
|
PHA : SEP #$20 : LDA.l $7F5005 : INC : STA.l $7F5005 : REP #$20 : PLA
|
||||||
!SUB.w #100 : BRA -
|
!SUB.w #100 : BRA -
|
||||||
+ -
|
+ -
|
||||||
CMP.w #10 : !BLT +
|
CMP.w #10 : !BLT +
|
||||||
PHA : SEP #$20 : LDA $7F5006 : INC : STA $7F5006 : REP #$20 : PLA
|
PHA : SEP #$20 : LDA.l $7F5006 : INC : STA.l $7F5006 : REP #$20 : PLA
|
||||||
!SUB.w #10 : BRA -
|
!SUB.w #10 : BRA -
|
||||||
+ -
|
+ -
|
||||||
CMP.w #1 : !BLT +
|
CMP.w #1 : !BLT +
|
||||||
PHA : SEP #$20 : LDA $7F5007 : INC : STA $7F5007 : REP #$20 : PLA
|
PHA : SEP #$20 : LDA.l $7F5007 : INC : STA.l $7F5007 : REP #$20 : PLA
|
||||||
!SUB.w #1 : BRA -
|
!SUB.w #1 : BRA -
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
@@ -151,13 +141,13 @@ RTL
|
|||||||
|
|
||||||
LastHexDigit:
|
LastHexDigit:
|
||||||
TYA
|
TYA
|
||||||
AND #$000F
|
AND.w #$000F
|
||||||
PHA
|
PHA
|
||||||
TYA
|
TYA
|
||||||
LSR #4
|
LSR #4
|
||||||
TAY
|
TAY
|
||||||
CLC
|
CLC
|
||||||
LDA !StatsBottom
|
LDA.b StatsBottom
|
||||||
BNE +
|
BNE +
|
||||||
; Upper half
|
; Upper half
|
||||||
PLA
|
PLA
|
||||||
@@ -172,18 +162,18 @@ FindLine:
|
|||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
|
|
||||||
- LDA.w CreditsStats,y
|
- LDA.w CreditsStats,y
|
||||||
STZ !StatsBottom
|
STZ.b StatsBottom
|
||||||
CMP #$FFFF
|
CMP #$FFFF
|
||||||
BEQ .noLine
|
BEQ .noLine
|
||||||
|
|
||||||
XBA
|
XBA
|
||||||
AND #$01FF
|
AND.w #$01FF
|
||||||
CMP !LineNumber
|
CMP.b LineNumber
|
||||||
BEQ .lineFound
|
BEQ .lineFound
|
||||||
|
|
||||||
INC
|
INC
|
||||||
INC !StatsBottom
|
INC.b StatsBottom
|
||||||
CMP !LineNumber
|
CMP.b LineNumber
|
||||||
BEQ .lineFound
|
BEQ .lineFound
|
||||||
|
|
||||||
INY #8
|
INY #8
|
||||||
@@ -203,26 +193,26 @@ FindLine:
|
|||||||
!MAX_FRAME_COUNT = 59*60+59*60+59*60+99
|
!MAX_FRAME_COUNT = 59*60+59*60+59*60+99
|
||||||
|
|
||||||
macro CountUnits(framesPerUnit, unitCounter)
|
macro CountUnits(framesPerUnit, unitCounter)
|
||||||
STZ <unitCounter>
|
STZ.b <unitCounter>
|
||||||
?loop:
|
?loop:
|
||||||
LDA !ValueLow
|
LDA.b ValueLow
|
||||||
SEC
|
SEC
|
||||||
SBC.w #<framesPerUnit>
|
SBC.w #<framesPerUnit>
|
||||||
STA !Temp
|
STA.b Temp
|
||||||
LDA !ValueHigh
|
LDA.b ValueHigh
|
||||||
SBC.w #<framesPerUnit>>>16
|
SBC.w #<framesPerUnit>>>16
|
||||||
BCC ?end
|
BCC ?end
|
||||||
STA !ValueHigh
|
STA.b ValueHigh
|
||||||
LDA !Temp
|
LDA.b Temp
|
||||||
STA !ValueLow
|
STA.b ValueLow
|
||||||
INC <unitCounter>
|
INC.b <unitCounter>
|
||||||
BRA ?loop
|
BRA ?loop
|
||||||
?end:
|
?end:
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
!ColonOffset = $83
|
!ColonOffset = $83
|
||||||
!PeriodOffset = $80
|
!PeriodOffset = $80
|
||||||
!BlankTile = #$883D
|
BlankTile = $883D
|
||||||
|
|
||||||
RenderCreditsStatCounter:
|
RenderCreditsStatCounter:
|
||||||
PHB
|
PHB
|
||||||
@@ -248,44 +238,44 @@ RenderCreditsStatCounter:
|
|||||||
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
||||||
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
|
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
|
||||||
LSR #3
|
LSR #3
|
||||||
AND #$001F ; X XXXX
|
AND.w #$001F ; X XXXX
|
||||||
CLC
|
CLC
|
||||||
ADC $C8
|
ADC.w $C8
|
||||||
XBA
|
XBA
|
||||||
STA $1002,x
|
STA.w $1002,x
|
||||||
|
|
||||||
; == Write Stripe header (Length of data) ==
|
; == Write Stripe header (Length of data) ==
|
||||||
LDA.w #4*2-1 ; 4 tiles = 8 bytes
|
LDA.w #4*2-1 ; 4 tiles = 8 bytes
|
||||||
XBA
|
XBA
|
||||||
STA $1004,x
|
STA.w $1004,x
|
||||||
PHX
|
PHX
|
||||||
|
|
||||||
; == Load tile base (upper or lower half of white two-line zero) ==
|
; == Load tile base (upper or lower half of white two-line zero) ==
|
||||||
LDA !StatsBottom
|
LDA.b StatsBottom
|
||||||
BNE +
|
BNE +
|
||||||
LDA #$3D40
|
LDA.w #$3D40
|
||||||
BRA ++
|
BRA ++
|
||||||
+ LDA #$3D50
|
+ LDA.w #$3D50
|
||||||
++ STA !Temp
|
++ STA.b Temp
|
||||||
|
|
||||||
; == Load the actual stat word ==
|
; == Load the actual stat word ==
|
||||||
LDA.w CreditsStats+5,y
|
LDA.w CreditsStats+5,y
|
||||||
STA.b !StatsPtr
|
STA.b StatsPtr
|
||||||
LDA.w CreditsStats+6,y
|
LDA.w CreditsStats+6,y
|
||||||
STA.b !StatsPtr+1
|
STA.b StatsPtr+1
|
||||||
LDA.b [!StatsPtr]
|
LDA.b [StatsPtr]
|
||||||
STA !ValueLow
|
STA.b ValueLow
|
||||||
|
|
||||||
; == Shift value ==
|
; == Shift value ==
|
||||||
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
|
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
|
||||||
AND.w #$000F ; SSSS
|
AND.w #$000F ; SSSS
|
||||||
BEQ +
|
BEQ +
|
||||||
TAX
|
TAX
|
||||||
LDA !ValueLow
|
LDA.b ValueLow
|
||||||
- LSR
|
- LSR
|
||||||
DEX
|
DEX
|
||||||
BNE -
|
BNE -
|
||||||
STA !ValueLow
|
STA.b ValueLow
|
||||||
+
|
+
|
||||||
; == Mask value ==
|
; == Mask value ==
|
||||||
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
|
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
|
||||||
@@ -295,8 +285,8 @@ RenderCreditsStatCounter:
|
|||||||
AND.w #$001E
|
AND.w #$001E
|
||||||
TAX
|
TAX
|
||||||
LDA.l BitMasks,x
|
LDA.l BitMasks,x
|
||||||
AND !ValueLow
|
AND.b ValueLow
|
||||||
STA !ValueLow
|
STA.b ValueLow
|
||||||
|
|
||||||
; == Cap value ==
|
; == Cap value ==
|
||||||
LDA.w CreditsStats+3,y; ---- ---- CCC- ----
|
LDA.w CreditsStats+3,y; ---- ---- CCC- ----
|
||||||
@@ -305,60 +295,58 @@ RenderCreditsStatCounter:
|
|||||||
BEQ +
|
BEQ +
|
||||||
ASL : TAX
|
ASL : TAX
|
||||||
LDA.l ValueCaps,x
|
LDA.l ValueCaps,x
|
||||||
CMP !ValueLow
|
CMP.b ValueLow
|
||||||
!BGE +
|
!BGE +
|
||||||
STA !ValueLow
|
STA.b ValueLow
|
||||||
+
|
+
|
||||||
; == Display value ==
|
; == Display value ==
|
||||||
LDA !ValueLow
|
LDA.b ValueLow
|
||||||
JSL HexToDecStats
|
JSL HexToDecStats
|
||||||
PLX
|
PLX
|
||||||
STZ !RemoveZero
|
STZ.b RemoveZero
|
||||||
|
|
||||||
LDA $7F5004
|
LDA.l $7F5004
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CMP !RemoveZero
|
CMP.b RemoveZero
|
||||||
BNE +
|
BNE +
|
||||||
LDA !BlankTile
|
LDA.w #BlankTile
|
||||||
BRA ++
|
BRA ++
|
||||||
+ DEC !RemoveZero
|
+ DEC.b RemoveZero
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
++ %StripeTile()
|
++ %StripeTile()
|
||||||
|
|
||||||
LDA $7F5005
|
LDA.l $7F5005
|
||||||
AND #$00FF
|
AND #$00FF
|
||||||
CMP !RemoveZero
|
CMP.b RemoveZero
|
||||||
BNE +
|
BNE +
|
||||||
LDA !BlankTile
|
LDA.w #BlankTile
|
||||||
BRA ++
|
BRA ++
|
||||||
+ DEC !RemoveZero
|
+ DEC.b RemoveZero
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
++ %StripeTile()
|
++ %StripeTile()
|
||||||
|
|
||||||
LDA $7F5006
|
LDA.l $7F5006
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CMP !RemoveZero
|
CMP.b RemoveZero
|
||||||
BNE +
|
BNE +
|
||||||
LDA !BlankTile
|
LDA.w #BlankTile
|
||||||
BRA ++
|
BRA ++
|
||||||
+ DEC !RemoveZero
|
+ DEC.b RemoveZero
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
++ %StripeTile()
|
++ %StripeTile()
|
||||||
|
|
||||||
LDA $7F5007
|
LDA.l $7F5007
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
%StripeEnd()
|
%StripeEnd()
|
||||||
.endStats
|
.endStats
|
||||||
|
|
||||||
;JSR RenderLineNumber
|
|
||||||
|
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -368,131 +356,131 @@ RenderCreditsStatCounter:
|
|||||||
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
|
||||||
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
|
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
|
||||||
LSR #3
|
LSR #3
|
||||||
AND #$001F ; X XXXX
|
AND.w #$001F ; X XXXX
|
||||||
CLC
|
CLC
|
||||||
ADC $C8
|
ADC.b $C8
|
||||||
XBA
|
XBA
|
||||||
STA $1002,x
|
STA.w $1002,x
|
||||||
|
|
||||||
; == Write Stripe header (Length of data) ==
|
; == Write Stripe header (Length of data) ==
|
||||||
LDA.w #11*2-1 ; 11 tiles = 22 bytes
|
LDA.w #11*2-1 ; 11 tiles = 22 bytes
|
||||||
XBA
|
XBA
|
||||||
STA $1004,x
|
STA.w $1004,x
|
||||||
PHX
|
PHX
|
||||||
|
|
||||||
; == Load the actual stat words ==
|
; == Load the actual stat words ==
|
||||||
LDA.w CreditsStats+5,y
|
LDA.w CreditsStats+5,y
|
||||||
STA.b !StatsPtr
|
STA.b StatsPtr
|
||||||
LDA.w CreditsStats+6,y
|
LDA.w CreditsStats+6,y
|
||||||
STA.b !StatsPtr+1
|
STA.b StatsPtr+1
|
||||||
LDA.b [!StatsPtr]
|
LDA.b [StatsPtr]
|
||||||
STA !ValueLow
|
STA.b ValueLow
|
||||||
INC !StatsPtr
|
INC.b StatsPtr
|
||||||
INC !StatsPtr
|
INC.b StatsPtr
|
||||||
LDA.b [!StatsPtr]
|
LDA.b [StatsPtr]
|
||||||
STA !ValueHigh
|
STA.b ValueHigh
|
||||||
|
|
||||||
CMP.w #!MAX_FRAME_COUNT>>16+1
|
CMP.w #!MAX_FRAME_COUNT>>16+1
|
||||||
!BGE ++
|
!BGE ++
|
||||||
|
|
||||||
; == Convert total frames into hours, minutes, seconds and frames ==
|
; == Convert total frames into hours, minutes, seconds and frames ==
|
||||||
%CountUnits(!FRAMES_PER_HOUR, !Hours)
|
%CountUnits(!FRAMES_PER_HOUR, Hours)
|
||||||
%CountUnits(!FRAMES_PER_MINUTE, !Minutes)
|
%CountUnits(!FRAMES_PER_MINUTE, Minutes)
|
||||||
%CountUnits(!FRAMES_PER_SECOND, !Seconds)
|
%CountUnits(!FRAMES_PER_SECOND, Seconds)
|
||||||
|
|
||||||
; == Cap at 99:59:59.59 ==
|
; == Cap at 99:59:59.59 ==
|
||||||
LDA !Hours
|
LDA.b Hours
|
||||||
CMP.w #100
|
CMP.w #100
|
||||||
!BLT +
|
!BLT +
|
||||||
++ LDA.w #99
|
++ LDA.w #99
|
||||||
STA !Hours
|
STA.b Hours
|
||||||
LDA.w #59
|
LDA.w #59
|
||||||
STA !Minutes
|
STA.b Minutes
|
||||||
STA !Seconds
|
STA.b Seconds
|
||||||
STA !ValueLow
|
STA.b ValueLow
|
||||||
+
|
+
|
||||||
|
|
||||||
; == Load tile base (upper or lower half of white two-line zero) ==
|
; == Load tile base (upper or lower half of white two-line zero) ==
|
||||||
LDA !StatsBottom
|
LDA.b StatsBottom
|
||||||
BNE +
|
BNE +
|
||||||
LDA #$3D40
|
LDA.w #$3D40
|
||||||
BRA ++
|
BRA ++
|
||||||
+ LDA #$3D50
|
+ LDA.w #$3D50
|
||||||
++ STA !Temp
|
++ STA.b Temp
|
||||||
|
|
||||||
PLX
|
PLX
|
||||||
|
|
||||||
; == Display value ==
|
; == Display value ==
|
||||||
LDA !Hours
|
LDA.b Hours
|
||||||
JSL HexToDecStats
|
JSL HexToDecStats
|
||||||
|
|
||||||
LDA $7F5006
|
LDA.l $7F5006
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA $7F5007
|
LDA.l $7F5007
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA.w #!ColonOffset
|
LDA.w #!ColonOffset
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA !Minutes
|
LDA.b Minutes
|
||||||
JSL HexToDecStats
|
JSL HexToDecStats
|
||||||
LDA $7F5006
|
LDA.l $7F5006
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA $7F5007
|
LDA.l $7F5007
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA.w #!ColonOffset
|
LDA.w #!ColonOffset
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA !Seconds
|
LDA.b Seconds
|
||||||
JSL HexToDecStats
|
JSL HexToDecStats
|
||||||
LDA $7F5006
|
LDA.l $7F5006
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA $7F5007
|
LDA.l $7F5007
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA.w #!PeriodOffset
|
LDA.w #!PeriodOffset
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA !ValueLow
|
LDA.b ValueLow
|
||||||
JSL HexToDecStats
|
JSL HexToDecStats
|
||||||
LDA $7F5006
|
LDA.l $7F5006
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
LDA $7F5007
|
LDA.l $7F5007
|
||||||
AND #$00FF
|
AND.w #$00FF
|
||||||
CLC
|
CLC
|
||||||
ADC !Temp
|
ADC.b Temp
|
||||||
%StripeTile()
|
%StripeTile()
|
||||||
|
|
||||||
%StripeEnd()
|
%StripeEnd()
|
||||||
@@ -502,13 +490,13 @@ RenderCreditsStatCounter:
|
|||||||
RenderLineNumber:
|
RenderLineNumber:
|
||||||
%StripeStart(0, 3)
|
%StripeStart(0, 3)
|
||||||
|
|
||||||
STZ !StatsBottom
|
STZ.b StatsBottom
|
||||||
LDA $CA
|
LDA.b $CA
|
||||||
TAY
|
TAY
|
||||||
AND #$0001
|
AND.w #$0001
|
||||||
BEQ +
|
BEQ +
|
||||||
DEY
|
DEY
|
||||||
INC !StatsBottom
|
INC.b StatsBottom
|
||||||
+
|
+
|
||||||
JSR LastHexDigit
|
JSR LastHexDigit
|
||||||
PHA
|
PHA
|
||||||
@@ -530,21 +518,21 @@ LoadModifiedFont:
|
|||||||
; copies font graphics to VRAM (for BG3)
|
; copies font graphics to VRAM (for BG3)
|
||||||
|
|
||||||
; set name base table to vram $4000 (word)
|
; set name base table to vram $4000 (word)
|
||||||
LDA.b #$02 : STA $2101
|
LDA.b #$02 : STA.w OBSEL
|
||||||
|
|
||||||
; increment on writes to $2119
|
; increment on writes to $2119
|
||||||
LDA.b #$80 : STA $2115
|
LDA.b #$80 : STA.w VMAIN
|
||||||
|
|
||||||
; set bank of the source address (see below)
|
; set bank of the source address (see below)
|
||||||
LDA.b #FontGfx>>16 : STA $02
|
LDA.b #FontGfx>>16 : STA.b Scrap02
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
; vram target address is $7000 (word)
|
; vram target address is $7000 (word)
|
||||||
LDA.w #$7000 : STA $2116
|
LDA.w #$7000 : STA.w VMADDL
|
||||||
|
|
||||||
; $00[3] = $0E8000 (offset for the font data)
|
; $00[3] = $0E8000 (offset for the font data)
|
||||||
LDA.w #FontGfx : STA $00
|
LDA.w #FontGfx : STA.b Scrap00
|
||||||
|
|
||||||
; going to write 0x1000 bytes (0x800 words)
|
; going to write 0x1000 bytes (0x800 words)
|
||||||
LDX.w #FontGfxEnd-FontGfx/2-1
|
LDX.w #FontGfxEnd-FontGfx/2-1
|
||||||
@@ -552,10 +540,10 @@ LoadModifiedFont:
|
|||||||
.nextWord
|
.nextWord
|
||||||
|
|
||||||
; read a word from the font data
|
; read a word from the font data
|
||||||
LDA [$00] : STA $2118
|
LDA.b [$00] : STA.w VMDATAL
|
||||||
|
|
||||||
; increment source address by 2
|
; increment source address by 2
|
||||||
INC $00 : INC $00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
|
|
||||||
DEX : BPL .nextWord
|
DEX : BPL .nextWord
|
||||||
|
|
||||||
@@ -569,18 +557,18 @@ LoadFullItemTilesCredits:
|
|||||||
; copies font graphics to VRAM (for BG3)
|
; copies font graphics to VRAM (for BG3)
|
||||||
|
|
||||||
; increment on writes to $2119
|
; increment on writes to $2119
|
||||||
LDA.b #$80 : STA $2115
|
LDA.b #$80 : STA.w VMAIN
|
||||||
|
|
||||||
; set bank of the source address (see below)
|
; set bank of the source address (see below)
|
||||||
LDA.b #FileSelectNewGraphics>>16 : STA $02
|
LDA.b #FileSelectNewGraphics>>16 : STA.b Scrap02
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
; vram target address is $8000 (word) (Wraps to start of VRAM on normal SNES, but using the correct address so it works on extended VRAM machines)
|
; vram target address is $8000 (word) (Wraps to start of VRAM on normal SNES, but using the correct address so it works on extended VRAM machines)
|
||||||
LDA.w #$8000 : STA $2116
|
LDA.w #$8000 : STA.w VMADDL
|
||||||
|
|
||||||
; $00[3] = $0E8000 (offset for the font data)
|
; $00[3] = $0E8000 (offset for the font data)
|
||||||
LDA.w #FileSelectNewGraphics : STA $00
|
LDA.w #FileSelectNewGraphics : STA.b Scrap00
|
||||||
|
|
||||||
; going to write 0x1000 bytes (0x800 words)
|
; going to write 0x1000 bytes (0x800 words)
|
||||||
LDX.w #$800-1
|
LDX.w #$800-1
|
||||||
@@ -588,10 +576,10 @@ LoadFullItemTilesCredits:
|
|||||||
.nextWord
|
.nextWord
|
||||||
|
|
||||||
; read a word from the font data
|
; read a word from the font data
|
||||||
LDA [$00] : STA $2118
|
LDA.b [$00] : STA.w VMDATAL
|
||||||
|
|
||||||
; increment source address by 2
|
; increment source address by 2
|
||||||
INC $00 : INC $00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
|
|
||||||
DEX : BPL .nextWord
|
DEX : BPL .nextWord
|
||||||
|
|
||||||
@@ -629,7 +617,7 @@ DrawEndingItems:
|
|||||||
JSL DrawPlayerFile_credits
|
JSL DrawPlayerFile_credits
|
||||||
JSL SetItemLayoutPriority
|
JSL SetItemLayoutPriority
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA.b #$01 : STA $14
|
LDA.b #$01 : STA.b $14
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
FontTable:
|
FontTable:
|
||||||
@@ -650,13 +638,13 @@ org $0EE651
|
|||||||
|
|
||||||
org $0EE828
|
org $0EE828
|
||||||
JSL PreparePointer
|
JSL PreparePointer
|
||||||
LDA [!CreditsPtr],Y
|
LDA.b [CreditsPtr],Y
|
||||||
NOP
|
NOP
|
||||||
org $0EE83F
|
org $0EE83F
|
||||||
LDA [!CreditsPtr],Y
|
LDA.b [CreditsPtr],Y
|
||||||
NOP
|
NOP
|
||||||
org $0EE853
|
org $0EE853
|
||||||
LDA [!CreditsPtr],Y
|
LDA.b [CreditsPtr],Y
|
||||||
NOP
|
NOP
|
||||||
AND.w #$00ff
|
AND.w #$00ff
|
||||||
ASL A
|
ASL A
|
||||||
|
|||||||
@@ -1,4 +1,50 @@
|
|||||||
;(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
!FIRST_SWORD_X = 19
|
||||||
|
!FIRST_SWORD_Y = 310
|
||||||
|
!PEGASUS_BOOTS_X = 19
|
||||||
|
!PEGASUS_BOOTS_Y = 313
|
||||||
|
!FLUTE_X = 19
|
||||||
|
!FLUTE_Y = 316
|
||||||
|
!MIRROR_X = 19
|
||||||
|
!MIRROR_Y = 319
|
||||||
|
!SWORDLESS_X = 23
|
||||||
|
!SWORDLESS_Y = 327
|
||||||
|
!FIGHTERS_SWORD_X = 23
|
||||||
|
!FIGHTERS_SWORD_Y = 330
|
||||||
|
!MASTER_SWORD_X = 23
|
||||||
|
!MASTER_SWORD_Y = 333
|
||||||
|
!TEMPERED_SWORD_X = 23
|
||||||
|
!TEMPERED_SWORD_Y = 336
|
||||||
|
!GOLD_SWORD_X = 23
|
||||||
|
!GOLD_SWORD_Y = 339
|
||||||
|
!DAMAGETAKEN_X = 26
|
||||||
|
!DAMAGETAKEN_Y = 346
|
||||||
|
!MAGICUSED_X = 26
|
||||||
|
!MAGICUSED_Y = 349
|
||||||
|
!BONKS_X = 26
|
||||||
|
!BONKS_Y = 352
|
||||||
|
!SAVE_AND_QUITS_X = 26
|
||||||
|
!SAVE_AND_QUITS_Y = 355
|
||||||
|
!DEATHS_X = 26
|
||||||
|
!DEATHS_Y = 358
|
||||||
|
!FAERIE_REVIVALS_X = 26
|
||||||
|
!FAERIE_REVIVALS_Y = 361
|
||||||
|
!TOTAL_MENU_TIME_X = 19
|
||||||
|
!TOTAL_MENU_TIME_Y = 364
|
||||||
|
!TOTAL_LAG_TIME_X = 19
|
||||||
|
!TOTAL_LAG_TIME_Y = 367
|
||||||
|
!COLLECTION_RATE_X = 22
|
||||||
|
!COLLECTION_RATE_Y = 380
|
||||||
|
!TOTAL_TIME_X = 19
|
||||||
|
!TOTAL_TIME_Y = 383
|
||||||
|
|
||||||
|
macro AddStat(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
||||||
|
db <xPos><<2|<type><<9|<lineNumber>>>8
|
||||||
|
db <lineNumber>
|
||||||
|
db <bits><<4|<shiftRight>
|
||||||
|
db <digits><<5
|
||||||
|
db $00
|
||||||
|
dl <address>
|
||||||
|
endmacro
|
||||||
|
|
||||||
%AddStat(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
%AddStat(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
||||||
%AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
%AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
||||||
|
|||||||
119
swordswap.asm
119
swordswap.asm
@@ -3,35 +3,8 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
;$03348E: smith sword check (to see if uprade-able)
|
;$03348E: smith sword check (to see if uprade-able)
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;GetFairySword:
|
|
||||||
; CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one
|
|
||||||
; CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert safe master sword to normal one
|
|
||||||
; CMP #$04 : !BLT + : JML.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer
|
|
||||||
; JSL ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this
|
|
||||||
; JSL ItemSet_FairySword ; mark as got
|
|
||||||
; LDA FairySword : STA $0DC0, X ; whichever sword
|
|
||||||
; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose
|
|
||||||
;
|
|
||||||
;JML.l PyramidFairy_BRANCH_GAMMA
|
|
||||||
;================================================================================
|
|
||||||
;GetSmithSword:
|
|
||||||
; JSL ItemCheck_SmithSword : BEQ + : JML.l Smithy_AlreadyGotSword : + ; check if we're not already done
|
|
||||||
; ;JSL ItemSet_SmithSword - too early
|
|
||||||
;JML.l Smithy_DoesntHaveSword
|
|
||||||
;================================================================================
|
|
||||||
;LoadSwordForDamage:
|
|
||||||
; LDA SwordEquipment : CMP #$04 : BNE .done ; skip if not gold sword
|
|
||||||
; LDA $1B : BEQ + ; skip if outdoors
|
|
||||||
; LDA $A0 : CMP #41 : BNE + ; decimal 41 ; skip if not in the mothula room
|
|
||||||
; LDA #$03 ; pretend we're using tempered
|
|
||||||
; BRA .done
|
|
||||||
; +
|
|
||||||
; LDA #$04 ; nvm gold sword is fine
|
|
||||||
; .done
|
|
||||||
;RTL
|
|
||||||
;================================================================================
|
|
||||||
LoadSwordForDamage:
|
LoadSwordForDamage:
|
||||||
LDA $0E20, X : CMP.b #$88 : BNE .notMoth
|
LDA.w $0E20, X : CMP.b #$88 : BNE .notMoth
|
||||||
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
||||||
CMP.b #$04 : !BLT + : DEC : + ; if it's gold sword, change it to tempered
|
CMP.b #$04 : !BLT + : DEC : + ; if it's gold sword, change it to tempered
|
||||||
RTL
|
RTL
|
||||||
@@ -39,10 +12,9 @@ LoadSwordForDamage:
|
|||||||
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;!StalfosBombDamage = "$7F509D"
|
|
||||||
LookupDamageLevel:
|
LookupDamageLevel:
|
||||||
CPX.w #$0918 : BNE +
|
CPX.w #$0918 : BNE +
|
||||||
LDA.l !StalfosBombDamage
|
LDA.l StalfosBombDamage
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PHP
|
PHP
|
||||||
@@ -59,82 +31,77 @@ RTL
|
|||||||
AND.b #$0F
|
AND.b #$0F
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; $7F50C0 - Sword Modifier
|
|
||||||
LoadModifiedSwordLevel: ; returns short
|
LoadModifiedSwordLevel: ; returns short
|
||||||
LDA $7F50C0 : BEQ +
|
LDA.l SwordModifier : BEQ +
|
||||||
!ADD SwordEquipment ; add normal sword value to modifier
|
!ADD SwordEquipment ; add normal sword value to modifier
|
||||||
BNE ++ : LDA.b #$01 : RTS : ++
|
BNE ++ : LDA.b #$01 : RTS : ++
|
||||||
CMP.b #$05 : !BLT ++ : LDA.b #$04 : RTS : ++
|
CMP.b #$05 : !BLT ++ : LDA.b #$04 : RTS : ++
|
||||||
RTS
|
RTS
|
||||||
+
|
+
|
||||||
LDA SwordEquipment ; load normal sword value
|
LDA.l SwordEquipment ; load normal sword value
|
||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; ArmorEquipment - Armor Inventory
|
; ArmorEquipment - Armor Inventory
|
||||||
; $7F50C2 - Armor Modifier
|
|
||||||
; $7F5020 - Scratch Space (Caller Preserved)
|
|
||||||
LoadModifiedArmorLevel:
|
LoadModifiedArmorLevel:
|
||||||
PHA
|
PHA
|
||||||
LDA ArmorEquipment : !ADD $7F50C2
|
LDA.l ArmorEquipment : !ADD ArmorModifier
|
||||||
CMP.b #$FF : BNE + : LDA.b #$00 : +
|
CMP.b #$FF : BNE + : LDA.b #$00 : +
|
||||||
CMP.b #$03 : !BLT + : LDA.b #$02 : +
|
CMP.b #$03 : !BLT + : LDA.b #$02 : +
|
||||||
STA $7F5020
|
STA.l ScratchBufferV
|
||||||
PLA
|
PLA
|
||||||
!ADD $7F5020
|
!ADD ScratchBufferV
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; MagicConsumption - Magic Inventory
|
; MagicConsumption - Magic Inventory
|
||||||
; $7F50C3 - Magic Modifier
|
|
||||||
LoadModifiedMagicLevel:
|
LoadModifiedMagicLevel:
|
||||||
LDA $7F50C3 : BEQ +
|
LDA.l MagicModifier : BEQ +
|
||||||
!ADD MagicConsumption ; add normal magic value to modifier
|
!ADD MagicConsumption ; add normal magic value to modifier
|
||||||
CMP.b #$FF : BNE ++ : LDA.b #$00 : RTL : ++
|
CMP.b #$FF : BNE ++ : LDA.b #$00 : RTL : ++
|
||||||
CMP.b #$03 : !BLT ++ : LDA.b #$02 : ++
|
CMP.b #$03 : !BLT ++ : LDA.b #$02 : ++
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA MagicConsumption ; load normal magic value
|
LDA.l MagicConsumption ; load normal magic value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; $7E0348 - Ice Value
|
; $7E0348 - Ice Value
|
||||||
; $7F50C7 - Ice Modifier
|
|
||||||
LoadModifiedIceFloorValue_a11:
|
LoadModifiedIceFloorValue_a11:
|
||||||
LDA $A0 : CMP #$91 : BEQ + : CMP #$92 : BEQ + : CMP #$93 : BEQ + ; mire basement currently broken - not sure why
|
LDA.b $A0 : CMP.b #$91 : BEQ + : CMP.b #$92 : BEQ + : CMP.b #$93 : BEQ + ; mire basement currently broken - not sure why
|
||||||
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
LDA.b $5D : CMP.b #$01 : BEQ + : CMP.b #$17 : BEQ + : CMP.b #$1C : BEQ +
|
||||||
LDA $5E : CMP #$02 : BEQ +
|
LDA.b $5E : CMP.b #$02 : BEQ +
|
||||||
LDA $5B : BNE +
|
LDA.b $5B : BNE +
|
||||||
LDA.w $0348 : ORA $7F50C7 : AND.b #$11 : RTL
|
LDA.w $0348 : ORA.l IceModifier : AND.b #$11 : RTL
|
||||||
+ : LDA.w $0348 : AND.b #$11
|
+ : LDA.w $0348 : AND.b #$11
|
||||||
RTL
|
RTL
|
||||||
LoadModifiedIceFloorValue_a01:
|
LoadModifiedIceFloorValue_a01:
|
||||||
LDA $A0 : CMP #$91 : BEQ + : CMP #$92 : BEQ + : CMP #$93 : BEQ + ; mire basement currently broken - not sure why
|
LDA.b $A0 : CMP.b #$91 : BEQ + : CMP.b #$92 : BEQ + : CMP.b #$93 : BEQ + ; mire basement currently broken - not sure why
|
||||||
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
LDA.b $5D : CMP.b #$01 : BEQ + : CMP.b #$17 : BEQ + : CMP.b #$1C : BEQ +
|
||||||
LDA $5E : CMP #$02 : BEQ +
|
LDA.b $5E : CMP.b #$02 : BEQ +
|
||||||
LDA $5B : BNE +
|
LDA.b $5B : BNE +
|
||||||
LDA.w $0348 : ORA $7F50C7 : AND.b #$01 : RTL
|
LDA.w $0348 : ORA.l IceModifier : AND.b #$01 : RTL
|
||||||
+ : LDA.w $0348 : AND.b #$01
|
+ : LDA.w $0348 : AND.b #$01
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
CheckTabletSword:
|
CheckTabletSword:
|
||||||
LDA.l AllowHammerTablets : BEQ +
|
LDA.l AllowHammerTablets : BEQ +
|
||||||
LDA HammerEquipment : BEQ + ; check for hammer
|
LDA.l HammerEquipment : BEQ + ; check for hammer
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
+
|
+
|
||||||
LDA SwordEquipment ; get actual sword value
|
LDA.l SwordEquipment ; get actual sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
GetSwordLevelForEvilBarrier:
|
GetSwordLevelForEvilBarrier:
|
||||||
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
||||||
LDA #$FF : RTL
|
LDA.b #$FF : RTL
|
||||||
+
|
+
|
||||||
LDA SwordEquipment
|
LDA.l SwordEquipment
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
CheckGanonHammerDamage:
|
CheckGanonHammerDamage:
|
||||||
LDA.l HammerableGanon : BEQ +
|
LDA.l HammerableGanon : BEQ +
|
||||||
LDA $0E20, X : CMP.b #$D8 ; original behavior except ganon
|
LDA.w $0E20, X : CMP.b #$D8 ; original behavior except ganon
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA $0E20, X : CMP.b #$D6 ; original behavior
|
LDA.w $0E20, X : CMP.b #$D6 ; original behavior
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
GetSmithSword:
|
GetSmithSword:
|
||||||
@@ -143,7 +110,7 @@ GetSmithSword:
|
|||||||
JML.l Smithy_DoesntHaveSword ; Classic Smithy
|
JML.l Smithy_DoesntHaveSword ; Classic Smithy
|
||||||
+
|
+
|
||||||
|
|
||||||
REP #$20 : LDA CurrentRupees : CMP #$000A : SEP #$20 : !BGE .buy
|
REP #$20 : LDA.l CurrentRupees : CMP.w #$000A : SEP #$20 : !BGE .buy
|
||||||
.cant_afford
|
.cant_afford
|
||||||
REP #$10
|
REP #$10
|
||||||
LDA.b #$7A
|
LDA.b #$7A
|
||||||
@@ -155,10 +122,10 @@ GetSmithSword:
|
|||||||
|
|
||||||
.buy
|
.buy
|
||||||
LDA.l SmithItem : TAY
|
LDA.l SmithItem : TAY
|
||||||
STZ $02E9 ; Item from NPC
|
STZ.w $02E9 ; Item from NPC
|
||||||
PHX : JSL Link_ReceiveItem : PLX
|
PHX : JSL Link_ReceiveItem : PLX
|
||||||
|
|
||||||
REP #$20 : LDA CurrentRupees : !SUB.w #$000A : STA CurrentRupees : SEP #$20 ; Take 10 rupees
|
REP #$20 : LDA.l CurrentRupees : !SUB.w #$000A : STA.l CurrentRupees : SEP #$20 ; Take 10 rupees
|
||||||
JSL ItemSet_SmithSword
|
JSL ItemSet_SmithSword
|
||||||
|
|
||||||
.done
|
.done
|
||||||
@@ -170,35 +137,35 @@ CheckMedallionSword:
|
|||||||
LDA.b #$02 ; Pretend we have master sword
|
LDA.b #$02 ; Pretend we have master sword
|
||||||
RTL
|
RTL
|
||||||
.check_sword
|
.check_sword
|
||||||
LDA SwordEquipment
|
LDA.l SwordEquipment
|
||||||
RTL
|
RTL
|
||||||
.check_pad
|
.check_pad
|
||||||
PHB : PHX : PHY
|
PHB : PHX : PHY
|
||||||
LDA $1B : BEQ .outdoors
|
LDA.b $1B : BEQ .outdoors
|
||||||
.indoors
|
.indoors
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $A0 ; load room ID
|
LDA.b $A0 ; load room ID
|
||||||
CMP.w #$000E : BNE + ; freezor1
|
CMP.w #$000E : BNE + ; freezor1
|
||||||
LDA $22 : AND.w #$01FF ; check x-coord
|
LDA.b $22 : AND.w #$01FF ; check x-coord
|
||||||
CMP.w #368-8 : !BLT .normal
|
CMP.w #368-8 : !BLT .normal
|
||||||
CMP.w #368+32-8 : !BGE .normal
|
CMP.w #368+32-8 : !BGE .normal
|
||||||
LDA $20 : AND.w #$01FF ; check y-coord
|
LDA.b $20 : AND.w #$01FF ; check y-coord
|
||||||
CMP.w #400-22 : !BLT .normal
|
CMP.w #400-22 : !BLT .normal
|
||||||
CMP.w #400+32-22 : !BGE .normal
|
CMP.w #400+32-22 : !BGE .normal
|
||||||
JMP .permit
|
JMP .permit
|
||||||
+ : CMP.w #$007E : BNE + ; freezor2
|
+ : CMP.w #$007E : BNE + ; freezor2
|
||||||
LDA $22 : AND.w #$01FF ; check x-coord
|
LDA.b $22 : AND.w #$01FF ; check x-coord
|
||||||
CMP.w #112-8 : !BLT .normal
|
CMP.w #112-8 : !BLT .normal
|
||||||
CMP.w #112+32-8 : !BGE .normal
|
CMP.w #112+32-8 : !BGE .normal
|
||||||
LDA $20 : AND.w #$01FF ; check y-coord
|
LDA.b $20 : AND.w #$01FF ; check y-coord
|
||||||
CMP.w #400-22 : !BLT .normal
|
CMP.w #400-22 : !BLT .normal
|
||||||
CMP.w #400+32-22 : !BGE .normal
|
CMP.w #400+32-22 : !BGE .normal
|
||||||
JMP .permit
|
JMP .permit
|
||||||
+ : CMP.w #$00DE : BNE + ; kholdstare
|
+ : CMP.w #$00DE : BNE + ; kholdstare
|
||||||
LDA $22 : AND.w #$01FF ; check x-coord
|
LDA.b $22 : AND.w #$01FF ; check x-coord
|
||||||
CMP.w #368-8 : !BLT .normal
|
CMP.w #368-8 : !BLT .normal
|
||||||
CMP.w #368+32-8 : !BGE .normal
|
CMP.w #368+32-8 : !BGE .normal
|
||||||
LDA $20 : AND.w #$01FF ; check y-coord
|
LDA.b $20 : AND.w #$01FF ; check y-coord
|
||||||
CMP.w #144-22 : !BLT .normal
|
CMP.w #144-22 : !BLT .normal
|
||||||
CMP.w #144+32-22 : !BGE .normal
|
CMP.w #144+32-22 : !BGE .normal
|
||||||
BRA .permit
|
BRA .permit
|
||||||
@@ -206,21 +173,21 @@ CheckMedallionSword:
|
|||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
BRA .done
|
BRA .done
|
||||||
.outdoors
|
.outdoors
|
||||||
LDA $8A : CMP.b #$70 : BNE +
|
LDA.b $8A : CMP.b #$70 : BNE +
|
||||||
LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done
|
LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP.w $0303 : BNE .done
|
||||||
LDA OverworldEventDataWRAM+$70 : AND.b #$20 : BNE .done
|
LDA.l OverworldEventDataWRAM+$70 : AND.b #$20 : BNE .done
|
||||||
LDA.b #$08 : PHA : PLB ; set data bank to $08
|
LDA.b #$08 : PHA : PLB ; set data bank to $08
|
||||||
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire
|
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire
|
||||||
BRA .done
|
BRA .done
|
||||||
+ : CMP.b #$47 : BNE +
|
+ : CMP.b #$47 : BNE +
|
||||||
LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done
|
LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP.w $0303 : BNE .done
|
||||||
LDA OverworldEventDataWRAM+$47 : AND.b #$20 : BNE .done
|
LDA.l OverworldEventDataWRAM+$47 : AND.b #$20 : BNE .done
|
||||||
LDA.b #$08 : PHA : PLB ; set data bank to $08
|
LDA.b #$08 : PHA : PLB ; set data bank to $08
|
||||||
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock
|
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
PLY : PLX : PLB
|
PLY : PLX : PLB
|
||||||
LDA SwordEquipment
|
LDA.l SwordEquipment
|
||||||
RTL
|
RTL
|
||||||
.permit
|
.permit
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
|
|||||||
99
tables.asm
99
tables.asm
@@ -396,7 +396,7 @@ org $30809A ; PC 0x18009A
|
|||||||
OneMindPlayerCount:
|
OneMindPlayerCount:
|
||||||
db 0
|
db 0
|
||||||
org $30809B ; PC 0x18009B - 0x18009C
|
org $30809B ; PC 0x18009B - 0x18009C
|
||||||
OneMindTimer:
|
OneMindTimerInit:
|
||||||
dw 0
|
dw 0
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18009D - Dungeon map icons
|
; 0x18009D - Dungeon map icons
|
||||||
@@ -1453,103 +1453,8 @@ dw #9999 ; Rupee Limit
|
|||||||
; $2F8000 - $2F83FF - RNG Block
|
; $2F8000 - $2F83FF - RNG Block
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; $7EC025 - $7EC034 - Item OAM Table
|
; $7EC025 - $7EC034 - Item OAM Table
|
||||||
;================================================================================
|
;================================================================================;
|
||||||
; $7F5000 - Redraw Flag
|
|
||||||
; $7F5001 - Flipper Softlock Possible
|
|
||||||
; $7F5002 - L/R Rotate
|
|
||||||
; $7F5003 - HexToDec 1st Digit
|
|
||||||
; $7F5004 - HexToDec 2nd Digit
|
|
||||||
; $7F5005 - HexToDec 3rd Digit
|
|
||||||
; $7F5006 - HexToDec 4th Digit
|
|
||||||
; $7F5007 - HexToDec 5th Digit
|
|
||||||
; $7F5008 - Skip Sprite_DrawMultiple EOR
|
|
||||||
; $7F5009 - Always Zero
|
|
||||||
; $7F5010 - Scratch Space (Callee Preserved)
|
|
||||||
; $7F5020 - Scratch Space (Caller Preserved)
|
|
||||||
; $7F5030 - Jar Cursor Status
|
|
||||||
; $7F5031 - HUD Master Sword Flag
|
|
||||||
; $7F5032 - Ganon Warp Chain Flag
|
|
||||||
; $7F5033 - Force Heart Spawn Counter
|
|
||||||
; $7F5034 - Skip Heart Collection Save Counter
|
|
||||||
; $7F5035 - Alternate Text Pointer Flag ; 0=Disable
|
|
||||||
; $7F5036 - Padding Byte (Must be Zero)
|
|
||||||
; $7F5037 - Stats Boss Kills
|
|
||||||
; $7F5038 - Stats Lag Time
|
|
||||||
; $7F5039 - Stats Lag Time
|
|
||||||
; $7F503A - Stats Lag Time
|
|
||||||
; $7F503B - Stats Lag Time
|
|
||||||
; $7F503C - Stats Rupee Total
|
|
||||||
; $7F503D - Stats Rupee Total
|
|
||||||
; $7F503E - Stats Item Total
|
|
||||||
; $7F503F - Unused
|
|
||||||
; $7F5040 - Free Item Dialog Temporary
|
|
||||||
; $7F5041 - Epilepsy Safety Timer
|
|
||||||
; $7F5042 - Tile Upload Offset Override (Low)
|
|
||||||
; $7F5043 - Tile Upload Offset Override (High)
|
|
||||||
; $7F5044 - $7F5046 - NMI Auxiliary Function
|
|
||||||
; $7F5047 - $7F504F - Unused
|
|
||||||
; $7F5050 - $7F506F - Shop Block
|
|
||||||
; $7F5070 - Reserved for OneMind
|
|
||||||
; $7F5071 - Reserved for OneMind
|
|
||||||
; $7F5072 - OneMind player ID
|
|
||||||
; $7F5073 - $7F5074 - OneMind timer
|
|
||||||
; $7F5075 - $7F507D - Unused
|
|
||||||
; $7F507E - Clock Status
|
|
||||||
; $7F507F - Always Zero
|
|
||||||
; $7F5080 - $7F5083 - Clock Hours
|
|
||||||
; $7F5084 - $7F5087 - Clock Minutes
|
|
||||||
; $7F5088 - $7F508B - Clock Seconds
|
|
||||||
; $7F508C - $7F508F - Clock Temporary
|
|
||||||
; $7F5090 - RNG Item Lock-In
|
|
||||||
; $7F5091 - Item Animation Busy Flag
|
|
||||||
; $7F5092 - Potion Animation Busy Flags (Health)
|
|
||||||
; $7F5093 - Potion Animation Busy Flags (Magic)
|
|
||||||
; $7F5094 - Dialog Offset Pointer (Low)
|
|
||||||
; $7F5095 - Dialog Offset Pointer (High)
|
|
||||||
; $7F5096 - Dialog Offset Pointer Return (Low)
|
|
||||||
; $7F5097 - Dialog Offset Pointer Return (High)
|
|
||||||
; $7F5098 - Water Entry Index
|
|
||||||
; $7F5099 - Last Entered Overworld Door ID
|
|
||||||
; $7F509A - (Reserved)
|
|
||||||
; $7F509B - Unused
|
|
||||||
; $7F509C - Inverted Mode Duck Map Temporary
|
|
||||||
; $7F509D - Stalfos Bomb Damage Value
|
|
||||||
; $7F509E - Valid Key Loaded
|
|
||||||
; $7F509F - Text Box Defer Flag
|
|
||||||
; $7F50A0 - $7F50AF - MSU Block
|
|
||||||
|
|
||||||
; $7F50B0 - $7F50BF - Downstream Reserved (Enemizer)
|
|
||||||
|
|
||||||
; $7F50C0 - Sword Modifier
|
|
||||||
; $7F50C1 - Shield Modifier (Not Implemented)
|
|
||||||
; $7F50C2 - Armor Modifier
|
|
||||||
; $7F50C3 - Magic Modifier
|
|
||||||
; $7F50C4 - Light Cone Modifier
|
|
||||||
; $7F50C5 - Cucco Storm
|
|
||||||
; $7F50C6 - Old Man Dash Modifier
|
|
||||||
; $7F50C7 - Ice Physics Modifier
|
|
||||||
; $7F50C8 - Infinite Arrows Modifier
|
|
||||||
; $7F50C9 - Infinite Bombs Modifier
|
|
||||||
; $7F50CA - Infinite Magic Modifier
|
|
||||||
; $7F50CB - Invert D-Pad (Fill in values)
|
|
||||||
; $7F50CC - Temporary OHKO
|
|
||||||
; $7F50CD - Sprite Swapper
|
|
||||||
; $7F50CE - Boots Modifier (0=Off, 1=Always, 2=Never)
|
|
||||||
|
|
||||||
; $7F50D0 - $7F50FF - Block Cypher Parameters
|
|
||||||
; $7F5100 - $7F51FF - Block Cypher Buffer
|
|
||||||
; $7F5200 - $7F52FF - RNG Pointer Block
|
|
||||||
; $7F5300 - $7F53FF - Multiworld Block
|
|
||||||
; $7F5400 - $7F540F - MSU Block
|
|
||||||
; $7F5410 - $7F545F - Dungeon Tracking Block
|
|
||||||
; $7F5460 - $7F56FF - Unused
|
|
||||||
|
|
||||||
; $7F5700 - $7F57FF - Dialog Buffer
|
|
||||||
;
|
|
||||||
;================================================================================
|
|
||||||
!BIGRAM = "$7EC900";
|
|
||||||
; $7EC900 - Big RAM Buffer ($1F00)
|
|
||||||
;================================================================================
|
|
||||||
org $30A100 ; PC 0x182100 - 0x182304
|
org $30A100 ; PC 0x182100 - 0x182304
|
||||||
EntranceDoorFrameTable:
|
EntranceDoorFrameTable:
|
||||||
; data for multi-entrance caves
|
; data for multi-entrance caves
|
||||||
|
|||||||
54
tablets.asm
54
tablets.asm
@@ -2,25 +2,25 @@
|
|||||||
; Randomize Tablets
|
; Randomize Tablets
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemSet_EtherTablet:
|
ItemSet_EtherTablet:
|
||||||
PHA : LDA NpcFlags+1 : ORA.b #$01 : STA NpcFlags+1 : PLA
|
PHA : LDA.l NpcFlags+1 : ORA.b #$01 : STA.l NpcFlags+1 : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemSet_BombosTablet:
|
ItemSet_BombosTablet:
|
||||||
PHA : LDA NpcFlags+1 : ORA.b #$02 : STA NpcFlags+1 : PLA
|
PHA : LDA.l NpcFlags+1 : ORA.b #$02 : STA.l NpcFlags+1 : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemCheck_EtherTablet:
|
ItemCheck_EtherTablet:
|
||||||
LDA NpcFlags+1 : AND.b #$01
|
LDA.l NpcFlags+1 : AND.b #$01
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemCheck_BombosTablet:
|
ItemCheck_BombosTablet:
|
||||||
LDA NpcFlags+1 : AND.b #$02
|
LDA.l NpcFlags+1 : AND.b #$02
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetTabletItem:
|
SetTabletItem:
|
||||||
JSL.l GetSpriteID
|
JSL.l GetSpriteID
|
||||||
PHA
|
PHA
|
||||||
LDA $8A : CMP.b #$03 : BEQ .ether ; if we're on the map where ether is, we're the ether tablet
|
LDA.b $8A : CMP.b #$03 : BEQ .ether ; if we're on the map where ether is, we're the ether tablet
|
||||||
.bombos
|
.bombos
|
||||||
JSL.l ItemSet_BombosTablet : BRA .done
|
JSL.l ItemSet_BombosTablet : BRA .done
|
||||||
.ether
|
.ether
|
||||||
@@ -36,23 +36,23 @@ SpawnTabletItem:
|
|||||||
PHA
|
PHA
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile
|
||||||
|
|
||||||
LDA.b #$01 : STA !FORCE_HEART_SPAWN : STA !SKIP_HEART_SAVE
|
LDA.b #$01 : STA.l ForceHeartSpawn : STA.l SkipHeartSave
|
||||||
JSL.l SetTabletItem
|
JSL.l SetTabletItem
|
||||||
|
|
||||||
LDA.b #$EB
|
LDA.b #$EB
|
||||||
STA $7FFE00
|
STA.l $7FFE00
|
||||||
JSL Sprite_SpawnDynamically
|
JSL Sprite_SpawnDynamically
|
||||||
|
|
||||||
PLA : STA $0E80, Y ; Store item type
|
PLA : STA.w $0E80, Y ; Store item type
|
||||||
LDA $22 : STA $0D10, Y
|
LDA.b $22 : STA.w $0D10, Y
|
||||||
LDA $23 : STA $0D30, Y
|
LDA.b $23 : STA.w $0D30, Y
|
||||||
|
|
||||||
LDA $20 : STA $0D00, Y
|
LDA.b $20 : STA.w $0D00, Y
|
||||||
LDA $21 : STA $0D20, Y
|
LDA.b $21 : STA.w $0D20, Y
|
||||||
|
|
||||||
LDA.b #$00 : STA $0F20, Y
|
LDA.b #$00 : STA.w $0F20, Y
|
||||||
|
|
||||||
LDA.b #$7F : STA $0F70, Y ; spawn WAY up high
|
LDA.b #$7F : STA.w $0F70, Y ; spawn WAY up high
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybeUnlockTabletAnimation:
|
MaybeUnlockTabletAnimation:
|
||||||
@@ -60,13 +60,13 @@ MaybeUnlockTabletAnimation:
|
|||||||
JSL.l IsMedallion : BCC +
|
JSL.l IsMedallion : BCC +
|
||||||
STZ $0112 ; disable falling-medallion mode
|
STZ $0112 ; disable falling-medallion mode
|
||||||
STZ $03EF ; release link from item-up pose
|
STZ $03EF ; release link from item-up pose
|
||||||
LDA.b #$00 : STA $5D ; set link to ground state
|
LDA.b #$00 : STA.b $5D ; set link to ground state
|
||||||
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $8A : CMP.w #$0030 : BNE ++ ; Desert
|
LDA.b $8A : CMP.w #$0030 : BNE ++ ; Desert
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$02 : STA $2F ; face link forward
|
LDA.b #$02 : STA.b $2F ; face link forward
|
||||||
LDA.b #$3C : STA $46 ; lock link for 60f
|
LDA.b #$3C : STA.b $46 ; lock link for 60f
|
||||||
++
|
++
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
+
|
+
|
||||||
@@ -75,15 +75,15 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IsMedallion:
|
IsMedallion:
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $8A
|
LDA.b $8A
|
||||||
CMP.w #$03 : BNE + ; Death Mountain
|
CMP.w #$03 : BNE + ; Death Mountain
|
||||||
LDA $22 : CMP.w #1890 : !BGE ++
|
LDA.b $22 : CMP.w #1890 : !BGE ++
|
||||||
SEC
|
SEC
|
||||||
JMP .done
|
JMP .done
|
||||||
++
|
++
|
||||||
BRA .false
|
BRA .false
|
||||||
+ CMP.w #$30 : BNE + ; Desert
|
+ CMP.w #$30 : BNE + ; Desert
|
||||||
LDA $22 : CMP.w #512 : !BLT ++
|
LDA.b $22 : CMP.w #512 : !BLT ++
|
||||||
SEC
|
SEC
|
||||||
JMP .done
|
JMP .done
|
||||||
++
|
++
|
||||||
@@ -95,7 +95,7 @@ IsMedallion:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadNarrowObject:
|
LoadNarrowObject:
|
||||||
LDA.l AddReceivedItemExpanded_wide_item_flag, X : STA ($92), Y ; AddReceiveItem.wide_item_flag?
|
LDA.l AddReceivedItemExpanded_wide_item_flag, X : STA.b ($92), Y ; AddReceiveItem.wide_item_flag?
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawNarrowDroppedObject:
|
DrawNarrowDroppedObject:
|
||||||
@@ -106,28 +106,28 @@ DrawNarrowDroppedObject:
|
|||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
; Shift Y coordinate 8 pixels down
|
; Shift Y coordinate 8 pixels down
|
||||||
LDA $08 : STA $00
|
LDA.b Scrap08 : STA.b Scrap00
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
JSL.l Ancilla_SetOam_XY_Long
|
JSL.l Ancilla_SetOam_XY_Long
|
||||||
|
|
||||||
; always use the same character graphic (0x34)
|
; always use the same character graphic (0x34)
|
||||||
LDA.b #$34 : STA ($90), Y : INY
|
LDA.b #$34 : STA.b ($90), Y : INY
|
||||||
|
|
||||||
LDA.l AddReceivedItemExpanded_properties, X : BPL .valid_lower_properties
|
LDA.l AddReceivedItemExpanded_properties, X : BPL .valid_lower_properties
|
||||||
|
|
||||||
LDA $74
|
LDA.b $74
|
||||||
|
|
||||||
.valid_lower_properties
|
.valid_lower_properties
|
||||||
|
|
||||||
ASL A : ORA.b #$30 : STA ($90), Y
|
ASL A : ORA.b #$30 : STA.b ($90), Y
|
||||||
|
|
||||||
INY : PHY
|
INY : PHY
|
||||||
|
|
||||||
TYA : !SUB.b #$04 : LSR #2 : TAY
|
TYA : !SUB.b #$04 : LSR #2 : TAY
|
||||||
|
|
||||||
LDA.b #$00 : STA ($92), Y
|
LDA.b #$00 : STA.b ($92), Y
|
||||||
|
|
||||||
PLY
|
PLY
|
||||||
.large_sprite
|
.large_sprite
|
||||||
|
|||||||
100
textrenderer.asm
100
textrenderer.asm
@@ -1,103 +1,101 @@
|
|||||||
!INVERTED_TEMP = $35
|
|
||||||
|
|
||||||
RenderCharSetColorExtended_init:
|
RenderCharSetColorExtended_init:
|
||||||
stz !INVERTED_TEMP
|
stz.b Scrap0C
|
||||||
jsl $00d84e
|
jsl $00d84e
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
RenderCharSetColorExtended_close:
|
RenderCharSetColorExtended_close:
|
||||||
stz !INVERTED_TEMP
|
stz.b Scrap0C
|
||||||
lda $010c
|
lda $010c
|
||||||
sta $10
|
sta $10
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
RenderCharSetColorExtended:
|
RenderCharSetColorExtended:
|
||||||
pha
|
pha
|
||||||
and #$10
|
and.b #$10
|
||||||
cmp #$10
|
cmp.b #$10
|
||||||
beq .inverted
|
beq .inverted
|
||||||
lda #$00
|
lda.b #$00
|
||||||
bra .end
|
bra .end
|
||||||
.inverted
|
.inverted
|
||||||
lda #$01
|
lda.b #$01
|
||||||
.end
|
.end
|
||||||
sta !INVERTED_TEMP
|
sta.b Scrap0C
|
||||||
pla
|
pla
|
||||||
and #$07 : asl : asl
|
and.b #$07 : asl : asl
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
RenderCharToMapExtended:
|
RenderCharToMapExtended:
|
||||||
phx : tya : asl #2 : tax
|
phx : tya : asl #2 : tax
|
||||||
lda.l FontProperties, x
|
lda.l FontProperties, x
|
||||||
and #$0001
|
and.w #$0001
|
||||||
bne .uncompressed
|
bne .uncompressed
|
||||||
.compressed
|
.compressed
|
||||||
plx
|
plx
|
||||||
lda #$0000
|
lda.w #$0000
|
||||||
sta $00
|
sta.b Scrap00
|
||||||
lda #$007f
|
lda #$007f
|
||||||
sta $02
|
sta.b Scrap02
|
||||||
lda #$0000
|
lda.w #$0000
|
||||||
clc : adc #$0020
|
clc : adc.w #$0020
|
||||||
sta $03
|
sta.b Scrap03
|
||||||
lda #$007f
|
lda.w #$007f
|
||||||
sta $05
|
sta.b Scrap05
|
||||||
jml RenderCharToMapExtended_return
|
jml RenderCharToMapExtended_return
|
||||||
|
|
||||||
.uncompressed
|
.uncompressed
|
||||||
lda.l FontProperties+$2, x
|
lda.l FontProperties+$2, x
|
||||||
plx
|
plx
|
||||||
clc : adc #(NewFont&$ffff)
|
clc : adc.w #(NewFont&$ffff)
|
||||||
sta $00
|
sta.b Scrap00
|
||||||
clc : adc #$0100
|
clc : adc.w #$0100
|
||||||
pha
|
pha
|
||||||
lda #(NewFont>>16)
|
lda.w #(NewFont>>16)
|
||||||
sta $02
|
sta.b Scrap02
|
||||||
pla : sta $03
|
pla : sta.b Scrap03
|
||||||
lda #(NewFont>>16)
|
lda.w #(NewFont>>16)
|
||||||
sta $05
|
sta.b Scrap05
|
||||||
jml RenderCharToMapExtended_return
|
jml RenderCharToMapExtended_return
|
||||||
|
|
||||||
RenderCharLookupWidthDraw:
|
RenderCharLookupWidthDraw:
|
||||||
rep #$30
|
rep #$30
|
||||||
phx : lda $09 : and #$fffe : tax
|
phx : lda.b Scrap09 : and.w #$fffe : tax
|
||||||
lda.l FontProperties, x
|
lda.l FontProperties, x
|
||||||
bmi .thin
|
bmi .thin
|
||||||
.wide
|
.wide
|
||||||
plx : sep #$30
|
plx : sep #$30
|
||||||
lda $09 : and #$03 : tay
|
lda.b Scrap09 : and.b #$03 : tay
|
||||||
lda $fd7c, y : tay
|
lda.w $fd7c, y : tay
|
||||||
jml RenderCharLookupWidthDraw_return
|
jml RenderCharLookupWidthDraw_return
|
||||||
.thin
|
.thin
|
||||||
xba : and #$004f : bne .vwf
|
xba : and.w #$004f : bne .vwf
|
||||||
plx : sep #$30
|
plx : sep #$30
|
||||||
lda $09 : and #$03 : phx : tax
|
lda.b Scrap09 : and.b #$03 : phx : tax
|
||||||
lda.l RenderCharThinTable, x : tay : plx
|
lda.l RenderCharThinTable, x : tay : plx
|
||||||
jml RenderCharLookupWidthDraw_return
|
jml RenderCharLookupWidthDraw_return
|
||||||
.vwf
|
.vwf
|
||||||
and #$000f : tay
|
and.w #$000f : tay
|
||||||
plx : sep #$30
|
plx : sep #$30
|
||||||
lda $09 : and #$03 : phx : tax
|
lda.b Scrap09 : and.b #$03 : phx : tax
|
||||||
cpx #$00 : bne +
|
cpx.b #$00 : bne +
|
||||||
tya : bra ++
|
tya : bra ++
|
||||||
+ lda.l RenderCharThinTable, x
|
+ lda.l RenderCharThinTable, x
|
||||||
++ tay : plx : jml RenderCharLookupWidthDraw_return
|
++ tay : plx : jml RenderCharLookupWidthDraw_return
|
||||||
|
|
||||||
|
|
||||||
RenderCharLookupWidth:
|
RenderCharLookupWidth:
|
||||||
phx : lda $09 : and #$fffe : tax
|
phx : lda.b Scrap09 : and.w #$fffe : tax
|
||||||
lda.l FontProperties, x
|
lda.l FontProperties, x
|
||||||
bmi .thin
|
bmi .thin
|
||||||
.wide
|
.wide
|
||||||
plx : lda $fd7c, x : clc
|
plx : lda.w $fd7c, x : clc
|
||||||
rtl
|
rtl
|
||||||
.thin
|
.thin
|
||||||
xba : and #$004f : bne .vwf
|
xba : and.w #$004f : bne .vwf
|
||||||
plx : lda.l RenderCharThinTable, x : clc
|
plx : lda.l RenderCharThinTable, x : clc
|
||||||
rtl
|
rtl
|
||||||
.vwf
|
.vwf
|
||||||
and #$000f
|
and.w #$000f
|
||||||
plx : cpx #$0000 : beq + : lda.l RenderCharThinTable, x
|
plx : cpx.w #$0000 : beq + : lda.l RenderCharThinTable, x
|
||||||
+ clc : rtl
|
+ clc : rtl
|
||||||
|
|
||||||
RenderCharThinTable:
|
RenderCharThinTable:
|
||||||
@@ -107,11 +105,11 @@ RenderCharExtended:
|
|||||||
pha
|
pha
|
||||||
asl : asl : tax
|
asl : asl : tax
|
||||||
lda.l FontProperties, x
|
lda.l FontProperties, x
|
||||||
and #$00ff
|
and.w #$00ff
|
||||||
bne .renderUncompressed
|
bne .renderUncompressed
|
||||||
|
|
||||||
.renderOriginal
|
.renderOriginal
|
||||||
pla : asl : tax : asl : adc $0e
|
pla : asl : tax : asl : adc.b Scrap0E
|
||||||
jml RenderCharExtended_returnOriginal
|
jml RenderCharExtended_returnOriginal
|
||||||
|
|
||||||
.renderUncompressed
|
.renderUncompressed
|
||||||
@@ -119,31 +117,31 @@ RenderCharExtended:
|
|||||||
lda.l FontProperties+$2, x
|
lda.l FontProperties+$2, x
|
||||||
tay
|
tay
|
||||||
|
|
||||||
lda !INVERTED_TEMP
|
lda.b Scrap0C
|
||||||
bne .inverted
|
bne .inverted
|
||||||
|
|
||||||
ldx #$00000
|
ldx.w #$0000
|
||||||
-
|
-
|
||||||
lda.w NewFont, y
|
lda.w NewFont, y
|
||||||
sta.l $7EBFC0, x
|
sta.l $7EBFC0, x
|
||||||
lda.w NewFont+$100, y
|
lda.w NewFont+$100, y
|
||||||
sta.l $7EBFC0+$16, x
|
sta.l $7EBFC0+$16, x
|
||||||
inx #2
|
inx #02
|
||||||
iny #2
|
iny #02
|
||||||
cpx #$0010
|
cpx.w #$0010
|
||||||
bne -
|
bne -
|
||||||
bra .end
|
bra .end
|
||||||
|
|
||||||
.inverted
|
.inverted
|
||||||
ldx #$00000
|
ldx.w #$0000
|
||||||
-
|
-
|
||||||
lda.w NewFontInverted, y
|
lda.w NewFontInverted, y
|
||||||
sta.l $7EBFC0, x
|
sta.l $7EBFC0, x
|
||||||
lda.w NewFontInverted+$100, y
|
lda.w NewFontInverted+$100, y
|
||||||
sta.l $7EBFC0+$16, x
|
sta.l $7EBFC0+$16, x
|
||||||
inx #2
|
inx #02
|
||||||
iny #2
|
iny #02
|
||||||
cpx #$0010
|
cpx.w #$0010
|
||||||
bne -
|
bne -
|
||||||
|
|
||||||
.end
|
.end
|
||||||
|
|||||||
178
timer.asm
178
timer.asm
@@ -1,43 +1,31 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Challenge Timer
|
; Challenge Timer
|
||||||
;================================================================================
|
;================================================================================
|
||||||
!Temp = "$7F5020"
|
|
||||||
!TemporaryOHKO = "$7F50CC"
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours
|
!FRAMES_PER_SECOND = 60
|
||||||
!CLOCK_MINUTES = "$7F5084" ; $7F5084 - $7F5087 - Clock Minutes
|
!FRAMES_PER_MINUTE = 60*60
|
||||||
!CLOCK_SECONDS = "$7F5088" ; $7F5088 - $7F508B - Clock Seconds
|
!FRAMES_PER_HOUR = 60*60*60
|
||||||
!CLOCK_TEMPORARY = "$7F508C" ; $7F508C - $7F508F - Clock Temporary
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!FRAMES_PER_SECOND = #60
|
|
||||||
!FRAMES_PER_MINUTE = #60*60
|
|
||||||
!FRAMES_PER_HOUR = #60*60*60
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!Status = "$7F507E"
|
|
||||||
; ---- --dn
|
|
||||||
; d - dnf
|
|
||||||
; n - negative
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro DecIncr(value)
|
macro DecIncr(value)
|
||||||
LDA.l <value> : INC
|
LDA.w <value> : INC
|
||||||
CMP.w #$000A : !BLT ?noIncr
|
CMP.w #$000A : !BLT ?noIncr
|
||||||
LDA.l <value>+2 : INC : STA.l <value>+2
|
LDA.w <value>+2 : INC : STA.w <value>+2
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
?noIncr:
|
?noIncr:
|
||||||
STA.l <value>
|
STA.w <value>
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro Sub32(minuend,subtrahend,result)
|
macro Sub32(minuend,subtrahend,result)
|
||||||
LDA.l <minuend>
|
LDA.l <minuend>
|
||||||
!SUB.l <subtrahend> ; perform subtraction on the LSBs
|
!SUB.l <subtrahend> ; perform subtraction on the LSBs
|
||||||
STA.l <result>
|
STA.w <result>
|
||||||
LDA.l <minuend>+2 ; do the same for the MSBs, with carry
|
LDA.l <minuend>+2 ; do the same for the MSBs, with carry
|
||||||
SBC.l <subtrahend>+2 ; set according to the previous result
|
SBC.l <subtrahend>+2 ; set according to the previous result
|
||||||
STA.l <result>+2
|
STA.w <result>+2
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro Blt32(value1,value2)
|
macro Blt32(value1,value2)
|
||||||
LDA.l <value1>+2
|
LDA.w <value1>+2
|
||||||
CMP.l <value2>+2
|
CMP.l <value2>+2
|
||||||
!BLT ?done
|
!BLT ?done
|
||||||
BNE ?done
|
BNE ?done
|
||||||
@@ -48,33 +36,33 @@ endmacro
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CalculateTimer:
|
CalculateTimer:
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
STA.l !CLOCK_HOURS ; clear digit storage
|
STA.w ClockHours ; clear digit storage
|
||||||
STA.l !CLOCK_HOURS+2
|
STA.w ClockHours+2
|
||||||
STA.l !CLOCK_MINUTES
|
STA.w ClockMinutes
|
||||||
STA.l !CLOCK_MINUTES+2
|
STA.w ClockMinutes+2
|
||||||
STA.l !CLOCK_SECONDS
|
STA.w ClockSeconds
|
||||||
STA.l !CLOCK_SECONDS+2
|
STA.w ClockSeconds+2
|
||||||
|
|
||||||
LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode
|
LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode
|
||||||
%Sub32(NMIFrames,ChallengeTimer,!CLOCK_TEMPORARY)
|
%Sub32(NMIFrames,ChallengeTimer,ClockBuffer)
|
||||||
BRA ++
|
BRA ++
|
||||||
+ CMP.w #$0001 : BNE ++ ; Countdown Mode
|
+ CMP.w #$0001 : BNE ++ ; Countdown Mode
|
||||||
%Sub32(ChallengeTimer,NMIFrames,!CLOCK_TEMPORARY)
|
%Sub32(ChallengeTimer,NMIFrames,ClockBuffer)
|
||||||
++
|
++
|
||||||
|
|
||||||
%Blt32(!CLOCK_TEMPORARY,.halfCycle) : !BLT +
|
%Blt32(ClockBuffer,.halfCycle) : !BLT +
|
||||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||||
LDA.w #$0002 : STA.l !Status ; Set DNF Mode
|
LDA.w #$0002 : STA.l ClockStatus ; Set DNF Mode
|
||||||
LDA.l NMIFrames : STA.l ChallengeTimer
|
LDA.l NMIFrames : STA.l ChallengeTimer
|
||||||
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
||||||
RTS
|
RTS
|
||||||
++ CMP.w #$0001 : BNE ++ ; Negative Time
|
++ CMP.w #$0001 : BNE ++ ; Negative Time
|
||||||
LDA.l !CLOCK_TEMPORARY : EOR.w #$FFFF : !ADD.w #$0001 : STA.l !CLOCK_TEMPORARY
|
LDA.w ClockBuffer : EOR.w #$FFFF : !ADD.w #$0001 : STA.w ClockBuffer
|
||||||
LDA.l !CLOCK_TEMPORARY+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.l !CLOCK_TEMPORARY+2
|
LDA.w ClockBuffer+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.w ClockBuffer+2
|
||||||
LDA.w #$0001 : STA.l !Status ; Set Negative Mode
|
LDA.w #$0001 : STA.l ClockStatus ; Set Negative Mode
|
||||||
BRA .prepDigits
|
BRA .prepDigits
|
||||||
++ CMP.w #$0002 : BNE ++ ; OHKO
|
++ CMP.w #$0002 : BNE ++ ; OHKO
|
||||||
LDA.w #$0002 : STA.l !Status ; Set DNF Mode
|
LDA.w #$0002 : STA.l ClockStatus ; Set DNF Mode
|
||||||
LDA.l NMIFrames : STA.l ChallengeTimer
|
LDA.l NMIFrames : STA.l ChallengeTimer
|
||||||
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
||||||
RTS
|
RTS
|
||||||
@@ -86,30 +74,30 @@ CalculateTimer:
|
|||||||
+
|
+
|
||||||
|
|
||||||
LDA.l TimerRestart : AND.w #$00FF : BEQ +
|
LDA.l TimerRestart : AND.w #$00FF : BEQ +
|
||||||
LDA.w #$0000 : STA.l !Status ; Set Positive Mode
|
LDA.w #$0000 : STA.l ClockStatus ; Set Positive Mode
|
||||||
+
|
+
|
||||||
.prepDigits
|
.prepDigits
|
||||||
|
|
||||||
-
|
-
|
||||||
%Blt32(!CLOCK_TEMPORARY,.hour) : !BLT +
|
%Blt32(ClockBuffer,.hour) : !BLT +
|
||||||
%DecIncr(!CLOCK_HOURS)
|
%DecIncr(ClockHours)
|
||||||
%Sub32(!CLOCK_TEMPORARY,.hour,!CLOCK_TEMPORARY) : BRA -
|
%Sub32(ClockBuffer,.hour,ClockBuffer) : BRA -
|
||||||
+ -
|
+ -
|
||||||
%Blt32(!CLOCK_TEMPORARY,.minute) : !BLT +
|
%Blt32(ClockBuffer,.minute) : !BLT +
|
||||||
%DecIncr(!CLOCK_MINUTES)
|
%DecIncr(ClockMinutes)
|
||||||
%Sub32(!CLOCK_TEMPORARY,.minute,!CLOCK_TEMPORARY) : BRA -
|
%Sub32(ClockBuffer,.minute,ClockBuffer) : BRA -
|
||||||
+ -
|
+ -
|
||||||
%Blt32(!CLOCK_TEMPORARY,.second) : !BLT +
|
%Blt32(ClockBuffer,.second) : !BLT +
|
||||||
%DecIncr(!CLOCK_SECONDS)
|
%DecIncr(ClockSeconds)
|
||||||
%Sub32(!CLOCK_TEMPORARY,.second,!CLOCK_TEMPORARY) : BRA -
|
%Sub32(ClockBuffer,.second,ClockBuffer) : BRA -
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA !CLOCK_HOURS : !ADD.w #$2490 : STA !CLOCK_HOURS ; convert decimal values to tiles
|
LDA.w ClockHours : !ADD.w #$2490 : STA.w ClockHours ; convert decimal values to tiles
|
||||||
LDA !CLOCK_HOURS+2 : !ADD.w #$2490 : STA !CLOCK_HOURS+2
|
LDA.w ClockHours+2 : !ADD.w #$2490 : STA.w ClockHours+2
|
||||||
LDA !CLOCK_MINUTES : !ADD.w #$2490 : STA !CLOCK_MINUTES
|
LDA.w ClockMinutes : !ADD.w #$2490 : STA.w ClockMinutes
|
||||||
LDA !CLOCK_MINUTES+2 : !ADD.w #$2490 : STA !CLOCK_MINUTES+2
|
LDA.w ClockMinutes+2 : !ADD.w #$2490 : STA.w ClockMinutes+2
|
||||||
LDA !CLOCK_SECONDS : !ADD.w #$2490 : STA !CLOCK_SECONDS
|
LDA.w ClockSeconds : !ADD.w #$2490 : STA.w ClockSeconds
|
||||||
LDA !CLOCK_SECONDS+2 : !ADD.w #$2490 : STA !CLOCK_SECONDS+2
|
LDA.w ClockSeconds+2 : !ADD.w #$2490 : STA.w ClockSeconds+2
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
.hour
|
.hour
|
||||||
@@ -121,67 +109,65 @@ dw #$003C, #$0000
|
|||||||
.halfCycle
|
.halfCycle
|
||||||
dw #$FFFF, #$7FFF
|
dw #$FFFF, #$7FFF
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!TEMPORARY_OHKO = "$7F50CC"
|
|
||||||
DrawChallengeTimer:
|
DrawChallengeTimer:
|
||||||
LDA !TEMPORARY_OHKO : AND.w #$00FF : BEQ +
|
LDA.l OHKOFlag : AND.w #$00FF : BEQ +
|
||||||
LDA.w #$2807 : STA $7EC790
|
LDA.w #$2807 : STA.l $7EC790
|
||||||
LDA.w #$280A : STA $7EC792
|
LDA.w #$280A : STA.l $7EC792
|
||||||
LDA.w #$280B : STA $7EC794
|
LDA.w #$280B : STA.l $7EC794
|
||||||
LDA.w #$280C : STA $7EC796
|
LDA.w #$280C : STA.l $7EC796
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.w #$247F : STA $7EC790
|
LDA.w #$247F : STA.l $7EC790
|
||||||
STA $7EC792
|
STA.l $7EC792
|
||||||
STA $7EC794
|
STA.l $7EC794
|
||||||
STA $7EC796
|
STA.l $7EC796
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
|
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
|
||||||
LDA.w #$2807 : STA $7EC792
|
LDA.w #$2807 : STA.l $7EC792
|
||||||
|
LDA.l ClockStatus : AND.w #$0002 : BEQ + ; DNF / OKHO
|
||||||
LDA.l !Status : AND.w #$0002 : BEQ + ; DNF / OKHO
|
|
||||||
|
|
||||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||||
LDA.w #$2808 : STA $7EC794
|
LDA.w #$2808 : STA.l $7EC794
|
||||||
LDA.w #$2809 : STA $7EC796
|
LDA.w #$2809 : STA.l $7EC796
|
||||||
LDA.w #$247F : STA $7EC798
|
LDA.w #$247F : STA.l $7EC798
|
||||||
STA $7EC79A
|
STA.l $7EC79A
|
||||||
BRA +++
|
BRA +++
|
||||||
++ ; OHKO
|
++ ; OHKO
|
||||||
LDA.w #$280A : STA $7EC794
|
LDA.w #$280A : STA.l $7EC794
|
||||||
LDA.w #$280B : STA $7EC796
|
LDA.w #$280B : STA.l $7EC796
|
||||||
LDA.w #$280C : STA $7EC798
|
LDA.w #$280C : STA.l $7EC798
|
||||||
LDA.w #$247F : STA $7EC79A
|
LDA.w #$247F : STA.l $7EC79A
|
||||||
+++
|
+++
|
||||||
STA $7EC79C
|
STA.l $7EC79C
|
||||||
STA $7EC79E
|
STA.l $7EC79E
|
||||||
STA $7EC7A0
|
STA.l $7EC7A0
|
||||||
STA $7EC7A2
|
STA.l $7EC7A2
|
||||||
STA $7EC7A4
|
STA.l $7EC7A4
|
||||||
LDA.l TimerRestart : BNE +++ : RTL : +++
|
LDA.l TimerRestart : BNE +++ : RTL : +++
|
||||||
BRA ++
|
BRA ++
|
||||||
+ ; Show Timer
|
+ ; Show Timer
|
||||||
LDA.l !Status : AND.w #$0001 : !ADD.w #$2804 : STA $7EC794
|
LDA.l ClockStatus : AND.w #$0001 : !ADD.w #$2804 : STA.l $7EC794
|
||||||
LDA !CLOCK_HOURS+2 : STA $7EC796
|
LDA.w ClockHours+2 : STA.l $7EC796
|
||||||
LDA !CLOCK_HOURS : STA $7EC798
|
LDA.w ClockHours : STA.l $7EC798
|
||||||
LDA.w #$2806 : STA $7EC79A
|
LDA.w #$2806 : STA.l $7EC79A
|
||||||
LDA !CLOCK_MINUTES+2 : STA $7EC79C
|
LDA.w ClockMinutes+2 : STA.l $7EC79C
|
||||||
LDA !CLOCK_MINUTES : STA $7EC79E
|
LDA.w ClockMinutes : STA.l $7EC79E
|
||||||
LDA.w #$2806 : STA $7EC7A0
|
LDA.w #$2806 : STA.l $7EC7A0
|
||||||
LDA !CLOCK_SECONDS+2 : STA $7EC7A2
|
LDA.w ClockSeconds+2 : STA.l $7EC7A2
|
||||||
LDA !CLOCK_SECONDS : STA $7EC7A4
|
LDA.w ClockSeconds : STA.l $7EC7A4
|
||||||
++
|
++
|
||||||
LDA $1A : AND.w #$001F : BNE + : JSR CalculateTimer : +
|
LDA.b $1A : AND.w #$001F : BNE + : JSR CalculateTimer : +
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OHKOTimer:
|
OHKOTimer:
|
||||||
LDA !TemporaryOHKO : BNE .kill
|
LDA.l OHKOFlag : BNE .kill
|
||||||
LDA.l TimeoutBehavior : CMP #$02 : BNE +
|
LDA.l TimeoutBehavior : CMP.b #$02 : BNE +
|
||||||
LDA !Status : AND.b #$02 : BEQ +
|
LDA.l ClockStatus : AND.b #$02 : BEQ +
|
||||||
.kill
|
.kill
|
||||||
LDA.b #$00 : STA CurrentHealth ; kill link
|
LDA.b #$00 : STA.l CurrentHealth ; kill link
|
||||||
+
|
+
|
||||||
LDA CurrentHealth
|
LDA.l CurrentHealth
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
10
toast.asm
10
toast.asm
@@ -1,14 +1,12 @@
|
|||||||
!TOAST_BUFFER = "$7F5400" ; for now
|
|
||||||
!TOAST_BUFFER_LOW = "$5400" ; for now
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; DoToast:
|
; DoToast:
|
||||||
; in: A(w) - VRAM Destination
|
; in: A(w) - VRAM Destination
|
||||||
; in: X(w) - Length in Tiles
|
; in: X(w) - Length in Tiles
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DoToast:
|
DoToast:
|
||||||
PHY : PHP
|
PHY : PHP
|
||||||
LDY.w !TOAST_BUFFER_LOW
|
LDY.w ToastBuffer
|
||||||
JSL.l WriteVRAMBlock
|
JSL.l WriteVRAMBlock
|
||||||
PLP : PLY
|
PLP : PLY
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
241
utilities.asm
241
utilities.asm
@@ -52,13 +52,13 @@ RTL
|
|||||||
++ CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
++ CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
||||||
JSL.l GetRNGItemMulti : JMP GetSpriteID
|
JSL.l GetRNGItemMulti : JMP GetSpriteID
|
||||||
++ CMP.b #$FD : BNE ++ ; Progressive Armor
|
++ CMP.b #$FD : BNE ++ ; Progressive Armor
|
||||||
LDA ArmorEquipment : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
|
LDA.l ArmorEquipment : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
|
||||||
LDA.l ProgressiveArmorReplacement
|
LDA.l ProgressiveArmorReplacement
|
||||||
JMP GetSpriteID
|
JMP GetSpriteID
|
||||||
+
|
+
|
||||||
LDA.b #$04 : RTL
|
LDA.b #$04 : RTL
|
||||||
++ CMP.b #$FE : BNE ++ ; Progressive Sword
|
++ CMP.b #$FE : BNE ++ ; Progressive Sword
|
||||||
LDA HighestSword
|
LDA.l HighestSword
|
||||||
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
||||||
LDA.l ProgressiveSwordReplacement
|
LDA.l ProgressiveSwordReplacement
|
||||||
JMP GetSpriteID
|
JMP GetSpriteID
|
||||||
@@ -72,7 +72,7 @@ RTL
|
|||||||
LDA.b #$46 : RTL
|
LDA.b #$46 : RTL
|
||||||
+
|
+
|
||||||
++ : CMP.b #$FF : BNE ++ ; Progressive Shield
|
++ : CMP.b #$FF : BNE ++ ; Progressive Shield
|
||||||
LDA HighestShield
|
LDA.l HighestShield
|
||||||
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
|
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
|
||||||
LDA.l ProgressiveShieldReplacement
|
LDA.l ProgressiveShieldReplacement
|
||||||
JMP GetSpriteID
|
JMP GetSpriteID
|
||||||
@@ -83,7 +83,7 @@ RTL
|
|||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$2E : RTL
|
LDA.b #$2E : RTL
|
||||||
++ : CMP.b #$F8 : BNE ++ ; Progressive Bow
|
++ : CMP.b #$F8 : BNE ++ ; Progressive Bow
|
||||||
LDA BowEquipment : INC : LSR
|
LDA.l BowEquipment : INC : LSR
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement
|
LDA.l ProgressiveBowReplacement
|
||||||
JMP GetSpriteID
|
JMP GetSpriteID
|
||||||
@@ -181,7 +181,7 @@ GetSpritePalette:
|
|||||||
RTL
|
RTL
|
||||||
.specialHandling
|
.specialHandling
|
||||||
CMP.b #$FD : BNE ++ ; Progressive Sword
|
CMP.b #$FD : BNE ++ ; Progressive Sword
|
||||||
LDA HighestSword
|
LDA.l HighestSword
|
||||||
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
||||||
LDA.l ProgressiveSwordReplacement
|
LDA.l ProgressiveSwordReplacement
|
||||||
JMP GetSpritePalette
|
JMP GetSpritePalette
|
||||||
@@ -194,7 +194,7 @@ RTL
|
|||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$08 : RTL
|
LDA.b #$08 : RTL
|
||||||
++ : CMP.b #$FE : BNE ++ ; Progressive Shield
|
++ : CMP.b #$FE : BNE ++ ; Progressive Shield
|
||||||
LDA HighestShield
|
LDA.l HighestShield
|
||||||
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
|
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
|
||||||
LDA.l ProgressiveShieldReplacement
|
LDA.l ProgressiveShieldReplacement
|
||||||
JMP GetSpritePalette
|
JMP GetSpritePalette
|
||||||
@@ -205,7 +205,7 @@ RTL
|
|||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$08 : RTL
|
LDA.b #$08 : RTL
|
||||||
++ : CMP.b #$FF : BNE ++ ; Progressive Armor
|
++ : CMP.b #$FF : BNE ++ ; Progressive Armor
|
||||||
LDA HighestMail
|
LDA.l HighestMail
|
||||||
CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
|
CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
|
||||||
LDA.l ProgressiveArmorReplacement
|
LDA.l ProgressiveArmorReplacement
|
||||||
JMP GetSpritePalette
|
JMP GetSpritePalette
|
||||||
@@ -214,12 +214,12 @@ RTL
|
|||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
++ : CMP.b #$FC : BNE ++ ; Progressive Gloves
|
++ : CMP.b #$FC : BNE ++ ; Progressive Gloves
|
||||||
LDA GloveEquipment : BNE + ; No Gloves
|
LDA.l GloveEquipment : BNE + ; No Gloves
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$08 : RTL
|
LDA.b #$08 : RTL
|
||||||
++ : CMP.b #$F8 : BNE ++ ; Progressive Bow
|
++ : CMP.b #$F8 : BNE ++ ; Progressive Bow
|
||||||
LDA BowEquipment : INC : LSR
|
LDA.l BowEquipment : INC : LSR
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement
|
LDA.l ProgressiveBowReplacement
|
||||||
JMP GetSpritePalette
|
JMP GetSpritePalette
|
||||||
@@ -306,19 +306,19 @@ IsNarrowSprite:
|
|||||||
+ : JMP .continue
|
+ : JMP .continue
|
||||||
.notBottle
|
.notBottle
|
||||||
CMP.b #$5E : BNE ++ ; Progressive Sword
|
CMP.b #$5E : BNE ++ ; Progressive Sword
|
||||||
LDA HighestSword : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
LDA.l HighestSword : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
||||||
LDA.l ProgressiveSwordReplacement
|
LDA.l ProgressiveSwordReplacement
|
||||||
JSL.l IsNarrowSprite
|
JSL.l IsNarrowSprite
|
||||||
JMP .done
|
JMP .done
|
||||||
+ : JMP .continue
|
+ : JMP .continue
|
||||||
++ CMP.b #$5F : BNE ++ ; Progressive Shield
|
++ CMP.b #$5F : BNE ++ ; Progressive Shield
|
||||||
LDA HighestShield : BNE + : JMP .done ; No Shield
|
LDA.l HighestShield : BNE + : JMP .done ; No Shield
|
||||||
+ : CMP.l ProgressiveShieldLimit : !BLT .continue
|
+ : CMP.l ProgressiveShieldLimit : !BLT .continue
|
||||||
LDA.l ProgressiveShieldReplacement
|
LDA.l ProgressiveShieldReplacement
|
||||||
JSL.l IsNarrowSprite
|
JSL.l IsNarrowSprite
|
||||||
JMP .done
|
JMP .done
|
||||||
++ CMP.b #$60 : BNE ++ ; Progressive Armor
|
++ CMP.b #$60 : BNE ++ ; Progressive Armor
|
||||||
LDA HighestMail : CMP.l ProgressiveArmorLimit : !BLT .continue
|
LDA.l HighestMail : CMP.l ProgressiveArmorLimit : !BLT .continue
|
||||||
LDA.l ProgressiveArmorReplacement
|
LDA.l ProgressiveArmorReplacement
|
||||||
JSL.l IsNarrowSprite
|
JSL.l IsNarrowSprite
|
||||||
JMP .done
|
JMP .done
|
||||||
@@ -329,7 +329,7 @@ IsNarrowSprite:
|
|||||||
JSL.l GetRNGItemMulti
|
JSL.l GetRNGItemMulti
|
||||||
++ CMP.b #$64 : BEQ + ; Progressive Bow
|
++ CMP.b #$64 : BEQ + ; Progressive Bow
|
||||||
CMP.b #$65 : BNE .continue ; Progressive Bow (alt)
|
CMP.b #$65 : BNE .continue ; Progressive Bow (alt)
|
||||||
+ : LDA BowEquipment : INC : LSR
|
+ : LDA.l BowEquipment : INC : LSR
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement
|
LDA.l ProgressiveBowReplacement
|
||||||
JSL.l IsNarrowSprite
|
JSL.l IsNarrowSprite
|
||||||
@@ -384,23 +384,21 @@ RTL
|
|||||||
; LoadDynamicTileOAMTable
|
; LoadDynamicTileOAMTable
|
||||||
; in: A - Loot ID
|
; in: A - Loot ID
|
||||||
;-------------------------------------------------------------------------------- 20/847B
|
;-------------------------------------------------------------------------------- 20/847B
|
||||||
!SPRITE_OAM = "$7EC025"
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
LoadDynamicTileOAMTable:
|
LoadDynamicTileOAMTable:
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
|
|
||||||
PHA
|
PHA
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA.w #$0000 : STA.l !SPRITE_OAM
|
LDA.w #$0000 : STA.l SpriteOAM
|
||||||
STA.l !SPRITE_OAM+2
|
STA.l SpriteOAM+2
|
||||||
LDA.w #$0200 : STA.l !SPRITE_OAM+6
|
LDA.w #$0200 : STA.l SpriteOAM+6
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$24 : STA.l !SPRITE_OAM+4
|
LDA.b #$24 : STA.l SpriteOAM+4
|
||||||
|
|
||||||
LDA $01,s
|
LDA.b $01,s
|
||||||
|
|
||||||
JSL.l GetSpritePalette
|
JSL.l GetSpritePalette
|
||||||
STA !SPRITE_OAM+5 : STA !SPRITE_OAM+13
|
STA.l SpriteOAM+5 : STA.l SpriteOAM+13
|
||||||
PLA
|
PLA
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
JSL.l IsNarrowSprite : BCS .narrow
|
||||||
|
|
||||||
@@ -408,10 +406,10 @@ LoadDynamicTileOAMTable:
|
|||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA.w #$0000 : STA.l !SPRITE_OAM+7
|
LDA.w #$0000 : STA.l SpriteOAM+7
|
||||||
STA.l !SPRITE_OAM+14
|
STA.l SpriteOAM+14
|
||||||
LDA.w #$0800 : STA.l !SPRITE_OAM+9
|
LDA.w #$0800 : STA.l SpriteOAM+9
|
||||||
LDA.w #$3400 : STA.l !SPRITE_OAM+11
|
LDA.w #$3400 : STA.l SpriteOAM+11
|
||||||
|
|
||||||
.done
|
.done
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
@@ -425,35 +423,32 @@ RTS
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) - lol (May 25th, 2019)
|
; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) - lol (May 25th, 2019)
|
||||||
;-------------------------------------------------------------------------------- 2084B8
|
;-------------------------------------------------------------------------------- 2084B8
|
||||||
!SPRITE_OAM = "$7EC025"
|
|
||||||
!SKIP_EOR = "$7F5008"
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
DrawDynamicTile:
|
DrawDynamicTile:
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
JSL.l IsNarrowSprite : BCS .narrow
|
||||||
|
|
||||||
.full
|
.full
|
||||||
LDA.b #$01 : STA $06
|
LDA.b #$01 : STA.b Scrap06
|
||||||
LDA #$0C : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$0C : JSL.l OAM_AllocateFromRegionC
|
||||||
LDA #$02 : PHA
|
LDA.b #$02 : PHA
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
LDA.b #$02 : STA $06
|
LDA.b #$02 : STA.b Scrap06
|
||||||
LDA #$10 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$10 : JSL.l OAM_AllocateFromRegionC
|
||||||
LDA #$03 : PHA
|
LDA.b #$03 : PHA
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
LDA.b #!SPRITE_OAM>>0 : STA $08
|
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
||||||
LDA.b #!SPRITE_OAM>>8 : STA $09
|
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||||
STZ $07
|
STZ.b Scrap07
|
||||||
LDA #$7E : PHB : PHA : PLB
|
LDA.b #$7E : PHB : PHA : PLB
|
||||||
LDA.b #$01 : STA.l !SKIP_EOR
|
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||||
JSL Sprite_DrawMultiple_quantity_preset
|
JSL Sprite_DrawMultiple_quantity_preset
|
||||||
LDA.b #$00 : STA.l !SKIP_EOR
|
LDA.b #$00 : STA.l SpriteSkipEOR
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA $90 : !ADD.b #$08 : STA $90 ; leave the pointer in the right spot to draw the shadow, if desired
|
LDA.b $90 : !ADD.b #$08 : STA.b $90 ; leave the pointer in the right spot to draw the shadow, if desired
|
||||||
LDA $92 : INC #2 : STA $92
|
LDA.b $92 : INC #2 : STA.b $92
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -461,37 +456,36 @@ DrawDynamicTileNoShadow:
|
|||||||
JSL.l IsNarrowSprite : BCS .narrow
|
JSL.l IsNarrowSprite : BCS .narrow
|
||||||
|
|
||||||
.full
|
.full
|
||||||
LDA.b #$01 : STA $06
|
LDA.b #$01 : STA.b Scrap06
|
||||||
LDA #$04 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$04 : JSL.l OAM_AllocateFromRegionC
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
LDA.b #$02 : STA $06
|
LDA.b #$02 : STA.b Scrap06
|
||||||
LDA #$08 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$08 : JSL.l OAM_AllocateFromRegionC
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
LDA.b #!SPRITE_OAM>>0 : STA $08
|
LDA.b #SpriteOAM>>0 : STA.b Scrap06
|
||||||
LDA.b #!SPRITE_OAM>>8 : STA $09
|
LDA.b #SpriteOAM>>8 : STA.b Scrap06
|
||||||
STZ $07
|
STZ.b Scrap07
|
||||||
LDA #$7E : PHB : PHA : PLB
|
LDA.b #$7E : PHB : PHA : PLB
|
||||||
LDA.b #$01 : STA.l !SKIP_EOR
|
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||||
JSL Sprite_DrawMultiple_quantity_preset
|
JSL Sprite_DrawMultiple_quantity_preset
|
||||||
LDA Bob : BNE + : LDA.b #$00 : STA.l !SKIP_EOR : + ; Bob fix is conditional
|
LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA $90 : !ADD.b #$08 : STA $90
|
LDA.b $90 : !ADD.b #$08 : STA.b $90
|
||||||
LDA $92 : INC #2 : STA $92
|
LDA.b $92 : INC #2 : STA.b $92
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!TILE_UPLOAD_OFFSET_OVERRIDE = "$7F5042"
|
|
||||||
LoadModifiedTileBufferAddress:
|
LoadModifiedTileBufferAddress:
|
||||||
PHA
|
PHA
|
||||||
LDA !TILE_UPLOAD_OFFSET_OVERRIDE : BEQ +
|
LDA.l TileUploadOffsetOverride : BEQ +
|
||||||
TAX
|
TAX
|
||||||
LDY.w #$0002
|
LDY.w #$0002
|
||||||
LDA.w #$0000 : STA !TILE_UPLOAD_OFFSET_OVERRIDE
|
LDA.w #$0000 : STA.l TileUploadOffsetOverride
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
LDX.w #$2D40
|
LDX.w #$2D40
|
||||||
@@ -510,23 +504,23 @@ Sprite_IsOnscreen:
|
|||||||
JSR _Sprite_IsOnscreen_DoWork
|
JSR _Sprite_IsOnscreen_DoWork
|
||||||
BCS +
|
BCS +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA $E2 : PHA : !SUB.w #$0F : STA $E2
|
LDA.b $E2 : PHA : !SUB.w #$0F : STA.b $E2
|
||||||
LDA $E8 : PHA : !SUB.w #$0F : STA $E8
|
LDA.b $E8 : PHA : !SUB.w #$0F : STA.b $E8
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSR _Sprite_IsOnscreen_DoWork
|
JSR _Sprite_IsOnscreen_DoWork
|
||||||
REP #$20
|
REP #$20
|
||||||
PLA : STA $E8
|
PLA : STA.b $E8
|
||||||
PLA : STA $E2
|
PLA : STA.b $E2
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
_Sprite_IsOnscreen_DoWork:
|
_Sprite_IsOnscreen_DoWork:
|
||||||
LDA $0D10, X : CMP $E2
|
LDA.w $0D10, X : CMP.b $E2
|
||||||
LDA $0D30, X : SBC $E3 : BNE .offscreen
|
LDA.w $0D30, X : SBC.b $E3 : BNE .offscreen
|
||||||
|
|
||||||
LDA $0D00, X : CMP $E8
|
LDA.w $0D00, X : CMP.b $E8
|
||||||
LDA $0D20, X : SBC $E9 : BNE .offscreen
|
LDA.w $0D20, X : SBC.b $E9 : BNE .offscreen
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
.offscreen
|
.offscreen
|
||||||
@@ -543,80 +537,63 @@ RTS
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Copied from bank $06
|
; Copied from bank $06
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!spr_y_lo = $00
|
|
||||||
!spr_y_hi = $01
|
|
||||||
|
|
||||||
!spr_x_lo = $02
|
|
||||||
!spr_x_hi = $03
|
|
||||||
|
|
||||||
!spr_y_screen_rel = $06
|
|
||||||
!spr_x_screen_rel = $07
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Sprite_GetScreenRelativeCoords:
|
Sprite_GetScreenRelativeCoords:
|
||||||
STY $0B
|
STY.b Scrap0B
|
||||||
|
|
||||||
STA $08
|
STA.b Scrap08
|
||||||
|
|
||||||
LDA $0D00, X : STA $00
|
LDA.w $0D00, X : STA.b Scrap00
|
||||||
!SUB $E8 : STA $06
|
!SUB $E8 : STA.b Scrap06
|
||||||
LDA $0D20, X : STA $01
|
LDA.w $0D20, X : STA.b Scrap01
|
||||||
|
|
||||||
LDA $0D10, X : STA $02
|
LDA.w $0D10, X : STA.b Scrap02
|
||||||
!SUB $E2 : STA $07
|
!SUB $E2 : STA.b Scrap07
|
||||||
LDA $0D30, X : STA $03
|
LDA.w $0D30, X : STA.b Scrap03
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; SkipDrawEOR - Shims in Bank05.asm : 2499
|
; SkipDrawEOR - Shims in Bank05.asm : 2499
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!SKIP_EOR = "$7F5008"
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
SkipDrawEOR:
|
SkipDrawEOR:
|
||||||
LDA.l !SKIP_EOR : BEQ .normal
|
LDA.l SpriteSkipEOR : BEQ .normal
|
||||||
LDA.w #$0000 : STA.l !SKIP_EOR
|
LDA.w #$0000 : STA.l SpriteSkipEOR
|
||||||
LDA $04 : AND.w #$F0FF : STA $04
|
LDA.w Scrap04 : AND.w #$F0FF : STA.w Scrap04
|
||||||
.normal
|
.normal
|
||||||
LDA ($08), Y : EOR $04 ; thing we wrote over
|
LDA.b ($08), Y : EOR.w Scrap04 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; HexToDec
|
; HexToDec
|
||||||
; in: A(w) - Word to Convert
|
; in: A(w) - Word to Convert
|
||||||
; out: $7F5003 - $7F5007 (high - low)
|
; out: $7F5004 - $7F5007 (high - low)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HexToDec:
|
HexToDec:
|
||||||
PHA
|
PHA
|
||||||
PHA
|
PHA
|
||||||
LDA.w #$9090
|
LDA.w #$9090
|
||||||
STA $04 : STA $06 ; temporarily store our decimal values here for speed
|
STA.b Scrap04 : STA.b Scrap06 ; temporarily store our decimal values here for speed
|
||||||
PLA
|
PLA
|
||||||
; as far as i can tell we never convert a value larger than 9999, no point in wasting time on this?
|
|
||||||
; -
|
|
||||||
; CMP.w #10000 : !BLT +
|
|
||||||
; INC $03
|
|
||||||
; !SUB.w #10000 : BRA -
|
|
||||||
; +
|
|
||||||
-
|
-
|
||||||
CMP.w #1000 : !BLT +
|
CMP.w #1000 : !BLT +
|
||||||
INC $04
|
INC.b Scrap04
|
||||||
!SUB.w #1000 : BRA -
|
!SUB.w #1000 : BRA -
|
||||||
+ -
|
+ -
|
||||||
CMP.w #100 : !BLT +
|
CMP.w #100 : !BLT +
|
||||||
INC $05
|
INC.b Scrap05
|
||||||
!SUB.w #100 : BRA -
|
!SUB.w #100 : BRA -
|
||||||
+ -
|
+ -
|
||||||
CMP.w #10 : !BLT +
|
CMP.w #10 : !BLT +
|
||||||
INC $06
|
INC.b Scrap06
|
||||||
!SUB.w #10 : BRA -
|
!SUB.w #10 : BRA -
|
||||||
+ -
|
+ -
|
||||||
CMP.w #1 : !BLT +
|
CMP.w #1 : !BLT +
|
||||||
INC $07
|
INC.b Scrap07
|
||||||
!SUB.w #1 : BRA -
|
!SUB.w #1 : BRA -
|
||||||
+
|
+
|
||||||
LDA.b $04 : STA $7F5004 ; move to digit storage
|
LDA.b Scrap04 : STA.l $7F5004 ; move to digit storage
|
||||||
LDA.b $06 : STA $7F5006
|
LDA.b Scrap06 : STA.l $7F5006
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -655,27 +632,27 @@ db #00, #01, #01, #02, #01, #02, #02, #03, #01, #02, #02, #03, #02, #03, #03, #0
|
|||||||
; PHA
|
; PHA
|
||||||
; PHA
|
; PHA
|
||||||
; LDA.w #$9090
|
; LDA.w #$9090
|
||||||
; STA $7F5003 : STA $7F5005 : STA $7F5006 ; clear digit storage
|
; STA.l $7F5003 : STA.l $7F5005 : STA.l $7F5006 ; clear digit storage
|
||||||
; PLA
|
; PLA
|
||||||
; -
|
; -
|
||||||
; CMP.w #10000 : !BLT +
|
; CMP.w #10000 : !BLT +
|
||||||
; PHA : SEP #$20 : LDA $7F5003 : INC : STA $7F5003 : REP #$20 : PLA
|
; PHA : SEP #$20 : LDA.l $7F5003 : INC : STA.l $7F5003 : REP #$20 : PLA
|
||||||
; !SUB.w #10000 : BRA -
|
; !SUB.w #10000 : BRA -
|
||||||
; + -
|
; + -
|
||||||
; CMP.w #1000 : !BLT +
|
; CMP.w #1000 : !BLT +
|
||||||
; PHA : SEP #$20 : LDA $7F5004 : INC : STA $7F5004 : REP #$20 : PLA
|
; PHA : SEP #$20 : LDA.l $7F5004 : INC : STA.l $7F5004 : REP #$20 : PLA
|
||||||
; !SUB.w #1000 : BRA -
|
; !SUB.w #1000 : BRA -
|
||||||
; + -
|
; + -
|
||||||
; CMP.w #100 : !BLT +
|
; CMP.w #100 : !BLT +
|
||||||
; PHA : SEP #$20 : LDA $7F5005 : INC : STA $7F5005 : REP #$20 : PLA
|
; PHA : SEP #$20 : LDA.l $7F5005 : INC : STA.l $7F5005 : REP #$20 : PLA
|
||||||
; !SUB.w #100 : BRA -
|
; !SUB.w #100 : BRA -
|
||||||
; + -
|
; + -
|
||||||
; CMP.w #10 : !BLT +
|
; CMP.w #10 : !BLT +
|
||||||
; PHA : SEP #$20 : LDA $7F5006 : INC : STA $7F5006 : REP #$20 : PLA
|
; PHA : SEP #$20 : LDA.l $7F5006 : INC : STA.l $7F5006 : REP #$20 : PLA
|
||||||
; !SUB.w #10 : BRA -
|
; !SUB.w #10 : BRA -
|
||||||
; + -
|
; + -
|
||||||
; CMP.w #1 : !BLT +
|
; CMP.w #1 : !BLT +
|
||||||
; PHA : SEP #$20 : LDA $7F5007 : INC : STA $7F5007 : REP #$20 : PLA
|
; PHA : SEP #$20 : LDA.l $7F5007 : INC : STA.l $7F5007 : REP #$20 : PLA
|
||||||
; !SUB.w #1 : BRA -
|
; !SUB.w #1 : BRA -
|
||||||
; +
|
; +
|
||||||
; PLA
|
; PLA
|
||||||
@@ -691,13 +668,13 @@ db #00, #01, #01, #02, #01, #02, #02, #03, #01, #02, #02, #03, #02, #03, #03, #0
|
|||||||
WriteVRAMStripe:
|
WriteVRAMStripe:
|
||||||
PHX
|
PHX
|
||||||
LDX $1000 ; get pointer
|
LDX $1000 ; get pointer
|
||||||
AND.w #$7F : STA $1002, X : INX #2 ; set destination
|
AND.w #$7F : STA.w $1002, X : INX #2 ; set destination
|
||||||
PLA : ASL : AND.w #$7FFF : ORA.w #$7000 : STA $1002, X : INX #2 ; set length and enable RLE
|
PLA : ASL : AND.w #$7FFF : ORA.w #$7000 : STA.w $1002, X : INX #2 ; set length and enable RLE
|
||||||
TYA : STA $1002, X : INX #2 ; set tile
|
TYA : STA.w $1002, X : INX #2 ; set tile
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$FF : STA $1002, X
|
LDA.b #$FF : STA.w $1002, X
|
||||||
STX $1000
|
STX.w $1000
|
||||||
LDA.b #01 : STA $14
|
LDA.b #01 : STA.b $14
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -709,27 +686,27 @@ RTL
|
|||||||
; in: Y(w) - Address of Data to Copy
|
; in: Y(w) - Address of Data to Copy
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
WriteVRAMBlock:
|
WriteVRAMBlock:
|
||||||
PHX
|
PHX
|
||||||
LDX $1000 ; get pointer
|
LDX.w $1000 ; get pointer
|
||||||
AND.w #$7F : STA $1002, X : INX #2 ; set destination
|
AND.w #$7F : STA.w $1002, X : INX #2 ; set destination
|
||||||
PLA : ASL : AND.w #$3FFF : STA $1002, X : INX #2 ; set length
|
PLA : ASL : AND.w #$3FFF : STA.w $1002, X : INX #2 ; set length
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
TYX ; set X to source
|
TYX ; set X to source
|
||||||
PHA
|
PHA
|
||||||
TXA : !ADD #$1002 : TAY ; set Y to dest
|
TXA : !ADD #$1002 : TAY ; set Y to dest
|
||||||
PLA
|
PLA
|
||||||
;A is already the value we need for mvn
|
;A is already the value we need for mvn
|
||||||
MVN $7F7E ; currently we transfer from our buffers in 7F to the vram buffer in 7E
|
MVN $7F7E ; currently we transfer from our buffers in 7F to the vram buffer in 7E
|
||||||
|
|
||||||
!ADD 1, s ; add the length in A to the stack pointer on the top of the stack
|
!ADD 1, s ; add the length in A to the stack pointer on the top of the stack
|
||||||
PLX : TAX ; pull and promptly ignore, copying the value we just got over it
|
PLX : TAX ; pull and promptly ignore, copying the value we just got over it
|
||||||
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$FF : STA $1002, X
|
LDA.b #$FF : STA.w $1002, X
|
||||||
STX $1000
|
STX.w $1000
|
||||||
LDA.b #01 : STA $14
|
LDA.b #01 : STA.w $14
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;Byte 1 byte 2 Byte 3 byte 4
|
;Byte 1 byte 2 Byte 3 byte 4
|
||||||
|
|||||||
304
vanillalabels.asm
Normal file
304
vanillalabels.asm
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
org $008781
|
||||||
|
UseImplicitRegIndexedLocalJumpTable:
|
||||||
|
|
||||||
|
org $00879c
|
||||||
|
UseImplicitRegIndexedLongJumpTable:
|
||||||
|
|
||||||
|
org $008333
|
||||||
|
Vram_EraseTilemaps_triforce:
|
||||||
|
|
||||||
|
org $008913
|
||||||
|
Sound_LoadLightWorldSongBank:
|
||||||
|
org $00891D
|
||||||
|
.do_load
|
||||||
|
|
||||||
|
org $00893D
|
||||||
|
EnableForceBlank:
|
||||||
|
|
||||||
|
DungeonMask = $0098C0
|
||||||
|
|
||||||
|
org $00D308
|
||||||
|
DecompSwordGfx:
|
||||||
|
|
||||||
|
org $00D348
|
||||||
|
DecompShieldGfx:
|
||||||
|
|
||||||
|
org $00D463
|
||||||
|
Tagalong_LoadGfx:
|
||||||
|
|
||||||
|
org $00D51B
|
||||||
|
GetAnimatedSpriteTile:
|
||||||
|
|
||||||
|
org $00D52D
|
||||||
|
GetAnimatedSpriteTile_variable:
|
||||||
|
|
||||||
|
org $00D84E
|
||||||
|
Attract_DecompressStoryGfx:
|
||||||
|
|
||||||
|
org $00E529
|
||||||
|
LoadSelectScreenGfx:
|
||||||
|
|
||||||
|
org $00F945
|
||||||
|
PrepDungeonExit:
|
||||||
|
|
||||||
|
org $00FDEE
|
||||||
|
Mirror_InitHdmaSettings:
|
||||||
|
|
||||||
|
org $01873A
|
||||||
|
Dungeon_LoadRoom:
|
||||||
|
|
||||||
|
org $02821E
|
||||||
|
Module_PreDungeon:
|
||||||
|
org $028296
|
||||||
|
.setAmbientSfx
|
||||||
|
|
||||||
|
org $02A0A8
|
||||||
|
Dungeon_SaveRoomData:
|
||||||
|
|
||||||
|
org $02A0BE
|
||||||
|
Dungeon_SaveRoomData_justKeys:
|
||||||
|
|
||||||
|
org $02B861
|
||||||
|
Dungeon_SaveRoomQuadrantData:
|
||||||
|
|
||||||
|
org $02FD8A ; 17D8A - Bank0E.asm: 3732 Note: Different bank
|
||||||
|
LoadGearPalettes_bunny:
|
||||||
|
|
||||||
|
org $02FD95 ; 17D95 - Bank0E.asm: 3742 Note: Different bank
|
||||||
|
LoadGearPalettes_variable:
|
||||||
|
|
||||||
|
org $02FEAB
|
||||||
|
Filter_Majorly_Whiten_Color:
|
||||||
|
|
||||||
|
org $05A51D
|
||||||
|
Sprite_SpawnFallingItem:
|
||||||
|
|
||||||
|
org $05DF6C ; 02DF6C - Bank05.asm : 2445
|
||||||
|
Sprite_DrawMultiple:
|
||||||
|
|
||||||
|
org $05DF70 ; 02DF70 - Bank05.asm : 2454
|
||||||
|
Sprite_DrawMultiple_quantity_preset:
|
||||||
|
|
||||||
|
org $05DF75 ; 02DF75 - Bank05.asm : 2461
|
||||||
|
Sprite_DrawMultiple_player_deferred:
|
||||||
|
|
||||||
|
org $05E1A7 ; 02E1A7 - Bank05.asm : 2592
|
||||||
|
Sprite_ShowSolicitedMessageIfPlayerFacing:
|
||||||
|
|
||||||
|
org $05E1F0
|
||||||
|
Sprite_ShowMessageFromPlayerContact:
|
||||||
|
|
||||||
|
org $05E219
|
||||||
|
Sprite_ShowMessageUnconditional:
|
||||||
|
|
||||||
|
org $05EC96
|
||||||
|
Sprite_ZeldaLong:
|
||||||
|
|
||||||
|
org $0680FA
|
||||||
|
Player_ApplyRumbleToSprites:
|
||||||
|
|
||||||
|
org $0683E6
|
||||||
|
Utility_CheckIfHitBoxesOverlapLong:
|
||||||
|
|
||||||
|
org $06A7DB
|
||||||
|
Chicken_SpawnAvengerChicken: ; returns short
|
||||||
|
|
||||||
|
org $06DC5C
|
||||||
|
Sprite_DrawShadowLong:
|
||||||
|
|
||||||
|
org $06DD40
|
||||||
|
DashKey_Draw:
|
||||||
|
|
||||||
|
org $06DBF8
|
||||||
|
Sprite_PrepAndDrawSingleLargeLong:
|
||||||
|
|
||||||
|
org $06DC00
|
||||||
|
Sprite_PrepAndDrawSingleSmallLong:
|
||||||
|
|
||||||
|
org $06EA18
|
||||||
|
Sprite_ApplySpeedTowardsPlayerLong:
|
||||||
|
|
||||||
|
org $06EAA6
|
||||||
|
Sprite_DirectionToFacePlayerLong:
|
||||||
|
|
||||||
|
org $06F12F
|
||||||
|
Sprite_CheckDamageToPlayerSameLayerLong:
|
||||||
|
|
||||||
|
org $06F86A
|
||||||
|
OAM_AllocateDeferToPlayerLong:
|
||||||
|
|
||||||
|
org $0791B3
|
||||||
|
Player_HaltDashAttackLong:
|
||||||
|
|
||||||
|
org $07999D
|
||||||
|
Link_ReceiveItem:
|
||||||
|
|
||||||
|
org $07E68F
|
||||||
|
Unknown_Method_0: ; In US version disassembly simply called "$3E6A6 IN ROM"
|
||||||
|
|
||||||
|
org $07F4AA
|
||||||
|
Sprite_CheckIfPlayerPreoccupied:
|
||||||
|
|
||||||
|
org $08C3AE
|
||||||
|
Ancilla_ReceiveItem:
|
||||||
|
|
||||||
|
org $08CE93
|
||||||
|
Ancilla_BreakTowerSeal_draw_single_crystal:
|
||||||
|
|
||||||
|
org $08CEC3
|
||||||
|
Ancilla_BreakTowerSeal_stop_spawning_sparkles:
|
||||||
|
|
||||||
|
org $08CF59
|
||||||
|
BreakTowerSeal_ExecuteSparkles:
|
||||||
|
|
||||||
|
org $08F710
|
||||||
|
Ancilla_SetOam_XY_Long:
|
||||||
|
|
||||||
|
org $0985E2 ; (break on $0985E4)
|
||||||
|
AddReceivedItem:
|
||||||
|
|
||||||
|
org $098BAD
|
||||||
|
AddPendantOrCrystal:
|
||||||
|
|
||||||
|
org $098CFD
|
||||||
|
AddWeathervaneExplosion:
|
||||||
|
|
||||||
|
org $0993DF
|
||||||
|
AddDashTremor:
|
||||||
|
|
||||||
|
org $099D04
|
||||||
|
AddAncillaLong:
|
||||||
|
|
||||||
|
org $099D1A
|
||||||
|
Ancilla_CheckIfAlreadyExistsLong:
|
||||||
|
|
||||||
|
org $09AE64
|
||||||
|
Sprite_SetSpawnedCoords:
|
||||||
|
|
||||||
|
org $09AD58
|
||||||
|
GiveRupeeGift:
|
||||||
|
|
||||||
|
org $0ABA4F
|
||||||
|
OverworldMap_InitGfx:
|
||||||
|
|
||||||
|
org $0ABA99
|
||||||
|
OverworldMap_DarkWorldTilemap:
|
||||||
|
|
||||||
|
org $0ABAB9
|
||||||
|
OverworldMap_LoadSprGfx:
|
||||||
|
|
||||||
|
org $0CD7D1
|
||||||
|
NameFile_MakeScreenVisible:
|
||||||
|
org $0CDB3E
|
||||||
|
InitializeSaveFile:
|
||||||
|
org $0CDBC0
|
||||||
|
InitializeSaveFile_build_checksum:
|
||||||
|
|
||||||
|
org $0DBA71
|
||||||
|
GetRandomInt:
|
||||||
|
|
||||||
|
org $0DBA80
|
||||||
|
OAM_AllocateFromRegionA:
|
||||||
|
org $0DBA84
|
||||||
|
OAM_AllocateFromRegionB:
|
||||||
|
org $0DBA88
|
||||||
|
OAM_AllocateFromRegionC:
|
||||||
|
org $0DBA8C
|
||||||
|
OAM_AllocateFromRegionD:
|
||||||
|
org $0DBA90
|
||||||
|
OAM_AllocateFromRegionE:
|
||||||
|
org $0DBA94
|
||||||
|
OAM_AllocateFromRegionF:
|
||||||
|
|
||||||
|
org $0DBB67
|
||||||
|
Sound_SetSfxPanWithPlayerCoords:
|
||||||
|
|
||||||
|
org $0DBB6E
|
||||||
|
Sound_SetSfx1PanLong:
|
||||||
|
|
||||||
|
org $0DBB7C
|
||||||
|
Sound_SetSfx2PanLong:
|
||||||
|
|
||||||
|
org $0DBB8A
|
||||||
|
Sound_SetSfx3PanLong:
|
||||||
|
|
||||||
|
org $0DDB7F
|
||||||
|
HUD_RefreshIconLong:
|
||||||
|
|
||||||
|
org $0DDD32
|
||||||
|
Equipment_UpdateEquippedItemLong:
|
||||||
|
|
||||||
|
org $0DE01E ; 6E10E - equipment.asm : 787
|
||||||
|
BottleMenu_movingOn:
|
||||||
|
|
||||||
|
org $0DE346
|
||||||
|
RestoreNormalMenu:
|
||||||
|
|
||||||
|
org $0DE395
|
||||||
|
Equipment_SearchForEquippedItemLong:
|
||||||
|
|
||||||
|
org $0DE9C8
|
||||||
|
DrawProgressIcons: ; this returns short
|
||||||
|
|
||||||
|
org $0DED29
|
||||||
|
DrawEquipment: ; this returns short
|
||||||
|
|
||||||
|
org $0DFA78
|
||||||
|
HUD_RebuildLong:
|
||||||
|
|
||||||
|
org $0DFA88
|
||||||
|
HUD_RebuildIndoor_Palace:
|
||||||
|
|
||||||
|
org $0DFA88
|
||||||
|
HUD_RebuildLong2:
|
||||||
|
|
||||||
|
org $0EEE10
|
||||||
|
Messaging_Text:
|
||||||
|
|
||||||
|
org $0FFD94
|
||||||
|
Overworld_TileAttr:
|
||||||
|
|
||||||
|
org $1BC97C
|
||||||
|
Overworld_DrawPersistentMap16:
|
||||||
|
|
||||||
|
org $1BED03
|
||||||
|
Palette_Sword:
|
||||||
|
|
||||||
|
org $1BED29
|
||||||
|
Palette_Shield:
|
||||||
|
|
||||||
|
org $1BEDF9
|
||||||
|
Palette_ArmorAndGloves:
|
||||||
|
|
||||||
|
org $1BEE52
|
||||||
|
Palette_Hud:
|
||||||
|
|
||||||
|
org $1BEF96
|
||||||
|
Palette_SelectScreen:
|
||||||
|
|
||||||
|
org $1CFAAA
|
||||||
|
ShopKeeper_RapidTerminateReceiveItem:
|
||||||
|
|
||||||
|
org $1CF500
|
||||||
|
Sprite_NullifyHookshotDrag:
|
||||||
|
|
||||||
|
org $1CF537
|
||||||
|
Ancilla_CheckForAvailableSlot:
|
||||||
|
|
||||||
|
org $1DE9B6
|
||||||
|
Filter_MajorWhitenMain:
|
||||||
|
|
||||||
|
org $1DF65D
|
||||||
|
Sprite_SpawnDynamically:
|
||||||
|
|
||||||
|
org $1DF65F
|
||||||
|
Sprite_SpawnDynamically_arbitrary:
|
||||||
|
|
||||||
|
org $1DFD4B
|
||||||
|
DiggingGameGuy_AttemptPrizeSpawn:
|
||||||
|
|
||||||
|
org $1EDE28
|
||||||
|
Sprite_GetEmptyBottleIndex: ; this is totally in sprite_bees.asm
|
||||||
|
|
||||||
|
org $1EF4E7
|
||||||
|
Sprite_PlayerCantPassThrough:
|
||||||
Reference in New Issue
Block a user