From 37f5148ed594084799fcd766070cd2679cea40cb Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Sat, 28 May 2016 13:49:04 +1000 Subject: [PATCH] wip button triggered pickups --- 028.bs/Makefile | 6 +- 028.bs/assets/full_panel.png | Bin 0 -> 3376 bytes 028.bs/assets/panel.pal | 27 ++-- 028.bs/assets/panel.png | Bin 2881 -> 2847 bytes 028.bs/assets/pickups.png | Bin 0 -> 1610 bytes 028.bs/constants.i | 4 +- 028.bs/game1.s | 9 +- 028.bs/items.s | 12 +- 028.bs/levels/level1_foreground.tmx | 10 +- 028.bs/pickups.s | 216 ++++++++++++++++++++++++++++ 028.bs/player.s | 20 ++- 11 files changed, 273 insertions(+), 31 deletions(-) create mode 100644 028.bs/assets/full_panel.png create mode 100644 028.bs/assets/pickups.png create mode 100644 028.bs/pickups.s diff --git a/028.bs/Makefile b/028.bs/Makefile index 99db8b0..ad558c1 100644 --- a/028.bs/Makefile +++ b/028.bs/Makefile @@ -14,11 +14,12 @@ BASE_ADDRESS=4000 # note: this must be high enough not to conflict with MFMbufE BOOTBLOCK_ASM=alpine_bootblock.s -OBJS=out/init.o out/utils.o out/image.o out/blit.o out/joystick.o out/player.o out/items.o out/blitmtext.o out/blitmtext85.o out/blittext.o out/music.o out/P6112-Play.o out/splash.o out/background.o out/sound.o out/trackloader.o out/disk.o out/counter.o out/map.o out/message.o out/menu.o out/credits.o out/bob.o +OBJS=out/init.o out/utils.o out/image.o out/blit.o out/joystick.o out/player.o out/items.o out/blitmtext.o out/blitmtext85.o out/blittext.o out/music.o out/P6112-Play.o out/splash.o out/background.o out/sound.o out/trackloader.o out/disk.o out/counter.o out/map.o out/message.o out/menu.o out/credits.o out/bob.o out/pickups.o IMAGES=foreground.png \ background.png \ panel.png \ + pickups.png \ mpanel.png \ mpanelOrig.png \ sprite_pig-0.png \ @@ -117,6 +118,9 @@ out/background.bin: assets/background.png out/panel.bin: assets/panel.png $(IMAGECON) --input $< $(IMAGECON_ARGS) --colors 16 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-palette --output-png --output-copperlist --output-grey-palette --output out/panel --use-palette=assets/panel.pal +out/pickups.bin: assets/pickups.png + $(IMAGECON) --input $< $(IMAGECON_ARGS) --colors 16 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-palette --output-png --output-copperlist --output-grey-palette --output out/pickups --use-palette=assets/panel.pal + out/countdown.bin: assets/countdown.png $(IMAGECON) --input $< $(IMAGECON_ARGS) --colors 16 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-palette --output-png --output-copperlist --output-grey-palette --output out/countdown --use-palette=assets/panel.pal diff --git a/028.bs/assets/full_panel.png b/028.bs/assets/full_panel.png new file mode 100644 index 0000000000000000000000000000000000000000..039c16c717360de4df2c2479755d131230abb1be GIT binary patch literal 3376 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 diff --git a/028.bs/assets/pickups.png b/028.bs/assets/pickups.png new file mode 100644 index 0000000000000000000000000000000000000000..f07bc74217f9a0acc54d4d61d9efc92310c16bdd GIT binary patch literal 1610 zcmV-Q2DSN#P)4Tx062|}Rb6NtRTMtEb7vzY&QokOg>Hg1+lHrgWS zWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6wD^Ni=!>T7nL9I? zX}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8rehoBb*p;u8ID_yBf z0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J`jH<$>RKN5V(7Oq zK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYvwjAKwmYb0gKL(K8 z-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z>!FI&AHCpoWI|RUq zx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVTrI(b06~u#xf1yS} z_UGdMvD``!0~u->P=lA4?YN`hilQ|3tHka)7T{2CGqw zjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^7T9R1gAN8V6s;5) zieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2bW$~+pTw@bIek?Zv zKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L_AC5qq~L$#SMj%U z$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6=b6>{xYV#Ue-+LB$ z7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re4r3qYr~6#KE>;1F z`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+5K}u-6REM(K@W$s zrgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5h^QEb$V`rCQ-|7Z zS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX2i^rZ^Mu;6+rb@? zNPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV0id6JRZw95ZvX%R z_(?=TR7efYR=Y|AK@^=t!7hbgAlTViDdrpU2Vq4mEbJ7)CY6nib{2vU6#pRK5Yfsm zU?Er=u&}cb&6#+HyR$dDJDIFxAl#Wd_jT@LHnq#a`;Vz`wfC3J{n=}U9^y>bD+WvY>k%^h&aq^x^Sqi^T!j7?RaQ) zfsOFwU~E!8@K)hBpRR-cqXB00Fv>jKC!+3`qf5`Y#%Wx3!0na58$)2dG$P_{gIMQ6(S zl$Eaf9dIMS0OTl;M_L44jsbOiTBiL8zRK2TT$#@xI)MRDh?EZz&*LaT;$DsbAI5Qd z;M4bifQP?K0>CT_6tZ$zuu1xp*EcUik{{SYUHfOL=nD`NM~Lp!5 - eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY= + eJwLZGBgsGLEjtlpIDeK8WM7YNgxAbEYFhokV4lHDpc+y0Hgr6GKtXCEKYgmV240PsjHhPIHOXlnND7Ix6B0vhtPHlg+mj/oignlga2j9QddMaE6Al/eGc0f1MfSeNqmtJAbxfgxAO5ipn8= - + - eJxjYBgFo2AUkAvOA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfsAFWAcw7EF+RXc7N9Q9yOkEHXCjieHzAyxMsYXRXTxy6PaQEk4gfSB7YXF4HosacvLAYwbK4poYgCts0f0Pi5/vWOSQ/Y8cDvjswSYHswMGJJHYjxmIz4+geJZnxO0XSgCt4wSWRpHtA/lbHkc8wfyKbgZIDJlGz1cwMWx5jpJww5ePcfmFUgAzd6DrFloBUsMNOTwkh2F4jCQAAEy5K70= + eJxjZxgFo2AUkAseA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfiDGTmSaHgBkD7rbuaF2n2fA7RZuNDFWPO6F+Q9bGN3FI4duDz47sOkD2QuLw/NY1JCTB0B5h5K4JgbgClt0/8Pi5zsWOWT/I4cDPnuwycHsgAFJJPZjBuLzIyie5Rlx+4UQwJc/aB0nsDSKbB/IDfI44gnmV3QzQGLINHq+golhy3PkhhsI4MvHuPxCCBDKO+h1zHADpIYbcnhIDsPwGEkAAMreL30= - + - eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWE8FOLCmQpuJNcMYvQFE1ADC2NiwpqUuKMFCCHT7migPh8qu9uFCPNw2UmMXhBAD+sARkx5mJoAEuKRXOBKhNm+QyDP4gIg/6G7n1B4ehARJ0MJuOFwsx8WcVxqiQHYzKPUzFGACfxHw3PEAACaNwuB + eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWEcPQTiwpkKbiTXDGL0BRNQA4sLYuKElLijBQgh025QOvKhsrtdiDAPl53E6AWBUDR1AWh85PgIICEeyQWuRJjtOwTyLC4A8h+6+wmFpwcRcTKUgBsON/thEcellhiAzTxKzSQVRA3B+CEV+I8AP44CCAAABPMMCg== diff --git a/028.bs/pickups.s b/028.bs/pickups.s new file mode 100644 index 0000000..94f96c1 --- /dev/null +++ b/028.bs/pickups.s @@ -0,0 +1,216 @@ + include "includes.i" + + xdef InitialisePickups + xdef UsePickup + xdef PickupEye + xdef PickupClock + xdef PickupArrow + xdef FlashPickup + xdef ResetPickups + +PICKUP_OFFSET equ (SCREEN_WIDTH_BYTES*PANEL_BIT_DEPTH*17)+(272/8) +PICKUP_NUM_FLASHES equ 6 + +ResetPickupItem: macro + cmp.w #0,has\1Pickup + beq .\@skip + move.w #PICKUP_NUM_FLASHES,has\1Pickup + bsr Show\1Pickup +.\@skip: + endm + +ResetPickups: + move.l #0,lastPickupFrameCount + ResetPickupItem Arrow + ResetPickupItem Clock + ResetPickupItem Eye + rts + +InitialisePickups: + move.w #0,hasEyePickup + move.w #0,hasArrowPickup + move.w #0,hasClockPickup + bsr HideEyePickup + bsr HideArrowPickup + bsr HideClockPickup + rts + + +UsePickup: + move.l frameCount,d0 + sub.l lastPickupFrameCount,d0 + cmp.l #50,d0 + blt .done + + move.l frameCount,lastPickupFrameCount + cmp.w #0,hasEyePickup + bne .useEye + cmp.w #0,hasClockPickup + bne .useClock + cmp.w #0,hasArrowPickup + bne .useArrow + bra .done +.useEye: + PlaySound Whoosh + bsr HideEyePickup + move.w #0,hasEyePickup + jsr RevealPathway + bra .done +.useClock: + PlaySound Whoosh + bsr HideClockPickup + move.w #0,hasClockPickup + jsr FreezeScrolling + bra .done +.useArrow: + move.l foregroundPlayerTileAddress,a0 + cmp.w #0,a0 + beq .done + move.w (a0),d0 + cmp.w #$f02,d0 ; dont active on safe columns + beq .done + cmp.w #$1682,d0 ; dont active on safe zones + beq .done + PlaySound Whoosh + bsr HideArrowPickup + move.w #0,hasArrowPickup + jsr SpriteEnableAuto + bra .done +.done: + rts + + +FlashItem: macro + move.w has\1Pickup,d0 + cmp.w #PICKUP_NUM_FLASHES,d0 + beq .\@skip + cmp.w #0,d0 + beq .\@skip + btst #0,d0 + bne .\@on + bsr Hide\1Pickup + bra .\@done +.\@on: + bsr Show\1Pickup +.\@done: + add.w #1,has\1Pickup +.\@skip + endm + +FlashPickup: + cmp.w #0,flashCount + bgt .skip + move.w #8,flashCount + + FlashItem Arrow + FlashItem Clock + FlashItem Eye +.skip: + sub.w #1,flashCount + rts + + +PickupItem: macro + PlaySound Whoosh + cmp.w #0,has\1Pickup + beq .\@doPickup + jsr \2 + bra .\@done +.\@doPickup: + bsr Show\1Pickup + move.w #1,has\1Pickup +.\@done: + endm + +PickupClock: + PickupItem Clock,FreezeScrolling + rts + +PickupEye: + PickupItem Eye,RevealPathway + rts + +PickupArrow: + PickupItem Arrow,SpriteEnableAuto + rts + +ShowEyePickup: + move.w #0,d0 + move.w #0,d1 + bsr BlitPickup + rts + +HideEyePickup: + move.w #0,d0 + move.w #1,d1 + bsr BlitPickup + rts + +ShowClockPickup: + move.w #1,d0 + move.w #0,d1 + bsr BlitPickup + rts + +HideClockPickup: + move.w #1,d0 + move.w #1,d1 + bsr BlitPickup + rts + +ShowArrowPickup: + move.w #2,d0 + move.w #0,d1 + bsr BlitPickup + rts + +HideArrowPickup: + move.w #2,d0 + move.w #1,d1 + bsr BlitPickup + rts + + +BlitPickup: + WaitBlitter + ;; d0.w pickup index + ;; 0 - eye, 1 - clock, 2 - arrow, 3 - blank + ;; d1.w blank + ;; 0 - not blank, 1 - blank + move.w #BC0F_SRCA|BC0F_DEST|$f0,BLTCON0(a6) + lea pickups,a0 + move.l #panel+PICKUP_OFFSET,a1 + lsl.w #1,d0 + cmp.w #0,d1 + adda.w d0,a1 + beq .notBlank + move.w #48/8,d0 +.notBlank: + adda.w d0,a0 + move.w #0,BLTCON1(a6) + move.w #$ffff,BLTALWM(a6) + move.w #$ffff,BLTAFWM(a6) + move.w #(64-16)/8,BLTAMOD(a6) + move.w #SCREEN_WIDTH_BYTES-2,BLTDMOD(a6) + move.l a0,BLTAPTH(a6) ;source graphic top left corner + move.l a1,BLTDPTH(a6) ;destination top left corner + move.w #(14*PANEL_BIT_DEPTH)<<6|(1),BLTSIZE(a6) + rts + +hasClockPickup: + dc.w 0 +hasEyePickup: + dc.w 0 +hasArrowPickup: + dc.w 0 +lastPickupFrameCount: + dc.l 0 +flashCount: + dc.w 0 + +revealMessageText: + dc.b "SHOW ME THE BOARD!" + dc.b 0 + align 4 +pickups: + incbin "out/pickups.bin" diff --git a/028.bs/player.s b/028.bs/player.s index 223f18f..3950297 100644 --- a/028.bs/player.s +++ b/028.bs/player.s @@ -25,6 +25,7 @@ xdef playerLevelPausePixels xdef playerLevelMissPixels + xdef spriteCurrentPathwayTile PLAYER_INSTALL_COLOR_PALETTE equ 0 PLAYER_SPRITE_DATA equ 4 @@ -40,6 +41,7 @@ ResetPlayer: move.w #PATHWAY_CONFIG_FREE,pathwayLastConfig move.w #0,pathwayMissPending + move.l #0,foregroundPlayerTileAddress bsr SpriteDisableAuto move.w #0,spritePlayerFallingAnimation @@ -192,6 +194,11 @@ ProcessJoystick: beq .skip .autoMoveDisabled: + btst.b #0,joystick + beq .joystickNotPressed + jsr UsePickup +.joystickNotPressed: + cmp.b #3,joystickpos bne .notRight PlayerMoveRight @@ -212,7 +219,6 @@ ProcessJoystick: rts SpriteEnableAuto: - PlaySound Whoosh CompareScore SCORE_ARROW_SUBTRACTION ble .toZero AddToScore SCORE_ARROW_SUBTRACTION @@ -413,7 +419,7 @@ CheckPlayerMiss: GetNextAutoMove: move.w spriteCurrentPathwayTile,d0 - lsr.w #4,d0 + lsr.w #4,d0 ; light and dark colored tiles cmp.w #$708,d0 beq .horizontal @@ -427,6 +433,16 @@ GetNextAutoMove: beq .topRight cmp.w #$618,d0 beq .vertical + + move.l foregroundPlayerTileAddress,a0 + move.w (a0),d0 + lsr.w #4,d0 ; light and dark colored tiles + cmp.w #$3c0,d0 + beq .topLeft + cmp.w #$2d0,d0 + beq .leftBottom + cmp.w #$438,d0 + beq .horizontal bra .skip .horizontal: cmp.w #PLAYER_MOVE_RIGHT,spriteLastMove