From 9d7306becc28343ffd1b3b3bbba31478f6954bfb Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 22 Dec 2023 10:16:54 +0100 Subject: [PATCH] repo init [skip ci] --- .github/workflows/build_mame.yml | 142 +++++++++++++++---- .gitignore | 1 + automation_tools/install_dependencies.sh | 5 + automation_tools/update_mame_manifest.sh | 20 +++ mame-module.yml | 46 +++++++ mame-patches/floppy.patch | 41 ++++++ mame-patches/mame.ini | 33 +++++ mame-patches/sound.patch | 28 ++++ mame-patches/ym3802.patch | 13 ++ manifest-header.yml | 39 ++++++ net.retrodeck.mame | 167 +++++++++++++++++++++++ net.retrodeck.mame.yml | 83 +++++++++++ 12 files changed, 593 insertions(+), 25 deletions(-) create mode 100644 .gitignore create mode 100755 automation_tools/install_dependencies.sh create mode 100755 automation_tools/update_mame_manifest.sh create mode 100644 mame-module.yml create mode 100644 mame-patches/floppy.patch create mode 100644 mame-patches/mame.ini create mode 100644 mame-patches/sound.patch create mode 100644 mame-patches/ym3802.patch create mode 100644 manifest-header.yml create mode 100644 net.retrodeck.mame create mode 100644 net.retrodeck.mame.yml diff --git a/.github/workflows/build_mame.yml b/.github/workflows/build_mame.yml index 18a6a3e..68569a2 100644 --- a/.github/workflows/build_mame.yml +++ b/.github/workflows/build_mame.yml @@ -1,36 +1,128 @@ -# This is a basic workflow to help you get started with Actions +name: "Build MAME" -name: CI - -# Controls when the workflow will run on: - # Triggers the workflow on push or pull request events but only for the "main" branch push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - - # Allows you to run this workflow manually from the Actions tab workflow_dispatch: -# A workflow run is made up of one or more jobs that can run sequentially or in parallel + jobs: - # This workflow contains a single job called "build" - build: - # The type of runner that the job will run on + + Building_RetroDECK: + #runs-on: self-hosted runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - # Runs a single command using the runners shell - - name: Run a one-line script - run: echo Hello, world! + # Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317 + - name: Remove stuck mounts + run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK-MAME/RetroDECK-MAME/.flatpak-builder/rofiles/* + continue-on-error: true + + - name: Clone repo + uses: actions/checkout@v3 + with: + submodules: 'true' - # Runs a set of commands using the runners shell - - name: Run a multi-line script + - name: "Install dependencies" + run: "automation_tools/install_dependencies.sh" + + - name: "Creating MAME manifest" + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/update_mame_manifest.sh" + + - name: "Adding flatpak portal for automated updates (cooker only)" + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh" + + - name: "Updating release notes in appdata" + run: "automation_tools/appdata_management.sh" + + - name: "[DEBUG] Outputting manifest" + run: cat net.retrodeck.retrodeck.yml + + - name: "Build flatpak: download only" + id: "flatpak-download" + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" + continue-on-error: true + + # Sometimes flatpak download fails, in this case it tries a second time + - name: "Build flatpak: download only (retry)" + if: steps.flatpak-download.outcome == 'failure' run: | - echo Add other actions to build, - echo test, and deploy your project. + echo "Download failed, maybe some hash changed since the build start." + echo "Recalculating hashes and retrying download..." + rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" + cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" + "${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" + "${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" + + - name: Build flatpak + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" + + - name: Create Artifact for flathub + run: | + tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.tar.gz -C ${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker . + hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.tar.gz)) + echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.sha + mv -f RetroDECK-Artifact-cooker.* ${{ secrets.ARTIFACT_REPO }} + continue-on-error: true + + - name: Create Bundle + run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" + + - name: Set environment variable with current branch name + run: echo "GITHUB_REF_SLUG=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV + + - name: Get commits since last release + run: | + # Get the latest release tag + LATEST_TAG=$(git describe --tags --abbrev=0) + # Get all commits since the latest release tag + COMMITS=$(git log $LATEST_TAG..HEAD --pretty=format:"- %s") + # Set the output variable + echo "::set-output name=commits::$COMMITS" + id: commits + continue-on-error: true + + - name: Get branch name + id: branch_name + run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV + + # if it's a feature branch it will not marked as "latest" cooker version + - name: "Set makeLatest (cooker only)" + run: | + if [[ "$BRANCH_NAME" == 'feat/'* ]]; then + echo "MAKE_LATEST=false" >> $GITHUB_ENV + else + echo "MAKE_LATEST=true" >> $GITHUB_ENV + fi + + - name: Publish the flatpak in a new cooker release + uses: ncipollo/release-action@v1 + with: + tag: "${{env.BRANCH_NAME}}-${{ env.buildid }}" + body: | + # Release Notes (Cooker) + This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}. + On branch [${{env.BRANCH_NAME}}](https://github.com/XargonWan/RetroDECK/tree/${{env.BRANCH_NAME}}). + + ## Commits since last release + ${{ steps.commits.outputs.commits }} + + For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/qQcrFvaA2C) on our Discord server. + + Cooker channel is provided for the community to test fixes and explore new functionality. + Please DO NOT open issues or ask support on this build. + + artifacts: "RetroDECK-cooker.flatpak,RetroDECK-Artifact.tar.gz" + allowUpdates: true + makeLatest: ${{env.MAKE_LATEST}} # if it's a feat branch is not considered the latest build + token: ${{ secrets.TRIGGER_BUILD_TOKEN }} + repo: RetroDECK-cooker + continue-on-error: true + + # In case it cannot publish the release at least it's providing the flatpak file for creating a manual release + - name: Upload RetroDECK-cooker.flatpak + uses: actions/upload-artifact@v3 + with: + name: retrodeck-flatpak + path: RetroDECK-cooker.flatpak + continue-on-error: true + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e9c05e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +RetroDECK \ No newline at end of file diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh new file mode 100755 index 0000000..e4cc626 --- /dev/null +++ b/automation_tools/install_dependencies.sh @@ -0,0 +1,5 @@ +#!/bin/bash +# This scritp is installing the required dependencies to correctly run the pipeline and buold the flatpak + +sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl +flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo \ No newline at end of file diff --git a/automation_tools/update_mame_manifest.sh b/automation_tools/update_mame_manifest.sh new file mode 100755 index 0000000..0328f2b --- /dev/null +++ b/automation_tools/update_mame_manifest.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +git clone https://github.com/XargonWan/RetroDECK --depth=1 RetroDECK + +# Creating MAME manifest +manifest_header="manifest-header.yml" +mame_module="mame-module.yml" +mame_manifest="net.retrodeck.mame" + +sed -n '/cleanup/q;p' RetroDECK/net.retrodeck.retrodeck.yml > "$manifest_header" +sed -i '/^[[:space:]]*#/d' "$manifest_header" +sed -i 's/[[:space:]]*#.*$//' "$manifest_header" + +sed -i 's/net.retrodeck.retrodeck/net.retrodeck.mame/' "$manifest_header" +sed -i 's/retrodeck\.sh/mame/' "$manifest_header" + +cat "$manifest_header" >> "$mame_manifest" +cat "$mame_module" >> "$mame_manifest" + +rm -rf RetroDECK \ No newline at end of file diff --git a/mame-module.yml b/mame-module.yml new file mode 100644 index 0000000..72b5c3c --- /dev/null +++ b/mame-module.yml @@ -0,0 +1,46 @@ +modules: + + - name: mame + buildsystem: simple + build-options: + no-debuginfo: true + strip: true + build-commands: + - make + -j echo $(nproc) + CFLAGS+=-Wno-error=restrict + USE_QTDEBUG=0 + USE_WAYLAND=1 + USE_SYSTEM_LIB_FLAC=1 + SDL_INI_PATH='$$HOME/.APP_NAME;/app/share/APP_NAME/ini' + LDOPTS=-Wl,-s + - install -Dm 0755 mame ${FLATPAK_DEST}/bin/mame + - cp COPYING ${FLATPAK_DEST}/bin/ + - cp uismall.bdf ${FLATPAK_DEST}/bin/ + - mkdir -p ${FLATPAK_DEST}/share/mame/ + - cp -r artwork/ ${FLATPAK_DEST}/share/mame/ + - cp -r bgfx/ ${FLATPAK_DEST}/share/mame/ + - cp -r ctrlr/ ${FLATPAK_DEST}/share/mame/ + - mkdir -p ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/legal/ ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/man/ ${FLATPAK_DEST}/share/mame/docs + - cp -r hash/ ${FLATPAK_DEST}/share/mame/ + - cp -r hlsl/ ${FLATPAK_DEST}/share/mame/ + - cp -r ini/ ${FLATPAK_DEST}/share/mame/ + - install -Dm 0644 mame.ini ${FLATPAK_DEST}/share/mame/ini/mame.ini + - cp -r language/ ${FLATPAK_DEST}/share/mame/ + - cp -r plugins/ ${FLATPAK_DEST}/share/mame/ + - cp -r roms/ ${FLATPAK_DEST}/share/mame/ + - cp -r samples/ ${FLATPAK_DEST}/share/mame/ + sources: + - type: archive + url: https://github.com/mamedev/mame/archive/refs/tags/mame0261.tar.gz + sha256: 51d5ce1563897709ceb7a924c31a70cc5ff2bec466aab8d0cc9ff3cc72b38899 + - type: file + path: mame-patches/mame.ini + - type: patch + path: mame-patches/floppy.patch + - type: patch + path: mame-patches/sound.patch + - type: patch + path: mame-patches/ym3802.patch \ No newline at end of file diff --git a/mame-patches/floppy.patch b/mame-patches/floppy.patch new file mode 100644 index 0000000..1754f61 --- /dev/null +++ b/mame-patches/floppy.patch @@ -0,0 +1,41 @@ +diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp +index 3c00336d..cda94d92 100644 +--- a/src/devices/imagedev/floppy.cpp ++++ b/src/devices/imagedev/floppy.cpp +@@ -1707,9 +1707,10 @@ void floppy_sound_device::sound_stream_update(sound_stream &stream, std::vector< + { + idx = m_spin_playback_sample; + sampleend = m_sample[idx].data.size(); +- out = m_sample[idx].data[m_spin_samplepos++]; +- +- if (m_spin_samplepos >= sampleend) ++ m_spin_samplepos++; ++ if (m_spin_samplepos < sampleend) ++ out = m_sample[idx].data[m_spin_samplepos]; ++ else + { + // Motor sample has completed + switch (m_spin_playback_sample) +@@ -1763,7 +1764,8 @@ void floppy_sound_device::sound_stream_update(sound_stream &stream, std::vector< + idx = m_step_base + m_seek_playback_sample; + sampleend = m_sample[idx].data.size(); + // Mix it into the stream value +- out += m_sample[idx].data[(int)m_seek_samplepos]; ++ if (m_seek_samplepos < sampleend) ++ out += m_sample[idx].data[(int)m_seek_samplepos]; + // By adding different values than 1, we can change the playback speed + // This will be used to adjust the seek sound + m_seek_samplepos += m_seek_pitch; +@@ -1781,8 +1783,10 @@ void floppy_sound_device::sound_stream_update(sound_stream &stream, std::vector< + sampleend = m_sample[idx].data.size(); + + // Mix it into the stream value +- out += m_sample[idx].data[m_step_samplepos++]; +- if (m_step_samplepos >= sampleend) ++ m_step_samplepos++; ++ if (m_step_samplepos < sampleend) ++ out += m_sample[idx].data[m_step_samplepos]; ++ else + { + // Step sample done + m_step_samplepos = 0; \ No newline at end of file diff --git a/mame-patches/mame.ini b/mame-patches/mame.ini new file mode 100644 index 0000000..0164486 --- /dev/null +++ b/mame-patches/mame.ini @@ -0,0 +1,33 @@ +# +# CORE SEARCH PATH OPTIONS +# +homepath $HOME/.mame +rompath /app/share/mame/roms +hashpath /app/share/mame/hash +samplepath /app/share/mame/samples +artpath /app/share/mame/artwork +ctrlrpath /app/share/mame/ctrlr +inipath $HOME/.mame;/app/share/mame/ini +fontpath /app/bin/ +cheatpath /app/share/mame/cheat +crosshairpath /app/share/mame/crosshair +pluginspath /app/share/mame/plugins +languagepath /app/share/mame/language +swpath /app/share/mame/software + +# +# CORE OUTPUT DIRECTORY OPTIONS +# +cfg_directory $HOME/.mame/cfg +nvram_directory $HOME/.mame/nvram +input_directory $HOME/.mame/inp +state_directory $HOME/.mame/sta +snapshot_directory $HOME/.mame/snap +diff_directory $HOME/.mame/diff +comment_directory $HOME/.mame/comments +share_directory $HOME/.mame/share + +# +# OSD VIDEO OPTIONS +# +video opengl \ No newline at end of file diff --git a/mame-patches/sound.patch b/mame-patches/sound.patch new file mode 100644 index 0000000..84b51ff --- /dev/null +++ b/mame-patches/sound.patch @@ -0,0 +1,28 @@ +diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp +index a0293063..c4989abb 100644 +--- a/src/emu/sound.cpp ++++ b/src/emu/sound.cpp +@@ -761,6 +761,9 @@ read_stream_view sound_stream::update_view(attotime start, attotime end, u32 out + } + g_profiler.stop(); + ++ if (!m_output_view[outputnum].valid()) ++ m_output_view[outputnum] = empty_view(start, end); ++ + // return the requested view + return read_stream_view(m_output_view[outputnum], start); + } +diff --git a/src/emu/sound.h b/src/emu/sound.h +index 15f6a574..bfa45c45 100644 +--- a/src/emu/sound.h ++++ b/src/emu/sound.h +@@ -284,6 +284,9 @@ public: + return *this; + } + ++ // check basic constraints ++ bool valid() const { return m_buffer != nullptr; } ++ + // return the local gain + sample_t gain() const { return m_gain; } + \ No newline at end of file diff --git a/mame-patches/ym3802.patch b/mame-patches/ym3802.patch new file mode 100644 index 0000000..a48925a --- /dev/null +++ b/mame-patches/ym3802.patch @@ -0,0 +1,13 @@ +diff --git a/src/devices/machine/ym3802.cpp b/src/devices/machine/ym3802.cpp +index 4a8f6a7ffae..d1bf2b961f6 100644 +--- a/src/devices/machine/ym3802.cpp ++++ b/src/devices/machine/ym3802.cpp +@@ -45,7 +45,7 @@ void ym3802_device::device_start() + + void ym3802_device::device_reset() + { +- m_reg.clear(); ++ m_reg.assign(REG_MAX, 0); + reset_irq(0xff); + transmit_register_reset(); + receive_register_reset(); \ No newline at end of file diff --git a/manifest-header.yml b/manifest-header.yml new file mode 100644 index 0000000..d4631e4 --- /dev/null +++ b/manifest-header.yml @@ -0,0 +1,39 @@ +app-id: net.retrodeck.mame +runtime: org.kde.Platform +runtime-version: "6.5" +sdk: org.kde.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.llvm16 +command: mame + +add-extensions: + org.ppsspp.PPSSPP.Locale: + directory: share/locale + bundle: true + no-autodownload: false + subdirectories: false + autodelete: true + locale-subset: true + +finish-args: + - --socket=fallback-x11 + - --socket=wayland + - --socket=pulseaudio + - --share=ipc + - --share=network + - --device=all + - --filesystem=home + - --filesystem=/run/media + - --filesystem=/media + - --filesystem=home/.var/app/com.valvesoftware.Steam + - --allow=multiarch + - --talk-name=org.freedesktop.ScreenSaver + - --talk-name=org.freedesktop.PowerManagement.Inhibit + - --talk-name=org.freedesktop.login1.Manager + - --talk-name=org.freedesktop.portal.Flatpak.UpdateMonitor + - --filesystem=xdg-run/app/com.discordapp.Discord:create + - --allow=bluetooth + - --env=SDL_VIDEO_X11_WMCLASS=net.retrodeck.mame + - --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.mame + - --unset-env=QEMU_AUDIO_DRV + diff --git a/net.retrodeck.mame b/net.retrodeck.mame new file mode 100644 index 0000000..a6feb68 --- /dev/null +++ b/net.retrodeck.mame @@ -0,0 +1,167 @@ +app-id: net.retrodeck.mame +runtime: org.kde.Platform +runtime-version: "6.5" +sdk: org.kde.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.llvm16 +command: mame + +add-extensions: + org.ppsspp.PPSSPP.Locale: + directory: share/locale + bundle: true + no-autodownload: false + subdirectories: false + autodelete: true + locale-subset: true + +finish-args: + - --socket=fallback-x11 + - --socket=wayland + - --socket=pulseaudio + - --share=ipc + - --share=network + - --device=all + - --filesystem=home + - --filesystem=/run/media + - --filesystem=/media + - --filesystem=home/.var/app/com.valvesoftware.Steam + - --allow=multiarch + - --talk-name=org.freedesktop.ScreenSaver + - --talk-name=org.freedesktop.PowerManagement.Inhibit + - --talk-name=org.freedesktop.login1.Manager + - --talk-name=org.freedesktop.portal.Flatpak.UpdateMonitor + - --filesystem=xdg-run/app/com.discordapp.Discord:create + - --allow=bluetooth + - --env=SDL_VIDEO_X11_WMCLASS=net.retrodeck.mame + - --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.mame + - --unset-env=QEMU_AUDIO_DRV + + - name: mame + buildsystem: simple + build-options: + no-debuginfo: true + strip: true + build-commands: + - make + -j echo $(nproc) + CFLAGS+=-Wno-error=restrict + USE_QTDEBUG=0 + USE_WAYLAND=1 + USE_SYSTEM_LIB_FLAC=1 + SDL_INI_PATH='$$HOME/.APP_NAME;/app/share/APP_NAME/ini' + LDOPTS=-Wl,-s + - install -Dm 0755 mame ${FLATPAK_DEST}/bin/mame + - cp COPYING ${FLATPAK_DEST}/bin/ + - cp uismall.bdf ${FLATPAK_DEST}/bin/ + - mkdir -p ${FLATPAK_DEST}/share/mame/ + - cp -r artwork/ ${FLATPAK_DEST}/share/mame/ + - cp -r bgfx/ ${FLATPAK_DEST}/share/mame/ + - cp -r ctrlr/ ${FLATPAK_DEST}/share/mame/ + - mkdir -p ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/legal/ ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/man/ ${FLATPAK_DEST}/share/mame/docs + - cp -r hash/ ${FLATPAK_DEST}/share/mame/ + - cp -r hlsl/ ${FLATPAK_DEST}/share/mame/ + - cp -r ini/ ${FLATPAK_DEST}/share/mame/ + - install -Dm 0644 mame.ini ${FLATPAK_DEST}/share/mame/ini/mame.ini + - cp -r language/ ${FLATPAK_DEST}/share/mame/ + - cp -r plugins/ ${FLATPAK_DEST}/share/mame/ + - cp -r roms/ ${FLATPAK_DEST}/share/mame/ + - cp -r samples/ ${FLATPAK_DEST}/share/mame/ + sources: + - type: archive + url: https://github.com/mamedev/mame/archive/refs/tags/mame0261.tar.gz + sha256: 51d5ce1563897709ceb7a924c31a70cc5ff2bec466aab8d0cc9ff3cc72b38899 + - type: file + path: mame-patches/mame.ini + - type: patch + path: mame-patches/floppy.patch + - type: patch + path: mame-patches/sound.patch + - type: patch + path: mame-patches/ym3802.patchapp-id: net.retrodeck.mame +runtime: org.kde.Platform +runtime-version: "6.5" +sdk: org.kde.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.llvm16 +command: mame + +add-extensions: + org.ppsspp.PPSSPP.Locale: + directory: share/locale + bundle: true + no-autodownload: false + subdirectories: false + autodelete: true + locale-subset: true + +finish-args: + - --socket=fallback-x11 + - --socket=wayland + - --socket=pulseaudio + - --share=ipc + - --share=network + - --device=all + - --filesystem=home + - --filesystem=/run/media + - --filesystem=/media + - --filesystem=home/.var/app/com.valvesoftware.Steam + - --allow=multiarch + - --talk-name=org.freedesktop.ScreenSaver + - --talk-name=org.freedesktop.PowerManagement.Inhibit + - --talk-name=org.freedesktop.login1.Manager + - --talk-name=org.freedesktop.portal.Flatpak.UpdateMonitor + - --filesystem=xdg-run/app/com.discordapp.Discord:create + - --allow=bluetooth + - --env=SDL_VIDEO_X11_WMCLASS=net.retrodeck.mame + - --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.mame + - --unset-env=QEMU_AUDIO_DRV + +modules: + + - name: mame + buildsystem: simple + build-options: + no-debuginfo: true + strip: true + build-commands: + - make + -j echo $(nproc) + CFLAGS+=-Wno-error=restrict + USE_QTDEBUG=0 + USE_WAYLAND=1 + USE_SYSTEM_LIB_FLAC=1 + SDL_INI_PATH='$$HOME/.APP_NAME;/app/share/APP_NAME/ini' + LDOPTS=-Wl,-s + - install -Dm 0755 mame ${FLATPAK_DEST}/bin/mame + - cp COPYING ${FLATPAK_DEST}/bin/ + - cp uismall.bdf ${FLATPAK_DEST}/bin/ + - mkdir -p ${FLATPAK_DEST}/share/mame/ + - cp -r artwork/ ${FLATPAK_DEST}/share/mame/ + - cp -r bgfx/ ${FLATPAK_DEST}/share/mame/ + - cp -r ctrlr/ ${FLATPAK_DEST}/share/mame/ + - mkdir -p ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/legal/ ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/man/ ${FLATPAK_DEST}/share/mame/docs + - cp -r hash/ ${FLATPAK_DEST}/share/mame/ + - cp -r hlsl/ ${FLATPAK_DEST}/share/mame/ + - cp -r ini/ ${FLATPAK_DEST}/share/mame/ + - install -Dm 0644 mame.ini ${FLATPAK_DEST}/share/mame/ini/mame.ini + - cp -r language/ ${FLATPAK_DEST}/share/mame/ + - cp -r plugins/ ${FLATPAK_DEST}/share/mame/ + - cp -r roms/ ${FLATPAK_DEST}/share/mame/ + - cp -r samples/ ${FLATPAK_DEST}/share/mame/ + sources: + - type: archive + url: https://github.com/mamedev/mame/archive/refs/tags/mame0261.tar.gz + sha256: 51d5ce1563897709ceb7a924c31a70cc5ff2bec466aab8d0cc9ff3cc72b38899 + - type: file + path: mame-patches/mame.ini + - type: patch + path: mame-patches/floppy.patch + - type: patch + path: mame-patches/sound.patch + - type: patch + path: mame-patches/ym3802.patch \ No newline at end of file diff --git a/net.retrodeck.mame.yml b/net.retrodeck.mame.yml new file mode 100644 index 0000000..706aab8 --- /dev/null +++ b/net.retrodeck.mame.yml @@ -0,0 +1,83 @@ +app-id: net.retrodeck.mame +runtime: org.kde.Platform +runtime-version: "6.5" +sdk: org.kde.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.llvm16 +command: mame + +add-extensions: + org.ppsspp.PPSSPP.Locale: + directory: share/locale + bundle: true + no-autodownload: false + subdirectories: false + autodelete: true + locale-subset: true + +finish-args: + - --socket=fallback-x11 + - --socket=wayland + - --socket=pulseaudio + - --share=ipc + - --share=network + - --device=all + - --filesystem=home + - --filesystem=/run/media + - --filesystem=/media + - --filesystem=home/.var/app/com.valvesoftware.Steam + - --allow=multiarch + - --talk-name=org.freedesktop.ScreenSaver + - --talk-name=org.freedesktop.PowerManagement.Inhibit + - --talk-name=org.freedesktop.login1.Manager + - --talk-name=org.freedesktop.portal.Flatpak.UpdateMonitor + - --filesystem=xdg-run/app/com.discordapp.Discord:create + - --allow=bluetooth + - --env=SDL_VIDEO_X11_WMCLASS=net.retrodeck.mame + - --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.mame + - --unset-env=QEMU_AUDIO_DRV + + - name: mame + buildsystem: simple + build-options: + no-debuginfo: true + strip: true + build-commands: + - make + -j echo $(nproc) + CFLAGS+=-Wno-error=restrict + USE_QTDEBUG=0 + USE_WAYLAND=1 + USE_SYSTEM_LIB_FLAC=1 + SDL_INI_PATH='$$HOME/.APP_NAME;/app/share/APP_NAME/ini' + LDOPTS=-Wl,-s + - install -Dm 0755 mame ${FLATPAK_DEST}/bin/mame + - cp COPYING ${FLATPAK_DEST}/bin/ + - cp uismall.bdf ${FLATPAK_DEST}/bin/ + - mkdir -p ${FLATPAK_DEST}/share/mame/ + - cp -r artwork/ ${FLATPAK_DEST}/share/mame/ + - cp -r bgfx/ ${FLATPAK_DEST}/share/mame/ + - cp -r ctrlr/ ${FLATPAK_DEST}/share/mame/ + - mkdir -p ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/legal/ ${FLATPAK_DEST}/share/mame/docs/ + - cp -r docs/man/ ${FLATPAK_DEST}/share/mame/docs + - cp -r hash/ ${FLATPAK_DEST}/share/mame/ + - cp -r hlsl/ ${FLATPAK_DEST}/share/mame/ + - cp -r ini/ ${FLATPAK_DEST}/share/mame/ + - install -Dm 0644 mame.ini ${FLATPAK_DEST}/share/mame/ini/mame.ini + - cp -r language/ ${FLATPAK_DEST}/share/mame/ + - cp -r plugins/ ${FLATPAK_DEST}/share/mame/ + - cp -r roms/ ${FLATPAK_DEST}/share/mame/ + - cp -r samples/ ${FLATPAK_DEST}/share/mame/ + sources: + - type: archive + url: https://github.com/mamedev/mame/archive/refs/tags/mame0261.tar.gz + sha256: 51d5ce1563897709ceb7a924c31a70cc5ff2bec466aab8d0cc9ff3cc72b38899 + - type: file + path: mame-patches/mame.ini + - type: patch + path: mame-patches/floppy.patch + - type: patch + path: mame-patches/sound.patch + - type: patch + path: mame-patches/ym3802.patch \ No newline at end of file