-
Notifications
You must be signed in to change notification settings - Fork 0
PlayStation
Emutastic ships Beetle PSX HW (mednafen_psx_hw_libretro.so) as the default PS1 core. It's the hardware-accelerated sibling of the original Mednafen PSX (Beetle), built on the same accuracy foundation but with an OpenGL renderer that unlocks features the software core can't deliver:
- Internal-resolution upscaling (1× through 8×)
- PGXP — eliminates polygon jitter and texture warping (the canonical Crash Bandicoot / FF7-9 fix)
- Dithering control (off / 1×-only / always)
- MSAA anti-aliasing
- Texture filtering (bilinear, xBR, SABR)
- Widescreen hacks (compatible games only)
Save states round-trip across app launches reliably — no SINGLE_SESSION quirk like the Kronos Saturn issue.
Beetle PSX HW supports two render backends — OpenGL and Vulkan. Emutastic uses OpenGL (hardware_gl). On Linux the GL renderer runs in the --game-host process: the core renders into an FBO via a GL context, the frontend reads back through a never-blocking 4-slot PBO ring, and the frame presents on the native Wayland toplevel (X11/SDL fallback). Don't switch to hardware_vk in the core options — Vulkan support for this core isn't wired up on Linux and produces a white screen.
Out of the box Emutastic configures only the renderer = hardware_gl option. Everything else stays at the core's defaults: 1× internal resolution, PGXP off, no dithering changes. This matches what real PS1 hardware looks like — pixelated, slightly warpy polygons, dithered transparencies.
If you want the upscaled-PSX look, change these in Preferences → Cores → Mednafen PSX HW Options (or per-game via the in-game menu):
| Option | Native | Upscaled (suggested) |
|---|---|---|
beetle_psx_hw_internal_gpu_resolution |
1x(native) |
4x (sweet spot) or 8x
|
beetle_psx_hw_pgxp_mode |
disabled |
memory only |
beetle_psx_hw_pgxp_vertex_cache |
disabled |
enabled |
beetle_psx_hw_filter |
nearest |
SABR or xBR
|
beetle_psx_hw_msaa |
1x(default) |
4x |
8× internal resolution is GPU-heavy for marginal visual gain over 4× on most titles. Crash 2/3, FF7-9 field maps, and SOTN's room transitions are the canonical "PGXP transforms the look" demos.
If you prefer pixel-accurate native rendering or hit a HW-renderer edge case, Emutastic also ships Beetle PSX (software) — mednafen_psx_libretro.so. Same accuracy as HW, native-resolution only, no PGXP. Switch via Preferences → Cores → PS1, or per-game using the Cores override.
Same BIOS for every PS1 core — Emutastic's BIOS resolver finds the matching one:
-
scph5500.bin— NTSC-J -
scph5501.bin— NTSC-U -
scph5502.bin— PAL
Region detection comes from the No-Intro filename suffix ((USA), (Japan), (Europe), etc.) — the right BIOS is selected per game without manual configuration.
Save states are not portable between cores. A state saved on Beetle PSX HW cannot be loaded on Beetle PSX (software) and vice versa — the snapshot format is core-specific. If you switch the PS1 core for a game your existing states for that game become unreadable from the new core (the files stay on disk; clicking them shows "Failed to load").
Emutastic sets the PS1 controller type to DualShock (RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_ANALOG, 1) = device 517) via retro_set_controller_port_device. This gives both d-pad and analog stick input out of the box.
The core option beetle_psx_hw_analog_toggle controls the emulated DualShock's analog LED behavior:
| Value | Behavior |
|---|---|
disabled (default) |
Locked in analog mode — sticks always active, no toggle combo |
enabled |
Toggle combo available, starts in digital mode (sticks off) |
enabled-analog |
Toggle combo available, starts in analog mode (sticks on) |
The default (disabled) is the right choice for most users — analog sticks just work. The toggle combo (L1+L2+R1+R2+Select+Start, held ~1 second) is only relevant when enabled or enabled-analog is set, for the rare pre-1997 title that rejects analog-mode controllers entirely.
If a title doesn't respond to input with DualShock active, switch the controller type to PlayStation Controller in the per-game core preferences. This emulates the original SCPH-1080 digital pad (d-pad only, no sticks). Pre-1997 titles that only understand the 0x41 SIO protocol may need this.
A few things that tripped us up and may help other frontend developers:
-
Device type 517 is only for
retro_set_controller_port_device. The core polls input viainput_state_cbusing base types:RETRO_DEVICE_JOYPAD(1) for buttons,RETRO_DEVICE_ANALOG(5) for stick axes. Never 517. -
Save state loads reset controller ports. After
retro_unserialize, the core rebuilds its internal device pointers. You must re-callretro_set_controller_port_devicewith the correct type post-unserialize, or input reverts to the default digital pad. - Analog axis range is -32767 to +32767. SDL3 gamepad can produce -32768 at full deflection on some axes. Passing -32768 to the core causes the PS1's 0-255 analog mapping to underflow and wrap to the opposite direction. Clamp to -32767.
- Compose the analog stick from per-direction bindings. The stick is built by combining the per-direction (plus/minus) bindings rather than trusting a raw SDL axis sign — this is the convention RetroArch and DuckStation follow and is what makes PS1 analog input correct on Linux.
-
software_fbshould stay enabled (core default). Disabling it (beetle_psx_hw_renderer_software_fb = disabled) breaks framebuffer effects — ground textures, pause menu backgrounds, and screen transitions in titles that read/write the PS1 framebuffer directly.
Drop a folder of (Disc 1).cue / (Disc 2).cue / ... and Emutastic auto-bundles them into a single .m3u library entry. In-game disk swap defaults to L3 + Start. See Disk Swapping for the full per-console behavior — Beetle PSX HW (and SW) both correctly handle the deferred-insert timing required for the CD audio engine to spin down between discs.
Console Notes
- Nintendo 64
- Nintendo 3DS
- GameCube
- Sega Saturn
- Dreamcast
- PlayStation
- PlayStation Portable
- TurboGrafx-CD
- Neo Geo
- Arcade
- Vectrex
- Philips CD-i
- Atari Jaguar
Features
- Artwork & Metadata
- Cheats
- Cloud Sync
- Controllers
- Disc-Based Systems
- Disk Swapping
- Portable Mode
- RetroAchievements
- ROM Hacks
- Hardcore Compliance
Technical
Platforms
Legal