![]() Your browser does not support the video tag. The third framebuffer is used to compose the background of a scene only once and then reuse it frame after frame with a In software.and a third one as a clever optimization: In the previous drawing we see three framebuffers. Upon startup, the executable sets the virtual machine's thread 0 program counter with 0x00 and start interpreting.Įverything is commanded by the bytecode after that. Trivia : The palette memory segment actually contains several palettes, used for nice fading effects. ![]() Renderer: Reads and Renders vertices upon request from the vm.Sound/Music mixer: Makes noises upon request from the vm.Resource Manager: Loads resources from the floppy disk when the vm request them.Virtual Machine: Maestro of the entire system.2005 Windows XP, Symbia OS, Windows MobileĮvery time only the virtual machine had to be compiled to the target OS: The bytecode remained the same !.To implement only the virtual machine for the target OS reduced the effort and the game was broadly ported to more than a dozen platforms: The bytecode performs all the game logic with its own opcodes but uses syscalls for "heavy" stuff like drawing, playing music, sound and managing assets. Why so small ? Because ANOTHER.EXE was not the game itself but just a virtual machine: This was possible partly because the binary was small (20KB). That they reverse engineered the DOS executable. Some people were so passionate about this groundbreaking game The source code of "Another World' was never officially released nor leaked. I was amazed to discover an elegant system based on a virtual machine interpreting bytecode in realtime and generating fullscreen vectorialĬinematic in order to produce one of the best game of all time.Īll this shipping on a 1.44MB floppy disk and running within 600KB of RAM: Not bad for 1991 ! As usual I cleaned up my notes, it may save a few hours to someone. Iīased my work on Gregory Montoir's "binary to C++" initial reverse engineering from the DOS executable. Source code of Another World ("Out Of This World" in North America). ![]() I spent two weeks reading and reverse engineering further the
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |