Libretro Cores Updates – PCSX2 Alpha release for Windows and more!

PCSX2 Alpha core available for Windows now!

Today we’re releasing an alpha version of the PCSX2 libretro core on the buildbot. It’s available for Windows only right now, but the same core has been tested to work on Xbox One/Series systems as well.

Important things to know

  • Create the following directory in your system directory – “pcsx2”. You can put all the asset files there from your regular PCSX2 install. See pic below for an example.

    You need a working BIOS inside /pcsx2/bios. PCSX2, unlike Play!, will not work without a real BIOS.

  • It’s still an alpha version. Things are rough around the edges. Expect bugs and things to be incomplete.
  • There’s a working OpenGL renderer and a Direct3D11 renderer option. Direct3D 11 renderer can be faster than OpenGL but also has less features. Pick whichever works best for you. On Xbox you will only be able to use Direct3D11 anyways.
  • This core uses the x86_64 dynarec which was added to PCSX2 a year ago. It is still less compatible than the 32bit x86 dynarec in PCSX2, so keep that in mind. It’s for similar reasons that the software renderer right now won’t work (it’s not compatible yet with x86_64, not in upstream either).
  • There’s a bug that can happen right now upon closing content or exiting RetroArch with the PCSX2 core on Windows – the RetroArch process might not completely cleanly shut itself off and you might still be able to see a 0% CPU process remaining in the Task Manager. We have not been able to figure out how to fix that yet as the PCSX2 codebase is a definite case of ‘here be dragons’, but for now when this happens, you can just bring up the Task Manager and close it manually. It shouldn’t have a real detriment on performance but it is of course far from ideal and hopefully something we can fix soon with the help of some contributors. We have found this happens the most with the Direct3D 11 renderers.
  • Switching resolution at runtime right now can be a bit unstable, so does switching fullscreen resolution. We might just make resolution switching require a restart since this tends to be too unstable for now.

Update policy for this core
Hard-forked core for now. Govanify is going through many (necessary) refactors in PCSX2 upstream to make the code more portable, and he has also expressed his interest in an upstreamable libretro core somewhere down the line when the final refactoring of the GUI is complete. So either of two things can happen when that happens, if this is more closely aligned to upstream core is better in every way including performance, this will be replaced. If not, we will likely have two cores, one being the upstream-friendly core and this being the hard-forked one. As of this moment a lot of work remains to be done on PCSX2 to sort out all the internals that are chockful of nonportable code. Therefore, for now, the experimental PCSX2 core kinda is doing its own thing. PCSX2 still has a lot of inherently nonportable code in it, from WxWidgets to libglib. It’s for that reason that we don’t have a Linux core yet on our buildbot. We hope that we will be able to figure out a proper portable core for Linux users soon.

Expect a lot of Quality of Life enhancements to this core soon. We wanted to share this with you now rather than sit on it for even longer, now that it’s on the buildbot we can at least push regular updates to it, people can report issues and developers can contribute. Everyone wins.

Play! (experimental PlayStation2 emulator) is back on the buildbot!

The Play! libretro core is back on our buildbot! It took some time for this to be readded to our modern new buildbot but here it is!

Available right now for: Android (AArch64/ARMv7/x86), macOS (Intel), Linux (32bit/64bit), and Windows (32bit/64bit).

Update policy for this core
Upstream. Updates are pulled straight from the upstream repository.

DuckStation/SwanStation core updated

The DuckStation/SwanStation core has been updated to a build from a week ago.

Update policy for this core
This will remain a shallow fork and attempts are being made to make the surface area for patches small so that we can easily pull in updates. Some new contributors have jumped onboard and they want to ensure this core remains updated.

Mainline MAME available for iOS11 and up/tvOS !

The mainline MAME core is now available for iOS and tvOS users! It is also available for Mac Intel x64 users, and we hope that we can make it available for ARM Mac users soon as well.

Also important to note we will be updating to version 0.330 soon.

Update policy for this core
This is pretty much a shallow fork. It just attempts to pull in the latest changes from upstream without making many changes.

gpSP (Game Boy Advance emulator)

Many changes have been made under the hood to significantly increase performance of gpSP. One of the big changes that led to at least a 5-6% performance improvement was the removal of libco (a library used for cooperative threading). 3DS users especially should be in for a treat with gpSP, but realistically everyone benefits across the board, whether you’re on an ARM or x86 system. We can quite comfortably state you will be hard pressed to find a better and more well performing version of this emulator anywhere else right now.

* Support for generic MIPS (including Dingux)
* Built-in BIOS that ships internally and requires no external files/dependencies
* Removal of libco (5-6% perf or so) and some performance fixes for x86/arm/mips (for perf)
* Fixed the x86 dynarec and the ARM dynarec, that were pretty much broken. Good speedups (or power savings on portable devices)

Immediate roadmap for gpSP: PS2 support (coming soon (TM)), rumble and tilt sensor support, AARch64 dynarec (mid-term goal)

One caveat right now is that these changes have unfortunately caused it to no longer work on PS Vita. However, the plan is to fix this soon, and for this to be only a temporary thing.

Update policy for this core
Hard fork, self-maintained.

Picodrive (Sega Mega Drive/Master System/Sega CD/32X emulator)

This has received many speed improvements and enhancements courtesy of irixx, 32X support has seen plenty of improvements, and the results speak for themselves. Works wonderfully on OpenDingux-based devices and PS Vita, some of the lower end systems out there.

A separate blog article might be written about all the changes soon.

Update policy for this core

Hard fork, self-maintained

FCEUmm (Nintendo Entertainment System emulator)

Some important new updates from New Rising Sun that adds more mapper support (PR notes are his):

Add features to mapper 332/BMC-WS:

  • implement additional outer bank bit to support multicarts twice as large as WS-1001 (“Super 40-in-1”)
  • implement CNROM-128/-256 mode using two or four inner banks switched via CNROM-like latch at CPU $8000-$FFFF
  • implement solder pad/DIP switch change via soft-reset, resulting in different multicart menus
  • soft-resetting resets to menu as on real hardware, not just the currently-selected game.
    Tested with the HH-xxx series of multicarts, some of which available on LIBG, as well as the previously-supported WS-1001.
  • I wanted to add a couple of multicart mappers that use the J.Y. Company ASIC and fix a few bugs while doing so. I ended up rewriting the whole thing by porting the code from NintendulatorNRS. This improves the modularity of the code by wrapping the PRG and CHR sync functions with mapper-specific ANDs and ORs, which is necessary for multicart use, and hopefully improves the readability (though I understand that’s a matter of taste). Previous save states had to be invalidated in any case since the previous code only saved four of the eight CHR LSB registers.

    Source organization changes:

    Combine duplicate code from 90.c, bmc13in1jy110.c and sc-127.c into one new file jyasic.c.
    Features/corrections:

    Window text not shown at the beginning of Tiny Toon Adventures 6 (“Baabs is dreaming about becoming an actress”).
    Bad cursor sprite on “Mighty Morphin’ Power Rangers III”‘s title screen.
    Some mapper 295 multicarts not working, such as SC-126.
    Added Adder to ALU (not used by any game).
    Add IRQ mode 3 (writes to CPU address space).
    Save all eight CHR LSB registers (previous code only saved the first four).
    Ignore writes to x800-xFFF except 5800 and C800, needed for Final Fight 3 on SC-128.
    Allow DIP setting to be read from all possible locations: 5000, 5400, 5C00, necessary for a few multicarts.
    Adds the following mappers: 282, 358, 386, 387, 388, 397, 421.

    Remaining issues:

    IRQ timing is not as perfect as the NintendulatorNRS code from which it was taken, which had been verified against real hardware. This is due to there not being a true “PPU Read Handler” in the mapper interface (as far as I can see), and PA12 timing in the core PPU emulation being not accurate enough to replace the “clock IRQ eight times per horizontal blanking” solution that I kept from the previous code.
    There remains one J.Y. ASIC-using mapper: 394, which mounts both the J.Y. ASIC and an MMC3 clone and uses extra register bits to switch between the two. That is a bit difficult to code and will be for another day.
    Successfully tested with:
    Mapper 35:
    Warioland II (JY039)

    Mapper 281:
    (晶太 JY-052) 1996 Super HiK 4-in-1 – 新系列阿拉丁雙Ⅲ组合卡
    (晶太 JY-052) 1997 Super HiK 4-in-1 – 新系列叢林泰山組合卡
    (晶太 JY-053) 1996 Super HiK 4-in-1 – 新系列獅子王超强组合卡
    (晶太 JY-054) 1996 Super HiK 4-in-1 – 新系列快打旋風Ⅱ组合卡
    (晶太 JY-054) 1997 Super HiK 4-in-1 – 超級新系列大金鋼4代組合卡
    (晶太 JY-055) 1996 Super HiK 4-in-1 – 新系列阿拉丁Ⅲ.致命武器組合卡
    (晶太 JY-066) 1996 Power Rangers HiK 4-in-1 – 新系列金鋼戰士專輯組合卡
    (晶太 JY-066) 1997 Power Rangers HiK 4-in-1 – 新系列金鋼戰士專輯組合卡
    (晶太 JY-068) 1996 Super HiK 3-in-1 – 新系列阿拉丁Ⅲ.激龜Ⅲ組合強卡
    (晶太 JY-080) 1996 Super HiK 3-in-1 – 新系列中國兔寶寶全輯組合卡
    (晶太 JY-088) 1996 Super HiK 5-in-1

    Mapper 282:
    (晶太 JY-062) 1996 Super Mortal Kombat Ⅲ Series – 新系列真人快打三代組合卡 18-in-1
    (晶太 JY-064) 1996 新超強 18-in-1 阿拉丁組合系列卡 – Super Aladdin Ⅲ Series Card
    (晶太 JY-069) 1996 Super HiK 4-in-1 – 新系列忍Ⅲ.沼澤怪獸組合卡
    (晶太 JY-070) 1996 Super HiK 3-in-1 – 新系列眞人Ⅲ.兔寶寶組合強卡
    (晶太 JY-071) 1996 Super HiK 3-in-1 – 新系列眞人Ⅲ.小新2.明王組合卡
    (晶太 JY-079) 1996 Super HiK 3-in-1 – 新系列眞人Ⅲ.金鋼4.蜜蜂組合卡
    (晶太 JY-084) 1996 Photo Gun 9-in-1
    (晶太 JY-098) 1997 Super HiK 6-in-1
    (晶太 JY-101) 1997 Super HiK 18-in-1
    (晶太 JY-105) 1997 Super HiK 21-in-1
    (晶太 JY-114) 1998 Super HiK 5-in-1
    (晶太 SC-128) Super 25-in-1 Final Fight
    (晶太 SC-130) Super Photo-Gun 13-in-1

    Mapper 295:
    (晶太 JY-010) Super Ball Series 18-in-1
    (晶太 JY-014B) 1996 Soccer 7-in-1 – 足球專輯 (rev0)
    (晶太 JY-014B) 1996 Soccer 7-in-1 – 足球專輯 (rev1)
    (晶太 JY-050) 1997 Super HiK 8-in-1 (rev1)
    (晶太 JY-095) 1997 Super HiK 4-in-1
    (晶太 JY-096) 1997 Super HiK 7-in-1
    (晶太 JY-097) 1997 Super HiK 8-in-1
    (晶太 JY-099) 1997 Super HiK 4-in-1
    (晶太 JY-100) 1997 Super HiK 5-in-1
    (晶太 JY-109) 1997 Super 9-in-1
    (晶太 JY-110) 1997 Super 13-in-1
    (晶太 SC-126) 方塊專集 HiK Block 14-in-1

    Mappers 90/209/211:
    (晶太 CK-124) Super HiK 8-in-1
    (晶太 JY-118) 1998 Super 3-in-1
    (晶太 JY-120A) 1998 Super 45-in-1
    (晶太 JY-122) 115 超強合卡
    Aladdin – 阿拉丁
    Aladdin III, Popeye II꞉ Travels in Persia
    Contra Spirits (1995)
    Donkey Kong Country 4
    Final Fight 3
    Mickey Mania 7
    Mighty Morphin’ Power Rangers III
    Mighty Morphin’ Power Rangers IV꞉ The Movie
    Mike Tyson’s Punch-Out!! (JY021)
    MK3 – Special 56 Peoples
    Mortal Kombat 2-in-1
    Mortal Kombat II Special
    Super Aladdin꞉ The Return of Jafar
    Super Mario & Sonik 2 (rev1)
    Super Mario World
    Super Mortal Kombat 2-in-1
    Tiny Toon Adventures 6
    中國兔寶寶 Rabbit
    真 Samurai Spirits 2꞉ 覇王丸地獄変
    鉄拳 – Tekken 2

    mappers 358/386/387/388/397/421:
    (晶太 JY-016) 1997 Super Game 7-in-1
    (晶太 JY-056) 1996 Super HiK 4-in-1 – 新系列真人快打Ⅱ特別版 (rev0)
    (晶太 JY-056) 1996 Super HiK 5-in-1 – 新系列眞人快打Ⅲ56人特別版 (rev1)
    (晶太 JY-082) 1996 Soccer 6-in-1
    (晶太 JY-087) 1996 Super HiK 4-in-1
    (晶太 JY-089) 1996 Super HiK 4-in-1
    (晶太 JY-090) 1996 Super HiK 5-in-1
    (晶太 JY-093) 1996 Super HiK 4-in-1
    (晶太 JY-094) 1996 Super HiK 4-in-1
    (晶太 JY-113) 1998 Super HiK 5-in-1
    (晶太 JY-117) 1998 Super HiK 6-in-1
    (晶太 SC-129) 98 街頭快打格鬥 15-in-1

    bSNES HD Beta/bsnes mainline available for iOS/tvOS/ARM64 Mac

    Widescreen SNES emulation on your iDevice and ARM Mac is now available!

    Update policy for this core
    Upstream, gets built straight from DerKoun’s upstream repository.

    Genesis Plus GX Wide available for iOS/tvoS/ARM64 Mac

    Another welcome addition to the Apple fold – the widescreen-enhanced version of Genesis Plus GX! For more on that, read this article here.

    Update policy for this core
    Hard fork, as it makes many sweeping changes to Genesis Plus GX to achieve widescreen support, which would make resyncing with upstream very hard to do.

    Other cores which have received updates

    Here is a list of other cores that have received updates, but for which we cannot post any changelogs due to lack of time. We might go into some more of the changes here later on.

    Beetle PSX
    FB Neo
    MAME 2003 Plus
    VICE
    P-UAE (Amiga emulator)

Libretro Cores Progress Report – February 29, 2020

Our last core progress report was on February 5, 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.

Vitaquake 2

Description: Quake 2 game engine core

Vitaquake 2 is now available for the first time on 3DS and Android. It uses the software renderer on those platforms for now.

  • Bugfix: Analog input descriptors added
  • Bugfix: Actually exit on Sys_Quit and Sys_Error. They intend to exit. Not doing so only result in weird crashes later
  • Bugfix: Fix crash in soft renderer when going underwater on increased resolution
  • Port: Ported vitaQuake 2 core to 3DS (software renderer only).
  • Port: Ported vitaQuake 2 core to Android (software renderer only).
  • Softrend: Fix crash in soft renderer when going underwater on increased resolution

ECWolf

You’ve been able to read about the new core ECWolf in our separate blog article. Further developments since then have been a 3DS port and analog deadzone options.

  • Analog deadzone options
  • Port: Ported ECWolf to 3DS

TIC-80

Description: TIC-80 emulator core

  • Updated to latest version

Flycast

Description: Sega Dreamcast emulator
We reported before in two separate articles this month on the mipmapping accuracy improvements. There have been other developments since the last progress report –

  • x64 DSP JIT support – audio DSP enabled should now have far less overhead than before
  • users now cannot force enable div matching [flyinghead]
  • disable div matching for Donald Duck Goin Quackers [flyinghead]
  • (NAOMI) parent rom name was incorrect for GDROMs [flyinghead]
  • (NAOMI) add ringout eeprom + some crcs [barbudreadmon]

Picodrive

The fast tile-based renderer (a new addition) can give a very welcome increase in performance. Note that only the ‘accurate’ renderer will display any graphics with 32X-based games, so only use tile-based rendering for now with regular Genesis/Mega Drive games.

  • Added an option to change the renderer from the default “accurate” line-based renderer to an alternative “fast” tile-based renderer, which may improve performance on slower devices such as the PSP. [bmaupin]

gpSP

  • Fix periodic ram_translation_cache crashes
  • Add manual frame skipping

OpenLara

  • Fix Android compilation [phcoder]

    Despite what the comments say Openlara uses
    functions available only in glesv3. Hence we need to
    force GLES3 and not GLES2. Then we need to fix compile error.
    It was due to requiring too low version of Android before it
    had GLESv3

prBoom

We talked about the serialization support before in prBoom. New improvements since then is that the wiggle fix is finally fixed now for ARM-based platforms like Android and iOS. Previously you’d need to have Wiggle Fix turned off if you didn’t want the floors and ceilings to look glitchy.

  • Implemented serialization support. Rewinding and runahead has been tested.
  • Use fixed point in precise flat calculation. This should work well now also in ARM and other platforms
  • Fix double free on failed load

DOSbox SVN/Dosbox Core

  • Latest SVN updates

Final Burn Neo

  • Latest updates from upstream

Stella

  • Latest updates from upstream

PCSX ReARMed

The biggest improvement since the last progress report [and the articles that followed it] definitely has to be runahead second instance support.

  • [3DS] Tweak compile-time options to increase performance [justinweiss]
    Adjusting a few things in the makefile to get some easy performance boosts.

    Did some measurement with Crash Bandicoot idling on the beach he starts on in Crash 1. All of these together brought it from ~44.5 fps to ~50.9.

    Tried all four UNAI options, this was the fastest by ~0.5fps.

  • [3DS] Fix dynarec crashes [justinweiss]
    After the dynarec writes new instructions, it has to flush the
    instruction and data caches. Some of these flush operations are
    privileged on the 3DS, so the clear cache functions have to run
    through svcBackdoor. The Nintendo implementation (and CFW
    reimplementation) of svcBackdoor has a problem where interrupts and
    context switches will cause crashes.

    Even though we can disable interrupts in the flush function, there’s
    still a window of time between svcBackdoor being called and the
    function being run where an interrupt will corrupt the stack.

    Luma3DS implemements a svcCustomBackdoor call we can use that also
    runs a function in supervisor mode, but uses an implementation that
    avoids this problem.

  • Fix second instance runahead [ZachCook]

Beetle PSX


Some crucial accuracy improvements to the hardware renderers means that Gran Turismo 2 is finally glitch-free with both OpenGL and Vulkan. Before, the HUD and other parts of the screen would flicker during gameplay.

  • Separate lightrec PGXP and non-PGXP rw_func [ZachCook] –
    When tested with soul blade this increases dynarec performance by ~1%
    for non-PGXP, and ~2% for PGXP as it always uses rw_func due to the fast-path
    being disabled for it.

  • Add frame duping support to RSX Vulkan [ggdrt]
  • OpenGL: Eliminate redundant glClear call [ggdrt]
  • Add accurate timing macros and report noninterlaced by default
  • Vulkan: Delay VRAM framebuffer size calculation to latest possible moment in
    Vulkan renderer; don’t rely on external timing of UpdateDisplayMode.
  • Add GP1(05h) command to rsx and parallel-psx [ggdrt]
  • Vulkan: Add Display VRAM core option support [ggdrt]
  • parallel-psx/Vulkan: Decouple MDEC and SSAA filter logic [ggdrt]
  • Limit image_offset range to prevent segfault [ggdrt] –

    Also update image_offset formula to better match core option info

  • Update rsx hook sequence in GPU reset and GPU restore state [ggdrt] –

    Fixes hardware renderer glitch where a portion of the BIOS PS logo would
    briefly flicker into the bottom right corner of the viewport after the
    normal BIOS animation.

  • Make scanline core options dynamic for sw renderer [ggdrt]

Desmume 2015

  • Blank screen gap for non-hybrid modes [Exalm]
  • Account for screen gap for touch input in top/bottom mode [Exalm]

mGBA

  • 3DS: Fix build
  • Update to mgba 0.8.1

Quasi88

  • Fix -mem_wait audio distortion

    Occurred when running in mode V1S
    due to front-loading DMA waits on
    each vertical sync.

  • ParaLLEl N64

    We’ve run several stories on ParaLLEl N64 this month already. In addition to the changes listed here, an Angrylion VI performance enhancement has been implemented which makes the VI filtered modes have less overhead than before.

    • Fixed VI performance issue caused by false sharing

      As pointed out by Themaister, the rseed array in vi.c suffers from false sharing, since its element size is smaller than the cache line size.

      This improves VI performance by no less than 30%. [Themaister/ata4]

    P-UAE

    Description: Commodore Amiga emulator

    This core is fast becoming one of the best ways to emulate the Amiga courtesy of sonninos.

    • Extended ZIP support [sonninnos]
    • WIIU build fix attempt + option display fix [sonninnos]
    • WHDLoad.hdf as raw files, Keylist fix, 68020 back to defaults [sonninnos]
    • Allow launching directories as hard drive images [sonninnos]
    • Save state fixes [jdgleaver]
    • Use memory-based save states (serialization support)
    • Reverted 68020 CPU shenanigans, Minor font fix, Less logging clutter [sonninnos]
    • New VKBD+statusbar fonts, RetroPad + CD32 Pad face button options [sonninnos]
    • Separate resolution & line mode core options, Automatic line mode [sonninnos]
    • Automatic resolution, Deinterlacing fixed, Statusbar fillings [sonninnos]
    • WHDLoad.hdf update [sonninnos]
    • Analog joystick device + minor reorganizing [sonninnos]
    • Resolution changing without reset [sonninnos]
    • Filesystem fixes
    • Model options for A4000, 68030+68040 [sonninnos]
    • “gl” video driver max_width fix [sonninnos]
    • Readme + core option label updates & ‘vsynctimebase’ tuning [sonninnos]
    • SuperHires video resolution & glue organizing [sonninnos]

    ScummVM

    • Update to ScummVM 2.1.1

    Opera (formerly 4DO)

    Description: 3DO emulator core

    Genesis Plus GX

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

    • Android: Add OPLL sound core

    FCEUmm

    Description: NES emulator core

    NOTE: All changes courtesy of negativeexponent (unless expressly attributed to somebody else)

    • Do overscan cropping after the ntsc frame is generated. this allows
      removing left and right screen artifacts when using horizontal crop like
      what you would see happen in TV when adjusting horizontal size (HSIZE).
    • add core option that implements NTSC scanline effects. This requires
      framebuffer to double the height, so a define is added (NTSC_SCANLINES at
      the top of libretro.c) to disable this on some low-memory platforms or just disable NTSC filters altogether.
    • Mapper 235 update support for 1MB/2MB carts and cart with unrom block
    • CNROM: Minor database cleanup
    • Use existing crc32 database for Bingo 75 (Asia) (Unl), this moves checksum check on mapper side instead of unif overrides.
    • m269: Deallocate memory on exit
    • Update mapper 15 based on latest notes
      – bit 7 acts as A13 only on mode 2
      – prg mask now 0x3F of data latche etc.
      – unrolled loops
    • Merge mappers 225 and 255 since they are basically the same
    • re-implement extra RAM as its required for some multicarts
    • Fix colour emphasis support for NTSC filter & raw palette + nes decoder shader

      – this implementation is based on a more accurate colour emphasis from fceux.

      – The raw palette + nes decoder shader was kinda incomplete since the implementation was based on
      a per-frame basis which means that the emphasis bits were read once and applied to the whole frame. This
      means that some games that uses a per pixel or per scanline emphasis would not appear correct. The more
      accurate implementation reads emphasis bits from bits 5-7 of PPU[1] and saves this info in a separate frame.

      – The same implementation is also used to fix emphasis for the ntsc filter.

    • Fix palette for vs. system
    • use fixed value for ntsc width and when its cropped
    • Fix colour emphasis when using palette presets –

      This is an issue i found when implementing the NTSC filters. Currently when using palette presets,
      no clour emphasis is seen on games that supports it. This is cause because the palette table is
      fille with the same 64*3 colour info.

      Using custom palette (palette file) and default both creates the emphasis as expected. So internally,
      fceumm is able to support such feature.

      The fix is to generate the base palette (64 * 3 with each triplet representing rgb colour), and then
      send this internally using FCEUI_SetPaletteArray() to fill the colour table with emphasis instead.

    • (3DS) Disable NTSC filter [jdgleaver]
    • (Android) Add NES NTSC filters
    • Implement blargg NTSC filters –

      – this implements blargg’s nes ntsc filters using core options
      – an optional height doubling is also added but disabled for performance reasons (might make that optional as a core option)
      – since PS2 and PSP have their own blitter branches, these platforms do not have the ntsc filters since i dont have the means to test on those systems.
      – compile with HAVE_NTSC=1 to have these options, HAVE_NTSC=0 disabled filter including core options
      – HAVE_NTSC=1 is set as default, other than PS2 and PSP as stated above.

    • Add mapper 218
    • m227: Implement chr-ram write protect
    • Add UNIF BMC-WX-KB4K (m134) to supported boards
    • Update implementation of some unlicensed mappers

    • Update mapper 91
    • Add mappers 111, 356, 269, 353
    • backport mapper 111 (Cheapocabra or GTROM) from fceux
    • Add BMC-SB-5013 (m359) and UNL-82112C (m540)
    • Add mapper 543, 550, 516
    • MMC1: Better work ram and battery saves support for size greater than 8K
    • Add mappers 382, 534, 539
    • Update mapper 150/243 (unif UNL-Sachen-74LS374N)
    • Update mapper 45 –
      – fix starting register value
      – fix memory write range to 0x6000-0xffff
    • Add mappers 360, 533
    • Minimize core options shown by default
    • updates to region-related settings and overclocking, UNIF now sets ines mapper if available (used for overrides etc)
    • Unif: Pass iNES mapper number to cart struct when available

    Gambatte

    Description: Game Boy/Game Boy Color emulator

    • Add optional LCD ghosting effect –
      This backports the LCD ghosting effects that were recently added to mGBA

      It replaces the existing Mix Frames core option with Interframe Blending. The old Accurate and Fast frame mixing settings have been renamed to Simple (Accurate) and Simple (Fast) – these perform the same 50:50 mix of the current and previous frames as before, required to achieve correct rendering of games that rely on LCD ghosting for transparency effects.

      In addition to these settings, there are now LCD Ghosting (Accurate) and LCD Ghosting (Fast) options. The former recreates the LCD response effect of RetroArch’s Gameboy Shader. The latter is similar, but uses a single accumulation buffer – which is more efficient, but lacks the subtlety of the shader implementation.

      Here are some stats showing the typical increase in performance overheads when using the various methods:

      Simple (Accurate): 30%
      Simple (Fast): 13%
      LCD Ghosting (Accurate): 48%
      LCD Ghosting (Fast): 28%

    • Do not add pointers to memory map if they are not available –

      skips sram when no sram is available
      skips extra RAM banks if not running in GBC mode

    • tvOS support

    Pokemini

    • Safely power off console before closing content [jdgleaver] –
      Thanks to the efforts of @Sanaki, it was discovered that certain games do not correctly update their EEPROM save data unless the virtual Pokemon Mini console is powered off before closing content. Affected titles include Pokemon Pinball Mini and Pokemon Race Mini – up until now, it was generally thought that saving was completely broken in these games.

      This PR adds an automatic power off event to retro_unload_game(). This ensures saves are always written without any special intervention from the user.

      The issue has existed forever, and I believe it affects the standalone version of PokeMini as well – great to finally get this fixed!

    EasyRPG

    • Fix Android build

    Kronos

    Description: Sega Saturn emulator based on Yabause

    • Latest updates by F-Care

    VICE

    Description: Commodore 64 home computer emulator

    Statusbar stays at the screen border + new position options: Top or Bottom

    RetroPad face button options: Rotate, Jump, Rotate+Jump

    Mouse type core option, usable with D-Pad + left analog + mouse, covered at least:

    Arkanoid (Paddles port 1)
    Arkanoid 2 (1351 port 1)
    Maniac Mansion Mercury (1351 port 2)
    Speeds are vastly different in Arkanoid & Maniac Mansion, so it was impossible to have both cases perfect with default options. VICE allows only one potentiometer device at a time, therefore it applies to the current RetroPad port. Pretty much everything else is familiar stuff from the PUAE core.

    Bonus:

    Defaulted ReSID sampling to “Fast” on low-power platforms
    Minor reorganizing

    • Mouse support [sonninnos]
    • RetroPad face button options, More statusbar options [sonninnos]
    • New fonts + cleanups [sonninnos]

    Final Burn Neo

    Description: Multi-system arcade emulator core

    • Latest updates