问题标签 [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.
assembly - NES(6502组装)精灵运动
我目前正在开发 NES(6502) 组装游戏,但我不明白如何进行精灵移动。以下是我认为它应该如何工作的方式:
但是,您似乎无法增加 A 寄存器累加器,因为在尝试使用 INA 指令进行汇编时出现错误。所以我有点迷失了。我应该使用 STA 代替 LDA 吗?但我想使用地址 $200 的内容,而不是在其中放置我选择的值。我不知道如何让我的精灵移动。
javascript - Hapi.js websocket协议通信需要客户端使用hapi.js连接websocket吗?
我正在使用 Hapi 构建一个 API。我需要 WebSocket 功能,似乎 Nes 是最流行的与 Hapi 一起使用的。这很好,因为 Nes 让事情变得非常简单,例如,测试路线可能看起来如此......
这很好,但是,文档显示使用 WebSockets 向该路由发出请求的唯一方法是在客户端上也使用 Nes...
我的问题是客户端不使用 JavaScript。Nes 库根本不存在。在这种情况下,我还能使用 WebSockets 向这条路由发出请求吗?没有这方面的例子,所以我不明白我怎么能这样做。如果不可能,那么我想知道我的选择是什么,因为我正在使用的框架(Flutter)中甚至不存在 Socket.io。
assembly - 将#$FF 加载到 A 中,并在地址 $0000 处存储不起作用
我正在为 NES 学习汇编,我编写了这个程序:
我用NESASM3编译程序,它编译成功,然后在我的模拟器中运行它,当我进入模拟器中的内存查看器时,看看地址$ 0000,它是01,而不是FF,就像我编程的那样。
assembly - 如何使用预定义的常量作为内存地址?
我正在制作 NES 游戏。我正在定义几个常量来帮助我管理精灵。我有
我的用例如下:
我想修改精灵1的y位置
我愿意:
在我的用例中 spriteyposition 应该是一个内存指针,但我感觉汇编程序将其视为常规数字
如何将 spriteyposition 称为内存地址而不是数字?
assembly - 错误:当我尝试组装我的 nes 游戏时出现范围错误(130 不在 [-128..127] 中)消息
我在第 248 行收到此错误,这没有任何意义:
我不知道为什么会发生这种情况,因为该行的所有内容只是一个到标签的跳转命令,如果这是范围错误的含义,那么它离跳转甚至不远。这似乎完全是随机的。你能帮忙吗?
这是代码:
谢谢
assembly - 6502 nes 游戏的堆栈在跳转到子程序时溢出
当我为我在 6502 程序集中编写的 nes 运行这个 chrome 恐龙克隆时,由于某种原因,它会导致堆栈溢出。
这是代码:
(这与 checkBackgroundCollision 和 CollisionMap afaik 无关)
问题似乎出现在第 386 行,它第二次跳转到 checkCactusCollision 子例程(第 161 行),但是,上一次跳转它没有做任何事情。我已经尝试了很多事情,包括使代码更接近子程序,删除 checkCactusCollision 中的推送和拉取命令,并将它们替换为用于存储 A 寄存器的临时内存地址,甚至只是删除子程序跳转并重复代码checkCactusCollision 两次,但我仍然无法弄清楚。
帮助将不胜感激,谢谢。
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 处变得无效。
那么,你们认为我错过了什么?
emulation - N 字节“魔术”数字的目的是什么?
解析 NES rom 时,前四个字节是一个“幻数”:
这或任何其他示例提供了什么目的?
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看起来很有希望,但我对它的了解还不够多,无法使用它。
感谢您的时间。
python - 如何在 python 中保存游戏状态对象?
我们正在为我们的班级制作强化学习算法。在这个过程中,我们希望为使用 gym-retro 包制作的 nes-game 创建一个保存状态。我们尝试使用 pickle 来保存游戏环境,但它不会 pickle gamedate 对象。
有什么方法可以保存我们不知道的游戏状态吗?这是我们使用的代码的一部分: