+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  6MB rom...why not?
Pages: [1] 2
Author Topic: 6MB rom...why not?  (Read 2 times)
DaMarsMan
Guest
« on: April 24, 2008, 03:02:36 pm »

I know these don't work in some of the old copiers but new ones can play them. Also, if I'm not having any mirroring issues then I shouldn't have a problem. The thing is, I need to compress my DQ3 script 70% to fit it in. DTE+MTE got it around 55% but that is a lot of compression already.

I just want to see if anybody has enough good arguments for me to not release this thing as a 48Mbit game.
Neil
Guest
« Reply #1 on: April 24, 2008, 03:08:35 pm »

You disabled the huffman? Why not recompress and optimize the table?
Deathlike2
Guest
« Reply #2 on: April 24, 2008, 03:43:13 pm »

What's the size of the original game? It helps put into context the expansion you wish to do.
KingMike
Guest
« Reply #3 on: April 24, 2008, 04:09:08 pm »

4MB. The limit for a standard SNES game.
DaMarsMan
Guest
« Reply #4 on: April 24, 2008, 04:16:46 pm »

Quote from: Neil on April 24, 2008, 03:08:35 pm
You disabled the huffman? Why not recompress and optimize the table?

Yeah the huffman is currently disabled. Even if I enable it, I'm not going to get 70% compression so I don't see the difference. Personally I'd rather use DTE with dictionary cause it's easier to code and gets better compression.
Kagemusha
Guest
« Reply #5 on: April 24, 2008, 04:29:13 pm »

What about a 24-bit bitpacking MTE algorithm? I don't know exactly how good it is, but Metal Slader Glory uses that and it's got a pretty big script.
DaMarsMan
Guest
« Reply #6 on: April 24, 2008, 04:43:27 pm »

55% is pretty darn good. I just don't want to go through the hassle if I don't need to. So far no one has really been able to convince me of a good reason to go through with squeezing this to the max.
Nightcrawler
Guest
« Reply #7 on: April 24, 2008, 04:45:59 pm »

Typically, in this exact situation SNES games I've seen will utilize some LZ on top of the dictionary. That will probably do the trick for you depending on how large you can make your buffer. Adding the huffman back in in addition to dictionary would also most likely do it.

I really wouldn't advise going over 32meg because it becomes a fictitious cartridge unless you match one of the custom mappers used by a few of the other real games. You have to remember it's more than just mirroring. It's a cart mapping. The 'standard' cart mappings don't go above 32megs, so unless you use one of the others, your cart mapping doesn't exist and emulators won't play it. You may be wondering why I keep throwing the word 'cart mapping' around when we're talking ROMs and emulation. Well, the SNES can't see anything by itself. It's just a dumb bus. So, you NEED some sort of address mapper supported by things even for a made up ROM that would never have a real physical cart.

Personally, I think adding LZ will get the job done. I've seen it done in several SNES games with good results.

P.S. Probably 75% of those who own copiers own them 32meg or less. So, you're of course ruling out that audience which may or may not matter to you.
Deathlike2
Guest
« Reply #8 on: April 24, 2008, 04:47:21 pm »

Quote from: KingMike on April 24, 2008, 04:09:08 pm
4MB. The limit for a standard SNES game.

Well then, I don't see a problem then. Since 6MB ROM legitmately exists (8MB is a tougher sell, as no games use it), then there's nothing wrong with that.

Let me say this.. how many major SNES RPG translations haven't had ROM expansion done? Rom expansion has been done for most major translations, so I don't see any negative problems to this, unless you're still hitting a wall and that's when you have to whip out something better for compression and forget complaining about convienence.

Edit:

Quote from: Nightcrawler on April 24, 2008, 04:45:59 pm
I really wouldn't advise going over 32meg because it becomes a fictitious cartridge unless you match one of the custom mappers used by a few of the other real games. You have to remember it's more than just mirroring. It's a cart mapping. The 'standard' cart mappings don't go above 32megs, so unless you use one of the others, your cart mapping doesn't exist and emulators won't play it. You may be wondering why I keep throwing the word 'cart mapping' around when we're talking ROMs and emulation. Well, the SNES can't see anything by itself. It's just a dumb bus. So, you NEED some sort of address mapper supported by things even for a made up ROM that would never have a real physical cart.

IIRC, the only massive hack that comes to mind is Super Demo World (SMW hack). That hack is arguably the best SMW hack released in its time. Depending on the situation, it may simply be worth that hassle... or a "reasonable" tradeoff.
« Last Edit: April 24, 2008, 04:52:23 pm by Deathlike2 »
DaMarsMan
Guest
« Reply #9 on: April 24, 2008, 04:52:15 pm »

For what it's worth, the game plays fine in bsnes. I don't know if that's a sign that it's using the correct 'cart mapping' or not.
Deathlike2
Guest
« Reply #10 on: April 24, 2008, 04:57:00 pm »

What you need done is a full playthrough to check if bugs occur.
byuu
Guest
« Reply #11 on: April 24, 2008, 05:00:18 pm »

Quote
Personally, I think adding LZ will get the job done. I've seen it done in several SNES games with good results.

Won't work. The SNES DQ games use huffman for a reason. The script pointer table holds a pointer to a block of 8 or 16 (depending on the game) pointers, and the pointer holds the bit index as well. The game decompresses exactly that many text boxes (1 - 8/16) to get the decompressed text.

See the problem? LZ is a streaming compression, the current byte relies upon the decompression of the previous bytes. DQ does not decompress the entire script into RAM, so it has to use a compression algorithm that you can jump into at any point to decode.

The reason you see LZSS in so many SNES games is because they mostly use scripting systems and such that have blocks for each "area", "scenario" or "chapter." It's much easier to stick those small blocks into the top of the 128kb SNES WRAM. A 300kb game script wouldn't fit so easily.

Personally, I think DaMarsMan is underestimating the compression power of combined huffman and dictionary. 70% shouldn't be too hard with that, but sadly I don't have the time to help.

Quote
For what it's worth, the game plays fine in bsnes. I don't know if that's a sign that it's using the correct 'cart mapping' or not.

No, not at all. SNES emulators use hacked up mappers designed to get optimal compatibility, because the people dumping carts don't agree upon the importance of also recording the cartridge PCBs to get correct mapping. It'd take them five minutes a cart, but they won't do it, simply because we're really good at bullshitting things now.

And I can't afford to purchase 5,000 carts to do it myself :(
Ryusui
Guest
« Reply #12 on: April 24, 2008, 05:25:10 pm »

Quote from: DaMarsMan on April 24, 2008, 04:16:46 pm
Yeah the huffman is currently disabled. Even if I enable it, I'm not going to get 70% compression so I don't see the difference. Personally I'd rather use DTE with dictionary cause it's easier to code and gets better compression.

There's nothing stopping you from using both dictionary/MTE and Huffman. Just decompress the Huffman-coded text to memory, then read out the strings using the dictionary/MTE system.
DaMarsMan
Guest
« Reply #13 on: April 24, 2008, 05:39:08 pm »

So I should compress with DTE+MTE first and the compress again with huffman.
Nightcrawler
Guest
« Reply #14 on: April 24, 2008, 05:44:53 pm »

Quote from: DaMarsMan on April 24, 2008, 05:39:08 pm
So I should compress with DTE+MTE first and the compress again with huffman.

Right.
Pages: [1] 2  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC