View Single Post
Old 13 May 2022, 23:00   #2
dlfrsilver
CaptainM68K-SPS France
 
dlfrsilver's Avatar
 
Join Date: Dec 2004
Location: Melun nearby Paris/France
Age: 46
Posts: 10,412
Send a message via MSN to dlfrsilver
Quote:
Originally Posted by Pyrdacor View Post
Hello guys. Some of you might know me for creating a Ambermoon port for PC, Mac and Linux and maintaining the original Ambermoon and providing fixes for it.

Just recently I wrote an export plugin for the disassembling tool Ghidra to be able to export disassembled code (mainly Ambermoon) to valid Amiga assembler. I also decoded huge parts of the original code, commented and labeled all kind of stuff in Ghidra. There is also a public Ghidra server where we can collaborate and disassemble the last bits of the original Ambermoon code.

That said I am able to compile the original Ambermoon. And I can add changes (either in Ghidra) or by modifying the produced ASM.

And so I did. Original Ambermoon used 2 exe files. AM2_Blit uses the blitter to render walls and other stuff, AM2_CPU uses the CPU (loops) for this. The pre-loader called just "Ambermoon" performs a speed test with the blitter and the CPU and if the blitter is fast enough it used AM2_Blit, else AM2_CPU.

The problem was, that both exes contained 90% of the same code and data. And this data includes all item data, all UI texts, in-game messages, spell names, button graphics and so on. Bugfixing was hell as you had to fix both exes and then both languages (exes differ per language as well). Moreover creating a new language was nearly impossible.

This is now over. I extracted all language-dependent data to external files:
- Item data to Objects.amb
- Button graphics to Button_graphics
- All texts to Text.amb

Moreover the files "Dictionary.english" and "Dictionary.german" are now called just "Dict.amb" in both languages.

I wrote loaders for those files in Ghidra so the data is loaded on startup in Ambermoon now. Moreover I merged both exes into one (AM2_CPU). The speed test is still performed but the result is just given to AM2_CPU as a parameter and then it uses internal logic to use the blitter or CPU dependent on that parameter.


It was a long way and hard work but now it's done.

Ambermoon 1.14 (english) and 1.13 (german) are released and they both use the same exe. https://github.com/Pyrdacor/Ambermoon

If you want to see the effects you can download german and english and exchange files like "Text.amb", re-start the game and see how the texts change. The same is possible for items and button graphics, as mentioned.

I would be happy if someone can test the new release. Best on real hardware.

The only thing left is to make the intro and outro language-independent. Other than that, translations should now be easy. I can provide a zip with all english texts to translate if someone is interested in creating a prototype for a new language. I could help with that.

Thanks for reading.
Cheers Pyrdacor
In the end, sending you my ressourced executables did not helped you a bit ?
dlfrsilver is offline  
 
Page generated in 0.06428 seconds with 11 queries