From 2de64ef5658797c4a1a4c945a887dfe4677cb99b Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 22 Mar 2023 16:07:39 -0500 Subject: [PATCH] Set up code structure for future OW palette changes and return to safer changes --- Rom.py | 2 +- asm/owrando.asm | 66 +++++++++++++++++++++++++++--------------- data/base2current.bps | Bin 105930 -> 105965 bytes 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/Rom.py b/Rom.py index 9760d525..cc784646 100644 --- a/Rom.py +++ b/Rom.py @@ -38,7 +38,7 @@ from source.dungeon.RoomList import Room0127 JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '281fb186ab9e30f98e9705398653a754' +RANDOMIZERBASEHASH = '0a3d1d4bbec659013be5ed876c2658bd' class JsonRom(object): diff --git a/asm/owrando.asm b/asm/owrando.asm index 6bafb688..a308a9fc 100644 --- a/asm/owrando.asm +++ b/asm/owrando.asm @@ -48,7 +48,8 @@ org $04E8B4 Overworld_LoadSpecialOverworld: org $02A9DA -JSL OWSkipMosiac +JSL OWSkipPalettes +BCC OverworldHandleTransitions_change_palettes : NOP #4 org $07982A Link_ResetSwimmingState: @@ -943,20 +944,12 @@ OWNewDestination: ; crossed OW shuffle and terrain ldx $05 : ldy $08 : jsr OWWorldTerrainUpdate - - lda $05 : sta $8a : JSR OWDetermineScreensPaletteSet - - ;PLA : AND.b #$3F : BEQ .leaving_woods - ;LDA $8A : AND.b #$3F : BEQ .entering_woods - CPX.w $0AB3 : BEQ .skip_palette ; check if next screen's palette is different - LDA $00 : PHA - JSL OverworldLoadScreensPaletteSet_long ; loading correct OW palette - PLA : STA $00 - ;.leaving_woods - ;.entering_woods - .skip_palette - lda $8a + ldx $8a : lda $05 : sta $8a : stx $05 ; $05 is prev screen id, $8a is dest screen + + jsr OWGfxUpdate + + lda $8a rep #$30 : rts } OWLoadSpecialArea: @@ -1084,6 +1077,23 @@ OWWorldTerrainUpdate: ; x = owid of destination screen, y = 1 for land to water, .return RTS } +OWGfxUpdate: +{ + REP #$20 : LDA.l OWMode : AND.w #$0207 : BEQ .is_only_mixed : SEP #$20 + ;;;;PLA : AND.b #$3F : BEQ .leaving_woods + LDA.b $8A : AND.b #$3F : BEQ .entering_woods + ;LDA.b $05 : JSL OWSkipPalettes : BCS .skip_palettes + LDA.b $8A : JSR OWDetermineScreensPaletteSet + CPX.w $0AB3 : BEQ .skip_palettes ; check if next screen's palette is different + LDA $00 : PHA + JSL OverworldLoadScreensPaletteSet_long ; loading correct OW palette + PLA : STA $00 + .leaving_woods + .entering_woods + .is_only_mixed + .skip_palettes + SEP #$20 +} OWLoadGearPalettes: { PHX : PHY : LDA $00 : PHA @@ -1105,21 +1115,29 @@ OWDetermineScreensPaletteSet: ; A = OWID to check CMP.b #$07 : BEQ .death_mountain LDX.b #$00 .death_mountain - PLA : PHX : TAX : LDA.l OWTileWorldAssoc,x : BEQ + + PLA : PHX : TAX : LDA.l OWTileWorldAssoc,X : BEQ + PLX : INX : RTS + PLX : RTS } -OWSkipMosiac: +OWSkipPalettes: { - PHA - LDA.l OWMode : ORA.l OWMode+1 : BEQ .vanilla - PLA : PLA : PLA : PEA $A9F2 - RTL + STA.b $05 ; A = previous screen, also stored in $05 + ; only skip mosaic if OWR Layout or Crossed + PHP : REP #$20 : LDA.l OWMode : AND.w #$0207 : BEQ .vanilla : PLP + ; checks to see if going to from any DM screens + ;LDA.b $05 : JSR OWDetermineScreensPaletteSet : TXA : AND.b #$FE : STA $04 + ;LDA.b $8A : JSR OWDetermineScreensPaletteSet : TXA : AND.b #$FE + ;CMP.b $04 : BNE .skip_palettes + BRA .vanilla+1 + .vanilla - PLA : AND.b #$3F : BNE + ; what we wrote over, kinda - PLA : PLA : PEA $A9E3 - + - RTL + PLP + LDA.b $05 : AND.b #$3F : BEQ .skip_palettes ; what we + LDA.b $8A : AND.b #$BF : BNE .change_palettes ; wrote over, kinda + .skip_palettes + SEC : RTL ; mosaic transition occurs + .change_palettes + CLC : RTL } OWAdjustExitPosition: { diff --git a/data/base2current.bps b/data/base2current.bps index 5b85faf181a91c9020324b8e6b46453dbb8ecb1f..d492f90b61065409a0fa2cfbfa8766eb30c23ef7 100644 GIT binary patch delta 454 zcmV;%0XhE4y9VvM2C!uT1hOqn(z9s+tO5+BB6OCjkQ3_a>gq(38wAk-mXqxSDFM!d z7X`N$1pyy60lK$0I{`uj0g;z_KLH&Ci;Q`Imz+NVKmkXW-9G_r0lK$JKmpnUEIEL^ z5C#}y0i6&AXyP!X1Svllc_xSojQ|Ix1*8Zdx|F7hr3HnGh6NxHmX}*Y0V@)^lwg|( zEFFM>3ZGP-(a-}-l$V%80VM&4m%c**BnCN_fNUT+m*_(QHyt^arCrGc&<7$am8Natz=!m0nj_8UC9LSHIvDcHx3Da%?_nq$rtbl zsRV^xoInF$+8T`m2cs+w34nco`lVgT7tjZ(1C0X*WL;pwAg=;|swoEo@EqbGrHUy( z@D!zrAXAp?vkLGEr2t4G^235?g#h9p+FGRmNUh)kt}H->lSdh(jbNezD@eXgKbM7Q z+LJnnrSJp#=wSL_g#`$wQWB(@11Nw2D5V9WVds(@DU~sRm-R#eE+1b-6M)6$5oEAy wto#P>1kL;gYu|Rk0!zq7ZVrH-1D8QX0UQH4X^6LAMFC=12#FQY0*s delta 397 zcmV;80doHBy9Ua;2C!uT1ZO#z#>)nLIeSvmw-P39R&q}Ae@w!p+5mY0X3K6KLKn3#kWsD0onoqWtS>L0Uj8| zl%)lQiXb(X?6V5+3Z(!@BJ#t6XoUcmRYL(Q62+8Yn+Pl&fPo61RG!h$15BTnl0yL{ z0g{)vLjfcP8W&r0!Y41KbM7Q+LJnno$v$t=wSL_NTWb{qkVt}XlQ8k@~LZR zDL>E!XlV4~scV-PMFB27ODz+Cjzy2PYpnbR@C42L25aAT!2(ywMs5y(pGjnc*LiXi rfU9mRo|_Lbj-Ox@nwMNhj++!QsmfetinoJB0b*DP(*s!IZE`@8VCkJP