unmed2-0.0: src/MMD0Song.hs
module MMD0Song where
import Amiga
import qualified MMD0Sample
import MMD0Sample(MMD0Sample)
data MMD0Song = MMD0Song
{ sample :: [ MMD0Sample ]
, numblocks :: UWORD
, songlen :: UWORD
, playseq :: [ UBYTE ]
, deftempo :: UWORD
, playtransp :: BYTE
, flags :: UBYTE
, flags2 :: UBYTE
, tempo2 :: UBYTE
, trkvol :: [ UBYTE ]
, mastervol :: UBYTE
, numsamples :: UBYTE
}
deriving (Show)
peek :: MEM -> PTR -> IO MMD0Song
peek m p = do
sample' <- mapM (MMD0Sample.peek m) $ pointerRange p 8 63
numblocks' <- peekUWORD m (p+504)
songlen' <- peekUWORD m (p+506)
playseq' <- mapM (peekUBYTE m) $ pointerRange (p+508) 1 256
deftempo' <- peekUWORD m (p+764)
playtransp' <- peekBYTE m (p+766)
flags' <- peekUBYTE m (p+767)
flags2' <- peekUBYTE m (p+768)
tempo2' <- peekUBYTE m (p+769)
trkvol' <- mapM (peekUBYTE m) $ pointerRange (p+770) 1 16
mastervol' <- peekUBYTE m (p+786)
numsamples' <- peekUBYTE m (p+787)
return $ MMD0Song
sample' numblocks' songlen' playseq' deftempo' playtransp' flags'
flags2' tempo2' trkvol' mastervol' numsamples'