wip button triggered pickups

This commit is contained in:
alpine9000
2016-05-28 13:49:04 +10:00
parent c5d2907524
commit 37f5148ed5
11 changed files with 273 additions and 31 deletions
+5 -1
View File
@@ -14,11 +14,12 @@ BASE_ADDRESS=4000
# note: this must be high enough not to conflict with MFMbufE # note: this must be high enough not to conflict with MFMbufE
BOOTBLOCK_ASM=alpine_bootblock.s 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 \ IMAGES=foreground.png \
background.png \ background.png \
panel.png \ panel.png \
pickups.png \
mpanel.png \ mpanel.png \
mpanelOrig.png \ mpanelOrig.png \
sprite_pig-0.png \ sprite_pig-0.png \
@@ -117,6 +118,9 @@ out/background.bin: assets/background.png
out/panel.bin: assets/panel.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 $(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 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 $(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

+13 -14
View File
@@ -1,17 +1,16 @@
000 153 238 255 000 153 238 255
051 136 136 255 071 112 076 000
058 175 154 255
255 255 255 255 255 255 255 255
255 238 187 255 156 235 234 255
255 255 221 255 255 235 173 255
068 187 170 255
000 034 051 255 000 034 051 255
170 238 238 255 042 118 117 255
255 221 000 255 232 173 135 255
238 187 153 255 154 174 135 255
255 136 000 255 071 218 199 255
000 068 119 255 250 102 011 255
085 221 204 255 255 226 011 255
255 000 064 255 025 138 157 255
170 187 153 255 251 000 050 255
255 255 204 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

+2 -2
View File
@@ -116,8 +116,8 @@ LINESIZE equ BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH
PANEL_BIT_DEPTH equ 4 PANEL_BIT_DEPTH equ 4
PANEL_LIVES_X equ 218 PANEL_LIVES_X equ 236
PANEL_PLAYER1_X equ 192 PANEL_PLAYER1_X equ 214
PANEL_COLUMNS_REMAINING_X equ 100 PANEL_COLUMNS_REMAINING_X equ 100
PANEL_SCORE_X equ 29 PANEL_SCORE_X equ 29
+6 -3
View File
@@ -24,6 +24,7 @@
xdef startForegroundMapPtr xdef startForegroundMapPtr
xdef startPathwayMapPtr xdef startPathwayMapPtr
xdef frameCount
xdef moving xdef moving
xdef itemsMapOffset xdef itemsMapOffset
xdef itemsMapEndPtr xdef itemsMapEndPtr
@@ -97,6 +98,7 @@ Reset:
move.l playerXColumnLastSafe,playerXColumn move.l playerXColumnLastSafe,playerXColumn
jsr PreRenderColumnsRemaining jsr PreRenderColumnsRemaining
jsr RenderPlayerScore jsr RenderPlayerScore
jsr ResetPickups
move.l startForegroundMapPtr,foregroundMapPtr move.l startForegroundMapPtr,foregroundMapPtr
move.l startPathwayMapPtr,pathwayMapPtr move.l startPathwayMapPtr,pathwayMapPtr
@@ -252,6 +254,8 @@ GameLoop:
jsr PlayNextSound jsr PlayNextSound
jsr PrepareItemSpriteData jsr PrepareItemSpriteData
jsr FlashPickup
bra GameLoop bra GameLoop
@@ -303,13 +307,11 @@ Update:
rts rts
RevealPathway: RevealPathway:
PlaySound Whoosh
move.w #50,pathwayFadeCount move.w #50,pathwayFadeCount
jsr InstallTilePalette jsr InstallTilePalette
rts rts
FreezeScrolling: FreezeScrolling:
PlaySound Whoosh
move.w #150,freezeCountdownCounter move.w #150,freezeCountdownCounter
move.w #0,moving move.w #0,moving
rts rts
@@ -317,6 +319,7 @@ FreezeScrolling:
InitialiseNewGame: InitialiseNewGame:
jsr InitialiseItems jsr InitialiseItems
jsr InitialisePlayer jsr InitialisePlayer
jsr InitialisePickups
jsr InstallNextLevel jsr InstallNextLevel
bra Reset bra Reset
@@ -508,6 +511,7 @@ stopScrolling:
PostMissedTile: PostMissedTile:
jsr InitialisePickups
lea livesCounterText,a0 lea livesCounterText,a0
jsr DecrementCounter jsr DecrementCounter
bra Reset bra Reset
@@ -1085,7 +1089,6 @@ stopScrollingPending:
dc.w 0 dc.w 0
freezeCountdownCounter: freezeCountdownCounter:
dc.w 0 dc.w 0
startUserstack: startUserstack:
ds.b $1000 ; size of stack ds.b $1000 ; size of stack
userstack: userstack:
+8 -4
View File
@@ -82,15 +82,18 @@ DetectItemCollisions:
rts rts
.arrowCollision: .arrowCollision:
bsr DeleteItemSprite bsr DeleteItemSprite
jsr SpriteEnableAuto ;; jsr SpriteEnableAuto
jsr PickupArrow
rts rts
.clockCollision: .clockCollision:
bsr DeleteItemSprite bsr DeleteItemSprite
jsr FreezeScrolling ;; jsr FreezeScrolling
jsr PickupClock
rts rts
.eyeCollision: .eyeCollision:
bsr DeleteItemSprite bsr DeleteItemSprite
jsr RevealPathway ;; jsr RevealPathway
jsr PickupEye
rts rts
.skip: .skip:
add.l #ITEM_STRUCT_SIZE,a1 add.l #ITEM_STRUCT_SIZE,a1
@@ -489,4 +492,5 @@ __nextPlayerBonus:
dc.l 0 dc.l 0
align 4 align 4
+5 -5
View File
@@ -8,17 +8,17 @@
</tileset> </tileset>
<layer name="foreground" width="100" height="8"> <layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY= eJwLZGBgsGLEjtlpIDeK8WM7YNgxAbEYFhokV4lHDpc+y0Hgr6GKtXCEKYgmV240PsjHhPIHOXlnND7Ix6B0vhtPHlg+mj/oignlga2j9QddMaE6Al/eGc0f1MfSeNqmtJAbxfgxAO5ipn8=
</data> </data>
</layer> </layer>
<layer name="pathway" width="100" height="8" visible="0"> <layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxjYBgFo2AUkAvOA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfsAFWAcw7EF+RXc7N9Q9yOkEHXCjieHzAyxMsYXRXTxy6PaQEk4gfSB7YXF4HosacvLAYwbK4poYgCts0f0Pi5/vWOSQ/Y8cDvjswSYHswMGJJHYjxmIz4+geJZnxO0XSgCt4wSWRpHtA/lbHkc8wfyKbgZIDJlGz1cwMWx5jpJww5ePcfmFUgAzd6DrFloBUsMNOTwkh2F4jCQAAEy5K70= eJxjZxgFo2AUkAseA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfiDGTmSaHgBkD7rbuaF2n2fA7RZuNDFWPO6F+Q9bGN3FI4duDz47sOkD2QuLw/NY1JCTB0B5h5K4JgbgClt0/8Pi5zsWOWT/I4cDPnuwycHsgAFJJPZjBuLzIyie5Rlx+4UQwJc/aB0nsDSKbB/IDfI44gnmV3QzQGLINHq+golhy3PkhhsI4MvHuPxCCBDKO+h1zHADpIYbcnhIDsPwGEkAAMreL30=
</data> </data>
</layer> </layer>
<layer name="items" width="100" height="8" visible="0"> <layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWE8FOLCmQpuJNcMYvQFE1ADC2NiwpqUuKMFCCHT7migPh8qu9uFCPNw2UmMXhBAD+sARkx5mJoAEuKRXOBKhNm+QyDP4gIg/6G7n1B4ehARJ0MJuOFwsx8WcVxqiQHYzKPUzFGACfxHw3PEAACaNwuB eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWEcPQTiwpkKbiTXDGL0BRNQA4sLYuKElLijBQgh025QOvKhsrtdiDAPl53E6AWBUDR1AWh85PgIICEeyQWuRJjtOwTyLC4A8h+6+wmFpwcRcTKUgBsON/thEcellhiAzTxKzSQVRA3B+CEV+I8AP44CCAAABPMMCg==
</data> </data>
</layer> </layer>
</map> </map>
+216
View File
@@ -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"
+18 -2
View File
@@ -25,6 +25,7 @@
xdef playerLevelPausePixels xdef playerLevelPausePixels
xdef playerLevelMissPixels xdef playerLevelMissPixels
xdef spriteCurrentPathwayTile
PLAYER_INSTALL_COLOR_PALETTE equ 0 PLAYER_INSTALL_COLOR_PALETTE equ 0
PLAYER_SPRITE_DATA equ 4 PLAYER_SPRITE_DATA equ 4
@@ -40,6 +41,7 @@ ResetPlayer:
move.w #PATHWAY_CONFIG_FREE,pathwayLastConfig move.w #PATHWAY_CONFIG_FREE,pathwayLastConfig
move.w #0,pathwayMissPending move.w #0,pathwayMissPending
move.l #0,foregroundPlayerTileAddress
bsr SpriteDisableAuto bsr SpriteDisableAuto
move.w #0,spritePlayerFallingAnimation move.w #0,spritePlayerFallingAnimation
@@ -192,6 +194,11 @@ ProcessJoystick:
beq .skip beq .skip
.autoMoveDisabled: .autoMoveDisabled:
btst.b #0,joystick
beq .joystickNotPressed
jsr UsePickup
.joystickNotPressed:
cmp.b #3,joystickpos cmp.b #3,joystickpos
bne .notRight bne .notRight
PlayerMoveRight PlayerMoveRight
@@ -212,7 +219,6 @@ ProcessJoystick:
rts rts
SpriteEnableAuto: SpriteEnableAuto:
PlaySound Whoosh
CompareScore SCORE_ARROW_SUBTRACTION CompareScore SCORE_ARROW_SUBTRACTION
ble .toZero ble .toZero
AddToScore SCORE_ARROW_SUBTRACTION AddToScore SCORE_ARROW_SUBTRACTION
@@ -413,7 +419,7 @@ CheckPlayerMiss:
GetNextAutoMove: GetNextAutoMove:
move.w spriteCurrentPathwayTile,d0 move.w spriteCurrentPathwayTile,d0
lsr.w #4,d0 lsr.w #4,d0 ; light and dark colored tiles
cmp.w #$708,d0 cmp.w #$708,d0
beq .horizontal beq .horizontal
@@ -427,6 +433,16 @@ GetNextAutoMove:
beq .topRight beq .topRight
cmp.w #$618,d0 cmp.w #$618,d0
beq .vertical 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 bra .skip
.horizontal: .horizontal:
cmp.w #PLAYER_MOVE_RIGHT,spriteLastMove cmp.w #PLAYER_MOVE_RIGHT,spriteLastMove