From b936a110eaddfe14eb2e68a1b8fa190185646532 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Tue, 17 May 2016 07:55:44 +1000 Subject: [PATCH] bees wip --- 028.bs/assets/assets.png | Bin 12418 -> 12222 bytes 028.bs/assets/items.png | Bin 4377 -> 4675 bytes 028.bs/bee-palette.s | 4 + 028.bs/constants.i | 10 +- 028.bs/game1.s | 6 +- 028.bs/items.s | 168 ++++++++++++++++++++++++++-- 028.bs/levels/levelA_foreground.tmx | 2 +- 028.bs/macros.i | 2 +- 028.bs/player.s | 1 - 028.bs/sound.s | 20 +++- tools/imagecon/palette.c | 12 +- 11 files changed, 199 insertions(+), 26 deletions(-) create mode 100644 028.bs/bee-palette.s diff --git a/028.bs/assets/assets.png b/028.bs/assets/assets.png index a9d329321b61268f15eb8e170b1e758b7323e6db..9a4452742051e7d54ff444aeaeef657d884953f3 100644 GIT binary patch delta 11210 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 TMwtu3e^iyVl*$z>2txiBS*EYq diff --git a/028.bs/assets/items.png b/028.bs/assets/items.png index 6120ce2831518043bc8f34d5ab9c467116727f5e..7bb486817c6d97e4c52cc0f736fb359db590a0b6 100644 GIT binary patch delta 2374 zcmV-M3Ay%}BEuxGJOqCY@kvBMRCodH+)b}rM;QQMUm7W)Nt*~oR6iC8u$~mtclbvDzc#xAA9})tXQKiqi!NaQA$fGQs8plJhnXLmpR!^(haWh)hmJGHvCvLa;VuvWKLRtD{3`Mh=sbbfxb=;O=& z`0T8`EAcz|wZj&(vd2U7Kft`=zu%LY|424*yYsUj%$~jX!`avWextvC>;6v{WqrYh zf6DmJ-u>}fts8&WzgR0P3&!H3?y!w(Wdr*-j>-SeFaBFJ^?HANette{NrK|1`4#X- zIW&LM=5MOsQ6~MO)0cmHe-=sT#c%$)NPan`hy6zjEswwK?-<89e>wl3ymhZ1#>1zd z?KJU zM&i4Nf7Dxb{(txF@15s1GX9nLj4A!fvS_P&v}=Fca(-@hHRjgQM#g4YOMJ%UK4Mzq zGo~E>F7eUNu#J)UqfUNpE~2bkwVih>uYSuqQ5M_V&+2oS^@j1;&LQFt@+L@J0zd!B z<(iJwRvBAc4R%0VZ+Quxv7f*AdTagiWUk=KF_h<9kE8G0Zr{1l8n#$@PVK+B!vjS^V{_Ou4`$$x|(#rnl3GLDByI=fc_T=vNH?8N1ZvNU~ z#4nTKyzIvH_p{mRKH_iPpY>ztU;lr5cm7UvRF3|iy|>!`<*rk!T`vpsMet=w`%zwk zMnoimG7+@267j`##@@w|9I=KMvW=+pO=8~NFxc9iJ;}tNBl5> zwZvtAk?3M8`&}l#@s_6aKi>Lj*T_{`B$`;c#TJ*Lv9%|^d7`St=W1}1LiT_Eoj?Do zx&OVb0ME|;*}W4o{|LY^0cBE)L=yFCw~U_^?*K2_xhQLif8I47af{fC&LW}36LYNp zc>O5q^-tnrELlDlKehkM#@9@*vMlE>oQ4S~lUgK_F~8a4<)|0!T$HuMKbSpPy!N(i zX`W1Xp8sMjt@A&%|I5agkM)0;$8m`{T;!z4yUM?|0#OY zW6l2r!-KpDGGRPI2@oJ~r2_Fk_^Z5KDORns_|$)`Tp0lZr!BCzcY#m)VIF>Tkp!>( z`d|I!$S@&h`Qb;Q2Lc3k6aqi}Kobr1)JQ@4@Ql_dm-H zhRLuzx9K>(E1BD-I?8_u5ST6yE0)FOTYiu*K6jH}Az6MBd-=7LP2Fbv@RQ(Kzx9KR z*?-x0w6P)n*e?S24=-1M!-O|n{bjv0sqG{Ab)Tg=yZF+0UnTC>>MA2Z;PL`1Z-T_n z*2FD;N@kdV;-_e~-7-Gw3_s1?8Xx^<-_b^XntUui`@QOYCcS@5Zo{N^)#K400Rn9T zD=WYZiIrTg;vxZMGKxf$tFx?I+h_gZxn1MqmmG2>nybr7|3_aLWdbZ8ZzjQQ=gRu! zak=s<%dG-S4aWqg3#_aFv$;%uk+8ZaV;1-OSe*^aRw{IN%2iu_FEHvvyDjnAUVNE3 zl4)!?rd{H*okM@`Guf55fnC zmaDu>gu{P*3^?m-8hp$_ZHxM4BHR?OoB)Awfwk8F<6YKV`DJ*mEYA)1wYs&kVO-v? z)vc9f{ZrnTtG!HuIo>!|p3m~Jz2rA0&YU6CltDtX%?AIjkJOaCLat-n34Dz%~Jwz}s{VaITgB shnK|%=vI@naSV?HlYk6X803RF zwaekWGs9=d_hw0oCyV*p>HH?NFhk&EM(i#^&HpYGFW!dvzqo(h;s-Ngg%Th@;HU*8 zz@wf%gC}q}0@r@>+r`~a{_!$^$Vwv5l@m&q#H{N}HZmThL) zP#YN^ecfApw(2Vr@x9MKYr;1B-)REO$$RDF_R9M9otJ;haenpUT9XuCTZ|>ajQ`=M zWddy<>hs0C_{FC;s{4=e=h&n7DdR8W+L2Emf4Bc=q2}?I{q5sC=P&2~i#P8rhw<>~ zmy_oI50BsO4gbM}`5%g3Jbri5{O8zXAXCO)#+46Z%J{>t+fGe<+26j-GYQ42FOpVl zSyr0_Z{2@ySCV%>X;+fjPPA2&Sqe7wyL-lGT-43IEQ^-9u|xfLW3&C5`0Ou_5mOtVG1-3{+bw;@$KP#Z zB))n0d))@-|Mx$7=QQ_`@o&UuOzBsaMO)3I?d^Z-`MKHDXsx4-jLou|_>9S8#MH)T zOga83@zGDWjgk1hPX5qbL|L{loZEkOhnG+> z{2zb3_vAt?$7-vL9bC;e8j}6FD`pCHrp)YcX|mNoepoehKtWB&E%C;+RM=XrE%Wh zJ(ls2fFgcu%b0%hsULqi&R0JEZrNq@ABlgp-|qGiyF6y$q$QIyGRdioJVS=UCVCU%sbV7e8nG+5bL{k*IQ|mHoE~?a|`LU;k_Ih z*U7LgyK()aY`$=?Ej{cv0u-X5`u2ToQUKi$@;Omn5v%Cb2 zh)4ouBB*I4;=2i~CNBGnL>GJ6?>hO7w=}2!@z#%{#+>=jOTc)fkp#*_Q1j>`zMH^m z;yuxbsD|QmHMmV7`+tAyFCSL- zzq1wK$;r3PCn4=u0J;e%lUgK_s5i7_{G#{-c-78XSxx-&rtyed#h!H*2`yfjWBteb zM^SJ2A}+>~VhB7>DW(mF+5ib3M4N)$_~a6S>uvNpMwg zc5>d6udFM+`#rK&=N!LX%wahNQ_szRA-0F-??KIfL2(qPyTIFc0mP$@CqZ}H_Lsj~ zFK&yUx2wa&!{Pj5Yzu^1+3wULdr6U3ab}L{7xLZ%H5g>3x0vic1zDILx zzvp#C)`m)ez<~*DTmt783FCV=`CmxZ-^5=3x0G#+H>1kd`lUu4Yw%f6$HE%7da z6WEaefk^@zE5P{Kn%IBxr)0VbsJlAs_LT8i-u*UrZG7~feMcMlZSt}B?AMV10RpuG z@gc~@-mK&{e#)jvM$6k#-Xx)oy4~2go%OrNsqtlB5xXV6_Hn95fB=D>Krf+X;);Y5 zzui^d&a$SJUR+t02`hj5t8637%KGJb*6kj&TRw;5V(*)?>)ew z-`*N3+t%Aq-J!C}ir?0*asmVhbOm~sz}*T*aN8yD5loUH5;#PG-U{##2Wd= 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: + add.w #ITEM_STRUCT_SIZE,a1 + dbra d7,.loop + rts + + RenderCoinScore: lea coinCounterText,a1 move.w #31,d0 @@ -95,7 +186,6 @@ ResetItems: .loop1: move.w #0,ITEM_SPRITE(a1) move.w #0,ITEM_X(a1) - move.w #0,ITEM_LAGX(a1) move.w ITEM_Y(a1),d2 add.l #ITEM_STRUCT_SIZE,a1 ; multiply by 16 (item control structure size) dbra d1,.loop1 @@ -112,7 +202,6 @@ SwitchItemSpriteBuffers: move.w d1,d0 lea item1,a1 .loop: - move.w ITEM_X(a1),ITEM_LAGX(a1) adda.l #ITEM_STRUCT_SIZE,a1 dbra d1,.loop rts @@ -124,6 +213,7 @@ PrepareItemSpriteData: move.l #deadSprite,sprite2Pointer move.l #deadSprite,sprite3Pointer move.l #deadSprite,sprite4Pointer + move.l #deadSprite,sprite5Pointer rts .enableSprites: @@ -137,6 +227,7 @@ SetupItemSpriteData: move.l sprite2Pointer,SPR2PTH(a6) move.l sprite3Pointer,SPR3PTH(a6) move.l sprite4Pointer,SPR4PTH(a6) + move.l sprite5Pointer,SPR5PTH(a6) cmp.w #0,spriteBufferIndex beq .zero move.w #0,spriteBufferIndex @@ -157,7 +248,7 @@ _SetupItemSpriteData: cmpi.w #0,ITEM_SPRITE_ENABLED(a1) beq .spriteIsNotEnabled - + move.w ITEM_Y(a1),d2 move.l ITEM_SPRITE_ADDRESS(a1),a0 @@ -182,7 +273,6 @@ _SetupItemSpriteData: add.l d2,a0 move.w ITEM_X(a1),d0 - ;; move.w ITEM_LAGX(a1),d0 lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d0 @@ -192,9 +282,25 @@ _SetupItemSpriteData: lsr.l #1,d0 move.b d0,1(a0) ;spriteHStart + move.w ITEM_Y_OFFSET(a1),d1 + cmp.w #0,d1 + ;; beq .noYOffset + + move.w ITEM_Y(a1),d0 + mulu.w #16,d0 + lsr.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d1 + add.w d1,d0 + add.w #ITEM_SPRITE_VSTART,d0 + move.b d0,(a0) ; spriteVStart + add.w #ITEM_SPRITE_HEIGHT,d0 + move.b d0,2(a0) ; spriteVStart + +.noYOffset: .c1: sub.l d2,a0 ;#1*ITEM_SPRITE_VERTICAL_BYTES,a0 + cmp.b #ITEM_SPRITE_BEE_INDEX,d4 + bge .beeSprite cmp.b #ITEM_SPRITE_ARROW_INDEX,d4 bge .arrowSprite cmp.b #ITEM_SPRITE_COINB_INDEX,d4 @@ -207,6 +313,15 @@ _SetupItemSpriteData: bra .done .arrowSprite: move.l a0,sprite4Pointer + cmp.w #0,ITEM_X(a1) + beq .done + bsr InstallArrowPalette + bra .done +.beeSprite: + move.l a0,sprite5Pointer + cmp.w #0,ITEM_X(a1) + beq .done + bsr InstallBeePalette bra .done .done: @@ -243,8 +358,8 @@ GetSpriteSlot: move.w #336< - eJztld0OwiAMheHRlE1R5yRR3/9VlESSjgD9ARcu+C7Z6Wl7ejGlBj1x1PyaA7HGaV6PoLsKZsI896JFP59vKWOjt1qJP/S4IB63yp1Mg0ykHpS6J6IJGVOyhrebMvol857Tx5Tu9arIOjeXFMo+0ize3+/zL2sLtC6qg/dwjDsGZoIW9qTo74TdesXvF8+P5WkJN+FwQmokni36r4l3bNYSKT+pJ/c/wc3wXND/+x61PDqfb9CODwNcEqE= + eJztlUsOgzAMRMnRCrRAv5FaNnD/e1SRqORG8S9OKQveBilMxvZYgqra2RK1S59PyHngQLyDeEfXwHo5C/Uaz7UoUS/kS2XcuG9tjj/0GBiPi3GmpkAmuR6Se09G88lYkjXcXbs85+jeFfFphTNS+3oZssb6ykUyjyWL45J1D7Q+ugf34RV7hDU4YE2J/sZoxpW/WRrCfHH/XJ69YCcaTo7+P+V4auunuCfOMa2ElJ/V81d0f9yHlcfG+9spxxtPYBLK diff --git a/028.bs/macros.i b/028.bs/macros.i index 6768cfe..b58e9f9 100644 --- a/028.bs/macros.i +++ b/028.bs/macros.i @@ -84,7 +84,7 @@ ItemControl: macro \1: .itemX: dc.w 0 -.itemLagX: +.itemYOffset: dc.w 0 .itemY: dc.w 0 diff --git a/028.bs/player.s b/028.bs/player.s index 56666c3..6ff0b32 100644 --- a/028.bs/player.s +++ b/028.bs/player.s @@ -250,7 +250,6 @@ SetupSpriteData: jsr SetupItemSpriteData move.l #deadSprite,SPR1PTH(a6) ; unused - could only use if sprite resused player sprite palette - move.l #deadSprite,SPR5PTH(a6) ; unused - we only allow one arrow per line per screen move.l #deadSprite,SPR6PTH(a6) ; unused - incompatible with oversize playfield data fetch move.l #deadSprite,SPR7PTH(a6) ; unused - incompatible with oversize playfield data fetch rts diff --git a/028.bs/sound.s b/028.bs/sound.s index ac672ca..2ac5c92 100644 --- a/028.bs/sound.s +++ b/028.bs/sound.s @@ -15,6 +15,7 @@ PlayNextSound: xdef PlayChachingSound xdef PlayWhooshSound xdef PlayYaySound + xdef PlayZapSound PlayJumpSound: lea jump(pc),a1 @@ -64,7 +65,17 @@ PlayYaySound: move.w #64,AUD3VOL(a6) move.w #(endYay-yay)/2,AUD3LEN(a6) ;Set length in words move.w #(DMAF_AUD3|DMAF_SETCLR),DMACON(a6) - rts + rts + +PlayZapSound: + KillSound + lea zap,a1 + move.l a1,AUD3LCH(a6) + move.w #124,AUD3PER(a6) + move.w #64,AUD3VOL(a6) + move.w #(endZap-zap)/2,AUD3LEN(a6) ;Set length in words + move.w #(DMAF_AUD3|DMAF_SETCLR),DMACON(a6) + rts align 4 jump: @@ -85,7 +96,12 @@ endWhoosh: align 4 yay: incbin "out/yay.raw" -endYay: +endYay: +zap: + ;; incbin "out/zap.raw" + incbin "out/yay.raw" +endZap: + align 4 align 2 emptySound: diff --git a/tools/imagecon/palette.c b/tools/imagecon/palette.c index 5df0a90..9b4df20 100644 --- a/tools/imagecon/palette.c +++ b/tools/imagecon/palette.c @@ -76,12 +76,12 @@ palette_output(imagecon_image_t* ic, char* outFilename) paletteGreyPaletteFP = file_openWrite("%s-grey.pal", outFilename); paletteGreyTableFP = file_openWrite("%s-grey-table.s", outFilename); paletteGreyCopperFP = file_openWrite("%s-grey-copper.s", outFilename); - fprintf(paletteGreyFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); + // fprintf(paletteGreyFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); } if (config.outputPaletteAsm) { paletteAsmFP = file_openWrite("%s-palette.s", outFilename); - fprintf(paletteAsmFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); + // fprintf(paletteAsmFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); } if (config.verbose) { @@ -106,12 +106,12 @@ palette_output(imagecon_image_t* ic, char* outFilename) } } if (paletteAsmFP) { - fprintf(paletteAsmFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i+config.paletteOffset, RGB24TORGB12(ic->palette[i].r) << 8 | RGB24TORGB12(ic->palette[i].g) << 4 | RGB24TORGB12(ic->palette[i].b)); + fprintf(paletteAsmFP, "\tmove.w #$%03x,COLOR%02d(a6)\n", RGB24TORGB12(ic->palette[i].r) << 8 | RGB24TORGB12(ic->palette[i].g) << 4 | RGB24TORGB12(ic->palette[i].b), i+config.paletteOffset); } if (paletteGreyFP) { // TODO: this is for compat, can be better unsigned grey = ((RGB24TORGB12(ic->palette[i].r) + RGB24TORGB12(ic->palette[i].g) + RGB24TORGB12(ic->palette[i].b))/3); - fprintf(paletteGreyFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i, grey << 8 | grey << 4 | grey); + fprintf(paletteGreyFP, "\tmove.w #$%03x,COLOR%02d(a6)\n", grey << 8 | grey << 4 | grey, i); grey = (((ic->palette[i].r) + (ic->palette[i].g) + (ic->palette[i].b))/3); fprintf(paletteGreyPaletteFP, "%03d %03d %03d 255\n", grey, grey, grey); } @@ -150,7 +150,7 @@ palette_output(imagecon_image_t* ic, char* outFilename) } if (paletteGreyFP) { - fprintf(paletteGreyFP, "\tmovem.l (sp)+,d0-a6\n"); + // fprintf(paletteGreyFP, "\tmovem.l (sp)+,d0-a6\n"); fclose(paletteGreyFP); } @@ -160,7 +160,7 @@ palette_output(imagecon_image_t* ic, char* outFilename) } if (paletteAsmFP) { - fprintf(paletteAsmFP, "\tmovem.l (sp)+,d0-a6\n"); + // fprintf(paletteAsmFP, "\tmovem.l (sp)+,d0-a6\n"); fclose(paletteFP); }