mirror of
https://codeberg.org/canoeboot/cbwww.git
synced 2024-11-22 10:24:44 +00:00
8030db9dd1
Signed-off-by: Leah Rowe <info@minifree.org>
273 lines
12 KiB
Markdown
273 lines
12 KiB
Markdown
---
|
|
title: Sony PlayStation (PS1/PSX)
|
|
x-toc-enable: true
|
|
...
|
|
|
|
The PlayStation is a computer like any other. It ought to run all Free Software
|
|
if you want it to, and you can!
|
|
|
|
<div class="specs">
|
|
<center>
|
|
<img tabindex=1 alt="Sony PlayStation (PSOne) console" class="p" src="https://av.canoeboot.org/playstation/psone.jpg" /><span class="f"><img src="https://av.canoeboot.org/playstation/psone.jpg" /></span>
|
|
<img tabindex=1 alt="PCSX-Redux Open BIOS" class="p" src="https://av.canoeboot.org/playstation/openbios.png" /><span class="f"><img src="https://av.canoeboot.org/playstation/openbios.png" /></span>
|
|
</center>
|
|
|
|
| ***Specifications*** | |
|
|
|----------------------------|------------------------------------------------|
|
|
| **Manufacturer** | Sony Computer Entertainment Inc. |
|
|
| **Name** | PlayStation |
|
|
| **Variants** | PlayStation, PSOne, Net Yaroze |
|
|
| **Released** | 1994 (Japan), 1995 (Worldwide) |
|
|
| **CPU** | MIPS R3000 @ 33.8688 MHz |
|
|
| **Graphics** | Custom 3D processor by Toshiba, 1MB Video RAM |
|
|
| **Sound** | 16-bit custom Sony SPU |
|
|
| **I/O** | CD-ROM, analog Audio/Video, Serial, Parallel |
|
|
| **Memory** | 2MB EDO DRAM |
|
|
| **Architecture** | MIPS I instruction set (RISC) |
|
|
| **Original boot firmware** | Sony PS1 BIOS (USA/JPN/EU) |
|
|
| **Flash chip** | 512KB Mask ROM |
|
|
</div>
|
|
Introduction
|
|
============
|
|
|
|
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>
|
|
|
|
Build from source
|
|
-----------------
|
|
|
|
Canoeboot's build system provides automation for this. Please use the latest cbmk
|
|
revision [from Git](../../git.md).
|
|
|
|
First, please make sure you have build dependencies. The build logic in cbmk
|
|
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 cbmk:
|
|
|
|
./mk -b pcsx-redux
|
|
|
|
This commonly only builds the BIOS part. If you want to build all of PCSX-Redux,
|
|
you can, but cbmk does not provide automation for this.
|
|
|
|
Installation
|
|
============
|
|
|
|
If all went well, you should see `openbios.bin` located
|
|
under the `bin/playstation/` (within cbmk). Alternatively, you may be using
|
|
a release *after* Canoeboot 20240612 that has it pre-built. Either way is fine.
|
|
|
|
The `openbios.bin` file is your new BIOS build.
|
|
|
|
Emulators
|
|
---------
|
|
|
|
Most PlayStation emulators rely on low-level emulation to execute the real BIOS.
|
|
The Open BIOS by PCSX-Redux (as distributed by Canoeboot) can also be used, and
|
|
boots many commercial games, plus homebrew.
|
|
|
|
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 Canoeboot 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; 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
|
|
==================
|
|
|
|
The upstream maintains a compatibility list, here:
|
|
|
|
<https://docs.google.com/spreadsheets/d/1UNGs7uYb8viAbm7YJaf1CR4dkgX7ZzntUdcowGsjcVc/edit?pli=1&gid=772799649#gid=772799649>
|
|
|
|
NOTE: Google Docs, but an option exists on there to export it for LibreOffice
|
|
Calc. The list is provided as a spreadsheet.
|
|
|
|
Remarks about hardware
|
|
====================
|
|
|
|
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).
|
|
|
|
Look here:
|
|
<https://oshpark.com/profiles/mi213>
|
|
|
|
This person has designed PCBs that can be used to add a NOR flash, adapting to
|
|
the pinout of the playstation BIOS. Some early launch model PlayStations used
|
|
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-pin boards.
|
|
|
|
For most boards, the one you want is probably the `PS1_Flash_Bios_(A)` one.
|
|
|
|
We do not yet provide instructions for how to install this on real hardware, in
|
|
the Canoeboot project, but this can be done at a future date.
|
|
|
|
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
|
|
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. 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.
|
|
|
|
The PAL GPU clock is roughly 53.2MHz, and divides by 12 to create the 4.43MHz PAL
|
|
subcarrier/colorburst signal; this is needed in composite video for example.
|
|
|
|
The NTSC GPU clock is 53.693175MHz, and divides by 15 to create the 3.58MHz NTSC
|
|
subcarrier/colorburst signal; ditto, this is used for NTSC composite video.
|
|
|
|
On a PAL playstation, Sony hardwired 53.2MHz to both inputs, and on NTSC, wired
|
|
53.69MHz to both inputs; that means on NTSC machines, PAL games will run with
|
|
a 3.579545MHz colorburst signal, and on PAL consoles running NTSC games,
|
|
the colorburst would be 3.55MHz. *Some* people suggest hardwiring a 4.43MHz
|
|
clock to the video dac/buffer on PAL consoles, thus creating what is called
|
|
a "PAL60" signal, but this is ill advised; ditto wiring 3.58MHz to it (NTSC50).
|
|
|
|
On *most* consoles except very early launch/debug models, and *very late* slim
|
|
models, the PAL clock is pin 192 on the GPU and NTSC is pin 196 on the GPU.
|
|
The Dual Frequency Oscillator mod uses a programmable oscillator and taps into
|
|
the video mode signal off of the GPU to know whether PAL/NTSC is used; it
|
|
switches the master clock hooked up to both inputs accordingly.
|
|
|
|
Another method is to *cut* the line going to the NTSC pin on a PAL console,
|
|
and wire a 53.69MHz oscillator (at 3.3V, with the output through a 220Ohm
|
|
resistor) directly to the pin; on an NTSC console, do the same but cut 192
|
|
and hook up 53.2MHz to it. The Dual Frequency Oscillator method is easier and
|
|
therefore recommend, but you can do this other method, which I call *DO* (Dual
|
|
Oscillator. Because it's two oscillators!)
|
|
|
|
By fixing the timings in this way, your region-free console will also have
|
|
correct timings, thus maximum game compatibility, and colours will always be
|
|
correct no matter what video cable you're using.
|
|
|
|
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
|
|
PIC chips e.g. PIC12C508A. A special *OneChip* firmware is often used on PAL
|
|
PSOne Slims.
|
|
|
|
There is a *free/opensource* modchip type called PsNee, which is what Canoeboot
|
|
recommends:
|
|
<https://github.com/kalymos/PsNee>
|
|
|
|
Unlike the other modchips, PsNee runs mostly on Arduino-type boards. You can
|
|
find more info on its GitHub page.
|
|
|
|
Although not yet tested by Canoeboot, 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.
|
|
|
|
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 Canoeboot 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, 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
|
|
also PSXSDK (which is also free/opensource) allowing for libre game
|
|
development, also known (somewhat ambiguously) as "homebrew" development. The
|
|
fact that these old consoles were designed to boot proprietary games is mere
|
|
coincidence; they are
|
|
simply computers, fully reprogrammable and as such, Canoeboot is happy to provide
|
|
this support, for the Sony PlayStation
|
|
|
|
Credit
|
|
======
|
|
|
|
Thanks go to the PCSX-Redux team for their excellent work reverse engineering
|
|
the Sony PS1 BIOS.
|
|
|
|
The two photos shown are as follows:
|
|
|
|
* PSOne Slim photo was taken from here (the one provided by Canoeboot is
|
|
scaled down and cropped, with color levels enhanced for better contrast):
|
|
<https://commons.wikimedia.org/wiki/File:PS_One_with_LCD.JPG> -
|
|
released under the terms of Creative Commons Attribution-Share Alike 3.0 Unported license
|
|
* The cube screenshot is of the PCSX-Redux Open BIOS in operation, on an emulator.
|
|
|
|
PlayStation, PS1, PSOne and other terms are the trademark of Sony Interactive
|
|
Entertainment. Canoeboot is in no way affiliated to Sony Interactive
|
|
Entertainment; this page is not an endorsement of Sony Interactive Entertainment,
|
|
nor do they endorse Canoeboot.
|
|
|
|
PCSX-Redux developers are not affiliated with Canoeboot in any way. We simply
|
|
integrate their Open BIOS into Canoeboot because their work is awesome.
|