tidy up the playstation page

Signed-off-by: Leah Rowe <info@minifree.org>
master
Leah Rowe 2024-09-26 11:57:31 +01:00
parent 8342c2e829
commit d799f23069
1 changed files with 99 additions and 79 deletions

View File

@ -30,36 +30,51 @@ if you want it to, and you can!
Introduction
============
**Unavailable in Libreboot 20240612 or earlier. You must compile from source;
first, check the [main build guide source](../build/) to get dependencies.**
You can use the following command in lbmk (on Linux) to build the BIOS:
./mk -b pcsx-redux
This command only compiles the BIOS code found in `src/mips/openbios/`, of
PCSX-Redux, which is downloaded to `src/pcsx-redux/`, so the BIOS source code
in full would be located at `src/pcsx-redux/src/mips/openbios` within lbmk.
You will then find the BIOS image under `bin/playstation/openbios.bin`. This
can be used on PlayStation emulators, and it can also be used on the real
hardware. It has a relatively [high
compatibility](https://docs.google.com/spreadsheets/d/1UNGs7uYb8viAbm7YJaf1CR4dkgX7ZzntUdcowGsjcVc/edit?pli=1&gid=772799649#gid=772799649) according to the developers.
This uses the free/opensource BIOS developed by the PCSX-Redux team, which you
can learn more about here:
<https://github.com/grumpycoders/pcsx-redux/tree/main/src/mips/openbios>
NOTE: As of 26 September 2024, lbmk for PlayStation has only been build-tested
on Debian 12 (x86\_64). The build dependencies script provides a `mipsel` cross
compiler; otherwise, PCSX-Redux's page has general instructions for how to get
a compatible toolchain:\
Build from source
-----------------
Pre-compiled builds will be in the next Libreboot release, after
version 20240612. For now, you must compile it from source, but the Libreboot
build system provides automation for this. Please use the latest lbmk
revision [from Git](../../git.md).
First, please make sure you have build dependencies. The build logic in lbmk
has been tested on Debian 12 (x86\_64) and you can do this for example, as root:
./mk dependencies debian
The `arch` and `parabola` dependencies should also work nicely, if you want
to replace `debian` with one of those in the above example; you need to get the
cross compiler (mipsel one) from the AUR, which you will see when running e.g.:
./mk dependencies arch
If you have another distro, or you're unsure, the PCSX-Redux project also
provide generic instructions for other distros. Please see:\
<https://github.com/grumpycoders/pcsx-redux/blob/main/src/mips/psyqo/GETTING_STARTED.md>
When you have the dependencies, including mipsel cross toolchain, you can
just do this in lbmk:
./mk -b pcsx-redux
This commonly only builds the BIOS part. If you want to build all of PCSX-Redux,
you can, but lbmk does not provide automation for this.
Installation
============
If all went well, you should see `openbios.bin` located
under the `bin/playstation/` (within lbmk). Alternatively, you may be using
a release *after* Libreboot 20240612 that has it pre-built. Either way is fine.
The `openbios.bin` file is your new BIOS build.
Emulators
---------
@ -71,14 +86,34 @@ These emulators can boot many commercial games, with varying degrees of
compatibility, and they can also boot any homebrew/opensource games that you
might develop yourself, or that others have written.
Simply load your `openbios.bin` file into the emulator, using the instructions
provided with your chosen PlayStation emulator. You can even freely
redistribute this BIOS, because it's free software (released under MIT license),
which is a major advantage over Sony's original BIOS.
Hardware
--------
Not yet tested by the Libreboot project, but the PCSX-Redux developers have
stated that it will work on the real console. It should be noted that the Open
BIOS does not seem to implement a memory card save handler at present. If
someone can recommend a boot disc that could replace this, that'd be nice;
otherwise, read on.
stated that it will work on the real console. *It should be noted that the Open
BIOS does not seem to implement a memory card save handler at present; you can
save and load games, in-game, but there is no built-in program for copying
and deleting saves between memory cards.* From reading the documentation, it
seems that this is essentially a very well-engineered proof of concept that
happens to boot a majority of games; some polishing is still needed to make this
really useful on a real machine.
The main usefulness of the Open BIOS is that it's under an MIT license, and
therefore legal to distribute; anyone wishing to use an emulator can use a
compiled copy of the Open BIOS, and distribute it freely without trouble.
You also do not get to listen to music CDs. The quirk with memory cards is
easily mitigated in an *emulator*, because you can simply create different
memory card images for each game you play.
It would be nice if a memory card manager program were available, to make this
BIOS much more polished, but a number of games have been tested and it's more
or less fully reliable in most cases.
Game compatibility
==================
@ -90,25 +125,9 @@ The upstream maintains a compatibility list, here:
NOTE: Google Docs, but an option exists on there to export it for LibreOffice
Calc. The list is provided as a spreadsheet.
Memory card handling
Remarks about hardware
====================
Basically, the Open BIOS from PCSX-Redux does not yet support handling the
memory cards. The game compatibility is also not complete, though it is
excellent. Therefore, you might consider a *dual BIOS* setup - and this has
not been tested, but should work just fine (it will be tested at a later date).
Using it on hardware
====================
The dual BIOS works like so: manipulate the OE/chip select pins on the BIOS
chip (original one), between that and the one on the replacement chip. You
would have both chips present, one of them containing your Open BIOS. You would
control the OE/CS pins via a toggle switch. When the switch is set one way, it
boots the original Sony BIOS, and the other position boots the Open BIOS. You
would take care not to switch it while the machine is in operation, but it could
be set before turning the machine on.
Modern NOR flash can be used. You specifically want a TSOP-32 SMD/SMT type device,
one that operates at 3.3v (tolerance 2.7 to 3.6v), organised into 512KB blocks,
for example 512KB x8 is a common part, for example [SST39VF040](https://eu.mouser.com/ProductDetail/Microchip-Technology/SST39VF040-70-4C-WHE?qs=I6DYTe5pEPUDs7BrdNtR9w%3D%3D).
@ -122,34 +141,20 @@ a 40-pin chip but most later ones soon after and to end of life were 32-pin.
This page only sells adapters for use with 32-bit boards.
For most boards, the one you want is probably the `PS1_Flash_Bios_(A)` one.
You must flash the chip first, before soldering it onto this adapter board.
You can then de-solder the BIOS chip; look for a 512K mask ROM on the board.
Make sure the adapter is soldered properly, and solder it into place. You can
find some videos online for how to do this. Libreboot cannot verify the quality
of all of them and may provide such guidance itself in the future.
We do not yet provide instructions for how to install this on real hardware, in
the Libreboot project, but this can be done at a future date.
**Do not** assume that the dual-BIOS idea will even work, because to our
knowledge, it has not been tested. It is highly theoretical at this point, and
recommended (assuming it would work) instead of simply replacing the original
BIOS outright. Even if game compatibility were 100%, it helps to have a backup
solution in case of bugs.
There are a few edge cases: PsNee (referenced below) might not work well on
some Japanese playstations, or PAL PSOne Slim, due to extra restrictions in
the Sony BIOS; therefore, if doing Dual BIOS, it might be wise to use two of
those adapter PCBs stacked, using the same OE/CE switch idea. On the one
containing Sony BIOS, you might use a dump for US NTSC console for example, if
setting it up on a PAL PSOne or Japanese console. Japanese consoles otherwise
have additional region checks at startup, and PAL PSOne slims check what video
mode a game starts in.
This page may or may not be updated at some point, to document installation on
real hardware. For now, the Open BIOS is only intended for use with emulators.
Other mods (hardware)
===============
Video timings
-------------
The Open BIOS will not implement any DRM, so it's possible that you might boot
out of region games. In an emulator, this is no problem, but it can prove
difficult on hardware in a number of situations.
The purpose of these kinds of mods *on hardware* is typically that the user
wants to remove all DRM. Well, there's something many people overlook: video
timings out-of-region are often wrong on these machines. The GPUs have two
@ -157,10 +162,15 @@ clock inputs (early launch models only have one clock input): one for PAL and
one for NTSC. More info could be written here at a later date but these consoles
typically don't have a PAL GPU clock on NTSC consoles, and vice versa. You can
correct this.
Look up the PS1 "dual frequency oscillator" mod.
Other mods
==========
Look up the PS1 "dual frequency oscillator" mod. Without this mod, NTSC games
will run slightly slower than they should and have the wrong colours, when booted
on PAL consoles (and vice versa); RGB SCART can be used to mitigate the colour
issue, but not the timing issue. The oscillator mod is the only solution for the
timing issue.
Modchips
--------
If using hardware, you will probably still want a modchip. Many proprietary
modchip firmwares exist, such as Old crow, MultiMode3 and Mayumi; these run on
@ -174,19 +184,34 @@ recommends:
Unlike the other modchips, PsNee runs mostly on Arduino-type boards. You can
find more info on its GitHub page.
The way copy protection works on a playstation is: the commercial discs have
a special wobble in them, that can't be reproduced on consumer hardware. This
wobble encodes region data for the disc, and it's checked for by the CD controller;
if no wobble is present, or the region is incorrect, the disc stops booting,
though it will still play music CDs regardless (in the Sony BIOS).
Although not yet tested by Libreboot, it might be possible to have both the
Sony BIOS and Open BIOS, by stacking them on top of each other, soldered pin
for pin but leaving the OE/CS pins floating; then, wire up a switch that turns
one chip or the other off, so that you can pick which BIOS you want at boot.
This might be useful, in case you run into any compatibility issues with the
Open BIOS.
The Open BIOS will contain no restrictions whatsoever, but you are still advised
to have a modchip.
A modchip is still desirable, to mitigate copy and region protection in the
original BIOS; it may still be required when using the Open BIOS, but this has
not yet been confirmed by the Libreboot project.
More hardware testing is planned, but the Open BIOS works perfectly in emulators.
Give it a try!
Boot games on SD cards
-----------------------
The [PicoStation](https://github.com/paulocode/picostation) project provides
free firmware for RP2040 devices, which you can solder into a modboard which
then emulates the PS1 CD drive. It then lets you boot software (including
many games) from an SD card instead of a CD, using disc image files.
many games) from an SD card instead of a CD, using disc image files, on a
real playstation (the picostation replaces your CD drive).
Not only is this useful in a development context, but it can also be used when
your CD drive has worn out and no longer reads discs properly.
Final remarks
-------------
Combined with PsNee and PicoStation, the Open BIOS from PCSX-Redux team will
turn your 90s PlayStation into a very hackable machine. There is
@ -197,11 +222,6 @@ coincidence; they are
simply computers, fully reprogrammable and as such, Libreboot is happy to provide
this support, for the Sony PlayStation
This page is very new, as of 26 September 2024, because the PS1 Open BIOS was
only added on this day (26 September). It'll be fleshed out over time, especially
to talk about hardware. The Open BIOS does boot a lot of software, but it is
mostly only recommended for use in emulators at this time.
Credit
======