} | } | ||||
}); | }); | ||||
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); | ||||
} | } |