Difference between revisions of "PS2 Emulation"

From PS3 Developer wiki
Jump to: navigation, search
m (ps2_netemu.self)
m (Config Commands)
 
(103 intermediate revisions by 5 users not shown)
Line 17: Line 17:
 
==PS2 emulators workload comparison==
 
==PS2 emulators workload comparison==
 
{{PS2 emulators workload comparison}}
 
{{PS2 emulators workload comparison}}
 +
Note: Apparently ps2_gxemu SPU layout changed at some point (maybe ps2_emu too), and above table is not accurate for latest emu versions.<br>
 +
0-6 layout for ps2_gxemu currently look like this: IOP, SPU2, IPU, VU1, EEDMA, GSGIF, UNK(probably isolation).
  
==PS2 Emulators types and versions==
+
==PS2 Emulator Types and Revisions==
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;"
+
 
 +
<div>
 +
<div style="float:top; text-align:center;">'''PS2 Emulator Types and Revisions'''</div>
 +
<div style="float:left; width:28%;">
 +
{| class="wikitable" style="font-size:xx-small;"
 +
|+ ps2_emu.elf (decrypted)
 +
! Firmware !! Bytes !! MD5 !! Timestamp !! <abbr title="Revision">Rev</abbr> !! <abbr title="Maximun number of supported commands">Comm</abbr>
 
|-
 
|-
! colspan="4" | PS2_EMU
+
! [[1.00_AV|1.00 AV]]
 +
| 8 258 328 || 19DC714F1109FF772BEF5B00C4AF2CF7 || 06/10/04/12:15 || ? || ?
 
|-
 
|-
! FW version !! TOC !!  Notes
+
! [[1.02_CEX|1.02]]
 +
| 8.258.504 || FF9C1C465DF6F501E418602A488CBD40 || 06/10/21/00:01 || ? || ?
 
|-
 
|-
| 1.00 AV || 0x7C3150 ||
+
! [[1.10_CEX|1.10]]
 +
| 8.254.568 || 72EFF1FB3E9A175253687634B698CC91 || 06/11/09/06:08 || ? || ?
 
|-
 
|-
| 1.02 || 0x7C31F0 ||
+
! [[1.11_CEX|1.11]]
 +
| 8.255.192 || 98BCC06ACA07971DFE57A126000B6DEE || 06/11/21/17:54 || ? || ?
 
|-
 
|-
| 1.10 || 0x7C2168 ||
+
! [[1.30_CEX|1.30]]
 +
| 8.787.800 || 3F1E943139329E8AD5461FA43DB4DD0E || 06/12/05/05:33 || rowspan="2" | same || rowspan="2" | ?
 
|-
 
|-
| 1.11 || 0x7C23C8 ||
+
! [[1.30_AV|1.30 AV]]
 +
| 8.787.800 || F2CE2D8CF41FF38E586AE7A91A13980C || 06/12/05/07:15
 
|-
 
|-
| 1.30 || 0x8442E8 ||
+
! [[1.31_CEX|1.31]]
 +
| 8.790.440 || CF13D31F202DA3C55009C06B6A2B27A0 || 06/12/12/18:47 || ? || ?
 
|-
 
|-
| 1.30 AV || 0x8442E8 ||
+
! [[1.32_CEX|1.32]]
 +
| 8.794.664 || 6DD631EEDE321AC7F59C85BC6AC0DCA9 || 06/12/18/05:54 || ? || ?
 
|-
 
|-
| 1.31 || 0x844C98 ||
+
! [[1.50_CEX|1.50]]
 +
| 8.805.912 || 81B38EE824E460385B44FADE78CAA5DC || 07/01/18/22:52 || ? || ?
 
|-
 
|-
| 1.32 || 0x845CA0 ||
+
! ?
 +
| ? || ? || ? || ? || ?
 
|-
 
|-
| 1.50 || 0x848728 ||
+
! [[1.70_CEX|1.70]]
 +
| 8.854.680 || CEACBB22EB450C5CC587C193CE7BBE91 || 07/04/16/16:11 || ? || ?
 
|-
 
|-
| 1.90 || 0x4D7ED8 ||
+
! ?
 +
| ? || ? || ? || ? || ?
 
|-
 
|-
| 3.66 - 3.74 || 0x4E9A20 ||
+
! [[1.90_CEX|1.90]]
 +
| 5.190.280 || 88B26FDC910B8633613BC366D39F439D || 07/07/21/06:44 || ? || ?
 
|-
 
|-
| 4.00 - 4.01 || 0x4EADB8 ||
+
! ?
 +
| ? || ? || ? || ? || ?
 
|-
 
|-
| 4.10 - 4.11 || 0x4EAD28 ||
+
! [[2.10_CEX|2.10]]
 +
| 5.223.112 || CB1924E7163F01EA2DD3965918BACCE4 || 07/12/15/05:29 || ? || ?
 
|-
 
|-
| 4.20 - 4.21 || 0x4EAE30 ||
+
! ?
 +
| ? || ? || ? || ? || ?
 
|-
 
|-
| 4.23 || 0x4EACE0 ||
+
! [[3.40_CEX|3.40]]
 +
| 5.267.128 || 916603300F798139456FCF1A40384A97 || 10/06/23/15:44 || ? || ?
 
|-
 
|-
| 4.25 || 0x4EAE30 || Reverted to 4.20 - 4.21 version?
+
! ?
 +
| ? || ? || ? || ? || ?
 +
|-{{cellcolors|#ddddff}}
 +
! [[3.66_CEX|3.66]]
 +
| rowspan="3" | 5.267.112 || BE20230D091F5C8AB8364607D49A6992 || 11/06/16/03:51 || rowspan="3" | same || rowspan="3" | ?
 +
|-{{cellcolors|#ddddff}}
 +
! ~
 +
| colspan="2" style="text-align:center; background-color:#ddddff;" | ''Any''
 +
|-{{cellcolors|#ddddff}}
 +
! [[3.74_CEX|3.74]]
 +
| 5B2CA12EE08298094177667C681BC75F || 11/10/25/00:30
 +
|-{{cellcolors|#bbbbff}}
 +
! [[4.00_CEX|4.00]]
 +
| rowspan="2" | 5.272.152 || 08516640BE636F3E633C0416F09EF941 || 11/11/22/03:10 || rowspan="2" | same || rowspan="2" | ?
 +
|-{{cellcolors|#bbbbff}}
 +
! [[4.01_CEX|4.01]]
 +
| 61ECD51036247547736274EEB52FA4C4 || 11/12/23/01:02
 +
|-{{cellcolors|#ddddff}}
 +
! [[4.10_CEX|4.10]]
 +
| rowspan="2" | 5.272.008 || 88CFD465D2F412C075C69531278BB3A9 || 12/02/05/23:08 || rowspan="2" | same || rowspan="2" | ?
 +
|-{{cellcolors|#ddddff}}
 +
! [[4.11_CEX|4.11]]
 +
| 2B45F72675B844C08E1735059F9826E3 || 12/02/11/07:05
 +
|-{{cellcolors|#bbbbff}}
 +
! [[4.20_CEX|4.20]]
 +
| rowspan="2" | 5.272.264 || 23D3F9909EBA3F1AB0D757850C5D6809 || 12/06/15/02:01 || rowspan="2" | same || rowspan="2" | ?
 +
|-{{cellcolors|#bbbbff}}
 +
! [[4.21_CEX|4.21]]
 +
| 110F0D01B39193F1A2031BBC7ADBBC2F || 12/06/30/01:06
 
|-
 
|-
| 4.78 - 4.82 || 0x4EB8C0 ||
+
! [[4.23_SEX|4.23 S]]
 +
| 5.271.912 || 783201F2541117E545B8E01B3A0B1955 || 12/07/31/00:17 || ? || ?
 
|-
 
|-
! colspan="4" | PS2_GXEMU
+
! [[4.25_CEX|4.25]]
 +
| 5.272.264 || C895EAA3F79BA2040D6C828A5B811139 || 12/09/07/06:55 || ? || ?
 
|-
 
|-
! FW version !! TOC !!  Notes
+
! ?
 +
| ? || ? || ? || ? || ?
 
|-
 
|-
| 1.50 || 0x5BDFC8 ||
+
! ?
 +
| ? || ? || ? || ? || ?
 
|-
 
|-
| 1.90 || 0x666C78 ||
+
! ?
 +
| ? || ? || ? || ? || ?
 
|-
 
|-
| 3.66 - 3.74 || 0x6766B8 ||
+
! colspan="6" style="background:#80ff80; line-height:75%" | Abandoned (last revision)
 +
|-{{cellcolors|#ddddff}}
 +
! [[4.78_CEX|4.78]]
 +
| rowspan="3" | 5.274.984 || ABC9228FCEA0E779E3157CA546A1FD02 || 15/12/17/01:14 || rowspan="3" | same || rowspan="3" | ?
 +
|-{{cellcolors|#ddddff}}
 +
! ~
 +
| colspan="2" style="text-align:center; background-color:#ddddff;" | ''Any''
 +
|-{{cellcolors|#ddddff}}
 +
! [[4.88_CEX|4.88]]
 +
| 83AA2C1DC985B2CCD20D1A42C7B79DDE || 21/04/12/11:31
 +
|}
 +
<span style="font-size:small">
 +
{{widedot}}'''Decrypted (elf)''': changes <abbr title="when comparing two decrypted files of the same revision from different firmwares the only difference is the build label">every firmware version</abbr><br>
 +
{{widedot}}'''<abbr title="0x20 bytes">Build label</abbr>''': yes, with timestamp, search for '''ps2ver:'''<br>
 +
{{widedot}}'''Target Firmware''': no/unknown<br>
 +
{{widedot}}'''Revision''': unknown
 +
</span>
 +
</div>
 +
<div style="float:left; width:24%;">
 +
{| class="wikitable" style="font-size:xx-small;"
 +
|+ ps2_gxemu.elf (decrypted)
 +
! Firmware !! Bytes !! MD5 !! <abbr title="Revision">Rev</abbr> !! <abbr title="Maximun number of supported commands">Comm</abbr>
 
|-
 
|-
| 4.00 - 4.11 || 0x677990 ||
+
! [[1.00_CEX|1.00]] ~ [[1.32_CEX|1.32]]
 +
| colspan="4" {{no}}
 
|-
 
|-
| 3.66 - 3.74 || 0x677AA8 ||
+
! [[1.50_CEX|1.50]]
 +
| 6.106.040 || BACC208C8A793F82D71F85B02DD2D318 || ? || ?
 
|-
 
|-
| 4.78 - 4.82 || 0x678548 ||  
+
! ?
 +
| ? || ? || ? || ?
 
|-
 
|-
! colspan="4" | PS2_SOFTEMU
+
! [[1.70_CEX|1.70]]
 +
| 6.763.336 || B70A15512EF9FA74B798A5E9241FE571 || ? || ?
 
|-
 
|-
! FW version !! TOC !!  Notes
+
! ?
 +
| ? || ? || ? || ?
 
|-
 
|-
| 1.90 || 0x5C7B10 ||
+
! [[1.90_CEX|1.90]]
 +
| 6.802.720 || B9E2CC8D72779650D9B500B75AE552EB || ? || ?
 
|-
 
|-
| 2.50 || 0x5C7ED8 ||
+
! ?
 +
| ? || ? || ? || ?
 
|-
 
|-
| 3.41 || 0x5C8C00 ||  
+
! [[2.10_CEX|2.10]]
 +
| 6.822.576 || E34C4EB587CCE44AB4B92D848DC391A7 || ? || ?
 
|-
 
|-
| 3.66 - 3.71 || 0x5C8EC0 ||
+
! ?
 +
| ? || ? || ? || ?
 +
|-
 +
! [[3.40_CEX|3.40]]
 +
| 6.866.424 || 80091C68E2F8D2385A2125AB38085A3C || ? || ?
 
|-
 
|-
| 3.72 - 4.01 || 0x5C8E40 ||
+
! ?
 +
| ? || ? || ? || ?
 
|-
 
|-
! colspan="4" | PS2_NETEMU
+
! [[3.66_CEX|3.66]] ~ [[3.74_CEX|3.74]]
 +
| 6.867.024 || E04FA0FE63A968C53AE366B3AAD0141A || ? || ?
 
|-
 
|-
! FW version !! TOC !!  Notes
+
! [[4.00_CEX|4.00]] ~ [[4.11_CEX|4.11]]
 +
| 6.871.848 || D5E97019132848203970213FF96F2AAB || ? || ?
 
|-
 
|-
| 3.73 - 3.74 || 0x7D8B00 ||
+
! [[4.20_CEX|4.20]] ~ [[4.25_CEX|4.25]]
 +
| 6.872.128 || 678F16283CAA8CFBC03A5FBCB6ABA41E || ? || ?
 
|-
 
|-
| 4.00 - 4.01 || 0x7DA200 ||
+
! ?
 +
| ? || ? || ? || ?
 
|-
 
|-
| 4.10 - 4.11 || 0x7DA180 ||
+
! ?
 +
| ? || ? || ? || ?
 
|-
 
|-
| 4.20 - 4.25 || 0x7DA500 ||
+
! ?
 +
| ? || ? || ? || ?
 
|-
 
|-
| 4.78 - 4.83 || 0x751280 ||  
+
! colspan="6" style="background:#80ff80; line-height:75%" | Abandoned (last revision)
 
|-
 
|-
 +
! [[4.78_CEX|4.78]] ~ [[4.88_CEX|4.88]]
 +
| 6.874.848 || C7681420A7B3A2A6E3BF89F4A12A3DD6 || ? || 0x2B ?
 
|}
 
|}
 
+
<span style="font-size:small">
==General observations regarding PS2 Classics emulator (ps2_netemu)==
+
{{widedot}}'''Decrypted (elf)''': changes <abbr title="when comparing two decrypted files of the same revision from different firmwares there are no differences">every emu revision</abbr><br>
* Virtual memory cards are per title based, but apparently run through the current memory card system. The module used to manage memory cards is: vmc_savedata_plugin.sprx - Using a regular memory card that has been renamed result in a "The save data is corrupt (8XXXXXXX) error"
+
{{widedot}}'''<abbr title="0x20 bytes">Build label</abbr>''': no/unknown<br>
* Loads an epilepsy warning before PS2 logo (PS button menu appears during epilepsy warning if controller is synced)
+
{{widedot}}'''Target Firmware''': no/unknown<br>
* Does not support online functionality of PS2 titles (network configuration utility inside Full Spectrum Warrior claims no network adaptor has been found, same with Syphon Filter: The Omega Strain).
+
{{widedot}}'''Revision''': unknown
 
+
</span>
- Only file that is needed in the folder for PS2 Classics is "iso.bin.enc". Removing the manuals/DXT files will cause the game to boot IMMEDIATELY to the PS2 logo upon switching to 720p/starting PS2 LPAR.
+
</div><div style="float:left; width:24%;">
 
+
{| class="wikitable" style="font-size:xx-small;"
===LIMG Segment===
+
|+ ps2_softemu.elf (decrypted)
The ISO.BIN.ENC have a block of 0x4000 bytes added at the end codenamed "LIMG" that works as a descriptor of the ISO structure
+
! Firmware !! Bytes !! MD5 !! <abbr title="Revision">Rev</abbr> !! <abbr title="Maximun number of supported commands">Comm</abbr>
 
+
|-
{| class="wikitable"
+
! [[1.00_CEX|1.00]] ~ [[1.82_CEX|1.82]]
 +
| colspan="4" {{no}}
 +
|-
 +
! [[1.90_CEX|1.90]] ~ [[1.94_CEX|1.94]]
 +
| 6.142.080 || 812330515D01291488315BBE7E0F339E || 11065 || ?
 +
|-
 +
! [[1.97_CEX|1.97]]
 +
| ? || ? || ? || ?
 
|-
 
|-
! Offset !! Lenght !! Name !! Example !! Description
+
! [[2.00_CEX|2.00]] ~ [[2.10_CEX|2.10]]
 +
| 6.143.048 || C0964350E3E8EA80EB5C7CB34901E9DE || 11830 || ?
 
|-
 
|-
| 0x00 || 0x4 || '''magic''' || LIMG || '''L'''ogical '''IM'''a'''G'''e (layout) ?
+
! [[2.16_CEX|2.16]]
 +
| ? || ? || ? || ?
 
|-
 
|-
| 0x04 || 0x4 || '''img_type''' || 0x00000001 || 1=DVD<br>2=CD
+
! ? ~ ?
 +
| ? || ? || ? || ?
 
|-
 
|-
| 0x08 || 0x4 || '''sector_count''' || 0x00279890 || ''sector_count = img_size / sector_size''
+
! [[3.10_CEX|3.10]]
 +
| ? || ? || ? || ?
 
|-
 
|-
| 0x0C || 0x4 || '''sector_size''' || 0x0000800 || ''sector_size = img_size / sector_count''<br>0x800=DVD (Mode1/2048)<br>0x930=CD (Mode2/2352)
+
! [[3.15_CEX|3.15]]
 +
| ? || ? || 12840 || ?
 
|-
 
|-
| 0x10 || 0x3FF0 || ''padding'' || 0x00000000... ||  
+
! [[3.16_CEX|3.16]]
|}
+
| ? || ? || ? || ?
 
+
|-
===folder/file layout===
+
! ? ~ ?
(in this example GTA San Andreas Classic)
+
| ? || ? || ? || ?
<pre>
+
|-
[NPUD20946]
+
! [[3.40_CEX|3.40]]
      [USRDIR]
+
| 6.146.424 || 97C33E83E14399EED1BD4F5351443E1C || ? || ?
            [CONTENT]
+
|-
                    001.dxt
+
! [[3.41-1_CEX|3.41]] ~ [[3.65_CEX|3.65]]
                    002.dxt
+
| ? || ? || 13474 || ?
                    003.dxt
+
|-
                    004.dxt
+
! [[3.66_CEX|3.66]] ~ [[3.71_CEX|3.71]]
                    005.dxt
+
| 6.147.120 || 513B9160AD8C199CAEFC82C1B7D9D794 || 15435 || ?
                    006.dxt
+
|-
                    007.dxt
+
! [[3.72_CEX|3.72]] ~ [[4.01_CEX|4.01]]
                    008.dxt
+
| 6.146.992 || 1232D3EEB48F301CBB61D76EB3046111 || 15529 || ?
                    009.dxt
+
|-
                    010.dxt
+
! [[4.10_CEX|4.10]]  ~ {{latestPS3}}
                    011.dxt
+
| colspan="4" {{no}}
                    012.dxt
+
|}
                    013.dxt
+
<span style="font-size:small">
                    014.dxt
+
{{widedot}}'''Decrypted (elf)''': changes <abbr title="when comparing two decrypted files of the same revision from different firmwares there are no differences">every emu revision</abbr><br>
                    015.dxt
+
{{widedot}}'''<abbr title="0x20 bytes">Build label</abbr>''': no/unknown<br>
                    016.dxt
+
{{widedot}}'''Target Firmware''': no/unknown<br>
                    017.dxt
+
{{widedot}}'''Revision''': unknown
                    Others.dxt
+
</span>
                    Manual.idx
+
</div><div style="float:left; width:24%;">
            [SAVEDATA]
+
{| class="wikitable" style="font-size:xx-small;"
                    SCEVMC0.VME
+
|+ ps2_netemu.elf (decrypted)
                    SCEVMC1.VME
+
! Firmware !! Bytes !! MD5 !! <abbr title="Revision">Rev</abbr> !! <abbr title="Maximun number of supported commands">Comm</abbr>
            CONFIG
+
|-
            ISO.BIN.EDAT
+
! [[1.00_CEX|1.00]] ~ [[3.66_CEX|3.66]]
            ISO.BIN.ENC
+
| colspan="4" {{no}}
      PS3LOGO.DAT
+
|-
      PARAM.SFO
+
! [[3.70_CEX|3.70]] ~ [[3.71_CEX|3.71]]
      ICON0.PNG
+
| 11.036.504 || 0D021D18CC63DDBDA530A93C41ABF865 || <abbr title="build r15686-gif-xdr-user2-usb3">15686</abbr> || rowspan="5" | 0x41
      PIC0.PNG
+
|-
      PIC1.PNG
+
! [[3.72_CEX|3.72]]
      PIC2.PNG
+
| 11.036.504 || 38EABD7E5F998BC04922CA3B70211208 || <abbr title="build r15842-target370">15842</abbr>
</pre>
+
|-
 +
! [[3.73_CEX|3.73]] ~ [[3.74_CEX|3.74]]
 +
| 11.036.504 || F21110A93BBEA416749283E6BF3D3C6B || <abbr title="build r15936-target370">15936</abbr>
 +
|-
 +
! [[4.00_CEX|4.00]] ~ [[4.01_CEX|4.01]]
 +
| 11.033.048 || F770442DFA626282B01FEBE3DDFFC477 || <abbr title="build r16195-target400">16195</abbr>
 +
|-
 +
! [[4.10_CEX|4.10]] ~ [[4.11_CEX|4.11]]
 +
| 11.033.216 || 8F0885BCC80A3617E654BB6151F4F718 || <abbr title="build r16361-target410">16361</abbr>
 +
|-
 +
! [[4.20_CEX|4.20]] ~ [[4.23_SEX|4.23]]
 +
| 11.033.728 || 8EB5492E453C50B6D728E7999A57A689 || <abbr title="build r16604-target420">16604</abbr> || rowspan="2" | 0x43
 +
|-
 +
! [[4.25_CEX|4.25]] ~ [[4.26_SEX|4.26]]
 +
| 11.033.728 || E38059300E31432A62967770C3E99EF6 || <abbr title="build r16740-target420">16740</abbr>
 +
|-
 +
! [[4.30_CEX|4.30]] ~ [[4.31_CEX|4.31]]
 +
| ? || ? || 16808 || 0x45
 +
|-
 +
! [[4.40_CEX|4.40]] ~ [[4.41_CEX|4.41]]
 +
| ? || ? || 16916 || 0x46
 +
|-
 +
! [[4.45_CEX|4.45]] ~ [[4.46_CEX|4.46]]
 +
| ? || ? || 17041 || 0x48
 +
|-
 +
! [[4.50_CEX|4.50]]
 +
| ? || ? || 17179 || 0x4A
 +
|-
 +
! [[4.55_CEX|4.55]]
 +
| ? || ? || 17277 || rowspan="2" | 0x4D
 +
|-
 +
! [[4.60_CEX|4.60]] ~ [[4.76_CEX|4.76]]
 +
| ? || ? || 17314
 +
|-
 +
! colspan="6" style="background:#80ff80; line-height:75%" | Abandoned (last revision)
 +
|-
 +
! [[4.78_CEX|4.78]] ~ [[4.88_CEX|4.88]]
 +
| 10.442.536 || 8B2DBD1AAD22A0EDCF9C867A1A1FB94D || <abbr title="build r17495-main-rel">17495</abbr> || 0x50
 +
|}
 +
<span style="font-size:small">
 +
{{widedot}}'''Decrypted (elf)''': changes <abbr title="when comparing two decrypted files of the same revision from different firmwares there are no differences">every emu revision</abbr><br>
 +
{{widedot}}'''<abbr title="0x20 bytes">Build label</abbr>''': yes, without timestamp, search for '''build r'''<br>
 +
{{widedot}}'''Target Firmware''': included in the build label<br>
 +
{{widedot}}'''Revision''': yes, <abbr title="the location can be seen by comparing 4.23 (value 0x40DC) with 4.25 (value 0x4164) at offset 0x3E4BA in both">'''one''' time</abbr>, and included in the build label
 +
</span>
 +
</div>
 +
</div>
 +
<br style="clear: both;" />
  
==Virtual PS2 (emulated machine) usage and features==
+
*Alternative tables<!-- What means TOC ?, is needed to explain it and/or include this TOC info in the other tables -->
 
+
{| class="wikitable" style="float:left; margin:5px"
===Video Modes===
+
|+ps2_emu.self
'''Note:''' Real PS2 : http://users.neoscientists.org/~blue/ps2videomodes.txt
+
! FW version !! TOC !! Notes
 
+
|-
  Video Modes
+
| 1.00 AV || 0x7C3150 ||
----.-----------.---------------.-----------.-----------.
+
|-
  No | Name      | Resolution | fV(Hz)    | fH(kHz)  |
+
| 1.02 || 0x7C31F0 ||
----+-----------+---------------+-----------+-----------|
+
|-
  0 | NTSC-NI  | 640x240(224) | 59.940    | 15.734    |
+
| 1.10 || 0x7C2168 ||
  1 | NTSC-I    | 640x480(448) | 59.820    | 15.734    |
+
|-
  2 | PAL-NI    | 640x288(256) | 50.000    | 15.625    |
+
| 1.11 || 0x7C23C8 ||
  3 | PAL-I    | 640x576(512) | 49.760    | 15.625    |
+
|-
  4 | VESA-1A  | 640x480      | 59.940    | 31.469    |
+
| 1.30 || 0x8442E8 ||
  5 | VESA-1C  | 640x480      | 75.000    | 37.500    |
+
|-
  6 | VESA-2B  |  800x600      | 60.317    | 37.879    |
+
| 1.30 AV || 0x8442E8 ||
  7 | VESA-2D  | 800x600      | 75.000    | 46.875    |
+
|-
  8 | VESA-3B  | 1024x768      | 60.004    | 48.363    |
+
| 1.31 || 0x844C98 ||
  9 | VESA-3D  | 1024x768      | 75.029    | 60.023    |
+
|-
  10 | VESA-4A  | 1280x1024    | 60.020    | 63.981    |
+
| 1.32 || 0x845CA0 ||
  11 | VESA-4B  | 1280x1024    | 75.025    | 79.976    |
+
|-
  12 | DTV-480P  |  720x480      | 59.940    | 31.469    |
+
| 1.50 || 0x848728 ||
  13 | DTV-1080I | 1920x1080    | 60.000    | 33.750    |
+
|-
  14 | DTV-720P  | 1280x720      | ??        | ??        |
+
| 1.90 || 0x4D7ED8 ||
----^-----------^---------------^-----------^-----------'
+
|-
 
+
| 3.66 - 3.74 || 0x4E9A20 ||
==Memory Mapping==
 
 
 
=== ps2netemu ===
 
Mapping ELF @ 0x200000000
 
 
 
{| class="wikitable"
 
 
|-
 
|-
! Name !! ea !! lpar2(netemu 4.81) !! size !! flags !! lpar1(lv1 4.81)
+
| 4.00 - 4.01 || 0x4EADB8 ||
 
|-
 
|-
| text          ||          0x0 ||     0x3D00000 || 0x300000(  3 MB) || 0x8000000000000003  0000000000000003 || 0x7D00000
+
| 4.10 - 4.11 || 0x4EAD28 ||
|-                                                                                                                
+
|-
| ro_work      ||    0x300000 ||      0x300000 ||  0x500000(  5 MB) || 0x0000000000000003  0000000000000003 || 0x4300000
+
| 4.20 - 4.21 || 0x4EAE30 ||
|-                                                                                                                
+
|-
| rw_work      ||    0x800000 ||      0x800000 || 0x2A00000( 42 MB) || 0x0000000000000001  0000000000000003 || 0x4800000
+
| 4.23 || 0x4EACE0 ||
|-                                                                                                                
+
|-
| negmem        ||   0x1FFF0000 ||     0x3210000 ||  0x10000( 64 KB) || 0x0000000000000001  0000000000000000 || 0x7210000
+
| 4.25 || 0x4EAE30 || Reverted to 4.20 - 4.21 version?
|-                                                                                                                
+
|-
| ee_ram        || 0x100000000 || 0x64000E000000 || 0x2000000( 32 MB) || 0x0000000000000001  0000000000000000 || 0x3C00000 - 0x3F00000, 0x8000000 - 0x9B00000
+
| 4.78 - 4.82 || 0x4EB8C0 ||
|-                                                                                                                
+
|}
| ee_jit_code  ||  0xD00000000 || 0x680024000000 || 0x3000000( 48 MB) || 0x8000000000000001  0000000000000003 || 0xBC00000 - 0xEB00000
+
 
|-                                                                                                                
+
{| class="wikitable" style="float:left; margin:5px"
| vu0_jit_code  ||  0xD08000000 || 0x580000800000 ||  0x400000(  4 MB) || 0x8000000000000001  0000000000000003 || 0x900000 - 0xC00000
+
|+ps2_gxemu.self
|-                                                                                                                 
+
! FW version !! TOC !! Notes
| vu0_jit_data  ||  0xD0C000000 ||      0x3700000 ||  0x400000(  4 MB) || 0x0000000000000002  0000000000000003 || 0x7700000
+
|-
|-                                                                                                                 
+
| 1.50 || 0x5BDFC8 ||
| eeram_jit_lut || 0xE00000000 || 0x640010000000 || 0x2000000( 32 MB) || 0x0000000000000001  0000000000000003 || 0x9C00000 - 0xBB00000
+
|-
|-                                                                                                                
+
| 1.90 || 0x666C78 ||
| eerom_jit_lut ||  0xE0FC00000 || 0x580000C00000 ||  0x400000(  4 MB) || 0x0000000000000001  0000000000000003 || 0xD00000 - 0x1000000
+
|-
|-                                                                                                                
+
| 3.66 - 3.74 || 0x6766B8 ||
| ee_dbg_ram    ||  0x90FFF8000 || 0x64000E078000 ||   0x8000( 32 KB) || 0x0000000000000001  0000000000000000 ||  
+
|-
|-                                                                                                                
+
| 4.00 - 4.11 || 0x677990 ||
| iop_ram      || 0x400000000 ||     0x3300000 ||  0x200000(  2 MB) || 0x0000000000000001  0000000000000000 || 0x7300000
+
|-
|-                                                                                                                
+
| 3.66 - 3.74 || 0x677AA8 ||
| iop_rom      ||  0x50FC00000 || 0x580001000000 ||  0x400000(  4 MB) || 0x0000000000000001  0000000000000002 || 0x1100000 - 0x1400000
+
|-
|-                                                                                                                
+
| 4.78 - 4.82 || 0x678548 ||  
| iop_spad      || 0x50F800000 ||     0x3220000 ||  0x10000( 64 KB) || 0x0000000000000001  0000000000000002 || 0x7220000
+
|}
|-                                                                                                                
+
 
| spu2_ram      || 0x600000000 ||     0x3500000 ||  0x200000(  2 MB) || 0x0000000000000001  0000000000000000 || 0x7500000
+
{| class="wikitable" style="float:left; margin:5px"
|-                                                                                                                 
+
|+ps2_softemu.self
| spu2_ram2    ||  0x600200000 ||      0x3500000 ||  0x200000(  2 MB) || 0x0000000000000001  0000000000000000 || 0x7500000
+
! FW version !! TOC !! Notes
|-                                                                                                                 
+
|-
| spu2_pcm      || 0x1000000000 ||      0x3230000 ||  0x10000( 64 KB) || 0x0000000000000001 0000000000000000 || 0x7230000
+
| 1.90 || 0x5C7B10 ||
|-                                                                                                                
+
|-
| ee_spr_lo    ||  0x700000000 ||      0x3201000 ||    0x2000(  8 KB) || 0x0000000000000001  0000000000000000 || 0x7201000
+
| 2.50 || 0x5C7ED8 ||
|-                                                                                                                
+
|-
| ee_spr        || 0x800000000 ||     0x3203000 ||    0x6000( 24 KB) || 0x0000000000000001  0000000000000000 || 0x7203000
+
| 3.41 || 0x5C8C00 ||  
|-                                                                                                                
+
|-
| ee_vu0_dmem0  ||  0x301004000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
+
| 3.66 - 3.71 || 0x5C8EC0 ||
|-                                                                                                                
+
|-
| ee_vu0_dmem1  || 0x301005000 ||     0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
+
| 3.72 - 4.01 || 0x5C8E40 ||
|-                                                                                                                
+
|}
| ee_vu0_dmem2  ||  0x301006000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
+
 
|-                                                                                                                 
+
{| class="wikitable" style="float:left; margin:5px"
| ee_vu0_dmem3  ||  0x301007000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
+
|+ps2_netemu.self
|-                                                                                                                 
+
! FW version !! TOC !! Notes
| ee_rom        || 0x30FC00000 || 0x580001000000 ||  0x400000(  4 MB) || 0x0000000000000001  0000000000000001 || 0x1100000 - 0x1400000
+
|-
|-                                                                                                                
+
| 3.73 - 3.74 || 0x7D8B00 ||
| vrc          ||  0xC00000000 || 0x600005000000 || 0x1000000( 16 MB) || 0x0000000000000001  0000000000000000 || 0x1500000 - 0x2400000
+
|-
|-                                                                                                                 
+
| 4.00 - 4.01 || 0x7DA200 ||
| /dev/zero    || 0x4000000000 ||      0x3240000 ||  0x10000( 64 KB) || 0x0000000000000001  0000000000000001 || 0x7240000
+
|-
|-                                                                                                                
+
| 4.10 - 4.11 || 0x7DA180 ||
| dma_vu0_dmem0 || 0x4001004000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
+
|-
|-                                                                                                                
+
| 4.20 - 4.25 || 0x7DA500 ||
| dma_vu0_dmem1 || 0x4001005000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
+
|-
|-                                                                                                                
+
| 4.78 - 4.83 || 0x751280 ||  
| dma_vu0_dmem2 || 0x4001006000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
+
|}{{clear}}
|-                                                                                                                
 
| dma_vu0_dmem3 || 0x4001007000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
 
|-                                                                                                                
 
| imm_vu0_dmem0 ||  0x30000000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
 
|-                                                                                                                        
 
| imm_vu0_dmem1 ||  0x30001000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
 
|-                                                                                                                        
 
| imm_vu0_dmem2 ||  0x30002000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
 
|-                                                                                                                        
 
| imm_vu0_dmem3 ||  0x30003000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
 
|-                                                                                                                         
 
| SGSXdr        || 0x1904000000 || 0x64000C000000 || 0x1700000( 23 MB) || 0x0000000000000001  0000000000000000 || 0x2500000 - 0x3B00000
 
|-                                                                                                                         
 
| iopTrace      || 0x1400000000 ||      0x3250000 ||  0x10000( 64 KB) || 0x0000000000000001  0000000000000000 || 0x7250000
 
|}
 
  
===PS2 Memory and Hardware Mapped Registers Layout===
+
==General observations regarding PS2 Classics emulator (ps2_netemu)==
<pre>
+
* Virtual memory cards are per title based, but apparently run through the current memory card system. The module used to manage memory cards is: vmc_savedata_plugin.sprx - Using a regular memory card that has been renamed result in a "The save data is corrupt (8XXXXXXX) error"
EE Virtual/Physical Memory Map
+
* Loads an epilepsy warning before PS2 logo (PS button menu appears during epilepsy warning if controller is synced)
  KUSEG: 00000000h-7FFFFFFFh User segment
+
* Does not support online functionality of PS2 titles (network configuration utility inside Full Spectrum Warrior claims no network adaptor has been found, same with Syphon Filter: The Omega Strain).
  KSEG0: 80000000h-9FFFFFFFh Kernel segment 0
+
 
  KSEG1: A0000000h-BFFFFFFFh Kernel segment 1
+
- Only file that is needed in the folder for PS2 Classics is "iso.bin.enc". Removing the manuals/DXT files will cause the game to boot IMMEDIATELY to the PS2 logo upon switching to 720p/starting PS2 LPAR.
  KSSEG: C0000000h-DFFFFFFFh Supervisor segment
+
 
  KSEG3: E0000000h-FFFFFFFFh Kernel segment 3
+
===LIMG Segment===
 
+
The ISO.BIN.ENC have a block of 0x4000 bytes added at the end codenamed "LIMG" that works as a descriptor of the ISO structure
  Virtual    Physical
 
  00000000h  00000000h  32 MB    Main RAM (first 1 MB reserved for kernel)
 
  20000000h  00000000h  32 MB    Main RAM, uncached
 
  30100000h  00100000h  31 MB    Main RAM, uncached and accelerated
 
  10000000h  10000000h  64 KB    I/O registers
 
  11000000h  11000000h  4 KB    VU0 code memory
 
  11004000h  11004000h  4 KB    VU0 data memory
 
  11008000h  11008000h  16 KB    VU1 code memory
 
  1100C000h  1100C000h  16 KB    VU1 data memory
 
  12000000h  12000000h  8 KB    GS privileged registers
 
  1C000000h  1C000000h  2 MB    IOP RAM
 
  1FC00000h  1FC00000h  4 MB    BIOS, uncached (rom0)
 
  9FC00000h  1FC00000h  4 MB    BIOS, cached (rom09)
 
  BFC00000h  1FC00000h  4 MB    BIOS, uncached (rom0b)
 
  70000000h  ---------  16 KB    Scratchpad RAM (only accessible via virtual addressing)
 
  
IOP Physical Memory Map
+
{| class="wikitable"
  KUSEG: 00000000h-7FFFFFFFh User segment
+
|-
  KSEG0: 80000000h-9FFFFFFFh Kernel segment 0
+
! Offset !! Length !! Name !! Example !! Description
  KSEG1: A0000000h-BFFFFFFFh Kernel segment 1
+
|-
 
+
| 0x00 || 0x4 || '''magic''' || LIMG || '''L'''ogical '''IM'''a'''G'''e (layout) ?
  Physical
+
|-
  00000000h  2 MB    Main RAM (same as on PSX)
+
| 0x04 || 0x4 || '''img_type''' || 0x00000001 || 1=DVD<br>2=CD
  1D000000h          SIF registers
+
|-
  1F800000h  64 KB    Various I/O registers
+
| 0x08 || 0x4 || '''sector_count''' || 0x00279890 || ''sector_count = img_size / sector_size''
  1F900000h  1 KB    SPU2 registers
+
|-
  1FC00000h  4 MB    BIOS (rom0) - Same as EE BIOS
+
| 0x0C || 0x4 || '''sector_size''' || 0x0000800 || ''sector_size = img_size / sector_count''<br>0x800=DVD (Mode1/2048)<br>0x930=CD (Mode2/2352)
 
+
|-
  FFFE0000h (KSEG2)  Cache control
+
| 0x10 || 0x3FF0 || ''padding'' || 0x00000000... ||
 +
|}
  
Additional Memory
+
===folder/file layout===
  4 MB  GS VRAM (used for framebuffer, textures, zbuffer, etc)
+
(in this example GTA San Andreas Classic)
  2 MB  SPU2 work RAM - quadrupled from PSX's SPU
+
<pre>
  8 MB  Memory card
+
[NPUD20946]
 
+
      [USRDIR]
 
+
            [CONTENT]
Hardware Mapped Registers
+
                    001.dxt
EE Map
+
                    002.dxt
EE Timers
+
                    003.dxt
  100000xxh       Timer 0
+
                    004.dxt
  100008xxh       Timer 1
+
                    005.dxt
  100010xxh       Timer 2
+
                    006.dxt
  100018xxh       Timer 3
+
                    007.dxt
Image Processing Unit (IPU)
+
                    008.dxt
  10002000h 8h    IPU Command
+
                    009.dxt
  10002010h 4h    IPU Control
+
                    010.dxt
  10002020h 4h    IPU bit pointer control
+
                    011.dxt
  10002030h 8h    Top of bitstream
+
                    012.dxt
  10007000h 10h    Out FIFO (read)
+
                    013.dxt
  10007010h 10h    In FIFO (write)
+
                    014.dxt
Graphics Interface (GIF)
+
                    015.dxt
  10003000h 4h    GIF_CTRL - Control register
+
                    016.dxt
  10003010h 4h    GIF_MODE - Mode setting
+
                    017.dxt
  10003020h 4h    GIF_STAT - Status
+
                    Others.dxt
  10003040h 4h    GIF_TAG0 - Bits 0-31 of tag before
+
                    Manual.idx
  10003050h 4h    GIF_TAG1 - Bits 32-63 of tag before
+
            [SAVEDATA]
  10003060h 4h    GIF_TAG2 - Bits 64-95 of tag before
+
                    SCEVMC0.VME
  10003070h 4h    GIF_TAG3 - Bits 96-127 of tag before
+
                    SCEVMC1.VME
  10003080h 4h    GIF_CNT - Transfer status counter
+
            CONFIG
  10003090h 4h    GIF_P3CNT - PATH3 transfer status counter
+
            ISO.BIN.EDAT
  100030A0h 4h    GIF_P3TAG - Bits 0-31 of PATH3 tag when interrupted
+
            ISO.BIN.ENC
   10006000h 10h   GIF FIFO
+
       PS3LOGO.DAT
DMA Controller (DMAC)
+
       PARAM.SFO
  100080xxh        VIF0 - channel 0
+
       ICON0.PNG
  100090xxh        VIF1 - channel 1
+
       PIC0.PNG
  1000A0xxh        GIF - channel 2
+
      PIC1.PNG
  1000B0xxh        IPU_FROM - channel 3
+
      PIC2.PNG
  1000B4xxh        IPU_TO - channel 4
+
</pre>
  1000C0xxh        SIF0 - channel 5
+
 
  1000C4xxh        SIF1 - channel 6
+
==Virtual PS2 (emulated machine) usage and features==
  1000C8xxh        SIF2 - channel 7
+
 
  1000D0xxh        SPR_FROM - channel 8
+
===Video Modes===
  1000D4xxh        SPR_TO - channel 9
+
'''Note:''' Real PS2 : http://users.neoscientists.org/~blue/ps2videomodes.txt
  1000E000h 4h    D_CTRL - DMAC control
+
 
  1000E010h 4h    D_STAT - DMAC interrupt status
+
Video Modes
  1000E020h 4h    D_PCR - DMAC priority control
+
----.-----------.---------------.-----------.-----------.
  1000E030h 4h    D_SQWC - DMAC skip quadword
+
   No | Name      | Resolution | fV(Hz)   | fH(kHz)   |
  1000E040h 4h    D_RBSR - DMAC ringbuffer size
+
----+-----------+---------------+-----------+-----------|
  1000E050h 4h    D_RBOR - DMAC ringbuffer offset
+
  0 | NTSC-NI   |  640x240(224) | 59.940    | 15.734    |
  1000E060h 4h    D_STADR - DMAC stall address
+
  1 | NTSC-I    |  640x480(448) | 59.820    | 15.734    |
  1000F520h 4h    D_ENABLER - DMAC disabled status
+
  2 | PAL-NI    |  640x288(256) | 50.000    | 15.625    |
  1000F590h 4h    D_ENABLEW - DMAC disable
+
  3 | PAL-I     |  640x576(512) | 49.760    | 15.625    |
Interrupt Controller (INTC)
+
  4 | VESA-1A   |  640x480      | 59.940    | 31.469    |
  1000F000h 4h    INTC_STAT - Interrupt status
+
  5 | VESA-1C   |  640x480      | 75.000    | 37.500    |
  1000F010h 4h    INTC_MASK - Interrupt mask
+
  6 | VESA-2B   |  800x600      | 60.317    | 37.879    |
Subsystem Interface (SIF)
+
  7 | VESA-2D   |  800x600      | 75.000    | 46.875    |
  1000F200h 4h    MSCOM - EE->IOP communication
+
  8 | VESA-3B   | 1024x768      | 60.004    | 48.363    |
  1000F210h 4h    SMCOM - IOP->EE communication
+
  9 | VESA-3D   | 1024x768      | 75.029    | 60.023    |
  1000F220h 4h    MSFLAG - EE->IOP flags
+
   10 | VESA-4A   | 1280x1024     | 60.020    | 63.981    |
  1000F230h 4h    SMFLAG - IOP->EE flags
+
   11 | VESA-4B   | 1280x1024     | 75.025    | 79.976    |
   1000F240h 4h    Control register
+
   12 | DTV-480P  |  720x480      | 59.940    | 31.469    |
Privileged GS registers
+
   13 | DTV-1080I | 1920x1080     | 60.000    | 33.750    |
  12000000h 8h    PMODE - various PCRTC controls
+
   14 | DTV-720P  | 1280x720      | ??        | ??        |
  12000010h 8h     SMODE1
+
----^-----------^---------------^-----------^-----------'
   12000020h 8h    SMODE2
+
 
   12000030h 8h    SRFSH
+
==Memory Mapping==
   12000040h 8h    SYNCH1
+
 
   12000050h 8h    SYNCH2
+
=== ps2netemu ===
   12000060h 8h    SYNCV
+
{| class="wikitable"
   12000070h 8h    DISPFB1 - display buffer for output circuit 1
+
|-
   12000080h 8h    DISPLAY1 - output circuit 1 control
+
! Name !! ea !! lpar2(netemu 4.81) !! size !! flags !! lpar1(lv1 4.81)
   12000090h 8h     DISPFB2 - display buffer for output circuit 2
+
|-
   120000A0h 8h    DISPLAY2 - output circuit 2 control
+
| text          ||          0x0 ||      0x3D00000 ||  0x300000( 3 MB) || 0x8000000000000003  0000000000000003 || 0x7D00000
   120000B0h 8h     EXTBUF
+
|-                                                                                                                 
   120000C0h 8h    EXTDATA
+
| ro_work      ||     0x300000 ||      0x300000 ||  0x500000(  5 MB) || 0x0000000000000003  0000000000000003 || 0x4300000
   120000D0h 8h     EXTWRITE
+
|-                                                                                                                
   120000E0h 8h    BGCOLOR - background color
+
| rw_work      ||     0x800000 ||      0x800000 || 0x2A00000( 42 MB) || 0x0000000000000001  0000000000000003 || 0x4800000
  12001000h 8h    GS_CSR - control register
+
|-                                                                                                                 
  12001010h 8h    GS_IMR - GS interrupt control
+
| negmem        ||   0x1FFF0000 ||      0x3210000 ||   0x10000( 64 KB) || 0x0000000000000001  0000000000000000 || 0x7210000
  12001040h 8h    BUSDIR - transfer direction
+
|-                                                                                                                 
  12001080h 8h    SIGLBLID - signal
+
| ee_ram        ||  0x100000000 || 0x64000E000000 || 0x2000000( 32 MB) || 0x0000000000000001  0000000000000000 || 0x3C00000 - 0x3F00000, 0x8000000 - 0x9B00000
 
+
|-                                                                                                                
IOP Map
+
| ee_jit_code   ||  0xD00000000 || 0x680024000000 || 0x3000000( 48 MB) || 0x8000000000000001  0000000000000003 || 0xBC00000 - 0xEB00000
Subsystem Interface (SIF)
+
|-                                                                                                                
  1D000000h 4h    MSCOM - EE->IOP communication
+
| vu0_jit_code  ||  0xD08000000 || 0x580000800000 ||  0x400000(  4 MB) || 0x8000000000000001  0000000000000003 || 0x900000 - 0xC00000
  1D000010h 4h    SMCOM - IOP->EE communication
+
|-                                                                                                                
  1D000020h 4h    MSFLAG - EE->IOP flags
+
| vu0_jit_data  ||  0xD0C000000 ||      0x3700000 ||  0x400000(  4 MB) || 0x0000000000000002  0000000000000003 || 0x7700000
  1D000030h 4h    SMFLAG - IOP->EE flags
+
|-                                                                                                                
  1D000040h 4h    Control register
+
| eeram_jit_lut ||  0xE00000000 || 0x640010000000 || 0x2000000( 32 MB) || 0x0000000000000001  0000000000000003 || 0x9C00000 - 0xBB00000
CDVD Drive
+
|-                                                                                                                
  1F402004h 1h    Current N command
+
| eerom_jit_lut ||  0xE0FC00000 || 0x580000C00000 ||  0x400000(  4 MB) || 0x0000000000000001  0000000000000003 || 0xD00000 - 0x1000000
  1F402005h 1h    N command status (R)
+
|-                                                                                                                
  1F402005h 1h    N command params (W)
+
| ee_dbg_ram    ||  0x90FFF8000 || 0x64000E078000 ||    0x8000( 32 KB) || 0x0000000000000001  0000000000000000 ||
  1F402006h 1h    Error
+
|-                                                                                                                
  1F402007h 1h     Send BREAK command
+
| iop_ram      ||  0x400000000 ||      0x3300000 ||  0x200000(  2 MB) || 0x0000000000000001  0000000000000000 || 0x7300000
  1F402008h 1h    CDVD I_STAT - interrupt register
+
|-                                                                                                                
  1F40200Ah 1h     Drive status
+
| iop_rom      ||  0x50FC00000 || 0x580001000000 ||  0x400000(  4 MB) || 0x0000000000000001  0000000000000002 || 0x1100000 - 0x1400000
  1F40200Fh 1h    Disk type
+
|-                                                                                                                
   1F402016h 1h    Current S command
+
| iop_spad      ||  0x50F800000 ||      0x3220000 ||   0x10000( 64 KB) || 0x0000000000000001  0000000000000002 || 0x7220000
   1F402017h 1h    S command status
+
|-                                                                                                                
  1F402018h 1h    S command params
+
| spu2_ram      ||  0x600000000 ||      0x3500000 ||  0x200000(  2 MB) || 0x0000000000000001  0000000000000000 || 0x7500000
Interrupt Control
+
|-                                                                                                                
  1F801070h 4h    I_STAT - Interrupt status
+
| spu2_ram2     ||  0x600200000 ||      0x3500000 ||  0x200000(  2 MB) || 0x0000000000000001  0000000000000000 || 0x7500000
   1F801074h 4h    I_MASK - Interrupt mask
+
|-                                                                                                                
  1F801078h 1h    I_CTRL - Global interrupt disable
+
| spu2_pcm      || 0x1000000000 ||      0x3230000 ||   0x10000( 64 KB) || 0x0000000000000001  0000000000000000 || 0x7230000
DMA registers
+
|-                                                                                                                
  1F80108xh        MDECin - channel 0
+
| ee_spr_lo     ||  0x700000000 ||      0x3201000 ||    0x2000(  8 KB) || 0x0000000000000001  0000000000000000 || 0x7201000
  1F80109xh        MDECout - channel 1
+
|-                                                                                                                
  1F8010Axh        SIF2 (GPU) - channel 2
+
| ee_spr       ||  0x800000000 ||      0x3203000 ||    0x6000( 24 KB) || 0x0000000000000001  0000000000000000 || 0x7203000
  1F8010Bxh        CDVD - channel 3
+
|-                                                                                                                 
  1F8010Cxh        SPU2 Core0 - channel 4
+
| ee_vu0_dmem0  ||  0x301004000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F8010Dxh        PIO - channel 5
+
|-                                                                                                                 
  1F8010Exh        OTC - channel 6
+
| ee_vu0_dmem1  ||  0x301005000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F80150xh        SPU2 Core1 - channel 8
+
|-                                                                                                                 
  1F80151xh        ??? - channel 9
+
| ee_vu0_dmem2  ||  0x301006000 ||      0x3200000 ||    0x1000( 4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F80152xh        SIF0 - channel 10
+
|-                                                                                                                 
  1F80153xh        SIF1 - channel 11
+
| ee_vu0_dmem3  ||  0x301007000 ||      0x3200000 ||   0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
   1F80154xh        SIO2in - channel 12
+
|-                                                                                                                 
  1F80155xh        SIO2out - channel 13
+
| ee_rom        ||  0x30FC00000 || 0x580001000000 ||  0x400000(  4 MB) || 0x0000000000000001  0000000000000001 || 0x1100000 - 0x1400000
 
+
|-                                                                                                                 
  1F8010F0h 4h    DPCR - DMA priority control
+
| vrc          ||  0xC00000000 || 0x600005000000 || 0x1000000( 16 MB) || 0x0000000000000001  0000000000000000 || 0x1500000 - 0x2400000
  1F8010F4h 4h     DICR - DMA interrupt control
+
|-                                                                                                                 
   1F801570h 4h    DPCR2 - DMA priority control 2
+
| /dev/zero     || 0x4000000000 ||      0x3240000 ||   0x10000( 64 KB) || 0x0000000000000001  0000000000000001 || 0x7240000
  1F801574h 4h     DICR2 - DMA priority control 2
+
|-                                                                                                                
IOP Timers
+
| dma_vu0_dmem0 || 0x4001004000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F80110xh       Timer 0
+
|-                                                                                                                 
  1F80111xh        Timer 1
+
| dma_vu0_dmem1 || 0x4001005000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F80112xh        Timer 2
+
|-                                                                                                                 
  1F80148xh        Timer 3
+
| dma_vu0_dmem2 || 0x4001006000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F80149xh        Timer 4
+
|-                                                                                                                 
  1F8014Axh        Timer 5
+
| dma_vu0_dmem3 || 0x4001007000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
Serial Interface (SIO2)
+
|-                                                                                                                
  1F808200h 40h   SEND3 buffer
+
| imm_vu0_dmem0 ||   0x30000000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F808240h 20h    SEND1/2 buffers
+
|-                                                                                                                         
  1F808260h 1h    In FIFO
+
| imm_vu0_dmem1 ||   0x30001000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F808264h 1h    Out FIFO
+
|-                                                                                                                         
  1F808268h 4h    SIO2 control
+
| imm_vu0_dmem2 ||   0x30002000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
  1F80826Ch 4h    RECV1
+
|-                                                                                                                         
  1F808270h 4h     RECV2
+
| imm_vu0_dmem3 ||   0x30003000 ||      0x3200000 ||    0x1000(  4 KB) || 0x0000000000000001  0000000000000001 || 0x7200000
   1F808274h 4h    RECV3
+
|-                                                                                                                         
Sound Processing Unit (SPU2)
+
| SGSXdr        || 0x1904000000 || 0x64000C000000 || 0x1700000( 23 MB) || 0x0000000000000001  0000000000000000 || 0x2500000 - 0x3B00000
  1F900000h 180h  Core0 Voice 0-23 registers
+
|-                                                                                                                         
  1F900190h 4h    Key ON 0/1
+
| iopTrace      || 0x1400000000 ||      0x3250000 ||   0x10000( 64 KB) || 0x0000000000000001  0000000000000000 || 0x7250000
  1F900194h 4h    Key OFF 0/1
+
|}
  1F90019Ah 2h    Core attributes
+
 
  1F90019Ch 4h    Interrupt address H/L
+
====SPE local storage====
  1F9001A8h 4h    DMA transfer address H/L
+
Emulator access SPE LS by accessing special addresses. Mapping as follows:
  1F9001ACh 2h    Internal transfer FIFO
+
{| class="wikitable"
  1F9001B0h 2h    AutoDMA status
+
|-
  1F9001C0h 120h  Core0 Voice 0-23 start/loop/next addresses
+
! SPE Num. !! SPE task !! Address in netemu !! address in SPE
   1F900340h 4h    ENDX 0/1
+
|-
  1F900344h 2h    Status register
+
| 0 || IOP || 0x40000000 - 0x4003FFFF ||  0x0 - 3FFFF
    
+
|-
  ... above addresses repeat for Core1 starting at 1F900400h ...
+
| 1 || SPU2 || 0x40080000 - 0x400BFFFF ||  0x0 - 3FFFF
    
+
|-
  1F900760h 2h    Master Volume Left
+
| 2 || VU1 || 0x40100000 - 0x4013FFFF ||  0x0 - 3FFFF
   1F900762h 2h    Master Volume Right
+
|-
  1F900764h 2h    Effect Volume Left
+
| 3 || EEDMA || 0x40180000 - 0x401BFFFF ||  0x0 - 3FFFF
  1F900766h 2h    Effect Volume Right
+
|-
  1F900768h 2h    Core1 External Input Volume Left
+
| 4 || FE || 0x40200000 - 0x4023FFFF ||  0x0 - 3FFFF
   1F90076Ah 2h    Core1 External Input Volume Right
 
</pre>
 
 
 
== Memory Allocation ==
 
===ps2_netemu===
 
{| class="wikitable"
 
 
|-
 
|-
! Name !! Size !! page_log2 !! lpar2(netemu 4.81) !! lpar1(lv1 4.81)
+
| 5 || BE || 0x40280000 - 0x402BFFFF ||  0x0 - 3FFFF
 
|-
 
|-
| ra_vu0_dmem  ||   0x1000 (4 KB) || 12 (4 KB) ||     0x3200000 || 0x7200000
+
| 6 || IPU || 0x40300000 - 0x4033FFFF || 0x0 - 3FFFF
|-                                                                      
+
|-
| ra_ee_spr_lo  ||    0x2000 (8 KB) || 12 (4 KB) ||      0x3201000 || 0x7201000
+
|}
|-                                                                      
+
 
| ra_ee_sprx    ||    0x6000 (24 KB) || 12 (4 KB) ||      0x3203000 || 0x7203000
+
===PS2 Memory and Hardware Mapped Registers Layout===
|-                                                                      
+
<pre>
| ra_negmem    ||   0x10000 (64 KB) || 16 (64 KB) ||      0x3210000 || 0x7210000
+
EE Virtual/Physical Memory Map
|-                                                                      
+
  KUSEG: 00000000h-7FFFFFFFh User segment
| ra_iop_spad   ||   0x10000 (64 KB) || 16 (64 KB) ||      0x3220000 || 0x7220000
+
  KSEG0: 80000000h-9FFFFFFFh Kernel segment 0
|-                                                                     
+
  KSEG1: A0000000h-BFFFFFFFh Kernel segment 1
| ra_spu2_pcm   ||   0x10000 (64 KB) || 16 (64 KB) ||      0x3230000 || 0x7230000
+
   KSSEG: C0000000h-DFFFFFFFh Supervisor segment
|-                                                                     
+
  KSEG3: E0000000h-FFFFFFFFh Kernel segment 3
| ra_nulls      ||   0x10000 (64 KB) || 16 (64 KB) ||      0x3240000 || 0x7240000
+
 
|-                                                                     
+
   Virtual    Physical
| ra_itrace    ||   0x10000 (64 KB) || 16 (64 KB) ||      0x3250000 || 0x7250000
+
   00000000h  00000000h  32 MB    Main RAM (first 1 MB reserved for kernel)
|-                                                                     
+
  20000000h  00000000h  32 MB    Main RAM, uncached
| ra_iop_ram    || 0x200000 (2 MB) || 20 (1 MB) ||      0x3300000 || 0x7300000
+
   30100000h  00100000h  31 MB    Main RAM, uncached and accelerated
|-                                                                     
+
   10000000h  10000000h  64 KB   I/O registers
| ra_spu2_ram   || 0x200000 (2 MB) || 20 (1 MB) ||      0x3500000 || 0x7500000
+
  11000000h  11000000h  4 KB     VU0 code memory
|-                                                                     
+
  11004000h  11004000h  4 KB    VU0 data memory
| ra_vu0_code   || 0x400000 (4 MB) || 20 (1 MB) || 0x580000800000 || 0x900000 - 0xC00000
+
   11008000h  11008000h  16 KB   VU1 code memory
|-                                                                     
+
   1100C000h  1100C000h  16 KB   VU1 data memory
| ra_vu0_data   || 0x400000 (4 MB) || 20 (1 MB) ||      0x3700000 || 0x7700000
+
  12000000h  12000000h 8 KB    GS privileged registers
|-                                                                     
+
   1C000000h  1C000000h 2 MB     IOP RAM
| ra_ee_rom_pc || 0x400000 (4 MB) || 20 (1 MB) || 0x580000C00000 || 0xD00000 - 0x1000000
+
   1FC00000h  1FC00000h 4 MB     BIOS, uncached (rom0)
|-                                                                      
+
   9FC00000h  1FC00000h 4 MB     BIOS, cached (rom09)
| ra_ps2_rom   ||  0x400000 (4 MB) || 20 (1 MB) || 0x580001000000 || 0x1100000 - 0x1400000
+
  BFC00000h 1FC00000h 4 MB     BIOS, uncached (rom0b)
|-                                                                      
+
  70000000h  --------- 16 KB   Scratchpad RAM (only accessible via virtual addressing)
| ra_vrc_mem    || 0x1000000 (16 MB) || 20 (1 MB) || 0x600005000000 || 0x1500000 - 0x2400000
+
 
|-                                                                     
+
IOP Physical Memory Map
| ra_sgs_xdr    || 0x1700000 (23 MB) || 20 (1 MB) || 0x64000C000000 || 0x2500000 - 0x3B00000
+
  KUSEG: 00000000h-7FFFFFFFh User segment
|-                                                                     
+
  KSEG0: 80000000h-9FFFFFFFh Kernel segment 0
| ra_ee_ram     || 0x2000000 (32 MB) || 20 (1 MB) || 0x64000E000000 || 0x3C00000 - 0x3F00000, 0x8000000 - 0x9B00000
+
  KSEG1: A0000000h-BFFFFFFFh Kernel segment 1
|-                                                                     
+
 
| ra_ee_ram_pc  || 0x2000000 (32 MB) || 20 (1 MB) || 0x640010000000 || 0x9C00000 - 0xBB00000
+
  Physical
|-                                                                     
+
  00000000h  2 MB     Main RAM (same as on PSX)
| ra_trans_code || 0x3000000 (48 MB) || 20 (1 MB) || 0x680024000000 || 0xBC00000 - 0xEB00000
+
  1D000000h          SIF registers
|}
+
  1F800000h  64 KB    Various I/O registers
 +
  1F900000h  1 KB     SPU2 registers
 +
  1FC00000h  4 MB     BIOS (rom0) - Same as EE BIOS
 +
 
 +
  FFFE0000h (KSEG2)   Cache control
 +
 
 +
Additional Memory
 +
  4 MB  GS VRAM (used for framebuffer, textures, zbuffer, etc)
 +
  2 MB   SPU2 work RAM - quadrupled from PSX's SPU
 +
  8 MB  Memory card
  
  
==Controller==
+
Hardware Mapped Registers
{| class="wikitable sortable"
+
EE Map
|-
+
EE Timers
! ID !! Controller #Number !! Note
+
  100000xxh        Timer 0
|-
+
  100008xxh        Timer 1
| 1 (1-A) || 1 ||
+
  100010xxh        Timer 2
|-
+
  100018xxh        Timer 3
| 2 (2-A) || 2 ||
+
Image Processing Unit (IPU)
|-
+
  10002000h 8h    IPU Command
| 3 (1-B) || 3 ||
+
  10002010h 4h    IPU Control
|-
+
  10002020h 4h    IPU bit pointer control
| 4 (2-B) || 4 ||
+
  10002030h 8h    Top of bitstream
|-
+
  10007000h 10h    Out FIFO (read)
| 5 (1-C) || 5 || Gamepad LED #1 + #4
+
  10007010h 10h    In FIFO (write)
|-
+
Graphics Interface (GIF)
| 6 (2-C) || 6 || Gamepad LED #2 + #4
+
  10003000h 4h    GIF_CTRL - Control register
|-
+
  10003010h 4h    GIF_MODE - Mode setting
| 7 (1-D) || 7 || Gamepad LED #3 + #4
+
  10003020h 4h    GIF_STAT - Status
|-
+
  10003040h 4h    GIF_TAG0 - Bits 0-31 of tag before
|}
+
  10003050h 4h    GIF_TAG1 - Bits 32-63 of tag before
 
+
  10003060h 4h    GIF_TAG2 - Bits 64-95 of tag before
==Peripheral support==
+
  10003070h 4h    GIF_TAG3 - Bits 96-127 of tag before
===ps2_emu.self / ps2_gxemu.self===
+
  10003080h 4h    GIF_CNT - Transfer status counter
#Hub
+
  10003090h 4h    GIF_P3CNT - PATH3 transfer status counter
#Mouse
+
  100030A0h 4h    GIF_P3TAG - Bits 0-31 of PATH3 tag when interrupted
#Keyboard
+
  10006000h 10h    GIF FIFO
#EyeToy
+
DMA Controller (DMAC)
#Head Mount Display
+
  100080xxh        VIF0 - channel 0
#Mic
+
  100090xxh        VIF1 - channel 1
#Ascii Mic
+
  1000A0xxh        GIF - channel 2
#Socom USB Headset
+
  1000B0xxh        IPU_FROM - channel 3
#Usb Headset
+
  1000B4xxh        IPU_TO - channel 4
#Sea Mic Controller
+
  1000C0xxh        SIF0 - channel 5
#Force Feedback device
+
  1000C4xxh        SIF1 - channel 6
#GT Force
+
  1000C8xxh        SIF2 - channel 7
#Momo Force
+
  1000D0xxh        SPR_FROM - channel 8
#Driving Force Pro
+
  1000D4xxh        SPR_TO - channel 9
#G25/G27
+
  1000E000h 4h    D_CTRL - DMAC control
#Momo Racing
+
  1000E010h 4h    D_STAT - DMAC interrupt status
#Flight Force
+
  1000E020h 4h    D_PCR - DMAC priority control
#Force 3D Pro
+
  1000E030h 4h    D_SQWC - DMAC skip quadword
#Modem
+
  1000E040h 4h    D_RBSR - DMAC ringbuffer size
#Guncon2
+
  1000E050h 4h    D_RBOR - DMAC ringbuffer offset
#Densya de GO! controller type 2
+
  1000E060h 4h    D_STADR - DMAC stall address
#Densya de GO! Sincansen senyou controller
+
  1000F520h 4h    D_ENABLER - DMAC disabled status
#Capture Eye
+
  1000F590h 4h    D_ENABLEW - DMAC disable
#Flight Stick
+
Interrupt Controller (INTC)
#Flight Stick 2
+
  1000F000h 4h    INTC_STAT - Interrupt status
#Pop Egg
+
  1000F010h 4h    INTC_MASK - Interrupt mask
#Trance Vibrator
+
Subsystem Interface (SIF)
#PSP
+
  1000F200h 4h    MSCOM - EE->IOP communication
#Compact Flight Controller
+
  1000F210h 4h    SMCOM - IOP->EE communication
#Flash Memory
+
  1000F220h 4h    MSFLAG - EE->IOP flags
#Buzz!
+
  1000F230h 4h    SMFLAG - IOP->EE flags
#Pachi-Slot Controller Kurouto
+
  1000F240h 4h    Control register
#Usb Adapter
+
Privileged GS registers
#Guncon3
+
  12000000h 8h    PMODE - various PCRTC controls
#Multi Train Controller
+
  12000010h 8h    SMODE1
#Para Para Paradise controller
+
  12000020h 8h    SMODE2
 +
  12000030h 8h    SRFSH
 +
  12000040h 8h    SYNCH1
 +
  12000050h 8h    SYNCH2
 +
  12000060h 8h    SYNCV
 +
  12000070h 8h    DISPFB1 - display buffer for output circuit 1
 +
  12000080h 8h    DISPLAY1 - output circuit 1 control
 +
  12000090h 8h    DISPFB2 - display buffer for output circuit 2
 +
  120000A0h 8h    DISPLAY2 - output circuit 2 control
 +
  120000B0h 8h    EXTBUF
 +
  120000C0h 8h    EXTDATA
 +
  120000D0h 8h    EXTWRITE
 +
  120000E0h 8h    BGCOLOR - background color
 +
  12001000h 8h    GS_CSR - control register
 +
  12001010h 8h    GS_IMR - GS interrupt control
 +
  12001040h 8h    BUSDIR - transfer direction
 +
  12001080h 8h    SIGLBLID - signal
  
===ps2_netemu.self===
+
IOP Map
#BD Remote Control
+
Subsystem Interface (SIF)
#PLAYSTATION(R)3 Controller (Vendor ID 0x54C, Product ID 0x268),
+
  1D000000h 4h    MSCOM - EE->IOP communication
#Motion Controller - Move (Vendor ID 0x54C, Product ID 0x3D5),
+
  1D000010h 4h    SMCOM - IOP->EE communication
#Navigation Controller  (Vendor ID 0x54C, Product ID 0x42F)
+
  1D000020h 4h    MSFLAG - EE->IOP flags
#"guncon3"
+
  1D000030h 4h    SMFLAG - IOP->EE flags
<br/>
+
  1D000040h 4h    Control register
Unknown:
+
CDVD Drive
#Vendor ID 0xF0D (Hori), Product ID 0x4A
+
  1F402004h 1h    Current N command
#Vendor ID 0x54C (Sony), Product ID 0x5AF
+
  1F402005h 1h    N command status (R)
 
+
  1F402005h 1h    N command params (W)
==BIOS==
+
  1F402006h 1h    Error
===ps2_netemu.self===
+
  1F402007h 1h    Send BREAK command
Ps2_netemu use integrated PS2 bios included in ps2netemu.elf, not additional file like in ps1_emu. In 4.81 firmware BIOS is located from 0x820A00 to 0x9F09FF (0x820900 to 0x9F08FF in fw4.50). Bios version is Developement v2.20 (22/01/2007).
+
  1F402008h 1h    CDVD I_STAT - interrupt register
 
+
  1F40200Ah 1h    Drive status
Notable thing is that ps2_netemu use the same bios as ps2_gxemu, and ps2onps4. ps2_netemu not boot using ps2_emu bios because of failing RDRAM check.
+
  1F40200Fh 1h    Disk type
 
+
  1F402016h 1h    Current S command
===Content===
+
  1F402017h 1h    S command status
Files included in ps2_netemu/ps2_gxemu bios.
+
  1F402018h 1h    S command params
 
+
Interrupt Control
{| class="wikitable" style="font-size:small;"
+
  1F801070h 4h    I_STAT - Interrupt status
|-
+
  1F801074h 4h    I_MASK - Interrupt mask
! File !! Offset in fw4.81 ps2_netemu !! Offset in exported bin !! Description !! File type (exportable)
+
  1F801078h 1h    I_CTRL - Global interrupt disable
|-
+
DMA registers
| RESET || 0x820A00 || 0x00 || Bootstrap code for the EE and IOP. || BIN
+
  1F80108xh        MDECin - channel 0
|-
+
  1F80109xh        MDECout - channel 1
| ROMDIR || 0x823180 || 0x2780 || The ROMDIR part of the ROM image, which provides information on the location and name of files contained in the image. || BIN
+
  1F8010Axh        SIF2 (GPU) - channel 2
|-
+
  1F8010Bxh        CDVD - channel 3
| EXTINFO || 0x8236C0 || 0x2CC0 || Contains the "EXTINFO" for all files in the ROM image. || BIN
+
  1F8010Cxh        SPU2 Core0 - channel 4
|-
+
  1F8010Dxh        PIO - channel 5
| SBIN || 0x823D30 || 0x3330 || Seems to be the pad controller library for the PS1 monitor. || BIN
+
  1F8010Exh        OTC - channel 6
|-
+
  1F80150xh        SPU2 Core1 - channel 8
| LOGO || 0x82ACD0 || 0xA2D0 || PS1 logo? || BIN
+
  1F80151xh        ??? - channel 9
|-
+
  1F80152xh        SIF0 - channel 10
| IOPBTCONF || 0x83F420 || 0x1EA20 || Boot configuration file for the IOP, during the final phase of the IOP reset. If no UDNL module is specified, the IOP will only have a single IOP reset in the reboot process, with the modules listed in IOPBTCONF.  || BIN
+
  1F80153xh        SIF1 - channel 11
|-
+
  1F80154xh        SIO2in - channel 12
| IOPBTCON2 || 0x83F510 || 0x1EB10 || Boot configuration file for the IOP, for the first phase of the IOP reset (before UDNL is loaded). || BIN
+
  1F80155xh        SIO2out - channel 13
|-
+
 
| SYSMEM || 0x83F5E0 || 0x1EBE0 || System Memory Manager. || ELF
+
  1F8010F0h 4h    DPCR - DMA priority control
|-
+
  1F8010F4h 4h    DICR - DMA interrupt control
| LOADCORE || 0x840800 || 0x1FE00 || The core of IOP module loading. Provides the lowest level of IOP module loading functions. Also handles the startup of the IOP. || ELF
+
  1F801570h 4h    DPCR2 - DMA priority control 2
|-
+
  1F801574h 4h    DICR2 - DMA priority control 2
| EXCEPMAN || 0x842D80 || 0x22380 || Exception manager. || ELF
+
IOP Timers
|-
+
  1F80110xh        Timer 0
| INTRMANP || 0x843960 || 0x22F60 || Interrupt Manager. According to wisi, it is for PS mode. || ELF
+
  1F80111xh        Timer 1
|-
+
  1F80112xh        Timer 2
| INTRMANI || 0x845370 || 0x24970 || Interrupt Manager. According to wisi, it is for IOP mode. || ELF
+
  1F80148xh        Timer 3
|-
+
  1F80149xh        Timer 4
| SSBUSC || 0x8471B0 || 0x267B0 || SSBUS Controller library. The SSBUS seems to be the bus that all peripherals get connected to. It seems to have the power to control the mapping of the device registers, as well as access timing. || ELF
+
  1F8014Axh        Timer 5
|-
+
Serial Interface (SIO2)
| TIMEMANP || 0x847920 || 0x26F20 || Timer Manager (PS mode) || ELF
+
  1F808200h 40h    SEND3 buffer
|-
+
  1F808240h 20h    SEND1/2 buffers
| TIMEMANI || 0x848500 || 0x27B00 || Timer Manager (IOP mode) || ELF
+
  1F808260h 1h    In FIFO
|-
+
  1F808264h 1h    Out FIFO
| DMACMAN || 0x849130 || 0x28730 || DMA Controller Manager. || ELF
+
  1F808268h 4h    SIO2 control
|-
+
  1F80826Ch 4h    RECV1
| SYSCLIB || 0x84C830 || 0x2BE30 || System C Library. || ELF
+
  1F808270h 4h    RECV2
|-
+
  1F808274h 4h    RECV3
| HEAPLIB || 0x84EF90 || 0x2E590 || Memory HEAP LIBrary (i.e. thvpool, thfpool) || ELF
+
Sound Processing Unit (SPU2)
|-
+
  1F900000h 180h  Core0 Voice 0-23 registers
| THREADLIB || 0x84FC90 || 0x2F290 || Multi_Thread_Manager || ELF
+
  1F900190h 4h    Key ON 0/1
 +
  1F900194h 4h    Key OFF 0/1
 +
  1F90019Ah 2h    Core attributes
 +
  1F90019Ch 4h    Interrupt address H/L
 +
  1F9001A8h 4h    DMA transfer address H/L
 +
  1F9001ACh 2h    Internal transfer FIFO
 +
  1F9001B0h 2h    AutoDMA status
 +
  1F9001C0h 120h  Core0 Voice 0-23 start/loop/next addresses
 +
  1F900340h 4h    ENDX 0/1
 +
  1F900344h 2h    Status register
 +
 
 +
  ... above addresses repeat for Core1 starting at 1F900400h ...
 +
 
 +
  1F900760h 2h    Master Volume Left
 +
  1F900762h 2h    Master Volume Right
 +
  1F900764h 2h    Effect Volume Left
 +
  1F900766h 2h    Effect Volume Right
 +
  1F900768h 2h    Core1 External Input Volume Left
 +
  1F90076Ah 2h    Core1 External Input Volume Right
 +
</pre>
 +
 
 +
== Memory Allocation ==
 +
===ps2_netemu===
 +
{| class="wikitable"
 
|-
 
|-
| VBLANK || 0x858A20 || 0x38020 || V-Blank management || ELF
+
! Name !! Size !! page_log2 !! lpar2(netemu 4.81) !! lpar1(lv1 4.81)
 
|-
 
|-
| IOMAN || 0x8597B0 || 0x38DB0 || IO Manager || ELF
+
| ra_vu0_dmem  ||   0x1000 (4 KB) || 12 (4 KB) ||      0x3200000 || 0x7200000
|-
+
|-                                                                     
| MODLOAD || 0x85B720 || 0x3AD20 || IOP module loader. || ELF
+
| ra_ee_spr_lo  ||    0x2000 (8 KB) || 12 (4 KB) ||      0x3201000 || 0x7201000
|-
+
|-                                                                     
| ROMDRV || 0x85DA70 || 0x3D070 || ROM driver. Provides access to the boot ROM (rom0). || ELF
+
| ra_ee_sprx    ||    0x6000 (24 KB) || 12 (4 KB) ||      0x3203000 || 0x7203000
|-
+
|-                                                                     
| ADDDRV || 0x85E960 || 0x3DF60 ||  Adds support for the DVD ROM (rom1:), via ROMDRV. || ELF
+
| ra_negmem    ||  0x10000 (64 KB) || 16 (64 KB) ||     0x3210000 || 0x7210000
|-
+
|-                                                                      
| STDIO || 0x85DDC0 || 0x3D3C0 || Standard I/O library. || ELF
+
| ra_iop_spad  ||   0x10000 (64 KB) || 16 (64 KB) ||     0x3220000 || 0x7220000
|-
+
|-                                                                      
| SIFMAN || 0x85F9B0 || 0x3EFB0 || SIF manager. || ELF
+
| ra_spu2_pcm  ||   0x10000 (64 KB) || 16 (64 KB) ||     0x3230000 || 0x7230000
|-
+
|-                                                                     
| SIFINIT || 0x860F50 || 0x40550 || Initializes the SIF. || ELF
+
| ra_nulls      ||  0x10000 (64 KB) || 16 (64 KB) ||      0x3240000 || 0x7240000
|-
+
|-                                                                      
| EESYNC || 0x861370 || 0x40970 || For synchronizing with the EE, at the end of IOP resets. EESYNC from DNAS images are evil; they also perform a memory wipe of the region from 0x00084000 to .0x00100000. || ELF
+
| ra_itrace    ||  0x10000 (64 KB) || 16 (64 KB) ||      0x3250000 || 0x7250000
|-
+
|-                                                                     
| EENULL || 0x861810 || 0x40E10 ||  The idle thread (id #0) module, in ps2 loaded to 0x00081FC0. || BIN
+
| ra_iop_ram    ||  0x200000 (2 MB) || 20 (1 MB) ||      0x3300000 || 0x7300000
|-
+
|-                                                                     
| PS1ID || 0x861850 || 0x40E50 || Only found in newer boot ROMs || BIN
+
| ra_spu2_ram  ||  0x200000 (2 MB) || 20 (1 MB) ||      0x3500000 || 0x7500000
 +
|-                                                                     
 +
| ra_vu0_code  ||  0x400000 (4 MB) || 20 (1 MB) || 0x580000800000 || 0x900000 - 0xC00000
 +
|-                                                                      
 +
| ra_vu0_data  || 0x400000 (4 MB) || 20 (1 MB) ||     0x3700000 || 0x7700000
 +
|-                                                                      
 +
| ra_ee_rom_pc  || 0x400000 (4 MB) || 20 (1 MB) || 0x580000C00000 || 0xD00000 - 0x1000000
 +
|-                                                                      
 +
| ra_ps2_rom    || 0x400000 (4 MB) || 20 (1 MB) || 0x580001000000 || 0x1100000 - 0x1400000
 +
|-                                                                      
 +
| ra_vrc_mem    || 0x1000000 (16 MB) || 20 (1 MB) || 0x600005000000 || 0x1500000 - 0x2400000
 +
|-                                                                     
 +
| ra_sgs_xdr    || 0x1700000 (23 MB) || 20 (1 MB) || 0x64000C000000 || 0x2500000 - 0x3B00000
 +
|-                                                                      
 +
| ra_ee_ram    || 0x2000000 (32 MB) || 20 (1 MB) || 0x64000E000000 || 0x3C00000 - 0x3F00000, 0x8000000 - 0x9B00000
 +
|-                                                                     
 +
| ra_ee_ram_pc || 0x2000000 (32 MB) || 20 (1 MB) || 0x640010000000 || 0x9C00000 - 0xBB00000
 +
|-                                                                      
 +
| ra_trans_code || 0x3000000 (48 MB) || 20 (1 MB) || 0x680024000000 || 0xBC00000 - 0xEB00000
 +
|}
 +
 
 +
 
 +
==Controller==
 +
{| class="wikitable sortable"
 
|-
 
|-
| LIBFI || 0x861860 || 0x40E60 || Not present in the boot ROM of the SCPH-10000 and SCPH-15000. || BIN
+
! ID !! Controller #Number !! Note
 
|-
 
|-
| PS1VERJ || 0x861950 || 0x40F50 ||  || BIN
+
| 1 (1-A) || 1 ||
 
|-
 
|-
| PS1VERA || 0x861960 || 0x40F60 ||  || BIN
+
| 2 (2-A) || 2 ||
 
|-
 
|-
| PS1VERE || 0x861970 || 0x40F70 ||  || BIN
+
| 3 (1-B) || 3 ||
 
|-
 
|-
| PS1VERC || 0x861980 || 0x40F80 ||  || BIN
+
| 4 (2-B) || 4 ||
 
|-
 
|-
| PS1VERH || 0x861990 || 0x40F90 ||  || BIN
+
| 5 (1-C) || 5 || Gamepad LED #1 + #4
 
|-
 
|-
| OSDSYS || 0x8619A0 || 0x40FA0 || The browser || BIN
+
| 6 (2-C) || 6 || Gamepad LED #2 + #4
 
|-
 
|-
| - || 0x8619B0 || 0x40FB0 ||  || BIN
+
| 7 (1-D) || 7 || Gamepad LED #3 + #4
 
|-
 
|-
| RDRAM || 0x861A00 || 0x41000  || Provides a RDRAM test for the EE at power-on. This is run from RESET. || BIN
+
|}
|-
+
 
| EELOADCNF || 0x864750 || 0x43D50 || Contains the IOP boot configuration file for EELOAD. || BIN
+
==Peripheral support==
|-
+
===ps2_emu.self / ps2_gxemu.self===
| SIFCMD || 0x864900 || 0x43F00 || SIF command module. Contains the SIF command and SIF RPC functions. || ELF
+
#Hub
|-
+
#Mouse
| REBOOT || 0x866B40 || 0x46140 || The reboot service. Receives IOP reset packets from the EE, from across the SIF. || ELF
+
#Keyboard
|-
+
#EyeToy
| LOADFILE || 0x867310 || 0x46910 || The RPC server for MODLOAD || ELF
+
#Head Mount Display
|-
+
#Mic
| EECONF || 0x869A70 || 0x49070 || Loads part of the system configuration from the MECHACON EEPROM. Also configures and resets some peripherals, depending on the model version. In slimlines, and possibly on PS3 EECONF will also load the MAC address. || ELF
+
#Ascii Mic
|-
+
#Socom USB Headset
| - || 0x86A9F0 || 0x49FF0 ||  || BIN
+
#Usb Headset
|-
+
#Sea Mic Controller
| IOPBOOT || 0x86AA00 || 0x4A000 || IOP bootup program || BIN
+
#Force Feedback device
|-
+
#GT Force
| - || 0x86BB60 || 0x4B160 ||  || BIN
+
#Momo Force
|-
+
#Driving Force Pro
| TBIN || 0x86C200 || 0x4B800 ||  The PS1 monitor program. Seems to be the PS1 BIOS. This is started by RESET, when the IOP is in PS1 mode. || BIN
+
#G25/G27
|-
+
#Momo Racing
| XSHA1 || 0x87A170 || 0x59770 || sha1 - this only present in PS3. It is used as additional antipiracy check. It seems that it calculate disc main elf checksum and compares it with some database. Config related?|| ELF
+
#Flight Force
|-
+
#Force 3D Pro
| XLOADFILE || 0x87B140 || 0x5A740 || Updated module || ELF
+
#Modem
|-
+
#Guncon2
| SIO2MAN || 0x87E1F0 || 0x5D7F0 || SIO2 manager. Provides access to the SIO2 interface. || ELF
+
#Densya de GO! controller type 2
|-
+
#Densya de GO! Sincansen senyou controller
| - || 0x87FE20 || 0x5F420 ||  || BIN
+
#Capture Eye
|-
+
#Flight Stick
| MCSERV || 0x881D40 || 0x61340 || RPC server for MCMAN. || ELF
+
#Flight Stick 2
|-
+
#Pop Egg
| - || 0x883A40 || 0x63040 ||  || BIN
+
#Trance Vibrator
|-
+
#PSP
| KROMG || 0x884A00 || 0x64000 ||  || BIN
+
#Compact Flight Controller
|-
+
#Flash Memory
| - || 0x8866C0 || 0x65CC0 ||  || BIN
+
#Buzz!
|-
+
#Pachi-Slot Controller Kurouto
| KROM || 0x886A00 || 0x66000 || Kanji ROM? Not sure where this is used. || BIN
+
#Usb Adapter
|-
+
#Guncon3
| - || 0x8A0870 || 0x7FE70 ||  || BIN
+
#Multi Train Controller
|-
+
#Para Para Paradise controller
| ROMVER || 0x8A0900 || 0x7FF00 || ROM version. || BIN
+
 
|-
+
===ps2_netemu.self===
| - || 0x8A0910 || 0x7FF10 ||  || BIN
+
#BD Remote Control
 +
#PLAYSTATION(R)3 Controller (Vendor ID 0x54C, Product ID 0x268),
 +
#Motion Controller - Move (Vendor ID 0x54C, Product ID 0x3D5),
 +
#Navigation Controller (Vendor ID 0x54C, Product ID 0x42F)
 +
#"guncon3"
 +
<br/>
 +
Unknown:
 +
#Vendor ID 0xF0D (Hori), Product ID 0x4A
 +
#Vendor ID 0x54C (Sony), Product ID 0x5AF
 +
 
 +
==BIOS==
 +
===ps2_netemu.self===
 +
Ps2_netemu use integrated PS2 bios included in ps2netemu.elf, not additional file like in ps1_emu. In 4.81 firmware BIOS is located from 0x820A00 to 0x9F09FF (0x820900 to 0x9F08FF in fw4.50). Bios version is Developement v2.20 (22/01/2007).
 +
 
 +
Notable thing is that ps2_netemu use the same bios as ps2_gxemu, and ps2onps4. ps2_netemu not boot using ps2_emu bios because of failing RDRAM check.
 +
 
 +
===Content===
 +
Files included in ps2_netemu/ps2_gxemu bios.
 +
 
 +
{| class="wikitable" style="font-size:small;"
 
|-
 
|-
| VERSTR || 0x8A0930 || 0x7FF30 || Version string. Probably PS1 ROM will use this because that this string is also present in PlayStation consoles. || BIN
+
! File !! Offset in fw4.81 ps2_netemu !! Offset in exported bin !! Description !! File type (exportable)
 
|-
 
|-
| - || 0x8A0990 || 0x7FF90 ||   || BIN
+
| RESET || 0x820A00 || 0x00 || Bootstrap code for the EE and IOP. || BIN
 
|-
 
|-
| ROMGSCRT || 0x8A0A00 || 0x80000 ||   || BIN
+
| ROMDIR || 0x823180 || 0x2780 || The ROMDIR part of the ROM image, which provides information on the location and name of files contained in the image. || BIN
 
|-
 
|-
| NCDVDMAN || 0x8A3730 || 0x82D30 || It seems to be a heavily stripped-down CDVDMAN module, with no support for some S-command functions like sceCdRI. || ELF
+
| EXTINFO || 0x8236C0 || 0x2CC0 || Contains the "EXTINFO" for all files in the ROM image. || BIN
 
|-
 
|-
| SECRMAN || 0x8B0170 || 0x8F770 || Security Manager. Signing is NOT done with the one in ROM, but with a special version that comes with the utility discs. Looks like PS3 units have a different SECRMAN module from retail sets, similar to PS2 TOOL one. || ELF
+
| SBIN || 0x823D30 || 0x3330 || Seems to be the pad controller library for the PS1 monitor. || BIN
 
|-
 
|-
| MCMAN || 0x8B4630 || 0x93C30 || Memory Card Manager. || ELF
+
| LOGO || 0x82ACD0 || 0xA2D0 || PS1 logo? || BIN
 
|-
 
|-
| PADMAN || 0x8C3AC0 || 0xA30C0 || Pad manager. || ELF
+
| IOPBTCONF || 0x83F420 || 0x1EA20 || Boot configuration file for the IOP, during the final phase of the IOP reset. If no UDNL module is specified, the IOP will only have a single IOP reset in the reboot process, with the modules listed in IOPBTCONF.  || BIN
 
|-
 
|-
| CDVDMAN || 0x8CD210 || 0xAC810 || The CD/DVD manager. || ELF
+
| IOPBTCON2 || 0x83F510 || 0x1EB10 || Boot configuration file for the IOP, for the first phase of the IOP reset (before UDNL is loaded). || BIN
 
|-
 
|-
| CDVDFSV || 0x8D55C0 || 0xB4BC0 || The RPC server for CDVDMAN. || ELF
+
| SYSMEM || 0x83F5E0 || 0x1EBE0 || System Memory Manager. || ELF
 
|-
 
|-
| FILEIO || 0x8DD980 || 0xBCF80 || RPC server for IOMAN. Sony has greatly changed the semantics and design of FILEIO after some point. Connecting an old FILEIO EE RPC client to a newer server will result in a severe IOP crash. || ELF
+
| LOADCORE || 0x840800 || 0x1FE00 || The core of IOP module loading. Provides the lowest level of IOP module loading functions. Also handles the startup of the IOP. || ELF
 
|-
 
|-
| CLEARSPU || 0x8DFA80 || 0xBF080 || Seems to clear/reset the SPU, but is known to cause crashes under some conditions. Not sure if it's buggy or not. Only used by the OSDSYS of the SCPH-10000 and SCPH-15000, probably retained for backward-compatibility. || ELF
+
| EXCEPMAN || 0x842D80 || 0x22380 || Exception manager. || ELF
 
|-
 
|-
| UDNL || 0x8E16C0 || 0xC0CC0 || It is responsible for selecting the modules and starting the IOP, during the final phase of the IOP reset where the desired modules are to be loaded into the IOP. || ELF
+
| INTRMANP || 0x843960 || 0x22F60 || Interrupt Manager. According to wisi, it is for PS mode. || ELF
 
|-
 
|-
| IGREETING || 0x8E35C0 || 0xC2BC0 || Displays boot information (i.e. IOP boot type, EBOOTP, IBOOTP, switch positions for DSW602 and the type of DSW602 board installed || ELF
+
| INTRMANI || 0x845370 || 0x24970 || Interrupt Manager. According to wisi, it is for IOP mode. || ELF
 
|-
 
|-
| EELOAD || 0x8E4620 || 0xC3C20 || The EE ELF loader, which is loaded by LoadExecPS2() to 0x00082000 in PS2 for loading ELFs. || BIN
+
| SSBUSC || 0x8471B0 || 0x267B0 || SSBUS Controller library. The SSBUS seems to be the bus that all peripherals get connected to. It seems to have the power to control the mapping of the device registers, as well as access timing. || ELF
 
|-
 
|-
| XCDVDMAN || 0x8F37A0 || 0xD2DA0 || cdvd_driver - Updated module || ELF
+
| TIMEMANP || 0x847920 || 0x26F20 || Timer Manager (PS mode) || ELF
 
|-
 
|-
| XCDVDFSV || 0x902530 || 0xE1B30 || cdvd_ee_driver - Updated module || ELF
+
| TIMEMANI || 0x848500 || 0x27B00 || Timer Manager (IOP mode) || ELF
 
|-
 
|-
| OSDSND || 0x910960 || 0xEFF60 || OSD sound library. This is actually the tentative sound driver, which is called "librspu2" in the Sony SDK. || ELF
+
| DMACMAN || 0x849130 || 0x28730 || DMA Controller Manager. || ELF
 
|-
 
|-
| PS2LOGO || 0x93B5B0 || 0x11ABB0 || Displays the PlayStation 2 logo from the inserted disc. For newer consoles, if the logo cannot be decrypted properly, it will fall back to the browser. Not actually required to boot games, but the Sony OSDSYS boots PS2 games through this program. || ELF
+
| SYSCLIB || 0x84C830 || 0x2BE30 || System C Library. || ELF
 
|-
 
|-
| XPARAM2 || 0x957F00 || 0x137500 || Store IOP emulation settings/flags || ELF
+
| HEAPLIB || 0x84EF90 || 0x2E590 || Memory HEAP LIBrary (i.e. thvpool, thfpool) || ELF
 
|-
 
|-
| OSDSYS || 0x95A400 || 0x139A00 || The browser, in ps3 is stripped to parse xparam2. No real browser here. || BIN
+
| THREADLIB || 0x84FC90 || 0x2F290 || Multi_Thread_Manager || ELF
 
|-
 
|-
| PIOPRP || 0x998280 || 0x177880 || Present in the PS3 ps2_(gx/soft/net)emu; contains version 3.1.0 of the IOP software (compared to version 1.3.4 on the root). || BIN
+
| VBLANK || 0x858A20 || 0x38020 || V-Blank management || ELF
 
|-
 
|-
| KERNEL || 0x9DC1E0 || 0x1BB7E0 || The EE kernel || BIN
+
| IOMAN || 0x8597B0 || 0x38DB0 || IO Manager || ELF
|}
+
|-
Description source: https://gist.github.com/uyjulian/25291080f083987d3f3c134f593483c5
+
| MODLOAD || 0x85B720 || 0x3AD20 || IOP module loader. || ELF
 
+
|-
===Bios region patch===
+
| ROMDRV || 0x85DA70 || 0x3D070 || ROM driver. Provides access to the boot ROM (rom0). || ELF
 
+
|-
Emulator patch loaded bios image to set proper region based on target_id, and string (separated for readability):
+
| ADDDRV || 0x85E960 || 0x3DF60 || Adds support for the DVD ROM (rom1:), via ROMDRV. || ELF
<pre>
+
|-
          JJjpnJJ AAengAUU EEengEEE EEengEOA HHengJAG ERengERD CCschJCC HKkorJAG HHtchJAG AAspaAMM
+
| STDIO || 0x85DDC0 || 0x3D3C0 || Standard I/O library. || ELF
0x83 plus    0        1        2        3        4        5        6        7        8        9
+
|-
</pre>
+
| SIFMAN || 0x85F9B0 || 0x3EFB0 || SIF manager. || ELF
Note: Additional space after first set is intentional, and exist also in full string.<br><br>
+
|-
'''Target id to region pairing:'''
+
| SIFINIT || 0x860F50 || 0x40550 || Initializes the SIF. || ELF
<pre>
+
|-
* JJjpnJJ  for 0x83
+
| EESYNC || 0x861370 || 0x40970 || For synchronizing with the EE, at the end of IOP resets. EESYNC from DNAS images are evil; they also perform a memory wipe of the region from 0x00084000 to .0x00100000. || ELF
* AAengAUU for 0x84 , others (DECR, etc.)
+
|-
* EEengEEE for 0x85 , 0x87 (also forced if game id from SYSTEM.CNF is xxEx_yy.zzz)
+
| EENULL || 0x861810 || 0x40E10 ||  The idle thread (id #0) module, in ps2 loaded to 0x00081FC0. || BIN
* HHengJAG for 0x86 , 0x8A , 0x8E
+
|-
* AAspaAMM for 0x88 , 0x8F
+
| PS1ID || 0x861850 || 0x40E50 ||  Only found in newer boot ROMs || BIN
* EEengEOA for 0x89
+
|-
* HHtchJAG for 0x8B
+
| LIBFI || 0x861860 || 0x40E60 || Not present in the boot ROM of the SCPH-10000 and SCPH-15000. || BIN
* ERengERD for 0x8C
+
|-
* CCschJCC for 0x8D (unreleased PS3 Chinese model)
+
| PS1VERJ || 0x861950 || 0x40F50 ||  || BIN
</pre>
+
|-
 
+
| PS1VERA || 0x861960 || 0x40F60 ||  || BIN
Bios is patched using EE memory maping addresses, so offset in file + 0x1FC00000.
+
|-
Using HKkorJAG example, addresses below are set to:
+
| PS1VERE || 0x861970 || 0x40F70 ||  || BIN
 
+
|-
* 0x1FC7FF04 = H (x in "0220xD20121227" string)
+
| PS1VERC || 0x861980 || 0x40F80 ||  || BIN
* 0x1FC7FF14 = K
+
|-
* 0x1FC7FF15 = k
+
| PS1VERH || 0x861990 || 0x40F90 ||  || BIN
* 0x1FC7FF16 = o
+
|-
* 0x1FC7FF17 = r
+
| OSDSYS || 0x8619A0 || 0x40FA0 || The browser || BIN
* 0x1FC7FF52 = J (x in "System ROM Version 5.0 12/27/12 x" string)
+
|-
* 0x1FC7FF20 = A
+
| - || 0x8619B0 || 0x40FB0 ||  || BIN
* 0x1FC7FF90 = G
+
|-
 
+
| RDRAM || 0x861A00 || 0x41000  || Provides a RDRAM test for the EE at power-on. This is run from RESET. || BIN
==Virtual PS2 HDD==
+
|-
There are 2 different "PS2 game" contents that can be installed in PS3 HDD (CATEGORY's [[PARAM.SFO#CATEGORY_For_HDD_contents | 2P and 2G ]]).
+
| EELOADCNF || 0x864750 || 0x43D50 || Contains the IOP boot configuration file for EELOAD. || BIN
'''2P''' are games released from PSN as "PS2 Classic" in .PKG format, and '''2G''' are a few real "PS2 DVD discs" that can be installed in the PS3 HDD, this installation is managed by the '''PS2_system_data.pkg'''.
+
|-
 
+
| SIFCMD || 0x864900 || 0x43F00 || SIF command module. Contains the SIF command and SIF RPC functions. || ELF
This games can be installed in real PS2 (in the internall HDD of a PS2 fat)... later this same installation was used in the [http://en.wikipedia.org/wiki/PSX_(DVR) PSX]... and when implemented in PS3 there was needed to use a '''virtual PS2 HDD''' image file keeping the same format than the original HDD used in PS2.
+
|-
 
+
| REBOOT || 0x866B40 || 0x46140 || The reboot service. Receives IOP reset packets from the EE, from across the SIF. || ELF
Game files (extracted from the real PS2 disc) are installed in a '''IMAGE.DAT''' file, this file is a 1:1 "raw copy" of a PS2 HDD.
+
|-
 
+
| LOADFILE || 0x867310 || 0x46910 || The RPC server for MODLOAD || ELF
This '''IMAGE.DAT''' is placed in the "install folder" (inside USRDIR folder) and his size can vary up to 10+GB
+
|-
 
+
| EECONF || 0x869A70 || 0x49070 || Loads part of the system configuration from the MECHACON EEPROM. Also configures and resets some peripherals, depending on the model version. In slimlines, and possibly on PS3 EECONF will also load the MAC address. || ELF
There are 2 different installations: the most common is used to store "game expansions" (e.g: used by additional content in SOCOM games)... the other type of installation is a "full install" and it seems the only game that uses it is "Final Fantasy XI" (main game installation when the game boots for first time + game expansions added later when needed in the same '''IMAGE.DAT''')
+
|-
 
+
| - || 0x86A9F0 || 0x49FF0 ||  || BIN
'''PS2_system_data.pkg''' itself uses an '''IMAGE.DAT''' file (6.43 MB)
+
|-
 
+
| IOPBOOT || 0x86AA00 || 0x4A000 || IOP bootup program || BIN
The structure of this "virtual PS2 HDD" uses an "APA header" and a "APA MBR" + several "APA partitions", some of them containing "PFS filesystems".
+
|-
 
+
| - || 0x86BB60 || 0x4B160 ||  || BIN
Error message trying to boot a CATEGORY "2G" game with hand-made SFO's and invalid IMAGE.DAT file:
+
|-
'''The game partition for this game cannot be created because the installed game is corrupted.'''
+
| TBIN || 0x86C200 || 0x4B800 || The PS1 monitor program. Seems to be the PS1 BIOS. This is started by RESET, when the IOP is in PS1 mode. || BIN
'''To perform this operation, delete the game, and then reinstall the game using the disc.'''
+
|-
 
+
| XSHA1 || 0x87A170 || 0x59770 || sha1 - this only present in PS3. It is used as additional antipiracy check. It seems that it calculate disc main elf checksum and compares it with some database. Config related?|| ELF
*Notes
+
|-
**List of PS2 disc games compatibles with PS3 HDD installation hardcoded in '''dev_flash/vsh/module/[[game_ext_plugin]].sprx'''
+
| XLOADFILE || 0x87B140 || 0x5A740 || Updated module || ELF
**Virtuall PS2 HDD support module '''dev_flash/vsh/module/[[libps2hdd]].sprx''' ?
+
|-
 
+
| SIO2MAN || 0x87E1F0 || 0x5D7F0 || SIO2 manager. Provides access to the SIO2 interface. || ELF
===PS2 System Data (PSN HDD Tool package)===
+
|-
A direct link to the package can be found in NoPayStation database in DLCs
+
| - || 0x87FE20 || 0x5F420 ||  || BIN
 
+
|-
Content ID: IP9100-NPIA00001_00-PS2HDDSYSDAT0001
+
| MCSERV || 0x881D40 || 0x61340 ||  RPC server for MCMAN. || ELF
  QA Digest: 2A876715D42678BB7A6E00C030C0121B
 
HASH: E1B0DBE46FC44190DC7A140681D8B9D4
 
 
 
http://manuals.playstation.net/document/en/ps3/current/game/hddinstall.html
 
 
 
'''Titles supporting HDD installation'''
 
* Nobunaga's Ambition Online and Expansion Packs
 
* Final Fantasy XI (disc1=SCUS97266 disc2=SCUS97269)and Expansion Discs
 
* SOCOM II: U.S. NAVY SEALs and Related discs included with OPM Issue 87, OPM Issue 88, OPM Issue 89, OPM Issue 90
 
* SOCOM 3: U.S. NAVY SEALs
 
* SOCOM: U.S. NAVY SEALs Combined Assault
 
* Front Mission Online
 
* Official PlayStation Magazine Issue 87, 88, 89, 90 Discs
 
([[Talk:Emulation#PS2_HDD | non-official ps2hdd gameslist ]])
 
 
 
===TitleID/DiscID in game_ext_plugin.sprx===
 
 
 
Mainly Final Fantasy 11, Nobunaga Ambition Online, Socom IDs and the required HDD Gigabyte amount for install onto the internal hdd.
 
 
 
Speculation: flags are AND' with 0,1,2 (selected from sys_sm_get_hw_config according to ps2emu hardware flags? 0 = no hw?, 1 = gxemu?, 2=full hw? )
 
 
 
{| class="wikitable" style="font-size:small;"
 
! Flags !! DiscID !! Alternative? DiscID !! GigaByte !! Title !! 0 = VMC<br>1 = IMAGE.DAT !! Internal Name? !! GigaByte
 
 
|-
 
|-
| rowspan="9" | 0xFFFF || SLPS20200 || rowspan="9" | SLPS25200 || rowspan="9" | 0x15 || rowspan="9" | FINAL FANTASY XI || rowspan="9" | 1 || rowspan="9" | PP.SLPM-25200.MAGIC.APPLICATION || rowspan="9" | 0x15
+
| - || 0x883A40 || 0x63040 ||   || BIN
 
|-
 
|-
| SLPM65705
+
| KROMG || 0x884A00 || 0x64000 ||  || BIN
 
|-
 
|-
| SLPM65706
+
| - || 0x8866C0 || 0x65CC0 ||  || BIN
 
|-
 
|-
| SLPM65953
+
| KROM || 0x886A00 || 0x66000 || Kanji ROM? Not sure where this is used. || BIN
 
|-
 
|-
| SLPM66393
+
| - || 0x8A0870 || 0x7FE70 ||  || BIN
 
|-
 
|-
| SLPM66394
+
| ROMVER || 0x8A0900 || 0x7FF00 || ROM version. || BIN
 
|-
 
|-
| SLPM66893
+
| - || 0x8A0910 || 0x7FF10 ||  || BIN
 
|-
 
|-
| SLPM66894
+
| VERSTR || 0x8A0930 || 0x7FF30 || Version string. Probably PS1 ROM will use this because that this string is also present in PlayStation consoles. || BIN
 
|-
 
|-
| SLPM55229
+
| - || 0x8A0990 || 0x7FF90 ||  || BIN
 
|-
 
|-
|rowspan="4" | 0x0001 || SLPM65197 || rowspan="4" | SLPM65197 || rowspan="4" | 0x07 || rowspan="4" | 信長の野望 Online || rowspan="4" | 1 || rowspan="4" | PP.SLPM-65197.MAGIC.APPLICATION || rowspan="4" | 0x07
+
| ROMGSCRT || 0x8A0A00 || 0x80000 ||   || BIN
 
|-
 
|-
| SLPM65783
+
| NCDVDMAN || 0x8A3730 || 0x82D30 || It seems to be a heavily stripped-down CDVDMAN module, with no support for some S-command functions like sceCdRI. || ELF
 
|-
 
|-
| SLPM66539
+
| SECRMAN || 0x8B0170 || 0x8F770 || Security Manager. Signing is NOT done with the one in ROM, but with a special version that comes with the utility discs. Looks like PS3 units have a different SECRMAN module from retail sets, similar to PS2 TOOL one. || ELF
 
|-
 
|-
| SLPM66954
+
| MCMAN || 0x8B4630 || 0x93C30 || Memory Card Manager. || ELF
 
|-
 
|-
|rowspan="5" | 0xFFFF || SCUS97269 || rowspan="5" | SCUS97269 || rowspan="5" | 0x15 || rowspan="5" | FINAL FANTASY XI || rowspan="5" | 1 || rowspan="5" | PP.SCUS-97266.MAGIC.APPLICATION || rowspan="5" | 0x15
+
| PADMAN || 0x8C3AC0 || 0xA30C0 || Pad manager. || ELF
 
|-
 
|-
| SLUS21070
+
| CDVDMAN || 0x8CD210 || 0xAC810 || The CD/DVD manager. || ELF
 
|-
 
|-
| SLUS21404
+
| CDVDFSV || 0x8D55C0 || 0xB4BC0 || The RPC server for CDVDMAN. || ELF
 
|-
 
|-
| SLUS21694
+
| FILEIO || 0x8DD980 || 0xBCF80 || RPC server for IOMAN. Sony has greatly changed the semantics and design of FILEIO after some point. Connecting an old FILEIO EE RPC client to a newer server will result in a severe IOP crash. || ELF
 
|-
 
|-
| SLUS21704
+
| CLEARSPU || 0x8DFA80 || 0xBF080 || Seems to clear/reset the SPU, but is known to cause crashes under some conditions. Not sure if it's buggy or not. Only used by the OSDSYS of the SCPH-10000 and SCPH-15000, probably retained for backward-compatibility. || ELF
 +
|-
 +
| UDNL || 0x8E16C0 || 0xC0CC0 || It is responsible for selecting the modules and starting the IOP, during the final phase of the IOP reset where the desired modules are to be loaded into the IOP. || ELF
 +
|-
 +
| IGREETING || 0x8E35C0 || 0xC2BC0 || Displays boot information (i.e. IOP boot type, EBOOTP, IBOOTP, switch positions for DSW602 and the type of DSW602 board installed || ELF
 +
|-
 +
| EELOAD || 0x8E4620 || 0xC3C20 || The EE ELF loader, which is loaded by LoadExecPS2() to 0x00082000 in PS2 for loading ELFs. || BIN
 +
|-
 +
| XCDVDMAN || 0x8F37A0 || 0xD2DA0 || cdvd_driver - Updated module || ELF
 
|-
 
|-
|rowspan="7" | 0xFFFF || SCUS97275 || rowspan="7" | SCUS97275 || rowspan="7" | 0x02 || rowspan="7" | SOCOM || rowspan="7" | 0 || rowspan="7" | PP.SCUS-97275..SOCOM_II || rowspan="7" | 0x02
+
| XCDVDFSV || 0x902530 || 0xE1B30 || cdvd_ee_driver - Updated module || ELF
 
|-
 
|-
| SCUS97474
+
| OSDSND || 0x910960 || 0xEFF60 || OSD sound library. This is actually the tentative sound driver, which is called "librspu2" in the Sony SDK. || ELF
 
|-
 
|-
| SCUS97340
+
| PS2LOGO || 0x93B5B0 || 0x11ABB0 ||  Displays the PlayStation 2 logo from the inserted disc. For newer consoles, if the logo cannot be decrypted properly, it will fall back to the browser. Not actually required to boot games, but the Sony OSDSYS boots PS2 games through this program. || ELF
 
|-
 
|-
| SCUS97341
+
| XPARAM2 || 0x957F00 || 0x137500 || Store IOP emulation settings/flags || ELF
 
|-
 
|-
| SCUS97342
+
| OSDSYS || 0x95A400 || 0x139A00 ||  The browser, in ps3 is stripped to parse xparam2. No real browser here. || BIN
 
|-
 
|-
| SCUS97442
+
| PIOPRP || 0x998280 || 0x177880 ||  Present in the PS3 ps2_(gx/soft/net)emu; contains version 3.1.0 of the IOP software (compared to version 1.3.4 on the root). || BIN
 
|-
 
|-
| SCUS97545
+
| KERNEL || 0x9DC1E0 || 0x1BB7E0 || The EE kernel || BIN
 
|}
 
|}
 +
Description source: https://gist.github.com/uyjulian/25291080f083987d3f3c134f593483c5
  
In PS2 Emulator same Title IDs are present with following information:
+
===Bios region patch===
SLPS25200 FINAL FANTASY XI          : 0x100000000 (4 GB?)
 
SCUS97269 FINAL FANTASY XI          : 0x300000000 (12GB?)
 
SLPM65981 Front Mission Online      : 0x100000000 (4 GB?)
 
SLPM65197 Nobunagas Ambition Online : 0x200000000 (8 GB?)
 
  
==Emulators management from GameOS==
+
Emulator patch loaded bios image to set proper region based on target_id, and string (separated for readability):
 +
<pre>
 +
          JJjpnJJ  AAengAUU EEengEEE EEengEOA HHengJAG ERengERD CCschJCC HKkorJAG HHtchJAG AAspaAMM
 +
0x83 plus    0        1        2        3        4        5        6        7        8        9
 +
</pre>
 +
Note: Additional space after first set is intentional, and exist also in full string.<br><br>
 +
'''Target id to region pairing:'''
 +
<pre>
 +
* JJjpnJJ  for 0x83
 +
* AAengAUU for 0x84 , others (DECR, etc.)
 +
* EEengEEE for 0x85 , 0x87 (also forced if game id from SYSTEM.CNF is xxEx_yy.zzz)
 +
* HHengJAG for 0x86 , 0x8A , 0x8E
 +
* AAspaAMM for 0x88 , 0x8F
 +
* EEengEOA for 0x89
 +
* HHtchJAG for 0x8B
 +
* ERengERD for 0x8C
 +
* CCschJCC for 0x8D (unreleased PS3 Chinese model)
 +
</pre>
  
===Mountpoints===
+
Bios is patched using EE memory maping addresses, so offset in file + 0x1FC00000.
  dev_ps2disc
+
Using HKkorJAG example, addresses below are set to:
  dev_ps2disc1
 
  
===ps2_netemu syscalls ===
+
* 0x1FC7FF04 = H (x in "0220xD20121227" string)
+
* 0x1FC7FF14 = K
0x0 - 0 = exec smth,
+
* 0x1FC7FF15 = k
      1 = 0x132 panic,
+
* 0x1FC7FF16 = o
      2 = 0x133 panic,  
+
* 0x1FC7FF17 = r
      3 = 0x134 panic,
+
* 0x1FC7FF52 = J (x in "System ROM Version 5.0 12/27/12 x" string)
      4 = 0x135 panic,
+
* 0x1FC7FF20 = A
      else = 0x136 panic)
+
* 0x1FC7FF90 = G
0xC - exec smth
+
 
0x5 - exec smth
+
==Virtual PS2 HDD==
0x6 - exec smth
+
There are 2 different "PS2 game" contents that can be installed in PS3 HDD (CATEGORY's [[PARAM.SFO#CATEGORY_For_HDD_contents | 2P and 2G ]]).
0x10 - panic
+
'''2P''' are games released from PSN as "PS2 Classic" in .PKG format, and '''2G''' are a few real "PS2 DVD discs" that can be installed in the PS3 HDD, this installation is managed by the '''PS2_system_data.pkg'''.
 +
 
 +
This games can be installed in real PS2 (in the internall HDD of a PS2 fat)... later this same installation was used in the [http://en.wikipedia.org/wiki/PSX_(DVR) PSX]... and when implemented in PS3 there was needed to use a '''virtual PS2 HDD''' image file keeping the same format than the original HDD used in PS2.
 +
 
 +
Game files (extracted from the real PS2 disc) are installed in a '''IMAGE.DAT''' file, this file is a 1:1 "raw copy" of a PS2 HDD.
 +
 
 +
This '''IMAGE.DAT''' is placed in the "install folder" (inside USRDIR folder) and his size can vary up to 10+GB
 +
 
 +
There are 2 different installations: the most common is used to store "game expansions" (e.g: used by additional content in SOCOM games)... the other type of installation is a "full install" and it seems the only game that uses it is "Final Fantasy XI" (main game installation when the game boots for first time + game expansions added later when needed in the same '''IMAGE.DAT''')
  
Basically are [[HV_Syscalls#HV_Syscalls|hvsc syscalls]] (xoris    r11, r11, 0x8000)
+
'''PS2_system_data.pkg''' itself uses an '''IMAGE.DAT''' file (6.43 MB)
 
+
 
0x80000000 - [[HV_Syscall_Reference#lv1_allocate_memory]]
+
The structure of this "virtual PS2 HDD" uses an "APA header" and a "APA MBR" + several "APA partitions", some of them containing "PFS filesystems".
0x80000001 - [[HV_Syscall_Reference#lv1_write_htab_entry]]
+
 
  0x80000002 - [[HV_Syscall_Reference#lv1_construct_virtual_address_space]]
+
  Error message trying to boot a CATEGORY "2G" game with hand-made SFO's and invalid IMAGE.DAT file:
  0x80000007 - [[HV_Syscall_Reference#lv1_select_virtual_address_space]]
+
  '''The game partition for this game cannot be created because the installed game is corrupted.'''
  0x80000009 - [[HV_Syscall_Reference#lv1_pause]]
+
  '''To perform this operation, delete the game, and then reinstall the game using the disc.'''
0x8000000F - [[HV_Syscall_Reference#lv1_put_iopte]]
+
 
0x80000012 - [[HV_Syscall_Reference#lv1_construct_event_receive_port]]
+
*Notes
0x8000001A - [[HV_Syscall_Reference#lv1_detect_pending_interrupts]]
+
**List of PS2 disc games compatibles with PS3 HDD installation hardcoded in '''dev_flash/vsh/module/[[game_ext_plugin]].sprx'''
0x8000001B - [[HV_Syscall_Reference#lv1_end_of_interrupt]]
+
**Virtuall PS2 HDD support module '''dev_flash/vsh/module/[[libps2hdd]].sprx''' ?
0x8000001C - [[HV_Syscall_Reference#lv1_connect_irq_plug]]
+
 
0x80000039 - [[HV_Syscall_Reference#lv1_construct_logical_spe]]
+
===PS2 System Data (PSN HDD Tool package)===
0x8000003D - [[HV_Syscall_Reference#lv1_set_spe_interrupt_mask]]
+
A direct link to the package can be found in NoPayStation database in DLCs
0x80000042 - [[HV_Syscall_Reference#lv1_clear_spe_interrupt_status]]
+
 
  0x80000043 - [[HV_Syscall_Reference#lv1_get_spe_interrupt_status]]
+
  Content ID: IP9100-NPIA00001_00-PS2HDDSYSDAT0001
0x80000045 - [[HV_Syscall_Reference#lv1_get_logical_ppe_id]]
+
  QA Digest: 2A876715D42678BB7A6E00C030C0121B
  0x80000049 - [[HV_Syscall_Reference#lv1_set_interrupt_mask]]
+
  HASH: E1B0DBE46FC44190DC7A140681D8B9D4
  0x8000004A - [[HV_Syscall_Reference#lv1_get_logical_partition_id]]
+
 
0x8000004E - [[HV_Syscall_Reference#lv1_get_spe_irq_outlet]]
+
http://manuals.playstation.net/document/en/ps3/current/game/hddinstall.html
0x8000005B - [[HV_Syscall_Reference#lv1_get_repository_node_value]]
+
 
0x8000005F - [[HV_Syscall_Reference#lv1_read_htab_entries]]
+
'''Titles supporting HDD installation'''
0x80000061 - [[HV_Syscall_Reference#lv1_set_vmx_graphics_mode]]
+
* Nobunaga's Ambition Online and Expansion Packs
0x80000062 - [[HV_Syscall_Reference#lv1_set_thread_switch_control_register]]
+
* Final Fantasy XI (disc1=SCUS97266 disc2=SCUS97269)and Expansion Discs
0x80000074 - [[HV_Syscall_Reference#lv1_allocate_io_segment]]
+
* SOCOM II: U.S. NAVY SEALs and Related discs included with OPM Issue 87, OPM Issue 88, OPM Issue 89, OPM Issue 90
0x80000076 - [[HV_Syscall_Reference#lv1_allocate_ioid]]
+
* SOCOM 3: U.S. NAVY SEALs
0x80000078 - [[HV_Syscall_Reference#lv1_construct_io_irq_outlet]]
+
* SOCOM: U.S. NAVY SEALs Combined Assault
0x8000007C - [[HV_Syscall_Reference#lv1_undocumented_function_124]]
+
* Front Mission Online
0x8000007D - [[HV_Syscall_Reference#lv1_undocumented_function_125]]
+
* Official PlayStation Magazine Issue 87, 88, 89, 90 Discs
0x8000007E - [[HV_Syscall_Reference#lv1_undocumented_function_126]]
+
([[Talk:Emulation#PS2_HDD | non-official ps2hdd gameslist ]])
0x80000088 - [[HV_Syscall_Reference#lv1_undocumented_function_136]]
+
 
0x8000008C - [[HV_Syscall_Reference#lv1_construct_lpm]]
+
===TitleID/DiscID in game_ext_plugin.sprx===
0x8000008D - [[HV_Syscall_Reference#lv1_destruct_lpm]]
+
 
0x8000008E - [[HV_Syscall_Reference#lv1_start_lpm]]
+
Mainly Final Fantasy 11, Nobunaga Ambition Online, Socom IDs and the required HDD Gigabyte amount for install onto the internal hdd.
0x8000008F - [[HV_Syscall_Reference#lv1_stop_lpm]]
+
 
0x80000090 - [[HV_Syscall_Reference#lv1_copy_lpm_trace_buffer]]
+
Speculation: flags are AND' with 0,1,2 (selected from sys_sm_get_hw_config according to ps2emu hardware flags? 0 = no hw?, 1 = gxemu?, 2=full hw? )
0x80000091 - [[HV_Syscall_Reference#lv1_add_lpm_event_bookmark]]
+
 
0x80000092 - [[HV_Syscall_Reference#lv1_delete_lpm_event_bookmark]]
+
{| class="wikitable" style="font-size:small;"
0x80000093 - [[HV_Syscall_Reference#lv1_set_lpm_interrupt_mask]]
+
! Flags !! DiscID !! Alternative? DiscID !! GigaByte !! Title !! 0 = VMC<br>1 = IMAGE.DAT !! Internal Name? !! GigaByte
0x80000094 - [[HV_Syscall_Reference#lv1_get_lpm_interrupt_status]]
+
|-
0x80000095 - [[HV_Syscall_Reference#lv1_set_lpm_general_control]]
+
| rowspan="9" | 0xFFFF || SLPS20200 || rowspan="9" | SLPS25200 || rowspan="9" | 0x15 || rowspan="9" | FINAL FANTASY XI || rowspan="9" | 1 || rowspan="9" | PP.SLPM-25200.MAGIC.APPLICATION || rowspan="9" | 0x15
0x80000096 - [[HV_Syscall_Reference#lv1_set_lpm_interval]]
+
|-
0x80000097 - [[HV_Syscall_Reference#lv1_set_lpm_trigger_control]]
+
| SLPM65705
0x80000098 - [[HV_Syscall_Reference#lv1_set_lpm_counter_control]]
+
|-
0x80000099 - [[HV_Syscall_Reference#lv1_set_lpm_group_control]]
+
| SLPM65706
0x8000009A - [[HV_Syscall_Reference#lv1_set_lpm_debug_bus_control]]
+
|-
0x8000009B - [[HV_Syscall_Reference#lv1_set_lpm_counter]]
+
| SLPM65953
0x8000009C - [[HV_Syscall_Reference#lv1_set_lpm_signal]]
+
|-
0x8000009D - [[HV_Syscall_Reference#lv1_set_lpm_spr_trigger]]
+
| SLPM66393
0x800000A3 - [[HV_Syscall_Reference#lv1_write_virtual_uart]]
 
0x800000A4 - [[HV_Syscall_Reference#lv1_set_virtual_uart_param]]
 
0x800000A5 - [[HV_Syscall_Reference#lv1_get_virtual_uart_param]]
 
0x800000A6 - [[HV_Syscall_Reference#lv1_configure_virtual_uart_irq]]
 
0x800000AA - [[HV_Syscall_Reference#lv1_open_device]]
 
0x800000AB - [[HV_Syscall_Reference#lv1_close_device]]
 
0x800000AC - [[HV_Syscall_Reference#lv1_map_device_mmio_region]]
 
0x800000AE - [[HV_Syscall_Reference#lv1_allocate_device_dma_region]]
 
0x800000AF - [[HV_Syscall_Reference#lv1_free_device_dma_region]]
 
0x800000B0 - [[HV_Syscall_Reference#lv1_map_device_dma_region]]
 
0x800000B1 - [[HV_Syscall_Reference#lv1_unmap_device_dma_region]]
 
0x800000B2 - [[HV_Syscall_Reference#lv1_read_pci_config]]
 
0x800000B3 - [[HV_Syscall_Reference#lv1_write_pci_config]]
 
0x800000C5 - [[HV_Syscall_Reference#lv1_connect_interrupt_event_receive_port]]
 
0x800000CF - [[HV_Syscall_Reference#lv1_enable_logical_spe]]
 
0x800000D2 - [[HV_Syscall_Reference#lv1_gpu_open]]
 
0x800000D4 - [[HV_Syscall_Reference#lv1_gpu_device_map]]
 
0x800000D6 - [[HV_Syscall_Reference#lv1_gpu_memory_allocate]]
 
0x800000D9 - [[HV_Syscall_Reference#lv1_gpu_context_allocate]]
 
0x800000DD - [[HV_Syscall_Reference#lv1_gpu_context_iomap]]
 
0x800000E1 - [[HV_Syscall_Reference#lv1_gpu_context_attribute]]
 
0x800000E3 - [[HV_Syscall_Reference#lv1_gpu_context_intr]]
 
0x800000E4 - [[HV_Syscall_Reference#lv1_gpu_attribute]]
 
0x800000F5 - [[HV_Syscall_Reference#lv1_storage_read]]
 
0x800000F6 - [[HV_Syscall_Reference#lv1_storage_write]]
 
0x800000F9 - [[HV_Syscall_Reference#lv1_storage_get_async_status]]
 
 
 
===LPAR / AUTH ID's===
 
{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable" style="border:1px solid #999; border-collapse: collapse;"  
 
|- bgcolor="#cccccc"
 
! Name !! Auth ID !! Self<br />(/dev_flash/ps2emu) !! Notes
 
 
|-
 
|-
| PS2_LPAR  || 0x1020000003000001 || rowspan="2" | ps2_emu.self ||
+
| SLPM66394
 
|-
 
|-
| *SCE_CELLOS_SYSTEM_MGR_PS2  || 0x107000001D000001 ||
+
| SLPM66893
 
|-
 
|-
| PS2_GX_LPAR || 0x1020000003000001 || rowspan="2" | ps2_gxemu.self ||
+
| SLPM66894
 
|-
 
|-
| *SCE_CELLOS_SYSTEM_MGR_PS2_GX || 0x107000001D000001 ||
+
| SLPM55229
 
|-
 
|-
| PS2_SW_LPAR || 0x1020000003000001 || rowspan="2" | ps2_softemu.self ||  
+
|rowspan="4" | 0x0001 || SLPM65197 || rowspan="4" | SLPM65197 || rowspan="4" | 0x07 || rowspan="4" | 信長の野望 Online || rowspan="4" | 1 || rowspan="4" | PP.SLPM-65197.MAGIC.APPLICATION || rowspan="4" | 0x07
 +
|-
 +
| SLPM65783
 +
|-
 +
| SLPM66539
 +
|-
 +
| SLPM66954
 +
|-
 +
|rowspan="5" | 0xFFFF || SCUS97269 || rowspan="5" | SCUS97269 || rowspan="5" | 0x15 || rowspan="5" | FINAL FANTASY XI || rowspan="5" | 1 || rowspan="5" | PP.SCUS-97266.MAGIC.APPLICATION || rowspan="5" | 0x15
 +
|-
 +
| SLUS21070
 +
|-
 +
| SLUS21404
 +
|-
 +
| SLUS21694
 +
|-
 +
| SLUS21704
 +
|-
 +
|rowspan="7" | 0xFFFF || SCUS97275 || rowspan="7" | SCUS97275 || rowspan="7" | 0x02 || rowspan="7" | SOCOM || rowspan="7" | 0 || rowspan="7" | PP.SCUS-97275..SOCOM_II || rowspan="7" | 0x02
 +
|-
 +
| SCUS97474
 +
|-
 +
| SCUS97340
 
|-
 
|-
| *SCE_CELLOS_SYSTEM_MGR_PS2_SW || 0x107000001D000001 ||
+
| SCUS97341
 
|-
 
|-
| PS2_NE_LPAR || 0x1020000003000001 || rowspan="2" | ps2_netemu.self ||
+
| SCUS97342
 
|-
 
|-
| *SCE_CELLOS_SYSTEM_MGR_PS2_NE || 0x107000001D000001 ||
+
| SCUS97442
 
|-
 
|-
 +
| SCUS97545
 
|}
 
|}
  
===Getting compatibility hardware info===
+
In PS2 Emulator same Title IDs are present with following information:
See: [[PS2_Compatibility#Software]]
+
SLPS25200 FINAL FANTASY XI          : 0x100000000 (4 GB?)
 +
SCUS97269 FINAL FANTASY XI          : 0x300000000 (12GB?)
 +
SLPM65981 Front Mission Online      : 0x100000000 (4 GB?)
 +
SLPM65197 Nobunagas Ambition Online : 0x200000000 (8 GB?)
  
===ps2bootparam.dat===
+
==Emulators management from GameOS==
A file created at path: dev_hdd0/tmp/game/'''ps2bootparam.dat'''
 
*See: [[ps2bootparam.dat]]<!--we need this page because we have others like that in wiki-->
 
  
===Cobra core===
+
===Mountpoints===
taken from storage_ext.c
+
  dev_ps2disc
<pre> patch_ps2emu_entry(ps2emu_type); </pre>
+
   dev_ps2disc1
*sets proper ps2_(gx/soft)emu.self path for reboot
 
*patches ss_storage service 0x5004 disc checks on ss_server3.self inside lv1
 
   (Change from Parameter li r3, 2 and li r3, 1E (Drive Authentification) to li r3, 0x29 (Reset Drive))
 
*and the usual either replace read/ioctl for iso etc.
 
  
==Game CONFIG==
+
===ps2_netemu syscalls ===
Some of the PS2 emulator types (such ps2_gxemu.self, ps2netemu.self) are able to load config commands that are applyed "by game ID". The concept of "game patches" is not technically correct because some of the commands does patching functions but others does other things (not patching), and other commands works as switches or sets a value that are enviromental settings for the emulator (not for the game) but because are applyed "by game" should be considered enviromental settings for that specific game, so for simplification purposes you can think in all this data as "game configs"
+
Vector at 0xC00 address.
 +
0x0 - 0 = exec smth,  
 +
      1 = 0x132 lv1 panic,
 +
      2 = 0x133 lv1 panic,
 +
      3 = 0x134 lv1 panic,
 +
      4 = 0x135 lv1 panic,
 +
      else = 0x136 lv1 panic)
 +
0xC - exec smth
 +
0x5 - exec smth
 +
0x6 - exec smth
 +
0x10 - lv1 panic
 +
0x800000XX - HV Syscall where XX is syscall nr.
 +
else (other syscalls) - jump to 0x12670 (FW4.78 - current) for HW_0
 +
                        jump to 0x12050 (FW4.78 - current) for HW_1
  
This "game config" data seems to work in the same way for all the PS2 emulator types but can be located in different places, some are hardcoded inside the emulators itself (inside the .self), and at the time the "PS2 classics" emulator (ps2_netemu.self) was developed this config can be loaded from an external file<!--and there is some more inside some .sprx or inside the ps2 hdd data pkg ?-->
+
List of used HV syscalls:
  
In short, the "game configs" can modify the game image (by patching it) and can be used to configure the virtual PS2 (the emulated machine). And can be loaded from hardcoded data (inside the .self) or from an external file (this feature is supported only by ps2_netemu.self)
+
0x80000000 - [[HV_Syscall_Reference#lv1_allocate_memory]]
 
+
0x80000001 - [[HV_Syscall_Reference#lv1_write_htab_entry]]
The config data consists in a list of concatenated values of 8 bytes lenght (uint32_t), and can be processed like this:
+
0x80000002 - [[HV_Syscall_Reference#lv1_construct_virtual_address_space]]
  union{
+
0x80000007 - [[HV_Syscall_Reference#lv1_select_virtual_address_space]]
  uint32_t command
+
0x80000009 - [[HV_Syscall_Reference#lv1_pause]]
  ...data...
+
0x8000000F - [[HV_Syscall_Reference#lv1_put_iopte]]
  }
+
0x80000012 - [[HV_Syscall_Reference#lv1_construct_event_receive_port]]
 
+
0x8000001A - [[HV_Syscall_Reference#lv1_detect_pending_interrupts]]
===Config Commands===
+
0x8000001B - [[HV_Syscall_Reference#lv1_end_of_interrupt]]
  ps2_netemu.self fw4.50 sub_12D7D8, fw4.81 sub_12E050
+
0x8000001C - [[HV_Syscall_Reference#lv1_connect_irq_plug]]
  params are uint32_t unless noted.
+
0x80000039 - [[HV_Syscall_Reference#lv1_construct_logical_spe]]
 
+
0x8000003D - [[HV_Syscall_Reference#lv1_set_spe_interrupt_mask]]
At the time of writing this, most of the commands are completely or partially unknown.<br />
+
0x80000042 - [[HV_Syscall_Reference#lv1_clear_spe_interrupt_status]]
If you want to read some speculation and brainstorming about them, please join the {{talk}} page
+
0x80000043 - [[HV_Syscall_Reference#lv1_get_spe_interrupt_status]]
 
+
0x80000045 - [[HV_Syscall_Reference#lv1_get_logical_ppe_id]]
{| class="wikitable sortable"
+
0x80000049 - [[HV_Syscall_Reference#lv1_set_interrupt_mask]]
|-
+
  0x8000004A - [[HV_Syscall_Reference#lv1_get_logical_partition_id]]
! CMD ID !! Example !! Notes
+
0x8000004E - [[HV_Syscall_Reference#lv1_get_spe_irq_outlet]]
|-
+
0x8000005B - [[HV_Syscall_Reference#lv1_get_repository_node_value]]
| 0x00|||| Copy following title id for enforcing if available.
+
  0x8000005F - [[HV_Syscall_Reference#lv1_read_htab_entries]]
|-
+
0x80000061 - [[HV_Syscall_Reference#lv1_set_vmx_graphics_mode]]
| 0x01|||| 2x uint32_t Params ( addr, func_id 0-0x3B) - EE_ADD_HOOK
+
0x80000062 - [[HV_Syscall_Reference#lv1_set_thread_switch_control_register]]
 
+
  0x80000074 - [[HV_Syscall_Reference#lv1_allocate_io_segment]]
  Most of 0x01 commands are strictly per game fixes, or at least per game engine.
+
  0x80000076 - [[HV_Syscall_Reference#lv1_allocate_ioid]]
  [Grand Theft Auto 3 (EU)] uses 0x349790, 0x10 (somewhat floats related)
+
0x80000078 - [[HV_Syscall_Reference#lv1_construct_io_irq_outlet]]
  [Max Payne] uses 0x52E9F4, 3 and 0x52EB78, 2 (set lwsync 0)
+
0x8000007C - [[HV_Syscall_Reference#lv1_undocumented_function_124]]
  Maximum Amount of Usage: ?
+
0x8000007D - [[HV_Syscall_Reference#lv1_undocumented_function_125]]
  (The command is used 3 times consecutively by SLUS-20565 (Champions of Norrath) and SLUS-21494 (Need for Speed Carbon)
+
0x8000007E - [[HV_Syscall_Reference#lv1_undocumented_function_126]]
  game configs hardcoded inside ps2_gxemu.self)
+
0x80000088 - [[HV_Syscall_Reference#lv1_undocumented_function_136]]
{| class="wikitable sortable"
+
0x8000008C - [[HV_Syscall_Reference#lv1_construct_lpm]]
|-
+
0x8000008D - [[HV_Syscall_Reference#lv1_destruct_lpm]]
!Function ID!! Notes
+
0x8000008E - [[HV_Syscall_Reference#lv1_start_lpm]]
|-
+
0x8000008F - [[HV_Syscall_Reference#lv1_stop_lpm]]
|0x00||
+
0x80000090 - [[HV_Syscall_Reference#lv1_copy_lpm_trace_buffer]]
|-
+
0x80000091 - [[HV_Syscall_Reference#lv1_add_lpm_event_bookmark]]
|0x01|| FIFA 2000 use it as hook for EE kernel at 0x80001858 (DMAC related).
+
0x80000092 - [[HV_Syscall_Reference#lv1_delete_lpm_event_bookmark]]
|-
+
0x80000093 - [[HV_Syscall_Reference#lv1_set_lpm_interrupt_mask]]
|0x02||
+
  0x80000094 - [[HV_Syscall_Reference#lv1_get_lpm_interrupt_status]]
Max Payne
+
0x80000095 - [[HV_Syscall_Reference#lv1_set_lpm_general_control]]
sets some sync off?
+
0x80000096 - [[HV_Syscall_Reference#lv1_set_lpm_interval]]
|-
+
  0x80000097 - [[HV_Syscall_Reference#lv1_set_lpm_trigger_control]]
|0x03||
+
  0x80000098 - [[HV_Syscall_Reference#lv1_set_lpm_counter_control]]
Max Payne
+
0x80000099 - [[HV_Syscall_Reference#lv1_set_lpm_group_control]]
sets some sync on?
+
  0x8000009A - [[HV_Syscall_Reference#lv1_set_lpm_debug_bus_control]]
|-
+
0x8000009B - [[HV_Syscall_Reference#lv1_set_lpm_counter]]
|0x04|| Used by Castle Shikigami II store 0 on 0x94A290 (EMU Memory)
+
0x8000009C - [[HV_Syscall_Reference#lv1_set_lpm_signal]]
|-
+
0x8000009D - [[HV_Syscall_Reference#lv1_set_lpm_spr_trigger]]
|0x05|| Used by Star Wars games developed by Pandemic Studios (freeze fix), Worms 3D and NBA 08.
+
0x800000A3 - [[HV_Syscall_Reference#lv1_write_virtual_uart]]
|-
+
0x800000A4 - [[HV_Syscall_Reference#lv1_set_virtual_uart_param]]
|0x06||
+
0x800000A5 - [[HV_Syscall_Reference#lv1_get_virtual_uart_param]]
|-
+
0x800000A6 - [[HV_Syscall_Reference#lv1_configure_virtual_uart_irq]]
|0x07||
+
0x800000AA - [[HV_Syscall_Reference#lv1_open_device]]
|-
+
0x800000AB - [[HV_Syscall_Reference#lv1_close_device]]
|0x08|| Harry Potter - Quidditch World Cup US use it at offset 0x2BD45C (EE)
+
0x800000AC - [[HV_Syscall_Reference#lv1_map_device_mmio_region]]
|-
+
0x800000AE - [[HV_Syscall_Reference#lv1_allocate_device_dma_region]]
|0x09|| Harry Potter - Quidditch World Cup US use it at offset 0x2BD620 (EE)
+
0x800000AF - [[HV_Syscall_Reference#lv1_free_device_dma_region]]
|-
+
0x800000B0 - [[HV_Syscall_Reference#lv1_map_device_dma_region]]
|0x0A||
+
0x800000B1 - [[HV_Syscall_Reference#lv1_unmap_device_dma_region]]
|-
+
0x800000B2 - [[HV_Syscall_Reference#lv1_read_pci_config]]
|0x0B||
+
0x800000B3 - [[HV_Syscall_Reference#lv1_write_pci_config]]
|-
+
0x800000C5 - [[HV_Syscall_Reference#lv1_connect_interrupt_event_receive_port]]
|0x0C|| Used by Piglet's Big Game
+
0x800000CF - [[HV_Syscall_Reference#lv1_enable_logical_spe]]
 +
0x800000D2 - [[HV_Syscall_Reference#lv1_gpu_open]]
 +
0x800000D4 - [[HV_Syscall_Reference#lv1_gpu_device_map]]
 +
0x800000D6 - [[HV_Syscall_Reference#lv1_gpu_memory_allocate]]
 +
0x800000D9 - [[HV_Syscall_Reference#lv1_gpu_context_allocate]]
 +
0x800000DD - [[HV_Syscall_Reference#lv1_gpu_context_iomap]]
 +
0x800000E1 - [[HV_Syscall_Reference#lv1_gpu_context_attribute]]
 +
0x800000E3 - [[HV_Syscall_Reference#lv1_gpu_context_intr]]
 +
0x800000E4 - [[HV_Syscall_Reference#lv1_gpu_attribute]]
 +
0x800000F5 - [[HV_Syscall_Reference#lv1_storage_read]]
 +
0x800000F6 - [[HV_Syscall_Reference#lv1_storage_write]]
 +
0x800000F9 - [[HV_Syscall_Reference#lv1_storage_get_async_status]]
 +
0x800000FF - [[HV_Syscall_Reference#lv1_panic]]
 +
 
 +
===LPAR / AUTH ID's===
 +
{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable" style="border:1px solid #999; border-collapse: collapse;"
 +
|- bgcolor="#cccccc"
 +
! Name !! Auth ID !! Self<br />(/dev_flash/ps2emu) !! Notes
 
|-
 
|-
|0x0D|| usleep(100)
+
| PS2_LPAR  || 0x1020000003000001 || rowspan="2" | ps2_emu.self ||  
 
|-
 
|-
|0x0E|| Used 3 times in Need for Speed - Carbon [Collector's Edition] US
+
| *SCE_CELLOS_SYSTEM_MGR_PS2  || 0x107000001D000001 ||  
 
|-
 
|-
|0x0F||  
+
| PS2_GX_LPAR || 0x1020000003000001 || rowspan="2" | ps2_gxemu.self ||
GTA 3 (US)
 
using 0x348B40, 0x18E1F0, 0x348EC8 ( + 200000000 base )
 
0x348B40 = start CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 
0x18E1F0 = start CCollision::ProcessColModels((CMatrix const &, CColModel &, CMatrix const &, CColModel &, CColPoint *, CColPoint *, float *))
 
0x348EC8 = Almost end (only loading values preserved on stack) of CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 
 
|-
 
|-
|0x10||  
+
| *SCE_CELLOS_SYSTEM_MGR_PS2_GX || 0x107000001D000001 ||  
GTA 3 (EU)
 
using 0x349790, 0x18E1F0, 0x349B18 ( + 200000000 base )
 
0x349790 = start CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 
0x18E1F0 = start CCollision::ProcessColModels((CMatrix const &, CColModel &, CMatrix const &, CColModel &, CColPoint *, CColPoint *, float *))
 
0x349B18 = Almost end (only loading values preserved on stack) of CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 
 
|-
 
|-
|0x11||  
+
| PS2_SW_LPAR || 0x1020000003000001 || rowspan="2" | ps2_softemu.self ||
GTA 3 (EU different ver.)
 
using 0x3495C0, 0x18E1F0, 0x349948 ( + 200000000 base )
 
0x3495C0 = start CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 
0x18E1F0 = start CCollision::ProcessColModels((CMatrix const &, CColModel &, CMatrix const &, CColModel &, CColPoint *, CColPoint *, float *))
 
0x349948 = Almost end (only loading values preserved on stack) of CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 
 
|-
 
|-
|0x12|| Used by Disney/Pixar Finding Nemo (fixes the pause menu freeze)
+
| *SCE_CELLOS_SYSTEM_MGR_PS2_SW || 0x107000001D000001 ||  
if condition met...
 
store 0 in [ 0x204FC500 + 200000000 base] 0x4FC500 EE memory
 
 
|-
 
|-
|0x13||  
+
| PS2_NE_LPAR || 0x1020000003000001 || rowspan="2" | ps2_netemu.self ||  
 
|-
 
|-
|0x14||  
+
| *SCE_CELLOS_SYSTEM_MGR_PS2_NE || 0x107000001D000001 ||  
 
|-
 
|-
|0x15||
+
|}
|-
+
 
|0x16|| Used exclusively by Champions of Norrath (NTSC)
+
===Getting compatibility hardware info===
  store 0x01114BA8 in [ 0x208EAB4C + 200000000 base]
+
See: [[PS2_Compatibility#Software]]
  store 0x010C9E40 in [ 0x208EAB6C + 200000000 base]
+
 
 +
===ps2bootparam.dat===
 +
A file created at path: dev_hdd0/tmp/game/'''ps2bootparam.dat'''
 +
*See: [[ps2bootparam.dat]]<!--we need this page because we have others like that in wiki-->
 +
 
 +
===Cobra core===
 +
taken from storage_ext.c
 +
<pre> patch_ps2emu_entry(ps2emu_type); </pre>
 +
*sets proper ps2_(gx/soft)emu.self path for reboot
 +
*patches ss_storage service 0x5004 disc checks on ss_server3.self inside lv1
 +
  (Change from Parameter li r3, 2 and li r3, 1E (Drive Authentification) to li r3, 0x29 (Reset Drive))
 +
*and the usual either replace read/ioctl for iso etc.
 +
 
 +
==Game CONFIG==
 +
Some of the PS2 emulator types (such ps2_gxemu.self, ps2netemu.self) are able to load config commands that are applyed "by game ID". The concept of "game patches" is not technically correct because some of the commands does patching functions but others does other things (not patching), and other commands works as switches or sets a value that are enviromental settings for the emulator (not for the game) but because are applyed "by game" should be considered enviromental settings for that specific game, so for simplification purposes you can think in all this data as "game configs"
 +
 
 +
This "game config" data seems to work in the same way for all the PS2 emulator types but can be located in different places, some are hardcoded inside the emulators itself (inside the .self), and at the time the "PS2 classics" emulator (ps2_netemu.self) was developed this config can be loaded from an external file<!--and there is some more inside some .sprx or inside the ps2 hdd data pkg ?-->
 +
 
 +
In short, the "game configs" can modify the game image (by patching it) and can be used to configure the virtual PS2 (the emulated machine). And can be loaded from hardcoded data (inside the .self) or from an external file (this feature is supported only by ps2_netemu.self). Maximum CONFIG size for ps2_netemu is 16384 bytes.
 +
 
 +
The config data consists in a list of concatenated values of 8 bytes length (uint32_t), and can be processed like this:
 +
  union{
 +
  uint32_t command
 +
  ...data...
 +
}
 +
 
 +
===Config Commands===
 +
ps2_netemu.self fw4.50 sub_12D7D8, fw4.81 sub_12E050
 +
  params are uint32_t unless noted.
 +
 
 +
At the time of writing this, most of the commands are completely or partially unknown.<br />
 +
If you want to read some speculation and brainstorming about them, please join the {{talk}} page
 +
 
 +
<div>
 +
<div style="float:top; text-align:center;">'''PS2 Emulators Config Commands Overview'''</div>
 +
<div style="float:left; width:50%;">
 +
<div style="float:right; padding-right:5px;">
 +
{| class="wikitable mw-datatable" style="font-size:85%; line-height:100%;"
 
|-
 
|-
|0x17||  
+
! rowspan="2" | Command Name !! colspan="3" | Command ID !! rowspan="2" style="padding:1px" | Max<br>Usage !! colspan="4" | Command Data
condition r18 == 0x8000
+
|-
setting:
+
! style="padding:1px" | gxemu !! style="padding:1px" | softemu !! style="padding:1px" | netemu !! Length !! colspan="3" | Params
  stores 0x40490FDA somewhere
+
|-
Note: 0x40490FDA (3.14159250) is the highest float approximation to π in hexadecimal without going over the value.<br />
+
| {{cellcolors|#cc9966}} TitleID enforce || {{no}} || {{no}} || 0x00 || 1 || char[10] || colspan="3" style="text-align:center; background-color:#cc9966;" |  titleid
Probably can improve FPU accuracy for some games.
 
 
|-
 
|-
|0x18||
+
| {{cellcolors|#555555|#ffffff}} Hook EE memory offset with emu function ID || 0x00 || 0x00 || 0x01 || 3 ? || 2 * uint32_t || style="text-align:center; background:#555; color:#fff" | offset || colspan="2" style="text-align:center; background:#555; color:#fff" | functionid
condition [ 0x20183F04 + 200000000 base ] == 0x0C060F2C
 
setting:
 
  stores 0 in address 0x20183F04, 0x20183F34, 0x20183F3C ( + 0x200000000 base )
 
  0x183F0C, sub_46334 (4.70)
 
  0x183F3C, sub_45DA4 (4.70)
 
  0x183D74, sub_47B50 (4.70)
 
 
|-
 
|-
|0x19||  
+
| Set something || 0x01 || 0x01 || 0x02 || 1 || uint32_t || colspan="3" | 1000=?<br>3000=?<br>6000=?
 
|-
 
|-
|0x1A||  
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x02 || 0x02 || 0x03 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
store 0 in [ 0x209FD560 + 200000000 base]
 
store 0 in [ 0x209F9550 + 200000000 base]
 
store 0 in [ 0x20A01570 + 200000000 base]
 
store 0 in [ 0x209F9540 + 200000000 base]
 
store 0 in [ 0x209F5540 + 200000000 base]
 
store 0 in [ 0x209F1530 + 200000000 base]
 
 
|-
 
|-
|0x1B|| store 0 in [ 0x20552168 + 200000000 base]
+
| {{cellcolors|#bd5}} Patch something in SP3 EEDMA || 0x03 || 0x03 || 0x04 || 1 || uint32_t || colspan="3" | 8=?<br>0x10=?
 
|-
 
|-
|0x1C|| store 1 in [ 0x20552168 + 200000000 base]
+
| {{cellcolors|#bd5}} Set DIRECT/DIRECTHL VIF1 in SP3 EEDMA || 0x04 || 0x04 || {{cellcolors|#CC5555}} 0x05 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
|0x1D|| store 0 in [ 0x20556C08 + 200000000 base]
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced by something like: 'Enable buffer size 4k'">Switch</abbr> something || 0x05 || 0x05 || 0x06 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | <abbr title="0x14F80 if enabled">''Nothing''</abbr>
 
|-
 
|-
|0x1E|| store 1 in [ 0x20556C08 + 200000000 base]
+
| {{cellcolors|#c19a6b}} Delay VU xgkick by X cycles || 0x06 || 0x06 || 0x07 || 1 || uint32_t || colspan="3" style="text-align:center; background-color:#c19a6b; cursor:help" title="2=2cycles, 4=4cycles, 8=8cycles" | cycles
 
|-
 
|-
|0x1F|| store 0 in [ 0x205243D8 + 200000000 base]
+
| {{cellcolors|#c19a6b}} Patch VU memory by <abbr title="two bit masks for original and patched data">bitmask</abbr> || 0x07 || 0x07 || 0x08 || 3 || 8 * uint32_t || colspan="3" style="text-align:center; background-color:#c19a6b; cursor:help" title="read mask, read mask, original opcode, original opcode, write mask, write mask, replace opcode, replace opcode" | MASK
 
|-
 
|-
|0x20|| store 1 in [ 0x205243D8 + 200000000 base]
+
| {{cellcolors|lightgreen}} Patch EE memory with 2 opcodes || 0x08 || 0x08 || 0x09 || <abbr title="command">1</abbr>→<abbr title="list">32</abbr> || uint32_t + LIST || style="text-align:center; background-color:lightgreen;" | count || colspan="2" style="text-align:center; background-color:lightgreen; cursor:help" title="offset, original opcode, original opcode, replace opcode, replace opcode" | LIST
 
|-
 
|-
|0x21|| store 0 in [ 0x20524F88 + 200000000 base]
+
| {{cellcolors|lightgreen}} Patch EE memory with 1 opcode || {{no}} || {{no}} || 0x0A || <abbr title="command">1</abbr>→<abbr title="list">32</abbr> || uint32_t + LIST || style="text-align:center; background-color:lightgreen;" | count || colspan="2" style="text-align:center; background-color:lightgreen; cursor:help" title="offset, original opcode, replace opcode" | LIST
 
|-
 
|-
|0x22|| store 1 in [ 0x20524F88 + 200000000 base]
+
| {{cellcolors|lightgreen}} Patch game disc by sector & offset || 0x09 || 0x09 || 0x0B || <abbr title="command">1</abbr>→<abbr title="list">47</abbr> || uint32_t + LIST || style="text-align:center; background-color:lightgreen;" | count || colspan="2" style="text-align:center; background-color:lightgreen; cursor:help" title="sector id, offset, sizeof present opcodes, replace opcodes, original opcodes" | LIST
 
|-
 
|-
|0x23|| store 0 in [ 0x2047E7F8 + 200000000 base]
+
| Set something || 0x0A || 0x0A || 0x0C || 1 || 2 * uint16_t || 0=?<br>1=?<br>2=? || colspan="2" | 0=?<br>0x180=?<br>0x400=?<br>0x800=?
 
|-
 
|-
|0x24|| store 1 in [ 0x2047E7F8 + 200000000 base]
+
| Set something || 0x0B || 0x0B || 0x0D || 1 || uint32_t || colspan="3" | 0=?<br>1=?(default?)
 
|-
 
|-
|0x25|| store 0 in [ 0x204802B8 + 200000000 base]
+
| {{cellcolors|#ff9933}} COP2 and FPU ADD/SUB accurate opcode || 0x0C || 0x0C || 0x0E || 32 || uint32_t || colspan="3" style="text-align:center; background-color:#ff9933;" | offset
 
|-
 
|-
|0x26|| store 1 in [ 0x204802B8 + 200000000 base]
+
| {{cellcolors|#ff9933}} COP2 and FPU ADD/SUB accurate range || 0x0D || 0x0D || 0x0F || 32 || 2 * uint32_t || style="text-align:center; background:#ff9933; cursor:help" title="min 0x100000" | start offset || colspan="2" style="text-align:center; background:#ff9933; cursor:help" title="max 0x1FFFFFFF" | end offset
 
|-
 
|-
|0x27|| store 0 in [ 0x20586348 + 200000000 base]
+
| {{cellcolors|#ff9933}} COP2 MUL/DIV accurate range || 0x0E || 0x0E || 0x10 || 32 || 2 * uint32_t || style="text-align:center; background:#ff9933; cursor:help" title="min 0x100000" | start offset || colspan="2" style="text-align:center; background:#ff9933; cursor:help" title="max 0x1FFFFFFF" | end offset
 
|-
 
|-
|0x28|| store 1 in [ 0x20586348 + 200000000 base]
+
| {{cellcolors|#ff9933}} VU ADD/SUB accurate opcode || 0x0F || 0x0F || 0x11 || 32 || uint32_t || colspan="3" style="text-align:center; background-color:#ff9933;" | offset
 
|-
 
|-
|0x29|| store 0 in [ 0x205868A8 + 200000000 base]
+
| {{cellcolors|#588|#fff}} VU related ? || 0x10 || 0x10 || 0x12 || <abbr title="command">1</abbr>→<abbr title="list">63</abbr> || uint32_t + LIST || style="text-align:center; background:#588; color:#fff" | flags ? || colspan="2" style="text-align:center; background:#588; color:#fff" | LIST
 
|-
 
|-
|0x2A|| store 1 in [ 0x205868A8 + 200000000 base]
+
| {{cellcolors|#dda}} Memory Card Delay || 0x11 || 0x11 || 0x13 || 1 || uint64_t || colspan="3" style="text-align:center; background-color:#dda" | time ?
 
|-
 
|-
|0x2B||  
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x12 || 0x12 || 0x14 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
|0x2C|| Shin Onimusha - Dawn of Dreams Fix ingame IPU runtime - JPN/US release [https://github.com/PCSX2/pcsx2/issues/1141 bug]
+
| {{cellcolors|#e3a}} Set something with bit flags || 0x13 || 0x13 || 0x15 || 1 || uint32_t || colspan="3" | 2=? (<abbr title="only valid for gxemu and softemu, when used in netemu the result is the same than using value 4">gxemu and softemu only</abbr>)<br>0x14=? (<abbr title="only valid for softemu, when used in netemu the result is the same than using value 4">softemu only</abbr>)<br>4=?
 
|-
 
|-
|0x2D|| Shin Onimusha - Dawn of Dreams Fix ingame IPU runtime - PAL release [https://github.com/PCSX2/pcsx2/issues/1141 bug]
+
| ? || 0x14? || 0x14? || {{cellcolors|#CC5555}} 0x16 || ? || colspan="4" | ?
 
|-
 
|-
|0x2E||  
+
| Set something || 0x15 || 0x15 || 0x17 || 1 || uint8_t || colspan="3" | 0=?<br>1=?
 
|-
 
|-
|0x2F|| condition [ 0x37B0C4 + 200000000 base ] == 0 -> 00 10 0B 98
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x16 || 0x16 || {{cellcolors|#CC5555}} 0x18 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
|0x30|| condition [ 0x37B704 + 200000000 base ] == 0 -> 00 10 0B 98
+
| {{cellcolors|#ffff99}} Force analog controller mode || {{no}} || 0x17 || 0x19 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
|0x31|| condition [ 0x37630C + 200000000 base ] == 0 -> 00 10 0B A8
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x17 || 0x18 || 0x1A || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
|0x32|| condition [ 0x37BB0C + 200000000 base ] == 0 -> 00 10 0B A8
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x18 || 0x19 || 0x1B || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
|0x33||  
+
| {{cellcolors|#ffff99}} Emulate Multitap || 0x19? || 0x1A? || 0x1C || 1 || uint8_t || colspan="3" style="text-align:center; background-color:#ffff99" | port
 
|-
 
|-
|0x34|| not filled
+
| {{cellcolors|#ffff99}} Set Multitap || 0x1A || 0x1B || 0x1D || 1 || uint8_t || colspan="3" style="text-align:center; background-color:#ffff99" | order
 
|-
 
|-
|0x35||  
+
| {{cellcolors|#ffff99}} Multitap related || 0x1B || {{no}} || 0x1E || 1 || uint8_t || colspan="3" | 3=?
 
|-
 
|-
|0x36||  
+
| Set something || 0x1C || 0x1C || 0x1F || 1 || uint32_t || colspan="3" | 200=?<br>1000=?(default)
 
|-
 
|-
|0x37||  
+
| Set something || 0x1D || 0x1D || 0x20 || 1 || uint64_t  || colspan="3" | 10=?<br>60=?(default)<br>100=?<br>120=?<br>200=?<br>240=?
 
|-
 
|-
|0x38||
+
| Set something || 0x1E || 0x1E || 0x21 || 1 || uint32_t || colspan="3" | 0=?<br>1=?<br>2=?
 +
|}
 +
</div>
 +
</div>
 +
<div style="float:right; width:50%;">
 +
<div style="float:left; padding-left:5px;">
 +
{| class="wikitable mw-datatable" style="font-size:85%; line-height:100%;"
 
|-
 
|-
|0x39||  
+
! rowspan="2" | Command Name !! colspan="3" | Command ID !! rowspan="2" style="padding:1px" | Max<br>Usage !! colspan="4" | Command Data
 
|-
 
|-
|0x3A||  
+
! style="padding:1px" | gxemu !! style="padding:1px" | softemu !! style="padding:1px" | netemu !! Length !! colspan="3" | Params
 
|-
 
|-
|0x3B|| GTA 3 (JP/AS) ? using 0x351210, 0x18F590, 0x351568 ( + 200000000 base )
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x1F || 0x1F || 0x22 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
|}
 
 
|-
 
|-
|0x02|||| 1 Param, Config file revision ?
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced by something like: 'Enable buffer size 4k'">Switch</abbr> something || {{no}} || 0x20 || 0x23 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | <abbr title="0x14E00 if enabled">''Nothing''</abbr>
 
|-
 
|-
|0x03|||| 0 Param, sets something 0
+
| {{cellcolors|#ddddff}} Internal image aspect ratio ? || 0x20 || 0x21 || 0x24 || 1 || uint64_t || colspan="3" | 12000=?<br>48000=?
 
|-
 
|-
|0x04|||| 1 Param uint32_t index (i*0x80, special 0x12345: 0x91a280?)
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x21 || 0x22 || {{cellcolors|#CC5555}} 0x25 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
|0x05|||| read next command
+
| {{cellcolors|#ff9933}} FPU ADD/SUB accurate range || 0x22 || 0x23 || 0x26 || 32 || 2 * uint32_t || style="text-align:center; background:#ff9933; cursor:help" title="min 0x100000" | start offset || colspan="2" style="text-align:center; background:#ff9933; cursor:help" title="max 0x1FFFFFFF" | end offset
 
|-
 
|-
|0x06|||| 0 Param, sets something 0x14F80 (85888'd)
+
| {{cellcolors|#ff9933}} COP2 ADD/SUB accurate range || 0x23 || 0x24 || 0x27 || 32 || 2 * uint32_t || style="text-align:center; background:#ff9933; cursor:help" title="min 0x100000" | start offset || colspan="2" style="text-align:center; background:#ff9933; cursor:help" title="max 0x1FFFFFFF" | end offset
 
|-
 
|-
|0x07|||| 1 Param uint32_t (default 1)
+
| {{cellcolors|#aaf}} Set something <abbr title="PS2 MECHACON related">(CDVD)</abbr> || 0x24? || 0x25? || 0x28 || 1 || uint32_t || colspan="3" | 0=?<br>1=?<br>2=?<br>3=?
Delay VU xgkick by X cycles
 
 
|-
 
|-
|0x08|||| 8 Param uint32_t (read mask,read mask, original opcode, original opcode, write mask, write mask, replace opcode, replace opcode)
+
| {{cellcolors|#aaf}} CDVD read/seek timings ? || 0x25? || 0x26? || 0x29 || 1 || 2 * uint32_t || ? || colspan="2" | ?
Maximum Amount of Usage: 3 times
 
Patch VU memory by mask
 
 
|-
 
|-
|0x09|||| uint32_t count, <list> (offset, original opcode, original opcode, replace opcode, replace opcode) - EE_INSN_REPLACE64
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x26? || 0x27 || 0x2A || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
  [Dark Cloud] uses 1
 
  [Dead Or Alive 2 Hardcore] uses 1
 
Maximum List Count: 32
 
 
|-
 
|-
|0x0A|||| uint32_t count, <List> (offset, original opcode, replace opcode) - EE_INSN_REPLACE32 --- command present only in the ps2_netemu
+
| {{cellcolors|#aaf}} <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something <abbr title="PS2 MECHACON related">(CDVD)</abbr> || 0x27? || 0x28 || 0x2B || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
  [Deadly Strike] uses 1
 
  [Dragon Force] uses 2
 
Maximum List Count: 32
 
 
|-
 
|-
|0x0B|||| 1 Param uint32_t count, <List> {sector id, offset, sizeof present opcodes, replace opcodes, original opcodes} - MECHA_SET_PATCH
+
| Set something || 0x28 || 0x29 || 0x2C || 1 || uint32_t || colspan="3" | 1=?
offset on disc = sector id * sector size + offset (-0xC for DVD [not always applied, see Psychonauts or
+
|-
SRS: Street Racing Syndicate configs], +0x18 for CD [raw 2352 sector size])
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || 0x29? || 0x2A || {{cellcolors|#CC5555}} 0x2D || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
  [Dead Or Alive 2 Hardcore] uses 7
+
|-
  [Gradius V] uses 1
+
| Set something || 0x2A || 0x2B || 0x2E || 1 || uint32_t || colspan="3" | 0x172=?
  [Grand Theft Auto III] uses 1
 
  [Katamari Damacy] uses 1
 
  [Manhunt] uses 1
 
  [Odin Sphere] uses 2
 
  [Primal] uses 1
 
  [Psychonauts] uses 1
 
  [Syphon Filter The Omega Strain] uses 1
 
Maximum List Count: 47
 
 
|-
 
|-
|0x0C|||| 1 Param (uint16_t, uint16_t) --- 0/1/2,<0x63>
+
| Set something || 0x2B || {{no}} ? || 0x2F || 1 || uint32_t || colspan="3" | 1=?
 
|-
 
|-
|0x0D|||| 1 Param, true/false
+
| {{cellcolors|lightgrey}} ? || {{no}} ? || {{no}} ? || style="background:#CC5555;" | 0x30<br>0x31<br>0x32<br>0x33<br>0x34 || {{cellcolors|lightgrey}} ? || colspan="4" {{cellcolors|lightgrey|black|center}} ?
Default Init = 1?
 
0 == skip some code,
 
1 == some code + checks
 
 
|-
 
|-
|0x0E|||| 1 Param offset --- Improves ADD/SUB accuracy for selected offset (incl. Floats)
+
| {{cellcolors|#aaa}} Enable Force Flip Field || {{no}} || {{no}} || 0x35 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
  [Rygar] only has 0x147DA8 sub.s  $f12, $f20, $f12
 
Used in official configs: SCUS97501=0x3C458C, SCES53642=0x3C4854, SLUS21026=0x386864, SLUS20916=0x121F64, SLUS20437=0x11EDF0
 
Maximum Amount of Usage: 31 times
 
 
|-
 
|-
|0x0F|||| List <uint32_t Param, uint32_t Param> --- More accurate memory range (FPU mul/div/sub/add accuracy related)
+
| {{cellcolors|lightgrey}} ? || {{no}} ? || {{no}} ? || style="background:#CC5555;" | 0x36<br>0x37<br>0x38<br>0x39<br>0x3A<br>0x3B<br>0x3C || {{cellcolors|lightgrey}} ? || colspan="4" {{cellcolors|lightgrey|black|center}} ?
  [Dark Cloud] uses 0x239334, 0x1FFFFFF
 
  [Grand Theft Auto SA] uses 0x1E46DC, 0x1E4AE8
 
Maximum List Count: 31
 
 
|-
 
|-
|0x10|||| List <uint32_t Param, uint32_t Param> --- More accurate memory range (COP2, mul/div/sub/add accuracy related) - MULDIV_Accurate_range
+
| {{cellcolors|#cc9966}} Config revision || {{no}} || {{no}} || 0x3D || 1 || uint32_t || colspan="3" style="text-align:center; background-color:#cc9966" | revision
Maximum List Count: 31
 
 
|-
 
|-
|0x11|||| 1x uint32_t Param. ADD/SUB accuracy related, all emulated ADD/SUB instruction variations check that value. Param seems to be VU memory offset (need confirmation).
+
| Disable something || {{no}} || {{no}} || 0x3E || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
Used in official configs: SLUS21172=0x208, SLUS20878=0x140,0x368,0x570
 
Maximum Amount of Usage: 31 times
 
 
|-
 
|-
|0x12|||| <List> (uint32_t count,
+
| Set something || {{no}} || {{no}} || 0x3F || 1 || uint32_t || colspan="3" | ?
  [Primal] uses 0xD
 
  [Rayman Arena] uses 0x11
 
  [Syphon Filter: The Omega Strain] uses 0x5
 
00 00 00 0?
 
00 00 00 00
 
type? count?
 
... 
 
Maximum List Count: 63
 
 
|-
 
|-
| 0x13|||| 1x uint64_t Param --- Memory card timing related
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || {{no}} || {{no}} || 0x40 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
Jak X: Combat Racing uses 0xf960 (63840)
 
Netsu Chu! Pro Yakyuu 2004 uses 0xf960 (63840)
 
Phantasy Star Universe uses 0x9bdc (39900)
 
WRC II Extreme uses 0x9bdc (39900)
 
Burnout Dominator uses 0x9bdc (39900)
 
Jissen Pachi-Slot Hisshouhou! Kemono-Oh uses 0x1d394 (119700)
 
Used in official configs: SCUS97429=0xF960(63840), SLPM66031=0x9BDC(39900), SLPS20131=0x1D394(119700)
 
 
|-
 
|-
| 0x14|||| 0 Param, sets something 1
+
| Disable something || {{no}} || {{no}} || 0x41 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
| 0x15|| 4 || 1 Param ( <1, >1 ), different settings/mode?
+
| {{cellcolors|lightgreen}} Patch EE memory by overlay || {{no}} || {{no}} || 0x42 || <abbr title="command">1</abbr>→<abbr title="list">1023</abbr> || 2 * uint32_t + LIST || style="text-align:center; background-color:lightgreen;" | offset || style="text-align:center; background-color:lightgreen;" | count || style="text-align:center; background-color:lightgreen; cursor:help" title="opcode,opcode,opcode, etc..." | LIST
[Bloodrayne 2] uses 4
 
[GRIMgRiMoiRe] uses 4
 
[Mana Khemia 2] uses 4
 
[Odin Sphere] uses 4
 
[SMT Persona 3 FES] uses 4
 
 
|-
 
|-
| 0x16|||| = 0x05 (next id)
+
| Set something || {{no}} || {{no}} || 0x43 || 1 || uint32_t || colspan="3" | 0=?(default)<br>1=?
 
|-
 
|-
| 0x17||1 || 1 Param, true/false?
+
| {{cellcolors|#fcc}} Disable smoothing filter || {{no}} || {{no}} || 0x44 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
[Bully] uses 1
 
 
|-
 
|-
| 0x18|||| = 0x16 = 0x05 (next id)
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced either by DISABLE or ENABLE">Switch</abbr> something || {{no}} || {{no}} || 0x45 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
| 0x19 |||| 0 Param, sets something 1 --- SB_SIO2 related?
+
| {{cellcolors|#aaa}} Enable L2H Improvement || {{no}} || {{no}} || 0x46 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
[Grand Theft Auto III]
 
[Red Faction 2]
 
[Siren]
 
 
|-
 
|-
| 0x1A|||| 0 Param, sets something 1
+
| {{cellcolors|#aaa}} Enable XOR CSR || {{no}} || {{no}} || 0x47 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 
|-
 
|-
| 0x1B|||| 0 Param, sets something 1
+
| {{cellcolors|#aaa}} Set VSYNC IPU & Delay || {{no}} || {{no}} || 0x48 || 1 || 2 * uint32_t || style="text-align:center; background-color:#aaa; cursor:help" title="1=No IPU, 2=IPU, 3=Anytime" | ipu || colspan="2" style="text-align:center; background-color:#aaa; cursor:help" title="20000=Conservative, 100000=Normal, 250000=Agressive, Any other" | delay
[Mana Khemia 2]
 
 
|-
 
|-
| 0x1C |||| read uint32_t (use uint8_t) Param (default 3)
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced by something like: 'Enable buffer size 4k'">Switch</abbr> something  || {{no}} || {{no}} || 0x49 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | <abbr title="0xB,0,0 if enabled">''Nothing''</abbr>
 
|-
 
|-
| 0x1D |||| read uint32_t (use uint8_t) Param
+
| <abbr title="After the purpose of this command is identifyed, this word should be replaced by something like: 'Enable buffer size 4k'">Switch</abbr> something || {{no}} || {{no}} || 0x4A || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | <abbr title="0x15100 if enabled">''Nothing''</abbr>
 
|-
 
|-
| 0x1E |||| read uint32_t (use uint8_t) Param
+
| Set something || {{no}} || {{no}} || 0x4B || 1 || 2 * uint32_t || ? || colspan="2" | ?
 
|-
 
|-
| 0x1F |||| uint32_t Param (default 0x3E8?)
+
| Set something || {{no}} || {{no}} || 0x4C || 1 || 2 * uint32_t || ? || colspan="2" | ?
 
|-
 
|-
| 0x20|||| uint64_t Param (default 0x3C)
+
| Set something || {{no}} || {{no}} || 0x4D || 1 || uint32_t || colspan="3" | ?
Config value is used as multiplier for some value, and result is used in vsync related runtimes.
 
Is worth to note that 0x3C is default multiplier even for PAL titles, so is not stricly related to framerate,
 
but to vsync counters (where 0x3C is still wrong anyway..). Result of multiply is also compared at some point to vsync delay value.
 
 
|-
 
|-
| 0x21|| 1 || 1 Param:
+
| ? || {{no}} || {{no}} || 0x4E || 1 || ? || colspan="3" | ?
0 = sets an option from 1 to 0 and another one to 0,
 
1 = sets an option from 1 to 0 and another one to 1,
 
2 = sets an option from 1 to 1 and another one to 0
 
  [Fatal Frame II] uses 0
 
  [Grand Theft Auto Vice City] uses 1
 
  [Grand Theft Auto III (EU)] uses 1
 
  [SMT Persona 3 FES] uses 0
 
 
|-
 
|-
| 0x22|||| 0 Param, sets something 1
+
| ? || {{no}} || {{no}} || 0x4F || 1 || ? || colspan="3" | ?
 
|-
 
|-
| 0x23|||| 0 Param --- memcpy 0x100 Bytes and sets 0x14E00
+
| {{cellcolors|#ffff99}} Enable pressure sensitive controls || {{no}} || {{no}} || 0x50 || 1 || colspan="4" style="text-align:center; background-color:lightgrey;" | ''Nothing''
 +
|}
 +
</div>
 +
</div>
 +
</div>
 +
<br style="clear: both;" />
 +
 
 +
 
 +
<!-- We need to find a better way to organize the commands info below, right now all the info is "constricted" inside the same table but is better to take them out of the table to have more freedon when adding comments, etc... Are a lot so by now i prefer to dont make page sections for every command. Im going to try something that visually looks like page sections but are not (so are not going to be displayed in the TOC at top of the page). With this change we are moving forward because the command info is not going to be inside the same table anymore, im going to split them but the visual look and other details are not going to be definitive because later can be converted into page sections if someone insists in it -->
 +
 
 +
 
 +
{{Boxcomm|id=0x00|name=Title ID Enforce|data=1x String in format: ABCD-12345}}
 +
Restricts the CONFIG to be used only by a specific [[Template:TITLE_ID_for_Physical_Media|Title ID]]<br>
 +
The presence of this command in the CONFIG is optional. If present it needs to be located always at the last position in the CONFIG
 +
 
 +
{{Boxcomm|id=0x01|name=EE_ADD_HOOK|data=2x uint32_t Params (addr, func_id 0-0x3B)}}
 +
Most of the hooks availables in netemu command 0x01 are fixes for a specific game, or a game engine<br>
 +
The Maximum Amount of times netemu command 0x01 can be used consecutivelly in the same config is 255. This is actually limit for EE hooks at all, 0x01 don't have own limit.
 +
 
 +
{| class="wikitable" style="width:100%; font-size:0.9em; line-height:90%"
 
|-
 
|-
| 0x24|||| uint64_t Param
+
!Function ID!! Notes
 
|-
 
|-
| 0x25|||| = 0x18 = 0x16 = 0x05 (next id)
+
|0x00||  
 
|-
 
|-
| 0x26|||| List <uint32_t Param,uint32_t Param> --- Improves ADD/SUB accuracy for selected memory range (incl. Floats) - FPU_Accurate_range
+
|0x01|| FIFA 2000 use it as hook for EE kernel at 0x80001858 (DMAC related).  
 
  [Bloodrayne 2] uses 0x340000, 0x350000
 
  [Gradius V] uses 0x3046E0, 0x0x305E44
 
Maximum List Count: 31
 
Maximum Amount of Usage: ??
 
  The command is used 4 times consecutively by [Strawberry Shortcake: The Sweet Dreams]
 
  SLES-54309 (EU) and
 
  SLUS-21497 (US) game configs hardcoded inside ps2_gxemu.self
 
 
|-
 
|-
| 0x27|||| List <uint32_t Param,uint32_t Param> --- Improves COP2 operations accuracy for selected memory range - VU0 macromode accurate range
+
|0x02||  
  Maximum List Count: 31
+
Max Payne
 +
  Write 0 to D_ENABLEW in SPE 3 (EEDMA). D_ENABLER is NOT updated on PPE side.
 
|-
 
|-
| 0x28|||| 1x uint32_t Param (<=3)
+
|0x03||  
 +
Max Payne
 +
Write 0xFFFFFFFF (0x10000, other bits are ignored anyway) to D_ENABLEW in SPE 3 (EEDMA). D_ENABLER is NOT updated on PPE side.
 
|-
 
|-
| 0x29 |||| 2x uint32_t Param,
+
|0x04|| Castle Shikigami II
 +
store 0 on 0x94A290 (EMU Memory)
 
|-
 
|-
| 0x2A|||| 0 Param, sets something 1 --- Allow online downloadable content (HDD)? Multitap? Local 2 player?
+
|0x05|| Star Wars games developed by Pandemic Studios (freeze fix), Worms 3D and NBA 08.
All-Star Baseball 2004
 
 
|-
 
|-
| 0x2B|||| 0 Param, sets something 1 --- Allow disc eject/swap?
+
|0x06||  
Dance Factory
 
 
|-
 
|-
| 0x2C |||| 1 Param, uint32_t
+
|0x07||  
Summoner uses 0x1
 
 
|-
 
|-
| 0x2D |||| = 0x25 = 0x18 = 0x16 = 0x05 (next id)
+
|0x08|| Harry Potter - Quidditch World Cup US use it at offset 0x2BD45C (EE)
 
|-
 
|-
| 0x2E |||| 1 Param, uint32_t
+
|0x09|| Harry Potter - Quidditch World Cup US use it at offset 0x2BD620 (EE)
 
|-
 
|-
| 0x2F |||| 1 Param, uint32_t --- SPU2 related?
+
|0x0A||  
Indigo Prophecy/Fahrenheit uses 0x1
 
 
|-
 
|-
| 0x30|||| (nothing)
+
|0x0B||  
 
|-
 
|-
| 0x31|||| (nothing)
+
|0x0C|| Piglet's Big Game
 
|-
 
|-
| 0x32|||| (nothing)
+
|0x0D|| usleep(100)
 
|-
 
|-
| 0x33|||| (nothing)
+
|0x0E|| Used 3 times in Need for Speed - Carbon [Collector's Edition] US
 
|-
 
|-
| 0x34|||| (nothing)
+
|0x0F||  
 +
Grand Theft Auto 3 (SLUS-20062)
 +
using 0x348B40, 0x18E1F0, 0x348EC8 ( + 200000000 base )
 +
0x348B40 = start CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 +
0x18E1F0 = start CCollision::ProcessColModels((CMatrix const &, CColModel &, CMatrix const &, CColModel &, CColPoint *, CColPoint *, float *))
 +
0x348EC8 = Almost end (only loading values preserved on stack) of CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))  
 
|-
 
|-
| 0x35|||| 0 Param --- Enables Force Flip Field, described in emu setting as "''Fix for [Hang] for soft-lock''"
+
|0x10||  
 +
Grand Theft Auto 3 (SLES-50330), uses 0x349790, 0x10 (somewhat floats related)
 +
using 0x349790, 0x18E1F0, 0x349B18 ( + 200000000 base )
 +
0x349790 = start CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 +
0x18E1F0 = start CCollision::ProcessColModels((CMatrix const &, CColModel &, CMatrix const &, CColModel &, CColPoint *, CColPoint *, float *))
 +
0x349B18 = Almost end (only loading values preserved on stack) of CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 
|-
 
|-
| 0x36|||| (nothing)
+
|0x11||  
 +
Grand Theft Auto 3 (SLES-50793)
 +
using 0x3495C0, 0x18E1F0, 0x349948 ( + 200000000 base )
 +
0x3495C0 = start CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))
 +
0x18E1F0 = start CCollision::ProcessColModels((CMatrix const &, CColModel &, CMatrix const &, CColModel &, CColPoint *, CColPoint *, float *))
 +
0x349948 = Almost end (only loading values preserved on stack) of CTheScripts::ClearSpaceForMissionEntity((CVector const &, CEntity *))  
 
|-
 
|-
| 0x37|||| (nothing)
+
|0x12|| Disney/Pixar Finding Nemo (fixes the pause menu freeze)
 +
if condition met...
 +
store 0 in [ 0x204FC500 + 200000000 base] 0x4FC500 EE memory
 
|-
 
|-
| 0x38|||| (nothing)
+
|0x13|| Snowblind Engine specific fix. Applies to the beginning of function called initLump. Config is responsible for grabbing data from one of registers for use in 0x14/0x15 hooks. Mentioned data is EE memory offset, if data from 0x13 is 0, 0x14/0x15 don't apply. 
 
|-
 
|-
| 0x39 |||| (nothing)
+
|0x14|| Snowblind Engine specific fix. Applies to the end of function called initLump. Used in the older version of Snowblind Engine (Dark Alliance duology, The Bard's Tale, Fallout).
 
|-
 
|-
| 0x3A|||| (nothing)
+
|0x15|| Snowblind Engine specific fix. Applies to the end of function called initLump. Used in the newer version of Snowblind Engine (Champions duology, Justice League Heroes, Combat Elite).
 
|-
 
|-
| 0x3B|||| (nothing)
+
|0x16|| Champions of Norrath (SLUS-20565)
 +
store 0x01114BA8 in [ 0x208EAB4C + 200000000 base]
 +
store 0x010C9E40 in [ 0x208EAB6C + 200000000 base]
 
|-
 
|-
| 0x3C |||| (nothing)
+
|0x17||  
 +
condition r18 == 0x8000
 +
setting:
 +
  stores 0x40490FDA somewhere
 +
Note: 0x40490FDA (3.14159250) is the highest float approximation to π in hexadecimal without going over the value.<br />
 +
Probably can improve FPU accuracy for some games.
 
|-
 
|-
| 0x3D |||| 1 Param, uint32_t Config file revision
+
|0x18|| Okami PAL specific hook.
 
+
Check if opcode at 0x183F04 of EE memory is jal 0x183CB0 (0x0C060F2C). This is used to run additional hook patcher only 1 time.
{| class="wikitable sortable"
+
Later it will be nop here. so it means that new hooks are already applied. So function will just return early.
 +
if opcode at 0x183F04 is still jal 0x183CB0 (0x0C060F2C),
 +
then patch addresses 0x183F04 (jal 0x183CB0), 0x183F34 (jal 0x183CB0), 0x183F3C (jal 0x183D18) to nop.
 +
Finally adds 3 additional EE hooks. Emu addresses for ps2_netemu 4.70+
 +
 +
EE address | EMU address
 +
0x183F0C  | sub_46334
 +
0x183F3C  | sub_45DA4
 +
0x183D74  | sub_47B50
 +
 +
First hook is responsible for grabbing EE addresses from one of EE gpr register. Second hook perform few checks from data in EE gpr registers, and
 +
eventually store data from EE gpr registers on previously grabbed addresses. Hook 3 store one of previosly grabbed EE address on unknown part of memory.
 +
Whole thing looks like HLE version of noped functions.
 
|-
 
|-
! Firmware !! ps2_netemu Revision !! Max Supported Commands
+
|0x19||
 
|-
 
|-
| 3.70 || 15686 || 0x41
+
|0x1A||  
 +
store 0 in [ 0x209FD560 + 200000000 base]
 +
store 0 in [ 0x209F9550 + 200000000 base]
 +
store 0 in [ 0x20A01570 + 200000000 base]
 +
store 0 in [ 0x209F9540 + 200000000 base]
 +
store 0 in [ 0x209F5540 + 200000000 base]
 +
store 0 in [ 0x209F1530 + 200000000 base]
 
|-
 
|-
| 3.73 || 15936 || 0x41
+
|0x1B||
 +
store 0 in [ 0x20552168 + 200000000 base]
 
|-
 
|-
| 3.74 || 15936 || 0x41
+
|0x1C||
 +
store 1 in [ 0x20552168 + 200000000 base]
 
|-
 
|-
| 4.00 || 16195 || 0x41
+
|0x1D||
 +
store 0 in [ 0x20556C08 + 200000000 base]
 
|-
 
|-
| 4.01 || 16195 || 0x41
+
|0x1E||
 +
store 1 in [ 0x20556C08 + 200000000 base]
 
|-
 
|-
| 4.10 || 16361 || 0x41
+
|0x1F||
 +
store 0 in [ 0x205243D8 + 200000000 base]
 
|-
 
|-
| 4.11 || 16361 || 0x41
+
|0x20||
 +
store 1 in [ 0x205243D8 + 200000000 base]
 
|-
 
|-
| 4.20 || 16604 || 0x43
+
|0x21||
 +
store 0 in [ 0x20524F88 + 200000000 base]
 
|-
 
|-
| 4.21 || 16604 || 0x43
+
|0x22||
 +
store 1 in [ 0x20524F88 + 200000000 base]
 
|-
 
|-
| 4.23 || 16604 || 0x43
+
|0x23||
 +
store 0 in [ 0x2047E7F8 + 200000000 base]
 
|-
 
|-
| 4.25 || 16740 || 0x43
+
|0x24||
 +
store 1 in [ 0x2047E7F8 + 200000000 base]
 
|-
 
|-
| 4.26 || 16740 || 0x43
+
|0x25||
 +
store 0 in [ 0x204802B8 + 200000000 base]
 
|-
 
|-
| 4.30 || 16808 || 0x45
+
|0x26||
 +
store 1 in [ 0x204802B8 + 200000000 base]
 
|-
 
|-
| 4.31 || 16808 || 0x45
+
|0x27||
 +
store 0 in [ 0x20586348 + 200000000 base]
 
|-
 
|-
| 4.40 || 16916 || 0x46
+
|0x28||
 +
store 1 in [ 0x20586348 + 200000000 base]
 
|-
 
|-
| 4.41 || 16916 || 0x46
+
|0x29||
 +
store 0 in [ 0x205868A8 + 200000000 base]
 
|-
 
|-
| 4.45 || 17041 || 0x48
+
|0x2A||
 +
store 1 in [ 0x205868A8 + 200000000 base]
 
|-
 
|-
| 4.46 || 17041 || 0x48
+
|0x2B||  
 
|-
 
|-
| 4.50 || 17179 || 0x4A
+
|0x2C|| Shin Onimusha - Dawn of Dreams Fix ingame IPU runtime - JPN/US release [https://github.com/PCSX2/pcsx2/issues/1141 bug]
 
|-
 
|-
| 4.55 || 17277 || 0x4D
+
|0x2D|| Shin Onimusha - Dawn of Dreams Fix ingame IPU runtime - PAL release [https://github.com/PCSX2/pcsx2/issues/1141 bug]
|-  
+
|-
|4.60<br />
+
|0x2E|| Shin Onimusha - Dawn of Dreams Fix ingame IPU runtime - Unk release (SCKA-20086? SLPM-66275? Why it is unused? Why non PS2 Best JPN release is missing hook?)
4.70<br />
 
4.75<br />
 
4.76<br />
 
|| 17314 || 0x4D
 
|-  
 
|4.78<br />
 
4.80<br />
 
4.81<br />
 
|| 17495 || 0x50
 
|-  
 
|}
 
 
|-
 
|-
| 0x3E |||| 0 Params --- Sets something 1
+
|0x2F||
Default Init = 0
+
  condition [ 0x37B0C4 + 200000000 base ] == 0 -> 00 10 0B 98
  0 == do set some stuff,
 
1 == skip
 
Similar to 0x0D with param 0. Affect the same code path, but skips more code.
 
 
|-
 
|-
| 0x3F |||| 1 Param, uint32_t
+
|0x30||
 +
condition [ 0x37B704 + 200000000 base ] == 0 -> 00 10 0B 98
 
|-
 
|-
| 0x40|||| 0 Param --- Sets something 1
+
|0x31||
  Grand Theft Auto SA
+
  condition [ 0x37630C + 200000000 base ] == 0 -> 00 10 0B A8
Silent Hill Origins - unofficial fix
 
 
|-
 
|-
| 0x41|||| 0 Param --- Sets something 1 (Disables some lwsync - speedhack?)
+
|0x32||
Dragon Force
+
condition [ 0x37BB0C + 200000000 base ] == 0 -> 00 10 0B A8
God Hand
+
|-
Gradius V
+
|0x33||
Katamari Damacy
+
|-
 +
|0x34|| not filled
 
|-
 
|-
| 0x42|||| EE Overlay patch. 2 main Params + patch data: uint32_t address, uint32_t count, opcode,opcode,opcode...
+
|0x35||  
Address need to be in 0xFF000 - 0xFFFFC range.
 
Count is size of patch in 4 bytes opcodes. So 5 opcode patch = count 5.
 
Opcodes will be placed on selected address, we use only patch code, no need for original opcode.
 
Next opcode addresses are auto calculated (+4..) so we need to specify only patch start address.
 
Remember we need to jump to our new code, best way is command 0x0A with j (jump) opcode.
 
Also is important to add return jump if required. That one need to be added in our 0x42 patch. 
 
Maximum opcodes count seems to be 0x3FF (1023 opcodes).
 
 
|-
 
|-
| 0x43|||| 1 Param --- Equal to 0x40, but with Parameter:
+
|0x36||  
0 = Default
 
1 = (like 0x40)
 
param =
 
-1 = failure?
 
 
|-
 
|-
| 0x44|||| 0 Param --- Disables Smoothing and Smoothing option
+
|0x37||  
 
|-
 
|-
| 0x45|||| 0 Param --- Sets something 1
+
|0x38||
Phantasy Star Complete Collection
 
 
|-
 
|-
| 0x46|||| 0 Param --- Enables L2H Improvement, [Performance] related setting for titles using L2H (Local to Host, so called GS download (from GS to  EE))
+
|0x39|| Used silently in command 0x4B with first param from 0x4B as hook address.
SMT Digital Devil Saga 1
 
SMT Nocturne
 
Fatal Frame II
 
 
|-
 
|-
| 0x47|||| 0 Param --- Enables XOR CSR - XOR System Status Register (0x12001000)?, [Graphics] related setting, should fix fullscreen line corruption
+
|0x3A|| Used silently in command 0x4C with first param from 0x4C as hook address.
 
|-
 
|-
| 0x48|||| VSYNC Delay, 2x uint32_t Param
+
|0x3B|| Grand Theft Auto 3 (JP/AS) ? using 0x351210, 0x18F590, 0x351568 ( + 200000000 base )
*First param possible value are 1 = No IPU, 2 = IPU, 3 = Anytime.
+
|}
*Second param is delay (in ms?), and can be also negative value.
+
 
**Emu has standard presets for second param.
+
{{Boxcomm|id=0x02|name=Unknown|data=1x int32}}
***Agressive = 0x3D090 (250000 decimal),
+
Used in function that handle D6 CHCR writes (SIF1), seems to be some kind of timing command for EE --> IOP DMA.
***Normal = 0x186A0 (100000 decimal),
+
*Valid values found:
***Conservative = 0x4E20 (20000 decimal),
+
**1000d
***But other values can be used.
+
**3000d
[SMT Digital Devil Saga 1] uses 1, 0x3D090
+
**6000d
[Fatal Frame II] uses 0x2, 0xFFFFE69C (-6500 decimal)
+
 
|-
+
{{Boxcomm|id=0x03|name=Unknown|data=N/A}}
| 0x49|||| 0 Param --- Sets something 0xB,0,0
+
Sets something 0
Trapt
 
|-
 
| 0x4A|||| 0 Param --- Sets something 0x15100
 
Applies to the Snowblind Engine games. Fixes the rest of flickering textures.
 
Meant to be used in conjunction with the GX/SOFT Snowblind Engine's specific commands (double 0x01 and 0x23 combo).
 
|-
 
| 0x4B|||| Redirect SAVEDATA by ID, 2 x uint32_t Params + ID: offset, int, char[12]
 
For proper config we need at least 2 (can be more if needed) 0x4B commands, one to enable redirect, one to disable.
 
First param is EE memory offset that when is hit enable/disable redirection.
 
Second param is partially unknown, seems to be size of next param to read * 4 (3 in known configs), or 0xFFFFFFFF for disable redirect command.
 
Third param is ID of SAVEDATA we want to use padded with 00 to match 12 bytes, or all 00 in disable redirect config.
 
Important note here is that config have own 00 00 00 00 terminator at the end.
 
So after 12 bytes of ID we need to add 4 bytes of 00. That apply also to disable redirect version.
 
|-
 
| 0x4C|||| 2x uint32_t Params: offset,int (2 = current path?, 3 = new ISO.BIN.ENC path?, other= ?)
 
|-
 
| 0x4D|||| 1 uint32_t Param (can be -1) --- Sets something (same as 0x49 but) 0xC, Param, 0
 
Wild Arms: The Fifth Vanguard uses 0x3F800000
 
|-
 
| 0x4E|||| (nothing)
 
|-
 
| 0x4F|||| (nothing)
 
|-
 
| 0x50|||| 0 Param --- Enables pressure sensitive controls
 
|-
 
|}
 
  
===Config file examples (for netemu)===
+
{{Boxcomm|id=0x04|name=Unknown|data=1x uint32_t index (i*0x80, special 0x12345: 0x91a280?)}}
 +
*Valid values found:
 +
**0x08
 +
**0x10
  
====Official PS2 Classic====
+
{{Boxcomm|id=0x05|name=N/A|data=N/A}}
See: [[PS2 Official Configs]]
+
Command not available in ps2_netemu.self
  
====Official GXEMU/SOFTEMU extracted====
+
{{Boxcomm|id=0x06|name=Unknown|data=N/A}}
See: [[PS2 Official Configs]]
+
Change VIF1 command 02h OFFSET behavior by patching pointer to function which process it to different previously unused function.
  
==== Custom Configs ====
+
{{Boxcomm|id=0x07|name=Delay VU xgkick by X cycles|data=1x uint32_t}}
See: [[PS2 Custom Configs]]
+
Default 1
 +
 
 +
{{Boxcomm|id=0x08|name=Patch VU memory by mask |data=8x uint32_t (read mask,read mask, original opcode, original opcode, write mask, write mask, replace opcode, replace opcode)}}
 +
Maximum Amount of Usage: 3 times
 +
 +
{{Boxcomm|id=0x09|name=EE_INSN_REPLACE64|data=uint32_t count, <list> (offset, original opcode, original opcode, replace opcode, replace opcode)}}
 +
Maximum List Count: 32
 +
*Valid values found
 +
**1 [Dark Cloud] and [Dead Or Alive 2 Hardcore]
 +
 
 +
{{Boxcomm|id=0x0A|name=EE_INSN_REPLACE32|data=uint32_t count, <List> (offset, original opcode, replace opcode)}}
 +
Command present only in the ps2_netemu. Maximum List Count: 32
 +
*Valid values found
 +
**1 [Deadly Strike]
 +
**2 [Dragon Force]
 +
 
 +
{{Boxcomm|id=0x0B|name=MECHA_SET_PATCH|data=1x uint32_t count, <List> {sector id, offset, sizeof present opcodes, replace opcodes, original opcodes)}}
 +
Offset on the disc = sector id * sector size + offset + correction [see below]<br>
 +
Offset correction is based on selected read mode (not on media type):<br><br>
 +
CDRead requested block size (CD disc):
 +
*2048 = Offset + 0x18 (skip 12 sync bytes, 4 of header, and 8 of subheader)
 +
*2328 = Offset + 0x18 (skip 12 sync bytes, 4 of header, and 8 of subheader)
 +
*2340 = Offset + 0x0C (skip only 12 bytes of sync data)
  
===Config data examples (hardcoded)===
+
DVDRead requested block size (DVD Disc):
====Inside ps2_emu.self====
+
*2064 = Offset match, but only until the 349th sector. Otherwise is offset - 0x0C because that read mode see data as ID DATA (4) + ID DATA EDC (2) + Reserved bytes (6) + 2048 data + EDC (4).
Embedded patches are based on Checksum/Hash of title. ps2_emu is only emulator version where patches are described inside self file in ascii. Known patch types described in ascii are: Patch data, new SPU2 params, and Setting mecha HACK to show GODZCD as GODZCDDA.
 
  
{| class="wikitable sortable"
+
"Offset + XX" for CD assume that you use Isobuster RAW mode. "Offset - XX" for DVD assume that you use Isobuster NON RAW mode<br>
! PS2 Title !! Hash !! Game !! Patch Type !! Data
+
Special case is DVD read on very low sector, here you need to use exact offset without substrating 0x0C. Highest confirmed sector that don't use correction for now is 349.
|-
+
  [Dead Or Alive 2 Hardcore] uses 7
| SCUS_971.46|| 0x6B1ADE00D||Disney's Treasure Planet || Patch data - Fixes black screen at start, it apply to STREAM_D.IRX file in IOP folder. || 0x147C (sector) , 0x580 (offset) (- 0xC on disc)
+
  [Gradius V] uses 1
Replace opcodes
+
  [Grand Theft Auto III] uses 1
00 01 01 3C lui at,0x0100
+
  [Katamari Damacy] uses 1
  80 BF 03 3C lui v1,0xBF80
+
  [Manhunt] uses 1
  C8 10 63 8C lw v1,0x10C8(v1)
+
  [Odin Sphere] uses 2
24 18 61 00 and v1,at
+
  [Primal] uses 1
FB FF 61 10 beq v1,at, -0x10
+
  [Psychonauts] uses 1
  00 00 00 00 nop
+
  [Syphon Filter The Omega Strain] uses 1
+
Maximum List Count: 47
Original opcodes
+
 
  FF FF 01 24 li at,-0x1
+
{{Boxcomm|id=0x0C|name=Unknown|data=1x (uint16_t, uint16_t)}}
04 00 61 14 bne at,v1, +0x14
+
0/1/2,<0x63>
00 80 01 3C lui at,0x8000
+
 
02 00 41 14 bne at,v0, +0x0C
+
{{Boxcomm|id=0x0D|name=Unknown|data=1x int32}}
  00 00 00 00 nop
+
True/false. Default = 1
  0D 00 06 00 break 
+
0 = Skip some IOP related code responsible for check value from IOP SPE LS 0x2C0C0 (and skip panic if value is 0 or -1).
|-
+
Also skip write of 0x80000000 to unknown place related to IOP memory (to 0x4005400C).
|SLUS_201.74 ||0x23D92589C5|| Rumble Racing || Patch data - fixes black screen after Playstation 2 logo. Patch apply to AUDIO.IRX file in MODULES folder || 0x3AEDA (sector), 0x120 (offset)
+
 
Replace opcodes
+
{{Boxcomm|id=0x0E|name=Improves ADD/SUB accuracy|data=1x int32}}
06 00 80 14 bnez a0, +0x1C
+
1 Param offset --- Improves ADD/SUB FPU/COP2 accuracy for selected offset. Work with opcodes from commands 0x26/0x27. Basically command like 0x0F just per offset, no per range.
21 20 43 00 addu a0,v0,v1
+
  [Rygar] only has 0x147DA8 sub.s  $f12, $f20, $f12
21 10 A0 00 move v0,a1
+
  Used in official configs: SCUS97501=0x3C458C, SCES53642=0x3C4854, SLUS21026=0x386864, SLUS20916=0x121F64, SLUS20437=0x11EDF0
02 00 A0 14 bnez a1, +0x0C
+
  Maximum Amount of Usage: 32 times
  00 00 00 00 nop
+
 
01 00 05 24 li a1,0x1
+
{{Boxcomm|id=0x0F|name=More accurate ADD/SUB memory range|data=List <uint32_t Param, uint32_t Param>}}
EB FF 40 10 beqz v0, -0x50
+
More accurate memory range. This command is combined 0x26, and 0x27 command.
04 00 84 24 addiu a0,0x4
+
  [Dark Cloud] uses 0x239334, 0x1FFFFFF
  FC FF 90 24 addiu s0,a0,-0x4
+
  [Grand Theft Auto SA] uses 0x1E46DC, 0x1E4AE8
+
  Maximum Amount of Usage: 32 (if there is no additional 0x26/0x27 command)
Original opcodes
+
 
07 00 80 14 bnez a0, +0x20
+
{{Boxcomm|id=0x10|name=MULDIV Accurate range|data=List <uint32_t Param, uint32_t Param>}}
21 80 43 00 addu s0,v0,v1
+
More accurate MUL/DIV handling on selected memory range for selected FPU opcodes. Effectively work only with:
21 10 A0 00 move v0,a1
+
  MUL.s, DIV.s, MULA.s, MADD.s, MSUB.s, MADDA.s, MSUBA.s.
02 00 A0 14 bnez a1, +0x0C
+
  For ADD/SUB opcodes, command is active only on Multiply stage.
  00 00 00 00 nop
+
  Maximum List Count: 32
01 00 05 24 li a1,0x1
+
 
FC FF 40 10 beqz v0, -0x0C
+
{{Boxcomm|id=0x11|name=Unknown|data=1x uint32_t Param}}
  00 00 00 00 nop
+
Param is VU0 (MICROPROGRAM) memory offset, keep in mind this offset is a direct address.<br>
  04 00 04 26 addiu a0,s0,0x4
+
So by PS2 memory mapping is ((offset + 0x11000000) & 0x11000FF8)<br>
+
Function is somehow related to all Upper pipeline ADD/SUB operations (incl. opcodes like MADD, OPMSUB, etc.).<br>
|-
+
When offset is hit, opcode is processed using different code path, probably more accurate.<br>
|SLUS_211.96||0x24D92589D5|| Indigo Prophecy || new SPU2 params || 1
+
Note: Due to how VU work, exact offset in VU memory will be param + 4, because VU process 2 opcodes in same time.<br>
|-
+
Lower pipeline fetch opcode from address, Upper from address + 4.
|SLPM_661.93||0x608634992D|| <abbr title="https://www.gamefaqs.com/ps2/544598-indigo-prophecy/data">Fahrenheit (NTSC-J)</abbr> || new SPU2 params || 1
+
  Used in official configs: SLUS21172=0x208, SLUS20878=0x140,0x368,0x570
|-
+
  Maximum Amount of Usage: 32 times
|SLUS_212.96||0x5CA15DF14D|| Dance Factory ||Setting mecha HACK to show GODZCD as GODZCDDA ||
+
 
|}
+
{{Boxcomm|id=0x12|name=Unknown|data=<List> (uint32_t count,}}
 +
  [Primal] uses 0xD
 +
  [Rayman Arena] uses 0x11
 +
  [Syphon Filter: The Omega Strain] uses 0x5
 +
  00 00 00 0?
 +
  00 00 00 00
 +
  type? count?
 +
...
 +
Maximum List Count: 63
  
====Inside ps2_gxemu.self/ps2_softemu.self====
+
{{Boxcomm|id=0x13|name=Memory card timing related delay|data=1x uint64_t Param}}
There are hundreds of configs hidden in ps2_gxemu, and ps2_softemu self files. Internal config structure is basing on custom hash based on Title ID, internal memory offset pointing to place where true patch instruction is, and count of used commands. When disc/iso is started emulator search for configs, and if config for selected ID exist, then emulator apply it by itself. Is not perfect way of applying patches, because some games use the same ID, but different content. Good example here is Star Wars Battlefront II SLUS-21240, where some versions of game can refuse to work because it apply bad patch.
+
Jak X: Combat Racing uses 0xf960 (63840)
 +
Netsu Chu! Pro Yakyuu 2004 uses 0xf960 (63840)
 +
Phantasy Star Universe uses 0x9bdc (39900)
 +
WRC II Extreme uses 0x9bdc (39900)
 +
Burnout Dominator uses 0x9bdc (39900)
 +
Jissen Pachi-Slot Hisshouhou! Kemono-Oh uses 0x1d394 (119700)
 +
Used in official configs: SCUS97429=0xF960(63840), SLPM66031=0x9BDC(39900), SLPS20131=0x1D394(119700)
 +
 
 +
{{Boxcomm|id=0x14|name=Unknown|data=N/A}}
 +
When enabled one of VU1 opcodes is processed differently on recompiling/translation stage. Seems to be very specific hack, most likely not usable outside of THPS 4+ engine games.<br>
 +
Is unknown which opcode exactly is changed for now, but it is either one of (most likely) UpperOP field type 1 opcodes, or eventually LowerOP field type 1 or 5 (less likely). Because layout of mentioned opcode is 7,4,5,5,5,6 bits.
 +
 
 +
{{Boxcomm|id=0x15|name=Unknown|data=1 Param ( <1, >1 )}}
 +
Patch SPE 0 (IOP) program in local memory. Command search for absolute branches in LS 0x3A2C0 - 0x3A6C0 and patch them to bi r127. This command take partially unused value. Value 0,1 do nothing, values 2 and above run command. Doesn't matter is 2,4, or 10. Nothing will change in command behavior.
 +
[Bloodrayne 2] uses 4
 +
[GRIMgRiMoiRe] uses 4
 +
[Mana Khemia 2] uses 4
 +
[Odin Sphere] uses 4
 +
[SMT Persona 3 FES] uses 4
 +
 
 +
{{Boxcomm|id=0x16|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x17|name=Unknown|data=1x int32}}
 +
True/false?
 +
[Bully] uses 1
  
{| class="wikitable sortable"
+
{{Boxcomm|id=0x18|name=N/A|data=N/A}}
! PS2 Title !! Hash !! Game !! Patch Type !! Data
+
Command not available in ps2_netemu.self
|-
 
| ||  ||  ||  || 
 
|}
 
  
==Known Emulation Bugs==
+
{{Boxcomm|id=0x19|name=Force analog controller mode|data=N/A}}
This list known bugs inside emulator code that make emulation inaccurate. Since those are only EE side bugs for now, ps2_gxemu/ps2_netemu/ps_softemu share the same issues.
+
Skips check for analog/digital controller mode and returns forced analog mode
{| class="wikitable sortable"
+
[Grand Theft Auto III]
! Bug !! Description !! Known Affected Games
+
[Grandia II]
|-
+
  [Red Faction 2]
| Missing Emotion Engine Cache emulation || Emulating that is literally not possible without making games run at 3 fps. Fixed by patches to game image, or EE code. || Ice Age 2, DOA2: Extreme, Nascar 2009 (luckily fixed by instant VIF bug).
+
[Siren]
|-
+
 
| Branch delay slot violation not supported on EE || Some games have Branch instruction inside Branch delay slots, this is not emulated correctly on EE (VU have proper emulation of that). This is patched in configs by rearangging MIPS code. || WRC 3,4,Rally Evolved, one of Action Replay discs. 
+
{{Boxcomm|id=0x1A|name=Unknown|data=N/A}}
|-
+
IPU hack to end fromIPU DMA transfer on BCLR command (store 0 on D3_QWC and D3_CHCR.STR). Not stopping that transfer is actually correct behavior..
| VIF is instant || There is no correct timing, or even attempt to emulate that. Everyting done by VIF0/1 is done right when pushed || Nascar 2009 is affected in possitive way, game don't have time to corrupt transfer. Probably many more games.
 
|-
 
| XGKick is instant || Some games expect to XGKick happen few cycles in future, on PS3 is done instant. Fixed by config 0x07 which delay XGKick by selected value || WRC series, Wakeboarding Unleashed, TriAce games, World of Outlaws - Sprint Cars, Ty - The Tazmanian Tiger, dot Hack - G.U. series, and more
 
|-
 
| COP2 instructions are instant || Some games rely on fact that COP2 operations can take some time, on PS3 emulators they are done instantly due to lack of correctly emulated pipeline Patched by rearranging mips code || FFX, FFX-2, Ghost in The Shell SAC, Ace Combat series, Sprint Cars 1/2, Black, Run Like Hell, Everblue 2, Dragon Quest - Shounen Yangus no Fushigi na Daibouken, and many more
 
|-
 
| VU0 is not running in sync with EE core || Seems like old pcsx2 mVU approach is used where VU0 is running thousands of cycles ahead of EE. Partially resolved on emu using 0x12 command with 2/3 subcommands. || 24 The Game, ATV Quad Power Racing 2, Twisted Metal Head-On, Primal, Ghosthunter, Rayman Arena, Rayman 3, All games using M-bit.
 
|-
 
| M-Bit not supported || Emulator ignore VU0 M-Bit, that cause issues for games that need it to work correctly. This is done because there is no way to sync correctly running VU0 without sync with EE. Partially resolved on emu using 0x12 command with 2/3 subcommands. || Totally Spies! Totally Party, Mike Tyson Heavyweight Boxing, My Street, Crash Twinsanity, Marvel Nemesis, Panzer Elite Action - Fields of Glory, TriAce games (speed optimizations only), Super Monkey Ball Adventure, most Eko Software games, and many more.
 
|-
 
| Emulator Fail to save correct flag instances while ending VU0 program on Ebit || This cause few games to read bad flag status (not status flag!) on COP2. This is resolved on emu by forcing update of MAC flag on every STATUS flag read (by config 0x12), this cause slowdowns creating a lot of unnesessary operations. || Driving Emotion Type-S, State of Emergency 2, The Getaway Black Monday.
 
|-
 
| Not updated status flag when VDIV/VSQRT/VRSQRT is done on COP2 || Potential bad flag state can cause a lot of issues that are not related on first sight || Yanya Caballista (already patched by custom config)
 
|-
 
| In corner cases emu select wrong block pipeline state while processing Flag VU opcodes. || This can cause various issues, mostly SPS, missing graphic, specific slowdowns, etc. For now it was only confirmed that FSAND opcode don't ask for exact pipeline state, but looking at assembly of other opcode this rather affect all of them. || Tales of Legendia, more..
 
|-
 
|}
 
===Software emulation bugs===
 
Related to the GS emulation issues mostly. Apply to the ps2_netemu especially.
 
{| class="wikitable sortable"
 
! Bug !! Description !! Known Affected Games
 
|-
 
| SCANMSK register ignored || Emulator does ignore the SCANMSK setting responsible for restricting the drawing primitives on the odd or even lines. It is used as a fake transparency effect in some games by merging the two display circuits. || Metal Gear Solid series (heavy used in the MGS2 on the water and reflection effects), Gran Turismo series (ghost cars).
 
|-
 
| Lack of support for 4-bit tex GS downloads || L2H (Local to Host / GS to EE) PSMCT4, PSMCT4HL, PSMCT4HH transfers are not supported.
 
Transfer request for any of that format is just ignored. Same goes for any undocumented PSM.<br>
 
Note: Apparently PCSX2 also not support 4 bit formats download because they are "forbiden",
 
but i wasn't able to find any info about that in official PS2 documentation (maybe based on real HW tests?).  
 
|| None.
 
|-
 
|}
 
  
==TitleID/DiscID in ps2_netemu.self==
+
{{Boxcomm|id=0x1B|name=Unknown|data=N/A}}
There are 193 titleIDs listed inside ps2_netemu.self. More precisely, into XPARAM2.ELF file of PS2 Bios included in ps2_netemu.self. XPARAM2.ELF is called by OSDSYS, then ID check is performed. If title ID match to one of included in the table, different IOP emulation settings are applied.
+
When IDEC command don't finish, probably due to bad timings. Hack clear D3_CHCR.STR bit when there is still QW left in D3_QWC reg , and IDEC finished already.  
There are internal flags related to every title ID included inside file, still unknown what they do. Also some arguments, in plain text. File in real ps2 is introduced in SCPH-750XX models so exactly when DECKARD Power PC chip exchanged original IOP chip. This can explain why it is still in PS3 netemu bios. Because PS3 it is ppc that can need the same/similar flags.
+
[Mana Khemia 2]
  
Original PS2 bios include similar list file called XPARAM.ELF, but Title IDs there are not the same, although some of them exist on both lists.
+
{{Boxcomm|id=0x1C|name=Emulate Multitap|data=read uint32_t (use uint8_t)}}
 +
Enables/disables Multitap emulation. Default 3
 +
0 = disable multitap emulation
 +
1 = enable multitap in controller port 1 (when needed)
 +
2 = enable multitap in controller port 2 (when needed)
 +
3 = enable multitaps in both controller ports (when needed)
 +
  [Medal of Honor: European Assault] uses 1
 +
  [Twisted Metal: Black] uses 1
  
{| class="wikitable sortable" ||
 
|-
 
! Command !! Name
 
|-
 
| 0x00 || TITLE_MASK
 
|-
 
| 0x01 || SIO2_MASK
 
|-
 
| 0x02 || DEV9_MASK
 
|-
 
| 0x03 || USB_MASK
 
|-
 
| 0x04 || SIF_DMA_SYNC
 
|-
 
| 0x05 || SIF_DMA_LOAD
 
|-
 
| 0x06 || DMAC_CH10_INT_DELAY
 
|-
 
| 0x07 || MECHA_RECOGTIME
 
|-
 
| 0x08 || CPU_DELAY
 
|-
 
| 0x09 || DEV5_INT_SPEED
 
|-
 
| 0x0A || CDVD_READ_DELAY
 
|-
 
| 0x0B || SPU2_BEHAVIOR
 
|-
 
|}
 
  
{| class="wikitable sortable" ||  
+
{{Boxcomm|id=0x1D|name=Set Multitap|data=read uint32_t (use uint8_t)}}
|-  
+
Sets multitap to specific controller ports and adjusts the order of ports to which controllers are synced. Default 0?
! ID !! Title !! Command !! Value !! Remarks
+
0 = no multitap set (only when needed)
|-  
+
    Controller sync order: 1/1-A, 2/2-A, 1-B, 2-B...
|PBPX_952.01 || DVD Utility Disc Version 1.00                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
1 = sets multitap in controller port 1 at all times
|-
+
    Controller sync order: 1/1-A, 1-B, 1-C, 1-D...
|PBPX_952.02 || DVD Utility Disc Version 1.01                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
2 = sets multitap in controller port 2 at all times
|-
+
    Controller sync order: 1/1-A, 2/2-A, 2-B, 2-C...
|PBPX_952.03 || DVD Utility Disc Version 1.01                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
3 = sets multitaps in both controller ports at all times
|-
+
    Controller sync order: same as 0
|PBPX_952.06 || DVD Player (Version 2.01)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
  [Medal of Honor: European Assault] uses 1
|-
+
  [Twisted Metal: Black] uses 1
|PBPX_952.07 || DVD Player (Version 2.10)                                           || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
  [Mystic Heroes] uses 2 (game does not detect multitap in controller port 1)
|-
+
  [Sonic Riders] uses 2 (GX config, game may not detect multitap in controller port 1)
|PBPX_952.08 || DVD Player (Version 2.10)                                           || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
 
|-
+
{{Boxcomm|id=0x1E|name=Multitap related|data=read uint32_t (use uint8_t)}}
|PBPX_952.09 || DVD Player (Version 2.10)                                           || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
[FIFA 2001] uses 3 (settings for both multitaps?)
|-
+
 
|PBPX_952.10 || DVD Utility Disc Version 2.10                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
{{Boxcomm|id=0x1F|name=Unknown|data=1x uint32_t}}
|-
+
Default 0x3E8?
|PBPX_952.11 || DVD Utility Disc Version 1.00                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
 
|-
+
{{Boxcomm|id=0x20|name=Unknown|data=1x uint64_t}}
|PBPX_952.21 || DVD Player (Version 2.12)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
Default 0x3C
|-
+
Config value is used as multiplier for some value, and result is used in vsync related runtimes.
|PBPX_952.22 || DVD Player (Version 2.14)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
Is worth to note that 0x3C is default multiplier even for PAL titles, so is not stricly related to framerate,
|-
+
but to vsync counters (where 0x3C is still wrong anyway..). Result of multiply is also compared at some point to vsync delay value.  
|PBPX_952.24 || DVD Player (Version 2.16)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
 
|-
+
{{Boxcomm|id=0x21|name=Unknown|data=1x uint32_t}}
|PBPX_952.28 ||                                                                     || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
0 = sets an option from 1 to 0 and another one to 0,
|-
+
1 = sets an option from 1 to 0 and another one to 1,
|PBPX_952.35 ||                                                                      || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
2 = sets an option from 1 to 1 and another one to 0
 +
  [Fatal Frame II] uses 0
 +
  [Grand Theft Auto Vice City] uses 1
 +
  [Grand Theft Auto III (EU)] uses 1
 +
  [SMT Persona 3 FES] uses 0
 +
 
 +
{{Boxcomm|id=0x22|name=Unknown|data=N/A}}
 +
Sets something 1
 +
 
 +
{{Boxcomm|id=0x23|name=Unknown|data=N/A}}
 +
Copy VIF1 command 01h STCYCL handler struct into unused 08h slot (slots are 100 bytes per command, include pointer to function that handle command, and other data). Then patch slot 08h function pointers to function at 0x14E00. 0x14E00 is normally unused, and pcsx2 handle 08h as a NOP. So if game really send 08h and expect something to happen it is rather undocumented command, or ps2_netemu devs noticed that game send nops that way, and decided to use it for some additional code they needed.
 +
 
 +
{{Boxcomm|id=0x24|name=Unknown|data=1x uint64_t}}
 +
 
 +
{{Boxcomm|id=0x25|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x26|name=FPU Accurate ADD/SUB range|data=List <uint32_t Param,uint32_t Param>}}
 +
Improves FPU accuracy for selected memory range. Efective only on:
 +
ADD.s, SUB.s, ADDA.s, SUBA.s, MADD.s, MSUB.s, MADDA.s, MSUBA.s
 +
For M(UL) opcodes, command is active only on ADD/SUB stage.
 +
 +
  [Bloodrayne 2] uses 0x340000, 0x350000
 +
  [Gradius V] uses 0x3046E0, 0x0x305E44
 +
Maximum Amount of Usage: 32 (if there is no additional 0x0F command)
 +
 
 +
{{Boxcomm|id=0x27|name=VU0 macromode accurate range|data=List <uint32_t Param,uint32_t Param>}}
 +
Improves COP2 operations accuracy for selected memory range. Effective only for opcodes:
 +
VSUBAxyzw, VSUBAq, VSUBAi, VSUBA, VSUBxyzw, VSUBq, VSUBi, VSUB, VMSUBAxyzw,
 +
VMSUBAq, VMSUBAi, VMSUBA, VMSUBxyzw, VMSUBq, VMSUBi, VMSUB, VMADDAxyzw,
 +
VMADDAq, VMADDAi, VMADDA, VMADDxyzw, VMADDq, VMADDi, VMADD, VADDAxyzw,
 +
VADDAq, VADDAi, VADDA, VADDxyzw, VADDq, VADDi, VADD
 +
 +
Maximum Amount of Usage: 32 (if there is no additional 0x0F command)
 +
Seems to affect only ADD/SUB part of opcode.
 +
 
 +
{{Boxcomm|id=0x28|name=Unknown|data=1x uint32_t}}
 +
<=3
 +
 
 +
{{Boxcomm|id=0x29|name=Unknown|data=2x uint32_t}}
 +
Seek/read time? Maybe seek/read delay? Full/fast seek? Default value is 0x1F40, 0xBB80 (8000, 48000)
 +
 
 +
{{Boxcomm|id=0x2A|name=Unknown|data=N/A}}
 +
Sets something 1.
 +
All-Star Baseball 2004
 +
 
 +
{{Boxcomm|id=0x2B|name=Unknown|data=N/A}}
 +
When enabled emulated register 0x1F40200F (disc type) is set to 0x13 (PS2CDDA) when media type detected by emu is 0x12 (PS2CD), confirmed in emu code/assembly. Ps2_emu do same thing in "Setting mecha HACK to show GODZCD as GODZCDDA", but due to real media support this is done in little bit different way (but still, 1F40200F is set to 0x13). During testing Dance Factory game, still no tracks are detected regardless of the command. Could be a netemu or Cobra issue (single, mixed mode .bin/.cue loaded).
 +
Dance Factory
 +
 
 +
{{Boxcomm|id=0x2C|name=Unknown|data=1x uint32_t}}
 +
Store (value | value << 32 | value << 64 | value << 96) on 0x2B4F0 of SPE 0 (IOP) LS.
 +
In summoner config it will be 0x00000001000000010000000100000001 stored at 0x2B4F0.
 +
Value is later used in clgt compare as rb register. Default seems to be 0x00000020000000200000002000000020.
 +
Summoner uses 0x1
 +
 
 +
{{Boxcomm|id=0x2D|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x2E|name=Unknown|data=1x uint32_t}}
 +
 
 +
{{Boxcomm|id=0x2F|name=Unknown|data=1x uint32_t}}
 +
Store value on 0x2E784 in SPE 1 (PS2 SPU2) LS. Used values are 1, and 2 (after andi, so 3 trigger both configs).
 +
* Infamous Final Fantasy confirmation sound issue (in fact it does affect every sound effect using the reverb and only in the ps2_netemu) is fixed by 0x2 value.
 +
Indigo Prophecy/Fahrenheit uses 0x1
 +
Kengo 3 uses 0x2
 +
 
 +
{{Boxcomm|id=0x30|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x31|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x32|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x33|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x34|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x35|name=Enable Force Flip Field|data=N/A}}
 +
Described in emu setting as "''Fix for [Hang] for soft-lock''"
 +
 
 +
{{Boxcomm|id=0x36|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x37|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x38|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x39|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x3A|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x3B|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x3C|name=N/A|data=N/A}}
 +
Command not available in ps2_netemu.self
 +
 
 +
{{Boxcomm|id=0x3D|name=Config revision|data=1x uint32_t}}
 +
This command works as a restriction, the emulator loads the config contents '''only''' if the '''emulator revision''' is bigger than the '''config revision'''. See: [[PS2_Emulation#PS2 Emulator Types and Revisions|PS2 Emulator Types and Revisions]]<br>
 +
The goal of this restriction is to prevent the emulator to load a config containing unsupported commands, as example netemu command 0x50 is only supported since netemu revision 17495 (shipped with PS3 firmware 4.78 or newer), otherway if you try to load a config with a revision higher than your netemu revision the contents of the config are going to be ignored (as example when trying to load a modern config using commands higher than 0x41 in a custom firmware 3.70)<br>
 +
In general is better to use a low revision with this command to lower the restriction as most as posible (oldest netemu revision is 15686), but '''only''' if the commands inside the config are not higher than 0x41, for a reference when creating custom configs check the table below, those are the minimal '''config revisions''' required that depends of the config commands contents
 +
 
 +
{| class="wikitable" style="font-size:1em; line-height:1em"
 +
|+Config commands supported by emulator revision
 +
! Supported Commands !! ps2_netemu Revision !! PS3 Firmware
 
|-
 
|-
|PBPX_952.39 || Online Start Up Disc v3.0                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x41 || 15686 || 3.70 or newer
 
|-
 
|-
|PBPX_955.01 || Linux for PS2 Beta Release 1                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x43 || 16604 || 4.20 or newer
 
|-
 
|-
|PBPX_955.07 || Playstation 2 Linux Runtime Environment v1.0 (Disc 1)                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x45 || 16808 || 4.30 or newer
 
|-
 
|-
|PBPX_955.09 || Linux for PS2 Release 1.0                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x46 || 16916 || 4.40 or newer
 
|-
 
|-
|PBPX_955.18 ||                                                                     || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x48 || 17041 || 4.45 or newer
 
|-
 
|-
|PDPX_991.09 || DVD Player (Version 3.04)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x4A || 17179 || 4.50 or newer
 
|-
 
|-
|PSXC_002.01 || PSX Update Disc 1.10                                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x4D || 17277 || 4.55 or newer
|-
+
|-
|PSXC_002.02 || PSX Update Disc 1.20                                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| Up to 0x50 || 17495 || 4.78 or newer
|-
+
|}
|PSXC_002.03 || PSX Update Disc 1.31                                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
 
|-
+
*Problems:
|PTPX_970.38 ||                                                                     || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
**The [[PS2 Official Configs|official NET config]] for Gradius V (SLPM-62462) uses config revision = 17498 (is the highest value ever found in a official PS2 classic config), this value is higher than any retail ps2_netemu.self revision, and is breaking the logic of the [[Template:Ps2configrev]] (used to calculate the PS3 firmware version required by the config). So either... 1) the description of this command written above is not accurate enought, or 2) the config has been "faked" to an incorrect revision, or 3) the config is real but sony made a mistake with the revision and the emulator is not loading it
|-
+
 
|SCAJ_201.25 || Tekken 5                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
{{Boxcomm|id=0x3E|name=Unknown|data=N/A}}
|-
+
Similar to 0x0D with param 0. Affect the same IOP related code path, but skips more code.
|SCAJ_201.26 || Tekken 5                                                             || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
|-
+
 
|SCES_532.02 || Tekken 5                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
{{Boxcomm|id=0x3F|name=Unknown|data=1x uint32_t}}
|-
+
Store value on 0x2B700 of SPE 0 (IOP) LS.
|SCKA_200.49 || Tekken 5                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
 
|-
+
{{Boxcomm|id=0x40|name=Unknown|data=N/A}}
|SCPM_621.15 ||                                                                     || 0x00 |0x1000000 || TITLE_MASK
+
Sets something 1
|-
+
Grand Theft Auto SA
|SCPM_621.16 ||                                                                      || 0x00 || 0x1000000 || TITLE_MASK
+
Silent Hill Origins - unofficial fix
|-
+
 
|SCPN_601.01 || PlayStation BB Navigator (Version 0.10)                              || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
{{Boxcomm|id=0x41|name=Unknown|data=N/A}}
|-
+
When enabled ignore D_ENABLEW (1000F590) writes from EE on SPE3 (EEDMA). D_ENABLER is updated regardless of cmd on PPE side. Enabling that command nullify 0x01 hooks for Max Payne!
|SCPN_601.30 || PlayStation BB Navigator (Version 0.20)                             || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
Dragon Force
|-
+
God Hand
|SCPN_601.40 || PlayStation BB Navigator (Version 0.30)                             || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
Gradius V
|-
+
Katamari Damacy
|SCPN_601.50 || PlayStation BB Navigator (Version 0.31)                             || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
 
|-
+
{{Boxcomm|id=0x42|name=EE Overlay patch|data=2 main Params + patch data: uint32_t address, uint32_t count, opcode,opcode,opcode...}}
|SCPN_601.60 || PlayStation BB Navigator (Version 0.32)                              || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
Seems it is not applied until some time. Look at the CUSTOM config for the Street Racing Syndicate - a 0x0A command had to be used instead of the 0x42 (black screen).
|-
+
Address need to be in 0xFF000 - 0xFFFFC range.
|SCPS_110.01 || I.Q. Remix                                                          || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
Count is size of patch in 4 bytes opcodes. So 5 opcode patch = count 5.
|-
+
Opcodes will be placed on selected address, we use only patch code, no need for original opcode.
|SCPS_110.10 || Yoake no Mariko (Performance Pack Edition)                           || 0x01 ||    0x1800 || SIO2_MASK
+
Next opcode addresses are auto calculated (+4..) so we need to specify only patch start address.
|-
+
Remember we need to jump to our new code, best way is command 0x0A with j (jump) opcode.
|SCPS_110.18 || Yoake no Mariko                                                      || 0x01 ||    0x1800 || SIO2_MASK
+
Also is important to add return jump if required. That one need to be added in our 0x42 patch.
|-
+
Maximum opcodes count seems to be 0x3FF (1023 opcodes).
|SCPS_110.21 || Yoake no Mariko 2nd Act (Limited Edition)                           || 0x01 ||     0x1800 || SIO2_MASK
+
 
|-
+
{{Boxcomm|id=0x43|name=Unknown|data=1x int32}}
|SCPS_110.22 || Yoake no Mariko 2nd Act                                              || 0x01 ||    0x1800 || SIO2_MASK
+
Equal to command 0x40, but with Parameter:
|-
+
0 = Default
|SCPS_150.38 || Lifeline                                                            || 0x0A ||    0x80300 || CDVD_READ_DELAY
+
1 = (like 0x40)
|-
+
param =
|SCPS_150.39 || Lifeline                                                            || 0x0A ||    0x80300 || CDVD_READ_DELAY
+
-1 = failure?
|-
+
 
|SCPS_170.01 || Gran Turismo 4                                                      || 0x0B || 0x10000000 || SPU2_BEHAVIOR
+
{{Boxcomm|id=0x44|name=Disables Smoothing and Smoothing option|data=N/A}}
|-
+
 
|SCPS_175.01 || Linux (for PlayStation2) Release 1.0                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
{{Boxcomm|id=0x45|name=Unknown|data=N/A}}
|-
+
Sets something 1
|SCPS_200.39 ||                                                                      || 0x00 ||  0x4000000 || TITLE_MASK
+
Prevent display_mode 2 (CELL_GCM_DISPLAY_576_unk)        [640x576]
 +
and      display_mode 0 (CELL_GCM_DISPLAY_480_unk) (60Hz?) [640x480]
 +
from beign set.
 +
 +
  Allow  display_mode 1 (CELL_GCM_DISPLAY_480_unk2) (59Hz?) [640x480]
 +
and    display_mode 5 (CELL_GCM_DISPLAY_720P_59)          [1280x720]
 +
depending on sys_info.video_mode & 0x200 is 0 or not.
 +
Both 480 modes can be either I or P, so is something else, probably 59/60Hz.
 +
This config possibly affect only in-emu UI, but this require testing.
 +
 +
Phantasy Star Complete Collection
 +
 
 +
{{Boxcomm|id=0x46|name=Enable L2H Improvement|data=N/A}}
 +
Performance related setting for titles using L2H (Local to Host, so called GS download (from GS to  EE))
 +
SMT Digital Devil Saga 1 - Crazy amount of GS downloads used to draw characters in-game
 +
SMT Nocturne
 +
Fatal Frame II
 +
Other games affected (not in official config)
 +
Soul Calibur 2 - When looking at the sun
 +
GT4 - When looking at the sun
 +
Valkyrie Profile 2 - Similar situation to SMT DDS1, in Solde game literally do thousands of 30QWC downloads all the time.
 +
 
 +
{{Boxcomm|id=0x47|name=Enables XOR CSR|data=N/A}}
 +
Graphics related setting.<br>
 +
XOR  bit 13 of GS CSR register (CSR.FIELD). Should fix fullscreen line corruption, maybe some interlacing issues. Long shot, but can possibly affect SCANMSK games.
 +
 
 +
{{Boxcomm|id=0x48|name=VSYNC Delay|data=2x uint32_t}}
 +
*First param possible value are 1 = No IPU, 2 = IPU, 3 = Anytime.
 +
*Second param is delay (in ms?), and can be also negative value.
 +
**Emu has standard presets for second param.
 +
***Agressive = 0x3D090 (250000 decimal),
 +
***Normal = 0x186A0 (100000 decimal),
 +
***Conservative = 0x4E20 (20000 decimal),
 +
***But other values can be used.
 +
[SMT Digital Devil Saga 1] uses 1, 0x3D090
 +
[Fatal Frame II] uses 0x2, 0xFFFFE69C (-6500 decimal)
 +
 
 +
{{Boxcomm|id=0x49|name=Unknown|data=N/A}}
 +
Sets something 0xB,0,0
 +
Trapt
 +
 
 +
{{Boxcomm|id=0x4A|name=Unknown|data=N/A}}
 +
Change VIF1 command 14h MSCAL behavior to use 15h MSCALF (VIF1) instead. MSCALF behavior is the same as MSCAL, but also waits for PATH1 and PATH2 to not be active before starting a microprogram. This is hack, and MSCAL should be fixed instead to wait in queue instead of triggering early.
 +
Applies to the Snowblind Engine games. Fixes the rest of flickering textures.
 +
Meant to be used in conjunction with the GX/SOFT Snowblind Engine's specific commands (double 0x01 and 0x23 combo).
 +
 
 +
{{Boxcomm|id=0x4B|name=Redirect SAVEDATA by ID|data=2x uint32_t + ID: offset, int, char[]}}
 +
For proper config we need at least 2 (can be more if needed) 0x4B commands, one to enable redirect, one to disable.
 +
First param is EE memory offset that when is hit enable/disable redirection.
 +
Second param is partially unknown, seems to be size of next param to read * 4 (3 in known configs), or 0xFFFFFFFF for disable redirect command.
 +
Third param is ID of SAVEDATA we want to use padded with 00 to match 12 bytes, or all 00 in disable redirect config.
 +
Important note here is that config have own 00 00 00 00 terminator at the end.
 +
So after 12 bytes of ID we need to add 4 bytes of 00. That apply also to disable redirect version.
 +
 
 +
{{Boxcomm|id=0x4C|name=Unknown|data=2x uint32_t + ID: offset, int, char[]}}
 +
Used to redirect to different ISO without game reset. First param is EE offset to hook, second param is ID size * 4. Emulator do some checks here, safe value is 3 (3 * 4 bytes), third value is ID in big endian hex ascii (eg. NPJD12345), additionally 0x4C expect own 00 00 00 00 terminator. To eventually end redirection use another 0x4C but with (offset, 0xFFFFFFFF, 4 * 0x00000000 . This config have very similar usage to 0x4B, just redirect to different iso, instead to different MC. Currently is unknown that cobra patched emulators support that config properly.
 +
 
 +
{{Boxcomm|id=0x4D|name=Unknown|data=1x uint32_t}}
 +
Param is MASK used in some conversion of Q value in RGBAQ writes. Default value 0.
 +
tempQ = Q & 0x7FFFFFFF
 +
tempQ = tempQ & MASK
 +
Q = tempQ | unmasked Q
 +
 
 +
Wild Arms: The Fifth Vanguard uses 0x3F800000
 +
 
 +
{{Boxcomm|id=0x4E|name=Unknown|data=Unknown}}
 +
 
 +
{{Boxcomm|id=0x4F|name=Unknown|data=Unknown}}
 +
 
 +
{{Boxcomm|id=0x50|name=Enable pressure sensitive controls|data=N/A}}
 +
 
 +
===Config file examples (for netemu)===
 +
 
 +
====Official PS2 Classic====
 +
See: [[PS2 Official Configs]]
 +
 
 +
====Official GXEMU/SOFTEMU extracted====
 +
See: [[PS2 Official Configs]]
 +
 
 +
==== Custom Configs ====
 +
See: [[PS2 Custom Configs]]
 +
 
 +
===Config data examples (hardcoded)===
 +
====Inside ps2_emu.self====
 +
Embedded patches are based on Checksum/Hash of title. ps2_emu is only emulator version where patches are described inside self file in ascii. Known patch types described in ascii are: Patch data, new SPU2 params, and Setting mecha HACK to show GODZCD as GODZCDDA.
 +
 
 +
{| class="wikitable sortable"
 +
! PS2 Title !! Hash !! Game !! Patch Type !! Data
 
|-
 
|-
|SCUS_971.67 || PaRappa the Rapper 2                                                || 0x04 ||     0x2000 || SIF_DMA_SYNC
+
| SCUS_971.46|| 0x6B1ADE00D||Disney's Treasure Planet || Patch data - Fixes black screen at start, it apply to STREAM_D.IRX file in IOP folder. || 0x147C (sector) , 0x580 (offset) (- 0xC on disc)
 +
Replace opcodes
 +
00 01 01 3C lui at,0x0100
 +
80 BF 03 3C lui v1,0xBF80
 +
C8 10 63 8C lw v1,0x10C8(v1)
 +
24 18 61 00 and v1,at
 +
FB FF 61 10 beq v1,at, -0x10
 +
00 00 00 00 nop
 +
 +
Original opcodes
 +
FF FF 01 24 li at,-0x1
 +
04 00 61 14 bne at,v1, +0x14
 +
00 80 01 3C lui at,0x8000
 +
02 00 41 14 bne at,v0, +0x0C
 +
00 00 00 00 nop
 +
0D 00 06 00 break 
 
|-
 
|-
|SCUS_972.69 || Final Fantasy XI [Disc 2]                                            || 0x02 ||       0xB || DEV9_MASK
+
|SLUS_201.74 ||0x23D92589C5|| Rumble Racing || Patch data - fixes black screen after Playstation 2 logo. Patch apply to AUDIO.IRX file in MODULES folder || 0x3AEDA (sector), 0x120 (offset)
|-
+
Replace opcodes
|SLES_500.48 || Donald Duck: Quack Attack                                            || 0x01 ||      0x800 || SIO2_MASK
+
06 00 80 14 bnez a0, +0x1C
|-
+
21 20 43 00 addu a0,v0,v1
|SLES_500.62 || Orphen: Scion of Sorcery                                            || 0x08 ||      0xC1C || CPU_DELAY
+
21 10 A0 00 move v0,a1
|-
+
02 00 A0 14 bnez a1, +0x0C
|SLES_503.64 || City Crisis                                                          || 0x0A ||    0x80BB8 || CDVD_READ_DELAY
+
00 00 00 00 nop
 +
01 00 05 24 li a1,0x1
 +
EB FF 40 10 beqz v0, -0x50
 +
04 00 84 24 addiu a0,0x4
 +
FC FF 90 24 addiu s0,a0,-0x4
 +
 +
Original opcodes
 +
07 00 80 14 bnez a0, +0x20
 +
21 80 43 00 addu s0,v0,v1
 +
21 10 A0 00 move v0,a1
 +
02 00 A0 14 bnez a1, +0x0C
 +
00 00 00 00 nop
 +
01 00 05 24 li a1,0x1
 +
FC FF 40 10 beqz v0, -0x0C
 +
00 00 00 00 nop
 +
04 00 04 26 addiu a0,s0,0x4
 +
 
|-
 
|-
|SLES_504.46 || Shadow Man 2: The Second Coming                                      || 0x0A ||   0x80600 || CDVD_READ_DELAY
+
|SLUS_211.96||0x24D92589D5|| Indigo Prophecy || new SPU2 params || 1
 
|-
 
|-
|SLES_505.40 || Simpsons: Road Rage                                                  || 0x01 ||     0x800 || SIO2_MASK
+
|SLPM_661.93||0x608634992D|| <abbr title="https://www.gamefaqs.com/ps2/544598-indigo-prophecy/data">Fahrenheit (NTSC-J)</abbr> || new SPU2 params || 1
 
|-
 
|-
|SLES_506.08 || Shadow Man 2: The Second Coming                                      || 0x0A ||   0x80600 || CDVD_READ_DELAY
+
|SLUS_212.96||0x5CA15DF14D|| Dance Factory ||Setting mecha HACK to show GODZCD as GODZCDDA ||
 +
|}
 +
 
 +
====Inside ps2_gxemu.self/ps2_softemu.self====
 +
There are hundreds of configs hidden in ps2_gxemu, and ps2_softemu self files. Internal config structure is basing on custom hash based on Title ID, internal memory offset pointing to place where true patch instruction is, and count of used commands. When disc/iso is started emulator search for configs, and if config for selected ID exist, then emulator apply it by itself. Is not perfect way of applying patches, because some games use the same ID, but different content. Good example here is Star Wars Battlefront II SLUS-21240, where some versions of game can refuse to work because it apply bad patch.
 +
 
 +
{| class="wikitable sortable"
 +
! PS2 Title !! Hash !! Game !! Patch Type !! Data
 
|-
 
|-
|SLES_506.28 || Simpsons: Road Rage                                                  || 0x01 ||     0x800 || SIO2_MASK
+
| ||  || ||   ||
 +
|}
 +
 
 +
==Known Emulation Bugs==
 +
This list known bugs inside emulator code that make emulation inaccurate. Since those are only EE side bugs for now, ps2_gxemu/ps2_netemu/ps_softemu share the same issues.
 +
{| class="wikitable sortable"
 +
! Bug !! Description !! Known Affected Games
 
|-
 
|-
|SLES_507.28 || Tiger Woods PGA Tour 2002                                            || 0x0A ||    0x803E8 || CDVD_READ_DELAY
+
| Missing Emotion Engine Cache emulation || Emulating that is literally not possible without making games run at 3 fps. Fixed by patches to game image, or EE code. || Ice Age 2, DOA2: Extreme, Nascar 2009 (luckily fixed by instant VIF bug).
 
|-
 
|-
|SLES_507.29 ||                                                                     || 0x0A ||    0x803E8 || CDVD_READ_DELAY
+
| Branch delay slot violation not supported on EE || Some games have Branch instruction inside Branch delay slots, this is not emulated correctly on EE (VU have proper emulation of that). This is patched in configs by rearangging MIPS code. || WRC 3,4,Rally Evolved, one of Action Replay discs. 
 
|-
 
|-
|SLES_512.82 || Tiger Woods PGA Tour 2003                                            || 0x0A ||    0x803E8 || CDVD_READ_DELAY
+
| VIF bugs || There is no correct timing, and queuing for some VIF commands like MSCAL. || Snowblind Engine games. Probably more.
 
|-
 
|-
|SLES_514.79 || Def Jam Vendetta                                                    || 0x01 ||      0x802 || SIO2_MASK
+
| XGKick is instant || Some games expect to XGKick happen few cycles in future, on PS3 is done instant. Fixed by config 0x07 which delay XGKick by selected value || WRC series, Wakeboarding Unleashed, TriAce games, World of Outlaws - Sprint Cars, Ty - The Tazmanian Tiger, dot Hack - G.U. series, and more
 
|-
 
|-
|SLES_518.41 || SpyHunter 2                                                          || 0x01 ||      0x800 || SIO2_MASK
+
| COP2 instructions are instant || Some games rely on fact that COP2 operations can take some time, on PS3 emulators they are done instantly due to lack of correctly emulated pipeline Patched by rearranging mips code || FFX, FFX-2, Ghost in The Shell SAC, Ace Combat series, Sprint Cars 1/2, Black, Run Like Hell, Everblue 2, Dragon Quest - Shounen Yangus no Fushigi na Daibouken, and many more
 
|-
 
|-
|SLES_518.44 || Time Crisis 3                                                       || 0x01 ||      0x800 || SIO2_MASK
+
| VU0 is not running in sync with EE core || Seems like old pcsx2 mVU approach is used where VU0 is running thousands of cycles ahead of EE. Partially resolved on emu using 0x12 command with 2/3 subcommands.  || 24 The Game, ATV Quad Power Racing 2, Twisted Metal Head-On, Primal, Ghosthunter, Rayman Arena, Rayman 3, All games using M-bit.
 
|-
 
|-
|SLES_519.97 || SWAT: Global Strike Team                                            || 0x01 ||      0x800 || SIO2_MASK
+
| M-Bit not supported || Emulator ignore VU0 M-Bit, that cause issues for games that need it to work correctly. This is done because there is no way to sync correctly running VU0 without sync with EE. Partially resolved on emu using 0x12 command with 2/3 subcommands. || Totally Spies! Totally Party, Mike Tyson Heavyweight Boxing, My Street, Crash Twinsanity, Marvel Nemesis, Panzer Elite Action - Fields of Glory, TriAce games (speed optimizations only), Super Monkey Ball Adventure, most Eko Software games, and many more.
 
|-
 
|-
|SLES_520.97 || SWAT: Global Strike Force                                            || 0x01 ||      0x800 || SIO2_MASK
+
| Emulator Fail to save correct flag instances while ending VU0 program on Ebit || This cause few games to read bad flag status (not status flag!) on COP2. This is resolved on emu by forcing update of MAC flag on every STATUS flag read (by config 0x12), this cause slowdowns creating a lot of unnesessary operations. || Driving Emotion Type-S, State of Emergency 2, The Getaway Black Monday.
 
|-
 
|-
|SLES_530.37 || Super Monkey Ball Deluxe                                            || 0x01 ||      0x802 || SIO2_MASK
+
| Not updated status flag when VDIV/VSQRT/VRSQRT is done on COP2 || Potential bad flag state can cause a lot of issues that are not related on first sight || Yanya Caballista (already patched by custom config)
 
|-
 
|-
|SLES_536.68 || Micro Machines v4                                                    || 0x01 ||      0x801 || SIO2_MASK
+
| In corner cases emu select wrong block pipeline state while processing Flag VU opcodes. || This can cause various issues, mostly SPS, missing graphic, specific slowdowns, etc. For now it was only confirmed that FSAND opcode don't ask for exact pipeline state, but looking at assembly of other opcode this rather affect all of them. || Tales of Legendia, more..
 
|-
 
|-
|SLES_537.55 || Castlevania: Curse of Darkness                                      || 0x04 ||      0x10 || SIF_DMA_SYNC
+
|}
 +
===Software emulation bugs===
 +
Related to the GS emulation issues mostly. Apply to the ps2_netemu especially.
 +
{| class="wikitable sortable"
 +
! Bug !! Description !! Known Affected Games
 
|-
 
|-
|SLES_537.96 || FIFA Street 2                                                       || 0x01 ||    0x1800 || SIO2_MASK
+
| No mipmapping support || Emulator does ignore the mipmap layers, probably for performance reasons. It is processing only the level 0 texture base pointer specified in the TEX0 register. There are games writing a garbage data into that memory area, when the mipmap level is different than zero. As a result, a garbled texture is shown instead of a correct one. || Ace Combat series, Ape Escape 2, EA Sports F1 series, Harry Potter series, ICO (psuedo volumetric rays), Jak and Daxter series, Nickelodeon Barnyard and Nicktoons Unite (very strange implementation), Ratchet and Clank series and more.
 
|-
 
|-
|SLPM_620.42 || Kurogane no Houkou: Warship Commander                                || 0x01 ||    0x3000 || SIO2_MASK
+
| SCANMSK register ignored || Emulator does ignore the SCANMSK setting responsible for restricting the drawing primitives on the odd or even lines. It is used as a fake transparency effect in some games by merging the two display circuits. || Metal Gear Solid series (heavy used in the MGS2 on the water and reflection effects), Gran Turismo series (ghost cars), Raw Danger! (depth of field/tonemapping effect)
 
|-
 
|-
|SLPM_620.62 || Gitaroo Man One                                                      || 0x0A ||   0x80540 || CDVD_READ_DELAY
+
|}
 +
 
 +
==TitleID/DiscID in ps2_netemu.self==
 +
There are 193 titleIDs listed inside ps2_netemu.self. More precisely, into XPARAM2.ELF file of PS2 Bios included in ps2_netemu.self. XPARAM2.ELF is called by OSDSYS, then ID check is performed. If title ID match to one of included in the table, different IOP emulation settings are applied.
 +
There are internal flags related to every title ID included inside file, still unknown what they do. Also some arguments, in plain text. File in real ps2 is introduced in SCPH-750XX models so exactly when DECKARD Power PC chip exchanged original IOP chip. This can explain why it is still in PS3 netemu bios. Because PS3 it is ppc that can need the same/similar flags.
 +
 
 +
Original PS2 bios include similar list file called XPARAM.ELF, but Title IDs there are not the same, although some of them exist on both lists.
 +
 
 +
{| class="wikitable sortable" ||  
 +
|-
 +
! Command !! Name
 
|-
 
|-
|SLPM_621.05 || Taikou Risshiden IV                                                  || 0x09 || 0x2B47000A || DEV5_INT_SPEED
+
| 0x00 || TITLE_MASK
 
|-
 
|-
|SLPM_621.24 || Ready 2 Rumble Boxing: Round 2                                      || 0x08 ||    0x1388 || CPU_DELAY
+
| 0x01 || SIO2_MASK
 
|-
 
|-
|SLPM_621.25 || Gauntlet: Dark Legacy                                                || 0x08 ||      0xC1C || CPU_DELAY
+
| 0x02 || DEV9_MASK
 
|-
 
|-
|SLPM_621.25 || Gauntlet: Dark Legacy                                                || 0x09 || 0x2B470005 || DEV5_INT_SPEED
+
| 0x03 || USB_MASK
 
|-
 
|-
|SLPM_621.35 || Final Fantasy: XI (Beta Version)                                    || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
+
| 0x04 || SIF_DMA_SYNC
 
|-
 
|-
|SLPM_621.54 || DDRMAX Dance Dance Revolution 6thMix                                || 0x08 ||    0x1A5E || CPU_DELAY
+
| 0x05 || SIF_DMA_LOAD
 
|-
 
|-
|SLPM_622.39 || Supercar Street Challenge                                            || 0x0A ||    0x80300 || CDVD_READ_DELAY
+
| 0x06 || DMAC_CH10_INT_DELAY
 
|-
 
|-
|SLPM_623.69 || Karaoke Revolution: J-Pop Vol.1                                      || 0x08 ||    0x1388 || CPU_DELAY
+
| 0x07 || MECHA_RECOGTIME
 
|-
 
|-
|SLPM_623.79 || Karaoke Revolution: J-Pop Vol.2                                      || 0x08 ||    0x1388 || CPU_DELAY
+
| 0x08 || CPU_DELAY
 
|-
 
|-
|SLPM_623.80 || Karaoke Revolution: J-Pop Vol.3                                      || 0x08 ||    0x1388 || CPU_DELAY
+
| 0x09 || DEV5_INT_SPEED
 
|-
 
|-
|SLPM_623.81 || Karaoke Revolution: J-Pop Vol.4                                      || 0x08 ||    0x1388 || CPU_DELAY
+
| 0x0A || CDVD_READ_DELAY
 
|-
 
|-
|SLPM_623.82 || Karaoke Revolution: Love & Ballad                                    || 0x08 ||    0x1388 || CPU_DELAY
+
| 0x0B || SPU2_BEHAVIOR
 
|-
 
|-
|SLPM_623.83 || Karaoke Revolution: Night Selection 2003                            || 0x08 ||     0x1388 || CPU_DELAY
+
|}
 +
 
 +
{| class="wikitable sortable" ||
 +
|-
 +
! ID !! Title !! Command !! Value !! Remarks
 +
|-
 +
|PBPX_952.01 || DVD Utility Disc Version 1.00                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.14 || Karaoke Revolution: Dreams & Memories                                || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.02 || DVD Utility Disc Version 1.01                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.37 || Suisui Sweet: Amai Ai no Mitsukekata                                || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
|PBPX_952.03 || DVD Utility Disc Version 1.01                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.50 || Karaoke Revolution: Anime Song Selection                            || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.06 || DVD Player (Version 2.01)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.51 || Karaoke Revolution: J-Pop Vol.5                                      || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.07 || DVD Player (Version 2.10)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.54 || Karaoke Revolution: J-Pop Vol.6                                      || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.08 || DVD Player (Version 2.10)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.55 || Karaoke Revolution: J-Pop Vol.7                                      || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.09 || DVD Player (Version 2.10)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.56 || Karaoke Revolution: J-Pop Vol.8                                      || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.10 || DVD Utility Disc Version 2.10                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.57 || Karaoke Revolution: Snow & Party                                    || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.11 || DVD Utility Disc Version 1.00                                        || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.64 || Pop'n Taisen Pazurudame Online                                      || 0x08 ||     0x1F40 || CPU_DELAY
+
|PBPX_952.21 || DVD Player (Version 2.12)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.79 || Karaoke Revolution: J-Pop Vol.9                                      || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.22 || DVD Player (Version 2.14)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.91 || Mega Man: The Power Battle                                          || 0x04 ||     0x2000 || SIF_DMA_SYNC
+
|PBPX_952.24 || DVD Player (Version 2.16)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_624.92 || Karaoke Revolution: Kids Song Selection                              || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.28 ||                                                                     || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_625.28 || Karaoke Revolution: Kazoku Idol Sengen (Bundle Edition)              || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.35 ||                                                                     || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_625.29 || Karaoke Revolution: Kazoku Idol Sengen                              || 0x08 ||     0x1388 || CPU_DELAY
+
|PBPX_952.39 || Online Start Up Disc v3.0                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_650.86 || A Visual Mix: Ayumi Hamasaki Dome Tour 2001 (Disc 1)                || 0x08 ||     0x1450 || CPU_DELAY
+
|PBPX_955.01 || Linux for PS2 Beta Release 1                                         || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_650.87 || A Visual Mix: Ayumi Hamasaki Dome Tour 2001 (Disc 2)                 || 0x08 ||     0x1450 || CPU_DELAY
+
|PBPX_955.07 || Playstation 2 Linux Runtime Environment v1.0 (Disc 1)               || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_650.90 || Spy Hunter                                                          || 0x01 ||     0x1800 || SIO2_MASK
+
|PBPX_955.09 || Linux for PS2 Release 1.0                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_651.97 || Nobunaga's Ambition Online                                          || 0x02 ||       0xB || DEV9_MASK
+
|PBPX_955.18 ||                                                                     || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_652.09 || Star Ocean: Till the End of Time                                    || 0x0B ||   0x20014 || SPU2_BEHAVIOR
+
|PDPX_991.09 || DVD Player (Version 3.04)                                            || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_654.38 || Star Ocean: Till the End of Time (Director's Cut) (Disc 1)          || 0x0B ||   0x20014 || SPU2_BEHAVIOR
+
|PSXC_002.01 || PSX Update Disc 1.10                                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_654.39 || Star Ocean: Till the End of Time (Director's Cut) (Disc 2)          || 0x0B ||   0x20014 || SPU2_BEHAVIOR
+
|PSXC_002.02 || PSX Update Disc 1.20                                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_654.88 || Grand Theft Auto: Vice City                                          || 0x0A ||     0x300 || CDVD_READ_DELAY
+
|PSXC_002.03 || PSX Update Disc 1.31                                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_654.88 || Grand Theft Auto: Vice City                                          || 0x09 || 0x36000200 || DEV5_INT_SPEED
+
|PTPX_970.38 ||                                                                     || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_656.33 || I Love Baseball: Pro Yakyu wo Koyonaku                              || 0x08 ||     0xFA0 || CPU_DELAY
+
|SCAJ_201.25 || Tekken 5                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
 
|-
 
|-
|SLPM_656.98 || Love Songs: ADV Futaba Riho 14-sai Natsu                            || 0x0A ||   0x80380 || CDVD_READ_DELAY
+
|SCAJ_201.26 || Tekken 5                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
 
|-
 
|-
|SLPM_657.05 || Final Fantasy XI: Chains of Promathia (Expansion Disc)              || 0x02 ||       0xB || DEV9_MASK
+
|SCES_532.02 || Tekken 5                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
 
|-
 
|-
|SLPM_657.06 || Final Fantasy XI: Chains of Promathia (All-In-One Edition)          || 0x02 ||       0xB || DEV9_MASK
+
|SCKA_200.49 || Tekken 5                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
 
|-
 
|-
|SLPM_657.19 || Burnout 3: Takedown                                                  || 0x01 ||     0x1C00 || SIO2_MASK
+
|SCPM_621.15 ||                                                                     || 0x00 || 0x1000000 || TITLE_MASK
 
|-
 
|-
|SLPM_657.83 || Nobunaga no Yabou Online: Tappi no Shou                              || 0x02 ||       0xB || DEV9_MASK
+
|SCPM_621.16 ||                                                                     || 0x00 || 0x1000000 || TITLE_MASK
 
|-
 
|-
|SLPM_658.94 || Winning Post 6: 2005 Version                                         || 0x01 ||     0x2400 || SIO2_MASK
+
|SCPN_601.01 || PlayStation BB Navigator (Version 0.10)                              || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_659.34 || Maple Colors                                                        || 0x0A ||   0x80300 || CDVD_READ_DELAY
+
|SCPN_601.30 || PlayStation BB Navigator (Version 0.20)                              || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_659.53 || Final Fantasy: XI (Entry Disc 2005)                                 || 0x02 ||       0xB || DEV9_MASK
+
|SCPN_601.40 || PlayStation BB Navigator (Version 0.30)                             || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_659.84 || Grand Theft Auto: San Andreas                                        || 0x0A ||   0x803E8 || CDVD_READ_DELAY
+
|SCPN_601.50 || PlayStation BB Navigator (Version 0.31)                              || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_660.33 || The Sword of Etheria                                                || 0x08 ||     0xC1C || CPU_DELAY
+
|SCPN_601.60 || PlayStation BB Navigator (Version 0.32)                              || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_660.33 || The Sword of Etheria                                                || 0x00 || 0x2000000 || TITLE_MASK
+
|SCPS_110.01 || I.Q. Remix                                                          || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_660.48 || The Sword of Etheria                                                || 0x08 ||     0xC1C || CPU_DELAY
+
|SCPS_110.10 || Yoake no Mariko (Performance Pack Edition)                          || 0x01 ||     0x1800 || SIO2_MASK
 
|-
 
|-
|SLPM_660.48 || The Sword of Etheria                                                || 0x00 || 0x2000000 || TITLE_MASK
+
|SCPS_110.18 || Yoake no Mariko                                                      || 0x01 ||     0x1800 || SIO2_MASK
 
|-
 
|-
|SLPM_660.57 || Taito Memories Vol.1                                                || 0x08 ||     0xCE4 || CPU_DELAY
+
|SCPS_110.21 || Yoake no Mariko 2nd Act (Limited Edition)                            || 0x01 ||     0x1800 || SIO2_MASK
 
|-
 
|-
|SLPM_661.56 || Marheaven: Arm Fight Dream                                          || 0x01 ||    0x1800 || SIO2_MASK
+
|SCPS_110.22 || Yoake no Mariko 2nd Act                                              || 0x01 ||    0x1800 || SIO2_MASK
 
|-
 
|-
|SLPM_661.75 || Akumajo Dracula: Yami no Juin                                        || 0x08 ||       0x60 || CPU_DELAY
+
|SCPS_150.38 || Lifeline                                                            || 0x0A ||   0x80300 || CDVD_READ_DELAY
 
|-
 
|-
|SLPM_661.75 || Akumajo Dracula: Yami no Juin                                        || 0x0B ||    0x2001C || SPU2_BEHAVIOR
+
|SCPS_150.39 || Lifeline                                                            || 0x0A ||    0x80300 || CDVD_READ_DELAY
 
|-
 
|-
|SLPM_663.93 || Final Fantasy XI: Treasures of Aht Urhgan (All-In-One Edition)      || 0x0A ||   0x803E8 || CDVD_READ_DELAY
+
|SCPS_170.01 || Gran Turismo 4                                                      || 0x0B || 0x10000000 || SPU2_BEHAVIOR
 
|-
 
|-
|SLPM_663.93 || Final Fantasy XI: Treasures of Aht Urhgan (All-In-One Edition)       || 0x09 || 0x2B47000A || DEV5_INT_SPEED
+
|SCPS_175.01 || Linux (for PlayStation2) Release 1.0                                || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPM_663.93 || Final Fantasy XI: Treasures of Aht Urhgan (All-In-One Edition)      || 0x02 ||       0xB || DEV9_MASK
+
|SCPS_200.39 ||                                                                     || 0x00 || 0x4000000 || TITLE_MASK
 
|-
 
|-
|SLPM_663.94 || Final Fantasy XI: Treasures of Aht Urhgan                            || 0x02 ||       0xB || DEV9_MASK
+
|SCUS_971.67 || PaRappa the Rapper 2                                                || 0x04 ||     0x2000 || SIF_DMA_SYNC
 
|-
 
|-
|SLPM_664.36 || Aria the Natural                                                    || 0x01 ||     0x1800 || SIO2_MASK
+
|SCUS_972.69 || Final Fantasy XI [Disc 2]                                            || 0x02 ||       0xB || DEV9_MASK
 
|-
 
|-
|SLPM_664.36 || Aria the Natural                                                    || 0x00 || 0xA000000 || TITLE_MASK
+
|SLES_500.48 || Donald Duck: Quack Attack                                            || 0x01 ||     0x800 || SIO2_MASK
 
|-
 
|-
|SLPM_665.39 || Nobunaga no Yabou Online: Haten no Shou                              || 0x02 ||       0xB || DEV9_MASK
+
|SLES_500.62 || Orphen: Scion of Sorcery                                            || 0x08 ||     0xC1C || CPU_DELAY
 
|-
 
|-
|SLPM_665.58 || Tomb Raider: Legend                                                  || 0x08 ||     0x3E8 || CPU_DELAY
+
|SLES_503.64 || City Crisis                                                          || 0x0A ||   0x80BB8 || CDVD_READ_DELAY
 
|-
 
|-
|SLPM_665.74 || Detective Evangelion                                                || 0x00 || 0x2000000 || TITLE_MASK
+
|SLES_504.46 || Shadow Man 2: The Second Coming                                      || 0x0A ||   0x80600 || CDVD_READ_DELAY
 
|-
 
|-
|SLPM_680.07 || Karaoke Revolution (Trial)                                          || 0x08 ||     0x1388 || CPU_DELAY
+
|SLES_505.40 || Simpsons: Road Rage                                                  || 0x01 ||     0x800 || SIO2_MASK
 
|-
 
|-
|SLPM_680.10 ||                                                                     || 0x08 ||     0x1388 || CPU_DELAY
+
|SLES_506.08 || Shadow Man 2: The Second Coming                                      || 0x0A ||   0x80600 || CDVD_READ_DELAY
 
|-
 
|-
|SLPS_200.08 || Morita Shogi                                                        || 0x08 ||     0x1388 || CPU_DELAY
+
|SLES_506.28 || Simpsons: Road Rage                                                  || 0x01 ||     0x800 || SIO2_MASK
 
|-
 
|-
|SLPS_200.20 || FIFA 2000 World Championship                                        || 0x04 ||     0x2001 || SIF_DMA_SYNC
+
|SLES_507.28 || Tiger Woods PGA Tour 2002                                            || 0x0A ||   0x803E8 || CDVD_READ_DELAY
 
|-
 
|-
|SLPS_200.37 || Go Go Golf                                                          || 0x09 || 0x2B47000A || DEV5_INT_SPEED
+
|SLES_507.29 ||                                                                     || 0x0A ||   0x803E8 || CDVD_READ_DELAY
 
|-
 
|-
|SLPS_200.38 || Grappler Baki: Baki Saidai no Tournament                            || 0x08 ||     0x1194 || CPU_DELAY
+
|SLES_512.82 || Tiger Woods PGA Tour 2003                                            || 0x0A ||   0x803E8 || CDVD_READ_DELAY
 
|-
 
|-
|SLPS_200.53 || Tenshi no Present: Marle Oukoku Monogatari (Limited Edition)        || 0x0B || 0x20000000 || SPU2_BEHAVIOR
+
|SLES_514.79 || Def Jam Vendetta                                                    || 0x01 ||     0x802 || SIO2_MASK
 
|-
 
|-
|SLPS_200.66 || Tenshi no Present: Marle Oukoku Monogatari                          || 0x0B || 0x20000000 || SPU2_BEHAVIOR
+
|SLES_518.41 || SpyHunter 2                                                          || 0x01 ||     0x800 || SIO2_MASK
 
|-
 
|-
|SLPS_201.01 || City Crisis                                                         || 0x0A ||   0x80BB8 || CDVD_READ_DELAY
+
|SLES_518.44 || Time Crisis 3                                                        || 0x01 ||     0x800 || SIO2_MASK
 
|-
 
|-
|SLPS_201.11 || Magical Sports Pro Baseball 2001                                    || 0x09 || 0x2B47000A || DEV5_INT_SPEED
+
|SLES_519.97 || SWAT: Global Strike Team                                            || 0x01 ||     0x800 || SIO2_MASK
 
|-
 
|-
|SLPS_201.72 || Koushien: Konpeki no Sora                                           || 0x09 || 0x2B47000A || DEV5_INT_SPEED
+
|SLES_520.97 || SWAT: Global Strike Force                                           || 0x01 ||     0x800 || SIO2_MASK
 
|-
 
|-
|SLPS_201.73 || Hard Hitter 2                                                        || 0x0A ||   0x80300 || CDVD_READ_DELAY
+
|SLES_530.37 || Super Monkey Ball Deluxe                                            || 0x01 ||     0x802 || SIO2_MASK
 
|-
 
|-
|SLPS_201.97 || Surfing Air Show with RatBoy                                        || 0x09 || 0x2B47000A || DEV5_INT_SPEED
+
|SLES_536.68 || Micro Machines v4                                                    || 0x01 ||     0x801 || SIO2_MASK
 
|-
 
|-
|SLPS_201.99 || F1 2002                                                              || 0x0B ||   0x20005 || SPU2_BEHAVIOR
+
|SLES_537.55 || Castlevania: Curse of Darkness                                      || 0x04 ||       0x10 || SIF_DMA_SYNC
 
|-
 
|-
|SLPS_202.00 || Final Fantasy XI                                                    || 0x02 ||       0xB || DEV9_MASK
+
|SLES_537.96 || FIFA Street 2                                                        || 0x01 ||     0x1800 || SIO2_MASK
 
|-
 
|-
|SLPS_204.04 || Rakushou! Pachi-Slot Sengen 2                                        || 0x0A ||   0x80300 || CDVD_READ_DELAY
+
|SLPM_620.42 || Kurogane no Houkou: Warship Commander                                || 0x01 ||     0x3000 || SIO2_MASK
 
|-
 
|-
|SLPS_204.29 || Hissatsu Pachi-Slot Evolution: Ninja Hattori-Kun V                  || 0x08 ||     0x1B58 || CPU_DELAY
+
|SLPM_620.62 || Gitaroo Man One                                                      || 0x0A ||   0x80540 || CDVD_READ_DELAY
 
|-
 
|-
|SLPS_204.55 || Simple 2000 Series Vol.94: The Aka-Champion - Come on Baby          || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
|SLPM_621.05 || Taikou Risshiden IV                                                  || 0x09 || 0x2B47000A || DEV5_INT_SPEED
 
|-
 
|-
|SLPS_250.08 || Sorcerous Stabber Orphen                                            || 0x08 ||     0xC1C || CPU_DELAY
+
|SLPM_621.24 || Ready 2 Rumble Boxing: Round 2                                      || 0x08 ||     0x1388 || CPU_DELAY
 
|-
 
|-
|SLPS_250.71 || A Visual Mix: Ayumi Hamasaki Dome Tour 2001                          || 0x08 ||     0x1450 || CPU_DELAY
+
|SLPM_621.25 || Gauntlet: Dark Legacy                                                || 0x08 ||     0xC1C || CPU_DELAY
 
|-
 
|-
|SLPS_250.72 || A Visual Mix: Ayumi Hamasaki Dome Tour 2001                          || 0x08 ||     0x1450 || CPU_DELAY
+
|SLPM_621.25 || Gauntlet: Dark Legacy                                                || 0x09 || 0x2B470005 || DEV5_INT_SPEED
 
|-
 
|-
|SLPS_250.81 || Saishuu Densha                                                      || 0x0A ||   0x803E8 || CDVD_READ_DELAY
+
|SLPM_621.35 || Final Fantasy: XI (Beta Version)                                    || 0x00 || 0xA0000000 || TITLE_MASK, 0xA0000000 = Blacklist, boot after removing flag
 
|-
 
|-
|SLPS_251.36 || Kuon no Kizuna Sairin Mikotonori                                    || 0x0A ||   0x805DC || CDVD_READ_DELAY
+
|SLPM_621.54 || DDRMAX Dance Dance Revolution 6thMix                                || 0x08 ||     0x1A5E || CPU_DELAY
 
|-
 
|-
|SLPS_251.42 || Tiger Woods PGA Tour 2002                                           || 0x0A ||    0x803E8 || CDVD_READ_DELAY
+
|SLPM_622.39 || Supercar Street Challenge                                           || 0x0A ||    0x80300 || CDVD_READ_DELAY
 
|-
 
|-
|SLPS_251.50 || Only You                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
|SLPM_623.69 || Karaoke Revolution: J-Pop Vol.1                                      || 0x08 ||     0x1388 || CPU_DELAY
 
|-
 
|-
|SLPS_252.37 || Only You                                                            || 0x0B || 0x40000000 || SPU2_BEHAVIOR
+
|SLPM_623.79 || Karaoke Revolution: J-Pop Vol.2                                      || 0x08 ||     0x1388 || CPU_DELAY
 
|-
 
|-
|SLPS_252.75 || Def Jam: Vendetta                                                    || 0x01 ||     0x802 || SIO2_MASK
+
|SLPM_623.80 || Karaoke Revolution: J-Pop Vol.3                                      || 0x08 ||     0x1388 || CPU_DELAY
 
|-
 
|-
|SLPS_252.78 || Memories Off: Mix                                                    || 0x0A ||   0x80300 || CDVD_READ_DELAY
+
|SLPM_623.81 || Karaoke Revolution: J-Pop Vol.4                                      || 0x08 ||     0x1388 || CPU_DELAY
 
|-
 
|-
|SLPS_252.90 || Time Crisis 3                                                        || 0x01 ||     0x800 || SIO2_MASK
+
|SLPM_623.82 || Karaoke Revolution: Love & Ballad