Remember that you can do majority of things via simple C functions- fopen, fread, ftell.
Check FF7 imports to see what you can do.
I'm not at FF7 at all, but normally try to look for a code cave to input your asm code. Example as you wrote WM module stores file at 0x75938C, so try to break at C_00675511 and find the pointer to this location. This might be possibly an argument that gets passed every time. Note this pointer to code cave uint and get an filename from C_006759D2.
Now using sprintf import build a filepath to your working directory (thankfully the path is relative, so no need to deal with working directory grabbing)- if fopen returns -1 to EAX it means file doesn't exists (normally) so do CMP EAX, 0xFFFFFFFF and JE NormalFF7OpeningRoutine back to C_006759D2. If not, then fread by he count to buffer location read from the breakpoint and... return to all the way back up to original caller. Sorry I can't help you more... :/
But i don't know C. And to be frank, I fucking hate C. I hate it with a passion.
