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

This giant structure is split in multiple banks. The first eight categories are in bank 0x08, the later ones are in bank 0x95.

bank 8 Edit

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 Edit

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

Functions Edit

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])

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.