Romhacking.net

Romhacking => ROM Hacking Discussion => Topic started by: Emptyeye on January 09, 2022, 09:14:05 PM

Title: Phantasy Star III Double Walk Speed Work
Post by: Emptyeye on January 09, 2022, 09:14:05 PM
Hi everyone,

I actually thought about reviving some super old topics for this, but my subject is only tangentially related to those topics.

So something multiple people have worked on was a double-walking-speed patch for Phantasy Star III: Generations of Doom. In particular, Tony H. had a series of Game Genie codes for it, and Tryphon actually made a patch that added both double speed and diagonal movement.

The issue was that the game's cutscenes that automatically take control of your character weren't designed for double-speed, and tended to screw up.  Fortunately, in the last couple years, a full disassembly of PSIII was released, and from that, I managed to take what was learned about double-speed and combine it with the intro cutscene to create something that at least doesn't require you to turn codes off and back on to work properly.

It does still look a little weird. The specific pathing taken is due to the fact that, while I can work okay within the existing contraints of a ROM, adding new things/instructions is currently beyond me, even with the disassembly. As such, I had to work within the max number of inputs the original cutscene does (To oversimplify, the game-takes-over-for-you cutscenes are a series of "Hold this direction for this many frames" instructions.). Further, if you get too far ahead of Maia, she simply stops moving...but she's a solid object, so if you get behind her, that screws things up too. Still, I think I did all right. A demonstration is here (https://www.youtube.com/watch?v=kBBfoF-Jbw0); you can see the cutscene playing out after a brief demonstration of double-speed. An earlier demonstration where I got it into a barely-working state, that continues through to when you exit the shop after escaping the dungeon, is here (https://www.youtube.com/watch?v=Ir2gwtGuzCg&t).

If you want an in-lore reason for the movements, I like to think of it as Rhys being so deliriously in love and impatient to get married that he temporarily forgets where he's supposed to go, then impatiently keeps stopping and waiting for his super-slow wife-to-be to catch up, before finally having a chat with his guard bro just before the ceremony starts.

I know there are a few other cutscenes like this throughout the game I'll have to play through and see how they react, but this is encouraging so far.
Title: Re: Phantasy Star III Double Walk Speed Work
Post by: FAST6191 on January 10, 2022, 07:37:43 AM
While I generally think of PSIII as a lost cause (4 and 2 being some of my favourite games ever) then good to see such things being worked on... maybe one day.

As far as adding new code then it is not usually so bad -- there will be a jump command/branch command (can't remember all the various 68K syntax right now) so use one of those to jump to somewhere free (easy enough for most megadrive games as you are not usually troubled by bankswitching fun), do your own thing (if you can replace codes inline you can handle this as well, might not be able to do say a hello world but the game should have handled most IO for you by this point) and then jump back.
Title: Re: Phantasy Star III Double Walk Speed Work
Post by: Emptyeye on January 17, 2022, 03:06:36 PM
Well, thanks for the kind words! Hopefully at some point I'll be able to make some more progress in learning ASM/ROM disassembly and reassembly.

For now, though, if you want to try the patch, you can download it from my website here (http://emptyeye.com/miscellaneous/Phantasy_Star_III_Double_Walk_Speed.ips). I do want to put it on RHDN at some point, but I want to be reasonably sure it works for the whole game before I do, and I'm not there yet. I already mentioned the intro cutscene looks a bit weird but does play all the way through and "end up" in a normal place, and the same is true for some of the "post-breakout" scenes. I haven't tested any cutscenes past that; I know other topics on this mention other cutscenes behaving strangely, and I haven't gotten to them yet. If anyone wants to help test those and mention how they behave/where they go wrong, great!

A few other notes:
-I originally applied this to the version of the ROM in the Genesis/Mega Drive Classics you can get off of Steam, with the extension changed to .BIN. The checksums for that ROM are:
CRC32 CC194AD8
SHA-1 000FE9483FD969E3F03970622D4299ECC2A4FEA3
MD-5  90C9892891AD78BA96830F6CDB397CCF

It will also work on the version of the ROM with the following checksums (Which appears to be the "popular" version of the US/EU ROM). Again, change the extension to .BIN.:
ROM SHA-1: 59D4914E652672FD1E453C76B8250D17E8CA154E
ROM CRC32: C6B42B0F

I haven't tested it with any other versions of the game.

Thanks everyone!

EDIT: Now onto Generation Two on Nial's path. The start-of-generation cutscene looks like this (https://www.twitch.tv/videos/1271091793). As you can see, it's a little strange, but I think I'm going to just leave it as it is--I don't think you would even notice if you weren't specifically looking for it and/or I didn't point it out. I imagine Ayn's cutscene works similarly, but haven't tested that out for sure.
Title: Re: Phantasy Star III Double Walk Speed Work
Post by: Emptyeye on February 03, 2022, 05:29:37 PM
Okay, well, the patch is out (https://www.romhacking.net/hacks/6566/)! You can get all the information there. It should work straightaway with the version of the ROM I mention in the entry. It will probably also work with the Steam version, though you may need to run a checksum correction utility afterward. I haven't tested it with other versions (IE the J version), nor do I know how it will interact with other patches.

As I mention both in the entry and earlier in this topic, a bunch of other people did a lot of the heavy lifting on this. Truthfully, my main contribution was adjusting the cutscenes (Especially the intro one) so they didn't lead to potential softlocks or otherwise look weird. Besides the intro cutscene, the main one that looked obviously strange was the scene where Nial meets Ryan in generation two; the adjustments I made put Nial directly in front of Ryan, as opposed to standing off in one end of the room. I did end up adjusting the start-of-generation-two scenes to put the characters in front of the thrones as well.