diff --git a/Rom.py b/Rom.py index 6bdff514..8a5bf3b8 100644 --- a/Rom.py +++ b/Rom.py @@ -38,7 +38,7 @@ from source.dungeon.RoomList import Room0127 JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '8862307c3bdf3ae838f7e07b5df6596b' +RANDOMIZERBASEHASH = '155051ece07ef1b60c875a5746189c26' class JsonRom(object): diff --git a/asm/owrando.asm b/asm/owrando.asm index 25eb1fc9..8818a35e 100644 --- a/asm/owrando.asm +++ b/asm/owrando.asm @@ -47,6 +47,9 @@ Overworld_LoadSpecialOverworld_RoomId: org $04E8B4 Overworld_LoadSpecialOverworld: +org $02A9DA +JSL OWSkipMosiac + org $07982A Link_ResetSwimmingState: @@ -945,7 +948,20 @@ OWNewDestination: ; crossed OW shuffle and terrain ldx $05 : ldy $08 : jsr OWWorldTerrainUpdate - lda $05 : sta $8a + lda $8a : JSR OWDetermineScreensPaletteSet : STX $04 + lda $05 : sta $8a : JSR OWDetermineScreensPaletteSet + + ;PLA : AND.b #$3F : BEQ .leaving_woods + ;LDA $8A : AND.b #$3F : BEQ .entering_woods + CPX $04 : 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 + rep #$30 : rts } OWLoadSpecialArea: @@ -1085,6 +1101,30 @@ OWLoadGearPalettes: PLA : STA $00 : PLY : PLX RTS } +OWDetermineScreensPaletteSet: ; A = OWID to check +{ + LDX.b #$02 + PHA : AND.b #$3F + CMP.b #$03 : BEQ .death_mountain + CMP.b #$05 : BEQ .death_mountain + CMP.b #$07 : BEQ .death_mountain + LDX.b #$00 + .death_mountain + PLA : PHX : TAX : LDA.l OWTileWorldAssoc,x : BEQ + + PLX : INX : RTS + + PLX : RTS +} +OWSkipMosiac: +{ + LDA.l OWMode : ORA.l OWMode+1 : BEQ .vanilla + PLA : PLA : PEA $A9F2 + RTL + .vanilla + LDA.b $8A : AND.b #$3F : BNE + ; what we wrote over, kinda + PLA : PLA : PEA $A9E3 + + + RTL +} OWAdjustExitPosition: { LDA.w $06FC : CMP.b #$60 : BEQ .stone_bridge diff --git a/data/base2current.bps b/data/base2current.bps index 80b9ff4c..f789ffeb 100644 Binary files a/data/base2current.bps and b/data/base2current.bps differ