Editing Bios

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
== Content ==
===Content===


Here is an overview of what is contained in a PS2 ROM (including TOOL, DESR/PSX, ps2emu/ps2gxemu/ps2softemu (PS3), System 246 and System 256).
Here is an overview of what is contained in a PS2 ROM (including TOOL, DESR/PSX, ps2emu/ps2gxemu/ps2softemu (PS3), System 246 and System 256).
Line 692: Line 692:
Description source: https://gist.github.com/uyjulian/25291080f083987d3f3c134f593483c5
Description source: https://gist.github.com/uyjulian/25291080f083987d3f3c134f593483c5


== Boot Process ==
===Known Issues===
Since ROM is mapped for both IOP and EE reset vectors at the same address (0xBFC00000), Sony implements cpu detection based on PRid COP0 register value. First thing executed by either IOP or EE is MFC0 fetching PRid and performing check if ID is 0x58 or lower, if true, r3000 code will run (branch to 0xBFC02000), otherwise r5900 code is executed (branch to 0xBFC00800). From there both cpus perform respective tasks with code compatible to cpu architecture they run already. IOP code performs few tasks like clearing caches and setting up them depending on if it is PS1/PS2 mode. Now checks 0xBF801450 bit 3 again for PS1/PS2 mode detection, and search in ROM for either IOPBOOT or TBIN and jump to execution of one of those files. TBIN is real PS1 rom, and from time when it is executed r3000 side acts like PS1 CPU. Worth to note that r3000 side of PS2 ROM perform additional check for PRid 0x0F or lower (real PS1) and jumps to TBIN without 0xBF801450 bit 3 PS1/PS2 mode detection. Which suggest that if we flash first 512KB of PS2 rom into PS1, hardware should be functional to at least run games.
*PS1 mode FlushCache (A0:44) is altered comparing to one from PS1 bios. New version disables DMA by zero write to DCPR for the time when function run. This isn't issue per se, but to do that function use registers t5 and t6. While temp registers should be preserved by caller if needed, there is at least 1 game that rely on them to stay intact after returning from FlushCache. Mortal Kombat Trilogy (NTSC-U). This affect every PS2 model, also PS3 emulators since they use stripped PS2 bios to run PS1 games. Solution: On PS2 patch game image, on PS3 either patch game image or bios itself.
 
== Known Issues ==
=== Flush Cache t5/t6 corruption ===
PS1 mode FlushCache (A0:44) is altered comparing to one from PS1 bios. New version disables DMA by zero write to DCPR for the time when function run. This isn't issue per se, but to do that function use registers t5 and t6. While temp registers should be preserved by caller if needed, there is at least 1 game that rely on them to stay intact after returning from FlushCache. Mortal Kombat Trilogy (NTSC-U). This affect every PS2 model, also PS3 emulators since they use stripped PS2 bios to run PS1 games. Solution: On PS2 patch game image, on PS3 either patch game image or bios itself.
Please note that all contributions to PS2 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS2 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)