Dragon Warrior Monsters 2 Modding Wiki

Strings are ordered in a structure comparable to an array of lists, where each list represents a category of strings.

On the right is the sprite map. The values for each character are for A-Z are 10-36.

bank 8[]

The first eight categories are in bank 0x08, the later ones are in bank 0x95.

Main array pointers: 20032 - 20043.

Its values translated to rom addresses and their meaning:

First Byte Data stored
20044 ?
20242 Pointers to family names
20258 Pointers to species names (00)
20458 Pointers to species names (01)
20558 Pointers to skill names
20716 Pointers to item names
207F6 ?
208D6 Pointers to personalities
2090C ?

Monster species have two categories, as a core monster id has 2 bytes where the most significant byte can be 00 or 01.

The strings themself are nearby. In theory these should be easily editable as long as the pointers match.

First Byte Last Byte Data stored
213B5 families
213F8 species names (00)
21B36 species names (01)
21EF9 skill names
224E3 items
227EF item descriptions
231F6 232B9 personalities
232BA 233E8 item use text
? ?

bank 95[]

TODO (gone for the weekend.. maybe then, maybe never :P)


0:2E81 - 0:2E97 "getString"

  • Expects
    • h = index in first list
    • l = index in second list
    • de = destination in ram
  • Does
    • move input to ram
    • call 8:4016


  • Expects
    • (C528) = index in first list
    • (C529) = index in second list
    • (C53D)/(C53C) destination in ram
  • Does
    • If (C528) >= 9 call 95:465F
    • Else de = 4032 and call 0:25FE

25FE - 2616

  • Expects
    • de = pointer to a list of pointers to lists of pointers pointing to strings
    • (C528) = index in first list
    • (C529) = index in second list
    • (C53D)/(C53C) pointer to an area to write to
  • Does
    • call 2E40 to get the source pointer
    • copy the string from source to dest
  • Returns
    • de: byte behind source
    • hl: byte behind destination

2E40 - 2E5C

  • Expects
    • de = pointer to a list of pointers to lists of pointers
    • (c528) = index in first list
    • (c529) = index in second list
  • Returns:
    • pointer from second list in de
  • Side effects:
    • writes current bank number to (c52a)

(Note that the last one might be used for completly different things as it is just a getter Array[x][y])