From 41071de12fdc168efe5c58148ad64088014c069c Mon Sep 17 00:00:00 2001 From: Dave Schmenk Date: Sat, 4 Jan 2020 08:45:23 -0800 Subject: [PATCH] New HGR sprite shoot-em up demo --- src/samplesrc/sfm.pla | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/samplesrc/sfm.pla diff --git a/src/samplesrc/sfm.pla b/src/samplesrc/sfm.pla new file mode 100644 index 0000000..8e4dc61 --- /dev/null +++ b/src/samplesrc/sfm.pla @@ -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 \ No newline at end of file