docs/archive/retroarch-enduserguide.lyx
Winston Weinert 8a8f9b31d2 Delete trailing whitespace
In #526 I accidentally lost some of my edits trying to selectively
stage lines with typo fixes, while deleting hunks that were only
whitespace changes. In hopes nobody else falls into this trap, I ran
the following command to find all the files to edit, and apply emacs's
delete-trailing-whitespace function to each file.

```sh
find * -type f -print0 | xargs -0 -P$(nproc) -n1 -I{} sh -c 'if file -b "{}" | grep -qFi text; then emacs -batch "{}" -f delete-trailing-whitespace -f save-buffer; fi'
```

Note: `git add -u` will add only known paths to the stage (index),
even if `tidy.sh` exists in the git work directory.
2020-07-20 10:35:30 -05:00

2793 lines
57 KiB
Plaintext

#LyX 2.0 created this file. For more info see http://www.lyx.org/
\lyxformat 413
\begin_document
\begin_header
\textclass article
\use_default_options true
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref true
\pdf_title "RetroArch End-user Guide"
\pdf_bookmarks true
\pdf_bookmarksnumbered false
\pdf_bookmarksopen false
\pdf_bookmarksopenlevel 1
\pdf_breaklinks false
\pdf_pdfborder false
\pdf_colorlinks true
\pdf_backref false
\pdf_pdfusetitle true
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 1
\use_mhchem 1
\use_mathdots 1
\cite_engine basic
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\use_refstyle 1
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 5
\tocdepth 5
\paragraph_separation indent
\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Title
RetroArch End-User Guide
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part*
Welcome to RetroArch!
\end_layout
\begin_layout Standard
RetroArch does things differently from other programs.
In this guide, you will learn what RetroArch is, how it works and the various
things you can do with it as an end-user.
\end_layout
\begin_layout Standard
This guide is aimed at the end-user.
It does not intend to be a comprehensive reference for anything and everything
to do with the libretro project and/or RetroArch.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part
What is RetroArch?
\end_layout
\begin_layout Standard
RetroArch is a cross platform architecture that aims to become a 'one-stop
shop' for emulators, videogames, multimedia, augmented reality and other
areas of interest.
It manages to do all of these things by implementing a specification known
as the libretro API (Application Programming Interface).
\end_layout
\begin_layout Standard
Libretro is a powerful interface that allows you to port applications to
the spec and be able to run them on any libretro-compatible client in existence.
\end_layout
\begin_layout Standard
RetroArch is the 'official' libretro client.
Right now it is available on many platforms and it aims to deliver the
most optimal performance possible on a given host platform.
You will generally find that RetroArch will be first in implementing new
features and/or additions that get added to the libretro interface.
\end_layout
\begin_layout Standard
RetroArch is most well known for an entire suite of emulators that have
been ported to the libretro specification and are therefore able to be
run in RetroArch.
Therefore, it has been compared in the media to other multi-system emulators,
such as OpenEmu, and/or MESS.
Note that we don't particularly approve of this attempt to pigeonhole RetroArch
- we don't think of libretro and/or RetroArch as being limited to emulators,
or even games for that matter.
\end_layout
\begin_layout Standard
Over the next few months the distinction between RetroArch and these types
of programs will start becoming more and more apparent.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part
What platforms can I use RetroArch on?
\end_layout
\begin_layout Standard
Being on every system anywhere is the most important goal of RetroArch.
Therefore, it is available for many platforms - for free.
The program (except for minor cosmetic differences per version) should
behave more or less exactly the same from one platform to another.
\end_layout
\begin_layout Standard
The list of available devices and/or operating systems include:
\end_layout
\begin_layout Itemize
PC (Microsoft Windows XP/Vista/7/8/8.1)
\end_layout
\begin_layout Itemize
Mac (OSX Snow Leopard [10.6.8] up to Mavericks [10.9])
\end_layout
\begin_layout Itemize
Linux
\end_layout
\begin_layout Itemize
Android (version 2.3 and higher)
\end_layout
\begin_layout Itemize
iOS (version 6.0 and higher [*])
\end_layout
\begin_layout Itemize
Blackberry Playbook
\end_layout
\begin_layout Itemize
Blackberry 10
\end_layout
\begin_layout Itemize
PlayStation3 [*]
\end_layout
\begin_layout Itemize
Nintendo Wii [*]
\end_layout
\begin_layout Itemize
Nintendo GameCube [*]
\end_layout
\begin_layout Itemize
Microsoft Xbox [*]
\end_layout
\begin_layout Itemize
Microsoft Xbox 360 [*]
\end_layout
\begin_layout Itemize
Browser / Javascript (Emscripten)
\end_layout
\begin_layout Standard
Some of the systems listed above (the ones marked [*]) might require a jailbreak
or a modification of some sort so that RetroArch is able to run on it.
This is something you will have to figure out on your own and for which
we provide no support or help at all.
\end_layout
\begin_layout Standard
For the latest versions, go to the official homepage -
\begin_inset Flex URL
status open
\begin_layout Plain Layout
http://www.libretro.com
\end_layout
\end_inset
, and click on the platform you want to download a copy of RetroArch for.
\end_layout
\begin_layout Standard
In the future, RetroArch will be ported to even more systems.
The aim for RetroArch is to have a program that will be able to run on
as many platforms as possible, and bringing along with it all the libretro
cores that RetroArch (as a libretro client) is able to run.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part
How does RetroArch work?
\end_layout
\begin_layout Standard
RetroArch is a plugin-driven application.
Every program that you can run in RetroArch is a plugin that gets loaded
by RetroArch on-the-fly.
We refer to these plugin cores from this point on as 'libretro cores'.
\end_layout
\begin_layout Standard
A libretro core is an app implementing the libretro specification packaged
as a plugin.
The 'libretro core' defines the 'behavior' of what RetroArch will do, since
RetroArch by itself does nothing.
So, a core can turn RetroArch into a videogame emulator, a game, a movie
player, etc.
It's up to what the developer wants the libretro core to do.
\end_layout
\begin_layout Standard
Through this model, apps implementing the libretro specification form part
of a larger ecosystem that every libretro-compatible client will be able
to tap into.
Libretro's aim is to make convergence possible - so that you can run an
app on one system, then run it on another system, or play in a browser
and then continue and pick up where you left off by launching the same
app from your mediaplayer.
\end_layout
\begin_layout Standard
RetroArch can be thought of as the 'Proof of Concept' that demonstrates
that this kind of convergence is possible.
Other apps (media players, multi-system emus, CAD applications) are encouraged
and allowed to implement the specification themselves.
\end_layout
\begin_layout Standard
The user can do many things with RetroArch, from playing games to watching
movies (and other activities in the near future).
The user is in control of what he wants to turn RetroArch into, for what
purposes it will be used and what content will be run in it.
There is no digital rights management or restrictions imposed upon the
user.
\end_layout
\begin_layout Standard
A brief summary of all available 'libretro cores' so far will be provided
at the end of this guide.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part
How do you control RetroArch?
\end_layout
\begin_layout Standard
RetroArch (and libretro as a result) has been designed around one common
input device - something we call the 'RetroPad'.
You use this input device for controlling all aspects of RetroArch - from
the game to the RetroArch system menus.
\end_layout
\begin_layout Standard
The RetroPad is a traditional videogame controller of the Nintendo/Sony
mould.
It has a D-pad, a Start/Select button, four face buttons, up to 4 shoulder
buttons/triggers, and (optional) two analog sticks.
\end_layout
\begin_layout Standard
Unlike other apps, RetroArch is designed to be controlled with a gamepad
as its primary input.
We want to deliver a user experience that is as close to a traditional
videogame console as possible, and to that end, we believe having to jockey
between a keyboard, a mouse, and/or a gamepad/mouse is a bad user experience
- when you could all do it with your gamepad anyway.
\end_layout
\begin_layout Standard
The RetroPad is an 'abstraction' - when you run RetroArch, your own gamepad
(or keyboard/touch overlay) will have a 1-to-1 mapping to this 'RetroPad'
abstraction.
You map your input device of choice to all the buttons and triggers that
the RetroPad supports, and from there on you can control RetroArch's built-in
menu system
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
On tablets and phones, you can interact with the upper-layer system menus
through touch
\end_layout
\end_inset
.
\end_layout
\begin_layout Standard
The mobile ports (because of touch being the primary input device) are controlle
d using a graphical overlay of the RetroPad that gets pasted on top of the
screen.
This overlay can be interacted with through touch, and it's possible to
switch between different 'pages' of the overlay - and to switch overlays
on-the-fly.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part
How do I go to the built-in UI?
\end_layout
\begin_layout Standard
RetroArch has a built-in UI (User Interface) that functions nearly the same
across every platform.
It is called RGUI (short for Retro GUI).
Most of RetroArch's features can be changed on-the-fly from this.
\end_layout
\begin_layout Standard
Just like everything else in RetroArch, RGUI is controlled with the RetroPad.
Like the name suggests, it is a no-frills User Interface that is not big
on eye-candy.
On the plus side, it is very scaleable and works well even at resolutions
as low as 320x240.
\end_layout
\begin_layout Standard
The user has two ways to bring up this menu:
\end_layout
\begin_layout Itemize
Button bind - most RetroArch versions allow you to bind 'Toggle Menu' to
a key/button on your input device.
By pressing this button/key, you can toggle the built-in UI on or off.
\end_layout
\begin_layout Itemize
Overlay - An overlay usually contains a button with a 'space invaders' icon
in it.
Touching this button will toggle the built-in UI on or off.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part
How do I load content in RetroArch?
\end_layout
\begin_layout Standard
A version of RetroArch typically has three ways to load content.
You can select these options from the built-in UI.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Load Content (History):}
\end_layout
\end_inset
You can select from a list of previously loaded content here.
All the content you have ran in RetroArch will be added to this list.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Load Content (Detect Core):}
\end_layout
\end_inset
You can select a file from the filebrowser.
It will try to detect if a core has been installed that supports the extension
of the file you just selected.
If it finds only one core that supports this file extension, it will autostart
that core with the chosen content immediately.
If it finds multiple cores that supports this file extension,it will let
you choose from a list of supported cores.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Load Content:}
\end_layout
\end_inset
You can select a file from the filebrowser, and it will be started with
the currently selected 'core'.
In order to change the core currently being selected, you have to select
another one from 'Load Core'.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Part
Listing of available cores
\end_layout
\begin_layout Standard
The number of plugin cores that get added to the libretro ecosystem keeps
increasing.
Covering all of these would fall outside the scope of this guide, so we're
only going to cover a few ones in more detail.
\end_layout
\begin_layout Standard
We try to make an effort to have a core run on as many systems as possible.
Unfortunately, there will always be instances where a core is not available
for a specific platform.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
bsnes
\end_layout
\begin_layout Standard
This is a Super Nintendo emulator based on the open-source emulator bsnes.
It is an accuracy-focused emulator and as such can run almost all games
for the SNES with cycle accuracy, unlike other SNES emulators.
However, this comes at the cost of performance.
\end_layout
\begin_layout Subsection
How to run
\end_layout
\begin_layout Standard
bSNES does not work on its own, but runs SNES ROM images.
These image files need to have the following extensions
\end_layout
\begin_layout Itemize
sfc
\end_layout
\begin_layout Standard
Select one of these.
If the image is verified to be OK, it will start up the game.
\end_layout
\begin_layout Subsection
How do all these different versions compare?
\end_layout
\begin_layout Standard
There are several versions of bsnes out there.
\end_layout
\begin_layout Subsubsection
bsnes Performance v0.92
\end_layout
\begin_layout Standard
This is a fairly recent version of bsnes' performance core - the same one
used in Higan.
Some games - like Mega Man X2 and X3 - are broken with this version even
if you have the BIOS files placed in your System directory.
Some of the games requiring high accuracy won't run correctly either.
To make up for it, it has much better performance than the balanced or
accuracy cores.
\end_layout
\begin_layout Subsubsection
bsnes Balanced v0.92
\end_layout
\begin_layout Standard
This is a fairly recent version of bsnes' performance core - the same one
used in Higan.
It should play games like Mega Man X2/X3 with no problems.
It is much slower than bsnes performance but still a lot faster than bsnes
accuracy.
\end_layout
\begin_layout Subsubsection
bsnes Accuracy v0.92
\end_layout
\begin_layout Standard
This is a fairly recent version of bsnes' accuracy core - the same one used
in Higan.
This should be capable of playing all SNES games accurately at the cost
of performance.
\end_layout
\begin_layout Subsubsection
bsnes Performance C++98 v0.85
\end_layout
\begin_layout Standard
Later versions of bsnes are written in cutting-edge C++11 and cannot be
used on certain outdated compilers.
This port of bsnes to C++98 was written for those compilers in mind.
It is an older version of bsnes compared to the one in Higan but there
should only be minor differences between this and bsnes performance v0.92.
\end_layout
\begin_layout Subsection
Libretro port-specific additions
\end_layout
\begin_layout Subsubsection
Cartridge folders not enforced
\end_layout
\begin_layout Standard
Cartridge folders are not forced on you, and you are still able to load
SFC ROMs without having to go the Purify route.
\end_layout
\begin_layout Subsubsection
More pragmatic static syncing
\end_layout
\begin_layout Standard
Higan's way of static synchronization is for all intents and purposes like
RetroArch's, except ours is superior from an end-user point of view.
It does not require of the user that he has to dial a figurative knob for
hours on end to get the 'perfect refresh rate' of his monitor as a reference
clock for the emulator - instead, it only requires that the app refresh
rate you use is close enough to the refresh rate of your screen.
From there on, dynamic rate control picks up the slack for whenever audio
is running late, and combined with threaded video this allows highly demanding
and sync-heavy cores like bsnes to run tolerably even on a very high-latency
OS like Android.
\end_layout
\begin_layout Subsection
Known issues
\end_layout
\begin_layout Subsubsection
Mega Man X2/X3 don't run with bsnes performance core
\end_layout
\begin_layout Standard
This is a known issue and it's unlikely byuu is going to fix it for the
performance core.
You will have to use either Balanced or Accuracy core.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
Dinothawr
\end_layout
\begin_layout Standard
Dinothawr is an indie game made by one of RetroArch's lead authors.
It is a simple block puzzler that is similar in gameplay to Sokoban and
Kickle Kubicle.
It is the first game that is designed from the ground up as a core for
RetroArch.
The standalone version of this game has a cutdown version of RetroArch
included as an integral part of the app.
\end_layout
\begin_layout Subsection
How to run
\end_layout
\begin_layout Enumerate
Go to this website -
\begin_inset Flex URL
status open
\begin_layout Plain Layout
https://github.com/libretro/Dinothawr
\end_layout
\end_inset
and select 'Download to ZIP'.
\end_layout
\begin_layout Enumerate
Extract the ZIP file on your device.
\end_layout
\begin_layout Enumerate
Start up RetroArch.
Select 'Load Content' (either 'Load Content (Detect Core)' or plain 'Load
Content' will do).
\end_layout
\begin_layout Enumerate
Go to the directory where you extracted the contents of the ZIP file to
(see step 2).
\end_layout
\begin_layout Enumerate
Select 'dinothawr.game'.
The game should now start up.
\end_layout
\begin_layout Subsection
Controls
\end_layout
\begin_layout Subsubsection
RetroPad default mapping
\end_layout
\begin_layout Standard
These are the default button mappings on the RetroPad.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{B BUTTON}
\end_layout
\end_inset
- Push block
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{A BUTTON}
\end_layout
\end_inset
- Go back to previous menu
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{D-PAD}
\end_layout
\end_inset
- Movement
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
MAME 2003
\end_layout
\begin_layout Standard
This is a multi-system arcade emulator based on a late 2003 version of MAME
(to be specific, it's version 0.78).
This old ancient version has been picked because MAME has gotten drastically
slower over the years, and a version dating back to 2003 would still be
fast enough for running most games on previous-generation videogame consoles
and mobile.
\end_layout
\begin_layout Subsection
Libretro port-specific additions
\end_layout
\begin_layout Subsubsection
Midway DCS speed hacks re-addition
\end_layout
\begin_layout Standard
After version 0.72, MAMEdev removed various speedhacks for games using Midway
DCS which led to these games being rendered more or less unplayable on
current-day hardware (by 2003 standards) back then.
These speedhacks have been re-integrated into the MAME 0.78 codebase, and
they are of great benefit to the runtime performance of games like Mortal
Kombat 1/2/3/Ultimate, NBA Jam and other Midway games using this hardware.
\end_layout
\begin_layout Subsection
Notes
\end_layout
\begin_layout Itemize
You can bring up MAME's OSD GUI by pressing the R2 button on the RetroPad.
\end_layout
\begin_layout Itemize
MAME 2014 supports the RetroKeyboard as an input device as well.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
MAME 2010
\end_layout
\begin_layout Standard
This is a multi-system arcade emulator based on a late 2010 version of MAME
(to be specific, it's version 0.139).
This makes it competitive with MAME4Droid Reloaded which also targets this
codebase.
This halfway house between MAME 2003 and MAME 2014 is mainly intended for
more powerful mobile platforms that were released during 2012 to 2013.
While far slower than MAME 2003, it is still measurably faster than MAME
2014.
\end_layout
\begin_layout Standard
Compared to MAME 2003, MAME 2010 has a lot more content available.
For instance, Namco System 11/12 games can be played with full sound, Capcom
CPS3 support was added, Killer Instinct 1/2 are fully playable, Dynamic
recompilation support for 64bit got added, and more.
\end_layout
\begin_layout Subsection
Libretro port-specific additions
\end_layout
\begin_layout Subsubsection
Cave SH3 re-addition
\end_layout
\begin_layout Standard
The Cave SH3 drivers were removed at a specific point in time due to a legal
dispute between Cave and MAMEdev.
This driver has been readded to MAME 2010.
\end_layout
\begin_layout Subsection
Notes
\end_layout
\begin_layout Itemize
You can bring up MAME's OSD GUI by pressing the R2 button on the RetroPad.
\end_layout
\begin_layout Itemize
MAME 2014 supports the RetroKeyboard as an input device as well.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
MAME 2014
\end_layout
\begin_layout Standard
This is a multi-system arcade emulator based on the latest version of MAME
(as of this moment, 0.151).
Far slower than MAME 2003 and measurably slower than MAME 2010, it makes
up for this with increased game compatibility and feature completeness.
\end_layout
\begin_layout Subsection
Libretro port-specific additions
\end_layout
\begin_layout Subsubsection
Cave SH3 re-addition
\end_layout
\begin_layout Standard
The Cave SH3 drivers were removed at a specific point in time due to a legal
dispute between Cave and MAMEdev.
This driver has been readded to MAME 2014.
It will probably be readded soon to MAME mainline as well.
\end_layout
\begin_layout Subsection
Notes
\end_layout
\begin_layout Itemize
You can bring up MAME's OSD GUI by pressing the R2 button on the RetroPad.
\end_layout
\begin_layout Itemize
MAME 2014 supports the RetroKeyboard as an input device as well.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
Mupen64 Plus
\end_layout
\begin_layout Standard
This is a Nintendo 64 emulator based on the open-source emulator Mupen64
Plus.
It is a current work-in-progress that aims primarily at the PC and mobile
platforms, such as Android, iOS, Blackberry, and others.
It ships with three graphics plugins - of which Glide64 has been worked
on the most and is the most accurate, but also the slowest.
Development on the other two plugins will take more work.
\end_layout
\begin_layout Subsection
How to run
\end_layout
\begin_layout Standard
Mupen64 Plus does not work on its own, but runs N64 ROM images.
These image files need to have one of the following extensions:
\end_layout
\begin_layout Itemize
n64
\end_layout
\begin_layout Itemize
v64
\end_layout
\begin_layout Itemize
z64
\end_layout
\begin_layout Standard
Select one of these.
If the image is verified to be OK, it will start up the game.
\end_layout
\begin_layout Subsection
Controls
\end_layout
\begin_layout Subsubsection
RetroPad default mapping
\end_layout
\begin_layout Standard
These are the default button mappings on the RetroPad.
It is assumed that your RetroPad has two analog sticks so that the N64's
analog stick and the C buttons can be mapped to them.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{B BUTTON}
\end_layout
\end_inset
- (Normal press) N64 B button / (Press and hold with R2) C Button Down
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{A BUTTON}
\end_layout
\end_inset
- (Normal press) N64 A button / (Press and hold with R2) C Button Right
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Y BUTTON}
\end_layout
\end_inset
- (Press and hold with R2) C Button Left
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{X BUTTON}
\end_layout
\end_inset
- (Press and hold with R2) C Button Up
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{L BUTTON}
\end_layout
\end_inset
- N64 L Trigger
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R BUTTON}
\end_layout
\end_inset
- N64 R Trigger
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{L2 BUTTON}
\end_layout
\end_inset
- N64 Z Trigger
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R2 BUTTON}
\end_layout
\end_inset
- (Modifier button) - press and hold this plus one of the face buttons
to do C button presses
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{D-PAD}
\end_layout
\end_inset
- N64 D-Pad
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{SELECT}
\end_layout
\end_inset
- Toggle between per-game control layouts
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{START}
\end_layout
\end_inset
- N64 Start button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{LEFT STICK}
\end_layout
\end_inset
- N64 Analog stick
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{RIGHT STICK}
\end_layout
\end_inset
- N64 C buttons mapped to stick like the Gamecube's C Stick
\end_layout
\begin_layout Subsection
Libretro port-specific additions
\end_layout
\begin_layout Subsubsection
Plug-and-play configuration of games
\end_layout
\begin_layout Standard
N64 emulators are traditionally dependent on numerous config/database files
that the user has to manually update from time to time.
These database files contain core-specific settings needed to play the
game correctly (or at all).
This varies from Save Type to which Glide 64 settings should be enabled
to get the game to look correctly.
\end_layout
\begin_layout Standard
This libretro port tries to automate as much of that stuff as possible and
integrate it into the core.
No longer will you need to have a Mupen64plus.ini and an RDB database from
which all this information will get pulled.
\end_layout
\begin_layout Standard
The Glide64 config file which was previously a necessity has also been totally
integrated into the core - to the extent that even the microcode mappings
for each game are included.
So that config file is not needed any longer either.
\end_layout
\begin_layout Standard
Baking in the config files for glN64 and Rice will take some more time.
These have not been included as of yet.
\end_layout
\begin_layout Subsubsection
60fps framerates in nearly all games with specific core settings
\end_layout
\begin_layout Standard
There have been other N64 emulator forks that have advertised being able
to run games like GoldenEye 007 at 60fps.
Our approach is most like Project64's in which VI Rate gets increased from
the default (1500) to 2200.
\end_layout
\begin_layout Standard
Some games are framerate throttled so they can't ever reach 60fps - however,
even these games will benefit from setting VI Refresh to 2200 and Framerate
to 'fullspeed'.
You will notice that a lot of input latency and slowdown will be removed
under these settings.
\end_layout
\begin_layout Subsubsection
Targets OpenGL - both desktop and GLES
\end_layout
\begin_layout Standard
We are using the GLES2 branches of Glide64, Rice and glN64.
The libretro port of Mupen64plus targets OpenGL instead of spreading itself
thin between Direct3D and OpenGL.
We try to make sure that the code works for both desktop GL and GLES at
the same time.
\end_layout
\begin_layout Standard
We have also made a lot of optimizations/changes to these rasterizer codebases
so that they perform better on our target platforms.
We are not anyway near done with that though.
\end_layout
\begin_layout Subsubsection
Accuracy settings
\end_layout
\begin_layout Standard
Turning on all the knobs in a demanding graphics plugin like Glide64 can
lead to almost glitchless graphics, but it comes at a heavy performance
cost.
For this reason, 'accuracy' settings per graphics plugins are introduced
as core options.
If you care more about double the framerate instead of the current framebuffer
image being displayed on a wall billboard in Mario Kart 64, then you can
set the Accuracy slider to a less high setting, and vice versa.
\end_layout
\begin_layout Subsubsection
Incorporates low-level RSP next to High-Level RSP - cxd4
\end_layout
\begin_layout Standard
Certain games will have certain sound effects missing with the default high-leve
l RSP plugin, such as GoldenEye 007.
Others will simply sound wrong, such as PilotWings 64.
The low-level RSP accurately emulates these effects at a signficant performance
cost.
\end_layout
\begin_layout Standard
The plugin also handles certain graphics functions that the high-level RSP
is missing.
For instance, Resident Evil 2 requires that you use the low-level RSP plugin
in order for all the FMV movies and backgrounds to work.
\end_layout
\begin_layout Subsubsection
Preconfigured 'sane' controls for various targeted games
\end_layout
\begin_layout Standard
The N64 controller was not always the best pad for certain games, and having
to map them to the RetroPad clearly makes that very apparent.
We have remapped the controls in various games so that you can get a more
pleasant gameplay experience.
If you don't like this 'sanitized' control scheme, you can switch on-the-fly
between it and the default control scheme by pressing Select (a button
which was absent on the N64 pad - which is convenient for us since it gives
us an extra button on our RetroPad to do 'stuff' with).
\end_layout
\begin_layout Standard
A couple of examples - Killer Instinct Gold is now mapped like the SNES
Killer Instinct, Wipeout 64 is mapped like the PS1 Wipeout 2097, Mortal
Kombat Trilogy is mapped like Mortal Kombat on the SNES and PS1, Resident
Evil 2 is mapped like the PS1 version, and so on.
Since the RetroPad is a replica of the Dual Shock, remapping controls this
way just makes a lot more sense.
And if you don't want it, you can disable it anyway and/or remap to your
heart's content.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
Known resolvable issues
\end_layout
\begin_layout Subsubsection
Conker BFD and Perfect Dark crash with the low-level RSP plugin
\end_layout
\begin_layout Standard
Don't use the low-level RSP plugin with these games.
Instead, use the high-level RSP plugin.
\end_layout
\begin_layout Subsubsection
Resident Evil 2 doesn't work correctly with the high-level RSP plugin
\end_layout
\begin_layout Standard
You need to use the low-level RSP plugin for this game to work correctly.
\end_layout
\begin_layout Subsubsection
I can't use the Rice plugin
\end_layout
\begin_layout Standard
Make sure that a config file called RiceVideoLinux.ini has been placed in
your 'system' directory.
The libretro Mupen64plus core still depends on this file being there in
order to execute the Rice plugin.
\end_layout
\begin_layout Subsection
Known issues
\end_layout
\begin_layout Standard
Consider the Mupen64 core right now at an advanced alpha state.
Lots of issues are known about and will be looked at.
The most prominent ones we are aware of are listed below.
\end_layout
\begin_layout Subsubsection
iOS dynamic recompiler bugs
\end_layout
\begin_layout Standard
Right now the dynamic recompiler for iOS is not at parity with Android.
This means that certain games might either crash or freeze at certain points
due to bugs still lurking in the code.
One example of this is GoldenEye 007 crashing at startup.
We are working hard on resolving these remaining issues so that the iOS
port is at least equal to the Android port.
\end_layout
\begin_layout Subsubsection
Wobbling textures with Glide64 in certain games
\end_layout
\begin_layout Standard
Ground texture wobbling seems to occur in games like Super Mario 64, Star
Fox 64, F-Zero X and other games depending on how close the camera is to
the ground.
This seems to be an issue with Glide64 in general.
We will try to investigate this issue.
\end_layout
\begin_layout Subsubsection
GoldenEye 007 - Glide64 - frigate level - water surface disappearing vertices
\end_layout
\begin_layout Standard
You will be able to notice significant polygon breakup when first entering
this stage on the boat.
Vertices of the water surface appear black depending on the proximity of
the camera to the surface.
This, like 3.3.2, seems to be also an issue with Glide64 that we will have
to investigate.
\end_layout
\begin_layout Subsubsection
Broken framebuffer effects in glN64
\end_layout
\begin_layout Standard
This is a known issue and it will probably be trivial to hook this up.
\end_layout
\begin_layout Subsubsection
Other glN64/Rice issues
\end_layout
\begin_layout Standard
Most of the hard work has gone into Glide64 at this point so the glN64/Rice
side has not been actively worked on - though we intend to do so eventually.
\end_layout
\begin_layout Subsubsection
Tsumi to Batsu (Sin and Punishment) crashes either at startup or at exit
\end_layout
\begin_layout Standard
Known issue and currently no fix for it.
Will have to be debugged.
\end_layout
\begin_layout Subsubsection
Star Wars: Shadows of the Empire sometimes boots, sometimes crashes
\end_layout
\begin_layout Standard
This is a known issue, and there is currently no fix for it.
\end_layout
\begin_layout Subsubsection
Pokemon Puzzle League doesn't work
\end_layout
\begin_layout Standard
This is a known issueand there is currently no fix for it.
\end_layout
\begin_layout Subsubsection
Blast Corps - Crashes after Rare logo with dynarec on ARM devices
\end_layout
\begin_layout Standard
This is a known issue.
The very same issue happens with Mupen64 Plus AE too.
Currently, the only way to play this game on an ARM device would be to
switch the CPU core to 'Cached interpreter'.
This will however make the game run way too slow (possible exception being
Apple A7 CPUs and competing hardware).
\end_layout
\begin_layout Subsubsection
Perfect Dark is very slow in scenes with framebuffer effects or motion blur
\end_layout
\begin_layout Standard
This is a known issue.
The issue is that the only way to accelerate these scenes would be to use
Hardware Framebuffer Emulation, and that has drawbacks of its own such
as vertices with black textures after certain scenes have ran (such as
the Spycam).
For now there is no good fix for this other than doing it all on the CPU,
which is CPU-intensive and slow.
\end_layout
\begin_layout Subsubsection
Conker's BFD - Conker has no shadow
\end_layout
\begin_layout Standard
This is a known issue.
Shadows depend on a depth texture being rendered, and the only way to render
these is to use Hardware Framebuffer Emulation.
While we can enable this mode, it has severe drawbacks in other areas right
now that precludes its use.
Therefore, currently the shadow is stubbed out.
\end_layout
\begin_layout Subsubsection
PilotWings 64 - There is a very annoying long black vertice obscuring a
great part of the screen
\end_layout
\begin_layout Standard
This is a known issue, and it seems to happen with glN64 too and mainline
Mupen64 in general.
What is supposed to happen there is that a shadow on the ground should
be in place of these broken vertice spans.
A fix is not yet known.
There is a 'duct-tape hack' core setting that makes this 'glitch' somewhat
more bearable - it makes the culled vertice appear translucent instead
of solid - which means you can watch through it.
\end_layout
\begin_layout Subsubsection
Legend of Zelda: Majora's Mask - subscreen framebuffer image takes about
five seconds to appear
\end_layout
\begin_layout Standard
This is a known issue, and a fix is not yet known.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
NX Engine
\end_layout
\begin_layout Standard
This is a game engine capable of running the game
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Cave Story}
\end_layout
\end_inset
(Japanese title:
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Doukutsu Monogatari}
\end_layout
\end_inset
).
It is based on an open-source game engine recreation called NX Engine.
An extensive code rewrite has been done for the purposes of increased portabili
ty and performance.
\end_layout
\begin_layout Subsection
How to run
\end_layout
\begin_layout Standard
In order to run the game, you need to have the original datafiles from the
original freeware PC version.
\end_layout
\begin_layout Enumerate
Go to this website -
\begin_inset Flex URL
status open
\begin_layout Plain Layout
https://github.com/libretro/nxengine-libretro
\end_layout
\end_inset
and select 'Download to ZIP'.
\end_layout
\begin_layout Enumerate
Extract the ZIP file on your device.
\end_layout
\begin_layout Enumerate
Start up RetroArch.
Select 'Load Content' (either 'Load Content (Detect Core)' or plain 'Load
Content' will do).
\end_layout
\begin_layout Enumerate
Go to the directory where you extracted the contents of the ZIP file to
(see step 2).
Select the directory 'datafiles'.
\end_layout
\begin_layout Enumerate
Select 'Doukutsu.exe'.
The game should now start up.
\end_layout
\begin_layout Subsection
Controls
\end_layout
\begin_layout Subsubsection
RetroPad default mapping
\end_layout
\begin_layout Standard
These are the default button mappings on the RetroPad.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{B BUTTON}
\end_layout
\end_inset
- Jump
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Y BUTTON}
\end_layout
\end_inset
- Shoot
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{X BUTTON}
\end_layout
\end_inset
- Map screen
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{L BUTTON}
\end_layout
\end_inset
- Weapon cycle left
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R BUTTON}
\end_layout
\end_inset
- Weapon cycle right
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{D-PAD}
\end_layout
\end_inset
- Movement
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{SELECT}
\end_layout
\end_inset
- Options screen
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{START}
\end_layout
\end_inset
- Inventory screen
\end_layout
\begin_layout Subsection
Libretro port-specific additions
\end_layout
\begin_layout Subsubsection
Caches all assets - avoids disk I/O overhead
\end_layout
\begin_layout Standard
The original NXEngine source was quite inefficiently written and had very
high disk I/O overhead.
This all but killed performance on the game consoles where disk I/O is
very slow.
What happens instead now is that instead of dumping all content from the
main binary to disk, it caches it in memory so that there is zero overhead
from accessing assets.
This way, NXEngine is playable at fullspeed on any system without any disk
I/O spikes - including consoles.
\end_layout
\begin_layout Subsubsection
Ability to switch between 50fps (default) and 60fps
\end_layout
\begin_layout Standard
The original game ran at 50 frames per second.
For the libretro port, we have made an optional toggle so you can switch
the game to 60 frames per second.
You can do this by pressing the Select button to go to the Options screen,
and changing 'FPS' from 50 to 60, and vice versa.
\end_layout
\begin_layout Section
PCSX ReARMed
\end_layout
\begin_layout Standard
This is a Sony PlayStation 1 emulator based on the open-source emulator
PCSX Reloaded.
It has been specifically optimized for mobile platforms, such as Android,
iOS and Pandora.
It also has a software-rendered graphics renderer, called NEON GPU plugin,
that is more accurate than most PlayStation 1 emulators.
\end_layout
\begin_layout Subsection
How to run
\end_layout
\begin_layout Standard
PCSX ReARMed does not work on its own, but runs PlayStation1 CD images.
These image files need to have one of the following extensions:
\end_layout
\begin_layout Itemize
bin
\end_layout
\begin_layout Itemize
cue
\end_layout
\begin_layout Itemize
img
\end_layout
\begin_layout Itemize
mdf
\end_layout
\begin_layout Itemize
pbp
\end_layout
\begin_layout Itemize
toc
\end_layout
\begin_layout Itemize
cbn
\end_layout
\begin_layout Itemize
m3u
\end_layout
\begin_layout Standard
Select one of these.
If the image is verified to be OK,it will start up the game.
\end_layout
\begin_layout Subsection
Controls
\end_layout
\begin_layout Subsubsection
RetroPad default mapping
\end_layout
\begin_layout Standard
These are the default button mappings on the RetroPad.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{B BUTTON}
\end_layout
\end_inset
- PS1 X button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{A BUTTON}
\end_layout
\end_inset
- PS1 Circle button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Y BUTTON}
\end_layout
\end_inset
- PS1 Square button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{X BUTTON}
\end_layout
\end_inset
- PS1 Triangle button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{L BUTTON}
\end_layout
\end_inset
- PS1 L1 Button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R BUTTON}
\end_layout
\end_inset
- PS1 R1 Button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{L2 BUTTON}
\end_layout
\end_inset
- PS1 L2 Button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R2 BUTTON}
\end_layout
\end_inset
- PS1 R2 Button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{D-PAD}
\end_layout
\end_inset
- PS1 D-Pad
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{SELECT}
\end_layout
\end_inset
- PS1 Select button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{START}
\end_layout
\end_inset
- PS1 Start button
\end_layout
\begin_layout Subsubsection
RetroPad DualShock controls
\end_layout
\begin_layout Standard
To enable this mode, you need to go to Core Options and set 'Pad 1 Type'
to 'analog'.
Your RetroPad is assumed to have two analog sticks to be able to use this
mode.
Note that not all games might work in DualShock mode, and vice versa -
so switch between them if the controls don't work.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{LEFT STICK}
\end_layout
\end_inset
- PS1 Left Analog Stick
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{RIGHT STICK}
\end_layout
\end_inset
- PS1 Right Analog Stick
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{L3}
\end_layout
\end_inset
- PS1 L3 Button
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R3}
\end_layout
\end_inset
- PS1 R3 Button
\end_layout
\begin_layout Subsection
Setting up BIOS files
\end_layout
\begin_layout Standard
The compatibility of PCSX ReARMed is increased a lot by using real BIOS
firmware images.
\end_layout
\begin_layout Standard
PCSX ReARMed looks for the following BIOS files:
\end_layout
\begin_layout Itemize
scph1001.bin
\end_layout
\begin_layout Itemize
scph5501.bin
\end_layout
\begin_layout Itemize
scph7001.bin
\end_layout
\begin_layout Standard
These files should be placed inside your System directory.
If your system directory path does not point to anything, it will try to
load the BIOS files from the same directory as the CD image.
\end_layout
\begin_layout Subsection
Core options
\end_layout
\begin_layout Subsubsection
Increasing graphics resolution
\end_layout
\begin_layout Standard
You can increase the internal graphics resolution by enabling the core option
'Enable NEON enhanced resolution (slow)' This will force the core to render
at a resolution of 1024x512
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
This mode is deactivated on games that have high-resolution interlaced graphics
modes, such as Tekken 3 and Tobal 2.
Setting this option to 'ON' or 'OFF' will make no change.
\end_layout
\end_inset
.
This will significantly increase the quality of the graphics, but it will
also impact performance.
Only enable this option if you are on a fast platform with enough CPU power
- otherwise you're best off leaving this core option 'off'.
\end_layout
\begin_layout Subsubsection
Disabling interlacing for better performance with interlaced games
\end_layout
\begin_layout Standard
High-resolution interlaced games such as Tekken 3 and Tobal 2 would typically
be displayed in interlaced mode on a real PlayStation.
The emulator typically renders these games with interlacing turned off.
This however will have an impact on performance.
If you find that your platform for whatever reason is falling below fullspeed,
it can help to set the core option 'Interlacing' to 'ON'.
\end_layout
\begin_layout Subsubsection
Disabling dynarec for platforms that don't support JIT compilation (Windows
Phone/RT, non-jailbroken iOS)
\end_layout
\begin_layout Standard
Normally, PCSX ReARMed starts up with the dynarec CPU core being automatically
activated.
\end_layout
\begin_layout Standard
There are some platforms that don't allow for JIT compilation inside an
app (which is what the dynarec CPU core relies upon).
These include:
\end_layout
\begin_layout Itemize
Non-jailbroken iOS
\end_layout
\begin_layout Itemize
Windows RT
\end_layout
\begin_layout Itemize
Windows Phone
\end_layout
\begin_layout Standard
You will need to disable the core option 'Dynarec' if you want to be able
to run this core on such a device.
Be aware that disabling the dynarec is very CPU-intensive and might result
in PCSX ReARMed not being able to run fullspeed on yur device.
Disable dynarec therefore only if you absolutely must.
\end_layout
\begin_layout Subsection
Known outstanding issues
\end_layout
\begin_layout Subsubsection
Garbled sound samples at times
\end_layout
\begin_layout Standard
Sound emulation is not perfect.
At some point we intend to backport the latest sound driver from PCSX Reloaded
and offer a way to toggle between the original driver and the latest PCSXR
one.
The original PCSX ReARMed version was geared around the Pandora, which
is limited by a 1Ghz Cortex A8 CPU - concessions had to be made.
Today's mobile devices are far more powerful than this and should be capable
of much more demanding sound emulation.
\end_layout
\begin_layout Subsubsection
Broken geometry in Jumping Flash 1/2
\end_layout
\begin_layout Standard
This is caused by an inaccurate Geometry Transfer Engine plugin used in
PCSX ReARMed.
A core option will probably have to be included at some point that allows
the user to switch between inaccurate/fast GTE and accurate GTE emulation.
\end_layout
\begin_layout Subsubsection
Random game does not work
\end_layout
\begin_layout Standard
First of all, check that you are running with a real BIOS image.
You can tell if this is the case if PCSX ReARMed does not display a warning
at startup telling you that it could not find a BIOS file.
The internal HLE BIOS emulation is very incomplete and might cause many
games to be buggy.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\begin_layout Section
TyrQuake
\end_layout
\begin_layout Standard
This is a Quake 1 game engine based on the open-source Quake 1 game engine
TyrQuake.
Unlike other Quake 1-based game engines, it focuses on accuracy to the
original DOS game and portability.
As such, it features no graphical enhancements and the renderer is software-bas
ed.
\end_layout
\begin_layout Subsection
How to run
\end_layout
\begin_layout Standard
TyrQuake does not work on its own, but runs Quake 1 PAK data archives.
\end_layout
\begin_layout Standard
Select either pak0.pak or pak1.pak from the shareware version or the registered
version.
If the files are OK, it will start up the game.
\end_layout
\begin_layout Subsection
How to run mission packs
\end_layout
\begin_layout Standard
It is also possible to run mission packs with TyrQuake.
\end_layout
\begin_layout Standard
Place the necessary files in subdirs hipnotic/ and rogue/.
Make sure the original Quake 1 datafiles are in the root directory.
\end_layout
\begin_layout Standard
Start pak0.pak from the hipnotic/rogue directory.
Instead of launching the original game, it should now start the mission
pack.
\end_layout
\begin_layout Subsection
Controls
\end_layout
\begin_layout Subsubsection
RetroPad default mapping
\end_layout
\begin_layout Standard
These are the default button mappings on the RetroPad.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{Y BUTTON}
\end_layout
\end_inset
- Shoot
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{B BUTTON}
\end_layout
\end_inset
- Jump
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{A BUTTON}
\end_layout
\end_inset
- Weapon cycle
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{X BUTTON}
\end_layout
\end_inset
- (Press and hold) free look
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{L BUTTON}
\end_layout
\end_inset
- Strafe left
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R BUTTON}
\end_layout
\end_inset
- Strafe right
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{D-PAD}
\end_layout
\end_inset
- Movement
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{START}
\end_layout
\end_inset
- Bring up Options Menu
\end_layout
\begin_layout Subsubsection
RetroPad Dual analog controls
\end_layout
\begin_layout Standard
To enable this mode, you need to go to Core Options and set Gamepad type
to 'dual-analog'.
Your RetroPad is assumed to have two analog sticks to be able to use this
mode.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{LEFT STICK}
\end_layout
\end_inset
- X minus and positive X strafes left and right, Y minus and positive Y
moves forward and backwards
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{RIGHT STICK}
\end_layout
\end_inset
- Free look
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
textbf{R3}
\end_layout
\end_inset
- Center view
\end_layout
\begin_layout Subsection
Libretro port-specific additions
\end_layout
\begin_layout Subsubsection
Enabling/disabling software bilinear interpolation
\end_layout
\begin_layout Standard
The original Quake software renderer had no filtering routines to speak
of for textures.
Textures would appear pixelated if you came close to them.
Enabling this (from the Quake settings menu) will apply the kernel filtering
algorithm from Unreal 1's software renderer on each texture.
This might look more aesthetically pleasing to people who prefer quasi-3D
hardware bilinear filtered textures to nearest textures.
Enabling this might come at a negligible performance cost.
\end_layout
\begin_layout Subsubsection
Enabling/disabling mipmapping
\end_layout
\begin_layout Standard
Normally, Quake's software renderer has this always enabled.
Objects in the distance will use lower-quality texture assets than the
ones closer to the player.
Disabling this (from the Quake settings menu) will render each object with
the most high-quality texture available, no matter what the distance is
to the player.
Enabling this will come at a big performance cost - so only enable it if
your platform is powerful enough.
\end_layout
\begin_layout Subsubsection
Enabling/disabling animation interpolation
\end_layout
\begin_layout Standard
By default the game updates animations of its 3D models at a very sluggish
rate - 11 frames per second approximately.
Enabling this option (from the Quake settings menu) allows you to enable
frame interpolation so that the movements of monsters will appear much
smoother.
Enabling this might come at a negligible performance cost.
\end_layout
\begin_layout Subsubsection
Enabling/disabling third person view
\end_layout
\begin_layout Standard
By default, Quake is played from a first person perspective.
Enabling this option (from the Quake settings menu) allows you to play
Quake from a third person perspective.
There are two camera modes to choose from - 'Clamped' and 'Clipped'.
'Clamped' will not allow the camera to pass through walls and it will try
to prevent showing you any of the empty 'clip space' that exists beyond
the game world.
When this 'clamping' happens, the camera will zoom in to your player.
Setting it to 'Clipped' does not bound the camera to the game world and
does not zoom in on the player - instead, it will simply show the empty
clip space that exists beyond the game world.
It is up to user preference which of the two he/she prefers.
\end_layout
\begin_layout Subsubsection
Setting framerate to 50 or 60fps
\end_layout
\begin_layout Standard
The original Quake never ran at a fixed framerate, and it took quite a few
years for PCs to even reach the state where they were able to run Quake
at 50 or 60fps.
Libretro TyrQuake assumes that you will want to run Quake at either a constant
50 or 60 frames per second.
You can set the framerate to either 50fps or 60fps from the Quake settings
menu.
\end_layout
\begin_layout Subsection
Core options
\end_layout
\begin_layout Subsubsection
Increasing graphics resolution
\end_layout
\begin_layout Standard
Because Quake is using software rendered graphics and because the original
sourcecode to Quake 1 had hand-tuned assembly routines for 486/early Pentium
1 CPUs (routines which can't be used on today's PCs), it might come as
a surprise that TyrQuake still demands high system requirements in order
to run it above the default resolution (320x200).
\end_layout
\begin_layout Standard
By increasing the internal resolution with the core option 'Internal resolution'
, the graphical quality of the game can be significantly enhanced at the
expense of speed.
After each internal resolution change, you will need to restart the TyrQuake
core in order for the changes to be applied.
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
newpage
\end_layout
\end_inset
\end_layout
\end_body
\end_document