PS2 CONFIG Guide

A step-by-step guide to build netemu CONFIG files.

1) Overview

CONFIG files tweak the ps2_netemu emulator to fix certain issues, including performance, crashes and stutters. They are not required for every game, and are not guaranteed to fix all issues, but they can significantly improve compatibility.

This guide targets PS2 Classics (ps2_netemu) on PS3 only.

2) Prerequisites

What you should have before you start
  • A hex editing program, such as HxD.
  • Your PS2 game in ISO format.
Understanding the PS2 and PS3's hardware design can also help to diagnose issues. However, many games can be fixed with generic configs.

3) Glossary

Core terms
  • EE - Emotion Engine (PS2 CPU).
  • VU - Vector Units (VU0/VU1).
  • GS - Graphics Synthesizer (PS2 GPU).
  • FPU - Floating-point unit. Responsible for maths and accuracy.

4) What's in a CONFIG?

CONFIG files for netemu are basically small binary blobs that act as instructions for the emulator. They are viewed and edited via hex editors.

  • CONFIGs typically start with 3D 00 00 00 57 44 00 00. This header is optional and does not affect the game, but it is convention. It displays the config's revision in the debug menu - without, it displays 0 as the config revision.
  • After this header, commands are added. Commands are often referred to in hex format, eg. 0x21. These are converted (how?) to binary for the config. See Common Fixes for examples.

5) Workflow

The first step should always be to check the PS2 CONFIG database to see if a config exists.
If your game does not have a config available, you can follow these steps to create one.

Step 1Detail the issue: Figure out as much as you can from playing the game. Where does it occur? What happens?
Step 2Check common issues: If your game suffers from a common issue, a generic config may work. See Common Issues below.
Step 3Report: Test the game using common fixes. Place the CONFIG file beside the ISO with exactly the same name as the ISO. For instance, "Gun.iso" and "Gun.iso.CONFIG".
If these work, congratulations! Otherwise, we recommend filing an issue on GitHub or the thread at PSX-Place.

6) Common Fixes

There are many common issues that can be fixed with a generic config. Here are some suggestions.

FMV Stutter

FMV stutter can often be fixed by the 0x21 command. Add 21 00 00 00 00 00 00 00 to the config to enable.
Sample Config:

3D 00 00 00 57 44 00 00 21 00 00 00 00 00 00 00
Pressure Sensitivity

Pressure sensitivity is not enabled by default, but can easily be enabled with 0x50. Add 50 00 00 00 to the config to enable.
Sample Config:

3D 00 00 00 57 44 00 00 50 00 00 00 00 00 00 00
Performance

Due to the nature of PS2 emulation on PS3, there will always be some games that can't reach full speed. However, there are a number of commands that may improve performance. As a rule of thumb, try 0x21 (instruction cache skip) or 0x46 (L2H Improvement).
0x21: 21 00 00 00 00 00 00 00
0x46: 46 00 00 00

Sample Config:

3D 00 00 00 57 44 00 00 21 00 00 00 00 00 00 00 46 00 00 00
Multitap

By default, multitap is enabled, but not assigned to either controller port. Multitap is done in two separate commands - 0x1C toggles multitap emulation, enabled in both ports by default. 0x1D sets which port to use. The sample config below enables multitap on port 1.

Sample Config:

3D 00 00 00 57 44 00 00 1C 00 00 00 01 00 00 00 1D 00 00 00 01 00 00 00

Some games may require multitap on port 2 instead. This config enables multitap on port 2:

Sample Config:

3D 00 00 00 57 44 00 00 1C 00 00 00 02 00 00 00 1D 00 00 00 02 00 00 00

7) Creating a CONFIG

The easiest way to create a config is to modify an existing one in a hex editor. Below is a download link to a blank config, which includes only the header. Just add the relevant commands in binary, borrowing from the examples above.
To convert a command from hex to binary, simply take the characters after 0x and add "00 00 00". For instance, the command for pressure sensitivity is 0x50. This becomes "50 00 00 00" in binary.
If your command requires parameters, add these after the command. For instance, the command for multitap is 0x1C, and it requires a parameter to set which port to use. To enable multitap on port 1, the full command becomes 1C 00 00 00 01 00 00 00.

Download CONFIG Template