unmed2-0.0: src/MMD1NoteData.hs
module MMD1NoteData where
import Data.Bits ((.&.))
import Amiga
data MMD1NoteData = MMD1NoteData
{ note :: UBYTE
, instrument :: UBYTE
, command :: UBYTE
, databyte :: UBYTE
}
deriving (Show)
peek :: MEM -> PTR -> IO MMD1NoteData
peek m p = do
byte1 <- peekUBYTE m (p + 0)
byte2 <- peekUBYTE m (p + 1)
byte3 <- peekUBYTE m (p + 2)
byte4 <- peekUBYTE m (p + 3)
let nnnnnnn = byte1 .&. 0x7F
let iiiiii = byte2 .&. 0x3F
let cccccccc = byte3 .&. 0xFF
let dddddddd = byte4 .&. 0xFF
let note' = nnnnnnn
let instrument' = iiiiii
let command' = cccccccc
let databyte' = dddddddd
return $ MMD1NoteData
note' instrument' command' databyte'