问题标签 [nes]

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 投票
3 回答
1107 浏览

assembly - NES(6502组装)精灵运动

我目前正在开发 NES(6502) 组装游戏,但我不明白如何进行精灵移动。以下是我认为它应该如何工作的方式:

但是,您似乎无法增加 A 寄存器累加器,因为在尝试使用 INA 指令进行汇编时出现错误。所以我有点迷失了。我应该使用 STA 代替 LDA 吗?但我想使用地址 $200 的内容,而不是在其中放置我选择的值。我不知道如何让我的精灵移动。

0 投票
1 回答
1944 浏览

javascript - Hapi.js websocket协议通信需要客户端使用hapi.js连接websocket吗?

我正在使用 Hapi 构建一个 API。我需要 WebSocket 功能,似乎 Nes 是最流行的与 Hapi 一起使用的。这很好,因为 Nes 让事情变得非常简单,例如,测试路线可能看起来如此......

这很好,但是,文档显示使用 WebSockets 向该路由发出请求的唯一方法是在客户端上也使用 Nes...

我的问题是客户端不使用 JavaScript。Nes 库根本不存在。在这种情况下,我还能使用 WebSockets 向这条路由发出请求吗?没有这方面的例子,所以我不明白我怎么能这样做。如果不可能,那么我想知道我的选择是什么,因为我正在使用的框架(Flutter)中甚至不存在 Socket.io。

0 投票
1 回答
175 浏览

assembly - 将#$FF 加载到 A 中,并在地址 $0000 处存储不起作用

我正在为 NES 学习汇编,我编写了这个程序:

我用NESASM3编译程序,它编译成功,然后在我的模拟器中运行它,当我进入模拟器中的内存查看器时,看看地址$ 0000,它是01,而不是FF,就像我编程的那样。

0 投票
1 回答
78 浏览

assembly - 如何使用预定义的常量作为内存地址?

我正在制作 NES 游戏。我正在定义几个常量来帮助我管理精灵。我有

我的用例如下:

我想修改精灵1的y位置

我愿意:

在我的用例中 spriteyposition 应该是一个内存指针,但我感觉汇编程序将其视为常规数字

如何将 spriteyposition 称为内存地址而不是数字?

0 投票
1 回答
62 浏览

assembly - 错误:当我尝试组装我的 nes 游戏时出现范围错误(130 不在 [-128..127] 中)消息

我在第 248 行收到此错误,这没有任何意义:

我不知道为什么会发生这种情况,因为该行的所有内容只是一个到标签的跳转命令,如果这是范围错误的含义,那么它离跳转甚至不远。这似乎完全是随机的。你能帮忙吗?

这是代码:

谢谢

0 投票
1 回答
183 浏览

assembly - 6502 nes 游戏的堆栈在跳转到子程序时溢出

当我为我在 6502 程序集中编写的 nes 运行这个 chrome 恐龙克隆时,由于某种原因,它会导致堆栈溢出。

在此处输入图像描述

这是代码:

(这与 checkBackgroundCollision 和 CollisionMap afaik 无关)

问题似乎出现在第 386 行,它第二次跳转到 checkCactusCollision 子例程(第 161 行),但是,上一次跳转它没有做任何事情。我已经尝试了很多事情,包括使代码更接近子程序,删除 checkCactusCollision 中的推送和拉取命令,并将它们替换为用于存储 A 寄存器的临时内存地址,甚至只是删除子程序跳转并重复代码checkCactusCollision 两次,但我仍然无法弄清楚。

帮助将不胜感激,谢谢。

0 投票
1 回答
228 浏览

c - 嵌套rom中是否有错误?

我目前正在为 NES 制作一个模拟器(像许多其他人一样),并且在测试我对 Kevtris 的嵌套 rom 的模拟时(在此处找到:https ://wiki.nesdev.com/w/index.php/Emulator_tests ),那里是我在嵌套日志上的指令 877 中遇到的一个奇怪的错误(这个:http : //www.qmtpro.com/~nes/misc/nestest.log,在 CE42 行)。

该指令是 PLA ,它从堆栈中拉出累加器,而堆栈指针在开始时位于 $7E。(我为堆栈指针使用 1 字节值,因为它从 0x0100 到 0x01FF ,所以当我写 $7E 谈论堆栈时,它是 0x017E ,而不是 zeropage ;))

因此,当 PLA 在第 877 行执行时,堆栈指针移动到 $7F 并检索第一个字节并存储到累加器中。

问题出在这里:在嵌套日志上,这个字节是 0x39 ,然后,在指令 878 上,它也是一个 PLA ,在 $80(堆栈指针递增 + 1)处检索到的字节是 0xCE,这已经反转了低字节和高字节。

写入堆栈 (0xCE39) 的值源自 CE37 行的 JSR 指令,这是我对 JSR 操作码的实现:

以下是来自 nestest 的日志:

使用我的代码,我的 0xCE 价格为 7F 美元,0x39 价格为 80 美元。因此,我的代码的第一个 PLA 将 0xCE 存储在累加器中,第二个 PLA 存储 0x39,这是嵌套日志显示的反转。

不知道是不是我的JSR代码错了,到现在都成功了。当存储在堆栈上时,我尝试反转程序计数器的低字节和高字节,但正如预期的那样,指令在 rom 的第一个 JSR 处变得无效。

那么,你们认为我错过了什么?

0 投票
1 回答
134 浏览

emulation - N 字节“魔术”数字的目的是什么?

解析 NES rom 时,前四个字节是一个“幻数”:

这或任何其他示例提供了什么目的?

0 投票
1 回答
401 浏览

input - 在 ca65 上读取 NES (6502) 组件的控制器输入的优雅方法是什么?

我开始在我的休息时间为一个潜在的 NES 游戏项目学习 6502 组装,我在设置读取控制器输入时遇到了一些麻烦。我的背景是 C,所以我熟悉内存及其工作原理,但汇编中的流控制仍然让我无法理解。

因为我是新手,所以我想我应该从简单开始并使用https://www.vbforums.com/showthread.php?858965-NES-6502-Programming-Tutorial-Part-5中描述的逐个按钮方法-控制器命令。这很好用,但它确实是重复和罗嗦的。

有没有更优雅的方式来做这不完全超出我的能力?在没有帮助的情况下,我对集成其他来源的代码知之甚少。

https://wiki.nesdev.com/w/index.php/Controller_reading_code看起来很有希望,但我对它的了解还不够多,无法使用它。

感谢您的时间。

0 投票
1 回答
99 浏览

python - 如何在 python 中保存游戏状态对象?

我们正在为我们的班级制作强化学习算法。在这个过程中,我们希望为使用 gym-retro 包制作的 nes-game 创建一个保存状态。我们尝试使用 pickle 来保存游戏环境,但它不会 pickle gamedate 对象。

有什么方法可以保存我们不知道的游戏状态吗?这是我们使用的代码的一部分: