Skip to content

Releases: codingncaffeine/Emutastic

Emutastic v1.0.1

14 Apr 20:02

Choose a tag to compare

What's New in v1.0.1

Video Recording for 3D Games

  • Record any game — Video recording now works for all 3D/hardware-rendered games including Dreamcast, GameCube, N64, PSP, and 3DS. Previously only 2D games supported recording
  • Zero-performance-impact capture — Uses Windows.Graphics.Capture at the compositor level with no GPU readback, so gameplay performance is unaffected
  • Hardware-accelerated encoding — MediaTranscoder handles BGRA to H.264 conversion on the GPU, producing compact MP4 files without CPU overhead
  • No extra downloads — Unlike FFmpeg for 2D games, 3D recording uses built-in Windows APIs with nothing additional to install
  • Instant stop — Stopping a recording returns control immediately instead of blocking the UI

Custom Media Folders

  • Screenshots folder — Choose where screenshots are saved via Preferences > Folders. The app still creates per-console and per-game subfolders inside your chosen directory
  • Recordings folder — Choose where video recordings are saved. Same organized subfolder structure, your choice of root location
  • Default paths shown — Each folder picker shows where files go if no custom folder is set

Bug Fixes

  • Fixed keyboard input for 3D games — F9 and other hotkeys now work correctly when Vulkan or OpenGL overlay windows have focus
  • Fixed overlay power button — The power button image in the game overlay was missing after the Windows 10 API integration
  • Fixed overlay freezing during recording — The HUD overlay no longer freezes or vanishes when starting/stopping a recording

Full Changelog: v1.0.0...v1.0.1

Full Changelog: v1.0.0...v1.0.1

Emutastic v1.0.0

13 Apr 20:15

Choose a tag to compare

What's New in v1.0.0

Import System Overhaul

  • First-run directory picker — Choose where Emutastic stores data before anything is created at the default path
  • Serial import queue — OpenEmu-style batched import where new batches append and progress accumulates instead of resetting
  • ROM hash cache — MD5 results persist across database rebuilds, eliminating multi-GB rehashing on reimport
  • Existing artwork discovery — Detects 2D, 3D, and ScreenScraper artwork already on disk before attempting network fetches
  • Save state discovery — Matches .json metadata to imported games to reconnect existing save states
  • Faster imports — File counting and import loop run off the UI thread, pre-loaded HashSet for duplicate checking

Arcade Support

  • FBNeo is the primary arcade core — Streamlined to FBNeo + Geolith (Neo Geo). Removed fbalpha2012 variants and all MAME cores
  • Fixed arcade archive import — ZIP files containing only .bin chip dumps no longer trigger the wrong import path. Multi-file arcade and Neo Geo archives now import correctly as-is instead of failing extraction
  • MAME artwork fallback — Arcade artwork lookups check the MAME thumbnail repository when FBNeo thumbnails aren't available

Neo Geo Pocket

  • DAT file support — Neo Geo Pocket and Neo Geo Pocket Color DAT files available in Preferences for one-click download
  • Fixed import misidentification — Archives with unrecognized ROM extensions now try folder name detection before defaulting to Arcade
  • NGPC support — Neo Geo Pocket Color added to manufacturer, color, and box art ratio maps

Recording

  • Improved video quality — Recording encoding quality increased from CRF 23 to CRF 18 for sharper pixel art capture

Bug Fixes

  • Fixed artwork retry loop — Automatic artwork fetch no longer retries the same 300+ games every launch. The attempt counter now properly increments when ScreenScraper finds 2D art but libretro cover art isn't available, and when fetch exceptions occur
  • Reduced auto-retry cap — Artwork fetch stops after 2 failed attempts instead of 3. Use the manual fetch button if a server was temporarily down
  • Lazy artwork cache — ArtworkService cache index now loads off the UI thread to avoid blocking app startup
  • Chunked artwork refresh — Large artwork repair passes yield to the UI thread periodically to prevent freezing
  • N64 close crash resolved — Nintendo 64 games now close cleanly without crashing

Performance

  • O(1) game lookup — MainViewModel uses a dictionary index instead of linear scans for RefreshGame operations
  • Simplified cache updates — Console cache sync during import no longer triggers unnecessary WPF layout passes

Known Issues

  • CD-i analog stick — The SAME CDi core maps analog input to digital thresholds internally. Full analog support would require modifying the core source
  • Suikoden I → II cross-game saves — PlayStation memory card sharing between games is not yet implemented
  • Neo Geo Pocket — Import fixes are new and could use wider testing from users with NGP libraries
  • Vectrex overlays — Some overlay PNGs may not align perfectly at non-native resolutions

Roadmap

  • CD-i analog fix — Investigate SAME CDi core modification for true analog stick support
  • Cross-game memory card sharing — Shared .srm UI for PlayStation games that transfer save data
  • Fast forward / rewind — Speed control and rewind buffer
  • Cheat codes — Libretro cheat API support
  • Sorting and filtering — Sort library by year, rating, last played, play count
  • Game manuals / media viewer — View scanned manuals and supplemental media

Getting Started

  1. Download and extract the zip
  2. Run Emutastic.exe (click "More info" → "Run anyway" if SmartScreen blocks it)
  3. Open Preferences → Cores / Extras and download cores for the systems you want to play
  4. Download all DAT files — without them, disc images and some cartridge ROMs may be assigned to the wrong system during import
  5. Download SDL3.dll for controller name detection
  6. Check Preferences → System Files for any required BIOS files
  7. Drag and drop ROMs onto the library to import

Full Changelog: v0.9.9...v1.0.0

Emutastic v0.9.8

10 Apr 18:39

Choose a tag to compare

Emutastic v0.9.8 Pre-release
Pre-release

What's New

Shader Effects

  • Post-processing shaders — 7 GPU-accelerated pixel shader presets: CRT Scanlines, Game Boy (DMG), Game Boy (DMG LCD), Game Boy Pocket, LCD Grid, Smooth, and None
  • Overlay integration — Cycle through shaders from the in-game cog menu
  • Per-game persistence — Shader selection saved and restored automatically per game
  • Resolution-aware — CRT and LCD shaders update scanline density when the core changes resolution
  • HW-render guard — Shader button hidden for Vulkan/OpenGL cores where it doesn't apply

Backup

  • Backup folder — Set a folder in Preferences > Library to back up battery saves, save states, and library database on demand
  • Restore from backup — One-click restore with confirmation dialog

Favorites

  • Grouped by console — Favorites display with console headers matching the save states layout
  • View toggles — 2D/3D box art and grid/list toggles work within favorites view

Library Navigation

  • Scroll position memory — Scroll position saved and restored per library view
  • Keyboard navigation — Arrow keys move between game cards, Enter opens game details

Preferences Polish

  • Single-BIOS inline display — Consoles with only one BIOS show it inline without extra click
  • Core Options grouped by manufacturer — Core Options tab moved next to Cores/Extras, consoles grouped by manufacturer
  • FDS controller image — Scaled down 30% to match other systems

Performance

  • Fix UI freezes — Bulk metadata updates use O(1) dictionary lookup instead of O(n²) scans; artwork repair batches UI callbacks
  • Artwork retry cap — Automatic artwork fetch stops after 3 failed attempts per game
  • Image cache — Game card artwork cached in memory with WeakReference, eliminating repeated decode on scroll
  • Faster database reads — Column ordinals cached once per query instead of per-row lookups
  • Faster console switching — Pre-built console caches use single GroupBy pass

Architecture

  • CommunityToolkit.Mvvm — MainViewModel uses ObservableObject, [ObservableProperty] source generators, and relay commands
  • Artwork service extraction — All artwork fetch logic extracted from MainWindow into ArtworkFetchService
  • Navigation commands — 30+ sidebar buttons converted from Click handlers to XAML Command bindings

N64 Vulkan Fixes

  • Fix relaunch crash — Closing and immediately reopening an N64 game no longer crashes
  • Fix window resize crash — Swapchain recreation debounced to fire once after resizing stops
  • In-game HUD overlay — Power/pause/save/settings pill displays correctly above Vulkan swapchain
  • Clean teardown — Proper context_destroy → retro_unload_game → retro_deinit sequence