So I've been researching joypad input...
For those of you reading who actually know a thing or two about programming, the way I talk about this may expose my novice a bit. But my ideas and ambitions for what I plan to do with this knowledge are topnotch.
So, from what I've read on the subject, SNES's joypad registers are $4200 (determines if the pad is active), $4212 (determines if the pad is ready to transmit data) and $4218-4219 (a,x,l,r,1,1,1,1 - b,y,s,t,u,d,r,l buttons. Those 1s represent data that simply identify the joypad to the SNES as an actual joypad (and not a mouse or a super scope)
Anyway, this on its own is not particularly useful. If you open ffiv in Geiger's and watch the $4200 block of RAM, you won't see anything interesting. Apparently, part of the initialization at the beginning of a SNES game involves pointing to a place in RAM where controller input will be copied in (essentially) real time. So, by setting a breakpoint to read $4218 at the very start of running the ROM, I was able to find where FFIV copies controller input: $0108-0109.
Go ahead and see for yourself. Open your ffiv ROM in Geiger's and view 7E:0108-0109 in RAM. Watch what happens there when you push (and also hold down) some buttons.
Yay!
I haven't had a whole lot of time to actually do anything with this, but here's what I want to try (in ascending order of difficulty)
1. Implement a "hold B to run" function on the field, a la FFV
2. Revamp the Limit Break in my hack so that the break is truly random (instead of being determined by the lowest two bits of your HP) but the execution is controlled by the player (giving you the option to not execute)
3. Implement a "press X to switch to the next ready character" function in battle, a la ffvii - ix (and possibly others?)