From 3146c535f34a4b422e82a49b994b9ea92388ba7c Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Sun, 24 Apr 2016 13:18:26 +1000 Subject: [PATCH] check for pathway misses after jump complete --- 028.bs/assets/assets.png | Bin 10221 -> 10168 bytes 028.bs/constants.i | 2 ++ 028.bs/foreground.tmx | 2 +- 028.bs/game1.s | 46 ++------------------------- 028.bs/player.s | 67 +++++++++++++++++++++++++++++++++++++-- 5 files changed, 71 insertions(+), 46 deletions(-) diff --git a/028.bs/assets/assets.png b/028.bs/assets/assets.png index c80d1b656fd0d0608ee765f504271c82fa1486bd..7e6129c7787d9116689494480ed6b1e29db9c555 100644 GIT binary patch delta 1257 zcmVx z(f1q($bKB&03+u^Hs1BV;#~W9b6~e5pIZWyw?fO&z8lb#Q@#%{lu0skY^RC8MnC|B zWuIG^rV~?{T$zfF!Pzk2+;jmaToVLR2L( zMC>D?Or4?Jj4{>UQstuvP`&~3q3a`*bKEIj>Yy1n5wHlP5JpHg)PHY%+xjN+Y8qL# z4$0iaUT(%{V_IuH`n$mR8r>-EsUzi%sgy0%mAy{YWi$Tyk?Gl)VYL#gdD* zm!h{^1eX_iGy!hDCf9u*API1Jlg@~V01?U! zMFfbz=m?xXy6gRUPJfPH%+sef5g-CYU?v2%8Q@nhyxNA~Ds|hRTzF}wQ0bNk5CI}k z7J=v*b?B1#?%hQW|GVt*EYi(4-v>mV7mvH zZ)$xOghVZou5Xka5fM0C1W15~JNFzp5jc1RR=Wf)F|%AYmq3v=h(Nsvtd;;tUiE(H z7#R_$1%c=#uz&srh(51nAdG_u5CI~Pia>M*D38a0_#VCT@#Y5?pGox z0U}TUfoK90UqXCxj75H}asDC#M1TlPgg_Dj_7NX5w~1zqZioO8D271v9$+z#G(-f5 z01>DJ0TN&(6TvWu01=oT0Ve_Cr3bDOH$tWll^%%z5q}^8WfAD?0e;}uf6z4NZ$5b^ z;JwWQ%`}7yLaxZ-2=9cW_oq$r8 zQVzZkaI!g}BO*WqCPH8@1AO58J6gA{cLPrKKEO~W$;@%0PX^r(fdfEbF9XDQ`A$F} z!IB6Nfqyk4u$KX@X`nWfWahZ0+2vS>Kp6y_8DJUH%eNvVYKe6Dqv8mN01*HJBtRg+ zk_ZrigF|4oOW+bS$z^j16lsG9)QiAs36SJf?}v_&5rJ9|h+YEgZ-D6YS_Z;6hyW2F z0;vc@XMj_^50IH#>J(C*2oQmx2t*U0IN19kr zfC%&<5WNT3XM}x3fCvzQB_eQi67;nt2F{p?01+Spxd<==lW-?ylX)jb7vTQ^p)mz- TmbgY500000NkvXXu0mjf_n;~t delta 1326 zcmV+}1=0GrPwh{zJp=)pvpxg{9)GYb)_YJX`%j0kgsfqna$?vL;D+QjZ-tf@qoUrN zydsP51I&S#x=TU;`*4U^_TR3Y{NRxO7!njYyg?>b2R=}W9&XIcwGW6`)>>`}P~HkH zNBeF-Q%?Clz)&X1%(0y&{u&7Z5Kgao^%^KG2g0(?y-7Xgby#8thY%l*p?^dQeU@DW zwgiYSz7r5guslQru-wfVyM2bv)?N!UZa+UD8&KC7$k`SFvV>$I_y$fL7FnuWR83M(WT~^n9|pF-Xk5rK+zzcASVU zR(>gRtK9=6aV_N|SWlcn68O@8YE&sp=RR49p+ts=eMFS061IY@U~Yc!H=6su^`*VCx$uvzN06Y;{qtvU@O3%cxqo-)goTYnfCx;8z%~Pv z_y67W!k63k0O}I4$ZN8A5CI}U1lEMWHUkubd*K_moV*Y4rA{dW{?qffG@&f81TdjY zl9^)(lxc$q5CK78OMpUfa`?)&lfQ@n5g-C9LSRdPD;iTf6q`vhb6ndDb38;KAA#*2 zV7{sKSr8JnM1Q)zQF25?;BXNj0Uqw$bL2$e;1O8u61c?7a@kx0McN<&^&+rZ0wj6W z`=MiGM4%P~qL;w>8zB0;mVq!1B0vO)Kq>;!8K68K1LAx1%Ey}@Tzn?gSCl+6w zL%zxY_nlZW|0z{w~0?~Vb#XQmw z5g-CYpb`W~fR#)H!yp1gV0r|c1c;X&xJujznLbo{BmzW$2$V&jvj_NrU;jbVoWJ?x zoq+c?4>ZrTrMwdmWaxAM-SfBlx}5DFyudd}JAq*%5g-DSA+VPL3dz0jjhkDtlXn72 zT}nClK7YW;=7f%j01=o7fxQgyf%ETZ-MZclIMw?ALzyHq$B8}}bVCFV0D-*>5aZ=L z0f7WdB0vPzjKE$7xTb;HOp=-7nr4?{Ap&I(aAtsIOfTPxkfZc%p{l1B~YXdB2X^^t0h2^SAV@9Iz~nWYC#}+39P>XqR(p?2;(3E zM1TmSA`qPcPW3)OW^SodNO>Ya1co9IO@QKn?*kkPGxdl75vUP?Bm(SvA0RWg8mE^r z5dk95hd}fmV4o585dk7V1eS=v(MizPmKZo=CIUo&2;?Hb3@{f#>JtGXuvi30fQy|v k29q2og_A@l7Z-v52T$EAhUlk$E&u=k07*qoM6N<$f}E*PF8}}l diff --git a/028.bs/constants.i b/028.bs/constants.i index 58fa08a..cc8606d 100644 --- a/028.bs/constants.i +++ b/028.bs/constants.i @@ -3,8 +3,10 @@ MPANEL_COPPER_WAIT equ $9ad1 PLAYER_INITIAL_X equ $c0 PLAYER_INITIAL_Y equ $e4 +PLAYER_BOTTOM_Y equ $e4 PLAYER_JUMP_PIXELS equ 8 +PLAYER_CHECK_MISS_PIXELS equ 6 PLAYER_PAUSE_PIXELS equ 16 PLAYER_MOVE_PIXELS equ 2 PLAYER_SPRITE_VERTICAL_BYTES equ ((16*4)+12) diff --git a/028.bs/foreground.tmx b/028.bs/foreground.tmx index d0d8437..8766d69 100644 --- a/028.bs/foreground.tmx +++ b/028.bs/foreground.tmx @@ -8,7 +8,7 @@ - eJy7y8DAoMuIHd8dlaO7nB2QZgJiMSz0qBz95bRwyBMjFw7EvWToG5XDLUdJfKYCcTYZ+kbl8OeP80B8EgsNk4PlgUA0ud3QOBksaWs4yBETZ/XQONiNR24yFrnBlO6Gihy14rqSATXvDLZ0N1TkWHG0v0B4VI7+cgD6L2Wi + eJy7y8DAwI4D3x2Vo7ucHRAzAbEYFnpUjv5yWjjkiZELB+JeMvSNyuGWoyQ+U4E4mwx9o3L488d5ID6JhYbJwfJAIJrcbmicDJa0NRzkiImzemgc7MYjNxmL3GBKd0NFjlpxXcmAmncGW7obKnKsjLjbYKNy9JcDAOkzS7w= diff --git a/028.bs/game1.s b/028.bs/game1.s index 6a78608..51c460d 100644 --- a/028.bs/game1.s +++ b/028.bs/game1.s @@ -1,5 +1,6 @@ include "includes.i" - + + xdef BigBang xdef copperList xdef copperListBpl1Ptr xdef copperListBpl1Ptr2 @@ -79,7 +80,7 @@ Reset: jsr HidePlayer MainLoop: - MOVE.W #$0024,BPLCON2(a6) + ;; MOVE.W #$0024,BPLCON2(a6) SetupBoardLoop: add.l #1,frameCount @@ -344,47 +345,6 @@ PostMissedTile: bra Reset -CheckPlayerMiss: - lea map,a2 - - ;; calculate the a2 offset of the top right tile based on foreground scroll - move.l foregroundScrollX,d0 - lsr.l #FOREGROUND_SCROLL_TILE_INDEX_CONVERT,d0 - lsr.l #1,d0 - and.b #$f0,d0 - add.l d0,a2 - - - ;; add the offset based on the sprite's x position - move.w spriteLagX,d0 - sub.w #PLAYER_INITIAL_X,d0 - lsr.w #4,d0 ; x columns - move.l #(FOREGROUND_PLAYAREA_WIDTH_WORDS/2)-1,d1 - sub.w d0,d1 - mulu.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS*2,d1 - sub.l d1,a2 ; player x if y == bottom ? - - - ;; add the offset based on the sprite's y postion - move.w #PLAYER_INITIAL_Y,d0 - sub.w spriteY,d0 - lsr.w #4,d0 ; y columns - add.w #1,d0 - sub.l d1,d1 - move.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS-1,d1 - sub.w d0,d1 - lsl.w #1,d1 - add.l d1,a2 - - ;; a2 now points at the tile under the sprite - move.w (a2),d0 - - ;; - cmp.w #$78e,d0 - blt BigBang - - rts - BigBang: ;; move.w #(DMAF_SPRITE),DMACON(a6) ; turn sprites off for now diff --git a/028.bs/player.s b/028.bs/player.s index e2259ef..87161fd 100644 --- a/028.bs/player.s +++ b/028.bs/player.s @@ -1,5 +1,6 @@ include "includes.i" - + + xdef CheckPlayerMiss xdef UpdatePlayer xdef ProcessJoystick xdef InitialisePlayer @@ -63,9 +64,10 @@ UpdatePlayerFallingAnimation: UpdatePlayer: - ;; right move.l playerSpriteConfig,a0 move.l PLAYER_SPRITE_DATA(a0),d0 + + ;; right cmp.w #PLAYER_PAUSE_PIXELS,spriteR ble .skipRight add.w #PLAYER_MOVE_PIXELS,spriteX @@ -98,6 +100,10 @@ UpdatePlayer: ;; down cmp.w #PLAYER_PAUSE_PIXELS,spriteD ble .skipDown + if 0 + cmp.w #PLAYER_BOTTOM_Y,spriteY + bge .skipDown + endif add.w #PLAYER_MOVE_PIXELS,spriteY add.w #PLAYER_MOVE_PIXELS,spriteYEnd add.l #3*PLAYER_SPRITE_VERTICAL_BYTES,d0 @@ -210,6 +216,63 @@ InstallRobotColorPalette: include "out/sprite_robot-0-palette.s" rts +CheckPlayerMiss: + + cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR + beq .check + cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU + beq .check + cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD + beq .check + cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL + beq .check + rts + +.check: + + lea map,a2 + + ;; calculate the a2 offset of the top right tile based on foreground scroll + move.l foregroundScrollX,d0 + lsr.l #FOREGROUND_SCROLL_TILE_INDEX_CONVERT,d0 + lsr.l #1,d0 + and.b #$f0,d0 + add.l d0,a2 + + + ;; add the offset based on the sprite's x position + move.w spriteLagX,d0 + sub.w #PLAYER_INITIAL_X,d0 + lsr.w #4,d0 ; x columns + move.l #(FOREGROUND_PLAYAREA_WIDTH_WORDS/2)-1,d1 + sub.w d0,d1 + mulu.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS*2,d1 + sub.l d1,a2 ; player x if y == bottom ? + + + ;; add the offset based on the sprite's y postion + move.w #PLAYER_INITIAL_Y,d0 + sub.w spriteY,d0 + lsr.w #4,d0 ; y columns + add.w #1,d0 + sub.l d1,d1 + move.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS-1,d1 + sub.w d0,d1 + lsl.w #1,d1 + add.l d1,a2 + + ;; a2 now points at the tile under the sprite + move.w (a2),d0 + + ;; + cmp.w #$78e,d0 + bge .noBigBang + jmp BigBang + +.noBigBang + rts + + SelectNextPlayerSprite: cmp.l #pigPlayerSpriteConfig,playerSpriteConfig bne .s1