Class: GBRb::CPU::Res

Inherits:
Instruction show all
Defined in:
lib/gbrb/cpu/instruction.rb

Instance Attribute Summary

Attributes inherited from Instruction

#i, #m, #t

Instance Method Summary collapse

Methods inherited from Instruction

#carry?, #immediate_count

Constructor Details

#initialize(bit, target, indirect = false, m = 2, t = 16) ⇒ Res

Returns a new instance of Res.



590
591
592
593
594
595
596
# File 'lib/gbrb/cpu/instruction.rb', line 590

def initialize bit, target, indirect=false, m=2, t=16
  super m, t
  @bit = bit
  @mask = 0xff - 0b10 ** bit
  @target = target.to_sym
  @indirect = indirect
end

Instance Method Details

#call(r, mem) ⇒ Object



598
599
600
601
602
603
604
605
# File 'lib/gbrb/cpu/instruction.rb', line 598

def call r, mem
  if @indirect
    addr = r.public_send(@target).read
    mem.write_byte(addr, mem.read_byte(addr) & @mask)
  else
    r.public_send(@target).store r.public_send(@target).read & @mask
  end
end