ePSXe - Shark enhanced (by Tapeq)


Staff member
This thread is about new version of discontinued tool called "ePSXe 1.7.0 updater - shark tool" by shalma, original thread is here: ePSXe 1.7.0 updater - shark tool.

NOTE: All my ePSXe related files are located here: http://dev.tapek.shst.pl/ePSXe/

Shark 1.8.0:
Symbols for current release (for debugging):
source code:

P.E.Op.S SPU 1.10b (framelimiter disabled by default, as it should be):
2013-05-22: Fixed settings save/load (note: don't use fopen_s, use _fsopen!, and also ReadConfig() must be done outside DLGPROC).
2013-05-24: PhantomPostPad was always used (even when PhantomPad was off).
source code:
P.E.Op.S SPU 1.10b original thread is here: PEOPS DSound 1.10b
NOTE: Internal SPU in ePSXe 1.9.25 is much better than before, it also features fremelimiter etc. I recommend using it!

All features of original "Shark tool" are included, please read old thread.
NOTE: Tools are build in Visual Studio 2012 Update1 using toolset "Visual Studio 2012 - Windows XP (v110_xp)" so Windows XP SP3 or never is required.
NOTE: From 2013-01-31 Shark require Visual C++ Redistributable for Visual Studio 2012 Update 1 (x86)
This tool works different from original one, it does not use loader executable, instead it patches ePSXe.exe to load shark.dll.
That solution have some pros, like you can use unmodified version of ePSXeCutor, and no known cons.
Deleting shark.dll from ePSXe directory will not cause ePSXe to crash, will only not load shark.dll so it will work as normal.

Main features for ePSXe 1.8.0:

  • Pad plug-in support.
  • Configurable APU Cycles (ie. "speed" of calling SPU plugin).
  • SPU based frame limiter
  • CDDA Play trough SPU Plugin
  • CDDA and XA Attenuation

Usage: Copy to ePSXe directory (ie. to directory with ePSX.exe) and run patch.cmd. Then run ePSXe.exe as normal.
You can run created unpatch.cmd to revert patch and back to standard ePSXe.
NOTE: When Shark is running title of ePSXe should be changed to "ePSXe - Shark enhanced" if not, please report bug to me.
WARNING: Do not use "Program Files" for ePSXe directory and do not run patch.cmd as Administrator!



  • Pad plugin support
  • Configurable APU Cycles
  • Fast boot (fps boost on emu startup)
  • SPU based frame limit
  • CDDA playing trough SPU.


  • Removed unused code from build (ie. comment out)
  • WriteCode now uses memcpy
  • Added FlushInstructionCache to WriteCode and ApplyJmpHook
  • Replaced all unsafe CRT functions with safe ones
  • Other things that I do not remember ...
  • Fixed crash on reset
  • shark_patcher is now "bulletproof", it will not modify anything if does not find expected data in file, also added size check.
  • patcher now adds code to end of .text section
  • Added #defines to shark_patcher, this will allow to easy modify patch locations, OEP etc.
  • Replaced runme.cmd with patch.cmd, it will create unpatch.cmd on run - useful to restoring backup file.
  • Tweaked VS projects.


  • Added requested slow_boot option to ini, please note that in slow boot mode PAL bios in unable to boot NTSC games, and vice versa.
  • shark_patcher stub code is now in its own pe section
  • implemented GPUshowScreenPic_Wrapper_180, MMIO_Write_180 and SPU_PlayXA_180.
  • Creating thread in DllMain is not good idea, also creating it for code patching is even worse idea, in some conditions ePSXe code can be executed before it's patched. Now code should be patched always before ePSXe run.
  • shark_cheater added, cheats should work - not tested!
  • re-enabled all patches for older versions
  • shark_patcher now can patch ePSXe 1.8.0, 1.7.0, 1.6.0 and 1.5.2.


  • Fixed SPU based framelimit.
  • Added P.E.Op.S SPU 1.10b with framelimiter disabled by default to thread.
  • Added option "spu_framelimit" to ini file.
  • Tweaked VS projects.


  • Fix: crash on Run-> Continue
  • Fix: SPU based frame limiter switch off after Run-> Continue (moved code from SPUInit to SPUopen)
  • shark_patcher extended to patch any file name by using "shark_patcher.exe filename".


  • Added VRAM auto detection fix for gpuPeteOpenGL2 plugin.
  • Added option "opengl2_vramauto" to switch on/off VRAM auto detection fix.


  • Fixed crash.
  • Disabled VRAM auto detection by default.
  • Disabled DirtyPatch check in release build.
  • Change to dynamic runtime (/MD switch).


  • Fixed second pad polling.