class GBTiles::GBT::Import::MODFile
Attributes
mod_data[RW]
Public Class Methods
new()
click to toggle source
# File lib/gbtiles/gbt/import/mod_file.rb, line 14 def initialize @mod_data = GBTiles::GBT::MODData::MODData.new end
open(file)
click to toggle source
# File lib/gbtiles/gbt/import/mod_file.rb, line 18 def self.open file import = GBTiles::GBT::Import::MODFile.new import.mod_data.name = GBTiles::DataType.string(file.read(20)) for i in 0..30 sample_data = file.read(30) sample = GBTiles::GBT::MODData::Sample.new sample.name = GBTiles::DataType.string!(sample_data, 22) sample.length = GBTiles::DataType.bword!(sample_data) sample.finetune = GBTiles::DataType.byte!(sample_data) sample.volume = GBTiles::DataType.byte!(sample_data) sample.repeat_point = GBTiles::DataType.bword!(sample_data) sample.repeat_length = GBTiles::DataType.bword!(sample_data) import.mod_data.samples << sample end import.mod_data.song_length = GBTiles::DataType.byte(file.read(1)) file.read(1) # unused for i in 0..127 import.mod_data.pattern_table << GBTiles::DataType.byte(file.read(1)) end import.mod_data.identifier = GBTiles::DataType.string(file.read(4)) for i in 0..63 pattern = GBTiles::GBT::MODData::Pattern.new for j in 0..63 pattern.rows << file.read(16) end import.mod_data.patterns << pattern end if import.mod_data.identifier != "M.K." then raise IOError, "Invalid identifier in .MOD: expected `M.K.` got `#{import.mod_data.identifier}`" end import end