zx-kit 0.16.2 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/renderer.d.ts +55 -0
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +87 -3
- package/dist/renderer.js.map +1 -1
- package/package.json +1 -1
package/dist/renderer.d.ts
CHANGED
|
@@ -127,5 +127,60 @@ export declare function drawTextCentered(ctx: CanvasRenderingContext2D, text: st
|
|
|
127
127
|
* drawScanlines(ctx, 0.35) // stronger effect
|
|
128
128
|
*/
|
|
129
129
|
export declare function drawScanlines(ctx: CanvasRenderingContext2D, alpha?: number): void;
|
|
130
|
+
/**
|
|
131
|
+
* An arbitrary-size monochrome bitmap. Width must be a multiple of 8 (byte-aligned).
|
|
132
|
+
* `data` is row-major: `(width/8) * height` bytes, with bit 7 = leftmost pixel of each byte.
|
|
133
|
+
*
|
|
134
|
+
* Common sizes:
|
|
135
|
+
* - 16×16 → 32 bytes (small character, Manic Miner style)
|
|
136
|
+
* - 16×24 → 48 bytes (taller character, Jetman style)
|
|
137
|
+
* - 24×24 → 72 bytes (large enemy)
|
|
138
|
+
* - 32×32 → 128 bytes (boss / vehicle)
|
|
139
|
+
*
|
|
140
|
+
* Use {@link createBitmap} for safe construction, {@link drawBitmap} to render,
|
|
141
|
+
* {@link mirrorBitmap} to derive a horizontally-flipped variant.
|
|
142
|
+
*/
|
|
143
|
+
export interface Bitmap {
|
|
144
|
+
/** Row-major pixel data: bytes = (width/8) * height. Bit 7 of each byte is the leftmost pixel. */
|
|
145
|
+
data: Uint8Array;
|
|
146
|
+
/** Width in pixels. Must be a positive multiple of 8. */
|
|
147
|
+
width: number;
|
|
148
|
+
/** Height in pixels. Must be positive. */
|
|
149
|
+
height: number;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Constructs a {@link Bitmap} with validation. Throws on invalid dimensions
|
|
153
|
+
* or wrong byte count so the error surfaces at definition time, not render time.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* const JETMAN_STAND = createBitmap(new Uint8Array([
|
|
157
|
+
* 0x03, 0xC0, // row 0 (16 px wide → 2 bytes per row)
|
|
158
|
+
* 0x07, 0xE0, // row 1
|
|
159
|
+
* // … 22 more rows
|
|
160
|
+
* ]), 16, 24)
|
|
161
|
+
*/
|
|
162
|
+
export declare function createBitmap(data: Uint8Array, width: number, height: number): Bitmap;
|
|
163
|
+
/**
|
|
164
|
+
* Draws a {@link Bitmap} of arbitrary width and height at game coordinates `(x, y)`.
|
|
165
|
+
* If `paper` is provided, fills the full bounding rectangle first; otherwise leaves the
|
|
166
|
+
* background untouched (transparent).
|
|
167
|
+
*
|
|
168
|
+
* Same ink/paper applies to the whole sprite — there is no per-cell colour attribute.
|
|
169
|
+
* For multi-colour effects, overlay several bitmaps at the same position.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* drawBitmap(ctx, JETMAN_STAND, x, y, C.B_WHITE, C.BLACK)
|
|
173
|
+
* drawBitmap(ctx, ROCKET_BASE, x, y, C.B_YELLOW) // transparent background
|
|
174
|
+
*/
|
|
175
|
+
export declare function drawBitmap(ctx: CanvasRenderingContext2D, bitmap: Bitmap, x: number, y: number, ink: SpectrumColor, paper?: SpectrumColor): void;
|
|
176
|
+
/**
|
|
177
|
+
* Returns a horizontally-flipped copy of `src`. The original is not modified.
|
|
178
|
+
* Use at module load time to derive left-facing sprites from right-facing definitions.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* export const HERO_RIGHT = createBitmap(HERO_RIGHT_BYTES, 16, 24)
|
|
182
|
+
* export const HERO_LEFT = mirrorBitmap(HERO_RIGHT)
|
|
183
|
+
*/
|
|
184
|
+
export declare function mirrorBitmap(src: Bitmap): Bitmap;
|
|
130
185
|
export declare function flashBorder(color: SpectrumColor, times: number, intervalMs: number, resetColor?: SpectrumColor): void;
|
|
131
186
|
//# sourceMappingURL=renderer.d.ts.map
|
package/dist/renderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAiB1D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,KAAK,SAAM,EACX,MAAM,SAAM,GACX,wBAAwB,CAS1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,SAAI,GAAG,IAAI,CAS3E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAUxD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,UAAU,EAClB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GACvC,IAAI,CAKN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,aAAa,GACxC,IAAI,CAON;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,aAAa,GACxC,IAAI,CAIN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,aAAa,GACxC,IAAI,CAGN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,SAAO,GACX,IAAI,CASN;AAoBD,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,aAAuB,GAClC,IAAI,CAmBN"}
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAiB1D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,KAAK,SAAM,EACX,MAAM,SAAM,GACX,wBAAwB,CAS1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,SAAI,GAAG,IAAI,CAS3E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAUxD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,UAAU,EAClB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GACvC,IAAI,CAKN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,aAAa,GACxC,IAAI,CAON;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,aAAa,GACxC,IAAI,CAIN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,aAAa,GACxC,IAAI,CAGN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,SAAO,GACX,IAAI,CASN;AAID;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,MAAM;IACrB,kGAAkG;IAClG,IAAI,EAAE,UAAU,CAAA;IAChB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAcpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,EAClB,KAAK,CAAC,EAAE,aAAa,GACpB,IAAI,CAoBN;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkBhD;AAoBD,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,aAAuB,GAClC,IAAI,CAmBN"}
|
package/dist/renderer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { C, CELL } from './palette.js';
|
|
2
2
|
import { getCharRow } from './font.js';
|
|
3
|
-
function
|
|
3
|
+
function _draw8x8Bits(ctx, getByte, x, y) {
|
|
4
4
|
for (let row = 0; row < 8; row++) {
|
|
5
5
|
const byte = getByte(row);
|
|
6
6
|
for (let bit = 0; bit < 8; bit++) {
|
|
@@ -103,7 +103,7 @@ export function drawSprite(ctx, sprite, x, y, ink, paper) {
|
|
|
103
103
|
ctx.fillStyle = paper;
|
|
104
104
|
ctx.fillRect(x, y, CELL, CELL);
|
|
105
105
|
ctx.fillStyle = ink;
|
|
106
|
-
|
|
106
|
+
_draw8x8Bits(ctx, row => sprite[row], x, y);
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
109
|
* Draws a single ASCII character at game coordinates using the ROM font.
|
|
@@ -126,7 +126,7 @@ export function drawChar(ctx, code, x, y, ink, paper) {
|
|
|
126
126
|
ctx.fillRect(x, y, CELL, CELL);
|
|
127
127
|
}
|
|
128
128
|
ctx.fillStyle = ink;
|
|
129
|
-
|
|
129
|
+
_draw8x8Bits(ctx, row => getCharRow(code, row), x, y);
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
132
132
|
* Draws a string left-to-right starting at game coordinates `(x, y)`.
|
|
@@ -194,6 +194,90 @@ export function drawScanlines(ctx, alpha = 0.25) {
|
|
|
194
194
|
}
|
|
195
195
|
ctx.restore();
|
|
196
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Constructs a {@link Bitmap} with validation. Throws on invalid dimensions
|
|
199
|
+
* or wrong byte count so the error surfaces at definition time, not render time.
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* const JETMAN_STAND = createBitmap(new Uint8Array([
|
|
203
|
+
* 0x03, 0xC0, // row 0 (16 px wide → 2 bytes per row)
|
|
204
|
+
* 0x07, 0xE0, // row 1
|
|
205
|
+
* // … 22 more rows
|
|
206
|
+
* ]), 16, 24)
|
|
207
|
+
*/
|
|
208
|
+
export function createBitmap(data, width, height) {
|
|
209
|
+
if (!Number.isInteger(width) || width <= 0 || width % 8 !== 0) {
|
|
210
|
+
throw new Error(`createBitmap: width must be a positive multiple of 8, got ${width}`);
|
|
211
|
+
}
|
|
212
|
+
if (!Number.isInteger(height) || height <= 0) {
|
|
213
|
+
throw new Error(`createBitmap: height must be a positive integer, got ${height}`);
|
|
214
|
+
}
|
|
215
|
+
const expected = (width / 8) * height;
|
|
216
|
+
if (data.length !== expected) {
|
|
217
|
+
throw new Error(`createBitmap: data length mismatch — expected ${expected} bytes for ${width}×${height}, got ${data.length}`);
|
|
218
|
+
}
|
|
219
|
+
return { data, width, height };
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Draws a {@link Bitmap} of arbitrary width and height at game coordinates `(x, y)`.
|
|
223
|
+
* If `paper` is provided, fills the full bounding rectangle first; otherwise leaves the
|
|
224
|
+
* background untouched (transparent).
|
|
225
|
+
*
|
|
226
|
+
* Same ink/paper applies to the whole sprite — there is no per-cell colour attribute.
|
|
227
|
+
* For multi-colour effects, overlay several bitmaps at the same position.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* drawBitmap(ctx, JETMAN_STAND, x, y, C.B_WHITE, C.BLACK)
|
|
231
|
+
* drawBitmap(ctx, ROCKET_BASE, x, y, C.B_YELLOW) // transparent background
|
|
232
|
+
*/
|
|
233
|
+
export function drawBitmap(ctx, bitmap, x, y, ink, paper) {
|
|
234
|
+
const { data, width, height } = bitmap;
|
|
235
|
+
const bytesPerRow = width / 8;
|
|
236
|
+
if (paper !== undefined) {
|
|
237
|
+
ctx.fillStyle = paper;
|
|
238
|
+
ctx.fillRect(x, y, width, height);
|
|
239
|
+
}
|
|
240
|
+
ctx.fillStyle = ink;
|
|
241
|
+
for (let row = 0; row < height; row++) {
|
|
242
|
+
const rowOffset = row * bytesPerRow;
|
|
243
|
+
for (let byteIdx = 0; byteIdx < bytesPerRow; byteIdx++) {
|
|
244
|
+
const byte = data[rowOffset + byteIdx];
|
|
245
|
+
if (!byte)
|
|
246
|
+
continue;
|
|
247
|
+
const colBase = byteIdx * 8;
|
|
248
|
+
for (let bit = 0; bit < 8; bit++) {
|
|
249
|
+
if (byte & (0x80 >> bit))
|
|
250
|
+
ctx.fillRect(x + colBase + bit, y + row, 1, 1);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Returns a horizontally-flipped copy of `src`. The original is not modified.
|
|
257
|
+
* Use at module load time to derive left-facing sprites from right-facing definitions.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* export const HERO_RIGHT = createBitmap(HERO_RIGHT_BYTES, 16, 24)
|
|
261
|
+
* export const HERO_LEFT = mirrorBitmap(HERO_RIGHT)
|
|
262
|
+
*/
|
|
263
|
+
export function mirrorBitmap(src) {
|
|
264
|
+
const { data, width, height } = src;
|
|
265
|
+
const bytesPerRow = width / 8;
|
|
266
|
+
const out = new Uint8Array(data.length);
|
|
267
|
+
for (let row = 0; row < height; row++) {
|
|
268
|
+
const rowOffset = row * bytesPerRow;
|
|
269
|
+
for (let byteIdx = 0; byteIdx < bytesPerRow; byteIdx++) {
|
|
270
|
+
const srcByte = data[rowOffset + byteIdx];
|
|
271
|
+
let m = 0;
|
|
272
|
+
for (let bit = 0; bit < 8; bit++) {
|
|
273
|
+
if (srcByte & (1 << bit))
|
|
274
|
+
m |= (1 << (7 - bit));
|
|
275
|
+
}
|
|
276
|
+
out[rowOffset + (bytesPerRow - 1 - byteIdx)] = m;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return { data: out, width, height };
|
|
280
|
+
}
|
|
197
281
|
/**
|
|
198
282
|
* Flashes `document.body.style.backgroundColor` between `color` and `resetColor`.
|
|
199
283
|
* Fire-and-forget — does not block. Uses `setInterval` internally.
|
package/dist/renderer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,IAAI,EAAsB,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,SAAS,
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
|