Menu

Tree [79c271] master /
 History

HTTPS access


File Date Author Commit
 .github 2025-05-10 Dirk Stolle Dirk Stolle [f51c34] ci: fail workflow if no files for upload are found
 apps 2025-05-17 Dirk Stolle Dirk Stolle [01c8f9] SRTP: change contents-based readers to avoid co...
 ci 2023-12-30 Dirk Stolle Dirk Stolle [79b404] add name_generator_mw executable to Dockerfile ...
 cmake 2024-01-29 Dirk Stolle Dirk Stolle [a6c677] simplify CMake code for detection of FUSE library
 dev 2025-05-17 Dirk Stolle Dirk Stolle [01c8f9] SRTP: change contents-based readers to avoid co...
 documentation 2024-05-01 Dirk Stolle Dirk Stolle [94bfc1] use Boost.Nowide for bsa-cli arguments
 lib 2025-05-29 Dirk Stolle Dirk Stolle [79c271] SRTP: minor code refactoring for ShoutRecord an...
 tests 2025-05-29 Dirk Stolle Dirk Stolle [f7c0fd] tests: test write failures for more SRTP records
 win64-compile-test 2024-12-05 Dirk Stolle Dirk Stolle [da422b] adjust CMake files to get rid of deprecation wa...
 .dockerignore 2021-11-28 Dirk Stolle Dirk Stolle [f2879c] update Dockerfile for Win32 cross-compiling build
 .gitignore 2022-11-10 Dirk Stolle Dirk Stolle [a20f0a] update .gitignore
 .gitlab-ci.yml 2024-11-02 Dirk Stolle Dirk Stolle [7de121] ci: switch to Docker 27 for Docker image build ...
 CMakeLists.txt 2024-12-05 Dirk Stolle Dirk Stolle [da422b] adjust CMake files to get rid of deprecation wa...
 CONTRIBUTING.md 2021-08-04 Dirk Stolle Dirk Stolle [f5ac48] add contribution guidelines
 FDL-1.3.txt 2013-11-08 thoronador thoronador [97606f] MWTP: fix some license notices + minor optimisa...
 LICENSE 2021-07-21 Dirk Stolle Dirk Stolle [c66b6c] rename license file
 readme.md 2025-05-12 Dirk Stolle Dirk Stolle [ec2f0d] bsa-cli: update copyright year
 zlib_info.txt 2013-01-18 Thoronador Thoronador [55a690] add info for compiling zlib and using it with M...
 Dockerfile 2021-11-28 Dirk Stolle Dirk Stolle [f2879c] update Dockerfile for Win32 cross-compiling build

Read Me

Morrowind Tools Project

The Morrowind Tools Project is an attempt to provide some helpful utility
programs for the game The Elder Scrolls III: Morrowind. These tools will be
related to mods ("plugins") for Morrowind and allow things that would be
difficult to do with Morrowind's own modkit.

Some programs for The Elder Scrolls V: Skyrim were added more recently. So
despite its name the project also contains tools for Skyrim.

Available programs

  • bsa_cli: a command-line interface for BSA archives of Skyrim
  • bsafs: (Linux only) a FUSE file system for BSA archives of Skyrim
  • conv_cams: (obsolete) tool to convert CAMS records in an ESM file to the
    pre-1.5 patch state
  • formID_finder: command-line interface to search for form IDs in Skyrim
  • formID_finder_GUI: a GUI that wraps formID_finder calls in a more
    user-friendly way
  • small_high_elves: (just for fun) command-line tool that creates a Skyrim
    plugin which adjusts the size of high elves to be not so high anymore
  • cell_translator: (incomplete) translates Morrowind plugins from one
    language into another
  • data_cleaner: helps to find and delete unused files within the Data Files
    directory of Morrowind
  • name_generator_mw: generates lore-friendly character names by using the
    names of The Elder Scrolls III: Morrowind as reference
  • skill_rebalance: creates a Morrowind plugin that makes leveling up skills
    harder or easier
  • spell_rename: helps to sort the spells in Morrowind's spell menu according
    to their spell schools by creating a plugin file that changes the spell names

Contents of repository

  • apps: contains code for application programs
  • mw: contains code for Morrowind-related programs
  • sr: contains code for Skyrim-related programs
  • ci: scripts and other files that are used as part of Continuous
    Integration (automated builds and tests, etc.)
  • dev: utilities / helper applications used during development
  • lib: This directory contains the source code for stuff that is used in
    more than one branch of morrowtools.
  • tests: contains code for test cases
  • win64-compile-test: utility to test for 64 bit Windows OS when compiling

Within some directories you may find files named TODO or ToDo.txt. These files
list some of the work that still has to be done for that specific directory.

Build status

GitHub CI Clang status
GitHub CI GCC status
GitHub CI MSYS2 status
GitHub CI Cross-compiling for Win32 status
GitLab CI Win64 cross-compile

Building from source

Prerequisites

To build these tools from source you need a C++ compiler with support for C++17,
CMake 3.8 or later, the FUSE library, the LZ4 library and the zlib library
(>=1.2.7). pkg-config is required to make it easier to find compiler options for
the installed libraries.
Additionally, the program uses Catch (C++ Automated Test Cases in Headers) to
perform some tests.

It also helps to have Git, a distributed version control system, on your build
system to get the latest source code directly from the Git repository.

All of that can usually be installed by typing

# Debian or Ubuntu
apt-get install catch cmake g++ git libfuse3-dev liblz4-dev pkg-config zlib1g-dev

or

# AlmaLinux 8 or Rocky Linux 8
yum install epel-release # required for catch
yum install catch-devel cmake fuse3-devel gcc-c++ git lz4-devel pkgconfig zlib-devel

or

# Alpine
apk add catch2 cmake fuse3-dev g++ git lz4-dev make pkgconf zlib-dev

into a root terminal.

Note: Instructions for building on Windows systems are currently not included.
It it possible, but the setup is a bit complicated. The easiest way to do it is
probably to get a MinGW compiler (e. g. as part of
Code::Blocks IDE) and download and compile
zlib manually. A few hints on how to compile zlib
manually can be found in the file zlib_info.txt. After that is done, you can
use the Code::Blocks project files (*.cbp) in the directories to build the
applications.

Getting the source code

Get the source directly from Git by cloning the Git repository and change to
the directory after the repository is completely cloned:

git clone https://github.com/Thoronador/morrowtools.git ./mwtp
cd mwtp

That's it, you should now have the current source code on your machine.

Build process

The build process is relatively easy, because CMake does all the preparations.
Starting in the root directory of the source, you can do the following steps:

mkdir build
cd build
cmake ../
cmake --build . -j4

If you want to run the test suite, too, then there is one more step:

ctest -V

Cross-compiling for Windows

There is an experimental Dockerfile that uses Docker to
cross-compile the tools for 32 bit Windows (also runs on 64 bit Windows).
It will create a ZIP archive named artifacts.zip located in
/opt/morrowtools/build/ when successful. This file contains the compiled
binaries after the Docker image has been built successfully. To start the build
type

docker build . -t morrowtools

in the root directory of your source checkout.

Building from source on Windows

For information how to build natively on Windows, see the
MSYS2 build instructions.

Copyright 2011-2025 Dirk Stolle

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.