- Author: CXO2
- Version: 0.7.0
This program implement system hooks which provides a virtual FileSystem that enables O2Jam Client (OTwo.exe
) to load various file formats from various sources.
For an instance: Loading BMS
file from Network directly.
Please note that extension is NOT limited to music files. As such, it is possible to implement a custom FileSystem for image files.
This project is highly experimental and only serve as Proof of Concept at this stage, so bugs and errors are to be expected.
Currently only capable to handle BMS
format from a Disk with some features are still missing; including but not limited to:
Custom file extension, OJNList.dat
and OJM
Sync support, Note Pan and Note Volume, Multi BMS
Difficulty.
- Download or Build the project.
- Place
O2FS.Launcher.exe
andO2FS.dll
under the same directory of O2Jam game client. - Run
O2FS.Launcher.exe
with O2Jam client standard arguments (the launcher will launchOTwo.exe
and forward the arguments).
Quite amount of effort is needed to complete this hook so it can provide flexible virtual FileSystem:
Charting
data classes / structs
Current design is not final and should follow O2Jam data structure as close as possible while maintaining customizability.- Synchronization Files Implementation
Headers insideOJNList.dat
and Samples insideOJM
need to be match or else the game may fail to load the conversion output. This synchronization feature is possibly needed for Image files as well. - Image FileSystem Implementation
Hooks that customize FileSystem for Image files such asOPI
andOPA
files. - Serializers and Deserializers
Improvement for current Serializers and Deserializers, It also need a factory pattern or possibly other proper design that enable integration of new extension for other file formats. FindFirstFile
andFindNextFile
Hook
This will allows custom extension to be recognized as-is by the game.- DLL Extension
Allows a third-partyDLL
file to be injected to the game with O2FS interface for external virtual FileSystem.
This is an open-sourced library licensed under the MIT License.