parent
8342c2e829
commit
d799f23069
|
@ -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
|
||||
======
|
||||
|
||||
|
|
Loading…
Reference in New Issue