Fixed the switch track logic
This commit is contained in:
@@ -86,7 +86,6 @@ Left = $02
|
|||||||
Right = $03
|
Right = $03
|
||||||
!SpriteDirection = $0DE0
|
!SpriteDirection = $0DE0
|
||||||
|
|
||||||
|
|
||||||
; A "track" is one minecart that can exist in multiple different places.
|
; A "track" is one minecart that can exist in multiple different places.
|
||||||
; Allowing the player to leave a minecart in one room and then still find
|
; Allowing the player to leave a minecart in one room and then still find
|
||||||
; it in the same place upon returning to that room.
|
; it in the same place upon returning to that room.
|
||||||
@@ -128,6 +127,8 @@ Sprite_Minecart_Long:
|
|||||||
{
|
{
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
|
|
||||||
|
print "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: ", pc
|
||||||
|
|
||||||
JSR Sprite_Minecart_DrawTop ; Draw behind Link
|
JSR Sprite_Minecart_DrawTop ; Draw behind Link
|
||||||
JSR Sprite_Minecart_DrawBottom ; Draw in front of Link
|
JSR Sprite_Minecart_DrawBottom ; Draw in front of Link
|
||||||
|
|
||||||
@@ -424,7 +425,6 @@ Sprite_Minecart_Main:
|
|||||||
JSR HandlePlayerCameraAndMoveCart
|
JSR HandlePlayerCameraAndMoveCart
|
||||||
|
|
||||||
JSR HandleTileDirections
|
JSR HandleTileDirections
|
||||||
JSR HandleDynamicSwitchTileDirections
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
@@ -452,7 +452,6 @@ Sprite_Minecart_Main:
|
|||||||
JSR HandlePlayerCameraAndMoveCart
|
JSR HandlePlayerCameraAndMoveCart
|
||||||
|
|
||||||
JSR HandleTileDirections
|
JSR HandleTileDirections
|
||||||
JSR HandleDynamicSwitchTileDirections
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
@@ -480,7 +479,6 @@ Sprite_Minecart_Main:
|
|||||||
JSR HandlePlayerCameraAndMoveCart
|
JSR HandlePlayerCameraAndMoveCart
|
||||||
|
|
||||||
JSR HandleTileDirections
|
JSR HandleTileDirections
|
||||||
JSR HandleDynamicSwitchTileDirections
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
@@ -508,7 +506,6 @@ Sprite_Minecart_Main:
|
|||||||
JSR HandlePlayerCameraAndMoveCart
|
JSR HandlePlayerCameraAndMoveCart
|
||||||
|
|
||||||
JSR HandleTileDirections
|
JSR HandleTileDirections
|
||||||
JSR HandleDynamicSwitchTileDirections
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
@@ -641,7 +638,64 @@ Minecart_SetDirectionWest:
|
|||||||
}
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
; A = $0FA5
|
|
||||||
|
HandleTileDirections:
|
||||||
|
{
|
||||||
|
; If the cart got disconnected from the player, release them.
|
||||||
|
JSR CheckIfPlayerIsOn : BCS .player_on_cart
|
||||||
|
%GotoAction(6) ; Minecart_Release
|
||||||
|
RTS
|
||||||
|
.player_on_cart
|
||||||
|
|
||||||
|
; Setup Minecart position to look for tile IDs
|
||||||
|
; We use AND #$F8 to clamp to a 8x8 grid.
|
||||||
|
LDA.w SprY, X : AND #$F8 : STA.b $00
|
||||||
|
LDA.w SprYH, X : STA.b $01
|
||||||
|
|
||||||
|
LDA.w SprX, X : AND #$F8 : STA.b $02
|
||||||
|
LDA.w SprXH, X : STA.b $03
|
||||||
|
|
||||||
|
; Fetch tile attributes based on current coordinates
|
||||||
|
LDA.b #$00 : JSL Sprite_GetTileAttr
|
||||||
|
|
||||||
|
; Debug: put the tile type into the rupee SRM.
|
||||||
|
STA.l $7EF362 : STA.l $7EF360
|
||||||
|
LDA.b #$00 : STA.l $7EF363 : STA.l $7EF361
|
||||||
|
|
||||||
|
JSR CheckForOutOfBounds : BCC .notOutOfBounds
|
||||||
|
JSR RoundCoords
|
||||||
|
|
||||||
|
BRA .done
|
||||||
|
.notOutOfBounds
|
||||||
|
|
||||||
|
JSR CheckForStopTiles : BCC .noStop
|
||||||
|
JSR RoundCoords
|
||||||
|
|
||||||
|
BRA .done
|
||||||
|
.noStop
|
||||||
|
|
||||||
|
JSR CheckForPlayerInput : BCC .noInput
|
||||||
|
JSR RoundCoords
|
||||||
|
|
||||||
|
BRA .done
|
||||||
|
.noInput
|
||||||
|
|
||||||
|
JSR CheckForCornerTiles : BCC .noCorner
|
||||||
|
JSR RoundCoords
|
||||||
|
|
||||||
|
BRA .done
|
||||||
|
.noCorner
|
||||||
|
|
||||||
|
JSR HandleDynamicSwitchTileDirections : BCC .noSwitch
|
||||||
|
JSR RoundCoords
|
||||||
|
|
||||||
|
.noSwitch
|
||||||
|
|
||||||
|
.done
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
; =========================================================
|
||||||
|
|
||||||
CheckForOutOfBounds:
|
CheckForOutOfBounds:
|
||||||
{
|
{
|
||||||
@@ -678,13 +732,13 @@ CheckForStopTiles:
|
|||||||
LDA.w SPRTILE : SEC : SBC.b #$B7
|
LDA.w SPRTILE : SEC : SBC.b #$B7
|
||||||
|
|
||||||
CLC : ADC.w $07 : TAY
|
CLC : ADC.w $07 : TAY
|
||||||
LDA.w .DirectionTileLookup, Y : TAY
|
LDA.w .DirectionTileLookup, Y
|
||||||
|
|
||||||
; Check if the tile is a stop tile
|
; Check if the tile is a stop tile
|
||||||
CPY.b #$01 : BEQ .stop_north
|
CMP.b #$01 : BEQ .stop_north
|
||||||
CPY.b #$02 : BEQ .stop_east
|
CMP.b #$02 : BEQ .stop_east
|
||||||
CPY.b #$03 : BEQ .stop_south
|
CMP.b #$03 : BEQ .stop_south
|
||||||
CPY.b #$04 : BEQ .stop_west
|
CMP.b #$04 : BEQ .stop_west
|
||||||
CLC
|
CLC
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -744,287 +798,8 @@ CheckForStopTiles:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckForCornerTiles:
|
|
||||||
{
|
|
||||||
LDA.w SPRTILE
|
|
||||||
CMP.b #$B2 : BEQ .check_direction
|
|
||||||
CMP.b #$B3 : BEQ .check_direction
|
|
||||||
CMP.b #$B4 : BEQ .check_direction
|
|
||||||
CMP.b #$B5 : BEQ .check_direction
|
|
||||||
.exit
|
|
||||||
CLC
|
|
||||||
RTS
|
|
||||||
.check_direction
|
|
||||||
LDA.w SprMiscB, X
|
|
||||||
ASL #2 ; Multiply by 4 to offset rows in the lookup table
|
|
||||||
STA $07 ; Store the action index in $07
|
|
||||||
|
|
||||||
; Subtract $B2 to normalize the tile type to 0 to 3
|
|
||||||
LDA.w SPRTILE : SEC : SBC.b #$B2
|
|
||||||
; Add action index to tile type offset for the composite index
|
|
||||||
; Transfer to Y to use as an offset for the rows
|
|
||||||
CLC : ADC.w $07 : TAY
|
|
||||||
LDA.w .DirectionTileLookup, Y : TAY
|
|
||||||
CPY #$01 : BEQ .move_north
|
|
||||||
CPY #$02 : BEQ .move_east
|
|
||||||
CPY #$03 : BEQ .move_south
|
|
||||||
CPY #$04 : BEQ .move_west
|
|
||||||
JMP .exit
|
|
||||||
|
|
||||||
.move_north
|
|
||||||
JSR Minecart_SetDirectionNorth
|
|
||||||
%GotoAction(2) ; Minecart_MoveNorth
|
|
||||||
JMP .done
|
|
||||||
|
|
||||||
.move_east
|
|
||||||
JSR Minecart_SetDirectionEast
|
|
||||||
%GotoAction(3) ; Minecart_MoveEast
|
|
||||||
JMP .done
|
|
||||||
|
|
||||||
.move_south
|
|
||||||
JSR Minecart_SetDirectionSouth
|
|
||||||
%GotoAction(4) ; Minecart_MoveSouth
|
|
||||||
JMP .done
|
|
||||||
|
|
||||||
.move_west
|
|
||||||
JSR Minecart_SetDirectionWest
|
|
||||||
%GotoAction(5) ; Minecart_MoveWest
|
|
||||||
|
|
||||||
.done
|
|
||||||
SEC
|
|
||||||
RTS
|
|
||||||
|
|
||||||
; Direction to move on tile collision
|
|
||||||
; 00 - stop or nothing
|
|
||||||
; 01 - north
|
|
||||||
; 02 - east
|
|
||||||
; 03 - south
|
|
||||||
; 04 - west
|
|
||||||
.DirectionTileLookup
|
|
||||||
{
|
|
||||||
; TL, BL, TR, BR, Stop
|
|
||||||
db $02, $00, $04, $00 ; North
|
|
||||||
db $00, $00, $03, $01 ; East
|
|
||||||
db $00, $02, $00, $04 ; South
|
|
||||||
db $03, $01, $00, $00 ; West
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
; Unused?
|
|
||||||
CheckForTrackTiles:
|
|
||||||
{
|
|
||||||
CMP.b #$B0 : BEQ .horiz
|
|
||||||
CMP.b #$B1 : BEQ .vert
|
|
||||||
CMP.b #$BB : BEQ .horiz
|
|
||||||
CMP.b #$BC : BEQ .vert
|
|
||||||
JMP .done
|
|
||||||
|
|
||||||
.horiz
|
|
||||||
; Are we moving left or right?
|
|
||||||
LDA.w SprMiscB, X : CMP.b #$03 : BEQ .inverse_horiz_velocity
|
|
||||||
LDA.b #!MinecartSpeed : STA.w SprXSpeed, X
|
|
||||||
LDA.b #East : STA !MinecartDirection, X
|
|
||||||
JMP .done
|
|
||||||
.inverse_horiz_velocity
|
|
||||||
LDA.b #-!MinecartSpeed : STA.w SprXSpeed, X
|
|
||||||
LDA.b #West : STA !MinecartDirection, X
|
|
||||||
JMP .done
|
|
||||||
.vert
|
|
||||||
; Are we moving up or down?
|
|
||||||
LDA.w SprMiscB, X : CMP.b #$00 : BEQ .inverse_vert_velocity
|
|
||||||
LDA.b #!MinecartSpeed : STA.w SprYSpeed, X
|
|
||||||
JMP .done
|
|
||||||
.inverse_vert_velocity
|
|
||||||
LDA.b #-!MinecartSpeed : STA.w SprYSpeed, X
|
|
||||||
.done
|
|
||||||
RTS
|
|
||||||
}
|
|
||||||
|
|
||||||
HandleTileDirections:
|
|
||||||
{
|
|
||||||
;LDA.w SprTimerA, X : BEQ +
|
|
||||||
; RTS
|
|
||||||
;+
|
|
||||||
|
|
||||||
; If the cart got disconnected from the player, release them.
|
|
||||||
JSR CheckIfPlayerIsOn : BCS .player_on_cart
|
|
||||||
%GotoAction(6) ; Minecart_Release
|
|
||||||
RTS
|
|
||||||
.player_on_cart
|
|
||||||
|
|
||||||
; Setup Minecart position to look for tile IDs
|
|
||||||
; We use AND #$F8 to clamp to a 8x8 grid.
|
|
||||||
LDA.w SprY, X : AND #$F8 : STA.b $00
|
|
||||||
LDA.w SprYH, X : STA.b $01
|
|
||||||
|
|
||||||
LDA.w SprX, X : AND #$F8 : STA.b $02
|
|
||||||
LDA.w SprXH, X : STA.b $03
|
|
||||||
|
|
||||||
; Fetch tile attributes based on current coordinates
|
|
||||||
LDA.b #$00 : JSL Sprite_GetTileAttr
|
|
||||||
|
|
||||||
; Debug: put the tile type into the rupee SRM.
|
|
||||||
STA.l $7EF362 : STA.l $7EF360
|
|
||||||
LDA.b #$00 : STA.l $7EF363 : STA.l $7EF361
|
|
||||||
|
|
||||||
JSR CheckForOutOfBounds : BCC .notOutOfBounds
|
|
||||||
JSR RoundCoords
|
|
||||||
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.notOutOfBounds
|
|
||||||
|
|
||||||
JSR CheckForPlayerInput : BCC .noInput
|
|
||||||
JSR RoundCoords
|
|
||||||
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.noInput
|
|
||||||
|
|
||||||
JSR CheckForStopTiles : BCC .noStop
|
|
||||||
JSR RoundCoords
|
|
||||||
|
|
||||||
BRA .done
|
|
||||||
.noStop
|
|
||||||
|
|
||||||
JSR CheckForCornerTiles : BCC .noCorner
|
|
||||||
JSR RoundCoords
|
|
||||||
|
|
||||||
.noCorner
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTS
|
|
||||||
}
|
|
||||||
|
|
||||||
; NOTE TO SCAWFUL: This function could really go in a generic sprite
|
|
||||||
; functions file but I'll leave that up to you.
|
|
||||||
UpdateCachedCoords:
|
|
||||||
{
|
|
||||||
LDA.w SprY, X : STA.w SprCachedY+0
|
|
||||||
LDA.w SprX, X : STA.w SprCachedX+0
|
|
||||||
LDA.w SprYH, X : STA.w SprCachedY+1
|
|
||||||
LDA.w SprXH, X : STA.w SprCachedX+1
|
|
||||||
|
|
||||||
RTS
|
|
||||||
}
|
|
||||||
|
|
||||||
; NOTE TO SCAWFUL: This function could really go in a generic sprite
|
|
||||||
; functions file but I'll leave that up to you.
|
|
||||||
RoundCoords:
|
|
||||||
{
|
|
||||||
; Clamp the Y coord to the nearest multiple of 8.
|
|
||||||
LDA.b $00 : CLC : ADC.b #$04 : AND.b #$F8 : STA.b $00 : STA.w SprY, X
|
|
||||||
|
|
||||||
; Clamp the X coord to the nearest multiple of 8.
|
|
||||||
LDA.b $02 : CLC : ADC.b #$04 : AND.b #$F8 : STA.b $02 : STA.w SprX, X
|
|
||||||
|
|
||||||
JSR UpdateCachedCoords
|
|
||||||
|
|
||||||
RTS
|
|
||||||
}
|
|
||||||
|
|
||||||
pushpc
|
|
||||||
|
|
||||||
org $0DFA68
|
|
||||||
RebuildHUD_Keys:
|
|
||||||
|
|
||||||
org $028260
|
|
||||||
JSL ResetTrackVars
|
|
||||||
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
ResetTrackVars:
|
|
||||||
{
|
|
||||||
; Replaced code.
|
|
||||||
JSL.l RebuildHUD_Keys
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.w !MinecartTrackCache
|
|
||||||
LDX.b #$41
|
|
||||||
.loop
|
|
||||||
DEX
|
|
||||||
STA.w !MinecartTrackRoom, X
|
|
||||||
STA.w !MinecartTrackX, X
|
|
||||||
STA.w !MinecartTrackY, X
|
|
||||||
CPX.b #$00 : BNE .loop
|
|
||||||
|
|
||||||
RTL
|
|
||||||
}
|
|
||||||
|
|
||||||
; =========================================================
|
|
||||||
; Check for the switch_track sprite and move based on the
|
|
||||||
; state of that sprite.
|
|
||||||
|
|
||||||
HandleDynamicSwitchTileDirections:
|
|
||||||
{
|
|
||||||
; Find out if the sprite $B0 is in the room
|
|
||||||
JSR CheckSpritePresence : BCC .no_b0
|
|
||||||
PHX
|
|
||||||
LDA $02 : TAX
|
|
||||||
JSL Link_SetupHitBox
|
|
||||||
JSL Sprite_SetupHitBox ; X is now the ID of the sprite $B0
|
|
||||||
PLX
|
|
||||||
JSL CheckIfHitBoxesOverlap : BCC .no_b0
|
|
||||||
LDA !MinecartDirection, X : CMP.b #$00 : BEQ .east_or_west
|
|
||||||
CMP.b #$01 : BEQ .north_or_south
|
|
||||||
CMP.b #$02 : BEQ .east_or_west
|
|
||||||
CMP.b #$03 : BEQ .north_or_south
|
|
||||||
.no_b0
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.east_or_west
|
|
||||||
LDA.w SwitchRam : BNE .go_west
|
|
||||||
JSR Minecart_SetDirectionEast
|
|
||||||
%GotoAction(3) ; Minecart_MoveEast
|
|
||||||
RTS
|
|
||||||
.go_west
|
|
||||||
JSR Minecart_SetDirectionWest
|
|
||||||
%GotoAction(5) ; Minecart_MoveWest
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.north_or_south
|
|
||||||
LDA.w SwitchRam : BNE .go_south
|
|
||||||
JSR Minecart_SetDirectionNorth
|
|
||||||
%GotoAction(2) ; Minecart_MoveNorth
|
|
||||||
RTS
|
|
||||||
.go_south
|
|
||||||
JSR Minecart_SetDirectionSouth
|
|
||||||
%GotoAction(4) ; Minecart_MoveSouth
|
|
||||||
RTS
|
|
||||||
}
|
|
||||||
|
|
||||||
; =========================================================
|
|
||||||
; $00 = flag indicating presence of sprite ID $B0
|
|
||||||
|
|
||||||
CheckSpritePresence:
|
|
||||||
{
|
|
||||||
PHX
|
|
||||||
CLC ; Assume sprite ID $B0 is not present
|
|
||||||
LDX.b #$10
|
|
||||||
.x_loop
|
|
||||||
DEX
|
|
||||||
LDY.b #$04
|
|
||||||
.y_loop
|
|
||||||
DEY
|
|
||||||
LDA $0E20, X : CMP.b #$B0 : BEQ .set_flag
|
|
||||||
BRA .not_b0
|
|
||||||
|
|
||||||
.set_flag
|
|
||||||
SEC ; Set flag indicating sprite ID $B0 is present
|
|
||||||
STX.w $02
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.not_b0
|
|
||||||
CPY.b #$00 : BNE .y_loop
|
|
||||||
CPX.b #$00 : BNE .x_loop
|
|
||||||
.done
|
|
||||||
PLX
|
|
||||||
RTS
|
|
||||||
}
|
|
||||||
|
|
||||||
; =========================================================
|
|
||||||
; Check for input from the user (u,d,l,r) on tile B6, BD
|
; Check for input from the user (u,d,l,r) on tile B6, BD
|
||||||
; CLC if not on an input tile or there was no input recieved.
|
; CLC if not on an input tile or there was no input recieved.
|
||||||
|
|
||||||
CheckForPlayerInput:
|
CheckForPlayerInput:
|
||||||
{
|
{
|
||||||
; Load the tile index
|
; Load the tile index
|
||||||
@@ -1050,8 +825,8 @@ CheckForPlayerInput:
|
|||||||
LDA $F0 : AND.w .d_pad_press, Y : STA $05 : AND.b #$08 : BEQ .not_pressing_up
|
LDA $F0 : AND.w .d_pad_press, Y : STA $05 : AND.b #$08 : BEQ .not_pressing_up
|
||||||
.north
|
.north
|
||||||
JSR Minecart_SetDirectionNorth
|
JSR Minecart_SetDirectionNorth
|
||||||
|
|
||||||
%GotoAction(2) ; Minecart_MoveNorth
|
%GotoAction(2) ; Minecart_MoveNorth
|
||||||
|
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -1059,8 +834,8 @@ CheckForPlayerInput:
|
|||||||
LDA.b $05 : AND.b #$04 : BEQ .not_pressing_down
|
LDA.b $05 : AND.b #$04 : BEQ .not_pressing_down
|
||||||
.south
|
.south
|
||||||
JSR Minecart_SetDirectionSouth
|
JSR Minecart_SetDirectionSouth
|
||||||
|
|
||||||
%GotoAction(4) ; Minecart_MoveSouth
|
%GotoAction(4) ; Minecart_MoveSouth
|
||||||
|
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -1068,8 +843,8 @@ CheckForPlayerInput:
|
|||||||
LDA.b $05 : AND.b #$02 : BEQ .not_pressing_left
|
LDA.b $05 : AND.b #$02 : BEQ .not_pressing_left
|
||||||
.west
|
.west
|
||||||
JSR Minecart_SetDirectionWest
|
JSR Minecart_SetDirectionWest
|
||||||
|
|
||||||
%GotoAction(5) ; Minecart_MoveWest
|
%GotoAction(5) ; Minecart_MoveWest
|
||||||
|
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -1077,8 +852,8 @@ CheckForPlayerInput:
|
|||||||
LDA.b $05 : AND.b #$01 : BEQ .return
|
LDA.b $05 : AND.b #$01 : BEQ .return
|
||||||
.east
|
.east
|
||||||
JSR Minecart_SetDirectionEast
|
JSR Minecart_SetDirectionEast
|
||||||
|
|
||||||
%GotoAction(3) ; Minecart_MoveEast
|
%GotoAction(3) ; Minecart_MoveEast
|
||||||
|
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
.return
|
.return
|
||||||
@@ -1118,22 +893,248 @@ CheckForPlayerInput:
|
|||||||
.defaultDirection
|
.defaultDirection
|
||||||
; udlr
|
; udlr
|
||||||
; up, down, left, right
|
; up, down, left, right
|
||||||
db $04, $04, $04, $04 ; Nothing
|
db $04, $04, $04, $04 ; Nothing
|
||||||
db $04, $04, $04, $04 ; $B6 Intersection
|
db $04, $04, $04, $04 ; $B6 Intersection
|
||||||
db East, $04, $04, $04 ; $BB North T
|
db East, $04, $04, $04 ; $BB North T
|
||||||
db $04, East, $04, $04 ; $BC South T
|
db $04, East, $04, $04 ; $BC South T
|
||||||
db $04, $04, $04, North ; $BD East T
|
db $04, $04, $04, North ; $BD East T
|
||||||
db $04, $04, North, $04 ; $BE West T
|
db $04, $04, North, $04 ; $BE West T
|
||||||
|
|
||||||
.intersectionMap
|
.intersectionMap
|
||||||
; B6, B7, B8, B9, BA, BB, BC, BD, BE
|
; B6, B7, B8, B9, BA, BB, BC, BD, BE
|
||||||
db $04, $00, $00, $00, $00, $08, $0C, $10, $14
|
db $04, $00, $00, $00, $00, $08, $0C, $10, $14
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CheckForCornerTiles:
|
||||||
|
{
|
||||||
|
LDA.w SPRTILE
|
||||||
|
CMP.b #$B2 : BEQ .check_direction ; TL
|
||||||
|
CMP.b #$B3 : BEQ .check_direction ; BL
|
||||||
|
CMP.b #$B4 : BEQ .check_direction ; TR
|
||||||
|
CMP.b #$B5 : BEQ .check_direction ; BR
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.check_direction
|
||||||
|
LDA.w SprMiscB, X
|
||||||
|
ASL #2 ; Multiply by 4 to offset rows in the lookup table
|
||||||
|
STA $07 ; Store the action index in $07
|
||||||
|
|
||||||
|
; Subtract $B2 to normalize the tile type to 0 to 3
|
||||||
|
LDA.w SPRTILE : SEC : SBC.b #$B2
|
||||||
|
; Add action index to tile type offset for the composite index
|
||||||
|
; Transfer to Y to use as an offset for the rows
|
||||||
|
CLC : ADC.b $07 : TAY
|
||||||
|
LDA.w .DirectionTileLookup, Y
|
||||||
|
CMP.b #$01 : BEQ .move_north
|
||||||
|
CMP.b #$02 : BEQ .move_east
|
||||||
|
CMP.b #$03 : BEQ .move_south
|
||||||
|
CMP.b #$04 : BEQ .move_west
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.move_north
|
||||||
|
JSR Minecart_SetDirectionNorth
|
||||||
|
%GotoAction(2) ; Minecart_MoveNorth
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.move_east
|
||||||
|
JSR Minecart_SetDirectionEast
|
||||||
|
%GotoAction(3) ; Minecart_MoveEast
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.move_south
|
||||||
|
JSR Minecart_SetDirectionSouth
|
||||||
|
%GotoAction(4) ; Minecart_MoveSouth
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.move_west
|
||||||
|
JSR Minecart_SetDirectionWest
|
||||||
|
%GotoAction(5) ; Minecart_MoveWest
|
||||||
|
|
||||||
|
.done
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; Direction to move on tile collision
|
||||||
|
; 00 - stop or nothing
|
||||||
|
; 01 - north
|
||||||
|
; 02 - east
|
||||||
|
; 03 - south
|
||||||
|
; 04 - west
|
||||||
|
.DirectionTileLookup
|
||||||
|
{
|
||||||
|
; TL, BL, TR, BR Coming from the:
|
||||||
|
db $02, $00, $04, $00 ; North
|
||||||
|
db $00, $00, $03, $01 ; East
|
||||||
|
db $00, $02, $00, $04 ; South
|
||||||
|
db $03, $01, $00, $00 ; West
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
; Check for the switch_track sprite and move based on the
|
||||||
|
; state of that sprite.
|
||||||
|
HandleDynamicSwitchTileDirections:
|
||||||
|
{
|
||||||
|
; Check for the switch tile.
|
||||||
|
LDA.w SPRTILE : CMP.b #$BF : BEQ .onSwitchTile
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.onSwitchTile
|
||||||
|
|
||||||
|
; Find out if the sprite $B0 is in the room.
|
||||||
|
JSR CheckSpritePresence : BCS .B0Present
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.B0Present
|
||||||
|
|
||||||
|
LDA.w SprMiscB, X
|
||||||
|
ASL #3 ; Multiply by 8 to offset rows in the lookup table
|
||||||
|
STA.b $07 ; Store the action index in $07
|
||||||
|
|
||||||
|
; Get the type (TL, BL, TR, BL) of the track by taking the subtype and
|
||||||
|
; cutting out the extra data. Then x2 so we get the correct data from
|
||||||
|
; the table.
|
||||||
|
LDY.b $04
|
||||||
|
LDA.w SprSubtype, Y : AND.b #$18 : LSR #2
|
||||||
|
|
||||||
|
; Add the current direction and the state of the switch to determine
|
||||||
|
; which direction we should go next.
|
||||||
|
CLC : ADC.b SwitchRam : CLC : ADC.b $07 : TAY
|
||||||
|
LDA.w .DirectionTileLookup, Y
|
||||||
|
CMP.b #$01 : BEQ .move_north
|
||||||
|
CMP.b #$02 : BEQ .move_east
|
||||||
|
CMP.b #$03 : BEQ .move_south
|
||||||
|
CMP.b #$04 : BEQ .move_west
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.move_north
|
||||||
|
JSR Minecart_SetDirectionNorth
|
||||||
|
%GotoAction(2) ; Minecart_MoveNorth
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.move_east
|
||||||
|
JSR Minecart_SetDirectionEast
|
||||||
|
%GotoAction(3) ; Minecart_MoveEast
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.move_south
|
||||||
|
JSR Minecart_SetDirectionSouth
|
||||||
|
%GotoAction(4) ; Minecart_MoveSouth
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.move_west
|
||||||
|
JSR Minecart_SetDirectionWest
|
||||||
|
%GotoAction(5) ; Minecart_MoveWest
|
||||||
|
|
||||||
|
.done
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; Direction to move on tile collision
|
||||||
|
; 00 - stop or nothing
|
||||||
|
; 01 - north
|
||||||
|
; 02 - east
|
||||||
|
; 03 - south
|
||||||
|
; 04 - west
|
||||||
|
.DirectionTileLookup
|
||||||
|
{
|
||||||
|
; Off, On, Off, On, Off, On, Off, On
|
||||||
|
; TL, TL, BL, BL, TR, TR, BR, BR Coming from the:
|
||||||
|
db $02, $04, $00, $02, $04, $00, $00, $00 ; North
|
||||||
|
db $00, $03, $00, $00, $03, $01, $01, $00 ; East
|
||||||
|
db $00, $00, $02, $00, $00, $04, $04, $02 ; South
|
||||||
|
db $03, $00, $01, $03, $00, $00, $00, $01 ; West
|
||||||
|
}
|
||||||
|
|
||||||
|
; TL turns into TR when on.
|
||||||
|
; TR turns into BR when on.
|
||||||
|
; BR turns into BL when on.
|
||||||
|
; BL turns into TL when on.
|
||||||
|
}
|
||||||
|
|
||||||
|
; Unused?
|
||||||
|
CheckForTrackTiles:
|
||||||
|
{
|
||||||
|
CMP.b #$B0 : BEQ .horiz
|
||||||
|
CMP.b #$B1 : BEQ .vert
|
||||||
|
CMP.b #$BB : BEQ .horiz
|
||||||
|
CMP.b #$BC : BEQ .vert
|
||||||
|
JMP .done
|
||||||
|
|
||||||
|
.horiz
|
||||||
|
; Are we moving left or right?
|
||||||
|
LDA.w SprMiscB, X : CMP.b #$03 : BEQ .inverse_horiz_velocity
|
||||||
|
LDA.b #!MinecartSpeed : STA.w SprXSpeed, X
|
||||||
|
LDA.b #East : STA !MinecartDirection, X
|
||||||
|
JMP .done
|
||||||
|
.inverse_horiz_velocity
|
||||||
|
LDA.b #-!MinecartSpeed : STA.w SprXSpeed, X
|
||||||
|
LDA.b #West : STA !MinecartDirection, X
|
||||||
|
JMP .done
|
||||||
|
.vert
|
||||||
|
; Are we moving up or down?
|
||||||
|
LDA.w SprMiscB, X : CMP.b #$00 : BEQ .inverse_vert_velocity
|
||||||
|
LDA.b #!MinecartSpeed : STA.w SprYSpeed, X
|
||||||
|
JMP .done
|
||||||
|
.inverse_vert_velocity
|
||||||
|
LDA.b #-!MinecartSpeed : STA.w SprYSpeed, X
|
||||||
|
.done
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
|
|
||||||
|
; NOTE TO SCAWFUL: This function could really go in a generic sprite
|
||||||
|
; functions file but I'll leave that up to you.
|
||||||
|
UpdateCachedCoords:
|
||||||
|
{
|
||||||
|
LDA.w SprY, X : STA.w SprCachedY+0
|
||||||
|
LDA.w SprX, X : STA.w SprCachedX+0
|
||||||
|
LDA.w SprYH, X : STA.w SprCachedY+1
|
||||||
|
LDA.w SprXH, X : STA.w SprCachedX+1
|
||||||
|
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
; NOTE TO SCAWFUL: This function could really go in a generic sprite
|
||||||
|
; functions file but I'll leave that up to you.
|
||||||
|
RoundCoords:
|
||||||
|
{
|
||||||
|
; Clamp the Y coord to the nearest multiple of 8.
|
||||||
|
LDA.b $00 : CLC : ADC.b #$04 : AND.b #$F8 : STA.b $00 : STA.w SprY, X
|
||||||
|
|
||||||
|
; Clamp the X coord to the nearest multiple of 8.
|
||||||
|
LDA.b $02 : CLC : ADC.b #$04 : AND.b #$F8 : STA.b $02 : STA.w SprX, X
|
||||||
|
|
||||||
|
JSR UpdateCachedCoords
|
||||||
|
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
; $04 = sprite index of sprite ID $B0
|
||||||
|
; SEC if sprite is present.
|
||||||
|
CheckSpritePresence:
|
||||||
|
{
|
||||||
|
PHX
|
||||||
|
CLC ; Assume sprite ID $B0 is not present
|
||||||
|
LDX.b #$10
|
||||||
|
.x_loop
|
||||||
|
DEX
|
||||||
|
LDA $0E20, X : CMP.b #$B0 : BNE .not_b0
|
||||||
|
SEC ; Set flag indicating sprite ID $B0 is present
|
||||||
|
STX.w $04
|
||||||
|
BRA .done
|
||||||
|
.not_b0
|
||||||
|
CPX.b #$00 : BNE .x_loop
|
||||||
|
|
||||||
|
.done
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
; Sets carry if player is overlapping the sprite
|
; Sets carry if player is overlapping the sprite
|
||||||
; Clear carry if player is outside the bounds
|
; Clear carry if player is outside the bounds
|
||||||
|
|
||||||
CheckIfPlayerIsOn:
|
CheckIfPlayerIsOn:
|
||||||
{
|
{
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -1152,6 +1153,35 @@ CheckIfPlayerIsOn:
|
|||||||
RTS ; Return with carry cleared
|
RTS ; Return with carry cleared
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; =========================================================
|
||||||
|
|
||||||
|
pushpc
|
||||||
|
|
||||||
|
org $0DFA68
|
||||||
|
RebuildHUD_Keys:
|
||||||
|
|
||||||
|
org $028260
|
||||||
|
JSL ResetTrackVars
|
||||||
|
|
||||||
|
pullpc
|
||||||
|
|
||||||
|
ResetTrackVars:
|
||||||
|
{
|
||||||
|
; Replaced code.
|
||||||
|
JSL.l RebuildHUD_Keys
|
||||||
|
|
||||||
|
LDA.b #$00 : STA.w !MinecartTrackCache
|
||||||
|
LDX.b #$41
|
||||||
|
.loop
|
||||||
|
DEX
|
||||||
|
STA.w !MinecartTrackRoom, X
|
||||||
|
STA.w !MinecartTrackX, X
|
||||||
|
STA.w !MinecartTrackY, X
|
||||||
|
CPX.b #$00 : BNE .loop
|
||||||
|
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
; Handle the tossing of the cart
|
; Handle the tossing of the cart
|
||||||
; Changes the SprMiscB of the cart to indicate the direction
|
; Changes the SprMiscB of the cart to indicate the direction
|
||||||
@@ -1261,8 +1291,8 @@ Sprite_Minecart_DrawTop:
|
|||||||
BCC .on_screen_y
|
BCC .on_screen_y
|
||||||
|
|
||||||
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
|
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
|
||||||
STA $0E
|
STA $0E
|
||||||
.on_screen_y
|
.on_screen_y
|
||||||
|
|
||||||
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
|
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
|
||||||
INY
|
INY
|
||||||
@@ -1274,11 +1304,11 @@ Sprite_Minecart_DrawTop:
|
|||||||
TYA : LSR #2 : TAY
|
TYA : LSR #2 : TAY
|
||||||
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
||||||
PLY : INY
|
PLY : INY
|
||||||
PLX : DEX : BPL .nextTile
|
PLX : DEX : BPL .nextTile
|
||||||
|
|
||||||
PLX
|
PLX
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.start_index
|
.start_index
|
||||||
db $00, $02, $04, $06
|
db $00, $02, $04, $06
|
||||||
@@ -1323,7 +1353,6 @@ Sprite_Minecart_DrawBottom:
|
|||||||
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
|
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
|
||||||
LDA .start_index, Y : STA $06
|
LDA .start_index, Y : STA $06
|
||||||
|
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
LDX .nbr_of_tiles, Y ;amount of tiles -1
|
LDX .nbr_of_tiles, Y ;amount of tiles -1
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
@@ -1347,8 +1376,8 @@ Sprite_Minecart_DrawBottom:
|
|||||||
BCC .on_screen_y
|
BCC .on_screen_y
|
||||||
|
|
||||||
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
|
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
|
||||||
STA $0E
|
STA $0E
|
||||||
.on_screen_y
|
.on_screen_y
|
||||||
|
|
||||||
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
|
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
|
||||||
INY
|
INY
|
||||||
@@ -1360,11 +1389,11 @@ Sprite_Minecart_DrawBottom:
|
|||||||
TYA : LSR #2 : TAY
|
TYA : LSR #2 : TAY
|
||||||
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
|
||||||
PLY : INY
|
PLY : INY
|
||||||
PLX : DEX : BPL .nextTile
|
PLX : DEX : BPL .nextTile
|
||||||
|
|
||||||
PLX
|
PLX
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.start_index
|
.start_index
|
||||||
db $00, $02, $04, $06
|
db $00, $02, $04, $06
|
||||||
@@ -1429,3 +1458,4 @@ pushpc
|
|||||||
|
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
|
; =========================================================
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ Sprite_LeverSwitch_Prep:
|
|||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
|
|
||||||
LDA.b #$00 : STA.w SprDefl, X
|
LDA.b #$00 : STA.w SprDefl, X
|
||||||
LDA.w SprSubtype, X : STA.w SprAction, X
|
LDA.w SwitchRam : STA.w SprAction, X : STA.w SprFrame, X
|
||||||
LDA.b #$00 : STA.w SprTileDie, X
|
LDA.b #$00 : STA.w SprTileDie, X
|
||||||
STZ.w SprBulletproof, X
|
STZ.w SprBulletproof, X
|
||||||
|
|
||||||
@@ -81,7 +81,8 @@ Sprite_LeverSwitch_Main:
|
|||||||
JSL Sprite_CheckDamageFromPlayer : BCC .NoDamage
|
JSL Sprite_CheckDamageFromPlayer : BCC .NoDamage
|
||||||
LDA #$25 : STA $012F
|
LDA #$25 : STA $012F
|
||||||
|
|
||||||
STZ.w $37
|
; Turn the switch on.
|
||||||
|
LDA #$01 : STA.b SwitchRam
|
||||||
LDA #$10 : STA.w SprTimerA, X
|
LDA #$10 : STA.w SprTimerA, X
|
||||||
%GotoAction(1)
|
%GotoAction(1)
|
||||||
.NoDamage
|
.NoDamage
|
||||||
@@ -94,7 +95,9 @@ Sprite_LeverSwitch_Main:
|
|||||||
LDA.w SprTimerA, X : BNE .NoDamage
|
LDA.w SprTimerA, X : BNE .NoDamage
|
||||||
JSL Sprite_CheckDamageFromPlayer : BCC .NoDamage
|
JSL Sprite_CheckDamageFromPlayer : BCC .NoDamage
|
||||||
LDA #$25 : STA $012F
|
LDA #$25 : STA $012F
|
||||||
LDA #$01 : STA $37
|
|
||||||
|
; Turn the switch off.
|
||||||
|
STZ.w SwitchRam
|
||||||
LDA #$10 : STA.w SprTimerA, X
|
LDA #$10 : STA.w SprTimerA, X
|
||||||
%GotoAction(0)
|
%GotoAction(0)
|
||||||
.NoDamage
|
.NoDamage
|
||||||
@@ -129,9 +132,9 @@ Sprite_LeverSwitch_Main:
|
|||||||
Sprite_LeverSwitch_Draw:
|
Sprite_LeverSwitch_Draw:
|
||||||
{
|
{
|
||||||
JSL Sprite_PrepOamCoord
|
JSL Sprite_PrepOamCoord
|
||||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
LDA.b #$04 : JSL Sprite_OAM_AllocateDeferToPlayer
|
||||||
|
|
||||||
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
|
LDA $0DC0, X : CLC : ADC $0D90, X : TAY ;Animation Frame
|
||||||
LDA .start_index, Y : STA $06
|
LDA .start_index, Y : STA $06
|
||||||
|
|
||||||
|
|
||||||
@@ -194,8 +197,8 @@ Sprite_LeverSwitch_Draw:
|
|||||||
dw 0
|
dw 0
|
||||||
dw 0
|
dw 0
|
||||||
.chr
|
.chr
|
||||||
db $64
|
|
||||||
db $66
|
db $66
|
||||||
|
db $64
|
||||||
.properties
|
.properties
|
||||||
db $37
|
db $37
|
||||||
db $37
|
db $37
|
||||||
|
|||||||
@@ -50,7 +50,11 @@ Sprite_RotatingTrack_Prep:
|
|||||||
{
|
{
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
LDA.b #$80 : STA.w SprDefl, X
|
LDA.b #$80 : STA.w SprDefl, X
|
||||||
LDA.w SprSubtype, X : STA.w SprAction,X
|
LDA.w SprSubtype, X : AND.b #$18 : LSR #3
|
||||||
|
|
||||||
|
; Run the main frame once so that the animation frame is
|
||||||
|
; started correctly.
|
||||||
|
JSR Sprite_RotatingTrack_Main
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
@@ -61,7 +65,6 @@ Sprite_RotatingTrack_Prep:
|
|||||||
; 1 = TopRight -> BottomRight
|
; 1 = TopRight -> BottomRight
|
||||||
; 2 = BottomRight -> BottomLeft
|
; 2 = BottomRight -> BottomLeft
|
||||||
; 3 = BottomLeft -> TopLeft
|
; 3 = BottomLeft -> TopLeft
|
||||||
; 4 = TopRight -> TopLeft
|
|
||||||
|
|
||||||
SwitchRam = $37
|
SwitchRam = $37
|
||||||
|
|
||||||
@@ -74,7 +77,6 @@ Sprite_RotatingTrack_Main:
|
|||||||
dw TopRightToBottomRight
|
dw TopRightToBottomRight
|
||||||
dw BottomRightToBottomLeft
|
dw BottomRightToBottomLeft
|
||||||
dw BottomLeftToTopLeft
|
dw BottomLeftToTopLeft
|
||||||
dw TopRightToTopLeft
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
; -------------------------------------------------------
|
||||||
; 00 = TopLeft -> TopRight
|
; 00 = TopLeft -> TopRight
|
||||||
@@ -119,19 +121,6 @@ Sprite_RotatingTrack_Main:
|
|||||||
%PlayAnimation(0,0,4)
|
%PlayAnimation(0,0,4)
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; 04 = TopRight -> TopLeft
|
|
||||||
TopRightToTopLeft:
|
|
||||||
{
|
|
||||||
LDA.w SwitchRam : BNE part2_d
|
|
||||||
%StartOnFrame(1)
|
|
||||||
%PlayAnimation(1,1,4)
|
|
||||||
part2_d:
|
|
||||||
%StartOnFrame(0)
|
|
||||||
%PlayAnimation(0,0,4)
|
|
||||||
RTS
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
@@ -139,7 +128,7 @@ Sprite_RotatingTrack_Main:
|
|||||||
Sprite_RotatingTrack_Draw:
|
Sprite_RotatingTrack_Draw:
|
||||||
{
|
{
|
||||||
JSL Sprite_PrepOamCoord
|
JSL Sprite_PrepOamCoord
|
||||||
JSL Sprite_OAM_AllocateDeferToPlayer
|
LDA.b #$04 : JSL OAM_AllocateFromRegionB
|
||||||
|
|
||||||
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
|
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
|
||||||
LDA .start_index, Y : STA $06
|
LDA .start_index, Y : STA $06
|
||||||
@@ -191,7 +180,6 @@ Sprite_RotatingTrack_Draw:
|
|||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
.start_index
|
.start_index
|
||||||
db $00, $01, $02, $03
|
db $00, $01, $02, $03
|
||||||
.nbr_of_tiles
|
.nbr_of_tiles
|
||||||
@@ -202,8 +190,10 @@ Sprite_RotatingTrack_Draw:
|
|||||||
db $44
|
db $44
|
||||||
db $44
|
db $44
|
||||||
.properties
|
.properties
|
||||||
db $7D
|
db $0D
|
||||||
db $3D
|
db $4D
|
||||||
db $FD
|
db $CD
|
||||||
db $BD
|
db $8D
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; =========================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user