GSM 0.23x FAQ
(requested by urbigbro and made by doctorxyz, based on many questions answered by dlanor)

Question
Can GSM be auto booted, or launched by holding a button at FMCB boot?

Answer
No, but it can however be auto launched from uLE. So VGA users could just set FMCB to auto boot uLE than have uLE auto boot GSM with VGA preset as slot 00.

Question
Can someone give me step by step instructions on how to change between interlaced video modes (the video modes that work with composite 'yellow', or s-video cable) for example from PAL to NTSC. What about NTSC to PAL, via a SCART cable?

Answer
Changing between SDTV interlaced video modes is simple. All you need do from starting the program is either wait a while for the splash screen to go away, or directly press any button to close it.
This should bring you to the main GSM screen with all the text on it. Here pressing the 'Circle' button will load the presets for the first SDTV alternative, which is NTSC. But it is not automatically activated. For that to happen you must next press the DPad_Down button, which will activate enforcing of the currently selected preset. So from that moment on the menu should be visible to you.
You can also force GSM to go directly into that resolution on future launches (after closing its splash). This is done by storing the NTSC presets in the first slot of the saveable preset array. That array allows for 16 saveable preset slots, and the first slot (== slot 00) will also be used to initialize the user interface on each launch. Those who want the default should not use that array slot at all, but those who want an enforced mode at start should use that slot.
Once you have the messy GSM menu screen visible (after the initial pressing of 'Circle' and DPad_Down), you can save that preset state to slot 00 by pressing the buttons R2 and DPad_Up simultaneously, to store the currently active preset into the current slot of the array (and slot 00 selection is already active at startup). And then you should press buttons R2 and L2 to save this array in the config file stored on your memory card, together with GSM itself. This will ensure that the settings are reloaded in future sessions, for use immediately after closing the splash screen (if not before).

Question
How I can load a saved preset in GSM?
I'm using GSM to force a PAL Tomb Raider Underworld to NTSC, but every time I will play is needed to regulate settings.
I saved one preset (using R2 + L2, is this correct?) but when I will start again I do not know how to load it.

Answer
R2+L2 is one of the correct commands in this context.
To be precise it is the command that causes a GSM.CNF file to be saved.
That GSM.CNF file has room for up to 16 different 'slots' of customized video modes, and on every new start of GSM, all those slots will again be loaded from the CNF file into RAM, where they await your commands for simple reactivation. And if you stored anything in slot:00, then that video mode will be automatically activated at launch of GSM.
Those slots are what is referred to by the text: "Current User Slot:00" on the screen.
By using R2+DPad_Right you can increase that slot index (wraps to zero after 15)
and by R2+DPad_Left you can decrease it (wraps to 15 after zero)
Use R2+DPad_Up to upload the currently active mode into the slot array
Use R2+DPad_Down to download a video mode from the slot array to 'Current Presets'
Note that the video mode is then not directly activated, so you can tweak it a bit before you activate it with DPad_Down (alone)
By proper use of these commands you can easily handle up to 15 optionally activated custom video modes in addition to the default one you store in slot:00 for automatic activation.
Just remember to again repeat the R2+L2 command whenever you have modified settings for any of the slots, so that these changes are also saved to GSM.CNF
(Hopefully you will remember that, as it was apparently the only one of these commands you already knew :-))

Question
Is there a way to save your current settings? I have to re-input all the settings whenever I start my PS2.. can be a tedious task...

Answer
If you are using the current release version v0.23x then pay attention to the text row lowest in the main field, which clearly states:
"[L2]+[R2] Save all slots + current 'Exit to' option to mc"
This refers to the configuration file "mc0:/BOOT/GSM.CNF".
So if you press and hold both the L2 and the R2 button simultaneously, that file will be saved.
But since you were not aware of this, you are probably not aware of how to use the video mode array slots at all. So I had better explain that too...
Apart from the current presets that you can directly manipulate, GSM also supports an array with 16 slots, each of which can hold a complete set of preset values defining a video mode.
Note how one of the text rows in the GUI says:
"CNF FILE - Current User Slot:00" followed by a parenthesis stating the base vmode code of that slot, or "(Base vmode:unused)" if the slot is empty.
If you press and hold the R2 button you can then also press buttons on the D-pad, to manipulate these video mode slots as follows:
Code:
[R2]+[Left]  => Decrease 'Current User Slot:xx' number (wraps to 15 after 00) 
[R2]+[Right] => Increase 'Current User Slot:xx' number (wraps to 00 after 15) 
[R2]+[Down]  => Download 'Current User Slot' content. to become new current presets 
[R2]+[Up]    => Upload current preset values to 'Current User Slot', replacing any old content
Note that in loading presets from such a slot, this only sets the preset values, but you still have to press D-pad [Down] (alone) in order to activate the video mode in hardware. That is intentional, to allow user tweaking of the preset values before the hardware activation.
By using these commands together with those that modify video modes you can step through the 16 possible slot indexes to store 16 of your favorite video modes into the array, and then save all of them to the "mc0:/BOOT/GSM.CNF" file by pressing the [L2]+[R2] combo.
That file will automatically be reloaded whenever you start the GSM program, and if slot 00 of the array from that file contains any video mode, then that is the video mode which will be activated initially for the GUI. Otherwise the default video mode for your console region will be used, either NTSC or PAL. Using slot 00 allows the program to start properly with other video modes too, both HDTV and VGA modes being allowed, which latter is very important for those using VGA-only monitors.

Question
I'd like to learn how to reset the DX, DY, DW and DH preset settings for HDTV 480p, 720p, and 1080i? I was messing with them to stretch my screen, but notice it was terrible. I need to learn to reset them, because I then saved the presets by pressing L2 and R2--I'm thinking that I should just delete the GSM.CNF file it creates on my memory card "mc0:/BOOT/", but I'd like to know for sure.

Answer
Saving CNF by the L2+R2 button combo does not alter the default values loaded when stepping through the standard preset modes using the right-thumb buttons (Square button for HDTV modes). The resulting values will always be the same when you set one of these base modes, regardless of what custom modes you have in the CNF.
The custom values for DX,DY,DW and DH that you have tweaked yourself will only be saved to the CNF as part of the user mode array.
And then you may indeed have to delete the CNF file to get rid of it, or edit the CNF to fix that slot, but deletion is perhaps easier for you.

Question
I want to learn the proper procedure when loading this application. Here are my steps, please let me know if I am doing things correctly:
1.	Load GSM
2.	Press [SQUARE] button to choose a HDTV setting (this example: HDTV 480p)
3.	Press [DOWN] button on D-Pad to enable the setting.
4.	Press [R2] + [UP] buttons to Save Slot to RAM--Is this necessary?
5.	Press [START] + [DOWN] buttons to exit to PS2 Browser (CNF).

Answer
Typical user mode array creation procedure:
1: Use a right-thumb button to choose your basic video mode
2: Tweak the position and size values until satisfied with the result
3: Use R2+Left or R2+Right button combos to choose the 'User Slot:' index for the array
4: Use R2+Up button combo to upload the current settings to that array slot
5: Repeat steps 1-4 above until you have set all array slots that you want
6: Press R2+L2 button combo to save the GSM.CNF file

Typical way to utilise user mode array:
1: Use R2+Left or R2+Right button combos to choose the 'User Slot:' index for the array
2: Use R2+Down button combo to download the current settings from that array slot
3: Use Down button (alone) to activate the video mode in current settings
4: Use Start+Down button combo to exit to DEV1 elf (== uLE of FMCB setups)
(Assuming you have configured GSM to use that exit mode, via Start+Up or CNF)

You can do so, and this will cause GSM to fall back on defaults for everything.
But the case you describe does not motivate doing that, since you changed nothing that is saved to the CNF.
Temporary preset changes are never stored in the CNF.
This happens with some games, depending on how they use the dual GS buffers for interlacing.
The 'Save Slot to RAM' command is only meaningful if you intend to reuse the same setting in future sessions, by reloading the same user array slot again, as I describe further above in this post. And for that to be possible the array must also be saved to MC by the L2+R2 combo.
And of course, if you don't tweak any of the values yourself, then there is no reason to save the setting for future reuse. You can just choose it the same way again next time.
Saving modes in the user array is primarily intended for cases where you have tweaked the settings to optimize sizing and centering on your own TV set, or to force specific scaling of some particular game for some particular base mode etc. But when using default modes without any custom tweaks there is no point in saving the modes.
Note however that any video mode stored in slot 00 of the user array saved to the CNF file will be automatically reactivated on future launches of GSM. (This is to help people with VGA monitors, who are 'blind' until GSM has been auto-launched and auto-activated a VGA mode.)

Question
GSM forces my game into 16:9 mode when I activate 480p, inserting black borders left and right.
But the game is actually 4:3 only!
Answer
Many PS2 games do not utilize the maximum possible NTSC/PAL resolutions. Instead they run on a lower one like 512x448.
Forcing these games into 480p mode not only forces progressive scan, but also a higher resolution (640x448). The game's internal resolution is then centered within this framework, leaving black borders left and right. So while this may seem like a 4:3/16:9 switching issue, it actually isn't. It's more like a fortunate coincidence that "stretching" all of this into a 16:9 aspect ratio pretty much returns these games to their original proportions.

Question: (follow-up to above question)
Can't I just tweak GSM's values to stretch the display to fill the screen in games with these borders?
Answer
There is no 'gradual stretching' of the picture scaling for small changes of either DH or DW, since the only scale adaption we can make is done by changing the MAGH and MAGV magnification factor integers. And since they are integers, fractional scaling is impossible.
In other words, the PS2 is by no means a scaler like the XRGB-2. It cannot on the fly recalculate a horizontal resolution of 512 into one of 640. It can only magnify the vertical and horizontal resolutions, that is double, triple, quadruple them. Doubling the horizontal resolution for one of the above mentioned games (with black borders) will result in parts of the game screen beeing cut off left and right in 480p. (512 x 2 = 1024 centered within 640)
It would be different if we could somehow finetune the VCK clock, as that could allow fractional scaling. But we don't know how to do that, or even if it is possible.

Question
Is it possible to play PSone games in 480p?
Answer
That may be impossible to achieve since the program we use to force 480p is a PS2 program, which will not survive a switch of the console into PS1 mode.
It is true that some graphics enhancement is possible even for PS1 programs (the settings of the PS1 driver), and perhaps some of the things we write to the GS chip may continue to influence it even after a shift into PS1 mode. But most likely the PS1 driver will reprogram the GS from scratch, which then completely eliminates our influence.

Question
GSM doesn't seem to respond to my pushing the controller buttons!
Answer
In order to easily implement many commands without any advanced menu system, most of the commands require pressing two buttons simultaneously instead of the usual one. And this means you may have to press them a little longer for secure detection.
For example, to exit from GSM into HDLoader you need to press down both [D-pad Right] and [Start] until the program responds.

Question
Where exactly does GSM look for the HDLOADER.ELF?
Answer
HDLoader must be placed at "mc0:/BOOT/HDLOADER.ELF" for now.

Question
Could you give an explanation of what the DX, DY, DW, DH, MAGV, MAGH values do?
Answer
Those six values are in fact different bitfields of a 64-bit GS register type, and the GS has two registers of this kind.
(DISPLAY1 and DISPLAY2) The precise bitfield positions are best shown by the "make_magic" function in the source code.
DX,DY == control the screen positioning offset, in physical units, not pixels
DW,DH == define the size of the visible screen sections, in physical units, not pixels
MAGH,MAGV == define the relationship between physical units and pixels
(Physical units are the VCK clock for the horizontal axis and raster lines for the vertical axis)
For DX and DY the values are used as-is, but the other four are stored as value-1.
So if MAGV = 0x00, this means that the vertical scale factor is one, and if MAGH = 3 then the horizontal scale factor is 4 (normal for both PAL and NTSC in interlaced mode). And for the normal PAL resolution of 640x512, DW will be 639 and DH will be 511.

Question
Adjusting DW works but adjusting DH doesn't. DH has the same effect as DY.
Answer
Decreasing DY should have the effect of moving the entire display upwards on the physical screen, but if the top is already outside it, then you will see that only as a movement of the display 'cutoff' point at the bottom, moving up.

Decreasing DH on the other hand should only cause the 'cutoff' point to move up, as the visible display height is decreased. But this may look very similar to the case mentioned above.

Question
What is the "Adaption" option for?
Answer
This option performs an adaption of screen scaling or centering, as the name implies. For normal game use adaption should always be "ON".
The purpose of the "OFF" mode is to give us a better chance to see what happens when we make specific register patches, without having the screen adaption interfering with that feedback.

Question
Anything I should consider when reporting a bug?
Answer
There is one thing you can contribute, and this is something we really want from all who report on GSM results.
What is your console's product code and bios version?
The product code is shown in the main Sony menu (==FMCB) when you press Triangle.
The code we want is the one starting with SCPH. So the code of my v7 is "SCPH-39004".
The bios version is shown in uLE when you use FileBrowser to run "MISC/Debug Info".
Here we want the whole string displayed as content of rom0:ROMVER.
So for my v7 this is ""0160EC20020319_", exactly as displayed by uLE.
This will help us learn which models have GS chips with various limitations.
And another thing we want for every report is the precise version of the GSM program used. (Or GSTest for those older versions.) And of course all future tests should use whatever version is then the current one.

Question
Switching to 576p crashes my PS2 every time. Don't all PS2 consoles support this mode?
Answer
The real dependency here is not on hardware updates but on bios firmware updates.
All PS2 consoles should have hardware capable of generating 576p, but a request for that mode through the bios function sceSetGsCrt will only work if that function has been updated to recognize that mode code. Otherwise the function call will crash the console.

Question
Do you have any sort of "short list" as to which PS2s are known to work with 576p?
Answer
Sorry, but 576p is not implemented in the bios of any fat PS2, to our knowledge.
We don't think it was implemented in the SCPH-700xx v12/v13 consoles either.
576p is definitely implemented in bios v2.20 as used for the SCPH-77004 v15 console, and for the SCPH-750xx v14 consoles it might vary, as differing bios versions may have been used for some of them.

Question
The game screen is off-center with GSM's standard settings. Can you improve those?
Answer
We can not possibly center the default settings perfectly for everyone, so tweaking the centering is your own responsibility. With the current GSM version you can also save tweaked settings, which should make it easier for everyone.
Having said that it should be added that we are open to suggestions and even voting on the best default screen positioning values, as we too are less than happy with some of those choices. However, different equipment has different needs. Settings ideal for an old CRT TV might give horrible centering on an HDTV, and vice versa.

Question
Could you add an option to start games directly from the GSM menu?
Answer
We see no possible reason to do so. With the number of different game launch methods around today there is no way we will even consider adding them all to the GSM GUI. That would be absurd. (Let's see now, 3 or 4 different USB launchers, plus various HDLoader versions, plus ESR, plus disc-swapping tools and let's not forget normal disc launching too (the least important method to us...)

Question
Game x seems to output a low-res image in 480p mode, as if it were displayed in half of its vertical resolution. How come?
Answer
There are two different ways of rendering a normal NTSC picture using a true resolution of 640x448 pixels. (The same applies to PAL too, only some numbers differ).
One game method uses a single buffer of 448 raster lines of 640 pixels.
The other game method uses a pair of buffers each holding 224 raster lines of 640 pixels. Effectively this means that one buffer holds all the odd lines, while the other buffer holds all the even lines, so each represents the output of one half-frame.
This method gives us serious problems with progressive modes, since there is no built-in support for the kind of access we'd need here, alternating between the two buffers for each raster line to be rendered. Doing so is not possible for us. So instead we are stuck with the method of simply doubling the height of the pixels, so that they at least fill up the correct space on screen and prevent the rendering from including uninitialized garbage RAM content, as seen in testing these games with previous GSM versions (when they could be displayed at all that is).
We know that this method isn't really satisfactory, but it is the best we have, and far better than what we had before.