diff --git a/028.bs/foreground.tmx b/028.bs/foreground.tmx
index 70e462f..1d19dce 100644
--- a/028.bs/foreground.tmx
+++ b/028.bs/foreground.tmx
@@ -13,7 +13,7 @@
- eJxjYBgFo2AUjIKhCc4D8Uck/kkgNmZkYNBlRKVHAW0BLJwlgfgxlE8IgNR9JKhqFNATjMbJ4AOw/AQrz0bBKBguAADWxQoq
+ eJxjYBgFo2AUkAvOA/HHgXbECAbo4c/KyMDADcQngWxjIK3LCKFHAW0BLJwlgfgxlA8DsDhBByB1o3mH/gAUF6w48sRonNAf3AVieTxlFCw/wcqzUTAKhgsAAErmDLs=
diff --git a/028.bs/game1.s b/028.bs/game1.s
index 4488126..b82f518 100644
--- a/028.bs/game1.s
+++ b/028.bs/game1.s
@@ -242,7 +242,7 @@ Update:
.c1:
.skipForegroundUpdates:
- jsr InstallNextPathwayColor
+ ;; jsr InstallNextPathwayColor
jsr CheckPlayerMiss
rts
diff --git a/028.bs/player.s b/028.bs/player.s
index 848110b..be802e2 100644
--- a/028.bs/player.s
+++ b/028.bs/player.s
@@ -279,12 +279,16 @@ CheckPlayerMiss:
add.l d1,a2
add.l d1,a3
- ;; a2 now points at the tile under the sprite
+ ;; a2 now points at the pathway tile under the sprite
move.w (a2),d0
+
+ bsr CheckDirection
+
cmp.w #$78e,d0
bge .noBigBang
- move.w (a3),d0
+ ;; a3 now points at the tile under the sprite
+ move.w (a3),d0
cmp.w #$78e,d0
bge .noBigBang
@@ -308,6 +312,84 @@ CheckPlayerMiss:
.dontClearPathway:
rts
+
+CheckDirection:
+ cmp.w #$7080,d0 ; dark horizontal
+ beq .horizontal
+ cmp.w #$708c,d0 ; light horizontal
+ beq .horizontal
+
+ cmp.w #$6900,d0 ; dark left-top
+ beq .topLeft
+ cmp.w #$690c,d0 ; light left-top
+ beq .topLeft
+
+ cmp.w #$5a00,d0 ; dark left-bottom
+ beq .leftBottom
+ cmp.w #$5a0c,d0 ; light left-bottom
+ beq .leftBottom
+
+ cmp.w #$4b00,d0 ; dark right-bottom
+ beq .rightBottom
+ cmp.w #$4b0c,d0 ; light right-bottom
+ beq .rightBottom
+
+ cmp.w #$5280,d0 ; dark top-right
+ beq .topRight
+ cmp.w #$528c,d0 ; light top-right
+ beq .topRight
+
+ cmp.w #$6180,d0 ; dark vertical
+ beq .vertical
+ cmp.w #$618c,d0 ; light vertical
+ beq .vertical
+
+ cmp.w #0,d0
+ beq .ok
+ jmp BigBang
+
+.horizontal:
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
+ beq .ok
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL
+ beq .ok
+ jmp BigBang
+.vertical:
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
+ beq .ok
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
+ beq .ok
+ jmp BigBang
+
+.topLeft:
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
+ beq .ok
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
+ beq .ok
+ jmp BigBang
+.topRight:
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
+ beq .ok
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL
+ beq .ok
+ jmp BigBang
+.rightBottom:
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
+ beq .ok
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL
+ beq .ok
+ jmp BigBang
+.leftBottom:
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
+ beq .ok
+ cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
+ beq .ok
+ jmp BigBang
+
+.ok:
+ rts
+
+
SelectNextPlayerSprite:
cmp.l #pigPlayerSpriteConfig,playerSpriteConfig
bne .s1