PS1 Emulation

From PS3 Developer wiki
Revision as of 20:11, 7 October 2017 by Sandungas (talk | contribs) (resolution section moved to top (most noob friendly at top))
Jump to navigation Jump to search

Description

Note: there are no PS1 emulators available in early Tool/DECR and Debug/DEX firmwares (does not have dev_flash/ps1emu or ps2emu folder. dev_flash/vsh/etc/version.txt & index.dat say: ¨ps1emu:NA@NA: ps2emu:NA@NA: ps2gxemu:NA@NA: emerald:NA@NA: bdp:NA@NA:¨).

Firmware changes related with PS1 emulation
  • Firmware 1.02:
    • Added ps1_emu.self
  • Firmware 1.70:
    • Added ps1_netemu.self
    • Added the ability to play original PlayStation format games downloaded from the PlayStation Store.
    • Added rumble functionality for USB accessories which support it when playing PS2 games.
    • Saved data from PlayStation format software now usable on both PSP and PS3 systems.
    • Backwards compatibility for PS1 and PS2 games was improved.
  • Firmware 1.80:
    • Ability to upscale PS1 and PS2 games
    • Ability to copy PS1/PS2 game saves from PS3 to Memory Cards using a Memory Card adapter.
    • Backwards compatibility for PS1 and PS2 games was improved.
  • Firmware 2.10:
    • Added ps1_newemu.self and ps1_rom.bin (CRC32:D5FF6273 / CRC16:111D file is same as in 4.11 and all versions in between)
    • Users can now play PS1 game discs on a PSP with remote play, PSP firmware version 3.50 or newer is required. (this feature was not announced).
    • Backwards compatibility for PS1 and PS2 games was improved (Update was also unannounced but evident in Sony's backwards compatibility search site).
    • Note: since 2.10++ all PS1 emulators, ps1_emu.self, ps1_netemu.self, ps1_newemu.self uses the since then added ps1_rom.bin bios file.

XMB settings related with PS1 emulation

PS1 Native resolution

Games are always 4:3 with any resolution between 640x480 NTSC / 640x512 PAL (the bios initialisation screen) and lower:

  • Horizontal: 256 (rare e.g. Dragon Warrior VII), 320, 368 (occasionally 384 e.g. SF Zero 3 but not X-Men vs SF which was shrunk to 368), 512 or 640
  • Vertical: 240 (NTSC), 256 (PAL), 480 (NTSC), 512 (PAL)

Tekken 3 uses a strange pixel area of 368x480. Regardless of the screen area, the aspect ratio is still 4:3 for all PlayStation games. Very common resolutions : 320x240 for NTSC and 320x256 for PAL.

PS2 Native Resolution

Video output resolution: variable from 256x224 to 1280x1024 pixels

PS/PS2 Upscaling & smoothing

Options added to XMB since 1.80++ Both options can be set individually.

PS/PS2 upscaling:

  • Off - Disable upscaled output.
  • Normal - Upscale and display at a size that matches the screen size (keep 4:3 aspect ratio)
  • Full - Upscale and display at full screen by changing proportions and stretching the image (to widescreen)

PS/PS2 smoothing:

  • Off - Disable smoothing
  • On - Use smoothing to reduce the roughness of the displayed image (note: when titles that support progression scan have this option turned on, they revert back to 480p with no alterations)

Samples: http://uk.ps3.ign.com/articles/793/793775p1.html

arguments

From multiman.cpp source (line 2502) http://code.google.com/p/multiman/source/browse/source/multiman.cpp?r=8c5b662f1c54d4f95f646949cae3d033b15b1a2e

Code Sample

ps1_emu.self

ps1_emu.self arguments
7 arguments Name Example Notes
argv[0] self starting location dev_flash/ps1emu/ps1_emu.self
argv[1] VM1-1 location dev_hdd0/savedata/vmc/filename1.VM1
argv[2] VM1-2 location dev_hdd0/savedata/vmc/filename2.VM1
argv[3] Regionnumber/TargetID 0082
argv[4] unknown 1200
argv[5] unknown 1
argv[6] unknown 0

ps1_netemu.self

ps1_netemu.self arguments
7 arguments Name Example Notes
argv[0] self starting location dev_flash/ps1emu/ps1_netemu.self
argv[1] ISO.BIN.EDAT location
argv[2] unknown
argv[3] unknown
argv[4] unknown
argv[5] unknown
argv[6] unknown

ps1_newemu.self

ps1_newemu.self arguments
9 arguments Name Example Notes
argv[0] self starting location dev_flash/ps1emu/ps1_newemu.self
argv[1] VM1-1 location dev_hdd0/savedata/vmc/filename1.VM1
argv[2] VM1-2 location dev_hdd0/savedata/vmc/filename2.VM1
argv[3] Regionnumber/TargetID 0082
argv[4] unknown 600
argv[5] unknown null/empty
argv[6] unknown 1
argv[7] unknown 2
argv[8] unknown 2

Savegames

Location: /dev_hdd0/savedata/vmc
Note: capitalisation of filename is important: name it xxx.VM1 instead of xxxx.vm1 (e.g. Internal Memory Card.VM1 for PSX/PSone, Internal Memory Card.VM2 for PS2/PStwo)

The .VMx files appear to be raw memory card data:

Game settings

Game settings hardcoded in PS1 emulators

http://www.ps3hax.net/showpost.php?p=261592&postcount=1264

CONFIG

Created by the Emulator at path: /USRDIR/CONFIG

Content:

00000000 1C 00 00 00 50 53 31 45 6D 75 43 6F 6E 66 69 67 ....PS1EmuConfig
00000010 46 69 6C 65 00 97 0A 54 04 00 00 00 01 00 00 00 File...T........
00000020 0F D4 CC B9 10 00 00 00 64 69 73 63 5F 6E 6F 00 ........disc_no.
00000030 04 00 00 00 00 00 00 00 93 D1 5B F8             ..........[.    


Offset size data notes
0x00 0x04 1C 00 00 00 size of content
0x04 0x14 "PS1EmuConfigFile"
0x18 0x04 00 97 0A 54
0x1C 0x04 01 00 00 00
0x20 0x04 0F D4 CC B9 crc
0x24 0x04 10 00 00 00 size of content
0x28 0x08 "disc_no"
0x30 0x04 04 00 00 00 amount of discs
0x34 0x04 00 00 00 00 disc number
0x38 0x04 93 D1 5B F8 crc

Manual starting SELF method

  1. Insert PSX/PSone disc (region/pressed doesn't matter)
  2. Start MultiMAN (e.g. 2.07.01++)
  • Since 02.07.05 the PSX and PS2 discs are properly detected. PSX discs will show in XMB Game Column and you can launch the PS1 game from there. It uses ps1_emu.self default (you can choose Load or Load (Net), latter uses ps1_netemu).
  1. Switch to filemanager mode
  2. Browse to /dev_flash/ps1emu
  3. Select either one of the ps1 emulation SELF files

Note: Some games run better with ps1_emu.self (e.g. Motal Kombat) while others run better with ps1_netemu.self (e.g. Resident Evil 3). If it doesn't work, try another ps1 emulation SELF file.

Downside: memory card options are unavailable unless you created a Virtual Memorycard before starting MultiMAN (XMB::Category Game:: Memory Card Utility (PS/PS2) > Create a PS1 memory card. Set it to Slot 1 (Press Triangle while selecting the Memory Card, then Assign it). Note: naming it "Internal Memory Card" sometimes works better than other names. MultiMAN 02.07.07 seems to solve the savegame issues.

Changes in MultiMAN 2.07.00/01 for ps1_emu handling

These options where needed to make above work:

  • Added: LV2 access rights to use LV1 Storage Manager (syscall 864)
  • Added: LV1 patch for user access to sys_storage functions (syscalls 600 to 623)