(1 to 1) of 1 Results
18 September 2012 2:22PM
Technical Help - GBA
Rhythm Tengoku is a pretty cool GBA rhythm game. It only came out in Japan, of course. We’re working to fix that. Not only do we have regular public releases, but they’re also fairly bug-free.
[note: This post was updated again on 9/23/12. The last few paragraphs are new.]
But all is not well in the Rhythm Tengoku translation. There’s two of us on the project, and neither of us are ROM hackers. The main text can be inserted without issue, thanks to Atlas and a script from pelrun and Spikeman. But there’s graphical text sprinkled throughout the game, and we don’t know how to edit it.
I can handle making new graphics, but I can’t edit graphics unless I know where they are in the ROM and what format they’re stored in. Even if I seek help with the graphics, I can’t tell someone to start working unless I have a method to insert custom graphics into the ROM.
Worse, it appears that graphics are in some kind of compressed format. Jeffman (Jeffman.net) took a cursory look at the ROM and came to that conclusion, as did Cracker (GBAtemp). (Or, Cracker guessed, they are encrypted.)
A decent starting place may be the Health and Safety screen. It is in a graphical format and starts up at the beginning of the game before anything happens. I.e., it’s ideal for breakpoints and changes to the ROM can easily be tested. I managed to change the background color to orange and I believe load some tiles in place of other ones, by corrupting the area of the ROM Jeffman pointed out to me as containing the Health screen. This Google Document contains every bit of technical information I could find.
The main menu is an example of Japanese graphical text:
Also of note is CrystalTile2. It has a special setting for “Rhythm Heaven” (Rhythm Tengoku). However, almost all graphics don’t seem to be in this “Rhythm Heaven” format. It does work for editing fonts, though. Such usage is detailed here:
Y.S. made a few ROM hacks for Tengoku as well. Graphics-editing-wise, I think this video is the most relevant of his.
That face that appears in the background of this hacked ROM doesn’t appear anywhere in the game. It’s possible this editing was more on the “Crystal Tile” format of graphics and not anything unique. But Y.S. seems to be a competent hacker… He posted these hacks (link is to a mirror on my own site) but none are related to graphics modification, unfortunately.
I’ve tried and failed to contact Y.S. He has been active recently on YouTube.
Finally, there’s ~4MB of free space at the end of the ROM. If replacement with an uncompressed format is an option, it’s still far better than nothing.
I’m not opposed to doing the work myself, I just have doubts on my technical skill (none) vs. the difficulty of hacking this game. Thanks for reading and have a nice day.
edit: I’ve been contacted by Auryn: “I just played the last 6 hours with your game and I believe I found where the problem is and I contacted CUE (a member of this forum) because he is probably the one that can solve your problem the fastest. As soon that i have a solution, i will tell you. Basically it should be only a matter of decompression/compression (I believe CUE tool would compress your file the right way but the decompressor has a problem. CT2 is no use because it’s a “normal” compression but a special write mode. If you has a solution to the decompressor, be ready to work with a bit less than 800 files (between graphics, tilemaps and palettes).”
For good measure, here is Auryn’s compression theory that he was wrong about.
Here’s his third message to me:
I have a bad and a good and a bad again notice for you. The bad first: I was wrong with my compression teory. The good is that CUE found a pattern in that data, made a little desciption and he made a little program to extract some tile. The bad is that it’s not tested well and it’s not a complete program. Anyway make sure to credit CUE if you will release a patch someday.
Here is his message: To decode the graphics a programmer is needed. I’m not a GBA expert and I don’t have more time to expend in this game.
The health screen has 3 parts:
- tile encoded
- tile counts
- tile pattern (080D1AD60 or so, not tested)
Not full tested. I can extract the tiles 0×00 to 0×72 without problems, but the 0×73 is wrong.
080D1AD4C has 2 pointers:
- 080D1AABC, pointing at 08D1A330, the encoded tile data
- 080D1AACC, the encoded count data
The tileset is a 4bpp texture (16 colors), divided in blocks de 2 colors.
Eeach encoded data block is a 2bpp has:
- 1 byte with the foreground and background color
- 1 byte with the number of encoded words - 1
- the encoded words, low endian format)
Each encoded word has 2 bytes, each byte has 2 nibbles, each nible has 4 bits, each bit is the color defines in the first bit
The count data is a double byte blocks:
- 1st byte has the number of nibbles to copy
- 2nd byte has the number of nibbles to repeat
A tiny C program to extract some tiles: