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

Author Topic: Help with Micro Machines (SNES) ROM expansion  (Read 369 times)

Vag

  • Jr. Member
  • **
  • Posts: 10
    • View Profile
    • GreekRoms
Help with Micro Machines (SNES) ROM expansion
« on: January 28, 2021, 09:40:37 am »
Hello everyone,
recently I translated Micro Machines for the SNES to Greek and I also wrote MicroMachinesEditor, a program that lets you change the players' names (in all versions/translations).
I believe both the game and the editor have a lot of potential! Now I'm working on the next version of MicroMachinesEditor, it will let you choose different graphics for the players; you'll be able to change any player with another, change the hair/skin/clothes color and mainly select new players, pre-made by me or others. I can do that manually, in fact I have created 4 new players (Bub, Bob and Drunk from Bubble Bobble, Bomberman and Karnov). It's easy, but there is one restriction: As the game uses compressed files, the new file can't be larger then the original, unless you move the files. I have found the pointers and can move these files around, to take advantage of the empty space at the end of the ROM, plus I have made some more space by changing a compressed file (without altering anything in the game), but that's not enough.
The editor is doable as it is. The last data bank (70000-7FFFF) has all the files and only has data files, nothing else. There are 1089 bytes of empty space at the end and also I can reduce a certain file by 618 bytes. This is a total of 1707 bytes. I could use all of that space only if I could move everything. Unfortunately there is data I can't move as I can't find pointers. Even like this, If I find all the other pointers, I'll take advantage of most of the space. But that's not a good enough solution. The existing players' files vary from 1526 to 1830 bytes, but one of the custom files i made is 3263 bytes. This means that you can't even choose this character in the place of the one with 1526 bytes.

I can see two possible solutions, but they both need ASM and I need help with this.

The first solution is to move files to other (existing) data banks, that have empty space at the end. This is the empty space at the end of each data bank:
1st: 2051 bytes
2nd: 386 bytes
3rd: 451 bytes
4th: 202 bytes
5th: 604 bytes
6th: 3488 bytes
7th: 1089 bytes
There is a file that is 3442 bytes, that could go to the 6th data bank. Also, two other files are 2051 bytes together, they could go to the 1sh data bank. That's an extra space of 5493 bytes. If there's more need, the empty space in the other data banks can be used. The total can be up to 8kb. This is enough space, but not enough in all cases.

The other, preferred solution would be to expand the ROM and use that empty space. This way, less files will have to be moved, there won't be any space restrictions at all and also there will be less danger of not found multiple pointers (I have found 6 pointers for one file, I can't be 100% sure if there are more if I don't see anything broken in the game).

Is anyone interested in helping with this? If yes, I can send more details and all the needed pointers and offsets.