GSM โ forced video modes
GSM makes a game output a video mode it was never written to output. Most PS2 games render 480i (or 576i in PAL). GSM intercepts the game's video setup and substitutes a different raster, so the same game can come out as 480p, 720p, 1080i, or one of a range of VGA modes โ useful on modern displays and upscalers that handle interlaced signals badly or not at all.
Where to set it
GSM lives in two places:
- Per game โ Triangle on a title โ Configure GSM.
- Globally โ GSM Defaults (All Games) on Settings โ Game Launching (also on Interface and General & System). This is what every game with no GSM settings of its own inherits.
The per-game page's first row, Settings Mode (stored as $GSMSource), decides which of those wins:
| Settings Mode | Meaning |
|---|---|
| Global | Ignore this game's GSM keys entirely and follow the global defaults. Selecting it also removes the game's stored GSM keys. |
| Per Game | This game's GSM settings apply, as a complete set. |
| Per Game + Global | Per-key inheritance: any GSM value this game sets is used, and anything it leaves unset falls through to the global default. |
Per Game + Global is the option to reach for when you want one game to differ from your global setup in a single respect โ a different video mode, say โ while still tracking your global choices for everything else. See Per-game Settings.
The options
| Option | What it does |
|---|---|
| GSM Selector | The on/off switch. With it off, the four rows below are greyed out and GSM does nothing. |
| Forced custom display mode | The video mode to output. See the list below. |
| H-POS | Horizontal position offset, โ100 to +100. Shifts the picture left/right. |
| V-POS | Vertical position offset, โ100 to +100. Shifts the picture up/down. |
| Emulate FIELD Flipping | Compatibility fix for games that shake, tear, or judder under a progressive mode. Try this first when a game looks wrong after GSM is applied. |
On the per-game page the mode list ends with Default, which means "follow the global setting". Picking it removes the key rather than storing a value, so the game genuinely tracks the global from then on. That entry does not appear on the global page, where it would be meaningless.
Available modes
Modes 0โ5 are the standard console rasters; the rest are forced progressive, HDTV, or VGA modes.
| # | Mode | # | Mode |
|---|---|---|---|
| 0 | NTSC | 15 | VGA 640x480p @75Hz |
| 1 | NTSC Non Interlaced | 16 | VGA 640x480p @85Hz |
| 2 | PAL | 17 | VGA 640x960i @60Hz |
| 3 | PAL Non Interlaced | 18 | VGA 800x600p @56Hz |
| 4 | PAL @60Hz | 19 | VGA 800x600p @60Hz |
| 5 | PAL @60Hz Non Interlaced | 20 | VGA 800x600p @72Hz |
| 6 | PS1 NTSC (HDTV 480p @60Hz) | 21 | VGA 800x600p @75Hz |
| 7 | PS1 PAL (HDTV 576p @50Hz) | 22 | VGA 800x600p @85Hz |
| 8 | HDTV 480p @60Hz | 23 | VGA 1024x768p @60Hz |
| 9 | HDTV 576p @50Hz | 24 | VGA 1024x768p @70Hz |
| 10 | HDTV 720p @60Hz | 25 | VGA 1024x768p @75Hz |
| 11 | HDTV 1080i @60Hz | 26 | VGA 1024x768p @85Hz |
| 12 | HDTV 1080i @60Hz Non Interlaced | 27 | VGA 1280x1024p @60Hz |
| 13 | VGA 640x480p @60Hz | 28 | VGA 1280x1024p @75Hz |
| 14 | VGA 640x480p @72Hz | 29 | HDTV 1080p @60Hz (EXPERIMENTAL) |
HDTV 480p @60Hz (8) is the safe starting point on almost any modern display. 720p (10) and 1080i (11) are the next most widely accepted. The VGA modes need a display fed over VGA or a component/VGA-capable path; a plain HDMI adapter will usually not sync them.
1080p is experimental, and asks three times
Mode 29, HDTV 1080p @60Hz (EXPERIMENTAL), is compiled into every shipped build. It is a GSM-synthetic progressive raster โ not a mode the PS2 hardware natively produces โ and while it has passed real-hardware testing, it is non-standard enough that some displays will not sync it at all.
The same gate applies on the global page, which carries the wider blast radius of the two: it is what every game without its own GSM settings inherits.
When a game loses the picture
The RiptOPL menu never uses GSM, so whatever you set, you can always get back to the browser and undo it. Which setting to undo depends on where you set it.
If you set it for one game (Settings Mode = Per Game), only that title is affected:
- Return to the browser โ reset the console if the game has no picture at all.
- Triangle on the affected title โ Configure GSM.
- Either turn GSM Selector off, or pick a more conservative mode (480p, or the game's native NTSC/PAL).
If you set it globally, every game that has no GSM settings of its own inherits it โ so they can all lose the picture at once. That is the wider blast radius the 1080p confirmation warns about:
- Return to the browser.
- Settings โ Game Launching โ GSM Defaults (All Games).
- Turn GSM Selector off there, or pick a conservative mode, and save.
The game runs but looks wrong
Shaking, tearing, or juddering under a progressive mode โ turn on Emulate FIELD Flipping. This is what it exists for.
Picture off-centre โ adjust H-POS and V-POS.
Some scenes fine, others broken โ a few games switch video mode mid-run (typically for FMVs). Those tend to be poor GSM candidates; try a less aggressive mode or leave GSM off for that title.
GSM and the other cores
Neutrino does not use OPL's GSM. It has its own forced video mode handling, and the per-game Neutrino GSM Compatibility option is the equivalent field-flipping fix โ "for games that shake or tear under a forced Neutrino video mode". Set it there rather than on the GSM page when the Loader Core is Neutrino. See Neutrino Core.
PS1 titles run under POPSTARTER or Ember and do not use OPL's GSM either. Modes 6 and 7 in the list above are named "PS1 NTSC/PAL" because of the raster they produce, not because they apply to PS1 games. See PS1 Games.
Related settings that are not GSM
Two settings are easy to mistake for GSM options:
- Overscan (Settings โ Interface) trims the edges of the RiptOPL menu, not of games. It is a UI setting and is unrelated to the GSM H-POS/V-POS offsets.
- Video Mode (Settings โ Interface) sets the mode the menu runs in. GSM never affects it.
Notes for builders
Two names are involved, and they are not the same thing. GSM1080P is the Makefile
variable; it defaults to 1, and when set the Makefile adds
-DGSM_1080P โ the preprocessor macro the code actually tests โ to the EE build, and
forwards GSM1080P=1 on to ee_core/Makefile.
So every shipped build has mode 29 and the list is a consistent 30 entries across published flavours.
Building with GSM1080P=0 drops it and shortens the list.
In-game screenshots (IGS) require GSM to be enabled โ see In-Game Reset.
| File | Role |
|---|---|
ee_core/src/gsm_api.c, gsm_engine.S, gsm_engine_adv.S | The GSM engine |
src/guigame.c | The GSM settings page, the mode list, and the 1080p confirmation gate |
src/dialogs.c | The six GSM dialog rows |