From a64867ecf1b44d6f173f19a7aa52cf57f2b47bdf Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Sun, 1 May 2016 08:03:34 +1000 Subject: [PATCH] new assets, dbl buf background --- 028.bs/Makefile | 26 +++++++++++++++ 028.bs/assets/assets.png | Bin 11254 -> 12368 bytes 028.bs/assets/panel.pal | 13 ++++---- 028.bs/assets/panel.png | Bin 1479 -> 690 bytes 028.bs/assets/tank.pal | 4 +++ 028.bs/background.s | 13 +++++++- 028.bs/foreground.tmx | 6 ++-- 028.bs/game1.s | 27 ++++++++------- 028.bs/image.s | 15 ++++----- 028.bs/player.s | 21 +++++++++--- 028.bs/splash.s | 2 +- 028.bs/sprite_data.i | 69 +++++++++++++++++++++++++++++++++++++++ 12 files changed, 161 insertions(+), 35 deletions(-) create mode 100644 028.bs/assets/tank.pal diff --git a/028.bs/Makefile b/028.bs/Makefile index 2113540..98d283b 100644 --- a/028.bs/Makefile +++ b/028.bs/Makefile @@ -31,6 +31,14 @@ IMAGES=foreground.png \ sprite_robot-5.png \ sprite_robot-6.png \ sprite_robot-7.png \ + sprite_tank-0.png \ + sprite_tank-1.png \ + sprite_tank-2.png \ + sprite_tank-3.png \ + sprite_tank-4.png \ + sprite_tank-5.png \ + sprite_tank-6.png \ + sprite_tank-7.png \ sprite_coin-0.png \ sprite_coin-1.png \ sprite_coin-2.png \ @@ -45,6 +53,11 @@ IMAGES=foreground.png \ sprite_fallingRobot-2.png \ sprite_fallingRobot-3.png \ sprite_fallingRobot-4.png \ + sprite_fallingTank-0.png \ + sprite_fallingTank-1.png \ + sprite_fallingTank-2.png \ + sprite_fallingTank-3.png \ + sprite_fallingTank-4.png \ font8x8.png\ splash.png @@ -81,12 +94,19 @@ out/sprite_pig-%.bin: out/sprite_pig-%.png out/sprite_robot-%.bin: out/sprite_robot-%.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_robot-$* --palette-offset 16 --use-palette=assets/robot.pal +out/sprite_tank-%.bin: out/sprite_tank-%.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_tank-$* --palette-offset 16 --use-palette=assets/tank.pal + + out/sprite_fallingPig-%.bin: out/sprite_fallingPig-%.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_fallingPig-$* --palette-offset 16 --use-palette=assets/pig.pal out/sprite_fallingRobot-%.bin: out/sprite_fallingRobot-%.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_fallingRobot-$* --palette-offset 16 --use-palette=assets/robot.pal +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 @@ -96,12 +116,18 @@ out/sprite_pig%.png: assets/assets.png out/sprite_robot%.png: assets/assets.png ../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_robot --width=16 --height=16 --rows=1 --cols=8 --dx=16 --dy=16 --x=192 --y=176 +out/sprite_tank%.png: assets/assets.png + ../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_tank --width=16 --height=16 --rows=1 --cols=8 --dx=16 --dy=16 --x=192 --y=208 + out/sprite_fallingPig%.png: assets/assets.png ../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_fallingPig --width=16 --height=16 --rows=1 --cols=5 --dx=16 --dy=16 --x=192 --y=128 out/sprite_fallingRobot%.png: assets/assets.png ../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_fallingRobot --width=16 --height=16 --rows=1 --cols=5 --dx=16 --dy=16 --x=192 --y=192 +out/sprite_fallingTank%.png: assets/assets.png + ../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_fallingTank --width=16 --height=16 --rows=1 --cols=5 --dx=16 --dy=16 --x=192 --y=224 + out/sprite_coin%.png: assets/assets.png ../tools/croppa/out/croppa --input=assets/assets.png --output=out/sprite_coin --width=16 --height=15 --rows=1 --cols=4 --dx=16 --dy=16 --x=192 --y=144 diff --git a/028.bs/assets/assets.png b/028.bs/assets/assets.png index d81164c328ad93d99de4ecfab747c0d5e1cb3844..0c052b264071a7f75aa6891410962e491db96440 100644 GIT binary patch delta 11380 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 delta 10258 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 diff --git a/028.bs/assets/panel.pal b/028.bs/assets/panel.pal index 20b214e..77e6679 100644 --- a/028.bs/assets/panel.pal +++ b/028.bs/assets/panel.pal @@ -1,16 +1,17 @@ -000 153 238 255 -255 255 204 255 238 187 153 255 051 136 136 255 +255 255 255 255 255 238 187 255 +255 255 221 255 068 187 170 255 000 000 000 255 +170 238 238 255 255 221 000 255 -255 255 255 255 +000 034 051 255 255 136 000 255 000 068 119 255 085 221 204 255 +255 000 064 255 170 187 153 255 -170 238 238 255 -000 000 000 255 -255 255 204 255 \ No newline at end of file +255 255 204 255 + diff --git a/028.bs/assets/panel.png b/028.bs/assets/panel.png index 61eaf2543fcf3cf1487ff233723dd719bfae640b..9e1dfa56b794b1d13b970628c339d8966aa21c7a 100644 GIT binary patch delta 636 zcmV-?0)zd>3$g`}7!3pi0001z>%Qy&001zNB`tqI00000000J_*IWPq0zFAYK~#9! z?U+Gp+b|Tz74iild|J0&Oty24Zas$d3z&G&9dlT|LA~`0)Fr1L26bVu^b_U*6z~(4?y=w-a3%S<61w`L`1!RTP^-pf zHz4cvXx3PGcrXFWSDS++_1}PXRVl$i!3uvsaRBZt$9PCy?|!)lmE`_28w~m^IlaF; z42b7oNjI`|j8(#lFA(q=0l8M7*Brm+_~}w|c8q{HxC>AUmLv=T-404|TTelkgL}Zm zT%nQ=yPz_&cTfN=b)5J*tB&}>qRRE;rni<{0@I6 z%zTbK4hjS4aS$xvx}}4Hn=9;f@P=iSWxhTLKj<4zn^{$J*~~#akfL_b-Dbcxb7z|o zH+YXQ`uB|*@ZLp0yn)SuIqIlU17$2b>fosaw`K>;W@Q(TIsuf@a2E?7Z9Km23Qdz~ z^E&R`V6aBLFeeL-NFgJK&&u+m$V1a)zjnye^sOlfOOt0SoIErg0bd+oaPb=+ Wafs6nG7gjg0000-u+fiw1@*+!eP4x0OsHNsbJDMXPNUdWsf{l8} zoH9^bweUeIXTlg?*&GK@GEH|1NwgeSP@5)87R&(^q|@0YXKH%ve6#2L=bZWf@BhBP z*f)JjNWZ9l01)C$Qd0q39fj64h|;f5VNjCDc)hzvvpf`DKk8mRV>fH)#O zfw&i!niC6pk|fEptSE}Ast6&Bv8HK+5M9?PrHnDdFig|5EK6`l00NqmQU_oF27o2# z3CJ>66pj$b*rrJ-XAH?8fEByGt^z|~V6Zg1HBMx%E1V)uvE7qFxyg_U2!SS;6VP>F z6bu6_p%oX9IadS)&au-o<(%1UggQNh=-&v*TvoV(IMO&4x=~Jb_*Z|EE{>X$YI!BaaVT{44$(bo+_)kK%JgOs) z#)kW+mL*M=HANw+q9a5xVnj1^Vp3`uj9aEG|EUnRU62Tts3tQ3q8J1jIyR|h zQerX6o%gos{{YprzaEMiLs%1oBu4AT>3IW1JRm=DR(@Iz&e!~Tufdc&KVI?7&fRHC z00I_y)%f(qMJ?MlWY>-CpExS$+GftL{t)p*)s{+Mh5B1##+>ZT#C;RglrJwPP0Xxm z-Ov)3eld6H<@APIcMJNQfym~{|6Q)_ezWwI7l)VDt)x|heF4W>C&#MwUGG->xGu$C zxziom=6!PLnqSJ6q|S@aSyYjFzwhWrlRqB!$@p#EYuDu!8v~-NM#bgLy?FWD_0x}e zdOv&o(!iCKMcc<^#0NGdAKv0}cgH03&InvTCbqU@&x5?^oZPh?TfeHm{&UFQj>{{C zzJ2@Fh~}-!gZkE3)#rRg&xPg3DS=~m41u#T1;dWTK0jcYtIiXY5RnTv>+1qTA6Yf& zt?K$ze`f5=Pd(Aq?qz!eHtmebs6F3rRiDtQVVx0!XCF2)2SxCoVnTz$YGZ1W!0dcd7j=t{S zzG%)Z>y7C5-Dl6Vwv?40m~k7ULTni=6Si-kS{joesDCjJTACR znb@#v!R^M9f#=<7a(;U%gr9h)N$b6T+S2g}-;YUFzupKn2Of-#?^AFmH7ar#yWqdm zaBtS}gZHzF52bW<4(=*=bw~TJIW^%`P3`xKq9<*_g`amw&9~diM$fOg5qzYv?~Zn9 zTX*%-7dE};;l4(xb74(u@LIBGLK{jcKURFG>8@+!HzhO5XHn(Fl?_BL#*u87Shti6tO82baET$2> MiPO~sljpDb1C6|~tN;K2 diff --git a/028.bs/assets/tank.pal b/028.bs/assets/tank.pal new file mode 100644 index 0000000..a7814e5 --- /dev/null +++ b/028.bs/assets/tank.pal @@ -0,0 +1,4 @@ +000 000 000 255 +135 137 068 255 +054 102 002 255 +052 038 026 255 diff --git a/028.bs/background.s b/028.bs/background.s index f734d1f..c507966 100644 --- a/028.bs/background.s +++ b/028.bs/background.s @@ -4,6 +4,7 @@ xdef RenderNextBackgroundFrame xdef backgroundScrollX xdef backgroundOnscreen + xdef backgroundOffscreen InitialiseBackground: @@ -36,6 +37,14 @@ RenderBackgroundTile: lsr.b #BACKGROUND_SCROLL_SHIFT_CONVERT,d2 ; convert to pixels andi.w #$f,d2 ; find the shift component jsr BlitTile + cmp.l #backgroundBitplanes1,backgroundOffscreen + bne .offsetSub + add.l #IMAGESIZE*2,a0 + bra .doBlit +.offsetSub: + sub.l #IMAGESIZE*2,a0 +.doBlit: + jsr BlitTile rts RenderNextBackgroundFrame: @@ -62,11 +71,13 @@ backgroundMap: backgroundOnscreen: dc.l backgroundBitplanes1 backgroundOffscreen: - dc.l backgroundBitplanes1 + dc.l backgroundBitplanes2 section .bss backgroundBitplanes1: ds.b IMAGESIZE*2 +backgroundBitplanes2: + ds.b IMAGESIZE*2 \ No newline at end of file diff --git a/028.bs/foreground.tmx b/028.bs/foreground.tmx index b2711d6..ddbdb26 100644 --- a/028.bs/foreground.tmx +++ b/028.bs/foreground.tmx @@ -8,15 +8,15 @@ - eJxjZ2BgsGTEjtlH5eguZwekmYBYDAs9Kkd/OS0c8qNyAyNHSXxWkqlvVA5//tiNJ86WUxDXo3L0zR+jcrTJH4MtjYxkOWkG3G0wWsgNxjbmYJIDAGX6U4Q= + eJxjZ2BgsGTEjtlH5eguZwekmYBYDAtNidxWPHKVNLBvuMhp4ZAflRsYOUriczSd0yZ/7MYTZ8spiOtROfrmj1E52uSPwZZGRrKcNAPuNhgt5AZjG3MwyQEArppUrg== - eJxjYBgFo2AUkAvOA/HHgXbECAbo4c/KyMDADcQngWxjIK3LCKFHAW0BLJwlgfgxlA8DsDhBByB1o3mH/gAUF6w48sRonNAf3AVieTxlFCw/wcqzUTAKhgsAAErmDLs= + eJxjYBgFIwUYMzIw6DKi0qOAMnAeiD9S2UxuRoTZoHj6TmXzhxNAD39WRkj4nWSgXjpnZcROjwIEgIWzJBA/hvJhABYn6ACkjpy8AzMLnR4FxAFQeOFKw+TEyWj+oAzcBWJ5PGEGy0+w8owQgKmHmYmeH0fBKBgsAADYaBI9 - + eJxjYBgFgw04MuLnE1JPCDgRqZ5YdcMdgMKX2DBGV+dKhD6QHucREtbUSFOwMMYVJy6MqGph6lxItJtU9SMduDISjhv0vERK3oLZQW0wlMs5kNuRMQiQU3/A1LiRERbk6KEmICX+Bktck1pnu1NRPal2j4JRQCsAAIdJC5A= diff --git a/028.bs/game1.s b/028.bs/game1.s index 6caac27..bf7513a 100644 --- a/028.bs/game1.s +++ b/028.bs/game1.s @@ -47,7 +47,8 @@ Entry: jsr StartMusic jsr ShowSplash - + jsr BlueFill + ;; d0 - fg bitplane pointer offset ;; d1 - bg bitplane pointer offset move.l #0,d0 @@ -55,7 +56,7 @@ Entry: jsr SwitchBuffers move.w #(DMAF_BLITTER|DMAF_SETCLR!DMAF_MASTER),DMACON(a6) - + lea panelCopperListBpl1Ptr,a0 lea panel,a1 jsr PokePanelBitplanePointers @@ -68,10 +69,11 @@ Entry: lea mpanelCopperListBpl1Ptr,a0 lea mpanel,a1 jsr PokePanelBitplanePointers - + bsr ShowMessagePanel - jsr Init ; enable the playfield + + jsr Init ; enable the playfield jsr InstallSpriteColorPalette @@ -88,6 +90,7 @@ Reset: move.l startForegroundMapPtr,foregroundMapPtr move.l startPathwayMapPtr,pathwayMapPtr move.w #0,pathwayRenderPending + move.w #0,pathwayClearPending move.w #0,moving move.l #playareaFade,playareaFadePtr move.l #panelFade,panelFadePtr @@ -198,17 +201,17 @@ GameLoop: jsr RenderNextBackgroundFrame + cmp.w #0,pathwayClearPending + beq .dontClearPathway + bsr ClearPathway +.dontClearPathway: + cmp.w #0,pathwayRenderPending beq .dontRenderPathway jsr InstallTilePalette jsr RenderPathway .dontRenderPathway: - cmp.w #0,pathwayClearPending - beq .dontClearPathway - bsr ClearPathway -.dontClearPathway: - if 0 @@ -406,8 +409,6 @@ RenderNextForegroundFrame: rts RenderPathway: - ;; only render when scroll complete - move.w #0,pathwayFadeCount sub.w #1,pathwayRenderPending move.w pathwayXIndex,d5 ; x index @@ -442,7 +443,7 @@ RenderPathway: jsr BlitTile bra .next .dontBlit: - cmp.w pathwayXIndex,d5 + cmp.w pathwayXIndex,d5 ; skip the start column beq .next add.w #1,d7 cmp.w #7,d7 @@ -450,6 +451,8 @@ RenderPathway: .next: dbra d6,.loopY add.w #1,d5 + cmp.w #(FOREGROUND_PLAYAREA_WIDTH_WORDS/2)-1,d5 ; don't render pathways off the play area + beq .skip bra .loopX .skip: diff --git a/028.bs/image.s b/028.bs/image.s index 95768f6..9a63254 100644 --- a/028.bs/image.s +++ b/028.bs/image.s @@ -14,6 +14,7 @@ SwitchBuffers: move.l foregroundOnscreen,foregroundOffscreen move.l a0,foregroundOnscreen move.l a0,a1 + lea copperListBpl1Ptr,a0 bsr.s PokeBitplanePointers @@ -21,18 +22,19 @@ SwitchBuffers: bsr.s PokeBitplanePointers add.l #BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*(96-1),d0 - ;; lea copperListBpl1Ptr2,a0 - ;; bsr.s PokeBitplanePointers - lea copperListBpl1Ptr2_MP,a0 bsr.s PokeBitplanePointers - ;; background is not double buffered move.l backgroundScrollX,d0 lsr.w #BACKGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels lsr.w #3,d0 ; bytes to scroll - move.l backgroundOnscreen,a1 + + move.l backgroundOffscreen,a0 + move.l backgroundOnscreen,backgroundOffscreen + move.l a0,backgroundOnscreen + move.l a0,a1 + lea copperListBpl2Ptr,a0 bsr.s PokeBitplanePointers @@ -40,9 +42,6 @@ SwitchBuffers: bsr.s PokeBitplanePointers add.l #BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*(96-48+16),d0 - ;; lea copperListBpl2Ptr2,a0 - ;; bsr.s PokeBitplanePointers - lea copperListBpl2Ptr2_MP,a0 bsr.s PokeBitplanePointers diff --git a/028.bs/player.s b/028.bs/player.s index c2cf3a6..a7ffe9d 100644 --- a/028.bs/player.s +++ b/028.bs/player.s @@ -226,7 +226,11 @@ InstallPigColorPalette: InstallRobotColorPalette: include "out/sprite_robot-0-palette.s" - rts + rts + +InstallTankColorPalette: + include "out/sprite_tank-0-palette.s" + rts CheckPlayerMiss: @@ -289,6 +293,9 @@ CheckPlayerMiss: ;; a3 now points at the tile under the sprite move.w (a3),d0 + + cmp.w #$7098,d0 ; empty tile + beq .doBigBang cmp.w #$78e,d0 bge .noBigBang @@ -405,9 +412,10 @@ CheckDirection: SelectNextPlayerSprite: - cmp.l #pigPlayerSpriteConfig,playerSpriteConfig - bne .s1 - move.l #robotPlayerSpriteConfig,playerSpriteConfig + cmp.l #tankPlayerSpriteConfig,playerSpriteConfig + beq .s1 + ;; move.l #robotPlayerSpriteConfig,playerSpriteConfig + add.l #3*4,playerSpriteConfig bra .done .s1: move.l #pigPlayerSpriteConfig,playerSpriteConfig @@ -425,6 +433,11 @@ robotPlayerSpriteConfig: dc.l spriteRobot dc.l spriteFallingRobot1 +tankPlayerSpriteConfig: + dc.l InstallTankColorPalette + dc.l spriteTank + dc.l spriteFallingTank1 + playerSpriteConfig: dc.l pigPlayerSpriteConfig diff --git a/028.bs/splash.s b/028.bs/splash.s index 04d1603..2d09020 100644 --- a/028.bs/splash.s +++ b/028.bs/splash.s @@ -43,7 +43,7 @@ ShowSplash: move.w #(INTF_SETCLR|INTF_VERTB|INTF_INTEN),INTENA(a6) .wait: jsr WaitVerticalBlank - jsr ProcessJoystick + jsr ReadJoystick btst.b #0,joystick beq .wait rts diff --git a/028.bs/sprite_data.i b/028.bs/sprite_data.i index ab6480d..0b352f3 100644 --- a/028.bs/sprite_data.i +++ b/028.bs/sprite_data.i @@ -82,6 +82,48 @@ spriteRobotRightJump: dc.w 0,0 incbin "out/sprite_robot-2.bin" ; 7, right jump dc.l 0 + +spriteTank: +spriteTankUp: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-1.bin" ; 0, up + dc.l 0 +spriteTankUpJump: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-0.bin" ; 1, up jump + dc.l 0 +spriteTankDown: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-5.bin" ; 2, down + dc.l 0 +spriteTankDownJump: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-4.bin" ; 3, down jump + dc.l 0 +spriteTankLeft: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-7.bin" ; 4, left + dc.l 0 +spriteTankLeftJump: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-6.bin" ; 5, left jump + dc.l 0 +spriteTankRight: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-3.bin" ; 6, right + dc.l 0 +spriteTankRightJump: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_tank-2.bin" ; 7, right jump + dc.l 0 spriteFalling0: dc.w 0,0 @@ -134,4 +176,31 @@ spriteFallingRobot4: dc.w 0,0 dc.w 0,0 incbin "out/sprite_fallingRobot-4.bin" + dc.l 0 + + +spriteFallingTank0: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_fallingTank-0.bin" + dc.l 0 +spriteFallingTank1: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_fallingTank-1.bin" + dc.l 0 +spriteFallingTank2: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_fallingTank-2.bin" + dc.l 0 +spriteFallingTank3: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_fallingTank-3.bin" + dc.l 0 +spriteFallingTank4: + dc.w 0,0 + dc.w 0,0 + incbin "out/sprite_fallingTank-4.bin" dc.l 0 \ No newline at end of file