Igor engine
Moderator: ScummVM Team
Do note that the engine in its current state is treating the exe as a game script, and it's basically a (very) lightweight binary executable parser.
cyx says so himself:
"This program is mostly a proof of concept. Since the original game executable contains both hardcoded logic and assets, the idea was to extract the datafiles and write a x86 decoder and interpreter. Only higher level functions (palette, display, inputs) have been rewritten (these are referred as 'traps' in the source code)."
IMHO, this approach is totally different to what ScummVM is trying to achieve, so with the approach taken, this engine isn't a viable candidate to be added in ScummVM, as we aim to rewrite the original executable of each game, not implement an x86 interpreter - there's DOSBox for such an approach.
cyx says so himself:
"This program is mostly a proof of concept. Since the original game executable contains both hardcoded logic and assets, the idea was to extract the datafiles and write a x86 decoder and interpreter. Only higher level functions (palette, display, inputs) have been rewritten (these are referred as 'traps' in the source code)."
IMHO, this approach is totally different to what ScummVM is trying to achieve, so with the approach taken, this engine isn't a viable candidate to be added in ScummVM, as we aim to rewrite the original executable of each game, not implement an x86 interpreter - there's DOSBox for such an approach.
I find it strange to discriminate between bytecode and machine x86 language.
Cyx's implementation is much closer to ScummVM than DOSBox in that the VM is extremely primitive, and all IO is performed by higher level functions.
The igor "script logic" only uses 37 opcodes. The VM totals 1400 LOCs including memory management.
There are more complex VMs in the tree at the moment. Saga is ~3 times as big, for example.
Cyx's implementation is much closer to ScummVM than DOSBox in that the VM is extremely primitive, and all IO is performed by higher level functions.
The igor "script logic" only uses 37 opcodes. The VM totals 1400 LOCs including memory management.
There are more complex VMs in the tree at the moment. Saga is ~3 times as big, for example.
Read what I wrote once more. The logic in Igor has not been reimplemented, the code parses the x86 bytecode like a script. Of course, the engine is simple enough, the hardcoded logic is all read from the executable. But this isn't a reimplementation, per se. It's a bytecode parser. There are other engines like ringworld and lastexpress where all of the logic is hardcoded as well, and they have been reversed and rewritten into C++.zorbid wrote:I find it strange to discriminate between bytecode and machine x86 language.
Cyx's implementation is much closer to ScummVM than DOSBox in that the VM is extremely primitive, and all IO is performed by higher level functions.
The igor "script logic" only uses 37 opcodes. The VM totals 1400 LOCs including memory management.
There are more complex VMs in the tree at the moment. Saga is ~3 times as big, for example.