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

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

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

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

15得票1回答
Zilog Z80操作码实现

我目前正在开发一款好玩的GameBoy模拟器,但是我在理解一些基本操作码的实现方式时遇到了一些问题。 目前我正在实现AND操作;前几个(0xA0-> 0xA3; 0xA6&0xA7)都很简单,但对于寄存器H,L的AND操作有点不同。 您可以通过以下链接下载z80文档: um0080.pdf...

14得票3回答
如何从Gameboy中解码Nintendo标志?

我尝试使用在这里描述的背景调色板方案解码以下位图: CE ED 66 66 CC 0D 00 0B 03 73 00 83 00 0C 00 0D 00 08 11 1F 88 89 00 0E DC CC 6E E6 DD DD D9 99 BB BB 67 63 6E 0E...

14得票2回答
如何将寄存器加载到自身的指令有什么作用?

在查看Gameboy的指令集时,我遇到了诸如以下指令:LD A, A LD B, B LD C, C LD D, D ... 在这个表格中,每条指令都有自己的操作码,这让我觉得它们由于可能的操作码数量的限制而非常重要。 起初我认为它可能是对该寄存器中的指针进行解引用并将值存储到该指针中(就...

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

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

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

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

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

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

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...

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 中的...