English Amiga Board

English Amiga Board (http://eab.abime.net/index.php)
-   News (http://eab.abime.net/forumdisplay.php?f=29)
-   -   Extended Ambermoon for Amiga (http://eab.abime.net/showthread.php?t=110653)

Pyrdacor 13 May 2022 17:07

Extended Ambermoon for Amiga
 
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

dlfrsilver 13 May 2022 23:00

Quote:

Originally Posted by Pyrdacor (Post 1545460)
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 ?

alexh 14 May 2022 08:32

Quote:

Originally Posted by dlfrsilver (Post 1545501)
In the end, sending you my ressourced executables did not helped you a bit ?

I think they arrived too late? The work in Ghidra by Pyrdacor and nicode was almost done when they arrived.

alexh 14 May 2022 08:37

Awesome work. It opens the door to localisation for the Amiga version. First Dlfrsilver's amazing French translation and then hopefully others. I know someone once translated lots of Ambermoon into Italian.

Also knowing that Ambermoon on Amiga may get some of the new Ambermoon Advance dungeons back ported is fantastic

dlfrsilver 14 May 2022 11:54

Quote:

Originally Posted by dlfrsilver (Post 1545501)
In the end, sending you my ressourced executables did not helped you a bit ?

Well thanks anyway :) This will allow me to port my translation finally 100%.

Pyrdacor 14 May 2022 15:53

Thank you guys.

@dlfrsilver: Alex is right. It came a day before I exported valid ASM code out of Ghidra for the first time. And the code in Ghidra was already very well labeled and commented and all those labels and comments are exported as ASM comments as well. So this was a bonus over your files. Moreover I can't import your ASM files into Ghidra that easily.

I can send you the English texts so you see what structure I need to use it. Then you can just replace the English texts with the french ones.

I will also document the new file structures I invented for the in-game texts.

I already built a tool to export all texts of a Ambermoon installation. This includes all data files, the in-game texts, the item names and so on. Basically everything which needs to be translated. I will also provide a tool to create a full game out of those text files so you only have to copy your french texts into the folders and the tool does the rest.

dlfrsilver 14 May 2022 17:33

Quote:

Originally Posted by Pyrdacor (Post 1545565)
Thank you guys.

@dlfrsilver: Alex is right. It came a day before I exported valid ASM code out of Ghidra for the first time. And the code in Ghidra was already very well labeled and commented and all those labels and comments are exported as ASM comments as well. So this was a bonus over your files. Moreover I can't import your ASM files into Ghidra that easily.

I can send you the English texts so you see what structure I need to use it. Then you can just replace the English texts with the french ones.

I will also document the new file structures I invented for the in-game texts.

I already built a tool to export all texts of a Ambermoon installation. This includes all data files, the in-game texts, the item names and so on. Basically everything which needs to be translated. I will also provide a tool to create a full game out of those text files so you only have to copy your french texts into the folders and the tool does the rest.

Thanks, yes this would be welcome. It would allow me to inject my french translation more easily as i have less time for that :)

Feel free to send me the files on gmail mailbox :)

Pyrdacor 14 May 2022 20:05

I guess you have data files like NPC_texts.amb etc already translated? So you only need the texts from the executable?

dlfrsilver 14 May 2022 21:40

Quote:

Originally Posted by Pyrdacor (Post 1545586)
I guess you have data files like NPC_texts.amb etc already translated? So you only need the texts from the executable?

Well since you modified quite a bit of data files, it would be better for me to inject my text inside the latest version (v1.14).

So yes, if you can send me the text from the executable, i will translate those :)

alexh 15 May 2022 16:18

I think you already did. All the text appears to be in the ASM files you sent. Pyrdacor needs someone to reformat them to his new file format.

I've updated *_texts.amb to the latest version using the existing tools. Pyrdacor was making similar ones for *_,data.amb files.

dlfrsilver 16 May 2022 00:38

Quote:

Originally Posted by Pyrdacor (Post 1545586)
I guess you have data files like NPC_texts.amb etc already translated? So you only need the texts from the executable?

I have quite advanced in the translation of the files you sent.

However, is it normal i found german text inside ? Found some in quite a number of AMB archive text files.....


All times are GMT +2. The time now is 03:59.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.

Page generated in 0.06433 seconds with 10 queries