new items, scoring

This commit is contained in:
alpine9000
2016-05-22 15:58:26 +10:00
parent 54d70e7221
commit 512f333f1b
28 changed files with 531 additions and 281 deletions
+25 -6
View File
@@ -70,15 +70,18 @@ IMAGES=foreground.png \
sprite_fallingTank-4.png \
sprite_bee-0.png\
sprite_bee-1.png\
sprite_eye-0.png\
sprite_clock-0.png\
font8x8.png\
font8x85.png\
splash.png\
splashSave.png\
baloonMask.png
baloonMask.png\
countdown.png
IMAGEDATA=$(addprefix out/, $(IMAGES:.png=.bin))
VASM_EXTRA_ARGS=-DTIMING_TEST=0 -DSFX=1 -DBALOON_BOB=1 -DMAX_P61_SIZE=$(MAX_P61_SIZE) -allmp
VASM_EXTRA_ARGS=-DSFX=1 -DBALOON_BOB=1 -DMAX_P61_SIZE=$(MAX_P61_SIZE) -allmp
LINKER_OPTIONS=-T link.script.x
@@ -114,6 +117,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/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
out/mpanel.bin: assets/mpanel.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/mpanel --use-palette=assets/mpanel.pal
@@ -146,6 +152,12 @@ out/sprite_coin%.bin: out/sprite_coin%.png
out/sprite_bee%.bin: out/sprite_bee%.png
$(IMAGECON) --input $< $(IMAGECON_ARGS) --colors 4 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-palette --output-png --output-copperlist --output out/sprite_bee$* --palette-offset 20 --use-palette=assets/bee.pal
out/sprite_eye%.bin: out/sprite_eye%.png
$(IMAGECON) --input $< $(IMAGECON_ARGS) --colors 4 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-palette --output-png --output-copperlist --output out/sprite_eye$* --palette-offset 20 --use-palette=assets/eye.pal
out/sprite_clock%.bin: out/sprite_clock%.png
$(IMAGECON) --input $< $(IMAGECON_ARGS) --colors 4 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-palette --output-png --output-copperlist --output out/sprite_clock$* --palette-offset 20 --use-palette=assets/clock.pal
out/sprite_arrow%.bin: out/sprite_arrow%.png
$(IMAGECON) --input $< $(IMAGECON_ARGS) --colors 4 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-palette --output-png --output-copperlist --output out/sprite_arrow$* --palette-offset 20 --use-palette=assets/arrow.pal
@@ -185,6 +197,14 @@ out/sprite_coin%.png: assets/assets.png
out/sprite_bee%.png: assets/assets.png
../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_bee --width=16 --height=15 --rows=1 --cols=2 --dx=16 --dy=16 --x=192 --y=96
.SECONDARY:
out/sprite_eye%.png: assets/assets.png
../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_eye-0.png --width=16 --height=15 --rows=1 --cols=1 --dx=16 --dy=16 --x=192 --y=64
.SECONDARY:
out/sprite_clock%.png: assets/assets.png
../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_clock-0.png --width=16 --height=15 --rows=1 --cols=1 --dx=16 --dy=16 --x=192 --y=80
.SECONDARY:
out/sprite_arrow%.png: assets/assets.png
../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_arrow --width=16 --height=15 --rows=1 --cols=4 --dx=16 --dy=16 --x=192 --y=160
@@ -268,6 +288,8 @@ out/main.o: $(IMAGEDATA) \
out/level8_foreground-map.s\
out/level9_foreground-map.s\
out/level10_foreground-map.s\
out/level11_foreground-map.s\
out/level12_foreground-map.s\
out/background-map.s Makefile link.script.x\
out/menu-palette.s\
out/paletteA_playarea_fade.s out/paletteA_flags_fade.s out/paletteA_foreground-palette-table.s out/paletteA_tileFade.s\
@@ -275,8 +297,5 @@ out/main.o: $(IMAGEDATA) \
out/paletteC_playarea_fade.s out/paletteC_flags_fade.s out/paletteC_foreground-palette-table.s out/paletteC_tileFade.s\
out/panelFade.s out/jump.raw out/falling.raw out/chaching.raw out/whoosh.raw out/yay.raw
setuptiming:
$(eval VASM_EXTRA_ARGS=-DTIMING_TEST=1 -DSFX=1)
echo $(VASM_EXTRA_ARGS)
timing: setuptiming all
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

+4
View File
@@ -0,0 +1,4 @@
000 000 000 255
248 093 013 255
255 255 016 255
041 034 055 255
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+4
View File
@@ -0,0 +1,4 @@
000 000 000 255
007 035 098 255
025 138 157 255
039 233 255 255
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 B

After

Width:  |  Height:  |  Size: 2.8 KiB

-1
View File
@@ -85,7 +85,6 @@ backgroundMap:
include "out/background-map.s"
dc.w $FFFF
backgroundOnscreen:
dc.l backgroundBitplanes1
backgroundOffscreen:
+166
View File
@@ -0,0 +1,166 @@
DetectBeeCollisions:
bsr DetectDownBeeCollisions
bsr DetectUpBeeCollisions
rts
VerticalScrollBees:
bsr VerticalScrollDownBee
bsr VerticalScrollUpBee
rts
VerticalScrollDownBee:
lea itemBeeDown,a1
cmp.w #0,ITEM_SPRITE(a1)
beq .done
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
lsl.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d4
move.w ITEM_Y_OFFSET(a1),d0
add.w d0,d4
cmp.w #1,beeDownMovingDown
bne .up
.down:
add.w #1,d0
bra .c1
.up:
sub.w #1,d0
.c1:
move.w d0,ITEM_Y_OFFSET(a1)
cmp.w #(ITEM_SPRITE_VSTART+(16*5))<<ITEM_Y_OFFSET_SHIFT_CONVERT,d4
bge .beeAtBottom
cmp.w #0,d0
ble .beeAtTop
bra .done
.beeAtTop:
move.w #1,beeDownMovingDown
bra .done
.beeAtBottom:
move.w #0,beeDownMovingDown
.done:
rts
VerticalScrollUpBee:
lea itemBeeUp,a1
cmp.w #0,ITEM_SPRITE(a1)
beq .done
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
lsl.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d4
move.w ITEM_Y_OFFSET(a1),d0
sub.w d0,d4
cmp.w #1,beeUpMovingDown
bne .up
.down:
add.w #1,d0
bra .c1
.up:
sub.w #1,d0
.c1:
move.w d0,ITEM_Y_OFFSET(a1)
cmp.w #(ITEM_SPRITE_VSTART)<<ITEM_Y_OFFSET_SHIFT_CONVERT,d4
ble .beeAtBottom
cmp.w #0,d0
ble .beeAtTop
bra .done
.beeAtTop:
move.w #1,beeUpMovingDown
bra .done
.beeAtBottom:
move.w #0,beeUpMovingDown
.done:
rts
DetectDownBeeCollisions:
lea itemBeeDown,a1
cmp.w #0,ITEM_SPRITE_ENABLED(a1)
beq .skip
cmp.w #0,ITEM_SPRITE(a1)
beq .skip
move.w spriteX,d2
move.w ITEM_X(a1),d3
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
move.w ITEM_Y_OFFSET(a1),d5
lsr.l #ITEM_Y_OFFSET_SHIFT_CONVERT,d5
add.w d5,d4
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels
add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d3
move.w spriteY,d5
;; d2 = playerX pixels
;; d3 = beeX pixels
;; d4 = beeY pixels
;; d5 = player Y pixels
move.w d3,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d2,d6 ; r1.x >= r2.x+w
ble .skip
move.w d2,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d3,d6 ; r1.x+w <= r2.x
ble .skip
move.w d4,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d5,d6 ; r1.y >= r2.y+h
ble .skip
move.w d5,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d4,d6 ; r1.y+h < r2.y
ble .skip
bsr DeleteItemSprite
jmp BigBang
.skip:
rts
DetectUpBeeCollisions:
lea itemBeeUp,a1
cmp.w #0,ITEM_SPRITE_ENABLED(a1)
beq .skip
cmp.w #0,ITEM_SPRITE(a1)
beq .skip
move.w spriteX,d2
move.w ITEM_X(a1),d3
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
move.w ITEM_Y_OFFSET(a1),d5
lsr.l #ITEM_Y_OFFSET_SHIFT_CONVERT,d5
sub.w d5,d4
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels
add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d3
move.w spriteY,d5
;; d2 = playerX pixels
;; d3 = beeX pixels
;; d4 = beeY pixels
;; d5 = player Y pixels
move.w d3,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d2,d6 ; r1.x >= r2.x+w
ble .skip
move.w d2,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d3,d6 ; r1.x+w <= r2.x
ble .skip
move.w d4,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d5,d6 ; r1.y >= r2.y+h
ble .skip
move.w d5,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d4,d6 ; r1.y+h < r2.y
ble .skip
bsr DeleteItemSprite
jmp BigBang
.skip:
rts
+22 -7
View File
@@ -56,12 +56,14 @@ ITEM_SPRITE_BYTES equ (ITEM_SPRITE_NUM_VERTICAL_SPRITES*ITEM_SPRITE_VERTICAL_B
ITEM_SINGLE_SPRITE_BYTES equ (ITEM_SPRITE_VERTICAL_BYTES)+4
ITEM_SPRITE_VSTART equ 149
ITEM_NUM_BEES equ 2
ITEM_NUM_SLOTS equ ((8*3)+ITEM_NUM_BEES)
ITEM_NUM_NON_ANIMATED_ITEMS equ 2
ITEM_NUM_SLOTS equ ((8*3)+ITEM_NUM_BEES+ITEM_NUM_NON_ANIMATED_ITEMS)
ITEM_SPRITE_HORIZONTAL_START_PIXELS equ 32
ITEM_SPRITE_Y_COLLISION_OFFSET equ 1
ITEM_SPRITE_BEE_DOWN_INDEX equ 24
ITEM_SPRITE_BEE_UP_INDEX equ 25
;ITEM_SPRITE_EYE_INDEX equ 26
;ITEM_SPRITE_BEE_DOWN_INDEX equ 24
;ITEM_SPRITE_BEE_UP_INDEX equ 25
ITEM_SPRITE_ARROW_INDEX equ 16
ITEM_SPRITE_COINB_INDEX equ 8
@@ -79,12 +81,14 @@ ITEM_STRUCT_MULU_SHIFT equ 4
ITEM_NUM_COIN_ANIMS equ 7
ITEM_Y_OFFSET_SHIFT_CONVERT equ 1
BEE_COLLIDE_SIZE equ 5
BEE_COLLIDE_SIZE equ 8
BIGBANG_ANIM_DELAY equ 4
BIGBANG_POST_DELAY equ 15
SCORE_COINS_ADDITION equ 100
SCORE_ARROW_SUBTRACTION equ 500
SCORE_MAX equ 99999
SCREEN_WIDTH equ 320
SCREEN_HEIGHT equ 256
@@ -100,8 +104,6 @@ BACKGROUND_TILEMAP_WIDTH equ 128
BACKGROUND_TILEMAP_WIDTH_BYTES equ BACKGROUND_TILEMAP_WIDTH/8
BACKGROUND_TILEMAP_WIDTH_WORDS equ BACKGROUND_TILEMAP_WIDTH_BYTES/2
SCREEN_BIT_DEPTH equ 3
SCREEN_RES equ 8 ; 8=lo resolution, 4=hi resolution
@@ -110,4 +112,17 @@ RASTER_Y_START equ $2c
RASTER_X_STOP equ RASTER_X_START+SCREEN_WIDTH
RASTER_Y_STOP equ RASTER_Y_START+256
IMAGESIZE equ BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*(SCREEN_HEIGHT)
LINESIZE equ BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH
LINESIZE equ BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH
PANEL_BIT_DEPTH equ 4
PANEL_LIVES_X equ 218
PANEL_PLAYER1_X equ 192
PANEL_COLUMNS_REMAINING_X equ 100
PANEL_SCORE_X equ 29
COUNTDOWN_BITMAP_WIDTH equ 80
COUNTDOWN_BLIT_WIDTH_BYTES equ 2
COUNTDOWN_BLIT_WIDTH_WORDS equ 1
LIVES_PLAYER_BONUS equ 5000
-4
View File
@@ -49,10 +49,6 @@ copperListBpl2Ptr:
dc.w BPLCON0,(SCREEN_BIT_DEPTH*2<<12)|COLOR_ON|DBLPF
if TIMING_TEST=1
dc.l $fffffffe
endif
playAreaCopperPalettePtr1:
;; the foreground color values are just place holders and will be poked with the correcr value
+17 -2
View File
@@ -2,7 +2,8 @@
xdef ResetCounter
xdef IncrementCounter
xdef DecrementCounter
xdef RenderNumber4
xdef RenderNumber5
xdef RenderNumber4
RenderCounter:
;; d0.w x position
@@ -25,6 +26,19 @@ RenderNumber4:
jsr DrawText8
rts
RenderNumber5:
;; d0.l number
;; d1.w x position
move.l d1,d3
move.l #5,d2
bsr ToAscii
move.l a0,a1
lea panel,a0
move.w #20,d1
move.w d3,d0
jsr DrawText8
rts
ResetCounter:
move.l #"0000",(a0)
rts
@@ -83,6 +97,7 @@ ToAscii:
lea staticBuffer,a0
move.l a0,a1
add.l d2,a0
move.b #0,(a0)
moveq #10,d2
.loop:
divu.w d2,d0
@@ -103,6 +118,6 @@ ToAscii:
rts
staticBuffer:
dc.b "0000"
dc.b "00000"
dc.b 0
+86 -28
View File
@@ -3,6 +3,8 @@
xdef LevelComplete
xdef BigBang
xdef InstallTilePalette
xdef RevealPathway
xdef FreezeScrolling
xdef pathwayRenderPending
xdef pathwayPlayerTileAddress
@@ -25,6 +27,7 @@
xdef moving
xdef itemsMapOffset
xdef livesCounterText
xdef livesCounterShortText
xdef panel
xdef nextLevelInstaller
@@ -83,11 +86,11 @@ MainMenu:
Reset:
move.w #0,stopScrollingPending
move.w #218,d0
move.w #PANEL_LIVES_X,d0
lea livesCounterShortText,a1
jsr RenderCounter
lea player1Text,a1
move.w #192,d0
move.w #PANEL_PLAYER1_X,d0
jsr RenderCounter
move.l playerXColumnLastSafe,playerXColumn
jsr RenderPlayerScore
@@ -105,6 +108,8 @@ Reset:
move.l tileFade,tileFadePtr
move.l #0,foregroundScrollX
move.l #-1,frameCount
move.w #0,freezeCountdownCounter
bsr RenderFreezeCountdown
bsr InitAnimPattern
jsr ResetBigBangPattern
jsr BlueFill
@@ -185,22 +190,14 @@ GameLoop:
lea skippedFramesCounterText,a0
jsr IncrementCounter
lea skippedFramesCounterText,a1
if 0
move.w #110,d0
if 1
move.w #275,d0
jsr RenderCounter
endif
.noSkippedFrames:
add.l #1,frameCount
jsr WaitVerticalBlank
if TIMING_TEST=1
move.l #4000,d0
.looooo:
dbra d0,.looooo
move.w #$0f0,COLOR00(a6)
endif
bsr HoriScrollPlayfield
jsr SwitchBuffers
move.l foregroundScrollX,d0
@@ -222,6 +219,8 @@ GameLoop:
bra .notMoving
.setMoving:
move.w #0,movingCounter
cmp.w #0,freezeCountdownCounter
bgt .notMoving
move.w #1,moving
.notMoving:
@@ -240,11 +239,6 @@ GameLoop:
jsr RenderPathway
.dontRenderPathway:
if TIMING_TEST=1
move.w #$f00,COLOR00(a6)
move.w #$f00,COLOR02(a6)
endif
jsr PlayNextSound
bra GameLoop
@@ -254,6 +248,11 @@ Update:
jsr VerticalScrollBees
jsr DetectBeeCollisions
cmp.w #0,freezeCountdownCounter
beq .notFrozen
bsr UpdateFreezeCountdown
.notFrozen:
.backgroundUpdates:
add.l #BACKGROUND_SCROLL_PIXELS,backgroundScrollX
move.l frameCount,d0
@@ -291,6 +290,17 @@ Update:
add.w #1,pathwayFadeCount
rts
RevealPathway:
PlaySound Whoosh
move.w #50,pathwayFadeCount
jsr InstallTilePalette
rts
FreezeScrolling:
PlaySound Whoosh
move.w #150,freezeCountdownCounter
move.w #0,moving
rts
InitialiseNewGame:
jsr InitialiseItems
@@ -803,6 +813,43 @@ InstallFlagGreyPalette:
rts
UpdateFreezeCountdown:
sub.w #1,freezeCountdownCounter
RenderFreezeCountdown:
move.w freezeCountdownCounter,d0
cmp.w #0,d0
beq .skip
ext.l d0
divu.w #50,d0
add.w #2,d0
bsr BlitCountdown
rts
.skip:
move.w #0,d0
bsr BlitCountdown
rts
BlitCountdown:
WaitBlitter
;; d0.w countdown digit
lsl.w #1,d0 ; *2 because I was lazy (look at image)
move.w #BC0F_SRCB|BC0F_SRCC|BC0F_DEST|$ca,BLTCON0(a6)
lea countdownImages,a0
move.l #panel+(SCREEN_WIDTH_BYTES/2)+(SCREEN_WIDTH_BYTES*PANEL_BIT_DEPTH*18),a1
adda.w d0,a0
move.w #4<<12,BLTCON1(a6)
move.w #$0ff0,BLTALWM(a6)
move.w #$ffff,BLTAFWM(a6)
move.w #$ffff,BLTADAT(a6) ; preload source mask so only BLTA?WM mask is used
move.w #(COUNTDOWN_BITMAP_WIDTH/8)-COUNTDOWN_BLIT_WIDTH_BYTES,BLTBMOD(a6)
move.w #SCREEN_WIDTH_BYTES-COUNTDOWN_BLIT_WIDTH_BYTES,BLTCMOD(a6)
move.w #SCREEN_WIDTH_BYTES-COUNTDOWN_BLIT_WIDTH_BYTES,BLTDMOD(a6)
move.l a0,BLTBPTH(a6) ;source graphic top left corner
move.l a1,BLTCPTH(a6) ;destination top left corner
move.l a1,BLTDPTH(a6) ;destination top left corner
move.w #(12*PANEL_BIT_DEPTH)<<6|(COUNTDOWN_BLIT_WIDTH_WORDS),BLTSIZE(a6)
rts
;; variable prefix
;; level name
;; frames before pathway starts fading
@@ -812,18 +859,22 @@ InstallFlagGreyPalette:
;; level complete name
;; palette
Level 1,"STAY ON THE PATHWAYS!",100,2*2,12,10,"LEVEL 1",A,21,0
Level 2,"COLLECT COINS!",100,2*2,12,10,"LEVEL 2",A,21,1
Level 3,"ARROWS ARE YOUR FRIEND!",100,2*2,12,10,"LEVEL 3",A,21,2
Level 2,"COLLECT COINS!",100,2*2,12,10,"LEVEL 2",A,21,0
Level 3,"ARROWS COST 500 POINTS!",100,2*2,12,10,"LEVEL 3",A,21,0
Level 4,"WATCH OUT FOR BEES!",100,2*2,12,10,"LEVEL 4",A,21,0
Level 5,"REMEMBER THE PATHWAYS BEFORE THEY FADE!",75,2*2,12,10,"LEVEL 5",A,21,0
Level 6,"CLOCKS FREEZE THE BOARD",200,2*2,12,10,"LEVEL 6",A,21,0
Level 7,"EYES SHOW THE BOARD",100,2*2,12,10,"LEVEL 7",A,21,0
Level 8,"LET'S TRY A LONGER LEVEL!",75,2*2,12,10,"PHEW!, LEVEL 8",B,98,2
Level 9,"HAVING FUN YET?",70,2*2,12,10,"LEVEL 9",B,98,2
Level 6,"LET'S TRY A LONGER LEVEL!",75,2*2,12,10,"PHEW!, LEVEL 6",B,98,2
Level 7,"HAVING FUN YET?",70,2*2,12,10,"LEVEL 7",B,98,2
Level 10,"GIDDY UP!",50,4*2,8,6,"GETTING FASTER!, LEVEL 10",C,98,2
Level 11,"LETS GO?",25,4*2,8,6,"LEVEL 11",C,98,2
Level 12,"WHAT? WHAT?!",50,4*2,8,6,"NICE! LEVEL 10",A,98,1
Level 8,"GIDDY UP!",50,4*2,8,6,"GETTING FASTER!, LEVEL 8",C,98,2
Level 9,"LETS GO?",25,4*2,8,6,"LEVEL 9",C,98,2
Level 10,"WHAT? WHAT?!",50,4*2,8,6,"NICE! LEVEL 10",A,98,1
;; Level 10,"WHAT? WHAT?!",15,4*2,8,6,"YOU'RE GOOD, LEVEL 10",C
;; Level 7,"LEVEL 3",50,4*2,8,6,"3",C
@@ -860,6 +911,8 @@ foregroundTilemap:
incbin "out/foreground.bin"
panel:
incbin "out/panel.bin"
countdownImages:
incbin "out/countdown.bin"
itemsMapOffset:
dc.l level1ItemsMap-level1ForegroundMap
foregroundScrollPixels:
@@ -950,14 +1003,17 @@ levelInstallers:
dc.l InstallLevel3
dc.l InstallLevel4
dc.l InstallLevel5
dc.l InstallLevel6
dc.l InstallLevel7
dc.l InstallLevel7
dc.l InstallLevel8
dc.l InstallLevel9
dc.l InstallLevel10
dc.l InstallLevel10
dc.l InstallLevel11
dc.l InstallLevel12
dc.l 0
nextLevelInstaller:
dc.l levelInstallers
@@ -1028,6 +1084,8 @@ livesCounterShortText:
align 4
stopScrollingPending:
dc.w 0
freezeCountdownCounter:
dc.w 0
startUserstack:
ds.b $1000 ; size of stack
+75 -198
View File
@@ -1,6 +1,7 @@
include "includes.i"
xdef score
xdef __score
xdef __nextPlayerBonus
xdef SetupItemSpriteData
xdef ScrollItemSprites
@@ -14,13 +15,10 @@
xdef VerticalScrollBees
xdef DetectBeeCollisions
xdef RenderScore
DetectBeeCollisions:
bsr DetectDownBeeCollisions
bsr DetectUpBeeCollisions
rts
include "bees.i"
DeleteItemSprite:
move.w #0,ITEM_SPRITE(a1)
move.w #0,ITEM_X(a1)
@@ -29,76 +27,6 @@ DeleteItemSprite:
rts
VerticalScrollBees:
bsr VerticalScrollDownBee
bsr VerticalScrollUpBee
rts
VerticalScrollDownBee:
lea item25,a1
cmp.w #0,ITEM_SPRITE(a1)
beq .done
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
lsl.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d4
move.w ITEM_Y_OFFSET(a1),d0
add.w d0,d4
cmp.w #1,beeDownMovingDown
bne .up
.down:
add.w #1,d0
bra .c1
.up:
sub.w #1,d0
.c1:
move.w d0,ITEM_Y_OFFSET(a1)
cmp.w #(ITEM_SPRITE_VSTART+(16*5))<<ITEM_Y_OFFSET_SHIFT_CONVERT,d4
bge .beeAtBottom
cmp.w #0,d0
ble .beeAtTop
bra .done
.beeAtTop:
move.w #1,beeDownMovingDown
bra .done
.beeAtBottom:
move.w #0,beeDownMovingDown
.done:
rts
VerticalScrollUpBee:
lea item26,a1
cmp.w #0,ITEM_SPRITE(a1)
beq .done
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
lsl.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d4
move.w ITEM_Y_OFFSET(a1),d0
sub.w d0,d4
cmp.w #1,beeUpMovingDown
bne .up
.down:
add.w #1,d0
bra .c1
.up:
sub.w #1,d0
.c1:
move.w d0,ITEM_Y_OFFSET(a1)
cmp.w #(ITEM_SPRITE_VSTART)<<ITEM_Y_OFFSET_SHIFT_CONVERT,d4
ble .beeAtBottom
cmp.w #0,d0
ble .beeAtTop
bra .done
.beeAtTop:
move.w #1,beeUpMovingDown
bra .done
.beeAtBottom:
move.w #0,beeUpMovingDown
.done:
rts
ScrollItemSprites:
move.w #ITEM_NUM_SLOTS-1,d1
lea item1,a1
@@ -140,130 +68,47 @@ DetectItemCollisions:
add.w #ITEM_SPRITE_Y_COLLISION_OFFSET,d2
cmp.w d2,d4
bne .skip
cmp.l #itemClock,a1
beq .clockCollision
cmp.l #itemEye,a1
beq .eyeCollision
cmpi.w #ITEM_SPRITE_ARROW_INDEX,ITEM_SPRITE(a1)
bge .arrowCollision
.coinCollision:
bsr DeleteItemSprite
add.l #SCORE_COINS_ADDITION,score
AddToScore SCORE_COINS_ADDITION
bsr RenderScore
PlaySound Chaching
rts
rts
.arrowCollision:
bsr DeleteItemSprite
jsr SpriteEnableAuto
rts
.clockCollision:
bsr DeleteItemSprite
jsr FreezeScrolling
rts
.eyeCollision:
bsr DeleteItemSprite
jsr RevealPathway
rts
.skip:
add.l #ITEM_STRUCT_SIZE,a1
dbra d1,.loop
rts
DetectDownBeeCollisions:
lea item25,a1
cmp.w #0,ITEM_SPRITE_ENABLED(a1)
beq .skip
cmp.w #0,ITEM_SPRITE(a1)
beq .skip
move.w spriteX,d2
move.w ITEM_X(a1),d3
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
move.w ITEM_Y_OFFSET(a1),d5
lsr.l #ITEM_Y_OFFSET_SHIFT_CONVERT,d5
add.w d5,d4
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels
add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d3
move.w spriteY,d5
;; d2 = playerX pixels
;; d3 = beeX pixels
;; d4 = beeY pixels
;; d5 = player Y pixels
move.w d3,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d2,d6 ; r1.x >= r2.x+w
ble .skip
move.w d2,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d3,d6 ; r1.x+w <= r2.x
ble .skip
move.w d4,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d5,d6 ; r1.y >= r2.y+h
ble .skip
move.w d5,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d4,d6 ; r1.y+h < r2.y
ble .skip
bsr DeleteItemSprite
jmp BigBang
.skip:
rts
DetectUpBeeCollisions:
lea item26,a1
cmp.w #0,ITEM_SPRITE_ENABLED(a1)
beq .skip
cmp.w #0,ITEM_SPRITE(a1)
beq .skip
move.w spriteX,d2
move.w ITEM_X(a1),d3
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
move.w ITEM_Y_OFFSET(a1),d5
lsr.l #ITEM_Y_OFFSET_SHIFT_CONVERT,d5
sub.w d5,d4
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels
add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d3
move.w spriteY,d5
;; d2 = playerX pixels
;; d3 = beeX pixels
;; d4 = beeY pixels
;; d5 = player Y pixels
move.w d3,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d2,d6 ; r1.x >= r2.x+w
ble .skip
move.w d2,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d3,d6 ; r1.x+w <= r2.x
ble .skip
move.w d4,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d5,d6 ; r1.y >= r2.y+h
ble .skip
move.w d5,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d4,d6 ; r1.y+h < r2.y
ble .skip
bsr DeleteItemSprite
jmp BigBang
.skip:
rts
RenderScore:
move.l score,d0
move.w #31,d1
jsr RenderNumber4
move.l __score,d0
move.w #PANEL_SCORE_X,d1
jsr RenderNumber5
rts
InitialiseItems:
move.l #0,score
bsr RenderScore
ResetScore
bsr RenderScore
ResetItems:
lea item1,a1
move.w #ITEM_NUM_SLOTS-1,d1
@@ -299,7 +144,7 @@ PrepareItemSpriteData:
bne .enableSprites
rts
.enableSprites:
.enableSprites:
move.l #ITEM_NUM_SLOTS-1,d0
.loop:
bsr _SetupItemSpriteData
@@ -349,10 +194,8 @@ _SetupItemSpriteData:
lsr.l #3,d0
cmp.l #item25,a1
beq .singleSprite
cmp.l #item26,a1
beq .singleSprite
cmp.l #itemEye,a1
bge .singleSprite
mulu.w #ITEM_SPRITE_BYTES*2,d0
add.w spriteBufferIndex,d0
bra .continueSingleSprite
@@ -371,15 +214,13 @@ _SetupItemSpriteData:
lsl.w #ITEM_SPRITE_VERTICAL_BYTES_SHIFT_CONVERT,d2
move.w d2,d3
cmp.l #item25,a1
beq .bee
cmp.l #item26,a1
beq .bee
cmp.l #itemEye,a1
bge .singleSprite2
bra .continueBee
.bee:
.singleSprite2:
move.w #0,d3
.continueBee:
adda.w d3,a0 ; ITEM_Y or 0 for bee
@@ -401,7 +242,8 @@ _SetupItemSpriteData:
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d0
lsr.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d1
cmp.b #ITEM_SPRITE_BEE_UP_INDEX,d4
cmp.l #itemBeeUp,a1
bne .notBeeUp
sub.w d1,d0
bra .afterNotBeeUp
@@ -417,10 +259,15 @@ _SetupItemSpriteData:
.noYOffset:
.c1:
sub.l d3,a0 ;#1*ITEM_SPRITE_VERTICAL_BYTES,a0 or 0 for bee
cmp.b #ITEM_SPRITE_BEE_UP_INDEX,d4
cmp.l #itemEye,a1
beq .eyeSprite
cmp.l #itemClock,a1
beq .clockSprite
cmp.l #itemBeeUp,a1
beq .beeUpSprite
cmp.b #ITEM_SPRITE_BEE_DOWN_INDEX,d4
cmp.l #itemBeeDown,a1
beq .beeDownSprite
cmp.b #ITEM_SPRITE_ARROW_INDEX,d4
bge .arrowSprite
@@ -432,6 +279,18 @@ _SetupItemSpriteData:
.coinBSprite:
move.l a0,sprite5Pointer
bra .done
.eyeSprite:
cmp.w #0,ITEM_X(a1)
beq .spriteIsNotEnabled
move.l a0,sprite2Pointer
bsr InstallArrowPalette
bra .spriteIsNotEnabled
.clockSprite:
cmp.w #0,ITEM_X(a1)
beq .spriteIsNotEnabled
move.l a0,sprite2Pointer
bsr InstallClockPalette
bra .spriteIsNotEnabled
.arrowSprite:
cmp.w #0,ITEM_X(a1)
beq .done
@@ -474,7 +333,6 @@ _SetupItemSpriteData:
RenderItemSprite:
;; d2.l - y tile index ?
movem.l d2-d3,-(sp)
move.l foregroundScrollX,d1
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d1 ; convert to pixels
andi.w #$f,d1
@@ -524,6 +382,11 @@ InstallArrowPalette:
rts
InstallClockPalette:
include "out/sprite_clock-0-palette.s"
rts
itemSpritesEnabled:
dc.l 0
spriteBufferIndex:
@@ -571,11 +434,18 @@ beeDownMovingDown:
ItemControl item23,spriteArrow1,0
ItemControl item24,spriteArrow1,0
;; eye
ItemControl itemEye,spriteEye,1
;; clock
ItemControl itemClock,spriteClock,1
;; beeDown
ItemControl item25,spriteBeeDown1,1
ItemControl itemBeeDown,spriteBeeDown1,1
;; beeUp
ItemControl item26,spriteBeeUp1,1
ItemControl itemBeeUp,spriteBeeUp1,1
ItemSprite spriteCoinA1,sprite_coin-0.bin
ItemSprite spriteCoinA2,sprite_coin-0.bin
@@ -610,10 +480,17 @@ beeDownMovingDown:
ItemSingleSprite spriteBeeUp1,sprite_bee-0.bin
ItemSingleSprite spriteBeeUp2,sprite_bee-1.bin
ItemSingleSprite spriteEye,sprite_eye-0.bin
ItemSingleSprite spriteClock,sprite_clock-0.bin
nextSpriteSlot:
dc.w 0
score:
__score:
dc.l 0
align 4
__nextPlayerBonus:
dc.l 0
align 4
+3 -3
View File
@@ -8,17 +8,17 @@
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNSG4rmXLkmolPXyWZ+mghR45bLKHxooVDHkSD5OrxyOHTN1Tk6O2/3TjkYPExEOmH3DwwnN1JbP4YDnK40uRgcidy/lhIx3QwKjd88sfyYewWWHxIM+Bug9FCbjC2MQeTHAC1RFwJ
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAs9EHJbydRXOYj8QI5bLKHxooVDHkSD5OrxyOHTN1Tk6O2/3TjkYPExEGmZXH1DJa+SI0ds/hgq6Y6cNDmY8ipy/lhIx3QwKjcw+YMWcsuHsVtg8SHNgLsNRgu5wdjGHExyAIlbW78=
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVLsOwjAMTJA6dUdi6hcw9f8/gIkvYOoXMLESqz3peo1NqJhQT4qK4tf57JDSgX/Cq5zb8q3Z9uZsgVf3W9zLeQa2a/5Nnb0AhxZ0xa8v55G2nGt3hnM5J6oz5nU9i7M7TyODzWLIc33DlGb/SNtPPXg2y3kJ9NC90FzKCTxrvSu0die+Vnukuz77nKM+jL+nO7ia3loPHGAbyDYt9TxtkYv3/ZHWc1UMtGu196h7YcBv+PO84e/tqgHzq+lnPYK/9s/9QFvdc8SprZOZMiKbNwvlpL0+l1zgon3C5mnE/wMG3hnlOZGN9YHN01r5eDNDLHK1AnGepoDW7Z25tcyC6zLwjqGVvjno7b0TvL0aL/SgOT1orhqQr+bHux/p0JqTNcH3krdxXj2Nj/jyXcQdGiH3gQOGNxaubFI=
eJztVbsOgzAMDJWY2Ct16hd06v9/ABNfwMQXdGItVnPS9eSYIKHSgZMiRHK2z49ASidOxJgref2yns32sy0YlvVo6jX9E6B9DddlXYLzNvtATV8FXkexpvThDfnZ7dAL1tIG/kwn90tjQxNQymeLHo7NczfT3s3RrFrZzqBaDagt8pocn14849me2Xn187SMKe75Pfsxn559nzkcj+dpzu9d882PZs2rSU858n3V3nMsD6Xa8Nwh1xo7T4PCanwXDvprPr18S/VmvcYZ8zu+BdwvYKIzaBnpDFrQmyhHjcM5RjOpYD40qJ1qVnvdi+7hGtAL6NU7h3qXZkDzVB7yrQHf49J/rlTvvYD6HwWvvwzu0690rmk6cTzeGchSEw==
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVUsOhDAI1aON36rzceXC3v8exsw0IaRMobTqwrcxEXh8HmJR3Lg61vL7rEq//UG8d3Bxc8DvbFD9URiV/XDy1YlmtjJ59nxDYp1cD1Nm/TX8kjmH9h37SvxjoNXrieK5u3IkmkBN5mffZ22Ar7s5LbBbdI+k+ljg33piU9y5F8HhyxfLhXmlulO1hOZpkB1+Izn+Ef84F0a+d2RNnZDbCvNw+ClIdx7OsFdqlELjD8GhuV0Upxbaed3Ihw2MGxHn
eJxjYBgFQwU4MWIXd8Qhjq4vgIC6gQa4/DeQ9jnT2U0g+zwJ2BlMopvo7QdCgFL3EErv6GpJUU8OIBRfwwG4EPCjB1QeFNYeSGphZY4rkrwjWnlESfy4YtFLy3IOm30DZS4uPYTC0wNNHlucUBMMVL3jRmN7KTGf1DSPHIbuFPprsLcDqA0oDa9RQDsAAFEDDEE=
</data>
</layer>
</map>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="100" height="8" tilewidth="16" tileheight="16" nextobjectid="1">
<tileset firstgid="1" name="foreground" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="../assets/assets.png" width="320" height="256"/>
</tileset>
<tileset firstgid="321" name="items" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="../assets/items.png" trans="000000" width="320" height="256"/>
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvqMtZQuNFC4c8iB5scrvJ1Fc/BPwAiw9K4no0ndM/fywnMx3QOw+QK4fPf/jyFbXdSY38MSpHvXIDOX/QOw/QO50PJncSyh/SDLjbYLSQG4xtzMEkBwB88FuB
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVTkOwjAQtJGo0iOlyguo8v8HpOIFqXhBqrRohUcZDT4DEkhkmgV7dzx7gXMH/gXrtwU0YHLv6719QkjgWXbcMSyf0Tt39dvZHM40vvMbt/lrHbQ2E33eq6XkP/in3pQWcC6JO7PnyvdKORhPl+DCHec4RnxT8Ya7aIButcyF2qBWNe+kfHJ1Un7tiXGhBifhhs7Bv9YwN8eo50q+ep/TnOoX17k0G+aLee0SFujDd+SqWpAr58y7FuuvznIOHI/czV6CJtWJ/PpIXAzcQ32vFIt8UvVGT2rmlvVw3Wr3HO9Z3rCdcMR6iDO2sR0HmJP3owWIw5zE3sOMql5o5t8j/R+IxTBv36iXOXl3WjGXXXZzau9rsTfuwO/hAV5wUwI=
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztlUsOgzAMRMnRKIVCyycSahfc/yCARCQTxfGHFLHgbZBgPHbGArLs5ko8jLwmZ9ZYI+vhdO/tOilmwzzPIkW/Nd9YxoXZazX+0KMhPD4Hz1QkyETrwakbCY3LmJM13N0T0bfIfUzvQ+1LCzYXF/995ZxHm0W9PC+3rGugtV4d3IcV7NFRMrSwJ0ffEZrvyd8sCev5/Pl/jF1BQjuRUBE1Gs8U/fvAfWrWGCE/raf0PyHN8BXR/3sfRxkuPt9NOma/VBMK
</data>
</layer>
</map>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" renderorder="right-down" width="100" height="8" tilewidth="16" tileheight="16" nextobjectid="1">
<tileset firstgid="1" name="foreground" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="../assets/assets.png" width="320" height="256"/>
</tileset>
<tileset firstgid="321" name="items" tilewidth="16" tileheight="16" tilecount="320" columns="20">
<image source="../assets/items.png" trans="000000" width="320" height="256"/>
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNSG4rmXLkmolPXyWZ+mghR45bLKHxooVDHkSD5OrxyOHTN1Tk6O2/3TjkYPExEOmH3DwwnN1JbP4YDnK40uRgcidy/lhIx3QwKjd88sfyYewWWHxIM+Bug9FCbjC2MQeTHAC1RFwJ
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVLsOwjAMTJA6dUdi6hcw9f8/gIkvYOoXMLESqz3peo1NqJhQT4qK4tf57JDSgX/Cq5zb8q3Z9uZsgVf3W9zLeQa2a/5Nnb0AhxZ0xa8v55G2nGt3hnM5J6oz5nU9i7M7TyODzWLIc33DlGb/SNtPPXg2y3kJ9NC90FzKCTxrvSu0die+Vnukuz77nKM+jL+nO7ia3loPHGAbyDYt9TxtkYv3/ZHWc1UMtGu196h7YcBv+PO84e/tqgHzq+lnPYK/9s/9QFvdc8SprZOZMiKbNwvlpL0+l1zgon3C5mnE/wMG3hnlOZGN9YHN01r5eDNDLHK1AnGepoDW7Z25tcyC6zLwjqGVvjno7b0TvL0aL/SgOT1orhqQr+bHux/p0JqTNcH3krdxXj2Nj/jyXcQdGiH3gQOGNxaubFI=
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVUsOhDAI1aON36rzceXC3v8exsw0IaRMobTqwrcxEXh8HmJR3Lg61vL7rEq//UG8d3Bxc8DvbFD9URiV/XDy1YlmtjJ59nxDYp1cD1Nm/TX8kjmH9h37SvxjoNXrieK5u3IkmkBN5mffZ22Ar7s5LbBbdI+k+ljg33piU9y5F8HhyxfLhXmlulO1hOZpkB1+Izn+Ef84F0a+d2RNnZDbCvNw+ClIdx7OsFdqlELjD8GhuV0Upxbaed3Ihw2MGxHn
</data>
</layer>
</map>
+2 -2
View File
@@ -8,12 +8,12 @@
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY=
eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFyYUB2BL++M5g/qY2k8bVNayI1i/BgAGV2lCw==
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjYBgFo2AUkAvOA/FHJHoUDCxgZWRg4GZE0CeBYsaMA+2q4Q90gWH8HYfcXSCWZ0TQMPCYAZF3QPpB8aQ7GldUA6DwxhUnuAAoTiRH44BmABQno+l8FIwCCAAA8cMPBA==
eJxjYBgFo2AUkAvOA/FHJHoUDCxgZWRg4GZE0CeBYsaMA+2q4Q90gWH8HYfcXSCWZ0TQMPCYAZF3QPpB8aQ7GldUA6DwxhUnuAAoTiRH44BmABQn6OkcOe2P5oFRMJIAALyTD/Y=
</data>
</layer>
<layer name="items" width="100" height="8">
+1 -1
View File
@@ -18,7 +18,7 @@
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjYBgFQwFEMeKWc8QjNwooB6DwBWFvHOHsjCQejUMNvvgbBaQBWHonJt2D1LiMhj3dAHqcBDBiysPUBKDFo+9oPFEFEMoXHkTEidtoXAwo8B8N/1EwAgAAjF8HYw==
eJxjYBgFQwHEMOKWc8QjNwooB6DwBWFvHOHsPBr+dAWw9E5MugepccGiLnY0zmgC0OMkgBFTHqYmAC0efUfjhCqAUL7wICJO3EbjYkCB/2j4j4IRAADc/AcM
</data>
</layer>
</map>
+1 -1
View File
@@ -18,7 +18,7 @@
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjYBgFQx04Mg60C4Y3gIWvN45wdkYSjx6NC5oDWHwQk+5BalxG44RuAD1OAhgx5WFqAtDi0Xc0nqgCCOULDyLixG00LgYU+I+G/ygYAQAADNsGaw==
eJxjYBgFQx04Mg60C4Y3gIWvN45wdh4Nf7oCUtI7SK3LaPzQDaDHTQCWsIepgcnB+L6j8UQVQCh/eKDJg9Sjx4nbaFwMKPAfDf9RMAIAAC6NBYs=
</data>
</layer>
</map>
+3 -3
View File
@@ -8,17 +8,17 @@
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvqMtZQuNFC4c8iB5scrvJ1Fc/BPwAiw9K4no0ndM/fywnMx3QOw+QK4fPf/jyFbXdSY38MSpHvXIDOX/QOw/QO50PJncSyh/SDLjbYLSQG4xtzMEkBwB88FuB
eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirWA4bcbR9hq4QhvQnKj8UE+piR/VI7mD6pjQnlg+Wj+oCserT8GFya3jhjNH7TB0njaprSQG8X4MQAt/aRm
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVTkOwjAQtJGo0iOlyguo8v8HpOIFqXhBqrRohUcZDT4DEkhkmgV7dzx7gXMH/gXrtwU0YHLv6719QkjgWXbcMSyf0Tt39dvZHM40vvMbt/lrHbQ2E33eq6XkP/in3pQWcC6JO7PnyvdKORhPl+DCHec4RnxT8Ya7aIButcyF2qBWNe+kfHJ1Un7tiXGhBifhhs7Bv9YwN8eo50q+ep/TnOoX17k0G+aLee0SFujDd+SqWpAr58y7FuuvznIOHI/czV6CJtWJ/PpIXAzcQ32vFIt8UvVGT2rmlvVw3Wr3HO9Z3rCdcMR6iDO2sR0HmJP3owWIw5zE3sOMql5o5t8j/R+IxTBv36iXOXl3WjGXXXZzau9rsTfuwO/hAV5wUwI=
eJxjYBgFQwmcBOLvWOhRQFugy4g9nLmB4qyMmPQooD24y4AZJ9jigns0PugGQHFizAjJL8hi8owIGpY/HgPxRyA+zwBRj65vFNAWwMJdHinMQXEiORoHAwKw5Z1RMAqGMwAALrkScQ==
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztlUsOgzAMRMnRKIVCyycSahfc/yCARCQTxfGHFLHgbZBgPHbGArLs5ko8jLwmZ9ZYI+vhdO/tOilmwzzPIkW/Nd9YxoXZazX+0KMhPD4Hz1QkyETrwakbCY3LmJM13N0T0bfIfUzvQ+1LCzYXF/995ZxHm0W9PC+3rGugtV4d3IcV7NFRMrSwJ0ffEZrvyd8sCev5/Pl/jF1BQjuRUBE1Gs8U/fvAfWrWGCE/raf0PyHN8BXR/3sfRxkuPt9NOma/VBMK
eJxjYBgFo2AU4AOOjBDszYhd3hmH+CigDXBkRKUJgejR+KEbQI+TACxhD1MTgBaPvqPxRBVAbL5AVo8eJ26jcTGgwH80/EfBCAAAPxcFWQ==
</data>
</layer>
</map>
+3 -3
View File
@@ -8,17 +8,17 @@
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAs9EHJbydRXOYj8QI5bLKHxooVDHkSD5OrxyOHTN1Tk6O2/3TjkYPExEGmZXH1DJa+SI0ds/hgq6Y6cNDmY8ipy/lhIx3QwKjcw+YMWcsuHsVtg8SHNgLsNRgu5wdjGHExyAIlbW78=
eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirWA4bcbR9hq4QhvQnKj8UE+piR/VI7mD6pjQnlg+Wj+oCserT8GFya3jhjNH7TB0njaprSQG8X4MQAt/aRm
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVbsOgzAMDJWY2Ct16hd06v9/ABNfwMQXdGItVnPS9eSYIKHSgZMiRHK2z49ASidOxJgref2yns32sy0YlvVo6jX9E6B9DddlXYLzNvtATV8FXkexpvThDfnZ7dAL1tIG/kwn90tjQxNQymeLHo7NczfT3s3RrFrZzqBaDagt8pocn14849me2Xn187SMKe75Pfsxn559nzkcj+dpzu9d882PZs2rSU858n3V3nMsD6Xa8Nwh1xo7T4PCanwXDvprPr18S/VmvcYZ8zu+BdwvYKIzaBnpDFrQmyhHjcM5RjOpYD40qJ1qVnvdi+7hGtAL6NU7h3qXZkDzVB7yrQHf49J/rlTvvYD6HwWvvwzu0690rmk6cTzeGchSEw==
eJxjYBgFQwmcBOLvWOhRQFugy4g9nLmB4qyMmPQooD24y4AZJ9jigns0PugGQHFizAjJL8hi8owIGpY/HgPxRyA+zwBRj65vFNAegOoPeaQwB8WJ5GgcDBgAhf9oHhgFIwUAALbNEg8=
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjYBgFQwU4MWIXd8Qhjq4vgIC6gQa4/DeQ9jnT2U0g+zwJ2BlMopvo7QdCgFL3EErv6GpJUU8OIBRfwwG4EPCjB1QeFNYeSGphZY4rkrwjWnlESfy4YtFLy3IOm30DZS4uPYTC0wNNHlucUBMMVL3jRmN7KTGf1DSPHIbuFPprsLcDqA0oDa9RQDsAAFEDDEE=
eJxjYBgFo2AU4AOOjBDszYhd3hmH+CigDXBkRKVHweAB6HESgMaPYkSoCUCLR9/R+KQKIDVfOGKJE7fRuBhQ4D8a/qNgBAAAqqgFWA==
</data>
</layer>
</map>
+3 -3
View File
@@ -8,17 +8,17 @@
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAs9EHJbydRXOYj8QI5bLKHxooVDHkSD5OrxyOHTN1Tk6O2/3TjkYPExEGmZXH1DJa+SI0ds/hgq6Y6cNDmY8ipy/lhIx3QwKjcw+YMWcsuHsVtg8SHNgLsNRgu5wdjGHExyAIlbW78=
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvqMtZQuNFC4c8iB5scrvJ1Fc/BPwAiw9K4no0ndM/fywnMx3QOw+QK4fPf/jyFbXdSY38MSpHvXIDOX/QOw/QO50PJncSyh/SDLjbYLSQG4xtzMEkBwB88FuB
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVbsOgzAMDJWY2Ct16hd06v9/ABNfwMQXdGItVnPS9eSYIKHSgZMiRHK2z49ASidOxJgref2yns32sy0YlvVo6jX9E6B9DddlXYLzNvtATV8FXkexpvThDfnZ7dAL1tIG/kwn90tjQxNQymeLHo7NczfT3s3RrFrZzqBaDagt8pocn14849me2Xn187SMKe75Pfsxn559nzkcj+dpzu9d882PZs2rSU858n3V3nMsD6Xa8Nwh1xo7T4PCanwXDvprPr18S/VmvcYZ8zu+BdwvYKIzaBnpDFrQmyhHjcM5RjOpYD40qJ1qVnvdi+7hGtAL6NU7h3qXZkDzVB7yrQHf49J/rlTvvYD6HwWvvwzu0690rmk6cTzeGchSEw==
eJztVTkOwjAQtJGo0iOlyguo8v8HpOIFqXhBqrRohUcZDT4DEkhkmgV7dzx7gXMH/gXrtwU0YHLv6719QkjgWXbcMSyf0Tt39dvZHM40vvMbt/lrHbQ2E33eq6XkP/in3pQWcC6JO7PnyvdKORhPl+DCHec4RnxT8Ya7aIButcyF2qBWNe+kfHJ1Un7tiXGhBifhhs7Bv9YwN8eo50q+ep/TnOoX17k0G+aLee0SFujDd+SqWpAr58y7FuuvznIOHI/czV6CJtWJ/PpIXAzcQ32vFIt8UvVGT2rmlvVw3Wr3HO9Z3rCdcMR6iDO2sR0HmJP3owWIw5zE3sOMql5o5t8j/R+IxTBv36iXOXl3WjGXXXZzau9rsTfuwO/hAV5wUwI=
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjYBgFQwU4MWIXd8Qhjq4vgIC6gQa4/DeQ9jnT2U0g+zwJ2BlMopvo7QdCgFL3EErv6GpJUU8OIBRfwwG4EPCjB1QeFNYeSGphZY4rkrwjWnlESfy4YtFLy3IOm30DZS4uPYTC0wNNHlucUBMMVL3jRmN7KTGf1DSPHIbuFPprsLcDqA0oDa9RQDsAAFEDDEE=
eJztlUsOgzAMRMnRKIVCyycSahfc/yCARCQTxfGHFLHgbZBgPHbGArLs5ko8jLwmZ9ZYI+vhdO/tOilmwzzPIkW/Nd9YxoXZazX+0KMhPD4Hz1QkyETrwakbCY3LmJM13N0T0bfIfUzvQ+1LCzYXF/995ZxHm0W9PC+3rGugtV4d3IcV7NFRMrSwJ0ffEZrvyd8sCev5/Pl/jF1BQjuRUBE1Gs8U/fvAfWrWGCE/raf0PyHN8BXR/3sfRxkuPt9NOma/VBMK
</data>
</layer>
</map>
+3 -3
View File
@@ -8,17 +8,17 @@
</tileset>
<layer name="foreground" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvqMtZQuNFC4c8iB5scrvJ1Fc/BPwAiw9K4no0ndM/fywnMx3QOw+QK4fPf/jyFbXdSY38MSpHvXIDOX/QOw/QO50PJncSyh/SDLjbYLSQG4xtzMEkBwB88FuB
eJxjZ2BgsGLEjtlH5eguZwekmYBYDAs9EHJbydRXOYj8QI5bLKHxooVDHkSD5OrxyOHTN1Tk6O2/3TjkYPExEGmZXH1DJa+SI0ds/hgq6Y6cNDmY8ipy/lhIx3QwKjcw+YMWcsuHsVtg8SHNgLsNRgu5wdjGHExyAIlbW78=
</data>
</layer>
<layer name="pathway" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztVTkOwjAQtJGo0iOlyguo8v8HpOIFqXhBqrRohUcZDT4DEkhkmgV7dzx7gXMH/gXrtwU0YHLv6719QkjgWXbcMSyf0Tt39dvZHM40vvMbt/lrHbQ2E33eq6XkP/in3pQWcC6JO7PnyvdKORhPl+DCHec4RnxT8Ya7aIButcyF2qBWNe+kfHJ1Un7tiXGhBifhhs7Bv9YwN8eo50q+ep/TnOoX17k0G+aLee0SFujDd+SqWpAr58y7FuuvznIOHI/czV6CJtWJ/PpIXAzcQ32vFIt8UvVGT2rmlvVw3Wr3HO9Z3rCdcMR6iDO2sR0HmJP3owWIw5zE3sOMql5o5t8j/R+IxTBv36iXOXl3WjGXXXZzau9rsTfuwO/hAV5wUwI=
eJztVbsOgzAMDJWY2Ct16hd06v9/ABNfwMQXdGItVnPS9eSYIKHSgZMiRHK2z49ASidOxJgref2yns32sy0YlvVo6jX9E6B9DddlXYLzNvtATV8FXkexpvThDfnZ7dAL1tIG/kwn90tjQxNQymeLHo7NczfT3s3RrFrZzqBaDagt8pocn14849me2Xn187SMKe75Pfsxn559nzkcj+dpzu9d882PZs2rSU858n3V3nMsD6Xa8Nwh1xo7T4PCanwXDvprPr18S/VmvcYZ8zu+BdwvYKIzaBnpDFrQmyhHjcM5RjOpYD40qJ1qVnvdi+7hGtAL6NU7h3qXZkDzVB7yrQHf49J/rlTvvYD6HwWvvwzu0690rmk6cTzeGchSEw==
</data>
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJztlUsOgzAMRMnRKIVCyycSahfc/yCARCQTxfGHFLHgbZBgPHbGArLs5ko8jLwmZ9ZYI+vhdO/tOilmwzzPIkW/Nd9YxoXZazX+0KMhPD4Hz1QkyETrwakbCY3LmJM13N0T0bfIfUzvQ+1LCzYXF/995ZxHm0W9PC+3rGugtV4d3IcV7NFRMrSwJ0ffEZrvyd8sCev5/Pl/jF1BQjuRUBE1Gs8U/fvAfWrWGCE/raf0PyHN8BXR/3sfRxkuPt9NOma/VBMK
eJxjYBgFQwU4MWIXd8Qhjq4vgIC6gQa4/DeQ9jnT2U0g+zwJ2BlMopvo7QdCgFL3EErv6GpJUU8OIBRfwwG4EPCjB1QeFNYeSGphZY4rkrwjWnlESfy4YtFLy3IOm30DZS4uPYTC0wNNHlucUBMMVL3jRmN7KTGf1DSPHIbuFPprsLcDqA0oDa9RQDsAAFEDDEE=
</data>
</layer>
</map>
+39 -8
View File
@@ -6,26 +6,26 @@ PlaySound: macro
KillSound: macro
if SFX=1
cmp.w #1,dontKillSound
beq .\@skip
move.w #(DMAF_AUD3),DMACON(a6)
move.w #1,AUD3PER(a6)
move.w #2,AUD3LEN(a6) ; set the empty sound for the next sample to be played
move.l #emptySound,AUD3LCH(a6)
lea $dff006,a0
move.w #4,d2
.nTimes:
.\@nTimes:
move.w (a0),d0
lsr.w #8,d0
.loop:
.\@loop:
move.l (a0),d1
lsr.w #8,d1
cmp.w d0,d1
beq .loop
dbra d2,.nTimes
beq .\@loop
dbra d2,.\@nTimes
move.w #(DMAF_AUD3|DMAF_SETCLR),DMACON(a6)
.\@skip:
endif
endm
@@ -177,4 +177,35 @@ diskmodule\1:
incbin \2
cnop 0,512
enddiskmodule\1:
endm
endm
AddToScore: macro
add.l #\1,__score
move.l __score,d0
cmp.l __nextPlayerBonus,d0
blt .\@skip
movem.l d0-a6,-(sp)
PlaySound Yay
lea livesCounterText,a0
jsr IncrementCounter
lea livesCounterShortText,a1
move.w #PANEL_LIVES_X,d0
add.l #LIVES_PLAYER_BONUS,__nextPlayerBonus
jsr RenderCounter
movem.l (sp)+,d0-a6
.\@skip:
cmp.l #SCORE_MAX,__score
blt .\@skip2
move.l #0,__score
move.l #LIVES_PLAYER_BONUS,__nextPlayerBonus
.\@skip2:
endm
ResetScore: macro
move.l #0,__score
move.l #LIVES_PLAYER_BONUS,__nextPlayerBonus
endm
CompareScore: macro
cmp.l #\1,__score
endm
+5
View File
@@ -4,8 +4,13 @@
StartMusic:
.wait: ; In case there is currently fade in progress
jsr PlayNextSound
cmp.w #0,P61_Master
beq .skip
cmp.w #64,P61_Master
blt .wait
cmp.w currentModule,d0
beq .skip
cmp.w #-1,currentModule
+11 -4
View File
@@ -212,7 +212,15 @@ ProcessJoystick:
SpriteEnableAuto:
PlaySound Whoosh
CompareScore SCORE_ARROW_SUBTRACTION
ble .toZero
AddToScore SCORE_ARROW_SUBTRACTION
bra .done
.toZero:
ResetScore
.done:
move.w #1,spriteAutoMoveEnabled
bsr RenderPlayerScore
rts
SpriteDisableAuto:
@@ -561,13 +569,12 @@ SelectNextPlayerSprite:
UpdatePlayerScore:
add.l #10,score
AddToScore 10
RenderPlayerScore:
jsr RenderScore
move.l playerXColumn,d0
move.w #110,d1
jsr RenderNumber4
move.w #PANEL_COLUMNS_REMAINING_X,d1
jsr RenderNumber5
rts
+10 -4
View File
@@ -29,9 +29,10 @@ PlayNextSound:
xdef PlayFallingSound
xdef PlayChachingSound
xdef PlayWhooshSound
xdef PlayYaySound
xdef PlayYaySound
PlayJumpSound:
move.w #0,dontKillSound
lea jump(pc),a1
move.l a1,AUD3LCH(a6)
move.w #123,AUD3PER(a6)
@@ -42,6 +43,7 @@ PlayJumpSound:
PlayWhooshSound:
KillSound
move.w #0,dontKillSound
lea whoosh,a1
move.l a1,AUD3LCH(a6)
move.w #256,AUD3PER(a6)
@@ -53,6 +55,7 @@ PlayWhooshSound:
PlayFallingSound:
KillSound
move.w #1,dontKillSound
lea falling(pc),a1
move.l a1,AUD3LCH(a6)
move.w #256,AUD3PER(a6)
@@ -62,7 +65,8 @@ PlayFallingSound:
rts
PlayChachingSound:
KillSound
KillSound
move.w #0,dontKillSound
lea chaching,a1
move.l a1,AUD3LCH(a6)
move.w #256,AUD3PER(a6)
@@ -72,7 +76,8 @@ PlayChachingSound:
rts
PlayYaySound:
KillSound
KillSound
move.w #1,dontKillSound
lea yay,a1
move.l a1,AUD3LCH(a6)
move.w #423,AUD3PER(a6)
@@ -105,8 +110,9 @@ endYay:
align 2
emptySound:
dc.l 0
dontKillSound:
dc.w 0
endif
fadeMusic: ; 0 - no fade, 1 - fade out 2, fade in
dc.w 0