I do not use the force offsets option in UMDgen for this game, because the resulting image will be smaller. This game does not need fixed LBAs, it gets them at run time. It uses sce methods to identify LBAs rather than hardcoding.
crifilesystem games only need to get cpk LBA information once or twice (once for each .cpk file they have). I find they always use sce methods to find the LBA of the cpk file because it doesn't impact loading time. As such, it won't matter where on the ROM you put it as long as it's there somewhere.
Games with tons of files (i.e., Falcom) have lists of LBAs always resident so LBA info can be gotten quickly when UMD loading is required. crifilesystem has its TOC always resident too, I'm pretty sure. The real LBA is only a quick addiu away!
Alright, here's the test patch with various things inserted:
1) EBOOT text
2) message.csv
3) data_msg_txt.dat which, contrary to the name, is a string database. It doesn't contain messages at all!
http://www.mediafire.com/download/abbvuhmfb0gyksc/UBE_test2.xdelta
I've got my test text up on the screen here:
See VADDR? That's important, tells us where the vertex data is. Two means there's two vertices, enough to draw a square. RECTANGLES means we're going to draw a square (or box or whatever).
The other important one is SetVertexType but I'm not sure exactly what's going on. u16 texcoords mean unsigned 16-bit so 2 bytes. s16 positions mean signed 16-bit (also 2 bytes).
Let's hope and pray there's not dynamic memory for this. We go to the address that it says and look at our vertex data.
OK that didn't work at all. At 0xB4 (shorthand for 0x09C321B4 above), you see BA006C00 the tex x-position and y-position for the lower-left corner of the square. 0xB8 is 184, the distance from the left of the frame in pixels to the left side of the drawn square. 0xBE is 190, distance from the left of the frame in pixels to the right side of the drawn square. At 0xB8, you see the same numbers, this is the position. 0x6C, 108, is distance from the top of the frame to the top of the square, and 0x79, 121, is the distance to the bottom.
Basically this means it is copying a texture onto the frame, because the texcoords and positions are the same.
We need to set our breakpoint on some value in here. We need to adjust x-position, so let's pick 0x09C321B4 for a breakpoint.
We eventually get a break inside the function at 0898C78C which is writing the display list.
Is this it?
0886048C li t0,0xE
I guess t0 when 0883EA94 is jumped to.
So if t0 is -0x1, that means "use the VWF routine" so I guess we're done. Just need to message Sephchurchin.
The 2nd script file is: EV00_0200.kbd
EV00_0300.kbd is the third script file
Tutorial_Inn is the fourth
Tutorial_Navigate is the fifth
Tutorial_Master_Follower01 is the sixth
Tutorial_Master_Follower02 is the seventh
Tutorial_Menu_Master_Follower is the eighth
Tutorial_Master_Follower03 is the ninth
Tutorial_Master_Follower03 is the tenth
Tutorial_Skill is the 11th
Tutorial_Menu_Skill is the 12th
Tutorial_SkillMap is the 13th
Tutorial_Menu_SkillMap is the 14th
Routine at 088EA8AC is building battle text texture