State of Libretro Core Updates/Progress Report – May/December 2022

We will cover all core updates here from May 2022 to December 2022. It has been a long time since our last core update report, so bear with us as we go through this long laundry list.

There might be more cores that have seen updates which have gone underreported during this time period. We will make an effort to update it as we go along in case we notice any omissions.

MojoZork

  • New core, available for Linux, Windows, macOS and Android first

Nestopia

  • Allow loading external XML database with baked in database as fallback
  • Update and streamline Core Options

NXEngine

  • Fixes music no longer working on Windows with recent versions of GCC – and fixes crashes
  • Correct aspect ratio

mGBA

  • Update core to 0.10.0

FBNeo

  • Update to the latest version

melonDS

  • Fix frontend language not changing DS language properly
  • Add input bitmask support
  • Core options changes + update to v2
  • Change screen gap option back to 0-192
  • Screen gap reduce from max 192 to 126
  • Adds Libretro Cheat Code Support so users could add emulator cheat code on top of RetroArch cheat code

Virtual Jaguar

  • Jaguar games can change resolutions during gameplay.Previously, the emulator only ran at the default 320 x 240 resolution.
    This PR fixes this, allowing other resolutions to display properly.

    This should fix issues in (at least) the following games, based on my testing :
    * Atari Karts
    * Club Drive
    * Evolution Dino Dudes
    * Flashback
    * I-War
    * Pinball Fantasies
    * Trevor McFur in the Crescent Galaxy

Caprice32

  • RMP: Knight Lore, 1942, 1943, 3D Grand Prix, Abu Simbel Profanation, Barbarian, Boloncio, Boulder Dash, Bruce Lee, Ghostbusters, Harrier Attack, Match Day II, Myth, Oh Mummy (RMP WIP)
  • CORE: Keyboard Transparency Option added
  • DC/DB: Compute hash from M3U too
  • DC: Implemented replace CMD, now you can load DSK/CDT from UI
  • CORE: Fix RPI 1-B (old model)
  • RMP: Target Renegade
  • CORE: joystick fixes
  • CORE: evercade support
  • DB: added new tests, sync clean-cpc-db v1.1
  • DB: sync clean-cpc-db v1.0
  • DB: documented correctly RMP files
  • AUTORUN: added better code inspired by Fredouille – caprice-forever
  • DB: new games from retroachievements
  • UI: added DB icon DSK to status bar
  • DB: you could add direct tokens using $ (for joystick keybinds or cleans)
  • DB: added DB v1 using clean-cpc-db info
  • CORE: added model 664 to allow DSK and BASIC 1.0
  • CORE: detect some configurations from filename
  • VIDEO: minor fixes (requires more work)

2048

  • Keep big font size on tiles. Keep the font as big as it was for 1 digit all the time.

Dolphin

  • Change some logging levels to debug to avoid huge spam in logs
  • Add left stick options for IR mode
  • Disable Android build
  • Expose “Prefetch Custom Textures” core option
  • Expose the “Speed Up Disc Transfer Rate” option
  • Add anti-aliasing option
  • Expose “Immediate xfb” setting”
  • Show proper labels when GC controller is used on ports 1-4 in Wii mode
  • Fix Kirby’s Air Ride – BlendingState: Set source and destination alpha factors in logic op workaround

PCSX ReARMed

  • [LLE] Fixes Black screen when starting a game with Shadow Tower – cdrom: adjust a timing hack
  • gpulib: allow commands to span list entries. Fixes bad input delays/no input registered in certain games.
  • cdrom: forget old sector on cd change – fixes Syphon Filter 2 does not change disk
  • dma: add optional slow linked list walking – fixes issues in Crash Bash (PAL), Spot Goes To Hollywood, Final Fantasy Chronicles (FF4)
  • cdrom: make the timing hack conditional – fixes incorrect behavior in Crash Bandicoot
  • cdriso: unbreak cdda for chd – fixes sound is broken in several games
  • cdrom: don’t report read too early – fixes no (more) background music in Gran Turismo
  • lightrec: Disable threaded compiler by default
  • spu: fix a wrong assumption – fixes issue in Need for Speed III – Hot Pursuit
  • cdriso: fix up chd for separated subq reads
  • cdriso: disable the async code. It will race with the new ISOgetBufferSub()
  • cdrom: change GetlocP handling – fixes Captain Commando graphical glitches
  • cdrom: handle fifo overreads – fixes Dance Dance Revolution 3rd Mix stuck on “NOW LOADING”
  • lightrec: Update to the latest Lightrec. Fixes bugs affecting Jackie Chan Stuntmaster, Vib-Ribbon, GTA2, and maybe other games.
  • cdrom: add a timing hack – fixes T’ai Fu: Wrath of the Tiger gets stuck on initial loading screen
  • cdrom: report read errors correctly
  • psxbios: use noninvasive print for -psxout
  • adjust multitap code to interact with standalone better
  • gpulib: update gpuinfo
  • lightrec: fix pcsx interpreter -> lightrec switch too
  • lightrec: allow to switch to pcsx’s interpreter anytime
  • libretro: adjust options after recent changes
  • psxinterpreter: use cycle_multiplier also, not just ari64 dynarec
  • remove all the hack options. They just confuse users. For Parasite Eve 2 and others, adjust “PSX CPU clock” instead if needed.
  • cdrom: update status immediately after seek. Philosoma wants it
  • cdrom: ignore repeated read cmds. Fixes crackling sound in Intro fmv of Suikoden II and similar sound issues, with other games
  • cdrom: change GetlocL behavior – fixes Beat Mania (Japan) Notes don’t drop down
  • cdrom: treat seek the same as other commands
  • cdrom: allow to interrupt initial scan sequence
  • cdrom: actually reject commands when not ready. Before it would still execute them and just do an error response
  • maybe fix x86 32bit detection for libretro’s infra
  • Enable gpu_neon on 32bit x86
  • gpu_neon: rm wrong cost qualifier
  • cdrom: adjust timing
  • don’t cast between long and pointers for win64. long is 32 bit there
  • enable gpu_neon on win64 too
  • misc: patch some issues indicated by clang
  • gpu_neon: brand new x86 SSE2+ implementation
  • gpu_neon: adjust some comments and things
  • cdrom: delay the missed irq more
  • some big endian fixes
  • spu: fix wrong volume shift
  • psxinterpreter: reduce the use of globals. They induce penalties with -fPIC
  • cdrom: partially emulate the fifo
  • dma: try more accurate timings. Seems to help Legend of Mana
  • cdrom: get rid of pTransfer. It could easily crash the emu (misbehaving game or even malicious ISO)
  • cdrom: don’t reschedule irqs. Trigger shortly after ACK instead
  • cdrom: clean up command handling
  • cdrom: try to eliminate playback timing drifting
  • psxcounters: try to eliminate another source of audio drift
  • spu: cleanup some irq hacks. Note that bIgnoreLoop is still needed or
    “Misadventures Of Tron Bonne” may hang after cutscenes. Before this commit the game will sometimes cut off dialogues.
  • spu: sync on xa playback start. This avoids nasty underflows at the start of the stream
  • spu: support master volume
  • spu: rename dwChannelOn to something more suitable
  • spu: remove some strange rounding. Seems wrong. Also deal with now possible div by 0 in scan_for_irq().
  • cdrom: remove another hack. The hack just makes Worms Pinball unstable, and Crusaders of Might
    and Magic no longer seems to need it.
  • cdrom: get rid of cdrPlayInterrupt. Unify with cdrReadInterrupt and name it cdrPlaySeekReadInterrupt, although these are not actually interrupts, more like events, but keep this weird PCSX’s naming convention
  • cdrom: should use the last Setloc loc and SeekL – should fix Ps1 audio slowdown, stutter and slowdown eg tomba 2
  • spu: get rid of iXAPitch. Ut makes no sense after SPU was fully synced to the core, and now it
    just pulls unwanted windows.h dependency on win32.
  • gpu_neon: fix another abi violation. Before the flush_render_block_buffer call the stack is misaligned, so push an odd num of regs to realign
  • gpu_neon: fix wrong block counting
  • drc: fix a silly mistake of overwriting a reg
  • drc: Rework SMC checks again. The way it was done before wasn’t good enough for
    Mega Man Legends 2 at least
  • drc: fix wrong masking in set_jump_target
  • cspace: add forgotten length decrement
  • Switch apple platforms to neon gpu too
  • Android – Enable neon gpu for arm64 Android too
  • switch most arm64 platforms to neon gpu
  • cspace: generic implementation with vector extensions
  • gpu_neon: integration for arm64
  • gpu_neon: new intrinsics-only implementation. ~80-95% performance of the asm version on cortex-a72,
    but maybe less of a portability nightmare (+arm64 support)
  • gpu_neon: place asm func prototypes into a separate header for the upcoming intrinsics implementation
  • gpu_neon: don’t include vector_ops.h in the main header. That stuff is only used in the C-only prototype
  • gpu_neon: fix some more abi violations
  • drc: patch up some potential issues on the switch
  • gpu_neon: try to make the compiler save some callee-save regs which the asm isn’t doing properly
  • dfxvideo: patch up some unsafe macros. (old?)-ARM version of GETLE32() was causing wrong shifting due to implicit signed int promotion.
  • mman: align and clear for 3ds also callers expect cleared mem
  • drc: some more libnx support
  • libnx: make mmap act more like on Linux
  • lightrec: Fix unmap size of BIOS.
    The BIOS was mapped as 2 MiB, since we want to use a huge page if
    possible. Therefore it should also be unmapped as 2 MiB, otherwise the
    upper 1.5 MiB will still be mapped after de-init, which will make it
    impossible to map the BIOS once again.
  • psxmem: Use Lightrec memory map even for interpreter. The CPU emulation method (interpreter or dynarec) can be switched at runtime. Therefore we must use Lightrec’s memory map even when the
    interpreter is used.
  • frontend: Remove duplicated code. The same function bgr888_to_rgb565() was present twice, protected by different macros.
  • Fix PCSX core and dfxvideo for big-endian systems
  • Rumble should only work with ‘dualshock’ device type
  • cdriso: hack .chd track handling to match .cue
  • cdrom: don’t read and play simultaneously. Fixes Sled Storm – Music playing way too fast
  • cdrom: Fix PBP support on big-endian platformsThe data contained in the PBP is in little-endian format. Therefore,
    everything in the PBP’s header must be read with the byte-swap macros,
    for PBP support to work on big-endian systems.
  • dfxvideo: Restore support for big-endian archThe hardware registers, emulated RAM or emulated VRAM are all in
    little-endian format. Therefore, each access must be done with one of
    the byte-swap macros, for the plugin to work on big-endian systems.
  • frontend: Fix colorspace conversion routines on big-endianThe bgr555_to_rgb565() and bgr888_to_rgb565() functions were only
    working correctly on little-endian systems.
  • misc: Use GCC builtins for byte-swap operationsInstead of using custom code to byte-swap values, use the built-in
    function provided by GCC.
  • gpulib: Add proper support for big-endianUpdate the gpulib code to work properly on big-endian architectures.
  • Get rid of bit fields in union
    Long story short, bit fields aren’t endian-safe.
    More info: http://mjfrazer.org/mjfrazer/bitfields/
    Simplify that by just using a few macros to access the needed bits.
  • Make sure hardware registers are manipulated as little-endianThe hardware registers should be represented in little-endian format.
    Therefore, on big-endian systems the values need to be byte-swapped.
  • Fix PCSX on big-endian systemsThe __BIGENDIAN__ macro was never defined anywhere, and the
    __BIG_ENDIAN__ macro isn’t set anymore by recent versions of GCC.

    Replace them by checking __BYTE_ORDER__ against __ORDER_BIG_ENDIAN__.

  • lightrec: Enable code buffer support

    Map a 8 MiB code buffer at (base + 0x80.0000), right after the emulated
    RAM. In this code buffer, Lightrec will write the recompiled code for
    the host machine.

    In general, the code buffer support is very useful when the host
    platform has only a small RW+X memory area available for JIT purposes,
    like it’s the case on the WiiU.

    On Linux, this isn’t a concern, but having a code buffer does still
    bring a benefit: if both the start address and the end address of the
    code buffer’s address fit in 32 bits, then Lightrec’s code LUT can be
    shrunk in half (2.5 MiB instead of 5 MiB), as it only needs to store
    32-bit pointers.

  • psxcounters: try to support a dynarec with a very long timesliceThe dynarec instead should probably not run for thousands of cycles
    doing no interrupt checks, but maybe this hack will be enough. Fixes Resident Evil: DC (DS Ver.) – Memory card is not inserted
  • drc: update some logging and patches
  • psxmem: Add support for Lightrec’s custom mem init sequenceAdapt the current psxmem.c code to support Lightrec’s custom memory
    init functions.
  • lightrec: Add new memory init functions
    Lightrec can greatly benefit from having the RAM/BIOS/scratchpad and RAM
    mirrors mapped to specific addresses. For the same value of (offset):
    – If the RAM is mapped to (offset), the BIOS is mapped to
    (offset + 0x1fc00000) and the scratchpad to (offset + 0x1f800000), the
    generated code will be better;
    – If the RAM is also mirrored to (offset + 0x200000), (offset + 0x400000)
    and (offset + 0x600000), the generated code will be even better;
    – If the offset is 0x0, the generated code will be even better.

    Additionally, the new memory init code will attempt to use huge pages
    when possible, in order to greatly reduce the overhead of the MMU.

  • Add support for mapping emulated RAM to address 0x0This requires a few changes, since a pointer whose value is 0x0 will be
    detected as a NULL pointer. The read/write LUTs are now initialized with
    0xff, and all pointers are now checked against a new INVALID_PTR macro.

    Mapping the emulated RAM to the address 0x0 will allow Lightrec to
    generate much better code.

  • Update core options to v2 format

Mupen64Plus Next

  • Use Fiber backend on Win32.Works around driver crashes on AMD Windows since driver seems to rely on unwinds to work properly.
    libco cannot support this without using a more robust backend.
  • Update ParaLLEl RSP
  • Update ParaLLEl RDP
  • ParaLLEl RDP: Workaround Nvidia driver bug on 525.x series with PRIME.
  • Update HLE RSP
  • Update GlideN64
  • update Makefile to enable GLES3 support for rpi4
  • Add workaround for IOS/emscripten NPOT Textures mitigation.
  • Add iOS AArch64 core

Tyrquake

  • Added 384×216 resolutionAdded 384×216 resolution, so we can have a fullscreen, pixel-perfect experience at both 1920×1080 (Full HD) and 3840×2160 (4K).

    Note: for this to work, the aspect ratio “Full” must be set in Settings -> Video -> Scaling.

Beetle Lynx

  • Translation updates

Beetle PSX

  • Fix eventcycles, add SPU Samples, allows much better performance . EventCycles should work up to 2048 now, now that it is used by MDEC and Timer. SPU samples option was added, audio glitches will occur in some games unless samples is 1
  • Core option category adjustments
  • Fix 32-bit android buildbot HW builds
  • GLES 3.0 Support on HW Renderer
  • Fix LED interface crash if not implemented.

Beetle NGP

  • Update to 1.29.0
  • Set default samplerate to 44KHz and get rid of all other options –
    it is undesirable to run this core at anything above 48KHz if we
    want consistent audio frame pacing
  • Get rid of color depth core option – there is no reason to go above 16bit and/or 15bit for NGPC

Beetle PCE

  • Add libretro LED interface
  • Update to 1.29.0

Beetle PCE Fast

  • Update to 1.31.0 –
    * PCE-Fast: Update channel 1 frequency cache upon LFO frequency register writes(the way the channel 1 frequency and LFO frequency are combined
    is still inaccurate, however, causing frequency update timing granularity to be too high).

Beetle Saturn

  • CHD: fix block address calculations
    In CHDs tracks are padded to a 4-frame boundary, causing physical and CHD
    block addresses to differ after track 1. Adjusting sector reading to
    account for this offset fixes support of multi-data-track CHDs like Last
    Bronx.
  • Android: CHD support enabled
  • Fix crash when multitap is enabled
  • Backport 1.31.0 changes related to VDP2 –
    SS: When VDP2 per-dot RBG0 coefficient reading is enabled, and a per-dot coefficient read is attempted from a memory region not configured for that purpose
    via RDBS, force the coefficient data to 0, instead of using the per-line coefficient data. Fixes graphical glitches in “Radiant Silvergun” when starting
    a new game after interrupting the attract mode during the AKA-O battle.
    SS: Forcibly disable NBG1-3 only if both RBG0 and RBG1 are enabled via BGON, instead of only checking if RBG1 is enabled; fixes missing/glitchy graphics in “Houkago Ren’ai Club: Koi no Etude”.
  • Backport 1.31.0 database changes, plus take out gettext_noop –
    SS: Added “Real Bout Garou Densetsu” to the internal database of games to enable full cache emulation with, to fix startup hang after skipping the BIOS bootup animation, a regression introduced in 1.26.0-UNSTABLE.

Beetle VB

  • Update to 1.31.0 –
    * VB: Don’t flip framebuffers at the first start of drawing to the
    framebuffer after power-on, and (always) flip framebuffers when XPRST
    is triggered, per tip from blitter

ProSystem

  • Abstract MARIA’s memory reads into a single function.
    This is needed because SOUPER cartridges can trap MARIA’s reads and
    handle them specially.
  • Add support for the SOUPER cartridge type, used by “Rikki & Vikki”
  • Import the BupBoop library, needed for “Rikki & Vikki”.
    This library is needed to emulate the sound hardware that “Rikki &
    Vikki” uses. It’s an entirely separate chip included in the cartridge
    that produces 16-bit stereo audio.
    Note that BupBoop supplies a library called WinTone that provides
    DirectSound bindings, but we don’t use it both because we already use
    DirectSound and because using WinTone would complicate `libretro`
    portability.
  • Add support for the BupChip, used by “Rikki & Vikki”.
    Note that this commit itself doesn’t actually allow the BupChip to be
    used for anything, because the only way to supply music for the BupChip
    to play is through the CDF format.
  • Add support for the BupSystem CDF file format.
    This format allows song files to be supplied to the emulated BupChip for
    playback. It matches the format used by BupSystem:
    http://tailchao.com/BupSystem/index.php
    “Rikki & Vikki” is supplied as a CDF file, along with an unheadered
    `.bin` image and several music files.
  • Specify that “Rikki & Vikki” uses the new SOUPER cartridge type in the database.
  • Add complete support for “Rikki & Vikki”
  • Stop checking size when loading save states.
    The size variable is always zero, because `libretro` saves don’t store
    their size explicitly.
    This fixes save states for RAM supercarts.
  • Bump the savestate size up for SOUPER carts.
    This makes save states work on “Rikki & Vikki”.
  • Bump BupBoop music and patch stack depths to 16.
    The author of BupBoop (and “Rikki & Vikki”) let me know that this change
    is necessary for the game music to play properly.
  • When reading BupChip file paths in CDFs, replace Windows path separators with Unix ones on non-Windows systems.
    This fixes the Steam version of “Rikki & Vikki” on Unix systems like the
    Steam Deck.
  • Fix savestates and music for “Rikki & Vikki”

81

  • Change Border Option – Changed the hide border option to add a new border size.
    Previously the full border was displayed or nothing was displayed.
    Now you have three possible options – normal, small, none
  • Fix disabled Chrome – Does not allow disabling Chroma 81. The disable option for the “Emulate Chroma 81” option now works

FCEUmm

  • Add Firebrandx palettes
  • palette.c: Remove unused NTSC palette generator
  • m235: Update support for 150-in-1 and 260-in-1 with Contra carts
  • Add mapper 441
  • Add mapper 463
  • Add mapper 466
  • Add mapper 464
  • Add mapper 459
  • Add mapper 465
  • Add mapper 461
  • Add mapper 460
  • Mapper 429: Allow more than 32 KiB CHR
  • Add mapper 449
  • Add mapper 455
  • Mapper 351: Correct CHR mask, add FDS-like mirroring control
  • Add mappers 441,449,455,459,460,461,463,464,465,466. Increase maximum CHR size on mapper 429.
  • Mapper 449: Add DIP switch/solder pad functionality
  • Mapper 460: Add alternative DIP switch/solder pad functionality
  • Mapper 351: Add NROM-64 mode
  • Mapper 452: Add support for 350-in-1.
  • Mapper 268: Rewrite and add submapper variants.
  • Mapper 268: Add GenMMC3Close() to Mapper268_close().
  • Mapper 268: Correct GNROM mask for submapper 4, correctly apply CHR mask bits in register 2.
  • Mapper 432: Add 1 MiB variant
  • Add mapper 52 submapper 13 (CHR-ROM+CHR-RAM)
  • Mapper 268: correct comment style
  • Mapper 40: Add multicart variant
  • Add sequential targets light gun support
    Support for Sequential targets Light Guns has been added. “Gun Aux A” serves as light sensor logic input.
  • Update zapper.c
    After testing trigger logic invertion option in VS roms, realized that ZD[w].bogo has to be inverted to work properly
  • Mapper 40: Add a multicart variant.
  • Mapper 52: Add a mixed CHR-ROM+CHR-RAM variant (submapper 13).
  • Mapper 268: Rewrite for clarity and add more wiring variants, indicated by submappers. Support mixed CHR-ROM+CHR-RAM boards.
  • Mapper 351: Add a rarely-used NROM-64 Mode (NROM with 8 KiB PRG bank size).
  • Mappers 432/449/452/460: Minor updates.
  • Mapper 268: Write to WRAM before corrupting V when index==2.
  • Remove CopyFami stuff
    unused in this implementation, not any other emulator uses it. Considering
    it’s even UNIF based, probably has no use anymore.
  • FDS: Permanently use new disk handling functions
    FDS was already using the new disk handling code. This PR just removes
    the old and now unused one.

Mesen

  • Made compiling with LTO function (Link-Time Optimization) like in other cores
  • UNIF: Add BTL-831128C board (Mapper 528)
  • UNIF: Add BTL-900218 board (Mapper 524)
  • UNIF: Add BMC-TH2131-1 board (Mapper 308)
  • UNIF: Add BMC-TJ-03 board (Mapper 341)
  • Mapper 200: Fixed mirroring
  • UNIF: Add BMC-SA005-A board (Mapper 338)
  • UNIF: Add BMC-L6IN1 board (Mapper 345)
  • UNIF: Add BMC-K-3036 board (Mapper 340)
  • UNIF: Add BMC-K-3033 board (Mapper 322)
  • UNIF: Add BMC-K-3006 board (Mapper 339)
  • Mapper 283: Handle both GS-2013/GS-2004 roms in the same mapper
  • UNIF: Add BMC-GN-26 board (Mapper 344)
  • UNIF: Add BMC-CTC-09 board (Mapper 335)
  • UNIF: Add BMC-830134C board (Mapper 315)
  • UNIF: Add BMC-10-24-C-A1 board (Mapper 327)
  • UNIF: Added support for BMC-S-2009 board (Mapper 434)
  • UNIF: Assign some boards to existing ines mappers, Set UNL-8237 as 215.1, Replace Mapper 27 with UNIF CC-21
  • Mapper 319 (Eh8813): Fixed latch write registers
  • JY Company: Fixed PRG outer banking
  • Mapper 15: Fix CHR write protect for some subor/waixing boards
  • Implemented input bitmasks

LRMAME

  • Update to version 0.250
  • Add partial rewind support
  • Add partial runahead support
  • Auto save/load should work now
  • Savestate support should work even for some games that don’t support savestates on mainline MAME
  • Fix the invalid joystick map message that appeared when using Q-Bert
  • Adds Street Fighter Alpha/Zero – CPS Changer to the profile button list
  • Set frame timing based off m_frame_period. Upstream derives frame timing from the m_frame_period value in screen.h and not m_refresh as is done in the libretro port. Also adding a check to see if this value has been updated frame to frame to allow the frontend to update timings.
  • Clean up lightgun offscreen logic
  • Fix mouse buttons, add players 7–8, add multimouse/lightgun
  • Add input descriptors for up to 6 players

LRMAME 2003

  • Set audio buffer status callback
  • Hiscore: It is only copied to memory after successful reading, preventing the use of defined data. For example:
    invadpt2, generate a 0-byte invadpt2.hi, run the emulator at this time, the position of hiscore will display garbled characters
  • System 16: Wrestle war ring rotation and titlescreen graphics
  • Expand CPU clock scale: add 200%, 250%, 300%.
  • BIOS fallback support

LRMAME 2003 Plus

See changelog here.

LRMAME 2010

  • Input system restructure

TGB Dual

  • Implement persistent ROM buffer support
  • Makefile fix to enable build for “unix-armv7-hardfloat-neon”

Gambatte

  • Set OSX target back to ‘default’ – some libc++ conflicts – rely instead for 10.7 backwards compatibility on us not using anything unusual in libc++ that could cause issues at runtime, like strlcpy_chk_ or sincos
  • Update palettes
  • Updated 5 palettes + 1 palette name.The Game Boy palettes that have been received an update are: Super Saiyan God, Super Saiyan Blue, Super Saiyan, Super Saiyan 3, and AKB48 Pink. Plus, Pepsi Blue from here on out is called Pepsi-Cola Blue, to avoid name confusion with the actual Pepsi Blue soft drink.
  • Backport ‘ Added support for Sonic 3D Blast 5’ – from bardeci
  • Palette – TWB64 104 – SideM Green Tweaked. The SideM Green Game Boy palette now represents that to the official SideM color as seen on THE IDOLM@STER’s official website. It turns out the SideM Green palette was in the incorrect shade all this time until now.
  • TWB64 090 and TWB64 140 Updated! Once again, I had to do some deep digging into color research, but just in the Super Dragon Ball Heroes webpages, but regarding Super Saiyan Blue Evolved, the sprite assets from Dragon Ball Z: Dokkan Battle.

NeoCD

  • Preliminary support for direct CD-ROM access
  • Enabled LTO for some platforms (experimental)
  • Reduce latency by adjusting emulated frame slice boundary.
  • Add B+C input macro

Picodrive

  • core, fix cpu sync regression
  • pico, fix psg sound and fast forward
  • 32x, minor poll detection fix
  • mcd, minor optimization for poll detection
  • core, improve mcd+32x cpu synchronization
  • 32x, make 68k poll detection less agressive
  • sh2 drc (for 32X), fix bug in jump patching for arm64
  • core, TH input latency only if output was low
  • core, add TH pad pin latency (load state regression)
  • core, add TH pad pin latency (regression after 5 min)
  • core, add TH pad pin latency after switching to input
  • sms, fix center tms text mode (mode 1)
  • sms, add fast renderer, remove 1st column (8 px) if blanked
  • sms, add xor 4x8k mapper
  • mcd, fix gfx (32×32 stamp)
  • core+platforms, harmonise supported extensions
  • sound, fix ym2413 fm sound load/save
  • z80, fix drz80 save (regression)
  • core vdp, fix out-of-bounds vram access for save/load
  • sms, fix mappers (save/load for sega, korea, 8kbram)
  • z80, improve cz80+drz80 compatibility
  • z80: fix AF pop+push in DrZ80 (F bits 3+5 stack value unchanged)

ECWolf

  • Automap fixes + add “Show Status” button
    There was an incorrect bool preventing 2 options to work properly (automap/overlay rotation and cycle automap/overlay).
    Also changed the inputs while the automap is opened, so the player can still move with overlay or if the normal automap is opened but the pause option is OFF.
    Changed 2 default values, show walls on normal automap and pause while normal automap is open are ON by default now.
    Also added “Show Status” on the unused retropad-Y button, very useful when playing with the screen size set to “Without statusbar”.
  • Several memory usage improvements. Mainly meant for RS90 but improving other targets as well
  • Decrease internal resolution to 240×160 on RS90
  • Disable adlib on rs90
  • Synthesize speaker on the fly. It’s faster and uses less memory
  • Add proxying semantics in order to avoid loading the same lump for different sounds
  • Limit size of loaded audio samples

PX68K

  • Crashes fixed at startup
  • Fix SIGSEGV (Address boundary error) with Etoile Princess

VBA-M

  • Update to core options v2 interface
  • HLE: Fix sign-compare warnings
  • Fix missing-field-initializer warnings
  • Silence implicit-fallthrough warningsUsed [[fallthrough]]; to mark affected areas. Such keyword should be
    available since C++11
  • Wrap functions unused by LIBRETRO
  • Simplify save state handling
    – size and version parameters are unused in the libretro implementation,
    so remove them
  • Cleanup more libretro-specific branches

Mu

  • Add build for Mac OS ARM.
  • Update valid extensions to everything in the core info; Disallow libretro from looking into ZIP files, we will be handling it ourself so that we can load all PRCs and PDBs.
  • Include miniz library; Make all CMake builds PIC.
  • RetroArch CMake corrections; Implement loading from ZIP files which contain PRCs and PDBs.

NOTE: To load multiple files at once, place PRCs and PDBs into a ZIP file and then
load that ZIP file. PDBs will be installed first followed by PRC files.

Desmume

  • Update core options v2 interface
  • Hide CPU mode option when HAVE_JIT is 0 & OpenGL exclusive options when using soft3D

Genesis Plus GX

  • Update to the latest version
  • Enchanced per-tile vertical scroll implementation
  • Genesis Plus GX Wide

    • Update to the latest version
    • Enchanced per-tile vertical scroll implementation

    NOTE: Enhanced per-tile vertical scroll – This emulation hack allows allows each cell to be vscrolled individually, instead of being limited to 2-cell (16px). The offset of the new, intermediary cell is calculated as an average of the offset of the current 2-cell and the offset of the next 2-cell.

    See this thread here for before/after comparisons.

    Citra

    • Fix pointer being hidden on single screen mode
    • Expose CPU clock scaling option
    • First minimal implementation of Libretro VFS
    • Avoid caching framebuffer in core. Frontend should be able to change it at any time.
    • Android port/build

    SameBoy

    • Update core with latest changes (August 2022)

    Boom3

    • Makefile fix to enable build for unix-* platforms

    SameCDi

    • Save NVRAM on per directory basisCDI NVRAM is extremely small, so saving to it becomes an issue when you have many games. This separates NVRAM into game specific dirs
    • Add Redump BIN/CUE formatHack to support CDI/2352 format, per hack listed [here](https://github.com/mamedev/mame/pull/8529/files)
    • CHD support

    Atari800

    • OSX 10.7 backwards compatibility
    • Fix PSVita build

    gpSP

    • Fix Pokemon Fire Red germany not booting/ White Screen
      Wrong Gamepak Code causing Pokemon Fire Red not to boot due to wrong flash size (64k instead of 128k)

    RACE

    • OSX 10.7 backwards compatibility

    Opera

    • Lightgun – allow offscreen reloading on all 4 sides of the screen –
      Currently, many 3DO games only allow lightgun users to shoot off parts of the top of the screen in order to reload. This code change allows lightgun users to fire off any part of any side of the screen to reload in games that have a functioning reload/holster input. It is tested as working with all 3DO lightgun games except for Mad Dog McCree and Space Pirates, which still exhibit the issues outlined in #176, and it is also tested as working with the arcade game Shootout at Old Tucson (which didn’t appear to have functioning offscreen reload before this).

    RetroArch 1.13.0 release


    RetroArch 1.13.0 has just been released.

    Grab it here.

    If you’d like to learn more about upcoming releases, please consult our roadmap here.

    Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We have always prioritized the endusers experience, and unlike others, we have never emburdened them with in-app ads, monetization SDKs or paywalled features, and we intend to continue to do so. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

    NOTE: Since it has been a very long time since the last core progress update report, there will be a Core Progress report very soon listing all the changes over the past 6 months that have been made to all the cores in our repertoire. A ton of stuff has happened, lots of things have been improved, and it’d be criminally negligient not to talk about it at all. So stay tuned for that blog post.

    Android

    The feature ‘Vibrate On Key Press’ has been enabled by default now on Android. You will get haptic feedback when pressing any of the overlay gamepad elements onscreen, improving the user experience.

    In addition, several big improvements are being made under the hood to improve and refine overlay touchscreen controls. Read more about that later in this article (see ‘Overlay / onscreen gamepad controls improvements’).

    Threaded Video is also disabled now by default on new installs/configs. We have left this setting on since 2013 when frame time spikes were dreadful on Android due to SoCs being underpowered and tons of processes running in the background. Fastforward nearly 10 years later and we feel times have changed since and it’s a little safer to disable it now. Threaded video can theoretically be faster than non-threaded video but also leads to more judder and less precise frame times. Non-threaded video therefore (if frame time deviation is below 5% margins) should lead to smoother frame times. It’s still possible for the user to enable Threaded video if they desire, so nothing has been lost in the process.

    Note – another benefit of non-threaded video being the default is that it fixes some issues that were experienced upon focus loss of an app and re-entering RetroArch.

    iOS 13+ port

    Thanks to the new Swift backend targeting iOS 13 and up, it has become easier to add several new QoL features, such as iPad trackpad support for iOS 13.4 and above.

    macOS

    Users upgrading to the recent macOS Ventura would have discovered that RetroArch had issues going into fullscreen. This has been fixed in this newer version.

    Some keyboard keys have also been hooked up that were not added to the key symbol map before, such as Z/X, and the left meta key.

    Overlay / onscreen gamepad controls improvements

    Android/iOS users are going to benefit a lot in this release and upcoming versions from various improvements being made to neil4 to overhaul and improve touch controls.

    Several gamepad overlays have already been updated to take advantage of these new features. These are as follows:

    • gamepads/neoretropad
    • gamepads/neoretropad-clear

    There are also new ‘lite’ overlays that take advantage of all the new features described below. In particular, the lite overlays rely heavily on ‘exclusive’ hitboxes.

    Let’s go into what has been added so far to this release:

    Add eightway area types

    • New descriptors: ‘dpad_area’ and ‘abxy_area’
    • Each has a diagonal sensitivity setting, 100% being 8-way symmetry
    • Buttons can be redefined in the cfg file

    E.g. This would create a d-pad area, then redefine it to use analog directions:

    overlay0_desc0 = “dpad_area,0.85,0.57,rect,0.166228,0.295516”
    overlay0_desc0_up = “r_y_minus”
    overlay0_desc0_down = “r_y_plus”
    overlay0_desc0_left = “r_x_minus”
    overlay0_desc0_right = “r_x_plus”

    Note: If ‘Hide Overlay in Menu’ is enabled and the menu is up, the overlay preset will be read (loaded & unloaded without being shown) to know which overlay types are in the preset, i.e. whether to show eightway settings or not.

    Add ‘reach’ and ‘exclusive’ for hitboxes

    These allow stretching (or shrinking) hitboxes and handling their overlap. Does not affect image, analog range, or analog/eightway center.

    Hitbox Reach

    reach_up, reach_down, reach_left, reach_right:

    • Stretches hitbox in one direction:

    reach_x, reach_y

    • Stretches hitbox symmetrically

    E.g. In the overlay cfg, this creates a D-Pad area and extends its hitbox left & right 50%, up 15%, and down 30%:

    overlay0_desc0 = “dpad_area,0.15,0.57,rect,0.166228,0.295516”
    overlay0_desc0_reach_x = 1.5
    overlay0_desc0_reach_up = 1.15
    overlay0_desc0_reach_down = 1.3

    Exclusive Hitboxes

    exclusive:

    If true, blocks input from overlapped hitboxes

    range_mod_exclusive:

    Similar, but only applies when this hitbox is extended by range_mod
    After range_mod takes effect, has priority over ‘exclusive’
    E.g.

    overlay0_desc0_exclusive = true
    overlay0_desc1_range_mod_exclusive = true

    Expected use cases:

    • A ‘range_mod_exclusive’ hitbox placed close enough to other hitboxes that its range_mod value would otherwise cause unwanted overlap.
    • A smaller ‘exclusive’ hitbox placed inside (or partially inside) a larger one; the smaller hitbox would “carve out” space for itself.
    • A combination of the two: A smaller ‘exclusive’ hitbox carves out space for itself, but the larger hitbox has ‘range_mod_exclusive’. Whichever is hit first effectively has priority.

    Ignore hitboxes with zero area

    I.e. Set ‘reach_x’ or ‘reach_y’ to zero to ensure no hitbox math is done.

    This simplifies designating animation-only descriptors (e.g. for eightway areas) or obsolete descriptors.

    Content scanning

    PS1 and PS2 content scanning has been improved significantly in RetroArch. All PS2 discs should now be able to be scanned. Previously, only CD-based PS2 games could be scanned and not DVD-based ones.

    PS1 content scanning has also been improved. More content should be able to be recognized now that the system is also able to scan PSX.EXE files on a disc. For instance, it was not possible to scan ‘Street Fighter: Real Battle on Film’ before because of this. Also, all LSP- titles were previously ignored, which has also been fixed.

    Menu QoL improvements

    Various improvements made to the menu system in terms of usability and UX thanks to sonninos.

  • Quick Menu entries were pretty random in regards of doing scrolling with left & right, so it’s been cleaned up a bit, and we made sure all submenus behave in unison.
  • Ozone – Show metadata helper in footer only with second thumbnail. Removed metadata toggle helper from footer when second thumbnail is not enabled – which is the default – because the button won’t do anything without second thumbnail enabled.
  • We made the background image selector usage more comfortable by starting from assets directory or current selection instead of drive letter root, and showing image previews while browsing.
  • File selector globally removes file from selection path, uses path instead and sets file as selection
  • File selector title corrected to have : separator
  • It’s possible to control the menu now with the right analog stick, or both at the same time if you want to do so.
  • Cursor memory for most menu screens
  • (Applicable to Ozone) Footer improvements – show metadata helper in footer only with second thumbnail, add “Cycle thumbnails” helper when suitable, show “Search” helper only when search function is enabled, fix “Thumbnails available” helper for save states, tighten padding between icon and title, and widen between helpers
  • For a more exhaustive list of all changes made to the menu, consult the Changelog.

    Vulkan fix for HDR mode

    After RetroArch 1.11.1, an unexpected side effect caused many shaders (e.g. crt-easymode-halation or newpixie.crt) to render an oversaturated and dark image when using Vulkan and HDR on Windows 10/11. To fix this now with the Vulkan driver, we only skip the tonemapper if HDR10 is explicitly enabled by the last shader pass. Otherwise, we are simply just inheriting the bit-depth of the swapchain.

    Changelog

    1.13.0

    • 3DS: Remove debug button combo to shutdown RA
    • 3DS: Remove MaterialUI as per MrHuu recommendation
    • ANDROID: Enable ‘Vibrate On Key Press’ haptics by default
    • ANDROID: Turn ‘Threaded Video’ off by default
    • CHEEVOS: Upgrade to rcheevos 10.5
    • COMPILATION: Fixed compiling with –disable-menu
    • CONFIG: Don’t show override notification with appendconfig alone
    • DATABASE/PLAYLISTS: Playlist + database changes – Cleanup ‘entry_slot’, fallback label + logging
    • FRONTEND: Fix default remaps folder for various cores: remap should … …be nested in config folder
    • HOTKEYS: Fix shader toggle and add hotkey + sublabel
    • HOTKEYS: Cleanups and corrections – Keep hotkey pause and menu pause separate in order to not trigger unwanted pause when toggling menu regardless if menu will pause or not
    • HOTKEYS: Cleanups and corrections – Allow unpausing with Start (makes resuming more convenient after controller disconnect if menu does not pause)
    • IOS13+: Pointer movement accuracy. iPad Trackpad Pointer Movement Accuracy through absolute location (for iOS 13.4 and above)
    • IOS13+: Adds iPad Trackpad Support to iOS13 Project (for iOS 13.4 and above)
    • INPUT: Fixed the way devices were previously indexed. Input devices were only being indexed in order and would stop at the first time an input has no device connected to it. The problem is when a device gets disconnected, that input will have no devices connected to it, but the next input may still have a device connected. So, that makes changing the port of the currently connected devices impossible.
    • INPUT/AUTOCONFIG: Add option for pause on controller disconnect
    • INPUT/AUTOCONFIG: Driver independent disconnection notification. Should show disconnect notification now properly on Windows with XInput and/or DirectInput pads
    • INPUT/HID: Added usb hid controllers for the famous ZeroDelay encoder and also for “Kade: Kick Ass Dynamic Encoder” to be able to use some custom arcade sticks.
    • INPUT/OVERLAY: Add eightway area types.
    • INPUT/OVERLAY: Fix overlay next_index for unnamed targets
    • INPUT/OVERLAY: Ignore hitboxes with zero area. I.e. Set ‘reach_x’ or ‘reach_y’ to zero to ensure no hitbox math is done. This simplifies designating animation-only descriptors (e.g. for eightway areas) or obsolete descriptors.
    • INPUT/OVERLAY: Add ‘reach’ and ‘exclusive’ for hitboxes. Allows stretching hitboxes and handling their overlap.
    • INPUT/MENU: Addition to analog stick menu navigation
    • INPUT/MENU: Enable menu navigation also with right analog stick
    • INPUT/MENU: Add option for swapping menu scrolling buttons
    • LOCALIZATION: Updates
    • LOCALIZATION: Add Hungarian language option
    • MENU: Thumbnail fullscreen toggle behavior correction
    • MENU: Consistent left-right scrolling for Quick Menu items
    • MENU: Remove useless sublabel from System Information
    • MENU: Improve widget appearance with missing assets
    • MENU/QT/WIMP: Remove SSL/TLS check at startup
    • MENU/OZONE: Show metadata helper in footer only with second thumbnail
    • MENU/OZONE: Footer improvements – Add “Cycle thumbnails” helper when suitable
    • MENU/OZONE: Footer improvements – Show “Search” helper only when search function is enabled
    • MENU/OZONE: Footer improvements – Fix “Thumbnails available” helper for save states
    • MENU/OZONE: Footer improvements – Tighten padding between icon and title, and widen between helpers
    • MENU/OZONE: Launching anything from a View no longer throws Quick Menu off the screen
    • MENU/OZONE: Save state thumbnails in slot dropdown obeys fullscreen toggle properly when content launched via CLI
    • MENU/OZONE: Save state thumbnail dropdown won’t allow fullscreen toggle when it shouldn’t
    • MENU/OZONE: Selection position remembering in non-playlists won’t flash the first entry
    • MENU/OZONE: Remember selection per main tabs
    • MENU/OZONE: Remove incomplete assets warning
    • MENU/OZONE: Add option to adjust cursor memory when changing menu tabs
    • MENU/OZONE: Further extend texture support for Core Option categories
    • MENU/XMB: Remove incomplete assets warning
    • MENU/XMB: Add truncate playlist name option
    • MENU/XMB: Improve background image selector
    • MENU/XMB: Add option to adjust cursor memory when changing menu tabs
    • MENU/XMB: Further extend texture support for Core Option categories
    • MENU/MATERIALUI: Remove incomplete assets warning
    • OSX: Fixed Z/X keys not working on the macOS port
    • OSX: Fixed RETROK_LMETA not working on macOS port. The RETROK_LMETA key was not defined in the rarch_key_map_apple_hid
    • OSX: Fix broken fullscreen mode in macOS Ventura
    • PS2: Fix Error saving remaps and runtime logs
    • PS3: Fix Core Remap Overwrite Fail
    • QB: Don’t fail if OSDependent/OGLCompiler libraries are not present
    • SCANNER/PS1: Improved scanning of PS1 discs
    • SCANNER/PS2: Added serial scanning of PS2 discs – should now scan DVDs and other discs which were previously missed
    • THREADED VIDEO/GLCORE: Fix regression ‘Shader presets dont load, when video driver is set to glcore’
    • VULKAN: Fix HDR inverse tonemapping. Only skip tonemapper if HDR10 is explicitly enabled by last shader pass. Otherwise, we are simply just inheriting the bit-depth of the swapchain.

    RetroArch 1.12.0 release


    RetroArch 1.12.0 has just been released.

    Grab it here.

    If you’d like to learn more about upcoming releases, please consult our roadmap here.

    Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We have always prioritized the endusers experience, and unlike others, we have never emburdened them with in-app ads, monetization SDKs or paywalled features, and we intend to continue to do so. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

    Views

    This view lists all games in your collection released in the year 2000.
    This view lists all games in your collection released in the year 2000.

    There is now an entirely new way to display and organize content – Views!

    You can turn a filter set in the Explore menu into a so called “View” file which then gets listed alongside playlists. This also adds the ability to filter a category by range in the Explore menu and not just filter on exact matches.

    The views are saved into .lvw (libretro view) files that just like playlist .lpl (libretro playlist) files are in JSON format and are stored in the same playlists directory.

    You can combine several filters in whichever order you see fit and then save the results as a view
    You can combine several filters in whichever order you see fit and then save the results as a view

    Here’s some examples of views that are now possible with the new range filtering:

    1. Games made between 1992 and 1996 by developers Capcom and Capcom Production Studio 1
    2. Games supporting 5 to 8 players
    3. Games containing “Mario” in the title released between 1988 and 1994

    These are just some examples of what is possible with this new system. It’s a pretty powerful system, and we hope this gives you a lot of flexibility to better organize your content.

    How to use it

    1. Go to Explore screen/tab.
    2. Search through the list of games sorting through it however you want, then once you’re satisfied with the output, select ‘Save As View’. It will now add this ‘view’ to the playlist list. In Ozone, you can select it from the left popup toolbar. In XMB it will show up next to your playlists. NOTE: You can currently not rename views from within the application.

      Android – Haptic feedback for touch overlays

      Courtesy of neil4 who implemented this great feature
      This repurposes the setting ‘Vibrate On Key Press’, which previously enabled a 16ms vibration on any screen touch.

      Now the device’s standard keypress feedback is triggered on overlay key/button state changes, except when a finger leaves the screen.

      It’s currently only implemented for Android, but it can potentially be implemented for other systems with haptic feedback later. It’s not enabled by default for now so you will have to enable it manually. To do this, go to Settings -> Input -> Haptic Feedback/Vibration, and enable ‘Vibrate On Key Press’.

      iOS 13+ port

      The iOS ARM64 port is completely revamped and targets iOS 13 and later now. It leverages Swift and it has some unique features.

      iOS 13+ port now has a toolbar which lets you pull up an onscreen keyboard
      iOS 13+ port now has a toolbar which lets you pull up an onscreen keyboard

      For instance, it adds support for revealing the onscreen keyboard and enabling touch screen mouse input by adding a toolbar that is revealed by tapping the top of the screen.

      There is also now an iOS 16 lockscreen widget.

      WiiU improvements

      Some important WiiU platform improvements. Default directories should now be created on the fly (fixing a longstanding issue), and some of the networking issues that popped up in 1.11.x have now been fixed.

      Changelog

      1.12.0

      • CONFIG/CLI: Allow use of –appendconfig with override cfgs instead of getting ignored
      • CONFIG/LOGGING: No more console startup logging if logging to file
      • CONFIG: Saves config on exit only once instead of (worst case scenario) 3 times
      • DATABASE/EXPLORE/VIEW: Add View feature – Add saving of a filter set in the Explore menu into a so called “View” file which then gets listed alongside playlists. This also adds the ability to filter a category by range in the Explore menu and not just filter on exact matches.
      • FILEBROWSER: Fix regression – certain extensions keep disappearing
      • IOS: New modern iOS version (targeting iOS 13 and up), leverages Swift
      • IOS: Fixes to iOS toolbar
      • IOS16: Add iOS 16 lock screen widget
      • IOS13+: Added emulator keyboard
      • IOS13+: Add JIT support for non-jailbroken devices
      • IOS13+: Added support for touch mouse handler
      • IOS13+: Changed click-and-drag behavior to double tap hold and drag
      • INPUT/HAPTIC/OVERLAYS/ANDROID: Improve haptic feedback for input overlays
      • LINUX/MALI FBDEV: Add conditional support for OpenGL ES 3.x
      • LOCALIZATION: Updates
      • LOCALIZATION/ENGLISH: Add British English language option
      • LOGGING/QT: Increase log buffer to 2048 characters – Vulkan validation layer messages output correctly now.
      • MENU/XMB: Remember selection per main tabs. Addresses the following : collection playlists can contain hundreds or thousands of items. When scrolling through one, pressing left or right by accident can be common. This resets the playlist to the top
      • MIST/STEAM/STEAMDECK: Don’t expose Black Frame Insertion (BFI) if we are running on a Steam Deck
      • NETWORKING/WINDOWS: Disable poll support for MSVC 2010 and earlier. WSAPoll is not supported on Windows XP and earlier.
      • NETWORKING/WIIU: Fix socket_connect_with_timeout for WIIU
      • NETWORKING/WIIU: Fixes RetroAchievements login
      • NETWORKING/WIIU: Fixes other online updater functionality
      • SAVESTATES/NOTIFICATIONS: Add delay to savestate notifications, so that GPU savestate screenshots stay untouched
      • SAVESTATES/SCREENSHOTS: Avoid ‘video_gpu_screenshot’ with savestates. Allow GPU screenshots with savestates only when there is no other way of getting a screenshot.
      • SCREENSHOTS/VULKAN: Unload screenshot widget texture early. Fixes Vulkan crash when closing content while a screenshot widget is still on-screen
      • SCREENSHOTS/VULKAN: Fix screenshot widget crash when ticker animating
      • WAYLAND: Set correct app ID
      • WIIU: Add some missing default directories
      • WIIU: Get mkdir working on WiiU (directory creation)

    RetroArch 1.11.1 release!


    RetroArch 1.11.1 has just been released.

    Grab it here.

    If you’d like to learn more about upcoming releases, please consult our roadmap here.

    Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We have always prioritized the endusers experience, and unlike others, we have never emburdened them with in-app ads, monetization SDKs or paywalled features, and we intend to continue to do so. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

    NOTE: The Android version on Samsung Galaxy Store, Huawei AppGallery, and Amazon App Store will be updated soon. We will remove this notice when it has been updated. Until then, grab the APK from our site.

    NOTE: Several size optimizations have been made to the packages. We no longer pre-install all of the optional XMB theme packs or other miscellaneous assets. Previously we also shipped autoconfig files that were irrelevant for that specific platform. By excluding these files from the package, we have managed to reduce the filesize and overall amount of files of RetroArch downloads/installs significantly. On consoles this will be very helpful where SD card/FTP installs can tend to be very slow.

    If you still want to have all assets, you can go to Online Updater and select ‘Update Assets’. This will install all assets.

    Changelog

    1.11.1

    • GENERAL: Fix DEFAULT_FILL_TITLE_MACRO
    • NETWORKING: Add the const qualifier to some function parameters
    • NETWORKING/NETPLAY/UPNP: Add a private or CGNAT address warning to UPnP
    • SAVESTATES/SCREENSHOTS: Avoid ‘video_gpu_screenshot’ with savestates
    • UWP: Better ‘Save on quit’ fix

    1.11.0

    • 3DS: Add unique ID’s
    • 3DS: Add bottom menu options
    • 3DS: Set bottom_asset directory default
    • 3DS: Only enable internal counter with CONSOLE_LOG defined
    • 3DS: Set default bottom font values
    • 3DS: Fix CIA installation issues
    • 3DS: Support latest libctru
    • ANDROID: Add HAVE_ACCESSIBILITY
    • ANDROID: Gingerbread support
    • ANDROID: Touchpads support
    • ANDROID: Builtin Xperia Play autoconfig profile
    • ANDROID: Disable Feral GameMode for Android – only available on Linux
    • ANDROID: Add a configurable workaround for Android reconnecting devices
    • ANDROID/FDROID: Add F-Droid metadata to repo in Fastlane format
    • AUDIO/AUDIO MIXER: Add missing locks for thread safety
    • AUDIO/AUDIO MIXER: Fix audio mixer memory leak + remove redundant ‘single threaded’ rthreads implementation
    • AUTOSAVE: Change/improve exit behavior of autosave thread – if condition variable is signaled, the loop is ran another last time so we can do a final check/save before stopping the thread.
    • CDROM: Fix memory leak caught with asan – buf passed to filestream_read_file
    • CORE INFO/NETPLAY: Ensure current core info is initialized at runloop_event_init_core when netplay is enabled
    • CHEEVOS: Upgrade to rcheevos 10.4
    • CHEEVOS: Allow creating auto savestate in hardcore
    • CHEEVOS: prevent invalid memory reference if game has achievements but core doesn’t expose memory
    • CHEEVOS: Release achievement badge textures when video driver is deinitialized
    • CHEEVOS: Re-enforce hardcore limitations once achievements are loaded
    • CHEEVOS/MENU/MATERIALUI: Show achievement badge icons in MaterialUI driver
    • D3D9: D3D9 has been split up into two drivers – D3D9 HLSL (max compatibility, no shader support yet) and D3D9 Cg (dependent on deprecated Nvidia Cg runtime library)
    • D3D9/HLSL/XMB: XMB fix
    • D3D9/CG: D3D9 Cg driver fixed
    • D3D11: Fix overlay not showing up
    • D3D11/12: Reduce lag with WaitForVBlank – this rather simple addition seems to make D3D11/12 very very close to Vulkan/GLCore regarding input lag.
    • D3D11/12: Add waitable swapchains and max frame latency option
    • D3D11/12: Make waitable swapchains optional
    • DATABASE: Reformat ‘rdb_entry_int’ – Nitpick adjustments for database entries: Capitalize “Release Date”, and remove space before : from Release Date rows which use integer
    • DATABASE/EXPLORE: Allow On-Demand Thumbnails in Explore menu
    • DATABASE/EXPLORE/MENU/OZONE/XMB/RGUI: Explore menu thumbnails
    • DISC CONTROL: Better Disc Control append focus
    • DOS/DJGPP: Add a workaround for libc bug
    • AUTOMATIC FRAME DELAY: Added slowmotion resiliency
    • AUTOMATIC FRAME DELAY: Added string representation for seeing the current effective delay without opening statistics
    • AUTOMATIC FRAME DELAY: Added “ms” to logging and “(ms)” to label just like in Audio Latency
    • GENERAL: Don’t bake in OpenAL and libcaca by default unless explicitly enabled with configure switch.
    • GENERAL: Reduce amount of strlen calls
    • GENERAL: Reduce or simply sin/cosf calls
    • GFX: Fix readability and precision issues in aspectratio_lut
    • GFX: Add option to manually enable/disable automatic refresh rate switching
    • GFX: Enable automatic configuration of ‘VSync Swap Interval’
    • GFX/FONT/FREETYPE: Use FT_New_Memory_Face – first read it from file to memory beforehand –
      this solves an asset extraction issue when selecting ‘Update Assets’ – apparently FT_New_Face keeps an open file handle to the font file which
      prevents it from being overwritten/deleted while the program is still running.
    • GFX/THUMBNAILS: Thumbnail aspect ratio fix
    • GFX/THREADED VIDEO: Optimizations, fixes and cleanups
    • GFX/VIDEO FILTERS: Add Upscale_240x160-320×240 video filter with ‘mixed’ method
    • GLSLANG: Fix compilation with ./configure –disable-builtinglslang – was missing linking against -lMachineIndependent and -lGenericCodeGen static libs
    • INPUT: Fix off by one error for input_block_timeout setting. Also default to 0 for this setting (pretty massive performance gain)
    • INPUT: Analog button mapping fixes
    • INPUT/HID/OSX: Fix DualShock3 support
    • INPUT/HID/LINUX: (qb) Disable HAVE_HID by default for now for Linux as long as there are no working backends for both
    • INPUT/HID/WINDOWS: (qb) Disable HAVE_HID by default for now for Windows as long as there are no working backends for both
    • INPUT/HID/WIIU: Fix DualShock3 support
    • INPUT/OVERLAY: Block pointer input when overlay is pressed
    • INPUT/REMAPPING: input_remapping_save_file – existing remapping file was needlessly reloaded
    • INPUT/REMAPPING: Add option to disable automatic saving of input remap files
    • INPUT/LINUX/UDEV: Fix lightgun scaling on Y axis
    • INPUT/LINUX/X11/LED: Add LED keyboard driver
    • INPUT/WINDOWS/LED: LED keyboard driver cleanup
    • INPUT/WINDOWS/WINRAW: Clear key states when unfocused
    • INPUT/WINDOWS/WINRAW: Fix pointer device position
    • IOS: iOS app icon fixes & revisions
    • LIBRETRO/SAVESTATES: Implement an api call for context awareness
    • LOCALIZATION: Updates
    • LOCALIZATION: Add Catalan language option
    • LOCALIZATION: Fix some bad localization
    • LINUX: Make memfd_create call more backwards compatible by calling it through syscall – on older systems, you’ll have to include linux/memfd.h for the MFD_ defines, and call memfd_create() via the the syscall(2) wrapper (and include unistd.h and sys/syscall.h for it work). We exclude linux/memfd.h header include because we already provide the MFD_ defines in case they are missing
    • LINUX/MALI FBDEV: Fix assertion failed on video threaded switch
    • MENU: Menu paging navigation adjustments
    • MENU: New Menu Items for disabling Info & Search buttons in the menu
    • MENU: Allow the user to use volume up/down/mute hotkeys from within the menu
    • MENU: Add missing sublabels for non-running Quick Menu
    • MENU: Reorganize Quick Menu Information
    • MENU: Savestate thumbnails – Savestate slot reset action
    • MENU: Allow changing savestate slots with left/right on save/load
    • MENU: Add ‘Ago’ to playlist last played styles
    • MENU: Add proper icons for shader items
    • MENU/MATERIALUI: Add icon for ‘Download Thumbnails’
    • MENU/XMB: Add options for hiding header and horizontal title margin
    • MENU/XMB: Dynamic wallpaper fixes
    • MENU/XMB: Add Daite XMB Icon Theme
    • MENU/XMB/OZONE: Savestate thumbnail aspect ratio
    • MENU/XMB/OZONE: Core option category icon refinements
    • MENU/XMB/OZONE: Fullscreen thumbnail browsing
    • MENU/XMB/OZONE: Add playlist icons under ‘Load Content’
    • MENU/XMB/OZONE: Thumbnail improvements
    • MENU/XMB/OZONE: Savestate thumbnail fullscreen + dropdown
    • MENU/XMB/OZONE: Prevent unnecessary thumbnail requests when scrolling through playlists
    • MENU/OZONE: Fix playlist thumbnail mouse hover after returning from Quick Menu
    • MENU/OZONE: Thumbnail visibility corrections
    • MENU/OZONE: Playlist metadata reformat
    • MENU/OZONE: Savestate thumbnail fixes
    • MENU/OZONE: Add savestate thumbnails
    • MENU/OZONE: Header icon spacing adjustment
    • MENU/RGUI: Savestate thumbnails
    • MENU/SETTINGS: Turn Advanced Settings on by default, this entire filtering of settings will need a complete rethink anyways
    • MENU/WIDGETS: Widget color + position adjustments
    • MIYOO: Exclude unused HAVE_HID for Miyoo
    • MIYOO: Enable screenshots
    • MIYOO: Enable rewind
    • NETWORK: Allow MITM server selection on OK callback
    • NETWORK: Replace socket_select calls
    • NETWORK: Implement binary network streams
    • NETWORK: Poll support
    • NETWORK: Check connect errno for successful connection
    • NETWORK: Get rid of the timeout_enable parameter for socket_connect
    • NETWORK: Fix getnameinfo_retro’s port value for HAVE_SOCKET_LEGACY platforms
    • NETWORK: Define inet_ntop and inet_pton for older Windows versions
    • NETWORK: Define isinprogress function
    • NETWORK/NATT: Move natt files to “network”
    • NETWORK/NETWORK STREAMS: Add function netstream_eof
    • NETWORK/NETPLAY: Fix game CRC parsing
    • NETWORK/NETPLAY: Disable and hide stateless mode
    • NETWORK/NETPLAY: Change default for input sharing to “no sharing”
    • NETWORK/NETPLAY: Enforce a timeout during connection
    • NETWORK/NETPLAY: Disallow clients from loading states and resetting
    • NETWORK/NETPLAY: Special saves directory for client
    • NETWORK/NETPLAY: Ensure current content is reloaded before joining a host
    • NETWORK/NETPLAY: Fix client info devices index
    • NETWORK/NETPLAY: Fix input for some cores when hosting
    • NETWORK/NETPLAY: Memory leak fixes
    • NETWORK/NETPLAY: Force a core update when starting netplay
    • NETWORK/NETPLAY: Fix NAT traversal announce for HAVE_SOCKET_LEGACY platforms
    • NETWORK/NETPLAY: Refactor fork arguments
    • NETWORK/NETPLAY: Fix content reload deadlocks on static core platforms
    • NETWORK/NETPLAY: Disallow netplay start when content is not loaded for static core platforms
    • NETWORK/NETPLAY: Show client slowdown information
    • NETWORK/NETPLAY: Improve check frames menu entry
    • NETWORK/NETPLAY: Do not try to receive new data if the data is in the buffer
    • NETWORK/NETPLAY: Copy data on receive, even if the buffer is full
    • NETWORK/NETPLAY: Fix lobby sublabel CRC display on some platforms
    • NETWORK/NETPLAY: Support for customizing chat colors
    • NETWORK/NETPLAY: Small launch compatibility patch adjustments
    • NETWORK/NETPLAY: Support for banning clients
    • NETWORK/NETPLAY: Minor tweaks to the find content task
    • NETWORK/NETPLAY: Support for gathering client info and kicking
    • NETWORK/NETPLAY: Fix possible deadlock
    • NETWORK/NETPLAY: Initialize client’s allow_pausing to true
    • NETWORK/NETPLAY: Disable netplay for unsupported cores – with stateless mode being disabled for now, there is no reason not to include this. Refuse to initialize netplay when the current core is not supported (no proper savestates support)
    • NETWORK/NETPLAY/DISCOVERY: Ensure fixed width ints on packet struct
    • NETWORK/NETPLAY/DISCOVERY: Support for IPv4 tunneling (6to4)
    • NETWORK/NETPLAY/DISCOVERY/TASKS: Netplay/LAN Discovery Task refactor – aims to prevent blocking the main thread while awaiting for the LAN discovery timeout; This is accomplished by moving the whole discovery functionality into its task and using a non-blocking timer to finish the task. Also fixes discovery sockets not being made non-blocking, which could cause the main thread to hang for very long periods of time every pre-frame.
    • NETWORK/NETPLAY/TASKS: Find content task refactor – fixes many issues along the way, including a couple of nasty memory leaks that would leak thousands of bytes each time the task ran. It also expands the original concept by matching currently run content by filename (CRC matching is always performed first though).
    • NETWORK/NETPLAY/TASKS: Find content task refactor – Ensure CRC32 is 8 characters long
    • NETWORK/NETPLAY/LOBBY: Add setting for filtering out rooms with non-installed cores
    • NETWORK/NETPLAY/LOBBY: Hide older (incompatible) rooms
    • NETWORK/NETPLAY/LOBBY: Add a toggleable filter for passworded rooms. In addition, move lobby filters into its own submenu for better organization.
    • NETWORK/NETPLAY/MENU: Chat supported info for the host kick submenu
    • NETWORK/NETPLAY/MENU: Localize relay servers
    • NETWORK/NETPLAY/MENU: Host Ban Submenu
    • NETWORK/NETPLAY/MENU: Add client devices info to the kick sub-menu
    • NETWORK/NETPLAY/MENU: Path: Netplay -> Host -> Kick Client – Allows the host to kick clients. Allows the host to view client information: connected clients (names), status (playing/spectating) and ping.
    • NETWORK/NETPLAY/VITA: Add net_ifinfo support
    • NETWORK/NETPLAY/VITA: Enable partial LAN discovery
    • NETWORK/NETPLAY/VITA: Change default UDP port to 19492
    • NETWORK/NETPLAY/VITA: Do not multiply negative timeout values
    • NETWORK/NETPLAY/VITA: Fix epoll’s timeout parameter
    • NETWORK/NETPLAY/VITA: Launch compatibility patch
    • NETWORK/NETPLAY/3DS: Launch compatibility patch
    • NETWORK/NETPLAY/3DS: Adapt POLL for 3DS platform
    • NETWORK/NETPLAY/PS3: Launch compatibility patch
    • NETWORK/NETPLAY/WII: Enable net_ifinfo for some features. In practice, this only allows the netplay’s UPnP task to succeed on the Wii.
    • NETWORK/NETPLAY/WIIU: Launch compatibility patch
    • NETWORK/NETPLAY/SWITCH: Launch compatibility patch
    • NETWORK/UPNP: Attempt support for remaining platforms
    • NETWORK/UPNP: Support for IPv4 tunneling
    • ODROID GO2: Increase DEFAULT_MAX_PADS to 8 for ODROIDGO2, since that impacts the RG351[X] consoles. The RG351[X] have a USB host controller and can have an arbitrary number of USB gamepads.
    • ONLINE UPDATER: Online Updater menu reorganizing
    • OSX: Fixed items of system top menu bar on macOS
    • OSX: Revision to macOS app icon set
    • PLAYLISTS: Ensure history list will contain CRC32
    • PLAYLISTS: Fix CRC32 comparison – as state->content_crc has “|crc” suffix.
    • PS4/ORBIS: Orbis/PS4 Support using OrbisDev toolchain
    • PS4/ORBIS: Update xxHash dependency
    • PS4/ORBIS: Shader cache
    • RETROFW: Exclude unused HAVE_HID for RetroFW
    • RETROFW: Support battery indicator on RetroFW
    • RETROFW: Enable menu toggle button on retrofw devices
    • SHADERS: Shader Preset Loading of Multiple additional #references lines for settings
    • SHADERS: Shader Load Extra Parameter Reference Files – this adds the ability to put additional #reference lines inside shader presets which will load additional settings. The first reference in the preset still needs to point at a chain of presets which ends with a shader chain, and subsequent #reference lines will load presets which only have parameter values adjustment. This allows presets to be made with a modular selection of settings. For example with the Mega Bezel one additional reference could point at a preset which contained settings for Night mode vs Day mode, and another reference could point to a preset which contained settings for how much the screen should be zoomed in.
    • SHADERS/MENU: Increase shader scale max value
    • SCANNER/DC: Fix Redump bin/cue scan for some DC games
    • SCANNER/GC/WII: Add RVZ/WIA scan support for GC/Wii
    • SCANNER/PS1: Improved success rate of Serial scanning on PS1 by adding support for the xx.xxx format
    • SCANNER/PS1: Changed return value of detect_ps1_game function to actually return a failure when the Serial couldn’t be extracted. Scanner will then fallback on crc check, and usually ends up finding the games in the database.
    • SWITCH: Enable RWAV (WAV audio file) support
    • STRING: Do not assume char is unsigned
    • TASKS: More thread-awareness in task callbacks
    • TASKS: Fix race condition at task_queue_wait
    • TVOS: Revised tvOS icons w/ updated alien.
    • VFS: Fix various VFS / file stream issues
    • VULKAN: Fix more validation errors
    • VULKAN: Attempt to fix validation errors with HDR swapchain. Always use final render pass type equal to swapchain format. Use more direct logic to expose if filter chain emits HDR10 color space or not
    • VULKAN/ANDROID: Honor SUBOPTIMAL on non-Android since you’d want to recreate swapchains then. On Android it can be promoted to SUCCESS.
    • SUBOPTIMAL_KHR can happen there when rotation (pre-rotate) is wrong.

    • VULKAN/DEBUG: Automatically mark buffer/images/memory with names
    • VULKAN/DEBUG: Move over to VK_EXT_debug_utils. Debug marker is deprecated years ago.
    • VULKAN/HDR: Fix leak of HDR UBO buffer
    • VULKAN/BFI: Fix BFI (Black Frame Insertion) regression
    • WINDOWS: Fix exclusive fullscreen video refresh rate when vsync swap interval is not equal to one – refresh rate in exclusive fullscreen mode was being incorrectly multiplied by vsync swap interval, breaking swap interval functionality at the gfx driver level
    • WIN32: Do optimization for Windows where we only update the title with SetWindowText when the previous title differs from the current title
    • WIN32: Skip console attach when logging to file
    • WIN32: Remove black margins with borderless non-fullscreen window
    • WIN32/TASKBAR: Release ITaskbarList3 on failed HrInit – pointer wasn’t NULL’d, thus set_window_progress would cause weird behavior
    • WII/GX: Fix potential datarace
    • WIIU: Implement sysconf and __clear_cache
    • WIIU: Add OS memory mapping imports
    • UWP: Added launch protocol arg ‘forceExit’ so a frontend can tell an already-running RetroArch UWP instance to quit.
    • UWP: Enable core downloader/updater
    • UWP: Remove copy permissions as its inefficient as we can just directly assign the new ACL and that works
    • Xbox/UWP: Remove expandedResources
    • Xbox/UWP: UWP OnSuspending crash fix
    • Xbox/UWP: Enable savestate file compression by default for UWP/Xbox – got told there are no more issues with it
    • Xbox/UWP: Add support for 4k to angle on xbox for MSVC2017 build

    RetroArch – Introducing the Mega Bezel Reflection Shader

    Article written by HyperSpaceMadness



    RetroArch keeps introducing innovations to the retrogaming world, constantly building simple roads for players to enjoy classic games in new and sometimes better ways.

    Getting the sweet spot between ease of use and customization can be a time-consuming process, and sometimes requires a deep insight of how old technologies worked: refresh rate, aspect ratio, scaling, overscan, deconvergence are terms which we may or may not be familiar with, and these all play an important part in building a retro gaming experience that feels better, yet passionately authentic.

    How do we get a handle on this?

    Building an idealized CRT (cathode ray tube) like display experience. Getting the best out of post-processing with the latest CRT shaders fused into a “one stop” solution. Making it incredibly easy to customize, and yet performant. A fresh and unique starting point for the retro game lover.

    Console branded tv by Soqueroeu, great for playing on a big screen in the living room
    Console branded tv by Soqueroeu, great for playing on a big screen in the living room

    The Mega Bezel Project started back in July 2019 when developer HyperspaceMadness was looking at experimental shaders creating real-time reflections on emulated display bezels. More than two years later, the swiss-army-knife of visual simulation to enhance the retro game experience is ready for players!

    Sonic with a Blended Waterfall, Genesis Preset and graphics by Duimon
    Sonic with a Blended Waterfall, Genesis Preset and graphics by Duimon

    The Mega Bezel is unique in that it bends the common definitions of shaders and overlays in an out-of-the-box experience: custom calculations take care of games native resolution and scaling, dynamically draw bezels around the gameplay area filled with curvature simulation and reflections, incorporating a unique pipeline of CRT simulation models and other visual conditioning of the game image, color correction, de-dithering, and adding responsive backgrounds and lots of additional features to enjoy.

    The shader centralizes a lot of complex tasks and makes them instantly available for all cores: screen rotation and position, horizontal and vertical orientation, zooming, cutting away games black spaces to get a real full-screen, and filling the aspect ratio difference between the emulated screen and your monitor with interesting graphics. Mega Bezel even adds original solutions, like the ‘Night Mode’ to simulate a dimly lit room and ‘Glass Mode’ for a modern and dynamic way to fill the entire monitor.

    Mega Man 8 with the Glass Preset, good for filling the screen, avoiding any worries of OLED burn-in
    Mega Man 8 with the Glass Preset, good for filling the screen, avoiding any worries of OLED burn-in

    Being based on contributions and discussions from the Libretro forums, Mega Bezel is a community project at its heart: shader writers and artists are actively developing features and customized presets which max out the shader capabilities, and making them freely available for retro players to enjoy and further customize, chasing the their ideal setup.

    3DS Preset by Duimon with alternate layout and custom graphics
    3DS Preset by Duimon with alternate layout and custom graphics

    Easy to use for newcomers, deep in customization for emulation maniacs, flexible for artists: the Mega Bezel project is a fun ongoing journey that strives to bring wonderful features to everyone, minus the hassle of setup!

    Game Boy Advance LCD Preset & Graphics by Duimon
    Game Boy Advance LCD Preset & Graphics by Duimon

    You can get the basic Mega Bezel shaders inside RetroArch by running Online Updater -> Update Slang Shaders then the shaders will be located inside shaders/shaders_slang/bezel/Mega_Bezel/Presets. Be sure to read the setup portion of the ReadMe.md to help you get started you can find it in the Mega_Bezel folder just mentioned.

    A small group of talented artists has also come together using the Mega Bezel to create suites of shader presets with beautiful graphics covering many consoles, computers and PVMs to share with retro gamers.

    If this sounds exciting head over to the Mega Bezel thread on the Libretro forum to find more about the Mega Bezel, and links to the artist’s pages and shader preset collections.

    https://forums.libretro.com/t/hsm-mega-bezel-reflection-shader-feedback-and-updates/25512

    Below are more examples of the Mega Bezel and artwork from the community.

    OutRun preset and graphics by Orion's Angel
    OutRun preset and graphics by Orion’s Angel
    Star Wars with a lovely JVC PVM from TheNamec!
    Star Wars with a lovely JVC PVM from TheNamec!
    Garou: Mark of the Wolves with Smoothed Preset
    Garou: Mark of the Wolves with Smoothed Preset
    REZ with Dreamcast core upscaling with shader downscaling and cyberpunk style by TheNamec
    REZ with Dreamcast core upscaling with shader downscaling and cyberpunk style by TheNamec
    Monkey Island with some smoothing and deconvergence magic
    Monkey Island with some smoothing and deconvergence magic
    The Great Gianna Sisters with a preset and graphics by TheNamec
    The Great Gianna Sisters with a preset and graphics by TheNamec
    Tron's Deadly Discs showing supports for the game Image on top of backdrop
    Tron’s Deadly Discs showing supports for the game Image on top of backdrop
    Choplifter with the Glass preset and some scaling
    Choplifter with the Glass preset and some scaling
    Resolution info can be printed to the screen so you can see what resolutions are used
    Resolution info can be printed to the screen so you can see what resolutions are used
    Shadowgate on Macintosh with graphics by Duimon
    Shadowgate on Macintosh with graphics by Duimon
    Monochrome Amber mode applied
    Monochrome Amber mode applied
    Vib Ribbon on PS1 with color added and a nice PVM from TheNamec
    Vib Ribbon on PS1 with color added and a nice PVM from TheNamec