Editing PS2 Emulation

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

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

Latest revision Your text
Line 489: Line 489:
  ----+-----------+---------------+-----------+-----------|
  ----+-----------+---------------+-----------+-----------|
   0 | NTSC-NI  |  640x240(224) | 59.940    | 15.734    |
   0 | NTSC-NI  |  640x240(224) | 59.940    | 15.734    |
   1 | NTSC-I    |  640x480(448) | 59.820    | 15.734    |
   1 | NTSC-I    |  640x480(440) | 59.820    | 15.734    |
   2 | PAL-NI    |  640x288(256) | 50.000    | 15.625    |
   2 | PAL-NI    |  640x288(264) | 50.000    | 15.625    |
   3 | PAL-I    |  640x576(512) | 49.760    | 15.625    |
   3 | PAL-I    |  640x576(488) | 49.760    | 15.625    |
   4 | VESA-1A  |  640x480      | 59.940    | 31.469    |
   4 | VESA-1A  |  640x480      | 59.940    | 31.469    |
   5 | VESA-1C  |  640x480      | 75.000    | 37.500    |
   5 | VESA-1C  |  640x480      | 75.000    | 37.500    |
Line 500: Line 500:
   10 | VESA-4A  | 1280x1024    | 60.020    | 63.981    |
   10 | VESA-4A  | 1280x1024    | 60.020    | 63.981    |
   11 | VESA-4B  | 1280x1024    | 75.025    | 79.976    |
   11 | VESA-4B  | 1280x1024    | 75.025    | 79.976    |
   12 | DTV-480P  |  720x480     | 59.940    | 31.469    |
   12 | DTV-480P  |  704x480     | 59.940    | 31.469    |
   13 | DTV-1080I | 1920x1080    | 60.000    | 33.750    |
   13 | DTV-720P  | 1280x800     | ??        | ??        |
  14 | DTV-720P  | 1280x720     | ??        | ??        |
  ----^-----------^---------------^-----------^-----------'
  ----^-----------^---------------^-----------^-----------'


Line 944: Line 943:


===ps2_netemu.self===
===ps2_netemu.self===
Support for USB devices seems to be limited comparing to other available emulators. Although PS2 side of USB subsystem seems to be fully implemented. IOP emulator in SPU handle USB HW registers addresses and generate interrupt for PPU which later handle RW to mentioned registers in similar fashion to ps2_emu/ps2_gxemu. PS2 side of things can be disabled/enabled using one byte, when disabled USB writes are ignored, and USB reads return 0. Initial state is unknown. Emulator seems to accept HID controllers and use them as DS3.
<br/><br/>
Supported devices:
#BD Remote Control
#BD Remote Control
#PLAYSTATION(R)3 Controller (Vendor ID 0x54C, Product ID 0x268),  
#PLAYSTATION(R)3 Controller (Vendor ID 0x54C, Product ID 0x268),  
Line 1,313: Line 1,309:
       anything else = LV1 panic
       anything else = LV1 panic
  0x04 - Unknown. Available for HW0 only.  
  0x04 - Unknown. Available for HW0 only.  
  0x05 - External interrupts disable (48 bit in MSR). Returns previous MSR state.
  0x05 - External interrupt disable (48 bit in MSR).
  0x06 - External interrupts enable (48 bit in MSR) if param & 0x8000 is not 0, otherwise disable them.
  0x06 - External interrupt enable (48 bit in MSR) with param 0x8000, otherwise do nothing.
      This sc is more like restore 48th bit of MSR, but many times emu use it to enable bit without using old state.
      Also, emulator panic LV1 if syscall is called while external interrupts are already enabled.
  0x0A - IPU emulation related syscall
  0x0A - IPU emulation related syscall
  0x0B - IPU emulation related syscall
  0x0B - IPU emulation related syscall
Line 1,324: Line 1,318:
  0x0F - PS2 counters/timers related (also used on vsync related functions).
  0x0F - PS2 counters/timers related (also used on vsync related functions).
  0x10 - lv1 panic.
  0x10 - lv1 panic.
0x11 - Wrapper for lv1_read_virtual_uart(port_number, buffer, bytes) [HW0 only, only ports 0 and 2 available, else panic]
0x12 - Wrapper for lv1_storage_send_device_command(dev_id, cmd_id, cmd_block, cmd_size, data_buffer, blocks)
      [HW0 only, Available only for threads: VRC, MECHA, HDD, else panic]
      params are rearranged:
      r3 = cmd_block (0x245E000 is added to this value internally)
      r4 = data_buffer (0x245E000 is added to this value internally)
      r5 = blocks
      dev_id is taken from 0x245D008 and it is 0(HDD) for my dump.
      cmd_id = 0x88 and cmd_size is 8.
0x13 - Set thread info unknown byte to 1 for respective thread and set unknown byte to 1 in USB thread.
      [HW0 only, else panic. Available only for threads: BL2MAIN and BL2LNK, else do nothing in exception handler]
0x14 - Same as 0x13 but set all bits to 0 regardless which thread called it.
      [HW0 only, else panic. Available only for threads: BL2MAIN and BL2LNK, else do nothing in exception handler]
  0x1002 - Invalidate gpu hvcalls.
  0x1002 - Invalidate gpu hvcalls.
  0x800000XX - HV Syscall where XX is syscall nr.
  0x800000XX - HV Syscall where XX is syscall nr.
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

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

Cancel Editing help (opens in new window)