| @@ -16,6 +16,15 @@ JSONSchema.add({ | |||
| } | |||
| }); | |||
| var DEFAULT_PALETTE = [ | |||
| "#080808", | |||
| "#343434", | |||
| "#a2a2a2", | |||
| "#efefef" | |||
| ]; | |||
| var OOB_COLOR = "#666666"; | |||
| /** | |||
| * Object for manipulating the eight NES palettes. | |||
| * @extends EventCaller | |||
| @@ -298,12 +307,28 @@ NESPalette.SystemColor = [ | |||
| "#000000" | |||
| ]; | |||
| NESPalette.Default = [ | |||
| "#080808", | |||
| "#343434", | |||
| "#a2a2a2", | |||
| "#efefef", | |||
| "#666666" // Out of bounds color. | |||
| ]; | |||
| NESPalette.Default = function(index){ | |||
| if (index >= 0 && index < DEFAULT_PALETTE.length) | |||
| return DEFAULT_PALETTE[index]; | |||
| return OOB_COLOR; | |||
| } | |||
| NESPalette.SetDefaultColor = function(index, r,g,b){ | |||
| var Hex = (c) => { | |||
| c = c.toString(16); | |||
| return (c.length < 2) ? "0" + c : c; | |||
| }; | |||
| var Clamp = (c) => { | |||
| return Math.floor(Math.max(0, Math.min(255, c))); | |||
| }; | |||
| var color = "#" + Hex(Clamp(r)) + Hex(Clamp(g)) + Hex(Clamp(b)); | |||
| if (index >= 0 && index < DEFAULT_PALETTE.length){ | |||
| DEFAULT_PALETTE = color; | |||
| } else { | |||
| OOB_COLOR = color; | |||
| } | |||
| } | |||
| @@ -45,7 +45,7 @@ function render(surf, sx, sy, sw, sh, scale, ctx, dx, dy, palcolored){ | |||
| if (cw <= 0 || ch <= 0){return;} | |||
| clear(ctx, NESPalette.Default[4]); | |||
| clear(ctx, NESPalette.Default(4)); | |||
| ctx.save(); | |||
| var ctximg = ctx.getImageData(0, 0, cw, ch); | |||
| @@ -80,12 +80,12 @@ function render(surf, sx, sy, sw, sh, scale, ctx, dx, dy, palcolored){ | |||
| var x = (i*scale) + dx; | |||
| if (x >= 0 && x < cw && y >= 0 && y < ch){ | |||
| var color = NESPalette.Default[4]; | |||
| var color = NESPalette.Default(4); | |||
| if (palcolored){ | |||
| color = surf.getColor(i, j); | |||
| } else { | |||
| var pinfo = surf.getColorIndex(i, j); | |||
| color = (pinfo.ci >= 0) ? NESPalette.Default[pinfo.ci] : NESPalette.Default[4]; | |||
| color = (pinfo.ci >= 0) ? NESPalette.Default(pinfo.ci) : NESPalette.Default(4); | |||
| } | |||
| PutPixel(x,y,scale,color); | |||
| } | |||