Good work on the game, impressive you did all that without assembly work!
Hope this isn't too much, I've spent some time (that's putting it lightly) figuring out the compression routine. Those 31 compressed portraits were laughing at me with a face hidden by said compression scheme. So I wrote a decompression command line tool, just spits out the binary data to a file, so I could see the portraits or perhaps convert them to bitmap files with my portrait command line tool. The cool thing from all of this was that not just those portraits are compressed, more stuff like the Acclaim logo are compressed as well. I have yet to write the re-compression part because I don't know where to start and I think it's actually unnecessary.
Compressed items are the 31 portraits, Acclaim logo, Iguana screen, title screen (graphics and map I think), and a few other things that don't seem important but might be garbage data.
I say it's unnecessary because I figure just throw the uncompressed graphics into rom (it's 24 mbit, nobody will care if it's expanded to 32 mbit), then those screens would load immediately instead of taking a few seconds to decompress to ram.
So, to get you started I'd suggest using your hex editor and making the game 32 mbit, make sure you delete the 512 (0x200) byte header at the beginning of the rom. Just add zeros until it's 4,194,304 bytes, or use Lunar Expand. Then copy the portrait data of a player (0x690 bytes and a 0x40 byte palette data I forget exactly), and paste it anywhere in all that free space. Then grab Lunar Address, set it to LoROM 80:8000, and type in the hex editor address on the left, and get the snes mem address on the right. That's the address you can overwrite the compressed 7F1860 locations with. 7F1860 is a snes WRAM memory address, because the game decompresses the data from rom to ram, and that's where the pointer loads the image from, while all the other pointers are to uncompressed rom locations (type them into lunar address to see the file location.) So if you put a portrait at the beginning of the expanded rom area, 0x300000, you would put E08000 over 7F1860 in the pointer table and it should work, byteswap it of course so 0x00 0x80 0xE0.
That should help you get around the compressed player portraits. It will require a little assembly to skip the decompression code and just load uncompressed graphics from rom.
Lunar Expand:
https://fusoya.eludevisibility.org/le/index.htmlLunar Address:
https://fusoya.eludevisibility.org/la/index.html
So here's some locations for the compressed graphic stuff. On the left is the snes memory location (in rom) where the data starts, type it into Lunar Address to get the file address. On the right is where it gets decompressed to, this will only be visible in an emulator, notice where the portrait data gets put. The full screen graphics copy to the same place because they're on screen at different times. There might be more stuff but I haven't really looked.
A9:8000 decompression routine starts
11:8000 compressed portrait data copies to 7F:1860
2C:A3D0 compressed acclaim logo copies to 7F:0000
31:B025 compressed ?? exec: 89:8000 copies to 7F:0000
3B:8470 compressed iguana data copies to 7F:0000
42:8000 compressed title screen graphics
4F:8000 compressed ?? exec: 89:83D5 copies to 7E:2C78
03:D01D compressed ?? exec: 89:8135 copies to 7F:0000
0C:809F compressed portrait name data?
0C:CA5E compressed title screen map data?
Looking at the compressed portrait data, it's at snes mem rom location 11:8000, which is 0x88000 in the hex editor. The first two bytes of data (0xF3 and 0x78) are the size of the compressed data, of course byte swapped. So the compressed data is 0x78F3 long. If you subtract those two bytes from the length, and jump ahead that many bytes, you'll get to the start of the data (it decompresses from the end), which starts with how big the decompressed data is, in this case 0x30, 0xD3, so the decompressed data is 0xD330 long, 57% compression ratio nice!
Now I show these locations because you can pull up a snes emulator with a debugger (I use Geiger's snes9x1.51.ep10r2) and set a breakpoint on execution when the routine starts, and see every time it's used (not very much really) and see the source and destination of the graphics.
Geiger's snes9x:
http://geigercount.net/crypt/
I hope that shines some light on some advanced topics. I could help with inserting uncompressed portraits and name graphics into expanded rom. I've been getting pretty good with asm modifications.