The Saturn core for the MiSTer FPGA hit a milestone late last month when it committed the last several months of “unstable nightly” updates to the MiSTer’s main branch.
The March 23 update was the first one to the core’s main branch since it was first added there in October.
When a core’s update is committed to the MiSTer’s main branch, users can automatically download it along with updates to all the other cores. A main branch update is considered relatively stable and a good user experience.
It’s easier for users to get, too. The developer of the core, Sergiy Dvodnenko — aka SRG320 — has pushed smaller updates to the unstable nightlies channel of the MiSTer’s official Discord server where MiSTer owners have to manually download them to try them out.
But Dvodnenko hasn’t rested on his laurels after that main branch update. He’s issued four “unstable nightly” updates for the core since then and seven of them since SHIRO! last reported on his progress on March 15. The core’s development Github lists all of the fixes:
- VDP1
- fix horizontal inversion for pre-clipping
- fix gouraud shading
- fix start of framebuffer reading (fix top left pixel)
- rework the sprite drawing (fixed some polygon tearing, Andretti Racing speedometer)
- extended to 13 bits coordinate calculations (Duke Nukem 3D)
- fix DMA write on the boundaries between VRAM and FB (Shining Force III battle)
- VDP2
- fix used unsupported vertical resolution value for NTSC (Virtual On)
- fix reduce screen in hires mode (Sonic Jam manuals, Thunder Force V)
- fix rendering Normal scroll screens with illegal VRAM cycle pattern settings (Waku Waku 7)
- fix rendering Normal scroll screens (fix regression)
- implement external latching of HV counters
- fix out last dot in line (remove blank vertical line on the right)
- fix the position of Rotation parameter window
- SCU
- implement PAD interrupt
- fix Timer1 in synced mode (Alone in the Dark 2)
- fix interrupts (Discworld 2, Worms, X-Men vs Street Fighter)
- SMPC
- fix CKCHG commands (fix regression)
- fix warnings
- fix port 2 reading
- wait a few full frames during CKCHGxxx command (Discworld regression)
- SCSP
- fix Timers count (Waku Waku 7)
- fix Modulation calculation (Bubble Symphony)
- implement LFO
- Release 20240323 (main branch update).
- Update sys
- Adjust CPU bus input for better compilation
- Add SNAC support (only standard pad for now)
A major addition that made it in time for the March 23 main branch update was gouraud shading, the method used in many Saturn games to simulate light hitting objects’ surfaces.
A South Korean MiSTer user named Saebaryo posted to X, formerly Twitter, a comparison of screenshots illustrating how the update fixed gouraud shading in Nights into Dreams.
The most recent core update on Tuesday fixed how VDP1 uses direct memory access to write to the boundaries between video RAM and the frame buffer. It was made specifically to fix crashes that were happening during battles in Shining Force III.
Users in the MiSTer Discord server like Adventuretaco and MARI0 got right to testing out the fix.
“That’s two battles with no issues!” MARI0 said. “And with the gouraud shading support added recently, I think we finally have a fully working Shining Force III!”
Dvodnenko has been cranking out updates for the core every few days since escaping Russian occupation in eastern Ukraine at the beginning of this year. Before that, there had been only occasional updates every month or two since he first released to the public a playable build of the core in May 2022.
Anyone interested in supporting Dvodnenko can do so at his Patreon.
The MiSTer is a field-programmable gate array, a chip that can be changed by programming it to physically emulate retro video game consoles. It includes an SD card reader from which “cores” and games can be loaded.
The cores are the programming that tells the FPGA chip how to configure itself to reproduce the performance of a console. There are cores for a wide array of consoles, from the Atari 2600 to the PlayStation — and now the Saturn.
Leave a comment