...
This commit is contained in:
parent
da3a6d69c6
commit
da00cf317f
2 changed files with 29 additions and 27 deletions
25
Makefile
25
Makefile
|
@ -1,22 +1,27 @@
|
|||
.PHONY : all clean
|
||||
|
||||
all : dither4.xex
|
||||
all : sample0.xex sample1.xex sample2.xex sample3.xex sample4.xex sample5.xex sample6.xex
|
||||
|
||||
# sample5.s from sample5.jpg
|
||||
|
||||
# reminder: $< is input
|
||||
# $@ is output
|
||||
%.o : %.s
|
||||
ca65 -v -t atari -o $@ $<
|
||||
|
||||
%.s : %.jpg
|
||||
node dither-image.js $< $@ $@.png
|
||||
|
||||
%.o : %.s
|
||||
ca65 -v -t atari -o $@ $<
|
||||
|
||||
%.xex : %.o dither4.o
|
||||
ld65 -v -C atari-asm-xex.cfg -o $@ $<
|
||||
|
||||
dither4.xex : dither4.o sample6.o
|
||||
ld65 -v -C atari-asm-xex.cfg -o $@ $<
|
||||
|
||||
clean :
|
||||
rm -f sample5.s
|
||||
rm -f sample5.o
|
||||
rm -f dither4.o
|
||||
rm -f dither4.xex
|
||||
|
||||
#clean :
|
||||
# rm -f dither4.o
|
||||
# rm -f dither4.xex
|
||||
# rm -f sample[0-6].o
|
||||
# rm -f sample[0-6].s
|
||||
# rm -f sample[0-6].xex
|
||||
# rm -f sample[0-6].png
|
||||
|
|
|
@ -626,10 +626,8 @@ async function convert(source, nbits) {
|
|||
for (let y = 0; y < height; y++) {
|
||||
let error = lines[y - 1]?.error;
|
||||
let inputLine = input.slice(y * width, (y + 1) * width);
|
||||
console.log(`DOING LINE ${y}; have ${inputLine.length} pixels`);
|
||||
let line = decimate(inputLine, allColors, 4, error);
|
||||
lines.push(line);
|
||||
console.log(`DID LINE ${y}; have ${line.output.length} pixels`);
|
||||
}
|
||||
return {
|
||||
width,
|
||||
|
@ -640,12 +638,13 @@ async function convert(source, nbits) {
|
|||
|
||||
|
||||
function indexedToBitmap(width, nbits, src, dest) {
|
||||
let nbytes = width >> nbits;
|
||||
let nbytes = width * nbits / 8;
|
||||
let x = 0;
|
||||
for (let i = 0; i < nbytes; i++) {
|
||||
let a = 0;
|
||||
for (let b = 0; b < 8; b += nbits) {
|
||||
a <<= nbits;
|
||||
a |= src[i];
|
||||
a |= src[x++];
|
||||
}
|
||||
dest[i] = a;
|
||||
}
|
||||
|
@ -654,7 +653,7 @@ function indexedToBitmap(width, nbits, src, dest) {
|
|||
function byte2byte(arr) {
|
||||
let lines = [];
|
||||
for (let i=0; i < arr.length; i++) {
|
||||
lines.push(`.byte ${lines[i]}`);
|
||||
lines.push(`.byte ${arr[i]}`);
|
||||
}
|
||||
return lines.join('\n');
|
||||
}
|
||||
|
@ -669,24 +668,22 @@ function genAssembly(width, height, nbits, lines) {
|
|||
palette1[y] = lines[y].palette[1];
|
||||
palette2[y] = lines[y].palette[2];
|
||||
palette3[y] = lines[y].palette[3];
|
||||
indexedToBitmap(width, nbits, lines[y].output, framebuffer.slice(y * stride));
|
||||
indexedToBitmap(width, nbits, lines[y].output, framebuffer.slice(y * stride, (y + 1) * stride));
|
||||
}
|
||||
|
||||
return `
|
||||
.data
|
||||
return `.data
|
||||
|
||||
.export palette1:
|
||||
${byte2byte(palette1)}
|
||||
.export far palette1:
|
||||
${byte2byte(palette1)}
|
||||
|
||||
.export palette2:
|
||||
${byte2byte(palette2)}
|
||||
.export far palette2:
|
||||
${byte2byte(palette2)}
|
||||
|
||||
.export palette3:
|
||||
${byte2byte(palette3)}
|
||||
|
||||
.export framebuffer:
|
||||
${byte2byte(framebuffer)}
|
||||
.export far palette3:
|
||||
${byte2byte(palette3)}
|
||||
|
||||
.export far framebuffer:
|
||||
${byte2byte(framebuffer)}
|
||||
`;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue