diff --git a/028.bs/constants.i b/028.bs/constants.i
index c7819da..0f38853 100644
--- a/028.bs/constants.i
+++ b/028.bs/constants.i
@@ -27,6 +27,15 @@ SPLASH_USE_FOREGROUND equ 0
PATHWAY_FADE_TIMER_COUNT equ 100
+PATHWAY_CONFIG_FREE equ 0
+PATHWAY_CONFIG_HORIZONTAL equ 1
+PATHWAY_CONFIG_VERTICAL equ 2
+PATHWAY_CONFIG_TOP_LEFT equ 3
+PATHWAY_CONFIG_TOP_RIGHT equ 4
+PATHWAY_CONFIG_BOT_LEFT equ 5
+PATHWAY_CONFIG_BOT_RIGHT equ 6
+
+
FOREGROUND_DELAY_BIT equ 0
FOREGROUND_SCROLL_SHIFT_CONVERT equ 4
FOREGROUND_SCROLL_TILE_INDEX_CONVERT equ 3
diff --git a/028.bs/levels/levelA_foreground.tmx b/028.bs/levels/levelA_foreground.tmx
index 7050d39..49ef434 100644
--- a/028.bs/levels/levelA_foreground.tmx
+++ b/028.bs/levels/levelA_foreground.tmx
@@ -13,12 +13,12 @@
- eJztlD0OwjAMheOhU0+QqSdg4v4HYOoJmDgBEyu10FPdh5M0bRFI5JOiSGli+/mnITT+hbOEcJLl3tjHOK37wTZ7mW1rnR4Vb9fEcglzD3wS6+doDYDz38krf9b33j7vxN9tDPDDsXMtvVh6OmP7FujycnTNfGM/OR/eO/WLGo7OHWiL07qFZW+hJoze2zI7sMU7iPJ+18Zid2Bnjb9Z/TYPXky5eOHDi5NzlkPrPEhaS4le0m+21KQ0Hxb0qPWnuodEnaCVbeiZ3XmucObN3Na8Kbk5Tmkp4Wn07K79Z3McNb31DWrzZvMRf1hXo8wTZUo3PA==
+ eJztVDsOwjAMtYdOPUGmnoCp9z8AU0/A1BMwsUKErD4eTpq0RSCRJ1WW8vF7z44r0vAvGFXkpK+xYR+mx3c9OGevS+7Yp1vF3RItZ1newCeBPEd7MHD9O33WD7n3vvNO/YgajIe1cy89LT2tcX6E+fJqdMnsMU+Ow7sXea2Hk3PGvAWoP3Kxx4hZts2O5eJoCPp+FrVgNOCs8R76xzp4mnJ6jcPTOUv5PMY+D5r2kjqPelJ3tvRkbT5Yy+j4HhJ9Yu24hpHnyta8mSutm4fcHKe8rMHz6OUt/Wezjpq39Q3U1g3rEX7YV8M67n5mN/0=
- eJztlVsOgyAQRWVp1arYh5Ko+9+KmpSEUuYpNX54PvHOneFOgkVxcSZKI6+5MWuckfXwuodiJsrzKHL02/LFMq7Mt1bjH3p0hMdz552qDJloPTh1I6HxGaeynsyv1uvugO8LOIf0Mdi+4nkkQHNp4dxHm4Vdv9efrG2gdcg+HLJHiJqhDXty9G9CMx/8ZknY7hfPT+VpGTuR0BA1Gs8c/fvEOTUrRspP6yn9T0gzbBH9v/exl+Hk813kYwFAERLp
+ eJztlV0OgyAQhOFo1tpSqy1J2/tfRUlKshJhf0DCg98jzs4uswkqddISF82v6Yg1VvN6eN0omAnzrEWJfi7fVMa93mol/tDjgXg8M+/UF8hE6kGp+yAanzEla7i7a0Q/Rc5j+pDUvr4ZWcfmkkK5jzQLs34f/lkboLVBHdyHZezRMxC0sCdFPyOaX+U3i4O7Xzg/lqch7ITDDamReJbo/9o5x2ZNsecn9eT+J7gZ3hP6o/eRy7vx+U7KsQCydRKU
diff --git a/028.bs/levels/levelB_foreground.tmx b/028.bs/levels/levelB_foreground.tmx
index 7050d39..14ffb24 100644
--- a/028.bs/levels/levelB_foreground.tmx
+++ b/028.bs/levels/levelB_foreground.tmx
@@ -8,17 +8,17 @@
- eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvqMtZQuNFC4c8iB5scrvJ1FdPZ33k+AEWH5TE9Wg6p03+wJfulpOZDuidB8iVI9d/1HYnNfLHqBz1yo2hWH/QIp0PFjlYfEgz4G6D0UJuMLYxB5McAAccW5U=
+ eJxjZ2BgsGLEjtlH5eguZwektwKxGBAzodF2WMSIlcNnZiUN7BvqcpbQeNHCIQ+iB5vcbjL11dNZHzl+gMUHJXE9ms7pnz+Wk5kO6J0HyJUj13/Udic18seoHPXKDeT8Qe88MJjS+WCRg8WHNAPuNhgt5AZjG3MwyQEAaJtcNA==
- eJztlD0OwjAMheOhU0+QqSdg4v4HYOoJmDgBEyu10FPdh5M0bRFI5JOiSGli+/mnITT+hbOEcJLl3tjHOK37wTZ7mW1rnR4Vb9fEcglzD3wS6+doDYDz38krf9b33j7vxN9tDPDDsXMtvVh6OmP7FujycnTNfGM/OR/eO/WLGo7OHWiL07qFZW+hJoze2zI7sMU7iPJ+18Zid2Bnjb9Z/TYPXky5eOHDi5NzlkPrPEhaS4le0m+21KQ0Hxb0qPWnuodEnaCVbeiZ3XmucObN3Na8Kbk5Tmkp4Wn07K79Z3McNb31DWrzZvMRf1hXo8wTZUo3PA==
+ eJztVEEOgkAMbA+ceAEnXuCJ/z/AEy/wxAs8edXGNNSxLQti3EQmMTVbaGc6W4gO1IiBiU78Gmus+Q8YH7+rEwn+74WW59ri023FuyVczjTfgW/C9tlTQ8PPGWG0Odv703vesB8V6pP0Qe7opcelhTOsb6G6vBldkhz2yXp470lf9XB08p4nthdqFEy0bXe0FkZFx+/PWi42KuyuYc7qt3PwOGV8tYfHc6LyfRSfe461ZPuhfCL/t3iytB/IfXB094FPqhVryJmNuFd65u1cCc8I2R5HWiLOmIugdUu/2chjzd36BbK5Zc/LPLqKdR1Yxh1ayD2g
- eJztlVsOgyAQRWVp1arYh5Ko+9+KmpSEUuYpNX54PvHOneFOgkVxcSZKI6+5MWuckfXwuodiJsrzKHL02/LFMq7Mt1bjH3p0hMdz552qDJloPTh1I6HxGaeynsyv1uvugO8LOIf0Mdi+4nkkQHNp4dxHm4Vdv9efrG2gdcg+HLJHiJqhDXty9G9CMx/8ZknY7hfPT+VpGTuR0BA1Gs8c/fvEOTUrRspP6yn9T0gzbBH9v/exl+Hk813kYwFAERLp
+ eJztlVkOgzAMRMnRgFIoSxup0PsfpUUiUhrilYD44H2G8dgZSyHLLs5EYeQ1ObPGGlkPp2sVM1GeR5Gi35wvlnFp/rUaf9/jQXh0G+9UJshE68GpexMal3Es69GstU53A3x74BzSh2D7CueRAM2lhXMfbRbN73u1ZN14WovswyJ7hKgYWr8nRz8QmungN0vCfL9w/g9jVz6xnUi4EzUazxT9n5FzalaMmJ/WU/qfkGZYI/q997GV18nnu0jHF6ItEv4=
diff --git a/028.bs/macros.i b/028.bs/macros.i
index b898c8a..6768cfe 100644
--- a/028.bs/macros.i
+++ b/028.bs/macros.i
@@ -100,6 +100,16 @@ ItemControl: macro
PlayerMoveRight: macro
+ cmp.w #PATHWAY_CONFIG_VERTICAL,pathwayLastConfig
+ beq .\@miss
+ cmp.w #PATHWAY_CONFIG_TOP_LEFT,pathwayLastConfig
+ beq .\@miss
+ cmp.w #PATHWAY_CONFIG_BOT_LEFT,pathwayLastConfig
+ beq .\@miss
+ bra .\@ok
+.\@miss:
+ move.w #1,pathwayMissPending
+.\@ok:
move.w playerJumpPixels,d1
add.w playerPausePixels,d1
move.w d1,spriteR
@@ -124,6 +134,16 @@ PlayerMoveDown: macro
endm
PlayerMoveLeft: macro
+ cmp.w #PATHWAY_CONFIG_VERTICAL,pathwayLastConfig
+ beq .\@miss
+ cmp.w #PATHWAY_CONFIG_TOP_RIGHT,pathwayLastConfig
+ beq .\@miss
+ cmp.w #PATHWAY_CONFIG_BOT_RIGHT,pathwayLastConfig
+ beq .\@miss
+ bra .\@ok
+.\@miss:
+ move.w #1,pathwayMissPending
+.\@ok:
move.w playerJumpPixels,d1
add.w playerPausePixels,d1
move.w d1,spriteL
diff --git a/028.bs/map.s b/028.bs/map.s
index 18e3cc7..cb87b31 100644
--- a/028.bs/map.s
+++ b/028.bs/map.s
@@ -6,9 +6,8 @@
RenderPathway:
move.l pathwayPlayerTileAddress,d5
andi.w #$fff0,d5 ; point the address to the last tile of the previous column
- addq #2,d5 ;
move.l d5,a4
- move.w #1,d5
+ move.w #0,d5
.loopX:
move.w #6,d6 ; y index
move.w #0,d7 ; number of rows without a pathway
diff --git a/028.bs/player.s b/028.bs/player.s
index 96575d1..db2ee89 100644
--- a/028.bs/player.s
+++ b/028.bs/player.s
@@ -29,6 +29,9 @@ ResetPlayer:
add.l #6*PLAYER_SPRITE_VERTICAL_BYTES,d0
move.l d0,currentSprite
+ move.w #PATHWAY_CONFIG_FREE,pathwayLastConfig
+ move.w #0,pathwayMissPending
+
bsr SpriteDisableAuto
move.w #0,spritePlayerFallingAnimation
move.w #PLAYER_INITIAL_X,spriteX
@@ -286,6 +289,11 @@ CheckPlayerMiss:
rts
.check:
+ cmp.w #1,pathwayMissPending
+ beq .doBigBang
+
+ move.w #PATHWAY_CONFIG_FREE,pathwayLastConfig
+
move.l pathwayMapPtr,a2
move.l foregroundMapPtr,a3
@@ -488,36 +496,42 @@ CheckDirection:
jmp BigBang
.horizontal:
+ move.w #PATHWAY_CONFIG_HORIZONTAL,pathwayLastConfig
cmp.w spriteR,d1
beq .ok
cmp.w spriteL,d1
beq .ok
jmp BigBang
.vertical:
+ move.w #PATHWAY_CONFIG_VERTICAL,pathwayLastConfig
cmp.w spriteU,d1
beq .ok
cmp.w spriteD,d1
beq .ok
jmp BigBang
.topLeft:
+ move.w #PATHWAY_CONFIG_TOP_LEFT,pathwayLastConfig
cmp.w spriteR,d1
beq .ok
cmp.w spriteD,d1
beq .ok
jmp BigBang
.topRight:
+ move.w #PATHWAY_CONFIG_TOP_RIGHT,pathwayLastConfig
cmp.w spriteD,d1
beq .ok
cmp.w spriteL,d1
beq .ok
jmp BigBang
.rightBottom:
+ move.w #PATHWAY_CONFIG_BOT_RIGHT,pathwayLastConfig
cmp.w spriteU,d1
beq .ok
cmp.w spriteL,d1
beq .ok
jmp BigBang
.leftBottom:
+ move.w #PATHWAY_CONFIG_BOT_LEFT,pathwayLastConfig
cmp.w spriteR,d1
beq .ok
cmp.w spriteU,d1
@@ -595,4 +609,9 @@ playerJumpPixels:
playerPausePixels
dc.w PLAYER_PAUSE_PIXELS
playerMissPixels
- dc.w PLAYER_CHECK_MISS_PIXELS
\ No newline at end of file
+ dc.w PLAYER_CHECK_MISS_PIXELS
+pathwayLastConfig:
+ dc.w PATHWAY_CONFIG_FREE
+pathwayMissPending:
+ dc.w 0
+
\ No newline at end of file