SNES
Event Carts Support:
PowerFest '94:
- Event cart support (MX15001 board emulation): boot the Scoring ROM and it assembles the full competition cart from the sibling game dumps (Lost Levels, Super Mario Kart, Ken Griffey Jr. MLB) found next to it, zipped or raw
- Added on-screen tournament timer display + configurable time limit in the Hacks dialog (the board's DIP switches, 3–18 minutes)
- Selecting a missing game reboots the menu and resets the session timer; game ROMs are rescanned on hard reset.
- 4 Roms needed:
- PowerFest 94 - Scoring (USA).zip
- PowerFest 94 - Ken Griffey Jr. Presents Major League Baseball (USA).zip
- PowerFest 94 - Super Mario Kart (USA).zip
- PowerFest 94 - Super Mario Bros. - The Lost Levels (USA).zip
Nintendo Campus Challenge '92:
- Event cart support (SNES-EVENT board, EVENT-CC92): the combined cart image boots and chains menu → Super Mario World → F-Zero → Pilotwings (DSP-1 wired for Pilotwings)
- Added on-screen tournament timer display + configurable time limit in the Hacks dialog (the board's DIP switches, 3–18 minutes)
- 1 Rom needed:
- Nintendo Campus Challenge 1992 (USA, Europe) (Competition Cart).zip
Timing / IRQ
- Latch pending timer IRQ on
$4211read — a tight TIMEUP polling loop can no longer miss an IRQ that already fired mid-instruction (accepted upstream as snes9x PR snes9xgit#1062) - Revert Circuit USA APU speedup hack to 2 — the 1.59 SMP-clock retune value made the menu palette DMA race the CGRAM-gradient HDMA
SuperFX (GSU)
- Cycle-accurate GSU timing: replaced the flat per-scanline instruction budget with a master-clock cycle budget and real per-op costs (cached/uncached fetch, RAM/ROM access, cache-line fill, plot/rpix, multiplies per CFGR MS0).
snes9x_overclock_superfxremains a true throughput knob (100 = hardware) - Fix RPIX clearing DREG too early (upstream, by Wyatt)
Game Boy
Audio (APU)
- Silence ultrasonic tone channels (CH1/CH2/CH3 parked above the output Nyquist) at the source — the box-filter decimator no longer folds them back into the audible band as fixed high-pitched tones; rate-adaptive (32k/48k, DMG/SGB/CGB)
- Keep digitized voice audible above Nyquist: channels streaming 4-bit PCM through ultrasonic squares now emit the physically-correct DC level (duty-cycle average / wave-RAM mean) instead of a frozen bit
Video / PPU
- Cycle-precise VBlank IRQ latch: the IRQ lands on the same instruction boundary as real DMG regardless of CPU/PPU interleave skew (verified byte-identical to SameBoy per-instruction traces)
- SGB: reconstruct DMG BGP raster write timing — mid-scanline palette stores are re-mapped to the dot they were aimed at and the corrected line is re-pushed into the ICD2 capture ring (SameBoy-verified)
GTK
- RetroAchievements support — full parity with win32/Qt: login/logout, achievement list, hardcore mode with confirm prompt, unlock toasts and challenge/progress badges via the shared overlay; config keys match win32/Qt so a shared install reuses the same credentials
Win32
- Fixed frozen screen when switching renderer Vulkan → Direct3D/DirectDraw (render window is recreated on display reset)
- Render window handle made local to win32_display.cpp; removed the OpenGL↔Vulkan toggle warnings (upstream, by OV2)
Internationalization / Translations
- Japanese translation updated (thanks Nekokabu)
Game fixed:
- Star Fox (SNES, Super FX) - Accurate intro, runs at the currect speed.
- Winter Gold / FX Skiing (SNES, Super FX) — the long-standing garbled-skier bug at race start is fixed: with cycle-accurate GSU timing the pose-cel publish is held one frame from CPU view (matching hardware measured frame-by-frame against a Mesen2 trace), so the game no longer commits a stale arrangement over the new pose tiles (upstream issue snes9xgit#533)
- Traverse: Starlight & Prairie (SNES, Japan) — no longer hangs after the birthday screen: its vsync-wait polls
$4211mid-instruction and now observes the timer IRQ as hardware would (regression since 1.55; upstream issues snes9xgit#540, snes9xgit#614) - Circuit USA (SNES) — menu no longer blacks out: the 512-byte palette DMA lands in VBlank again instead of racing the CGRAM-gradient HDMA mid-frame (upstream issue snes9xgit#563)
- PowerFest '94 (SNES) — the historical black-screen hang is gone (the MCU status register now reads 0 at boot) and the full tournament flow works: menu, all three game segments, DIP-switch time limit, score persistence; a standalone Lost Levels dump also plays as a normal game
- Nintendo Campus Challenge '92 (SNES) — boots and runs the full event chain (Super Mario World → F-Zero → Pilotwings) with its own timer settings
- NFL Football (Europe) (Proto) (SNES) — clean menus and full Mode 7 in-game rendering, no more crashes (was reading open-bus / wrapped save RAM due to the junk cart header), pin the real board config (32 KB battery SRAM + PAL region) — the junk internal header made auto-detection run the game off the rails.
- Sumou Fighter (GB) — stray '07' tile no longer appears in the background during the title scroll-in (the VBlank ISR fired one instruction late, letting a tile-copy run with the sound ISR's leftover ROM bank)
- Top Rank Tennis (GB) — the digitized "Play!" and score-call voices are back (they stream PCM through squares parked at freq 0x7FF, which the ultrasonic suppression was gating to silence)
- Pit Fighter (GB) — the ~13–19 kHz whines from CH2/CH3 left running at 0x7FF are now silenced at the source, matching SameBoy's band-limited output
- Prehistorik Man (SGB) — the black bands on the left/right edges of the scrolling title banner are gone (left band 307px → 6px, right band 449px → ~0, verified headless against SameBoy); the game's HALT-synced self-modifying BGP write chain now lands on the exact dot it was aimed at
Images:
