diff --git a/.github/workflows/build-rom/action.yml b/.github/workflows/build-rom/action.yml new file mode 100644 index 000000000..cef277b20 --- /dev/null +++ b/.github/workflows/build-rom/action.yml @@ -0,0 +1,61 @@ +name: 'Build ROM' + +description: 'Builds the ROM image' + +runs: + using: "composite" + steps: + - name: Update and Install Software + shell: bash + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + sudo apt update + sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade + sudo apt -y --allow-downgrades install g++-10-multilib linux-libc-dev binutils-arm-none-eabi p7zip-full pkg-config libpugixml-dev ppa-purge + sudo ppa-purge -y ppa:ubuntu-toolchain-r/test || true + sudo dpkg --add-architecture i386 + sudo mkdir -pm755 /etc/apt/keyrings + sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key + sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport + sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources + sudo apt update + sudo apt -y --allow-downgrades install --install-recommends winehq-stable + + - name: Setup Repo + shell: bash + run: | + mkdir -p ~/download + cd ~/download + wget https://github.com/pret/pokeheartgold/raw/workflows/assets/mwccarm.zip + wget https://github.com/pret/pokeheartgold/raw/workflows/assets/NitroSDK-3_2-060901.7z + unzip mwccarm.zip + mv mwccarm $GITHUB_WORKSPACE/tools + 7z x NitroSDK-3_2-060901.7z + mv NitroSDK-3_2-060901/tools/bin $GITHUB_WORKSPACE/tools + mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/sub/ + mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/ + mv NitroSDK-3_2-060901/include/nitro/specfiles/mwldarm.response.template $GITHUB_WORKSPACE/ + working-directory: ~ + + - name: Set Swap Space + uses: pierotofy/set-swap-space@master + with: + swap-size-gb: 19 + + - name: Build ROM + shell: bash + run: make -j${nproc} + + - name: Archive build artifacts + if: ${{ always() && env.NONMATCHING == 0 }} + shell: bash + run: | + find . -maxdepth 2 -type d \( -name build -or -name files \) -exec tar -czhf ${GAME_VERSION}_build.tar.gz {} + + + - name: Upload build artifacts + if: ${{ always() && env.NONMATCHING == 0 }} + uses: actions/upload-artifact@v4 + with: + name: ${{ env.GAME_VERSION }}-build + path: ${{ env.GAME_VERSION }}_build.tar.gz + retention-days: 1 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 228093db5..d17bf8736 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,94 +13,122 @@ env: CALCROM_DISCORD_WEBHOOK_AVATAR_URL: "https://i.imgur.com/38BQHdd.png" CALCROM_DISCORD_WEBHOOK_USERNAME: OK CALCROM_WEBHOOK_URL: ${{ secrets.WEBHOOKURL }} - COMPARE: 1 jobs: - build: + build-heartgold: runs-on: ubuntu-22.04 steps: - - name: Update and Install Software - run: | - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt update - sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade - sudo apt -y --allow-downgrades install g++-10-multilib linux-libc-dev binutils-arm-none-eabi p7zip-full pkg-config libpugixml-dev ppa-purge - sudo ppa-purge -y ppa:ubuntu-toolchain-r/test || true - sudo dpkg --add-architecture i386 - sudo mkdir -pm755 /etc/apt/keyrings - sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key - sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport - sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources - sudo apt update - sudo apt -y --allow-downgrades install --install-recommends winehq-stable + - name: Checkout Repo + uses: actions/checkout@v4 + + - name: Build ROM + env: + GAME_VERSION: HEARTGOLD + GAME_LANGUAGE: ENGLISH + GAME_REVISION: 0 + NONMATCHING: 0 + COMPARE: 1 + BUILD_OUT: build/heartgold.us/ + uses: ./.github/workflows/build-rom + + build-soulsilver: + runs-on: ubuntu-22.04 + steps: - name: Checkout Repo uses: actions/checkout@v4 - - name: Setup Repo - run: | - mkdir -p ~/download - cd ~/download - wget https://github.com/pret/pokeheartgold/raw/workflows/assets/mwccarm.zip - wget https://github.com/pret/pokeheartgold/raw/workflows/assets/NitroSDK-3_2-060901.7z - unzip mwccarm.zip - mv mwccarm $GITHUB_WORKSPACE/tools - 7z x NitroSDK-3_2-060901.7z - mv NitroSDK-3_2-060901/tools/bin $GITHUB_WORKSPACE/tools - mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/sub/ - mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/ - mv NitroSDK-3_2-060901/include/nitro/specfiles/mwldarm.response.template $GITHUB_WORKSPACE/ - working-directory: ~ - - - name: Set Swap Space - uses: pierotofy/set-swap-space@master - with: - swap-size-gb: 19 + - name: Build ROM + env: + GAME_VERSION: SOULSILVER + GAME_LANGUAGE: ENGLISH + GAME_REVISION: 0 + NONMATCHING: 0 + COMPARE: 1 + BUILD_OUT: build/soulsilver.us/ + uses: ./.github/workflows/build-rom + + build-nonmatching-heartgold: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout Repo + uses: actions/checkout@v4 - - name: Build HeartGold + - name: Build ROM env: GAME_VERSION: HEARTGOLD GAME_LANGUAGE: ENGLISH GAME_REVISION: 0 - run: make -j${nproc} + NONMATCHING: 1 + COMPARE: 0 + uses: ./.github/workflows/build-rom - - name: Build SoulSilver + build-nonmatching-soulsilver: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + + - name: Build ROM env: GAME_VERSION: SOULSILVER GAME_LANGUAGE: ENGLISH GAME_REVISION: 0 - run: make -j${nproc} + NONMATCHING: 1 + COMPARE: 0 + uses: ./.github/workflows/build-rom + + post-merge: + runs-on: ubuntu-22.04 + if: | + always() && + (github.event_name == 'push') && + contains(join(needs.*.result, ','), 'success') + needs: [build-heartgold, build-soulsilver, build-nonmatching-heartgold, build-nonmatching-soulsilver] + + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + + - name: Download HeartGold build artifacts + uses: actions/download-artifact@v4 + with: + name: HEARTGOLD-build + + - name: Download SoulSilver build/ artifacts + uses: actions/download-artifact@v4 + with: + name: SOULSILVER-build + + - name: Extract build artifacts + run: | + mkdir HEARTGOLD_build/ + mkdir SOULSILVER_build/ + mkdir -p build/heartgold.us/ + mkdir -p build/soulsilver.us/ + mkdir -p sub/build/ + tar -xzvhf HEARTGOLD_build.tar.gz -C HEARTGOLD_build/ + tar -xzvhf SOULSILVER_build.tar.gz -C SOULSILVER_build/ + cp -r HEARTGOLD_build/build/heartgold.us/ build/ + cp -r SOULSILVER_build/build/soulsilver.us/ build/ + cp -r HEARTGOLD_build/sub/build/ sub/ - name: Webhook - if: ${{ github.event_name == 'push' }} run: | sudo chmod 755 $GITHUB_WORKSPACE/.github/calcrom/webhook.sh $GITHUB_WORKSPACE/.github/calcrom/webhook.sh pokeheartgold "$CALCROM_WEBHOOK_URL" continue-on-error: true - - name: Post error archive - if: failure() - continue-on-error: true - run: find . -maxdepth 2 -type d \( -name build -or -name files \) -exec tar -czvhf failure.tar.gz {} + - - - name: Post error upload - if: failure() - uses: actions/upload-artifact@v4 - with: - name: pokeheartgold-failure-${{ github.run_id }} - path: failure.tar.gz - retention-days: 1 - - name: Checkout xMAP - if: ${{ github.event_name == 'push' }} uses: actions/checkout@v4 with: path: 'xmap' ref: 'xmap' - name: Move xMAP - if: ${{ github.event_name == 'push' }} run: | mkdir -p xmap cp build/heartgold.us/*.xMAP xmap/heartgoldus.xMAP @@ -108,10 +136,8 @@ jobs: echo "XMAP_COMMIT_MSG=$( git log --format=%s ${GITHUB_SHA} )" >> $GITHUB_ENV - name: Update xMAP - if: ${{ github.event_name == 'push' }} uses: EndBug/add-and-commit@v9 with: cwd: "./xmap" add: "*.xMAP" message: ${{ env.XMAP_COMMIT_MSG }} - diff --git a/config.mk b/config.mk index f34f7025b..c358df62c 100644 --- a/config.mk +++ b/config.mk @@ -1,6 +1,7 @@ GAME_VERSION ?= HEARTGOLD GAME_REMASTER ?= 0 GAME_LANGUAGE ?= ENGLISH +NONMATCHING ?= 0 ifeq ($(GAME_VERSION),HEARTGOLD) buildname := heartgold @@ -36,6 +37,9 @@ GF_DEFINES := -D$(GAME_VERSION) -DGAME_REMASTER=$(GAME_REMASTER) -D$(GAME_LANGU ifeq ($(NO_GF_ASSERT),) GF_DEFINES += -DPM_KEEP_ASSERTS endif +ifneq ($(NONMATCHING),0) +GF_DEFINES += -DNONMATCHING +endif GLB_DEFINES := -DSDK_ARM9 -DSDK_CODE_ARM -DSDK_FINALROM DEFINES = $(GF_DEFINES) $(GLB_DEFINES) diff --git a/src/voltorb_flip/voltorb_flip.c b/src/voltorb_flip/voltorb_flip.c index 77c31c98a..2348beae4 100644 --- a/src/voltorb_flip/voltorb_flip.c +++ b/src/voltorb_flip/voltorb_flip.c @@ -1722,15 +1722,31 @@ static void ov122_021E7BD4(VoltorbFlipAppWork *work) { SpriteRenderer *var1 = work->unk144; SpriteGfxHandler *var2 = work->unk148; - SpriteRenderer_LoadPlttResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000010_bin, 0, 5, 1, 0); - SpriteRenderer_LoadCharResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000011_bin, 1, 1, 0); - SpriteRenderer_LoadCellResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000012_bin, 1, 0); - SpriteRenderer_LoadAnimResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000013_bin, 1, 0); - - SpriteRenderer_LoadPlttResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000014_bin, 0, 1, 2, 1); - SpriteRenderer_LoadCharResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000015_bin, 1, 2, 1); - SpriteRenderer_LoadCellResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000016_bin, 1, 1); - SpriteRenderer_LoadAnimResObjFromOpenNarc(var1, var2, work->narc, NARC_voltorb_flip_voltorb_flip_00000017_bin, 1, 1); + SpriteRenderer_LoadPlttResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000010_bin, 0, 5, NNS_G2D_VRAM_TYPE_2DMAIN, 0); + SpriteRenderer_LoadCharResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000011_bin, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 0); + SpriteRenderer_LoadCellResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000012_bin, NNS_G2D_VRAM_TYPE_2DMAIN, 0); + SpriteRenderer_LoadAnimResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000013_bin, NNS_G2D_VRAM_TYPE_2DMAIN, 0); + + SpriteRenderer_LoadPlttResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000014_bin, 0, 1, NNS_G2D_VRAM_TYPE_2DSUB, 1); + SpriteRenderer_LoadCharResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000015_bin, 1, NNS_G2D_VRAM_TYPE_2DSUB, 1); + SpriteRenderer_LoadCellResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000016_bin, NNS_G2D_VRAM_TYPE_2DMAIN, 1); + SpriteRenderer_LoadAnimResObjFromOpenNarc( + var1, var2, work->narc, + NARC_voltorb_flip_voltorb_flip_00000017_bin, NNS_G2D_VRAM_TYPE_2DMAIN, 1); } #else asm void ov122_021E7BD4(VoltorbFlipAppWork *work) {