diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 815e6d4..380deb1 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -166,6 +166,8 @@ incsrc boots.asm incsrc fileselect.asm incsrc playername.asm incsrc decryption.asm +incsrc inverted.asm +incsrc invertedmaps.asm warnpc $A58000 ;org $228000 ; contrib area @@ -234,7 +236,12 @@ warnpc $31D001 org $31D000 FileSelectNewGraphics: incbin fileselect.chr.gfx -warnpc $31F001 +warnpc $31E001 + +org $31E000 +InvertedCastleHole: ;address used by front end. DO NOT MOVE! +incbin sheet73.gfx +warnpc $31E501 org $338000 GFX_HUD_Palette: @@ -552,6 +559,9 @@ HUD_RebuildIndoor_Palace: org $0EEE10 Messaging_Text: +org $1BC97C: +Overworld_DrawPersistentMap16: + org $1BED03 Palette_Sword: diff --git a/entrances.asm b/entrances.asm index 7b7b923..76e7ecc 100644 --- a/entrances.asm +++ b/entrances.asm @@ -91,3 +91,31 @@ AllowStartFromSingleEntranceCave: PLA RTL ;-------------------------------------------------------------------------------- +CheckHole: + LDX.w #$0024 + .nextHoleClassic + LDA.b $00 : CMP.l $1BB800, X + BNE .wrongMap16Classic + LDA.w $040A : CMP.l $1BB826, X + BEQ .matchedHoleClassic + .wrongMap16Classic + DEX #2 : BPL .nextHoleClassic + + LDX.w #$001E + .nextHoleExtra + LDA.b $00 : CMP.l ExtraHole_Map16, X + BNE .wrongMap16Extra + LDA.w $040A : CMP.l ExtraHole_Area, X + BEQ .matchedHoleExtra + .wrongMap16Extra + DEX #2 : BPL .nextHoleExtra + JML Overworld_Hole_GotoHoulihan + + .matchedHoleClassic + JML Overworld_Hole_matchedHole + .matchedHoleExtra + SEP #$30 + TXA : LSR A : TAX + LDA.l ExtraHole_Entrance, X : STA.w $010E : STZ.w $010F +JML Overworld_Hole_End +;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index e4eff96..0ee034e 100644 --- a/hooks.asm +++ b/hooks.asm @@ -243,6 +243,13 @@ JSL.l DecideIfBunnyByScreenIndex : db #$D0 ; BNE org $02D9B9 ; <- 159B9 - Bank02.asm : 11089 (LDA $7EF3C8) JSL AllowStartFromSingleEntranceCave ;-------------------------------------------------------------------------------- +org $1bc2a7 ; <- DC2A7 - Bank1B.asm : 1143 (Overworld_CreatePyramidHole:) +JSL.l Overworld_DrawPyramidHoleModified +RTL +C9DE_LONG: +JSR $C9DE ; surprisingly same address as US +RTL +;-------------------------------------------------------------------------------- ;================================================================================ ; Hash Key Display @@ -1986,6 +1993,21 @@ JSL.l WalkDownIntoTavern NOP #1 ;================================================================================ +;================================================================================ +; Hole fixes +;-------------------------------------------------------------------------------- +org $1BB88E ; <- DB88E - Bank1B.asm:59 (LDX.w #$0024) +JML.l CheckHole +org $1BB8A4 ; <- DB8A4 - Bank1B.asm:78 (LDX.w #$0026) +Overworld_Hole_GotoHoulihan: +org $1BB8AF ; <- DB8AF - Bank1B.asm:85 (.matchedHole) +Overworld_Hole_matchedHole: +org $1BB8BD ; <- DB8BD - Bank1B.asm:85 (PLB) +Overworld_Hole_End: + +;-------------------------------------------------------------------------------- + + ;================================================================================ ; Music fixes ;-------------------------------------------------------------------------------- diff --git a/inverted.asm b/inverted.asm new file mode 100644 index 0000000..5ae16c1 --- /dev/null +++ b/inverted.asm @@ -0,0 +1,80 @@ + + +; Does tile modification for... the pyramid of power hole +; after Ganon slams into it in bat form? +Overworld_DrawPyramidHoleModified: + LDA.l InvertedMode : BNE + + BRL .originalBehaviour ++ +.invertedBehavior + REP #$30 + + LDX.w #$0440 + LDA.w #$0E39 + + JSL Overworld_DrawPersistentMap16 + + LDX.w #$04BC + LDA.w #$0E3A + + JSL C9DE_LONG + JSL C9DE_LONG + JSL C9DE_LONG + JSL C9DE_LONG + + LDX.w #$053C + + JSL C9DE_LONG + JSL C9DE_LONG + JSL C9DE_LONG + JSL C9DE_LONG + + LDX.w #$05BE + LDA.w #$0490 + + JSL C9DE_LONG + JSL C9DE_LONG + + LDA.w #$FFFF : STA $1012, Y + + BRL .ending +.originalBehaviour + REP #$30 + + LDX.w #$03BC + LDA.w #$0E3F + + JSL Overworld_DrawPersistentMap16 + + LDX.w #$03BE + LDA.w #$0E40 + + JSL C9DE_LONG + JSL C9DE_LONG + + LDX.w #$043C + + JSL C9DE_LONG + JSL C9DE_LONG + JSL C9DE_LONG + + LDX.w #$04BC + + JSL C9DE_LONG + JSL C9DE_LONG + JSL C9DE_LONG + + LDA.w #$FFFF : STA $1012, Y + +.ending + LDA.w #$3515 : STA $012D + + SEP #$30 + + LDA $7EF2DB : ORA.b #$20 : STA $7EF2DB + + LDA.b #$03 : STA $012F + + LDA.b #$01 : STA $14 + +RTL diff --git a/sandbox.asm b/sandbox.asm index 64bad5a..384f030 100644 --- a/sandbox.asm +++ b/sandbox.asm @@ -183,6 +183,21 @@ org $1FED41 : db $0E ; pre-open open TR bomb door org $308247 ; PC 0x180247 db $00, $5A, $00, $00, $00, $00, $00 + +org $1AF696 : db #$F0 ;Bat X position (sprite_retreat_bat.asm:130) +org $1AF6B2 : db #$33 ;Bat Delay (sprite_retreat_bat.asm:136) + +;New Hole Mask Position +org $1AF730 +db $6A, $9E, $0C, $00 +db $7A, $9E, $0C, $00 +db $8A, $9E, $0C, $00 +db $6A, $AE, $0C, $00 +db $7A, $AE, $0C, $00 +db $8A, $AE, $0C, $00 +db $67, $97, $0C, $00 +db $8D, $97, $0C, $00 + ;Cryptic documentation of flute/whirlpool table format (all value 16 bit) ;eae5 - Overworld area that the exit leads to ;eb07 $0084 - VRAM locations to place Link at. @@ -235,6 +250,62 @@ org $02E169+$06+$06 : dw $0000 ;0624|$162C9-$16317 - (0x4F entries, 1 byte each) - Ukn1 in HM ;0628|$16318-$16366 - (0x4F entries, 1 byte each) - Ukn2 in HM +; redefine some map16 tiles +org $0FF1C8 +dw #$190F, #$190F, #$190F, #$194C +dw #$190F, #$194B, #$190F, #$195C +dw #$594B, #$194C, #$19EE, #$19EE +dw #$194B, #$19EE, #$19EE, #$19EE +dw #$594B, #$190F, #$595C, #$190F +dw #$190F, #$195B, #$190F, #$190F +dw #$19EE, #$19EE, #$195C, #$19EE +dw #$19EE, #$19EE, #$19EE, #$595C +dw #$595B, #$190F, #$190F, #$190F + +; Redefine more map16 tiles +org $0FA480 +dw #$190F, #$196B, #$9D04, #$9D04 +dw #$196B, #$190F, #$9D04, #$9D04 + +; update pyramid hole entrances +org $1bb810 : dw $00BE, $00C0, $013E +org $1bb836 : dw $001B, $001B, $001B +; add an extra pyramid hole entrance +; ExtraHole_Map16: +org $308300 : dw $0140 +; ExtraHole_Area: +org $308320 : dw $001B +; ExtraHole_Entrance: +org $308340 : db $7B + +;prioritize retreat Bat and use 3rd sprite section +org $1af504 : dw $148B +org $1af50c : dw $149B +org $1af514 : dw $14A4 +org $1af51c : dw $1489 +org $1af524 : dw $14AC +org $1af52c : dw $54AC +org $1af534 : dw $148C +org $1af53c : dw $548C +org $1af544 : dw $1484 +org $1af54c : dw $5484 +org $1af554 : dw $14A2 +org $1af55c : dw $54A2 +org $1af564 : dw $14A0 +org $1af56c : dw $54A0 +org $1af574 : dw $148E +org $1af57c : dw $548E +org $1af584 : dw $14AE +org $1af58c : dw $54AE + +;Make retreat bat gfx available in Hyrule castle. +org $00DB9D : db $1A ;sprite set 1, section 3 + +;use new castle hole graphics (The values are the SNES address of the graphics: 31e000) +org $00D009 : db $31 +org $00D0e8 : db $E0 +org $00D1c7 : db $00 + ;org $02E849 ; Fly 1 to Sanctuary ;db #$13, #$00, #$16, #$00, #$18, #$00, #$2C, #$00, #$2F, #$00, #$30, #$00, #$3B, #$00, #$3F, #$00, #$5B, #$00, #$35, #$00, #$0F, #$00, #$15, #$00, #$33, #$00, #$12, #$00, #$3F, #$00, #$55, #$00, #$7F, #$00, #$1A, #$00, #$88, #$08, #$30, #$0B, #$88, #$05, #$98, #$07, #$80, #$18, #$9E, #$06, #$10, #$08, #$2E, #$00, #$42, #$12, #$80, #$06, #$12, #$01, #$9E, #$05, #$8E, #$04, #$80, #$02, #$12, #$01, #$80, #$02, #$00, #$04, #$16, #$05, #$59, #$07, #$B9, #$0A, #$FA, #$0A, #$1E, #$0F, #$DF, #$0E, #$05, #$0F, #$00, #$06, #$46, #$0E, #$C6, #$02, #$2A, #$04, #$BA, #$0C, #$9A, #$04, #$56, #$0E, #$2A, #$04, #$56, #$0E, #$D6, #$06, #$4E, #$0C, #$7E, #$01, #$40, #$08, #$B2, #$0E, #$00, #$00, #$F2, #$06, #$75, #$0E, #$78, #$07, #$0A, #$0C, #$06, #$0E, #$8A, #$0A, #$EA, #$06, #$62, #$04, #$00, #$0E, #$8A, #$0A, #$00, #$0E, #$68, #$04, #$78, #$05, #$B7, #$07, #$17, #$0B, #$58, #$0B, #$A8, #$0F, #$3D, #$0F, #$67, #$0F, #$5C, #$06, #$A8, #$0E, #$28, #$03, #$88, #$04, #$18, #$0D, #$F8, #$04, #$B8, #$0E, #$88, #$04, #$B8, #$0E, #$56, #$07, #$C8, #$0C, #$00, #$02, #$B8, #$08, #$30, #$0F, #$78, #$00, #$78, #$07, #$F3, #$0E, #$F0, #$07, #$90, #$0C, #$80, #$0E, #$10, #$0B, #$70, #$07, #$E8, #$04, #$68, #$0E, #$10, #$0B, #$68, #$0E, #$70, #$04, #$83, #$05, #$C6, #$07, #$26, #$0B, #$67, #$0B, #$8D, #$0F, #$4C, #$0F, #$72, #$0F, #$6D, #$06, #$B3, #$0E, #$33, #$03, #$97, #$04, #$27, #$0D, #$07, #$05, #$C3, #$0E, #$97, #$04, #$C3, #$0E, #$56, #$07, #$D3, #$0C, #$0B, #$02, #$BF, #$08, #$37, #$0F, #$8D, #$00, #$7F, #$07, #$FA, #$0E, #$F7, #$07, #$97, #$0C, #$8B, #$0E, #$17, #$0B, #$77, #$07, #$EF, #$04, #$85, #$0E, #$17, #$0B, #$85, #$0E, #$F6, #$FF, #$FA, #$FF, #$07, #$00, #$F7, #$FF, #$F6, #$FF, #$00, #$00, #$F1, #$FF, #$FB, #$FF, #$00, #$00, #$FA, #$FF, #$0A, #$00, #$F6, #$FF, #$F6, #$FF, #$F6, #$FF, #$FA, #$FF, #$F6, #$FF, #$FA, #$FF, #$F2, #$FF, #$F2, #$FF, #$02, #$00, #$00, #$00, #$0E, #$00, #$00, #$00, #$FE, #$FF, #$0B, #$00, #$F8, #$FF, #$06, #$00, #$FA, #$FF, #$FA, #$FF, #$06, #$00, #$0E, #$00, #$00, #$00, #$FA, #$FF, #$00, #$00 ; diff --git a/sheet73.bin b/sheet73.bin new file mode 100644 index 0000000..4487be8 Binary files /dev/null and b/sheet73.bin differ diff --git a/sheet73.gfx b/sheet73.gfx new file mode 100644 index 0000000..6e856c1 Binary files /dev/null and b/sheet73.gfx differ diff --git a/tables.asm b/tables.asm index fa6860a..f5d22a1 100644 --- a/tables.asm +++ b/tables.asm @@ -944,8 +944,22 @@ dw $0112 : db $53 : dw $001e, $0400, $06e2, $0446, $0758, $046d, $075f : db $00, dw $0000 : db $00 : dw $0000, $0000, $0000, $0000, $0000, $0000, $0000 : db $00, $00, $00 dw $0000 : db $00 : dw $0000, $0000, $0000, $0000, $0000, $0000, $0000 : db $00, $00, $00 dw $0000 : db $00 : dw $0000, $0000, $0000, $0000, $0000, $0000, $0000 : db $00, $00, $00 +;-------------------------------------------------------------------------------- +; 0x1802A0 - 0x1802FF (unused) +;-------------------------------------------------------------------------------- +; $308300 (0x180300) - $30834F (0x18034F) +org $308300 ; PC 0x180250 +ExtraHole_Map16: +dw $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF +dw $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF +ExtraHole_Area: +dw $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF +dw $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF +ExtraHole_Entrance: +db $00, $00, $00, $00, $00, $00, $00, $00 +db $00, $00, $00, $00, $00, $00, $00, $00 ;================================================================================ -; 0x1802A0 - 0x1814FF (unused) +; 0x180350 - 0x1814FF (unused) ;================================================================================ ; $309500 (0x181500) - $309FFF (0x181FFF) original 0x39C bytes ; Replacement Ending Sequence Text Data