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).

    Libretro Cores Progress Report – February 5, 2020 (Big updates for N64, Dreamcast, PlayStation1, Saturn and 3DO emulator cores!)

    Our last core progress report was on January 9, 2019. Below we detail the most significant changes to all the Libretro cores we and/or upstream partners maintain. We are listing changes that have happened since then.

    How to update your cores in RetroArch

    There are two ways to update your cores:

    a – If you have already installed the core before, you can go to Online Updater and select ‘Update Installed Cores’.

    b – If you haven’t installed the core yet, go to Online Updater, ‘Core Updater’, and select the core from the list that you want to install.

    Parallel N64


    Description: Nintendo 64 emulator core

    Parallel RSP has been completely rewritten to use GNU Lighting instead of LLVM.

    Advantages:
    * LLVM was a big dependency. When statically linking this in, the core could become as big as 80MB non-stripped and 60MB stripped. Contrast this to GNU Lightning where we are sitting at 3.6MB non-stripped. LLVM also was not trivial to port to other platforms as easily as GNU Lightning. This means that Parallel RSP will make its way to Android and Switch (there is already an Aarch64 backend being written by m4xw)

    * There are no more micro stutters and stalls that plagued the LLVM implementation. For instance – bringing up the auto-map in Doom 64, or the first menu screen transitions in F-Zero X, or firing your gun for the first time in Quake 64 – all of these would add temporary 1 second or more stalls the first time a code block was being compiled. With GNU Lightning, there are no such issues.

    Disadvantages:
    * Code generation is quite naive compared to LLVM’s, so there is somewhat of a performance tradeoff compared to the LLVM implementation. We estimate we lose about 5 to 8fps compared to the LLVM implementation. However, no microstutters/stalls and no more LLVM dependency makes it worth it, and there are ways to win this performance back and go further beyond in departments other than parallel RSP anyway.

    • Remove old parallel RSP implementation based on LLVM, replaced with Lightning-based parallel RSP. Takes care of microstutters/stalls
    • Angrylion: Option to select number of threads
    • Parallel RSP now available on Mac

    Flycast


    Description: Sega Dreamcast emulator core

    Important updates

    Flycast – Better saturate colors when converting textures to higher precision

    Flycast – fix texture bleeding case when upscaling

    Increased NAOMI Arcade game compatibility

    Flyinghead has been busy improving arcade emulation support.

    Netlink support is being worked on for Gun Survivor 2 Biohazard Code: Veronica. This is an arcade game adaption of Resident Evil Code: Veronica. It was also later released on PlayStation2. It never made the transition to the home on Dreamcast.

    Second is Mazan – Flash of The Blade. The controls were not emulated before. This game is actually fairly unique in that not only was it a custom Naomi hardware design by Namco (more capable GPUs that could operate in an array), but it also had an unique input device.


    It used motion sensing technology to detect swings you would make with the sword. Yes, that’s right, a motion sensing sword is your primary input device in this game.

    (Upcoming) Accurate video output simulation – PowerVR 2 Post-process filtering

    Leilei and Flyinghead got together to add something that accuracy purists might love. This is an upcoming feature that will be available soon –

    We’ve added a couple of video output postprocessing options. To be exact, it’s an internal 24->16-bit buffer post-dithering pipeline stage. Lei-lei did this reversal of the PowerVR effects with his PowerVR PCX2 card (which has the same exact post-dithering as the newer PVR GPUs) and observing lossless official press release screenshots and xjas’s VGA capture dump.

    If you recall, during the PS2’s early launch, people would often remark that the Dreamcast’s video output appeared crisper and had anti-aliasing applied whereas PS2 launch games appeared heavily aliased. In truth, what was going on was not really full-scene anti-aliasing or anything to that effect. Instead, it was a simple vertical blur the PowerVR2 GPU in the Dreamcast did to combat interlace flicker on composite video output.
    The GameCube did something similar with the copy filters on a few games. Some of Sonic Team’s games on GameCube for instance did a similar vertical blur for the same deflicker purpose.

    There was also noticeable VGA signal loss included in the VGA output when connecting your Dreamcast to a monitor with a VGA cable. It gives the screen a green hue and adds a ton of feedback instead of it being a clean dithered 16bpp image. This is also an option in the frontend shader, and we hope to add this too to Flycast as an optional feature.

    You can now enable this with the GL renderer. If you’d like to use this shader in other cores and apply it as a frontend shader, you can do that too – we added the shader to the GLSL and Slang shader packs (see gpu/powervr2).

    Frame comparison at native resolution

    Frame comparison at 5120×3840

    Changelog

    • Init AICA int mask/level at HLE boot – fixes missing audio in KOS homebrews
    • Disable DIV matching for Aqua GT
    • Disable DIV matching for Rayman 2 (NTSC)
    • Disable DIV matching for Rayman 2 (PAL)
    • Disable DIV matching for Elysion
    • Disable DIV matching for Silent Scope (NTSC)
    • Disable DIV matching for Silent Scope (PAL)
    • Disable DIV matching for Power Stone (US)
    • Disable DIV matching for Power Stone (JP)
    • Disable DIV matching for Power Stone (PAL)
    • Disable DIV matching for Metropolis Street Racer (NTSC)
    • Disable DIV matching for Metropolis Street Racer (PAL)
    • Disable RGB Component for Vigilante 8: 2nd Offense, Gauntlet Legends, Street Fighter Alpha 3
    • Stop CDDA when reading sector. Fixes Hydro Thunder – Time records music bug
    • (GL/Vulkan) Ignore trilinear filtering if texture isn’t mipmapped. Fixes Shenmue snowflakes color
    • (GL/GL4) PowerVR2 post-processing filter from leilei
    • (GL4) Fix blending issue when autosort=0. Fixes Sturmwind menu
    • (GL4) Don’t use extra depth scale in fog calculation. Fixes fog density in Sega Rally 2
    • New widescreen cheats: Suzuki Racing, Nightmare Creatures, Rent a Hero
    • (Maple) Safely reconnect VMUs when changing per-game VMUs option, may lead to VMU corruption otherwise. Don’t create VMU files when running Naomi or AtomisWave games
    • (Naomi) Emulate World Kicks and World Kicks PCB inputs
    • (Naomi) Fix reboot (and exiting service menu) by disabling legacy DIMM board emulation
    • (Naomi) Add input config for Mazan, emulate inputs for Mazan
    • (Reios) Support disk eject/change. Tested with Skies of Arcadia and D2
    • (PVR) Better saturate colors when converting tex to higher precision. Fixes transparency Issues in RE: Code Veronica and Dead or Alive 2
    • (PVR) Fix simple texture bleeding case when upscaling
    • Add disk control interface v1 support [jdgleaver]

    Beetle PSX


    Description: Sony PlayStation1 emulator core

    Some important updates for Beetle PSX too – Lightning/Lightrec (the new dynarec technology being used) has seen many updates and improvements. Aarch64 compatibility should be a lot better now. ARMv7 is still a Work-In-Progress and still has many issues.

    It’s now possible to set DMA/GPU Event Cycles to values as high as 1024. 1024 can offer a significant speed boost, but some games might not boot with this setting enabled. Test it yourself with a game of your choosing and see if it works reliably before you decide. You can always go for a lower value and see if that works better, while you don’t lose too much performance in the process.

    So, to address the previous limitations of the dynarec – the two big ones were that runahead did not work, and that PGXP did not work with the dynarec enabled. Runahead is now working for software rendering mode, so that part is fulfilled (since hardware rendering not working reliably is not a core issue). As for PGXP, it now works with dynarec, but you will see a steep decline in performance, bringing you to performance levels just a little bit better than interpreter mode. However, there are plans to make PGXP part of the dynarec as well, which could take care of this issue.

    Some performance tips for people that want to get the most out of their device:
    * Set Dynarec Code Invalidation to ‘DMA Only (Slightly Faster)’. If it causes no issues in a game, this should give you a not-insignificant performance boost in some games.
    * Set Dynarec DMA/GPU Event Cycles to a higher value than the default 128 if you can get away with it. If a game starts crashing or no longer boots from the BIOS screen, then you know you set it too high. Setting DMA Cycles to 1024 can have a big impact on maximum framerate.
    * Software Framebuffer can be disabled for games that don’t make use of framebuffer readback. Try to turn this off if you are using the Vulkan hardware renderer. If you find certain graphics artefacts all of a sudden that were previously not there, you might have to turn this setting back on to get rid of the glitches.
    * The Vulkan renderer right now might be a bit slower than the Software renderer. Some things you can try to bring the performance more in line would be to disable things like ‘Adaptive smoothing’, but if there is still a big performance gulf, you should resort to the Software renderer.
    * PGXP right now will have a massive impact on performance with the dynarec. Turn it off if you care about getting the best performance possible.

    • Don’t call PGXP functions in gpu when PGXP is disabled
    • Add PGXP support in dynarec. Not much faster than interpreter, due to calling PGXP functions on every load/store opcode. Might become faster later
    • Add more DMA/GPU Event Cycles options. All multiples of 128 (default) should be fine. 1024 should be significantly faster but also the least compatible
    • Increase CPU overclock limit to 750%
    • Fix loading save states from pre-dynarec, need to use SFARRAYN with old name
    • Update Lightning
    • Add disk control interface v1 support [jdgleaver]

    4DO


    Description: 3DO emulator core

    To learn more about some of the recent developments surrounding 4DO, be sure to read our dedicated article on this.

    Beetle Saturn

    Description: Sega Saturn emulator core

    • Add disk control interface v1 support [jdgleaver]

    Beetle Wswan

    Description: Bandai WonderSwan/WonderSwan Color emulator core

    • Backport 1.24.0 fixes
    • Backport variable color depth

    Beetle Supergrafx

    Description: Supergrafx emulator core

    • Move 2/6 button mode toggle to frontend

    NeoCD

    Description: SNK Neo Geo CD emulator core

    • Initial implementation of memory maps (untested) [fabrice-martinez]

    Mupen64plus Next

    Description: Nintendo 64 emulator core

    • Hotfix for Legend of Zelda: Majora’s Mask freeze due to special interrupt
    • Hotfix for Legend of Zelda: Ocarina of Time (+randomizer), this also fixes Rat Attack (only for dynarec, not interpreter) due to wrong handling of TLB exceptions for titles that don’t use TLB
    • Both hotfixes don’t fix the root cause and will be revised later on
    • Updated mupen64plus-rsp-hle, thanks to Gillou68310 the HVQM µcode is now implemented for HLE, fixing Pokemon Puzzle League and Yakouchuu II.

    Note: Stay tuned for a lot of great updates coming out over the coming months, featuring threaded rendering as well as multi plugin support!

    bsnes hd beta

    Description: Super Nintendo emulator core

    • Update to latest version [DerKoun]

    Boom3

    Description: Doom 3 game engine core

    • Changed name from dhewm3 to boom3 at request of author

    P-UAE

    Description: Commodore Amiga emulator

    • Libco removed. 8-9% performance improvement
    • Enabled SERIAL_PORT, which fixes:
      All versions of Super Skidmarks, except that WHDLoad slave 1.1 with the ludicrous memory requirement
      Grand Prix Circuit
    • Ensure reset_drawing() is called whenever geometry changes (prevents out of bounds video buffer access)
    • D-Pad mouse acceleration + font fix
    • More statusbar options
    • VKBD glyph tuning
    • Add support for disk control interface v1 (disk display labels)
    • Remove savestate_initsave + better VKBD mouse control
    • Fix from WinUAE 4.1.0 for Chaos Engine 2 AGA crash
    • VKBD tuning
    • Audio via retro_audio_batch_cb + MDS fix + pregap fix
    • New default controls
    • Graph font & VKBD tweaks
    • HD LED writing color to red

    Final Burn Neo

    Description: Multi-system arcade emulator core

    • Latest updates

    LRmame

    Description: Multi-system arcade emulator core

    • Updated to latest version (0.218) – will be available later today [tcamargo]

    NP2kai

    Description: PC-9801 series emulator

    • Updated to latest version [AZO234]

    Frodo

    Description: Commodore 64 emulator

    • Now available on Android

    Kronos

    Description: Sega Saturn emulator core

    • OpenGLES preparation work
    • Fix window resize for VDP1 layer – Fix Winter Heat in resize
    • When OREG is read while status flag is clear, force command processing – avoid race – fix Rayman controls
    • Be more generic for the SMPC race issue
    • On intback continue write, status flag shall be 1 – Fix batman boot
    • Fix Batman window
    • Set the vdp1On when updating using write – Fix Sega Ages loading screen
    • If the VDP1 is cleared with a non transparent color, assume it shall
    • Introduce the development RAM Card used by Heart of Darkness
    • Display VDP1 layer cleared with non transparent color
    • (libretro) hook the dev cartridge
    • Fix two consecutive end code on core OpenGL – Fix Code R
    • fh is related to kx – shall fix some bad behavior on RBG CS

    FCEUmm

    Description: NES emulator core

    NOTE: All changes courtesy of negativeexponent

    • Update mapper 213
    • Update mapper 319 (BMC-HP898F)
    • Update vrc2and4.c – support for big bank CHR (Contra 3) matched by hash
    • Added iNES 1.0/2.0 mappers
    • 134 – replaced Mapper134_init with Bs5652_Init
    • 391 – NC7000MM
    • 402 – 831019C J-2282
    • Added UNIF boards:
    • AB-G1L
    • BS-110
    • WELL-NO-DG450
    • KG256
    • Fix savestates – prevent possible issue on big-endian by adding mask
    • Fix savestates – specify correct variable size to state struct
    • Backport new FDS [Famicom Disk System] disk handling – fixes saving issue with some games (Bubble Bobble, Super Lode Runner II, …)
    • Add mapper 357
    • Add mapper 372
    • Add mapper 541
    • Add mapper 538
    • Add mapper 381
    • Add mapper 288
    • Update BMC-RESET-TXROM (m313)
    • Add mapper 374
    • Add mapper 390
    • Add mapper 267
    • m313: Fix incorrect bank sizes
    • Add mapper 294 (m134)
    • Add mapper 297

    Genesis Plus GX

    Description: Sega Genesis/Mega Drive/Master System/Game Gear emulator

    • Updated to latest version
    • Fixed runahead issues

    SMS-Plus GX

    Description: Sega Master System/Game Gear emulator

    • Add support for 2nd player port

    Picodrive

    Description: Sega Genesis/Mega Drive/Game Gear/Master System/Sega CD/32X emulator core

    • Allow access to Sega CD’s extra memory using retro_memory_map [negativeExponent]

    mgba

    Description: Game Boy Advance emulator core

    • Updated to latest version
    • Add Italian core options translation
    • Fixed runahead issues [endrift]
    • Add optional interframe blending

    Mesen

    Description: NES emulator core

    • Updated to latest version [Sour]
    • Fixed runahead issues [Sour]

    PCSX ReARMed

    Description: Sony PlayStation1 emulator core

    • Add input analog axis range modifier [stouken]
    • Add disk control interface v1 support [jdgleaver]

    Snes9x 2005

    Description: Super Nintendo emulator core

    • Should finally compile now for Raspberry Pi 4

    TIC-80

    Description: TIC-80 emulator core

    • Updated to latest version

    PX68K Libretro

    Description: NEC X68000 home computer emulator

    • Fix for M3U not registering Eject state
    • Implementation of new Disk Control interface (including custom labels)
    • px68k switch menu now accessable as core options