11得票1回答
Game Boy上的CP指令中进位标志的行为是什么?

在《Game Boy CPU Manual》第87页中,声称CP n指令在没有借位时设置进位标志,并且这意味着A < n,但这似乎与自身矛盾,因为当A > n时设置进位标志。 例如:如果A=0且B=1,则CP B像SUB A, B一样设置标志,即 0 - 1。这变成了 0 + 2...

13得票4回答
具备全面调试器的Game Boy模拟器?

作为回答关于《宝可梦红》中一个故障的技术运作的问题的一部分,我一直在寻找一种使用标准调试器来调试Game Boy ROM的方法。虽然我找到的许多模拟器都有一些调试支持,但迄今为止我找到的没有什么帮助。 背景是,我尝试使用Visual Boy Advance内置功能进行调试,但它们对我要做的事...

40得票3回答
Game Boy:什么构成了“半进位”?

Game Boy的Z80 CPU有一个半进位标志位,但我似乎找不到关于何时设置/清除它的信息。 目前我的理解是,任何8位加法、减法、移位或旋转操作(可能还有其他操作)都会将其设置为结果的第4位(?),而DAA指令以某种方式设置/使用它。 我不确定的是16位指令如何影响它以及是否受某些寄存器的影响。

8得票2回答
GameBoy 16位载入到8位内存

我已经开始编写Gameboy经典版模拟器,这是我在成功完成Chip 8模拟器后的下一个项目。 作为参考,我使用GameBoy CPU手册。 现在,在第66页上,它说: LD A,(HL) 7E 8 基本上,将值HL加载到寄存器A中。 然而,我理解这样做会将16位的值HL加载到...

7得票3回答
我该如何学习编写控制台模拟器?

可能重复: 模拟器如何工作以及它们是如何编写的? 我想尝试编写一个基本的Gameboy模拟器,甚至可能是NES模拟器。我知道C语言的基础知识,我还擅长Java,所以我知道编程的必要基础。但我不知道的是,人们如何将所有数据处理成C程序并从中创建模拟器。我知道应该从源代码学习,但是仅凭一堆代码...

13得票2回答
优化GameBoy Z80中的位操作算法

这不是一道作业题,而是我正在开发的一个游戏。 我有两个16位RGB颜色,并希望根据另外六个4位数量来改变它们的六个通道。虽然算法简单但很繁琐,我正在寻找一种优化方法,以便一次处理更多有用的工作。 这是高级概述: hl指向四个颜色字节:[hl] = %gggrrrrr、[hl+1] = ...

13得票3回答
Game Boy:不修改任何内容的指令(例如AND A)有什么作用?

我一直在开发Game Boy模拟器,注意到有些操作码永远不会改变任何值,例如LD A, A、LD B, B等以及AND A。前两个显然没有改变任何东西,因为它们将寄存器的值加载到相同的寄存器中,而由于AND与A寄存器进行比较,AND A将始终返回A。这些操作有什么目的,还是每个周期之后本质上与...

10得票1回答
使用主中断使能但没有中断使能的情况下进入HALT模式(0xFF0F = 0)?

根据Gameboy编程手册,HALT模式可被以下事件取消,这些事件具有指定的起始地址: 1. /RESET引脚为低电平信号。起始地址:0x0000 2. 中断使能标志及其相应中断请求标志被设置。 - IME = 0 (禁用中断主控制开关)。起始地址:紧随HALT指令之后的地址。 - IME...

17得票2回答
Game Boy:半进位标志和16位指令(特别是操作码0xE8)

和很多人一样,我正在编写Game Boy模拟器,并且有几个关于指令0xE8(ADD SP,n,其中n是一个8位立即数)的问题。 在16位指令中,这里声称如果从第7位到第8位发生进位,则设置半进位标志,而这里则说半进位标志表示从第11位到第12位的进位。在这个Reddit主题中,似乎对此问题有...

11得票1回答
Gameboy ~Z80处理器中指令LD A,(C)的长度是多少?

你好,我正在写一款Game Boy模拟器。 我使用了这个参考文献:Gameboy CPU (LR35902) 指令集 这份文档指出以下操作码:0xE2 LD (C),A 和0xF2 LD A,(C) 长度为2。 Game Boy CPU 手册 中提到这些指令: 将寄存器 C 中的...