恢复埃里克·格雷厄姆1987年Amiga Juggler光线追踪器源代码
AlphaPixel经常参与现代化和更新旧的性能和图形代码。有时这意味着在保密协议下进行客户工作。但有时这意味着在好奇心、保存和将旧数据转换成可以在当前机器上读取和使用的形式的神秘领域中进行一场有趣的副任务。今天我们来谈谈Amiga Juggler(https://en.wikipedia.org/wiki/Sculpt_3D)。Juggler动画是开创性的,震撼人心。甚至连Amiga的创造者(Commodore)都不相信它是在Amiga上制作的。他们认为实际的计算工作是在主机上完成的,结果只是被转换到Amiga上显示。我对Juggler印象深刻。这是我购买Amiga的部分原因,而Amiga也是我最终进入计算机图形领域的原因之一。我最近意识到,Juggler的源代码在网上对大多数人来说并不容易获得,因为它在一个大多数归档程序无法解析的Amiga ADF文件中。此外,一些经典的参考资料(dottyflowers.com)已经无法访问了。所以我想为后代建立一个一流的永久代码存档。寻找文件已知有关于Juggler光线追踪器源代码的引用。Ernie Wright的页面(http://www.etwright.org/cghist/juggler.html 和 http://www.etwright.org/cghist/juggler_rt.html)指向一个包含Eric的“给我15美元”磁盘的ADF副本的dottyflowers.com网址。那个链接现在已经不再有效,并且在archive.org上也没有镜像。相同的磁盘镜像数据在archive.org上可以找到,作为压缩的ADF:https://archive.org/details/raytracer-1987-graham-source-code.adf.-7z。这个7z档案包含一个Amiga磁盘映像,而不是简单的文件目录。这对旧的Amiga材料来说是正常的,但它意味着在现代系统上可读之前还有一步。这也使大多数AI工具无法训练或检查数据,因为它们不理解ADF提取。提取ADF我最初使用的提取工具是由Michael Steil开发的extract-adf,托管在这里:https://github.com/mist64/extract-adf。Extract-ADF是用C语言编写的,这是当时一个绝佳的选择。它从Amiga OFS ADF映像中提取文件,包括损坏或部分可恢复的磁盘映像。它还尝试保留目录结构和时间戳。对于这个档案,我希望有一个Python版本,可以与恢复的文件一起保存,无需编译原始C程序。大多数开发者都能轻松访问Python,运行一次性的Python脚本比启动开发环境、配置、编译和运行一个本地可执行文件要快。此外,Python解释器易于修改和调试。我让OpenAI Codex为这个任务创建了一个Python端口:https://github.com/AlphaPixel/Extract-ADF-Python。该端口保留了与C版本相同的基本功能,至少在我需要的这个练习中是如此。它支持原始ADF文件、gzip/ADZ文件和包含ADF的ZIP文件。它提取OFS系列的AmigaDOS文件系统。它没有实现原始C版本的DMS解压缩器,也不支持FFS图像。如果您需要DMS打包、FFS(或其他文件系统)支持或任何其他需求,我相信您或其他AI工具可以扩展Python实现,并将PR贡献给我。ADF是一个原始磁盘映像容器。其内部的文件系统是第二层编码。原始的extract-adf工具仅针对OFS,而不支持FFS(因为FFS在软盘上并不常用),这个Python端口保持了这一限制。Juggler源ADF被成功提取。在检查提取器之后在提取Juggler ADF后,我不想仅仅因为它工作了一次就假定Python端口是正确的。根据我的指示,Codex设计并运行了一些进一步的验证测试。它创建了相同图像的压缩测试变体:gzip/ADZ,包含ADF的ZIP。两者均成功提取。对于外部测试数据,它使用了来自ADFlib的自由可用测试图像:https://github.com/adflib/ADFlib。这些工件包括用于文件系统测试的几个ADF图像。Python提取器成功提取了OFS系列图像,包括arccsh.adf,blank.adf,cache_crash.adf,ffdisk0049.adf.gz,g1a30c.adf和testofs.adf。ADFlib集合还包括FFS系列图像。提取器根据启动块检测这些图像,并明确拒绝,而不是产生空或误导性的输出。两个ADFlib参考文件逐字节比较:arccsh.adf与CSH,testofs.adf与MOON.GIF。两者都匹配。我并不声称这能解码每个可能的Amiga磁盘/文件系统图像,但对于此任务和任何相关任务来说,这足够进行验证:恢复Juggler ADF,使提取可重现,并避免在明显不支持的文件系统上静默失败。恢复的埃里克·格雷厄姆数据和代码恢复的文件夹包含原始C
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡