Another World Source Code Review | So Long, and Thanks for All the Fish
https://www.andreafortuna.org/2016/05/24/another-world-source-code-review/
april 2019 ‧ IFTTT Pocket ‧ open in karakeep
Karakeep has no AI summary for this page yet. summarize now
Dedicated to the nerds grown in the 90s </figure> Recently i have read an interesting article by Fabien Sanglard about a milestone of videogames: “Another World”. I spent two weeks reading and reverse engineering further the source code of Another World(“Out Of This World” in North America). I based my work on Gregory Montoir’s “binary to C++” initial reverse engineering from the DOS executable. I was amazed to discover an elegant system based on a virtual machine interpreting bytecode in realtime and generating fullscreen vectorial cinematic in order to produce one of the best game of all time. All this shipping on a 1.44MB floppy disk and running within 600KB of RAM: Not bad for 1991 ! Sanglard has made a complete review of the sourcecode of the game, and has discovered some interesting facts. For example: This was possible partly because the binary was small (20KB). Why so small ? Because ANOTHER.EXE was not the game itself but just a virtual machine: - Hosting bytecode. - Providing system calls. 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. 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 ANOTHER.EXE architecture Fabien has also created his own version of “Another World Virtual Machine”: In the code on github you can see how every opcode have been implemented. All of them are pretty easy to understand except for the renditions ones. The trick is that the polygon segment source where the vertices should be read is embedded with the opcode id. Additional material for nostalgic nerd [embed]https://www.youtube.com/watch?v=Zgkf6wooDmw[/embed] Links The full article The sourcecode of “Another World Virtual Machine” on GitHub
*bookmark *download *tobuy *tofollow *toread *wishlist 2d 360 3d 3g abandonware accounting actionscript air airplay algorithm android animation api app apple appstore arcade arduino art article asm assembler audio automation baby backlight backup bbs berlin bitcoin bivert blipfm blipster blog blu-ray bluetooth book bookmark bootcamp boxee brasil brazil bruno bug bugtracking buildapc business c c# c++ carro casa cell chart chiptune cliq cocoa cocoa-touch code collection component controller cooking core-graphics crt css curso database ddwrt debug demoscene design deutschland dev developer development diy dj dns doc dos dosbox dotnet download dreamcast drink drm ds dvb-c dvd ebook electronics emu emudev emulator engine example facebook famicom feedbin firmware fix flash flashcart flex fluorine forum framework freeware gadget game gameboy gameboy-pocket gamedesign gamedev gamegear games gba genesis german germany git google googlemaps GoogleReader gps gsm gui guide hack hacks hamburg hardware home home-automation homeassistant homebrew honda howto html htpc http icon IFTTT ikea image imported indie inspiration install insteon interview ios ipad iphone iptv iso itunes jailbreak japan java javascript job keyboard lastfm lcd lib library linux live lldb localization london mac macos mame management mapkit mastersystem math mce media mediacenter megadrive memory-management miami midi mod movie mp3 mpd msn music mythtv nas nes network nvidia nyc objective-c opengl opengles opensource osx pc pcb perlerbeads php physics piracy plex plugin Pocket portfolio prepaid project ps1 ps2 ps3 ps4 psp puremvc push pvr python raspberrypi recalbox recipe region remote repro resource restaurante retrogaming retrograming retropc retropie rgb rip rom roms router ruby rubyonrails saopaulo scart scumm sdk security seedbox serial server shmups shop shopping sim sms snes software sonos sound soundblaster soundtrack source spotify sql sqlite star startup steamdeck store stream subtitles svn swift sync synology synth tax terminal three20 tips tool tools toread torrent tracker travel trip tutorial tweak twitter ubuntu ui uitableview unix unlock uremote usa veralite viagem video vista vita vpn vps vst walkthrough warez web2.0 webdesign webradio webservices wifi wii wiiu windows wishlist wordpress xbmc xbox xcode xml xna youtube z-wave z80 zigbee