
Research
SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.
gb-image-decoder
Advanced tools
This package renders GameBoy-encoded images to a canvas element.
You may need the gbp-decode package to decode various sources.
Or you may want to use the arduino-gameboy-printer-emulator.
There are a lot more similar projects for aquiring raw tile data.
Import within your Project
import { RGBNDecoder, Decoder, RGBNTiles } from 'gb-image-decoder';
Have a canvas element inside your DOM
const myCanvas: HTMLCanvasElement = document.createElement('canvas');
Have a set of tiles (each string represents a 8x8 tile)
// For classic monochrome images:
const myTiles: string[] = [ // need 360 of these for a 160x144 image
'7D FF 0A FF 7D FF FF FF 5F FF BB FF 5D FF FF FF', '75 FF A2 FF 44 FF FF FF 5D FF FF FF FF FF FF FF', '55 FF 1F FF 57 FF FF FF 7D FF FF FF FF FF FF FF', '77 FF FD FF 57 FF FF FF 75 FF FF FF DF FF FF FF',
];
Have a palette for your monochrome image
const monoPalette = ['#ffffff', '#aaaaaa', '#555555', '#000000'];
Initialize the decoder:
const decoder = new Decoder();
decoder.update({
canvas: myCanvas,
tiles: myTiles,
palette: monoPalette,
lockFrame: false,
invertPalette: false,
});
RGB(N) Images can contain any of the channels. All channels are optional, but the r,g,b channels are recommended.
Your image needs a set of RGBN tiles:
// For RGBN images
const myTilesRGBN: RGBNTiles = { // need 360 of each for a 160x144 image
r: ['7D FF 0A FF 7D FF FF FF 5F FF BB FF 5D FF FF FF', '75 FF A2 FF 44 FF FF FF 5D FF FF FF FF FF FF FF', '55 FF 1F FF 57 FF FF FF 7D FF FF FF FF FF FF FF', '77 FF FD FF 57 FF FF FF 75 FF FF FF DF FF FF FF'],
g: ['7F FF BF FF FF FF FF FF DF FF FF FF FF FF FF FF', 'A2 D5 FC C3 4C D3 FE C1 D8 E4 ED F2 FF F1 DB FC', 'EA 55 83 FC 48 F5 07 F8 A4 53 A8 07 A3 5C FE 01', 'FF 3F FF 3F FF 3F 7F BF FF 3F FF 7F 7D FF FF FF'],
b: ['F7 FF A3 FF FF FF FF FF FF FF FF FF FF FF FF FF', '0A F5 80 FF 40 FF F1 FE FB FD F0 FF 52 FD E1 FE', '88 77 40 BF 2A D5 18 EF 88 77 04 FB AA 55 17 E8', 'A0 5F 51 AE AA 55 54 AB AA 55 05 FA AA 55 67 98'],
// neutral image is optional
};
For RGBN there is a default blend palette available:
import { defaultPalette as rgbnPalette } from 'gb-image-decoder';
Initialize the decoder:
const decoder = new RGBNDecoder();
decoder.update({
canvas: myCanvas,
tiles: myTilesRGBN,
palette: rgbnPalette,
lockFrame: false,
});
FAQs
Decoder classes for GameBoy-encoded images
The npm package gb-image-decoder receives a total of 27 weekly downloads. As such, gb-image-decoder popularity was classified as not popular.
We found that gb-image-decoder demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.

Company News
Socket is proud to join the OpenJS Foundation as a Silver Member, deepening our commitment to the long-term health and security of the JavaScript ecosystem.

Security News
npm now links to Socket's security analysis on every package page. Here's what you'll find when you click through.