Initial Mixed/Crossed OW shuffle implementation
This commit is contained in:
@@ -182,7 +182,7 @@ JML Overworld_Hole_End
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PreventEnterOnBonk:
|
PreventEnterOnBonk:
|
||||||
STA $00 ; part of what we wrote over
|
STA $00 ; part of what we wrote over
|
||||||
LDA.l InvertedMode : AND.w #$00FF : BEQ .done
|
LDA.b $8A : TAX : LDA.l OWTileMapAlt, X : AND.w #$0001 : BEQ .done
|
||||||
LDA.l $5D : AND.w #$00FF : CMP.w #$0014 : BNE .done ;in mirror mode?
|
LDA.l $5D : AND.w #$00FF : CMP.w #$0014 : BNE .done ;in mirror mode?
|
||||||
LDA.b $8A : TAX : LDA.l OWTileWorldAssoc, X : AND.w #$00FF : CMP $7B : BEQ .done ; Are we bonking, or doing the superbunny glitch?
|
LDA.b $8A : TAX : LDA.l OWTileWorldAssoc, X : AND.w #$00FF : CMP $7B : BEQ .done ; Are we bonking, or doing the superbunny glitch?
|
||||||
|
|
||||||
@@ -204,7 +204,8 @@ RTL
|
|||||||
AnimatedEntranceFix: ;when an entrance animation tries to start
|
AnimatedEntranceFix: ;when an entrance animation tries to start
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
LDA.l InvertedMode : BEQ + ;If we are in inverted mode
|
LDA.l InvertedMode : BEQ + ;If we are in inverted mode
|
||||||
LDX $8A : LDA.l OWTileWorldAssoc, X : BNE + ;and in the light world
|
LDA.l OWMode+1 : CMP #$01 : BEQ + ;If we are in Mixed OW shuffle mode
|
||||||
|
LDA $8A : AND #$40 : BNE + ;and in the light world
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
STZ $04C6 ; skip it.
|
STZ $04C6 ; skip it.
|
||||||
LDA #$00
|
LDA #$00
|
||||||
|
|||||||
@@ -61,7 +61,10 @@ FluteBoy:
|
|||||||
JML.l FluteBoy_Continue
|
JML.l FluteBoy_Continue
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FreeDuckCheck:
|
FreeDuckCheck:
|
||||||
|
LDA.l OWMode+1 : CMP.b #$01 : BEQ .skipInvertedCheck
|
||||||
LDA.l InvertedMode : BEQ .done
|
LDA.l InvertedMode : BEQ .done
|
||||||
|
.skipInvertedCheck
|
||||||
|
|
||||||
LDA $7EF34C : CMP.b #$03 : BEQ .done ; flute is already active
|
LDA $7EF34C : CMP.b #$03 : BEQ .done ; flute is already active
|
||||||
|
|
||||||
; check the area, is it #$18 = 30?
|
; check the area, is it #$18 = 30?
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ HudAdditions:
|
|||||||
++
|
++
|
||||||
|
|
||||||
LDX $1B : BNE + ; if outdoors
|
LDX $1B : BNE + ; if outdoors
|
||||||
lda.l OWMode : and #$0100 : bne ++ : rts ; Skip if not mixed ow rando
|
lda.l OWMode : and #$0300 : bne ++ : rts ; Skip if vanilla ow rando
|
||||||
++ lda $7ef36d : and #$00ff : beq ++
|
++ lda $7ef36d : and #$00ff : beq ++
|
||||||
lda $7ef3ca : and #$00ff : beq +++
|
lda $7ef3ca : and #$00ff : beq +++
|
||||||
lda #$2d60 : bra .owdisplay
|
lda #$2d60 : bra .owdisplay
|
||||||
|
|||||||
10
inverted.asm
10
inverted.asm
@@ -3,7 +3,7 @@
|
|||||||
; Does tile modification for... the pyramid of power hole
|
; Does tile modification for... the pyramid of power hole
|
||||||
; after Ganon slams into it in bat form?
|
; after Ganon slams into it in bat form?
|
||||||
Overworld_CreatePyramidHoleModified:
|
Overworld_CreatePyramidHoleModified:
|
||||||
LDA.l InvertedMode : BNE +
|
PHX : LDX $8A : LDA.l OWTileMapAlt, X : PLX : AND.b #$01 : BNE +
|
||||||
JMP .originalBehaviour
|
JMP .originalBehaviour
|
||||||
+
|
+
|
||||||
.invertedBehavior
|
.invertedBehavior
|
||||||
@@ -80,7 +80,7 @@ Overworld_CreatePyramidHoleModified:
|
|||||||
RTL
|
RTL
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
Draw_PyramidOverlay:
|
Draw_PyramidOverlay:
|
||||||
LDA.l InvertedMode : AND.w #$00FF : BNE .done
|
PHX : LDA $8A : AND.w #$00FF : TAX : LDA.l OWTileMapAlt, X : PLX : AND.w #$0001 : BNE .done
|
||||||
.normal
|
.normal
|
||||||
LDA.w #$0E39 : STA $23BC
|
LDA.w #$0E39 : STA $23BC
|
||||||
INC A : STA $23BE
|
INC A : STA $23BE
|
||||||
@@ -174,7 +174,7 @@ GanonTowerInvertedCheck:
|
|||||||
;Hard coded rock removed in LW for Inverted mode
|
;Hard coded rock removed in LW for Inverted mode
|
||||||
HardcodedRocks:
|
HardcodedRocks:
|
||||||
|
|
||||||
LDA InvertedMode : AND.w #$00FF : BEQ .normalrocks
|
LDA $8A : AND.w #$00FF : TAX : LDA.l OWTileMapAlt, X : AND.w #$0001 : BEQ .normalrocks
|
||||||
BRA .noRock2
|
BRA .noRock2
|
||||||
.normalrocks
|
.normalrocks
|
||||||
LDA.w #$020F : LDX $8A : CPX.w #$0033 : BNE .noRock
|
LDA.w #$020F : LDX $8A : CPX.w #$0033 : BNE .noRock
|
||||||
@@ -186,7 +186,7 @@ HardcodedRocks:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
TurtleRockPegSolved:
|
TurtleRockPegSolved:
|
||||||
LDA.l InvertedMode : AND.w #$00FF : BNE +
|
PHX : LDA $8A : AND.w #$00FF : TAX : LDA.l OWTileMapAlt, X : PLX : AND.w #$0001 : BNE +
|
||||||
LDA.l $7ef287 ; What we wrote over (reading flags for this screen)
|
LDA.l $7ef287 ; What we wrote over (reading flags for this screen)
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
@@ -195,7 +195,7 @@ RTL
|
|||||||
|
|
||||||
MirrorBonk:
|
MirrorBonk:
|
||||||
; must preserve X/Y, and must preserve $00-$0F
|
; must preserve X/Y, and must preserve $00-$0F
|
||||||
LDA.l InvertedMode : BEQ .normal
|
PHX : LDX $8A : LDA.l OWTileMapAlt, X : PLX : AND.b #$01 : BEQ .normal
|
||||||
|
|
||||||
; Goal: use $20 and $22 to decide to force a bonk
|
; Goal: use $20 and $22 to decide to force a bonk
|
||||||
; if we want to bonk branch to .forceBonk
|
; if we want to bonk branch to .forceBonk
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ LDA.l OWTileMapAlt+3 : AND #$0001 : BEQ .notInverted
|
|||||||
LDA #$0034 : STA $2BE0
|
LDA #$0034 : STA $2BE0
|
||||||
.notInverted
|
.notInverted
|
||||||
LDA.l OWTileMapAlt+3 : AND #$0002 : BEQ .return
|
LDA.l OWTileMapAlt+3 : AND #$0002 : BEQ .return
|
||||||
|
LDA.l OWMode : AND #$00FF : BEQ .return
|
||||||
LDA $2BE0 : STA $38B4 ;adding convenient WDM portal in OW Shuffle
|
LDA $2BE0 : STA $38B4 ;adding convenient WDM portal in OW Shuffle
|
||||||
.return
|
.return
|
||||||
RTS
|
RTS
|
||||||
@@ -268,10 +269,10 @@ LDA #$009A : STA $2EAC
|
|||||||
LDA #$009B : STA $2EAE
|
LDA #$009B : STA $2EAE
|
||||||
LDA #$009C : STA $2EB0
|
LDA #$009C : STA $2EB0
|
||||||
LDA #$0095 : STA $2EB2
|
LDA #$0095 : STA $2EB2
|
||||||
|
+ LDA.l OWTileMapAlt+$1B : AND #$0001 : BEQ +
|
||||||
LDA #$0034 : STA $3028 : STA $302C
|
LDA #$0034 : STA $3028 : STA $302C
|
||||||
LDA #$0035 : STA $302A : STA $3032
|
LDA #$0035 : STA $302A : STA $3032
|
||||||
LDA #$00DA : STA $302E
|
LDA #$00DA : STA $302E
|
||||||
+ LDA.l OWTileMapAlt+$1B : AND #$0001 : BEQ +
|
|
||||||
LDA #$00E2 : STA $3030
|
LDA #$00E2 : STA $3030
|
||||||
|
|
||||||
;removing original castle ledge drop
|
;removing original castle ledge drop
|
||||||
@@ -965,10 +966,11 @@ LDA.l OWTileMapAlt+$43 : AND #$0001 : BEQ .owshuffle
|
|||||||
STA $285E
|
STA $285E
|
||||||
LDA #$0185 : STA $27E0
|
LDA #$0185 : STA $27E0
|
||||||
STA $2860
|
STA $2860
|
||||||
LDA #$0212 : STA $2BE0
|
LDA #$0212 : STA $2BE0 ; portal
|
||||||
.owshuffle
|
.owshuffle
|
||||||
LDA.l OWTileMapAlt+$43 : AND #$0002 : BEQ .return
|
LDA.l OWTileMapAlt+$43 : AND #$0002 : BEQ .return
|
||||||
LDA $2BE0 : STA $38B4 ;adding convenient WDM portal in OW Shuffle
|
LDA.l OWMode : AND #$00FF : BEQ .return
|
||||||
|
LDA $2BE0 : STA $38B4 ; adding convenient WDM portal in OW Shuffle
|
||||||
.return
|
.return
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
@@ -1020,6 +1022,33 @@ RTS
|
|||||||
map091: ;Pyramid
|
map091: ;Pyramid
|
||||||
{
|
{
|
||||||
LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
||||||
|
LDA #$0A06 : STA $2E1C ; cover up entrance
|
||||||
|
LDA #$0A0E : STA $2E1E
|
||||||
|
|
||||||
|
;Added Pegs on pyramid map
|
||||||
|
;{
|
||||||
|
;STA $321C
|
||||||
|
;STA $329C
|
||||||
|
;STA $32A0
|
||||||
|
|
||||||
|
;LDA #$0071 : STA $321E
|
||||||
|
;;LDA #$00DA : STA $3220
|
||||||
|
;STA $329A
|
||||||
|
;LDA #$00E1 : STA $329E
|
||||||
|
;LDA #$0382 : STA $3318
|
||||||
|
;LDA #$037C : STA $3322
|
||||||
|
|
||||||
|
;LDA #$021B : STA $3218
|
||||||
|
;STA $3222
|
||||||
|
;STA $3298
|
||||||
|
;STA $32A2
|
||||||
|
;STA $331A
|
||||||
|
;STA $331C
|
||||||
|
;STA $331E
|
||||||
|
;STA $3320
|
||||||
|
;LDA #$00E2 : STA $321A
|
||||||
|
;}
|
||||||
|
|
||||||
LDA #$0323 : STA $39B6
|
LDA #$0323 : STA $39B6
|
||||||
LDA #$0324 : STA $39B8
|
LDA #$0324 : STA $39B8
|
||||||
STA $39BA
|
STA $39BA
|
||||||
@@ -1039,6 +1068,7 @@ LDA #$0233 : STA $3AB8
|
|||||||
STA $3ABA
|
STA $3ABA
|
||||||
STA $3ABC
|
STA $3ABC
|
||||||
STA $3ABE
|
STA $3ABE
|
||||||
|
+ LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
||||||
LDA #$03A2 : STA $3B32
|
LDA #$03A2 : STA $3B32
|
||||||
LDA #$0235 : STA $3B36
|
LDA #$0235 : STA $3B36
|
||||||
STA $3BB4
|
STA $3BB4
|
||||||
@@ -1046,7 +1076,6 @@ LDA #$046A : STA $3B38
|
|||||||
LDA #$0333 : STA $3B3A
|
LDA #$0333 : STA $3B3A
|
||||||
STA $3B3C
|
STA $3B3C
|
||||||
STA $3B3E
|
STA $3B3E
|
||||||
+ LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
|
||||||
LDA #$0034 : STA $3BB6
|
LDA #$0034 : STA $3BB6
|
||||||
STA $3BBA
|
STA $3BBA
|
||||||
STA $3BBC
|
STA $3BBC
|
||||||
@@ -1054,34 +1083,9 @@ STA $3C3A
|
|||||||
STA $3C3C
|
STA $3C3C
|
||||||
STA $3C3E
|
STA $3C3E
|
||||||
|
|
||||||
;Added Pegs on pyramid map
|
|
||||||
;{
|
|
||||||
STA $321C
|
|
||||||
STA $329C
|
|
||||||
STA $32A0
|
|
||||||
|
|
||||||
LDA #$0071 : STA $321E
|
|
||||||
LDA #$00DA : STA $3220
|
|
||||||
STA $329A
|
|
||||||
LDA #$00E1 : STA $329E
|
|
||||||
LDA #$0382 : STA $3318
|
|
||||||
LDA #$037C : STA $3322
|
|
||||||
|
|
||||||
LDA #$021B : STA $3218
|
|
||||||
STA $3222
|
|
||||||
STA $3298
|
|
||||||
STA $32A2
|
|
||||||
STA $331A
|
|
||||||
STA $331C
|
|
||||||
STA $331E
|
|
||||||
STA $3320
|
|
||||||
LDA #$00E2 : STA $321A
|
|
||||||
;}
|
|
||||||
|
|
||||||
LDA #$00F2 : STA $3BB8
|
LDA #$00F2 : STA $3BB8
|
||||||
LDA #$0108 : STA $3C38
|
LDA #$0108 : STA $3C38
|
||||||
|
|
||||||
|
|
||||||
+ LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
+ LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
||||||
;Warp Tile agah defeated
|
;Warp Tile agah defeated
|
||||||
LDA #$0034 : STA $3BBE ;Tile when no warp
|
LDA #$0034 : STA $3BBE ;Tile when no warp
|
||||||
@@ -1089,7 +1093,6 @@ LDA $7EF3C5 : AND #$00FF : CMP #$0003 : BNE .agahnimAlive
|
|||||||
LDA #$0212 : STA $3BBE ;warp
|
LDA #$0212 : STA $3BBE ;warp
|
||||||
.agahnimAlive
|
.agahnimAlive
|
||||||
|
|
||||||
|
|
||||||
LDA #$0324 : STA $39C0
|
LDA #$0324 : STA $39C0
|
||||||
STA $39C2
|
STA $39C2
|
||||||
STA $39C4
|
STA $39C4
|
||||||
|
|||||||
@@ -270,8 +270,7 @@ Multiworld_Ancilla_ReceiveItem_stillInMotion:
|
|||||||
|
|
||||||
Multiworld_ConsumingFire_TransmuteToSkullWoodsFire:
|
Multiworld_ConsumingFire_TransmuteToSkullWoodsFire:
|
||||||
{
|
{
|
||||||
;LDA $8A : AND.b #$40 : BEQ .failed ; things we wrote over
|
LDA $8A : AND.b #$40 : BEQ .failed ; things we wrote over
|
||||||
PHX : LDX $8A : LDA.l OWTileWorldAssoc, X : PLX : AND.b #$FF : BEQ .failed
|
|
||||||
LDA $0C4A : CMP #$22 : BEQ .failed
|
LDA $0C4A : CMP #$22 : BEQ .failed
|
||||||
LDA $0C4B : CMP #$22 : BEQ .failed
|
LDA $0C4B : CMP #$22 : BEQ .failed
|
||||||
LDA $0C4C : CMP #$22 : BEQ .failed
|
LDA $0C4C : CMP #$22 : BEQ .failed
|
||||||
|
|||||||
29
owrando.asm
29
owrando.asm
@@ -27,7 +27,7 @@ org $02c40a ; < ? - Bank02.asm 10547 ()
|
|||||||
jsl.l OWWorldCheck
|
jsl.l OWWorldCheck
|
||||||
org $05afd9 ; < ? - sprite_warp_vortex.asm 60 ()
|
org $05afd9 ; < ? - sprite_warp_vortex.asm 60 ()
|
||||||
jsl.l OWWorldCheck
|
jsl.l OWWorldCheck
|
||||||
org $07a3f0 ; < ? - Bank07.asm 5772 ()
|
org $07a3f0 ; < ? - Bank07.asm 5772 () ; flute activation/use
|
||||||
jsl.l OWWorldCheck
|
jsl.l OWWorldCheck
|
||||||
org $07a967 ; < ? - Bank07.asm 6578 ()
|
org $07a967 ; < ? - Bank07.asm 6578 ()
|
||||||
jsl.l OWWorldCheck
|
jsl.l OWWorldCheck
|
||||||
@@ -54,6 +54,9 @@ jsl.l OWWorldCheck16 : nop
|
|||||||
org $1bed95 ; < ? - palettes.asm 748 ()
|
org $1bed95 ; < ? - palettes.asm 748 ()
|
||||||
jsl.l OWWorldCheck16 : nop
|
jsl.l OWWorldCheck16 : nop
|
||||||
|
|
||||||
|
org $02b16e ; AND #$3F : ORA 7EF3CA
|
||||||
|
and #$7f : eor #$40 : nop #2
|
||||||
|
|
||||||
;Code
|
;Code
|
||||||
org $aa8800
|
org $aa8800
|
||||||
OWCoordIndex: ; Horizontal 1st
|
OWCoordIndex: ; Horizontal 1st
|
||||||
@@ -94,7 +97,7 @@ org $aa9000
|
|||||||
OWEdgeTransition:
|
OWEdgeTransition:
|
||||||
{
|
{
|
||||||
php : phy
|
php : phy
|
||||||
lda.l OWMode : beq +
|
lda.l OWMode : ora.l OWMode+1 : beq +
|
||||||
jsl OWShuffle : bra .return
|
jsl OWShuffle : bra .return
|
||||||
+ jsl OWVanilla
|
+ jsl OWVanilla
|
||||||
.return
|
.return
|
||||||
@@ -270,7 +273,27 @@ OWNewDestination:
|
|||||||
lda $418 : asl : tax : lda $610,x : !add 1,s : sta $610,x : pla
|
lda $418 : asl : tax : lda $610,x : !add 1,s : sta $610,x : pla
|
||||||
|
|
||||||
sep #$30 : lda OWOppSlotOffset,y : !add $04 : asl : and #$7f : sta $700
|
sep #$30 : lda OWOppSlotOffset,y : !add $04 : asl : and #$7f : sta $700
|
||||||
sep #$20 : lda $05 : sta $8a ;: and #$40 : sta.l $7ef3ca ;removed setting DW flag
|
|
||||||
|
lda.l OWMode+1 : and #$ff : cmp #$02 : bne .return
|
||||||
|
ldx $05 : lda.l OWTileWorldAssoc,x : sta.l $7ef3ca ; change world
|
||||||
|
|
||||||
|
; toggle bunny mode
|
||||||
|
lda $7ef357 : bne .nobunny
|
||||||
|
lda.l InvertedMode : bne .inverted
|
||||||
|
lda $7ef3ca : and.b #$40 : bra +
|
||||||
|
.inverted lda $7ef3ca : and.b #$40 : eor #$40
|
||||||
|
++ cmp #$40 : bne .nobunny
|
||||||
|
; turn into bunny
|
||||||
|
lda $5d : cmp #$17 : beq .return
|
||||||
|
lda #$17 : sta $5d
|
||||||
|
lda #$01 : sta $02e0
|
||||||
|
bra .return
|
||||||
|
.nobunny
|
||||||
|
lda $5d : cmp #$17 : bne .return
|
||||||
|
stz $5d : stz $2e0
|
||||||
|
|
||||||
|
.return
|
||||||
|
lda $05 : sta $8a
|
||||||
rep #$30 : rts
|
rep #$30 : rts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user