OT: I got AESOP/32 engine compiler/manuals from John Miles

General chat related to ScummVM, adventure gaming, and so on.

Moderator: ScummVM Team

Post Reply
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

OT: I got AESOP/32 engine compiler/manuals from John Miles

Post by mirekluza »

Hi
I apologize if it does not belong here (feel free to move it elsewhere), but I think this is something in which people here could be interested...

"Eye of Beholder 3" and "Dungeon Hack" are based on one (though modified) engine: AESOP/16. Virtually nothing was known about it. After some mailing with John Miles (better known for the Miles Sound System) I received sources for the script complier (the engine uses its own bytecode) and the documentation. I do not have interpreter (too much SSI copyrighted code), but maybe interpreters from EOB 3/DH could be used (not tested) or maybe - if somebody is interested (I certainly do not feel to the task myself!) - a new interpreter written...

In any case - I have explicit permission to do whatever I want with it from John Miles (he is the only copyright holder for AESOP), so feel free to download it/modify it/upload elsewhere.

At the moment it is for download on VOGONS in the thread I mention at the end of this post (read it also to get some background info - e.g. why there were slowdowns in EOB 3 when the game was shipped etc.), but feel free to do whatever you want with it/make your own web for it etc.
Just give credits to John Miles, he is very nice to the open source community.

Here is the thread with the download:
http://vogons.zetafleet.com/viewtopic.php?p=91341#91341

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

Post by mirekluza »

I have received one more thing from John Miles (again, freely usable/distributable, download from the mentioned thread on VOGONS). I did not have a look on it yet

Mirek

From mail by John Miles:
...
I managed to dig up some runtime
code that is free of any IP owned by SSI or other parties, if it helps:
<go to VOGONS for dl link>

This is absolutely all I can release, unless you can figure out who owns the
game code these days and convince them to open-source it. :-)

-- john
...
User avatar
df
ScummVM Developer
Posts: 38
Joined: Thu May 25, 2006 2:05 pm

Post by df »

i dl'ld the vogons files and i will take a look. nice!

looks overly more complex than it needed to be but hey, atleast he was kind enough to provide the compiler and some interp source!
User avatar
sev
ScummVM Lead
Posts: 2308
Joined: Wed Sep 21, 2005 1:06 pm
Contact:

Post by sev »

Super! What could be done, is that somebody will pick this up, write a run-time engine and use as a base for open source game engine for creating graphical scripted games. The engine seems to be general enough, so not only RPGs could be made with it.


Eugene
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

Post by mirekluza »

Just a short information: I have made some attempts to compile the runtime (using as much original tools as possible - AIL, VFX libraries, Open Watcom...). I produced an EXE, though it does not work yet (needs more debugging).
If somebody wants to try this as well, there are some usefull information in the mentioned VOGONS thread (e.g. I spent a lot of time by finding out that I need to set a proper structure alignment in Watcom - RES files depend on it and Watcom has changed its default settings since the AESOP was made in the beginning of 1990s).

See the VOGONS thread for details...

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

DAESOP 0.40

Post by mirekluza »

I have been slowly developing a utility to analyze AESOP resource files (RES, like EYE.RES) etc. At the moment it can provide some information about the file or individual resources and also extract resources. I hope I will add AESOP disassembler in future.
The utility is called DAESOP. At the moment its version is 0.40.
It can be downloaded from the above mentioned thread on VOGONS.

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

DEAESOP 0.50

Post by mirekluza »

DAESOP 0.50 released :-)

I made a new version of my DAESOP utility, this time adding the AESOP bytecode disassembler. This enables to disassemble the script code resources in the "Eye of Beholder 3", "Dungeon Hack" or even custom made AESOP based programs.
The syntax is the same as before. The disassembly is generated when using switches /j or /k on code related resource (code/import/export resources).
So for example use this line to generate disassembly of the "start" resource in the "Eye of Beholder 3":
daesop /j eye.res start start.txt

See the generated file start.txt for the disassembly of the "start" resource:

Code: Select all

...
*** CODE RESOURCE DISASSEMBLER &#40;resource name start, resource number&#58; 2388&#41; ***

.DISASSEMBLER_VERSION            1
;Warning&#58; imported/exported variables are not handled yet in this version.
;
;main data.OBJECT_NAME                     start
.PARENT                          #ffffffff     ;-1
;
;other original settings
.ORIGINAL_CODE_RESOURCE_SIZE     735
.ORIGINAL_IMPORT_RESOURCE_SIZE   398
.ORIGINAL_IMPORT_RESOURCE_NUMBER #0952     ;2386
.ORIGINAL_EXPORT_RESOURCE_SIZE   65
.ORIGINAL_EXPORT_RESOURCE_NUMBER #0953     ;2387
.ORIGINAL_STATIC_SIZE            0
;
;
.MESSAGE_HANDLER_NAME            enter game
.LOCAL_VARIABLE_SIZE             2
    16 &#40;000010&#41;&#58; 20 00 00          RCRS    "C&#58;create_program"  ;import_resource_number&#58; 00
    19 &#40;000013&#41;&#58; 04                PUSH    
    20 &#40;000014&#41;&#58; 1d 00             SHTC    0
    22 &#40;000016&#41;&#58; 04                PUSH    
    23 &#40;000017&#41;&#58; 1e 66 05          INTC    1382
    26 &#40;00001a&#41;&#58; 21 02             CALL    2
    28 &#40;00001c&#41;&#58; 1d 00             SHTC    0
    30 &#40;00001e&#41;&#58; 04                PUSH    
    31 &#40;00001f&#41;&#58; 2e 00 00          LAD     0
    34 &#40;000022&#41;&#58; 22 01 fa 00       SEND    1, "enter game"  ;message_number&#58; 250
    38 &#40;000026&#41;&#58; 20 04 00          RCRS    "C&#58;destroy_object"  ;import_resource_number&#58; 44
    41 &#40;000029&#41;&#58; 04                PUSH    
    42 &#40;00002a&#41;&#58; 1d 00             SHTC    0
    44 &#40;00002c&#41;&#58; 21 01             CALL    1
    46 &#40;00002e&#41;&#58; 56                END     
;
.MESSAGE_HANDLER_NAME            create
.LOCAL_VARIABLE_SIZE             14
    49 &#40;000031&#41;&#58; 20 08 00          RCRS    "C&#58;peekmem"  ;import_resource_number&#58; 88
    52 &#40;000034&#41;&#58; 04                PUSH 
...
See the Vogons for download: http://vogons.zetafleet.com/viewtopic.php?p=94056#94056

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

DAESOP 0.60

Post by mirekluza »

I made another version of my DAESOP utility yesterday (DAESOP 0.60). It can be again downloaded from Vogons.
Here is the information about what is new (copied from README):
...
The version 0.600 adds a lot of new things into the disassembler introduced in DAESOP 0.500. It concerns mainly variables. For most of variables (with exception of local "auto" variables) symbolic names are used. When possible (imported/exported variables), the real names are used. When it is not possible (private static variables, "table" variables), simple symbolic names are made. In future versions of DAESOP this will be done also for local variables.
The tables showing import/export resources were reworked and they now show properly all available items. The problem of not disassembling procedures (instructions JSR/RTS) was fixed.
Various minor things were fixed/improved.
...

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

Does anybody know the format of bitmaps in EOB 3?

Post by mirekluza »

I am progressing nicely with my explorations of the AESOP engine (see on Vogons). I also try to make EOB 3 run with the AESOP/32 engine. At the moment I figured out that I need to replace the table of low level functions in EYE.RES (no problem) and to convert all bitmaps in EYE.RES (see Vogons thread for more information).
I have one problem at the moment:
Does anybody know the format of the bitmaps (images) in the "Eye Of Beholder 3"?
I can extract the binary bitmaps with my DAESOP utility, but I do not know their format or how to convert them to something else ...
See the the thread on Vogons for more information and samples.

Mirek
User avatar
sev
ScummVM Lead
Posts: 2308
Joined: Wed Sep 21, 2005 1:06 pm
Contact:

Re: Does anybody know the format of bitmaps in EOB 3?

Post by sev »

mirekluza wrote:Does anybody know the format of the bitmaps (images) in the "Eye Of Beholder 3"?
Looks like this guy might now.


Eugene
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

DAESOP 0.66

Post by mirekluza »

There is a new version (DAESOP 0.66) available for download on VOGONS (http://vogons.zetafleet.com/viewtopic.php?p=95733#95733).

Since the version 0.60 the following things were added to DAESOP:
- command line parameter /ir (showing even more information about resources: original filenames if available, resource types, values of string resources)
- command line parameters /r, /rh (enabling to replace any resource in an existing RES file by another one)

JackAsser from the "English Amiga Board" did some good work with analyzing BMP format used in the "Eye of Beholder 3" (http://eab.abime.net/showthread.php?t=24436&page=7), so hopefully I will be able to implement in the near future the bitmap conversion (AESOP/16 > AESOP/32) to DAESOP (necessary step to make the EOB 3 run in the AESOP/32).

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

Post by mirekluza »

I implemented the bitmap conversion (EOB 3 > AESOP/32) in DAESOP 0.70 http://vogons.zetafleet.com/viewtopic.php?p=96111#96111.
This enables to convert the "Eye of Beholder 3" to the AESOP/32 engine and the game is partially playable using the EXEs we got from John Miles (I did not build a proper runtime from the provided sources yet - I will bother with this after having the conversions done).
The game runs, the graphic is ok, but the texts are missing (I think the fonts need conversion as well) - therefore I say "partially playable".

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

DAESOP 0.75

Post by mirekluza »

I added the font conversion to the DAESOP 0.75. This means that all texts in the "Eye of Beholder 3" are now show when it runs in AESOP/32.
You can download DAESOP 0.75 in the above mentioned thread on VOGONS.

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

EOB 3 save/load bug in the AESOP/32 was fixed

Post by mirekluza »

I found out how to fix the crashing bug when loading/saving when running the "Eye of Beholder 3" in the AESOP/32 (by changing 4 bytes in EYE.RES). Details are in the thread on VOGONS.
This makes the game playable in the AESOP/32 (though I played just a short time at the beginning of the game, so there may be problems later).

Mirek
mirekluza
Posts: 15
Joined: Tue Sep 05, 2006 8:27 am

DAESOP 0.85, AESOP/32 build from sources

Post by mirekluza »

There are following news concerning the AESOP since I posted here last time:

DAESOP 0.85
It can now fully convert the "Eye of Beholder 3" to be able to run in the AESOP/32. This works with the binary provided by John Miles and with the binary I compiled on my own (see below for more information about the build).
http://vogons.zetafleet.com/viewtopic.php?p=98090#98090

AESOP/32 interpreter build from sources is available
I managed to make a build from sources. You can download on VOGONS the whole project for "Open Watcom" which enables to build an interpreter. It works ok, though there may be a small bug in sound mixer (see on Vogons) - so at the moment I recommend it only for testing.
This package could be a base for porting the AESOP/32 to other OSes if anybody wants to do it (read on Vogons for details).
http://vogons.zetafleet.com/viewtopic.php?p=97017#97017

Source code for the AESOP/32 sound mixer is available
I already used it in the build above. The original code can be downloaded on Vogons as well.
http://vogons.zetafleet.com/viewtopic.php?p=96771#96771

At the moment I am planning to start to work on porting "Dungeon Hack" to the AESOP/32 (basically implementing missing runtime functions - after finding out/guessing what they do).

Mirek
Post Reply