News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: FF1 MMC5 Disassembly Updates  (Read 3396 times)

Jiggers

  • Jr. Member
  • **
  • Posts: 79
    • View Profile
Re: FF1 MMC5 Disassembly Updates
« Reply #20 on: January 17, 2019, 04:36:54 pm »
I was thinking Agility, then looked up how much Agility each class actually earns per level, and the Fighter earns more than the Thief...

In 49 level-ups, each class earns:
Fighter: 35 agility, 24 luck
Thief: 32 agility, 49 luck
BlackBelt: 25 agility, 30 luck
RedMage: 17 agility, 25 luck
WhiteMage: 18 agility, 20 luck
BlackMage: 13 agility, 14 luck

So it really does feel like a speed stat more than agility. Thief is fast, BB second fastest, Red Mage a teensy bit faster but limited to lighter swords...

But the point of my project is that anyone who wants to change stuff can do so easier! If you want agility instead of luck, that's changing one line. If you want to fiddle with the level up data, its organized so you just have to change a few 1s and 0s.

But you're right about the hide thing, I disabled that for now. Code's still in there if people want to enable it, though. I just wrote the hiding-when-critical code, but its also disabled until I have time to test it.

Working out the kinks for 3 save slots now. Looootta bugs going on due to the RAM switching. Loading and saving screens are working though, except for displaying which sprites each save game is using. It's a monsterous mess...

January 17, 2019, 11:51:13 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
I did it. I don't really know how I did it, but I did it. It's super messy... but... I DID IT.

There are now 3 save slots. Saving on the overworld works. Saving in inns works. You can load from the title screen. You can cancel saving and cancel loading and everything should be fine.

The MMC5's exRAM ($5C00) is now the base game data, where the current game draws from. That way its not wiped out when swapping RAM.

But please stress test the heck out of it!

https://drive.google.com/open?id=1G699Vc47Qr5he4zcBEi2JPTdc0a9h14n
« Last Edit: January 17, 2019, 11:51:13 pm by Jiggers »

Orochi Kusanagi

  • Jr. Member
  • **
  • Posts: 80
    • View Profile
Re: FF1 MMC5 Disassembly Updates
« Reply #21 on: January 18, 2019, 01:46:02 am »
Wow, the amount of changes done on this has been nothing short of astounding. I love that these classics still get so much love from the fans.

Vanya

  • Hero Member
  • *****
  • Posts: 1228
    • View Profile
Re: FF1 MMC5 Disassembly Updates
« Reply #22 on: January 18, 2019, 02:19:49 am »
Since you mentioned making things easy for other to make changes, how about adding commands?
Or having interchangeable commands?
One of my dreams has been to add class specific commands to help spice things up.

I'd also like to try to add a new screen for changing jobs like in the later games, but that's a whole other can of worms I'm ill prepared to even think about.

Jiggers

  • Jr. Member
  • **
  • Posts: 79
    • View Profile
Re: FF1 MMC5 Disassembly Updates
« Reply #23 on: January 19, 2019, 02:40:13 pm »
Wow, the amount of changes done on this has been nothing short of astounding. I love that these classics still get so much love from the fans.
Thanks :D

Since you mentioned making things easy for other to make changes, how about adding commands?
Or having interchangeable commands?
One of my dreams has been to add class specific commands to help spice things up.

I'd also like to try to add a new screen for changing jobs like in the later games, but that's a whole other can of worms I'm ill prepared to even think about.

There's still 14 more banks to work with... I think? Both these things are ideas I wanted to do eventually. The Hide command came from trying to do class-specific things. I was having trouble changing the text when a new character's turn comes up. But I think I can do that now.

At the moment I think I reached the limit of what I can just "patch in", though. Further changes are going to require massively cleaning up the battle code at least. There's either 1 bit left in the battle command byte for a different action, or the hide command took it up.

I also want to clean up how in-battle and out-of-battle stats are loaded and used, how magic is stored out-of-battle, and clean up what bits of RAM are used for things, so its easier to tell what's safe to use and when.

Aaand I need to comment all my code better, and I think I'll stop keeping the original code commented out once a change I make works 100%. Its getting very messy to read. So for the next few weeks, that will probably be my focus. Along with minor bug fixes as I run into them. One slightly big "bug" is that the 4 big enemies have a gap between them, which pushes them too close to the heroes. That's going to require some nametable editing--or if that's impossible, I have to change the cool spell movement animation I made. :(

Vanya

  • Hero Member
  • *****
  • Posts: 1228
    • View Profile
Re: FF1 MMC5 Disassembly Updates
« Reply #24 on: January 19, 2019, 11:06:38 pm »
Ah, the dreaded commenting.
My work in Game Maker Studio sometimes feels slower than molasses because I'm always commenting everything so thoroughly.

Having to rewrite some of the code was probably inevitable given how the original code is kinda ... sloppy.
If you've read Anomie's bugfix and enhancement notes, you know how many issues there are.

Good luck, though!
If I can make some time to contribute, I'll try to do so. :)

Jiggers

  • Jr. Member
  • **
  • Posts: 79
    • View Profile
Re: FF1 MMC5 Disassembly Updates
« Reply #25 on: January 21, 2019, 03:33:50 am »
I tackled the dialogue data today. Only 256 lines in the game! Didn't know that. Should have expected it. Gotta figure out how to double that at least. Really hope I didn't screw up a pointer.

There was a game-freezing bug where the magic menu was looking at "$6300" instead of "ch_magicdata"--which used to be the same thing, but aren't anymore.

So I went through and looked for every place there was a variable that wasn't in variables.inc. Mostly they were in battle code. There's like, 8 different places they just chose at random to use as loop counters and temporary backup spots. So about 60% of the way through I just gave up labeling things very well because I was making new variable labels for the same damn thing. So a few spots it'll be saving to like, "math_basedamage" and it has nothing to do with damage at all.  :P I'll get around to that eventually...

Also updated the Checksum verification so now it tries to check the right spots for each save slot, instead of just the first one.

https://drive.google.com/open?id=1SQn4b5UpQcAA7HXzkRCTJ0Ls4RzsnLB6 - So here's a new upload. Rather than overwrite the old upload with every new change, which may or may not break everything, I'll start updating this one instead. Version... 0.2 or something. I should learn how to do project updates maybe.

If anyone is actually trying to play the game with this, please let me know when something looks way off.