RetroArch 3DS: Difference between revisions

From GameBrew
(Created page with "{{Infobox 3DS homebrew | title = RetroArch | image = https://dlhb.gamebrew.org/3dshomebrew/retroarch-3ds-01.jpg|250px | type = Console | version = v1.8.1 | licence = Mixed | a...")
 
No edit summary
 
(35 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Infobox 3DS homebrew
{{Infobox 3DS Homebrews
| title = RetroArch
|title=RetroArch
| image = https://dlhb.gamebrew.org/3dshomebrew/retroarch-3ds-01.jpg|250px
|image=Retroarch3ds2.png
| type = Console
|description=A multisystem emulator (GB, GBA, SNES, Genesis, CPS1, CPS2, and more).
| version = v1.8.1
|author=libretro
| licence = Mixed
|lastupdated=2024/06/05
| author = libretro
|type=Console
| website = https://github.com/libretro/RetroArch
|version=1.19.1
| download = https://dlhb.gamebrew.org/3dshomebrew/https://buildbot.libretro.com/stable/1.8.1/nintendo/3ds/RetroArch_3dsx.7z
|license=GPL-3.0
| source = https://dlhb.gamebrew.org/3dshomebrew/https://buildbot.libretro.com/stable/1.8.1/nintendo/3ds/RetroArch_3dsx.7z
|downloadraw=[https://buildbot.libretro.com/stable/1.19.1/nintendo/3ds/ Stable] - [https://buildbot.libretro.com/nightly/nintendo/3ds/ Nightly Download]
|website=https://www.retroarch.com
|source=https://github.com/libretro/RetroArch
|donation=https://www.retroarch.com/index.php?page=donate
}}
}}
<youtube>lT6l3XuSQxA</youtube>
RetroArch is a free, open-source and cross-platform front-end for emulators, game engines, video games, media players and other applications. It is the reference implementation of the libretro API, designed to be fast, lightweight, portable and without dependencies.


= r3Ddragon =
It enables you to run classic games on a wide range of computers and consoles through its slick graphical interface. Settings are also unified so configuration is done once and for all, with advanced features like shaders, netplay, rewinding, next-frame response times, runahead.
A WIP Virtual Boy emulator for the 3DS based on Reality Boy / Red Dragon. You can see the current progress [https://github.com/mrdanielps/r3Ddragon/wiki/Current-progress here] and a video of it working [https://youtu.be/xJ9323yaQJY here].
 
There's an experimental dynarec implemented but it still needs optimizing.
==Features==
=== Usage ===
* Consistency across multiple platforms (same UI structure and a fully featured command line interface).
You can place place ROMs in /vb/.
* Gamepad controlled menu system with multiple styles available, such as XMB or Material UI.
If it doesn't exist, <code>rd_config.ini</code> will be created. Some relevant options you can change are:
* Gamepad auto-configuration profiles, so that gamepads are mapped automatically when connected.
* ''maxcycles'': A lower value will improve compatibility, but it will run slower.
* Per-core and per-game configuration overrides.
* ''frmskip'': Number of frames to skip before drawing.
* Custom resolution and refresh rate for video output, with exclusive fullscreen mode and monitor index for multi-monitor setups.
* ''debug'': If set to 1, prints debug info.
* Dynamic rate control for smooth audio and video, even when the game's output rate is different from your system.
* ''sound'': Enables sound.
* Basic fast forward, SRAM saving, savestate, etc. It supports serialization of the emulation state which is used to provide real-time rewind and netplay.
* ''dynarec'': If set to 0, tries to load the dynarec cache from a file instead of recompiling.
* Pixel shaders, primarily using Cg and GLSL, with HLSL on Xbox 360.
The 3dsx will only work on exploitable system versions (<=11.2) after running [https://github.com/nedwill/fasthax/releases fasthax].
* Supports audio DSP filter plugins through .dsp configuration files.
=== FAQs ===
* Custom overlay support.
<blockquote>Why would you make a Virtual Boy emulator? Nobody asked for it.
* FFmpeg recording and playback support.
</blockquote>
* Streaming support.
The 3DS is the perfect system to faithfully emulate the Virtual Boy. They have similar screen resolutions, the 3D effect is better and it's actually portable.
* GGPO-like netplay (latency hiding rollback).
<blockquote>OK, but wasn't the Virtual Boy, like, the worst console ever?
* Options for decreasing input latency related to vsync by eliminating buffering by the video driver, as well as using frame delay to delay polling of inputs until right before a vsync occurs on the display.
</blockquote>
* Run-ahead to reduce latency.
There were many reasons why it was commercial failure. That doesn't mean the console is bad, or the games aren't worth playing. It's definitely received way more hate than it deserved.
 
Plus, it has a nice homebrew scene with gems such as Hyper Fighting, Snatcher and many more.
==Installation==
<blockquote>Do I need a new 3DS to run this?
You can find the installation pack, assets and cores [https://buildbot.libretro.com here].
</blockquote>
 
Unfortunately, yes. The old 3DS is too slow to run it at a playable speed. That might change in the future, but it's unlikely.
To install, download either RetroArch_3dsx.7z or RetroArch_cia.7z, then extract RetroArch folder to the root of your SD card (RetroArch.cia anywhere else), to install cores use FBI installer.
<blockquote>Where can I download it?
 
</blockquote>
Run RetroArch, go to the RetroArchfolder and open the Cores folder.
You can find the latest release [https://github.com/mrdanielps/r3Ddragon/releases here].
 
=== Building ===
Select and install the Cores you want to use.  
Once you have [http://3dbrew.org/wiki/Setting_up_Development_Environment ctrulib installed], you can choose between four different make targets:
 
* '''<code>make release</code>''' adds <code>-O3</code> to CFLAGS. It's meant to be run on an actual 3DS and will output basic debug info to stdout only if enabled in <code>rd_config.ini</code>.
For example; install pcsx_rearmed_libretro.cia for Playstation 1 Roms.
* '''<code>make testing</code>''' adds <code>-O3</code> to CFLAGS. It's meant to be run on an emulator (citra or 3dmoo). It will output basic debug info to the terminal.
 
* '''<code>make debug</code>''' adds <code>-g -O0</code> to CFLAGS. It builds without optimizations so it can be debugged with gdb.
Note that some specific cores require [https://docs.libretro.com/library/bios/#links-to-the-core-specific-bios-information BIOS roms/files] present in the system directory in order to run.
* '''<code>make slowdebug</code>''' adds <code>-g -O0</code> to CFLAGS. It will output a lot of debug information, which will slow emulation down but might be helpful to debug game-specific issues.
 
For easier debugging, you can build it for arm-linux (tested on a Raspberry Pi) with <code>make -f Makefile.linux</code> or for android using <code>ndk-build</code>.
==User guide==
=== License ===
===Reduce Content loading times===
Some of the code is distributed under the MIT License (check source files for that) but, since this is a port of Reality Boy, here is (part of) the original readme:
By default, all Cores are installed in the directory /RetroArch/Cores. With this configuration, RetroArch Cores on 3DS take nearly 30 seconds to start, as each Core in /RetroArch/Cores must be initialized - including Cores which may not be needed. The same delay is experienced when loading Content (games) as well; roughly 30 seconds to finish loading. Slow MicroSD random access/transfer speeds on the 3DS may be a likely cause.
<pre>This Reality Boy emulator is copyright (C) David Tucker 1997-2008, all rights
 
reserved. You may use this code as long as you make no money from the use of
To reduce loading time for Cores and Content to under 5 seconds each, complete the following steps:
this code and you acknowledge the original author (Me). I reserve the right to
* Determine Cores to be used. These Cores will remain in the /RetroArch/Cores/ directory.
dictate who can use this code and how (Just so you don't do something stupid
* Create directory for unused cores. A directory name such as /RetroArch/Cores-Notused/ could be created for unused Cores.
with it).
* Move the unused Cores. Finally, move unused Cores from /RetroArch/Cores/ to /RetroArch/Cores-Notused/.
Most Importantly, this code is swap ware. If you use It send along your new
* After moving unused Cores as outlined above, RetroArch Cores should start in about 5 seconds. Content should load in about 5 seconds as well.
program (with code) or some other interesting tidbits you wrote, that I might be
 
interested in.
As additional Cores are needed, simply move them from /RetroArch/Cores-Notused to /RetroArch/Cores. This ensures only the required Cores are initialized by RetroArch, minimizing start times for Cores and Content.
This code is in beta, there are bugs! I am not responsible for any damage
 
done to your computer, reputation, ego, dog, or family life due to the use of
===Additional notes for MAME Cores===
this code. All source is provided as is, I make no guaranties, and am not
MAME Content numbers in the thousands of items for MAME Cores. To help reduce loading time for MAME Content, consider creating two directories for MAME Content:
responsible for anything you do with the code (legal or otherwise).
* A directory for favorite MAME Content, containing Content which will be loaded often.
Virtual Boy is a trademark of Nintendo, and V810 is a trademark of NEC. I am
* A directory for all remaining MAME Content, containing Content which would be loaded infrequently.
in no way affiliated with either party and all information contained hear was
 
found freely through public domain sources.
This approach will work fine as long as the MAME Content romset is a Full Non-Merged romset. If the romset is not Full Non-Merged, then all MAME content will need to remain in the same directory.
Acknowledgments:
 
----------------
Full Non-Merged romsets are the simplest romset format to get started with because each romset zip contains all necessary files for one game. For more information, please refer to Getting started with arcade emulation.
Frostgiant, Parasyte, and DogP (and the rest of people that have contributed
 
to the VB sceen in the last five years) - Their work on Red_Dragon has been a
===Configuration for MAME cores===
real inspiration. Its amazing how far they have gone with so little to start
Much of the Content loaded by the RetroArch MAME Cores uses a Vertical display perspective for the top 3DS screen, requiring the user to rotate the 3DS counter-clockwise in order to properly see the game content and access the game controls. When using Content in this configuration, the default controls won't be suitable (as the controls are typically configured for Horizontal display perspective).
with.
 
Bob VanderClay - most of the original code is based off
One approach to address the issue is to configure Global Options for controls, which would apply to the majority of games (such as Vertical display perspective). For games which have a different layout (Horizontal display perspective), the MAME menu may be used to configure a game controller configuration for that specific Content.
of his VB disassembler.
 
Ben Haynor - Provided me with a much better understanding of
A simple configuration example follows, in case the majority of Content uses a Vertical configuration. Load RetroArch, then:
the VB internals.
* Bind a Menu hotkey From Main Menu navigate to Settings->Input->Hotkeys. Scroll down to Menu Toggle Gamepad Combo or Menu (Toggle) and configure as desired, to display the Menu within Content.
Joseph LoCicero, Dave Shadoff - I stole the jump table ideas from their tg16
* Configure Global Control for Vertical Content From Main Menu navigate to Settings > Input > Port 1 Controls. Configure as desired.
disassembler, thanks guys.
** Configure In-Game Control for a piece of Horizontal Content Load the content, then press the defined Hotkey to display the Quick Menu.  
Neill Corlett - took many ideas (and some code)
** Scroll down and select Options, then scroll down to select Display MAME menu; change to ON, then resume content.  
from his Starscream CPU core
** On the MAME menu select Input (this game) and adjust the settings as desired.  
Kevin Banks - for donating a very nice pair of Frenzle 3D
** Finally, use the previous steps to set Display MAME menu back to OFF. Controls are now set properly for the game.
viewers, and being an all around great guy.
 
Megan Tucker - For putting up with my tinkering all night, and resisting the
Following the above ensures all Content may use the proper control configuration.
urge to toss all my video games out the window.
 
v810 is a trademark of NEC co.
===Useful links===
Virtual Boy is a trade mark of Nintendo
* [https://docs.libretro.com/guides/install-3ds2ds/ RetroArch official document page].
Reality Boy is in no way affiliated with either of these parties</pre>
* [https://buildbot.libretro.com RetroArch Cores and Assests].
=== Credits ===
* [https://docs.libretro.com/library/bios The Libretro Core Library and BIOS Information Hub].
* Everyone mentioned in the license. Without Reality Boy and Red Dragon it wouldn't have been possible.
* [http://buildbot.libretro.com/compatibility_lists RetroArch Core MAME Compatibility List].
* smealum and contributors - ctrulib.
* [https://docs.libretro.com/guides/troubleshooting-retroarch Troubleshooting].
* Vappy, Team Fail, HtheB, hippy dave and kane159 on GBAtemp - early testing.
* [https://gbatemp.net/threads/tutorial-how-to-play-ps1-games-on-new-3ds-50-60fps.530785 Guide for PCSX/PCSX reARmed (PS1) on N3DS/2DS] and [https://docs.google.com/spreadsheets/d/1pl2bTkzTe736EOaQjk8FBWY9ixfgoNSYSitbm5Gnyqs/edit#gid=0 Compatibility List] ([https://gbatemp.net/threads/pcsx-rearmed-compatibility-list.489357 discussion thread]).
* benhoyt - inih.
 
* Myria - libkhax
==Controls==
* thunderstruck - CIA banner sound (taken from Fishbone).
A - Confirm
* nop90 - Reality Boy backports and fixes.
 
* danielps - 3DS port and V810 dynarec.
B - Cancel
Changelog: Removed libhax. Homebrew launcher users will have to run a kernel exploit (like fasthax) first. Added settings for frameskip, maxcycles, sound and debug output. Implemented floating point instructions. Known Issues: Low compatibility. Glitchy graphics on some commercial games. Frame limiting is broken when frameskip is enabled. Some menu options aren't implemented. To change ROMs you have to exit first (touchscreen->File->Exit).
 
X - Search prompt
 
Y - Delete input bind
 
D-Pad - Navigation
 
Start - Reset option to default
 
Select - Show tooltip for a particular option
 
R/L - Fast scrolling through files
 
==Media==
'''RetroArch - How to Install: 3DSXL, 3DS, 2DSXL and 2DS''' ([https://www.youtube.com/watch?v=4TnjFE9t1a4 LibRetro]) <br>
<youtube>4TnjFE9t1a4</youtube>
 
==External links==
* Official website - https://www.libretro.com
* libretro buildbot - https://buildbot.libretro.com
* Libretro Docs - https://docs.libretro.com
 
 
 
[[Category:Support the author]]

Latest revision as of 11:34, 8 June 2024

RetroArch
Retroarch3ds2.png
General
Authorlibretro
TypeConsole
Version1.19.1
LicenseGPL-3.0
Last Updated2024/06/05
Links
Stable - Nightly Download
Website
Source
Support Author

RetroArch is a free, open-source and cross-platform front-end for emulators, game engines, video games, media players and other applications. It is the reference implementation of the libretro API, designed to be fast, lightweight, portable and without dependencies.

It enables you to run classic games on a wide range of computers and consoles through its slick graphical interface. Settings are also unified so configuration is done once and for all, with advanced features like shaders, netplay, rewinding, next-frame response times, runahead.

Features

  • Consistency across multiple platforms (same UI structure and a fully featured command line interface).
  • Gamepad controlled menu system with multiple styles available, such as XMB or Material UI.
  • Gamepad auto-configuration profiles, so that gamepads are mapped automatically when connected.
  • Per-core and per-game configuration overrides.
  • Custom resolution and refresh rate for video output, with exclusive fullscreen mode and monitor index for multi-monitor setups.
  • Dynamic rate control for smooth audio and video, even when the game's output rate is different from your system.
  • Basic fast forward, SRAM saving, savestate, etc. It supports serialization of the emulation state which is used to provide real-time rewind and netplay.
  • Pixel shaders, primarily using Cg and GLSL, with HLSL on Xbox 360.
  • Supports audio DSP filter plugins through .dsp configuration files.
  • Custom overlay support.
  • FFmpeg recording and playback support.
  • Streaming support.
  • GGPO-like netplay (latency hiding rollback).
  • Options for decreasing input latency related to vsync by eliminating buffering by the video driver, as well as using frame delay to delay polling of inputs until right before a vsync occurs on the display.
  • Run-ahead to reduce latency.

Installation

You can find the installation pack, assets and cores here.

To install, download either RetroArch_3dsx.7z or RetroArch_cia.7z, then extract RetroArch folder to the root of your SD card (RetroArch.cia anywhere else), to install cores use FBI installer.

Run RetroArch, go to the RetroArchfolder and open the Cores folder.

Select and install the Cores you want to use.

For example; install pcsx_rearmed_libretro.cia for Playstation 1 Roms.

Note that some specific cores require BIOS roms/files present in the system directory in order to run.

User guide

Reduce Content loading times

By default, all Cores are installed in the directory /RetroArch/Cores. With this configuration, RetroArch Cores on 3DS take nearly 30 seconds to start, as each Core in /RetroArch/Cores must be initialized - including Cores which may not be needed. The same delay is experienced when loading Content (games) as well; roughly 30 seconds to finish loading. Slow MicroSD random access/transfer speeds on the 3DS may be a likely cause.

To reduce loading time for Cores and Content to under 5 seconds each, complete the following steps:

  • Determine Cores to be used. These Cores will remain in the /RetroArch/Cores/ directory.
  • Create directory for unused cores. A directory name such as /RetroArch/Cores-Notused/ could be created for unused Cores.
  • Move the unused Cores. Finally, move unused Cores from /RetroArch/Cores/ to /RetroArch/Cores-Notused/.
  • After moving unused Cores as outlined above, RetroArch Cores should start in about 5 seconds. Content should load in about 5 seconds as well.

As additional Cores are needed, simply move them from /RetroArch/Cores-Notused to /RetroArch/Cores. This ensures only the required Cores are initialized by RetroArch, minimizing start times for Cores and Content.

Additional notes for MAME Cores

MAME Content numbers in the thousands of items for MAME Cores. To help reduce loading time for MAME Content, consider creating two directories for MAME Content:

  • A directory for favorite MAME Content, containing Content which will be loaded often.
  • A directory for all remaining MAME Content, containing Content which would be loaded infrequently.

This approach will work fine as long as the MAME Content romset is a Full Non-Merged romset. If the romset is not Full Non-Merged, then all MAME content will need to remain in the same directory.

Full Non-Merged romsets are the simplest romset format to get started with because each romset zip contains all necessary files for one game. For more information, please refer to Getting started with arcade emulation.

Configuration for MAME cores

Much of the Content loaded by the RetroArch MAME Cores uses a Vertical display perspective for the top 3DS screen, requiring the user to rotate the 3DS counter-clockwise in order to properly see the game content and access the game controls. When using Content in this configuration, the default controls won't be suitable (as the controls are typically configured for Horizontal display perspective).

One approach to address the issue is to configure Global Options for controls, which would apply to the majority of games (such as Vertical display perspective). For games which have a different layout (Horizontal display perspective), the MAME menu may be used to configure a game controller configuration for that specific Content.

A simple configuration example follows, in case the majority of Content uses a Vertical configuration. Load RetroArch, then:

  • Bind a Menu hotkey From Main Menu navigate to Settings->Input->Hotkeys. Scroll down to Menu Toggle Gamepad Combo or Menu (Toggle) and configure as desired, to display the Menu within Content.
  • Configure Global Control for Vertical Content From Main Menu navigate to Settings > Input > Port 1 Controls. Configure as desired.
    • Configure In-Game Control for a piece of Horizontal Content Load the content, then press the defined Hotkey to display the Quick Menu.
    • Scroll down and select Options, then scroll down to select Display MAME menu; change to ON, then resume content.
    • On the MAME menu select Input (this game) and adjust the settings as desired.
    • Finally, use the previous steps to set Display MAME menu back to OFF. Controls are now set properly for the game.

Following the above ensures all Content may use the proper control configuration.

Useful links

Controls

A - Confirm

B - Cancel

X - Search prompt

Y - Delete input bind

D-Pad - Navigation

Start - Reset option to default

Select - Show tooltip for a particular option

R/L - Fast scrolling through files

Media

RetroArch - How to Install: 3DSXL, 3DS, 2DSXL and 2DS (LibRetro)

External links

Advertising: