+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Bard's Tale - Text Editing
Pages: [1]
Author Topic: Bard's Tale - Text Editing  (Read 2 times)
BT
Guest
« on: May 20, 2008, 07:29:42 am »

A few days ago I started looking into Rom hacking. I know very little, but I'm trying my best. I'd like a little help.

I am currently trying to edit text in the NES version of Bard's Tale (1st one). I basically only want to rename the classes. I was told to get an emulater such as Nesticle, FCEu or any other emulator that allows one to view pattern tables. I did this, and I then went to the PPU Viewer mode of FCEu. It showed me numbers, an alphabet, etc. I moused over all the numbers and letters in order to find their hex code (I think that is what it is called), and I made a table (.tbl file) such as AC=S, 99=9 and so on like I was told.

I then opened the Rom with A.X.E editor and tried to find the word Sorcerer, SORCERER and ACC3C5B6B8C5B8C5 with no luck. I merely want to replace a few class names in the game with names of my own, but I am apparently lacking the necessary skill. Any help is appreciated.

P.S. I gave you the above information based on my most recent attempts. I've actually tried several emulators, hex editors, how-tos on Rom editing and whatever else. Guess a few days isn't enough to grasp it all or something. :S Sad
akadewboy
Guest
« Reply #1 on: May 20, 2008, 05:27:56 pm »

If you look at the Sorcerer text, it looks strange, that's because most of it doesn't use the standard font. Here's a picture:



I circled the tiles that "Sorcerer" uses in green. The hex value of these tiles is ACDFE0E1E2
BT
Guest
« Reply #2 on: May 20, 2008, 07:14:48 pm »

lol Well, that was simple enough to know. I did notice the "orcerer" and "izard" and such, but I didn't think that it meant those words were not formed from the regular font or alphabet.

I found your string (ACDFE0E1E2), so now I'm just messing around with how to edit it. I put regular letters in the ASCII side (think it is called that), but that obviously didn't work... lol Anyway, I'll mess with it some time longer then say something here if I need more help.

Thanks a lot!
« Last Edit: May 20, 2008, 07:34:33 pm by BT »
KingMike
Guest
« Reply #3 on: May 20, 2008, 07:33:20 pm »

AXE doesn't support ROM tables, at least the old version I'm using (2.0, downloaded when it was freeware) doesn't.
Use WindHex.
BT
Guest
« Reply #4 on: May 20, 2008, 07:44:18 pm »

Yeah, I'm using WinHex now. I'm simply finding and replacing class text with text of my own. Seems to be working. Cheesy
Kitsune Sniper
Guest
« Reply #5 on: May 21, 2008, 11:22:08 am »

...

Squishy tiles? That damn game uses SQUISHY TILES?! o_O
Karatorian
Guest
« Reply #6 on: May 21, 2008, 08:01:27 pm »

From the screenshot posted above, it looks like it only uses squishy tiles for the class names.
BT
Guest
« Reply #7 on: May 22, 2008, 12:15:22 am »

Does "squishy tiles" refer to the fact that the class names are on fewer tiles than they would be if the standard alphabet in the game was used?

I know when I went to replace the class names, using the alphabet from the game, I couldn't use as many letters. Sorcerer (8 letters), for example, took up uh... XX XX XX XX XX..that much space which was only enough space to put five letters of my own. Like, I couldn't put Conjurer, but I could put Druid. Wizard was worse...XX XX XX..a three letter class name is tough to come up with. lol Of course, I'm sure some of the other class names (Bard?) would be worse...unless it is possible to mix regular tiles with these "squishy tiles."

Ok, that's all.

Expert Newbster
Disch
Guest
« Reply #8 on: May 22, 2008, 09:42:31 am »

Quote from: BT on May 22, 2008, 12:15:22 am
unless it is possible to mix regular tiles with these "squishy tiles."

This most likely possible.

Hopefully this will clarify things rather than confuse you more.  If it confuses you, disregard what I say:

The NES doesn't know what letters or words are.  All it does is draw specific tiles at specific points on the screen.  Likewise, the game doesn't really have "words", per se.  Instead it just has a set of tile ID numbers which get drawn.  This is why you need table files for text editing -- the actual "text" isn't really text.

The graphics of these tiles represent letters, so the end result is that it looks like words are on the screen.  For example... if the game tells the PPU to draw the hex string:  "AC DF F0 F1 F2" -- the PPU would just draw the graphics for those tiles.  Now, if you look at the pattern tables in FCEU (that PPU viewer), you'll see that tile 'AC' has a graphic for the letter 'S', and DF,F0,etc are the squished 'orcerer ' tiles.  The end result is that the tiles drawn onscreen look like the word "Sorcerer "

If you were to, say, change the 'F0' in that string to 'AD', you'd find that the squished 'ce' tiles (tile F0) would be replaced with a wide 'T' tile (tile AD), and thus it would look like "STcerer "

So if you wanted to change 'Bard' so that it doesn't use squishy tiles, you'd find '9B DD DE' ("Bard " with squishy tiles) and replace it with '9B B4 C5 B7' ("Bard" with normal letter tiles).  The problem with this, of course, is that the latter is 4 bytes, while the former is 3 bytes, so you'd need more space, and you'd probably have to do some pointer manipulation if you have to move things around to get that space (but that's another topic)
syntax error
Guest
« Reply #9 on: May 22, 2008, 12:32:29 pm »

A reason for this unusual encoding is that Bards Tale is from the USA while most NES RPGs are from Japan
and you see numerous problems from the programming side(concerning text).
They found a interesting way to fit more texton screen through combining several letters.
This game was also released on many other systems that mostly had bigger screen resolutions like 320x200.

Also interesting is the simple event encoding of Ultima V and Ultima VI that had event commands
stored in the printed text and no "printf" like command.
CaseCrash
Guest
« Reply #10 on: May 22, 2008, 12:43:10 pm »

This isn't really much of a problem for your Sorcerer -> Conjurer example (as they're both 8 letters, or rather that Conjurer isn't bigger than Sorcerer).

I found the letter graphics easily enough with Tile Molester (1bpp planer, about halfway down) although I had to use the 'back byte' button twice to get them to align properly:


as you can see this is just a simple graphics hack to something like:


and then changing your ACDFE0E1E2 to 9CDFE0E1E2 so that the S is now a C.

This won't be quite as easy if the new class name is larger. That will take some working with pointers and such as Disch said.

EDIT:
Went ahead and tried this out, and it worked:


although there was another ACDFE0E1E2 in there that might mean nothing, or it might be a different display somewhere. Did this help at all?
« Last Edit: May 23, 2008, 11:50:11 am by CaseCrash »
BT
Guest
« Reply #11 on: May 25, 2008, 02:47:33 am »

Well, I didn't have Tile Molestor, so I'd have to get that. Otherwise, changing S to C doesn't get me from Sorcerer to Conjurer, far as I can tell. I'm guessing the program allows me to do other alterations that would change the "orce" to "onju" without taking up more space.

Thanks for the information. I'll look into it.

Edit: I downloaded Tile Molestor, Java when textually prompted then I didn't know what to do. I was accepting some application icon, but I didn't see one. Do I open the game first or what? :S
« Last Edit: May 25, 2008, 04:25:59 am by BT »
Disch
Guest
« Reply #12 on: May 25, 2008, 08:50:21 am »

Java executables are .jar files.  If you double-click the .jar file it will start up and run like a normal exe.
Sliver X
Guest
« Reply #13 on: May 25, 2008, 12:34:10 pm »

Assuming he even has the JRE installed. I believe MS had to remove their built in JRE clone as of Windows XP.

But yeah, YY-CHR will work just fine for anything NES related:

BT
Guest
« Reply #14 on: May 25, 2008, 08:12:28 pm »

I downloaded YY-CHR, and it worked well. I modified two class names with it and modified a lot of text in game with WinHex.

Thanks again for the help. Cheesy
Pages: [1]  


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