unmed2-0.0: src/MMD0Block.hs
module MMD0Block where
import Amiga
import qualified MMD0NoteData
import MMD0NoteData(MMD0NoteData)
data MMD0Block = MMD0Block
{ numtracks :: UBYTE
, lines :: UBYTE -- NOTE: actual number of lines is one greater
, notedata :: [ [ MMD0NoteData ] ]
}
deriving (Show)
peek :: MEM -> PTR -> IO MMD0Block
peek m p = do
numtracks' <- peekUBYTE m (p + 0)
lines' <- peekUBYTE m (p + 1)
notedata'' <- mapM (MMD0NoteData.peek m) $ pointerRangeGen2 (p+2) 3 numtracks' (lines'+1)
let notedata' = chunk numtracks' notedata''
return $ MMD0Block
numtracks' lines' notedata'