From 05096c1c12bc6a8833c99af1972d4de4449ef8a3 Mon Sep 17 00:00:00 2001 From: self_slaughter Date: Tue, 24 Sep 2019 22:34:35 +1000 Subject: [PATCH 1/6] Version 1.0 --- other_authors/build_mame_roms.sh | 152 +++++++++++++++++++++++++++++++ other_authors/flips | Bin 0 -> 78688 bytes 2 files changed, 152 insertions(+) create mode 100644 other_authors/build_mame_roms.sh create mode 100644 other_authors/flips diff --git a/other_authors/build_mame_roms.sh b/other_authors/build_mame_roms.sh new file mode 100644 index 0000000..ccabe13 --- /dev/null +++ b/other_authors/build_mame_roms.sh @@ -0,0 +1,152 @@ +#!/bin/bash + +# 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 . + +# Copyright 2019 "self_slaughter" + +# Version 1.0 - 2019-09-24 - First commit + +# Note: Some code taken from Locutus73's updater scripts found here: +# https://github.com/MiSTer-devel/Updater_script_MiSTer + + + +# Change MAME_DIR to point to where you have your mame roms mounted +MAME_DIR="/media/fat/Mame/MAME 0.213 ROMs (non-merged)" + +WORK_DIR="/media/fat/Scripts/.mame" +OUTPUT_DIR="/media/fat/bootrom" +CURL_RETRY="--insecure --connect-timeout 15 --max-time 120 --retry 3 --retry-delay 5" +MISTER_URL="https://github.com/MiSTer-devel/Main_MiSTer" + +setup_workspace() { + mkdir "$WORK_DIR" &>/dev/null + mkdir "$OUTPUT_DIR" &>/dev/null + curl $CURL_RETRY -sLF "https://github.com/MiSTer-devel/Scripts_MiSTer/raw/master/other_authors/flips" -o "/media/fat/linux/flip" +} + +cleanup() { + rm -rf "$WORK_DIR" &>/dev/null +} + +find_urls() { + echo "Searching for cores" + CORE_URL=($(curl $CURL_RETRY -sLf "$MISTER_URL/wiki"| awk '/(user-content-cores)|(user-content-computer-cores)/,/user-content-development/' | grep -io '\(https://github.com/[a-zA-Z0-9./_-]*_MiSTer\)' | grep 'Arcade.*')) + echo "${#CORE_URL[@]} cores found!" +} + +find_core_names() { + for url in ${CORE_URL[@]}; do + CORE_NAME+=($(echo "$url" | sed -e 's/https:\/\/github.com\/MiSTer-devel\/Arcade-//gI' -e 's/_MiSTer//gI')) + done +} + +grab_scripts() +{ + count=$(($1 + 1)) + echo -e "\n${CORE_NAME[$1]} ($count/$totalCount)" + mkdir "$WORK_DIR/${CORE_NAME[$1]}" &>/dev/null + echo "- Downloading Scripts" + + SCRIPT_URLS=$(curl $CURL_RETRY -sLf "${CORE_URL[$1]}/raw/master/releases/" | grep -io '\"\/MiSTer\-devel\/[a-zA-Z0-9].*\?\(\.ini\|\.sh\|\.bin\|\.1\|\.2\|\.3\|\.ips\)\"') + for buildFiles in $SCRIPT_URLS; do + buildFile=$(echo "$buildFiles" | sed -e 's/^"//' -e 's/"$//' | grep -io 'releases/.*' | grep -io '/.*' | sed -e 's/\///') + curl $CURL_RETRY -sLf "${CORE_URL[$1]}/raw/master/releases/$buildFile" -o "$WORK_DIR/${CORE_NAME[$1]}/$buildFile" + done +} + +grab_zips() +{ + zip="" + zips="" + cd "$WORK_DIR/${CORE_NAME[$1]}" + for iniFile in *.ini; do + if [ ! -f "$iniFile" ]; then + echo "- Nothing to build" + skipped+=("${CORE_NAME[$1]}") + return 1 + fi + source "$WORK_DIR/${CORE_NAME[$1]}/$iniFile" + if [ -f "$OUTPUT_DIR/${ofile}" ]; then + echo "- ROM Already Exists" + skipped+=("${CORE_NAME[$1]}") + return 1 + fi + echo "- Copying ZIPs" + for zipFile in "${zip:-${zips[@]:-default}}"; do + if [ ! -f "$MAME_DIR/$zipFile" ]; then + echo "- Can't find $zipFile" + failed+=("${CORE_NAME[$1]}") + return 1 + else + cp "$MAME_DIR/$zipFile" "$WORK_DIR/${CORE_NAME[$1]}/" + fi + done + done +} + +build_roms() +{ + cd "$WORK_DIR/${CORE_NAME[$1]}" + for buildScript in *.sh; do + source "$WORK_DIR/${CORE_NAME[$1]}/${buildScript%.*}.ini" + echo "- Building ROM" + chmod +x "$WORK_DIR/${CORE_NAME[$1]}/${buildScript}" &>/dev/null + bash "$WORK_DIR/${CORE_NAME[$1]}/${buildScript}" &>/dev/null + if [ $? -eq 0 ]; then + echo "- Success" + verified+=("${CORE_NAME[$1]}") + else + if [ -f "$WORK_DIR/${CORE_NAME[$1]}/${ofile}" ]; then + echo "- Success (MD5 Fail)" + unverified+=("${CORE_NAME[$1]}") + else + echo "- Build Failed" + failed+=("${CORE_NAME[$1]}") + return 1 + fi + fi + if [ "${ofile}" == "a.JT1943.rom" ] && [ ! -f "$OUTPUT_DIR/a.1943.rom" ]; then + cp "$WORK_DIR/${CORE_NAME[$1]}/${ofile}" "$OUTPUT_DIR/a.1943.rom" + fi + cp "$WORK_DIR/${CORE_NAME[$1]}/${ofile}" "$OUTPUT_DIR/${ofile}" + done +} + +show_stats() +{ + echo -e "\n*** FINISHED ***\n" + echo "Verified: ${#verified[@]}" + echo "Unverified: ${#unverified[@]}" + echo "Failed: ${#failed[@]}" + echo "Skipped: ${#skipped[@]}" +} + +find_urls +find_core_names +cleanup +setup_workspace + +totalCount=${#CORE_URL[@]} +for (( i=0; i<$totalCount; i++ )); +do + grab_scripts "$i" + grab_zips "$i" + if [ $? == 0 ]; then + build_roms "$i" + fi +done + +show_stats +cleanup diff --git a/other_authors/flips b/other_authors/flips new file mode 100644 index 0000000000000000000000000000000000000000..bd7b69337c8048324ce0a6a5db2b4a8481aaa0cf GIT binary patch literal 78688 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 Q;<1^I*uc$H+8KHO4ea&G>;M1& literal 0 HcmV?d00001 From af22b0ad46442b437d3ecb7a20157bfb1c06a920 Mon Sep 17 00:00:00 2001 From: self_slaughter Date: Tue, 24 Sep 2019 23:14:03 +1000 Subject: [PATCH 2/6] Fix flips download --- other_authors/build_mame_roms.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/other_authors/build_mame_roms.sh b/other_authors/build_mame_roms.sh index ccabe13..c4af08b 100644 --- a/other_authors/build_mame_roms.sh +++ b/other_authors/build_mame_roms.sh @@ -33,7 +33,8 @@ MISTER_URL="https://github.com/MiSTer-devel/Main_MiSTer" setup_workspace() { mkdir "$WORK_DIR" &>/dev/null mkdir "$OUTPUT_DIR" &>/dev/null - curl $CURL_RETRY -sLF "https://github.com/MiSTer-devel/Scripts_MiSTer/raw/master/other_authors/flips" -o "/media/fat/linux/flip" + curl $CURL_RETRY -sLf "https://github.com/MiSTer-devel/Scripts_MiSTer/raw/master/other_authors/flips" -o "$WORK_DIR/flips" + cp "$WORK_DIR/flips" "/bin" } cleanup() { From efabbd55e91fc8b937a6b66e1062255a4aa5b53b Mon Sep 17 00:00:00 2001 From: self_slaughter Date: Thu, 26 Sep 2019 22:05:32 +1000 Subject: [PATCH 3/6] Move flips to /media/fat/linux --- other_authors/build_mame_roms.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/other_authors/build_mame_roms.sh b/other_authors/build_mame_roms.sh index c4af08b..46af0ec 100644 --- a/other_authors/build_mame_roms.sh +++ b/other_authors/build_mame_roms.sh @@ -33,8 +33,10 @@ MISTER_URL="https://github.com/MiSTer-devel/Main_MiSTer" setup_workspace() { mkdir "$WORK_DIR" &>/dev/null mkdir "$OUTPUT_DIR" &>/dev/null - curl $CURL_RETRY -sLf "https://github.com/MiSTer-devel/Scripts_MiSTer/raw/master/other_authors/flips" -o "$WORK_DIR/flips" - cp "$WORK_DIR/flips" "/bin" + if [ ! -f "/media/fat/linux/flips" ]; then + curl $CURL_RETRY -sLf "https://github.com/MiSTer-devel/Scripts_MiSTer/raw/master/other_authors/flips" -o "/media/fat/linux/flips" + fi + export PATH="/media/fat/linux:$PATH" } cleanup() { From d4761dcdd8b460c86f3e195876f433eb88bcf42f Mon Sep 17 00:00:00 2001 From: self_slaughter Date: Thu, 26 Sep 2019 22:27:28 +1000 Subject: [PATCH 4/6] Update readme with some info and link to flips source code --- other_authors/README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/other_authors/README.md b/other_authors/README.md index 586ff9b..1a9fa08 100644 --- a/other_authors/README.md +++ b/other_authors/README.md @@ -1,2 +1,30 @@ # other_authors Miscellaneous Bash scripts for MiSTer from other authors + +### + +build_mame_roms.sh by self_slaughter + +Small script based on locutus73s updater, to search github for official build scripts to +convert mame roms into something suitable for the MiSTer and copy them into /media/fat/bootrom +so they will autoload when you start the appropriate core. + +Contains an ARM compiled version of Floating IPS which currently is only used +to build the rom for Arkanoid. + +Download for the source code used for this build is located at https://www.smwcentral.net/?p=section&a=details&id=11474 + +# Flips is licensed under GNU General Public License, version 3.0 or higher. The full legal text can +# be found in boring.zip; a rough interpretation (for non-lawyers only) follows: +# +# - You must credit the author. Don't claim it as your own. You may modify it and take credit for your +# modifications, but the author (Alcaro) must be credited for the original software. +# - If you modify this software, it must clearly be labeled as a modification. +# - Any applications containing any part of this software must provide the full source code needed to +# modify and rebuild this application, under the same license. Including this interpretation is +# optional. +# - The author claims no copyright over input, output, or error messages generated by this tool. Use +# it however you want. + +### + From 715f13bd6a25ac3a662daa2099867f0e360adc73 Mon Sep 17 00:00:00 2001 From: self_slaughter Date: Thu, 26 Sep 2019 22:32:14 +1000 Subject: [PATCH 5/6] Update readme with some info and link to flips source code --- other_authors/README.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/other_authors/README.md b/other_authors/README.md index 1a9fa08..40cbda9 100644 --- a/other_authors/README.md +++ b/other_authors/README.md @@ -1,9 +1,8 @@ # other_authors Miscellaneous Bash scripts for MiSTer from other authors -### -build_mame_roms.sh by self_slaughter +#build_mame_roms.sh by self_slaughter Small script based on locutus73s updater, to search github for official build scripts to convert mame roms into something suitable for the MiSTer and copy them into /media/fat/bootrom @@ -14,17 +13,15 @@ to build the rom for Arkanoid. Download for the source code used for this build is located at https://www.smwcentral.net/?p=section&a=details&id=11474 -# Flips is licensed under GNU General Public License, version 3.0 or higher. The full legal text can -# be found in boring.zip; a rough interpretation (for non-lawyers only) follows: -# -# - You must credit the author. Don't claim it as your own. You may modify it and take credit for your -# modifications, but the author (Alcaro) must be credited for the original software. -# - If you modify this software, it must clearly be labeled as a modification. -# - Any applications containing any part of this software must provide the full source code needed to -# modify and rebuild this application, under the same license. Including this interpretation is -# optional. -# - The author claims no copyright over input, output, or error messages generated by this tool. Use -# it however you want. +Flips is licensed under GNU General Public License, version 3.0 or higher. The full legal text can + be found in boring.zip; a rough interpretation (for non-lawyers only) follows: -### +- You must credit the author. Don't claim it as your own. You may modify it and take credit for your + modifications, but the author (Alcaro) must be credited for the original software. +- If you modify this software, it must clearly be labeled as a modification. +- Any applications containing any part of this software must provide the full source code needed to + modify and rebuild this application, under the same license. Including this interpretation is + optional. +- The author claims no copyright over input, output, or error messages generated by this tool. Use + it however you want. From e55da11587f2258f66b7de8ba65cb60d8f1989ac Mon Sep 17 00:00:00 2001 From: self_slaughter Date: Thu, 26 Sep 2019 22:45:37 +1000 Subject: [PATCH 6/6] Minor changes to README.md --- other_authors/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/other_authors/README.md b/other_authors/README.md index 40cbda9..d07b0ee 100644 --- a/other_authors/README.md +++ b/other_authors/README.md @@ -2,17 +2,18 @@ Miscellaneous Bash scripts for MiSTer from other authors -#build_mame_roms.sh by self_slaughter +###### build_mame_roms.sh by self_slaughter Small script based on locutus73s updater, to search github for official build scripts to -convert mame roms into something suitable for the MiSTer and copy them into /media/fat/bootrom +convert mame arcade roms into something suitable for the MiSTer and copy them into /media/fat/bootrom so they will autoload when you start the appropriate core. -Contains an ARM compiled version of Floating IPS which currently is only used +Contains an ARM compiled version of Floating IPS v1.31 which currently is only used to build the rom for Arkanoid. Download for the source code used for this build is located at https://www.smwcentral.net/?p=section&a=details&id=11474 +``` Flips is licensed under GNU General Public License, version 3.0 or higher. The full legal text can be found in boring.zip; a rough interpretation (for non-lawyers only) follows: @@ -24,4 +25,5 @@ Flips is licensed under GNU General Public License, version 3.0 or higher. The f optional. - The author claims no copyright over input, output, or error messages generated by this tool. Use it however you want. +```