Esempio n. 1
0
class Emulator():

    FPS = 60
    """
    int, frames per second
    """
    def __init__(self, fname):
        self.cart = Cartridge(fname)
        self.mem = Memory()
        self.display = Display()
        self.cpu = CPU()

        # initial values for cpu
        self.cpu.set(PC=0x100,
                     SP=0xFFFE,
                     AF=0x01B1,
                     BC=0x0013,
                     DE=0x00D8,
                     HL=0x014D)

        # set rom banking mode
        self.mem.set_rom_bank_mode(self.cart.get_rom_bank_mode_byte())

    def update(self):
        # operations to execute before a frame draw
        max_cycles = self.cpu.CLOCK_SPEED / self.FPS

        c = 0
        while (c < max_cycles):
            c += self.cpu.execute_next_opcode()
            self.cpu.update_timers(c)
            # update_graphics(c)
            # do_interupts()

        self.display.render()