awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
Baekalfen avatar

Baekalfen/PyBoy

0
View on GitHub↗
5,159 stars·534 forks·Python·9 views

PyBoy

PyBoy is a programmable Game Boy emulator and hardware simulation framework written in Python. It functions as an emulation engine that allows users to execute original handheld software while providing a programmatic interface to control, probe, and automate game execution.

The project is specifically designed as a reinforcement learning environment, exposing emulator states and controls to facilitate the training of machine learning agents. It distinguishes itself by providing tools for game area mapping and the extraction of simplified 2D screen representations and collision maps to support artificial intelligence.

The system covers a broad range of capabilities including cycle-accurate hardware emulation, direct memory read and write operations, and a callback system for execution hooks. It supports the extraction of real-time game data, such as sprite positions and memory symbols, and includes a headless execution mode to accelerate simulation speed by bypassing graphics and audio rendering.

The emulator also provides utilities for state persistence via snapshot serialization, input simulation for autonomous agents, and tools for memory analysis and ROM data modification.

Features

  • Programmable Emulator APIs - Provides a programmable emulator with a Python API for automating inputs and managing emulation state.
  • Reinforcement Learning Environments - Provides a simulated Game Boy environment specifically designed for training reinforcement learning agents.
  • Emulator Headless Modes - Offers a headless execution mode to accelerate simulation speed by bypassing graphics and audio rendering for AI training.
  • High-Speed Simulators - Runs simulations at high speed to shorten training cycles for reinforcement learning agents.
  • Reinforcement Learning Environments - Exposes a standardized interface for state, action, and reward logic to train reinforcement learning agents.
  • Hardware State Inspectors - Provides a public API for external scripts to read and modify internal registers and system memory.
  • Instruction-To-Function Mappings - Decodes original binary machine code by mapping opcodes directly to corresponding Python functions for emulation.
  • Game Boy Emulators - Functions as a programmable emulator specifically for Game Boy ROMs using Python.
  • Emulation State Scripting - Provides a programmatic interface to manage the emulator as an object to automate gameplay and adjust execution speed.
  • Real-time State Debugging - Allows for the live inspection of game object properties, health, and sprite positions during execution.
  • Real-time Game Data Extraction - Enables real-time extraction of screen tile identifiers, sprite positions, and internal scores during emulation.
  • Retro Game Emulation - Implements a full emulator to run classic Game Boy handheld software on modern operating systems.
  • Emulator State APIs - Exposes internal registers and system memory through a public API for external scripting and automation.
  • Real-time State Hooks - Provides programmatic interfaces to consume live game state data such as player positions and scores.
  • Handheld Console Emulation - Replicates handheld gaming hardware to execute original Game Boy ROMs on modern architectures.
  • Hardware Component Simulation - Simulates Game Boy hardware components, including the CPU and memory, for accurate software execution.
  • Memory-Mapped I/O - Manages communication between the CPU and hardware components by assigning controls to specific memory addresses.
  • Hardware Emulators - Provides the hardware emulation as a programmable Python object for scripted control and probing.
  • Cycle-Accurate Emulators - Implements cycle-accurate hardware emulation to precisely mimic the timing and behavior of the original Game Boy.
  • Autonomous Game Agents - Sends external control signals and reports on-screen objects to enable autonomous AI agents to play games.
  • Game Automation Systems - Enables automated gameplay and behavior verification through scripted inputs and memory state monitoring.
  • Visual Game State Analysis - Analyzes visual screen data and memory symbols to derive the current state of the game for AI agents.
  • Execution Hooks - Triggers custom callback functions when the system executes specific memory addresses or symbols.
  • Retro Game Debuggers - Provides execution hooks and graphics visualization to analyze the internal logic of legacy game software.
  • Headless Execution Modes - Bypasses graphics and audio rendering to accelerate emulation speed for automated testing and AI training.
  • Emulator Save State Managers - Provides capabilities to capture and restore the exact volatile memory state of the emulated system.
  • Game Memory Modifiers - Allows inspecting and modifying CPU registers and system memory to inject cheat codes or alter game variables.
  • Game Memory Extraction - Extracts real-time state values, such as player scores and sprite positions, from game memory.
  • Game State Manipulators - Manipulates game execution and memory through scripts to automate inputs and probe internal variables.
  • Memory-Based - Allows the retrieval of specific sprite and tile objects, including positions and identifiers, directly from memory.
  • Screen Map Data Extraction - Extracts simplified 2D screen representations and collision maps from the emulation to support AI training.
  • Direct Memory Access - Enables direct reading and writing of raw memory addresses and CPU registers to modify game state.
  • Memory Address Identification - Includes tools for discovering and identifying the specific memory addresses where game variables are stored.
  • Execution Speed Controls - Implements mechanisms to manage the temporal execution rate of the emulated system via multipliers.
  • Machine State Serialization - Captures a binary dump of all registers and memory to save and restore the complete system state.
  • Execution Event Hooks - Triggers custom user-defined functions when the emulator reaches specific memory addresses or system symbols.
  • Game Input Simulation - Sends button presses and releases with specific frame delays to simulate human interaction with the game.
  • Emulator Development - Hardware overview for emulator development purposes.

Star history

Star history chart for baekalfen/pyboyStar history chart for baekalfen/pyboy

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to PyBoy

Similar open-source projects, ranked by how many features they share with PyBoy.
  • mgba-emu/mgbamgba-emu avatar

    mgba-emu/mgba

    6,798View on GitHub↗

    mGBA is a high-accuracy Game Boy Advance emulator and hardware-level debugger designed to run handheld console ROMs on modern computers. It serves as a scriptable emulation environment that allows for the execution of portable hardware software and the simulation of associated peripherals. The project distinguishes itself through its focus on technical analysis, providing a suite of tools for retro game debugging and game logic inspection. It includes a host-client debug protocol that enables external debugger connectivity via TCP socket communication and an event-driven scripting engine for

    Cemulatorgame-boygame-boy-advance
    View on GitHub↗6,798
  • humpheh/goboyHumpheh avatar

    Humpheh/goboy

    2,637View on GitHub↗

    Goboy is a GameBoy emulator written in Go that allows original handheld game ROMs to run on modern computer hardware. It supports both monochromatic and color display modes. The project includes specialized tools for retro game debugging and graphics inspection. These capabilities allow for the analysis of game logic by stepping through opcodes, profiling processor execution in real time, and inspecting background palettes, sprite data, and map layouts. The emulator provides game state preservation by writing cartridge RAM to local files. It also implements pixel-buffer rasterization for ren

    Goemulatorgameboygameboy-emulator
    View on GitHub↗2,637
  • bfirsh/jsnesbfirsh avatar

    bfirsh/jsnes

    6,397View on GitHub↗

    jsnes is a JavaScript-based NES emulator that runs classic NES games in the browser or in Node.js. It provides cycle-accurate CPU emulation, frame-buffer-based video rendering, and sample-buffer audio synthesis, along with a ROM cartridge mapper abstraction for broad game compatibility. The emulator exposes a programmable core with a simple API for controlling emulation state, capturing screenshots, and managing save data. It supports keyboard control remapping at runtime, with settings persisted to localStorage, and offers state serialization for save and restore operations. Battery-backed S

    JavaScript6502emulationemulator
    View on GitHub↗6,397
  • visualboyadvance-m/visualboyadvance-mvisualboyadvance-m avatar

    visualboyadvance-m/visualboyadvance-m

    3,864View on GitHub↗

    Visualboyadvance-m is a cross-platform hardware simulator and Game Boy Advance emulator. It replicates handheld console hardware to run Game Boy Advance and Game Boy Color software on modern desktop computers. The project also serves as a handheld console debugger for analyzing emulated code and validating homebrew software. The system is designed as a modular Libretro emulation core, allowing it to be loaded as a pluggable component into compatible frontend applications. This decoupled architecture separates the emulation logic from the user interface to ensure the engine can run across diff

    C++
    View on GitHub↗3,864
See all 30 alternatives to PyBoy→

Frequently asked questions

What does baekalfen/pyboy do?

PyBoy is a programmable Game Boy emulator and hardware simulation framework written in Python. It functions as an emulation engine that allows users to execute original handheld software while providing a programmatic interface to control, probe, and automate game execution.

What are the main features of baekalfen/pyboy?

The main features of baekalfen/pyboy are: Programmable Emulator APIs, Reinforcement Learning Environments, Emulator Headless Modes, High-Speed Simulators, Hardware State Inspectors, Instruction-To-Function Mappings, Game Boy Emulators, Emulation State Scripting.

What are some open-source alternatives to baekalfen/pyboy?

Open-source alternatives to baekalfen/pyboy include: mgba-emu/mgba — mGBA is a high-accuracy Game Boy Advance emulator and hardware-level debugger designed to run handheld console ROMs on… humpheh/goboy — Goboy is a GameBoy emulator written in Go that allows original handheld game ROMs to run on modern computer hardware.… bfirsh/jsnes — jsnes is a JavaScript-based NES emulator that runs classic NES games in the browser or in Node.js. It provides… visualboyadvance-m/visualboyadvance-m — Visualboyadvance-m is a cross-platform hardware simulator and Game Boy Advance emulator. It replicates handheld… amhndu/simplenes — SimpleNES is a C++ application that simulates original Nintendo Entertainment System hardware to run legacy games on… ntasfi/pygame-learning-environment — PyGame Learning Environment is a Python framework that provides a standardized interface for training artificial…