- Windows binary can now be compiled under Linux and Mac OS X
- Windows binary can now be compiled under Linux and Mac OS X
- Windows binary can now be compiled under VS 5.10
- Windows binary can now be compiled under VS 5.10
- Fix multiple crashes
- Fix multiple crashes
@ -706,127 +856,158 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Use consts for various values
- Use consts for various values
### June 20, 2018
### June 20, 2018
- The [media](https://www.pcgamer.com/a-coder-spent-1200-hours-reverse-engineering-diablos-source-code/) catches wind and [several](https://bloody-disgusting.com/video-games/3505673/fan-completes-reverse-engineering-source-code-diablo/) [articles](https://kotaku.com/coder-spends-1-200-hours-piecing-together-diablos-sourc-1827001247) [appear](https://www.diabloii.net/blog/comments/reverse-engineered-diablo-source-code-released)
- The [media](https://www.pcgamer.com/a-coder-spent-1200-hours-reverse-engineering-diablos-source-code/) catches wind and [several](https://bloody-disgusting.com/video-games/3505673/fan-completes-reverse-engineering-source-code-diablo/) [articles](https://kotaku.com/coder-spends-1-200-hours-piecing-together-diablos-sourc-1827001247) [appear](https://www.diabloii.net/blog/comments/reverse-engineered-diablo-source-code-released)
### June 18, 2018
### June 18, 2018
- Devilution gets posted on [Y Combinator](https://news.ycombinator.com/item?id=17338886)
- Devilution gets posted on [Y Combinator](https://news.ycombinator.com/item?id=17338886)
## 0.1.0
## 0.1.0
### June 6, 2018
### June 6, 2018
- Devilution is unleashed upon the world! Version 0.1.0!
- Devilution is unleashed upon the world! Version 0.1.0!
### June 3, 2018
### June 3, 2018
- Polishing things up for final release
- Polishing things up for final release
- Added a cheesy fake copyright notice to dissuade monetary gain
- Added a cheesy fake copyright notice to dissuade monetary gain
- Properly integrated Storm and DiabloUI into the project
- Properly integrated Storm and DiabloUI into the project
### May 28, 2018
### May 28, 2018
- Fixed bugs with save files
- Fixed bugs with save files
- You can now load Devilution saves in the vanilla game
- You can now load Devilution saves in the vanilla game
### May 25, 2018
### May 25, 2018
- Finally! Figured it out and now monsters spawn correctly
- Finally! Figured it out and now monsters spawn correctly
- The game can be completed from start to finish with a few tricks
- The game can be completed from start to finish with a few tricks
### May 21, 2018
### May 21, 2018
- Took a week break, begin working on monster code again
- Took a week break, begin working on monster code again
- Nearly all quests work now
- Nearly all quests work now
- Fixed a bug with Adria
- Fixed a bug with Adria
### May 8, 2018
### May 8, 2018
- Fix bugs with character drawing
- Fix bugs with character drawing
- Fix bugs relating to item affix generation
- Fix bugs relating to item affix generation
- Towners no longer crash the game
- Towners no longer crash the game
### May 7, 2018
### May 7, 2018
- Port debugging functions from the debug release
- Port debugging functions from the debug release
- Still can't figure out the zombie problem
- Still can't figure out the zombie problem
### May 5, 2018
### May 5, 2018
- Begin fixing quest code and testing completion
- Begin fixing quest code and testing completion
### April 26, 2018
### April 26, 2018
- Zombies are spawning in all dungeon types... sigh
- Zombies are spawning in all dungeon types... sigh
### April 20, 2018
### April 20, 2018
- Split code from IDA's C file into separate CPP files
- Split code from IDA's C file into separate CPP files
- All dungeon types can now be entered
- All dungeon types can now be entered
- Objects are now mostly working
- Objects are now mostly working
- Begin uncommenting monster code and fixing them
- Begin uncommenting monster code and fixing them
### April 11, 2018
### April 11, 2018
- Begin fixing up dungeon generation and objects
- Begin fixing up dungeon generation and objects
### April 4, 2018
### April 4, 2018
- Fixed many crashing bugs when in town and dungeon
- Fixed many crashing bugs when in town and dungeon
- Items, missiles, and spells are now drawn
- Items, missiles, and spells are now drawn
### April 1, 2018
### April 1, 2018
- Finally fixed the render bug, everything draws correctly!
- Finally fixed the render bug, everything draws correctly!
- Character animation now draws correctly
- Character animation now draws correctly
- The cathedral is now mostly working
- The cathedral is now mostly working
### March 29, 2018
### March 29, 2018
- Fixed tons of bugs
- Fixed tons of bugs
- You can now walk around in town
- You can now walk around in town
- Entering the dungeon almost always crashes
- Entering the dungeon almost always crashes
### March 27, 2018
### March 27, 2018
- Uncommented and fixed lots of broken code
- Uncommented and fixed lots of broken code
- The game screen now appears, although very glitchy
- The game screen now appears, although very glitchy
### March 22, 2018
### March 22, 2018
- Control panel and inventory now work almost flawlessly
- Control panel and inventory now work almost flawlessly
### March 21, 2018
### March 21, 2018
- Temporarily commented out tons of broken code
- Temporarily commented out tons of broken code
- You can now get past the loading screen and into town
- You can now get past the loading screen and into town
- Music also works
- Music also works
- Control panel mostly works but game screen is black
- Control panel mostly works but game screen is black
### March 18, 2018
### March 18, 2018
- The title screen now works
- The title screen now works
- Freezes during the loading screen
- Freezes during the loading screen
### March 16, 2018
### March 16, 2018
- Fixed enough bugs that you can now launch binary
- Fixed enough bugs that you can now launch binary
- Crashes during title screen
- Crashes during title screen
### March 14, 2018
### March 14, 2018
- Fix remaining errors in code
- Fix remaining errors in code
- Code now compiles and produces a non-working binary
- Code now compiles and produces a non-working binary
### March 13, 2018 -- *! SPECIAL DAY !*
### March 13, 2018 -- *! SPECIAL DAY !*
- Dump the database to C code via IDA
- Dump the database to C code via IDA
### March 8, 2018
### March 8, 2018
- Correct various function signatures
- Correct various function signatures
- Correct struct names and types
- Correct struct names and types
- Plug in enumerates
- Plug in enumerates
- Finish correcting and documenting data sections
- Finish correcting and documenting data sections
### February 26, 2018
### February 26, 2018
- Finish documenting functions
- Finish documenting functions
- Begin correcting names to match PSX
- Begin correcting names to match PSX
### February 18, 2018
### February 18, 2018
- Begin adding enumerates
- Begin adding enumerates
- Add more minor structs
- Add more minor structs
- Clean up data sections
- Clean up data sections
### February 15, 2018
### February 15, 2018
- Almost finished adding every function
- Almost finished adding every function
- Begin working on major structs
- Begin working on major structs
### February 8, 2018
### February 8, 2018
- Add more functions
- Add more functions
- Begin adding data from Sanctuary project
- Begin adding data from Sanctuary project
### February 4, 2018
### February 4, 2018
- IDA disassembly begin
- IDA disassembly begin
- Start adding function names from [Sanctuary project](https://github.com/sanctuary/notes)
- Start adding function names from [Sanctuary project](https://github.com/sanctuary/notes)
### January 15, 2018
### January 15, 2018
- The concept of Devilution is born
- The concept of Devilution is born
- Research into Diablo's code and mechanics
- Research into Diablo's code and mechanics
- Research from [Jarulf's guide](http://www.bigd-online.com/JG/JGFrame.html)
- Research from [Jarulf's guide](http://www.bigd-online.com/JG/JGFrame.html)
@ -150,6 +175,7 @@ of the `(i686|x86_64)-w64-mingw32` directory.
<details><summary>Windows via Visual Studio</summary>
<details><summary>Windows via Visual Studio</summary>
### Installing dependencies
### Installing dependencies
Make sure to install the workload `Desktop development with C++` and the individual components `C++ CMake tools for Windows` and `Windows SDK` for Visual Studio.
Make sure to install the workload `Desktop development with C++` and the individual components `C++ CMake tools for Windows` and `Windows SDK` for Visual Studio.
*Note: `Windows SDK` component should match your Windows build version.*
*Note: `Windows SDK` component should match your Windows build version.*
@ -164,17 +190,20 @@ vcpkg integrate install
If you need aditional instructions for vcpkg you can find the documentation [here](https://github.com/microsoft/vcpkg#quick-start-windows).
If you need aditional instructions for vcpkg you can find the documentation [here](https://github.com/microsoft/vcpkg#quick-start-windows).
### If you want to build the devilutionX.mpq File (optional)
### If you want to build the devilutionX.mpq File (optional)
In order to build devilutionx.mpq, install smpq from https://launchpad.net/smpq/trunk/1.6/+download/SMPQ-1.6-x86_64.exe.
In order to build devilutionx.mpq, install smpq from https://launchpad.net/smpq/trunk/1.6/+download/SMPQ-1.6-x86_64.exe.
The location of this tool will need to be [added to the system's PATH environment variable](https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/).
The location of this tool will need to be [added to the system's PATH environment variable](https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/).
### Compiling
### Compiling
* **Through Open->CMake in Visual Studio**
* **Through Open->CMake in Visual Studio**
1. Go to `File -> Open -> CMake`, select `CMakeLists.txt` from the project root.
1. Go to `File -> Open -> CMake`, select `CMakeLists.txt` from the project root.
2. Select the `x64-Release` configuration (or `x86` for 32 bit builds, `-Debug` for debug builds).
2. Select the `x64-Release` configuration (or `x86` for 32 bit builds, `-Debug` for debug builds).
3. Select `Build devilution.exe` from the `Build` menu.
3. Select `Build devilution.exe` from the `Build` menu.
* **Through GCC/WSL in Visual Studio**
* **Through GCC/WSL in Visual Studio**
1. Ensure the WSL environment has the build pre-requisites for both devilutionX (see "Installing Dependencies on Debian and Ubuntu" under the "Linux" section above) and [WSL remote development](https://docs.microsoft.com/en-us/cpp/linux/connect-to-your-remote-linux-computer?view=msvc-160#connect-to-wsl).
1. Ensure the WSL environment has the build pre-requisites for both devilutionX (see "Installing Dependencies on Debian and Ubuntu" under the "Linux" section above) and [WSL remote development](https://docs.microsoft.com/en-us/cpp/linux/connect-to-your-remote-linux-computer?view=msvc-160#connect-to-wsl).
2. Select the `WSL-GCC-x64-Debug` configuration.
2. Select the `WSL-GCC-x64-Debug` configuration.
3. Select `Build devilution` from the `Build` menu.
3. Select `Build devilution` from the `Build` menu.
@ -188,16 +217,19 @@ The location of this tool will need to be [added to the system's PATH environmen
5. In case you need to select any paths to dependencies manually do this right in cmake-gui window.
5. In case you need to select any paths to dependencies manually do this right in cmake-gui window.
6. Press `Generate` and open produced `.sln` file using Visual Studio.
6. Press `Generate` and open produced `.sln` file using Visual Studio.
7. Use build/debug etc. commands inside Visual Studio Solution like with any normal Visual Studio project.
7. Use build/debug etc. commands inside Visual Studio Solution like with any normal Visual Studio project.
@ -338,9 +386,11 @@ End-user manuals are available here:
<details><summary>Clockwork PI GameShell</summary>
<details><summary>Clockwork PI GameShell</summary>
You can either call
You can either call
~~~ bash
~~~ bash
Packaging/cpi-gamesh/build.sh
Packaging/cpi-gamesh/build.sh
~~~
~~~
to install dependencies and build the code.
to install dependencies and build the code.
Or you create a new directory under `/home/cpi/apps/Menu` and copy [the file](Packaging/cpi-gamesh/__init__.py) there. After restarting the UI, you can download and compile the game directly from the device itself. See [the readme](Packaging/cpi-gamesh/readme.md) for more details.
Or you create a new directory under `/home/cpi/apps/Menu` and copy [the file](Packaging/cpi-gamesh/__init__.py) there. After restarting the UI, you can download and compile the game directly from the device itself. See [the readme](Packaging/cpi-gamesh/readme.md) for more details.
@ -391,6 +441,7 @@ To then run it:
cd build-em
cd build-em
emrun index.html
emrun index.html
~~~
~~~
</details>
</details>
<details><summary>Xbox One/Series</summary>
<details><summary>Xbox One/Series</summary>
@ -411,11 +462,13 @@ _Note: Visual Studio Community Edition can be used._
- `-DCMAKE_BUILD_TYPE=Release` changed build type to release and optimize for distribution.
- `-DCMAKE_BUILD_TYPE=Release` changed build type to release and optimize for distribution.
- `-DNONET=ON` disable network support, this also removes the need for the ASIO and Sodium.
- `-DNONET=ON` disable network support, this also removes the need for the ASIO and Sodium.
- `-DUSE_SDL1=ON` build for SDL v1 instead of v2, not all features are supported under SDL v1, notably upscaling.
- `-DUSE_SDL1=ON` build for SDL v1 instead of v2, not all features are supported under SDL v1, notably upscaling.
- `-DCMAKE_TOOLCHAIN_FILE=../CMake/platforms/linux_i386.toolchain..cmake` generate 32bit builds on 64bit platforms (remember to use the `linux32` command if on Linux).
- `-DCMAKE_TOOLCHAIN_FILE=../CMake/platforms/linux_i386.toolchain..cmake` generate 32bit builds on 64bit platforms (remember to use the `linux32` command if on Linux).
### Debug builds
### Debug builds
- `-DDEBUG=OFF` disable debug mode of the Diablo engine.
- `-DDEBUG=OFF` disable debug mode of the Diablo engine.
First, you will need access to the game's MPQ files.
First, you will need access to the game's MPQ files.
- Locate `DIABDAT.MPQ` on your CD, or in the [GoG](https://www.gog.com/game/diablo) installation (or [extract it from the GoG installer](https://github.com/diasurgical/devilutionX/wiki/Extracting-the-.MPQs-from-the-GoG-installer)).
- Locate `DIABDAT.MPQ` on your CD, or in the [GoG](https://www.gog.com/game/diablo) installation (or [extract it from the GoG installer](https://github.com/diasurgical/devilutionX/wiki/Extracting-the-.MPQs-from-the-GoG-installer)).
- For the Diablo: Hellfire expansion you will also need `hellfire.mpq`, `hfmonk.mpq`, `hfmusic.mpq`, `hfvoice.mpq`.
- For the Diablo: Hellfire expansion you will also need `hellfire.mpq`, `hfmonk.mpq`, `hfmusic.mpq`, `hfvoice.mpq`.
- DevilutionX comes with [devilutionx.mpq](https://github.com/diasurgical/devilutionx-assets/releases/download/v2/devilutionx.mpq) which is required to run the game properly.
- DevilutionX comes with [devilutionx.mpq](https://github.com/diasurgical/devilutionx-assets/releases/download/v2/devilutionx.mpq) which is required to run the game properly.
@ -13,9 +14,10 @@ Download the latest [DevilutionX release](https://github.com/diasurgical/devilut
- Install via `adb install` (if USB debugging is enabled on the device)
- Copy the APK file to the device and tap on it in the device's file explorer and follow the instructions
- Install via `adb install` (if USB debugging is enabled on the device)
Then launch the App, this will let it create the folder where you need to place the MPQ files.
Then launch the App, this will let it create the folder where you need to place the MPQ files.
@ -44,8 +46,8 @@ When the transfer is done you can disconnect your device and press "Check again"
- Copy the MPQ files to the folder containing the DevilutionX executable, or to the data folder. The data folder path may differ depending on distro, version, and security settings, but will normally be `~/.local/share/diasurgical/devilution/`
- Copy the MPQ files to the folder containing the DevilutionX executable, or to the data folder. The data folder path may differ depending on distro, version, and security settings, but will normally be `~/.local/share/diasurgical/devilution/`