1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2025-04-09 01:37:17 +00:00

Add GREASY frame import utility

This commit is contained in:
David Schmenk 2024-11-13 14:05:50 -08:00
parent 6593a32253
commit 27da5dca92
5 changed files with 143 additions and 10 deletions

Binary file not shown.

View File

@ -165,11 +165,12 @@ export def spriteRead(filestr)#5
end
export def spriteWrite(filestr, xorg, yorg, width, height, sprptr)#1
var sprsize
byte refnum, i
byte refnum, i, result
sprsize = (width + 1) / 2 * height
fileio:destroy(filestr)
if fileio:create(filestr, $06, $0000) == FILE_ERR_OK
result = fileio:create(filestr, $06, $0000)
if result == FILE_ERR_OK
refnum = fileio:open(filestr)
if refnum
fileio:write(refnum, @xorg, 1)
@ -178,10 +179,13 @@ export def spriteWrite(filestr, xorg, yorg, width, height, sprptr)#1
fileio:write(refnum, @height, 1)
sprsize = (width + 1) / 2 * height
fileio:write(refnum, sprptr, sprsize)
result = perr
fileio:close(refnum)
else
result = perr
fin
fin
return perr
return result
end
export def screenRead(filestr)#1
byte refnum
@ -197,18 +201,23 @@ export def screenRead(filestr)#1
return perr
end
export def screenWrite(filestr)#1
byte refnum
byte refnum, result
fileio:destroy(filestr)
if fileio:create(filestr, $06, $0000) == FILE_ERR_OK
result = fileio:create(filestr, $06, $2000)
if result == FILE_ERR_OK
refnum = fileio:open(filestr)
if refnum
^page1x // Write AUX bytes
fileio:write(refnum, $2000, $2000)
^page1m // Write MAIN bytes
fileio:write(refnum, $2000, $2000)
if fileio:write(refnum, $2000, $2000) == $2000
^page1m // Write MAIN bytes
fileio:write(refnum, $2000, $2000)
fin
result = perr
fileio:close(refnum)
else
result = perr
fin
fin
return perr
return result
end

View File

@ -86,6 +86,7 @@ GRTEST = rel/apple/GRTEST\#FE1000
DGRTEST = rel/apple/DGRTEST\#FE1000
DCGRTEST = rel/apple/DCGRTEST\#FE1000
DCGRSPRED = rel/apple/DCGRSPRED\#FE1000
DCGREASY = rel/apple/DCGREASY\#FE1000
MEMMGR = rel/MEMMGR\#FE1000
MEMTEST = rel/MEMTEST\#FE1000
FIBERTEST = rel/FIBERTEST\#FE1000
@ -122,7 +123,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) $(PLFORTH) $(HRFORTH) $(HR2FORTH) $(TX2FORTH) $(SEXPR) $(SMATH) $(DRAWL) $(ZIPCHIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(INITSLOT) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(SFMSPRT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRTILE) $(HGRFONT) $(HGRSPRITE) $(HGRLIB) $(TILETEST) $(HGRTEST) $(DCGRLIB) $(GRLIB) $(DGRLIB) $(DCGRUTILS) $(GRTEST) $(DGRTEST) $(HGRTEST) $(DCGRTEST) $(DCGRSPRED) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) $(CONIOTEST)
apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(PLFORTH) $(HRFORTH) $(HR2FORTH) $(TX2FORTH) $(SEXPR) $(SMATH) $(DRAWL) $(ZIPCHIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(INITSLOT) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(SFMSPRT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRTILE) $(HGRFONT) $(HGRSPRITE) $(HGRLIB) $(TILETEST) $(HGRTEST) $(DCGRLIB) $(GRLIB) $(DGRLIB) $(DCGRUTILS) $(GRTEST) $(DGRTEST) $(HGRTEST) $(DCGRTEST) $(DCGRSPRED) $(DCGREASY) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) $(CONIOTEST)
-rm vmsrc/plvmzp.inc
@ -540,6 +541,10 @@ $(DCGRSPRED): utilsrc/apple/dcgrspred.pla $(DCGRLIB) $(DCGRUTILS) $(PLASM)
./$(PLASM) -AMOW utilsrc/apple/dcgrspred.pla
acme --setpc 4094 -o $(DCGRSPRED) utilsrc/apple/dcgrspred.a
$(DCGREASY): utilsrc/apple/dcgreasy.pla $(DCGRLIB) $(DCGRUTILS) $(PLASM)
./$(PLASM) -AMOW utilsrc/apple/dcgreasy.pla
acme --setpc 4094 -o $(DCGREASY) utilsrc/apple/dcgreasy.a
$(MON): utilsrc/apple/mon.pla $(PLASM)
./$(PLASM) -AMOW utilsrc/apple/mon.pla
acme --setpc 4094 -o $(MON) utilsrc/apple/mon.a

View File

@ -21,6 +21,7 @@ cp rel/apple/HGRLIB#FE1000 prodos/sys/HGRLIB.REL
cp rel/apple/DCGRLIB#FE1000 prodos/sys/DCGRLIB.REL
cp rel/apple/DCGRUTILS#FE1000 prodos/sys/DCGRUTILS.REL
cp rel/apple/DCGRSPRED#FE1000 prodos/sys/DCGRSPRED.REL
cp rel/apple/DCGREASY#FE1000 prodos/sys/DCGREASY.REL
cp rel/apple/GRLIB#FE1000 prodos/sys/GRLIB.REL
cp rel/apple/DGRLIB#FE1000 prodos/sys/DGRLIB.REL
cp rel/apple/COPY#FE1000 prodos/sys/COPY.REL
@ -147,6 +148,7 @@ cp samplesrc/dgrtest.pla prodos/bld/samples/DGRTEST.PLA.TXT
cp samplesrc/hgrtest.pla prodos/bld/samples/HGRTEST.PLA.TXT
cp samplesrc/dcgrtest.pla prodos/bld/samples/DCGRTEST.PLA.TXT
cp utilsrc/apple/dcgrspred.pla prodos/bld/samples/DCGRSPRED.PLA.TXT
cp utilsrc/apple/dcgreasy.pla prodos/bld/samples/DCGREASY.PLA.TXT
cp samplesrc/tiletest.pla prodos/bld/samples/TILETEST.PLA.TXT
cp samplesrc/fibertest.pla prodos/bld/samples/FIBERTEST.PLA.TXT
cp samplesrc/mousetest.pla prodos/bld/samples/MOUSETEST.PLA.TXT

View File

@ -0,0 +1,117 @@
include "inc/cmdsys.plh"
include "inc/args.plh"
include "inc/dcgrlib.plh"
include "inc/dcgrutils.plh"
include "inc/fileio.plh"
sysflags restxt1|resxtxt1|reshgr1|resxhgr1 // Reserve all the pages
char[64] greasyfile = ""
byte[20*40] frame
byte pause = FALSE
var arg
def greasy2dcgr(pGreasy)#0
byte i, j, cl, ch
var pPixmap
pPixmap = @frame
for j = 0 to 39 step 2
for i = 0 to 39 step 2
cl = ^(pGreasy + i)
ch = ^(pGreasy + i + 1)
^(pPixmap + i / 2) = (cl & $0F) | (ch << 4)
^(pPixmap + i / 2 + 20) = (cl >> 4) | (ch & $F0)
next
pPixmap = pPixmap + 40
pGreasy = pGreasy + 40
next
end
def greasyRead(filestr, frame)#1
var sprptr, sprsize
byte refnum, numframes
sprptr = 0
refnum = fileio:open(filestr)
if refnum
sprsize = 40 * 40 / 2
sprptr = heapalloc(sprsize)
if sprptr and fileio:read(refnum, @numframes, 1)
if numframes < frame
heaprelease(sprptr)
sprptr = NULL
fin
fin
if sprptr
if fileio:setmark(refnum, (frame - 1) * sprsize + 1, 0)
heaprelease(sprptr)
sprptr = NULL
elsif fileio:read(refnum, sprptr, sprsize) <> sprsize
heaprelease(sprptr)
sprptr = NULL
fin
fin
fileio:close(refnum)
fin
return sprptr
end
def importGreasy#0
var grptr
byte screennum, framenum, i, j
char[64] screenfile
screennum = 1
framenum = 1
dcgrMode(0)
while framenum
dcgrColor(CLR_GREY1)
dcgrClearBl7(0, 0, SCR_WIDTH7, SCR_HEIGHT)
for j = 0 to 3
for i = 0 to 2
grptr = greasyRead(@greasyfile, framenum)
if grptr
greasy2dcgr(grptr)
heaprelease(grptr)
dcgrPixMap(i*40+20, j*40+20, 40, 40, @frame)
framenum++
else
framenum = 0
break
fin
next
if framenum == 0; break; fin
next
strcpy(@screenfile, @greasyfile)
strcat(@screenfile, ".SCR")
screenfile++
screenfile[screenfile] = '0' + screennum
screennum++
if screenWrite(@screenfile)
dcgrMode(-1)
puts("Error writing: "); puts(@screenfile); putln
return
fin
if pause; getc; fin
loop
dcgrMode(-1)
end
arg = argNext(argFirst)
if ^arg
if ^(arg + 1) == '-'
if toupper(^(arg + 2)) == 'P'
pause = TRUE
fin
arg = argNext(arg)
fin
if ^arg
strcpy(@greasyfile, arg)
importGreasy
return 0
fin
fin
puts("Usage: DCGRGREASY [-P] FRAMEFILE\n")
done