MIPS ASM is the easy part, there's not that many instructions. They generally fall into load/store, jmp, branch, add/subtract/multiply/divide/and/or/shifts/etc. categories. There's nothing you really wouldn't understand with your C/C++ background, it would probably take less than a day to look over the instruction set. (Oh, there's no floating point arithmetic, that's done through the GTE.) The hard part is understanding the Playstation hardware.Artemio wrote: And I know I don't have the knowledge needed right now (MIPS ASM).
The only things you should really need to look at to implement text is the COP0 (the system control processor, but even then you don't really need a lot of information on it), and the COP2 (the gpu, but you probably don't need to look at the GTE, not very many polygons or a need for matrix transformations with text).
You might need to know how DMA's and the TLB are set up (done through COP0).
I don't imagine you'd need anything sound/cdrom/IO port/MDEC related (information on the memory card might be handy).
(I think I mentioned all this before)
I don't think this takes very long. The significant part, the GPU, probably wouldn't take more than a week to understand (it actually wasn't too bad).
(all that's left is to look over the Policenauts' ASM, which could take months lol, but is a good way to get a feel for how things work)
Also, with DTE you don't have to store the character sequence directly in the frame buffer. You can just create a dictionary in main memory, and create a control code that encodes the "word", and use that control code in the text. Of course with more than two characters it wouldn't be called DUAL, and would be similar to some LZ type compression.
PS. It sounds like you don't know where the string addresses are. I wouldn't be surprised if they existed inside of some kind of script used to control game state.
I'm not sure if an address conversion table would be the best idea... if you had 50,000 strings with 4 bytes per address then you'd easily take up around 400kb with the table, even if you could get that down to 2 bytes, that's still 200kb (but I have no idea how much free space you'd have to work with, and you'd have to worry if something loaded over your table).
And I just want to make sure I've got this right, all text can fit into main memory (i.e. RAM) in some manner correctly? The problem is its not correctly aligned with the original Japanese text addresses?