Another World Source Code Review

Dedicated to the nerds grown in the 90s


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


Links

Brienne and Tormund: love is in the air?

Just for fun…


From WikiOfThrones:

Brienne has come to Castle Black for the first time and it looks like she already has a male admirer. This admirer is not a brother of the night’s watch but the wildlingTormund. Although the thought emerged as a fan theory, director Dan Sackheimhas recently confirmed this theory and said that, “I wasn’t even sure that when I delivered the episode it was really clear. It was like a fun little bit but I wasn’t sure it was really clear that he had these amorous feelings for Brienne. I’m always amazed what fans pick up.”


My Weekly #Roundup #73 — #LinkedIn #TeslaCrypt #MrRobot

What happened relevant this week? Linkedin, Teslacrypt and other fun stuff!



Security & Privacy

http://xkcd.com/1683/

http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/


Geekness

http://www.commitstrip.com/en/2016/05/19/the-childhood-of-a-coder-if-only-it-were-a-game/

http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/

http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/


Programming

http://www.commitstrip.com/en/2016/05/17/understanding-dev-culture/

http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/

http://abstrusegoose.com/249

http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/


Music


http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/

http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/

http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/


Wellness & Running


http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/
http://www.bleepingcomputer.com/news/security/teslacrypt-shuts-down-and-releases-master-decryption-key/

117 Million LinkedIn Emails And Passwords for sale on dark web

LinkedIn’s 2012 data breach was more serious than previously thought

http://trdealmgn4uvm42g.onion/listing/3600

An hacker, who goes by the name peace_of_mind, is trying to sell the account information, including emails and passwords, of 117 million LinkedIn users, and says that the data was stolen during the LinkedIn breach of 2012.

peace_of_mind is selling the data on the dark web illegal marketplace The Real Deal for 5 bitcoin (around $2,200):

Does not contain full database.

users 167,370,940

As proof you may request for me to search an email.

Data is user id,email, hash (sha1)

/*
Navicat MySQL Data Transfer

Source Server : !BlackGate!
Source Server Version : 50067
Source Host : localhost:3306
Source Database : linken

Target Server Type : MYSQL
Target Server Version : 50067
File Encoding : 65001

*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `idemail`
-- ----------------------------
DROP TABLE IF EXISTS `idemail`;
CREATE TABLE `idemail` (
`MEMBER_ID` varchar(255) NOT NULL default '',
`MEMBER_PRIMARY_EMAIL` varchar(255) default NULL,
PRIMARY KEY (`MEMBER_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of idemail
-- ----------------------------
INSERT INTO idemail VALUES ('MEMBER_ID', 'MEMBER_PRIMARY_EMAIL');
INSERT INTO idemail VALUES ('59305718', '[email protected]');
INSERT INTO idemail VALUES ('59287478', '[email protected]');
INSERT INTO idemail VALUES ('97148', '[email protected]');
INSERT INTO idemail VALUES ('35238529', '[email protected]');
INSERT INTO idemail VALUES ('12878445', '[email protected]');
INSERT INTO idemail VALUES ('59321231', '[email protected]');
INSERT INTO idemail VALUES ('59447600', '[email protected]');
INSERT INTO idemail VALUES ('25108982', '[email protected]');
INSERT INTO idemail VALUES ('25104842', '[email protected]');
INSERT INTO idemail VALUES ('13030877', '[email protected]');
INSERT INTO idemail VALUES ('59557922', '[email protected]');
INSERT INTO idemail VALUES ('35001171', '[email protected]');
INSERT INTO idemail VALUES ('59514870', '[email protected]');
INSERT INTO idemail VALUES ('7637', '[email protected]');
INSERT INTO idemail VALUES ('59515860', '[email protected]');
INSERT INTO idemail VALUES ('13069850', '[email protected]');
INSERT INTO idemail VALUES ('25119681', '[email protected]');
INSERT INTO idemail VALUES ('59516769', '[email protected]');
INSERT INTO idemail VALUES ('25017242', '[email protected]');
INSERT INTO idemail VALUES ('13518191', '[email protected]');
INSERT INTO idemail VALUES ('346632', '[email protected]');
INSERT INTO idemail VALUES ('59288231', '[email protected]');
INSERT INTO idemail VALUES ('13447088', '[email protected]');
INSERT INTO idemail VALUES ('25338921', '[email protected]');
INSERT INTO idemail VALUES ('25140094', '[email protected]');
INSERT INTO idemail VALUES ('13097504', '[email protected]');
INSERT INTO idemail VALUES ('30776', '[email protected]');
INSERT INTO idemail VALUES ('59299742', '[email protected]');
INSERT INTO idemail VALUES ('59250631', '[email protected]');
INSERT INTO idemail VALUES ('59508842', '[email protected]');
INSERT INTO idemail VALUES ('13438745', '[email protected]');
INSERT INTO idemail VALUES ('14910368', '[email protected]');
INSERT INTO idemail VALUES ('59515955', '[email protected]');
INSERT INTO idemail VALUES ('13561416', '[email protected]');
INSERT INTO idemail VALUES ('25333657', '[email protected]');
INSERT INTO idemail VALUES ('59518659', '[email protected]');
INSERT INTO idemail VALUES ('13891337', '[email protected]');
INSERT INTO idemail VALUES ('25286645', '[email protected]');
INSERT INTO idemail VALUES ('25201207', '[email protected]');
INSERT INTO idemail VALUES ('59444198', '[email protected]');
INSERT INTO idemail VALUES ('59563241', '[email protected]');
INSERT INTO idemail VALUES ('12729520', '[email protected]');
INSERT INTO idemail VALUES ('59306208', '[email protected]');
INSERT INTO idemail VALUES ('25196186', '[email protected]');
INSERT INTO idemail VALUES ('59299880', '[email protected]');
INSERT INTO idemail VALUES ('59508787', '[email protected]');
INSERT INTO idemail VALUES ('13447870', '[email protected]');
INSERT INTO idemail VALUES ('13877259', '[email protected]');
INSERT INTO idemail VALUES ('59518863', '[email protected]');
INSERT INTO idemail VALUES ('25312264', null);
INSERT INTO idemail VALUES ('59516958', '[email protected]');
INSERT INTO idemail VALUES ('59288333', '[email protected]');
INSERT INTO idemail VALUES ('35004720', '[email protected]');
INSERT INTO idemail VALUES ('15629443', '[email protected]');
INSERT INTO idemail VALUES ('15509573', '[email protected]');
INSERT INTO idemail VALUES ('95072', '[email protected]');
INSERT INTO idemail VALUES ('59444244', '[email protected]');
INSERT INTO idemail VALUES ('13031048', '[email protected]');
INSERT INTO idemail VALUES ('25223699', '[email protected]');
INSERT INTO idemail VALUES ('240984', '[email protected]');
INSERT INTO idemail VALUES ('59518174', '[email protected]');
INSERT INTO idemail VALUES ('35196230', '[email protected]');
INSERT INTO idemail VALUES ('25339234', '[email protected]');
INSERT INTO idemail VALUES ('13068493', '[email protected]');
INSERT INTO idemail VALUES ('13138328', '[email protected]');
INSERT INTO idemail VALUES ('59320824', '[email protected]');
INSERT INTO idemail VALUES ('105189', '[email protected]');
INSERT INTO idemail VALUES ('59516785', '[email protected]');
INSERT INTO idemail VALUES ('13560422', '[email protected]');
INSERT INTO idemail VALUES ('59247006', '[email protected]');
INSERT INTO idemail VALUES ('13508464', '[email protected]');
INSERT INTO idemail VALUES ('14885010', '[email protected]');
INSERT INTO idemail VALUES ('59509114', '[email protected]');
INSERT INTO idemail VALUES ('59519263', '[email protected]');
INSERT INTO idemail VALUES ('13840708', '[email protected]');
INSERT INTO idemail VALUES ('395738', '[email protected]');
INSERT INTO idemail VALUES ('59447679', '[email protected]');
INSERT INTO idemail VALUES ('13030547', '[email protected]');
INSERT INTO idemail VALUES ('59288065', '[email protected]');
INSERT INTO idemail VALUES ('59517911', '[email protected]');
INSERT INTO idemail VALUES ('14986626', '[email protected]');
INSERT INTO idemail VALUES ('59519010', '[email protected]');
INSERT INTO idemail VALUES ('13480370', '[email protected]');
INSERT INTO idemail VALUES ('14988660', '[email protected]');
INSERT INTO idemail VALUES ('59519309', '[email protected]');
INSERT INTO idemail VALUES ('14953876', '[email protected]');
INSERT INTO idemail VALUES ('35052735', '[email protected]');
INSERT INTO idemail VALUES ('14941010', '[email protected]');
INSERT INTO idemail VALUES ('298250', '[email protected]');
INSERT INTO idemail VALUES ('59444249', '[email protected]');
INSERT INTO idemail VALUES ('59299712', '[email protected]');
INSERT INTO idemail VALUES ('59516799', '[email protected]');
INSERT INTO idemail VALUES ('59288207', '[email protected]');
INSERT INTO idemail VALUES ('20310', '[email protected]');
INSERT INTO idemail VALUES ('25021326', '[email protected]');
INSERT INTO idemail VALUES ('59517856', '[email protected]');
INSERT INTO idemail VALUES ('16197', '[email protected]');
INSERT INTO idemail VALUES ('59512324', '[email protected]');
INSERT INTO idemail VALUES ('35024632', '[email protected]');
INSERT INTO idemail VALUES ('13877298', '[email protected]');
INSERT INTO idemail VALUES ('14990376', '[email protected]');
INSERT INTO idemail VALUES ('35055400', '[email protected]');
INSERT INTO idemail VALUES ('13012605', '[email protected]');
INSERT INTO idemail VALUES ('59327786', '[email protected]');
INSERT INTO idemail VALUES ('25141689', '[email protected]');
INSERT INTO idemail VALUES ('144835', '[email protected]');
INSERT INTO idemail VALUES ('59518356', '[email protected]');
INSERT INTO idemail VALUES ('35244119', '[email protected]');
INSERT INTO idemail VALUES ('59447899', '[email protected]');
INSERT INTO idemail VALUES ('59305806', '[email protected]');
INSERT INTO idemail VALUES ('59287588', '[email protected]');
INSERT INTO idemail VALUES ('25312567', '[email protected]');
INSERT INTO idemail VALUES ('25230676', '[email protected]');
INSERT INTO idemail VALUES ('13539888', '[email protected]');
INSERT INTO idemail VALUES ('26932', '[email protected]');
INSERT INTO idemail VALUES ('13416104', '[email protected]');
INSERT INTO idemail VALUES ('12131510', '[email protected]');
INSERT INTO idemail VALUES ('293937', '[email protected]');
INSERT INTO idemail VALUES ('416084', '[email protected]');
INSERT INTO idemail VALUES ('59451161', '[email protected]');
INSERT INTO idemail VALUES ('59447860', '[email protected]');
INSERT INTO idemail VALUES ('12779700', '[email protected]');
INSERT INTO idemail VALUES ('12954505', '[email protected]');
INSERT INTO idemail VALUES ('12833898', '[email protected]');
INSERT INTO idemail VALUES ('25305532', '[email protected]');
INSERT INTO idemail VALUES ('25129061', '[email protected]');
INSERT INTO idemail VALUES ('59518055', '[email protected]');
INSERT INTO idemail VALUES ('14934192', '[email protected]');
INSERT INTO idemail VALUES ('12747791', '[email protected]');
INSERT INTO idemail VALUES ('59288443', '[email protected]');
INSERT INTO idemail VALUES ('35121527', '[email protected]');
INSERT INTO idemail VALUES ('13150446', '[email protected]');
INSERT INTO idemail VALUES ('231535', '[email protected]');
INSERT INTO idemail VALUES ('59518502', '[email protected]');
INSERT INTO idemail VALUES ('59518686', '[email protected]');
INSERT INTO idemail VALUES ('228669', '[email protected]');
INSERT INTO idemail VALUES ('15512417', '[email protected]');
INSERT INTO idemail VALUES ('25192703', '[email protected]');
INSERT INTO idemail VALUES ('59447686', '[email protected]');
INSERT INTO idemail VALUES ('59562735', '[email protected]');
INSERT INTO idemail VALUES ('12923970', '[email protected]');
INSERT INTO idemail VALUES ('59302453', '[email protected]');
INSERT INTO idemail VALUES ('59306246', '[email protected]');
INSERT INTO idemail VALUES ('106657', '[email protected]');
INSERT INTO idemail VALUES ('13058154', '[email protected]');
INSERT INTO idemail VALUES ('329841', '[email protected]');
INSERT INTO idemail VALUES ('59508938', '[email protected]');
INSERT INTO idemail VALUES ('3792555', '[email protected]');
INSERT INTO idemail VALUES ('15003120', '[email protected]');
INSERT INTO idemail VALUES ('59513224', '[email protected]');
INSERT INTO idemail VALUES ('59448120', '[email protected]');
INSERT INTO idemail VALUES ('59512967', '[email protected]');
INSERT INTO idemail VALUES ('59519440', '[email protected]');
INSERT INTO idemail VALUES ('59513404', '[email protected]');
INSERT INTO idemail VALUES ('59324374', '[email protected]');
INSERT INTO idemail VALUES ('301848', '[email protected]');
INSERT INTO idemail VALUES ('25106374', '[email protected]');
INSERT INTO idemail VALUES ('202047', '[email protected]');
INSERT INTO idemail VALUES ('12779149', '[email protected]');
INSERT INTO idemail VALUES ('59328672', '[email protected]');
INSERT INTO idemail VALUES ('35055309', '[email protected]');
INSERT INTO idemail VALUES ('25009388', '[email protected]');
INSERT INTO idemail VALUES ('25192191', '[email protected]');
INSERT INTO idemail VALUES ('59559883', '[email protected]');
INSERT INTO idemail VALUES ('59444223', '[email protected]');
INSERT INTO idemail VALUES ('35172349', '[email protected]');
INSERT INTO idemail VALUES ('59559953', '[email protected]');
INSERT INTO idemail VALUES ('25002748', '[email protected]');
INSERT INTO idemail VALUES ('59513973', '[email protected]');
INSERT INTO idemail VALUES ('13184076', '[email protected]');
INSERT INTO idemail VALUES ('320949', '[email protected]');
INSERT INTO idemail VALUES ('59514873', '[email protected]');
INSERT INTO idemail VALUES ('21269', '[email protected]');
INSERT INTO idemail VALUES ('38315248', '[email protected]');
INSERT INTO idemail VALUES ('59516881', '[email protected]');
INSERT INTO idemail VALUES ('18523', '[email protected]');
INSERT INTO idemail VALUES ('25334404', '[email protected]');
INSERT INTO idemail VALUES ('59288340', '[email protected]');
INSERT INTO idemail VALUES ('59516452', '[email protected]');
INSERT INTO idemail VALUES ('59508975', '[email protected]');
INSERT INTO idemail VALUES ('13418213', '[email protected]');
INSERT INTO idemail VALUES ('14885640', '[email protected]');
INSERT INTO idemail VALUES ('13150511', '[email protected]');
INSERT INTO idemail VALUES ('338646', '[email protected]');
INSERT INTO idemail VALUES ('59518461', '[email protected]');
INSERT INTO idemail VALUES ('13795172', '[email protected]');
INSERT INTO idemail VALUES ('15628167', '[email protected]');
INSERT INTO idemail VALUES ('35111676', '[email protected]');
INSERT INTO idemail VALUES ('59454925', '[email protected]');
INSERT INTO idemail VALUES ('59252712', '[email protected]');
INSERT INTO idemail VALUES ('13493942', '[email protected]');
INSERT INTO idemail VALUES ('14960888', '[email protected]');
INSERT INTO idemail VALUES ('59518647', '[email protected]');
INSERT INTO idemail VALUES ('59447839', '[email protected]');
INSERT INTO idemail VALUES ('12897461', '[email protected]');
INSERT INTO idemail VALUES ('202909', '[email protected]');
INSERT INTO idemail VALUES ('59321096', '[email protected]');
INSERT INTO idemail VALUES ('25003750', '[email protected]');
INSERT INTO idemail VALUES ('35066422', '[email protected]');
INSERT INTO idemail VALUES ('13122156', '[email protected]');
INSERT INTO idemail VALUES ('25229803', '[email protected]');
INSERT INTO idemail VALUES ('25013021', '[email protected]');
INSERT INTO idemail VALUES ('59515743', '[email protected]');
INSERT INTO idemail VALUES ('25223382', '[email protected]');
INSERT INTO idemail VALUES ('25043938', '[email protected]');
INSERT INTO idemail VALUES ('59516457', '[email protected]');
INSERT INTO idemail VALUES ('59287564', '[email protected]');
INSERT INTO idemail VALUES ('59508897', '[email protected]');
INSERT INTO idemail VALUES ('59502024', '[email protected]');
INSERT INTO idemail VALUES ('14950643', '[email protected]');
INSERT INTO idemail VALUES ('15006110', '[email protected]');
INSERT INTO idemail VALUES ('59518859', '[email protected]');
INSERT INTO idemail VALUES ('91773', '[email protected]');
INSERT INTO idemail VALUES ('59558011', '[email protected]');
INSERT INTO idemail VALUES ('12759411', '[email protected]');
INSERT INTO idemail VALUES ('59321150', '[email protected]');
INSERT INTO idemail VALUES ('12715142', '[email protected]');
INSERT INTO idemail VALUES ('59287470', '[email protected]');
INSERT INTO idemail VALUES ('35003647', '[email protected]');

The data search engine LeakedSource also claims to have obtained this data:

Passwords were stored in SHA1 with no salting. This is not what internet standards propose. Only 117m accounts have passwords and we suspect the remaining users registered using FaceBook or some similarity.

You can check your account using LeakedSource search engine: https://www.leakedsource.com/main/