(RetroArch FinalBurnNeo, MAME (current) and MAME 2003/2003plus)
Repository for game-specific Arcade Artwork by using the Koko-aio slang shader. Successfully tested under MacOS, Windows and iPadOS. Currently the Koko-aio shader provides superior performance on all reasonably powered desktops (including Macs), while providing enhanced shader functions, including bezel reflections, immersive ambient lights, halo/glow effects and many more. Configuration options are endless. It embeds game-specific artwork seamlessly and scales according to resolution. The koko-aio shader is currently under steady development, thus it is a clear aim to stay in line with the Upstream changes.
Main source of this artwork comes from John Merrit, who set a benchmark for realistic arcade artwork. I still very much like them, and after AI-upscaling to 4K, they shine even more in combination with Koko-aio. My selection of the artwork is arbitrary, but I try to publish eye candys earlier :-). Version 0.2 and following releases see the inclusion of some breathtaking 4K artwork provided by Ars Invictus. Each shader preset contains the credits (warning: If you overwrite the preset in RetroArch, credits get lost).
Focus on highest possible quality and diversity over mass production. Also improvements of existing artwork to have a best possible experience.
Requirements: RetroArch 1.6.0 upwards, you need Vulkan supoprt.
Screenshots from release 0.4:



Shots from v 0.2 and 0.3:
Shots from v 0.1:
Step 1: Take the entire zip package as provided in the Release section and replace the koko-aio folder that comes with RetroArch: /shaders/shaders_slang/bezel/koko-aio
Step 2: Move all .slangp-presets to the respective core configuration directory, i.e. /config/FinalBurn Neo/ and/or /config/MAME/ and/or /config/Mame 2003 (0.78) and/or /config/MAME 2003-plus; with this, the right artwork launches automatically
Note: The FinalBurn Neo.cfg/MAME.cfg/Mame 2003 (0.78).cfg/MAME 2003-plus.cfg files contain just one line that secures that the Aspect Ratio is set to 'Full'. Without this option, the background will not appear.
(e.g. you want to update latest presets before a new release)
Of course there are several ways to do this, but again the easiest is the following:
Step 1: Clone the entire repository, e.g. by downloading the repo into a zip file (green button Code -> Download zip). Will take some time.
Step 2: Choose the new textures from the directory /textures/arcade_textures and copy them locally to /shaders/shaders_slang/bezel/koko-aio/textures/arcade_textures
Step 3: Locate the corresponding presets ending with .slangp in /presets-ng/arcade-koko-aio/FinalBurnNeo and copy them locally to /config/FinalBurn Neo/ - repeat this step for the presets of other cores you use, e.g. MAME, or the MAME2003 variants.
Update November 2023: In the new ng shader environment, it will be sufficient to move the koko-aio folder structure as is into the local RetroArch shader environment. So you can download the repository as well, but be sure to delete the hidden .git files that contain massive data.
Please see the Moon Patrol example - you can just duplicate the .slangp preset and rename it with the name of the clone. By this, you have an identical configuration for a clone.
Since Release 0.3, backdrop support landed in koko-aio as a dynamic option. A separate shader repository for backdrops is no longer required, and I have merged the backdrop presets into koko-aio.
(Update January 2025) This fork will remain as closely as possible in line with the main repository, as I frequently update from Upstream. Here is a list of deviations from Upstream:
- koko-aio-ng.slangp - line 43: bg_under_wrap_mode = "clamp_to_edge" (instead of previously "mirrored_repeat")
- koko-aio-ng.slangp - line 48: bg_over_wrap_mode = "clamp_to_edge" (instead of previously "mirrored_repeat")
- koko-aio-ng.slangp - line 53: backdrop_wrap_mode = "clamp_to_edge"
In koko-aio.slangp (prior to ng), I used "clamp_to_border", but the new, stronger ambilight of the ng shader then shines beyond the artwork. Workaround: apply a 1px black frame to the artwork and set "clamp_to_edge", this lets the black frame repeat black, and thereby the ambilight no longer shines through. Worthy time invested.
These changes are beneficial for this repository, as a mirrored repeat looks very strange for realistic cabinet backgrounds/foregrounds.
LEGACY no longer required as of April 2023, just for documentation: /shaders/config.inc - line 130: ALLOW_BG_IMAGE_TEXTURE_WRAP_IN_SHADER is enabled so as to allow a different texture wrap for the arcade artwork /shaders/config.globals.inc - line 200: BG_IMAGE_WRAP_MODE is hardcoded to 1.0 (wrap to edge) because that's how it should be with this arcade artwork (ending with a black border) /shaders/config.inc - line 107: STATIC_SUPPORT_BACKDROP hardcoded to 1.0 (this is why backdrops require a separate koko-aio-backdrops instance)
Koko-aio shader is meant to be an all-in one crt shader.
It can be configured with many parameters, so that can be
scaled to run on even on modest gpus while still developed to
run with heavier presets on at least Haswell+ iGpus.
On that gpu, as in version 3.5, it reaches about 85fps with all features enabled
When dealing with lowres content on 1920x1080 resolution.
While it is not meant to simulate the internal behaviour of CRT displays,
it aims to give users "visual" parameters to make their monitors look similar.
Several presets are included.
Additional documentation:
Additional artwork:
Actually, it provides emulation/support for:
- Color corrections (Gamma, contrast, saturation, luminance, vibrance, color temperature adjustments)
- B/W display "colorization"
- FXAA Antialiasing
- RF Noise
- Dedithering
- NTSC/PAL CVBS color bleeding and Artifacts
- Phosphor persistance
- Deconvergence
- Gaussian blurring/sharpening
- Phosphor Glow
- Tate mode
- Scanlines
- Interlacing
- Double scanning
- Multiple phosphors layout
- Aperture grille, slot mask, shadow mask.
- Moire mitigation strategies
- Dot martix with ghosting
- Haloing, Blooming
- Curvature
- Bezels with realistic reflections (Thank you HyperspaceMadness for allowing me to rip his automagically generated bezel!)
- Background, Foreground and Backdrop images
- Ambient lighting with realistic illumination
- Vignette, spotlight
- Full screen glowing
- Integer Scaling
- Tilting
- Light on power consumption
External code by:
- Nvidia (FXAA)
Dynamic Ambient light examples
Ntsc selective blurring and sharpening
monitor-slotmask-bloom-bezelwider - Arcade - Final fight
monitor-Commodore_1084S-wider - Amiga - ProjectX SE