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