34 lines
648 B
JavaScript
34 lines
648 B
JavaScript
|
function db(func) {
|
||
|
let lines = [];
|
||
|
for (let i = 0; i < 256; i += 16) {
|
||
|
let items = [];
|
||
|
for (let j = 0; j < 16; j++) {
|
||
|
let x = i + j;
|
||
|
items.push(func(x));
|
||
|
}
|
||
|
lines.push(' .byte ' + items.join(', '));
|
||
|
}
|
||
|
return lines.join('\n');
|
||
|
}
|
||
|
|
||
|
console.log(
|
||
|
`.segment "TABLES"
|
||
|
|
||
|
.export mul_lobyte256
|
||
|
.export mul_hibyte256
|
||
|
.export mul_hibyte512
|
||
|
|
||
|
.align 256
|
||
|
mul_lobyte256:
|
||
|
${db((x) => Math.round(x * x / 2) & 0xff)}
|
||
|
|
||
|
.align 256
|
||
|
mul_hibyte256:
|
||
|
${db((x) => (Math.round(x * x / 2) >> 8) & 0xff)}
|
||
|
|
||
|
.align 256
|
||
|
mul_hibyte512:
|
||
|
${db((x) => (Math.round((x + 256) * (x + 256) / 2) >> 8) & 0xff)}
|
||
|
|
||
|
`);
|