gpt4 book ai didi

zxspectrum - ZX Spectrum中的POKE

转载 作者:行者123 更新时间:2023-12-04 07:18:58 27 4
gpt4 key购买 nike

我正在使用旧的ZX Spectrum 48k,我想知道如何准确输入POKE codes

您用磁带加载游戏-然后以某种方式突破POKE语句中的程序类型并再次开始运行该程序?

我已经对此进行了很多搜索,但是还无法确切找到完成的方法,因此,对此的任何线索都将不胜感激。

最佳答案

首先,PEEK和POKE的含义:

10 let x = PEEK 40000: REM returns (reads) the value (0-255) in position 40000
20 POKE 40000, 201: REM writes the 201 value in position 40000

大多数程序会加载一个称为加载程序的小型BASIC程序。就像这样:
10 cls
20 print "Loading AWESOME GAME!!!"
20 load "" screen$
30 load "" code 40000
40 randomize usr 40000

含义应该很简单:加载屏幕演示文稿(第20行)以使用户满意,而汇编程序(游戏本身)加载(第30行),最后启动游戏(第40行)。

关于第40行, usr 40000是完成技巧的表达式,在40000位置调用汇编。指令 Randomize只是初始化 rnd使用的随机种子,认为它实际上永远不会返回。

因此,首先尝试是:
  • 按下“break”(或多或少相当于Ctrl + C),输入list,然后将行置于第35行,即,一旦程序已加载但尚未执行。
  • 不必键入load ""来启动游戏,而是键入merge ""(用于将内存中的基本程序与磁带中的基本程序结合在一起)。该过程将在执行加载程序之前停止。当加载程序包含禁用BREAK的poke指令时,此功能很有用。

  • 这些方法的问题在于,起初隐藏加载程序内部的尝试是幼稚的(例如,在第10行中包含PAPER 0:INK 0指令或类似内容,使所有内容暂时不可见),但是很快他们就会得到一个实际上要复杂得多,直到实际上是 REM指令中包含的汇编程序为止。

    下一步是分析在基本加载程序之后加载的汇编代码的 header ,总结转储地址和代码长度,并创建自己的加载程序,其中可以包含所需的 poke指令。许多杂志发行了这种装载机,这些装载机原本打算在原始装载机之前装载(装载机寻找特定的块,绕过了原始的基本装载机)。

    因此,开发人员决定将组装块包括在没有标题的磁带中,并保护装入器。或包括一个加载器,该加载器仅使用不同的速度加载一个替换ROM中的加载器的汇编程序,而没有标题信息等。或包含一个加载器,该 headless 块包括演示屏幕和游戏代码。

    然后出现了特殊的硬件,例如 Multiface-1。阅读 Multiface-1 manual,您可以看到如何通过按红色按钮(引起NMI(非屏蔽中断))来调用multiface的软件(包括在外围硬件的ROM中),显示了一个菜单,该菜单允许您保存该点的内存(以及保存的代码将不受任何保护,从而打开使用pokes创建自己的加载程序的路径,甚至检查内存中特定地址处的( PEEK)当前值,然后直接输入 POKE(您可以通过它找到开始的位置)。例如,那些会减少您一生的常规)。

    POKE的指令通常是这种类型(这是一种简化): POKE addr, 0POKE addr, 201。数字添加器是例行工作的开始,它减少了可用生命的数量,或检测到与敌人的冲突。

    代码0是汇编NOP(无操作)指令。在NOP期间,CPU不执行任何操作。

    代码201或C9是汇编 RET(返回)指令,表示要返回子例程。在BASIC中,您将使用 GOSUB调用子例程,并使用 RETURN从其结尾返回。在组装中,同一对是CALL/RET。

    如果您有201,则实际上意味着一个子程序(例如,将您的生活减去1),例如:
    9950 let lives = lives - 1
    9960 return

    转换为:
    9950 return
    9960 return

    如果值为0,则将相同的例程转换为:
    9950
    9960 return

    关于zxspectrum - ZX Spectrum中的POKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37628242/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com