HNHacker News
TopNewBestAskShowJobs

rabahs

313 karma · joined November 8, 2007

Builder/Entrepreneur http://x.com/rabahshihab http://www.babyloniantwins.com
submissionscomments
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
The trampoline jump physics was correct. The issues was that the 2010 c++ version ignored a held button because of an Apple TV workaround I implemented when I enabled support of tvOS 10 years ago. Godot port read it as pressed, so you get high bounce without a fresh press: https://babyloniantwins.com/blog/porting-a-1993-amiga-game-t...
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thanks!
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
It is already on itch. Check the babyloninantwins.com for all the links
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
The game website link to some articles description the game dev scene back then.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
I tried it with 16k roms. It does take less than 1 hour but if you want to tweak and make playable, you will need half day
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
I have the Max subscription. I use mostly weekends and some evenings. I never hit a limit.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Yes, you can try your game out. I tried with old msx rom files and it worked.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
The fair comparison is between the assembly version and its godot port. I didn't actually notice any performance difference since th game is capped by its 50 frame per second.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thanks. I wonder if that was documented in the Amiga Hardware Reference Manual :) that was the only book I had back then. I remember it was mostly registers and assembly language.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Curious if you had to do any follow up prompts. How large was the binary and which model did you use?
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thanks! would love to hear your feedback.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Cool. I wonder how much additional harnesses would improve the porting process. In my case, I gave more freedom to Fable 5. The model was able to figure things out. I am hearing that the latest models works better with less restrictions. Curious to know the progress on the above.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
I hear you. However I wrote that assembly code 33+ ago :) Again, I mentioned elsewhere on this post and in the article, I had to review and/or edit every line in this post. AI biggest help in writing was referencing the right source / graphics..etc. Thanks
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Are you interested in comparing the 2010 remake (C++) to the original (Assembly)? They are quite different games, so hard to compare, but both run at peak frame rate for their respective platforms (60fps vs 50fps).

I have not compared the 2010 port to the current Godot port. However, I felt the Godot port was smoother. I think that was because Godot uses the latest graphics frameworks (e.g Metal) vs old Opengl ES 1. It would also be interesting to compare the godot port of the original game vs the original in assembly. Curious how I can achieve that. A good question to ask Claude.

rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
No, I have not. I will definitely check before releasing the Amiga port inside the Steam. I think that would be the right approach, especially if you are porting a game you have not played enough. I did use blitter for all graphics. Now you mentioned MFM, I remember I wrote some disk copy protection code back in the day that leverages MFM encoding. I will check if that code is still around.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thanks for sharing. It is truly an amazing feeling when AI helps us excavate the past. I never thought I would be able to do so. I'm so glad I kept all my files over the past 33 years.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Yes, it was a tough time after the war, but the main difficulty was the economic sanctions, which hit us hard. There are a few interviews and news articles published after I launched the mobile version back in 2010 that discuss our experience in the 90s. You can read more about it here: https://babyloniantwins.com/story/ I am happy to go into more detail on any aspect. I will be watching this thread regularly.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thanks! Yes, this was not possible last year, and probably even a few months ago. Amazing times to revive forgotten games and software. Let me know if you have questions on my process.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thank you for sharing your experience. It can be hard to remember all the details of debugging in assembly, but the main aspect I recall was managing game performance to ensure all rendering and processing stayed within 1/50 of a second. My technique was drawing a white line using the Amiga Copper, starting at the beginning of the top vertical blanking period. As I added more game objects, logic, and rendering, I had to make sure the line does not drop below the beginning of the active display area. If it went below that point, a frame would be dropped, resulting the game to flicker. I had to use many techniques to split the processing of the game objects in batches across multiple frames. Fun time.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
With Claude Code command line, you can point to any directory you have in your file system. In this case, Claude Code was working across three directories: the original game in assembly, the 2010 port in C++, and the new Godot port.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
You mean run them side by side ? No, I did not do that. I played the ported game on my Mac only. The movement feels right based on my thousands of hours playing the original. There was only small tweak I had to make the trampoline jump, but everything else ported so smooth. I think the decision that Claude made not to use Godot physics and just port everything as as, made the gameplay feels right without much tweaks.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thanks. I know the Amiga version took a long time. It was very hard to even look at the assembly code I wrote after so many years. AI was the hero that explained everything and helped me to package it for releasee. Enjoy!
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
That's a good point. I looked at the git history for my analysis. What is the best way to analyze claude sessions history? I definitely check if I still have them stored. Thanks
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
The main inspiration for Babylonian Twins that nobody mentioned or even thought about was https://en.wikipedia.org/wiki/The_Maze_of_Galious it predates them all.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Thanks for the feedback. If you have read the article, I also mentioned that I have released the Amiga version for free to the Amiga community. AI actually helped addressing a few bugs and get it ready. You can download the ADF and play the full Amiga game for the first time since 33 years ago. This post was more about my experience using AI and interacting with assembly code from the 90s.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Your last point is exactly right. I wouldn't have had the time to do this port and write-up without the help of AI. Having said that, the AI wrote this based on my own notes and I edited and reviewed every line over a week. AI also helped with extracting screenshots and code snippets which would have taking me more time. I don't like to read AI writing either, but I thought that the fact that this is based on my own notes and experience and using original code and screenshots from the 90s would be of interest to the community. Thanks
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
Just grab any game, especially old rom files form the 80s (I tried TimePilot and Road Fighter from MSX era). The model extracted the graphics, the sounds and then built the whole game. It takes less than 1 hour to port a 16kb rom file, in one shot. You will get a playable game, but you need a few follow up prompts to get it back to its original form. Usually some sprites or sounds issues, but very easy to fix, if you have played the original game.
rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
This is actually what I did to understand what happened during the port. I did analysis weeks after the game was ready.

While doing the analysis, I came to know about this 108 byte delta. I didn't quite understand the explanation Claude gave me. I added more details about this in the post above. It could be the difference in the assembler used, the environment used (Amiga 500 vs M5 Macbook), or how the binary was saved from memory 33 years ago

rabahs··on Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly
This is a great idea. It could be a generic game porting skill to make the porting experience smoother. After my experience above. I have actually tried giving Claude binary files of games and it was able to reverse engineer to GoDot!
rabahs··on Universal Summarizer
I was trying to built something similar using GPT3 but I realized it was not reliable. I tried Kagi to summarize the link for this YC thread https://news.ycombinator.com/item?id=34646389

This was the summary:

Jessica Yamada is a therapist working with a patient, Victoria, who is struggling with the possibility of uncontrollable, incurable plagues. Jessica is also trying to help a young woman, Lily, who is torn between fatalism and wanting to help her friends stick together. Finally, Jessica is talking to Eidolon, a powerful man who is losing his powers and is trying to fight a monster to the death. Jessica is trying to help her patients in a variety of ways, from providing coping mechanisms to offering moral support. She is also encouraging them to push beyond their limits and to structure their arguments in a more logical and coherent way. An interesting detail is that Ratz, a character in the bar in the novel Catch 22, has a prosthetic arm, which adds to the atmosphere of the bar. The story highlights the fragility of life and the power of the universe, and serves as a reminder of the importance of cherishing the time we have on Earth. The message of the story is that even in the face of great danger, it is possible to find courage and strength in friendship and loyalty. Thoreau encourages readers to explore their own inner depths and to strive for truth and simplicity. He argues that material wealth is not as important as the wealth of the mind, and that true happiness comes from within.

Page 1 of 2Next →