diff --git a/site/docs/install/playstation.md b/site/docs/install/playstation.md index 452709a..c9c14e6 100644 --- a/site/docs/install/playstation.md +++ b/site/docs/install/playstation.md @@ -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: -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:\ +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 ======