News:

11 March 2016 - Forum Rules

Main Menu

Dragon Warrior 1 Spanish Translation

Started by werewolfslayr925, April 09, 2018, 12:38:48 PM

Previous topic - Next topic

werewolfslayr925

Special thanks to Psyklax for providing the tools and holding my hand through this whole project.

I am working on translating Dragon Warrior for the NES from English to Spanish. I realized that it's the only one of the NES DW games that has not been translated into Spanish (which is odd considering the relative easiness of translating it from what I can tell). This is my first official hacking project.

Here's my initial draft (Again, thanks to Psyklax for the English text dump).

Here's a log where, among other things, I go over some of the translation decisions.

Stuff left to do:
- Have others review my draft for grammar, word choice, etc.
- Translate items, weapons, etc.
- Translate monster names (especially the wyverns and the Dragonlord)
- Run the DTE script (thanks, Psyklax)
- Insert the text into the ROM

Any comments, questions, concerns, criticisms, and suggestions are welcome :3
As the harbor is welcome to the sailor, so is the last line to the scribe.

Psyklax

You're too kind. :) I wouldn't say I was holding your hand... :D

So regarding the DTE thing, you don't "run" anything. Basically you need to have a table inside the ROM with the most common two-letter pairs, and when the game is running, it will go to a routine that checks if you're using a dual-tile character, checks the table, and prints the correct characters. Ultimately it's KingMike who needs thanking, because without his excellent tutorial on a DTE routine, I wouldn't have a clue. :D

So the first step is to take your script, remove anything extraneous - so, just the words, nothing more - and use DTEOpt (again, thanks KingMike ;) ) to determine the most common letter combos. Then you put those combos into the table in the ROM, and insert your properly-formatted script using Pointer Tables (a program in the RHDN database), as it will use a table file that includes the letter pairs, and will translate it accordingly.

Come to think of it, maybe I should do it myself. :D Unless you'd like to learn, of course. Truth be told, this was a while back (half a year ago, in fact) so I might have to look again at DW to familiarise myself with my routine and the text format. As I remember, though, DW has a wonderful text routine that makes putting in a new script very easy indeed, so it probably won't be an issue.

If you need help with anything, let me know. Perhaps I can show you how to use DTEOpt and Pointer Tables, if you like.

werewolfslayr925

You sell yourself short, Psyklax :3 You've helped me more than anyone else, and you continue to help me with your instructions.

QuoteSo the first step is to take your script, remove anything extraneous - so, just the words, nothing more - and use DTEOpt (again, thanks KingMike ;) ) to determine the most common letter combos.

This shouldn't be beyond my ken. I think I can handle this. (And, yes! Thank you KingMike! You rock!)

QuoteThen you put those combos into the table in the ROM

I may need your further help/instruction on this one. How do I put a table of letter combos into a ROM? I thought that each hexadecimal byte was specifically for one letter. (Sorry if I sound stupid...)

Quoteinsert your properly-formatted script using Pointer Tables (a program in the RHDN database), as it will use a table file that includes the letter pairs, and will translate it accordingly.

We'll cross this bridge once we get to it, but I may be able to handle this as well. We'll see though.

As of right now, I'm having at least one person comb over my translation of the script for any errors/wonky word choices. I may ask another person to review it as well. It may take a few days to get a final draft of the translation, so this project may not be complete and ready for publication on the site for another few weeks. (Am I being too formal about this?)

QuoteCome to think of it, maybe I should do it myself. :D Unless you'd like to learn, of course.

I appreciate the enthusiasm, but, yeah, I would like to do as much of this as possible, even if that means you holding my hand through it  :P

Oh! And, I think I mentioned this on another post in this section of the forums: lastdual is working on a version of DW 1-3 that redraws all of the sprites (and possibly a remix of the OSTs). Would it be possible to incorporate my spanish translation into his project as well, or would that require more room than the ROM allows as it is? (As far as permission goes, he says it's fine.)
As the harbor is welcome to the sailor, so is the last line to the scribe.

abw

#3
Before you go too far down the DTE path, it might be worth checking to see whether your script is small enough to fit into the existing space uncompressed. If it does, great. If not, then it's time to use DTEOpt to figure out your best choices for DTE entries, add them to your table file (or I can recommend ScriptCrunch, which will also generate the resulting table file for you and tell you how much space the DTE will save you), add them to some free space in the ROM, hack the text engine to use them, and then insert your script.

Quote from: werewolfslayr925 on April 10, 2018, 10:42:53 AM
I may need your further help/instruction on this one. How do I put a table of letter combos into a ROM? I thought that each hexadecimal byte was specifically for one letter. (Sorry if I sound stupid...)
With 1 byte = 1 letter encodings, generally the game's code just reads one byte and writes it directly to the PPU's tilemap, so your 00=0 table file entry means that the game reads a $00 byte and writes $00 to the PPU; tile ID $00 just happens to be the graphic for the number 0. DTE is a 1 byte = 2 letter encoding; that means the game's code reads one byte and writes two bytes to the PPU's tilemap, so e.g. a table file entry like 80=ng means that the game reads a $80 byte and writes both $17 and $10 to the PPU. In order for that to happen, the game needs to have a little lookup table and some extra code that knows when and how to read that lookup table.

Quote from: werewolfslayr925 on April 10, 2018, 10:42:53 AM
As of right now, I'm having at least one person comb over my translation of the script for any errors/wonky word choices. I may ask another person to review it as well. It may take a few days to get a final draft of the translation, so this project may not be complete and ready for publication on the site for another few weeks. (Am I being too formal about this?)
Even without having the final polished script ready, performing a practice run of your insertion procedure is not a bad idea. You're going to have to do it at some point anyway, after all - might as well start working the kinks out early!

Quote from: werewolfslayr925 on April 10, 2018, 10:42:53 AM
Oh! And, I think I mentioned this on another post in this section of the forums: lastdual is working on a version of DW 1-3 that redraws all of the sprites (and possibly a remix of the OSTs). Would it be possible to incorporate my spanish translation into his project as well, or would that require more room than the ROM allows as it is? (As far as permission goes, he says it's fine.)
I'm just guessing here, but probably a patch that redraws sprites and/or remixes OSTs wouldn't need to use any of the extra space you'll use for implementing DTE, so they shouldn't have any conflicts and ought to be able to be used together safely.

Edit: forgot the quote tags :p

Psyklax

Quote from: abw on April 12, 2018, 10:07:17 PM
Before you go too far down the DTE path, it might be worth checking to see whether your script is small enough to fit into the existing space uncompressed.

I already had a working DTE system before werewolfslayr925 started working on this, so don't worry, it makes sense to use it. ;) I imagine Spanish can be even lengthier than English, so using DTE ensures he needn't worry about space concerns.

When I get a chance, I'll look again at my modified ROM to refresh my memory. Regarding your question about the letter combos, abw answered it pretty well, but basically you have a table with all the common combinations in a row. So if "la" is a common pairing, you have the two bytes for "la" written there. Then when the game sees a byte in a particular range, it uses that table to see where to get the two letters.

I'm simplifying of course, but if you're really curious you can read the same doc by KingMike that taught me how to do it.

I have an idea: paste the text for the King's introduction in Spanish, along with which letters I'll need to replace with Spanish diacritics, and I'll put it in the game and show you how I did it. Then you can try with the rest of the game. :)

abw

Quote from: Psyklax on April 13, 2018, 06:05:14 AM
I already had a working DTE system before werewolfslayr925 started working on this, so don't worry, it makes sense to use it. ;) I imagine Spanish can be even lengthier than English, so using DTE ensures he needn't worry about space concerns.
Yup! :thumbsup: I'm just not sure whether werewolfslayr925 has actually added your DTE yet. Once you're able to insert text at all, finding out whether you need to compress your text or not should only take a minute, so if you don't need to, why bother?

werewolfslayr925

#6
Quote from: abw on April 12, 2018, 10:07:17 PM
Before you go too far down the DTE path, it might be worth checking to see whether your script is small enough to fit into the existing space uncompressed.

As the translation is right now, it's about 121 characters shorter than the English version. I'm still waiting to hear back from my editor, though, so we'll see how that goes.

Quote from: abw on April 12, 2018, 10:07:17 PM
With 1 byte = 1 letter encodings, generally the game's code just reads one byte and writes it directly to the PPU's tilemap, so your 00=0 table file entry means that the game reads a $00 byte and writes $00 to the PPU; tile ID $00 just happens to be the graphic for the number 0. DTE is a 1 byte = 2 letter encoding; that means the game's code reads one byte and writes two bytes to the PPU's tilemap, so e.g. a table file entry like 80=ng means that the game reads a $80 byte and writes both $17 and $10 to the PPU. In order for that to happen, the game needs to have a little lookup table and some extra code that knows when and how to read that lookup table.

This is really cool, and your explanation clarifies how it works. That said,

Quote from: Psyklax on April 13, 2018, 06:05:14 AM
I'm simplifying of course, but if you're really curious you can read the same doc by KingMike that taught me how to do it.

Where can I find this? I'd like to know more about inserting the table.


Quote from: Psyklax on April 13, 2018, 06:05:14 AM
I have an idea: paste the text for the King's introduction in Spanish, along with which letters I'll need to replace with Spanish diacritics, and I'll put it in the game and show you how I did it. Then you can try with the rest of the game. :)

Does this work?
%{Descendiente de Loto, escuchame.}@&{Se dice que en épocas pasadas, Loto combatió a los demonios con un Orbe de Luz.}@&{Un día, el Rey Dragón vino y él robó el orbe precioso y lo escondió en las sombras.}@&{Ahora, [ME], necesitas recoger el Orbe de Luz y reimponer la paz en esto mundo.}@&{El Rey Dragón debe ser derrotado.}@&{Coge lo que sea que encuentres en estos cofres del tesoro para ayudarte en tu viaje.}@&{Despues, habla con los guardias de me castillo, por que tienen conocimiento que puede ayudarte.}@&{Que la luz brille sobre ti, [ME].}%@

And this should be my table for which letters to change: https://drive.google.com/open?id=1D8oEThIonAhkGCDHmcl9kqyKXVc7NZSw

Swap out the following:
k for á
w for é
W for í
X for ó
Z for ú

I think you'll only need é, í, and ó, though.
As the harbor is welcome to the sailor, so is the last line to the scribe.

Psyklax



Well, that's easy. :) I'll quickly explain what I did.

You may remember the text dump file I gave you, so all I did was remove everything except this line and paste your text in place of what was there. I had to replace the other bits of dialogue at $8032 with (.) because the letters missing from your table file meant it wouldn't work. Then I used Pointer Tables to insert it into the ROM: just selected the text file, the table and the ROM, and clicked Go.

In case you don't have Pointer Tables:
https://www.romhacking.net/utilities/502/
People use other utilities but I like this. It supports DTE, and it's very flexible so it'll work with any game, pretty much. Only downside is you have to edit your own pointers.

So I finally had to edit the font in the ROM to replace those five letters with á é í ó u, but you'll see that it's not very good: there's just one pixel above the text, so I just added a few pixels on that row, and the effect isn't great. I don't know what people usually do to put accents on an 8x8 font.

So if we wanted to use DTE (if it's necessary), it's easy. We do as I said before: finished script through DTEOpt, stick what comes out into the ROM's DTE table, put them in the table file, insert with Pointer Tables. Easy peasy.

If you need any help, let me know. ;)

FYI: King Mike's DTE doc:
https://www.romhacking.net/documents/384/
I think I spotted a few little errors which can make it difficult to understand, but eventually you'll get the idea.

werewolfslayr925

Quote from: Psyklax on April 16, 2018, 05:04:59 PM

Well, that's easy. :) I'll quickly explain what I did.

You may remember the text dump file I gave you, so all I did was remove everything except this line and paste your text in place of what was there. I had to replace the other bits of dialogue at $8032 with (.) because the letters missing from your table file meant it wouldn't work. Then I used Pointer Tables to insert it into the ROM: just selected the text file, the table and the ROM, and clicked Go.

In case you don't have Pointer Tables:
https://www.romhacking.net/utilities/502/
People use other utilities but I like this. It supports DTE, and it's very flexible so it'll work with any game, pretty much. Only downside is you have to edit your own pointers.

This sounds fantastic and easy to do! Thank you, Psyklax! I'll test it out when I hear back from my editor.

Quote from: Psyklax on April 16, 2018, 05:04:59 PM
So I finally had to edit the font in the ROM to replace those five letters with á é í ó u, but you'll see that it's not very good: there's just one pixel above the text, so I just added a few pixels on that row, and the effect isn't great. I don't know what people usually do to put accents on an 8x8 font.

This isn't a problem at all. I already edited the letters in the ROM file using YY-CHR around the time I began the project. I believe I still have a version of the ROM with my editions, so that's already done :3

Quote from: Psyklax on April 16, 2018, 05:04:59 PM
So if we wanted to use DTE (if it's necessary)

Question about this: if the number of characters in my Spanish translation are fewer than the number of characters in the English translation, is the DTE/compression necessary? Should I do it anyway just in case someone wants to do something with the ROM that requires conserving space (e.g. a collaboration that involves remixing the game in any way)?

Quote from: Psyklax on April 16, 2018, 05:04:59 PM
If you need any help, let me know. ;)

You'll be the first to know! Thank you so much for all of your help, Psyklax  ;D
As the harbor is welcome to the sailor, so is the last line to the scribe.

abw

#9
Quote from: werewolfslayr925 on April 16, 2018, 05:28:39 PM
Quote from: Psyklax on April 16, 2018, 05:04:59 PM
So if we wanted to use DTE (if it's necessary)
Question about this: if the number of characters in my Spanish translation are fewer than the number of characters in the English translation, is the DTE/compression necessary? Should I do it anyway just in case someone wants to do something with the ROM that requires conserving space (e.g. a collaboration that involves remixing the game in any way)?
If your new text is already shorter than the old text, then adding compression is not strictly necessary.

As for whether you should do it anyway... let's make a pro/con list!

Pro:

  • Adding DTE makes it easier to add more text if you (or anyone else using your hack as a base) decide to add more text.
  • Adding DTE is a good learning experience, especially if you study the DTE patch and understand what it does and how it works (for bonus points: can you figure out any ways of achieving the same effect as that DTE patch using fewer bytes and/or cycles? *).
Con:

  • The extra DTE code takes a few cycles longer than the original code (I mention this only for the sake of completeness; adding an extra couple hundred cycles per vblank is almost never going to constitute a real problem).
  • The extra DTE code and lookup table take up extra space; wherever you end up placing them, they run the risk of generating incompatibilities with other patches that use that same space.

Unless somebody else can come up with anything else to add, this list seems fairly balanced to me. In my opinion, for a patch you're going to distribute to other people, Con #2 seems like the most relevant point, so my advice would be to try getting the DTE to work for your own benefit (it's kind of cool, right?), but leave it out of the final patch. Really, though, either way is okay and the final decision is totally up to you. :beer:


* Edit: I actually tried my hand at optimizing that DTE code, and was able to bring it from 73 bytes down to 48 bytes, leaving enough free space for a total of 132 DTE entries, which is enough to compress Dragon Warrior's main script by just over 40%!

Psyklax

Quote from: abw on April 17, 2018, 06:44:28 PM
The extra DTE code and lookup table take up extra space; wherever you end up placing them, they run the risk of generating incompatibilities with other patches that use that same space.

You're right: this is the most important point. There's a section in DW that's empty and perfectly placed for a DTE table, but if another hacker decided to use that space, you're screwed. In this case, you could just keep your text shorter than the English one and not use DTE. It's funny because I'm not used to translating from English, obviously. :D Going from Japanese usually means DTE is either useful or even essential, but if you're going from an English base, it's probably not necessary. I just assumed Spanish would be more wordy than English, but I may be wrong about that - and besides, more concise translations would solve the problem.

That said, learning how to make DTE work in a ROM is a good learning experience, but one which is more useful for Japanese games. Translating from English to Spanish is WAY easier. :)

Also, regarding your point: I was making patches to double experience and gold in several RPGs. I did a patch for Phantasy Star on Master System and found a nice dozen bytes or so that were unused, but there's an awesome retranslation patch that uses that exact space for whatever, so I couldn't do it. :(

werewolfslayr925

Okay, so I tried using Pointer Tables, but it gave me an error when I tried to combine everything to insert the script:

Error
User Custom PT must be filled in!


I didn't touch anything at the top of the text dump file (that I know of...). Here's what I've got at the top of that file:

Table Start:    8012
Table End:    8037
Text Start:    8038
Text End:    BCBF
XOffset:    10

Table Type:    0
Text Type:    0
Custom PT:    T0 T1

PT Line Command:       
-----------------


And in case anyone needs to see it, here's the .tbl:

00=0
01=1
02=2
03=3
04=4
05=5
06=6
07=7
08=8
09=9
0A=a
0B=b
0C=c
0D=d
0E=e
0F=f
10=g
11=h
12=i
13=j
14=á
15=l
16=m
17=n
18=o
19=p
1A=q
1B=r
1C=s
1D=t
1E=u
1F=v
20=é
21=x
22=y
23=z
24=A
25=B
26=C
27=D
28=E
29=F
2A=G
2B=H
2C=I
2D=J
2E=K
2F=L
30=M
31=N
32=O
33=P
34=Q
35=R
36=S
37=T
38=U
39=V
3A=í
3B=ó
3C=Y
3D=ú
3E="
3F=""
40=}
41=*
44=:
45=_
47=.
48=,
49=-
4B=?
4C=!
4D=;
4E=)
4F=ñ
50={
52=.}
53='
54=`
57=[57]
5F=
60=[60]
F0=[PNT]
F1= [NME]
F3=[XP]
F4=[NME]
F5=[NUM]
F6=[SPL]
F7=[INV]
F8=[ME]
FB=@
FC=%
FD=&
FF=[ITM]


What am I doing wrong? Does it have to do with what Psyklax said:

QuoteOnly downside is you have to edit your own pointers.
As the harbor is welcome to the sailor, so is the last line to the scribe.

Psyklax

Regarding your issues with Pointer Tables, I don't know what could be causing that "User Custom PT" problem. If you successfully dumped the text with the program, then just replacing the text with your own, without messing with the bit above the line, should be okay.

Make sure you're editing the file in a plain text editor like Notepad or TextPad, in case the tabbing above the line gets screwed up somehow. Other than that, it's a mystery to me.

werewolfslayr925

#13
Quote from: Psyklax on May 04, 2018, 06:50:53 PM
Regarding your issues with Pointer Tables, I don't know what could be causing that "User Custom PT" problem. If you successfully dumped the text with the program, then just replacing the text with your own, without messing with the bit above the line, should be okay.

Make sure you're editing the file in a plain text editor like Notepad or TextPad, in case the tabbing above the line gets screwed up somehow. Other than that, it's a mystery to me.

Okay, I went over the translation .txt file again and made sure all the formatting was fine. However, I'm getting a different error now:

Text Starts at x8038 and ends at xBCBF (15496 bytes)


Error
Failed to convert the text using the table!
Starting at '�.%[60]&Estas muerto.%{Eres fuerte!&�Por que no puedes derrotar el Rey Drag�n?}@%{Si quieres descansar, habla con el Rey Rar�s.}%[ME] presenta la Gota del Arcoiris al cielo.&[60]@%Pero un arcoiris no apareci�.%{Buenos d�as.&�Dormiste bien?}@%{Hasta luego.}%{Buenos d�as.&�Dormiste bien?}@%{Buenas noches.}&%{Bueno.&Adi�s, viajero.}%{Bienvenidos a mi posada.&Un cuarto es [NUM] OROS por noche.&Quieres descansar?}&%{Bendiciones.}%{No hay escaleras aqu�.}%{No puedes entrar aqu�.}%{Pero hay nadie.}%'!


Does Pointer Tables not recognize foreign/accented letters?

Edit: OKAY! I figured out that the encoding had to be the same across both the tbl file and the script. I got the script inserted again, but now, I've got a different problem: when King Lorik's opening speech begins, he starts with the text of Erdrick's tablet. Did the script get scrambled because of its length?
As the harbor is welcome to the sailor, so is the last line to the scribe.

Psyklax

Quote from: werewolfslayr925 on May 04, 2018, 09:08:12 PM
Did the script get scrambled because of its length?

So you're saying he says the wrong line? It's probably a pointer problem since Pointer Tables, ironically enough, doesn't edit pointer tables. :D Fortunately DW has a great system with very few pointers: they point to the start of a block, then count the correct number of end characters until it finds the desired line.

In the dump file you have the locations of both pointer table and text, so go to the table and check that the pointers there line up with what you have now. So look at what each block starts with in English, then see where the equivalent Spanish block is.

abw

Quote from: Psyklax on May 05, 2018, 01:53:57 AM
It's probably a pointer problem since Pointer Tables, ironically enough, doesn't edit pointer tables. :D
... wow, that is ironic :P

As an alternative to updating every single pointer by hand every single time you re-insert the script (which is less annoying with DW1's small number of pointers compared to many other games, but is still pretty annoying and error-prone), you may wish to consider using an insertion utility that can actually update the pointer values for you.

With Atlas, for instance, all you need to do is take your Pointer Tables script, replace the Pointer Tables setup stuff with Atlas setup stuff, and then replace the Pointer Tables pointer labels with Atlas pointer write commands (either convert them by hand or get your text editor to do a search-and-replace for you):

// Lines starting with // are comments, lines starting with # are Atlas commands, everything else is script to insert.
// Define, load, and activate a table (replace "dw_es.tbl" with the name of your table file).
#VAR(dw_es, TABLE)
#ADDTBL("dw_es.tbl", dw_es)
#ACTIVETBL(dw_es)

// NES ROMs have a $10 byte header.
#HDR($10)

// Jump to the start of the script, set an upper bound on the available space so that you don't accidentally start overwriting other code/data if your script is too long.
#JMP($8038, $BCBF)

// Write a 16-bit pointer to the current address (which is $8038 because that's where we just jumped to).
#W16($8012)
[NME] despertó.%[60]&Estas muerto.% etc.

// Write a 16-bit pointer to the current address (which is the byte after wherever the previous string ended).
#W16($8014)
{Gracias.&¿Desea comprar una botella mas?}&% etc.

// Write a 16-bit pointer to the current address (which is the byte after wherever the previous string ended).
#W16($8016)
etc.
etc.


Once that's done, you can run the result through Atlas:

$> Atlas.exe "Dragon Warrior [ES].nes" Atlas.txt
Atlas 1.11 by Klarth

Parsing summary: 0 msecs
Parsing - 0 error(s), 0 warning(s)

Insertion summary: 31 msecs
Insertion - 0 error(s), 0 warning(s)

+------------------------------------------------------------------------------
| Total
|   Start: Line 10  File Position $8038  Bound $BCBF
|   End: Line 69  File Position $BC43
+------------------------------------------------------------------------------
| Script size 15371
| Bytes Inserted 15371
| Space Remaining 124
|
| Command Execution Listing
|   W16: 19
|
| Pointer Listing
|   General Pointers Written: 19
+------------------------------------------------------------------------------

Execution time: 62 msecs


... and then test the changes out in your emulator of choice.

One thing I did notice, however, is that the table file you provided is missing entries for "¿" and "¡", so you'll need to add those before you can successfully insert your script (but I'm guessing you've already done that if you were able to get Pointer Tables to insert anything).

werewolfslayr925

Quote from: abw on May 05, 2018, 11:25:34 AM
As an alternative to updating every single pointer by hand every single time you re-insert the script (which is less annoying with DW1's small number of pointers compared to many other games, but is still pretty annoying and error-prone), you may wish to consider using an insertion utility that can actually update the pointer values for you.

With Atlas, for instance, all you need to do is take your Pointer Tables script, replace the Pointer Tables setup stuff with Atlas setup stuff, and then replace the Pointer Tables pointer labels with Atlas pointer write commands (either convert them by hand or get your text editor to do a search-and-replace for you)
...

and then test the changes out in your emulator of choice.

One thing I did notice, however, is that the table file you provided is missing entries for "¿" and "¡", so you'll need to add those before you can successfully insert your script (but I'm guessing you've already done that if you were able to get Pointer Tables to insert anything).

Yeah, I fixed the ¿ and ¡ problem in the .tbl. And thank you abw (and Psyklax) for your patience with me.

I tried what you said, but Atlas just spat back an error message:

Unable to open script file 'dwspFinalAtlas.txt'
Insertion failed


The more I attempt to do things with video games on the coding level, the more I realize that coding is not something for which I have an affinity. If I understand you correctly, the .txt file that contains the translated script is the file into which I'm to put all that code that you posted. Here's what I have:

// Lines starting with // are comments, lines starting with # are Atlas commands, everything else is script to insert.
// Define, load, and activate a table (replace "dw_es.tbl" with the name of your table file).
#VAR(dwSP, TABLE)
#ADDTBL("dwSP.tbl", dw_es)
#ACTIVETBL(dwSP)

// NES ROMs have a $10 byte header.
#HDR($10)

// Jump to the start of the script, set an upper bound on the available space so that you don't accidentally start overwriting other code/data if your script is too long.
#JMP($8038, $BCBF)

// Write a 16-bit pointer to the current address (which is $8038 because that's where we just jumped to).
#W16($8012)
[NME] despertó.%[60]&Estas muerto.% etc.
#W16($8014)
{Gracias.&¿Desea comprar una botella mas?}etc.
etc.
etc.
etc.


Am I doing something wrong in the script's code?
As the harbor is welcome to the sailor, so is the last line to the scribe.

abw

No worries - there's always a bit of a learning curve whenever you try something new. As long as you're willing to put in some effort on your own, people around here are generally willing to try to help you out. Sometimes they even succeed :P. Don't get discouraged!

Unable to open script file 'dwspFinalAtlas.txt'
Insertion failed

The most likely cause of a message like that is that Atlas couldn't find the dwspFinalAtlas.txt file in order to try opening it. I guess I should have asked earlier, but how familiar are you with running programs from the command line? Atlas uses your current working directory to resolve relative paths in any files it needs to open, so it's often easiest to just stick Atlas.exe, the ROM file, dwspFinalAtlas.txt, and dwSP.tbl all in the same directory and run Atlas from there.

As for the script file itself, you'll want to change "#ADDTBL("dwSP.tbl", dw_es)" to "#ADDTBL("dwSP.tbl", dwSP)" in order to match with the variable name from "#VAR" and "#ACTIVETBL", keep everything else down to and including the "#JMP", paste in your full translated script instead of the couple of lines I posted, and then make sure that you have a "#W16(<pointer address>)" preceding each string (i.e. "#W16($8012)" for the first string, "#W16($8014)" for the second string, and so on down to "#W16($8036)" for the last string).

werewolfslayr925

#18
Quote from: abw on May 05, 2018, 11:14:53 PM
No worries - there's always a bit of a learning curve whenever you try something new. As long as you're willing to put in some effort on your own, people around here are generally willing to try to help you out. Sometimes they even succeed :P. Don't get discouraged!

Glad to hear it. I've tried a few things pertaining to programming (GameMaker, PICO-8), but the learning curve is exceptionally steep, the activity itself is too unfun for my tastes, and people don't really give instructions in any way I can understand.

Quote from: abw on May 05, 2018, 11:14:53 PM
Unable to open script file 'dwspFinalAtlas.txt'
Insertion failed

The most likely cause of a message like that is that Atlas couldn't find the dwspFinalAtlas.txt file in order to try opening it. I guess I should have asked earlier, but how familiar are you with running programs from the command line? Atlas uses your current working directory to resolve relative paths in any files it needs to open, so it's often easiest to just stick Atlas.exe, the ROM file, dwspFinalAtlas.txt, and dwSP.tbl all in the same directory and run Atlas from there.

*facepalm* I should have known to do this. I am familiar with running programs from the command line. I use a Kazzo ROM dumper built by infiniteNESlives to dump my NES/FC games. I should have known to put the docs in the same folder  :P

Quote from: abw on May 05, 2018, 11:14:53 PM
As for the script file itself, you'll want to change "#ADDTBL("dwSP.tbl", dw_es)" to "#ADDTBL("dwSP.tbl", dwSP)" in order to match with the variable name from "#VAR" and "#ACTIVETBL", keep everything else down to and including the "#JMP", paste in your full translated script instead of the couple of lines I posted, and then make sure that you have a "#W16(<pointer address>)" preceding each string (i.e. "#W16($8012)" for the first string, "#W16($8014)" for the second string, and so on down to "#W16($8036)" for the last string).

I figured that needed to be done. I'll give it another run soon and report back here with the results.

May 07, 2018, 08:57:14 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Omigosh! It lives! Thank you so much abw and Psyklax! Now I need to edit the enemy and item names and get some testers on this. Should I post an ad for testers when it's ready? Or should I just test it myself?

Also, how do I post pictures on this forum? The image button just gives me "[img*closingbracket*openingbracket*/img]", and I don't really know what to do with it.

Edit: Apologies to the mods for the double-post. I got excited. I know I'm on house arrest. I'll be good.
As the harbor is welcome to the sailor, so is the last line to the scribe.

Tobas

can't wait to play the final version!