PS1 and PS2 Emulator Mods

PS3 [Release] PS1 and PS2 Emulator Mods 20\10\2024

mrjaredbeta

Developer
Hi all,

I am providing some emulator mods for ps1_emu, ps1_netemu, ps2_emu, ps2_gxemu, and ps2_netemu, all courtesy of kozarovv. A variety of features have been introduced, such as new config commands for ps2_netemu, external config support for ps2_gxemu, GTE widescreen support for ps1_emu and ps1_netemu, and much more!

I have personally tested a bit of this:
  • Anti-blur has been only confirmed working with Kingdom Hearts 2 and clears up the image quite nicely on ps2_netemu.
  • Widescreen hack tested and confirmed working on ps1_netemu with Silent Hill.
  • No immediate changes with any tested game on ps2_netemu's EE cycle manipulation command. Maybe emulation is not EE limited?

This is CFW only! No HEN compatibility (never for ps2_netemu, maybe possible at some point for ps1 emus?).

Readme:
Code:
PS2 Netemu Features:

* FPS Counter
** First one or two reads after enabling menu are bugged and show wrong value. That's because code to reset counter works only when menu is active. At some point this will be fixed.
** Counter is measuring GS Display/Dispfb registers write count per second. It's independent of PS3 framerate; it shows PS2 internal framerate.
* Activate menu combo for gamepads where the PS button is not working.
** Press Left DPAD + Square + L1 + R1 for 5-6 seconds in-game to open the menu.
* EE Overclocking/Undeclocking
* Partial Antiblur
* 2 new config commands for the above features
** 0x4F for No Blur (no param)
** 0x4E for Cycles manipulation parameter: 1 = -50%, 2 = -25%, 3 = +25%, 4 = +50%
** New config commands are ignored on unpatched emulators, so it's safe to add them even for HEN setups (they will just do nothing there).
* Modified BIOS with added X modules for increased PS2 homebrew compatibility.
** Added: XMCMAN, XSIO2MAN, XPADMAN, XMCSERV, XMTAPMAN, LIBSD

Features not implemented in this release:
* Displaying a R5900 PC/RA, it's useful only for fixing games. Patches are available on the wiki.
* Fastboot (skip PS2 logo); it's a BIOS patch, and I didn't had time to create a config for it; hardcoding wasn't an option.

Both manipulating EE cycles and enabling No Blur are much less effective than what I expected them to be. For now the only game that is known to profit from No Blur is Kingdom Hearts 2, no games affected by cycle manipulations for now (but that was tested before fps counter was a thing).
New configuration features are accessible through the Debug Menu and replace Vsync Delay and XOR CSR options. Configs for those options are still working fine.
Code quality is terrible, many features were thrown onto existing code that sometimes has been modified earlier. So it matches original Netemu code quality at least. :D

-----------------------------------------------------------------------------------------------

PS2 Gxemu Features:
* Extended Config Table using trick from https://www.psdevwiki.com/ps3/Talk:PS2_Emulation#Extend_config_table_by_50%_in_ps2_gxemu
** Added a few configurations as an example: Way of the Samurai 1 and 2 (SLUS_204.07/SSLUS_208.93) Darkwatch SLUS_210.42 (stuttering audio fix only).
* Modified BIOS with added X modules for increased homebrew compatibility.
** Added: XMCMAN, XSIO2MAN, XPADMAN, XMCSERV, XMTAPMAN, LIBSD
* Temperature Display (unfinished but fully working, for now replacing string "Charge Level" in menu), credits to 3141card for original Netemu implementation.

--fps_plus_combo version additionally have implemented FPS counter and "square + select" combo to show temperatures/fps.
--working_cfgs_ps2_gxemu version additionally allow loading custom config file named exactly like game executable (ie SLES_123.45) from dev_hdd0/vm/gx/
    Internal config table is still fully working.

More features, more messy code inside. Shame on me. :P
-----------------------------------------------------------------------------------------------

PS2 Emu Features:
* Temperature Display (unfinished but fully working, for now replacing string "Charge Level" in menu), credits to 3141card for original Netemu implementation.
** Under the hood, this was the most demanding port of the old implementation. Ps2_emu misses basics like s(n)printf; there is also no vuart bug that the old implementation relies on; additionally, there is also less space that is known to be unused.
** Due to the above, supported temperatures are in the range of 00-99 °C. Temperatures above 99 °C will be shown without the first character (e.g., 123 will be 23). But if you are hitting +100c on PS3, then you have more problems than that.

-----------------------------------------------------------------------------------------------

PS1 Netemu Features:

* Automatic GTE Widescreen Patch
** Work only on 3D elements. Compatibility differs per game but should be on par with Duckstation "Widescreen Rendering".
** You need to select the Full Screen Display option to enable.
** Compatible with ISO, real discs, EBOOTS, and Official Classics.
** While fully working, code under the hood is a little bit janky due to lack of space in elf. Sorry!

Features not implemented in this release:
* Dithering removal patch. Because many people prefer it enabled as on the original PS1.
* Forced bilinear filtering removal. Because many people prefer it enabled, and I had no good way to make a menu separator for that.

-----------------------------------------------------------------------------------------------

PS1 Emu Features: COMPLETELY UNTESTED!!!

* Automatic GTE Widescreen Patch
** Work only on 3D elements. Compatibility differs per game.
** You need to select the Full Screen Display option to enable.
** Compatible with ISO and real discs.
** While fully working, code under the hood is a little bit janky due to lack of space in elf. Sorry!

Features not implemented in this release:
* Dithering removal patch. Because many people prefer it enabled as on the original PS1.

-----------------------------------------------------------------------------------------------

All files should be compatible with 4.75+ firmwares. Some features were tested more, some less.
All patches were written in pure PPE and SPE assembly; code portability is not existing if Sony updates emulators (shouldn't happen, really).
BIG THANKS to people who helped with testing all of that! mrjaredbeta, kamilb880, Jabu, A youkai of love. Thanks to them I was able to create all those mods without PS3 hardware!
I hope that I didn't mess up files; if something is not working as expected, then I probably packed the wrong self.

Many thanks to kozarovv for making this happen!

You can download the release with all emu mods here (external link): https://www.mediafire.com/file/u7n5argv6sr237x/19102024.7z/file

UPDATE 10/29/24: https://www.psx-place.com/threads/release-ps1-and-ps2-emulator-mods.45083/page-2#post-401494

UPDATE 1/8/25: gxemu with command 0x0A support: https://www.psx-place.com/threads/release-ps1-and-ps2-emulator-mods.45083/page-4#post-406287
 
Last edited:
Thank You kozarovv for the release!!!!
Great to see the progress on these emulator's :)


. this might help some user's on emulator basix explanation's.
PS1 Emulator's on PS3
  • ps1_emu - Included emulator on every PS3 to play PlayStation 1 Disc.
  • ps1_netemu - Official PSone Classic's emulator from the PS Store

PS2 Emulator's on PS3.
  • ps2_emu.self - CECH-A/B ps3 models use ps2_emu.self able to use built-in PS2 hardware (EE/GS/Rambus memory), and have best compatibility
  • ps2_gxemu.self - CECH-C/E ps3 models use ps2_gxemu, this emulator use physical Graphic Synthesizer found in this ps3 model, but Emotion Engine is fully emulated here, also there is no Rambus memory
  • ps2_softemu.self - Sony switched to a 100% Software based PS2 Emulator and this emulator was strongly based off ps2_gxemu in the remaining PS3 FAT models that went into production
  • ps2_netemu.self - This emulator is used for the "PS2 Classic" ,This version of the emu like ps2_softemu is a 100% software emulation, This is the only version that does not have any physical CDVD disc reading capabilities. This is the only version of the emulator that can be used on Slim / SuperSlim PS3 models.

ReadMe (from 1st post , in tabbed format)
.
  • PS2 Netemu Features:
    • FPS Counter
      • First one or two reads after enabling menu are bugged and show wrong value. That's because code to reset counter works only when menu is active. At some point this will be fixed.
      • Counter is measuring GS Display/Dispfb registers write count per second. It's independent of PS3 framerate; it shows PS2 internal framerate.
    • Activate menu combo for gamepads where the PS button is not working.
      • Press Left DPAD + Square + L1 + R1 for 5-6 seconds in-game to open the menu.
    • EE Overclocking/Undeclocking
    • Partial Antiblur
    • 2 new config commands for the above features
      • 0x4F for No Blur (no param)
      • 0x4E for Cycles manipulation parameter: 1 = -50%, 2 = -25%, 3 = +25%, 4 = +50%
      • New config commands are ignored on unpatched emulators, so it's safe to add them even for HEN setups (they will just do nothing there).
    • Modified BIOS with added X modules for increased PS2 homebrew compatibility.
      • Added: XMCMAN, XSIO2MAN, XPADMAN, XMCSERV, XMTAPMAN, LIBSD

    Features not implemented in this release:

    • Displaying a R5900 PC/RA, it's useful only for fixing games. Patches are available on the wiki.
    • Fastboot (skip PS2 logo); it's a BIOS patch, and I didn't had time to create a config for it; hardcoding wasn't an option.

    Both manipulating EE cycles and enabling No Blur are much less effective than what I expected them to be. For now the only game that is known to profit from No Blur is Kingdom Hearts 2, no games affected by cycle manipulations for now (but that was tested before fps counter was a thing).

    New configuration features are accessible through the Debug Menu and replace Vsync Delay and XOR CSR options. Configs for those options are still working fine.

    Code quality is terrible, many features were thrown onto existing code that sometimes has been modified earlier. So it matches original Netemu code quality at least. :D


  • PS2 Gxemu Features:
    • Extended Config Table using trick from https://www.psdevwiki.com/ps3/Talk:PS2_Emulation#Extend_config_table_by_50%_in_ps2_gxemu
      • Added a few configurations as an example: Way of the Samurai 1 and 2 (SLUS_204.07/SSLUS_208.93) Darkwatch SLUS_210.42 (stuttering audio fix only).
    • Modified BIOS with added X modules for increased homebrew compatibility.
      • Added: XMCMAN, XSIO2MAN, XPADMAN, XMCSERV, XMTAPMAN, LIBSD
    • Temperature Display (unfinished but fully working, for now replacing string "Charge Level" in menu), credits to 3141card for original Netemu implementation.

    --fps_plus_combo version additionally have implemented FPS counter and "square + select" combo to show temperatures/fps.
    --working_cfgs_ps2_gxemu version additionally allow loading custom config file named exactly like game executable (ie SLES_123.45) from dev_hdd0/vm/gx/
    Internal config table is still fully working.

    More features, more messy code inside. Shame on me. :P

  • PS2 Emu Features:
    • Temperature Display (unfinished but fully working, for now replacing string "Charge Level" in menu), credits to 3141card for original Netemu implementation.
      • Under the hood, this was the most demanding port of the old implementation. Ps2_emu misses basics like s(n)printf; there is also no vuart bug that the old implementation relies on; additionally, there is also less space that is known to be unused.
      • Due to the above, supported temperatures are in the range of 00-99 °C. Temperatures above 99 °C will be shown without the first character (e.g., 123 will be 23). But if you are hitting +100c on PS3, then you have more problems than that.

  • PS1 Netemu Features:
    • Automatic GTE Widescreen Patch
      • Work only on 3D elements. Compatibility differs per game but should be on par with Duckstation "Widescreen Rendering".
      • You need to select the Full Screen Display option to enable.
      • Compatible with ISO, real discs, EBOOTS, and Official Classics.
      • While fully working, code under the hood is a little bit janky due to lack of space in elf. Sorry!

    Features not implemented in this release:

    • Dithering removal patch. Because many people prefer it enabled as on the original PS1.
    • Forced bilinear filtering removal. Because many people prefer it enabled, and I had no good way to make a menu separator for that.

  • PS1 Emu Features: COMPLETELY UNTESTED!!!
    • Automatic GTE Widescreen Patch
      • Work only on 3D elements. Compatibility differs per game.
      • You need to select the Full Screen Display option to enable.
      • Compatible with ISO and real discs.
      • While fully working, code under the hood is a little bit janky due to lack of space in elf. Sorry!

    Features not implemented in this release:

    • * Dithering removal patch. Because many people prefer it enabled as on the original PS1.

  • All files should be compatible with 4.75+ firmwares. Some features were tested more, some less.

    All patches were written in pure PPE and SPE assembly; code portability is not existing if Sony updates emulators (shouldn't happen, really).

    BIG THANKS to people who helped with testing all of that! mrjaredbeta, kamilb880, Jabu, A youkai of love. Thanks to them I was able to create all those mods without PS3 hardware!

    I hope that I didn't mess up files; if something is not working as expected, then I probably packed the wrong self.
 
Last edited:
Shame kozarovv couldn't implement to set priority for external configs for ps2_gxemu, yet. ;) I mean configs for games that are still broken despite internal table like Crash Twinsanity NTSC.
 
Is the debug option always enabled patch applied too?
Yes!

How to add these again I forgot how to?
You have to replace the emulator SELF files on dev_flash (dev_blind) in the ps1emu and ps2emu folders respectively. Easiest way is to enable dev_blind via Evilnat and transfer the files via FTP. Be sure to backup the original emus in case you need them later.
 
does it include the old patches too ? If i remember correctly, lv1 dumper, show temp, ignore original values in config files
 
@mrjaredbeta is there any way to enable temp/fps on ps1_netemu?

i'm doing some tests and the widescreen patch is working good

Original:
7cyeHVh.png


Patched:
xbXA1Va.png



Jack chan the patch doesn't make any diff for some reason

Original:
mkDHUkK.png


Patched:
eUrlfnR.png
 
Last edited:
Yet to publish (up to kozarovv) 3 variants of ps1_netemu, no dithering + nearest neighbour, no dithering and nearest neighbour. And possibly fixed ps2_gxemu that will put priority to external configs even if internal database has one.

EDIT: Actually priority already fixed!
 
Last edited:
Wow, this is great for PS2_emu users! Thank you for your great work!

One thing that would be amazing for PS2_emu is that we would be able to use GSM resolution changing without using OPL or something like that, but don't know if it's possible to do with PS2_emu or would this have to be done with when loading the game, like Webman or something. Biggest issue with OPL is having to use SMB or USB, and both ways break some games and make the loading very slow.

Another thing came to mind that I've heard really old versions of PS2_emu having is some other scaling option. If I understood it correctly it had option to scale the game to full screen without having the overscan borders, but it had some issues making some games look bad or something like that and Sony removed it. I think there was a really old Youtube video showcasing this, but haven't found the video after watching it years ago. Don't know if it would be possible to add this feature to newer versions of PS2_emu. I've tried decrypting and re-encrypting older versions of PS2_emu to run on newer firmwares, but never was able to get the older PS2_emus to run on 4.91 firmware, which might be just my lack of knowledge about re-encrypting the emulator or there are some dependencies of older system libraries or something like that. And with Frankenstein CECHA I'm unable to downgrade my firmware under some 3.xx version as there's no support for 40nm RSX.

I've also posted about this minor issue in PS2_emu that makes the black levels a bit gray in any PS2 game. One workaround is to adjust black level on TV, but then the blacks are crushed in any other use case other than PS2 games. Changing the HDMI range from PS3 settings doesn't make a difference and it happens on any region game. You can't really see this issue with regular lit LCD panels, as the backlight bleed hides mostly this issue. Don't know if the PS2_emu code makes the conversion of GS colors to RSX.

PS3 - CECHA/B PS3 black level issue on PS2 games | PSX-Place
 
Yet to publish (up to kozarovv) 3 variants of ps1_netemu, no dithering + nearest neighbour, no dithering and nearest neighbour. And possibly fixed ps2_gxemu that will put priority to external configs even if internal database has one.

EDIT: Actually priority already fixed!
You should post the other psx variants
 
Back
Top