assembly - 有人可以帮我理解一些汇编语言吗?
问题描述
很抱歉,这不是正确的地方,但我正拼命地试图理解这个汇编脚本中发生的事情(我假设就是这样,基于我已经完成的谷歌搜索时间。)它是口袋妖怪黄色版的rom,我了解一些但不是全部。我想如果我能得到一些帮助来理解这一段在做什么,我可以弄清楚其余的。代码如下所示:
PalletTownScript:
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
jr z, .next
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
.next
call EnableAutoTextBoxDrawing
ld hl, PalletTownScriptPointers
ld a, [wPalletTownCurScript]
jp JumpTable
我的理解是第一行只是将其余部分放入名为“PalletTownScript”的标签中,只是稍后引用的名称。第二行检查是否发生了某个事件,详细信息在另一个文件中。到目前为止一切都很好。第三行是对我来说变得复杂的地方。我确定“jr”跳转到脚本的另一部分,然后返回这里?我认为?但是,据我所见,每个示例只有一个参数,而这一行有两个。是跳到z吗?什么是z?我已经搜索了这个文件的其余部分,并且没有名为 z 的部分。z 是另一个函数吗?另一个参数是 .next,据我所知,它是 PalletTownScript 部分的一个子部分。所以它跳到那里是有道理的(但为什么要跳呢?如果它 s 就在那里,它不就是这样做吗?)但我仍然不知道“z”在那里做什么。在.next中,它调用了一些东西并加载了一些其他东西,这很好,但最后,它跳转到另一个文件中的JumpTable(我假设它全部编译后都没有关系,所以我'我不关心那个),但它仍然跳转到.next,然后再次跳转到JumpTable吗?它什么时候回去做那个 SetEvent?之后它会去哪里?m 不关心),但它仍然跳转到 .next,然后再次跳转到 JumpTable?它什么时候回去做那个 SetEvent?之后它会去哪里?m 不关心),但它仍然跳转到 .next,然后再次跳转到 JumpTable?它什么时候回去做那个 SetEvent?之后它会去哪里?
我以前从未处理过大会,这对我来说非常困惑,所以如果有人可以在这方面给我一些帮助,我将不胜感激。谢谢!
解决方案
jr z, .next
是有条件的相对跳跃。只有在设置了零标志(在 F 寄存器中)时才会进行跳转。
如果事件EVENT_GOT_POKEBALLS_FROM_OAK
已经发生,则事件EVENT_PALLET_AFTER_GETTING_POKEBALLS
变为已设置。
如果没有,SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
则跳过。
CheckEvent
和宏在SetEvent
这里定义:https ://github.com/pret/pokered/blob/master/macros/scripts/events.asm
推荐阅读
- azure - 带有转义特殊字符的 Azure 搜索自动完成
- julia - 这个 Julia 函数有什么问题?
- c# - 将变量和列表调用到另一个类?
- javascript - 带有 JavaScript 过滤功能的堆栈溢出
- python - 从张量字符串加载图像
- mysql - 在 mysql 中选择 Exists 总是返回 true
- c# - VerticalScrollBarVisibility="Always" 在 Xamarin 中不起作用
- oracle - 如何在价格等级中查找组织标识符
- c++ - 我需要读取字符串数组 C++ 中每个单词的首字母
- javascript - 如何在包含内容的新选项卡中打开自定义 URL?