Fork of MiSTer-devel/NeoGeo_MiSTer for the MiSTer FPGA platform (Terasic DE10-Nano).
This section is the same in every rm core: it explains what the line is and
what it adds. Skip it if you already know.
rm cores are my own builds, published outside the MiSTer-devel tree. They
are not a fork of the emulation: the core is the one from MiSTer-devel, plus
what the official tree cannot host, because it requires editing the sys/
framework and MiSTer-devel does not take those changes.
CRT Adjust (H-Size, H-Position, V-Shift) and CRT V-Size let you align and size the picture on a 15 kHz tube from the OSD, with the sync left native so the screen never loses lock, and without duplicating or dropping a single line.
The point of the whole thing is where they sit: sys-side, in the analog chain between the scanline stage and the OSD. The scaler taps the video before that point, so HDMI stays bit-identical while you adjust the CRT — you can play on a tube and capture or stream a clean HDMI image at the same time. Putting the same modules inside the core would drag HDMI along with every correction, which defeats the purpose.
V-Size offers two modes: PVM (retimes the lines — perfect on broadcast monitors with a wide lock range) and Cabinet (native timing, photometric — the sync stays rock-steady on arcade chassis with tight AFC). Both are described in detail below.
The module is released standalone and shared by several of my cores: MiSTer-CRT-Adjust.
Unlike the other rm cores, there is no pause overlay here: this fork adds
the CRT geometry and nothing else. Everything else — the emulation, the audio,
the savestates — is the MiSTer-devel core, untouched.
| repository / folder | rmNeoGeo_MiSTer |
| Quartus project and RBF | rmNeoGeo |
The rm RBF has a different file name from the official core, so the two
can sit on the same SD card without overwriting each other.
With CRT Adjust set to Off the output is bit-identical to the official core, everywhere.
Three new controls in the OSD (Audio & Video page):
| Control | Range | What it does |
|---|---|---|
| CRT Adjust | Off / On | Off = pure passthrough, everywhere bit-identical to the official core |
| CRT H-Size | −16 … +15 | stretch / squeeze the picture horizontally |
| CRT H-Position | −48 … +48 px | slide the picture left / right |
| CRT V-Shift | −16 … +15 lines | move the picture up / down |
| CRT V-Size | −7 … +7 (3 lines/step) | stretch / squeeze the picture vertically |
| CRT V-Size Mode | PVM / Cabinet | how the vertical size is produced — see below |
Vertical size on a CRT can only be changed by paying a price, and the two modes pay it in different currencies — pick the one your monitor prefers:
-
PVM — retimes the line count per frame: every line stays unique (zero artifacts, the vertical twin of H-Size), but the horizontal sync frequency moves ~0.4% per line. Broadcast monitors (PVM/BVM, Barco) with a wide H-lock take it happily; arcade cabinet chassis usually don't.
-
Cabinet — the world premiere: the timing stays 100% native (HSync/VSync untouched to the Hz — losing sync is physically impossible), and the module redraws the picture the way the tube's own V-size pot would: each source line's light is photometrically redistributed (gamma-correct, energy-preserving) onto the fixed scanline grid. On big enlargements the output VSync is micro-delayed so the extra rows escape the retrace and the picture recenters itself. Trade-off: a very slight, uniform vertical softness — no banding, no doubled lines, no shimmer.
-
All adjustments act on the analog output only (VGA / YC / direct video). The HDMI scaler taps the video stream above the module, so HDMI never moves.
-
The CRT never loses sync while adjusting: content is repositioned through a line buffer and every part of the engine restarts on the same line reference — no rolling, no shimmering, no blur (see the module docs for the theory).
-
The RBF is named
rmNeoGeo.rbfand coexists with the official core.
- Works on the 15 kHz output (Scandoubler Fx = None). With the scandoubler active, CRT Adjust is bypassed automatically.
- In PAL video mode use positive V-Shift values only.
- Use with Vertical Crop disabled.
- Resource cost: ~1 M10K, ~50 ALM.
Everything else — ROM setup, memory card, CD support, docs below — is the official core, unchanged. Neo Geo core by Furrtek and the MiSTer-devel team; CRT Adjust module by rmonic79 (GPL v3, with help from Andrea Bogazzi).
This is an FPGA implementation of the NEO GEO/MVS system by Furrtek
- Supports memory card saving
- MVS, AES, and CD system support
- Compatible with Darksoft ROM sets using provided XML
- Compatible with decrypted MAME ROM sets using your own XML
- Compatible with decrypted .neo ROM sets
- Compatible with gog.com ROMs using provided XML
- Support for Universe BIOS
Note: This core does not support encrypted ROMs. Make sure the ROM has no encrypted parts before using. MAME ROM pack includes many encrypted ROMs so it's not recommended for inexperienced users. Using the .neo conversion tool with a MAME ROM set will result in some ROMs still being encrypted. There is an alternate .neo conversion tool for the Darksoft ROM set that will give you a fully decrypted set.
Darksoft to .neo conversion tool
Copy the NeoGeo_*.rbf file to the 'Console' or 'Arcade' folder (your choice) on the SD card. ROMs should go in the 'games\NeoGeo' folder. For ease of use, it is strongly suggested that people use the Darksoft ROM pack. These can be either zipped or unzipped with minimal loading speed difference. Several things must be observed:
- When using an unzipped Darksoft ROM set, each game's ROM files must be in their own folder and the folders containing the ROM sets must be named to match the XML (MAME standard names)
- ROMs can be placed inside sub-folders for organization
- Zipped ROMs must not contain folders.
In addition, several bios files must be placed in the 'games\NeoGeo' folder for the core to function properly:
- 000-lo.lo
- sfix.sfix
- sp-s2.sp1 (MVS)
- neo-epo.sp1 (AES)
- uni-bios.rom
These bios files must be placed in the 'games\NeoGeo-CD' folder:
- top-sp1.bin (CD)
- neocd.bin (CDZ)
- uni-bioscd.rom (CD and CDZ)
Sometimes these files may be named slightly different depending on where they are obtained, but they must be renamed to match the filenames above to work with MiSTer. You may choose between using the original system BIOS (sp-s2.sp1/neo-epo.sp1) or UniBios (uni-bios.rom). Using UniBios is recommended, and can be obtained here.
Lastly, romsets.xml from the release folder must also be placed in the directory. The provided XML is for Darksoft ROMs only, you must make your own for MAME ROMs. This file describes to the core where the ROM sets are located and how to load them. gog-romsets.xml can be used (renamed to romsets.xml) for games purchased from gog.com (which also include all the needed bios files), see comments in gog-romsets.xml .
In AES mode, all saves are to the memory card only. In MVS mode, some games and UniBios save their settings to a special area of battery backed ram built into the system, while game data can still be saved to a memory card.
Neo Geo uses very large ROMs. About 84% of the library will fit onto a 32 megabyte SDRAM module. Another 12% will fit onto a 64 megabyte SDRAM module. The remaining 8 games require a 128 megabyte module. For more information about which games can be loaded with which sized RAM, open romsets.xml in your favorite text editor or github. The games are organized by size.