module Sound.MED.Raw.MMDDump where
import Sound.MED.Basic.Amiga
import Sound.MED.Basic.Utility
data MMDDump = MMDDump
{ len :: ULONG
, dat :: [ UBYTE ]
, ext_len :: UWORD
, name :: Maybe [ UBYTE ]
}
deriving (Show)
peek :: (Reader m) => PTR -> m MMDDump
peek p = do
len' <- peekULONG (p+0)
dat'' <- peekPTR (p+4)
dat' <- mapM peekUBYTE $ pointerRangeGenCheck dat'' 1 len'
ext_len' <- peekUWORD (p+8)
name' <-
skipIf (ext_len' < 20) $ mapM peekUBYTE $ pointerRange (p+10) 1 20
return $ MMDDump
len' dat' ext_len' name'