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 – May 27, 2020

    Yesterday marked RetroArch’s 10 Year Anniversary date. Today, we’re not only releasing a new RetroArch version, but we’re letting you know all the changes that have been made to the libretro cores since the last progress report.

    Our last core progress report was on April 2, 2020. 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.

    Final Burn Neo

    Description: Multi-system arcade emulator

    • Add Neo Geo Pocket Color support
    • Latest updates from upstream

    Flycast

    Description: Sega Dreamcast/NAOMI emulator

    • Naomi/AW widescreen integrated cheats (KNIGHTS OF VALOUR THE 7 SPIRITS, Metal Slug 6, Toy Fighter, Dolphin Blue)
    • DSP: Proper MIXS input shift. Fixes Grandia 2 missing sound effects
    • DSP: fix output shift. Fix wrungp ear rape (NAOMI game)
    • Fix for: [Bug]Super Street Fighter II X for Matching Service (Japan) – Disable BIOS region patching
    • Fix for: Samurai Spirits – Frame-skipping issues before reset or changing the option – don’t reset frameskip to 0 at init
    • Haiku: Fix build
    • Rewrite nvidia jetson nano build
    • Make threaded rendering the default on all platforms. Synchronous mode enabled unless LOW_END is defined
    • Info and warning for xBRZ upscaling core option
    • ARM64: check CpuRunning at end of each timeslice. fix hang when exiting service menu in kofnw (NAOMI game)
    • NAOMI: wrungp inputs. support inverted axis for NAOMI
    • Libretro: Improve context request
    • Libretro: fix input descriptor L2/R2 mixup
    • NAOMI: Add Tokyo Bus Guide support
    • Log VMU files loading
    • CUSTOM TEXTURES: support JPEG format. Get rid of libpng and use stb_image log error if naomi eeprom save fails
    • Fix mouse state not being updated
    • PVR/NAOMI: update palette when PAL_RAM_CTRL is updated – fixes wrong palette in Gun Survivor 2 score screen
    • REND: Use original palette data to compute palette hash
    • PVR: textured background plane – fixes Who Wants To Be a Millionaire

    DOSbox Core

    Description: DOSbox core

    • Latest updates from upstream
    • Add option for using 2axis joystick even when only one port is connected – this fixes input problems in “Super Off Road”, but other games might also need this.
    • Add option for controlling log verbosity level – Since we can log to stdout now, it makes sense. Also, some frontends might not have configurable log verbosity levels.
    • Add option for printing log output to stdout/stderr –
      Useful if the frontend’s logging output is unreliable or too noisy (or
      both) and we only want to see log output from the core. RetroArch does
      have a configuration option for controlling frontend and core log output
      seperately, but it’s bugged.
    • Enable Voodoo on all platforms and regardless of fakesdl – Software-based Voodoo emulation doesn’t require SDL anymore so it should build fine everywhere.
    • Don’t claim there’s Voodoo2 emulation – Oops. 12MB doesn’t actually mean Voodoo2. The current code only emulates the original Voodoo. The 12MB setting is just a non-standard memory configuration for the Voodoo 1.
    • Add support for changing current core option values programmatically.
      This is a hack. The libretro API does not actually support this. We
      achieve this by replacing all current values with a bogus one to force
      the frontend to forget the currently selected value, since it doesn’t
      match the bogus one. We then submit the correct values again, but with
      the default value set to the value we want to switch to. This forces
      the frontend to switch to that value because the bogus value is now
      gone and thus not a valid value anymore. Finally, we submit the values
      again but with the initial default value (we only want to change the
      current value, not set a new default.) The frontend will not switch the
      current value, as the values themselves have not changed, just the
      default has.

      RetroArch seems to be well-behaved here and does the correct thing.
      Other frontends might not play ball though.

    • Hook up 3dfx core options
    • Vita: Fix dynarec, fix build
    • Add build options to make bassmidi and fluidsynth optional
    • Fix ARM dynarec
    • Correct cdrom sector size field length according to docs.
    • Refactor input mapper –
      Code should be simpler to understand now. This also fixes a bug where
      inputs on the second port weren’t working before. Mouse emulation is now
      possible on both ports and the default emulated mouse buttons have been
      swapped with the speed modifier buttons (L/R are now mouse buttons,
      L2/R2 the speed modifiers.) This is a saner default since not all
      controllers have L2/R2 buttons.
    • GHA: Support macOS 10.13 by building with GCC instead of XCode Clang
    • Fix floppy image file size detection oopsie
    • Improve disk control related code and move it to its own source file
    • Make image file extension comparisons case-insensitive –
      This fixes the issue where loading an image that has an upper-case
      extension (like “.CUE” instead of “.cue”) results in dosbox mounting the
      image itself without going through the libretro disk control interface.

      We add new case conversion funtions for this (in the new util.h/util.cpp
      files) because the existing conversion functions provided either by
      dosbox or libretro-common are crap and we’re smarter than everybody
      else.

    • Add libretro disk control interface disk labels support –
      Only retro_get_image_label_t for now. Leave retro_set_initial_image_t
      and retro_get_image_path_t undefined as it’s not clear what the use
      would be in case of DOS games, especially since we don’t handle m3u
      files yet.
    • Fix disk_replace_image_index always reporting failure –
      This silly mistake caused the “Failed to append disc” error message in
      RetroArch.
    • Add core option for setting the free space when auto-mounting drive C
    • Ensure overlay mount path ends with a dir separator –
      Otherwise dosbox will write data in bogus directories in the overlay.
    • Add option for mounting the executable’s parent dir as drive C –
      Some pre-installed games expect to be installed in C:\GAMEDIR rather
      than directly in C:\. This option allows these games to run without
      having to modify their configuration files first.
    • Enable PC speaker by default
    • Fix direct content loading of DOS executables
    • Fix BASSMIDI crashing during startup on 32-bit Windows
    • Add BASS/BASSMIDI libs to core info file
    • Add BASSMIDI MIDI driver –
      The bass and bassmidi libraries are looked for in the frontend’s system
      directory and loaded at runtime. This allows the core to work and be
      distributed in a GPL-compliant way without those libraries.

    DOSbox SVN

    Description: DOSbox

    • Add SALC and XLAT to the dyn_x86 core. Improve LOCK handling a bit.
    • change new to new(std::nothrow) (vogons 73603) and some formatting
    • QNX: Adjust flags to msync based on libretro-common –
      I didn’t notice any bug before but this stuff is very difficult to trigger
    • QNX: Add support
    • Allow unaligned memory only on x86
    • Determine CPU based on actual running platform rather than build one –
      This allows to closs-compile on x86 linux into arm linux

      Endianness is determined in retro_endianness.h and dynarec is determined
      in dynarec.h

    • Correct cdrom sector size field length according to docs
    • memory: Add missing std::nothrow –
      Given subsequent check for NUL it was obviously intended for use with
      std::nothrow
    • Catch exceptions in dosbox –
      Right now an exceptions ends up killing cothread which is against libco
      recommendations and is more difficult to debug. Instead log and exit normally
    • Fix button mappings and wrong port assignment when using both ports –
      This maps B/A/Y/X to DOS buttons 1/2/3/4 by default. Also corrects the
      issue of input not working correctly when using two controllers.
    • Fix Windows x64 hang/crash by updating libretro-common
    • Don’t submit mouse emulation descriptors when no ports are connected
    • Fix new gamepad emulated mouse defaults being swapped
    • Map mouse buttons to L/R, modifiers to L2/R2, not vice-versa –
      Many gamepads don’t have L2/R2, which were needed to press mouse
      buttons with the gamepad using the default mapping. This change
      maps mouse buttons to L/R by default. The modifiers to speed up
      or slow down mouse motion are moved from L/R to L2/R2, since they
      are less essential. All of this can be remapped via quick menu
      using the input mapper.
    • Fix gamepad emulated mouse inputs not showing in mapper sometimes
    • Vita: Fix dynarec
    • Vita: Build fix
    • Switch to libco provided by libretro-common –
      libco embedded here crashes on vita. So let’s use the common one
    • Use RETRO_CALLCONV for disk control callbacks –
      It’s surprising that there were no crashes so far on x86 32-bit…
    • Fix disk_replace_image_index always reporting failure –
      This silly mistake caused the “Failed to append disc” error message in
      RetroArch.
    • Correct an oversight of r4186 when floppy disks are mounted.

    Beetle PSX

    Description: Sony PlayStation1 emulator

    • Load bios from path that was checked
    • sanitize gl context requests
    • Add more detailed error messages for mmap, unlink sooner
    • Allow Solaris 11 build
    • Cleanup warnings: snprintf truncation, strncpy->memcpy, memset
    • Lightrec: Cleanup/deduplicate mmap code
    • Lightrec: Improve homebrew support
    • Fix inverted check for dma-only invalidation
    • Fix OS X compile
    • Lightrec: fix more games –
      These games now work:
      – Need For Speed: V-Rally
      – Alone In The Dark – One-Eyed Jack’s Revenge
    • Lightrec: Fix SWL/LWL using wrong mask
    • When HAVE_SHM always use global memfd so it can be closed properly on exit –
      LGTM found this once the default was to compile in lightrec
    • Keep track of mmap failing –
      If mmap failed it should prevent crashing when closing and disables
      lightrec memory mirrors so as to not use an incorrect code path
    • Update to latest lightrec and extract PGXP from lightrec –
      PGXP functions are now called from within beetle
    • Compile in Lightrec support by default –
      Specify HAVE_LIGHTREC=0 if you don’t want it compiled
    • Improve DualShock calibration reference
    • Fix disk control interface when running single-disk PBP content

    Mupen64Plus Next

    Description: Nintendo 64 emulator

    • Only set WITH_DYNAREC based on ARCH if not set
    • Update GLiden64
    • Add support for loading GL symbols using dlsym() instead of libretro API –
      * Required for platforms with EGL version < 1.5 * To enable, use new compile-time define: `-DGL_USE_DLSYM` Currently only enabled for Raspberry Pi platforms that use the legacy Broadcom driver.
    • Add nasm variable
    • Assign variable and reference nasm
    • Bump Version to 2.0.5
    • Update Mupen64Plus INI
    • Add fbInfoDisabled to Ini parsing
    • Update GLideN64 INI

    Yabause

    Description: Sega Saturn emulator

    • Enable Solaris build

    Kronos

    Description: Sega Saturn emulator

    NOTE: This core requires you to use the ‘glcore’ video driver right now. There is no software renderer and it won’t work properly yet with the regular ‘gl’ driver.

    • Activate openGL program precompilation
    • Precompile some shaders directly at boot time to have a smoother BIOS animation
    • Emit a callback at each frame for synchronizing need on ports
    • Swap the buffers at each frame
    • (libretro) framerate pacing + CDROM support + m3u extension
    • Implement a database & rework cart auto-detect
    • Add support for BIOS language
    • Fix Assault Leynos 2 black screen
    • Fix mesh improved image unit usage
    • Fix blinking in Sega Rally, CS Mode
    • Add support to remove banding when using gouraud shading
    • Modify the handling of improved mesh handling to prepare improved banding support
    • fix pause in Daytona USA
    • fix Sega Rally USA boot – might introduce other improvements or regressions
    • Prepare the SH2 threading
    • ST-V I/O is reading words
    • (libretro) fix resolution mode change
    • Rebase the openGL on Yabause since compute CS has a better rendering and openGL rework created new issues
    • (libretro) improve rendering loop
    • Better horizontal upscaling
    • Depending of vertical flip, sprite reading is not the same – Improving Sega Rally
    • (libretro) use cpu_tesselation as default for polygon mode
    • Use CPU tesselation by default
    • (libretro) make the frame rendering more libretro-friendly
    • Reintroduce some required variable for color calculation – fix Cotton Club
    • Software renderer supports 4 threads at maximum
    • Consider that only old card compatible only with OpenGL 3.3 are limited in variables and need to reduce VDP2 blitting program
    • Reintroduce software renderer
    • Reduce the VDP2 register texture width
    • Do not initialise unsupported openGL functions. Fixing some openGL Core 3.3 errors
    • For openGL do not call to much the rendering loop – Better to maximize cache texture impact
    • Add ignition line to VDP1 commands
    • Do not flush the cache texture at each HBlank – only flush when needed
    • In case of draw every 2 frames, do not consider CMD that has already been displayed
    • We have to update the texture before the evaluated startupline, not at the end of the first line… Fixing Skeleton tearing
    • allow STV rom loading to be CRC based
    • Trigger the VDP1 rendering as soon as we consider the draw command list has executed
    • Take care of effective starting line of VDP1 command to evaluate if the core has to regenerate the textures
    • Remove NVidia related pragma – Might impact other GC
    • Calculate VDP1 cycles requested by draw commands
    • Fix some STV loading –
      Fix batmanfr, thuntk & thunt boot without breaking dnmtdeka gfx (and maybe other’s ?)
      Also got sanjeon to boot.
    • Load the BIOS file of the right entry – Fixing Die Hard boot
    • Setup EEPROM directory at the same location than STV ROM
    • Fix “heap-use-after-free” on exit –
      YglGenReset can’t be called after _Ygl is freed
    • fix some STV loading issues –
      suikoenb, thunt, thuntk, batmanfr & znpwfvt now boot, however only thuntk seems playable at the moment
    • Support EEPROM save & load for STV
    • Update the rotation window before the rotated layer are using the values
    • Preliminary support for STV’s Kick Harness
    • Fix horizontal RBG offset in Final Fight Revenge
    • Allow openGL 3.3 since openGL without tesselation should work on most of the games
    • Fix the RBG vertical misalignment when upscale is on – Still horizontal tearing
    • Some minor fixes for RBG CS
    • Fix VDP1 mapping on highest upscale ratio
    • Fixing coin setup on ST-V
    • Backup RAM can be accessed in word and Long – STV is doing this
    • Better handling of the upscale
    • PTRM = 0x3 corresponds to PTMR 0x2 – Fixing Skeleton Warriors startup
    • Fix the special color condition in case sprite is cc enabled, not active as first screen, but activable as second
    • For color mode other than 2, read coefficient table on the upper part of the color RAM
    • Do not handle prohibited setting on PTMR – Fix Skeleton
    • Writing lower part of Color RAM in mode 0 is overwriting upper part
    • When VDPRAM mode is 0, color from RBG is read on the upper part since lower part is for color offset
    • If the code is checking EDSR, just wait for VDP1 processing to finish – avoid changing VDP1 texture while it is changing
    • Do not try agressive optimization yet – Fixing Disc menu performance
    • Fix Quad upscale in Compute shader
    • Fix the regeneration of the VDP1 surfaces – Fix Guardian Heroes
    • Add a compilation flag to enable/disable VDP1RAM update – enabled by default
    • LDCSR is changing the SR mask, so interrupt shall be handled as soon as it is changed – Fixing Princess Maker 2 boot
    • Fix the deinit of YGLTM
    • Fix libretro fullscreen switch – Implement a destroy of all openGL objects when openGL context is reset
    • (libretro) fix upscaling weirdness
    • (libretro) try at fixing scaling weirdness
    • On Libretro, do not execute the last resizing. It is required that the libretro framebuffer always provide a FB of size _Ygl->widthx_Ygl->height
    • (libretro) updates
    • Issue on IST cleaning. Princess Maker 2 is now crashing on master SH2 issue. Might be due to SH2 interrupt handling – Fixing Skeleton boot
    • SH2 interrupt mechanism is not accurate – Do not try to make it precise – Fix Capcom Generations 5
    • Compute the VDP1 buffer in threads
    • Double the VDP1 structure to avoid stall between frames
    • Big rework of SCU Interrupt handling – Fix Princess Maker 2 boot while fixing Nanatsue Kaze after the start screen – might introduce regressions
    • Reenable the support of asynchronous preparation of RBG layers
    • Do not enable RBG async preparation
    • Fix BIOS HLE interrupt usage
    • Fix sysclip size for rotation
    • Check if we need to send a SSH2 interrupt each time we are sending a MSH2 interrupt from SCU
    • Purge all the SCU interrupt and do not stack them
    • Changing SCU HIRQMASK can generate an interrupt
    • NMI interrupt has a specific handling and does not exit using a standard RTE command
    • Handle in priotity interrupts on SH2 core
    • Rework a bit the SCU interrupt handling
    • Reintroduce interrupt removal – Fix Princess Maker 2 – might impact Sakura Wars
    • Fix Sakura Taisen video
    • Fix line color offset on RBG compute
    • Fix Highway 2000
    • In case of rotated FB, increase the system clipping by twice the offset – It looks like a workaround – It is fixing Hang On ’95 blue line on the right
    • Better to use VDP2Ram access function
    • Fix VDP1 rotation for Hang on and Power drift. It looks like a scale might be still needed for Capcom Generations 4

    PCSX ReARMed

    Description: Sony PlayStation1 emulator

    • Android: Support for new lightrec API
    • Update lightrec to latest upstream
    • Minimize logs when loading a cheevos-compatible content
    • Cleanup retro_run() –
      – move input query into separate functions
      – move internal fps display to separate function
    • Hide other inputs from core options –
      – This adds a core option to hide some input options like multitaps, player ports 3-8 and analog-related fine-tuning options.
      – also combine dynarec-only options in one #define directive
    • More core option fixes –
      – This PR fixes core options and moves them to the related dynarec modes where they are implemented.

      LIGHTREC = relates to platforms that supports the new Lightrec mode
      NEW_DYNAREC = relates to previous dynarec implementation that is still used for some 32bit devices

      – Dynarec Recompiler core option, both dynarec implementation can be enabled or disabled

    • Move guncon options to update_variables –
      – This should stop unnecessary RETRO_ENVIRONMENT_GET_VARIABLE callback and log spamming
    • Fix some edge case where core can freeze upon loading content
    • Automatically disable Lightrec when no BIOS is present, take 2
    • cdriso: fix a disk switching deadlock when closing a CD image
    • ARM NEON: Fixed bug where MSB of a 15-bit BGR color could corrupt green value.
    • cdriso: fix a disk switching deadlock
    • unai: Add ARM-optimized lighting / blending functions

    Addendum on UNAI ARM-optimized lighting/blending improvements –

    “Looking at the generated ASM on 3DS, I thought I could squeeze out some extra performance by moving the inner lighting and blending functions to handwritten A32 assembly. This gives a medium improvement generally (3-5fps faster on the beach in Crash 1) and a large improvement when doing lots of blending (46-48fps before, 57-60fps after, behind the waterfall in Water Dragon Isle in Chrono Cross).

    Some other notes:

    • I used the ARM11 MPCore (3DS CPU) timings for pipelining.
    • I had a few stall cycles during lighting, so I used them to preserve the MSB for lighting and blending, which saved a store, load, and orr later on. ~3-6 cycles saved overall by doing that.
    • I switched from u16 to uint_fast16_t, which is 32-bit on this platform. This saved a few useless uxth instructions for another few cycles. This shouldn’t affect other platforms, but I don’t know for sure. Could typedef if necessary.
    • A lot of the speed improvement in blending comes from not using two instructions per and. For example, & 0x8000 — the compiler preferred to mask out bytes using bic 0x7F00 and bic 0x00FF. Both slower and seemed less correct for what we’re trying to do.”

    LRMAME 2003

    Description: 0.72 version of LRMAME

    • Fix cheat input dip switch option

    LRMAME 2003 Plus

    Description: 0.72 version of LRMAME with updates/enhancements

    See CHANGELOG for all updates/enhancements on top of LRMAME 2003

    • New working game Gulun.Pa! CPS1 prototype
    • sample pause support for journey –
      uses pause instead of the mute hack implemented.
    • TANK III Joystick bootleg
    • Update samples.c
    • fix big samples dynamic loading when not an OST item
    • Update mcr2.c –
      Sepways.wav sample support for journey
    • Update inptport.c
    • Update foodf.c –
      Allows the player to face in the direction last applied.
    • A fix for Midway MCR3 game saving

    LRMAME 2010

    Description: 0.139 version of LRMAME

    • Fix Selecting “Inputs (this game)” crashes Retroarch on Android (should also affect other ARM builds)
    • backport 12-bit wrapping fix

      Fix 12-bit wrapping behavior in YM2608/2610 ADPCM_A decoding, fixes some glitches in certain samples in the metal slug series, and likely other games. [Lord Nightmare, madbr]

    Dolphin

    Description: Gamecube/Wii emulator

    • Fix build for Windows x64
    • Request glcore context when video driver is gl

    ParaLLEl N64

    Description: Nintendo 64 emulator

    • Sanitize GL context requests
    • Update ParaLLEl RDP – about a ~10fps speed increase on Nvidia over previous version
    • Should fix Mega Man 64 graphics glitch (electric fence not visible)
    • Add ParaLLEl RDP
    • Add SI DMA Duration hack for Tetris 64
    • Use separate cache for DRAM and hidden DRAM.
    • Add DRAM flush and fix VI_REGISTER_OUTPUT.
    • Dump the hidden RDRAM as well.
    • Fix Seg Fault on Game Unload –
      When commit 11c1ae3 split r4300_execute into r4300_execute and r4300_init, it continued to check the “stop” variable, but this is undefined. Removing these checks resolves the seg fault and does not affect functionality.

    O2EM

    Description: Magnavox Odyssey 2 emulator

    • Fix YES/NO keys and set 0 as default key
    • Change Action button to B to be more consistent with other cores, and remove the shortcuts to 1/2/3/4 keys (useless with the new virtual keyboard)
    • Add option for virtual keyboard transparency
    • Add graphical virtual keyboard

    Opera

    Description: 3DO emulator

    • Fix Haiku build
    • Remove NVRAM file and try rename again on initial failure –
      Windows doesn’t like renaming over files? This logic accomidates for both
      without needing platform specific behavior.

    VirtualJaguar

    Description: Atari Jaguar emulator

    • Add Haiku build

    XRick

    Description: Game engine implementation for Rick Dangerous

    • Add Haiku build

    vitaQuake 2

    Description: Quake 2 game engine core

    • Add GLES Support and initial Rockchip platform
    • Fix intermission screen being unskippable.
    • Put on par with Vita build (Bump to v.2.3).
    • WiiU: Add build
    • PSL1GHT: Add build

    vitaQuake 3

    Description: Game engine implementation for Quake 3: Arena

    • Add Haiku build

    mGBA

    Description: Game Boy Advance emulator

    • Libretro: Add cheevos support for GB/GBC
    • PS2: Update to newest toolchain

    QuickNES

    Description: 8bit Nintendo Entertainment System/Famicom emulator

    • PS2: Update to newest toolchain
    • Fix potential free(NULL); problems

    FCEUmm

    Description: 8bit Nintendo Entertainment System/Famicom emulator

    • PS2: Update to newest toolchain
    • user-adjustable Zapper tolerance
    • reduce max Zapper tolerance to 20
    • MMC1 overrides are treated as ines 2.0, so its needs at least default values for prgRam and chrRam columns.

      Fixes FF1 pink screen due to unmapped CHRRAM.

    • Use proper geometry when switching NTSC filter on or off –
      – Width changes previously was not respected when using NTSC filter. With full use of overscan, NES width
      is 602 px when NTSC filter is used and 256 px on normal
    • Fix build when compiling without NTSC filter support
    • fixed 3DS build
    • Adjust Zapper tolerance; make Zapper input tolerance circular rather than rectangular by default
    • Fix timing when changing from PAL/Dendy to NTSC –
      – Happens when starting with PAL/Dendy region and changing to NTSC can cause frame to get stuck in 50 Hz
      – using RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO should remedy this.
    • NTSC: Remove height doubling/scanline effect –
      – We just use shaders for scanline if needed. NTSC + height doubling causes performance hit
      for some slow devices. Any decent platform should be able to handle scanline effect shaders at least.
    • ines.c: Simplify rom info logs and cleanup
    • Fk23c: Fix chr issues for some games –
      – Affects mostly waixing using mixed chr rom/ram modes (bit 2 of ram config register $A001)
    • Update ines-correct.h –
      – Add overrides for FK23C
      – Move MMC1 overrides
      – Move MMC5 overrides
    • Move overrides out of some mappers –
      Move mapper-based overrides out and use ines-correct.h if possible. Affects the following mappers below:
      – Move Cnrom database to ines-correct.h
      – Mapper 201 update
      – Mapper 91: Add Street Fighter III (Submapper 1) to ines-correct.h
      – Add dipswitch notes to m237
      – Update mapper9 (PC10 version of Mike Tyson’s Punch-out)
    • Move battery-backed prg ram override to ines-correct.h
    • Start expanding internal override database (ines-correct.h)

    2048

    Description: 2048 game implementation

    • PS2: Update to newest toolchain
    • PS2: Apply color correction
    • DOS: Add platform support

    Picodrive

    Description: Sega Megadrive/Genesis/32X/CD emulator

    • PS2: Update to newest toolchain

    Snes9x 2010

    Description: 16bit Super Nintendo/Famicom emulator

    • libretro: added granularity in SuperFX overclock –
      There doesn’t seem to be any benefit of overclocking above 15 MHz
      (150%). The user should be allowed to be more precise with their
      overclock setting now.
    • Fix MMC reg for 64bit builds –
      Fixes a segmentation fault when playing large ROM games.
    • Fix MMC bank register bit 7 (FuSoYa) –
      Fixes the 64Mbit ExLoRom map.
    • ROM: fail if ROM is invalid –
      Fixes an issue whereby a non-SNES file would cause a segmentation fault.
      This may occur if the selected ROM is corrupt, or a file has an
      incorrect extension.
    • APU: remove unused SoundSync –
      Additionally modified the resampler to use buffer size as a parameter
      instead of the number of samples within the buffer. Previously, the
      buffer size was being changed to the number of samples, and then changed
      back within the resampler.
    • snes9x: add defines for unused multi-cart support –
      The compiler was already optimising these unused functions out. The
      libretro core can define SNES_SUPPORT_MULTI_CART 1 to re-enable support
      for multi-cart in the future.
    • snes9x: refactor defines and remove overscan –
      Out of bounds memory fix from
    • snes9x: APU: Fix buffer overrun –
      Additionally:
      This fixes linking with LTO.
      Disable audio if an error occurs in init instead of continuing and
      segfaulting.
    • snes9x: reduce APU buffer to 64ms –
      I believe this to be a more sane setting than a 1000ms buffer.
    • snes9x: backport config from upstream –
      Most options were not available in English, despite it being the default
      language. All the options that were available in Turkish are now
      available in English.
    • snes9x: fix headercount increment
    • libretro: fix pitch measurement

    Prboom

    Description: Game engine core for Doom 1/2, Ultimate Doom, Final Doom

    • Switch from ad-hoc endianness handling to retro_endianness.h

    Vecx

    Description: Vectrex emulator

    • Fixed colour conversion (7 bit mono to RGB1555).
    • support analog controllers
    • Make line drawing code more efficient by doing RGB conversion once per line only
    • Nicer point shape
    • Allow scaling of vector display
    • more flexibility in adjusting display – allow for scaling and shifting to fit overlays

    NeoCD

    Description: SNK Neo Geo CD emulator

    • CD-ROM controller logic split into a separate file
    • Y Zooming don’t need a ROM file anymore
    • New system to identify and patch BIOS, should allow unknown BIOS to run.
    • BIOS files don’t need to have a specific name anymore they are identified by contents
    • Support for Universe BIOS 3.3
    • BIOS name in the menu now includes filename
    • Add synchronous CD operation mode
    • Vita: Use synchronous CD operation mode
    • Vita: Add build
    • 3DS: Add build
    • WiiU: Add build
    • PSL1GHT: Add build
    • Emscripten: Add build
    • Implemented horizontal interrupt masking (not verified on real hardware)
    • Fix CDROM music endianness
    • Fix big-endian support

    PocketCDG

    Description: MP3 Karaoke audio player

    • Properly send logging to proper place –
      use logging interface as much as possible with stderr as fallback
      rather than being inconsistent
    • Swap frame before passing it to audio_batch_cb on bigendian –
      audio_batch_cb expects native-endian frames and libmad gives little-endian
      frames. Hence on big-endian we need to swap
    • libmad: Fix big-endian support

    FreeChaF

    Description: Fairchild Channel F emulator

    • Switch from ad-hoc endianness to retro_endianness.h
    • separated CHANNELF HLE code

    ECWolf

    Description: Wolfenstein 3D game engine core

    • Latest updates from upstream
    • iOS/TVOS: Add build
    • WiiU: Add build

    UAE4Arm

    Description: Commodore Amiga emulator

    • Libretro improvements
    • Two joystick support with automatic switching
    • Define controls close to PUAE default. Use right analog stick as mouse and L2-R2 as mouse button.
    • Add working virtual keyboard support
    • Emulation resolution handing is better (especially change). 2nd mouse button working.
    • Solve right mouse button non working
    • Solve different video resolution
    • Solve audio glitches

    P-UAE

    Description: Commodore Amiga emulator

    • Disable waiting blits by default
    • Remapping fixes + clarifications
    • Zoom mode horizontal croppings + cleanups
    • Prefixes for hidden core options
    • Better sorting in M3U generation
    • Geometry fixes, Keymap update, Cleanups
    • WHDLoad fixes –
      – Custom parameter not working on many cases
      – Error messages and copy skips if Kickstart filesizes are not correct
    • Model preset overrides, Optional region search
    • Core option for D-Pad joystick/mouse switching
    • Model config overhaul
    • NTSC fixes
    • Optional region forcing with No-Intro tag support
    • WHDLoad update
    • Sort generated M3Us, Statusbar + glue updates
    • Fix android build
    • New defaults for CPU and Drive Sound Emulation, Sound cleanups
    • User-friendly warning messages for Kickstarts and CAPSImg
    • Attempt to fix crash when reloading core on static builds
    • Fix ZIP Browse Archive
    • M3U ZIP fix
    • Hor+Ver positioning fixes
    • Add “Remove Interlace Artifacts” core option
    • Backport interlaced double line field mode to replace old frame mode
    • Fix sound filter from effectively being always Automatic at startup
    • Fix filter type update, Improve zoom
    • Add core option for CD startup delayed insert, Remove previous disc change detect trickery
    • Change model force hierarchy, Option label updates
    • Android unzippings yet again
    • Core option for muting floppy sound when drive is empty
    • Automatic horizontal centering improvement
    • ANDROID X86: Fix build
    • Fix amd64 compilation –
      m68kops for amd64 is empty, use generic exactly how it was before the rewrite
    • Rewrite libretro m68k.h and m68kops.h to use non-libretro variants –
      They encapsulate per-cpu optimizations. There is no reason to
      have a version for libretro
    • Rewrite maccess.h using new retro_endianness
    • Automatic zoom improvements
    • Control improvements:
      – Enabled D-Pad as mouse in analog joystick mode to help out menu traversing, otherwise D-Pad does nothing unless toggled to mouse mode
      – Added core option for inserting RetroPads to joystick ports in different order (for Arcadia, Dyna Blaster etc.)
    • Fix vertical touch alignment on keyboard while zoomed
    • Global conf file, MultiDrive via Disk Insert
    • CDTV core option
    • Statusbar finetuning
    • Disk Control additions:
      – Transparent ZIP support in M3U parsing
      – Insert Disk support for M3U/ZIP/etc

    VICE

    Description: Commodore 64 home computer emulator

    • Keymap core option + rework
    • Autoloadwarp enhancement, Core option label tweaking
    • Remapping fixes + clarifications
    • Fix Plus4 cartridge launching, Statusbar fixes
    • Autoloadwarp fix for D81s, Statusbar cleanups
    • Freeze cartridge to reset types
    • More robust floppy autoloadwarping
    • VIC-20 updates:
      – RAM block set tidying
      – Fixed starting carts in M3Us
    • Achievements environment
    • Core option for 2nd SID, Warp mode rework
    • Automatic Load Warp core option
    • NBZ support
    • Dump available and not yet core optionized resources for easier ‘vicerc’ usage
    • Disk Control finetuning –
      – Fallback to drive 8
      – Remove “.” from image type detection extensions to also match cases like “.hidden-d64”
    • Fixed and enabled printer
    • Better sorting in M3U generation
    • Disk Control updates –
      – Allow CRTs & PRGs in M3Us
      – Removed redundant short pathname label fallback in widget
    • Automatic region fixes
    • Zoom mode honing –
      – Changed manual mode operation from automatic to optional
      – Corrected non-wide calculations
      – Added VIC-II/VIC/TED border info to sublabels
    • Core option reorganizing –
      – Separated VICE option variables from core option variables
      – Prevented updating VICE variables to the same variable
      – Simplified palette options
      – Fixed CBM2 embedded palettes & added missing PLUS4 embedded files
      – Removed & disabled non-working CBM2 models (510 not selectable in standalone, therefore no point fixing embedded files)
      – Fixed Super VIC memory expansion
      – Fixed CBM2 crash on higher resolution models
    • Work disk improvements –
      – No need to reset
      – Fixed start content
    • Automatic model core options for x64 & x64sc –
      – Scans for “NTSC|(USA)” and “PAL|(Europe)” tags
      – Both PAL/NTSC and C64/C64C can be preferred
      – Default is “C64 PAL Automatic”
    • Sync finetunings –
      – GetTicks returns a ticker from get_time_usec instead of fake microSecCounter
      – Bypassed internal frameskips and delays
      – Warp mode speed improved
      – Statusbar updates FPS in 1 second intervals instead of 2 & shows real FPS from both warp and fastforward
    • Work disk core option with device selection
    • Fix for autostart detection of D71
    • Work disk core option with device selection
    • Fix QNX build
    • Zoom improvements –
      – Presets for usual suspects (16:9, 16:10, 4:3, 5:4)
      – Hardcode exceptions minimized, math maximized with science
    • Fix Emscripten build
    • Switch from adhoc endianness handling to retro_endianness.h
    • Sort generated M3Us
    • Better retro_get_region, Embedded additions
    • Include NIBTOOLS for automatic NIB->G64 conversion
    • Manual cropping core options
    • Remove border stuff
    • Zoom overhaul, Reorganizing, Cleanups
    • JiffyDOS & GO64 for C128
    • Direct hotkey for joyport switching, TDE + DSE enabled by default
    • Disable JiffyDOS with tapes also on static platforms
    • Rename mouse_x to retro_mouse_x in retrostubs.c to avoid confusion with mousedrv.c
    • Fix compilation on Vita
    • PET fixes (embedded data, keyboard layout) + Cleanups
    • Extended ZIP+M3U Disk Control
    • Fix model change not triggering geometry change with borders disabled
    • PSL1GHT: Add build

    Frodo

    Description: Commodore 64 emulator

    • Disable compilation of CmdPipe.cpp on libretro
    • Add safeguard in case of thead allocation failure
    • Resync libco
    • Add logging
    • 3DS: Add build
    • PSP: Add build
    • Vita: Add build
    • QNX: Add build
    • QNX: Fix cmdpipe
    • Exclude cmdpipe on PSP1 and Vita
    • Don’t use sigaction on PSP1 and Vita
    • Don’t use chdir and getcwd on PSP1 and Vita
    • Change pulsehandler not to use signals on libretro

    Quasi88

    • Fix declaration of INLINE on Android
    • Support for big-endian Linux
    • Switch from ad-hoc endianness to retro_endianness

    Nestopia

    Description: 8bit Nintendo Famicom/NES emulator

    • Fix scratchy audio in Super Mario Bros. 3 and others

    Uzem

    • 3DS: Render at half-width
    • PSP: Render at half-width
    • Android: Fix build
    • Gamecube: Add build
    • PSL1GHT: Add build
    • WiiU: Add build
    • Big-endian support
    • avr8: Fix initial memory cleaning –
      Current code zeores-out only part of intended array
    • Disable av8::idle on libretro –
      It’s not used by libretro
    • Disable recording code on libretro –
      It’s not used by retroarch but it links with popen that is not
      available on many of retroarch platforms
    • Support compilation with g++ 4.6

    GME

    Description: Game Music Emulator core

    • Gamecube: Add build
    • Wii: Add build
    • WiiU: Add build
    • PSP1: Add build
    • Vita: Add build
    • Use retro_endianness.h instead of ad-hoc endianness defines

    Cap32 / Caprice

    Description:

    • Fix video glitch on big-endian
    • Replace ad-hoc MSB_FIRST with retro_endianness.h
    • QNX: Fix build
    • PSL1GHT: Add build

    CrocoDS

    Description:

    • PSL1GHT: Add build
    • WiiU: Add build
    • Wii: Add build
    • Gamecube: Add build
    • Filter-out identical calls to SET_GEOMETRY
    • Fix disk-reading routines on big-endian –
      Current approach of swapping after reading/before writing is sound
      in theory but in current codebase it’s difficult to track and leads easily
      to double-swaps. Just swap the values right before use and at assignment
    • Optimize byteswap
    • Fix big-endian video rendering
    • Disk endianness fix
    • Fix arguments to ReadPort/WritePort –
      Passing 32-bit value instead of 16-bit has undefined results. It works
      on some platforms and fails on other. Fix it properly
    • Support big-endian systems
    • Use retro_endianness instead of SDL_BYTEORDER
    • PSP: Add build
    • Vita: Add build

    blueMSX

    Description: Home computer MSX emulator

    • Remove leftover endiannness defines
    • Fix arguments for coinDeviceCreate –
      Argument mismatch is fatal on emscripten
    • PSL1GHT: Add build
    • Fix non-smooth scrolling in PAL 50Hz

    meowPC98

    Description:

    • Move from adhoc endianness to retro_endianness
    • PSP and Vita fixes
    • QNX: Add build
    • PSL1GHT: Add build

    NP2Kai

    Description:

    • Latest updates from upstream

    Bk Emulator

    Description: BK-0010/0011/Terak 8510a emulator

    • Wii: Add build
    • Gamecube: Add build
    • Use unsigned int instead of uint –
      For mingw compatibility
    • PSL1GHT: Add build

    FUSE

    Description:

    • Emscripten fixes

    Lutro

    Description:

    • Vita: Fix build
    • QNX: Add build

    PX68k

    Description: Sharp X68000 Emulator

    • Vita: Add build
    • QNX: Add build

    Craft

    Description:

    • Emscripten: Fix build
    • Fix path to auth database.
      Current path ends up in current working dir which might be anywhere,
      unwritable or not even exist as a concept.
    • Don’t attempt to run main loop after failure.
      It only clouds what errors have occurred
    • Android: Now goes ingame and no longer crashes at startup, doesn’t render blocks yet though

    Mr. Boom

    Description:

    • QNX: Add build
    • Emscripten: Fix build
    • support big-endian linux
    • PSL1GHT: Add build

    Xmil

    Description: X Millennium Sharp X1 emulator

    • Android: Fix compilation
    • Wii: Add build
    • Gamecube: Add build
    • Add big-endian support
    • PSL1GHT: Add build
    • Add iOS arm64 build support
    • PSP1 scaling messes when source is larger than psp horizontal resolution,
      hence render at quarter resolution
    • PSP: Add build
    • Fix QVGA support: Code for rendering at quarter of resolution is broken for libretro files
      altogether as it was never really implemented.

      Highres QVGA rendering forgot horizontal offset resulting in single-color lines,
      fix it as well

    • Vita: Add build
    • QNX: Add build

    Atari800

    Description: Atari 800 emulator

    • Support big-endian linux
    • PSP: Fixes
    • config: don’t use unaligned access on RISC –
      configure.ac enables it only on x86 and m68k. Mirror it in our manual config
    • Use frame counter instead of real clock

    SMS Plus GX

    Description:

    • Allow enabling or disabling FM sound (YM2413)
    • Prevent potential crash and cleanup –
      – set max geometry height to 240
      – remove some unnecessary functions and variables
      – move some callbacks from retro_init to retro_load_game
    • Add core option (Remove Border) –
      – removes left border (overscan). Works on SMS only.
      – General video renderer cleanups
    • Add core options for region and hardware type overrides
    • Add proper support for PAL content –
      – timing/region is detected using internal database
      – fix to rom names on rom info log
    • Improve performance when using NTSC filters –
      – Removes Sony decoder core options
      – Removes doubling of height when using NTSC filters
      – Use standard integers where applicable
    • Allow core to safely close when a required bios is not found –
      – For coleco rom content, it requires the colero bios to exists. So if none is found,
      just allow core to safely exit. SMS roms does not require bios to be playable, so no check is necessary for it.
    • Add support for colecovision roms (Experimental)

    RACE

    Description: Neo Geo Pocket (Color) emulator

    • Fix input mapping typo

    TGB Dual

    Description: Game Boy (Color) emulator with splitscreen link cable support

    • 3DS: Update target

    FreeIntv

    Description:

    • Fixes graphics issues – Intellivania not working on emulator
    • Correctly detect MTE Test Cart
    • Fixes #40 – Intellicart roms w/o A8 –
      Detects Intellicart roms using a different method for files that don’t begin with 0xA8
    • Expose RAM for Retroachievements
    • OSD, Keyboard keypad controls –
      keys 0-9 as expected. [ and ] replace C and E
      OSD updated, real messages replace cryptic “colored pixel” loading error feedback

    TyrQuake

    Description:

    • 3DS: Fix build
    • PSL1GHT: Add build

    LRMAME

    Description:

    • Update to 0.220
    • add 4-way joystick simulation option
    • Correct 4way support

    Theodore

    Description:

    • PS2: Add build
    • Auto load BASIC 1 cartridge instead of BASIC 128 cartridge on TO7/70
    • Add virtual keyboard transparency option
    • Add TO8/9 keyboard
    • Update TO8 keyboard image and add TO7&TO7/70 virtual keyboards
    • Add virtual keyboards for all models
    • First version of on-screen virtual keyboard

    gpSP

    Description: Game Boy Advance emulator

    • Fix cheevos support