В общем, схема такая у PSI-файлов. Указаны байты, и расшифровка.
0x00-0x02: 'PSI', 0x50 53 49 - сигнатура.
0x03: Похоже, что версия. Стандарт - 0x00. Если 0x01, то я не знаю, как с ним работать, и все дальнейшие данные указаны для 0x00.
0x04: Битность. Бывает 0x04, 0x10, т.е. 4-битный, или 16-битный.
0x05-0x07: 0x10 01 00 - во всех файлах 0x00 версии, что я видел, это константа.
0x08-0x09: Ширина (байты переворачивать нужно).
0x0A-0x0B: Высота (байты переворачивать нужно).
0x0C-0x0D: 0x10 00 - во всех файлах 0x00 версии, что я видел, это константа.
0x0E-0x0F: Смещение на начало полотна. Между началом полотна и смещением 0x10 лежит палитра, если она есть. Если нету, то смещение будет равно 0x10.
Итого, открываешь в Tile Molester, выбираешь файл, открываешь в указанном в структуре режиме, (обычно 4-bpp Linear, либо 16bpp ABGR (1555)).
Затем, если есть палитра, жмешь: Palette->Import From->This File... указываешь смещение 16, и размер, который высчитывается по формуле: (Размер_палитры = Смещение_на_начало_полотна - 16). Для удобства, можно первые 16 байт вырезать в хекс-редакторе, и сохранить отдельно. Тогда смещение на палитру будет уже 0, но суть такая же. Или вырезать вместе с палитрой, но импортировать ее из другого файла. Тогда редактировать проще.
В DOB-файлах, похоже, ничего интересного не лежит. Да и разобраться с ними я толком не смог.
P.S. Если будут вопросы, спрашивай.