Files
libretro/emulators/ngp-emu.yml
T
Abdessamad Derraz 3199bc2a55 fix: state standalone versions from their code
Each standalone profile records where its version is read: the source
at its pin (clk 2026-07-23-136-g9020107, shadps4 0.20.1 WIP, eden
v0.2.0-401-g26a03d2), the APK, binary or archive read (kind package),
or, where no reading can be made, kind unverified with the reason: a
host the tools cannot read, a forge gone or not answering, no build
recorded as read, a pin on another branch. Those keep their value,
unconfirmed.
2026-10-27 19:21:40 +01:00

81 lines
4.2 KiB
YAML

emulator: "NGP.emu"
type: standalone
core_classification: community_fork
source: "https://github.com/Rakashazi/emu-ex-plus-alpha"
upstream: "https://mednafen.github.io/"
profiled_date: "2026-08-12"
source_commit: "1c12fac5ce49badaadff2e2f210dcc30b89f4943"
core_version: "1.5.85"
version_basis:
kind: file
path: "EmuFramework/metadata/conf.mk"
pattern: '^metadata_version\s*=\s*(\S+)'
display_name: "SNK - Neo Geo Pocket / Color (NGP.emu)"
mode: standalone
cores:
- "ngp-emu"
- "NGP.emu"
- "NGP-EMU"
systems:
- snk-ngp
- snk-ngpc
notes: |
Member of the EX Emulator series by Robert Broglia, which targets Android and
Linux (README.md:1,3-4,12-13) and keeps iOS and Pandora build shortcuts in the
tree (NGP.emu/ios.mk, NGP.emu/pandora.mk). Published as com.explusalpha.NgpEmu
(NGP.emu/metadata/conf.mk:2,4,6,7) and reached by ES-DE through its NGP-EMU
find rule, which only the Android rule set carries. Mednafen's Neo Geo Pocket
module, itself descended from NeoPop, is vendored under NGP.emu/src/ngp
(NGP.emu/metadata/conf.mk:8, NGP.emu/src/main/AppMeta.cc:27) on the 1.32 line
(EmuFramework/include/shared/mednafen/mednafen-config.h:167) and driven by the
app's own video, audio, input and save layers. Three files differ from the
Mednafen 1.32.1 release, all of it frontend plumbing: the pixel format and
sound rate hooks, the input latch and the flash file I/O move to the app
(NGP.emu/src/main/Main.cc:84,102,118-131, NGP.emu/src/main/system.ccm:87,93).
The TLCS-900h disassembler is left out of the build
(NGP.emu/src/CMakeLists.txt:6-32). Content is read from .ngp, .ngc, .npc and
.ngpc files (NGP.emu/metadata/conf.mk:5, NGP.emu/src/main/AppMeta.cc:31-34,
NGP.emu/src/ngp/neopop.cpp:336-337). An archive is opened by the framework,
which keeps the first entry passing that same filter
(EmuFramework/src/EmuSystem.cc:392-412).
The content image is the only one the app loads. It is read into a 4 MiB
buffer, hashed for the save file names and handed to the module, which refuses
an image over 8 MiB (NGP.emu/src/main/Main.cc:80-85,
EmuFramework/src/shared/mednafen-emuex/MDFNUtils.hh:133-146,
NGP.emu/src/ngp/neopop.cpp:183-193). The BIOS is built in memory rather than
read: bios_install fills a 64 KiB array with the 27 system call vectors, writes
opcode 0x1F at each target, copies an 0x800 byte system font held in the binary
to 0x8DCF and closes the image with a RETI and an infinite loop
(NGP.emu/src/ngp/bios.cpp:29,50-180,182-239, NGP.emu/src/ngp/neopop.cpp:211).
That opcode is bound to the HLE handler in the interpreter decode table, and
the handler answers only from the 0xFF0000 region
(NGP.emu/src/ngp/TLCS-900h/TLCS900h_interpret.cpp:921-926,
NGP.emu/src/ngp/biosHLE.cpp:43-47). The same array is what the memory map
returns for the BIOS region and where the font routine reads its glyphs
(NGP.emu/src/ngp/mem.cpp:121, NGP.emu/src/ngp/biosHLE.cpp:221). The NGP
Language menu item feeds the ngp.language setting, written to RAM at boot
rather than selecting a file (NGP.emu/src/main/EmuMenuViews.cc:31-40,
NGP.emu/src/main/options.cc:82-83, NGP.emu/src/ngp/mem.cpp:620,
NGP.emu/src/ngp/neopop.cpp:286-299).
No firmware path exists by construction: the app answers Mednafen's file name
request for save states, saves and save backups only, and any other kind ends
in unreachable() (NGP.emu/src/main/options.cc:96-106). Cheat loading and IPS
patching are compiled in from the shared Mednafen sources and called from
nowhere (EmuFramework/src/shared/mednafen/mempatcher.cpp:251-254,
EmuFramework/src/shared/mednafen/file.cpp:38-53). Per content the app writes
and reads back a .ngf image holding the cartridge flash, plus save states and
NgpEmu.config (NGP.emu/src/main/Main.cc:53-73,118-131,
NGP.emu/src/main/system.ccm:76, NGP.emu/src/main/AppMeta.cc:28). ui.png,
gpOverlay.png and the shader sources are drawn from the application bundle
(EmuFramework/include/emuframework/AssetManager.hh:61-66,
EmuFramework/src/AssetManager.cc:58-65,
EmuFramework/src/VideoImageEffect.cc:163-173). The app declares no bundled
content, the framework definition defaulting to an empty span
(EmuFramework/src/AppMeta.cc:40,
EmuFramework/include/emuframework/AppMeta.hh:66-68).
files: []