Why do some PS1 games not recognise the controller when the Analog button is pressed?
I was playing Saga Frontier on the ePSXe emulator and was wondering why my PS4 Controller + Inputmapper wasn't working when just moments before I was playing Tales of Destiny just fine. I realised that when the game starts up the controller is being set to having Analog 'on' - as if I had pressed the Analog button on a PS1 controller.
This made me remember that on PS1 games which didn't use the sticks if you pressed the analog button turning the red light below it on the controller no longer worked until it was turned off.
But why is this? is the mapping for the controller vastly different that when Analog is on the controller is no longer recognised in games that don't use it?
In short, yes, the controller is very different in Analogue mode. The first PSX games weren't programmed to account for the analogue input and the extra data would just mess with the game in unpredictable ways, because each time the PSX tried to read the controller data, the controller sent 6 bytes of data, instead of 2 bytes.
You have to keep in mind the analogue sticks had not been planned ahead of time. They did plan for different controllers/inputs, but mostly to account for lightguns and joysticks (which, again, used wildly different data).
A more in depth look at how it works:
The controller uses 9 pins, although 2 go unused. The data of button presses, go over one single pin, pin 1, the other pins are used for power, to sync data, etc.
So, what they do is, they send 8 bits (each bit can either be on/off, so it's ideal for transmitting button states) of information each time (8 bits = 1 byte, they always send a full byte), and repeat as many times as necessary. In a digital controller, one button will be 1 bit.
The digital controller used 2 bytes in total (=16 bits) because there are only 14 buttons in the original psx controller and they could be only on or off (so 2 bits go unused). The dualshock, used 6 bytes, it used the 2 unused bits to fill in for the L3 and R3 analogue in clicks, and the 4 extra bytes was for the analogue movement, with 1 full byte accounting for 1 axis. Each analogue took up 2 bytes for X and Y axis. That meant from left to right, each analogue stick had 256 positions. Same from up to down (and multiply those to understand how many positions in total were).
Each controller type, had an ID, (0x41=PSX Original, 0x23=Namco NegCon, 0x73=Analogue/DualShock Red LED, 0x53=Analogue Green LED/Joystick) they would send so the game would know how to interpret the data. That's why games like WipeOut that predate the Analogue Controller / Dual Shock, don't support it, but support Namco's NegCon for example. If the ID was unknown, the game would just not work with that controller, since it wouldn't know how to interpret the data either.