class Rnes::InesHeader

Constants

BYTESIZE
PREFIX_BYTES

Public Class Methods

new(bytes) click to toggle source

@param [Array<Integer>] bytes

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

Public Instance Methods

bytesize() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 18
def bytesize
  BYTESIZE
end
character_ram_bytesize() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 23
def character_ram_bytesize
  @bytes[8]
end
character_rom_bytesize() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 28
def character_rom_bytesize
  @bytes[5] * 8 * 2**10
end
has_battery_backed_program_rom_bit?() click to toggle source

@return [Boolean]

# File lib/rnes/ines_header.rb, line 33
def has_battery_backed_program_rom_bit?
  flags1[1] == 1
end
has_mirror_ignoring_bit?() click to toggle source

@return [Boolean]

# File lib/rnes/ines_header.rb, line 38
def has_mirror_ignoring_bit?
  flags1[3] == 1
end
has_trainer_bit?() click to toggle source

@note Trainers are 512 bytes of code which is loaded into $7000 before the game starts for hacker use. @return [Boolean]

# File lib/rnes/ines_header.rb, line 44
def has_trainer_bit?
  flags1[2] == 1
end
has_vertical_mirroring_bit?() click to toggle source

@return [Boolean]

# File lib/rnes/ines_header.rb, line 49
def has_vertical_mirroring_bit?
  flags1[0] == 1
end
mapper_number() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 54
def mapper_number
  flags2 & 0b11110000 | flags1 >> 4
end
program_rom_bytesize() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 59
def program_rom_bytesize
  @bytes[4] * 16 * 2**10
end
trainer_bytesize() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 64
def trainer_bytesize
  if has_trainer_bit?
    512
  else
    0
  end
end
valid?() click to toggle source

@return [Boolean]

# File lib/rnes/ines_header.rb, line 73
def valid?
  @bytes[0..3] == PREFIX_BYTES
end

Private Instance Methods

flags1() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 80
def flags1
  @bytes[6]
end
flags2() click to toggle source

@return [Integer]

# File lib/rnes/ines_header.rb, line 85
def flags2
  @bytes[7]
end