问题标签 [gameboy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
228 浏览

process - scanmem - 如何破解游戏男孩的颜色

我一直在树莓派 2 上运行 RetroPie。我能够登录 (ssh) 到树莓派并使用“scanmem”linux 程序修改内存 (RAM) 中的值以欺骗 playstation 游戏。问题是当我尝试扫描 Game Boy Color 或 Super Nintendo 游戏(进程)的内存时,我无法找到我正在寻找的值。我尝试了不同的方法。例如,我试图搜索递减/递增值、精确值,但似乎没有任何效果。我如何在 RetroPie 上使用 scanmem 破解 Game Boy Color 和 Super Nintendo 游戏?有没有人成功过?

0 投票
2 回答
135 浏览

java - 这些代码中哪一段在 Java 中更快

我想知道哪一段代码会运行得更快,因为我想尽可能地优化。

代码一:

代码 B:

我问的原因是我怀疑代码 B 没有分支,但我不确定如何将每个代码转换为机器代码。

更好的是,有没有办法查看每段代码生成的机器代码?

0 投票
1 回答
414 浏览

c - GBDK C 中 typedef 结构的前向声明

我正在使用 GBDK C 为原始的 Game Boy 创建游戏,但遇到了一个小问题。我游戏中的每个房间都需要有不同portals的 ,但每个房间都portal需要引用一个房间。这是代码的缩减版:

关于如何实现这一目标的任何建议?我尝试在文件顶部添加前向声明,struct Portal;但没有帮助。


使用以下代码:

给我这个错误:

0 投票
2 回答
311 浏览

c - C中的外部语法?

当涉及全局变量时,我对在我的 c 代码中使用“extern”感到有些困惑。我尝试了以下方法,并得到了编译错误:

主要.c:

lib.c:

我收到的错误:

0 投票
1 回答
667 浏览

emulation - Gameboy 模拟器弹出空堆栈

我正在开发一个 Gameboy 模拟器,我已经在 ROM 中获得操作码0xD1(弹出DE堆栈)但堆栈为空(没有推送任何值)。所有未知的操作码都返回错误,所有其他指令似乎都工作正常。

这是我的编程错误,ROM,还是这只是程序设置为的快速DE方法0x0000

0 投票
1 回答
371 浏览

c# - CScore 输出大于 1 字节的 PCM

我正在编写一个 C# 模拟器,并决定使用 CScore 输出 PCM。当样本大小(每个通道)为一个字节时,声音输出正确,但是当我将样本大小增加到 16 位时,声音非常嘈杂。

与该问题相关的一个问题是如何解释这 2 个字节(它们有符号吗?先高字节?)

这大致就是我正在做的事情:

首先,我生成这样的样本

这将生成一个简单的方波,其频率由_tickThreshold 确定。如果 _buffer 是字节数组,则声音是正确的。我想用短裤输出它,因为它使我能够使用签名样本并简单地添加多个通道以混合它们。

这就是我输出声音的方式。

我使用的 WaveFormat 是这样确定的:

我很确定我遗漏了一些明显的东西,但我已经调试了一段时间,似乎并没有查明问题出在哪里。

谢谢

0 投票
1 回答
925 浏览

assembly - 用汇编写内存(Z80 / Gameboy)

我正在尝试以编程方式将字符写入内存,以便我可以在屏幕上显示它。如何使用 Gameboy 的 Z80 组件获取一个值(例如 65)并将其写入内存?

根据我的阅读,这只是将寄存器加载到内存地址的情况:

除了将字符写入内存之外,我的代码似乎还在工作。我得到的输出是“BBBBBBBB”。

周围的代码如下。

0 投票
2 回答
742 浏览

emulation - GameBoy 16 位加载到 8 位内存

我已经开始为 Gameboy 经典游戏编写模拟器,这是继成功的 Chip 8 模拟器之后的下一个项目。

作为参考,我使用GameBoy CPU Manual

现在在第 66 页上它说:

基本上,将值 HL 加载到寄存器 A 中。

但是,据我了解,这会将 16 位值 HL 加载到 8 位寄存器 A 中。这当然不适合。

你知道这是什么意思吗?所有其他参考资料都只是简单的表格,没有解释,但都说同样的话。

感谢您的回答!

0 投票
2 回答
755 浏览

emulation - 为了模拟 Gameboy,为什么将内存分成不同的区域很重要?

所以我正在编写一个gameboy 模拟器,我不能100% 确定为什么其他项目会花时间将内存分成适当的类别。我不知道我是否遗漏了一个主要的技术难题(也许处理指令中的非法参数?),但似乎唯一重要的是写指令给出的地址可以通过正确的读取来检索操作说明。因此,对于一个子问题,如果我在假设程序集完全合法的情况下工作(意味着没有任何东西试图在它不能读/写的地方读/写),我可以制作一个大数组并对其进行读写吗?

请注意,这是一个概念性问题,我知道一个大数组会占用大量内存,我不一定要寻找最好的方法,只是想了解它的工作原理以及其他模拟器开发人员为什么这样做他们这样做的方式。

0 投票
1 回答
1272 浏览

z80 - Gameboy 处理器 LR35902 操作码 0x08 含义

有人可以解释一下操作码0x08在 LR35902 处理器上的作用。助记符是LD (a16),SP

我很困惑,因为堆栈指针是一个 16 位的值,但(a16)它是一个只能存储 8 位的地址(我认为!)。我可以猜到前 8 位被放入(a16),下一个被放置在旁边,但我想确认一下。