Skip to content

apullin/rpi-infones

Repository files navigation

rpi-infones

Bare-metal InfoNES port for Raspberry Pi Zero / 1A+ (ARM1176 / BCM2835). It targets the CS140e firmware/bootloader workflow, but it is not required: a direct SD-boot kernel.img is published as a release artifact.

Build

Requirements:

  • arm-none-eabi-gcc / arm-none-eabi-g++
  • CMake 3.27+
  • Python 3 (for the UART gamepad helper)

Build:

cmake -B build -S .
cmake --build build -j

Artifacts:

  • build/rpi_infones.elf
  • build/rpi_infones.bin (raw binary for SD boot or pi-install)

SD Card Setup

Format the SD card as FAT32 and copy the Raspberry Pi boot firmware files to the SD root:

  • bootcode.bin
  • start.elf
  • fixup.dat
  • config.txt
  • kernel.img (either the staff bootloader, or this project’s binary)

config.txt should include:

  • kernel_address=0x8000
  • enable_uart=1
  • gpu_mem=64

Create a saves directory (SRAM writes go here):

/SAVES

ROMs:

  • Place .nes files anywhere on the SD card (menu starts at /).
  • Optional: /Metadata/... can hold cover art (menu will look for it if present).

Boot Options

Direct SD Boot (no UART bootloader)

If you grabbed the release artifact, just copy the provided kernel.img to the SD root.

Copy the raw binary to the SD root as kernel.img:

cp build/rpi_infones.bin /Volumes/<SDCARD>/kernel.img
sync

Then power the Pi. The GPU boot ROM loads kernel.img to 0x8000 and jumps to it, which matches this project’s linker script (platform/memmap.ld).

UART Bootloader (staff bootloader)

Keep the staff kernel.img on the SD card and use the class pi-install tool to send the binary:

pi-install build/rpi_infones.bin

After the program starts, exit the UART bootloader on the host side before running the gamepad helper.

Input

UART “gamepad” is supported. See:

UART_NES_Controller.md

Run the helper after the emulator starts:

./uart_nes_controller.py

Notes

  • Audio synthesis is enabled in the core, but there is no I2S backend wired up yet.
  • A direct SD-boot kernel.img is available as a release artifact.

About

Port of pico-infones to Raspberry Pi Zero "bare metal"

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages