Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search C64识别磁盘映像之间的常见模式_Search_Binary_C64 - Fatal编程技术网

Search C64识别磁盘映像之间的常见模式

Search C64识别磁盘映像之间的常见模式,search,binary,c64,Search,Binary,C64,我有两个来自C64的磁盘映像,例如: disk1这是一个游戏,它以一些闪屏和音乐开始 diks2它是一个演示,包含许多歌曲和与第一张光盘相同的音乐 用十六进制编辑器检查这两个图像,我是否有可能在这两个文件的某个点上看到相同的模式二进制序列?它们会以同样的方式存储吗?如果是的话,什么才是匹配模式的正确方法 (目标是在150k+程序文件中搜索这首歌,并查看它在哪个磁盘中使用)不幸的是,答案取决于它。我将在这里概述一些依赖关系 演示通常包含游戏的翻录音乐,或者更新的游戏可能包含一些演示的著名音乐。

我有两个来自C64的磁盘映像,例如:

  • disk1这是一个游戏,它以一些闪屏和音乐开始
  • diks2它是一个演示,包含许多歌曲和与第一张光盘相同的音乐
用十六进制编辑器检查这两个图像,我是否有可能在这两个文件的某个点上看到相同的模式二进制序列?它们会以同样的方式存储吗?如果是的话,什么才是匹配模式的正确方法


(目标是在150k+程序文件中搜索这首歌,并查看它在哪个磁盘中使用)

不幸的是,答案取决于它。我将在这里概述一些依赖关系

  • 演示通常包含游戏的翻录音乐,或者更新的游戏可能包含一些演示的著名音乐。在这两种情况下,音乐是相同的,音乐播放器也是相同的,因为播放器在大多数情况下是音乐本身的一个组成部分。因此,在这种基本情况下,使用相同的二进制数据序列,并以一种或另一种形式出现在光盘上
  • 演示通常压缩其内容,以便加载更快或创建更小的程序。在这种情况下,二进制数据的序列肯定不同。您可以检查在演示开始时,是否有一些来自解压缩的“噪音”,通常是边框中的颜色行,或者屏幕上的字符更新
  • 一些较大的游戏也压缩了加载的内容,例如《GI Joe》。然后在光盘上显示不同的序列。一些用于破解的内存转储工具(如ISEPIC)也压缩了内存映像
  • 一些游戏甚至对其内容进行了加密,例如《吟游诗人故事2》。然后在光盘上再次播放不同的序列。你不能知道,直到你拆开游戏的加载例行程序
  • 在2-4的情况下没有希望。(我不知道您正在观看的游戏或演示的确切类型。)

  • 此外,光盘映像具有特定的布局,请参阅,如果给定此布局,相同的字节序列将分布到光盘的不同扇区。此外,这些扇区不是按顺序排列的,而是(实际上)随机的。除非您要查找的数据小于光盘扇区,因此小于256字节,否则序列不太可能在相同磁道和扇区上处于相同的序列中。因此,除非文件是相同的,并且以相同的顺序复制到光盘上,否则会得到不同的序列
  • 给出第5点,我要说的是,即使没有压缩或加密,也很可能找不到相同顺序的序列

    您可以查找256字节的序列块。但是音乐的开头可能不同,因此即使是扇区也可能有不同的数据,因为例如,一个扇区包含从偏移量0开始的音乐,而另一个扇区包含从偏移量15开始的音乐

    您至少需要查看保存在图像上的文件。您可以很容易地解析光盘映像的FAT并找到文件。文件是一系列磁道和扇区号。您可以将它们加载到内存中。然后比较这些文件。在这里,您需要使用在其他字节数组中查找字节数组部分的算法,因为演示的任何部分都可以是音乐,也可以是游戏代码的任何部分。因为数据对于现代标准来说非常小,暴力甚至可能起作用

  • 一些罕见的游戏使用自己的光盘布局,只加载曲目和扇区,大概是为了更快地加载或保护拷贝。在这种情况下,你会迷失方向

  • 已经有20多年了,但我记得音乐通常由播放器和音符组成。演奏者是定制的,但许多音乐家(如JCH)的曲调大多使用相同的演奏者。要播放一首曲子,你需要先初始化播放器,然后开始播放。很多曲调(播放器和音符)从1000美元开始加载,你可以通过
    jsr$1000播放它们;jsr$1003(或jsr$1006)
    。player+注释应该是通用的,但它们通常位于相同的块或内存中(通常高达4KB/$1000)。祝你好运。因为我刚刚记起来——在播放音乐时,它必须与光栅帧同步。通常,您在$d012上使用了中断,或者只是等待光栅光束到达同一行(再次使用$d012),此时您调用了
    jsr$1003/jsr$1006
    ——您可以在–侧边框上闪烁的灰色东西–音乐开始播放时显示(以光栅线表示)以及播放器使用每帧的光栅时间。(这些都是美好的时光!)谢谢!这首歌是R.I.S.K.我正在搜索使用了什么样的演示。非常有趣,谢谢你,我会尝试一下。这首歌来自R.I.S.K.我想知道它在什么样的演示中被使用(因为我还喜欢其他曲目)。啊,风险。美好的是这个“/音乐家/B/Beben_Wally/R_I_K.sid”吗?它总共有3首曲子。是的,这就是我90年代从一个演示或介绍制作人那里得到的歌曲(我只记得一些选择曲目的文字,没有图形)。我最近发现它来自R.I.S.K.,因为有一次幸运的事故:我在1987年triad+fairlight(从3GB的C64程序150k+文件中随机挑选)的另一个演示中发现了这条轨迹。不过,我要找的不是同一个演示/介绍制作人。我记得有另一首歌来自同一个演示/介绍制作人(死亡或活着的介绍),我对音乐有很好的记忆,但那是25年前的事了,所以我不记得具体的屏幕。