News: 11 March 2016 - Forum Rules, Mobile Version
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia

Author Topic: [WIP] Wrecking Crew '98 (Super Famicom) Translation  (Read 15179 times)

TheMajinZenki

  • Jr. Member
  • **
  • Posts: 17
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #160 on: April 28, 2017, 02:56:31 pm »
* In the intro, Mario is mentioned to have fought as part of the Wrecking Crew "for peace". Since your rewrite freed up an extra line, you could add that detail.

If you're talking about this line:

マリオは、へやのおくから
ひでんのハンマーを
とりだしました。

I just want to note that "へや" (heya) means "room"; "peace" would be the similar-sounding へいわ (heiwa).

* Girl (onna no ko) dialogue when defeated does mention her going back "to where the others are". MajinZenki missed that part in his translation.

I admit that I didn't mention that detail, mostly because in English it felt a bit awkward to say "Now I can go to where the others are." I settled for "It's time to go" since the game shows the girl ascending to Heaven and I thought it was good enough. Anything from "Now I can join my family" to "Wait for me everyone, I'm coming" could work in alternative. I guess I should have added a translation note mentioning that.

rainponcho

  • Sr. Member
  • ****
  • Posts: 275
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #161 on: April 28, 2017, 02:57:27 pm »
Quote
I always forget the fact that CRT screens do eat up some horizontal space.

Mgwah. Don't know how many hacks, translations this would affect. o_O


30800 = 0f
30802 = 0f
30804 = 01

That will leave 8px left, right side.


edit:
Make sure your original rom has a $200 header, before applying the translation patch. Or you'll get garbled graphics.

Thought I found the scripting data but nope. Scratching head trying to locate the timing area.


edit2:
I think this is the script code handler
Code: [Select]
$D4/2263 A4 3C       LDY $3C    [$00:0F3C]   A:1945 X:1942 Y:0000 P:envmxdIZc
$D4/2265 B7 0E       LDA [$0E],y[$D4:5333]   A:1945 X:1942 Y:5333 P:envmxdIzc
$D4/2267 85 38       STA $38    [$00:0F38]   A:6E1E X:1942 Y:5333 P:envmxdIzc
$D4/2269 C8          INY                     A:6E1E X:1942 Y:5333 P:envmxdIzc
$D4/226A 84 3C       STY $3C    [$00:0F3C]   A:6E1E X:1942 Y:5334 P:envmxdIzc
$D4/226C 64 3A       STZ $3A    [$00:0F3A]   A:6E1E X:1942 Y:5334 P:envmxdIzc
$D4/226E 4C C5 21    JMP $21C5  [$D4:21C5]   A:6E1E X:1942 Y:5334 P:envmxdIzc

Still unsure how to make use of it
« Last Edit: April 28, 2017, 05:26:14 pm by rainponcho »

reyvgm

  • Hero Member
  • *****
  • Posts: 524
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #162 on: April 28, 2017, 05:25:28 pm »
If you're talking about this line:

マリオは、へやのおくから
ひでんのハンマーを
とりだしました。

I just want to note that "へや" (heya) means "room"; "peace" would be the similar-sounding へいわ (heiwa).

I admit that I didn't mention that detail, mostly because in English it felt a bit awkward to say "Now I can go to where the others are." I settled for "It's time to go" since the game shows the girl ascending to Heaven and I thought it was good enough. Anything from "Now I can join my family" to "Wait for me everyone, I'm coming" could work in alternative. I guess I should have added a translation note mentioning that.

How about "It's time to go with the others"?

rainponcho

  • Sr. Member
  • ****
  • Posts: 275
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #163 on: April 28, 2017, 07:13:28 pm »
Oouf. That scripting block is a fat one.

Code: [Select]
$D4/2265 B7 0E       LDA [$0E],y[$D4:53B0]   A:1945 X:1942 Y:53B0 P:envmxdIzc


example:
d4:5333 = intro start
..
d4:53b0 = 44 - 80 00  (pause 80h frames)
d4:53b3 = 1e - 5b 5b  (jsr 5b5b = print 3 lines of text ~ On a fair day with a gentle wind)
d4:53b6 = 4c - 02 - 01 00 - 04 - 08 01 - 88 00 - 55 7d - d4 (???)
d4:53c2 = 44 - 80 00
..
scroll somewhere here
..
d4:53e0 = 1e - 5b 5b  (Mario returned from vacation really joyful)
..
..
D4:569B = 44 80 00
D4:569E = 1e 5b 5b  (What happened during his holiday!!?)
D4:56A1 = 44 80 00
D4:56A4 = 1e 5b 5b  (oh? there is a sign there)
D4:56A7 = 44 80 00
..
..
??

Looks like the text can be extended. But a specialized dumper would be needed. >_>

Or a raw hex dump could be made. Stick in "1e 5b 5b 44 80 00" where needed to extend the script. And remap ptr elsewhere.

Don't feel comfy enough to do this for awhile (there has to be an easier way dumping the start/end values... there's lots of cutscenes). But spitballing this finding out there. Knowing there's other capable++ hackers around here. ;)

GHANMI

  • Hero Member
  • *****
  • Posts: 654
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #164 on: April 28, 2017, 07:22:26 pm »
If you're talking about this line:

マリオは、へやのおくから
ひでんのハンマーを
とりだしました。

I just want to note that "へや" (heya) means "room"; "peace" would be the similar-sounding へいわ (heiwa).

That's not it.
It's the very next piece of text:

このくにを もとのひあたりの
よい,"へいわなくに"に
するために···

(In your translation that was: "In order to bring back sunlight to this once-peaceful country...")

As you might see in this patch, the "peaceful country" part was completely omitted from the rewrite out of necessity, since expanding dialogue to go on for multiple screens isn't possible.
To manage keeping most of the original message within these length limitations, we (I and ShadowOne333) had to shuffle stuff around. This is me just suggesting that since his editing pass freed up one extra line in the earlier cutscene, we could cram the "peace" thing there (and the idea of Mario acting as law enforcement is a funny aspect of the character that would be a shame to be lost).

I certainly didn't mean I do not trust in your translation. It was really good, accurate, concise and to the point. I started looking at the Japanese text for reference whenever the translated text didn't fit and the situation called for a more condensed interpretation of the text like with the robotic sound effects, since there was no way it could fit. The translated script was still the primary reference.

@ShadowOne333
Please send me the links for the main story font decompression/recompression tool, as well as Atlas scripts you used for the main story. I'm interested in keeping your rewrite but redoing parts of it with a graphical DTE compression. Specifically the robot text, since he was the one the most badly affected by the text limitations. I'll also implement the more elegant solution for the "4 MINS" part.

EDIT:
Or let's just wait for the story text to be extended. Even a fourth line could do wonders.

ShadowOne333

  • Hero Member
  • *****
  • Posts: 731
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #165 on: April 28, 2017, 09:09:25 pm »
Damn too much info to catch up with.  :laugh:

To start things with, here we have a true beta patch with everything translated!
https://www.dropbox.com/s/x1c337uxtc34abf/TranslationBeta.ips?dl=0

I "think" that the base ROM is unheadered, so that into consideration when patching it into the ROM.

There are some details to take into consideration:

In the Tutorial text, we have three bugged tutorials;
* Breaking blocks: The part where it lines up three pink blocks, they don't disappear, I can't remember if that's normal or not. I don't know why, but this whole section sometimes feels out of order.
* Using panels:  Where it says the four different color of panels, it skips that part due to the pointers posted by DarkSamus not being updated properly at the moment.
* Game rules: Same as above, though I can't remember exactly where the skipping occurs, but I know for a fact there is a part where it does.

Please let me know if you find anything else!

-----------------------------------------------------------------------------------------

Now to answer some questions:

@GHANMI:
I couldn't see any messed graphics, only when I patched the wrong font16-3, which rainponcho fixed thankfully.
For the on going discussion regarding japanese text, I won't get in the way, I know next to jackshit about japanese so I cannot have a say in this matter. XD
For the robot, what exactly do you mean by saying it's akward? I would shorten the "robot sounds" to only one word instead of two or so to make more space, but let's see how the scripting in which rainponcho is diving in works out.
For Bowser, I did include that line which you mention, however I didn't notice that in such text we only have three lines, but in the text tools I do have 5 to include those, you can check what I've done so far here:
https://www.dropbox.com/s/a3vi4hhr6t4nqfb/WC98%20Text%20Tools.rar?dl=0

The decompression files are REALLY freaking messy, like... Completely out of order, I created backups up the ass for everything and lost track of other things. I will try to clean things up first before sharing that.

Oh and btw, Dogu's text is not a softlock, he actually takes REALLY long to go to the next sentence as seen here:
https://www.youtube.com/watch?v=HSgP-O06FEg
So thankfully that's normal haha.

@rainponcho
I did the following changes to the ROM:
Code: [Select]
30800 = 0f
30802 = 0f
30804 = 01
303ac = 9d fc 5e
3024a = 9d fe 5e
30280 = 9d fe 5e
30265 = 9d fe 5e
38004 = 00
However it seems like I still have the box right at the outline of the screen instead of an 8px offset.
I might have done something wrong, most likely.
Also, I was about to ask what you were referring to when you said scripting, but by the looks of it it seems like you debugged a bit of how the script sequence works for the Story text to hopefully add more lines, is that right?

And while I'm at it:
@rainponcho and @DarkSamus993, would you guys mind if I were to set up your tools into one nice package and upload it to Romhacking as Utility for translating Wrecking Crew 98?
It might help if someone else attempts to translate the game to another language as well.
I will take care of getting everything in a more neat way than what I currently have and with some instructions to do so, but I have to ask for your permission first :P

Jorpho

  • Hero Member
  • *****
  • Posts: 3591
  • The cat screams with the voice of a man.
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #166 on: April 28, 2017, 09:57:01 pm »
I had a minute, so I thought I'd try doing a relative search for some of those cast names and the credits.  Alas, nothing obvious is appearing.  I don't suppose any of the extraction tools might have dredged them up, i.e. as graphics?

On the off-chance it will help, here's the names as they appear:
Spoiler:
NASUBI KAMEN
NOKO NOKO
SPANNER GON
PEACH
LUIGI
BLACKEY
KOOPA
ONIGIRI
ONNANOKO
OYAZI
DOGU
MARIO
FORKUN
BLONYA
BURUCCHO
BURNYA
DUMPTY
JENYA
KANBANK
GURUCCHO
GATA GATA
POLES
U DOKUN
This depresses me. I feel like a goldfish right now...

rainponcho

  • Sr. Member
  • ****
  • Posts: 275
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #167 on: April 28, 2017, 10:31:55 pm »
I'll try looking for the credits.


Quote
I couldn't see any messed graphics

I remember having garbled graphics when I used a 200000h file. When I set it to 200200h bytes, then the menus and world map came out okay. Didn't check with new patch yet.


Quote
Dogu's text

Maybe cutscene codes can be adjusted - could be some long delay pause.


Quote
I did the following changes to the ROM:

Typo mistake. Very typical me.
38000 = 0f
38002 = 0f
38004 = 01
303ac = 9d fc 5e
3024a = 9d fe 5e
30280 = 9d fe 5e
30265 = 9d fe 5e


Quote
Also, I was about to ask what you were referring to when you said scripting, but by the looks of it it seems like you debugged a bit of how the script sequence works for the Story text to hopefully add more lines, is that right?

Engine codes. Like 44h = pause. 1e = jsr. 4c = ??. 83 = scroll amount. 8a = frames to scroll. 80 = wait??. And lots of other weird stuff. Too long; don't care. It should (theory) be possible to add as many {3 line blocks} as you need. But we'd have to asm move the data around.

This may take time though so putting it on pause by the side for now.


Quote
but I have to ask for your permission first

I don't mind at all. Been slowly adding stuff to my own hack readmes - permission not needed to reuse or modify my work. Don't care about the legal and ownership part (for my work). That applies retroactively too.

Tool I have to fix to dump font-3 correctly - used a cheat to get data. Didn't debug why it fails.


edit1:
crew98 tool
https://www.sendspace.com/file/31zfz6


edit2:
Credit characters are bitmap sprites. Staff names are bg3 tiles.


Sample dump:
Code: [Select]
decode 1a2f66 credits_font.bin


decode 1b9d30 credits_name1a.bin
decode 1a49bd credits_name1b.bin
decode 1a3a96 credits_name1c.bin
decode 1a920f credits_name1d.bin
decode 1a2273 credits_name1e.bin
decode 1a2b1d credits_name1f.bin

decode 1b9fcd credits_name2a.bin

decode 1ba2af credits_name3a.bin

decode 1bb58c credits_name4a.bin

decode 1bb92f credits_name5a.bin

decode 1ba523 credits_name6a.bin

decode 1ba7e3 credits_name7a.bin

decode 1bac26 credits_name8a.bin

decode 1bad68 credits_name9a.bin

decode 1baff8 credits_name10a.bin

decode 1bb434 credits_name11a.bin

decode 1bbbbb credits_name12a.bin


decode 1bbe60 credits_name13a.bin
decode 1a49bd credits_name13b.bin
decode 1a3a96 credits_name13c.bin
decode 1a920f credits_name13d.bin
decode 1a2273 credits_name13e.bin
decode 1a2d87 credits_name13f.bin

decode 1a4faf credits_name14a.bin

decode 1a54c1 credits_name15a.bin

decode 1a5b0d credits_name16a.bin

decode 1a615a credits_name17a.bin

decode 1a68ca credits_name18a.bin

decode 1a6ecc credits_name19a.bin

decode 1a74d7 credits_name20a.bin

decode 1a7a4d credits_name21a.bin

decode 1a7f83 credits_name22a.bin

decode 1a85c4 credits_name23a.bin
« Last Edit: April 28, 2017, 11:44:47 pm by rainponcho »

GHANMI

  • Hero Member
  • *****
  • Posts: 654
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #168 on: April 29, 2017, 02:11:48 am »


On the off-chance it will help, here's the names as they appear:
Quote
NASUBI KAMEN
NOKO NOKO
SPANNER GON
PEACH
LUIGI
BLACKEY
KOOPA
ONIGIRI
ONNANOKO
OYAZI
DOGU
MARIO
FORKUN
BLONYA
BURUCCHO
BURNYA
DUMPTY
JENYA
KANBANK
GURUCCHO
GATA GATA
POLES
U DOKUN

Oh those. Many of these are either Japanese names or puns, and would need to be translated. Right off my head there's the following:

ONNANOKO: which is just onna no ko 女の子, or "girl".
OYAZI: from oyaji 親父 ("dad"/"grampa"/"middle-aged man"/"boss"), but as for why the "ji" became a "zi"... maybe because of a drunkard's lispy prononcuation, since this character is an alcoholic?
KANBANK: includes kanban 看板 ("poster"/"billboard", like in "poster girl" for bars), but why the bank part? This part of the pun eludes me. It's just a giant Bowser billboard causing instant wins as far as I know.
BURUCCHO: Same. I get just the first part of the pun, buru which is short for bulldozer in Japanese. But what about the rest? "Block"?
GURUCCHO: Same. I get just the first part of the pun, guru guru which is supposed to be the sound for stuff turning in a circle, just like this ...thing... does in this game.
FORKUN: Forklift-kun?
BURNYA: Self-explanatory, it burns ya. Could be an affectionate cutesy nickname with that nya suffix for something that... burns stuff? Has absolutely no idea what BLONYA or JENYA are supposed to be.
DUMPTY: Related only in name to Humpty Dumpty. Here it's supposed to be a machine that dumps stuff away.
GATA GATA: Literally the sound effect for "rattle, rattle".
POLES: ... Engrish aside, they look in-game like sentient joysticks.
U DOKUN: Has no idea what this name is supposed to mean. Appears in-game as a billboard with a construction worker.
NASUBI KAMEN: is a Japanese word. "Masked Eggplant", fittingly.
ONIGIRI: that one is clear enough ("hamburger"). There's a literal rice ball in the game.

There's the stuff that already has official English names like KOOPA (good old Bowser) and NOKO NOKO (Koopa Troopa).

Could anyone fluent in Japanese save the day for those puns?

Jorpho

  • Hero Member
  • *****
  • Posts: 3591
  • The cat screams with the voice of a man.
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #169 on: April 29, 2017, 02:36:42 am »
edit2:
Credit characters are bitmap sprites. Staff names are bg3 tiles.
You make it seem so easy.  To be clear, there's no easy way to view those in any standard tile editor, is there?  But they're nonetheless in a standard format?
This depresses me. I feel like a goldfish right now...

DarkSamus993

  • Full Member
  • ***
  • Posts: 139
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #170 on: April 29, 2017, 04:21:45 am »
Wow, this thread sure was busy! :o

First order of business, I finally updated the text tools to v1.10: https://github.com/DarkHunterX/WC98-Text-Tools
As usual, let me know if you encounter any bugs.
Quote from: Changelog
Version 1.10 April 29, 2017
 - Added missing tutorial text pointers.
 - Updated the panels/rules tutorial text dumping command files.
 - Updated the control codes in the tutorial table file.
 - Updated filenames.txt with new file names.
 - Updated bankswap.asm to create freespace by removing both the old tutorial/story text.
 - Added new ASM file boxexpandh.asm (changes xPos & max character length per line).
 - Added user input for modifying the char length of tutorial text lines during insertion & tweaked
   the error checking of the dump script.
 - Scripts no longer reqire ROM to be named a certain way, it only needs to have a sfc/smc extension.
 - Added more decriptive information to this readme, including a video link of the scripts in action.

@rainponcho and @DarkSamus993, would you guys mind if I were to set up your tools into one nice package and upload it to Romhacking as Utility for translating Wrecking Crew 98?
It might help if someone else attempts to translate the game to another language as well.
I will take care of getting everything in a more neat way than what I currently have and with some instructions to do so, but I have to ask for your permission first :P
Sounds good to me.

----------------------------------------

And now some notes for the credits:
As rainponcho already pointed out, the character names are bitmap sprites but the staff names are bg3 tiles.
Code: [Select]
=======================
= Compressed GFX Ptrs =
=======================
1A01F2 = [DA2F66] Staff credits font
1A0200 = [DB9D30] Nasubi Kamen
1A0247 = [DB9FCD] Noko Noko
1A028B = [DBA2AF] Spanner Gon
1A02CF = [DBB58C] Peach
1A0313 = [DBB92F] Luigi
1A0357 = [DBA523] Blackey
1A039B = [DBA7E3] Koopa
1A03DF = [DBAC26] Onigiri
1A0423 = [DBAD68] Onnanoko
1A0467 = [DBAFF8] Oyazi
1A04AB = [DBB434] Dogu
1A04EF = [DBBBBB] Mario
1A054B = [DBBE60] Enemies


===================
= Sprite OAM Ptrs =
===================
Format: 2-bytes
-------------------
1A0B36 = [1027] Nasubi Kamen
1A0B63 = [109E] Noko Noko
1A0B90 = [1106] Spanner Gon
1A0BBD = [1178] Blackey
1A0BEA = [11DB] Koopa
1A0C17 = [1249] Onigiri
1A0C4A = [1291] Onnanoko
1A0C77 = [130E] Oyazi
1A0CA4 = [1391] Dogu
1A0CCB = [13D0] Peach
1A0CF8 = [1429] Luigi
1A0D25 = [1482] Mario
1A0D52 = [179E] Forkun
1A0D85 = [1ABD] Blonya
1A0DB2 = [17BD] Buruccho
1A0DEB = [1D5C] Burnya
1A0E45 = [17E6] Dumpty
1A0E78 = [1ADC] Jenya
1A0F2C = [1805] Kanbank
1A0F50 = [21D3] Guruccho
1A0F89 = [21FC] Gata Gata
1A0FBC = [2225] Poles
1A1001 = [223F] U Dokun


==============
= Sprite OAM =
==============
Format:
# of tiles
Tile 01:
     byte-1 = xPos
     byte-2 = yPos
     byte-3 = tile index
     byte-4 = v/h flip, palette, tile size
     byte-5 = ???
Tile 02
Tile 03
etc...
--------------
1A1027 = Nasubi Kamen
[0B]
[28 FC 4A 22 00] = N
[20 FC 49 22 00] = E
[18 FC 48 22 00] = M
[10 FC 47 22 00] = A
[08 FC 46 22 00] = K
[FC FC 45 22 00] = I
[F4 FC 44 22 00] = B
[EC FC 43 22 00] = U
[E4 FC 42 22 00] = S
[DC FC 41 22 00] = A
[D4 FC 40 22 00] = N

1A109E = Noko Noko
1A1106 = Spanner Gon
1A1178 = Blackey
1A11DB = Koopa
1A1249 = Onigiri
1A1291 = Onnanoko
1A130E = Oyazi
1A1391 = Dogu
1A13D0 = Peach
1A1429 = Luigi
1A1482 = Mario
1A179E = Forkun
1A17BD = Buruccho
1A17E6 = Dumpty
1A1805 = Kanbank
1A1ABD = Blonya
1A1ADC = Jenya
1A1D5C = Burnya
1A21D3 = Guruccho
1A21FC = Gata Gata
1A2225 = Poles
1A223F = U Dokun

Staff credits font:

Main characters:

Enemies:


So to edit the names, the sprites need to be decompressed and updated with the new names and then the sprite OAM would need to be edited as well. This is simple enough, until you need more characters for a name. The game only uses 2-byte pointers, meaning if you want to expand anything, you have to 1) keep everything in the same bank and 2) update all the sprite OAM ptrs after what was expanded. Not hard by any means (unless there's no room), but certainly quite tedious.

It might be interesting to see if the sprite OAM loading routine could be hijacked to make it check if it's accessing these specific ptrs and then swap the bank (the full ptr is stored in WRAM so edit it there) to load the sprite OAM from anywhere. Then you wouldn't have to worry about repointing everything else.
Code: [Select]
$D4/1787 B7 E8       LDA [$E8],y[$DA:0B36]   A:000F X:1475 Y:000D D:0F00 DB:00 S:1FFC P:envmxdIzc
$D4/1789 9D 28 00    STA $0028,x[$00:149D]   A:1027 X:1475 Y:000D D:0F00 DB:00 S:1FFC P:envmxdIzc
...
$D4/1D0B BD 20 00    LDA $0020,x[$00:1495]   A:0140 X:1475 Y:0000 D:0F00 DB:00 S:1FFC P:envmxdIzc
$D4/1D0E 85 EA       STA $EA    [$00:0FEA]   A:00DA X:1475 Y:0000 D:0F00 DB:00 S:1FFC P:envmxdIzc
$D4/1D10 BD 28 00    LDA $0028,x[$00:149D]   A:00DA X:1475 Y:0000 D:0F00 DB:00 S:1FFC P:envmxdIzc
$D4/1D13 85 E8       STA $E8    [$00:0FE8]   A:1027 X:1475 Y:0000 D:0F00 DB:00 S:1FFC P:envmxdIzc
$D4/1D15 A7 E8       LDA [$E8]  [$DA:1027]   A:1027 X:1475 Y:0000 D:0F00 DB:00 S:1FFC P:envmxdIzc

TheMajinZenki

  • Jr. Member
  • **
  • Posts: 17
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #171 on: April 29, 2017, 06:35:04 am »

I had a minute, so I thought I'd try doing a relative search for some of those cast names and the credits.  Alas, nothing obvious is appearing.  I don't suppose any of the extraction tools might have dredged them up, i.e. as graphics?

On the off-chance it will help, here's the names as they appear:
Spoiler:
NASUBI KAMEN
NOKO NOKO
SPANNER GON
PEACH
LUIGI
BLACKEY
KOOPA
ONIGIRI
ONNANOKO
OYAZI
DOGU
MARIO
FORKUN
BLONYA
BURUCCHO
BURNYA
DUMPTY
JENYA
KANBANK
GURUCCHO
GATA GATA
POLES
U DOKUN

Oh those. Many of these are either Japanese names or puns, and would need to be translated. Right off my head there's the following:

ONNANOKO: which is just onna no ko 女の子, or "girl".
OYAZI: from oyaji 親父 ("dad"/"grampa"/"middle-aged man"/"boss"), but as for why the "ji" became a "zi"... maybe because of a drunkard's lispy prononcuation, since this character is an alcoholic?
KANBANK: includes kanban 看板 ("poster"/"billboard", like in "poster girl" for bars), but why the bank part? This part of the pun eludes me. It's just a giant Bowser billboard causing instant wins as far as I know.
BURUCCHO: Same. I get just the first part of the pun, buru which is short for bulldozer in Japanese. But what about the rest? "Block"?
GURUCCHO: Same. I get just the first part of the pun, guru guru which is supposed to be the sound for stuff turning in a circle, just like this ...thing... does in this game.
FORKUN: Forklift-kun?
BURNYA: Self-explanatory, it burns ya. Could be an affectionate cutesy nickname with that nya suffix for something that... burns stuff? Has absolutely no idea what BLONYA or JENYA are supposed to be.
DUMPTY: Related only in name to Humpty Dumpty. Here it's supposed to be a machine that dumps stuff away.
GATA GATA: Literally the sound effect for "rattle, rattle".
POLES: ... Engrish aside, they look in-game like sentient joysticks.
U DOKUN: Has no idea what this name is supposed to mean. Appears in-game as a billboard with a construction worker.
NASUBI KAMEN: is a Japanese word. "Masked Eggplant", fittingly.
ONIGIRI: that one is clear enough ("hamburger"). There's a literal rice ball in the game.

There's the stuff that already has official English names like KOOPA (good old Bowser) and NOKO NOKO (Koopa Troopa).

Could anyone fluent in Japanese save the day for those puns?

I can't help with all of those, but here's what I could find:

NASUBI KAMEN: Eggplant Man
NOKO NOKO: Koopa Troopa
SPANNER GON: Gotchawrench
PEACH
LUIGI
BLACKEY: Foreman Spike
KOOPA: Bowser
ONIGIRI: either keep it the same or go for Rice ball
ONNANOKO: as GHANMI said, it's just "girl"
OYAZI: It's something like "old man", "pops", "gramps", "boss", whatever seems right knowing that he's a grumpy owner of a small construction company (probably does all the work himself). Regarding the "z" rather than "j", it's just a different romanization style, with "zi" and "ji" being interchangeable (for an anime example, ジオン (jion) is meant to be "Zeon")
DOGU: a Dogu is a clay figure from ancient Japan. Either keep the name as is or go for "Clay doll/figure".
MARIO
FORKUN: as GHANMI said, the name is fork(lift)+kun. 
BLONYA: The Blo part probably refers to this guy moving around a cement BLOck. The -nya at the end just makes the name unique and whimsical, no real meaning.
BURUCCHO: as GHANMI said, the "buru" part is from bulldozer (burudoozaa in Japanese). The -ccho part at the end it's just to make the name unique and whimsical, it doesn't have a real meaning.
BURNYA: The Bur(n) part comes from this guy using a welding tool (which is pretty hot, so it burns). Like the other two guys, the -nya part is just to make the name sound cute and whimsical.
DUMPTY: it's a DUMP truck.
JENYA: The "Je" part comes from this guy wearing a JEtpack. Like the other two guys, the -nya part is just to make the name sound cute and whimsical.
KANBANK: this comes from 看板, which as GHANMI said means sign or billboard. The japanese text on the sign reads "safety first". Not sure about the "k" at the end, but I'd take a guess and say it's just to make the name unique and a k flows nicely after an n. I'd go for something silly like "Billboardser", but I'm not a great punster.
GURUCCHO: the name references the onomatopoeia "guruguru", which means spinning; it makes sense since it's supposed to be a screwdriver. Like for Buruccho, the "-ccho" at the end is just to make the name unique and whimsical (though I don't think it has a "cute" undertone like the -nya guys).
GATA GATA: it's a blocking signpost. "Gatagata" is the onomatopoeia for wobbling, which should refer to the fact the sign wobbles a bit when it stops (probably). I'd ignore the original name and just call it something that references that it's a signpost.
POLES: it's three poles, not much to say.
U DOKUN: 誘導くん (yuudou-kun). The word means Guidance, so it would be something like "Mr. Guide". It's supposed to be a panel redirecting traffic. Here's an example of a real life one https://www.youtube.com/watch?v=g5VbwtN6rTA .

https://www.mariowiki.com/Wrecking_Crew_%2798 you can find pics of the enemies in here, so you can see them.

Now, my suggestion for the names is just to ignore (or at most take some inspiration from) the original names and just write something that feels right by looking at the enemies. Maybe try to match the names of similar enemies, like I don't know: Forker, Dozer and Dumper, or Blocky, Burny and Jetty; but as I said I'm not really good with making names, so I'll leave it to you.

rainponcho

  • Sr. Member
  • ****
  • Posts: 275
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #172 on: April 29, 2017, 07:12:54 am »
This is why I like you: ripping everything out clean and tidy. No fuss or mess. Precise. Ace score. :)


Thought mode. So credit sprites are mostly? solid block.

Code: [Select]
1a1027 = nasubi kamen  [00 flag]
1a105f = ??  [02 flag]
1a1074 = ??  [02 flag]
1a1089 = ??  [02 flag]

1a109e = noko noko  [00 flag]
1a10c7 = ?? [02 flag]
1a10dd = ?? [02 flag]
1a10f1 = ?? [02 flag]

1a1106 = spanner gon  [00 flag]

..
1a1abd
1a1adc
..
1a1d5c
..
1a2225 = poles
1a223f = u dokun

Best I can think atm is @ d41d10 ==> jml credits_oam
- flag 05 check (00)
- bank check (da)
- range check (10xx - 22xx)

Then use offset jmp table.
- 10xx code: 27 ==> 00, 9e ==> 01
- 11xx code: 06 ==> 02, 78 ==> 03, db ==> 04
- 12xx code: 49, 91
- 13xx code: 0e, 91, d0
- 14xx code: 29, 82
- 15xx code: none
- 16xx code: none
- {..}

Then lookup custom ptr-24 table for remap.

-or-

Think another weak spot is found.

Code: [Select]
24-bit ptrs
$D4/26CC B7 0E       LDA [$0E],y[$DA:0223]   A:FFF0 X:004C Y:0223 P:envmxdIzc
==> DA0B29 .. DA0B36 = [1027] Nasubi Kamen
$D4/26CC B7 0E       LDA [$0E],y[$DA:022F]   A:0048 X:004C Y:022F P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:026A]   A:FFF0 X:004C Y:026A P:envmxdIzc
==> DA0B56 .. DA0B63 = [109E] Noko Noko
$D4/26CC B7 0E       LDA [$0E],y[$DA:0276]   A:0050 X:004C Y:0276 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:02AE]   A:FFF0 X:004C Y:02AE P:envmxdIzc
==> DA0B83 .. DA0B90 = [1106] Spanner Gon
$D4/26CC B7 0E       LDA [$0E],y[$DA:02BA]   A:0038 X:004C Y:02BA P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:02F2]   A:FFF0 X:004C Y:02F2 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:02FE]   A:0038 X:004C Y:02FE P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0336]   A:FFF0 X:004C Y:0336 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0342]   A:0050 X:004C Y:0342 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:037A]   A:FFF0 X:004C Y:037A P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0386]   A:0048 X:004C Y:0386 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:03BE]   A:FFF0 X:004C Y:03BE P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:03CA]   A:0020 X:004C Y:03CA P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0402]   A:FFF0 X:004C Y:0402 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:040E]   A:0044 X:004C Y:040E P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0446]   A:FFF0 X:004C Y:0446 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0452]   A:0050 X:004C Y:0452 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:048A]   A:FFF0 X:004C Y:048A P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0496]   A:0040 X:004C Y:0496 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:04CE]   A:FFF0 X:004C Y:04CE P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:04DA]   A:0039 X:004C Y:04DA P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0512]   A:FFF0 X:004C Y:0512 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:051E]   A:0050 X:004C Y:051E P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:053B]   A:0000 X:004C Y:053B P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0547]   A:0000 X:004C Y:0547 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0586]   A:FFF0 X:004C Y:0586 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0592]   A:004D X:004C Y:0592 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:05C3]   A:FFF0 X:004C Y:05C3 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:05CF]   A:0055 X:004C Y:05CF P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0600]   A:FFF0 X:004C Y:0600 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:060C]   A:003D X:004C Y:060C P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:063D]   A:FFF0 X:004C Y:063D P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0649]   A:003D X:004C Y:0649 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0655]   A:003D X:004C Y:0655 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0686]   A:FFF0 X:004C Y:0686 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0692]   A:0052 X:004C Y:0692 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:069E]   A:0000 X:004C Y:069E P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:06AA]   A:0000 X:004C Y:06AA P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:06DB]   A:FFF0 X:004C Y:06DB P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:06E7]   A:003D X:004C Y:06E7 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:06F3]   A:003D X:004C Y:06F3 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:06FF]   A:003D X:004C Y:06FF P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0737]   A:FFF0 X:004C Y:0737 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:0743]   A:0000 X:004C Y:0743 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:074F]   A:0000 X:004C Y:074F P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:075B]   A:0000 X:004C Y:075B P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:0793]   A:FFF0 X:004C Y:0793 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:079F]   A:0048 X:004C Y:079F P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:07D0]   A:FFF0 X:004C Y:07D0 P:envmxdIzc
$D4/26CC B7 0E       LDA [$0E],y[$DA:07DC]   A:0050 X:004C Y:07DC P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:080D]   A:FFF0 X:004C Y:080D P:envmxdIzc
==> DA0FAF .. 1A0FBC = [2225] Poles
$D4/26CC B7 0E       LDA [$0E],y[$DA:0819]   A:0047 X:004C Y:0819 P:envmxdIzc


$D4/26CC B7 0E       LDA [$0E],y[$DA:084A]   A:FFF0 X:004C Y:084A P:envmxdIzc
==> DA0FF4 .. DA1001 = [223F] U Dokun
$D4/26CC B7 0E       LDA [$0E],y[$DA:0856]   A:0036 X:004C Y:0856 P:envmxdIzc
==> DA1006

So we just copy (scripting language) bytes DA0B29 - DA1005 to free bank, same offsets. Copy bytes DA1027 ~~ DA2300 same idea. Remap bank ptrs. Then remap oam offset ptrs as needed.


edit:
Got a deep idea on expanding cutscene scripting data. Working.
« Last Edit: April 29, 2017, 10:29:58 am by rainponcho »

GHANMI

  • Hero Member
  • *****
  • Posts: 654
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #173 on: April 29, 2017, 12:45:52 pm »
Thanks a lot for the detailed reply, MaginZenki.

I didn't realize Foreman Spike (Blacky), Gotchawrench (Spanner Gon, short for Wrench Dragon), and Eggplant Man (Nasubi Kamen, meaning Masked Eggplant) already had official English names in the 1985 game.

So:

Quote
NASUBI KAMEN   = EGGPLANT MAN
NOKO NOKO   = KOOPA TROOPA
SPANNER GON   = GOTCHAWRENCH
PEACH      = PEACH
LUIGI      = LUIGI
BLACKEY      = SPIKE
KOOPA      = BOWSER
ONIGIRI      = RICE BALL
ONNANOKO   = LITTLE GIRL
OYAZI      = BOSS POPS
DOGU      = DOGU DOLL
MARIO      = MARIO
FORKUN      = FORKER
BLONYA      = BLOCKY
BURUCCHO   = DOZER
BURNYA      = BURNY
DUMPTY      = DUMPER
JENYA      = JETTY
KANBANK      = BILLBOARDSER
GURUCCHO   = SPINNER
GATA GATA   = WOBBLESTACLE
POLES      = POLES
U DOKUN      = MR. GUY D.

Tried to keep it under 12 characters since that's the longest the original names can get.
But anyone feel free to improvise better names.


rainponcho

  • Sr. Member
  • ****
  • Posts: 275
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #175 on: April 29, 2017, 04:50:20 pm »
Good news is I found most of the cutscene scripting data and successfully added 3-line blocks whenever I feel like it (tested by adding 10 of them to the 1st intro block).

Bad news is story text ptr remaps collide with expanded cutscene scripts. Will likely have to merge DarkSamus993 Atlas scripts with the ones I'm dumping.

In progress.


edit:
Patch to allow expansion of story text.
--link edit--
http://s000.tinyupload.com/index.php?file_id=05173895103453641716


Code: [Select]
14f660 = print 2 text blocks
14f670 = print 3 text blocks
14f680 = print 4 text blocks


intro
1453b3 = fair day, gentle breeze
1453e0 = mario returned from vacation
1454b6 = walked around, almost home
1454f6 = home just in sight
1455de = huge shadow covered him
145698 = odd new huge building
14569e = happened during holiday
1456a4 = sign there
14572a = mamma mia
145730 = raising secret bases
1457c4 = sunlight barely got through
14587d = picked hammer from chest
14588a = same hammer used
145897 = part of wrecking crew
1458ea = to bring back sunlight
14593a = ready to take on bases
145989 = just as planned



stage 1
145e9a = intro
145eac
145ec1
145ef4

145f73 = rematch
145f85
145f9a
145fcd

146013 = win

14608f = lose



stage 2
1460fc = intro
146102
146114
146126
146138
146145

1461C1 = rematch
1461D3
1461E5
1461F2

146244 = normal win

1462B4 = fast win

146327 = lose





stage 3
14638E = intro
1463AF
1463C1

146434 = rematch
146455
146467

1464C5 = win

146532 = fast win

14659C = lose




stage 4
146603 = intro
146624
146636
146648

1466D9 = rematch
1466EB
1466FD

14675E = win
146770

1467CE = fast win

146835 = lose




stage 5
1468AB = intro
1468BD
1468C3
1468D5
1468DB

14696C = final rematch
14697E
146984
146996
14699C

146A2D = rematch
146A3F
146A45
146A57
146A5D

146ABE = win
146AD0

146B25 = final win

146BAA = lose




stage a
146C11 = intro

146C9C = win

146D1B = lose




stage b
146D79 = intro
146D9A
146DAC
146DBE

146E25 = rematch
146E46
146E58
146E6A

146ED4 = win
146EE6

146F4D = lose




stage c
146FA8 = intro
146FBA
146FCC
146FDE
146FF0

147048 = rematch
14705A
14706C
14707E
147090

1470D3 = win
1470D9
1470DF

14713A = lose




stage d
1471BE = intro
1471D7
14728C

14731C = rematch
147335
1473EA

1474AA = win

1475D6 = lose





1479CF = ending 1

147A9A = ending 2
147AA0
147AD9
147B15

Example is we want to print for intro block1:

{1}
"On a fair day,
with just a
gentle wind"

==>

{1}
"It"
"was"
"a"

{2}
"fair"
"day"
"with"

{3}
"a"
"gentle"
"breeze"


Change 1453b3 ==> 1e 70 f6 -- now prints 3 text blocks instead of 1 before cutscene continues.

Reference list for other text strings. Couldn't figure how to merge with Atlas data so requires manual hex editing for now.

If you need 5 or more text blocks, that can be added in. Format is very simple @ 14f660.


edit2:
Sorry. Fixed patch. Notes updated.
« Last Edit: April 29, 2017, 11:12:17 pm by rainponcho »

DarkSamus993

  • Full Member
  • ***
  • Posts: 139
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #176 on: April 30, 2017, 12:58:08 am »
Good news - I managed to hijack the sprite OAM loading routine like I had theorized, meaning shuffling and repointing data will not be necessary. It uses an index ptr table (16-bit) which is then used for lookup in a sprite OAM ptr table (24-bit). The 24-bit ptr is then written to WRAM and the sprite OAM is accessed using that value.

I'll post a patch once I fix a couple of bugs in my code.

Couldn't figure how to merge with Atlas data so requires manual hex editing for now.
I'll take a look once I finish up with the character names, see if something can be done about that.

Chronosplit

  • Hero Member
  • *****
  • Posts: 818
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #177 on: April 30, 2017, 08:48:27 am »
Quote
KANBANK: this comes from 看板, which as GHANMI said means sign or billboard. The japanese text on the sign reads "safety first". Not sure about the "k" at the end, but I'd take a guess and say it's just to make the name unique and a k flows nicely after an n. I'd go for something silly like "Billboardser", but I'm not a great punster.
Propagander?

rainponcho

  • Sr. Member
  • ****
  • Posts: 275
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #178 on: April 30, 2017, 09:16:25 am »
Quote
Good news - I managed to hijack the sprite OAM loading routine like I had theorized, meaning shuffling and repointing data will not be necessary. It uses an index ptr table (16-bit) which is then used for lookup in a sprite OAM ptr table (24-bit). The 24-bit ptr is then written to WRAM and the sprite OAM is accessed using that value.

Had to think about it for awhile. I think I get it - clever! No spot in that bank is likely using 0000-00FF for sprite oam. Wow, that's a simple but straightforward solution. :mrgreen:


edit: Have new idea. Maybe can add custom <line>, <wait> commands to scripting engine. Checking.


edit2: Done. Works. Yes!!
https://www.sendspace.com/file/mnwepg


xkas asm file modifies scripting engine + text engine
- 7fff = stop, end, break
- 7ffe = pause, wait
- 7ffd = newline
-
- Auto-newline is disabled
- Auto-stop is disabled

Included a sample test file. Looks like this format.

Code: [Select]
THAT DAY, THE{line}
WEATHER WAS{line}
GREAT...{wait}

ON A FAIR DAY,{line}
WITH JUST A{line}
GENTLE BREEZE,{stop}

MARIO RETURNED{line}
FROM VACATION,{wait}
REALLY JOYFUL.{stop}

AS HE WALKED{line}
AROUND, HE WAS{wait}
ALMOST HOME.{stop}


edit3:
Whoa. That list of credit puns went way past my recognition until I read the answers. Took them all literally.
« Last Edit: April 30, 2017, 04:45:46 pm by rainponcho »

DarkSamus993

  • Full Member
  • ***
  • Posts: 139
    • View Profile
Re: [WIP] Wrecking Crew '98 (Super Famicom) Translation
« Reply #179 on: April 30, 2017, 05:32:04 pm »
Almost done - just need to compile my notes and then I'll post the ASM file and a sample patch.
I'll try and add this to my dump/insert script setup next time I update it.

For now though, here's a test video of it in action: https://www.youtube.com/watch?v=Eme3l0QSK_I
Code: [Select]
- Character names are now being loaded from bank $DB.
- Only enemy names were edited (since they already contained almost the whole alphabet in the font gfx).
- Some enemy names have a glitched letter due to missing letters in the compressed gfx (I, Q, V, W, X, Z).

VRAM dump (for reference):


edit: Have new idea. Maybe can add custom <line>, <wait> commands to scripting engine. Checking.
edit2: Done. Works. Yes!!
Nice! I'll have to try and incorporate that into my dump/insert scripts.