diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 040122b..e029752 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -218,6 +218,11 @@ GFX_Hash_Alphabet: incbin hashalphabet.chr.gfx warnpc $31C001 +org $31C000 +IcePalaceFloorGfx: +incbin ice_palace_floor.bin +warnpc $31C801 + org $338000 GFX_HUD_Palette: incbin hudpalette.pal @@ -327,6 +332,9 @@ db GFX_HUD_Main org $008781 UseImplicitRegIndexedLocalJumpTable: +org $00879c +UseImplicitRegIndexedLongJumpTable: + org $008333 Vram_EraseTilemaps_triforce: diff --git a/entrances.asm b/entrances.asm index 6f7fe79..ca4a318 100644 --- a/entrances.asm +++ b/entrances.asm @@ -27,14 +27,14 @@ RTS SmithDoorCheck: LDA.l SmithTravelsFreely : AND.w #$00FF : BEQ .orig ;If SmithTravelsFreely is set Frog/Smith can enter multi-entrance overworld doors - JMP.l Overworld_Entrance_BRANCH_RHO + JML.l Overworld_Entrance_BRANCH_RHO .orig ; The rest is equivlent to what we overwrote CPX.w #$0076 : !BGE + - JMP.l Overworld_Entrance_BRANCH_LAMBDA + JML.l Overworld_Entrance_BRANCH_LAMBDA + -JMP.l Overworld_Entrance_BRANCH_RHO +JML.l Overworld_Entrance_BRANCH_RHO ;-------------------------------------------------------------------------------- AllowStartFromSingleEntranceCave: ; 16 Bit A, 16 bit XY diff --git a/flute.asm b/flute.asm index 9afaaef..b803366 100644 --- a/flute.asm +++ b/flute.asm @@ -54,8 +54,8 @@ RTL FluteBoy: LDA $10 : CMP.b #$1A : BEQ + LDA.b #$01 : STA $0FDD - JMP.l FluteBoy_Abort + JML.l FluteBoy_Abort + LDA $0D80, X : CMP.b #$03 ; thing we wrote over -JMP.l FluteBoy_Continue -;-------------------------------------------------------------------------------- \ No newline at end of file +JML.l FluteBoy_Continue +;-------------------------------------------------------------------------------- diff --git a/goalitem.asm b/goalitem.asm index e304441..cbafae9 100644 --- a/goalitem.asm +++ b/goalitem.asm @@ -29,9 +29,9 @@ DrawGoalIndicator: BRA .done .skip LDA.w #$207F - STA !DRAW_ADDRESS, X : INX # - STA !DRAW_ADDRESS, X : INX # - STA !DRAW_ADDRESS, X : INX # + STA !DRAW_ADDRESS, X : INX #2 + STA !DRAW_ADDRESS, X : INX #2 + STA !DRAW_ADDRESS, X : INX #2 .done PLX RTL diff --git a/hashalphabet.asm b/hashalphabet.asm index f8b4862..b3d38c7 100644 --- a/hashalphabet.asm +++ b/hashalphabet.asm @@ -184,8 +184,8 @@ LoadAlphabetTilemap: INX #6 : INY CPX #25 : !BLT - - JSR DMAAlphabetTilemap: + JSR DMAAlphabetTilemap PLP : PLY : PLX : PLA RTL ;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index a7e2599..5cb18df 100644 --- a/hooks.asm +++ b/hooks.asm @@ -146,9 +146,6 @@ org $0288D1 ; <- 108D1 - Bank02.asm : 1690 (STZ $0646) JSL.l IndoorSubtileTransitionCounter NOP #2 ;-------------------------------------------------------------------------------- -org $02895D ; <- 1095D - Bank02.asm : 1812 (JSL Dungeon_LoadRoom) -JSL.l IndoorTileTransitionCounter -;-------------------------------------------------------------------------------- org $07B574 ; <- 3B574 - Bank07.asm : 8519 (LDA.b #$01 : STA $02E9) JSL.l IncrementChestCounter NOP @@ -414,7 +411,7 @@ 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 -;JMP.l GetFairySword +;JML.l GetFairySword ;NOP #12 org $06C936 ; <- 34936 - sprite_ponds.asm : 952 PyramidFairy_BRANCH_IOTA: @@ -432,7 +429,7 @@ org $068A14 ; <- 30A14 - sprite_prep.asm : 716 NOP #8 ; fix bomb shop spawn for dwarfless big bomb ;-------------------------------------------------------------------------------- org $06B489 ; <- 33489 - sprite_smithy_bros.asm : 473 (LDA $7EF359 : CMP.b #$03 : BCS .tempered_sword_or_better) -JMP.l GetSmithSword +JML.l GetSmithSword NOP #4 Smithy_DoesntHaveSword: org $06B49D ; <- 3349D - sprite_smithy_bros.asm : 485 (.tempered_sword_or_better) @@ -489,7 +486,7 @@ org $07B57B ; <- 3B57B - Bank07.asm : 8523 (BMI .cantOpen) NOP #2 ;-------------------------------------------------------------------------------- org $00D531 ; 5531 - Bank00.asm:3451 (LDY.b #$5D) -JMP.l GetAnimatedSpriteGfxFile +JML.l GetAnimatedSpriteGfxFile org $00D547 ; 5547 - Bank00.asm:3467 (JSR Decomp_spr_high) GetAnimatedSpriteGfxFile_return: @@ -849,7 +846,7 @@ org $08C6F9 ; 446F9 - ancilla_receive_item.asm : 538 - (LDA AddReceiveItem.prope LDA AddReceivedItemExpanded_properties, X ;-------------------------------------------------------------------------------- org $08C70F ; 4470F - ancilla_receive_item.asm : 550 - (LDA .wide_item_flag, X : STA ($92), Y ; AddReceiveItem.wide_item_flag? ; LDA.b #$00 : STA ($92), Y in the japanese version) -JMP.l LoadNarrowObject +JML.l LoadNarrowObject NOP LoadNarrowObjectReturn: ;-------------------------------------------------------------------------------- @@ -1433,10 +1430,10 @@ org $05ED10 ; <- 2ED10 - sprite_zelda.asm : 233 - (LDA.b #$19 : STA $012C) NOP #5 ;-------------------------------------------------------------------------------- org $1ECE47 ; <- F4E47 - sprite_crystal_maiden.asm : 220 -JMP.l MaidenCrystalScript +JML.l MaidenCrystalScript ;-------------------------------------------------------------------------------- org $1ECCEB ; <- F4CEB - sprite_crystal_maiden.asm : 25 ; skip all palette nonsense -JMP.l SkipCrystalPalette +JML.l SkipCrystalPalette org $1ECD39 SkipCrystalPalette: ;-------------------------------------------------------------------------------- @@ -1836,7 +1833,7 @@ org $06B048 ; <- 33048 JSL.l ItemCheck_TreeKid3 org $06AF59 ; <- 32F59 - sprite_flute_boy.asm : 36 (LDA $0D80, X : CMP.b #$03 : BEQ .invisible) -JMP.l FluteBoy +JML.l FluteBoy FluteBoy_Abort: RTS FluteBoy_Continue: @@ -2092,13 +2089,13 @@ org $02895D ; <- Bank02.asm:1812 (JSL Dungeon_LoadRoom) JSL LoadRoomHook ;-------------------------------------------------------------------------------- org $028BE7 ; <- Bank02.asm:2299 (JSL Dungeon_LoadRoom) - JSL LoadRoomHook + JSL LoadRoomHook_noStats ;-------------------------------------------------------------------------------- org $029309 ; <- Bank02.asm:3533 (JSL Dungeon_LoadRoom) - JSL LoadRoomHook + JSL LoadRoomHook_noStats ;-------------------------------------------------------------------------------- org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom) - JSL LoadRoomHook + JSL LoadRoomHook_noStats ;================================================================================ ;================================================================================ @@ -2129,7 +2126,7 @@ org $07A055 ; <- Bank07.asm:5205 (LDA $0B99 : BEQ BRANCH_DELTA) JSL.l ArrowGame : NOP #14 org $07A06C ; <- Bank07.asm:5215 (LDA $7EF377 : BEQ BRANCH_EPSILON) -JSL.l DecrementArrows : SKIP #2 : NOP : LDA $7EF377 +JSL.l DecrementArrows : SKIP 2 : NOP : LDA $7EF377 ;================================================================================ ;================================================================================ diff --git a/icepalacegraphics.asm b/icepalacegraphics.asm index a91b799..f685a6b 100644 --- a/icepalacegraphics.asm +++ b/icepalacegraphics.asm @@ -70,7 +70,7 @@ ReloadingFloors: LDA.w #$0800 ; Length PHB ;MVN $7F, IcePalaceFloorGfx>>16 - MVN $A07F ; CHANGE THIS IF YOU MOVE THE FILE - kkat + MVN $B17F ; CHANGE THIS IF YOU MOVE THE GRAPHICS FILE - kkat PLB ; Pretend that we ran the original routine @@ -79,6 +79,3 @@ ReloadingFloors: STA $03 JML ReloadingFloorsCancel - -IcePalaceFloorGfx: - incbin ice_palace_floor.bin \ No newline at end of file diff --git a/inventory.asm b/inventory.asm index 3a7b4e2..e7817e1 100644 --- a/inventory.asm +++ b/inventory.asm @@ -888,32 +888,32 @@ RTL ; out: A - Loot OAM Table Index ; check if this is even still referenced anywhere ;-------------------------------------------------------------------------------- -GetWitchLootOAMTableIndex: - PHX - PHB : PHK : PLB - ;-------- - TAX : LDA .gfxSlots, X ; look up item gfx - PLB : PLX -RTL - -;DATA - Loot Identifier to Sprite ID -{ - .gfxSlots - db $FF, $FF, $FF, $FF, $05, $06, $FF, $0C - db $0B, $0D, $0A, $07, $13, $0E, $FF, $FF - - db $FF, $FF, $FF, $FF, $FF, $09, $FF, $FF - db $08, $FF, $FF, $10, $11, $12, $FF, $FF - - db $FF, $FF, $03, $04, $FF, $FF, $02, $FF - db $FF, $FF, $14, $15, $17, $16, $15, $17 - - db $16, $0F, $FF, $FF, $FF, $FF, $FF, $FF - db $FF, $FF, $FF, $FF, $FF, $FF, $02, $02 - - db $FF, $FF, $FF, $FF, $01, $FF, $FF, $FF - db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF -} +;GetWitchLootOAMTableIndex: +; PHX +; PHB : PHK : PLB +; ;-------- +; TAX : LDA .gfxSlots, X ; look up item gfx +; PLB : PLX +;RTL +; +;;DATA - Loot Identifier to Sprite ID +;{ +; .gfxSlots +; db $FF, $FF, $FF, $FF, $05, $06, $FF, $0C +; db $0B, $0D, $0A, $07, $13, $0E, $FF, $FF +; +; db $FF, $FF, $FF, $FF, $FF, $09, $FF, $FF +; db $08, $FF, $FF, $10, $11, $12, $FF, $FF +; +; db $FF, $FF, $03, $04, $FF, $FF, $02, $FF +; db $FF, $FF, $14, $15, $17, $16, $15, $17 +; +; db $16, $0F, $FF, $FF, $FF, $FF, $FF, $FF +; db $FF, $FF, $FF, $FF, $FF, $FF, $02, $02 +; +; db $FF, $FF, $FF, $FF, $01, $FF, $FF, $FF +; db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF +;} ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- diff --git a/maidencrystals.asm b/maidencrystals.asm index 769e6d3..cab0c24 100644 --- a/maidencrystals.asm +++ b/maidencrystals.asm @@ -23,5 +23,5 @@ MaidenCrystalScript: JSL.l MaybeWriteSRAMTrace -JMP $1ECF35 ; <- F4F35 - sprite_crystal_maiden.asm : 426 -;-------------------------------------------------------------------------------- \ No newline at end of file +JML.l $1ECF35 ; <- F4F35 - sprite_crystal_maiden.asm : 426 +;-------------------------------------------------------------------------------- diff --git a/newitems.asm b/newitems.asm index c1ff26b..0fac0aa 100755 --- a/newitems.asm +++ b/newitems.asm @@ -463,7 +463,7 @@ AddReceivedItemExpanded: PLX : PLA PHB : PHK ; we're skipping the corresponding instructions to grab the data bank - JMP.l AddReceivedItem+2 + JML.l AddReceivedItem+2 } ;-------------------------------------------------------------------------------- ;DATA AddReceivedItemExpanded @@ -1044,5 +1044,5 @@ RTS ActivateGoal: STZ $11 STZ $B0 -JMP.l StatsFinalPrep +JML.l StatsFinalPrep ;-------------------------------------------------------------------------------- diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index 3370293..fe27f5c 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -397,22 +397,22 @@ DrawHUDDungeonItems: LDA.w #$2810 : STA $1684 ; small keys icon SEP #$20 ; set 8-bit accumulator ; Small Keys - LDA.b #$16 : !ADD $7EF37D : STA $1686 : LDA.b #$28 : ADC #$00 : sta $1686+1 ; Hyrule Castle - LDA.b #$16 : !ADD $7EF380 : STA $1688 : LDA.b #$28 : ADC #$00 : sta $1688+1 ; Agahnims Tower + LDA.b #$16 : !ADD $7EF37D : STA $1686 : LDA.b #$28 : ADC #$00 : sta.w $1686+1 ; Hyrule Castle + LDA.b #$16 : !ADD $7EF380 : STA $1688 : LDA.b #$28 : ADC #$00 : sta.w $1688+1 ; Agahnims Tower - LDA.b #$16 : !ADD $7EF37E : STA $168C : LDA.b #$28 : ADC #$00 : sta $168C+1 ; Eastern - LDA.b #$16 : !ADD $7EF37F : STA $168E : LDA.b #$28 : ADC #$00 : sta $168E+1 ; Desert - LDA.b #$16 : !ADD $7EF386 : STA $1690 : LDA.b #$28 : ADC #$00 : sta $1690+1 ; Hera + LDA.b #$16 : !ADD $7EF37E : STA $168C : LDA.b #$28 : ADC #$00 : sta.w $168C+1 ; Eastern + LDA.b #$16 : !ADD $7EF37F : STA $168E : LDA.b #$28 : ADC #$00 : sta.w $168E+1 ; Desert + LDA.b #$16 : !ADD $7EF386 : STA $1690 : LDA.b #$28 : ADC #$00 : sta.w $1690+1 ; Hera - LDA.b #$16 : !ADD $7EF382 : STA $1694 : LDA.b #$28 : ADC #$00 : sta $1694+1 ; PoD - LDA.b #$16 : !ADD $7EF381 : STA $1696 : LDA.b #$28 : ADC #$00 : sta $1696+1 ; Swamp - LDA.b #$16 : !ADD $7EF384 : STA $1698 : LDA.b #$28 : ADC #$00 : sta $1698+1 ; Skull Woods - LDA.b #$16 : !ADD $7EF387 : STA $169A : LDA.b #$28 : ADC #$00 : sta $169A+1 ; Thieves Town - LDA.b #$16 : !ADD $7EF385 : STA $169C : LDA.b #$28 : ADC #$00 : sta $169C+1 ; Ice - LDA.b #$16 : !ADD $7EF383 : STA $169E : LDA.b #$28 : ADC #$00 : sta $169E+1 ; Mire - LDA.b #$16 : !ADD $7EF388 : STA $16A0 : LDA.b #$28 : ADC #$00 : sta $16A0+1 ; Turtle Rock + LDA.b #$16 : !ADD $7EF382 : STA $1694 : LDA.b #$28 : ADC #$00 : sta.w $1694+1 ; PoD + LDA.b #$16 : !ADD $7EF381 : STA $1696 : LDA.b #$28 : ADC #$00 : sta.w $1696+1 ; Swamp + LDA.b #$16 : !ADD $7EF384 : STA $1698 : LDA.b #$28 : ADC #$00 : sta.w $1698+1 ; Skull Woods + LDA.b #$16 : !ADD $7EF387 : STA $169A : LDA.b #$28 : ADC #$00 : sta.w $169A+1 ; Thieves Town + LDA.b #$16 : !ADD $7EF385 : STA $169C : LDA.b #$28 : ADC #$00 : sta.w $169C+1 ; Ice + LDA.b #$16 : !ADD $7EF383 : STA $169E : LDA.b #$28 : ADC #$00 : sta.w $169E+1 ; Mire + LDA.b #$16 : !ADD $7EF388 : STA $16A0 : LDA.b #$28 : ADC #$00 : sta.w $16A0+1 ; Turtle Rock - LDA.b #$16 : !ADD $7EF389 : STA $16A4 : LDA.b #$28 : ADC #$00 : sta $16A4+1 ; Ganon's Tower + LDA.b #$16 : !ADD $7EF389 : STA $16A4 : LDA.b #$28 : ADC #$00 : sta.w $16A4+1 ; Ganon's Tower REP #$20 ; set 16-bit accumulator ++ diff --git a/roomloading.asm b/roomloading.asm index 063f06f..0bb8b7b 100644 --- a/roomloading.asm +++ b/roomloading.asm @@ -1,10 +1,13 @@ LoadRoomHook: - JSL $01873A ; Dungeon_LoadRoom (Bank01.asm:726) + JSL.l IndoorTileTransitionCounter + + .noStats + JSL Dungeon_LoadRoom REP #$10 ; 16 bit XY LDX $A0 ; Room ID LDA RoomCallbackTable, X SEP #$10 ; 8 bit XY - JSL $00879c ; UseImplicitRegIndexedLocalJumpTable + JSL UseImplicitRegIndexedLongJumpTable ; Callback routines: dl NoCallback ; 00 dl IcePalaceBombosSE ; 01 diff --git a/shopkeeper.asm b/shopkeeper.asm index ad0c547..ff783c8 100644 --- a/shopkeeper.asm +++ b/shopkeeper.asm @@ -77,7 +77,7 @@ macro DrawDigit(value,offset) + LDA $0E : STA !BIGRAM, X : INX : INX LDA.w #56 : STA !BIGRAM, X : INX : INX - LDY $0A : TYA : ASL : TAY : LDA .digit_properties, Y : STA !BIGRAM, X : INX : INX + LDY $0A : TYA : ASL : TAY : LDA.w .digit_properties, Y : STA !BIGRAM, X : INX : INX LDA.w #$0000 : STA !BIGRAM, X : INX : INX LDA $0E : !ADD.w #$0008 : STA $0E ; move offset 8px right diff --git a/stats/main.asm b/stats/main.asm index b1b9b23..a1d3916 100755 --- a/stats/main.asm +++ b/stats/main.asm @@ -232,7 +232,7 @@ RenderCreditsStatCounter: ; XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA ; == Determine stat type == - LDA CreditsStats,y ; LLLL LLLL XXXX XTTL + LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL LSR AND #$0003 ; TT CMP.w #$0000 @@ -241,7 +241,7 @@ RenderCreditsStatCounter: .normalStat ; == Write Stripe header (VRAM address, i.e. tile coordinates) == - LDA CreditsStats,y ; LLLL LLLL XXXX XTTL + LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL LSR #3 AND #$001F ; X XXXX CLC @@ -272,7 +272,7 @@ RenderCreditsStatCounter: STA !ValueLow ; == Shift value == - LDA CreditsStats+2,y; CCC- ---- BBBB SSSS + LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS AND.w #$000F ; SSSS BEQ + TAX @@ -283,7 +283,7 @@ RenderCreditsStatCounter: STA !ValueLow + ; == Mask value == - LDA CreditsStats+2,y; CCC- ---- BBBB SSSS + LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS ;LSR #4 ;AND.w #$000F ; BBBB LSR #3 @@ -294,7 +294,7 @@ RenderCreditsStatCounter: STA !ValueLow ; == Cap value == - LDA CreditsStats+3,y; ---- ---- CCC- ---- + LDA.w CreditsStats+3,y; ---- ---- CCC- ---- LSR #5 AND.w #$0007 ; CCC BEQ + @@ -361,7 +361,7 @@ RenderCreditsStatCounter: ; Output format: HH:MM:SS.FF ; == Write Stripe header (VRAM address, i.e. tile coordinates) == - LDA CreditsStats,y ; LLLL LLLL XXXX XTTL + LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL LSR #3 AND #$001F ; X XXXX CLC diff --git a/swordswap.asm b/swordswap.asm index 6d3ab3f..af91e83 100644 --- a/swordswap.asm +++ b/swordswap.asm @@ -6,18 +6,18 @@ ;GetFairySword: ; CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one ; CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert safe master sword to normal one -; CMP #$04 : !BLT + : JMP.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer -; JSL ItemCheck_FairySword : BEQ + : JMP.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this +; 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 ; -;JMP.l PyramidFairy_BRANCH_GAMMA +;JML.l PyramidFairy_BRANCH_GAMMA ;================================================================================ ;GetSmithSword: -; JSL ItemCheck_SmithSword : BEQ + : JMP.l Smithy_AlreadyGotSword : + ; check if we're not already done +; JSL ItemCheck_SmithSword : BEQ + : JML.l Smithy_AlreadyGotSword : + ; check if we're not already done ; ;JSL ItemSet_SmithSword - too early -;JMP.l Smithy_DoesntHaveSword +;JML.l Smithy_DoesntHaveSword ;================================================================================ ;LoadSwordForDamage: ; LDA $7EF359 : CMP #$04 : BNE .done ; skip if not gold sword @@ -111,16 +111,16 @@ RTL RTL ;================================================================================ GetSmithSword: - JSL ItemCheck_SmithSword : BEQ + : JMP.l Smithy_AlreadyGotSword : + + JSL ItemCheck_SmithSword : BEQ + : JML.l Smithy_AlreadyGotSword : + LDA.l SmithItemMode : BNE + - JMP.l Smithy_DoesntHaveSword ; Classic Smithy + JML.l Smithy_DoesntHaveSword ; Classic Smithy + LDA.l SmithItem : TAY STZ $02E9 ; Item from NPC PHX : JSL Link_ReceiveItem : PLX REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees JSL ItemSet_SmithSword - JMP.l Smithy_AlreadyGotSword + JML.l Smithy_AlreadyGotSword ;================================================================================ CheckMedallionSword: PHB : PHX : PHY @@ -130,16 +130,16 @@ CheckMedallionSword: REP #$20 ; set 16-bit accumulator LDA $A0 ; load room ID CMP.w #$000E : BNE ++ : .freezor1 - LDA $22 : AND.w #$01FF : CMP #368-8 : !BLT .normal : CMP #368+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP #400-22 : !BLT .normal : CMP #400+32-22 : !BGE .normal ; check y-coord + LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord + LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord BRL .permit ++ : CMP.w #$007E : BNE ++ : .freezor2 - LDA $22 : AND.w #$01FF : CMP #112-8 : !BLT .normal : CMP #112+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP #400-22 : !BLT .normal : CMP #400+32-22 : !BGE .normal ; check y-coord + LDA $22 : AND.w #$01FF : CMP.w #112-8 : !BLT .normal : CMP.w #112+32-8 : !BGE .normal ; check x-coord + LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord BRL .permit ++ : CMP.w #$00DE : BNE ++ : .kholdstare - LDA $22 : AND.w #$01FF : CMP #368-8 : !BLT .normal : CMP #368+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP #144-22 : !BLT .normal : CMP #144+32-22 : !BGE .normal ; check y-coord + LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord + LDA $20 : AND.w #$01FF : CMP.w #144-22 : !BLT .normal : CMP.w #144+32-22 : !BGE .normal ; check y-coord BRA .permit ++ : .normal SEP #$20 ; set 8-bit accumulator diff --git a/tables.asm b/tables.asm index 3843048..34661a6 100644 --- a/tables.asm +++ b/tables.asm @@ -231,15 +231,104 @@ org $30804F ; PC 0x18004F ByrnaInvulnerability: db #$01 ; #$00 = Off - #$01 = On (default) ;-------------------------------------------------------------------------------- -; Out of order 0x180050-0x18005C (CrystalPendantFlags_2) +org $308050 ; PC 0x180050 - 0x18005C +CrystalPendantFlags_2: + db $00 ; Sewers + db $00 ; Hyrule Castle + db $00 ; Eastern Palace + db $00 ; Desert Palace + db $00 ; Agahnim's Tower + db $40 ; Swamp Palace + db $40 ; Palace of Darkness + db $40 ; Misery Mire + db $40 ; Skull Woods + db $40 ; Ice Palace +.hera + db $00 ; Tower of Hera + db $40 ; Thieves' Town + db $40 ; Turtle Rock +;Pendant: $00 +;Crystal: $40 ;-------------------------------------------------------------------------------- ; 0x18005D - 0x18005F (unused) ;-------------------------------------------------------------------------------- -; Out of order 0x180060 - 0x18007E (ProgrammableItemLogicJump_1) +org $308060 ; PC 0x180060 - 0x18007E +ProgrammableItemLogicJump_1: +JSL.l $000000 : RTL +ProgrammableItemLogicJump_2: +JSL.l $000000 : RTL +ProgrammableItemLogicJump_3: +JSL.l $000000 : RTL + +org $308061 ; PC 0x180061 +ProgrammableItemLogicPointer_1: +dl #$000000 +org $308066 ; PC 0x180066 +ProgrammableItemLogicPointer_2: +dl #$000000 +org $30806B ; PC 0x18006B +ProgrammableItemLogicPointer_3: +dl #$000000 ;-------------------------------------------------------------------------------- ; 0x18007F (unused) ;-------------------------------------------------------------------------------- -; Out of order 0x180070-0x18007F (CrystalNumberTable) +org $308070 ; PC 0x180070 - 0x18007F +CrystalNumberTable: +db $00 ; +db $79 ; Swamp +db $00 ; +db $6E ; Ice +db $00 ; +db $6F ; Mire +db $00 ; +db $6D ; Thieves +db $69 ; Desert +db $7C ; TRock +db $69 ; Hera +db $6C ; Skull +db $69 ; Eastern +db $7F ; Darkness +db $00 ; +db $00 ; + +;1 Indicator : 7F +;2 Indicator : 79 +;3 Indicator : 6C +;4 Indicator : 6D +;5 Indicator : 6E +;6 Indicator : 6F +;7 Indicator : 7C +;8 Indicator : 7D +;9 Indicator : 7E + +;Dark Red X : 69 +;Light Red X : 78 +;White X : 68 + +;Pendant UL : 60 +;Pendant UR : 61 +;Pendant BL : 70 +;Pendant BR : 71 + +;Sword UL : 62 +;Sword UR : 63 +;Sword BL : 72 +;Sword BR : 73 + +;Crystal UL : 64 +;Crystal UR : 65 +;Crystal BL : 74 +;Crystal BR : 75 + +;Skull UL : 66 +;Skull UR : 67 +;Skull BL : 76 +;Skull BR : 77 + +;Warp UL : 6A +;Warp UR : 6B +;Warp BL : 7A +;Warp BR : 7B ;-------------------------------------------------------------------------------- org $308080 ; PC 0x180080 - 0x180083 Upgrade5BombsRefill: @@ -283,7 +372,15 @@ db #$47 ; #$47 - 20 Rupees (default) ;-------------------------------------------------------------------------------- ; 0x180098 - 0x18009F (unused) ;-------------------------------------------------------------------------------- -; Out of order 0x1800A0 - 0x1800A3 (Bugfix_MirrorlessSQToLW) +org $3080A0 ; PC 0x1800A0 - 0x1800A3 +Bugfix_MirrorlessSQToLW: +db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) +Bugfix_SwampWaterLevel: +db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) +Bugfix_PreAgaDWDungeonDeathToFakeDW: +db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) +Bugfix_SetWorldOnAgahnimDeath: +db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) ;-------------------------------------------------------------------------------- ; 0x1800A4- 0x1800FF (unused) ;-------------------------------------------------------------------------------- @@ -476,64 +573,6 @@ org $0ABF24 ; PC 0x53F24 MapObject_TRock: dw $6434 ; #6434 - Crystal -;-------------------------------------------------------------------------------- -org $308070 ; PC 0x180070 - 0x18007F (Out of order) -CrystalNumberTable: -db $00 ; -db $79 ; Swamp -db $00 ; -db $6E ; Ice -db $00 ; -db $6F ; Mire -db $00 ; -db $6D ; Thieves -db $69 ; Desert -db $7C ; TRock -db $69 ; Hera -db $6C ; Skull -db $69 ; Eastern -db $7F ; Darkness -db $00 ; -db $00 ; - -;1 Indicator : 7F -;2 Indicator : 79 -;3 Indicator : 6C -;4 Indicator : 6D -;5 Indicator : 6E -;6 Indicator : 6F -;7 Indicator : 7C -;8 Indicator : 7D -;9 Indicator : 7E - -;Dark Red X : 69 -;Light Red X : 78 -;White X : 68 - -;Pendant UL : 60 -;Pendant UR : 61 -;Pendant BL : 70 -;Pendant BR : 71 - -;Sword UL : 62 -;Sword UR : 63 -;Sword BL : 72 -;Sword BR : 73 - -;Crystal UL : 64 -;Crystal UR : 65 -;Crystal BL : 74 -;Crystal BR : 75 - -;Skull UL : 66 -;Skull UR : 67 -;Skull BL : 76 -;Skull BR : 77 - -;Warp UL : 6A -;Warp UR : 6B -;Warp BL : 7A -;Warp BR : 7B ;-------------------------------------------------------------------------------- org $02A09B ; PC 0x1209B - Bank02.asm:5802 - (pool MilestoneItem_Flags:) CrystalPendantFlags: @@ -562,24 +601,6 @@ CrystalPendantFlags: ;Crystal 6: $01 ;Crystal 7: $08 ;-------------------------------------------------------------------------------- -org $308050 ; PC 0x180050 - 0x18005C (Out of order) -CrystalPendantFlags_2: - db $00 ; Sewers - db $00 ; Hyrule Castle - db $00 ; Eastern Palace - db $00 ; Desert Palace - db $00 ; Agahnim's Tower - db $40 ; Swamp Palace - db $40 ; Palace of Darkness - db $40 ; Misery Mire - db $40 ; Skull Woods - db $40 ; Ice Palace -.hera - db $00 ; Tower of Hera - db $40 ; Thieves' Town - db $40 ; Turtle Rock -;Pendant: $00 -;Crystal: $40 ;Dungeons with no drops should match their respective world's normal vanilla prize ;xxx ;-------------------------------------------------------------------------------- org $01C6FC ; PC 0xC6FC - Bank01.asm:10344 - (db $00, $00, $01, $02, $00, $06, $06, $06, $06, $06, $03, $06, $06) @@ -646,34 +667,6 @@ org $07B53B ; PC 0x3B53B RedBoomerangSubstitution: db #$FF ; no substitution ;-------------------------------------------------------------------------------- -org $308060 ; PC 0x180060 - 0x18007E (Out of order) -ProgrammableItemLogicJump_1: -JSL.l $000000 : RTL -ProgrammableItemLogicJump_2: -JSL.l $000000 : RTL -ProgrammableItemLogicJump_3: -JSL.l $000000 : RTL - -org $308061 ; PC 0x180061 -ProgrammableItemLogicPointer_1: -dl #$000000 -org $308066 ; PC 0x180066 -ProgrammableItemLogicPointer_2: -dl #$000000 -org $30806B ; PC 0x18006B -ProgrammableItemLogicPointer_3: -dl #$000000 -;-------------------------------------------------------------------------------- -org $3080A0 ; PC 0x1800A0 - 0x1800A3 (Out of order) -Bugfix_MirrorlessSQToLW: -db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) -Bugfix_SwampWaterLevel: -db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) -Bugfix_PreAgaDWDungeonDeathToFakeDW: -db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) -Bugfix_SetWorldOnAgahnimDeath: -db #$01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default) -;-------------------------------------------------------------------------------- ;org $08D01A ; PC 0x4501A - ancilla_flute.asm - 42 ;OldHauntedGroveItem: ; db #$14 ; #$14 = Flute @@ -1499,25 +1492,6 @@ dw #9999 ; Rupee Limit !BIGRAM = "$7EC900"; ; $7EC900 - Big RAM Buffer ($1F00) ;================================================================================ -org $30FF00 ; PC 0x187F00 - PC 0x187FFF (out of order) -NameHashTable: ; change this for each new version - MOVE THIS TO BANK $30 -db $57, $41, $D6, $7A, $E0, $10, $8A, $97, $A2, $89, $82, $45, $46, $1C, $DF, $F7 -db $55, $0F, $1D, $56, $AC, $29, $DC, $D1, $25, $2A, $C5, $92, $42, $B7, $BE, $50 -db $64, $62, $31, $E8, $49, $63, $40, $5F, $C9, $47, $F6, $0B, $FA, $FC, $E4, $F0 -db $E6, $8F, $6D, $B1, $68, $A4, $D3, $0E, $54, $5D, $6B, $CF, $20, $69, $33, $07 -db $2C, $4D, $32, $77, $C1, $95, $7B, $DE, $66, $8C, $35, $84, $86, $7C, $44, $1A -db $3E, $15, $D4, $0C, $B5, $90, $4C, $B2, $26, $1E, $38, $C0, $76, $9C, $2B, $7F -db $5E, $D5, $75, $B6, $E3, $7D, $8D, $72, $3A, $CB, $6F, $5B, $AD, $BD, $F1, $BB -db $05, $9A, $F4, $03, $02, $FF, $DA, $4F, $93, $B3, $14, $EC, $EE, $D7, $F9, $96 -db $A7, $13, $CA, $BF, $88, $19, $A3, $78, $24, $87, $3C, $9E, $B4, $27, $C2, $AF -db $80, $C4, $C8, $6C, $E9, $94, $F8, $8B, $3D, $34, $A6, $53, $17, $22, $F3, $A5 -db $1B, $2E, $06, $39, $D2, $43, $73, $12, $09, $58, $30, $5C, $99, $98, $9F, $ED -db $37, $67, $EA, $BA, $E7, $D9, $81, $08, $7E, $BC, $70, $5A, $51, $C3, $B9, $61 -db $36, $4B, $A8, $01, $65, $3B, $EF, $59, $04, $18, $79, $0D, $DD, $CE, $CC, $AE -db $83, $21, $EB, $6E, $0A, $71, $B0, $11, $85, $C7, $A1, $FD, $E5, $16, $48, $FB -db $F2, $23, $2F, $28, $9B, $AA, $AB, $D0, $6A, $9D, $C6, $2D, $00, $FE, $E1, $3F -db $A0, $4A, $B8, $4E, $74, $1F, $8E, $A9, $F5, $CD, $60, $91, $DB, $D8, $52, $E2 -;================================================================================ org $30A100 ; PC 0x182100 - 0x182304 EntranceDoorFrameTable: ; data for multi-entrance caves @@ -1641,5 +1615,22 @@ db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;-------------------------------------------------------------------------------- ; 0x185140 - 187EFF (unused) ;-------------------------------------------------------------------------------- -; Out of order 0x187F00 - PC 0x187FFF (NameHashTable) +org $30FF00 ; PC 0x187F00 - PC 0x187FFF +NameHashTable: ; change this for each new version - MOVE THIS TO BANK $30 +db $57, $41, $D6, $7A, $E0, $10, $8A, $97, $A2, $89, $82, $45, $46, $1C, $DF, $F7 +db $55, $0F, $1D, $56, $AC, $29, $DC, $D1, $25, $2A, $C5, $92, $42, $B7, $BE, $50 +db $64, $62, $31, $E8, $49, $63, $40, $5F, $C9, $47, $F6, $0B, $FA, $FC, $E4, $F0 +db $E6, $8F, $6D, $B1, $68, $A4, $D3, $0E, $54, $5D, $6B, $CF, $20, $69, $33, $07 +db $2C, $4D, $32, $77, $C1, $95, $7B, $DE, $66, $8C, $35, $84, $86, $7C, $44, $1A +db $3E, $15, $D4, $0C, $B5, $90, $4C, $B2, $26, $1E, $38, $C0, $76, $9C, $2B, $7F +db $5E, $D5, $75, $B6, $E3, $7D, $8D, $72, $3A, $CB, $6F, $5B, $AD, $BD, $F1, $BB +db $05, $9A, $F4, $03, $02, $FF, $DA, $4F, $93, $B3, $14, $EC, $EE, $D7, $F9, $96 +db $A7, $13, $CA, $BF, $88, $19, $A3, $78, $24, $87, $3C, $9E, $B4, $27, $C2, $AF +db $80, $C4, $C8, $6C, $E9, $94, $F8, $8B, $3D, $34, $A6, $53, $17, $22, $F3, $A5 +db $1B, $2E, $06, $39, $D2, $43, $73, $12, $09, $58, $30, $5C, $99, $98, $9F, $ED +db $37, $67, $EA, $BA, $E7, $D9, $81, $08, $7E, $BC, $70, $5A, $51, $C3, $B9, $61 +db $36, $4B, $A8, $01, $65, $3B, $EF, $59, $04, $18, $79, $0D, $DD, $CE, $CC, $AE +db $83, $21, $EB, $6E, $0A, $71, $B0, $11, $85, $C7, $A1, $FD, $E5, $16, $48, $FB +db $F2, $23, $2F, $28, $9B, $AA, $AB, $D0, $6A, $9D, $C6, $2D, $00, $FE, $E1, $3F +db $A0, $4A, $B8, $4E, $74, $1F, $8E, $A9, $F5, $CD, $60, $91, $DB, $D8, $52, $E2 ;-------------------------------------------------------------------------------- diff --git a/tablets.asm b/tablets.asm index c0eb7c1..97fdbcf 100644 --- a/tablets.asm +++ b/tablets.asm @@ -96,7 +96,7 @@ LoadNarrowObject: LDA AddReceivedItemExpanded_wide_item_flag, X : STA ($92), Y ; AddReceiveItem.wide_item_flag? ; LDA.b #$00 : STA ($92), Y in the japanese version PLY ;JSL.l DrawNarrowDroppedObject -JMP.l LoadNarrowObjectReturn +JML.l LoadNarrowObjectReturn ;-------------------------------------------------------------------------------- DrawNarrowDroppedObject: ; If it's a 16x16 sprite, we'll only draw one, otherwise we'll end up drawing