class Rnes::RomLoader

Public Class Methods

new(bytes) click to toggle source

@param [Array<Integer>] bytes

# File lib/rnes/rom_loader.rb, line 8
def initialize(bytes)
  @bytes = bytes
end

Public Instance Methods

character_rom() click to toggle source

@return [Rnes::Rom] @raise [Rnes::Errors::InvalidInesFormatError]

# File lib/rnes/rom_loader.rb, line 14
def character_rom
  validate!
  ::Rnes::Rom.new(bytes: character_rom_bytes)
end
program_rom() click to toggle source

@return [Rnes::Rom] @raise [Rnes::Errors::InvalidInesFormatError]

# File lib/rnes/rom_loader.rb, line 21
def program_rom
  validate!
  ::Rnes::Rom.new(bytes: program_rom_bytes)
end
trainer_rom() click to toggle source

@return [Rnes::Rom] @raise [Rnes::Errors::InvalidInesFormatError]

# File lib/rnes/rom_loader.rb, line 28
def trainer_rom
  validate!
  ::Rnes::Rom.new(bytes: trainer_bytes)
end

Private Instance Methods

character_rom_bytes() click to toggle source

@return [Array<Integer>]

# File lib/rnes/rom_loader.rb, line 36
def character_rom_bytes
  @bytes.slice(character_rom_index, character_rom_bytesize)
end
character_rom_bytesize() click to toggle source

@return [Integer]

# File lib/rnes/rom_loader.rb, line 41
def character_rom_bytesize
  ines_header.character_rom_bytesize
end
character_rom_index() click to toggle source

@return [Integer]

# File lib/rnes/rom_loader.rb, line 46
def character_rom_index
  program_rom_index + program_rom_bytesize
end
ines_header() click to toggle source

@return [Rnes::InesHeader]

# File lib/rnes/rom_loader.rb, line 51
def ines_header
  @ines_header ||= ::Rnes::InesHeader.new(@bytes)
end
program_rom_bytes() click to toggle source

@return [Array<Integer>]

# File lib/rnes/rom_loader.rb, line 56
def program_rom_bytes
  @bytes.slice(program_rom_index, program_rom_bytesize)
end
program_rom_bytesize() click to toggle source

@return [Integer]

# File lib/rnes/rom_loader.rb, line 61
def program_rom_bytesize
  @program_rom_bytesize ||= ines_header.program_rom_bytesize
end
program_rom_index() click to toggle source

@return [Integer]

# File lib/rnes/rom_loader.rb, line 66
def program_rom_index
  @program_rom_index ||= trainer_index + trainer_bytesize
end
trainer_bytes() click to toggle source

@return [Array<Integer>]

# File lib/rnes/rom_loader.rb, line 71
def trainer_bytes
  @bytes.slice(trainer_index, trainer_bytesize)
end
trainer_bytesize() click to toggle source

@return [Integer]

# File lib/rnes/rom_loader.rb, line 76
def trainer_bytesize
  ines_header.trainer_bytesize
end
trainer_index() click to toggle source

@return [Integer]

# File lib/rnes/rom_loader.rb, line 81
def trainer_index
  ines_header.bytesize
end
valid?() click to toggle source

@return [Boolean]

# File lib/rnes/rom_loader.rb, line 86
def valid?
  ines_header.valid?
end
validate!() click to toggle source

@raise [Rnes::Errors::InvalidInesFormatError]

# File lib/rnes/rom_loader.rb, line 91
def validate!
  unless valid?
    raise ::Rnes::Errors::InvalidInesFormatError
  end
end