mspacmab information

tile RAM starts: 0x4000 - 0x43FF
  0x4000 - 0x403F: bottom 2 rows, right to left, top to bottom
  0x4040 - 0x43BF: playfield area, top to bottom, right to left
  0x43c0 - 0x43FF: top 2 rows, right to left, top to bottom

tile color ram: 0x4400 - 0x47FF (exact same layout, as tile RAM)
  0x4400 - 0x443F: bottom 2 rows, right to left, top to bottom
  0x4440 - 0x47BF: playfield area, top to bottom, right to left
  0x47c0 - 0x47FF: top 2 rows, right to left, top to bottom
 
There is code that will draw string on the screen, each string to draw has 2 bytes that define the memory location where the string is defined.
That table starts @ 0x36A5, each entry is a pointer to memory that defines a string of the format

OFFSET actualString 0x2F CC 0x2f ??

OFFSET: is a number such that OFFSET + 0x4000 is the location tile to start printing at (on the left), printing will be left to right

actualString: is the actual string you want to write, it will be terminated with the value 0x2F

0x2F: literal, string terminator 

CC: one byte value describing the color of this string*

// these next two do not seem to be used in my examples
0x2F: literal, terminator
??: ??

* if the value off CC is < 0x80 then there will be x number of values, each value is the color of the next character, there needs to be as many color values as there are characters to print. (I think, haven't tested this)

Graphics
  sprites are stored on EPROM 5F (2532 0x1000 address range) 
  each sprite is 0x40 bytes, there are 0x40 distinct sprites
  (note the ghosts are only one set of sprites, 
  there are not 4 seperate ghost sprites)

  Tiles are stored on EPROM 5E (2532 0x1000 address range)
  each sprite is 0x10 bytes, there are 0x100 distinct tiles)