Skip to content

About

An offline, dependency-light portable recompilation and runtime framework for Hummer Team's Somari (NES, mapper 4).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Somari-Recomp

Gemini_Generated_Image_5j41485j41485j41 An offline, dependency-light portable recompilation and runtime framework for Hummer Team's Somari (NES, mapper 4).

Features support for 33 platforms, universal input emulation (Gamepad, Keyboard, and Touchscreen), native console HALs, standalone retro ports, asset extraction from legitimate ROMs, and in-memory modding support.

ROM Notice : No copyrighted ROM or binary assets are bundled. The project requires your own legitimate Somari.nes file to extract prg.bin, chr.bin, and metadata. .gitignore strictly ignores all *.nes and *.sfc files.


Supported Platforms (33 Targets)

  1. Modern PC & OS: Win10 x86, Win11 x64, Linux, BSD, macOS, HaikuOS, ArcaOS (OS/2)
  2. Mobile: iOS, Android, Windows Phone (8.1 / 10 Mobile), Symbian OS (S60), J2ME (Java Micro Edition)
  3. Nintendo Consoles & Handhelds: Switch, Wii, Wii U, N64, 3DS, NDSi, GBA, SNES (Super Nintendo)
  4. Sony PlayStation: PS1, PS2, PSP, PS3, PS Vita, PS4, PS5
  5. Microsoft Xbox: Xbox OG, Xbox 360
  6. Sega Consoles: Sega Genesis / Mega Drive, Sega CD, Sega 32X, Sega Saturn, Sega Dreamcast

See docs/PLATFORMS.md for full compilation steps and toolchain documentation.


Quick Start (PC / Mac / Linux)

# 1. Build launcher and runtime
cmake -B build && cmake --build build

# 2. First run: extracts assets and runs
./build/somari --rom Somari.nes

# 3. Subsequent runs launch instantly from somari-data/assets
./build/somari

Standalone Asset Extraction Tool

python3 tools/somari_tool.py info Somari.nes                   # Inspect ROM
python3 tools/somari_tool.py extract Somari.nes somari-data/assets  # Extract assets
python3 tools/somari_tool.py header Somari.nes somari_rom.h   # Export C header
python3 tools/somari_tool.py snes Somari.nes snes_assets/     # Convert to SNES format
python3 tools/somari_tool.py genesis Somari.nes md_assets/    # Convert to Genesis format
python3 tools/somari_tool.py gba Somari.nes gba_assets/       # Convert to GBA format

Input Emulation

The input subsystem (src/hal/input_map.c) bridges all controller formats into NES inputs:

  • Gamepads & Controllers: Left analog stick to D-Pad with configurable deadzones; support for Xbox, PlayStation DualShock/DualSense, Nintendo Switch Joy-Con/Pro, Wii Classic/Wiimote, 3DS Circle Pad, PSP nub, and Dreamcast stick.
  • Keyboard: Fully remappable keys via somari-data/input.ini (Default: Arrow keys + X/Z, Enter=Start, RShift=Select; Player 2: WASD + K/J).
  • Touchscreen: Responsive on-screen virtual D-Pad and action buttons for iOS, Android, Windows Phone, 3DS bottom screen, PS Vita OLED front touch, Switch handheld mode, and J2ME touch devices.
  • SOCD Sanitation: Cleans simultaneous opposite cardinal direction presses.

Mods Support

Mods are loaded without modifying the original game ROM:

  1. Place mod files in somari-data/mods/<mod_name>/.
  2. Add the mod name to somari-data/mods/mods.txt.
  3. Configure mod.ini to apply IPS patches or asset replacements:
    name=My Somari Mod
    patch_prg=gameplay_hack.ips
    patch_chr=sprites_palette.ips
  4. Create patches using tools/somari_tool.py ips original.bin modified.bin patch.ips. Made With SI.

About

An offline, dependency-light portable recompilation and runtime framework for Hummer Team's Somari (NES, mapper 4).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages