new items, scoring
@@ -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
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,4 @@
|
||||
000 000 000 255
|
||||
248 093 013 255
|
||||
255 255 016 255
|
||||
041 034 055 255
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,4 @@
|
||||
000 000 000 255
|
||||
007 035 098 255
|
||||
025 138 157 255
|
||||
039 233 255 255
|
||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 690 B After Width: | Height: | Size: 2.8 KiB |
@@ -85,7 +85,6 @@ backgroundMap:
|
||||
include "out/background-map.s"
|
||||
dc.w $FFFF
|
||||
|
||||
|
||||
backgroundOnscreen:
|
||||
dc.l backgroundBitplanes1
|
||||
backgroundOffscreen:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||