VOGONS


Translation Tools

Topic actions

First post, by Good_Punk

User metadata
Rank Newbie
Rank
Newbie

Hi everyone,

I was just curious if there are any tools to help translating DOS Games or if you typically go through the executable with a big standard Hex editor?

Cheers

Reply 1 of 17, by Cyberdyne

User metadata
Rank Oldbie
Rank
Oldbie

There is only one way. Hex edit, and retain the same size. I only have translated a Windows 1.x/2.x french program to english that shows the globe in 3d.

I am aroused about any X86 motherboard that has full functional ISA slot. I think i have problem. Not really into that original (Turbo) XT,286,386 and CGA/EGA stuff. So just a DOS nut.
PS. If I upload RAR, it is a 16-bit DOS RAR Version 2.50.

Reply 2 of 17, by kotel

User metadata
Rank Member
Rank
Member
Cyberdyne wrote on 2025-02-25, 14:40:

There is only one way. Hex edit, and retain the same size. I only have translated a Windows 1.x/2.x french program to english that shows the globe in 3d.

Would that also work for normal .exe? I have some german only soft I'd like to translate to english/polish.

"All my efforts were in vain...
Let that be my disappointment."
-Kotel

Reply 3 of 17, by Cyberdyne

User metadata
Rank Oldbie
Rank
Oldbie

Jep. You only have to UNPack compressed executables. But the text strings can not change lenght inside executable. Sometimes in end of file overlay they can, but rarely.

I am aroused about any X86 motherboard that has full functional ISA slot. I think i have problem. Not really into that original (Turbo) XT,286,386 and CGA/EGA stuff. So just a DOS nut.
PS. If I upload RAR, it is a 16-bit DOS RAR Version 2.50.

Reply 4 of 17, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie

Curious ... not long ago (for a different reason) I wrote a program to find the printable string in a binary
file and produce output with many lines of:
xxxxxxxx 'text'

where 'xxxxxxxx' is the hex address of the text

I also added some filters so I could auto-filter a bunch of the meaningless crap that looks like
text --- still a lot of drivel, but was able to reduce it to the point where it worked for my
needs... I would think something like this (browsing it on a second screen while HEXED)
would be fairly usefull for something like this...

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Reply 5 of 17, by Good_Punk

User metadata
Rank Newbie
Rank
Newbie

Yeah, that sounds useful indeed. Would you be willing to share the program. 😀

Reply 6 of 17, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie
Good_Punk wrote on 2025-03-01, 04:58:

Yeah, that sounds useful indeed. Would you be willing to share the program. 😀

Not a prob -- I just have to "find" it and clean it up a little to make it presentable
.. it was a quick & dirty - on the fly

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Reply 7 of 17, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie
Good_Punk wrote on 2025-03-01, 04:58:

Yeah, that sounds useful indeed. Would you be willing to share the program. 😀

Ok, I've found it and placed it in the "Drop" area of my site:

{site(below)}/Drop/SCANPS.ZIP

I have provided the source code:
- SCANPS.C <= Build with my Micro-C/PC compiler
and two executable editions:
- SCAPS.COM <= 16-BIT (DOS) executable
- SCANPS.DVM <= For "Daves Virtual Machine" (Win64, Linux etc.)

Please note, this was a "quick and dirty" tool I created in a few mins
one afternoon while comparing BIOS files ... I later took some time to
"clean it up" after someone asked me to publish it --- but there are NO
guarantees, it's not terrible "pretty", and there may be latent bugs I
didn't discover while I was using it!

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Reply 8 of 17, by Good_Punk

User metadata
Rank Newbie
Rank
Newbie

Thanks! I'll give it a try.

Reply 9 of 17, by Good_Punk

User metadata
Rank Newbie
Rank
Newbie

Ok this looks great. Now the game I'm translating is German and contains umlauts like "äöüÄÖÜ" and "ß"
With the default options the tool seems to split strings at these character (as they are not recognized as text)
From what I understand I can specify these characters in the options... but the help is a bit technical here and I have difficulties understanding it.

Could you maybe provide me with the correct options to handle these character?

Thanks alot

Reply 10 of 17, by Good_Punk

User metadata
Rank Newbie
Rank
Newbie

Also... am I correct to presume this tool only exports the text and I can't reimported the translated strings with it afterwards, right? 😀

Reply 12 of 17, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie
Good_Punk wrote on 2025-03-02, 05:45:
Ok this looks great. Now the game I'm translating is German and contains umlauts like "äöüÄÖÜ" and "ß" With the default options […]
Show full quote

Ok this looks great. Now the game I'm translating is German and contains umlauts like "äöüÄÖÜ" and "ß"
With the default options the tool seems to split strings at these character (as they are not recognized as text)
From what I understand I can specify these characters in the options... but the help is a bit technical here and I have difficulties understanding it.

Could you maybe provide me with the correct options to handle these character?

Thanks alot

SCANPS -?S

Will give you details on how to specify "accepted" string characters, along with a couple good
examples. The examples some non-character ASCII character (like {return} {linefeed} {backspace} {tab})
which are added with something like: -#+09 (for tab - hex 09)
for non-ASCII ones you would use something like: #+84

You can use: --file
to read more command line arguments from a file (handy when you have a lot that you are
experimenting with)

Note however that if you add too many different non-ASCII characters, you will get more reports
of things are aren't actually strings!!!

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Reply 13 of 17, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie
Good_Punk wrote on 2025-03-02, 05:57:

Also... am I correct to presume this tool only exports the text and I can't reimported the translated strings with it afterwards, right? 😀

That's correct - I created it in a hurry and wasn't needing a patch tool.
I was just looking to see how similar two binary applications (BIOS files)
were by comparing the strings within them...

If you like, I could make such a patch tool where you could take the output of SCANPS
and add new strings after the "lines" you want to change, something like:

00000519'MICRO-C by Dave Dunfield'
0000054A"Simple program"
"simple Program"
0000055A"to printf() a"
00000569"bunch of"
"- some -"
00000573"test strings"

and apply those strings to the file.

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Reply 14 of 17, by Good_Punk

User metadata
Rank Newbie
Rank
Newbie

That would be cool if it's not to much work.
And would you allow me to share the program (your credits included) with my YouTube community maybe?
If it works for my project I want to spread the news so others could also translate games with it.

Reply 15 of 17, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie
Good_Punk wrote on 2025-03-02, 17:44:

That would be cool if it's not to much work.
And would you allow me to share the program (your credits included) with my YouTube community maybe?
If it works for my project I want to spread the news so others could also translate games with it.

Yeah, I'll see what I can do in the next few days (it will be a little bit more work because I assume you will
want a way to include non-printable (ie: hex) characters in the replacement strings)

And no prob. on redistributing it - I'm retired now, so all I really want from this stuff now is to
a) have fun,
and
b) help anyone I can!

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Reply 16 of 17, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie

Ok, I had a little time this morning, so I added SCANPT to SCANPS.ZIP on my site.

use:    SCANPT <scanOutPat> <oldfile> <newfile>

This program takes the output from SCANPS with "new" strings added after
the ones found, and patches <oldfile> to <newfile> with the corresponding
strings changed.

------- Example <scanOutPat>
00000249"Test"9"string 2" <= {tab} is before "string"
"Test string"9"2" <= {tab} is after ""
00000258"Test string"9"3" <= {tab} is after "string"0
"Test"9"string 3" <= {tab} is before ""
---------------------------
> scanps scantst.com 8 -#=20#=9R=!~ >scantst.pat
> scanpt scantst.pat scantst.com newtst.com

Note that I have changed SCANPS slightly - make sure you use the new:

For "test<tab>string" <= <tab> is tab character HEX 09

formarly it would output: aaaaaaaa"text{9}string"

This was indistingishable from the string "test{9}string"
I didn't consider this a problem as I could "figure out" such things
as I manually patched the file with a hex editor ... but an automated
patch "has to know"

so, now it outputs: aaaaaaaa "test"9"string"

In case the string contains '"', it can use " ' or ` as a string
delimiter - if the string contains all-three it will use '`' and
show '`'s in the string in hex: `60`

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Dave ::: https://dunfield.themindfactory.com ::: "Daves Old Computers"->Personal

Reply 17 of 17, by Good_Punk

User metadata
Rank Newbie
Rank
Newbie

Cool thanks, I'll try it out.