Initial Mixed/Crossed OW shuffle implementation
This commit is contained in:
@@ -182,7 +182,7 @@ JML Overworld_Hole_End
|
||||
;--------------------------------------------------------------------------------
|
||||
PreventEnterOnBonk:
|
||||
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.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
|
||||
PHA : PHX
|
||||
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
|
||||
STZ $04C6 ; skip it.
|
||||
LDA #$00
|
||||
|
||||
@@ -61,7 +61,10 @@ FluteBoy:
|
||||
JML.l FluteBoy_Continue
|
||||
;--------------------------------------------------------------------------------
|
||||
FreeDuckCheck:
|
||||
LDA.l OWMode+1 : CMP.b #$01 : BEQ .skipInvertedCheck
|
||||
LDA.l InvertedMode : BEQ .done
|
||||
.skipInvertedCheck
|
||||
|
||||
LDA $7EF34C : CMP.b #$03 : BEQ .done ; flute is already active
|
||||
|
||||
; check the area, is it #$18 = 30?
|
||||
|
||||
@@ -26,7 +26,7 @@ HudAdditions:
|
||||
++
|
||||
|
||||
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 $7ef3ca : and #$00ff : beq +++
|
||||
lda #$2d60 : bra .owdisplay
|
||||
|
||||
10
inverted.asm
10
inverted.asm
@@ -3,7 +3,7 @@
|
||||
; Does tile modification for... the pyramid of power hole
|
||||
; after Ganon slams into it in bat form?
|
||||
Overworld_CreatePyramidHoleModified:
|
||||
LDA.l InvertedMode : BNE +
|
||||
PHX : LDX $8A : LDA.l OWTileMapAlt, X : PLX : AND.b #$01 : BNE +
|
||||
JMP .originalBehaviour
|
||||
+
|
||||
.invertedBehavior
|
||||
@@ -80,7 +80,7 @@ Overworld_CreatePyramidHoleModified:
|
||||
RTL
|
||||
;------------------------------------------------------------------------------
|
||||
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
|
||||
LDA.w #$0E39 : STA $23BC
|
||||
INC A : STA $23BE
|
||||
@@ -174,7 +174,7 @@ GanonTowerInvertedCheck:
|
||||
;Hard coded rock removed in LW for Inverted mode
|
||||
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
|
||||
.normalrocks
|
||||
LDA.w #$020F : LDX $8A : CPX.w #$0033 : BNE .noRock
|
||||
@@ -186,7 +186,7 @@ HardcodedRocks:
|
||||
RTL
|
||||
|
||||
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)
|
||||
RTL
|
||||
+
|
||||
@@ -195,7 +195,7 @@ RTL
|
||||
|
||||
MirrorBonk:
|
||||
; 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
|
||||
; if we want to bonk branch to .forceBonk
|
||||
|
||||
@@ -93,6 +93,7 @@ LDA.l OWTileMapAlt+3 : AND #$0001 : BEQ .notInverted
|
||||
LDA #$0034 : STA $2BE0
|
||||
.notInverted
|
||||
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
|
||||
.return
|
||||
RTS
|
||||
@@ -268,10 +269,10 @@ LDA #$009A : STA $2EAC
|
||||
LDA #$009B : STA $2EAE
|
||||
LDA #$009C : STA $2EB0
|
||||
LDA #$0095 : STA $2EB2
|
||||
+ LDA.l OWTileMapAlt+$1B : AND #$0001 : BEQ +
|
||||
LDA #$0034 : STA $3028 : STA $302C
|
||||
LDA #$0035 : STA $302A : STA $3032
|
||||
LDA #$00DA : STA $302E
|
||||
+ LDA.l OWTileMapAlt+$1B : AND #$0001 : BEQ +
|
||||
LDA #$00E2 : STA $3030
|
||||
|
||||
;removing original castle ledge drop
|
||||
@@ -965,10 +966,11 @@ LDA.l OWTileMapAlt+$43 : AND #$0001 : BEQ .owshuffle
|
||||
STA $285E
|
||||
LDA #$0185 : STA $27E0
|
||||
STA $2860
|
||||
LDA #$0212 : STA $2BE0
|
||||
LDA #$0212 : STA $2BE0 ; portal
|
||||
.owshuffle
|
||||
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
|
||||
RTS
|
||||
}
|
||||
@@ -1020,6 +1022,33 @@ RTS
|
||||
map091: ;Pyramid
|
||||
{
|
||||
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 #$0324 : STA $39B8
|
||||
STA $39BA
|
||||
@@ -1039,6 +1068,7 @@ LDA #$0233 : STA $3AB8
|
||||
STA $3ABA
|
||||
STA $3ABC
|
||||
STA $3ABE
|
||||
+ LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
||||
LDA #$03A2 : STA $3B32
|
||||
LDA #$0235 : STA $3B36
|
||||
STA $3BB4
|
||||
@@ -1046,7 +1076,6 @@ LDA #$046A : STA $3B38
|
||||
LDA #$0333 : STA $3B3A
|
||||
STA $3B3C
|
||||
STA $3B3E
|
||||
+ LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
||||
LDA #$0034 : STA $3BB6
|
||||
STA $3BBA
|
||||
STA $3BBC
|
||||
@@ -1054,34 +1083,9 @@ STA $3C3A
|
||||
STA $3C3C
|
||||
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 #$0108 : STA $3C38
|
||||
|
||||
|
||||
+ LDA.l OWTileMapAlt+$5B : AND #$0001 : BEQ +
|
||||
;Warp Tile agah defeated
|
||||
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
|
||||
.agahnimAlive
|
||||
|
||||
|
||||
LDA #$0324 : STA $39C0
|
||||
STA $39C2
|
||||
STA $39C4
|
||||
|
||||
@@ -270,8 +270,7 @@ Multiworld_Ancilla_ReceiveItem_stillInMotion:
|
||||
|
||||
Multiworld_ConsumingFire_TransmuteToSkullWoodsFire:
|
||||
{
|
||||
;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 $8A : AND.b #$40 : BEQ .failed ; things we wrote over
|
||||
LDA $0C4A : CMP #$22 : BEQ .failed
|
||||
LDA $0C4B : 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
|
||||
org $05afd9 ; < ? - sprite_warp_vortex.asm 60 ()
|
||||
jsl.l OWWorldCheck
|
||||
org $07a3f0 ; < ? - Bank07.asm 5772 ()
|
||||
org $07a3f0 ; < ? - Bank07.asm 5772 () ; flute activation/use
|
||||
jsl.l OWWorldCheck
|
||||
org $07a967 ; < ? - Bank07.asm 6578 ()
|
||||
jsl.l OWWorldCheck
|
||||
@@ -54,6 +54,9 @@ jsl.l OWWorldCheck16 : nop
|
||||
org $1bed95 ; < ? - palettes.asm 748 ()
|
||||
jsl.l OWWorldCheck16 : nop
|
||||
|
||||
org $02b16e ; AND #$3F : ORA 7EF3CA
|
||||
and #$7f : eor #$40 : nop #2
|
||||
|
||||
;Code
|
||||
org $aa8800
|
||||
OWCoordIndex: ; Horizontal 1st
|
||||
@@ -94,7 +97,7 @@ org $aa9000
|
||||
OWEdgeTransition:
|
||||
{
|
||||
php : phy
|
||||
lda.l OWMode : beq +
|
||||
lda.l OWMode : ora.l OWMode+1 : beq +
|
||||
jsl OWShuffle : bra .return
|
||||
+ jsl OWVanilla
|
||||
.return
|
||||
@@ -270,7 +273,27 @@ OWNewDestination:
|
||||
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 #$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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user