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)