class Rnes::DmaController

Constants

TRANSFER_BYTESIZE

Public Class Methods

new(ppu:, working_ram:) click to toggle source

@param [Rnes::Ppu] ppu @param [Rnes::Ram] working_ram

# File lib/rnes/dma_controller.rb, line 7
def initialize(ppu:, working_ram:)
  @ppu = ppu
  @requested = false
  @working_ram = working_ram
end

Public Instance Methods

request_transfer(address_hint:) click to toggle source

@param [Integer] address_hint

# File lib/rnes/dma_controller.rb, line 20
def request_transfer(address_hint:)
  @requested = true
  @working_ram_address = address_hint << 8
end
transfer_if_requested() click to toggle source
# File lib/rnes/dma_controller.rb, line 13
def transfer_if_requested
  if @requested
    transfer
  end
end

Private Instance Methods

transfer() click to toggle source
# File lib/rnes/dma_controller.rb, line 27
def transfer
  TRANSFER_BYTESIZE.times do |index|
    value = @working_ram.read(@working_ram_address + index)
    @ppu.transfer_sprite_data(index: index, value: value)
  end
  @requested = false
end