News: 11 March 2016 - Forum Rules

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - DougRPG

Pages: [1]
ROM Hacking Discussion / Help with Donkey Kong 3 Memory Map
« on: October 14, 2016, 02:21:13 pm »
Hi, I'm facing some trouble with the DK3 rom.

This is a Hirom game, and it uses the full 4MB rom, but for some reason the game doesn't use the c0-ff:0000-ffff range.

So the game seems to map the first 2M to 80-bf:8000-ffff and the last 2M to c0-df:0000-ffff.
Can anyone confirm that?

My main goal is to expand the rom to at least 5M. If I change the byte at FFD7 (of the internal header) to 0xD, indicating a 4-6M Rom, the emulators heuristic blows off because the rom becomes an ExHirom format.

Someone can help me with this mapping?


Edit: I've found a solution. I need to remove the header from 0xffb0 and put it in 0x40ffb0 and adjust the start code to jump to the original address. Now the Rom 40-5f will be mapped to 40-7d in Snes.

Hi, I want to play this game but the translation is reported as incomplete (seems that the menu is buggy). So, someone knows if the game is playable? The script is 100% translated?
I didn't find much information....

Hey Gideon, this is a 2001 translation, so 13 years later probably you have the knowledge to fix this game very quickly, right? Or are there some nasty problems to overcome? Do you remember something about this translation?


Programming / Algorithms for optimum dictionary compression
« on: September 04, 2013, 12:00:28 pm »
Hi, I want to compress a script with dictionary compression, and I'm trying to implement a good algorithm for the optimum solution.

First, I want that the string sizes in the dictionary can goes from 1 to n, so a string in the dictionary can have a maximum of n characters.
Second, I want that the dictionary has only 256 entries (maximum).

So I need to find the 256 strings that gives me the maximum compression.

My fist idea is the following:

1-)Find the 256 most common strings for each size (1 to n).
The worst algorithm here is to run through the script 256 times for each size (n). Probably there is a better way!

2-)With this information in hands we need to find the 256 global strings that gives the best compression for the whole script.
My first idea is to run through the strings of each size, starting with the most common for each size, and starting to sort the strings based on the compression ratio. To calculate this ratio we can run through the script adding the string size for each occurrence of this string, which gives us the total size in bytes this string has in the whole script.
We can stop to sort the strings for some string size, let's say k, if the position after the sort is higher than 256. So after the strings for all sizes starts to have a position higher than 256 the algorithm is finished.

3-)After finding the 256 best strings, we can create the dictionary.

As we can see this method needs to run through the whole script a LOT of times.
So someone knows some documents, or have some ideas for a better algorithm?

I was thinking about another method where I put one control byte each eight bytes, where each bit of this control byte tells if we have a common char or a dictionary entry. But using this method we need a different algorithm to calculate the dictionary strings, and seems much more complex to find the optimum solution.

If someone has experience with this stuff, please share here.

PS: I started thinking about this stuff today, so sorry if it seems a silly question.

ROM Hacking Discussion / Best compression method to use in a Snes game
« on: March 02, 2013, 11:18:41 am »
Hi, I need to find a compression method that gives me a very good compression rate. Even using two levels of compression, if necessary. Needs to be feasible to be used in a Snes game.

What do you suggest? What was the best compression methods you guys found in a Snes game?

ROM Hacking Discussion / Question about automatic VWF.
« on: January 04, 2013, 08:52:27 pm »
Hi, I'm translating a Genesis game and I needed to add some new letters. The original font has variable width, so I thought I'd need to change some width table or something like that, but the size is automatically adapted.

It's common to find these automatic VWF?

Hi, I'm translating a Genesis game and everything is fine, but I want to implement a automatic word-wrapping for the dialog.

My first question is: How can I find an unused Ram space? I think I'll need this for the automatic word-wrapping feature, but it's also a general question.

I've changed the game's compression, so I had to reimplement some of the dialog subrotines, and I think I could easily add a automatic word-wrapping, but the problems are the item names, person names, etc, because I don't know how large they will be.
This game reads and draws a simbol by time, so what is the best approach?


ROM Hacking Discussion / Information about Star Ocean compression
« on: November 09, 2012, 08:30:47 pm »
Hi, I want to translate Star Ocean to my language, based on Dejap's translation.
Someone knows something about the compression? I want to gather the maximum information I can.

I read a topic here on the forum that LostTemplar has some information, but he doesn't  answer my messages.
So, if someone can help me I'll be grateful.


ROM Hacking Discussion / Help with Master System pointers.
« on: October 28, 2012, 10:57:57 pm »
Hi, I'm starting to work with a Master System game, but I'm facing some trouble with the pointers.

For example, the game has this code:

Code: [Select]
LD HL,B778h
LD DE,4000h
CALL 04B3h

Inside this 04B3h subroutine the game access some data using HL, and I need the pointer to this data. Seems that I need to add 0x38000 to 0xB778, with gives 0x43778, but it's not the right place, but I know it's very near.

Someone knows how this stuff works?

The complete code fragment of this region is:

Code: [Select]
[004522] 4522 21 78 B7    LD HL,B778h      AF=0040 BC=0000 DE=C251 HL=B778 SP=CAFC IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=ef frames=0091
[004525] 4525 11 00 40    LD DE,4000h      AF=0040 BC=0000 DE=C251 HL=B778 SP=CAFC IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=ef frames=0091
[004528] 4528 CD B3 04    CALL 04B3h       AF=0040 BC=0000 DE=4000 HL=B778 SP=CAFC IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=ef frames=0091
[0004B3] 04b3 06 04       LD B,04h         AF=0040 BC=0000 DE=4000 HL=B778 SP=CAFA IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=ef frames=0091
[0004B5] 04b5 C5          PUSH BC          AF=0040 BC=0400 DE=4000 HL=B778 SP=CAFA IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=f0 frames=0091
[0004B6] 04b6 D5          PUSH DE          AF=0040 BC=0400 DE=4000 HL=B778 SP=CAF8 IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=f0 frames=0091
[0004B7] 04b7 CD C0 04    CALL 04C0h       AF=0040 BC=0400 DE=4000 HL=B778 SP=CAF6 IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=f0 frames=0091
[0004C0] 04c0 7E          LD A,(HL)        AF=0040 BC=0400 DE=4000 HL=B778 SP=CAF4 IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=f0 frames=0091
[0004C1] 04c1 23          INC HL           AF=0A40 BC=0400 DE=4000 HL=B778 SP=CAF4 IX=B8AF IY=C400 V    P0=00000 P1=04000 P2=5C000 [ROM]  vdp=0020 vc=f0 frames=0091

Hi, I'm trying to translate two Genesis games. One of them has the texts compressed (font uncompressed), and the other has the font compressed (texts unconpressed).
I'm very confortable with 68k assembly now and I already extracted the compressed texts from this first game. I read a lot of documents about compression, and the game uses a Huffman variant that I was able to undestand. There is a document here in RHDN about the Shinning Force compression that is almost the same thing this game do, so it helped me a lot.

But the other game has the font compressed, but I never decompressed any graphics, and I still didn't find any really good document about this subject.

So anyone has some code (68k if possible) to show me? Some RLE algorithm, etc..... I want to see what this stuff looks like.....
After that, assuming that I have the algorithm to decompress, I need only to write the decompressed data to a file and open using Tile Layer Pro, or do I need to do something with the data?

Please, I need some help..

Hi, I'm translating a Snes game that has variable font width. I already dumped the script and made a insertion tool, but now I need to change the width of some fonts.

The Rom has some free white space at the font graphics, so I was able to add some chars, like á, ã, í, etc... But when I print these chars they appears all togheter, with no space between them, so I need to change the widths somewhere inside the Rom.

I never did that before, so what is the best strategy to follow? What do I need to look for?

To change the fonts I had to set Tile Layer Pro to 1bpp, and each char are stored in two 8x8 blocks.


ROM Hacking Discussion / Help with Snes Pointers - HiRom and 6MB Rom
« on: October 21, 2012, 01:32:33 pm »
Hi, I'm having some trouble with Snes pointers.... I have a Rom with 6MB size and HiRom, and I want to change some texts. For example, one line of text starts at 0x52A9B2, so how can I find the pointer to this line?

I read that I need to add 0xC00000 to the address (when the rom is HiRom) and convert to little endian, so the address would be 0x52A9B2 + C00000 = 0x0112A9B2, and converting to little endian we have the pointer 0xB2A91201, but I cannot find this pointer. I tried several combinations, but I still didn't find the pointers.

How can I find the pointer. There is something different when the size is 6MB?


ROM Hacking Discussion / Question about expanding a Mega Drive Rom
« on: October 10, 2012, 01:11:43 pm »
Hi, I'm translating a Mega Drive game and I already found the compression algorithm (a huffman variant) and I already have the script dumped. I' m using Ida Pro to disassembly the game, but I'm starting now to change the code.

This rom has 2MB, and there is only a few free bytes at the end of the file. My question is: I want to put my new translated script at the end of the file, and I'll change the way the compression works, but this way the rom will have more than 2MB. Is this  ok or I need to do something special when the rom is expanded this way? Aparently all roms need to be multiple of 256k (or something like that), but is there a reason for that?

Is there some documents explaining this stuff? I'm a begginner in romhacking, and I have a lot of basic stuff to learn.


Newcomer's Board / What happened to Yonin no Translators?
« on: July 06, 2012, 03:07:57 pm »
Hi, the page is dead for a while. This group is dead?

I'm waiting for years for the Arabian Nights translation  :'(

Hi, the problem is, I want to play some Mega Drive games on the real hardware, like King Colossus, Secret of Blue Water, etc, but it's impossible.
The guys who translated these game inserted a region check to choose what language to use, based on the console region. I'm trying to undestand why someone could make a decision like that, because the games were already released originally in japanese, so why to keep the japanese language? This decision makes impossible to play the games on the real hardware, because there are only japanese cartridges, so we need to play on japanese consoles.
The solutions are to use a generic donor cart (I'll not do this), or to play on a emulator (I want to play on the real hardware).

So the question is, is there some easy way to make these games always use the english script?

Pages: [1]