From d243826610e4d1d1fc52e3e5f9ab1acf8a929df9 Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 17 Jun 2023 22:04:26 +0200 Subject: [PATCH] Add initial readme draft --- README.md | 73 +++++++++++++++++++++++++++++++++++++++++- docs/OatComponents.md | 24 ++++++++++++++ repo/logo_64_64.png | Bin 0 -> 8303 bytes 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 docs/OatComponents.md create mode 100644 repo/logo_64_64.png diff --git a/README.md b/README.md index eb1029cc..3c8c9aba 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,73 @@ -# OpenAssetTools +![OpenAssetTools Logo](repo/logo_64_64.png) OpenAssetTools +============ +OpenAssetTools (OAT) is a work in progress project aiming to create a modding tools suite for older Call Of Duty titles. +It is not a reimplementation of existing modding tools or related to them but aims to be as compatible as possible in terms of formats and add support for previously unsupported titles. + +In its current form it is still incomplete and only offers a small subset of modding features. +It currently offers support for the PC versions of: + +- [IW3 (COD4: Modern Warfare - 2007)](https://en.wikipedia.org/wiki/Call_of_Duty_4:_Modern_Warfare) +- [IW4 (Modern Warfare 2 - 2009)](https://en.wikipedia.org/wiki/Call_of_Duty:_Modern_Warfare_2) +- [IW5 (Modern Warfare 3 - 2011)](https://en.wikipedia.org/wiki/Call_of_Duty:_Modern_Warfare_3) +- [T5 (Black Ops - 2010)](https://en.wikipedia.org/wiki/Call_of_Duty:_Black_Ops) +- [T6 (Black Ops II - 2012)](https://en.wikipedia.org/wiki/Call_of_Duty:_Black_Ops_II) + +with very varying progress on the different games. + +## Features + +While still incomplete these are the features that are currently available: + +### Tools + +The **Unlinker** tool allows loading any fastfile (.ff) of supported games and works standalone. +While being able to load any asset it can currently only dump a subset of these assets to disk, depending on the game. +The formats of the dumped assets are either as close as possible to the originally used formats for these games or a commonly used format. + +The **Linker** tool allows building custom fastfiles (.ff) for the supported games. +It can also load existing zones and reuse their assets from in-memory. +Only a subset of assets can be read from disk however, depending on the game. + +Additionally, there are a couple of libraries and tools. +A full list of the subcomponents can be found [here](./docs/OatComponents.md). + +## Getting started + +Building OAT requires git to be installed on your machine and to be in your PATH. +This project uses premake to generate project files depending on your platform. + +Note: The first time setting up will clone any submodules with git so the first initialization might take a bit. + +### Windows + +When building on Windows you will need to have Visual Studio 2022 installed. +It is also possible to use other compilers, however due to memory layout of structs being important you might +run into crashes or invalid data so no guarantees can be given. + +Use `generate.bat` to generate Visual Studio solution files. +This will also clone any submodules with git so the first time running it might take a bit. +When this is done you will have a `build` folder with a `OpenAssetTools.sln` solution file within that you can open with Visual Studio. + +Please note that due to having source files and project files in separate folders you need to pay attention that when adding new files in Visual Studio they are being placed in the correct folder. + +Now you can just build the solution. +The resulting binaries can be found in `build/bin/`. + +### Linux + +When building on Linux you need to have g++ installed. +Since you are most likely on a 64bit machine you will also need multilib for compiling for 32bit. + +Use `generate.sh` to generate make files. +When this is done you will have a `build` folder with a `Makefile`. +You now run `make` manually or use `./scripts/make_release.sh` or `./scripts/make_debug.sh` to build. + +The resulting binaries can be found in `build/bin/`. + +## Legal + +OAT source code is licensed under [GPLv3](./LICENSE). + +Extracting the contents of game files does not grant you any rights to them. +All rights remain to their respective owners. \ No newline at end of file diff --git a/docs/OatComponents.md b/docs/OatComponents.md new file mode 100644 index 00000000..589ddf30 --- /dev/null +++ b/docs/OatComponents.md @@ -0,0 +1,24 @@ +# OAT Components + +## Building tools +### RawTemplater +### ZoneCodeGenerator + +## Tools +### Linker +### Unlinker + +## Shared components + +### Common +### Crypto +### ObjCommon +### ObjLoading +### ObjWriting +### Parser +### Utils +### ZoneCode +### ZoneCodeGeneratorLib +### ZoneCommon +### ZoneLoading +### ZoneWriting \ No newline at end of file diff --git a/repo/logo_64_64.png b/repo/logo_64_64.png new file mode 100644 index 0000000000000000000000000000000000000000..5955a783a3a874969c278a32eee7c0945f095dcb GIT binary patch literal 8303 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