class Rnes::CpuRegisters

Constants

BREAK_BIT_INDEX
CARRY_BIT_INDEX
DECIMAL_BIT_INDEX
INTERRUPT_BIT_INDEX
NEGATIVE_BIT_INDEX
OVERFLOW_BIT_INDEX
RESERVED_BIT_INDEX
ZERO_BIT_INDEX

Attributes

accumulator[RW]

@param [Integer] @return [Integer]

index_x[RW]

@param [Integer] @return [Integer]

index_y[RW]

@param [Integer] @return [Integer]

program_counter[RW]

@param [Integer] @return [Integer]

stack_pointer[RW]

@param [Integer] @return [Integer]

status[RW]

@param [Integer] @return [Integer]

Public Class Methods

new() click to toggle source
# File lib/rnes/cpu_registers.rb, line 36
def initialize
  @accumulator = 0x00
  @index_x = 0x00
  @index_y = 0x00
  @program_counter = 0x0000
  @stack_pointer = 0x0000
  @status = 0b00000000
end

Public Instance Methods

break=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 51
def break=(boolean)
  toggle_bit(BREAK_BIT_INDEX, boolean)
end
break?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 46
def break?
  @status[BREAK_BIT_INDEX] == 1
end
carry=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 61
def carry=(boolean)
  toggle_bit(CARRY_BIT_INDEX, boolean)
end
carry?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 56
def carry?
  @status[CARRY_BIT_INDEX] == 1
end
carry_bit() click to toggle source

@return [Integer]

# File lib/rnes/cpu_registers.rb, line 66
def carry_bit
  @status[CARRY_BIT_INDEX]
end
decimal=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 76
def decimal=(boolean)
  toggle_bit(DECIMAL_BIT_INDEX, boolean)
end
decimal?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 71
def decimal?
  @status[DECIMAL_BIT_INDEX] == 1
end
interrupt=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 86
def interrupt=(boolean)
  toggle_bit(INTERRUPT_BIT_INDEX, boolean)
end
interrupt?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 81
def interrupt?
  @status[INTERRUPT_BIT_INDEX] == 1
end
negative=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 96
def negative=(boolean)
  toggle_bit(NEGATIVE_BIT_INDEX, boolean)
end
negative?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 91
def negative?
  @status[NEGATIVE_BIT_INDEX] == 1
end
overflow=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 125
def overflow=(boolean)
  toggle_bit(OVERFLOW_BIT_INDEX, boolean)
end
overflow?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 101
def overflow?
  @status[OVERFLOW_BIT_INDEX] == 1
end
reserved=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 111
def reserved=(boolean)
  toggle_bit(RESERVED_BIT_INDEX, boolean)
end
reserved?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 106
def reserved?
  @status[RESERVED_BIT_INDEX] == 1
end
reset() click to toggle source
# File lib/rnes/cpu_registers.rb, line 115
def reset
  @accumulator = 0x00
  @index_x = 0x00
  @index_y = 0x00
  @program_counter = 0x0000
  @stack_pointer = 0x1FD
  @status = 0b00110100
end
zero=(boolean) click to toggle source

@param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 135
def zero=(boolean)
  toggle_bit(ZERO_BIT_INDEX, boolean)
end
zero?() click to toggle source

@return [Boolean]

# File lib/rnes/cpu_registers.rb, line 130
def zero?
  @status[ZERO_BIT_INDEX] == 1
end

Private Instance Methods

toggle_bit(index, boolean) click to toggle source

@param [Integer] index @param [Boolean] boolean

# File lib/rnes/cpu_registers.rb, line 143
def toggle_bit(index, boolean)
  if boolean
    @status |= 1 << index
  else
    @status &= ~(1 << index)
  end
end