So here's an interesting thing we might be able to take advantage of.... When on the loading screens the game starts loading the necessary files (duh). If a file is missing though, it infinitely waits and retries until the file is present. If you put it back, it continues to load normally.
So barring I can't figure out how to do it the "right" way, here is my plan of attack to, for example, load a mod or a different stage from the one officially selected.
1. Just rename the whole dang folder so that nothing can load and it hangs.
2. Read the file the game is requesting from the memory location and use a lookup table to load the appropriate mod/different file instead of that file, change the file path in memory to match, let it load, it'll hang on the next file because we renamed everything, look it up again.... lather, rinse repeat until the whole stage is loaded. Boom, you've got a custom stage loaded.
I messed with the files last night and by renaming and padding a few things I managed to get the beach night stage to load instead of the regular stage. The only thing is I couldn't get the sun turned off or the headlights turned on. I can probably work on that though. The reverse courses will be more of a challenge as bunki alterations are required. I'm going to have to setup a function in fxt that logs file paths as they are loaded in so I can get a better understanding of what each stage needs and how the loading process works.
It might also work while playing the game in the other modes. As I mentioned, the data for the next stage is loaded after you get about 1/4 of the way through the current stage. I could rename the next stage after the current stage is loaded and use the same technique. It doesn't take a particularly long time to load the stages, so even with the added delay everything should be fine.
There are a lot of IFs that need to be perfectly aligned for such a technique to work though, but I remain hopeful.