News:

11 March 2016 - Forum Rules

Main Menu

Analog Hacks For PS1 Games

Started by DashieSparkle, August 04, 2022, 12:59:01 PM

Previous topic - Next topic

DashieSparkle

Hello,

I've been trying to play a few FPS PS1 games that don't have analog support, like Alien Trilogy, Codename Tenka, Disruptor and Doom. The thing is I find using the d-pad a bit uncomfortable sometimes. I just want to know if it's possible to make hack for those games so they do have analog support. Not full analog support of course, just so the left analog stick controls the d-pad. I want to try and make my own control hacks, but I have no idea where to start or how to do it. Is it easy or hard to make these kind of hacks?

Thanks.

FAST6191

I don't know that I have seen such a thing out in the wild at this point but have not been paying much attention as there are vanishingly few games I would opt for the PS1 version of that were made before analogues became a thing.
On the face of it then it should just be a controller level hack, with the only problem potentially being if you have to ID/initialise the controller first but if you can do a general control hack that should not be so hard to do. Controller level hacks will see you have to play with code though, and in this case probably not the easiest form of that hack. There are traditionally three approaches in such things
1) You alter the debounced state. Every frame the controller's state will be copied to RAM so as to avoid issues with switches being mechanical devices (ever had a mouse double click when you only wanted to do one? This is switch bounce taken to a failure state, it does however happen in all switches as you force through spring, resistance and more besides which makes games tricky if one thing reads pressed and another thing does not, or it reads not pressed despite it being pressed and double jumps/stops running/stops firing....) and everything should operate off that, have something sneak in after the read and change the states of buttons and you have your hack.
2) You alter what the game reads. Various things will reach out to the debounced area (or maybe hardware area if it is bad) and check to see if their particular requirements are met. Change this check to something else (or nothing to disable a mechanic). Where 1) is possibly game level (or at least might have one for menus, one for game, one for something else) this is mechanic level so full remaps if there are 500 things that use the X button say get a bit more tedious.
3) If the game has some kind of controller settings (even select from three of these premade lists) you play with those. These will essentially be 2 but programmed into the game, hopefully it is a nice simple file in the game or even a setting you can force with a cheat (including force to be something it does not normally allow) but more likely it will be in the code somewhere.

You can try watching for what reads the hardware area dealing with controllers, or you can find something that changes as a result of button presses (cast a spell and mana goes down, fire a bullet and the bullet will appear on screen/reduce ammo, jump and your sprite/3d model will jump... and work backwards from those to find its activator. Mana, ammo and such is basic cheat searching, models tend to also be dictated by something in the hardware/memory you can find and read (open the memory viewer to relevant area, do real time updates, get somewhere quiet and then jump, should be obvious what changes, set break on write to that in the debugger and it will start you on the path to the button read).


Any graphics or text changes is up to you to sort if you care.

Option the second. Open up the controller and throw some wires around. Might take something a bit more creative to turn an analogue signal into an on/off signal; don't know offhand if the PS1 sticks are encoded or resistance based (and third party might also differ), if resistance based then you can do it with a transistor and suitably chosen resistor but encoded is possibly more tricky/sees you have to dip into programmable devices territory*. You might get lucky if it is encoded and find there is an "is pressed" (or more strictly is outside dead zone) signal for various directions somewhere in it all but I don't know for that one.

*a fairly well trodden path as it is the same thing people do to make macro and in some cases turbo controllers.

Option the third. You would not be the first person to note the PS dpad is far from something people choose to use from standard selections, never mind the unbridled glory of microswitches. There are however third party offerings that might do something more.

MD_Prometh

The King's Field series, Shadow Tower and FFVII would benefit well from more modern control schemes. Certainly be cool to see these kinds of hacks come to fruition one day

MysticLord

Quote from: MD_Prometh on August 05, 2022, 06:56:19 AMThe King's Field series, Shadow Tower and FFVII would benefit well from more modern control schemes. Certainly be cool to see these kinds of hacks come to fruition one day
Replacing tank controls with something sane would improve the worst offenders.

Drewhinson7

What about crash bandicoot 1 and tomb raider

DashieSparkle

Quote from: FAST6191 on August 05, 2022, 06:01:08 AMOption the third. You would not be the first person to note the PS dpad is far from something people choose to use from standard selections, never mind the unbridled glory of microswitches. There are however third party offerings that might do something more.

I do actually remember having a 3rd party controller that had dpad control on the left analog stick. The only thing is, I forgot what one it was. Also I'm not sure if 3rd party controllers are as good as the official controllers.

DashieSparkle

Quote from: FAST6191 on August 05, 2022, 06:01:08 AMI don't know that I have seen such a thing out in the wild at this point but have not been paying much attention as there are vanishingly few games I would opt for the PS1 version of that were made before analogues became a thing.
On the face of it then it should just be a controller level hack, with the only problem potentially being if you have to ID/initialise the controller first but if you can do a general control hack that should not be so hard to do. Controller level hacks will see you have to play with code though, and in this case probably not the easiest form of that hack. There are traditionally three approaches in such things
1) You alter the debounced state. Every frame the controller's state will be copied to RAM so as to avoid issues with switches being mechanical devices (ever had a mouse double click when you only wanted to do one? This is switch bounce taken to a failure state, it does however happen in all switches as you force through spring, resistance and more besides which makes games tricky if one thing reads pressed and another thing does not, or it reads not pressed despite it being pressed and double jumps/stops running/stops firing....) and everything should operate off that, have something sneak in after the read and change the states of buttons and you have your hack.
2) You alter what the game reads. Various things will reach out to the debounced area (or maybe hardware area if it is bad) and check to see if their particular requirements are met. Change this check to something else (or nothing to disable a mechanic). Where 1) is possibly game level (or at least might have one for menus, one for game, one for something else) this is mechanic level so full remaps if there are 500 things that use the X button say get a bit more tedious.
3) If the game has some kind of controller settings (even select from three of these premade lists) you play with those. These will essentially be 2 but programmed into the game, hopefully it is a nice simple file in the game or even a setting you can force with a cheat (including force to be something it does not normally allow) but more likely it will be in the code somewhere.

You can try watching for what reads the hardware area dealing with controllers, or you can find something that changes as a result of button presses (cast a spell and mana goes down, fire a bullet and the bullet will appear on screen/reduce ammo, jump and your sprite/3d model will jump... and work backwards from those to find its activator. Mana, ammo and such is basic cheat searching, models tend to also be dictated by something in the hardware/memory you can find and read (open the memory viewer to relevant area, do real time updates, get somewhere quiet and then jump, should be obvious what changes, set break on write to that in the debugger and it will start you on the path to the button read).

That all sounds very complicated. I guess I can try, or just wait for someone else to do it.

Jorpho

Quote from: Drewhinson7 on August 05, 2022, 11:27:27 AMWhat about crash bandicoot 1 and tomb raider
What about them? There's no reason they would be easier to hack than anything else – except that people have done a whole lot of things with Tomb Raider at this point. Some version of OpenLara probably has analog control, but it's probably not available on the Playstation.

For that matter, practically everything that can be done to Doom probably has been done to Doom by now. A quick Google suggests https://www.doomworld.com/forum/topic/118091-how-to-play-psx-doom-in-modern-control-style-on-emulator/ .
This signature is an illusion and is a trap devisut by Satan. Go ahead dauntlessly! Make rapid progres!

Drewhinson7

im just saying because theres no analog hack forcrash bandicoot1 like at all tbh

magusneo

Try some hardware hacking project: Blue Retro

Brutapode89

Please. Can you do the same thing for PAL versions? :'( Thanks.

cospefogo

Quote from: MD_Prometh on August 05, 2022, 06:56:19 AMThe King's Field series, Shadow Tower and FFVII would benefit well from more modern control schemes. Certainly be cool to see these kinds of hacks come to fruition one day

Ditto!
I just opened a topic wondering exactly about this!
It would be AWESOME... Movement on King's Field series on analog sticks!
And no need for full analog functionality --- just the regular commands could be already perfect!
"Replicants are like any other machine - they're either a benefit or a hazard.
If they're a benefit, it's not my problem."