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