diff --git a/028.bs/.gitignore b/028.bs/.gitignore index 0eb0112..cba566b 100644 --- a/028.bs/.gitignore +++ b/028.bs/.gitignore @@ -1,3 +1,4 @@ assets/P61.placeholder +assets/P61.song1 bin save \ No newline at end of file diff --git a/028.bs/Makefile b/028.bs/Makefile index 3a3ded6..9562aca 100644 --- a/028.bs/Makefile +++ b/028.bs/Makefile @@ -75,7 +75,7 @@ IMAGES=foreground.png \ IMAGEDATA=$(addprefix out/, $(IMAGES:.png=.bin)) -VASM_EXTRA_ARGS=-DTIMING_TEST=0 -DSFX=0 +VASM_EXTRA_ARGS=-DTIMING_TEST=0 -DSFX=1 LINKER_OPTIONS=-T link.script.x @@ -138,13 +138,13 @@ out/sprite_fallingTank-%.bin: out/sprite_fallingTank-%.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_fallingTank-$* --palette-offset 16 --use-palette=assets/tank.pal out/sprite_coin%.bin: out/sprite_coin%.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_coin$* --palette-offset 20 --use-palette=assets/coin.pal + $(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_coin$* --palette-offset 24 --use-palette=assets/coin.pal 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 24 --use-palette=assets/bee.pal + $(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_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 24 --use-palette=assets/arrow.pal + $(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 .SECONDARY: @@ -244,7 +244,18 @@ out/chaching.raw: assets/chaching.wav out/yay.raw: assets/yay.wav sox -v 2.0 assets/yay.wav -c 1 -r 4000 -b 8 out/yay.raw +out/credits_copperlist.i: credits_copper.c + gcc credits_copper.c -o out/credits_copper + out/credits_copper > out/credits_copperlist.i + +out/credits.o: out/credits_copperlist.i + out/main.o: $(IMAGEDATA) \ + out/level1_foreground-map.s\ + out/level2_foreground-map.s\ + out/level3_foreground-map.s\ + out/level4_foreground-map.s\ + out/level5_foreground-map.s\ out/levelA_foreground-map.s out/levelB_foreground-map.s out/levelC_foreground-map.s\ out/background-map.s Makefile link.script.x\ out/menu-palette.s\ diff --git a/028.bs/P6112-Options.i b/028.bs/P6112-Options.i index 1782015..8391268 100644 --- a/028.bs/P6112-Options.i +++ b/028.bs/P6112-Options.i @@ -5,7 +5,7 @@ P61mode =2 ;Try other modes ONLY IF there are no Fxx commands >= 20. ;; --- options common to all P61modes --- -usecode=$9409;$8000 ;CHANGE! to the USE hexcode from P61con for a big +usecode=$800940D;$9409;$8000 ;CHANGE! to the USE hexcode from P61con for a big ;CPU-time gain! (See module usecodes at end of source) ;Multiple songs, single playroutine? Just "OR" the ;usecodes together! diff --git a/028.bs/credits.s b/028.bs/credits.s index a530b68..cd8bc2f 100644 --- a/028.bs/credits.s +++ b/028.bs/credits.s @@ -52,6 +52,7 @@ Credits: bsr RenderText jsr WaitVerticalBlank + jsr PlayNextSound ;; poke bitplane pointers lea foregroundBitplanes1,a1 lea copperListBplPtr(pc),a2 @@ -85,6 +86,7 @@ Credits: move.l a0,COP1LC(a6) jsr WaitForJoystick + PlaySound Jump rts @@ -109,37 +111,35 @@ RenderText: credits: - dc.b " BLOCKY SKIES" - dc.b 0 - dc.b " ------------" + dc.b " BLOCKY SKIES" dc.b 0 dc.b " " dc.b 0 - dc.b "GAME DESIGN - CHIPMUNK" + dc.b "GAME DESIGN CHIPMUNK" dc.b 0 - dc.b "GRAPHICS - CHIPMUNK" + dc.b " GRAPHICS CHIPMUNK" dc.b 0 - dc.b "MUSIC - Simone \"JMD\" Bernacchia" + dc.b " MUSIC Simone \"JMD\" Bernacchia" dc.b 0 - dc.b "CODE - ALPINE9000" + dc.b " CODE ALPINE9000" dc.b 0 - dc.b "LEVELS - CHIPMUNK&ALPINE9000" + dc.b " LEVELS CHIPMUNK & ALPINE9000" dc.b 0 - dc.b "TRACKLOADER - PHOTON/SCOOPEX" - dc.b 0 - dc.b "P6112 CODE - GURU&PHOTON/SCOOPEX" - dc.b 0 dc.b " " dc.b 0 - dc.b " THANKS" + dc.b " THANKS" dc.b 0 - dc.b " ------" + dc.b " " + dc.b 0 + dc.b "TRACKLOADER PHOTON/SCOOPEX" dc.b 0 - dc.b "WIN-UAE - TONI WILEN" + dc.b " P6112 CODE GURU & PHOTON/SCOOPEX" dc.b 0 - dc.b "FS-UAE - Frode Solheim" + dc.b " WIN-UAE TONI WILEN" dc.b 0 - dc.b "VASM/VLINK - PHX&Volker" + dc.b " FS-UAE Frode Solheim" + dc.b 0 + dc.b " VASM/VLINK PHX & Volker" align 4 copperList: copperListBplPtr: @@ -155,5 +155,6 @@ copperListBplPtr: dc.w BPL5PTH,0 dc.w BPL6PTL,0 dc.w BPL6PTH,0 + include "out/credits_copperlist.i" dc.l $fffffffe \ No newline at end of file diff --git a/028.bs/credits_copper.c b/028.bs/credits_copper.c new file mode 100644 index 0000000..c017d1a --- /dev/null +++ b/028.bs/credits_copper.c @@ -0,0 +1,20 @@ +#include + +int +main(int argc, char** argv) +{ + int line = 0x41; + + for (int row = 0; row < 15; row++) { + printf("\tdc.w $%02x07,$fffe\n\tdc.w COLOR06,$3ae\n", line++); + printf("\tdc.w $%02x07,$fffe\n\tdc.w COLOR06,$5ce\n", line++); + printf("\tdc.w $%02x07,$fffe\n\tdc.w COLOR06,$7dd\n", line++); + printf("\tdc.w $%02x07,$fffe\n\tdc.w COLOR06,$9ec\n", line++); + printf("\tdc.w $%02x07,$fffe\n\tdc.w COLOR06,$bea\n", line++); + printf("\tdc.w $%02x07,$fffe\n\tdc.w COLOR06,$de8\n", line++); + printf("\tdc.w $%02x07,$fffe\n\tdc.w COLOR06,$ec6\n", line++); + line += 3; + } + + return 0; +} diff --git a/028.bs/game1.s b/028.bs/game1.s index 1a632f2..7da51b9 100644 --- a/028.bs/game1.s +++ b/028.bs/game1.s @@ -791,10 +791,19 @@ InstallFlagGreyPalette: ;; pathway fading steps per frame (must be a factor of 64) ;; frames player pauses between each jump ;; frames after jump before player miss is checked - Level A,"LEVEL 1",100,2*2,12,10 - Level B,"LEVEL 2",100,2*2,12,10 - Level C,"LEVEL 3",50,4*2,8,6 - + ;; level complete name + ;; palette + Level 1,"STAY ON THE PATHWAYS!",100,2*2,12,10,"LEVEL 1",A + Level 2,"COLLECT COINS!",100,2*2,12,10,"LEVEL 2",A + Level 3,"ARROWS ARE YOUR FRIEND!",100,2*2,12,10,"LEVEL 3",A + Level 4,"WATCH OUT FOR BEES!",100,2*2,12,10,"LEVEL 4",A + Level 5,"REMEMBER THE PATHWAYS BEFORE THEY FADE!",75,2*2,12,10,"LEVEL 5",A + Level B,"LEVEL 2",100,2*2,12,10,"2",B + Level C,"LEVEL 3",50,4*2,8,6,"3",C + Palette A + Palette B + Palette C + include "copper.i" nullText: @@ -825,7 +834,7 @@ foregroundTilemap: panel: incbin "out/panel.bin" itemsMapOffset: - dc.l levelAItemsMap-levelAForegroundMap + dc.l level1ItemsMap-level1ForegroundMap foregroundScrollPixels: dc.l FOREGROUND_SCROLL_PIXELS bigBangIndex: @@ -909,7 +918,11 @@ deAnimIndexPattern: panelGreyPalette: include "out/panel-grey-table.s" levelInstallers: - dc.l InstallLevelA + dc.l InstallLevel1 + dc.l InstallLevel2 + dc.l InstallLevel3 + dc.l InstallLevel4 + dc.l InstallLevel5 dc.l InstallLevelB dc.l InstallLevelC dc.l 0 diff --git a/028.bs/items.s b/028.bs/items.s index 302d71a..725b608 100644 --- a/028.bs/items.s +++ b/028.bs/items.s @@ -408,27 +408,27 @@ _SetupItemSpriteData: cmp.b #ITEM_SPRITE_COINB_INDEX,d4 bge .coinBSprite .coinASprite: - move.l a0,sprite2Pointer + move.l a0,sprite4Pointer bra .done .coinBSprite: - move.l a0,sprite3Pointer + move.l a0,sprite5Pointer bra .done .arrowSprite: cmp.w #0,ITEM_X(a1) beq .done - move.l a0,sprite4Pointer + move.l a0,sprite2Pointer bsr InstallArrowPalette bra .done .beeDownSprite: cmp.w #0,ITEM_X(a1) beq .dontAnimateDownBee - move.l a0,sprite4Pointer + move.l a0,sprite2Pointer bsr InstallBeePalette bra .dontAnimateDownBee .beeUpSprite: cmp.w #0,ITEM_X(a1) beq .dontAnimateUpBee - move.l a0,sprite5Pointer + move.l a0,sprite3Pointer bsr InstallBeePalette bra .dontAnimateUpBee .dontAnimateDownBee: diff --git a/028.bs/level.i b/028.bs/level.i index e00940c..ee43067 100644 --- a/028.bs/level.i +++ b/028.bs/level.i @@ -6,10 +6,10 @@ InstallLevel\1: move.l #level\1PathwayMap,startPathwayMapPtr move.l #level\1ForegroundMap,foregroundMapPtr move.l #level\1PathwayMap,pathwayMapPtr - move.l #palette\1_playAreaPalette,playAreaPalette - move.l #palette\1_playareaFade,playareaFade - move.l #palette\1_flagsFade,flagsFade - move.l #palette\1_tileFade,tileFade + move.l #palette\8_playAreaPalette,playAreaPalette + move.l #palette\8_playareaFade,playareaFade + move.l #palette\8_flagsFade,flagsFade + move.l #palette\8_tileFade,tileFade move.w #\3,pathwayFadeTimerCount move.l #\4,pathwayFadeRate move.w #\5,playerLevelPausePixels @@ -38,12 +38,16 @@ level\1StartMessage: align 4 level\1CompleteMessage: - dc.b \2 + dc.b \7 dc.b " COMPLETE!" dc.b 0 align 4 + endm + + +Palette: macro palette\1_playAreaPalette: include "out/palette\1_foreground-palette-table.s" include "out/background-palette-table.s" diff --git a/028.bs/levelA_foreground.tmx b/028.bs/levelA_foreground.tmx new file mode 100644 index 0000000..02e8c52 --- /dev/null +++ b/028.bs/levelA_foreground.tmx @@ -0,0 +1,24 @@ + + + + + + + + + + + eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY= + + + + + eJxjYBgFo2AUkAvOA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfsAFWAcw7EF+RXc7N9Q9yOkEHXCjieHzAyxMsYXRXTxy6PaQEk4gfSB7YXF4HosacvLAYwbK4poYgCts0f0Pi5/vWOSQ/Y8cDvjswSYHswMGJJHYjxmIz4+geJZnxO0XSgCt4wSWRpHtA/lbHkc8wfyKbgZIDJlGz1cwMWx5jpJww5ePcfmFUgAzd6DrFloBUsMNOTwkh2F4jCQAAEy5K70= + + + + + eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWE8FOLCmQpuJNcMYvQFE1ADC2NiwpqUuKMFCCHT7migPh8qu9uFCPNw2UmMXhBAD+sARkx5mJoAEuKRXOBKhNm+QyDP4gIg/6G7n1B4ehARJ0MJuOFwsx8WcVxqiQHYzKPUzFGACfxHw3PEAACaNwuB + + + diff --git a/028.bs/levels/level1_foreground.tmx b/028.bs/levels/level1_foreground.tmx new file mode 100644 index 0000000..02e8c52 --- /dev/null +++ b/028.bs/levels/level1_foreground.tmx @@ -0,0 +1,24 @@ + + + + + + + + + + + eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY= + + + + + eJxjYBgFo2AUkAvOA7EuIwODMSMqPVDgIxFqTjLQx53I9nwnQR8xfsAFWAcw7EF+RXc7N9Q9yOkEHXCjieHzAyxMsYXRXTxy6PaQEk4gfSB7YXF4HosacvLAYwbK4poYgCts0f0Pi5/vWOSQ/Y8cDvjswSYHswMGJJHYjxmIz4+geJZnxO0XSgCt4wSWRpHtA/lbHkc8wfyKbgZIDJlGz1cwMWx5jpJww5ePcfmFUgAzd6DrFloBUsMNOTwkh2F4jCQAAEy5K70= + + + + + eJxjYBgFQx04Mg60C4gHTnR2KzXsA4UvsWE8FOLCmQpuJNcMYvQFE1ADC2NiwpqUuKMFCCHT7migPh8qu9uFCPNw2UmMXhBAD+sARkx5mJoAEuKRXOBKhNm+QyDP4gIg/6G7n1B4ehARJ0MJuOFwsx8WcVxqiQHYzKPUzFGACfxHw3PEAACaNwuB + + + diff --git a/028.bs/levels/level2_foreground.tmx b/028.bs/levels/level2_foreground.tmx new file mode 100644 index 0000000..1926cc2 --- /dev/null +++ b/028.bs/levels/level2_foreground.tmx @@ -0,0 +1,24 @@ + + + + + + + + + + + eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY= + + + + + eJxjYBgFo2AUEAPOA7EuIwPDdyxixoyYcqOAtoCVEZVGZ4PAXQZI3IwC2gJQ2peHhvNjKJ8QAKn7yICZh0bBwAFQnEiOxsEoGAWjgA4AAHrdCv0= + + + + + eJxjYBgFQx04Mg60C4Y3AIUvvjB2ZkRVOwpoC2BhTExYg9S4jMYJXYArlnwSgMZHzksBaPHoOxpPVAGE8oUHEXHiNhoXAwr8R8N/FIwAAABz8gaN + + + diff --git a/028.bs/levels/level3_foreground.tmx b/028.bs/levels/level3_foreground.tmx new file mode 100644 index 0000000..24b2a53 --- /dev/null +++ b/028.bs/levels/level3_foreground.tmx @@ -0,0 +1,24 @@ + + + + + + + + + + + eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirVwhCmIJlduND7Ix5Tkj8rR/EF1DErnu/HkgeWj+YOueLT+GFx4tP4YXFgaT9uUFnKjGD8GACo/pGY= + + + + + eJxjYBgFo2AUkAvOA/FHJHoUDCxgZWRg4GZE0CeBYsaMA+2q4Q90gWH8HYfcXSCWZ0TQMPCYAZF3QPpB8aQ7GldUA6DwxhUnuAAoTiRH44BmABQno+l8FIwCCAAA8cMPBA== + + + + + eJxjYBgFQx04Mg60C4Y3AIUvvjB2ZkRVOwpoC2BhjC2sQxgx1bqMxgldgCuWfBKAJT5gagLQ4tF3NJ6oAgiVQR5ExInbaFwMKPAfDf9RMAIAAAGOBuI= + + + diff --git a/028.bs/levels/level4_foreground.tmx b/028.bs/levels/level4_foreground.tmx new file mode 100644 index 0000000..dee8e9a --- /dev/null +++ b/028.bs/levels/level4_foreground.tmx @@ -0,0 +1,24 @@ + + + + + + + + + + + eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirWA4bcbR9hq4QhvQnKj8UE+piR/VI7mD6pjQnlg+Wj+oCserT8GFya3jhjNH7TB0njaprSQG8X4MQAt/aRm + + + + + eJxjYBgFo2AUEAK6jAwM3wfaEaMABdxlwIyTk1AxZNqYkc4OG8EAFCeg8NZlRBWTZ0TQMPAYiD8C8XkGiHp0faOA/gAUJ5KjcTAKRsEooAMAAJUwDuA= + + + + + eJxjYBgFQwFEMeKWc8QjNwooB6DwBWFvHOHsjCQejUMNvvgbBaQBWHonJt2D1LiMhj3dAHqcBDBiysPUBKDFo+9oPFEFEMoXHkTEidtoXAwo8B8N/1EwAgAAjF8HYw== + + + diff --git a/028.bs/levels/level5_foreground.tmx b/028.bs/levels/level5_foreground.tmx new file mode 100644 index 0000000..bb823d4 --- /dev/null +++ b/028.bs/levels/level5_foreground.tmx @@ -0,0 +1,24 @@ + + + + + + + + + + + eJxjZ2BgsGLEjtlpIDeK8WM7YNgxAbEYFppcOctB4K+hirWA4bcbR9hq4QhvQnKj8UE+piR/VI7mD6pjQnlg+Wj+oCserT8GFya3jhjNH7TB0njaprSQG8X4MQAt/aRm + + + + + eJxjYBgFQxGcBOLveOSMGRkYPtLRPcMdEApLbmB4szLilkOmRwHlABSW2PIATAwUFzA1xmjhDosnXPE1CkgHsPC+ywAJb12ksAWJyTMiaBh4zADJV6P5g/oAX3mED4DiRBKqDxRfuOqYUUAaQE/7lJgzCkbBcAEAhDYTZQ== + + + + + eJxjYBgFQx04Mg60C4Y3gIWvN45wdkYSjx6NC5oDWHwQk+5BalxG44RuAD1OAhgx5WFqAtDi0Xc0nqgCCOULDyLixG00LgYU+I+G/ygYAQAADNsGaw== + + + diff --git a/028.bs/menu.s b/028.bs/menu.s index ff8e674..3fcd990 100644 --- a/028.bs/menu.s +++ b/028.bs/menu.s @@ -130,15 +130,17 @@ MenuDown: rts ToggleMusic: - eor.w #64,P61_Master - cmp.w #64,P61_Master + eor.w #1,musicOnFlag + cmp.w #1,musicOnFlag beq .musicOn .musicOff: + move.w #-2,fadeMusic ; fade out lea musicOff,a0 lea music,a1 bsr StrCpy bra .done .musicOn: + move.w #2,fadeMusic ; fade in lea musicOn,a0 lea music,a1 bsr StrCpy @@ -148,8 +150,9 @@ ToggleMusic: rts ToggleDifficulty: - add.l #4,nextLevelInstaller - cmp.l #levelInstallers+8,nextLevelInstaller + PlaySound Jump + add.l #4*5,nextLevelInstaller + cmp.l #levelInstallers+(4*8),nextLevelInstaller ble RefreshDifficulty move.l #levelInstallers,nextLevelInstaller RefreshDifficulty: @@ -193,6 +196,7 @@ ButtonPressed: bsr ToggleMusic bra .done .creditsButton: + PlaySound Jump jsr Credits bra ShowMenu .done: @@ -256,6 +260,8 @@ StrCpy: .done: rts +musicOnFlag: + dc.w 1 menu: dc.b " PLAY NOW! " dc.b 0 diff --git a/028.bs/music.s b/028.bs/music.s index ef6c50e..9b4949d 100644 --- a/028.bs/music.s +++ b/028.bs/music.s @@ -23,6 +23,10 @@ module section .noload cnop 0,512 diskmodule: + if SFX=1 incbin "assets/P61.placeholder" + else + incbin "assets/P61.song1" + endif cnop 0,512 enddiskmodule: \ No newline at end of file diff --git a/028.bs/sound.s b/028.bs/sound.s index 2ac5c92..7b964c7 100644 --- a/028.bs/sound.s +++ b/028.bs/sound.s @@ -1,8 +1,23 @@ include "includes.i" xdef PlayNextSound + xdef fadeMusic PlayNextSound: + cmp.w #0,fadeMusic + beq .dontFadeOutMusic + move.w fadeMusic,d0 + add.w d0,P61_Master + cmp.w #0,P61_Master + beq .fadeComplete + cmp.w #64,P61_Master + beq .fadeComplete + bra .dontFadeOutMusic +.fadeComplete: + move.w #0,fadeMusic +.dontFadeOutMusic: + + if SFX=1 move.w #2,AUD3LEN(a6) ; set the empty sound for the next sample to be played move.l #emptySound,AUD3LCH(a6) @@ -76,7 +91,7 @@ PlayZapSound: move.w #(endZap-zap)/2,AUD3LEN(a6) ;Set length in words move.w #(DMAF_AUD3|DMAF_SETCLR),DMACON(a6) rts - + align 4 jump: incbin "out/jump.raw" @@ -106,4 +121,8 @@ endZap: align 2 emptySound: dc.l 0 - endif \ No newline at end of file + endif + +fadeMusic: ; 0 - no fade, 1 - fade out 2, fade in + dc.w 0 + \ No newline at end of file