diff --git a/Changelog.md b/Changelog.md index 724afb5e..f38e5c03 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,7 +3,8 @@ ## 1.10 (UNRELEASED) * Audio filenames can now be quoted, to support filenames with characters - outside the range `a-zA-Z0-9_` + outside the range `a-zA-Z0-9_`. Audio files can also be given including + their extension. * Support for the `stop` and `restart` codes (generated by default) * The `set-language` command truncates long language names (like `ITALIAN`) automatically. diff --git a/default.nix b/default.nix index 11121e16..7165f086 100644 --- a/default.nix +++ b/default.nix @@ -193,10 +193,10 @@ in rec { gme-downloads = pkgs.runCommandNoCC "gme-downloads" { buildInputs = with pkgs; [ wget ]; outputHashMode = "recursive"; - outputHash = "sha256:01byby8fmqmxfg5cb5ss0pmhvf2av65sil9cqbjswky0a1mn7kp5"; + outputHash = "sha256:02cayz36ajaw8lv2kri54vmd6qid5w4vn4s6dmagq583f887b03l"; } '' mkdir -p $out - bash ${./testsuite/download.sh} $out + bash ${./testsuite/download.sh} ${./testsuite/gme-files-test.txt} $out ''; tests = pkgs.stdenv.mkDerivation { diff --git a/src/Commands.hs b/src/Commands.hs index d717aa04..fe211cb9 100644 --- a/src/Commands.hs +++ b/src/Commands.hs @@ -117,7 +117,7 @@ dumpInfo conf file = do (fst (head st)) (fst (last st)) (length (filter (isNothing . snd) st)) (length st) printf "Audio table entries: %d\n" (length ttAudioFiles) - when ttAudioFilesDoubles $ printf "Audio table repeated twice\n" + printf "Audio table copy: %s\n" (show ttAudioFilesDoubles) printf "Binary tables entries: %d/%d/%d\n" (length ttBinaries1) (length ttBinaries2) @@ -133,7 +133,8 @@ dumpInfo conf file = do lint :: FilePath -> IO () lint file = do (tt,segments) <- parseTipToiFile <$> B.readFile file - lintTipToi tt segments + all_good <- lintTipToi tt segments + unless all_good exitFailure play :: Conf -> FilePath -> IO () play conf file = do @@ -410,4 +411,3 @@ setLanguage lang file = do B.writeFile (file ++ ".tmp") output' renameFile (file ++ ".tmp") file - diff --git a/src/GMEParser.hs b/src/GMEParser.hs index 51845bf6..dee94f26 100644 --- a/src/GMEParser.hs +++ b/src/GMEParser.hs @@ -270,7 +270,7 @@ getBinaries = do binary <- getSegAt offset (BC.unpack desc) (getBS length) return (desc, binary) -getAudios :: Word32 -> SGet ([B.ByteString], Bool, Word8) +getAudios :: Word32 -> SGet ([B.ByteString], Similarity, Word8) getAudios rawXor = do until <- lookAhead getWord32 x <- case () of @@ -278,19 +278,26 @@ getAudios rawXor = do | otherwise -> lookAhead $ jumpTo until >> getXor offset <- bytesRead let n_entries = fromIntegral ((until - offset) `div` 8) - at_doubled <- lookAhead $ do - half1 <- getBS (n_entries * 8 `div` 2) - half2 <- getBS (n_entries * 8 `div` 2) - return $ half1 == half2 - let n_entries' | at_doubled = n_entries `div` 2 - | otherwise = n_entries + similarity <- determine_similiarity <$> lookAhead (getBS (n_entries * 8)) + let n_entries' | Absent <- similarity = n_entries + | otherwise = n_entries `div` 2 decoded <- forM [0..n_entries'-1] $ \n -> do cypher x <$> indirectBS (show n) - -- Fix segment - when at_doubled $ lookAhead $ getSeg "Audio table copy" $ + -- pretend we read the rest too + unless (similarity == Absent) $ lookAhead $ getSeg "Audio table copy" $ replicateM_ (fromIntegral n_entries') (getWord32 >> getWord32) - return (decoded, at_doubled, x) + return (decoded, similarity, x) + where + -- Fuzzy comparison: More than 80% the same? + determine_similiarity bs + | a == b = Equal + | 5 * same >= 4 * n = Similar + | otherwise = Absent + where + (a,b) = B.splitAt (B.length bs `div` 2) bs + n = fromIntegral (B.length a) + same = length [ () | (x,y) <- B.zip a b, x == y ] getXor :: SGet Word8 getXor = do @@ -307,7 +314,7 @@ getXor = do getChecksum :: SGet Word32 getChecksum = do l <- getLength - getSegAt (l-4) "Checksum" $ getWord32 + getSegAt (l-4) "Checksum" getWord32 calcChecksum :: SGet Word32 calcChecksum = do diff --git a/src/Lint.hs b/src/Lint.hs index 667087dc..1657154f 100644 --- a/src/Lint.hs +++ b/src/Lint.hs @@ -8,23 +8,31 @@ import qualified Data.Map as M import Types import PrettyPrint -lintTipToi :: TipToiFile -> Segments -> IO () +lintTipToi :: TipToiFile -> Segments -> IO Bool lintTipToi tt segments = do let hyps = [ (hyp1, "play indicies are correct") - , (hyp2 (fromIntegral (length (ttAudioFiles tt))), - "media indicies are correct") + , (hyp2, "media indicies are correct") + , (hyp3, "at most one jump per line, as last action") ] - forM_ hyps $ \(hyp, desc) -> do + hyp_result <- forM hyps $ \(hyp, desc) -> do let wrong = filter (not . hyp) (concat (mapMaybe snd (ttScripts tt))) if null wrong - then printf "All lines do satisfy hypothesis \"%s\"!\n" desc + then do + printf "All lines do satisfy hypothesis \"%s\"!\n" desc + return True else do printf "These lines do not satisfy hypothesis \"%s\":\n" desc forM_ wrong $ \line -> do printf " %s\n" (ppLine M.empty line) + return False - forM_ (fromMaybe [] (ttMediaFlags tt)) $ \f -> - when (f > 1) $ printf "Media flag >1: %d" f + media_result <- forM (fromMaybe [] (ttMediaFlags tt)) $ \f -> + if (f > 1) + then do + printf "Media flag >1: %d" f + return False + else do + return True let overlapping_segments = filter (\((o1,l1,_),(o2,l2,_)) -> o1+l1 > o2) $ @@ -33,6 +41,8 @@ lintTipToi tt segments = do printf "Overlapping segments: %d\n" (length overlapping_segments) mapM_ (uncurry report) overlapping_segments + + return $ and $ hyp_result ++ media_result ++ [null overlapping_segments] where hyp1 :: Line ResReg -> Bool hyp1 (Line _ _ as mi) = all ok as @@ -41,8 +51,18 @@ lintTipToi tt segments = do 0 <= b && b < fromIntegral (length mi) ok _ = True - hyp2 :: Word16 -> Line ResReg -> Bool - hyp2 n (Line _ _ _ mi) = all (<= n) mi + media_count :: Word16 + media_count = fromIntegral (length (ttAudioFiles tt)) + + hyp2 :: Line ResReg -> Bool + hyp2 (Line _ _ _ mi) = all (< media_count) mi + + max_one_jump_at_end [] = True + max_one_jump_at_end (Jump x : acts) = null acts + max_one_jump_at_end (x : acts) = max_one_jump_at_end acts + + hyp3 :: Line ResReg -> Bool + hyp3 (Line _ _ as _) = max_one_jump_at_end as report :: Segment -> Segment -> IO () report (o1,l1,d1) (o2,l2,d2) diff --git a/src/TipToiYaml.hs b/src/TipToiYaml.hs index 4a61961f..8939fe8e 100644 --- a/src/TipToiYaml.hs +++ b/src/TipToiYaml.hs @@ -843,11 +843,9 @@ ttYaml2tt no_date dir (TipToiYAML {..}) extCodes = do Just (lang, txt) -> do Right <$> readFile' (ttsFileName lang txt) Nothing -> do - let paths = [ combine dir relpath - | ext <- map snd fileMagics - , let pat = fromMaybe "%s" ttyMedia_Path - , let relpath = printf pat fn <.> ext - ] + let pat = fromMaybe "%s" ttyMedia_Path + let basePath = printf pat fn + let paths = map (combine dir) (basePath : [basePath <.> ext | (_,ext) <- fileMagics ]) ex <- filterM doesFileExist paths case ex of [] -> do @@ -884,7 +882,7 @@ ttYaml2tt no_date dir (TipToiYAML {..}) extCodes = do , ttGames = games , ttAudioFiles = files , ttAudioXor = knownXOR - , ttAudioFilesDoubles = False + , ttAudioFilesDoubles = Absent , ttMediaFlags = Nothing , ttChecksum = 0x00 , ttChecksumCalc = 0x00 @@ -955,7 +953,7 @@ parsePlayList :: Parser [String] parsePlayList = P.commaSep lexer $ parseAudioRef parseAudioRef :: Parser String -parseAudioRef = (P.lexeme lexer $ many1 (alphaNum <|> char '_')) <|> P.stringLiteral lexer +parseAudioRef = (P.lexeme lexer $ many1 (alphaNum <|> char '_' <|> char '.')) <|> P.stringLiteral lexer parseScriptRef :: Parser String parseScriptRef = P.lexeme lexer $ many1 (alphaNum <|> char '_') diff --git a/src/Types.hs b/src/Types.hs index 8c108cad..650d7daf 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -64,6 +64,7 @@ data Line r = Line Offset [Conditional r] [Command r] PlayList type ProductID = Word32 +data Similarity = Absent | Equal | Similar deriving (Show, Eq) data TipToiFile = TipToiFile { ttProductId :: ProductID @@ -76,7 +77,7 @@ data TipToiFile = TipToiFile , ttScripts :: [(Word16, Maybe [Line ResReg])] , ttGames :: [Game] , ttAudioFiles :: [B.ByteString] - , ttAudioFilesDoubles :: Bool + , ttAudioFilesDoubles :: Similarity , ttAudioXor :: Word8 , ttMediaFlags :: Maybe [Word16] , ttBinaries1 :: [(B.ByteString, B.ByteString)] diff --git a/testsuite/.gitignore b/testsuite/.gitignore index b6c06a32..b2836998 100644 --- a/testsuite/.gitignore +++ b/testsuite/.gitignore @@ -1,3 +1,5 @@ output ./downloaded +./all-gmes !expected/** + diff --git a/testsuite/README.md b/testsuite/README.md index 0bad24a7..8c18d64b 100644 --- a/testsuite/README.md +++ b/testsuite/README.md @@ -1,7 +1,11 @@ A small test suite for tttool +----------------------------- -The script `download.sh` downloads a few GME files into the directory -`downloaded/` +The script `download.sh` downloads a those GME files listed in +`gme-files-test.txt` into the directory `downloaded/`. This is a subset of +Ravensburger GMEs, useful for testing. + +Feel free to propose a different set of GME files to include in the test The script `test.sh` runs a bunch of `tttool` commands on the files in `input/` and `downloaded/`, putting the result in `output/` @@ -24,3 +28,15 @@ To run the test suite with nix, run If the downloaded files changed, change the `outputHash` in `../default.nix` a bit, run the above, and then copy the new hash from the error message into the `.nix` file. + + +Getting more GMEs +----------------- + +To test theories or search for certain things, it might be useful to fetch all +GMEs. For that, run + + ./list-gmes.sh + ./download.sh gme-files-all.txt all-gmes + +Warning, this downloads ~6GB. diff --git a/testsuite/download.sh b/testsuite/download.sh index 011faccb..be29cad2 100755 --- a/testsuite/download.sh +++ b/testsuite/download.sh @@ -1,19 +1,11 @@ #!/usr/bin/env bash set -e -dir="${1:-downloaded}" +gmes="${1:-gme-files-test.txt}" +dir="${2:-downloaded}" mkdir -p "$dir" -cd "$dir" - -# We used to have a script that would fetch an .xml file from ravensburger -# that lists all GME files, but that XML file disappeared. -# For now, just list some GME files - -function get() { - wget --no-verbose --timestamping --no-check-certificate \ - https://ssl-static.ravensburger.de/db/applications/"$1" -} - -get WissenQuizzen1.gme -get Pocketwissen_Feuerwehr.gme +while read -r filename; do + wget --no-verbose --timestamping --no-check-certificate -P "$dir" \ + https://ssl-static.ravensburger.de/db/applications/"$filename" +done < "$gmes" diff --git a/testsuite/expected/downloaded/Alle meine Tiere.gme.info.txt b/testsuite/expected/downloaded/Alle meine Tiere.gme.info.txt new file mode 100644 index 00000000..6692351a --- /dev/null +++ b/testsuite/expected/downloaded/Alle meine Tiere.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 100 +Raw XOR value: 0x000000C6 +Magic XOR value: 0x55 +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20170315 +Language: +Number of registers: 3 +Initial registers: [0,0,0] +Initial sounds: [[18,25]] +Scripts for OIDs from 4201 to 4282; 0/82 are disabled. +Audio table entries: 543 +Audio table copy: Similar +Binary tables entries: 0/0/0 +Single binary table entries: 1/1/1 +Special OIDs: 4210, 0 +Checksum found 0x6E379441, calculated 0x6E379441 diff --git a/testsuite/expected/downloaded/WissenQuizzen1.gme.lint.txt b/testsuite/expected/downloaded/Alle meine Tiere.gme.lint.txt similarity index 61% rename from testsuite/expected/downloaded/WissenQuizzen1.gme.lint.txt rename to testsuite/expected/downloaded/Alle meine Tiere.gme.lint.txt index 56dc7d57..e556aed6 100644 --- a/testsuite/expected/downloaded/WissenQuizzen1.gme.lint.txt +++ b/testsuite/expected/downloaded/Alle meine Tiere.gme.lint.txt @@ -1,2 +1,3 @@ All lines do satisfy hypothesis "play indicies are correct"! All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Alle meine Tiere.gme.yaml.md5sum b/testsuite/expected/downloaded/Alle meine Tiere.gme.yaml.md5sum new file mode 100644 index 00000000..bbbec404 --- /dev/null +++ b/testsuite/expected/downloaded/Alle meine Tiere.gme.yaml.md5sum @@ -0,0 +1 @@ +0fd54c3bbb1a88b494972a2547b08f9f output/downloaded/Alle meine Tiere.gme.yaml diff --git a/testsuite/expected/downloaded/Dein Koerper und Du.gme.info.txt b/testsuite/expected/downloaded/Dein Koerper und Du.gme.info.txt new file mode 100644 index 00000000..7726b554 --- /dev/null +++ b/testsuite/expected/downloaded/Dein Koerper und Du.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 61 +Raw XOR value: 0x000000FA +Magic XOR value: 0x16 +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20141021 +Language: +Number of registers: 71 +Initial registers: [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] +Initial sounds: [[1447,317],[317]] +Scripts for OIDs from 5670 to 9969; 3709/4300 are disabled. +Audio table entries: 1448 +Audio table copy: Equal +Binary tables entries: 1/1/1 +Single binary table entries: 1/1/1 +Special OIDs: 9756, 0 +Checksum found 0x0092FB3D, calculated 0x0092FB3D diff --git a/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.lint.txt b/testsuite/expected/downloaded/Dein Koerper und Du.gme.lint.txt similarity index 61% rename from testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.lint.txt rename to testsuite/expected/downloaded/Dein Koerper und Du.gme.lint.txt index 56dc7d57..e556aed6 100644 --- a/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.lint.txt +++ b/testsuite/expected/downloaded/Dein Koerper und Du.gme.lint.txt @@ -1,2 +1,3 @@ All lines do satisfy hypothesis "play indicies are correct"! All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Dein Koerper und Du.gme.yaml.md5sum b/testsuite/expected/downloaded/Dein Koerper und Du.gme.yaml.md5sum new file mode 100644 index 00000000..4fa03407 --- /dev/null +++ b/testsuite/expected/downloaded/Dein Koerper und Du.gme.yaml.md5sum @@ -0,0 +1 @@ +e2f933effc132ed235888e4f0bf22e8f output/downloaded/Dein Koerper und Du.gme.yaml diff --git a/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.info.txt b/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.info.txt new file mode 100644 index 00000000..9f0bce11 --- /dev/null +++ b/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 137 +Raw XOR value: 0x000000D2 +Magic XOR value: 0x4D +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20190215 +Language: +Number of registers: 3 +Initial registers: [1,0,0] +Initial sounds: [[29,44,108]] +Scripts for OIDs from 4100 to 4300; 0/201 are disabled. +Audio table entries: 2115 +Audio table copy: Similar +Binary tables entries: 1/1/1 +Single binary table entries: 1/1/1 +Special OIDs: 4105, 0 +Checksum found 0xFD752110, calculated 0xFD752110 diff --git a/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.lint.txt b/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.yaml.md5sum b/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.yaml.md5sum new file mode 100644 index 00000000..dbb2f9fa --- /dev/null +++ b/testsuite/expected/downloaded/Duell-der-Superquizzer.gme.yaml.md5sum @@ -0,0 +1 @@ +61a09460d93d53c8c5383248973bf1a7 output/downloaded/Duell-der-Superquizzer.gme.yaml diff --git a/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.info.txt b/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.info.txt new file mode 100644 index 00000000..7e5542a6 --- /dev/null +++ b/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 34 +Raw XOR value: 0x00000025 +Magic XOR value: 0xDE +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20150114 +Language: +Number of registers: 51 +Initial registers: [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] +Initial sounds: [[907,908],[908]] +Scripts for OIDs from 34 to 3583; 3018/3550 are disabled. +Audio table entries: 909 +Audio table copy: Equal +Binary tables entries: 14/14/14 +Single binary table entries: 1/1/1 +Special OIDs: 3010, 3009 +Checksum found 0xC3F06F70, calculated 0xC3F06F70 diff --git a/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.lint.txt b/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.yaml.md5sum b/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.yaml.md5sum new file mode 100644 index 00000000..0f1ef1bf --- /dev/null +++ b/testsuite/expected/downloaded/Expedition Wissen - Aegypten.gme.yaml.md5sum @@ -0,0 +1 @@ +0a99dc6315e77ff0efb0c91928480327 output/downloaded/Expedition Wissen - Aegypten.gme.yaml diff --git a/testsuite/expected/downloaded/Leserabe Drache.gme.info.txt b/testsuite/expected/downloaded/Leserabe Drache.gme.info.txt new file mode 100644 index 00000000..50c20b03 --- /dev/null +++ b/testsuite/expected/downloaded/Leserabe Drache.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 32 +Raw XOR value: 0x00000024 +Magic XOR value: 0xA1 +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20141127 +Language: GERMANƒÚ +Number of registers: 45 +Initial registers: [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] +Initial sounds: [[1007,1008]] +Scripts for OIDs from 1008 to 5547; 3755/4540 are disabled. +Audio table entries: 1009 +Audio table copy: Equal +Binary tables entries: 12/12/12 +Single binary table entries: 1/1/1 +Special OIDs: 4902, 4901 +Checksum found 0x848AC808, calculated 0x848AC808 diff --git a/testsuite/expected/downloaded/Leserabe Drache.gme.lint.txt b/testsuite/expected/downloaded/Leserabe Drache.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/Leserabe Drache.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Leserabe Drache.gme.yaml.md5sum b/testsuite/expected/downloaded/Leserabe Drache.gme.yaml.md5sum new file mode 100644 index 00000000..4d965665 --- /dev/null +++ b/testsuite/expected/downloaded/Leserabe Drache.gme.yaml.md5sum @@ -0,0 +1 @@ +dafec43004052b310638581994076b1a output/downloaded/Leserabe Drache.gme.yaml diff --git a/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.info.txt b/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.info.txt new file mode 100644 index 00000000..73e303ae --- /dev/null +++ b/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 113 +Raw XOR value: 0x000000DB +Magic XOR value: 0xB0 +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20170829 +Language: +Number of registers: 41 +Initial registers: [1,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] +Initial sounds: [[283,342]] +Scripts for OIDs from 113 to 9516; 9230/9404 are disabled. +Audio table entries: 489 +Audio table copy: Similar +Binary tables entries: 9/9/9 +Single binary table entries: 1/1/1 +Special OIDs: 9307, 9306 +Checksum found 0x7224D523, calculated 0x7224D523 diff --git a/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.lint.txt b/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.yaml.md5sum b/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.yaml.md5sum new file mode 100644 index 00000000..7ea57fcc --- /dev/null +++ b/testsuite/expected/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.yaml.md5sum @@ -0,0 +1 @@ +d07aa7d8a23e0c44434ef65480a2cdc2 output/downloaded/Pocket Wissen - Baustellenfahrzeuge.gme.yaml diff --git a/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.info.txt b/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.info.txt deleted file mode 100644 index fbeb7300..00000000 --- a/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.info.txt +++ /dev/null @@ -1,16 +0,0 @@ -Product ID: 128 -Raw XOR value: 0x00000000 -Magic XOR value: 0xD3 -Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 -Date: 20180817 -Language: -Number of registers: 24 -Initial registers: [1,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] -Initial sounds: [[325,410]] -Scripts for OIDs from 12501 to 12739; 24/239 are disabled. -Audio table entries: 580 -Audio table repeated twice -Binary tables entries: 9/9/9 -Single binary table entries: 1/1/1 -Special OIDs: 12505, 12504 -Checksum found 0x6FD1F4D9, calculated 0x6FD1F4D9 diff --git a/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.yaml.md5sum b/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.yaml.md5sum deleted file mode 100644 index 0c88ec81..00000000 --- a/testsuite/expected/downloaded/Pocketwissen_Feuerwehr.gme.yaml.md5sum +++ /dev/null @@ -1 +0,0 @@ -914cd3db28c27e05868fa53d9c334524 output/downloaded/Pocketwissen_Feuerwehr.gme.yaml diff --git a/testsuite/expected/downloaded/Puzzle Ritterburg.gme.info.txt b/testsuite/expected/downloaded/Puzzle Ritterburg.gme.info.txt new file mode 100644 index 00000000..51347ee0 --- /dev/null +++ b/testsuite/expected/downloaded/Puzzle Ritterburg.gme.info.txt @@ -0,0 +1,15 @@ +Product ID: 15 +Raw XOR value: 0x000000EA +Magic XOR value: 0xE2 +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.6.0925 +Date: 20110126 +Language: +Number of registers: 1 +Initial registers: [1] +Initial sounds: [[374,375]] +Scripts for OIDs from 5710 to 5824; 1/115 are disabled. +Audio table entries: 376 +Audio table copy: Equal +Binary tables entries: 0/0/0 +Single binary table entries: 0/0/0 +Checksum found 0x486306C9, calculated 0x486306C9 diff --git a/testsuite/expected/downloaded/Puzzle Ritterburg.gme.lint.txt b/testsuite/expected/downloaded/Puzzle Ritterburg.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/Puzzle Ritterburg.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Puzzle Ritterburg.gme.yaml.md5sum b/testsuite/expected/downloaded/Puzzle Ritterburg.gme.yaml.md5sum new file mode 100644 index 00000000..f8237ffb --- /dev/null +++ b/testsuite/expected/downloaded/Puzzle Ritterburg.gme.yaml.md5sum @@ -0,0 +1 @@ +236e4880e363464432929168c6ce02a1 output/downloaded/Puzzle Ritterburg.gme.yaml diff --git a/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.info.txt b/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.info.txt new file mode 100644 index 00000000..d1c1f41b --- /dev/null +++ b/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 118 +Raw XOR value: 0x0000002F +Magic XOR value: 0x6E +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20170722 +Language: +Number of registers: 23 +Initial registers: [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0] +Initial sounds: [[3,4,563]] +Scripts for OIDs from 11201 to 11938; 131/738 are disabled. +Audio table entries: 1209 +Audio table copy: Equal +Binary tables entries: 1/1/1 +Single binary table entries: 1/1/1 +Special OIDs: 11817, 0 +Checksum found 0x6562C2BA, calculated 0x6562C2BA diff --git a/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.lint.txt b/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.yaml.md5sum b/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.yaml.md5sum new file mode 100644 index 00000000..fb55e1e2 --- /dev/null +++ b/testsuite/expected/downloaded/Sprichst_Du_Englisch.gme.yaml.md5sum @@ -0,0 +1 @@ +f5e67b74de9ab84284e8774c18f8676b output/downloaded/Sprichst_Du_Englisch.gme.yaml diff --git a/testsuite/expected/downloaded/WWW Ritter.gme.info.txt b/testsuite/expected/downloaded/WWW Ritter.gme.info.txt new file mode 100644 index 00000000..85608dae --- /dev/null +++ b/testsuite/expected/downloaded/WWW Ritter.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 31 +Raw XOR value: 0x000000DA +Magic XOR value: 0xA4 +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20170705 +Language: GERMANÞÖ +Number of registers: 34 +Initial registers: [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] +Initial sounds: [[876,877]] +Scripts for OIDs from 14401 to 14901; 98/501 are disabled. +Audio table entries: 878 +Audio table copy: Equal +Binary tables entries: 11/11/11 +Single binary table entries: 1/1/1 +Special OIDs: 14405, 14406 +Checksum found 0xC9C73E8F, calculated 0xC9C73E8F diff --git a/testsuite/expected/downloaded/WWW Ritter.gme.lint.txt b/testsuite/expected/downloaded/WWW Ritter.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/WWW Ritter.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/WWW Ritter.gme.yaml.md5sum b/testsuite/expected/downloaded/WWW Ritter.gme.yaml.md5sum new file mode 100644 index 00000000..96096640 --- /dev/null +++ b/testsuite/expected/downloaded/WWW Ritter.gme.yaml.md5sum @@ -0,0 +1 @@ +6f5bf51d420207eab67410815c9e0040 output/downloaded/WWW Ritter.gme.yaml diff --git a/testsuite/expected/downloaded/WWW Weltatlas.gme.info.txt b/testsuite/expected/downloaded/WWW Weltatlas.gme.info.txt new file mode 100644 index 00000000..5bd3787a --- /dev/null +++ b/testsuite/expected/downloaded/WWW Weltatlas.gme.info.txt @@ -0,0 +1,16 @@ +Product ID: 45 +Raw XOR value: 0x00000027 +Magic XOR value: 0x6C +Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 +Date: 20191018 +Language: +Number of registers: 166 +Initial registers: [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99] +Initial sounds: [[2212,2213]] +Scripts for OIDs from 8000 to 13237; 3906/5238 are disabled. +Audio table entries: 2214 +Audio table copy: Equal +Binary tables entries: 8/8/8 +Single binary table entries: 1/1/1 +Special OIDs: 12159, 12158 +Checksum found 0xDD8D8230, calculated 0xDD8D8230 diff --git a/testsuite/expected/downloaded/WWW Weltatlas.gme.lint.txt b/testsuite/expected/downloaded/WWW Weltatlas.gme.lint.txt new file mode 100644 index 00000000..e556aed6 --- /dev/null +++ b/testsuite/expected/downloaded/WWW Weltatlas.gme.lint.txt @@ -0,0 +1,3 @@ +All lines do satisfy hypothesis "play indicies are correct"! +All lines do satisfy hypothesis "media indicies are correct"! +All lines do satisfy hypothesis "at most one jump per line, as last action"! diff --git a/testsuite/expected/downloaded/WWW Weltatlas.gme.yaml.md5sum b/testsuite/expected/downloaded/WWW Weltatlas.gme.yaml.md5sum new file mode 100644 index 00000000..68c28b90 --- /dev/null +++ b/testsuite/expected/downloaded/WWW Weltatlas.gme.yaml.md5sum @@ -0,0 +1 @@ +b249ea76eb99cb6871e94c560b029e54 output/downloaded/WWW Weltatlas.gme.yaml diff --git a/testsuite/expected/downloaded/WissenQuizzen1.gme.info.txt b/testsuite/expected/downloaded/WissenQuizzen1.gme.info.txt deleted file mode 100644 index 086d9051..00000000 --- a/testsuite/expected/downloaded/WissenQuizzen1.gme.info.txt +++ /dev/null @@ -1,16 +0,0 @@ -Product ID: 68 -Raw XOR value: 0x00000022 -Magic XOR value: 0x5D -Comment: CHOMPTECH DATA FORMAT CopyRight 2009 Ver2.10.0901 -Date: 20190920 -Language: -Number of registers: 200 -Initial registers: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] -Initial sounds: [[],[243,244]] -Scripts for OIDs from 3801 to 8700; 1188/4900 are disabled. -Audio table entries: 945 -Audio table repeated twice -Binary tables entries: 0/0/0 -Single binary table entries: 1/1/1 -Special OIDs: 5005, 0 -Checksum found 0x87CAAF2D, calculated 0x87CAAF2D diff --git a/testsuite/expected/downloaded/WissenQuizzen1.gme.yaml.md5sum b/testsuite/expected/downloaded/WissenQuizzen1.gme.yaml.md5sum deleted file mode 100644 index b864c057..00000000 --- a/testsuite/expected/downloaded/WissenQuizzen1.gme.yaml.md5sum +++ /dev/null @@ -1 +0,0 @@ -58c474d2a8eb6bf24a4f6d5b90bf5931 output/downloaded/WissenQuizzen1.gme.yaml diff --git a/testsuite/expected/example.info.txt b/testsuite/expected/example.info.txt index a3ee6289..cd91d2a0 100644 --- a/testsuite/expected/example.info.txt +++ b/testsuite/expected/example.info.txt @@ -9,6 +9,7 @@ Initial registers: [1,0] Initial sounds: [[1,2]] Scripts for OIDs from 8065 to 8067; 0/3 are disabled. Audio table entries: 6 +Audio table copy: Absent Binary tables entries: 0/0/0 Single binary table entries: 0/0/0 Special OIDs: 13445, 13446 diff --git a/testsuite/gme-files-all.txt b/testsuite/gme-files-all.txt new file mode 100644 index 00000000..1272d0c4 --- /dev/null +++ b/testsuite/gme-files-all.txt @@ -0,0 +1,205 @@ +Tier-Set Golden Retriever.gme +Wimmelbuch.gme +TierSet_Dinosaurier.gme +Bilderlexikon Tiere.gme +TierSet_Tierarzt.gme +Spielfiguren_Pferde.gme +Expedition Wissen - Musik.gme +Expedition Wissen - Dinosaurier.gme +WissenQuizzen3.gme +WissenManage.gme +WissenQuizzen2.gme +WissenManage.gme +Expedition Wissen - Aegypten.gme +WissenQuizzen1.gme +WissenManage.gme +Expedition Wissen - Weltraum.gme +Star Wars - Episode I-VI.gme +WissenQuizzenKoerper.gme +WissenManage.gme +Star Wars - Episode VII.gme +WissenQuizzenPferde.gme +WissenManage.gme +WissenQuizzenHunde.gme +WissenManage.gme +Star Wars - Weg der Jedi.gme +Mein Woerter-Bilderbuch Unser Zuhause.gme +WissenQuizzenMusik.gme +WissenManage.gme +Pocket Wissen - Baustellenfahrzeuge.gme +Die verrueckte Wettermaschine.gme +Pocket Wissen - Dinosaurier.gme +Adventskalender Waldweihnacht.gme +Pocket Wissen - Pferde und Ponys.gme +Spielwelt Polizei.gme +Pocket Wissen - Wale und Delfine.gme +Spielwelt Feuerwehr.gme +Meine schönsten Weihnachtslieder.gme +Spielwelt Autorennen.gme +Mein Wörter-Bilderbuch Unterwegs.gme +Spielwelt Einkaufszentrum.gme +Pocketwissen_Ballett.gme +WissenQuizzenTierkinder.gme +WissenManage.gme +Pocketwissen_Feuerwehr.gme +Spielwelt Krankenhaus.gme +Cars_Buch.gme +mini Spielwelt Feuerwehr Gefahrguteinsatz.gme +CREATE_Schatzsuche_im_Dschungel.gme +CREATE_Die_magische_Insel_der_Tiere.gme +mini Spielwelt Polizei SEK-Einsatz.gme +Alle meine Tiere.gme +Die verrueckte Weltreise.gme +Mein_Wörter_Bilderbuch_Tiere.gme +Spielwelt Verkehrsschule.gme +Pocketwissen_Koerper.gme +Adventskalender_Weihnachtsdorf.gme +Pocketwissen_Tierkinder.gme +Rechenspass mit Taschengeld.gme +Mein_Wörter_Bilderbuch_Kindergarten.gme +Mein_interaktiver_Junior_Globus.gme +Sprichst_Du_Englisch.gme +Create_Elfen_brauchen_Abenteuer.gme +Der interaktive Globus.gme +Meine_schoensten_Lieder_fuer_unterwegs.gme +CREATE_Sticker_Elfen.gme +CREATE_Sticker_LustigeTiere.gme +CREATE_Sticker_Meerestiere.gme +CREATE_Sticker_Weltall.gme +Rekorde im Tierreich.gme +Die geheimnisvolle Maske.gme +In Deutschland unterwegs.gme +Mission im Lesedschungel.gme +Puzzle Kinderarzt.gme +CREATE_Die_galaktische_WeltraumMission.gme +Puzzle Im Zoo.gme +Die_Eiskoenigin_Buch.gme +Ratespass auf Reisen.gme +Das versunkene Logikland.gme +Meine_schoensten_Maerchen.gme +Die turbulente Zeitreise.gme +Wettstreit im Hexenwald.gme +Das Tal der Tempel.gme +Die_große_Wimmelreise_der_Tiere.gme +Puzzle Einsatz.gme +Uhr_und_Zeit.gme +Monsterstarke Musikschule.gme +Der Millionencoup.gme +CREATE_Ferien_auf_dem_Reiterhof.gme +Dein Koerper und Du.gme +CREATE_MSA_Superhelden.gme +Spielfiguren1.gme +CREATE_MSA_Zauberschule.gme +Quer durch Europa.gme +Die internationale Sprachen-Rallye.gme +Der hungrige Zahlenroboter.gme +Puzzlekarte.gme +Spielfiguren_Reiterhof.gme +Smarties.gme +Spielfiguren3.gme +Advenstkalender Wichtelwald.gme +Spielfiguren_Zoo.gme +Spielfiguren2.gme +Wir spielen Schule.gme +Spielfiguren_Dinosaurier.gme +Rund um die Uhr.gme +Spielfiguren_Pferde.gme +Schatzsuche in der Buchstabenburg.gme +REWE Weihnachtssticker.gme +Adventskalender Weihnachtsbaeckerei.gme +Spielfiguren_Pferde.gme +Rekorde_im_Tierreich-HappyMeal-Edition.gme +Tier-Set Falabella.gme +Spielfiguren_AsienAustralien.gme +WWW Eisenbahn.gme +Tier-Set Loewen.gme +Spielfiguren_Amerika.gme +WWW Jahreszeiten.gme +Abenteuer_Supermarkt.gme +WWW Regenwald.gme +WWW Zoo.gme +Die_Welt_des_Fussballs.gme +Stickerbogen_Starterset.gme +WWW_Polizei.gme +Alles_ueber_die_Musik.gme +Leserabe Pony.gme +Leserabe Vampir.gme +WissenQuizzenRetterHelfer.gme +WissenManage.gme +Leserabe Fussball.gme +Raetselspass_auf_dem_Bauernhof.gme +Leserabe Drache.gme +Puzzle_Deutschland.gme +Leserabe Feen.gme +mini_Spielwelt_Polizei_Verkehrspolizei.gme +Leserabe Piraten.gme +Duell-der-Superquizzer.gme +Erste Buchstaben.gme +Die_Welt_der_Technik.gme +Erste Zahlen.gme +Grundschulwoerterbuch Englisch.gme +Adventskalender_Weihnachtswerkstatt.gme +Lern mit mir - Mathe - Klasse 1.gme +CREATE_Sound-Quiz.gme +Lern mit mir - Deutsch - Klasse 1.gme +WissenQuizzenDinosaurier.gme +WissenManage.gme +Vorschulwissen.gme +Wir_lernen_die_Uhr.gme +Lern mit mir - Deutsch - Klasse 2.gme +Lern mit mir - Mathe - Klasse 2.gme +Fahrzeuge_in_der_Stadt.gme +Merken und Konzentrieren.gme +Dschungel-Olympiade.gme +Lern_mit_mir-Das_kleine_1x1.gme +Erstes_Englisch.gme +Leselauschabenteuer_Zauberwald.gme +Lern_mit_mir_Deutschland.gme +Leselauschabenteuer_Tiefsee.gme +Leselauschabenteuer_Dino-Stadt.gme +Mein grosses Bilderlexikon.gme +Meine schoensten Kinderlieder.gme +CREATE_Kreative_Bildergeschichten.gme +WissenQuizzenFCBayernMuenchen.gme +WissenManage.gme +Die_Eiskoenigin_Verdrehtes_Wettlaufspiel.gme +Cars-Das_rasante_Rennspiel.gme +Adventskalender Mandelmann.gme +WissenQuizzenNaturwunder.gme +WissenManage.gme +Weltkarte.gme +WWW Bauernhof.gme +Heute_gehen_wir_einkaufen.gme +WWW Flughafen.gme +Das_Geheimnis_der_Logik_Pyramide.gme +WWW Musik.gme +Unterwegs_in_der_Natur.gme +WWW Strassenverkehr.gme +Mitmach-Abenteuer.gme +WWW Englisch.gme +CREATE_SpieleErfinder.gme +WWW Feuerwehr.gme +Puzzle_Entdecker_Feuerwehrmann_Sam.gme +WWW Piraten.gme +Puzzle_Entdecker_Die_Biene_Maja.gme +WWW Wald.gme +Puzzle_Entdecker_Baustelle.gme +WWW Stadt.gme +Englisch-Detektive.gme +Puzzle_Entdecker_Zoo.gme +WWW Tiere Afrikas.gme +Magors Lesezauber.gme +WWW Ritter.gme +Geheimnis der Zahleninsel.gme +Abenteuer Tierwelt.gme +WWW Weltatlas.gme +Reise durch die Jahreszeiten.gme +WWW Fahrzeuge.gme +Globus puzzleball.gme +WWW Pferde und Ponys.gme +Puzzle Ritterburg.gme +WWW Europa.gme +Puzzle Baustelle.gme +WWW Musik aus aller Welt.gme +WWW Komm mit auf die Baustelle.gme +Puzzle Ponyhof.gme diff --git a/testsuite/gme-files-test.txt b/testsuite/gme-files-test.txt new file mode 100644 index 00000000..78310a8d --- /dev/null +++ b/testsuite/gme-files-test.txt @@ -0,0 +1,10 @@ +WWW Weltatlas.gme +Duell-der-Superquizzer.gme +Pocket Wissen - Baustellenfahrzeuge.gme +Leserabe Drache.gme +Dein Koerper und Du.gme +Expedition Wissen - Aegypten.gme +Puzzle Ritterburg.gme +WWW Ritter.gme +Sprichst_Du_Englisch.gme +Alle meine Tiere.gme diff --git a/testsuite/list-gmes.sh b/testsuite/list-gmes.sh new file mode 100755 index 00000000..de422a33 --- /dev/null +++ b/testsuite/list-gmes.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +set -e + +token="$(curl \ + --user tiptoi-manager-v2:CYmWkYyhY3traWuGd5cHcNV \ + --data-urlencode grant_type=client_credentials \ + https://oauth.ravensburger.com/oauth/token | + jq -r .access_token)" + +curl --oauth2-bearer "$token"\ + https://ttapiv2.ravensburger.com/api/v2/catalog/de_DE | + jq -r '.products[].gameFiles[].fileName' > gme-files-all.txt