tttool 1.6.1.4 → 1.7.0.1
raw patch · 6 files changed
+33/−19 lines, 6 filesdep ~directorydep ~timedep ~vector
Dependency ranges changed: directory, time, vector
Files
- src/Commands.hs +1/−0
- src/GMEParser.hs +7/−5
- src/GMEWriter.hs +2/−0
- src/TipToiYaml.hs +17/−10
- src/Types.hs +2/−0
- tttool.cabal +4/−4
src/Commands.hs view
@@ -104,6 +104,7 @@ printf "Magic XOR value: 0x%02X\n" ttAudioXor printf "Comment: %s\n" (BC.unpack ttComment) printf "Date: %s\n" (BC.unpack ttDate)+ printf "Language: %s\n" (BC.unpack ttLang) printf "Number of registers: %d\n" (length ttInitialRegs) printf "Initial registers: %s\n" (show ttInitialRegs) printf "Initial sounds: %s\n" (ppPlayListList t ttWelcome)
src/GMEParser.hs view
@@ -108,6 +108,9 @@ getBS :: Word32 -> SGet B.ByteString getBS n = liftGet $ G.getLazyByteString (fromIntegral n) +getBSNul :: SGet B.ByteString+getBSNul = liftGet G.getLazyByteStringNul+ bytesRead = SGet get getArray :: Integral a => SGet a -> SGet b -> SGet [b]@@ -407,11 +410,10 @@ ttProductId <- getWord32 ttInitialRegs <- indirection "Initial registers" getInitialRegs _ <- getWord32 -- raw Xor- (ttComment, ttDate) <- do- l <- getWord8- c <- getBS (fromIntegral l)- d <- getBS 8- return (c,d)+ commentLength <- getWord8+ ttComment <- getBS (fromIntegral commentLength)+ ttDate <- getBS 8+ ttLang <- getBSNul jumpTo 0x0071 ttWelcome <- indirection "initial play lists" $ getPlayListList
src/GMEWriter.hs view
@@ -103,6 +103,8 @@ putWord8 $ fromIntegral (B.length ttComment) putBS ttComment putBS ttDate+ putBS ttLang+ putWord8 0 seek 0x0071 -- Just to be safe putWord32 ipllo seek 0x0200 -- Just to be safe
src/TipToiYaml.hs view
@@ -57,16 +57,17 @@ import TipToiYamlAux data TipToiYAML = TipToiYAML- { ttyScripts :: M.Map String [String]- , ttyComment :: Maybe String- , ttyMedia_Path :: Maybe String- , ttyInit :: Maybe String- , ttyWelcome :: Maybe String- , ttyProduct_Id :: Word32+ { ttyScripts :: M.Map String [String]+ , ttyComment :: Maybe String+ , ttyGME_Lang :: Maybe String+ , ttyMedia_Path :: Maybe String+ , ttyInit :: Maybe String+ , ttyWelcome :: Maybe String+ , ttyProduct_Id :: Word32 , ttyScriptCodes :: Maybe CodeMap- , ttySpeak :: Maybe SpeakSpecs- , ttyLanguage :: Maybe Language- , ttyGames :: Maybe [GameYaml]+ , ttySpeak :: Maybe SpeakSpecs+ , ttyLanguage :: Maybe Language+ , ttyGames :: Maybe [GameYaml] } deriving Generic @@ -266,7 +267,10 @@ $(deriveJSON gameYamlOptions ''GameYaml) $(deriveJSON gameYamlOptions ''SubGameYaml) -tipToiYamlOptions = defaultOptions { fieldLabelModifier = map fix . map toLower . drop 3 }+tipToiYamlOptions = defaultOptions+ { fieldLabelModifier = map fix . map toLower . drop 3+ , omitNothingFields = True+ } where fix '_' = '-' fix c = c @@ -293,6 +297,7 @@ | (r,n) <- zip [0..] ttInitialRegs , n /= 0] , ttyWelcome = Just $ playListList2Yaml ttWelcome , ttyComment = Just $ BC.unpack ttComment+ , ttyGME_Lang = if BC.null ttLang then Nothing else Just (BC.unpack ttLang) , ttyScripts = M.fromList [ (show oid, map exportLine ls) | (oid, Just ls) <- ttScripts] , ttyMedia_Path = Just path@@ -835,6 +840,7 @@ , ttRawXor = knownRawXOR , ttComment = comment , ttDate = BC.pack date+ , ttLang = maybe BC.empty BC.pack ttyGME_Lang , ttWelcome = [welcome] , ttInitialRegs = [fromMaybe 0 (M.lookup r initRegs) | r <- [0..maxReg]] , ttScripts = scripts'@@ -1078,6 +1084,7 @@ , ttyScriptCodes = Nothing , ttySpeak = Nothing , ttyComment = Nothing+ , ttyGME_Lang = Nothing , ttyWelcome = Just $ "blob" , ttyScripts = M.fromList [ (show oid, [line])
src/Types.hs view
@@ -65,11 +65,13 @@ type ProductID = Word32 + data TipToiFile = TipToiFile { ttProductId :: ProductID , ttRawXor :: Word32 , ttComment :: B.ByteString , ttDate :: B.ByteString+ , ttLang :: B.ByteString , ttInitialRegs :: [Word16] , ttWelcome :: [PlayList] , ttScripts :: [(Word16, Maybe [Line ResReg])]
tttool.cabal view
@@ -1,5 +1,5 @@ name: tttool-version: 1.6.1.4+version: 1.7.0.1 synopsis: Working with files for the Tiptoi® pen description: The Ravensburger Tiptoi® pen is programmed via special files. Their file format has been reverse engineered; this@@ -54,7 +54,7 @@ base >= 4.5 && < 4.10, binary >= 0.5 && < 0.9, containers == 0.4.* || == 0.5.*,- directory == 1.2.*,+ directory >= 1.2 && < 1.4, executable-path == 0.0.*, filepath == 1.3.* || == 1.4.*, template-haskell >= 2.7 && < 2.12,@@ -67,7 +67,7 @@ parsec == 3.1.*, process >= 1.1 && < 1.5, random >= 1.0 && < 1.2,- vector >= 0.10 && < 0.12,+ vector >= 0.10 && < 0.13, yaml == 0.8.*, HPDF >= 1.4.10 && < 1.5, split == 0.2.*,@@ -84,7 +84,7 @@ if flag(old-locale) build-depends: time == 1.4.*, old-locale else- build-depends: time >= 1.5 && < 1.7+ build-depends: time >= 1.5 && < 1.8 if flag(bytestring_has_builder) build-depends: