+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Looking for a collaborator on Nakayama Miho no Tokimeki High School (FDS)
Pages: [1]
Author Topic: Looking for a collaborator on Nakayama Miho no Tokimeki High School (FDS)  (Read 855 times)
Alcy
Guest
« on: January 08, 2007, 04:05:25 pm »

I can do the translation, but I'm not that great with scripts - I keep running into problems with the dictionary compression, and I don't know how to change pointers. Anyone interested and good with this, contact me, I'll send you what I've been working with.

Also, if anyone knows the solution to the conversation where Miho skips rehearsal to see you at the cafe, please let me know. I think this is the last scene, but I don't know how to get past it, and want to be able to check text in this area.

Hopefully I put this in the right area...
Alcy
Guest
« Reply #1 on: January 08, 2007, 04:06:11 pm »

I could also use some help with a title graphic.
Nightcrawler
Guest
« Reply #2 on: January 08, 2007, 05:20:54 pm »

Mind being a little bit more specific about the problems you are encountering?

Why was this in the Community Project Board?
Kitsune Sniper
Guest
« Reply #3 on: January 08, 2007, 06:26:28 pm »

Hey, I remember you... didn't you have some translations on your website a while back? I think it was a Crayon Shin-Chan game.
KingMike
Guest
« Reply #4 on: January 09, 2007, 12:07:51 am »

Quote from: Alcy on January 08, 2007, 04:05:25 pm
I don't know how to change pointers.

There's generally a few ways to handle pointers (haven't looked at this particular game).
String counting. Does it count end-of-line markers? (might be one way to save space in the FDS' woefully limited RAM). Get two strings that are next to each other, that you can easily access in the game. Try lengthing string A, so it overwrites some of string B. If string B starts after the end-of-line marker, it uses string counting.
If not, then it probably uses a pointer table.
They can be nasty to calculate if you're hacking the .fds file directly. Better to use a file splitter/merger. (then the pointer is just the file offset + the RAM address it's loaded into).
But if you're hacking the .fds directly, then the best way would be to use FCEUltra XD SP. Play the game until you get to the string you want to calculate the pointer for. Open the built-in hex editor. Search for the hex values of the string in CPU RAM (should be between $6000 and $DFFF). Where it starts is your pointer value. (so like if you found the string was at $8765 in RAM, then you'd search for 65 87 in the .fds.)
Alcy
Guest
« Reply #5 on: January 09, 2007, 04:09:21 am »

Quote from: Nightcrawler on January 08, 2007, 05:20:54 pm
Mind being a little bit more specific about the problems you are encountering?

Why was this in the Community Project Board?

Well, the main thing I keep running into is every time I mess with dictionary compression, I wind up doing something that causes a few random instances of the text "9999" to show up in-game. I was able to change the lengths of a certain pair of words without a problem, but all others attempted so far have caused issues. Plus, I just think I could do a better job if I had help from a more experienced hacker in this case.

I wasn't really sure what the subforum was for, but I figured it was for organizing group projects within the community. Sorry about that!

Kitsune Sniper> Yeah, I started on Crayon Shin-Chan Ora to Poi Poi a few years ago and released a minor patch...then lost access to the machine the workfiles were on, and eventually lost interest.

KingMike> I don't even know enough about them to fully understand what you just said. Pointers in this game aren't a huge deal (if I add onto a line, it just scrolls onto the next line, with the exception of in menus where I might have to alter kana at the end to make certain words fit - luckily only a couple are like this), but I think I might've had a problem with some of the dialogue option boxes...(OK, I'm hardly awake here, sorry this is so incoherent...)
Nightcrawler
Guest
« Reply #6 on: January 09, 2007, 09:02:58 am »

Ok. Well do you have a table for the dictionary? I would start by knowing what the hex value for each entry is and then knowing how long  each entry is.

Remember, in the script, each dictionary entry is represented by one or two bytes. It's just an entry. Aside from that is the actual dictionary table. This contains the full dictionary text for each entry.

If you want to change an entry or the size of an entry, you must do so in the dictionary table. There are usually two common ways the dictionary is stored. 1.) Each entry has an end byte. 2.) The entries are all jumbled together, but have a pointer table that will mark the beginning of each entry.

What exactly is your goal right now? If you're trying to dump a script, you don't need to mess with the dictionary at all. You just need to have those entries in your table for a script dump.

If you're trying to insert. You have a few options. You can not insert any dictionary bytes and insert everything in full. That's simplest, but of course takes up the most space.

Option 2 is probably what you're doing. That's filling in the dictionary with English words for script insertion. For that, you'll need to figure out how your dictionary table is stored in the ROM.

Let's start there. Have you found the dictionary table?
Alcy
Guest
« Reply #7 on: January 09, 2007, 11:56:27 am »

Quote from: Nightcrawler on January 09, 2007, 09:02:58 am
Ok. Well do you have a table for the dictionary? I would start by knowing what the hex value for each entry is and then knowing how long  each entry is.

Remember, in the script, each dictionary entry is represented by one or two bytes. It's just an entry. Aside from that is the actual dictionary table. This contains the full dictionary text for each entry.

If you want to change an entry or the size of an entry, you must do so in the dictionary table. There are usually two common ways the dictionary is stored. 1.) Each entry has an end byte. 2.) The entries are all jumbled together, but have a pointer table that will mark the beginning of each entry.

What exactly is your goal right now? If you're trying to dump a script, you don't need to mess with the dictionary at all. You just need to have those entries in your table for a script dump.

If you're trying to insert. You have a few options. You can not insert any dictionary bytes and insert everything in full. That's simplest, but of course takes up the most space.

Option 2 is probably what you're doing. That's filling in the dictionary with English words for script insertion. For that, you'll need to figure out how your dictionary table is stored in the ROM.

Let's start there. Have you found the dictionary table?

Yes, I have the dictionary table and hex values. There is a byte at the end of each word in the dictionary, but even though I was careful to keep it when I changed lengths, I still had that problem.

Oh, now I remember what I had the possible pointer issue with...names. There isn't enough space for most of them, and I don't know how to add more space...
Nightcrawler
Guest
« Reply #8 on: January 09, 2007, 01:50:26 pm »

OK. So, take a clean ROM. Now, try to shorten the length of ONE dictionary entry by ONE byte. All you need to do is move the end byte back one location. Does that work?

When exactly do you get the '9999' issue? There is a reason it is happening and you can figure it out by working step by step.

Assuming you can reduce the length by one without any issues, next try replacing that dictionary entry in the script to see if you get the desired results. You say you have a table made up, so it should be trivial. Just replace the entry byte/bytes with another.

If those two things work, all that is left is expanding a dictionary entry. THAT however may be more difficult and cause problems because now you most likely have to deal with starting pointers unless your dictionary routine is counting based which it probably isn't.

So, what are your results from this?
phattom
Guest
« Reply #9 on: October 11, 2007, 01:39:46 am »

Sorry to bump an old thread, but what was the outcome of this? Was it ever translated? I've been dying to give this game a shot.
Pages: [1]  


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