Romhacking => ROM Hacking Discussion => Topic started by: RedScorpion on November 04, 2014, 10:37:18 AM

Title: Dragon Quest 1+2 Pointerdebug...
Post by: RedScorpion on November 04, 2014, 10:37:18 AM
Hi guys,

iam currently investigate the pointer system of DQ1+2 and have some problems to understand the script and the pointer.

One of the first dialogs on DQ2 is "Cabinet Minister: Prince... It looks like the time for your leave has come!..."

Each dialog start with a FD als Scrollingcomand and there are some bytes before the FD value occurs. I have debugged the dialog and find a pointer on pc 0e2f37 (headerless)

It is a 3 byte pointer: 91 8D 14 (DQ is lorom).

I dont know for what are the command in the most cases of the dialogs.

Further: Next after each pointer there are 10 bytes and then the next pointer occurs. What does this bytes in the game? I change someone and i thing this bytes are responsible for events and so on.

Quote$06/8305 9D A6 15    STA $15A6,x[$1C:15D2]   A:0060 X:002C Y:AF42 P:envmxdizc
$06/8308 B9 02 00    LDA $0002,y[$1C:AF44]   A:0060 X:002C Y:AF42 P:envmxdizc -> PC 0E2F44
$06/830B 9D A1 15    STA $15A1,x[$1C:15CD]   A:8D91 X:002C Y:AF42 P:eNvmxdizc
$06/830E A9 00 00    LDA #$0000              A:8D91 X:002C Y:AF42 P:eNvmxdizc
$06/8311 E2 20       SEP #$20                A:0000 X:002C Y:AF42 P:envmxdiZc
$06/8313 B9 04 00    LDA $0004,y[$1C:AF46]   A:0000 X:002C Y:AF42 P:envMxdiZc
$06/8316 9D A3 15    STA $15A3,x[$1C:15CF]   A:0014 X:002C Y:AF42 P:envMxdizc
$06/8319 B9 05 00    LDA $0005,y[$1C:AF47]   A:0014 X:002C Y:AF42 P:envMxdizc

Hope anyone could anwer how the pointersystem works...

Have a nice day.


Title: Re: Dragon Quest 1+2 Pointerdebug...
Post by: darkmage on November 11, 2014, 02:06:57 PM
Hi, RedScorpion.

I have a partially completed project in cleaning up the DQ1-2 text, but I'm stumped by the character codes when the Prince of Cannock gets cursed. I might need some help on that myself, but I need to look at where I am and what I need before I make that request.

In any case, here is what I've found about the pointers and dialogue commands:


*Text in long dialogue sequences will loop if not explicitly pointed
to the next line.

*The dialogue is single-width font, with some custom characters.

5F - *: - the symbol for a random NPC speaker
8B - play sound for dialogue
E5 - new string (non-dialogue)
FD - new string (dialogue)
F0 - prompt for next line
FE - end of line
FF - end of string

D80301 XXXX - command to point to the next string of text to show in big-endian
(text starting at 83B2 is written as B283)

D85200 - short delay in text
D85300 - longer delay in text
Title: Re: Dragon Quest 1+2 Pointerdebug...
Post by: RedScorpion on November 12, 2014, 02:37:27 AM
hi darkmage,

thanks for your feedback. This would help to understand the structure of the dialogs.

Will investigate in deeper look to the dialogs. Could you already create a dumper for the dialogs to work with them?!

I had traced the pointer for the first dialogs which are total confusing in his structure. So i could find some "head"-Pointer and the other are located in the dialog structure.

So i thing it would need a special dumper/inserter to change the pointer automatically. Or do you thing it would be possible to use a tool like cartographer or kruptar?