1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-09-27 04:54:37 +00:00

New HGR sprite shoot-em up demo

This commit is contained in:
Dave Schmenk 2020-01-04 08:45:23 -08:00
parent b6a7b72fe1
commit 41071de12f

1
src/samplesrc/sfm.pla Normal file
View File

@ -0,0 +1 @@
include "inc/cmdsys.plh" include "inc/hgrlib.plh" include "inc/hgrsprite.plh" include "inc/lines.plh" include "inc/joybuzz.plh" sysflags reshgr1|reshgr2 // Reserve HGR page 1 and 2 byte egg = $88,$83,$33,$33,$38,$88 byte = $88,$33,$11,$11,$33,$88 byte = $83,$31,$11,$11,$13,$38 byte = $33,$11,$11,$11,$11,$33 byte = $33,$11,$11,$11,$11,$33 byte = $33,$11,$11,$11,$11,$33 byte = $33,$11,$11,$11,$11,$33 byte = $83,$31,$11,$11,$13,$38 byte = $88,$33,$11,$11,$33,$88 byte = $88,$83,$33,$33,$38,$88 byte dummy = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte = $88,$88,$88,$88 byte ship = $CC,$CC,$CC,$77,$CC,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $CC,$CC,$C7,$77,$7C,$CC,$CC byte = $77,$CC,$77,$66,$77,$CC,$77 byte = $77,$CC,$77,$66,$77,$CC,$77 byte = $77,$CC,$77,$66,$77,$CC,$77 byte = $77,$CC,$77,$77,$77,$CC,$77 byte = $77,$CC,$77,$77,$77,$CC,$77 byte = $77,$CC,$77,$77,$77,$CC,$77 byte = $77,$C7,$77,$77,$77,$7C,$77 byte = $77,$77,$77,$77,$77,$77,$77 byte = $77,$77,$75,$55,$57,$77,$77 byte missle = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $CC,$55,$CC byte = $C5,$55,$5C byte = $55,$55,$55 var sprtEgg, sprtShip, sprtMissle, sprtDummy def moire#0 var i setlinespans(@hgrHlin, @hgrVlin) setlineplot(@hgrXorPlot) hgrColor(7) for i = 0 to 191 step 8 linespans(0, i, 279, 191 - i) next for i = 0 to 279 step 9 linespans(i, 0, 279 - i, 191) next end def game(eggnum)#0 var[14] xegg, yegg, ixegg, iyegg var xship, xmissle byte yship, ymissle byte k, xdelta, ydelta, btn0, btn1 xship = 140 ymissle = 255 xegg[0] = 100 ixegg[0] = 1 yegg[0] = 60 iyegg[0] = -1 for k = 1 to 13 xegg[k] = ((xegg[k - 1] ^ 37) + 97) & 255 ixegg[k] = -ixegg[k - 1] yegg[k] = ((yegg[k - 1] ^ 29) + 53) & 63 iyegg[k] = -iyegg[k - 1] next repeat for k = 0 to 13 if yegg[k] <> 255 xegg[k] = xegg[k] + ixegg[k] if xegg[k] < -5 or xegg[k] > 284 ixegg[k] = -ixegg[k] fin yegg[k] = yegg[k] + iyegg[k] if yegg[k] < -5 or yegg[k] > 64 iyegg[k] = -iyegg[k] fin spritePosIndex(xegg[k], yegg[k], k+2) fin next xdelta, ydelta, btn0, btn1 = joypos(ymissle/4) xship = xship + (xdelta / 4 - 10) if xship < 0; xship = 0; fin if xship > 279; xship = 279; fin if btn0 and ymissle == 255 spriteAdd(1, sprtMissle) xmissle = xship ymissle = 172 fin if ymissle <> 255 if ymissle < 8 spriteDel(1) ymissle = 255 else ymissle = ymissle - 8 spritePosIndex(xmissle, ymissle, 1) for k = 0 to 13 if yegg[k] <> 255 if ymissle >= yegg[k] - 5 and ymissle <= yegg[k] + 5 if xmissle >= xegg[k] - 5 and xmissle <= xegg[k] + 5 // // Hit // yegg[k] = 255 ymissle = 255 spriteAdd(k + 2, spriteDup(sprtDummy)) spritePosIndex(0, 0, k + 2) spriteDel(1) fin fin fin next fin fin spritePosIndex(xship, 190, 0) spriteDrawList() spriteDrawBuf(hgrSwap()) until ^$C000 > 127 end hgrMode spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process sprtShip = spriteCompile(14, 14, 7, 13, @ship) sprtMissle = spriteCompile( 6, 8, 3, 0, @missle) sprtEgg = spriteCompile(12, 10, 6, 5, @egg) sprtDummy = spriteCompile( 7, 8, 0, 0, @dummy) hgrColor(8) hgrClear() moire memcpy($4000, $2000, $2000) // Copy to both buffers spriteDrawBuf(hgrDrawBuf(1)) spriteAdd(0, sprtShip) spriteAdd(2, sprtEgg) spriteAdd(3, spriteDup(sprtEgg)) spriteAdd(4, spriteDup(sprtEgg)) spriteAdd(5, spriteDup(sprtEgg)) spriteAdd(6, spriteDup(sprtEgg)) spriteAdd(7, spriteDup(sprtEgg)) spriteAdd(8, spriteDup(sprtEgg)) spriteAdd(9, spriteDup(sprtEgg)) spriteAdd(10, spriteDup(sprtEgg)) spriteAdd(11, spriteDup(sprtEgg)) spriteAdd(12, spriteDup(sprtEgg)) spriteAdd(13, spriteDup(sprtEgg)) spriteAdd(14, spriteDup(sprtEgg)) spriteAdd(15, spriteDup(sprtEgg)) game(14) getc txtMode done