1
Scripting and Reverse Engineering / What I'm working on
« on: 2008-01-21 18:17:40 »
Things that are already done:
Things I'd like to do:
Much of this is probably redundant with some existing hacks out there.
- Boot loader that loads FF7 with my DLL added. Patches aren't applied to files directly.
- Playing PSF files instead of the MIDI files. Rather than have an external process monitoring the MIDI output, I take over the midi* API calls and translate them to a background thread with the Winamp plugin. (I'd use the Foobar2000 version if I could figure out how.) Since Windows never gets the MIDI data, there isn't an issue with it playing over the song. I don't currently fake the consumption of data; if some part of FF7 relies upon reaching a particular point in MIDI playback I could have trouble.
- Implement "reverse speakers" with PSF playback. This is a hack - when in_psf.dll calls Out_Module::Write, I flip the samples. There's probably a way to do this within in_psf.dll itself.
- Complete registry indirection. FF7's registry read requests are manipulated.
- plugin.ini reading is also taken over to allow setting "play indefinitely" in in_psf.dll.
- Fixing obvious bugs: Chocobo racing uninitialized pointer, redundant RegCloseKey, tm20dec.ax appcompat fix.
Things I'd like to do:
- File indirection. The game would always be presented with "C:\FF7" as its directory, even if it is actually somewhere else.
- Translate DirectX 5 to DirectX 8.
- Detect when the hardware can't do P8 textures and translate accordingly.
- Replace video playback entirely with libavcodec. This has many advantages, such as avoiding dependence upon the current system configuration, and the upside-down movie bug.
Much of this is probably redundant with some existing hacks out there.