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

Fun with the graphics libraries

This commit is contained in:
Dave Schmenk 2020-01-04 16:58:51 -08:00
parent 69733fd37f
commit b006e18d26
5 changed files with 213 additions and 2 deletions

View File

@ -65,6 +65,7 @@ DGRLIB = rel/apple/DGRLIB\#FE1000
HGRSPRITE = rel/apple/HGRSPRITE\#FE1000
LINES = rel/LINES\#FE1000
GRAFIX = rel/apple/GRAFIX\#FE1000
SFM = rel/apple/SFM\#FE1000
GFXDEMO = rel/apple/GFXDEMO\#FE1000
JOYBUZZ = rel/apple/JOYBUZZ\#FE1000
PORTIO = rel/apple/PORTIO\#FE1000
@ -104,7 +105,7 @@ TXTTYPE = .TXT
#SYSTYPE = \#FF2000
#TXTTYPE = \#040000
apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(ZIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRSPRITE) $(HGRLIB) $(HGRTEST) $(GRLIB) $(DGRLIB) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ)
apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(ZIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRSPRITE) $(HGRLIB) $(HGRTEST) $(GRLIB) $(DGRLIB) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ)
-rm vmsrc/plvmzp.inc
@ -258,6 +259,10 @@ $(LONGJMP): libsrc/longjmp.pla $(PLVM02) $(PLASM)
./$(PLASM) -AMOW < libsrc/longjmp.pla > libsrc/longjmp.a
acme --setpc 4094 -o $(LONGJMP) libsrc/longjmp.a
$(SFM): samplesrc/sfm.pla $(PLVM02) $(PLASM)
./$(PLASM) -AMOW < samplesrc/sfm.pla > samplesrc/sfm.a
acme --setpc 4094 -o $(SFM) samplesrc/sfm.a
$(ROGUE): samplesrc/rogue.pla $(PLVM02) $(PLASM)
./$(PLASM) -AMOW < samplesrc/rogue.pla > samplesrc/rogue.a
acme --setpc 4094 -o $(ROGUE) samplesrc/rogue.a

View File

@ -75,6 +75,7 @@ cp rel/apple/HGRTEST#FE1000 prodos/demos/HGRTEST.REL
cp rel/apple/GRTEST#FE1000 prodos/demos/GRTEST.REL
cp rel/apple/DGRTEST#FE1000 prodos/demos/DGRTEST.REL
cp rel/apple/HGRTEST#FE1000 prodos/demos/HGRTEST.REL
cp rel/apple/SFM#FE1000 prodos/demos/SFM.REL
cp rel/apple/ROD#FE1000 prodos/demos/ROD.REL
cp rel/RPNCALC#FE1000 prodos/demos/RPNCALC.REL
cp rel/LZ4CAT#FE1000 prodos/demos/LZ4CAT.REL
@ -132,6 +133,7 @@ cp samplesrc/rpncalc.pla prodos/bld/samples/RPNCALC.PLA.TXT
cp samplesrc/fatcat.pla prodos/bld/samples/FATCAT.PLA.TXT
cp samplesrc/gfxdemo.pla prodos/bld/samples/GFXDEMO.PLA.TXT
cp samplesrc/lz4cat.pla prodos/bld/samples/Z4CAT.PLA.TXT
cp samplesrc/sfm.pla prodos/bld/samples/SFM.PLA.TXT
#mkdir prodos/bld/examples
#cp samplesrc/examples/ex.1.pla prodos/bld/examples/EX.1.PLA.TXT

View File

@ -1 +1,203 @@
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
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,$88,$83,$33,$33,$33,$33,$38,$88,$88
byte = $88,$83,$33,$11,$11,$11,$11,$33,$38,$88
byte = $83,$31,$11,$11,$11,$11,$11,$11,$13,$38
byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33
byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33
byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33
byte = $33,$11,$11,$11,$11,$11,$11,$11,$11,$33
byte = $83,$31,$11,$11,$11,$11,$11,$11,$13,$38
byte = $88,$83,$33,$11,$11,$11,$11,$33,$38,$88
byte = $88,$88,$83,$33,$33,$33,$33,$38,$88,$88
byte spider = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33
byte = $33,$88,$83,$32,$22,$22,$23,$38,$88,$33
byte = $83,$38,$83,$32,$22,$22,$23,$38,$83,$38
byte = $88,$83,$33,$22,$22,$22,$22,$33,$38,$88
byte = $33,$88,$33,$22,$22,$22,$22,$33,$88,$33
byte = $88,$33,$38,$33,$22,$22,$33,$83,$33,$88
byte = $88,$88,$83,$33,$22,$22,$33,$38,$88,$88
byte = $88,$33,$33,$33,$22,$22,$33,$33,$33,$88
byte = $33,$88,$88,$88,$33,$33,$88,$88,$88,$33
byte = $88,$88,$33,$33,$22,$22,$33,$33,$88,$88
byte = $88,$33,$88,$33,$22,$22,$33,$88,$33,$88
byte = $33,$88,$88,$83,$32,$23,$38,$88,$88,$33
byte = $88,$88,$88,$88,$33,$33,$88,$88,$88,$88
byte web1 = $88,$83,$38,$88
byte = $88,$38,$83,$88
byte = $88,$38,$83,$88
byte = $88,$33,$33,$88
byte = $83,$38,$83,$38
byte = $83,$38,$83,$38
byte = $83,$38,$83,$38
byte = $33,$33,$33,$33
byte web2 = $88,$33,$83,$38,$33,$88
byte = $88,$38,$83,$38,$83,$88
byte = $83,$38,$83,$38,$83,$38
byte = $83,$33,$33,$33,$33,$38
byte = $83,$38,$83,$38,$83,$38
byte = $83,$38,$83,$38,$83,$38
byte = $33,$88,$83,$38,$88,$33
byte = $33,$33,$33,$33,$33,$33
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,$75,$55,$57,$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
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
var sprtEgg, sprtSpider, sprtShip, sprtMissle, sprtDummy
def moire#0
var i
setlinespans(@hgrHlin, @hgrVlin)
setlineplot(@hgrPlot)
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(spdrcnt)#0
var[14] xspdr, yspdr, ixspdr, iyspdr, hatch
var xship, xmissle
byte yship, ymissle
byte spdrnum, k, xdelta, ydelta, btn0, btn1
xship = 140
ymissle = 255
xspdr[0] = 100
ixspdr[0] = 1
yspdr[0] = 60
iyspdr[0] = -1
hatch[0] = 1
spdrnum = spdrcnt - 1
for k = 1 to spdrnum
spriteAdd(k + 2, spriteDup(sprtEgg))
xspdr[k] = ((xspdr[k - 1] ^ 37) + 97) & 255
ixspdr[k] = -ixspdr[k - 1]
yspdr[k] = ((yspdr[k - 1] ^ 29) + 53) & 63
iyspdr[k] = -iyspdr[k - 1]
hatch[k] = hatch[k - 1] + 1
next
repeat
for k = 0 to spdrnum
if yspdr[k] <> 255
//xspdr[k] = xspdr[k] + ixspdr[k]
if ixspdr[k] > 0
xspdr[k] = xspdr[k] + yspdr[k] / 8
else
xspdr[k] = xspdr[k] - yspdr[k] / 8
fin
if xspdr[k] < -5 or xspdr[k] > 284
ixspdr[k] = -ixspdr[k]
fin
yspdr[k] = yspdr[k] + iyspdr[k]
if yspdr[k] < -5
iyspdr[k] = -iyspdr[k]
if hatch[k]
hatch[k]--
if hatch[k] == 0
spriteAdd(k + 2, spriteDup(sprtSpider))
fin
fin
fin
if yspdr[k] > 64
iyspdr[k] = -iyspdr[k]
fin
spritePosIndex(xspdr[k], yspdr[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 spdrnum
if yspdr[k] <> 255
if ymissle >= yspdr[k] - 7 and ymissle <= yspdr[k] + 6
if xmissle >= xspdr[k] - 10 and xmissle <= xspdr[k] + 9
//
// Hit
//
yspdr[k] = 255
ymissle = 255
spriteAdd(k + 2, spriteDup(sprtDummy))
spritePosIndex(0, 0, k + 2)
spriteDel(1)
spdrcnt--
if not spdrcnt
return
fin
fin
fin
fin
next
fin
fin
spritePosIndex(xship, 190, 0)
spriteDrawList()
spriteDrawBuf(hgrSwap())
until ^$C000 > 127
getc
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(20, 10, 10, 5, @egg)
sprtSpider = spriteCompile(20, 13, 10, 6, @spider)
sprtDummy = spriteCompile( 7, 8, 0, 0, @dummy)
hgrColor(4)
hgrClear()
moire
memcpy($4000, $2000, $2000) // Copy to both buffers
spriteDrawBuf(hgrDrawBuf(1))
spriteAdd(0, sprtShip)
spriteAdd(2, sprtEgg)
game(4)
txtMode
done

View File

@ -53,4 +53,5 @@ echo "BLD/SAMPLES/MEMTEST.PLA"; atftp $1 --put -l samplesrc/memtest.pla -r $
echo "BLD/SAMPLES/FATCAT.PLA"; atftp $1 --put -l samplesrc/fatcat.pla -r $2/BLD/SAMPLES/FATCAT.PLA#040000
echo "BLD/SAMPLES/GFXDEMO.PLA"; atftp $1 --put -l samplesrc/gfxdemo.pla -r $2/BLD/SAMPLES/GFXDEMO.PLA#040000
echo "BLD/SAMPLES/LZ4CAT.PLA"; atftp $1 --put -l samplesrc/lz4cat.pla -r $2/BLD/SAMPLES/LZ4CAT.PLA#040000
echo "BLD/SAMPLES/SFM.PLA"; atftp $1 --put -l samplesrc/sfm.pla -r $2/BLD/SAMPLES/SFM.PLA#040000

View File

@ -9,6 +9,7 @@ echo "DEMOS/HGRTEST"; atftp $1 --put -l rel/apple/HGRTEST#FE1000
echo "DEMOS/GRTEST"; atftp $1 --put -l rel/apple/GRTEST#FE1000 -r $2/DEMOS/GRTEST#FE1000
echo "DEMOS/INT32TEST"; atftp $1 --put -l rel/INT32TEST#FE1000 -r $2/DEMOS/INT32TEST#FE1000
echo "DEMOS/DGRTEST"; atftp $1 --put -l rel/apple/DGRTEST#FE1000 -r $2/DEMOS/DGRTEST#FE1000
echo "DEMOS/SFM"; atftp $1 --put -l rel/apple/SFM#FE1000 -r $2/DEMOS/SFM#FE1000
# Music demo
echo "DEMOS/MUSIC/PLAYSEQ"; atftp $1 --put -l rel/apple/PLAYSEQ#FE1000 -r $2/DEMOS/MUSIC/PLAYSEQ#FE1000