Editing PS2 Emulation/PS2 Config Commands
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 363: | Line 363: | ||
0x4000000 = Enable type 2 config from cmd 0x12. | 0x4000000 = Enable type 2 config from cmd 0x12. | ||
0x8000000 = Accurate VU0 DIV opcode, not used in COP2 mode. | 0x8000000 = Accurate VU0 DIV opcode, not used in COP2 mode. | ||
0x10000000 = Full Accurate VU0 MUL. Use runtime from CMD 0x10, but for every matching VU0 opcode, including opcodes like MSUB for mul part. | 0x10000000 = Fast Accurate VU0 MUL. Try to round mantissa. Opcodes like MSUB/MADD additionally require 0x100000 to be enabled, otherwise command skip them. Not used in COP2 mode. | ||
0x20000000 = Full Accurate VU0 MUL. Use runtime from CMD 0x10, but for every matching VU0 opcode, including opcodes like MSUB for mul part. | |||
Opcodes like MSUB/MADD additionally require 0x100000 to be enabled, otherwise command skip them. | Opcodes like MSUB/MADD additionally require 0x100000 to be enabled, otherwise command skip them. | ||
Selecting both 0x10000000 and 0x20000000 (0x30000000) work the same way as 0x20000000. | Selecting both 0x10000000 and 0x20000000 (0x30000000) work the same way as 0x20000000. | ||
Line 459: | Line 459: | ||
{{Boxcomm|id=0x20|name=Unknown|data=1x uint64_t}} | {{Boxcomm|id=0x20|name=Unknown|data=1x uint64_t}} | ||
Default 0x3C | Default 0x3C | ||
Config value is used as multiplier for value | 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. | |||
*Valid values found: 10d, 60d, 100d, 120d, 200d, 240d | *Valid values found: 10d, 60d, 100d, 120d, 200d, 240d | ||
Line 753: | Line 742: | ||
=PS2 Gxemu Commands= | =PS2 Gxemu Commands= | ||
PS2 GX Emu commands are Big Endian unless noted. Every command size is 0x18, and unused data need to be filled with zeros. Commands which point to emulator memory have additional data, but command itself is still 0x18 in size. Data fields are just example values and can be changed to different value when needed. | PS2 GX Emu commands are Big Endian unless noted. Every command size is 0x18, and unused data need to be filled with zeros. Commands which point to emulator memory have additional data, but command itself is still 0x18 in size. Data fields are just example values and can be changed to different value when needed. | ||
{{BoxcommGX|id=0x01|net_id=0x02|data=1x int32|}} | {{BoxcommGX|id=0x01|net_id=0x02|data=1x int32|}} | ||
Used in function that handle D6 CHCR writes (SIF1), seems to be some kind of timing command for EE --> IOP DMA. | Used in function that handle D6 CHCR writes (SIF1), seems to be some kind of timing command for EE --> IOP DMA. | ||
Line 874: | Line 800: | ||
Additional example data at 0x341190 looks like this: | Additional example data at 0x341190 looks like this: | ||
32 bit EE offset | 32 bit EE offset | 32 bit original opcode | 32 bit original opcode | 32 bit replace opcode | 32 bit replace opcode | ||
0x00418750 | 0x00418750 | 0x1062FFFA | 0x00000000 | 0x00000000 | 0x00000000 | ||
due to patch count == 2 in this example, there is next set of data right after first one: | due to patch count == 2 in this example, there is next set of data right after first one: | ||
32 bit EE offset | 32 bit EE offset | 32 bit original opcode | 32 bit original opcode | 32 bit replace opcode | 32 bit replace opcode | ||
0x00418808 | 0x00418808 | 0x1062FFFA | 0x00000000 | 0x00000000 | 0x00000000 | ||
{{BoxcommGX|id=0x09|net_id=0x0B|data=1x int32|}} | {{BoxcommGX|id=0x09|net_id=0x0B|data=1x int32|}} | ||
Patch disc data during read operation. <!--todo: explain lba/offset.. offset.--> | Patch disc data during read operation. <!--todo: explain lba/offset.. offset.--> | ||
Line 1,027: | Line 916: | ||
32 bit ID | 32 bit align | 32 bit align | 32 bit align | 32 bit align | 32 bit align | 32 bit ID | 32 bit align | 32 bit align | 32 bit align | 32 bit align | 32 bit align | ||
0x00000019 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000019 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | ||
{{BoxcommGX|id=0x1A|net_id=0x1D|data=1x int8|}} | {{BoxcommGX|id=0x1A|net_id=0x1D|data=1x int8|}} | ||
Line 1,163: | Line 965: | ||
32 bit ID | 32 bit align | 32 bit align | 32 bit align | 32 bit align | 32 bit align | 32 bit ID | 32 bit align | 32 bit align | 32 bit align | 32 bit align | 32 bit align | ||
0x0000001F | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x0000001F | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | ||