Hello all, new to this site. I've been playing romhacks for a while and ran into a game I would like to update myself; Megaman Legends 1 (and 2/Tronbonne if possible). I am programmer by trade/education just don't know where you start for this kind of stuff. Read the starter guides but they seem focused on translations/new levels which is cool but I want to do something different.
These games have very archaic control schemes, classic PSX tank controls but with... truly terrible aiming controls. I want to instead map true analog movement to the left stick, and camera control to the right stick. Where would I start with this type of romhack?
Be prepared to brush up on those assembly skills as you are going to be needing some for this, PS1 using a nice MIPS R3000A processor with MIPS I instructions which if your schooling was not a hot moment in the late 90s/early 2000s is unlikely to be something you met and in some ways a bit different to other things. Very little scope for any way to dodge it here.
Controls usually get sent to a fixed location in memory. Serial, parallel, streaming or packets of data matter fairly little here but all are options depending upon the device. For whatever device you are hacking then see about finding some kind of info (homebrew programming wiki, emulator source code, SDK, hacking guide like the documents section on this site...) on it.
Sometimes the games will debounce this (copy it to another section so in the case of switch bounce you don't get one part of a frame doing one thing and another part seeing the switch as the opposite state because the mechanical underlying aspects of it have not quite settled -- a mouse that double clicks when you clicked once is this*) and operate from that. Can be quite nice for a basic button swap hack to attack this, though analogues will have to go further.
Something will then read this state (usually every vblank, though modern PC stuff might be interrupts or polling faster still as a separate thing) and decide to perform an action based upon it. Some hackers will follow the controls and see what goes, others will find some game change and latch onto that with a debugger. In the case of movement there will likely be a nice obvious tell on the screen which means a nice obvious tell in either the on screen handler or some kind of internal game location variable (graphics hardware is often read only, or at least slow to read, and the games have their own internal sense of where everything is. Marginally relevant at this point https://docs.google.com/document/d/1iNSQIyNpVGHeak6isbP6AHdHD50gs8MNXF1GCf08efg/pub?embedded=true
Anyway follow things in the relevant direction for your approach and eventually you will get to some kind of loop type arrangement (presumably IF or While types) concerning the buttons, if the game has some kind of control scheme switching (selection of bad ones or fully custom matters fairly little, though fully custom would presumably not be seeing this) then that is also a thing you might have to go through. You then want to change it to read the state of another button, which can be quite useful if you only want one action changed and not game wide like a hardware hack or some of the fiddling with debounced data might be. Anyway you want analogues as well which makes life a bit harder -- buttons tend to be binary where analogues... the clue is in the name and the are also a bit noisy so you can't do simple differences and might instead have to code in something (which means a jump and finding an area to inject your new code into before jumping back) to do a range (if greater than), or even something a bit more in the fuzzy logic world, if you also want analogues to correspond to movement speed then go find that screen and world thing and adjust accordingly (maybe do ranges rather than direct correlation).
Whether you also want to edit any in game help screens, menus or the like is up to you, though in that case we are back to the levels, text and graphics stuff you likely already found.
I would start with the basic remap of a button control (might even be able to release it if this is one of those Japanese using X and O differently for menus/platforming/whatever deals as there is always someone that wants the opposite) as several of those steps are notable in and of themselves. I don't know what we are suggesting for a PS1 debugger these days as there have been a few more made since I was last on top of things there.
*or if people want a game example. Press this button when falling to fly, let go to fall more, once let go no second flying, now what happens when the button is pressed by the mechanicals say no? This is bound to happen over the course of a game so you debounce, and maybe even operate from the same state for a couple of frames.
We desperately need a PS III rom hack for 2021(30 years of this game) The hack should be a massive overhaul of the game,music,graphics,NPCs,storyline,battle system,4x exp and mesta
I am of the opinion that phantasy star 3 can never be fixed. There were however some people looking into doing things with it so they might be aiming for such a thing.