gpt4 book ai didi

c++ - 6510/C64 Simulator in C++,如何实现Cycle/Clock

转载 作者:行者123 更新时间:2023-11-28 06:04:37 26 4
gpt4 key购买 nike

我正在尝试实现一个简单的 C++ C64 模拟器(6510 + SID,也许还有 VIC2)。

到目前为止,我们只是介绍了 CPU 基础知识,所以我能够实现一个可以从内存中读取和执行指令的 CPU,完全忽略了在真正的 C64 中,一些指令需要超过 1 个周期的事实。

据我了解:- 在指令精确模拟中,每条指令都在一个 CPU 周期内执行- 在 Cycle-Exact Simulation 中,需要 3 个周期的操作将拆分为 3 个周期。

付出额外努力使模拟器周期精确有多重要?甚至可以在没有 SID 和 VIC 的情况下进行模拟吗?

第二个问题:如果我创建一个主循环,我调用985249次CPU的doCycle方法,SID,VIC来模拟0,985249MHz是否足够?

编辑:不太确定我是否理解正确:

void CPU::emulateCPUCycle(){
cyclesLeft--;

if (cyclesLeft<= 0){

// fetch op-code
uint8_t op = mem->read_byte(reg_pc);

executeInstruction(op);

cyclesLeft= numOfCyclesTable[op]; // contains the required cycle number per instruction

// increase PC
reg_pc++;

}
else
// waste cycle
}

最佳答案

“付出额外努力使模拟器周期精确有多重要?SID 和 VIC 甚至可以在没有的情况下进行模拟吗?”

主要问题是你为什么要这样做。如果您的目标是能够以某种方式运行原始的 c64 游戏,那么您可能需要精确计时,因为许多老游戏都依赖于事物的精确计时。然而,即使您编写了一个周期精确的模拟器,在现代非实时操作系统(linux、windows 等)上获得这种精确度以实际工作的机会也很低。

只需编写一个执行正确操作并忽略时序的模拟器即可。这本身就是一个足够困难的问题

关于c++ - 6510/C64 Simulator in C++,如何实现Cycle/Clock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32654678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com