当前位置: 首页>>代码示例>>Python>>正文


Python Register.debug方法代码示例

本文整理汇总了Python中register.Register.debug方法的典型用法代码示例。如果您正苦于以下问题:Python Register.debug方法的具体用法?Python Register.debug怎么用?Python Register.debug使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在register.Register的用法示例。


在下文中一共展示了Register.debug方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: Register

# 需要导入模块: from register import Register [as 别名]
# 或者: from register.Register import debug [as 别名]
class CPU:
    """ CPU """

    # The GameBoy CPU runs at 4194304hz, i.e. 4194304 cycles per second
    CLOCK_HZ = 4194304

    # The special Divider Register (DIV, 0xFF04) must be incremented 16384 times per second, i.e. every 256 CPU cycles
    DIV_ADDRESS = 0xFF04

    def __init__(self, gb):
        """
        :type gb: gb.GB
        """
        # Logger
        self.logger = Log()

        # Communication with other components
        self.gb = gb

        # Components exclusive to CPU
        self.register = Register()

        # State initialization
        self.halted = False  # for OP 76 (HALT)
        self.stopped = False  # for OP 10 (STOP)

    def execute(self):
        """
        Execution main loop
        """
        if self.gb.debug_mode:
            start = datetime.now()
        full_update_cycle_completed = False
        while not full_update_cycle_completed:
            opcode: int = None
            cycles_spent = 0
            if not self.halted and not self.stopped:
                opcode = self.read_next_byte_from_cartridge()

                if self.gb.debug_mode:
                    plus1 = "{:02X}".format(self.gb.memory.read_8bit(self.register.PC))
                    plus2 = "{:02X}".format(self.gb.memory.read_8bit(self.register.PC+1))
                    self.logger.debug("Executing 0x%04X: %02X  [ %s , %s ]",self.register.PC-1,opcode,plus1,plus2)
                cycles_spent += op.execute(self.gb, opcode)
            cycles_spent += self.gb.interrupts.update(opcode)
            full_update_cycle_completed = self.gb.gpu.update(cycles_spent)

            if self.gb.debug_mode:
                self.gb.debug()
                if self.gb.step_mode:
                    input()

            # TODO: redo
            # if cycles_spent >= 256:
            #     current_div = self.memory.read_8bit(self.DIV_ADDRESS)
            #     new_div = (current_div + (cycles_spent/256)) & 0xFF  # TODO: what if value > FF?
            #     self.memory.write_8bit(self.DIV_ADDRESS,new_div)
            #     cycles_spent = cycles_spent % 256
        if self.gb.debug_mode:
            end = datetime.now()
            delta = self.delta(start, end)
            print("total:", delta, "\tFPS:",1000.0/delta)

    def read_next_byte_from_cartridge(self):
        """
        Read the next data from the ROM, increment Program Counter
        :return: 8-bit data read from ROM
        """
        data = self.gb.memory.read_8bit(self.register.PC)
        self.register.PC += 1
        return data

    def delta(self, a, b):
        diff = b-a
        return (diff.seconds * 1000.0) + (diff.microseconds / 1000.0)

    def debug(self):
        """
        Prints debug info to console.
        """
        self.register.debug()
开发者ID:geosohh,项目名称:pgbe,代码行数:83,代码来源:cpu.py


注:本文中的register.Register.debug方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。