From 4ccca3888814858483a8220e3abdaf0df1e572ab Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Sat, 8 Oct 2022 18:09:44 +0200 Subject: [PATCH] Implement forced transitions --- owrando.asm | 303 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 212 insertions(+), 91 deletions(-) diff --git a/owrando.asm b/owrando.asm index c709fc4..00535d6 100644 --- a/owrando.asm +++ b/owrando.asm @@ -38,6 +38,9 @@ Overworld_LoadSpecialOverworld_RoomId: org $04E8B4 Overworld_LoadSpecialOverworld: +org $07982A +Link_ResetSwimmingState: + ; mirror hooks org $02FBAB @@ -54,6 +57,8 @@ JSL OWMirrorSpriteOnMap : BRA + : NOP #6 : + ; whirlpool shuffle cross world change org $02b3bd jsl OWWhirlpoolUpdate ;JSL $02EA6C +org $02B44E +jsl OWWhirlpoolEnd ; STZ.b $11 : STZ.b $B0 ; flute menu cancel org $0ab7af ;LDA $F2 : ORA $F0 : AND #$C0 @@ -172,6 +177,8 @@ OWCameraRangeIndex: db 2, 2, 0, 0 ; For OWCameraRange OWCameraRange: dw $011E, $0100 ; Length of the range the camera can move on small screens +OWAutoWalk: +db $04, $08, $01, $02 DivideByTwoPreserveSign: { @@ -201,13 +208,21 @@ OWMapWorldCheck16: OWWhirlpoolUpdate: { jsl $02ea6c ; what we wrote over - lda.l OWFlags : and #$01 : bne + - lda.l OWMode+1 : and #$02 : beq .return - + ldx $8a : jsr OWWorldUpdate - .return + ldx $8a : ldy #$03 : jsr OWWorldTerrainUpdate rtl } +OWWhirlpoolEnd: +{ + STZ.b $B0 ; what we wrote over + LDA.w $0703 : BEQ .normal + LDA.b #$3C : STA.w $012E ; play error sound before forced transition + RTL + .normal + STZ.b $11 ; end whirlpool transition + RTL +} + OWMirrorSpriteOnMap: { lda.w $1ac0,x : bit.b #$f0 : beq .continue @@ -525,39 +540,42 @@ OWDetectSpecialTransition: { STZ.w $06FC LDA.l OWMode : BEQ .normal - LDA.l OWSpecialDestIndex,X : BIT.w #$0080 : BNE .special - STA.w $06FA - LDA.l OWEdgeDataOffset,X : STA.w $06F8 - PLA : SEP #$30 : PLA ; delete 3 bytes from stack - JSL Link_CheckForEdgeScreenTransition : BCS .return ; Link_CheckForEdgeScreenTransition - LDA.l Overworld_CheckForSpecialOverworldTrigger_Direction,X : STA.b $00 : CMP.b #$08 : BNE .hobo - LSR : STA.b $20 : STZ.b $E8 ; move Link and camera to edge - LDA.b #$06 : STA.b $02 - STZ.w $0418 - BRA .continue - .hobo - STA.b $02 : STA.w $0418 - ASL : STA.b $22 : STZ.b $E2 ; move Link and camera to edge - LDA.b #$0A : STA.b $23 : STA.b $E3 - .continue - STZ.b $03 - ; copied from DeleteCertainAncillaeStopDashing at $028A0E - JSL Ancilla_TerminateSelectInteractives - LDA.w $0372 : BEQ .not_dashing - STZ.b $4D : STZ.b $46 - LDA.b #$FF : STA.b $29 : STA.b $C7 - STZ.b $3D : STZ.b $5E : STZ.w $032B : STZ.w $0372 : STZ.b $5D - .not_dashing - PLA : REP #$31 : PLA ; delete 3 bytes from stack - LDX.b $02 - LDA.b $84 - JML OverworldHandleTransitions_SpecialTrigger+6 - .special + TXA : AND.w #$0002 : LSR + STA.w $0704 + LDA.l OWSpecialDestIndex,X : BIT.w #$0080 : BEQ .switch_to_edge AND.w #$0003 : TAY : ASL : TAX .normal JSR OWLoadSpecialArea .return RTL + + .switch_to_edge + STA.w $06FA + LDA.l OWEdgeDataOffset,X : STA.w $06F8 + PLA : SEP #$30 : PLA ; delete 3 bytes from stack + JSL Link_CheckForEdgeScreenTransition : BCS .return ; Link_CheckForEdgeScreenTransition + LDA.l Overworld_CheckForSpecialOverworldTrigger_Direction,X : STA.b $00 : CMP.b #$08 : BNE .hobo + LSR : STA.b $20 : STZ.b $E8 ; move Link and camera to edge + LDA.b #$06 : STA.b $02 + STZ.w $0418 + BRA .continue + .hobo + STA.b $02 : STA.w $0418 + ASL : STA.b $22 : STZ.b $E2 ; move Link and camera to edge + LDA.b #$0A : STA.b $23 : STA.b $E3 + .continue + STZ.b $03 + ; copied from DeleteCertainAncillaeStopDashing at $028A0E + JSL Ancilla_TerminateSelectInteractives + LDA.w $0372 : BEQ .not_dashing + STZ.b $4D : STZ.b $46 + LDA.b #$FF : STA.b $29 : STA.b $C7 + STZ.b $3D : STZ.b $5E : STZ.w $032B : STZ.w $0372 : STZ.b $5D + .not_dashing + PLA : REP #$31 : PLA ; delete 3 bytes from stack + LDX.b $02 + LDA.b $84 + JML OverworldHandleTransitions_SpecialTrigger+6 } OWEdgeTransition: { @@ -577,9 +595,16 @@ OWEdgeTransition: } OWSpecialExit: { - LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : BEQ .return - JSR OWWorldUpdate - .return + PHY + LDY.b #$00 + LDA.w $0418 : LSR : BNE + + LDY.w $0704 : BRA ++ + + + LDA.w $0704 : BNE ++ + LDY.b #$02 + ++ + JSR OWWorldTerrainUpdate + PLY LDA.l $7EFD40,X ; what we wrote over RTL } @@ -611,7 +636,7 @@ OWShuffle: .nextTransition pha - jsr OWSearchTransition : bcs .newDestination + jsr OWSearchTransition_entry : bcs .newDestination txa : !add #$0010 : tax pla : dec : bne .nextTransition : bra .noTransition @@ -627,6 +652,10 @@ OWShuffle: } OWSearchTransition: { + .exitloop ; moved here because of branch distance + clc : rts + + .entry ;A-16 XY-16 lda $418 : bne + ;north lda.l OWNorthEdges,x : dec @@ -634,6 +663,7 @@ OWSearchTransition: lda.l OWNorthEdges+2,x : cmp $22 : !blt .exitloop ;MATCH lda.l OWNorthEdges+14,x : tay ;y = record id of dest + lda.l OWNorthEdges+12,x ;a = current terrain ldx.w #OWSouthEdges ;x = address of table bra .matchfound + dec : bne + ;south @@ -642,6 +672,7 @@ OWSearchTransition: lda.l OWSouthEdges+2,x : cmp $22 : !blt .exitloop ;MATCH lda.l OWSouthEdges+14,x : tay ;y = record id of dest + lda.l OWSouthEdges+12,x ;a = current terrain ldx.w #OWNorthEdges ;x = address of table bra .matchfound + dec : bne + ; west @@ -650,6 +681,7 @@ OWSearchTransition: lda.l OWWestEdges+2,x : cmp $20 : !blt .exitloop ;MATCH lda.l OWWestEdges+14,x : tay ;y = record id of dest + lda.l OWWestEdges+12,x ;a = current terrain ldx.w #OWEastEdges ;x = address of table bra .matchfound + lda.l OWEastEdges,x : dec ;east @@ -657,15 +689,13 @@ OWSearchTransition: lda.l OWEastEdges+2,x : cmp $20 : !blt .exitloop ;MATCH lda.l OWEastEdges+14,x : tay ;y = record id of dest + lda.l OWEastEdges+12,x ;a = current terrain ldx.w #OWWestEdges ;x = address of table .matchfound - stx $06f8 : sty $06fa : sec : rts + stx $06f8 : sty $06fa : sta $0704 : sec : rts plx : pla : pea $0001 : phx sec : rts - - .exitloop - clc : rts } OWNewDestination: { @@ -698,6 +728,16 @@ OWNewDestination: LDA.w $000F,X : AND.w #$00FF : STA.w $06FC ; position to walk to after transition (if non-zero) + LDY.w #$0000 + LDA.w $000C,X : AND.w #$0001 : BEQ + ; check if going to water transition + LDA.w $0704 : AND.w #$0001 : BNE ++ ; check if coming from water transition + INY : BRA ++ + + + LDA.w $0704 : BEQ ++ ; check if coming from water transition + LDY.w #$0002 + ++ + STY.b $08 + pla : pla : sep #$10 : ldy $418 ldx OWCoordIndex,y : lda $20,x : and #$fe00 : pha lda $20,x : and #$01ff : pha ;s1 = relative cur, s3 = ow cur @@ -743,27 +783,37 @@ OWNewDestination: sep #$30 : lda $04 : and #$3f : !add OWOppSlotOffset,y : asl : sta $700 - ; crossed OW shuffle - lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .return - ldx $05 : jsr OWWorldUpdate + ; crossed OW shuffle and terrain + ldx $05 : ldy $08 : jsr OWWorldTerrainUpdate - .return lda $05 : sta $8a rep #$30 : rts } OWLoadSpecialArea: { LDA.l Overworld_LoadSpecialOverworld_RoomId,X : STA.b $A0 - JSL Overworld_LoadSpecialOverworld - LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : BEQ .return - TYX : LDA.l OWSpecialDestSlot,X : TAX - JSR OWWorldUpdate + JSL Overworld_LoadSpecialOverworld ; sets M and X flags + TYX + LDY.b #$00 + CPX.b #$01 : BNE + ; check if going to water transition + LDA.w $0704 : BNE ++ ; check if coming from water transition + INY : BRA ++ + + + LDA.w $0704 : BEQ ++ ; check if coming from water transition + LDY.b #$02 + ++ + LDA.l OWSpecialDestSlot,X : TAX + JSR OWWorldTerrainUpdate .return RTS } -OWWorldUpdate: ; x = owid of destination screen +OWWorldTerrainUpdate: ; x = owid of destination screen, y = 1 for land to water, 2 for water to land, 3 for whirlpools and 0 else { - lda.l OWTileWorldAssoc,x : cmp.l CurrentWorld : beq .return + LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : BEQ .not_crossed + LDA.l OWTileWorldAssoc,x : CMP.l CurrentWorld : BNE .crossed + .not_crossed + JMP .normal + .crossed sta.l CurrentWorld ; change world ; moving mirror portal off screen when in DW @@ -781,19 +831,87 @@ OWWorldUpdate: ; x = owid of destination screen lda CurrentWorld : and.b #$40 : bra + .inverted lda CurrentWorld : and.b #$40 : eor #$40 + cmp #$40 : bne .nobunny - ; turn into bunny - lda $5d : cmp #$04 : beq + ; if swimming, continue - lda #$17 : sta $5d - + lda #$01 : sta $02e0 : sta $56 - bra .return + + LDA.w $0703 : BEQ + ; check if forced transition + CPY.b #$03 : BEQ .end_forced_whirlpool + LDA.b #$17 : STA.b $5D + LDA.b #$01 : STA.w $02E0 : STA.b $56 + LDA.w $0703 : BRA .end_forced_edge + + + CPY.b #$01 : BEQ .auto ; check if going from land to water + CPY.b #$02 : BEQ .to_bunny_reset_swim ; bunny state if swimming to land + LDA.b $5D : CMP.b #$04 : BNE .to_bunny ; check if swimming + .auto + PHX + LDA.b #$01 + LDX.b $5D : CPX.b #$04 : BNE + + INC + + + STA.w $0703 + CPY.b #$03 : BEQ .whirlpool + LDA.b #$01 : STA.w $0345 + LDX.w $0418 + LDA.l OWAutoWalk,X : STA.b $49 + STZ.b $5D + PLX + BRA .to_pseudo_bunny + .whirlpool + PLX : RTS + .to_bunny_reset_swim + JSL Link_ResetSwimmingState + STZ.w $0345 + .to_bunny + LDA.b #$17 : STA.b $5D + .to_pseudo_bunny + LDA.b #$01 : STA.w $02E0 : STA.b $56 + RTS .nobunny lda $5d : cmp #$17 : bne + ; retain current state unless bunny stz $5d + stz $02e0 : stz $56 + .normal + LDA.w $0703 : BEQ .not_forced ; check if forced transition + CPY.b #$03 : BEQ .end_forced_whirlpool + .end_forced_edge + STZ.b $49 : STZ.w $0345 + .end_forced_whirlpool + STZ.w $0703 + CMP.b #$02 : BNE + + DEC : STA.w $0345 + LDA.b #$04 : BRA .set_state + + + CMP.b #$03 : BNE ++ + LDA.b #$17 + .set_state + STA.b $5D + ++ + RTS + .not_forced + CPY.b #$02 : BNE + ; check if going from water to land + JSL Link_ResetSwimmingState + STZ.w $0345 + LDA.b $5D : CMP.b #$04 : BNE + ; check if swimming + STZ.b $5D + + + CPY.b #$01 : BNE .return ; check if going from land to water + LDA.b #$01 : STA.w $0345 + LDA.b $5D : CMP.b #$04 : BEQ .return ; check if swimming + LDA.l FlippersEquipment : BEQ .no_flippers ; check if flippers obtained + LDA.b $5D : CMP.b #$17 : BEQ .no_flippers ; check if bunny + LDA.b #$04 : STA.b $5D : RTS + .no_flippers + PHX + INC : STA.w $0703 + LDX.w $0418 + LDA.l OWAutoWalk,X : STA.b $49 + PLX + LDA.b $5D : CMP.b #$17 : BNE .return ; check if bunny + LDA.b #$03 : STA.w $0703 + STZ.b $5D .return - rts + RTS } OWAdjustExitPosition: { @@ -807,6 +925,9 @@ OWAdjustExitPosition: LDA.b #$3B : STA.w $061E INC.b $23 : INC.w $061D : INC.w $061F .normal + LDA.w $0703 : BEQ + + LDA.b #$3C : STA.w $012E ; play error sound before forced transition + + INC.b $11 : STZ.b $B0 ; what we wrote over RTL } @@ -978,7 +1099,7 @@ db $80, $80, $81 org $aaa800 ;PC 152800 OWNorthEdges: -; Min Max Width Mid OW Slot/OWID VRAM *FREE* Dest Index +; Min Max Width Mid OW Slot/OWID VRAM Terrain Dest Index dw $00a0, $00a0, $0000, $00a0, $0000, $0000, $0000, $B040 ;Lost Woods (exit only) dw $0458, $0540, $00e8, $04cc, $0a0a, $0000, $0000, $0000 dw $0f38, $0f60, $0028, $0f4c, $0f0f, $0000, $0000, $2041 ;Waterfall (exit only) @@ -993,7 +1114,7 @@ dw $02e8, $0348, $0060, $0318, $1819, $0000, $0000, $0008 dw $0478, $04d0, $0058, $04a4, $1a1a, $0000, $0000, $0009 dw $0510, $0538, $0028, $0524, $1a1a, $0000, $0000, $000a dw $0a48, $0af0, $00a8, $0a9c, $1d1d, $0000, $0000, $000b -dw $0b28, $0b38, $0010, $0b30, $1d1d, $0000, $0000, $000c +dw $0b28, $0b38, $0010, $0b30, $1d1d, $0000, $0001, $000c dw $0b70, $0ba0, $0030, $0b88, $1d1d, $0000, $0000, $000d dw $0a40, $0b10, $00d0, $0aa8, $2525, $0000, $0000, $000e dw $0350, $0390, $0040, $0370, $2929, $0000, $0000, $000f @@ -1007,11 +1128,11 @@ dw $04d8, $04f8, $0020, $04e8, $3232, $0000, $0000, $0016 dw $0688, $06b0, $0028, $069c, $3333, $0000, $0000, $0017 dw $08d0, $08f0, $0020, $08e0, $3434, $0000, $0000, $0018 dw $0a80, $0b40, $00c0, $0ae0, $3535, $0000, $0000, $0019 -dw $0d38, $0d58, $0020, $0d48, $3536, $0000, $0000, $001a +dw $0d38, $0d58, $0020, $0d48, $3536, $0000, $0001, $001a dw $0d90, $0da0, $0010, $0d98, $3536, $0000, $0000, $001b dw $06a0, $07b0, $0110, $0728, $3b3b, $0000, $0000, $001c dw $0830, $09b0, $0180, $08f0, $3c3c, $0000, $0000, $001d -dw $0e78, $0e88, $0010, $0e80, $3f3f, $0000, $0000, $001e +dw $0e78, $0e88, $0010, $0e80, $3f3f, $0000, $0001, $001e dw $0ee0, $0fc0, $00e0, $0f50, $3f3f, $0000, $0000, $001f dw $0458, $0540, $00e8, $04cc, $4a4a, $0000, $0000, $0020 dw $0058, $0058, $0000, $0058, $5050, $0000, $0000, $0021 @@ -1025,7 +1146,7 @@ dw $02e8, $0348, $0060, $0318, $5859, $0000, $0000, $0028 dw $0478, $04d0, $0058, $04a4, $5a5a, $0000, $0000, $0029 dw $0510, $0538, $0028, $0524, $5a5a, $0000, $0000, $002a dw $0a48, $0af0, $00a8, $0a9c, $5d5d, $0000, $0000, $002b -dw $0b28, $0b38, $0010, $0b30, $5d5d, $0000, $0000, $002c +dw $0b28, $0b38, $0010, $0b30, $5d5d, $0000, $0001, $002c dw $0b70, $0ba0, $0030, $0b88, $5d5d, $0000, $0000, $002d dw $0a40, $0b10, $00d0, $0aa8, $6565, $0000, $0000, $002e dw $0350, $0390, $0040, $0370, $6969, $0000, $0000, $002f @@ -1039,11 +1160,11 @@ dw $04d8, $04f8, $0020, $04e8, $7272, $0000, $0000, $0036 dw $0688, $06b0, $0028, $069c, $7373, $0000, $0000, $0037 dw $08d0, $08f0, $0020, $08e0, $7474, $0000, $0000, $0038 dw $0a80, $0b40, $00c0, $0ae0, $7575, $0000, $0000, $0039 -dw $0d38, $0d58, $0020, $0d48, $7576, $0000, $0000, $003a +dw $0d38, $0d58, $0020, $0d48, $7576, $0000, $0001, $003a dw $0d90, $0da0, $0010, $0d98, $7576, $0000, $0000, $003b dw $06a0, $07b0, $0110, $0728, $7b7b, $0000, $0000, $003c dw $0830, $09b0, $0180, $08f0, $7c7c, $0000, $0000, $003d -dw $0e78, $0e88, $0010, $0e80, $7f7f, $0000, $0000, $003e +dw $0e78, $0e88, $0010, $0e80, $7f7f, $0000, $0001, $003e dw $0ee0, $0fc0, $00e0, $0f50, $7f7f, $0000, $0000, $003f OWSouthEdges: dw $0458, $0540, $00e8, $04cc, $0202, $0000, $0000, $0001 @@ -1058,7 +1179,7 @@ dw $02e8, $0348, $0060, $0318, $1111, $0000, $0000, $000a dw $0478, $04d0, $0058, $04a4, $1212, $0000, $0000, $000b dw $0510, $0538, $0028, $0524, $1212, $0000, $0000, $000c dw $0a48, $0af0, $00a8, $0a9c, $1515, $0000, $0000, $000d -dw $0b28, $0b38, $0010, $0b30, $1515, $0000, $0000, $000e +dw $0b28, $0b38, $0010, $0b30, $1515, $0000, $0001, $000e dw $0b70, $0ba0, $0030, $0b88, $1515, $0000, $0000, $000f dw $0a40, $0b10, $00d0, $0aa8, $1d1d, $0000, $0000, $0010 dw $0350, $0390, $0040, $0370, $1821, $0000, $0000, $0011 @@ -1072,11 +1193,11 @@ dw $04d8, $04f8, $0020, $04e8, $2a2a, $0000, $0000, $0018 dw $0688, $06b0, $0028, $069c, $2b2b, $0000, $0000, $0019 dw $08d0, $08f0, $0020, $08e0, $2c2c, $0000, $0000, $001a dw $0a80, $0b40, $00c0, $0ae0, $2d2d, $0000, $0000, $001b -dw $0d38, $0d58, $0020, $0d48, $2e2e, $0000, $0000, $001c +dw $0d38, $0d58, $0020, $0d48, $2e2e, $0000, $0001, $001c dw $0d90, $0da0, $0010, $0d98, $2e2e, $0000, $0000, $001d dw $06a0, $07b0, $0110, $0728, $3333, $0000, $0000, $001e dw $0830, $09b0, $0180, $08f0, $3434, $0000, $0000, $001f -dw $0e78, $0e88, $0010, $0e80, $3737, $0000, $0000, $0020 +dw $0e78, $0e88, $0010, $0e80, $3737, $0000, $0001, $0020 dw $0ee0, $0fc0, $00e0, $0f50, $3737, $0000, $0000, $0021 dw $0458, $0540, $00e8, $04cc, $4242, $0000, $0000, $0022 dw $0058, $0058, $0000, $0058, $4048, $0000, $0000, $0023 @@ -1090,7 +1211,7 @@ dw $02e8, $0348, $0060, $0318, $5151, $0000, $0000, $002a dw $0478, $04d0, $0058, $04a4, $5252, $0000, $0000, $002b dw $0510, $0538, $0028, $0524, $5252, $0000, $0000, $002c dw $0a48, $0af0, $00a8, $0a9c, $5555, $0000, $0000, $002d -dw $0b28, $0b38, $0010, $0b30, $5555, $0000, $0000, $002e +dw $0b28, $0b38, $0010, $0b30, $5555, $0000, $0001, $002e dw $0b70, $0ba0, $0030, $0b88, $5555, $0000, $0000, $002f dw $0a40, $0b10, $00d0, $0aa8, $5d5d, $0000, $0000, $0030 dw $0350, $0390, $0040, $0370, $5861, $0000, $0000, $0031 @@ -1104,11 +1225,11 @@ dw $04d8, $04f8, $0020, $04e8, $6a6a, $0000, $0000, $0038 dw $0688, $06b0, $0028, $069c, $6b6b, $0000, $0000, $0039 dw $08d0, $08f0, $0020, $08e0, $6c6c, $0000, $0000, $003a dw $0a80, $0b40, $00c0, $0ae0, $6d6d, $0000, $0000, $003b -dw $0d38, $0d58, $0020, $0d48, $6e6e, $0000, $0000, $003c +dw $0d38, $0d58, $0020, $0d48, $6e6e, $0000, $0001, $003c dw $0d90, $0da0, $0010, $0d98, $6e6e, $0000, $0000, $003d dw $06a0, $07b0, $0110, $0728, $7373, $0000, $0000, $003e dw $0830, $09b0, $0180, $08f0, $7474, $0000, $0000, $003f -dw $0e78, $0e88, $0010, $0e80, $7777, $0000, $0000, $0040 +dw $0e78, $0e88, $0010, $0e80, $7777, $0000, $0001, $0040 dw $0ee0, $0fc0, $00e0, $0f50, $7777, $0000, $0000, $0041 dw $0080, $0080, $0000, $0080, $8080, $0000, $0000, $0000 ;Pedestal (unused) dw $0288, $02c0, $0038, $02a4, $8189, $0000, $0000, $0002 ;Zora (unused) @@ -1123,10 +1244,10 @@ dw $0488, $0500, $0078, $04c4, $1313, $0000, $0000, $0006 dw $0538, $05a8, $0070, $0570, $1313, $0000, $0000, $0007 dw $0470, $05a8, $0138, $050c, $1414, $0000, $0000, $0008 dw $0470, $0598, $0128, $0504, $1515, $0000, $0000, $0009 -dw $0480, $0488, $0008, $0484, $1616, $0000, $0000, $000a +dw $0480, $0488, $0008, $0484, $1616, $0000, $0001, $000a dw $04b0, $0510, $0060, $04e0, $1616, $0000, $0000, $000b dw $0560, $0588, $0028, $0574, $1616, $0000, $0000, $000c -dw $0450, $0458, $0008, $0454, $1717, $0000, $0000, $000d +dw $0450, $0458, $0008, $0454, $1717, $0000, $0001, $000d dw $0480, $04a8, $0028, $0494, $1717, $0000, $0000, $000e dw $0718, $0738, $0020, $0728, $1b1b, $0000, $0000, $000f dw $0908, $0948, $0040, $0928, $2222, $0000, $0000, $0010 @@ -1136,13 +1257,13 @@ dw $0b60, $0ba0, $0040, $0b80, $2a2a, $0000, $0000, $0013 dw $0ab0, $0ad0, $0020, $0ac0, $2c2c, $0000, $0000, $0014 dw $0af0, $0b40, $0050, $0b18, $2c2c, $0000, $0000, $0015 dw $0b78, $0ba0, $0028, $0b8c, $2c2c, $0000, $0000, $0016 -dw $0b10, $0b28, $0018, $0b1c, $2d2d, $0000, $0000, $604a ;Stone Bridge (exit only) +dw $0b10, $0b28, $0018, $0b1c, $2d2d, $0000, $0001, $604a ;Stone Bridge (exit only) dw $0b68, $0b98, $0030, $0b80, $2d2d, $0000, $0000, $0017 dw $0a68, $0ab8, $0050, $0a90, $2e2e, $0000, $0000, $0018 -dw $0b00, $0b78, $0078, $0b3c, $2e2e, $0000, $0000, $0019 +dw $0b00, $0b78, $0078, $0b3c, $2e2e, $0000, $0001, $0019 dw $0c50, $0db8, $0168, $0d04, $3333, $0000, $0000, $001a dw $0c78, $0ce3, $006b, $0cad, $3434, $0000, $0000, $001b -dw $0ce4, $0d33, $004f, $0d0b, $3434, $0000, $0000, $001c +dw $0ce4, $0d33, $004f, $0d0b, $3434, $0000, $0001, $001c dw $0d34, $0db8, $0084, $0d76, $3434, $0000, $0000, $001d dw $0ea8, $0f20, $0078, $0ee4, $3a3a, $0000, $0000, $001e dw $0f70, $0fa8, $0038, $0f8c, $3a3a, $0000, $0000, $001f @@ -1150,7 +1271,7 @@ dw $0f18, $0f18, $0000, $0f18, $3b3b, $0000, $0000, $0020 dw $0fc8, $0fc8, $0000, $0fc8, $3b3b, $0000, $0000, $0021 dw $0e28, $0fb8, $0190, $0ef0, $3c3c, $0000, $0000, $0022 dw $0f78, $0fb8, $0040, $0f98, $353d, $0000, $0000, $0023 -dw $0f20, $0f40, $0020, $0f30, $3f3f, $0000, $0000, $0024 +dw $0f20, $0f40, $0020, $0f30, $3f3f, $0000, $0001, $0024 dw $0f70, $0fb8, $0048, $0f94, $3f3f, $0000, $0000, $0025 dw $0070, $00a0, $0030, $0088, $4242, $0000, $0000, $0026 dw $0068, $0078, $0010, $0070, $4545, $0000, $0000, $0027 @@ -1162,10 +1283,10 @@ dw $0488, $0500, $0078, $04c4, $5353, $0000, $0000, $002c dw $0538, $05a8, $0070, $0570, $5353, $0000, $0000, $002d dw $0470, $05a8, $0138, $050c, $5454, $0000, $0000, $002e dw $0470, $0598, $0128, $0504, $5555, $0000, $0000, $002f -dw $0480, $0488, $0008, $0484, $5656, $0000, $0000, $0030 +dw $0480, $0488, $0008, $0484, $5656, $0000, $0001, $0030 dw $04b0, $0510, $0060, $04e0, $5656, $0000, $0000, $0031 dw $0560, $0588, $0028, $0574, $5656, $0000, $0000, $0032 -dw $0450, $0458, $0008, $0454, $5757, $0000, $0000, $0033 +dw $0450, $0458, $0008, $0454, $5757, $0000, $0001, $0033 dw $0480, $04a8, $0028, $0494, $5757, $0000, $0000, $0034 dw $0908, $0948, $0040, $0928, $6262, $0000, $0000, $0035 dw $0878, $08a8, $0030, $0890, $6565, $0000, $0000, $0036 @@ -1177,16 +1298,16 @@ dw $0af0, $0b40, $0050, $0b18, $6c6c, $0000, $0000, $003b dw $0b78, $0ba0, $0028, $0b8c, $6c6c, $0000, $0000, $003c dw $0b68, $0b98, $0030, $0b80, $6d6d, $0000, $0000, $003d dw $0a68, $0ab8, $0050, $0a90, $6e6e, $0000, $0000, $003e -dw $0b00, $0b78, $0078, $0b3c, $6e6e, $0000, $0000, $003f +dw $0b00, $0b78, $0078, $0b3c, $6e6e, $0000, $0001, $003f dw $0c50, $0db8, $0168, $0d04, $7373, $0000, $0000, $0040 dw $0c78, $0ce3, $006b, $0cad, $7474, $0000, $0000, $0041 -dw $0ce4, $0d33, $004f, $0d0b, $7474, $0000, $0000, $0042 +dw $0ce4, $0d33, $004f, $0d0b, $7474, $0000, $0001, $0042 dw $0d34, $0db8, $0084, $0d76, $7474, $0000, $0000, $0043 dw $0f18, $0f18, $0000, $0f18, $7b7b, $0000, $0000, $0044 dw $0fc8, $0fc8, $0000, $0fc8, $7b7b, $0000, $0000, $0045 dw $0e28, $0fb8, $0190, $0ef0, $7c7c, $0000, $0000, $0046 dw $0f78, $0fb8, $0040, $0f98, $757d, $0000, $0000, $0047 -dw $0f20, $0f40, $0020, $0f30, $7f7f, $0000, $0000, $0048 +dw $0f20, $0f40, $0020, $0f30, $7f7f, $0000, $0001, $0048 dw $0f70, $0fb8, $0048, $0f94, $7f7f, $0000, $0000, $0049 OWEastEdges: dw $0070, $00a0, $0030, $0088, $0001, $0000, $0000, $0000 @@ -1199,10 +1320,10 @@ dw $0488, $0500, $0078, $04c4, $1212, $0000, $0000, $0006 dw $0538, $05a8, $0070, $0570, $1212, $0000, $0000, $0007 dw $0470, $05a8, $0138, $050c, $1313, $0000, $0000, $0008 dw $0470, $0598, $0128, $0504, $1414, $0000, $0000, $0009 -dw $0480, $0488, $0008, $0484, $1515, $0000, $0000, $000a +dw $0480, $0488, $0008, $0484, $1515, $0000, $0001, $000a dw $04b0, $0510, $0060, $04e0, $1515, $0000, $0000, $000b dw $0560, $0588, $0028, $0574, $1515, $0000, $0000, $000c -dw $0450, $0458, $0008, $0454, $1616, $0000, $0000, $000d +dw $0450, $0458, $0008, $0454, $1616, $0000, $0001, $000d dw $0480, $04a8, $0028, $0494, $1616, $0000, $0000, $000e dw $0718, $0738, $0020, $0728, $1a1a, $0000, $0000, $000f dw $0908, $0948, $0040, $0928, $1821, $0000, $0000, $0010 @@ -1214,10 +1335,10 @@ dw $0af0, $0b40, $0050, $0b18, $2b2b, $0000, $0000, $0015 dw $0b78, $0ba0, $0028, $0b8c, $2b2b, $0000, $0000, $0016 dw $0b68, $0b98, $0030, $0b80, $2c2c, $0000, $0000, $0018 dw $0a68, $0ab8, $0050, $0a90, $2d2d, $0000, $0000, $0019 -dw $0b00, $0b78, $0078, $0b3c, $2d2d, $0000, $0000, $001a +dw $0b00, $0b78, $0078, $0b3c, $2d2d, $0000, $0001, $001a dw $0c50, $0db8, $0168, $0d04, $3232, $0000, $0000, $001b dw $0c78, $0ce3, $006b, $0cad, $3333, $0000, $0000, $001c -dw $0ce4, $0d33, $004f, $0d0b, $3333, $0000, $0000, $001d +dw $0ce4, $0d33, $004f, $0d0b, $3333, $0000, $0001, $001d dw $0d34, $0db8, $0084, $0d76, $3333, $0000, $0000, $001e dw $0ea8, $0f20, $0078, $0ee4, $3039, $0000, $0000, $001f dw $0f70, $0fa8, $0038, $0f8c, $3039, $0000, $0000, $0020 @@ -1225,7 +1346,7 @@ dw $0f18, $0f18, $0000, $0f18, $3a3a, $0000, $0000, $0021 dw $0fc8, $0fc8, $0000, $0fc8, $3a3a, $0000, $0000, $0022 dw $0e28, $0fb8, $0190, $0ef0, $3b3b, $0000, $0000, $0023 dw $0f78, $0fb8, $0040, $0f98, $3c3c, $0000, $0000, $0024 -dw $0f20, $0f40, $0020, $0f30, $353e, $0000, $0000, $0025 +dw $0f20, $0f40, $0020, $0f30, $353e, $0000, $0001, $0025 dw $0f70, $0fb8, $0048, $0f94, $353e, $0000, $0000, $0026 dw $0070, $00a0, $0030, $0088, $4041, $0000, $0000, $0027 ;Skull Woods dw $0068, $0078, $0010, $0070, $4344, $0000, $0000, $0028 @@ -1237,10 +1358,10 @@ dw $0488, $0500, $0078, $04c4, $5252, $0000, $0000, $002d dw $0538, $05a8, $0070, $0570, $5252, $0000, $0000, $002e dw $0470, $05a8, $0138, $050c, $5353, $0000, $0000, $002f dw $0470, $0598, $0128, $0504, $5454, $0000, $0000, $0030 -dw $0480, $0488, $0008, $0484, $5555, $0000, $0000, $0031 +dw $0480, $0488, $0008, $0484, $5555, $0000, $0001, $0031 dw $04b0, $0510, $0060, $04e0, $5555, $0000, $0000, $0032 dw $0560, $0588, $0028, $0574, $5555, $0000, $0000, $0033 -dw $0450, $0458, $0008, $0454, $5656, $0000, $0000, $0034 +dw $0450, $0458, $0008, $0454, $5656, $0000, $0001, $0034 dw $0480, $04a8, $0028, $0494, $5656, $0000, $0000, $0035 dw $0908, $0948, $0040, $0928, $5861, $0000, $0000, $0036 dw $0878, $08a8, $0030, $0890, $5b64, $0000, $0000, $0037 @@ -1252,18 +1373,18 @@ dw $0af0, $0b40, $0050, $0b18, $6b6b, $0000, $0000, $003c dw $0b78, $0ba0, $0028, $0b8c, $6b6b, $0000, $0000, $003d dw $0b68, $0b98, $0030, $0b80, $6c6c, $0000, $0000, $003e dw $0a68, $0ab8, $0050, $0a90, $6d6d, $0000, $0000, $003f -dw $0b00, $0b78, $0078, $0b3c, $6d6d, $0000, $0000, $0040 +dw $0b00, $0b78, $0078, $0b3c, $6d6d, $0000, $0001, $0040 dw $0c50, $0db8, $0168, $0d04, $7272, $0000, $0000, $0041 dw $0c78, $0ce3, $006b, $0cad, $7373, $0000, $0000, $0042 -dw $0ce4, $0d33, $004f, $0d0b, $7373, $0000, $0000, $0043 +dw $0ce4, $0d33, $004f, $0d0b, $7373, $0000, $0001, $0043 dw $0d34, $0db8, $0084, $0d76, $7373, $0000, $0000, $0044 dw $0f18, $0f18, $0000, $0f18, $7a7a, $0000, $0000, $0045 dw $0fc8, $0fc8, $0000, $0fc8, $7a7a, $0000, $0000, $0046 dw $0e28, $0fb8, $0190, $0ef0, $7b7b, $0000, $0000, $0047 dw $0f78, $0fb8, $0040, $0f98, $7c7c, $0000, $0000, $0048 -dw $0f20, $0f40, $0020, $0f30, $757e, $0000, $0000, $0049 +dw $0f20, $0f40, $0020, $0f30, $757e, $0000, $0001, $0049 dw $0f70, $0fb8, $0048, $0f94, $757e, $0000, $0000, $004a -dw $0058, $00c0, $0068, $008c, $8080, $0000, $0000, $0017 ;Hobo (unused) +dw $0058, $00c0, $0068, $008c, $8080, $0000, $0001, $0017 ;Hobo (unused) org $aab9a0 ;PC 1539a0 OWSpecialDestIndex: