{"@context":"https://schema.org","@type":"NewsArticle","generatedAt":"2026-09-18T17:00:43.709Z","headline":"开发者用 Claude Fable 5 在 Claude Code 中将 1993 年 Amiga 游戏 Babylonian Twins 移植到 Godot","description":"作者让 Claude Fable 5 在 Claude Code 中分三步移植其 1993 年 Amiga 游戏：34，000 行 C++ 一个晚上迁入 Godot 4，72，758 行无注释 68000 汇编先用 vasm 重建出与发售版字节一致的二进制再移植，并把 1993 原作作为第二启动项嵌入新游戏。","url":"https://www.aioga.com/news/cmtm7yl5s01dbrobnjyyupz0q/","mainEntityOfPage":"https://www.aioga.com/news/cmtm7yl5s01dbrobnjyyupz0q/","datePublished":"2026-09-04T00:07:47.000Z","dateModified":"2026-09-04T00:07:47.000Z","inLanguage":"zh-CN","publisher":{"@type":"NewsMediaOrganization","name":"Aioga","url":"https://www.aioga.com"},"citation":["https://babyloniantwins.com/blog/porting-a-1993-amiga-game-to-godot","https://aihot.news/items/cmtm7yl5s01dbrobnjyyupz0q"],"canonicalUrl":"https://www.aioga.com/news/cmtm7yl5s01dbrobnjyyupz0q/","directAnswer":{"@type":"Answer","text":"据摘要，作者让 Claude Fable 5 在 Claude Code 中分三步完成移植：将 34,000 行 C++ 迁入 Godot 4，处理 72,758 行无注释 68000 汇编，并把 1993 年原作作为新游戏的第二启动项嵌入。","url":"https://www.aioga.com/news/cmtm7yl5s01dbrobnjyyupz0q/","dateCreated":"2026-09-04T00:07:47.000Z","author":{"@type":"Organization","@id":"https://www.aioga.com/authors/aioga-editorial/#editorial-team","name":"Aioga Editorial Team","url":"https://www.aioga.com/authors/aioga-editorial/"}},"evidence":[{"@type":"CreativeWork","name":"babyloniantwins.com source article","url":"https://babyloniantwins.com/blog/porting-a-1993-amiga-game-to-godot","datePublished":"2026-09-04T00:07:47.000Z","provider":{"@type":"Organization","name":"babyloniantwins.com","url":"https://babyloniantwins.com/blog/porting-a-1993-amiga-game-to-godot"}},{"@type":"CreativeWork","name":"AIHot archive record","url":"https://aihot.news/items/cmtm7yl5s01dbrobnjyyupz0q","datePublished":"2026-09-04T00:07:47.000Z","provider":{"@type":"Organization","name":"AIHot","url":"https://aihot.news/items/cmtm7yl5s01dbrobnjyyupz0q"}}],"aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","originalPublisher":{"name":"babyloniantwins.com","url":"https://babyloniantwins.com/blog/porting-a-1993-amiga-game-to-godot"},"geoDeepAnswer":null,"article":{"id":"cmtm7yl5s01dbrobnjyyupz0q","slug":"cmtm7yl5s01dbrobnjyyupz0q","url":"https://www.aioga.com/news/cmtm7yl5s01dbrobnjyyupz0q/","title":"开发者用 Claude Fable 5 在 Claude Code 中将 1993 年 Amiga 游戏 Babylonian Twins 移植到 Godot","title_en":"","summary":"作者让 Claude Fable 5 在 Claude Code 中分三步移植其 1993 年 Amiga 游戏：34，000 行 C++ 一个晚上迁入 Godot 4，72，758 行无注释 68000 汇编先用 vasm 重建出与发售版字节一致的二进制再移植，并把 1993 原作作为第二启动项嵌入新游戏。","source":"Hacker News 热门（buzzing.cc 中文翻译）","sourceUrl":"https://babyloniantwins.com/blog/porting-a-1993-amiga-game-to-godot","aiHotUrl":"https://aihot.news/items/cmtm7yl5s01dbrobnjyyupz0q","publishedAt":"2026-09-04T00:07:47.000Z","category":"行业动态","score":72,"selected":true,"articleBody":["In 1993, in Baghdad, I built a game called Babylonian Twins on an Amiga 500: 512KB of RAM, no hard drive, plugged into a TV. I was an engineering student in my twenties. Pure 68000 assembly, every sprite and every scanline by hand. Murtadha Salman drew the art and Mahir AlSalman composed the music. We were under sanctions. No internet, no game development resources, just one copy of the Amiga Hardware Reference Manual, which I used to program the hardware directly, and electricity a few hours a day. The constant floppy disk swapping (because of the small memory) and the 50°C summers killed my disk drive three times.","Left: 1993, on the Amiga. Right: 2026, the same gateway.","On the Amiga, “by hand” means the game doesn’t ask the operating system for anything while it runs. At startup it saves the interrupt vectors, switches the OS interrupts off and takes the whole machine:","“Get the system from the AMIGA” is my comment, from 1993. From that point on the display is the game’s own copper list (the Amiga’s programmable video coprocessor), rewritten on the fly for sprites and sky colours. Tiles move by writing the blitter’s registers directly and waiting on its done flag. The joystick is read straight from the hardware port, and the fire button is one pin on a CIA chip. The OS comes back only between levels, to load the next level’s files from the disk, and then it’s switched off again.","It was the first commercial game made in Iraq, and for a long time a game very few people got to play. Commodore collapsed and sanctions scared off publishers, so the finished game sat on a shelf. An Amiga forum found it in 2008 from my brother’s YouTube uploads and hunted me down for the disks; the thread is still there：https://eab.abime.net/showthread.php?t=39120.","The game has been ported once before, by hand, in 2010. The same team rebuilt it for the iPhone on an engine written from scratch, about 34,000 lines of C++, over months of nights and weekends. Apple and Google featured it, and it reached over two million downloads. That story is here：https://babyloniantwins.com/story.","I didn’t do this port. I asked for it, played the result every night, said what felt wrong, and made the few decisions that needed somebody who was there in 1993. The file formats and the assembly reading were the AI’s work, and so were the decisions about how to carry thirty-year-old code across, and it went faster than I could follow. This post is what I found when I sat down weeks later and read what had been done to my own game. Some of it was wrong, and I didn’t notice for weeks.","I’d tried this before. About a year ago I gave an earlier model the same Amiga material and asked it to make sense of my binary level maps. It got there in the end, but it took several rounds and a lot of hints from me.","Then Claude Fable 5 shipped, and I gave it the same files.","The test was deliberate. My guess was that there is little Amiga assembly code in LLM training sets. If the model was better at working things out rather than recalling them, this is where it would show.","The July 4th weekend was coming up, so I planned three steps, each one conditional on the previous working.","Step one, the safe ask: my own 2010 engine, the 34,000 lines of C++, moved into Godot 4. This was the control.","Step two, the unfair ask: the original 72,758 lines of 68000 assembly, for a machine that had gone out of production, with no comments to speak of and nothing in common with the C++. Rebuild that in Godot too, at the Amiga’s original 50 Hz.","Step three, the greedy ask: put the second one inside the first, so buying the modern game gets you the 1993 original as a second thing you can launch.","All three worked. The level format that had taken several rounds and my corrections a year earlier came out in a single pass, with no hints from me.","I ran it in Claude Code, so it had a terminal and my filesystem. It could edit files, run the assembler, build the game, launch the game and read what came back. When I say below that it rebuilt my 1993 binaries and checked them, it did that by running vasm and diffing the output.","Early on it added a set of command-line flags to the game so it could play without me:","Which turns “does the jump feel right” into something a machine can read:","It also had two headless checks it could run before showing me anything: one that compiles every script, and one that builds every level and reports failures. On the Amiga side it drove the real toolchain, vasm to assemble and FS-UAE to boot the result. What wasn’t automated: there was no image comparison on the modern port (it took screenshots, I looked at them), and nothing checked whether the game felt right.","Wednesday night, the safe ask. Timestamps, unedited:","Twenty-one minutes from empty project to a playable character. Every line it moved that night was a line I’d written, over months, in 2010. I went to bed confused.","Getting it to feel right took about three days after that: jump arcs and trampoline timing, and hit detection that rewards mashing, fixed in batches on July 2nd, 3rd and 4th.","I wasn’t testing alone. My thirteen-year-old son played every build with me. He’s always known I made this game, it’s a fact about his father he grew up with, but he’d never seen me working on it. The testing turned into a father-and-son thing I didn’t plan, and it’s one of my favourite parts of the whole project.","All the gameplay state lives in tile units (1.0 = one 48px tile), and the update runs at a fixed 60 Hz, because the 2010 iOS build ran at 60 Hz. That matters because the original applies drag multiplicatively, every frame:","Multiply by 0.85 sixty times a second and you get one amount of friction; multiply fifty times a second and you get another. Port it to a different tick rate and every acceleration curve in the game changes. Nothing crashes, it just feels wrong forever, and you won’t find it by reading the diff. At 60 Hz the constant transplants verbatim. This is also why the 1993 rebuild runs at 50 Hz and the modern one at 60: two sets of hand-tuned numbers, each only correct at its own tick. It kept both clocks. I’d have been tempted to tidy them into one.","Godot ships CharacterBody2D and move_and_slide() , and every tutorial tells you to use them. The port used neither for the player. The original has its own hand-written movement code, and rebuilding that on somebody else’s physics would feel slightly wrong in ways that are miserable to track down. The player is a plain Node2D , and the 150-line collision routine came across line for line, including the fudge numbers I picked by feel fifteen years ago and the comments I wrote to my future self:","Nothing tidied up the stray 0.49 . There are no tests and no docs; those comments are the spec.","By Sunday afternoon, July 5th, I handed over the thing I actually wanted to test. 72,758 lines across 26 files, written for a machine with 512 KB of memory, by me, for me, with the commenting habits of somebody who never expected another person to read it. No documentation. A 2008 transfer to modern storage had shortened every long filename, so every include pointed at names that no longer existed. One of the five level source files is cut off partway through a data table. There’s no other copy.","Before porting anything, it made the 1993 sources assemble again, using vasm on an Apple Silicon Mac, and kept going until the output was byte-identical to the binaries that shipped.","Fifteen minutes from a folder of files to the first rebuild that matched the shipped bytes. I wrote these in ASM-One, whose dialect differs from vasm’s in ways that change the bytes: ASM-One encodes cmp #4,d0 as CMPI, vasm picks a different, equally valid encoding, so telling it not to optimise is necessary and not sufficient. Rather than edit my sources it wrote a preprocessing pass that bridges five such differences, and rebuilt the broken filename mapping file by file.","The expensive one was org . With no linker and no relocation, the level source lays out the Amiga’s memory by hand, address by address:","The level-one map uses 74,400 of those 74,752 bytes, a margin of 352, and nothing checked it except me, in 1993. ( SahamR-grb attaches an object’s behaviour as a named offset; saham is Arabic for arrow.) ASM-One’s org can also move the location counter backwards, which vasm can’t. The first workaround got one case wrong: a ds.b 800 inside a rewound block, which ASM-One treats as “skip 800 bytes”, was written out as 800 bytes of zeros. Everything after that point in the file, the copper list included, sat 944 bytes away from where the shipped binary had it. The game assembled and booted, and drew the wrong thing.","Even after that, some chunks still wouldn’t match, by about 108 bytes scattered through the variable area. Those bytes explained where the shipped files came from. ASM-One assembles into memory, and the game got onto disk by saving that memory out, after the game had been run. So the shipped files are a snapshot of a game that had already been running, not clean assembler output. A fresh assembly has zeros in those variables, because nothing has set them yet; the shipped disk has whatever they held on the machine when it was saved. The code writes them before it reads them, so the zeros are harmless.","At the time I read that line, moved on, and waited for the actual game. It took me weeks to see that this was the most important thing in the project, and that nobody had asked for it. From then on, every claim about this game could be settled by comparing bytes. I wouldn’t have done it myself. I already had the binaries, and in eighteen years rebuilding them from source never seemed worth an afternoon.","For every format it went to the code that reads the bytes and worked backwards from that. The level loader is 1,652 lines of uncommented 68000, which is why I’d always reached for a hex editor instead.","A level is a grid of tiles: a long list of numbers, where each number means “put picture 47 here”, in my own private 1993 layout. This is the format the older model and I had ground through a year earlier.","Here is the full set of tiles a level is built from, 256 of them, 16×16 pixels each, for level one:","And a slice of level one, assembled from those tiles:","The input is a list of numbers with no header and no dimensions, inside a compressed chunk. This time I didn’t explain anything. It found the drawing routine, read how the grid was walked, worked out the width and height from constants elsewhere in the file, and produced correct maps for all five levels on the first attempt.","Then it re-rendered each level from its own extracted data and compared the result, pixel by pixel, against full-level captures I had made in 2020. Where they didn’t match, it went looking for the cause and found two copper effects: the sky gradient and the water colour cycle. With those two accounted for: five full-level images, zero differing pixels. Level one alone is 600 tiles wide, 9,600 pixels.","Drawing the level is only half of what a map cell does. Each cell is one 16-bit word, and the picture is the smaller part of it:","The property is the level’s invisible physics. 1 is solid ground. 2 and 3 can be climbed. 10 to 13 all mean “this hurts”, four codes because knockback needs a direction. 14 kills outright. 63 is a door. None of this is written down anywhere. It was recovered because two routines read the same word and each one reveals its own half: the draw loop masks off the low byte, and the collision check does the opposite:","Checkrmh hands the painful cases to a label called rmhEnjury , which is 1993 me spelling “injury”.","Those bits were painted in an editor. Before the game could be built I had to build the tool that builds it: MEDITOR.S , 1,254 lines of assembly, dated by its own header, in my 1993 English:","Four days in February 1993. Paint tiles with the mouse, pick a property number on the panel’s CURRENT FLAG counter, stamp it onto cells with PUT FLAG, and a flag view marks every cell carrying the selected number. While writing this post, I asked the model to run the map editor and get a screenshot. It assembled the 1993 source with a modern assembler, laid the shipped Level 2 data out in memory where the editor expects it, and booted the result in an emulator.","My own tool at thirty-three years old, editing the real Level 2, flag view on. CURRENT FLAG reads 0001, solid, and the ground you can stand on is marked while the decoration you walk through isn’t. The panel says 1994: the panel artwork is a separate bitmap file the editor loads, and the copy that survived is a later one than the February 1993 code.","The other name on the panel, Udai, was my partner in Mesopotamia Software, which is what we called ourselves. He was building a game of his own at the time. I wrote the editor, for both of us, but its design was worked out between us so one tool could serve both games. His game was never finished.","Enemies aren’t in the map. The world is stored one screen at a time, 25 tiles by 20, and every screen has a small table of the objects on it. My 1993 comments explain the markers:","An enemy is a row of words: a marker, a frame, a position inside its screen, then its behaviour. hiddenwallR-lrb is the crumbling-wall routine, attached as an offset from a base label, the same trick as the arrow thrower earlier. The words after it are parameters that mean whatever that routine wants them to mean. Nothing in the file says which word is which, so it found the routine that walks these tables every frame and let it name the fields, then converted every object in all five levels to world coordinates and checked them against the rendered maps.","Most of the data files scramble their 16-byte headers with a key stored inside the file, a 1993 trick to keep disk editors out. The retail loader, GAME.S , has no unscrambling step at all. It read that as a clue: GAME.S was written before the scrambling was added, so it is an older file. That clue is what later let it recover the lost two-disk retail set, from a sector map inside that same file.","Load a level’s tile map and there are holes where every door should be, with no door tile in them, open or closed. An 18-byte object record stamps them onto the map at runtime, a 1×4 tile column, from a table:","The map data says there’s no door. The level code says there is. For thirty-three years I’d have told you the map is the source of truth and doors are map data, and I’d never have looked. It held both facts, found the routine that reconciles them, and came back with the design: doors are drawn by code at runtime; they were never painted into the map in the editor. That’s why the obvious port of the level data produces a tower with doorways full of sky.","In every level, colour index 31 is the sky, and nothing in the tile art ever paints it. The tile atlas renders it transparent, and behind it the copper repaints the background colour on chosen scanlines to make a vertical gradient. The gradient sits in the level source as a plain list of colours. This is the entire sky of the second level:","Read down the list and the sky goes from pale blue to warm near the horizon.","The same 24 words, rendered. Left is the top of the screen.","The first rebuild missed it, and the levels looked fine. Flat, in a way I couldn’t name. The pixel comparison refused to go green, and the gradient went back in.","The diff that would not go green: white is every pixel the first rebuild got wrong, the copper's sky and water.","Amiga sprite sheets are planar (five separate 1-bit bitplanes in plane-major strips, plus a transparency mask), and all of that was worked out from the draw routines and the org arithmetic. Sheet sizes of the form frames * width * height * 2 * 5 are ambiguous: that 2 could mean double-width frames, or two stacked rows, one per facing direction. Both readings fit every byte in the file. It’s two facing rows; that was my choice in 1993.","Two stacked rows, one per facing direction, drawn frame by frame, not mirrored.","It flagged the ambiguity and asked."],"articleImages":[{"sourceUrl":"https://babyloniantwins.com/img/blog/tiles-level1.png","alt":"The complete 16x16 tile set for level one of the 1993 Amiga game: stone blocks, ladders, water, palm fronds, decorative brickwork","afterParagraph":36,"url":"/media/articles/cmtm7yl5s01dbrobnjyyupz0q/95dd71ee90531fd2.png"},{"sourceUrl":"https://babyloniantwins.com/img/blog/map-level1-slice.png","alt":"A horizontal slice of level one rendered from the extracted map data","afterParagraph":37,"url":"/media/articles/cmtm7yl5s01dbrobnjyyupz0q/cd400d830c0064cc.png"},{"sourceUrl":"https://babyloniantwins.com/img/blog/map-editor-1993.png","alt":"My 1993 map editor running in 2026, editing the real Level 2, with flag 1 (solid) selected: the waterfall scene with the solid ground marked by the flag view and the CURRENT FLAG counter reading 0001","afterParagraph":44,"url":"/media/articles/cmtm7yl5s01dbrobnjyyupz0q/e27dbd646c16257c.png"},{"sourceUrl":"https://babyloniantwins.com/img/blog/sky-diff-level2.png","alt":"The level-2 verification diff: white marks every differing pixel — the whole sky and the animated water, missing from the first rebuild","afterParagraph":55,"url":"/media/articles/cmtm7yl5s01dbrobnjyyupz0q/f94a0bb3e73e62c5.png"},{"sourceUrl":"https://babyloniantwins.com/img/blog/twins-two-rows.png","alt":"The decoded 1993 sprite sheet: two stacked rows of the same six-frame run, one row per facing direction","afterParagraph":57,"url":"/media/articles/cmtm7yl5s01dbrobnjyyupz0q/e6d609ba74b2637b.png"}],"mediaStatus":"ok","articleBodyZh":["1993年，在巴格达，我在一台Amiga 500上制作了一款名为《巴比伦双子》的游戏：512KB内存，没有硬盘，接到电视上。我那时是二十多岁的工程专业学生。纯68000汇编，每一个精灵和每一条扫描线都是手工完成的。Murtadha Salman负责绘制艺术，Mahir AlSalman作曲。我们当时受到制裁。没有互联网，没有游戏开发资源，只有一本Amiga硬件参考手册，我用它直接编程硬件，每天只有几个小时的电力。由于内存小，不断交换软盘，以及50°C的夏天，我的软盘驱动器坏了三次。","左：1993年，在Amiga上。右：2026年，同一个网关。","在Amiga上，“手工”意味着游戏运行时不会向操作系统请求任何东西。启动时保存中断向量，关闭OS中断，完全掌控整台机器：","“从AMIGA获取系统”是我1993年的注释。从那时起，显示完全由游戏自己的copper列表控制（Amiga的可编程视频协处理器），根据精灵和天空颜色实时重写。通过直接写入blitter寄存器并等待其完成标志来移动图块。操纵杆直接从硬件端口读取，射击按钮是CIA芯片上的一个引脚。操作系统只在关卡间返回，用于从磁盘加载下一关的文件，然后再次关闭。","这是伊拉克制作的第一款商业游戏，并且很长一段时间内，很少有人玩过。康懋达破产，加上制裁吓跑了出版商，所以成品游戏长期放在架子上。一个Amiga论坛在2008年通过我兄弟上传到YouTube的视频找到了它，并追踪到我要软盘；讨论帖仍然存在：https://eab.abime.net/showthread.php?t=39120。","这款游戏曾在2010年被手工移植过一次。同一团队为iPhone重建了它，使用全新引擎编写，大约34,000行C++代码，经过几个月的夜晚和周末的努力。苹果和谷歌都进行了推荐，其下载量超过两百万次。故事在这里：https://babyloniantwins.com/story.","我没有做这个移植。我要求的，每晚玩结果，说出感觉不对的地方，做出少数需要1993年现场人员的决定。文件格式和汇编读取是AI的工作，关于如何携带三十年前代码的决策也是，速度快得我都跟不上。这篇帖子是我几周后坐下来阅读自己游戏被改动时发现的。有些地方是错的，我几周后才注意到。","我以前试过这个方法。大约一年前，我给一个早期模型用同样的Amiga材料，让它帮我理解我的二进制关卡地图。最终还是做到了，但花了好几轮时间，我也给了很多提示。","后来《Claude Fable 5》发货了，我给了它同样的文件。","测试是有意为之。我猜 LLM 训练集里几乎没有 Amiga 汇编代码。如果模型能更好地计算而非回忆，这才是关键。","7月4日周末快到了，所以我计划了三个步骤，每一步都以之前的工作为条件。","第一步，安全问答：我自己的2010年引擎，34,000行C++，迁移到了Godot 4。这就是控制。","第二步，不公平的要求：为一台已停产、没有任何评论且与C++毫无关联的机器，使用原始72,758行68000代码汇编。在Godot中也重建它，使用Amiga原版的50 Hz。","第三步，贪婪的请求：把第二个放进第一个里面，这样买现代游戏就能拿到1993年原版作为第二个可以启动的游戏。","这三种方法都行。那个经过多轮和我一年前修正的关卡格式一次性完成，我没有任何提示。","我用Claude Code运行，所以它有终端和我的文件系统。它可以编辑文件，运行汇编器，构建游戏，启动游戏并读取返回内容。当我在下面说它重建了1993年的二进制文件并检查它们时，它是通过运行vasm并对输出进行差分来实现的。","早期它给游戏添加了一套命令行标志，这样游戏就能不用我也能玩：","这就把“跳跃感觉对吗”变成了机器能读取的内容：","它还可以在显示任何内容之前运行两个无头检查：一个会编译所有脚本，另一个会构建所有关卡并报告失败情况。在Amiga端，它驱动了真实的工具链，用vasm进行汇编，并用FS-UAE启动结果。没有自动化的部分：现代移植版没有图像对比（它会截屏，我查看它们），也没有检查游戏的感觉是否正确。","星期三晚上，安全请求。时间戳，未经编辑：","从空项目到可操作角色只用了二十一分钟。那晚它移动的每一行都是我在2010多年里写的。我带着困惑上床睡觉。","之后花了大约三天才让游戏感觉正确：跳跃弧线和蹦床时机，以及奖励乱按的碰撞检测，分别在7月2日、3日和4日通过批量修复完成。","我并不是独自测试的。我的十三岁儿子和我一起玩每个版本。他一直知道我做了这款游戏，这是他成长过程中关于父亲的一个事实，但他从未见过我开发它的过程。测试变成了一件我没计划的父子事情，这是我整个项目中最喜欢的部分之一。","所有游戏状态都以瓦片单位存储（1.0 = 一个48像素瓦片），更新以固定的60Hz运行，因为2010年的iOS版本是60Hz。这很重要，因为原版是逐帧以乘法方式应用阻力的：","每秒乘以0.85六十次，你会得到一种摩擦量；每秒乘以五十次，你会得到另一种。在不同的刷新率上移植，游戏中每条加速度曲线都会改变。没有崩溃，只是永远感觉不对，你通过阅读差异也找不到。在60Hz下，这个常数可以原封不动地移植。这也是为什么1993年的重建版以50Hz运行，而现代版以60Hz运行：两套手工调试的数值，每套只在其各自的时钟下正确。它保留了两个时钟。我本来会想把它们整理成一个。","Godot 自带 CharacterBody2D 和 move_and_slide()，每个教程都告诉你使用它们。这个移植版却都没用在玩家身上。原版有自己手写的移动代码，把它建立在别人的物理系统上会感觉有些不对劲，而且问题追查起来挺痛苦。玩家只是一个普通的 Node2D，而那段 150 行的碰撞例程几乎逐行照搬过来，包括我十五年前凭感觉挑的 fudge 数值，以及我写给未来自己的注释：","没人去整理那些零散的 0.49。没有测试，也没有文档；那些注释就是规格说明。","到 7 月 5 日周日下午，我交出我实际上想测试的东西。26 个文件共有 72,758 行代码，为只有 512 KB 内存的机器编写，由我为自己写，带着一个从未指望别人会看的人的注释习惯。没有文档。2008 年转存到现代存储设备时，每个长文件名都被缩短了，所以每个 include 指向的名字都不存在了。五个关卡源文件中有一个在数据表中途截断。没有其他副本。","在移植任何东西之前，它让 1993 年的源代码再次能够编译，用 Apple Silicon Mac 上的 vasm，直到输出的字节与发布的二进制文件完全一致。","从一堆文件到第一版匹配发布字节的重建只用了十五分钟。我在 ASM-One 中写的这些代码，其方言与 vasm 的不同会导致字节变化：ASM-One 把 cmp #4,d0 编码为 CMPI，而 vasm 选择了不同但同样有效的编码，因此告诉它不要优化是必要但不充分的。与其编辑我的源代码，它写了一个预处理过程来桥接五处此类差异，并按文件重建损坏的文件名映射。","最费劲的是 org。没有链接器，也没有重定位，关卡源代码手动布局 Amiga 的内存，一地址一地址地安排：","一级地图使用了 74,400 字节中的 74,752 字节，余量为 352，除了我在 1993 年，没有人检查过它。 (SahamR-grb 将对象的行为作为一个命名偏移附加；saham 在阿拉伯语中是箭头的意思。) ASM-One 的 org 也可以将位置计数器向后移动，而 vasm 做不到。第一次变通方法有一个情况出错：在回绕块内的 ds.b 800，ASM-One 将其视为“跳过 800 字节”，但写出时却是 800 字节的零。该文件之后的所有内容，包括铜列表，都比原始二进制文件的位置偏离 944 字节。游戏被组装并启动，但显示了错误的内容。","即使在那之后，一些块仍然不匹配，分散在变量区域，大约有 108 字节。这些字节解释了发货文件的来源。ASM-One 汇编到内存中，而游戏通过将该内存保存到磁盘上来获得磁盘版本，这是在游戏运行后进行的。因此，发货文件是游戏已经运行过的快照，而不是干净的汇编输出。一次新的汇编在这些变量中是零，因为还没有任何东西设置它们；发货磁盘中保存了当时机器上的内容。代码先写入它们再读取，因此这些零是无害的。","当时我读到那一行后就继续，等待实际游戏。我用好几周才明白这是项目中最重要的事情，而且没人要求过它。从那时起，关于这款游戏的每一个断言都可以通过对比字节来解决。我自己也不会这么做。我已经有了二进制文件，在十八年里从源代码重建它们，从来不觉得值得花一个下午去做。","对于它所去的每种格式，我都会转到读取字节的代码，并从那里逆向。关卡加载器是 1,652 行无注释的 68000 代码，这就是为什么我总是倾向于使用十六进制编辑器。","一个关卡是一张瓦片网格：一个长长的数字列表，每个数字表示“在这里放置第 47 张图片”，这是我个人 1993 年的布局。这是我和老模型一年前反复推敲出的格式。","这里是构建关卡所用的完整瓦片集，共 256 个，每个 16×16 像素，用于第一关：","以及从这些瓦片拼出的第一关的一部分:","输入是一份没有标题和维度的数字列表，位于一个压缩块中。这次我没有解释任何内容。它找到了绘图例程，读取了网格的遍历方式，从文件其他地方的常量得出了宽度和高度，并第一次尝试就生成了所有五个关卡的正确地图。","然后，它从提取的数据重新渲染每个关卡，并将结果逐像素地与我在2020年制作的完整关卡截图进行比较。对于不匹配的情况，它去寻找原因，发现了两个铜制效果：天空渐变和水颜色循环。在考虑这两者之后：五个完整关卡图像，无差异像素。单单关卡一就有600个瓷砖宽，9,600个像素。","绘制关卡只是地图单元功能的一半。每个单元是一个16位字，而图片只是其中较小的部分：","属性是关卡的隐形物理。1表示坚实地面。2和3可以攀爬。10到13都表示“会造成伤害”，有四个代码是因为击退需要方向。14会立即致死。63是门。这些内容都没有记录在任何地方。它是通过两个例程读取同一字来恢复的，每个例程展示了自己的半部分：绘图循环屏蔽低字节，碰撞检查则相反：","Checkrmh将造成伤害的情况交给一个标签rmhEnjury，它是1993年的我写错了的“injury”。","这些位是在编辑器中绘制的。在游戏构建之前，我必须先构建生成它的工具：MEDITOR.S，1,254行汇编代码，通过其自身头信息标记日期，用我的1993年英语书写：","1993年2月的四天。用鼠标绘制瓷砖，在面板的CURRENT FLAG计数器上选择属性号，用PUT FLAG将其盖在单元上，标志视图会标记携带所选数字的每个单元。在写这篇文章时，我让模型运行地图编辑器并获取截图。它用现代汇编器汇编了1993年的源代码，将发售版的关卡2数据放置在编辑器预期的内存位置，然后在模拟器中启动了结果。","我自己在三十三岁时的工具，编辑真正的2级关卡，标识视图开启。当前标识显示0001，实心，你可以站立的地面会被标记，而你可以穿过的装饰则不会被标记。面板上写着1994：面板的艺术图像是一个独立的位图文件，由编辑器加载，而留存下来的副本比1993年2月的代码要晚。","面板上另一个名字，乌代，是我在美索不达米亚软件的合伙人，这是我们给自己起的名字。当时他正在制作自己的游戏。我写了编辑器，供我们俩使用，但设计是我们一起商量出来的，所以一个工具可以服务于两款游戏。他的游戏从未完成。","敌人不在地图上。世界是一次存储一屏的，每屏25×20个瓷砖，每个屏幕都有一个小表格记录上面的对象。我的1993年评论解释了标记:","敌人是一行行文字：一个标记、一个帧、在其屏幕内的位置，然后是其行为。hiddenwallR-lrb 是破碎墙例程，从一个基本标签的偏移附加，其技巧和之前的箭矢投掷器相同。其后的字符是参数，其意义由该例程决定。文件中没有说明每个词代表什么，因此它找到了每帧扫描这些表格的例程，让其为字段命名，然后将所有五个关卡的每个对象转换为世界坐标，并与渲染的地图进行比对。","大多数数据文件使用文件内存储的钥匙打乱其16字节的头，这是1993年的一种防止磁盘编辑器入侵的技巧。零售加载器GAME.S 完全没有解密步骤。它把这一点当作线索：GAME.S 是在加入打乱之前编写的，所以它是较旧的文件。这个线索后来让它通过该文件内的一个扇区地图恢复丢失的双盘零售套装。","加载一个关卡的瓷砖地图，会发现每个门的位置都有空洞，但里面没有门的图块，无论是开着还是关着。一个18字节的对象记录在运行时将它们压印到地图上，是一个1×4的瓷砖列，来自一个表格：","地图数据说没有门。关卡代码说有门。三十三年来，我会告诉你地图才是真理的来源，而门只是地图数据，我从未去看过。它包含了两个事实，找到了调和它们的例程，并返回了设计方案：门在运行时由代码绘制；它们从未在编辑器里绘制到地图上。这就是为什么直接移植关卡数据会产生一个门口满是天空的塔。","在每个关卡中，颜色索引31是天空，而在瓷砖艺术中没有任何东西会绘制它。瓷砖图谱将其渲染为透明，而在它背后，铜芯会在选定的扫描线上重新绘背景色以形成垂直渐变。渐变在关卡源中作为简单的颜色列表存在。这是第二关的全部天空：","从列表中向下读，天空从浅蓝色变为接近地平线时的暖色。","渲染出的相同24个字。左边是屏幕顶部。","第一次重建错过了它，关卡看起来没问题。一种我无法命名的平面感。像素对比拒绝变为绿色，渐变又回来了。","拒绝变绿的差异：白色是第一次重建错的每个像素，铜的天空和水色。","Amiga精灵表是平面式的（五个独立的1位位平面按平面优先条纹排列，加上透明遮罩），这一切都是通过绘制例程和原始算术推导出来的。形式如frames * width * height * 2 * 5的图表尺寸存在歧义：这个2可能意味着双宽帧，或者两行叠加，每行对应一个朝向。两种读法都匹配文件中的每个字节。它是两个朝向行；这是我在1993年的选择。","两个叠加的行，每行对应一个朝向，逐帧绘制，不镜像。","它标记了歧义并提出了问题。"],"translationStatus":"translated","bodyOrigin":"source-page","editorial":{"summary":"据摘要，作者让 Claude Fable 5 在 Claude Code 中分三步完成移植：将 34,000 行 C++ 迁入 Godot 4，处理 72,758 行无注释 68000 汇编，并把 1993 年原作作为新游戏的第二启动项嵌入。","background":"Babylonian Twins 于 1993 年在伊拉克巴格达的 Amiga 500 上开发，原作主要使用 68000 汇编。正文称该游戏曾于 2010 年被手工移植到 iPhone，累计下载量超过两百万。","viewpoint":"Aioga 判断：这次案例的重点不只是把旧代码搬到新引擎，也包括重建与发售版字节一致的二进制，以及保留原作作为可启动内容；但作者明确表示移植结果仍有错误。","implications":"可能影响：老游戏移植可能从逐段手工重写转向结合代码分析、格式处理与人工校验的流程；但这不代表 AI 能独立保证复刻准确性，仍需要熟悉原作的人持续试玩和决策。","nextStep":"后续观察：应关注作者对 Godot 版本、汇编迁移过程、文件格式处理及已发现错误的进一步说明，也需要区分摘要中的移植结果与作者亲自确认的内容。","evidenceRefs":["title","summary","articleBody","source"],"status":"published","aiGenerated":true,"autoApproved":true,"generatedBy":"aioga-editorial:gpt-5.6-sol","reviewedBy":"aioga-editorial-review:gpt-5.6-sol","generatedAt":"2026-09-04T01:13:51.146Z","sourceHash":"a55be60e19e0890c","review":{"approved":true,"groundedness":96,"clarity":91,"duplicationRisk":28,"blockingIssues":[],"notes":["summary 对三步流程做了压缩，未提及 34,000 行 C++ 是在一个晚上迁入 Godot 4，也未完整说明汇编代码先经 vasm 重建出与发售版字节一致的二进制、随后再移植；可选补充以提高信息完整度。","viewpoint 与 summary 对“嵌入原作作为第二启动项”略有重复，但不影响可读性。","implications 属于明确标示的趋势推断和审慎判断，没有将其冒充为来源已证实的事实。"]},"validation":{"passed":true,"mode":"ai-auto","revisions":0,"checks":["schema","length","source-attribution","editorial-labels","inference-boundary","low-source-overlap","no-html","independent-ai-review"]}},"tags":["行业动态","Hacker News 热门（buzzing.cc 中文翻译）"],"translations":{"zh-CN":{"title":"开发者用 Claude Fable 5 在 Claude Code 中将 1993 年 Amiga 游戏 Babylonian Twins 移植到 Godot","summary":"作者让 Claude Fable 5 在 Claude Code 中分三步移植其 1993 年 Amiga 游戏：34，000 行 C++ 一个晚上迁入 Godot 4，72，758 行无注释 68000 汇编先用 vasm 重建出与发售版字节一致的二进制再移植，并把 1993 原作作为第二启动项嵌入新游戏。","category":"行业动态","source":"babyloniantwins.com","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"开发者用 Claude Fable 5 在 Claude Code 中将 1993 年 Amiga 游戏 Babylonian Twins 移植到 Godot - Aioga AI资讯","description":"作者让 Claude Fable 5 在 Claude Code 中分三步移植其 1993 年 Amiga 游戏：34，000 行 C++ 一个晚上迁入 Godot 4，72，758 行无注释 68000 汇编先用 vasm 重建出与发售版字节一致的二进制再移植，并把 1993 原作作为第二启动项嵌入新游戏。","url":"https://www.aioga.com/news/cmtm7yl5s01dbrobnjyyupz0q/","articleBody":["1993年，在巴格达，我在一台Amiga 500上制作了一款名为《巴比伦双子》的游戏：512KB内存，没有硬盘，接到电视上。我那时是二十多岁的工程专业学生。纯68000汇编，每一个精灵和每一条扫描线都是手工完成的。Murtadha Salman负责绘制艺术，Mahir AlSalman作曲。我们当时受到制裁。没有互联网，没有游戏开发资源，只有一本Amiga硬件参考手册，我用它直接编程硬件，每天只有几个小时的电力。由于内存小，不断交换软盘，以及50°C的夏天，我的软盘驱动器坏了三次。","左：1993年，在Amiga上。右：2026年，同一个网关。","在Amiga上，“手工”意味着游戏运行时不会向操作系统请求任何东西。启动时保存中断向量，关闭OS中断，完全掌控整台机器：","“从AMIGA获取系统”是我1993年的注释。从那时起，显示完全由游戏自己的copper列表控制（Amiga的可编程视频协处理器），根据精灵和天空颜色实时重写。通过直接写入blitter寄存器并等待其完成标志来移动图块。操纵杆直接从硬件端口读取，射击按钮是CIA芯片上的一个引脚。操作系统只在关卡间返回，用于从磁盘加载下一关的文件，然后再次关闭。","这是伊拉克制作的第一款商业游戏，并且很长一段时间内，很少有人玩过。康懋达破产，加上制裁吓跑了出版商，所以成品游戏长期放在架子上。一个Amiga论坛在2008年通过我兄弟上传到YouTube的视频找到了它，并追踪到我要软盘；讨论帖仍然存在：https://eab.abime.net/showthread.php?t=39120。","这款游戏曾在2010年被手工移植过一次。同一团队为iPhone重建了它，使用全新引擎编写，大约34,000行C++代码，经过几个月的夜晚和周末的努力。苹果和谷歌都进行了推荐，其下载量超过两百万次。故事在这里：https://babyloniantwins.com/story.","我没有做这个移植。我要求的，每晚玩结果，说出感觉不对的地方，做出少数需要1993年现场人员的决定。文件格式和汇编读取是AI的工作，关于如何携带三十年前代码的决策也是，速度快得我都跟不上。这篇帖子是我几周后坐下来阅读自己游戏被改动时发现的。有些地方是错的，我几周后才注意到。","我以前试过这个方法。大约一年前，我给一个早期模型用同样的Amiga材料，让它帮我理解我的二进制关卡地图。最终还是做到了，但花了好几轮时间，我也给了很多提示。","后来《Claude Fable 5》发货了，我给了它同样的文件。","测试是有意为之。我猜 LLM 训练集里几乎没有 Amiga 汇编代码。如果模型能更好地计算而非回忆，这才是关键。","7月4日周末快到了，所以我计划了三个步骤，每一步都以之前的工作为条件。","第一步，安全问答：我自己的2010年引擎，34,000行C++，迁移到了Godot 4。这就是控制。","第二步，不公平的要求：为一台已停产、没有任何评论且与C++毫无关联的机器，使用原始72,758行68000代码汇编。在Godot中也重建它，使用Amiga原版的50 Hz。","第三步，贪婪的请求：把第二个放进第一个里面，这样买现代游戏就能拿到1993年原版作为第二个可以启动的游戏。","这三种方法都行。那个经过多轮和我一年前修正的关卡格式一次性完成，我没有任何提示。","我用Claude Code运行，所以它有终端和我的文件系统。它可以编辑文件，运行汇编器，构建游戏，启动游戏并读取返回内容。当我在下面说它重建了1993年的二进制文件并检查它们时，它是通过运行vasm并对输出进行差分来实现的。","早期它给游戏添加了一套命令行标志，这样游戏就能不用我也能玩：","这就把“跳跃感觉对吗”变成了机器能读取的内容：","它还可以在显示任何内容之前运行两个无头检查：一个会编译所有脚本，另一个会构建所有关卡并报告失败情况。在Amiga端，它驱动了真实的工具链，用vasm进行汇编，并用FS-UAE启动结果。没有自动化的部分：现代移植版没有图像对比（它会截屏，我查看它们），也没有检查游戏的感觉是否正确。","星期三晚上，安全请求。时间戳，未经编辑：","从空项目到可操作角色只用了二十一分钟。那晚它移动的每一行都是我在2010多年里写的。我带着困惑上床睡觉。","之后花了大约三天才让游戏感觉正确：跳跃弧线和蹦床时机，以及奖励乱按的碰撞检测，分别在7月2日、3日和4日通过批量修复完成。","我并不是独自测试的。我的十三岁儿子和我一起玩每个版本。他一直知道我做了这款游戏，这是他成长过程中关于父亲的一个事实，但他从未见过我开发它的过程。测试变成了一件我没计划的父子事情，这是我整个项目中最喜欢的部分之一。","所有游戏状态都以瓦片单位存储（1.0 = 一个48像素瓦片），更新以固定的60Hz运行，因为2010年的iOS版本是60Hz。这很重要，因为原版是逐帧以乘法方式应用阻力的：","每秒乘以0.85六十次，你会得到一种摩擦量；每秒乘以五十次，你会得到另一种。在不同的刷新率上移植，游戏中每条加速度曲线都会改变。没有崩溃，只是永远感觉不对，你通过阅读差异也找不到。在60Hz下，这个常数可以原封不动地移植。这也是为什么1993年的重建版以50Hz运行，而现代版以60Hz运行：两套手工调试的数值，每套只在其各自的时钟下正确。它保留了两个时钟。我本来会想把它们整理成一个。","Godot 自带 CharacterBody2D 和 move_and_slide()，每个教程都告诉你使用它们。这个移植版却都没用在玩家身上。原版有自己手写的移动代码，把它建立在别人的物理系统上会感觉有些不对劲，而且问题追查起来挺痛苦。玩家只是一个普通的 Node2D，而那段 150 行的碰撞例程几乎逐行照搬过来，包括我十五年前凭感觉挑的 fudge 数值，以及我写给未来自己的注释：","没人去整理那些零散的 0.49。没有测试，也没有文档；那些注释就是规格说明。","到 7 月 5 日周日下午，我交出我实际上想测试的东西。26 个文件共有 72,758 行代码，为只有 512 KB 内存的机器编写，由我为自己写，带着一个从未指望别人会看的人的注释习惯。没有文档。2008 年转存到现代存储设备时，每个长文件名都被缩短了，所以每个 include 指向的名字都不存在了。五个关卡源文件中有一个在数据表中途截断。没有其他副本。","在移植任何东西之前，它让 1993 年的源代码再次能够编译，用 Apple Silicon Mac 上的 vasm，直到输出的字节与发布的二进制文件完全一致。","从一堆文件到第一版匹配发布字节的重建只用了十五分钟。我在 ASM-One 中写的这些代码，其方言与 vasm 的不同会导致字节变化：ASM-One 把 cmp #4,d0 编码为 CMPI，而 vasm 选择了不同但同样有效的编码，因此告诉它不要优化是必要但不充分的。与其编辑我的源代码，它写了一个预处理过程来桥接五处此类差异，并按文件重建损坏的文件名映射。","最费劲的是 org。没有链接器，也没有重定位，关卡源代码手动布局 Amiga 的内存，一地址一地址地安排：","一级地图使用了 74,400 字节中的 74,752 字节，余量为 352，除了我在 1993 年，没有人检查过它。 (SahamR-grb 将对象的行为作为一个命名偏移附加；saham 在阿拉伯语中是箭头的意思。) ASM-One 的 org 也可以将位置计数器向后移动，而 vasm 做不到。第一次变通方法有一个情况出错：在回绕块内的 ds.b 800，ASM-One 将其视为“跳过 800 字节”，但写出时却是 800 字节的零。该文件之后的所有内容，包括铜列表，都比原始二进制文件的位置偏离 944 字节。游戏被组装并启动，但显示了错误的内容。","即使在那之后，一些块仍然不匹配，分散在变量区域，大约有 108 字节。这些字节解释了发货文件的来源。ASM-One 汇编到内存中，而游戏通过将该内存保存到磁盘上来获得磁盘版本，这是在游戏运行后进行的。因此，发货文件是游戏已经运行过的快照，而不是干净的汇编输出。一次新的汇编在这些变量中是零，因为还没有任何东西设置它们；发货磁盘中保存了当时机器上的内容。代码先写入它们再读取，因此这些零是无害的。","当时我读到那一行后就继续，等待实际游戏。我用好几周才明白这是项目中最重要的事情，而且没人要求过它。从那时起，关于这款游戏的每一个断言都可以通过对比字节来解决。我自己也不会这么做。我已经有了二进制文件，在十八年里从源代码重建它们，从来不觉得值得花一个下午去做。","对于它所去的每种格式，我都会转到读取字节的代码，并从那里逆向。关卡加载器是 1,652 行无注释的 68000 代码，这就是为什么我总是倾向于使用十六进制编辑器。","一个关卡是一张瓦片网格：一个长长的数字列表，每个数字表示“在这里放置第 47 张图片”，这是我个人 1993 年的布局。这是我和老模型一年前反复推敲出的格式。","这里是构建关卡所用的完整瓦片集，共 256 个，每个 16×16 像素，用于第一关：","以及从这些瓦片拼出的第一关的一部分:","输入是一份没有标题和维度的数字列表，位于一个压缩块中。这次我没有解释任何内容。它找到了绘图例程，读取了网格的遍历方式，从文件其他地方的常量得出了宽度和高度，并第一次尝试就生成了所有五个关卡的正确地图。","然后，它从提取的数据重新渲染每个关卡，并将结果逐像素地与我在2020年制作的完整关卡截图进行比较。对于不匹配的情况，它去寻找原因，发现了两个铜制效果：天空渐变和水颜色循环。在考虑这两者之后：五个完整关卡图像，无差异像素。单单关卡一就有600个瓷砖宽，9,600个像素。","绘制关卡只是地图单元功能的一半。每个单元是一个16位字，而图片只是其中较小的部分：","属性是关卡的隐形物理。1表示坚实地面。2和3可以攀爬。10到13都表示“会造成伤害”，有四个代码是因为击退需要方向。14会立即致死。63是门。这些内容都没有记录在任何地方。它是通过两个例程读取同一字来恢复的，每个例程展示了自己的半部分：绘图循环屏蔽低字节，碰撞检查则相反：","Checkrmh将造成伤害的情况交给一个标签rmhEnjury，它是1993年的我写错了的“injury”。","这些位是在编辑器中绘制的。在游戏构建之前，我必须先构建生成它的工具：MEDITOR.S，1,254行汇编代码，通过其自身头信息标记日期，用我的1993年英语书写：","1993年2月的四天。用鼠标绘制瓷砖，在面板的CURRENT FLAG计数器上选择属性号，用PUT FLAG将其盖在单元上，标志视图会标记携带所选数字的每个单元。在写这篇文章时，我让模型运行地图编辑器并获取截图。它用现代汇编器汇编了1993年的源代码，将发售版的关卡2数据放置在编辑器预期的内存位置，然后在模拟器中启动了结果。","我自己在三十三岁时的工具，编辑真正的2级关卡，标识视图开启。当前标识显示0001，实心，你可以站立的地面会被标记，而你可以穿过的装饰则不会被标记。面板上写着1994：面板的艺术图像是一个独立的位图文件，由编辑器加载，而留存下来的副本比1993年2月的代码要晚。","面板上另一个名字，乌代，是我在美索不达米亚软件的合伙人，这是我们给自己起的名字。当时他正在制作自己的游戏。我写了编辑器，供我们俩使用，但设计是我们一起商量出来的，所以一个工具可以服务于两款游戏。他的游戏从未完成。","敌人不在地图上。世界是一次存储一屏的，每屏25×20个瓷砖，每个屏幕都有一个小表格记录上面的对象。我的1993年评论解释了标记:","敌人是一行行文字：一个标记、一个帧、在其屏幕内的位置，然后是其行为。hiddenwallR-lrb 是破碎墙例程，从一个基本标签的偏移附加，其技巧和之前的箭矢投掷器相同。其后的字符是参数，其意义由该例程决定。文件中没有说明每个词代表什么，因此它找到了每帧扫描这些表格的例程，让其为字段命名，然后将所有五个关卡的每个对象转换为世界坐标，并与渲染的地图进行比对。","大多数数据文件使用文件内存储的钥匙打乱其16字节的头，这是1993年的一种防止磁盘编辑器入侵的技巧。零售加载器GAME.S 完全没有解密步骤。它把这一点当作线索：GAME.S 是在加入打乱之前编写的，所以它是较旧的文件。这个线索后来让它通过该文件内的一个扇区地图恢复丢失的双盘零售套装。","加载一个关卡的瓷砖地图，会发现每个门的位置都有空洞，但里面没有门的图块，无论是开着还是关着。一个18字节的对象记录在运行时将它们压印到地图上，是一个1×4的瓷砖列，来自一个表格：","地图数据说没有门。关卡代码说有门。三十三年来，我会告诉你地图才是真理的来源，而门只是地图数据，我从未去看过。它包含了两个事实，找到了调和它们的例程，并返回了设计方案：门在运行时由代码绘制；它们从未在编辑器里绘制到地图上。这就是为什么直接移植关卡数据会产生一个门口满是天空的塔。","在每个关卡中，颜色索引31是天空，而在瓷砖艺术中没有任何东西会绘制它。瓷砖图谱将其渲染为透明，而在它背后，铜芯会在选定的扫描线上重新绘背景色以形成垂直渐变。渐变在关卡源中作为简单的颜色列表存在。这是第二关的全部天空：","从列表中向下读，天空从浅蓝色变为接近地平线时的暖色。","渲染出的相同24个字。左边是屏幕顶部。","第一次重建错过了它，关卡看起来没问题。一种我无法命名的平面感。像素对比拒绝变为绿色，渐变又回来了。","拒绝变绿的差异：白色是第一次重建错的每个像素，铜的天空和水色。","Amiga精灵表是平面式的（五个独立的1位位平面按平面优先条纹排列，加上透明遮罩），这一切都是通过绘制例程和原始算术推导出来的。形式如frames * width * height * 2 * 5的图表尺寸存在歧义：这个2可能意味着双宽帧，或者两行叠加，每行对应一个朝向。两种读法都匹配文件中的每个字节。它是两个朝向行；这是我在1993年的选择。","两个叠加的行，每行对应一个朝向，逐帧绘制，不镜像。","它标记了歧义并提出了问题。"]},"en":{"title":"Developers used Claude Fable 5 in Claude Code to port the 1993 Amiga game Babylonian Twins to Godot","summary":"The author had Claude Fable 5 port its 1993 Amiga game in Claude Code in three steps: 34,000 lines of C++ were migrated into Godot 4 in one night; 72,758 lines of uncommented 68000 assembly were first rebuilt with vasm to produce a binary identical to the release version before porting; and the 1993 original was embedded as a second startup option in the new game.","category":"Industry","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Developers used Claude Fable 5 in Claude Code to port the 1993 Amiga game Babylonian Twins to Godot - Aioga AI News","description":"The author had Claude Fable 5 port its 1993 Amiga game in Claude Code in three steps: 34,000 lines of C++ were migrated into Godot 4 in one night; 72,758 lines of uncommented 68000...","url":"https://www.aioga.com/en/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:04:32.780Z"},"ja":{"title":"開発者は Claude Code で Claude Fable 5 を使って、1993 年のアミガゲーム Babylonian Twins を Godot に移植しました","summary":"作者はClaude Fable 5にClaude Codeで1993年のAmigaゲームを三段階で移植させた：34,000行のC++を一晩でGodot 4に移行し、72,758行のコメントなし68000アセンブリをまずvasmで発売版と同じバイトのバイナリに再構築してから移植し、1993年の原作を新しいゲームの第二起動項目として組み込んだ。","category":"業界動向","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"開発者は Claude Code で Claude Fable 5 を使って、1993 年のアミガゲーム Babylonian Twins を Godot に移植しました - Aioga AIニュース","description":"作者はClaude Fable 5にClaude Codeで1993年のAmigaゲームを三段階で移植させた：34,000行のC++を一晩でGodot 4に移行し、72,758行のコメントなし68000アセンブリをまずvasmで発売版と同じバイトのバイナリに再構築してから移植し、1993年の原作を新しいゲームの第二起動項目として組み込んだ。","url":"https://www.aioga.com/ja/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:04:37.970Z"},"ko":{"title":"개발자가 Claude Code에서 Claude Fable 5를 사용하여 1993년 Amiga 게임 Babylonian Twins를 Godot으로 이식","summary":"작가는 Claude Fable 5가 Claude Code에서 1993년 Amiga 게임을 세 단계로 이식하도록 했습니다: 34,000줄 C++을 한밤중에 Godot 4로 옮기고, 72,758줄 주석 없는 68000 어셈블리를 먼저 vasm으로 발매판 바이트와 일치하는 바이너리로 재구성한 후 이식하며, 1993년 원작을 두 번째 시작 항목으로 새 게임에 포함시켰습니다.","category":"업계 동향","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"개발자가 Claude Code에서 Claude Fable 5를 사용하여 1993년 Amiga 게임 Babylonian Twins를 Godot으로 이식 - Aioga AI 뉴스","description":"작가는 Claude Fable 5가 Claude Code에서 1993년 Amiga 게임을 세 단계로 이식하도록 했습니다: 34,000줄 C++을 한밤중에 Godot 4로 옮기고, 72,758줄 주석 없는 68000 어셈블리를 먼저 vasm으로 발매판 바이트와 일치하는 바이너리로 재구성한 후 이식하며, 1993년 원작을 두...","url":"https://www.aioga.com/ko/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:05:19.802Z"},"es":{"title":"Los desarrolladores utilizan Claude Fable 5 en Claude Code para portar el juego de Amiga de 1993 Babylonian Twins a Godot","summary":"El autor hizo que Claude Fable 5 trasladara su juego de Amiga de 1993 en Claude Code en tres pasos: 34,000 líneas de C++ migradas a Godot 4 en una noche, 72,758 líneas de ensamblador 68000 sin comentarios primero reconstruidas con vasm para obtener un binario idéntico a la versión lanzada y luego trasladadas, y además incrustó la obra original de 1993 como un segundo elemento de arranque en el nuevo juego.","category":"Industria","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Los desarrolladores utilizan Claude Fable 5 en Claude Code para portar el juego de Amiga de 1993 Babylonian Twins a Godot - Aioga Noticias de IA","description":"El autor hizo que Claude Fable 5 trasladara su juego de Amiga de 1993 en Claude Code en tres pasos: 34,000 líneas de C++ migradas a Godot 4 en una noche, 72,758 líneas de ensamblad...","url":"https://www.aioga.com/es/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:05:16.076Z"},"fr":{"title":"Les développeurs ont porté le jeu Amiga de 1993 Babylonian Twins sur Godot en utilisant Claude Fable 5 dans Claude Code","summary":"L'auteur fait que Claude Fable 5 porte son jeu Amiga de 1993 en trois étapes dans Claude Code : 34 000 lignes de C++ migrées vers Godot 4 en une nuit, 72 758 lignes d'assembleur 68000 sans commentaires d'abord reconstruites avec vasm pour obtenir un binaire identique à la version commerciale avant la portabilité, et intègre l'original de 1993 comme second élément de démarrage dans le nouveau jeu.","category":"Industrie","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Les développeurs ont porté le jeu Amiga de 1993 Babylonian Twins sur Godot en utilisant Claude Fable 5 dans Claude Code - Aioga Actualités IA","description":"L'auteur fait que Claude Fable 5 porte son jeu Amiga de 1993 en trois étapes dans Claude Code : 34 000 lignes de C++ migrées vers Godot 4 en une nuit, 72 758 lignes d'assembleur 68...","url":"https://www.aioga.com/fr/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:06:02.253Z"},"de":{"title":"Entwickler portieren das Amiga-Spiel Babylonian Twins von 1993 mit Claude Fable 5 in Claude Code nach Godot","summary":"Der Autor ließ Claude Fable 5 sein 1993er Amiga-Spiel in Claude Code in drei Schritten portieren: 34.000 Zeilen C++ wurden an einem Abend in Godot 4 übernommen, 72.758 zeilenlos kommentiertes 68000-Assembly wurden zunächst mit vasm rekonstruiert, um eine mit der veröffentlichten Version byte-identische Binärdatei zu erstellen, und dann portiert, und das Original von 1993 wurde als zweiter Startpunkt in das neue Spiel eingebettet.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Entwickler portieren das Amiga-Spiel Babylonian Twins von 1993 mit Claude Fable 5 in Claude Code nach Godot - Aioga KI-News","description":"Der Autor ließ Claude Fable 5 sein 1993er Amiga-Spiel in Claude Code in drei Schritten portieren: 34.000 Zeilen C++ wurden an einem Abend in Godot 4 übernommen, 72.758 zeilenlos ko...","url":"https://www.aioga.com/de/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:05:59.969Z"},"pt-BR":{"title":"Desenvolvedores usam Claude Fable 5 no Claude Code para portar o jogo Amiga de 1993 Babylonian Twins para Godot","summary":"O autor fez Claude Fable 5 em Claude Code portar seu jogo de Amiga de 1993 em três etapas: 34.000 linhas de C++ foram migradas para Godot 4 em uma noite, 72.758 linhas de assembly 68000 sem comentários foram primeiro reconstruídas com vasm para gerar um binário idêntico à versão lançada, e depois portadas, e a obra original de 1993 foi incorporada ao novo jogo como uma segunda opção de inicialização.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Desenvolvedores usam Claude Fable 5 no Claude Code para portar o jogo Amiga de 1993 Babylonian Twins para Godot - Aioga Notícias de IA","description":"O autor fez Claude Fable 5 em Claude Code portar seu jogo de Amiga de 1993 em três etapas: 34.000 linhas de C++ foram migradas para Godot 4 em uma noite, 72.758 linhas de assembly...","url":"https://www.aioga.com/pt-BR/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:06:43.798Z"},"ru":{"title":"Разработчик с помощью Claude Fable 5 в Claude Code портировал игру 1993 года для Amiga Babylonian Twins на Godot","summary":"Автор заставил Claude Fable 5 перенести свою игру 1993 года для Amiga в Claude Code в три этапа: 34 000 строк C++ за одну ночь перенесены в Godot 4, 72 758 строк некомментированного ассемблера 68000 сначала восстановлены с помощью vasm в бинарный файл, идентичный выпускной версии, а затем перенесены, и оригинальная игра 1993 года встроена в новую как второй пункт запуска.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Разработчик с помощью Claude Fable 5 в Claude Code портировал игру 1993 года для Amiga Babylonian Twins на Godot - Aioga Новости ИИ","description":"Автор заставил Claude Fable 5 перенести свою игру 1993 года для Amiga в Claude Code в три этапа: 34 000 строк C++ за одну ночь перенесены в Godot 4, 72 758 строк некомментированног...","url":"https://www.aioga.com/ru/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:06:44.972Z"},"ar":{"title":"قام المطورون باستخدام Claude Fable 5 في Claude Code بنقل لعبة Amiga لعام 1993 Babylonian Twins إلى Godot","summary":"قام المؤلف بنقل لعبة Claude Fable 5 لعام 1993 على Amiga إلى Claude Code على ثلاث مراحل: 34,000 سطر من C++ نُقلت في ليلة واحدة إلى Godot 4، و72,758 سطرًا من تجميع 68000 بدون تعليقات أعيد بناؤه أولاً باستخدام vasm لكى يكون ثنائيًا متطابقًا مع النسخة الصادرة ثم نُقل، ودمج نسخة 1993 الأصلية كمُدخل ثانٍ للعبة الجديدة.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"قام المطورون باستخدام Claude Fable 5 في Claude Code بنقل لعبة Amiga لعام 1993 Babylonian Twins إلى Godot - Aioga أخبار الذكاء الاصطناعي","description":"قام المؤلف بنقل لعبة Claude Fable 5 لعام 1993 على Amiga إلى Claude Code على ثلاث مراحل: 34,000 سطر من C++ نُقلت في ليلة واحدة إلى Godot 4، و72,758 سطرًا من تجميع 68000 بدون تعليقات...","url":"https://www.aioga.com/ar/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:07:25.346Z"},"hi":{"title":"डेवलपर ने Claude Code में Claude Fable 5 का उपयोग करके 1993 का Amiga खेल Babylonian Twins Godot में पोर्ट किया","summary":"लेखक ने Claude Fable 5 को Claude Code में अपने 1993 के Amiga खेल को तीन चरणों में पोर्ट करने दिया: 34,000 लाइनें C++ की एक रात में Godot 4 में स्थानांतरित की गईं, 72,758 लाइनें बिना टिप्पणी के 68000 असेंबली को पहले vasm का उपयोग करके रिलीज़ संस्करण के बाइट से मेल खाने वाला बाइनरी पुनर्निर्मित किया गया और फिर पोर्ट किया गया, और 1993 का मूल खेल नए खेल में दूसरे स्टार्टअप विकल्प के रूप में एम्बेड किया गया।","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"डेवलपर ने Claude Code में Claude Fable 5 का उपयोग करके 1993 का Amiga खेल Babylonian Twins Godot में पोर्ट किया - Aioga AI समाचार","description":"लेखक ने Claude Fable 5 को Claude Code में अपने 1993 के Amiga खेल को तीन चरणों में पोर्ट करने दिया: 34,000 लाइनें C++ की एक रात में Godot 4 में स्थानांतरित की गईं, 72,758 लाइनें बिन...","url":"https://www.aioga.com/hi/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:07:28.655Z"},"it":{"title":"Gli sviluppatori hanno usato Claude Fable 5 in Claude Code per portare il gioco Amiga del 1993 Babylonian Twins su Godot","summary":"L'autore ha fatto sì che Claude Fable 5 portasse il suo gioco Amiga del 1993 in Claude Code in tre passaggi: 34.000 righe di C++ migrate in Godot 4 in una notte, 72.758 righe di assembly 68000 senza commenti ricostruite prima con vasm per ottenere un binario identico a quello della versione pubblicata, e ha incorporato l'originale del 1993 come secondo elemento di avvio nel nuovo gioco.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Gli sviluppatori hanno usato Claude Fable 5 in Claude Code per portare il gioco Amiga del 1993 Babylonian Twins su Godot - Aioga Notizie IA","description":"L'autore ha fatto sì che Claude Fable 5 portasse il suo gioco Amiga del 1993 in Claude Code in tre passaggi: 34.000 righe di C++ migrate in Godot 4 in una notte, 72.758 righe di as...","url":"https://www.aioga.com/it/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:08:12.003Z"},"nl":{"title":"Ontwikkelaars hebben Babylonian Twins, een Amiga-spel uit 1993, overgezet naar Godot met Claude Fable 5 in Claude Code","summary":"De auteur liet Claude Fable 5 zijn Amiga-spel uit 1993 in drie stappen overzetten naar Claude Code: 34.000 regels C++ in één nacht naar Godot 4 migreren, 72.758 regels niet-gecommentarieerde 68000-assembly eerst reconstrueren met vasm tot een binaire versie die overeenkomt met de uitgebrachte versie en vervolgens overzetten, en het originele 1993-spel als tweede opstartoptie in het nieuwe spel integreren.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Ontwikkelaars hebben Babylonian Twins, een Amiga-spel uit 1993, overgezet naar Godot met Claude Fable 5 in Claude Code - Aioga AI-nieuws","description":"De auteur liet Claude Fable 5 zijn Amiga-spel uit 1993 in drie stappen overzetten naar Claude Code: 34.000 regels C++ in één nacht naar Godot 4 migreren, 72.758 regels niet-gecomme...","url":"https://www.aioga.com/nl/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:08:13.552Z"},"tr":{"title":"Geliştirici, Claude Code'da Claude Fable 5 kullanarak 1993 Amiga oyunu Babylonian Twins'i Godot'a taşıdı","summary":"Yazar, Claude Fable 5'in 1993 Amiga oyununu Claude Code'da üç adımda taşınmasını sağladı: bir gecede 34.000 satır C++'ı Godot 4'e aktardı, 72.758 satır yorum içermeyen 68000 assembly'i önce vasm ile yayımlanan sürümle aynı bayt olacak şekilde yeniden inşa edip sonra taşıdı ve 1993'teki orijinal oyunu yeni oyuna ikinci bir başlangıç seçeneği olarak gömdü.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Geliştirici, Claude Code'da Claude Fable 5 kullanarak 1993 Amiga oyunu Babylonian Twins'i Godot'a taşıdı - Aioga AI Haberleri","description":"Yazar, Claude Fable 5'in 1993 Amiga oyununu Claude Code'da üç adımda taşınmasını sağladı: bir gecede 34.000 satır C++'ı Godot 4'e aktardı, 72.758 satır yorum içermeyen 68000 assemb...","url":"https://www.aioga.com/tr/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:08:54.743Z"},"vi":{"title":"Các nhà phát triển đã sử dụng Claude Fable 5 trong Claude Code để chuyển thể trò chơi Amiga năm 1993 Babylonian Twins sang Godot","summary":"Tác giả để Claude Fable 5 di chuyển trò chơi Amiga năm 1993 của mình trong Claude Code thành ba bước: 34.000 dòng C++ một đêm chuyển sang Godot 4, 72.758 dòng Assembly 68000 không chú thích trước tiên được xây dựng lại bằng vasm để tạo ra nhị phân giống hệt với phiên bản phát hành, sau đó mới di chuyển, và nhúng phiên bản gốc năm 1993 làm tùy chọn khởi động thứ hai trong trò chơi mới.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Các nhà phát triển đã sử dụng Claude Fable 5 trong Claude Code để chuyển thể trò chơi Amiga năm 1993 Babylonian Twins sang Godot - Tin tức AI Aioga","description":"Tác giả để Claude Fable 5 di chuyển trò chơi Amiga năm 1993 của mình trong Claude Code thành ba bước: 34.000 dòng C++ một đêm chuyển sang Godot 4, 72.758 dòng Assembly 68000 không...","url":"https://www.aioga.com/vi/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:08:58.076Z"},"id":{"title":"Pengembang menggunakan Claude Fable 5 di Claude Code untuk memporting permainan Amiga tahun 1993 Babylonian Twins ke Godot","summary":"Penulis membuat Claude Fable 5 memporting game Amiga 1993-nya dalam tiga langkah di Claude Code: 34.000 baris C++ dipindahkan ke Godot 4 dalam semalam, 72.758 baris assembly 68000 tanpa komentar pertama dibangun ulang dengan vasm menjadi biner yang sama dengan versi rilis, kemudian dipindahkan, dan karya asli 1993 disematkan sebagai opsi startup kedua dalam game baru.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Pengembang menggunakan Claude Fable 5 di Claude Code untuk memporting permainan Amiga tahun 1993 Babylonian Twins ke Godot - Berita AI Aioga","description":"Penulis membuat Claude Fable 5 memporting game Amiga 1993-nya dalam tiga langkah di Claude Code: 34.000 baris C++ dipindahkan ke Godot 4 dalam semalam, 72.758 baris assembly 68000...","url":"https://www.aioga.com/id/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:09:38.824Z"},"th":{"title":"นักพัฒนาใช้ Claude Fable 5 ใน Claude Code เพื่อพอร์ตเกม Amiga ปี 1993 Babylonian Twins ไปยัง Godot","summary":"ผู้เขียนให้ Claude Fable 5 ย้ายเกม Amiga ของปี 1993 ใน Claude Code เป็นสามขั้นตอน: 34,000 บรรทัด C++ ย้ายเข้า Godot 4 ในคืนเดียว, 72,758 บรรทัดแอสเซมบลี 68000 ที่ไม่มีคอมเมนต์ ใช้ vasm สร้างไบนารีที่ตรงกับเวอร์ชันที่วางขายก่อนแล้วจึงย้าย และฝังต้นฉบับปี 1993 เป็นตัวเลือกเริ่มต้นที่สองของเกมใหม่","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"นักพัฒนาใช้ Claude Fable 5 ใน Claude Code เพื่อพอร์ตเกม Amiga ปี 1993 Babylonian Twins ไปยัง Godot - ข่าว AI Aioga","description":"ผู้เขียนให้ Claude Fable 5 ย้ายเกม Amiga ของปี 1993 ใน Claude Code เป็นสามขั้นตอน: 34,000 บรรทัด C++ ย้ายเข้า Godot 4 ในคืนเดียว, 72,758 บรรทัดแอสเซมบลี 68000 ที่ไม่มีคอมเมนต์ ใช้...","url":"https://www.aioga.com/th/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:09:42.740Z"},"pl":{"title":"Deweloperzy przenieśli grę z 1993 roku na Amiga, Babylonian Twins, do Godot za pomocą Claude Fable 5 w Claude Code","summary":"Autor pozwala Claude Fable 5 przenieść swoją grę z 1993 roku na Amigę w Claude Code w trzech krokach: 34 000 linii C++ w jedną noc przeniesione do Godot 4, 72 758 linii niekomentowanego asemblera 68000 najpierw zrekonstruowane przy użyciu vasm, aby uzyskać binarną zgodność z wersją wydaną, a następnie przeniesione, i osadzają oryginał z 1993 roku jako drugi punkt startowy w nowej grze.","category":"行业动态","source":"Hacker News 热门（buzzing.cc 中文翻译）","aggregationSource":"Hacker News 热门（buzzing.cc 中文翻译）","pageTitle":"Deweloperzy przenieśli grę z 1993 roku na Amiga, Babylonian Twins, do Godot za pomocą Claude Fable 5 w Claude Code - Aioga Wiadomości AI","description":"Autor pozwala Claude Fable 5 przenieść swoją grę z 1993 roku na Amigę w Claude Code w trzech krokach: 34 000 linii C++ w jedną noc przeniesione do Godot 4, 72 758 linii niekomentow...","url":"https://www.aioga.com/pl/news/cmtm7yl5s01dbrobnjyyupz0q/","contentTranslated":true,"sourceHash":"2c8a71de9b6fb106","translatedAt":"2026-09-04T01:10:26.044Z"}},"evidenceTier":"verified-news","reviewStatus":"editorial-selected","indexable":true,"editorialCover":""}}