CGB Player
The ComfyUI node that plays Game Boy Advance games (it won't make images, and that's the point)
Let's get the big thing out of the way first: ComfyGameBoyPlayer ("CGB Player") is not an image node. It has zero inputs, zero outputs, and it will never touch your pipeline. What it does is put a working Game Boy Advance emulator inside a node on your canvas. You drop it in, load a BIOS and a .gba ROM through the emulator's own menu, and play - while your ComfyUI graph idles in the background, as if that's not deeply unhinged.
It ships in ComfyUI_GB_Player, a small pack by WASasquatch - the same person behind WAS Node Suite, one of the old guard essential packs that shows up in every "what should I install" thread. So yes, this is a toy, but it's a well-made toy from a real developer, not a sketchy one-node repo you found at 2am.
How it works
The Python side is basically a stub. ComfyGameBoyPlayer is an output node with an empty INPUT_TYPES dict and a run() that returns () - the entire node is frontend. The magic lives in web/comfy_gameboy_player.js, a ComfyUI extension that intercepts the node class before it's registered.
When you add the node, the extension spawns a sandboxed <iframe> (permissions: scripts, forms, downloads - no same-origin access) and pins it over the node's rectangle on the canvas. The iframe loads extensions/ComfyUI_GB_Player/gba/player/index.html, which is a vendored, fully-offline build of the gba.js.org emulator running the IodineGBA core. Everything - emulator, core, assets - ships inside the repo, so no internet, no model downloads, no API.
A few details worth knowing:
- The iframe tracks your node via the draw loop, so it pans, zooms, and resizes with the graph. It hides when you collapse the node and cleans itself up when you delete it.
- It picks up ComfyUI's theme through CSS variables and pushes them into the iframe as
was-gba-thememessages, so the emulator matches your dark theme instead of blinding you. AMutationObserverre-syncs it if you switch themes mid-session. - Because ComfyUI auto-loads any
.jsin an extension folder, the vendored emulator scripts are renamed to.js.txtso they don't get executed as extensions. If that rename ever breaks, the iframe goes blank.
The inputs and outputs that matter
There are none. Not a single input, not a single output. That's not a bug - it's a UI/embed node by design. Everything you configure lives inside the emulator UI: a file picker for the GBA BIOS and one for the .gba ROM. Practically speaking the two things you'll actually touch are those two files. You need a GBA BIOS (gba_bios.bin) for most games, and the game itself. Emulation happens entirely in your browser tab; the node never touches your GPU.
Install
Same drill as any custom node. Via ComfyUI Manager, search for ComfyUI_GB_Player and install. Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/ComfyUI_GB_Player
Restart ComfyUI, then add CGB Player from the WAS/Play category. There are no Python dependencies - requirements.txt is empty - and nothing to download, which is refreshing in a world where half the packs in Manager want a 6GB model before they'll render a square. Note it declares requires-comfyui >= 1.0.0, so on a pre-1.0 install don't be surprised if it misbehaves.
Common issues
- The player UI doesn't update after changes. The extension is cached. Hard-refresh with
Ctrl+F5or clear the browser cache for the ComfyUI site. - Node appears but the iframe is blank. Open DevTools and confirm the path
extensions/ComfyUI_GB_Player/gba/player/index.htmlactually resolves. If it 404s, the extension isn't being served - usually a stale install. - Iframe misaligned during zoom/pan. Update
web/comfy_gameboy_player.jsto the latest from the repo, and if you have multiple copies installed across differentcustom_nodesfolders, delete the old ones. Duplicate extensions stepping on each other is the classic cause of weird overlay jank.
Should you install it?
If you want it to do something for your workflow, no - it produces nothing and won't. But if you've ever wanted a quick bit of Zelda in the middle of a long batch queue, or you're building a "everything in the graph, including the games" demo, it's free fun and costs you one install. Just don't confuse it with the other Game Boy thing floating around - the "Game Boy Camera" node that renders images at 128×112 - that one's a filter and does produce images. This is an emulator, full stop.
Inputs (0)
No inputs
Outputs (0)
No outputs