diff --git a/.github/workflows/dreamcast.yml b/.github/workflows/dreamcast.yml index e51c38cc754..c1a44efef56 100644 --- a/.github/workflows/dreamcast.yml +++ b/.github/workflows/dreamcast.yml @@ -6,6 +6,7 @@ on: # yamllint disable-line rule:truthy branches: - master - dreamcast + - fix/ISSUE-15-unpacked-mpqs paths-ignore: - '*.md' - 'docs/**' @@ -32,6 +33,28 @@ jobs: with: fetch-depth: 0 + - name: Build unpack_and_minify_mpq + run: | + git clone https://github.com/diasurgical/devilutionx-mpq-tools/ && \ + cd devilutionx-mpq-tools && \ + cmake -S. -Bbuild-rel -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF && \ + cmake --build build-rel && \ + cmake --install build-rel + + - name: Download and unpack spawn.mpq + run: | + #devilutionx-assets spawn.mpq fails with unpack_and_minify_mpq + #curl -LO https://github.com/diasurgical/devilutionx-assets/releases/download/v4/spawn.mpq + curl -LO https://raw.githubusercontent.com/d07RiV/diabloweb/3a5a51e84d5dab3cfd4fef661c46977b091aaa9c/spawn.mpq + unpack_and_minify_mpq spawn.mpq --output-dir data + rm spawn.mpq + + - name: Download and unpack fonts.mpq + run: | + curl -LO https://github.com/diasurgical/devilutionx-assets/releases/download/v4/fonts.mpq && \ + unpack_and_minify_mpq fonts.mpq --output-dir data/fonts && \ + rm fonts.mpq + - name: Uninstall kos-ports SDL 1.2 run: | source /opt/toolchains/dc/kos/environ.sh && \ @@ -47,20 +70,12 @@ jobs: cp /opt/toolchains/dc/kos/addons/lib/dreamcast/libSDL.a /usr/lib/ && \ cp include/* /usr/include/SDL/ - - name: Download spawn.mpq - run: | - curl -LO https://github.com/diasurgical/devilutionx-assets/releases/download/v4/spawn.mpq - - - name: Download fonts.mpq - run: | - curl -LO https://github.com/diasurgical/devilutionx-assets/releases/download/v4/fonts.mpq - - name: Configure CMake run: | source /opt/toolchains/dc/kos/environ.sh && \ - #uncomment when using packed mpq or save files + #uncomment when using packed save files #without this, cmake can't find the kos-ports bzip2 & zlib libraries - export CMAKE_PREFIX_PATH=/opt/toolchains/dc/kos-ports/libbz2/inst/:/opt/toolchains/dc/kos-ports/zlib/inst/ && \ + #export CMAKE_PREFIX_PATH=/opt/toolchains/dc/kos-ports/libbz2/inst/:/opt/toolchains/dc/kos-ports/zlib/inst/ && \ kos-cmake \ -S . \ -DCMAKE_BUILD_TYPE=Release \ @@ -73,12 +88,12 @@ jobs: - name: Generate .cdi run: | source /opt/toolchains/dc/kos/environ.sh && \ - mv spawn.mpq build/data/ && \ - mv fonts.mpq build/data/fonts/ && \ + mv data/spawn build/data/spawn && \ + mv data/fonts/fonts/fonts/ build/data/fonts/ && \ mkdcdisc -e build/devilutionx.elf -o build/devilutionx.cdi --name 'Diablo 1' -d build/data/ - name: Prepare elf package - run: rm build/data/spawn.mpq && rm build/data/fonts/fonts.mpq + run: rm -rf build/data/spawn && rm -rf build/data/fonts/fonts/ - name: Upload .elf Package if: ${{ !env.ACT }} @@ -117,4 +132,3 @@ jobs: with: file: ./build/devilutionx-dreamcast.zip overwrite: true -... diff --git a/CMake/platforms/dreamcast.cmake b/CMake/platforms/dreamcast.cmake index 4b97cc3a253..ec593569784 100644 --- a/CMake/platforms/dreamcast.cmake +++ b/CMake/platforms/dreamcast.cmake @@ -12,6 +12,7 @@ set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(NOSOUND ON) set(DEVILUTIONX_STATIC_ZLIB ON) +set(UNPACKED_MPQS ON) set(UNPACKED_SAVES ON) set(DEVILUTIONX_SYSTEM_LIBFMT OFF) set(DEVILUTIONX_STATIC_LUA ON) diff --git a/Dockerfile b/Dockerfile index b33cd77d5ea..84f0f0beff3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,12 @@ FROM alpine-kallistios:no-gdb +RUN echo "Building unpack_and_minify_mpq..." +RUN git clone https://github.com/diasurgical/devilutionx-mpq-tools/ && \ + cd devilutionx-mpq-tools && \ + cmake -S. -Bbuild-rel -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF && \ + cmake --build build-rel && \ + cmake --install build-rel + RUN echo "Cloning project..." WORKDIR /opt/toolchains/dc/kos/ RUN git clone -b dreamcast https://github.com/azihassan/devilutionX.git @@ -18,17 +25,21 @@ RUN git clone -b SDL-dreamhal--GLDC https://github.com/GPF/SDL-1.2 && \ cp include/* /usr/include/SDL/ WORKDIR /opt/toolchains/dc/kos/devilutionX -RUN echo "Downloading spawn.mpq..." -RUN curl -LO https://github.com/diasurgical/devilutionx-assets/releases/download/v4/spawn.mpq +RUN echo "Downloading and unpacking spawn.mpq..." +RUN curl -LO https://raw.githubusercontent.com/d07RiV/diabloweb/3a5a51e84d5dab3cfd4fef661c46977b091aaa9c/spawn.mpq && \ + unpack_and_minify_mpq spawn.mpq --output-dir data && \ + rm spawn.mpq -RUN echo "Downloading fonts.mpq..." -RUN curl -LO https://github.com/diasurgical/devilutionx-assets/releases/download/v4/fonts.mpq +RUN echo "Downloading and unpacking fonts.mpq..." +RUN curl -LO https://github.com/diasurgical/devilutionx-assets/releases/download/v4/fonts.mpq && \ + unpack_and_minify_mpq fonts.mpq --output-dir data/fonts && \ + rm fonts.mpq RUN echo "Configuring CMake..." RUN source /opt/toolchains/dc/kos/environ.sh && \ #uncomment when using packed save files #without this, cmake can't find the kos-ports bzip2 & zlib libraries - export CMAKE_PREFIX_PATH=/opt/toolchains/dc/kos-ports/libbz2/inst/:/opt/toolchains/dc/kos-ports/zlib/inst/ && \ + #export CMAKE_PREFIX_PATH=/opt/toolchains/dc/kos-ports/libbz2/inst/:/opt/toolchains/dc/kos-ports/zlib/inst/ && \ kos-cmake -S. -Bbuild RUN echo "Compiling..." @@ -36,8 +47,8 @@ RUN source /opt/toolchains/dc/kos/environ.sh && cd build && kos-make RUN echo "Generating CDI" RUN source /opt/toolchains/dc/kos/environ.sh && \ - mv spawn.mpq build/data/ && \ - mv fonts.mpq build/data/fonts && \ + mv data/spawn build/data/spawn && \ + mv data/fonts/fonts/fonts/ build/data/fonts && \ mkdcdisc -e build/devilutionx.elf -o build/devilutionx.cdi --name 'Diablo 1' -d build/data/ ENTRYPOINT ["sh", "-c", "source /opt/toolchains/dc/kos/environ.sh && \"$@\"", "-s"]