Zgen 0.2.0 Released

Felipe

B@nned
Level 4
0%
Joined
Sep 23, 2024
Messages
500
Level up in
500 posts
Reaction score
1,167
Points
3,477

An emulator made by Eric Pearson, also known as Pagefault from ZSNES.​

Genesis​


A Sega Genesis / Mega Drive emulator written in C++17 with SDL3 and Dear ImGui.

What This Project Is​


A desktop emulator with cycle-aware Genesis / Mega Drive hardware emulation:

  • Motorola 68000 main CPU (~7.67 MHz)
  • Zilog Z80 sound CPU (~3.58 MHz) — passes ZEXDOC conformance suite
  • VDP — planes A/B, window, sprites, scrolling, DMA, shadow/highlight, H32/H40, interlace mode 2 (320x448 double-resolution), H-interrupt driven mid-frame splits
  • YM2612 6-channel FM synthesis with LFO, SSG-EG, DAC, timers, CH3 special mode
  • SN76489 PSG — 3 tone channels + noise
  • Memory bus — full 24-bit address space, bank switching, SRAM save support
  • Controllers — 3-button and 6-button with TH counter detection

Project Status​


Playable — boots and runs games reliably. Audio and timing accuracy are under active improvement.

Features​


GUI​


Dear ImGui overlay with a menu bar, draggable windows, and responsive DPI-aware rendering that stays readable in small windows without ballooning in large ones.


  • File — open ROM, recent ROMs (last 10), reset, resume, quit
  • Settings — video, audio, emulation, and input configuration
  • Tools — cheat manager, save state browser
  • Help — controls reference, about

Video Settings​


  • Display modes: windowed, borderless fullscreen, or exclusive fullscreen
  • Exclusive fullscreen resolution selection when SDL reports display modes
  • Window size presets (1x-6x, 320x224 base) in windowed mode
  • Scaling mode: integer-only, fit, or stretch
  • Aspect ratio: auto, 4:3, 16:9, or stretch
  • Bilinear filtering toggle
  • VSync and frame limiter toggles
  • FPS counter with Simple and Detailed profiler modes
  • On-screen performance breakdown for emulation, render, swap/present, UI, SDL, audio, and idle time

Audio Settings​


  • Buffer size presets (75ms / 150ms / 300ms radio buttons) with fine-tune slider (50–500ms)
  • 48 kHz stereo output (respects system sample rate)

Save States​


  • 10 slots per game with thumbnail previews (320x224 screenshots)
  • Quick save/load hotkeys (F5/F7), slot browser (F6), and slot navigation (F4/F8)
  • Full state serialization: CPU, RAM, VDP, audio chips

Cheat Manager​


  • Format: FFFFFF:YY (byte) or FFFFFF:YYYY (word)
  • Per-cheat enable/disable toggles
  • RAM search with known-value and unknown-initial-state workflows
  • Result refinement (Changed, Unchanged, Increased, Decreased, Equal To Value, Not Equal To Value)
  • Set Once memory editing and Freeze cheat creation from search results
  • ROM-sidecar cheat save/load (.cht next to the ROM)
  • Real-time freeze application during emulation

Input Rebinding​


  • Game controls and emulator hotkeys are rebindable with visual key-capture UI
  • Persistent storage (~/.genesis/keybindings.txt)
  • Reset to defaults with confirmation

Rendering Backends​


  • OpenGL 3.2+ (default) — shader-based framebuffer rendering
  • Vulkan 1.0+ (compile-time option) — full swapchain, render pass, and descriptor set pipeline
 
Will this support 32-X and Sega CD without the need for a Bios? Will it have rewind?
 
I saw him hinting about this on X!!! Very exciting. Needs snow animations.

Agreed, even if it's not needed it gave older emulators some personality:
zsnes-animated.gif.cb50c376d5952a931f5e220eae44527a.gif

At least it was better than Genecyst's blood effect.
 
Wow I forgot all about Genecyst. That was weird!
This was by the same team behind Nesticle (yeah, they got creative with the names). This tells it was the 90's and DOS.

I agree though, love the personality touches.
Yeah, I also liked Gens' effect when no games were loaded
1773003959080.png

Sadly I couldn't find any gif of it.

Kega had TV statics which were fine but probably less interesting visually.
 
An update was released:

What's New​


Audio / Sound​


  • Fix YM2612 busy flag: Disabled the overly long busy flag that starved the Z80 sound driver, causing clippy/missing music in games using the GEMS sound driver (Top Gear 2, Gargoyles, and many others)
  • Fix Timer B prescaler: Corrected from 8 to 16 FM samples per increment, matching the YM2612 datasheet. Fixes DAC sample playback rate for correct music tempo
  • Fix YM2612 status register reads: All addresses in the $4000-$5FFF (Z80) and $A04000-$A04003 (68K) ranges now correctly return the status byte. Previously only $4000 worked, causing games like Mega Turrican to hang on a busy-flag spin loop

CPU Timing​


  • Fix M68K instruction timing: Match yacht.txt v1.1 reference for accurate 68000 cycle counts
  • Fix 68K quick memory operation timing
  • Z80 EI instruction: Properly delays interrupt enable by one instruction, matching real Z80 hardware

Video​


  • Fix VDP timing: Correct VPA interrupt delay, HBLANK flag behavior, and pixel output timing

Other​


  • Add --debug flag: All diagnostic logging is now gated behind --debug for zero overhead in normal use
  • Windows build fix: Add SDL_main entry point and GUI subsystem support
 
New update

v0.6.5 - Timing, audio, SRAM, and Vulkan builds

Highlights​

  • Adds a Windows Vulkan release package alongside the existing Linux, macOS, and Windows OpenGL packages.
  • Improves raster timing, FIFO behavior, DMA ordering, and VSRAM latch handling for more stable mid-frame effects.
  • Improves Z80, YM2612, and PSG cadence so audio drivers keep advancing during long main-CPU activity and interrupt windows.
  • Fixes direct-mapped SRAM access and cartridge startup edge cases that affected save-backed titles.

Emulator Accuracy​

  • Panorama Cotton: fixes bottom HUD flash, paused HUD instability, gameplay black-line artifacts, and related cold-boot rendering regressions.
  • Top Gear 2: fixes race-screen red-line flashes, black-line artifacts, and left-edge race viewport corruption.
  • F1: fixes the PAL race viewport bottom border so bottom garbage is not drawn below the active race image.
  • Clue: fixes corrupted menu background pixels after cold boot and Start input.
  • Darius: fixes startup BUSACK handling and title-logo FIFO/drop artifacts.
  • Flashback: improves intro music cadence by keeping Z80 V-int pulse timing and audio chip clocks aligned.
  • OutRun: keeps title-screen rows and sky bands stable in the regression scenes.
 

Users who are viewing this thread

Connect with us

Support this Site

RGT relies on you to stay afloat. Help covering the site costs and get some pretty Level 7 perks too.

Featured Video

Latest Threads

Goblins

Twice is a coincidence, three's a pattern, and I've noticed an uptick in goblin employment over...
Read more

The "Death & Lead" Game Dev Situation is Crazy

Screenshot 2026-06-04 000832.png

Not news but an interesting watch about this "Kai Magazine" dev.

Read more

Has anyone read the Metroid manga?

Hey everyone,

I just started reading the Metroid manga from 2002 (published in Magazine-Z), and...
Read more

Online statistics

Members online
179
Guests online
2,393
Total visitors
2,572

Forum statistics

Threads
19,770
Messages
500,867
Members
926,735
Latest member
GamesFor3DS

Today's birthdays

Advertisers

Back
Top