GameBoy facade — every public method lives on that class (src/gameboy.ts). Nested fields (gb.cpu, gb.ppu, gb.joypad, …) remain available for advanced/debug access but are not required for normal hosts.GameBoy. Examples assume const gb = new GameBoy().new GameBoy(options?) Create an emulator. Options: useBootRom?: boolean (default true), autoSave?: boolean, autoSavePrefix?: string.setUseBootRom(enabled) Prefer bundled SameBoy boots (true) or skip to cart entry (false). setBootRom(rom | null) Install a custom boot ROM, or null to clear and use bundled boots on next load.loadRom(rom) Load a Uint8Array ROM, reset hardware, emit romloaded. loadRomFromFile(file) Pause → load from File → enable sound → auto-save → run(). reload() Soft reboot; preserves battery SRAM/RTC when present. unloadRom() Pause, unload ROM, clear screen; keeps input attachments. quit() Alias of unloadRom(). hasRom() / isLoaded() Whether a ROM is currently loaded. reset() Soft-reset CPU/PPU/APU/timer/joypad (keeps cart). Emits reset. run() / start() Start the requestAnimationFrame run loop. Emits resume. pause() / stop() Stop the run loop; flush dirty saves. Emits pause. resume() Alias of run(). destroy() Detach input/screen, clear listeners, unload ROM. Create a new instance afterward.step() / stepInstruction() Execute one instruction (+ peripherals). Returns T-cycles. stepFrame() Run until the next completed LCD frame. stepScanline() Run until LY changes (debug).isRunning() true while the RAF loop is active. isPaused() Inverse of isRunning(). getFps() Last measured frames-per-second. getFrameCount() Total frames presented since create. getCycles() Total CPU T-cycles since create. getTitle() Cartridge title, or null. isColorGame() true when running in CGB mode. getRomInfo() Full CartridgeInfo, or null. getCartridgeType() Header cart type byte, or null. getSystemName() "Game Boy" or "Game Boy Color". getVersion() Package version string. getRomId() / setRomId(id) Identity key used for localStorage saves/slots.0.25…8. Audio is muted automatically while effective speed > 1×.setSpeed(n) / getSpeed() Base speed multiplier (default 1). setTurboEnabled(on) / isTurboEnabled() Hold-to-fast-forward style turbo flag. toggleTurbo() Toggle turbo; returns new state. setTurboMultiplier(n) / getTurboMultiplier() Turbo speed when enabled (default 4). getEffectiveSpeed() Turbo multiplier if turbo on, else getSpeed().enableSound() Resume/create Web Audio context (call after a user gesture). mute() / unMute() / toggleMute() / isMuted() User mute preference. setVolume(v) / getVolume() Linear gain 0…1.attachScreen(canvas, options?) Bind canvas; package paints each frame. detachScreen() / clearScreen() Unbind / clear canvas. attachFpsElement(el) Write FPS: N into an element each second. setScale(n) / getScale() Integer scale when mode is integer. setScaleMode(mode) / getScaleMode() integer | fit | stretch | fullscreen. toggleFullscreen() Toggle Fullscreen API. getFrameBuffer() Live ImageData (160×144). getWidth() / getHeight() 160 / 144. takeScreenshot() Cloned ImageData of the current frame. setPalette(colors) / getPalette() / resetPalette() Override DMG greyscale shades (RGBA×4). setColorCorrection(on) / isColorCorrectionEnabled() Mild CGB present-path correction (off by default).pressButton(button) / releaseButton(button) Digital button press/release (Button enum). releaseAllButtons() Release every button. isButtonPressed(button) Current pressed state. attachKeyboard(target?) / detachKeyboard() Bind keyboard (default window). attachVirtualPad(root) / detachVirtualPad() Bind [data-btn] on-screen pad. attachGamepad(options?) / detachGamepad() Gamepad API polling. setKeyMapping(code, button) Remap a KeyboardEvent.code. setGamepadMap(map) Remap gamepad buttons/axes. onGamepadConnected(cb) / onGamepadDisconnected(cb) Gamepad plug callbacks (also emit events).hasBatterySave() Cart has battery + SRAM and/or RTC. isSaveDirty() SRAM written since last flush. getSave() / loadSave(data) Serialize / deserialize .sav bytes. enableAutoSave(prefix?) / disableAutoSave() Debounced localStorage persistence. loadAutoSave() Load from localStorage for current romId. onSaveRamUpdated(cb) Custom persistence backend (disables built-in auto-save cb). downloadSave(filename?) / loadSaveFromFile(file) Browser download / upload. setRtc(date) Set MBC3 RTC from a Date (UTC fields; no-op without RTC).createState() / loadState(data) Full-machine snapshot (Uint8Array). saveStateSlot(n) / loadStateSlot(n) In-memory + localStorage slot (1-based). downloadState(filename?) / loadStateFromFile(file) Browser download / upload.on(event, handler) / off(event, handler) Subscribe / unsubscribe. onFrameFinished(cb) Convenience wrapper for frame. onSaveRamUpdated(cb) Legacy single save callback (see Saves).frame, save, pause, resume, reset, romloaded, error, breakpoint, gamepadconnected, gamepaddisconnected.readByte(addr) / writeByte(addr, value) Peek / poke one byte. readMemory(addr, length) / writeMemory(addr, data) Block memory access. getCpuRegisters() AF/BC/DE/HL/SP/PC + flags + IME/HALT. getPpuState() LY, mode, LCDC/STAT, scroll, window. getTimerState() DIV/TIMA/TMA/TAC. getInterruptState() IE / IF / IME. setBreakpoint(addr) / removeBreakpoint(addr) PC breakpoints (pause + emit). clearBreakpoints() / getBreakpoints() Clear / list. disassemble(addr, count?) Disassemble count instructions (default 1).Cartridge, CartridgeInfo, ScaleMode, ScreenOptions, GamepadButtonMap, DmgPalette, Rgba, GameBoyEvents, debug snapshot types.integer Nearest integer multiple (default ×3 → 480×432), pixelated fit Largest size that fits the container, keep aspect stretch Fill container (may distort) fullscreen Fullscreen API + fit inside.gb / .gbc ROM you legally own.dist/gameboy.js, dist/gameboy.d.ts, README.md, LICENSE.Posted Sep 27, 2026
Developed a Game Boy emulator using TypeScript with no runtime dependencies.
0
1