wip button triggered pickups
This commit is contained in:
parent
c5d2907524
commit
37f5148ed5
|
@ -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
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
|
@ -1,17 +1,16 @@
|
|||
000 153 238 255
|
||||
051 136 136 255
|
||||
071 112 076 000
|
||||
058 175 154 255
|
||||
255 255 255 255
|
||||
255 238 187 255
|
||||
255 255 221 255
|
||||
068 187 170 255
|
||||
156 235 234 255
|
||||
255 235 173 255
|
||||
000 034 051 255
|
||||
170 238 238 255
|
||||
255 221 000 255
|
||||
238 187 153 255
|
||||
255 136 000 255
|
||||
000 068 119 255
|
||||
085 221 204 255
|
||||
255 000 064 255
|
||||
170 187 153 255
|
||||
255 255 204 255
|
||||
|
||||
042 118 117 255
|
||||
232 173 135 255
|
||||
154 174 135 255
|
||||
071 218 199 255
|
||||
250 102 011 255
|
||||
255 226 011 255
|
||||
025 138 157 255
|
||||
251 000 050 255
|
||||
255 255 213 255
|
Binary file not shown.
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -116,8 +116,8 @@ LINESIZE equ BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH
|
|||
|
||||
|
||||
PANEL_BIT_DEPTH equ 4
|
||||
PANEL_LIVES_X equ 218
|
||||
PANEL_PLAYER1_X equ 192
|
||||
PANEL_LIVES_X equ 236
|
||||
PANEL_PLAYER1_X equ 214
|
||||
PANEL_COLUMNS_REMAINING_X equ 100
|
||||
PANEL_SCORE_X equ 29
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
xdef startForegroundMapPtr
|
||||
xdef startPathwayMapPtr
|
||||
|
||||
xdef frameCount
|
||||
xdef moving
|
||||
xdef itemsMapOffset
|
||||
xdef itemsMapEndPtr
|
||||
|
@ -97,6 +98,7 @@ Reset:
|
|||
move.l playerXColumnLastSafe,playerXColumn
|
||||
jsr PreRenderColumnsRemaining
|
||||
jsr RenderPlayerScore
|
||||
jsr ResetPickups
|
||||
|
||||
move.l startForegroundMapPtr,foregroundMapPtr
|
||||
move.l startPathwayMapPtr,pathwayMapPtr
|
||||
|
@ -252,6 +254,8 @@ GameLoop:
|
|||
|
||||
jsr PlayNextSound
|
||||
jsr PrepareItemSpriteData
|
||||
|
||||
jsr FlashPickup
|
||||
bra GameLoop
|
||||
|
||||
|
||||
|
@ -303,13 +307,11 @@ Update:
|
|||
rts
|
||||
|
||||
RevealPathway:
|
||||
PlaySound Whoosh
|
||||
move.w #50,pathwayFadeCount
|
||||
jsr InstallTilePalette
|
||||
rts
|
||||
|
||||
FreezeScrolling:
|
||||
PlaySound Whoosh
|
||||
move.w #150,freezeCountdownCounter
|
||||
move.w #0,moving
|
||||
rts
|
||||
|
@ -317,6 +319,7 @@ FreezeScrolling:
|
|||
InitialiseNewGame:
|
||||
jsr InitialiseItems
|
||||
jsr InitialisePlayer
|
||||
jsr InitialisePickups
|
||||
jsr InstallNextLevel
|
||||
bra Reset
|
||||
|
||||
|
@ -508,6 +511,7 @@ stopScrolling:
|
|||
|
||||
|
||||
PostMissedTile:
|
||||
jsr InitialisePickups
|
||||
lea livesCounterText,a0
|
||||
jsr DecrementCounter
|
||||
bra Reset
|
||||
|
@ -1085,7 +1089,6 @@ stopScrollingPending:
|
|||
dc.w 0
|
||||
freezeCountdownCounter:
|
||||
dc.w 0
|
||||
|
||||
startUserstack:
|
||||
ds.b $1000 ; size of stack
|
||||
userstack:
|
||||
|
|
|
@ -82,15 +82,18 @@ DetectItemCollisions:
|
|||
rts
|
||||
.arrowCollision:
|
||||
bsr DeleteItemSprite
|
||||
jsr SpriteEnableAuto
|
||||
;; jsr SpriteEnableAuto
|
||||
jsr PickupArrow
|
||||
rts
|
||||
.clockCollision:
|
||||
bsr DeleteItemSprite
|
||||
jsr FreezeScrolling
|
||||
;; jsr FreezeScrolling
|
||||
jsr PickupClock
|
||||
rts
|
||||
.eyeCollision:
|
||||
bsr DeleteItemSprite
|
||||
jsr RevealPathway
|
||||
;; jsr RevealPathway
|
||||
jsr PickupEye
|
||||
rts
|
||||
.skip:
|
||||
add.l #ITEM_STRUCT_SIZE,a1
|
||||
|
@ -489,4 +492,5 @@ __nextPlayerBonus:
|
|||
dc.l 0
|
||||
|
||||
align 4
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,17 +8,17 @@
|
|||
</tileset>
|
||||
<layer name="foreground" width="100" height="8">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY=
|
||||
eJwLZGBgsGLEjtlpIDeK8WM7YNgxAbEYFhokV4lHDpc+y0Hgr6GKtXCEKYgmV240PsjHhPIHOXlnND7Ix6B0vhtPHlg+mj/oignlga2j9QddMaE6Al/eGc0f1MfSeNqmtJAbxfgxAO5ipn8=
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="pathway" width="100" height="8" visible="0">
|
||||
<layer name="pathway" width="100" height="8">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJxjYBgFo2AUkAvOA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfsAFWAcw7EF+RXc7N9Q9yOkEHXCjieHzAyxMsYXRXTxy6PaQEk4gfSB7YXF4HosacvLAYwbK4poYgCts0f0Pi5/vWOSQ/Y8cDvjswSYHswMGJJHYjxmIz4+geJZnxO0XSgCt4wSWRpHtA/lbHkc8wfyKbgZIDJlGz1cwMWx5jpJww5ePcfmFUgAzd6DrFloBUsMNOTwkh2F4jCQAAEy5K70=
|
||||
eJxjZxgFo2AUkAseA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfiDGTmSaHgBkD7rbuaF2n2fA7RZuNDFWPO6F+Q9bGN3FI4duDz47sOkD2QuLw/NY1JCTB0B5h5K4JgbgClt0/8Pi5zsWOWT/I4cDPnuwycHsgAFJJPZjBuLzIyie5Rlx+4UQwJc/aB0nsDSKbB/IDfI44gnmV3QzQGLINHq+golhy3PkhhsI4MvHuPxCCBDKO+h1zHADpIYbcnhIDsPwGEkAAMreL30=
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="items" width="100" height="8" visible="0">
|
||||
<layer name="items" width="100" height="8">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWE8FOLCmQpuJNcMYvQFE1ADC2NiwpqUuKMFCCHT7migPh8qu9uFCPNw2UmMXhBAD+sARkx5mJoAEuKRXOBKhNm+QyDP4gIg/6G7n1B4ehARJ0MJuOFwsx8WcVxqiQHYzKPUzFGACfxHw3PEAACaNwuB
|
||||
eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWEcPQTiwpkKbiTXDGL0BRNQA4sLYuKElLijBQgh025QOvKhsrtdiDAPl53E6AWBUDR1AWh85PgIICEeyQWuRJjtOwTyLC4A8h+6+wmFpwcRcTKUgBsON/thEcellhiAzTxKzSQVRA3B+CEV+I8AP44CCAAABPMMCg==
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
|
|
@ -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"
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue