From 96e3db602bd93a0b3ac833404d760af9f9371217 Mon Sep 17 00:00:00 2001 From: Kevin Cathcart Date: Fri, 31 Aug 2018 01:17:51 -0400 Subject: [PATCH] Inverted updates Move Pyramid hole Add new Extra Hole capability New Castle Hole Graphics Fix retreat bat graphics --- LTTP_RND_GeneralBugfixes.asm | 12 +++++- entrances.asm | 28 ++++++++++++ hooks.asm | 22 ++++++++++ inverted.asm | 80 +++++++++++++++++++++++++++++++++++ sandbox.asm | 71 +++++++++++++++++++++++++++++++ sheet73.bin | Bin 0 -> 1536 bytes sheet73.gfx | Bin 0 -> 1194 bytes tables.asm | 16 ++++++- 8 files changed, 227 insertions(+), 2 deletions(-) create mode 100644 inverted.asm create mode 100644 sheet73.bin create mode 100644 sheet73.gfx 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 0000000000000000000000000000000000000000..4487be8be9775040f939d42fb09282a3dbd2a37e GIT binary patch literal 1536 zcmZ`(O-vg{6rS}0rj3QEQ~^~H>y${`f)g&0u)HRz(l&}jk7*Cskl=N6$#UZYAuky=E9(vlSHjZ%pyqL545LlS!tQk^uUwlT#^_UHA@uD9gU@AJ;g z&b;|{-n{pmO=kb&;`r^)IU9Tv0NDdja6s(A{Cu^_-U|iR)=&df6u(6wq5VV^k=clX-^;XsNVp&o2}h`i4WSg9 zcq)E%qkH+?)K~J=Tqc(x{>~$xjT}FI;?@uP!01wL`@Fsn-h&9ayfWV64Fsta&B!sT z%92B-9Ya7GRyGwyS(kn$B67G-6o-CMl)86)l;g-rvdYX?ESNtOlTXgio=dL(c;n9Z zOS9kQ*g^#1CBBBYn)^FOgO&JPa4|%9uh;J%Jmw+qkWSKp&jE6pc$m43`O%p(sX;lK zqdA&Ru7-Ub!2lr~SI9?)qC;Z1_h9cqp{u=3MU=~BZSMx1{qFUDbLQ8+=Wjl1XZ+;a z?d7y^pjNmo{&M5}$p@1U2x;*p4hMtvfY?zeU<|HEZ}<0O1P+9bjvO8NIQa;Q zXaeNk)YJs~65c#jBC>G3=Xy_0Oo^0;u~Vlak+T^(N9QgqP?<`R9EfdRJ6r??U_W$& z*R-5?g*rRz1IrSqK!ku0kTZo?ArK=(Q6d;p%Q6hLB3&ZO5@=v?ypS{!Ebg!X<(gVl zmZcPtFA>t*aU@ZW-N>HW$4>L+EgQu0) z-jrVuL<%sHKD;_rT&Whds-a$9r`%d{->rD^Efx>nO_uFjK<{IlQw+TTszi&zR!iM}*vwauW}YLQ#j#vRuq0B4zde2K=0|rHpUmd}C_O56 zb^01S_~A)$M!XhHot5H>s0x5d8))^Ty=m#j&hCq C|FKK} literal 0 HcmV?d00001 diff --git a/sheet73.gfx b/sheet73.gfx new file mode 100644 index 0000000000000000000000000000000000000000..6e856c14f5cb02380d67a963ac4d48b0af1854e3 GIT binary patch literal 1194 zcmWlYZ)g*D7{{OA{gPfaX-}EhsHLgBw%KH8)E5&Pa_O$M>V)py+!*%KF=aR~PQ*?n zzw45&>gM8`;bhQ@2rI%Y&d#m6Hi%CzuBdN>>v0eXL zH{cl$$OtRbpusHYz~J8&aGpHb;Z@IeGjtAAeqi}5n zEpSB=k@Jtl>8`|S?Yx{$>OK$}cYJhU=gvJhzN>Z~ok}krtGciULlB=iRnIs3ncA1s z6sGrRstBUuz!98z){^1o)StRQ;=|h|Y5&ieOgr-186mJ2?uxKx#=`Nfine!r>_~L( zhby3_wUOEBEauQc&KqnR=TV){1(|JXAjS*aLj%{QBT;+n=uKe$qfc zxNvj2EmG%Sr7{8aB3Ynu=P&Z`uRK7#dtjU2zZ*eFL(Z1+th%A2!xpkNAisXV@lNzU z=3|Gz0e3E5929|9L1mec=9Rzk)up9`#6VK^?F)qtCuMfcb$o(pObw+`TFb{TLoHw@ zZbT9J_srObzy%sTt>DyD)DdKFvo31MoRVu+05X}74coE|Locc^m{zfZ7NOp#F%W+r z)=%JkSrHpEbD52@W%3nNX#{2f`Y3<#$J zlEC=zK!E2dz~iz!Um*7ivYwNZIh*#<>>mXy|99CeS<7gkb?$o--#|Z2kypTNTAX14 z63(}6Wh6b=*STe5!|GBI33g6Ac(zz^ zL!hTGNly$ZT5KzEPs0%IAvdkBzQC+Ocm9h_BdiW^& zX|s)sN4 zAG!Yat;vUD**^>S^G%Iz2S)&grBUfZU*fPD$w;~vArxv}CB(PV6;)$t`FW|D&*kOv zti3qUSeUGLyIoG|teP(njY_pj?Z~KF%M>b=p(ff=1tWGDY=kZ=7|b^PQ@>PWnP$7) SEC#7%1+AV`l-$1EM({sai4MsC literal 0 HcmV?d00001 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