1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2026-04-19 09:23:06 +00:00

First attempt at RGB matching

This commit is contained in:
David Schmenk
2024-11-17 20:53:23 -08:00
parent 9b26f74771
commit 3dd43e7992
3 changed files with 132 additions and 1 deletions
+6 -1
View File
@@ -87,6 +87,7 @@ DGRTEST = rel/apple/DGRTEST\#FE1000
DCGRTEST = rel/apple/DCGRTEST\#FE1000
DCGRSPRED = rel/apple/DCGRSPRED\#FE1000
DCGREASY = rel/apple/DCGREASY\#FE1000
DCGRRGB = rel/apple/DCGRRGB\#FE1000
MEMMGR = rel/MEMMGR\#FE1000
MEMTEST = rel/MEMTEST\#FE1000
FIBERTEST = rel/FIBERTEST\#FE1000
@@ -123,7 +124,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) $(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)
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) $(DCGRRGB) $(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
@@ -545,6 +546,10 @@ $(DCGREASY): utilsrc/apple/dcgreasy.pla $(DCGRLIB) $(DCGRUTILS) $(PLASM)
./$(PLASM) -AMOW utilsrc/apple/dcgreasy.pla
acme --setpc 4094 -o $(DCGREASY) utilsrc/apple/dcgreasy.a
$(DCGRRGB): samplesrc/dcgrrgb.pla $(DCGRLIB) $(DCGRUTILS) $(PLASM)
./$(PLASM) -AMOW samplesrc/dcgrrgb.pla
acme --setpc 4094 -o $(DCGRRGB) samplesrc/dcgrrgb.a
$(MON): utilsrc/apple/mon.pla $(PLASM)
./$(PLASM) -AMOW utilsrc/apple/mon.pla
acme --setpc 4094 -o $(MON) utilsrc/apple/mon.a
+2
View File
@@ -113,6 +113,7 @@ mkdir prodos/demos/apple2/dcgr
cp rel/apple/DCGRTEST#FE1000 prodos/demos/apple2/dcgr/DCGRTEST.REL
cp samplesrc/ENT.* prodos/demos/apple2/dcgr
cp samplesrc/MONARCH.BIN prodos/demos/apple2/dcgr
cp rel/apple/DCGRRGB#FE1000 prodos/demos/apple2/dcgr/DCGRRGB.REL
mkdir prodos/demos/apple2/spiders
cp rel/apple/SFM#FE1000 prodos/demos/apple2/spiders/SFM.REL
@@ -150,6 +151,7 @@ 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/dcgrrgb.pla prodos/bld/samples/DCGRRGB.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
+124
View File
@@ -0,0 +1,124 @@
include "inc/cmdsys.plh"
include "inc/dcgrlib.plh"
include "inc/dcgrutils.plh"
sysflags resxtxt1|reshgr1|resxhgr1
const BLU_MSK = $001F
const GRN_MSK = $03E0
const RED_MSK = $7C00
const BLU = 0
const GRN = 1
const RED = 2
const cscale = 2
byte[12] ntscPrev
// B G R
byte[] ntscChrom
byte[] = 48, 0, 0
byte[] = 8, 48, 0
byte[] = 0, 16, 16
byte[] = 8, 0, 48
//byte[] ntscChrom
//byte[] = 32, 8, 8
//byte[] = 16, 32, 8
//byte[] = 0, 16, 16
//byte[] = 16, 8, 32
//byte[] ntscChrom
//byte[] = 127/cscale, 51/cscale, 64/cscale
//byte[] = 64/cscale, 108/cscale, 0/cscale
//byte[] = 1/cscale, 77/cscale, 64/cscale
//byte[] = 64/cscale, 20/cscale, 128/cscale
def rgb24to16(r, g, b)
return (b>>2)|((g&$F8)<<2)|((r&$F8)<<7)
end
def abs(n)
return n < 0 ?? -n :: n
end
def rgbpix(r, g, b, x, y)#0
var pr, pg, pb
var dr, dg, db
var zdist, pdist
byte i
//puts("Match: "); puti(x & 3); putln
//puti(r); putc(',');puti(g); putc(',');puti(b); putln
//puts("Prev:\n")
pr = 0
pg = 0
pb = 0
for i = x + 1 to x + 3
//puti(ntscPrev[(i&3)*3+RED]); putc(',')
//puti(ntscPrev[(i&3)*3+GRN]); putc(',')
//puti(ntscPrev[(i&3)*3+BLU]); putln
pr = pr + ntscPrev[(i&3)*3+RED]
pg = pg + ntscPrev[(i&3)*3+GRN]
pb = pb + ntscPrev[(i&3)*3+BLU]
next
//puts("-------------\n")
//puti(pr); putc(',');puti(pg); putc(',');puti(pb); putln
dr = r //abs(r - pr)
dg = g //abs(g - pg)
db = b //abs(b - pb)
zdist = dr*dr + dg*dg + db*db
i = (x&3)*3
dr = dr - ntscChrom[i+RED]
dg = dg - ntscChrom[i+GRN]
db = db - ntscChrom[i+BLU]
//puts("-------------\n")
//puti(ntscChrom[i+RED]); putc(',');puti(ntscChrom[i+GRN]); putc(',');puti(ntscChrom[i+BLU]); putln
pdist = dr*dr + dg*dg + db*db
//puts("Dist to Zero :"); puti(zdist); putln
//puts("Dist to Chroma:"); puti(pdist); putln
if pdist < zdist
ntscPrev[i+RED] = ntscChrom[i+RED]
ntscPrev[i+GRN] = ntscChrom[i+GRN]
ntscPrev[i+BLU] = ntscChrom[i+BLU]
dhgrSet(x, y)
else
ntscPrev[i+RED] = 0
ntscPrev[i+GRN] = 0
ntscPrev[i+BLU] = 0
fin
//getc
end
def rgbTest#0
var i
for i = 0 to 64
rgbpix(i, 0, 0, i, 0)
next
memset(@ntscPrev, 0, 12)
for i = 0 to 64
rgbpix(0, i, 0, i, 2)
next
memset(@ntscPrev, 0, 12)
for i = 0 to 64
rgbpix(0, 0, i, i, 4)
next
memset(@ntscPrev, 0, 12)
for i = 0 to 64
rgbpix(i, i, i, i, 6)
next
memset(@ntscPrev, 0, 12)
for i = 0 to 64
rgbpix(i, i>>2, i>>2, i, 8)
next
memset(@ntscPrev, 0, 12)
for i = 0 to 64
rgbpix(i>>2, i, i>>2, i, 10)
next
memset(@ntscPrev, 0, 12)
for i = 0 to 64
rgbpix(i>>2, i>>3, i, i, 12)
next
end
dcgrMode(0)
rgbTest
getc
dcgrMode(-1)
done