Skip to content

Releases: Tixul/Ngpcraft_emulator

v2.7.1

Choose a tag to compare

@github-actions github-actions released this 26 Jul 10:58

Full Changelog: v2.7...v2.7.1

Added

HLE BIOS: link cable support. The COM group (0x10–0x1A) is now a real ring driver, so two-player link works with no BIOS dump, at the retail BIOS's own byte rate.
HLE BIOS: in-game saves. Real flash driver , including the second die of 4 MiB cartridges. Saves now work with no BIOS dump.
Three BIOS slots with a selector (Settings > Console): colour NGPC dump, monochrome NGP dump, or the built-in HLE image. The emulator identifies each image and says which console it belongs to; an empty slot falls back and tells you.
Monochrome NGP console. The 3-bit LUT level resolves straight to one of eight greys, and cartridge writes to the colour palette and mode register are discarded, as on K1GE silicon.
Link tab in the debugger (F1). Per-stage byte counts, CTS/RTS with hold times, both serial interrupts, plus a one-sentence verdict naming the earliest blocked stage. Byte injection, loopback (echo/sink) and impairment (latency, loss, cut) let you test with one console.
Graphics filter plugins. Point a setting at your own folder; each plugin is one Python file (NAME, SCALE, apply). None are shipped (the good scalers are copyleft, this project is MIT). Plugins are smoke-tested at load and rejected with a reason.
Cartridge language setting (system byte 0x6F87). Bilingual games used to run in Japanese by accident; English is now the default.
Manual clock mode. Set the console's date and time by hand — the only way to set it under the HLE image, which has no setup screen.
Library: a Regenerate covers button, full file name kept when two dumps share a title, full path on hover.

Fixed

Save corruption from the second session on under-filled cartridges: the .ngc was rewritten at the guessed capacity, the 0xFF padding then counted as ROM image, and later saves were ANDed into an unerased block. Already-inflated files repair themselves on next load.
Card-type byte could outlive the block map, so a game asking for its 8 KB save block could erase 64 KB of its own code.
Auto flash size is now derived from the block number the game passes to the BIOS, before the erase happens. Setting the size by hand should no longer be needed.
BIOS settings are persisted as the BIOS left them: language no longer reverts, the colour theme sticks, and a first boot no longer re-runs the setup wizard every time.
Covers are no longer discarded when the BIOS changes.
Library scan no longer follows junctions and symlinks (duplicate entries, or a scan cut short).
A failed ROM open shows a dialog instead of aborting the process from a Qt slot.
INTLVSET now writes through its work-RAM shadow (0x6C24–0x6C2B), which is what games actually read.
Metal Slug — 2nd Mission now play

Known limitations

The monochrome NGP is a restricted K2GE, not a K1GE implementation: a game probing the video chip still finds a K2GE, and the NEG (inverted display) bit is not applied. Checked on a few titles only.
A game reading BIOS work RAM directly, instead of calling the API, sees our layout rather than SNK's.

v2.6.2

Choose a tag to compare

@github-actions github-actions released this 24 Jul 23:33

Full Changelog: 2.6...v2.6.2

-Link cable (multiplayer)
The headline feature: two consoles can now be wired together through the emulated
link cable.

-Controllers
Cross-platform gamepad support through SDL2/pygame (Xbox, PlayStation, and more via SDL's controller-mapping database), with XInput as a Windows fallback (ngpc_input.py).

-ROM loading
ROMs can be loaded straight from archives: .zip (standard library) and .7z (via py7zr, or a 7z/7za command-line tool on PATH) — core/rom_loader.py.

-HLE BIOS
Distributable high-level BIOS (hle_bios/bios_hle.bin): the emulator can boot without a commercial bios.bin.
Interface and comfort

Exit fullscreen with Escape or a double-click (you could get stuck in fullscreen before).
Auto-hiding toolbar (idle mouse hides it, any movement brings it back).
Hide sidebar and toolbar in fullscreen (option, on by default) — also fixes the stretched aspect ratio after a display change.
Resizable windows (three user reports addressed).
Portable settings: optional config.ini next to the emulator (otherwise the Windows registry).

v2.5

Choose a tag to compare

@github-actions github-actions released this 24 Jul 11:23

Full Changelog: v2.4...v2.5

New — Fan-translation toolkit (Debug tools, F1)
A full set of tools for translating any game, all driven by a character table you load (.tbl, the standard romhacking format). Nothing is game-specific, and every result shows its ROM file offset so a hit maps straight to a byte in the cartridge.

Text — decode a region into readable strings, search for a phrase by its exact bytes, scan a whole region for every string at once (an exportable script dump), or run a relative search that finds a word under an unknown encoding by its letter spacing (no table needed).
Crack — type a few words you can read on screen and it builds the .tbl for you: each word is located automatically (or pinned with word @ offset) and its bytes become a real table you can edit, save, or use immediately. Works even on non-alphabetical encodings.
Pointers — find every pointer to an address (to repoint a moved string) or locate the pointer tables themselves. 16 / 24 / 32-bit little-endian, base offset, tolerance.
Compare — byte-diff the running cartridge against a second .ngc. An existing patch's changed ranges are the text, shown decoded on both sides.
Tile viewer — hover any tile to read its index, VRAM address, referencing planes and 16 raw bytes; click to copy.
New — Load tab (live resource gauges)
Green-to-red bars that update as the game runs:

Sprites (OAM) — active sprites out of 64.
Char RAM — distinct tiles referenced out of 512.
Frame rate — whether the game is finishing its work in time (the honest "is it overloaded" signal).
Both VRAM gauges are exact counts read straight from video memory.

Fullscreen & window
Fullscreen now hides the sidebar and toolbar for the game alone (optional, on by default).
In fullscreen, the toolbar auto-reveals when you move the mouse and hides again when it's still — always reachable, never in the way.
Exit fullscreen with Esc or a double-click (double-click also enters it).
The toolbar can auto-hide when the mouse goes idle and reappear on any move, in windowed mode too (optional, on by default).
The main window and the debug window can now be made much smaller — long help text used to force them very wide; they resize freely now.
Fixes
Aspect ratio no longer stretches after toggling fullscreen or hiding the sidebar/toolbar. (The frame was being scaled to the old canvas size, and a paused game never corrected it.)
Library covers no longer render as white boxes (issue #2): covers are rendered by booting each game, which needs bios.bin — with none, the cards now stay blank and say why, instead of caching a blank frame forever. They render automatically once a BIOS is set.
Notes
New options live in Settings > Video: Hide UI in fullscreen, Auto-hide toolbar when idle.
If a game looks stretched to 16:9 in fullscreen, set Settings > Video > Aspect to Fit window or Pixel-perfect (Stretch fills the screen ignoring the 160:152 ratio, by design).
English and French translations updated.

v2.4

Choose a tag to compare

@github-actions github-actions released this 23 Jul 19:54

Full Changelog:

What's new

Layer masks — show/hide each background and sprite plane. A new Layers tab in Debug tools lets you toggle SCR1, SCR2, and the three sprite groups (back / mid / front) independently, with solo, a live preview, and PNG export. Because text and background always live on separate planes on this hardware, hiding a plane answers "which layer carries this text?" and gives you a clean background sheet — without touching VRAM.
exemple: Kikouseki_Unitron_(J)_s4_full

Kikouseki_Unitron_(J)_s4_scr1_plane Kikouseki_Unitron_(J)_s4_scr2_plane

Library covers no longer render as white boxes. Covers are drawn by booting each game, which needs a real bios.bin; with none, a game never reaches its title screen and every card came out a blank box — and that blank frame was then cached, so it stayed white even after a BIOS was added. Now blank captures are never cached, no game is booted without a BIOS, covers re-render automatically once a BIOS is set, and the Library says why the cards are empty.

Fixes

The BIOS is no longer described as optional — both start modes require it, and games won't run without one.
Fixed a nav-label wrapping test that failed on Linux/macOS CI due to font differences.

v2.2

Choose a tag to compare

@github-actions github-actions released this 22 Jul 14:01

Full Changelog: v2.1...v2.2

v2.1

Choose a tag to compare

@github-actions github-actions released this 21 Jul 19:07

Full Changelog: v2.0...v2.1

v2.0

Choose a tag to compare

@github-actions github-actions released this 20 Jul 20:56

Full Changelog: v1.8...v2.0
introduce multiplatforme compatibility

NgpCraftEmulator_v1.8

Choose a tag to compare

@Tixul Tixul released this 20 Jul 18:30
add theme and picture for control assignation

ngpcraft_emulator_v1.7

Choose a tag to compare

@Tixul Tixul released this 19 Jul 17:57

major update

ngpcraft_emulator_v1.6

Choose a tag to compare

@Tixul Tixul released this 19 Jul 09:20
Implement persistent RTC, update fps and tile view