| } | } | ||||
| }); | }); | ||||
| var DEFAULT_PALETTE = [ | |||||
| "#080808", | |||||
| "#343434", | |||||
| "#a2a2a2", | |||||
| "#efefef" | |||||
| ]; | |||||
| var OOB_COLOR = "#666666"; | |||||
| /** | /** | ||||
| * Object for manipulating the eight NES palettes. | * Object for manipulating the eight NES palettes. | ||||
| * @extends EventCaller | * @extends EventCaller | ||||
| "#000000" | "#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; | |||||
| } | |||||
| } | |||||
| if (cw <= 0 || ch <= 0){return;} | if (cw <= 0 || ch <= 0){return;} | ||||
| clear(ctx, NESPalette.Default[4]); | |||||
| clear(ctx, NESPalette.Default(4)); | |||||
| ctx.save(); | ctx.save(); | ||||
| var ctximg = ctx.getImageData(0, 0, cw, ch); | var ctximg = ctx.getImageData(0, 0, cw, ch); | ||||
| var x = (i*scale) + dx; | var x = (i*scale) + dx; | ||||
| if (x >= 0 && x < cw && y >= 0 && y < ch){ | if (x >= 0 && x < cw && y >= 0 && y < ch){ | ||||
| var color = NESPalette.Default[4]; | |||||
| var color = NESPalette.Default(4); | |||||
| if (palcolored){ | if (palcolored){ | ||||
| color = surf.getColor(i, j); | color = surf.getColor(i, j); | ||||
| } else { | } else { | ||||
| var pinfo = surf.getColorIndex(i, j); | 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); | PutPixel(x,y,scale,color); | ||||
| } | } |