Skip to content

About

Open-source standalone research and emulation project targeting the Nikko digiBLAST handheld console (Samsung S3C2410 / ARM920T)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

55 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OceanBlast

OceanBlast

Download Windows Build License: GPLv3 Changelog

OceanBlast is an open-source, independent research and emulation project targeting the Nikko digiBLAST (2005), a European multimedia handheld console powered by the Samsung OCEAN-L-20 System-on-a-Chip (Samsung S3C2410 architecture, ARM920T CPU core).

The goal of this project is digital preservation, architectural documentation, and software interoperability for an obscure and historically undocumented platform.


πŸ–ΌοΈ Interface & Console Skin Preview

Interactive Console Skin (--window-mode skin) Cartridge Loading Illustration Preview
OceanBlast Console Skin OceanBlast Loading Illustration

Prebuilt Windows Binaries: Ready-to-run Windows 64-bit builds (oceanblast.exe + skin assets) are available on the GitHub Releases page.


πŸš€ Quick Start & Windows Launcher

Double-click bin/oceanblast.exe (or oceanblast.exe from a release archive) without arguments to open the 1024Γ—768 OceanBlast frontend:

  1. Press Strg+O, choose Datei β†’ ROM laden…, or drag and drop a legally dumped .bin cartridge image directly onto the OceanBlast start screen.
  2. Open Einstellungen β†’ Steuerung to test your controller live (XInput, DirectInput8, Google Stadia, Xbox, PlayStation, or generic USB gamepads), apply a controller preset (Stadia / Xbox, PlayStation, digiBLAST / USB), or click any row in the mapping table to interactively learn a controller button or keyboard key.
  3. Adjust audio volume, aspect ratio (3:2 Native, 4:3, Stretched), integer/smooth scaling, window appearance (Plain Window, Console Skin, or Fullscreen via F11 / Alt+Enter), and CPU timing under Einstellungen (persisted to %APPDATA%\OceanBlast\windows.ini).

Automatic per-cartridge settings are enabled by default (see docs/43, docs/34, and docs/33).


πŸ“Š Cartridge Compatibility Overview (2026-10-10)

All tested cartridges boot autonomously through the 4-KB S3C2410 Steppingstone SRAM, U-Boot 1.1.2 (nidc NAND ID & checkbattery ADC checks), and the embedded Linux 2.6.11 kernel without kernel panics or guest segmentation faults. Sustained full-speed gameplay and glitch-free audio synchronization remain under active development.

For the complete chronological engineering log and all 44 technical reports (docs/00–docs/43), see CHANGELOG.md.

1. Commercial Game Cartridges (11 / 11 Boot to Game Binary)

Cartridge Title Boots (U-Boot + Linux) Menus / In-Game Status Audio Status Display / Technical Notes & Docs
Crazy Jack [G] (EN) βœ… Yes 🟒 Title, Level Select & In-Game 🟑 Plays (underruns) Native 12-bpp LCD444 via GPH8 = 1 (docs/16, docs/25, docs/42)
Cuccioli Cerca Amici [G] (IT) βœ… Yes 🟑 Main Menu & Save-Slot Select 🟑 Plays (unverified) 64 MB NAND (0x98, 0x76) (docs/12, docs/28)
DigiQUAD [G] (EN) βœ… Yes 🟒 Main Menu & Racing Scene 🟑 Improved (docs/20) Native 12-bpp LCD444 (GPH8 = 1); DMA fix (docs/18, docs/42)
Gormiti: Agguato nella Valle [G] (IT) βœ… Yes 🟑 Title, Character Select & Bracket 🟑 Plays (unverified) Scene transition sensitive to input timing (docs/17, docs/28)
Gormiti: Lotta Oscura [G] (IT) βœ… Yes 🟑 Intro & Title / Start Prompt 🟑 Plays (unverified) 32 MB NAND (docs/12, docs/28)
Gormiti: Masters of the Gorm Island [G] (IT) βœ… Yes 🟒 Main Menu & In-Game Level/HUD 🟑 Plays (unverified) 32 MB NAND (docs/12, docs/28)
Pitfall: The Lost Expedition [G] (EN) βœ… Yes 🟑 Intro, Title & Gameplay 🟑 Plays (slow pacing) Native 12-bpp LCD444; auto 2Γ— ratio (docs/21, docs/34)
Rayman 3 [G] (M10) βœ… Yes 🟑 Intro, Title & In-Game 🟑 Stutters under load High CPU/blitter load (docs/12, docs/18)
Spider-Man: Mysterio's Menace [G] (EN) βœ… Yes 🟒 Main Menu, Story & In-Game 🟑 Plays (metallic/crackling) ~17.5 FPS sampled changes at 1Γ— (docs/12, docs/18)
Superstar Chefs [G] (EN) βœ… Yes 🟒 Menus & Interactive Gameplay 🟑 Improved at 4Γ— (docs/37) Native 12-bpp LCD444 (GPH8 = 1); auto 2Γ— ratio (docs/24, docs/42)
Wade Hixton's Counter Punch [G] (EN) βœ… Yes 🟒 Intro, Menus & First Fight 🟑 Improved (-50% frame work) GPH8 = 1 removes 16-bpp shadow blit (4.5M -> 2.25M steps/frame) (docs/41, docs/42)

2. Video & Combined Game+Video Cartridges

Cartridge Group Boots & Launches Player Video Output Media Controls & Audio Notes & Documentation
Gormiti / SpongeBob / Yu-Gi-Oh! (Video) βœ… Yes 🟒 Visible Episode Imagery 🟑 Keypad Controls Active 240-row scanout & coherent frame latch (docs/28, docs/31, docs/32)
SpongeBob / Winx (IT/ES Combined Game+Video) βœ… Yes 🟒 Language Menu & Episode Video 🟑 Keypad Controls Active Native 12-bpp LCD444 (GPH8 = 1) & I2C EEPROM (docs/16, docs/42); intl. Winx has corrupt blocks (docs/14)
Sonic X / Winx (IT/ES Video-Only) βœ… Yes 🟑 Decodes Frames at High CPU Budget 🟑 Play/Pause/Seek Verified Dark at 1Γ—; decodes colored RealVideo frames at higher budget (docs/30, docs/33)
Totally Spies / Winx (NL Video-Only) βœ… Yes πŸ”΄ Black Framebuffer at Tested Budget 🟑 Player State Reaches PLAYING Active framebuffer remains zeroed at 2.5B steps (docs/28, docs/30)

πŸ›οΈ Hardware & Emulated Subsystems

The Nikko digiBLAST hardware is built around the Samsung S3C2410A / OCEAN-L-20 processor:

Subsystem Hardware Specification Emulation Status
CPU Core & MMU ARM920T (ARMv4T, 32-bit ARM + 16-bit Thumb, CP15, MMU, 16 KB I/D-Cache) βœ… Interpreter with fast page-cache, AP permission faults (Linux COW), and bounded batches (docs/05, docs/37)
Memory & Boot 4 KB Steppingstone SRAM (0x00000000), 32 MB SDRAM (0x30000000) βœ… Autonomous 4 KB NAND boot copy, SDRAM mirroring (0x32000000), and MMIO bus (docs/01)
NAND Flash S3C2410 NAND (0x4E000000), Toshiba TC58 / Samsung K9 (16–128 MB) βœ… Read ID (0x90 for nidc), 512+16 raw OOB passthrough, and 1-bit Hamming ECC synthesis (docs/03, docs/39)
Clocks & Timer 4 PLL (MPLLCON, CLKDIVN) & PWM Timer 4 (0x51000000, HZ=200) βœ… Register-derived FCLK/HCLK/PCLK, 200-Hz IRQ 14, and 1-Β΅s TCNTO4 interpolation (docs/17, docs/23, docs/41)
Display (s3c2410fb) 2.7" TFT LCD (0x4D000000, 240Γ—160 / 240Γ—240, 12-bpp LCD444 & 16-bpp RGB565) βœ… DXGI VSync presenter, coherent frame latch, GPH8 handheld LCD strap, 12-bpp & 16-bpp decoding (docs/10, docs/32, docs/42)
Audio (DMA2 + IIS) S3C2410 IIS (0x55000000), DMA Ch. 2 (0x4B000080), CS43L43 DAC 🟑 Consumed-sample DMA capture, dynamic IIS rate detection & Win32 waveOut resampler (docs/20, docs/23)
Input (greykbd) GPIO Ports F & G (0x56000050), External IRQs EINT0..23 βœ… D-Pad, A/B/C, L/R, Start/Select, media keys (KEY_P/S/B/N), and XInput / DirectInput8 / Stadia controller remapping (docs/33, docs/43)
I2C EEPROM & ADC 2-KB I2C EEPROM (0x54000000), Battery ADC (0x58000000) βœ… Persistent/volatile 2-KB EEPROM state and checkbattery ADC conversion (docs/03, docs/16)

πŸ› οΈ Building, Testing & Command-Line Usage

Prerequisites

  • A C++17 compiler (g++ / MinGW-w64 or MSVC) and windres on Windows
  • make (optional, for automated builds and test suites)

Building from Source

make

Or compile directly with windres and g++:

windres src/display/oceanblast.rc -O coff -o build/oceanblast_res.o
g++ -std=c++17 -Wall -Wextra -O2 -Isrc \
    src/main.cpp \
    src/memory/bus.cpp \
    src/cpu/arm920t.cpp \
    src/cartridge/cart_parser.cpp \
    src/display/display_win32.cpp \
    src/audio/audio_win32.cpp \
    build/oceanblast_res.o \
    -lgdi32 -luser32 -lwinmm -lcomdlg32 -lcomctl32 -lshell32 -lole32 -ldinput8 -ldxguid -ld3d11 -ldxgi -ld3dcompiler -lgdiplus \
    -o bin/oceanblast.exe

Running ROM-Free Regression Suites

make test
make test-windows

Command-Line Invocation

bin/oceanblast.exe <path_to_cartridge_dump.bin> [--steps <N>] [--gui] [--window-mode <plain|skin>] [--fullscreen] [--scale <2|3|4>] [--sound] [--clock-mips <N>] [--profile]

Default Controls (Configurable in Einstellungen β†’ Steuerung)

Console Button Hardware Line Default Controller Binding Host Keyboard Key
D-Pad GPF2 / GPF7 / GPF3 / GPF6 D-Pad (POV Hat) or Left Stick Arrow Keys
Button A / B / C GPF0 / GPF1 / GPF4 B1 (A/Cross) / B2 (B/Circle) / B3 (X/Square) (B4 in Stadia/Xbox preset) Z (K) / X (J) / C
L / R Shoulder GPG11 / GPG8 B5 (LB/L1) / B6 (RB/R1) A (Q) / S (W)
Start / Stop GPG10 (EINT18) B8 (Start/Options) (B12 on Stadia DInput) Enter or F9
Select / Play-Pause GPG9 (EINT17) B7 (Back/Select) (B11 on Stadia DInput) Space or F10
Rewind / Forward GPG0 / GPG13 LT (L2) / RT (R2) or B9 / B10 F8 / F12
Open ROM / Fullscreen / Stop β€” β€” Ctrl+O / F11 (Alt+Enter) / Escape

βš–οΈ Legal & Interoperability Notice

1. Independent Reverse-Engineering & Interoperability Implementation

OceanBlast is an independent open-source software implementation written from scratch for hardware documentation, digital preservation, and interoperability. Hardware and system behavior is modeled using publicly available documentation (such as the Samsung S3C2410A User's Manual) combined with empirical protocol and binary interoperability analysis.

2. No Proprietary Assets, Firmware, or ROMs

  • OceanBlast does not contain, distribute, host, or link to any proprietary software, bootloader/kernel binaries, copyrighted game ROMs, commercial operating system images, or cryptographic secrets.
  • All testing and usage of this emulator require users to supply their own legally acquired cartridge dumps for personal preservation and research purposes.
  • Reconstructed visual skin assets in assets/ are original vector/raster reconstructions created for the emulator interface.

3. Research, Preservation & Interoperability Context

Development and interoperability analysis are conducted in good faith for research, education, digital preservation, and software compatibility (see, where applicable in your jurisdiction, statutory provisions regarding interoperability and research such as EU Directive 2009/24/EC Art. 6, 17 U.S.C. Β§ 1201(f), or Β§ 69e UrhG). Note: This statement describes the project's technical scope and intent and does not constitute legal advice.

4. Trademark & Nominative Use Notice

All product names, logos, brands, and trademarksβ€”including Nikko, digiBLAST, Grey Innovation, Samsung, RealPlayer, Ubisoft, and individual game or media titlesβ€”are the property of their respective owners and are referenced solely for descriptive identification. OceanBlast is completely independent and is not affiliated with, authorized, sponsored, or endorsed by Nikko Entertainment B.V., Grey Innovation Pty Ltd, Samsung Electronics Co., Ltd., or any game publishers.

5. Disclaimer of Warranty

THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. SEE THE GNU GENERAL PUBLIC LICENSE v3.0 FOR FULL TERMS.


πŸ“„ License

This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for the full license text.

About

Open-source standalone research and emulation project targeting the Nikko digiBLAST handheld console (Samsung S3C2410 / ARM920T)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages