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 - 4lorn

Pages: [1] 2
Help Wanted Ads / [Technical][PC Engine] Rabio Lepus Special Localization
« on: September 10, 2021, 02:17:23 pm »

Over the past week or so, I've been hacking Rabio Lepus Special in an attempt to localize it to English. The PC Engine version doesn't seem to get much love compared to the arcade version, but while I understand why this is the case, it's still a nice cute'em up, so I figure why not. I mean, the only thing stopping me is that I never hacked NEC's platform.

So, what changes have been made so far? For one, I've redrawn the title screen with the localized name of the arcade release in the US:

I've also managed to translate the level intros, and applied a slight shade to make the text more visible. It is white, after all, and smaller than the much larger characters initially used. Ideally, the letters would be outlined but there's not enough room for that due to how I've tried to take full advantage of the allowed 16x16 space.

We now come to the part that is missing:

1) Unfortunately, the text in the level intros is still shown as the original one: one 16x616 block at a time. While I have found the code that dictates when each character appears on screen, I have yet to locate what handles how long it stays there. So, I can make all characters appear simultaneously to counter the lower overall readability, but they still go away too fast - even faster if made to appear simultaneously.

2) The bigger issue, however, is... At the end of Levels 1, 2, and 6, characters will show up and thank Rabio for the rescue (they're the same ones as the arcade version: the Princess' sister, the King, and the Princess, but with much less revealing attire). But maybe I'm feeling a bit burned out as I haven't done much more recently than going back and forth through the ROM, but I still haven't found where nor how I might change the code responsible for printing the dialogue intermissions in the game. The dialogue refers to a set of 37 characters (including one which is printed on top of a letter on occasion) but uses 1 byte for 2 character combos.

On the other hand, not only do I know exactly where this dialogue is, the ROM makes no effort to conceal it - to the point I found it just by looking at it raw with a hex editor and recognizing the dialogue screen itself. Further, the code in this location is so malleable that one can easily extend the dialogue boxes without much of an issue. So in theory, armed with a way to insert single characters and with the dialogue I've translated, this could probably be done in half an hour's worth of editing and playtesting. I can also whip up a font for an English localization. It's just... I can't seem to locate it.

I don't know if other efforts to localize Rabio Lepus Special have been made, but it would be nice to see this finished. On request, I can provide the script, the codes for the JP dialogue, the dialogue screen offsets, and the timing code I've found.

EDIT: Now also posted on PC Engine Software Bible Forum.

Edit 2: I may have found the table. Looking into it now.

Edit 3: Table rewiring and script insertion is underway. All that's really missing is the timing code...

September 16, 2021, 11:46:05 am - (Auto Merged - Double Posts are not allowed before 7 days.)

Been working on this on my own for the last couple of days; everything seems ready to go, so I'm marking this as "Solved". Will playtest this as soon as possible, then release a patch.

Personal Projects / Chuka Taisen/Cloud Master - Redrawn Project
« on: November 16, 2020, 03:50:21 pm »
With several ongoing redrawn projects going on, figure I'd talk about an ongoing of mine as well.

Made by Hot B, the same guys behind Insector X, Chuka Taisen isn't the most popular NES game - it's not even one of the best ones - but I think it deserves a bit of a makeover. So far I'm still planning out most of the visuals, in the sense of figuring out how an idea might be applied to what I'm creating and what the tilesets allow, so there's not a lot to show right now other than the process of reworking the main character, Michael Chen.

(I'm not sure what size the image will be so here's a link to a 2x pixel perfect version)

Chuka Taisen also has an interesting thing going for it. It's the only NES game I know that has a sprite sheet repeated for each level. Instead of loading graphics from a single one, the game uses a sheet for the intro screen, then level 1, 2, 3, etc. This means you can have different visuals for each enemy per level - even Chen can look different from stage to stage. The bosses only have one sheet though, which is a pity. So if you ever wanted to make a romhack of a shooter featuring different characters per level, there you go.

More updates as soon as possible.

ROM Hacking Discussion / Text pointers in Avenging Spirit/Phantasm (GB)
« on: November 04, 2020, 05:26:26 pm »


Konami has released their Collector's Series through GOG on September 25, 2020 and it's been met with mixed criticism, to put it lightly.

Taken on its own, it's a nice grouping of some of the most defining games of the studio during the 8-bit era. But look beyond the surface and you'll find inconsistent files (the NES game Jackal is included but inaccessible in the program), a lackluster interface, problematic emulation and text issues still not fixed in the original games. Other problems, such as being locked at 640x480 resolution, a black screen when Alt-Tabbing which often forces players to quit the program and poor gamepad compatibility, are also present.

Not being a programmer I can't fix the technical issues. However, I did my best in other areas and am now sharing my work.

I've reworked the graphical interface, fixed several textual inconsistencies and typos in Simon's Quest and Dracula's Curse, and updated the manual. I also gathered a handful of old promotional material and commercials of the games, and took the liberty to create *.svg (Scalable Vector Graphics) files of the game's logos. As a "why the hell not?" bonus, I also made DVD box and disc templates for anyone who'd like to print these out in the event they'd want a physical release of this version.

I'd like to point out that while my work on the compilation itself is not extensive per se, it still involved editing the individual games' code to update the text, figuring out how the frontend stored images and then implement and test the changes. The improvements may not feel like they are very substantial but it took me close to a week to work them in - and if someone who's not a programmer could do it in a week, you have to wonder, other than erasing any trace of Nintendo from the games on display so they probably wouldn't have to pay them a dime, what Konami has been doing for the past 18 years, which is when they originally released this compilation.

The patch itself is provided separately from the optional content. Both can be downloaded from Google Drive. The patch can be downloaded from here (Clickteam installer); the optional content can be found here.

None of the above excuses nor justifies the money being asked by Konami, but at least it makes it nicer to look at, I hope. Here are the main differences (original on the left, edits on the right):


If you encounter any bug or any other issue, please comment on this thread. If you can reproduce the error, please specify the steps required to do so; if you can provide screenshots, even better. You can also drop me a PM here.

Also here's what's actually changed in the games themselves (image because I'm a dummy using tables in forums):

I would have submitted this to RHDN but it's not accepting PC submissions at this time, it seems.

ROM Hacking Discussion / Do Sega CD titles verify checksums?
« on: February 22, 2020, 06:57:36 am »
Hi. Probably a stupid question I'm sure, but I've noticed people took a liking to my Genesis Flink hack that removed the buildup walking speed, and some mentioned it would be nice to have a hack that did the same for the CD version.

So I went and did that this morning for US/EU and *.img/*.bin+cue variants, and it runs fine on emulators (tested with gensKMod_073 and Fusion 3.64), but I'm wondering if this would work on emulators that do not auto-fix the checksum and by association, on real hardware.

So as per the thread title, do they?

Programming / Need help finding a routine in Doom for the 32X
« on: December 18, 2019, 08:20:14 am »
Hi everyone,

I've been working on Doom for the 32X, originally as a simple translation project but after looking at the game's development I've been trying to fix some of its issues. I've succesfully fixed a number of bugs relating to enemies, maps and textures, and deleted multiplayer entities where applicable to reduce map memory (every kb counts) but I really could use some help figuring out how and where the game does the following:

1) If you don't know, the Doomguy will often look around - left, center and right - but unlike other versions of the game, the first series of animations will flip his hair around. Here's a comparison shot between the PC and 32X animations:

The 32X port is so far the only one to have this error displaying the Doomguy's portrait, and this flipping only occurs for the first set of animations (high health percentage). I've done what I could, from trying to do traces with Gens and comparing the final build with prototypes but I can't find how this is done. 0F @offset 20660 will display the 16 sprites in a 4x4 composite, and nearby offsets determine horizontal and vertical positioning but that's as far as I've managed to dig through.

While the *.wads (maps) can be extracted, edited and reinserted into the ROM through third-party programs, data such as fonts and the HUD are not extracted at all.

2) I'd also like to know if the item pickup text is actually programmed into the port but is simply forced to not be displayed, or if it's leftover code that isn't used at all. The text is easy to find, and I believe I have found the offsets as well, but any editing there will freeze the game on pickups so it's hard to tell. It would be nice to restore one of the main features of the game, though as far as fixing things the portrait is more important.

Thanks in advance! :)

Personal Projects / Doom 32X: Bugfixes, Changes and Translation
« on: December 14, 2019, 01:03:47 pm »
Not exactly a long lost jRPG with a cult following and lacking a decent translation for the past 20 years, but found myself revisiting the original and binge watching documentaries on it, so decided to poke at the game.

So that's a progress shot of a WIP portuguese translation of Doom for the 32x. While there are tools to extract, modify and import the levels, I have yet to find one that allows for editing the font, so I've been carefully editing it with Tile Molester (Sonic Molester seems to screw up the palettes). Besides, I believe the font and HUD are not extracted at all in the 32x version.

But I felt like doing more, so the JU version I'm working on right now has been edited to:

-Display the Exit and Poison signs, along with the UAC crates in portuguese;
-Display the HUD in portuguese, which still needs some revision for letter shading;
-Fix the unattainable 100% kills in E1M2 by moving the Imp behind the wall near the exit to the ground below;
-Fix the unattainable 100% kills and secrets in E2M2 by adding a door and sector to a cut off area housing the walled off items and enemies (I also textured the inside of that area, and closed a wall that led to the larger corridor that was yanked off the game);
-Fix the forward facing direction of the rocket sprite.

To do:

-Fix the Doomguy portrait flipping. Unsure how to proceed on this one since I haven't found if this is handled by code or is simply a matter of mirroring the sprite.
-Slightly tweak the HUD to resemble the original font.
-Fix the graphic for the C button option.
-Finish editing the main options.

To do maybe:

-Place the BFG and ammo for it somewhere in the later levels, but haven't decided where (suggestions are welcome). Besides, that's going to expand the rom slightly as adding the door and textures to EM2M did, which seems to have led to some slight corruption (which thankfully was easy to fix).

To do not:

-Restore the cut levels. Saxman already did an excellent job there and that's not what I'm aiming to do here.

ROM Hacking Discussion / A foray into old Sega PC game formats
« on: November 13, 2019, 01:54:58 pm »
Hi. Lately I've been curious about old Sega PC game file formats. By Sega PC I mean titles released during the '90's, such as Daytona Deluxe and Panzer Dragoon. Making these run is almost always a battle in itself, but some weeks ago I installed and looked into Daytona Deluxe's folders. There were numerous files with the extension BMP but none could be opened by any kind of image editor. With a hex editor, I looked inside and noticed the SZDD header.

It seemed familiar but I couldn't quite remember where I'd seen it before, so I did some digging. Turns out it's a simpler but weaker form of LZSS compression Microsoft used back in the day, primarily included in many Windows software distributions that used the InstallShield installation software (an example would be files named _INST32I.EX_ ).

For smart people (ie, not me), an SZDD file begins with this fixed header:

Code: [Select]
Offset Length Description
0x00 8 "SZDD" signature: 0x53,0x5A,0x44,0x44,0x88,0xF0,0x27,0x33
0x08 1 Compression mode: only "A" (0x41) is valid here
0x09 1 The character missing from the end of the filename (0=unknown)
0x0A 4 The integer length of the file when unpacked

The header is immediately followed by the compressed data.

And wouldn't you know it? The decompression is still available in modern day Windows through the Command Shell. To unpack something on your desktop, you'd use

Code: [Select]
C:\Users\USERGUY\Desktop>expand FILENAME.extension NEWFILENAME.extension
or to use one of Daytona USA Deluxe's file as an example:

Code: [Select]
C:\Users\USERGUY\Desktop>expand pressenterkey.bmp pressenterkey
The extracted file can now be read by any image editor that supports BMP files. Just be careful: the program will replace the original file if you expand it with the same extension. Also, you don't need to extract them with an extension - they'll open just like regular bitmaps in your editor of choice (my favorite method).

That's about half the battle, though: how do we compress it back? Well, it seems that while the decompression algorithm is still present (presumably for compatibility with old software distributions), there doesn't seem to be a way to compress it - not in the same way, at least. However, through the Command Shell, you can

Code: [Select]
C:\Users\USERGUY\Desktop>compact /c untitled.bmp
While it doesn't seem to compress the file as much, the end result can still be read by Daytona USA Deluxe. You'll note the file's thumbnail will also show two blue arrows indicating the compression:

And here's a proof of concept:

Not sure how the image handles transparency yet (note the slight pink outline) but you get the point. Something to look into in the future, perhaps. Also, sorry about the cellphone picture: the game doesn't like Print Screen.

So far, I've found this compression method present in Daytona USA Deluxe and Panzer Dragoon, though I'm still trying to catalogue all the games that feature it. SZDD is used for almost every file in these two games but some files are not images at all. Two other file extensions are present: MDL and TEX. The MDL files might be models (there's a YouTube video showcasing someone swapping/renaming the MDLs of the special cars and using them without having ranked 1st on all tracks). The TEX files, I assume they might be textures but have no idea of what - I suspect they may be the textures of the tracks (like advertisements and billboards; maybe the START you see on the above picture) or maybe even the cars.

Panzer Dragoon however, is a mystery to me. The same compression is present but I can't read any of the formats. Curiously though, there are files with a EVAW header, which I assume are just WAV format but can't be read right off the bat (Daytona uses the RIFF format for audio stuff).

Apologies if the info about this was common knowledge; I pretty much found this on my own and thought I'd share. Incidentally, has anyone ever looked into these kinds of files? This kind of thing might facilitate mods and translations.

Hi! Back in 2011, I began translating U.N. Squadron (SNES), but by the end of the year my computer crashed and I lost nearly all of my work on that. But! Fast forward to now and I realize some notes and a handful of graphical edits survived. This means I can recover lost work fairly quickly, but instead of starting the easy way, I thought I'd go straight for the biggest issue I had then.

U.N. Squadron has 4 difficulty modes: Easy, Normal, Hard and Gamer, with the last one only accessible in the Options menu, and by holding A and X on the 2nd controller, then changing the difficulty on the 1st controller. Upon finishing Hard mode (using no continues), the game shows you this message:

Those lil' sprites scroll from right to left, and cycle between 3 animations. It's a nice touch, and a nice reference to the arcade original. When you finish the game on Gamer mode, however, the message is different:

The pattern is still the same: animated scrolling from right to left, the difference being that "Thanks" just scrolls until it's gone and the post-game Gamer mode message will scroll until "Crazy" stays there on the screen.

I checked my notes and it seems younger me was right. "THANKS" begins at offset FC89, while "YOU ARE CRAZY" begins at FCA2. Now... Here's how it works.

Code: [Select]
F9 10 84 48 8F 21 11 46 49 10 21 F1 C5 4E 0E 21 12 24 C9 01 21 12 24 48 9E

Code: [Select]
88 E2 20 10 F1 F0 03 9E 11 F4 40 51 12 20 28 89 00 04 51 28 22 80 21 12 20 38 F1 E0 04 1E 38 41 00 21 12 20 44 89 00 04 51 44 81 00 20 E1 C0 44 89 F0 03 91 45 F1

"Thanks" uses a sequence of from H to S; when the 1st line is done, it moves on to the second line. By this I mean, F9 will draw a sprite on the top left coordinate of "H", 10 will do that on the top left of "A", etc. The coordinates seem simple but depending on the value, it's possible to actually generate an additional sprite next to an already existing one or remove it altogether. For instance, the 24 handles the second sprite counting down on the left leg of the N - but while a value of 25 would add a sprite below the diagonal leg of the N, a value of 23 would shift the original sprite once to the left *and* add the same pixel if the value were 23. The same method applies to "You Are Crazy".

Now, you might be thinking, "Wait. Thanks has 6 letters but you mentioned the sequence goes from H to S. That's only 5 letters. What gives?"

That's the issue I'm having: the "T" in "THANKS" and the first "Y" in "YOU ARE CRAZY" don't seem to be anywhere near the rest of the letters. Either the coordinates are trickier than I'm thinking, and/or there's a table and pointers somewhere but I can't find any pointers here because I'm not sure how the sequence is being read - if from the second letter of each message, if from the initial letters which... Are not there.

Any thoughts? If anyone needs save states before the sequence, I can supply Bsnes and snes9x save states. Thanks in advance! :)

EDIT: Solved, thanks once again slidelljohn! :)

Hi. I've just completed a translation of Mega Man 7 (SNES) and submitted it yesterday to RHN. The translation is based on the Restoration hack by SCD and rainponcho, which reintroduced text that was ommited from the NA release. This was the focus of my work - translating the main text, as well as the text that was reintroduced. My translation was rejected on the grounds that, being done over a hack, it must be submitted as an addendum.

However, on the Submission pages, the "Addendum" category states an addendum must be:
A hack that fixes bugs, improves upon, or revamps another author’s released hack. The resulting patch is intended to be a non-translation hack.

It's not an improvement as there are no gameplay tweaks/changes. It does not revamp anything, as the game remains the same, unless graphical edits to translate everything count as a revamp. The only bug fix is a formatting error present in the official NA version.

How should this be submitted? Thanks in advance.

Personal Projects / Mega Man 7 (SNES) - Portuguese Translation
« on: May 07, 2019, 05:48:41 pm »

Hi! This is an ongoing report for my Portuguese (Portugal) translation of Mega Man 7 for the SNES. I picked this up as a challenge and as a way to improve my romhacking and translation skills between other projects (in fact, there's no gamer demand for a portuguese translation, I'm just doing this for fun and learning).

So! After previous attempts toward the end of 2011 got show down when my hard drive committed digital seppuku, I kind of went on doing other things until the itch came back. At the time, I was hard at work translating Light Crusader, U.N. Squadron and Link's Awakening DX but lost all my work. I intend to go back to those games again (Link's Awakening in particular, which is gaining speed as far as text dumping and translation is concerned), but for now here's some stuff about the Blue Bomber's seventh outing.

Before I begin, I want to point out I am basing my translation off of SCD and rainponcho's Restoration hack, which brings back the random dialogues with Auto and Roll everytime Megs gets a new weapon.

What's done so far?

•Dialogue: ~98% of dialogue has been translated, including the one from Auto's shop, and the random Auto & Roll bits. I *think* the Megs/Wily dialogue at the end still needs to be rewritten.
•Graphics: There are two places where there are "Danger" signs, Slash and Turbo Man's stage. These have been edited to read "Perigo". Also, the "EXIT" capsule, and various menu bits ("NEXT", "Bolts", etc.) have been redone as well.
•Boss Pre-Text: In the JP version, every Robot Master has a small text intro, like "Don't Slip!" for Freeze Man, "Champ of the Roads" for Turbo Man, etc. This was what took me the longest to do, but it's done now!

What's missing?

•Intro: The main text is translated. However, the "IN THE YEAR 20XXAD..." bits are not completed yet, but are in progress (offsets and bytes are already mapped out). Like most text in U.N. Squadron, for instance, here Capcom uses two bytes - one for the lower part, and another for the upper part of a single "letter" (I'm sure other games do the same, but I'm speaking from hands-on experience only).

•Graphics: The font/sprites used for the Boss Pre-text have no "G" or "V"; I'll insert these in place of "Y" and "W", which I'm not using. Also, the apostrophe will be converted into the shape of an accute accent "´" - this will allow me to use it on top of I and E letters, and it'll double as the Ç extension 8) All hail Y pos.! :laugh:

Also, I only recently realized that if I'm going all the way, I should change the "READY" message at the start of a level, too. Working on that...

•A final, thorough revision: On a recent playtest, I've noticed a couple of formatting issues but am fixing those. One issue I'm having is with the "Got the Protoshield!!!" line, because there's not enough room for it in Portuguese, though I'll think of something.

I also noticed that the game has a problem with weapon names if there is a space between words. I noticed this with Junk Man's Junk Shield, which I translated as "Muro de Lixo" - the game prints out a dialogue arrow and doesn't budge until the player presses a button. I'm thinking of trading the space with some unused character in the tileset; hopefully the issue is fixed that way.

•Around two months after I started this, I only remembered the Password Screen *today*. I'l have to figure out to handle the "Error" printout...

Some notes, for those interested:

Thanks to DarkSamus993, I understand now that the game uses a 4 byte sequence for X pos., Y pos., tile index and tile properties (with an additional byte at the start of these strings to determine the number of sprites) for the Pre-Texts.

For some reason, Capcom decided to write these backwards and also chose to mess up their order. As an example, Spring Man's stage intro is "BOYOYON PARADISE", but it's actually spelled out "BOYOOYN PRAADIES" - and in reverse to boot, with the X pos. determing the correct order (why it made sense to them this way, I have no idea). This sequence is loooong. Not sure of the exact number of bytes now, but here's a table:

Code: [Select]
CLOUD MAN NAME   | 9E5FC / 9E63C  |   FCE5    |       75F47      |                          |
CLOUD MAN TEXT   | 9E63D / 9E671  |   3DE6    |       75F4A      |          0D (13)         |
JUNK MAN NAME    | 9E672 / 9E6AA  |   72E6    |       75F4D      |                          |
JUNK MAN TEXT    | 9E6AB / 9E6EB  |   ABE6    |       75F50      |          10 (16)         |
SHADE MAN NAME   | 9E6EC / 9E72C  |   ECE6    |       75F53      |                          |
SHADE MAN TEXT   | 9E72D / 9E771  |   2DE7    |       75F56      |          11 (17)         |
SLASH MAN NAME   | 9E772 / 9E7B2  |   72E7    |       75F59      |                          |
SLASH MAN TEXT   | 9E7B3 / 9E7EB  |   B3E7    |       75F5C      |          0E (14)         |
BURST MAN NAME   | 9E7EC / 9E82C  |   ECE7    |       75F5F      |                          |
BURST MAN TEXT   | 9E82D / 9E871  |   2DE8    |       75F62      |          11 (17)         |
TURBO MAN NAME   | 9E872 / 9E8B2  |   72E8    |       75F65      |                          |
TURBO MAN TEXT   | 9E8B3 / 9E8EF  |   B3E8    |       75F68      |          0F (15)         |
SPRING MAN NAME  | 9E8F0 / 9E938  |   F0E8    |       75F6B      |                          |
SPRING MAN TEXT  | 9E939 / 9E975  |   39E9    |       75F6E      |          0F (15)         |
FREEZE MAN NAME  | 9E976 / 9E9BE  |   76E9    |       75F71      |                          |
FREEZE MAN TEXT  | 9E9BF / 9E9E7  |   BFE9    |       75F74      |          0A (10)         |

For a while, it was a daily crawl of making sure it was taking up the correct space and that the pointers were all right, alt-tabing between 6 notepads with notes/tables/tile values, firing up an emulator, loading the game, inserting a password so I can skip the intro or have access to the 2nd Robot Master tier, choose a stage, watch an intro, die inside, save a screenshot, open it with an image editing program, count the distances in pixels so I could adjust the X pos. accordingly, edit the hell out of the hex, rinse and repeat.

I'll post the offsets for the Weapon Names in the menu and the Intro text at a later time. For now, here are some screens.

And some of the Pre-Texts:

You'll note I'm using the all caps font, but I intend to use smaller caps due to size constraints. After translating Mega Man II, I took it a bit hard on myself for crunching down the letters and want to avoid that from now on.

More updates as soon as possible!

May 09, 2019, 05:34:28 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
No news just yet, but since I said I'd share the Menu Weapon Names and Intro offsets...

My notes are too messy and largely written around what I need to know so my apologies if anyone tries to hack or translate the game, and chances upon something not covered here.

To sum it up, Weapon names in the menu start at Offset 9790 and end at 9AD4. The first part of the sequences is always comprised of 18 bytes that determine the position of the weapon graphics; the remaining bytes vary in length and indicate the weapon names. As an example, here's the Mega Buster at 9790:

Code: [Select]
      | M     .     B     U     S     T     E     R
86 00 5D 34 5D 74 01 00 C6 00 5D B4 5D F4 01 00 0E 01 | 88 2C 2A 2C 38 2C 4E 2C 4C 2C 4D 2C 3B 2C 4B 2C 00 00

Every sequence ends in 2C 00 00.

The weapon name Offsets, on the other hand, start at 9750 and run until 976D (there are a handful of pointers afterwards, but I'm not sure what for; possibly for the second page of the menu?), and of course use 2 bytes:

Code: [Select]
90 97 B4 97 D8 97 F8 97 1C 98 3E 98 5E 98 80 98 A0 98 C0 98 E4 98 08 99 26 99 46 99 62 99
The order of the weapon names is (as expected now of this game!) slightly different from the order they appear on the menu:


Anyone interested in changing the weapon names can use this small table:

Code: [Select]

Please note that some tiles are composites. By this I mean that, if you look at the picture below, you'll notice things like some letters shifted 1px to the left. This is because Capcom grouped some tiles this way to save space and to make the distance between certain characters seem more well rounded ("I" being an example, as it used in stuff like "SHIELD"). The tiny lines next to all "I" characters are actually the first pixel column of the next letter that's missing a pixel column, so you get the idea:

Also note, I found no G, K, Q, V, X or Y characters for this alphabet.

As for the Intro, it uses two bytes (upper and lower part of a letter) and much like Boss Pre-Texts, it's written backwards! Quelle surprise!

Code: [Select]
From A4E35 to A4DC9 = IN THE YEAR 20XXAD
From A4E5A to A4E3A = BUT...

Values are as follows:

Top byte:    00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F  20  21  22  23
Letter:      A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   R   S   T   U
Lower byte:  10  11  12  13  14  15  16  17  18  19  1A  1B  1C  1D  1E  1F  30  31  32  33

I know there are two "X", which I didn't list. The value is 40 but it seems to repeat the letter, so there may be some instruction to do it. I'll have to test that one out eventually.

Programming / Help with translating Mega Man VII (SNES)
« on: May 04, 2019, 08:36:06 am »
Hello, everyone.

SCD suggested I post my issue in the Programming forum, so here goes...

I'm in the process of translating Mega Man VII (Snes). I'm currently using the Restoration patch from SCD and rainponcho for the extra dialogues between Auto and Roll, and the Boss pre-text. So far I've managed to map out on my own everything I needed in order to go ahead with the translation, including the offsets and order of the intro text, offsets for weapons names in the item menu, and offsets for the Boss pre-text as well. The dialogue and shop text only needs one more revision, and graphic editing is done and waiting insertion. However...

First, I found out that for some reason, the intro and the Boss pre-text are written backwards. Which is strange but fine, I guess? I only need to be careful to change the text backwards as well. But the main issue I'm having is with the Boss pre-text. Here's what I mean:

This is a picture of Geiger'd debugger running a small table file I made. In the middle, you'll see Slash Man's intro text.You'll note it's written in reverse and with a mistake: it spells out "URJASSIC JUNGLE", whereas in game it's spelled properly. There are other examples: AWTCH YOUR STEP (Cloud Man), BOYOOYN PRAADIES (Spring Man's "BOYOYON PARADISE"), etc. I also noticed that of all the Bosses, Turbo Man is actually written Man Turbo but the game prints out the name correctly.

I could live with that but if you look closely, in these text intros, there is no byte for an empty space used to separate the text. In other words, for instance, I couldn't edit Freeze Man's intro to be one single word because the game would split it up (like it does with DON'T SLIP!). For this text, the game follows a 3 byte for formatting + 1 byte for letter method, but I have yet to find anything along those 3 bytes that would count as spaces. The intros also include bytes for apostrophes and exclamations, but none for an empty space. I can only assume there's some table and instruction, somewhere, telling it to print out that way but... I've been prodding at poking at the ROM close to a month now, and can't find it.

I ran a comparison between a clean US ROM and one with the Restoration patch applied, and one with other patches that only bring back the intros. I've found some different sequences, of course, but I can't make heads nor tails of these either, and I'm not sure they're actually changing how the text is printed. So far messing with them only seems to trigger flashing text, the text or the Boss not appearing, crashing, or a combination of all. And I'm terrible at debugging - at least I have been with this game -_-

I have thought about taking advantage of the existing spaces but I've checked and checked, and it would turn out to be a terrible or nearly impossible translation. Ideally, I'd need the game to not force an empty space, or at least understand *how* it forces them so I could manipulate it into allowing me to place another character there...

Other than graphic insertion and text revision (and playtesting, of course), this really is the only thing that's missing... Hopefully someone can kindly help me out... :) Thanks in advance!

PS: I've included below a picture that shows how and where the Pre-texts and Boss names appear (just right-click and choose to see the picture, it'll be full size). Once again, please note they're in reverse. I'm sorry the picture is a bit messy but in short, the text highlighted in light blue is the Pre-text, while the red dots are the upper and lower bytes for Boss names - their names aren't entirely mapped out in the pic because I am not changing those, but they're easy to understand.

Edit: Solved, thanks to KingMike and especially DarkSamus993! :) Translation's already uploaded to RHDN, too!

Newcomer's Board / How do you decide what to translate? (Also: fonts)
« on: April 26, 2019, 04:57:26 pm »
Hi. I've been thinking about some aspects of ROM translations, from what to translate to the visual result, specifically regarding fonts.

Yesterday, I submitted my first ROM translation, which is still pending approval. I wanted to work on something fairly quick and easy in between my other ongoing translations, so I picked Mega Man II for the GB. I'm somewhat proud because I managed to get by "on my own", so to say. All text (intro, password and ending screens done, weapons - including initials - done, "You Got" screens done as well) and graphic editing (for fonts) is done. But after submitting, two things started creeping up on me.

The first has to do with manipulating fonts, and what constitutes a "good" job. For instance, the title screen was changed to this:

It's a Portuguese (from Portugal) translation. On one hand, I feel pretty good about including additional characters - there's a fair number of translations that don't go the extra mile and seem to prefer quantity over quality, though I won't go into which games/translations/translators do it (that'd seem like finger pointing and just plain rude). So, a portuguese reader will understand what's on the screen, instead of having to guess.

On the other hand, MMII is the kind of game that uses all caps fonts. Among others, English has that advantage - there's largely no need for punctuation like tilde, carats, etc. The fonts can be big, bold; they take full advantage of a tile. Portuguese, Portuguese Brazilian, French and Spanish, for instance, have no such luck. In my case, I tried to keep the font as pure as possible but characters like Ã, Ó, Í and Ç were necessary (no Portuguese translation can call itself good or even complete without à and Ç, actually - common english words like "action", "embrace", "exception", "description", even "emulation" need one of them, or both, when written in Portuguese).

But not moving away from the font means cramming things into that tile space. Keeping the font as is and punctuating resulted in the usual squishing of letters. Of that, I'm not proud, but at the time I had no idea how to solve it. Yet, I've seen different opinions regarding this, with some clamoring for making the best of the original font, keeping its proportions, and so on; while others suggest making a new font, or inserting/replacing a small case font, even if it doesn't quite achieve the original effect. One of my ongoing translations has that problem, too - or, it will be a problem once everything's done, because it uses caps everywhere, and I'll have to choose between funky or small letters (and I actually like the all caps font in the game I'm working on...).

Another thing that popped up is what exactly do you decide to translate. In many cases, a simple transference of nouns and proper names doesn't work. Sure, John, Phillip and William have a corresponding version. But imagine someone called John Blow - a direct translation to Portuguese would sound just as silly as it might sound in its English form (and trust me, in the time it takes you to remark "Ah! Blow!", an average Portuguese guy would have already made 23 "jokes" about blowing). In the case of MMII, I decided not to translate Robot Masters and enemy names, nor did I translate "password". Password is so ubiquitous everywhere, including in Portuguese, that it didn't seem necessary. When it comes to Robot Master names, they're meant to be silly, but in a kind of videogamey way - translating them would, I think, lose the videogamey aspect and just go with the silly. And enemy names... The Japanese originals have some puns which the English version misses most of the time.

So, apologies if this is too long already, but to summarize, what are your thoughts on these two aspects?

ROM Hacking Discussion / Metroid Fusion Menu Changes
« on: March 23, 2019, 05:56:19 pm »
Hi. I'm trying to translate Metroid Fusion, in particular things which weren't handled in the official european releases of the game.

I've already worked through all of the game's main text, and even managed to add myself to the credits, but I'm having issues with Fusion's menu. Specifically, the weapon/suit tabs. I added one letter right after "BOMB" but I realized the empty space is actually repeated in the "SUIT" and "MISC." tabs:

I already found the pointer to the compressed graphics in the menu and there's enough unused space there to fit it all, though I'm unsure how to solve this. I don't know if there's an instruction to repeat the tile or not (and if there is, how and where do I find it - before the pointer or right in the middle of these graphics?). Also, some powerup names are clearly not going to fit...

Can anyone suggest the best way to handle this? An example to kickstart this (a method, a different tool, etc.) would be appreciated :)

Also, tools being used: MAGE, HxD, NLZ-GBA, Tile Molester, and mGBA.

Can anyone experienced in using Stake explain to me how enemy placement works in the editor? I've read the documentation that came with it but I can't seem to modify it. I was thinking of changing some level layouts but some of these would require that enemies appear in different places or heights, but so far, nothing seems to work. The same applies to breakable blocks - none that I place in a level seem to appear (and I'm aware of the 5 per level limit) :(

EDIT: I've worked out the breakable block issue, so far.

Newcomer's Board / Some questions on hacking Megaman 1
« on: September 19, 2015, 11:31:27 am »
Hi. As a personal challenge in terms of pixel work and level layouts, I recently began working on a small hack for the original Megaman on the NES. So far, I'm planning and drawing level flow and tiles. As it's primarily a visual hack, I don't plan on changing much how the game itself works (I had some ideas - energy tanks, moving platforms - but I'm starting first and foremost with what I think I can do better, as ASM is way ahead my knowledge). After downloading the RockAndRoll editor, I was somewhat excited with the editor's potential (still am), but the Help file indicates that:

"Virtually every level in the game shares a bank with another level. That means there is less free space to work with for things like scroll data, room order lists, and sprite changes."

Does this mean there is a hardcoded limit to how many rooms can be created, or a "safe" limit wherein one can exceed the number of rooms but only cautiously so?

Also, how recommended is it to extract and reinsert tiles with something like TileLayer/Tile Molester, versus directly editing them (and their palettes) through the editor itself?

Thanks in advance for any help :)

Personal Projects / U.N. Squadron - Portuguese Translation
« on: December 08, 2011, 03:14:24 pm »
I wasn't too sure about doing a project page for this. I get the feeling there's - deservedly - more attention regarding certain types of games (RPGs) and language translations (Japanese to English, and rightly so, since it requires a lot more work). In any case, here's my attempt at translating U.N. Squadron into Portuguese.

So far, I've mapped the tilemaps Capcom used for their alphabets, the ones used in the intro and after missions ("This is just the beginning...", which are 8x16), and in the MAINTENANCE, GAME OVER and MISSION CLEAR text (which are 16x16). Regular text is, uhm, regular. Nothing to worry about there other than translating weapon names and descriptions while retaining their context and application, along with creating an accented font (already done) and inserting it properly (done once, but reverted back to the original once I realized all the japanese names in the credits used k, x, y, z, etc. -_- ). With that in mind, here are some screenshots (as before these don't include a modified font yet):

Title screen

"Please Select Player" changed to "Select Your Pilot" (in Portuguese)

One of my concerns was the MISSION CLEAR readout, as it translates into MISSÃO COMPLETA. "Missão" is smaller than "Mission", so I just replaced the original. COMPLETA is obviously longer, but I've identified the bits that govern the message's screen position and length. I'm not sure if Capcom had something else in mind when they did this, but a couple of them let the text go beyond its apparent limit (the "!" in "CLEAR!"). I've yet to find out how far it can go, since I was too extatic just figuring out it could be done and didn't test it further.

Of course, doing so requires extra space, which I've managed to track at 806D, reserved for a Debug Menu. I don't think this will be an issue if the project is ever finished - my objective is to translate the game from a player perspective, so the absence of, or tampering with a debug mode doesn't really come off as detrimental to enjoying the game. And it's comfy enough to place the things I wanted the most.

Missão Completa

I didn't took into account the fact missions go up to 10, and that the extra mission is labelled EX. Because of this, I'll either move Missão forward, or Completa backwards so it lines up better, though Completa will seem misaligned in... the first 9 missions >_>

Only problem with that so far is that if I crash the plane and lose the stage, the pilot's picture becomes garbled as it fades away. At first I thought it was because of me tampering with the Score and Level readouts, but it turns out it's because of this. More things to fix, eventually!


Having "Pontos" display instead of "Score" is done now, thanks to KingMike, Gideon Zhi and Mauron's help. So I no longer feel like a stupid cow, but neither do I feel like a smart one either. Just a regular cow, I guess.

Options Menu

The Options menu biggest hurdle was dealing with a pet peeve of mine. In the original, "S.WEAPON" began two tiles before VULCAN and CHANGE. I've lined them up now, but I'm not too fond of the fact the text becomes misaligned by one tile with "Controlos". But it works so far.


Also done is the EXIT image in the shop. I'm not entirely pleased with it at this point; I'm thinking of shortening the A by one pixel column and enlarging the S by the same margin, and remove the R's lower right extension. These were based on one of Capcom's own alphabets in the game (much like EXIT seems to have been). Meanwhile, these are test runs for the alphabets (some positions will have to be readjusted):


I've also stumbled on what seemed like palette values for the HUD, and, either I was losing it at 3 AM or I stumbled on an offset that toggles enemy speed/aggressiveness regardless of difficulty. I'll try to test those later on, though.

What's missing:

*The "Press Start" message during the demo. Shouldn't be a hassle now, but I've yet to look into it properly.
*The "YOU ARE CRAZY" message when you finish the game in Gamer mode. Still unsure how hard it will be; it's basically the unicorn coming from the right followed by a stream of tiles forming the words:

*Fixing those garbled tiles on pilot picture fadeout.

December 13, 2011, 12:32:58 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Quick update:

I've had very little time to work on the game during these past few days but yesterday, while trying to track that message after the credits in Gamer mode, I believe I've solved the problem with the messed up tiles.

I felt like playing the game for a bit, see how the changes I've been gradually making were panning out but then I noticed it refused to play the demo. I went back and did some comparisons with previous versions and the earliest version where the demo was inaccessible was right after I repointed the HUD text to the Debug area in the Rom.

A quick file comparison between that and the original Rom and apparently, the problem was with a single byte I overlooked when overwriting the Debug area (so it wasn't caused by realocating Mission Complete, but was marginally related with realocating Score). Instead of a 00 at the end of it, as it should be, it was 0B. Once I sorted that out, the pilot's picture fade after crashing the plane no longer has any problem and the demo was once again rolling. It's fixed (until I break something else, eventually!).

I'm as green as they come, but I'm loving this.

I guess desperate times call for desperate measures. As I've explained before, I'm trying to add one single letter to the "SCORE" readout of UN Squadron. I thought I had it down, but it took me a bit to realize I didn't. So I tried using ASMDEV to see what instructions were being loaded during the game, and I was wondering if my gut feeling (a poor replacement for better ASM knowledge, I know) was right.

Here's the relevant snippet, with notes I took (sorry for the mess, was typing them as I found them):

Code: [Select]
8F96 -   930A - STA ($0A), y             // Store accumulator to memory
                                                                               (but it's indirect - is it storing 0A to
                                                                               different addresses? maybe it explains
                                                                               why SCORE and LEVEL have the same acc.
                                                                               (also, repointing this to another offset
                                                                               without the STA opcode doesn't seem to
                                                                               carry any problems, but it still requires
                                                                               the acc. value).
8F98 -   20414C  - JSR $4C41 // Jump to subroutine
                                                                               (4c 41 define horizontal/vertical position)
                                                                               (20 also defines where "SCORE" begins)
8F9B -   5343 - EOR ($43), y         // Exclusive (or accumulator)
                                                                               (53 43, beginning of "SCORE")
                                                                               (why isn't 53, the "S", mentioned first?)
8F9D -   4F52450A    - EOR $0A4552          //        "       "
                                                                               (4f 52 45, middle/end of "SCORE)
8FA1 - 204F4C - JSR $4C4F // Jump to subroutine
                                                                               (4c 4f define horizontal/vertical position)
                                                                               (20 also defines where "LEVEL" begins)
8FA4 -   4C4556        - JMP $5645 // Jump to location
                                                                               (4c 45 56, beginning/middle of "LEVEL")
8FA7 -   454C - EOR $4C // Exc. OR Acc.
                                                                               (45 4c, end of "LEVEL")
8FA9 -   0220          - COP #$20 // Coprocessor Empowerment (causes interrupt)
8FAB -   8F4C2402 - STA $02244C // Store acc. to mem.
                                                                               (4c defines screen position; 24 indicates $)
8FAF -   2487      - BIT $87         // Bit Test (this toggles horizontal pos.)
                                                                               (is it testing against the accumulator?)
                                                                               (87 defines horizontal position of scores)
8FB1 -  4C3002         - JMP $0230            // Jump to location
                                                                               (location 0230?)
                                                                               (4c defines screen position; 24 indicates $)
8FB4 -   2496            - BIT $96          // Bit Test
                                                                               (96 is another position parameter)
8FB6 -   4C3000         - JMP $0030 // Jump to location
                                                                               (jump to location 0030?)
8FB9 -   0624            - ASL $24 // Left shifts Accumulator, Memory
                                                                               (performs a shift left with... 24?)
                                                                               (06 as unknown as 02)
8FBB -   98                - TYA                       // Transfer Y to accumulator
                                                                               (98 is another position parameter)

As you can see, some things aren't clear to me. I'm assuming the first values of all lines are opcodes. But that would mean that in 8F9B, a 53 ("S") is actually required, so a "P" (a 50) would change that to a Branch. Unless that has no effect if there isn't some other required opcode following it, because I did made that change without a problem. It's also not clear to me why it needs to interrupt the processor (8FA9) - is it because it's dealing with a new value to store?

What, if any, optional code might help me here? I was thinking maybe of trying a different STA code, to take into account that one word will be bigger, but I can't think of a way to do this without making the lines even bigger, thus breaking the formatting again. Or a NOP, but then this doesn't seem like it would work either.

Newcomer's Board / UN Squadron - Couple of translation niggles
« on: November 19, 2011, 08:03:41 am »
Welcome, again, to another small problem I'm having. After finishing Light Crusader as far as I could, I've begun translating U.N. Squadron for the SNES to Portuguese. With some learning, testing and hard work, I can safely say I'm very close to a finished build - or getting it underway as soon as I understand something.

So far I've managed to track down, learn and successfully modify, the following things through debugs and some perseverance:

Intro text and end mission comment tilemaps
Mission briefings
Store dialogues
"Danger" and "Extinct" warning signs when hit by enemy fire (just graphic editing)
"Maintenance" (Option Menu) and "Mission Clear" tilemaps
Most locations and output of weapon names in-game
"POW" in-game readout (just graphic editing)

Those are the good news, in terms of personal achievements and getting things done on my own. I've hit two snags, however, and was wondering if anyone could tell me how to better understand what I'm dealing with.

The first problem is, of course, text that simply won't fit but must be used. At this point, there is only one instance where this occurs - "SCORE", which translates into "PONTOS".

I've been tracking most of these things with a combo of Virtual SNES (problematic, since it sometimes works and other times simply refuses to boot up, and I have no idea why, and yes it's the latest version) and Snes9x's debugging features. After some calculations with Lunar Address and Snes9x, here's what debugging tells me regarding ALSCORE (which is how the game stores the name; Level is OLLEVEL, btw):

$00/CEA9 BD 02 00    LDA $0002,x[$01:8F99]   A:0080 X:8F97 Y:0028 P:eNvMxdIzc

What I'm getting is that, it's loading a value (02) from X (8F97). This is where I'm stumped, since - assuming what I'm getting is true - I can't understand what, if anything, at that offset is handling text start and end, or even size. I might not even be near the right offset, since UNS is LoRom, and there are slightly more calculations required there.

The second problem is the "EXIT" panel in the store, as the last panel is nonexistent. The game is giving an instruction to repeat the previous tile in the series (the bottom part of "I") in the last one (which is the bottom part of "T", as both are graphically identical). I've seen this used in other main screens in the past, and couldn't quite get how to change that. It seems in this case, I'd have to draw a tile myself with the necessary word, then suppress/redirect the instruction and point to that.

Any ideas/suggestions/advice?

Newcomer's Board / Possible transparency issue with Tile Molester
« on: October 24, 2011, 03:40:32 pm »
Hi, i'm having a slight issue with some graphics editing. The game is Light Crusader for the Sega Genesis. I combed the ROM file with the editor to find the maps icons for Castle and Basements (B1, B2, etc.). The original image is this:

After the edit, the image became like this:

I made sure to use the dropper tool for every relevant color (IIRC there were two blacks, both RGB 0,0,0; but I only chose the one on the image itself), switched to Genesis palette before doing it, did no copy & pasting of images, and made the edit in one go (instead of editing, saving, quiting, and so on). Any idea what I might have done wrong?

Thanks in advance :)

EDIT: Not sure if this is relevant, but the ROM file was in *.bin format. It's pretty much the standard format of the game online. Would changing it to SMD do anything? I remember the last Bin to Smd conversion I did screwed around with ROM info (as in, the game would work normally, but its code was using entirely different characters and such).

Pages: [1] 2