Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Another World ported to FPGA (github.com/sylefeb)
303 points by retro_guy on July 15, 2023 | hide | past | favorite | 73 comments


I remember playing Out of this World on my Sega Genesis as a kid, and I could not believe that graphics would ever get better than this; I had never seen fully animated cutscenes like that on my Sega and thought it was incredible.

Obviously graphics did get better, but I feel like Another World still holds its own artistically. The graphics are still very stylish and distinct, and upon replaying the game again about a year ago, I am still really impressed by it.

The game isn’t perfect; a lot of the puzzles and stuff sort of just come down to trial and error and it’s extremely short, but I also don’t think I would change a thing about it.

It’s sort of in a different category, but for fans of Another World, I recommend also checking out Flashback: The Quest for Identity. It’s got a similar cinematic vibe, and while I didn’t like it at first it’s really grown on me in the last decade or so.


I really really love Flashback. The cyberpunk setting vibes with me! It's just a beautiful setting and a cool story.

Another World is a work of art though! The poster for the game seems to be an oil painting and it's just gorgeous [1].

[1] http://www.anotherworld.fr/download/AnotherWorld_Poster.jpg


Oh yeah, that game was one of my favorites back then. Also Abe’s Oddyssey, in a similar vein but even more cyberpunk or otherworldly


I liked flashback so much, I tried to complete it on expert. Stuck somewhere closer to the end, though, cannot defeat slime man


The genesis version was fairly late. In 1991 I played the Amiga version soon after it was released and it was absolutely mind blowing. A game like that had never been seen before.


I found flashback first, on sega. I loved it instantly. Later on I played Out of this World and it took a bit before I got into it. The two are great works of art though.


Flashback is a bit more approachable; it is a bit more actioney and honestly might be a better game in an “objective” sense, if such a thing can exists, but for some reason I’ve always liked Another World a bit better.

Maybe it’s just because of the bizarre artistic nature of the entire thing, or maybe it’s because I played Another World first, but something about it has always just stuck with me.


Flashback is from Delphine Software and they also used some of the same polygon tech in Cruise for a Corpse, a detective game.


Flashback has a sequel : Fade to black


To be honest I was not a big fan of Fade to Black. It’s not incompetent or anything but I feel it comes from an era of 3D gaming that has not aged terribly well. I want to like it because I like Flashback a lot, but unlike Flashback I don’t think it holds up very well.


And it was awful


See as well:

- Infernal Runner for Amstrad CPC reverse-engineering and JavaScript port by cyxx [title from creator of Another World, both games utilizing virtual machine architecture]: https://github.com/cyxx/infernal_js

- The Virtual Machine Architecture of Infernal Runner presentation by Norbert Kehrer (in German with English slides): https://media.ccc.de/v/vcfb20_-_146_-_en_-_202010111400_-_th...

- The Story of Another World on the Amiga | MVG: https://www.youtube.com/watch?v=0iz9PJbs5rE

- Nintendo 64 port of Another World: https://github.com/jnmartin84/aw64

- Another World PlayStation 1 port: https://github.com/fgsfdsfgs/rawpsx


For anyone confused by the HDL, it's the author's custom language: https://github.com/sylefeb/Silice/tree/master

It provides a compiler to Verilog that then can be fed to traditional design flows.


The intro was fantastic. Even with a PC speaker / no sound card.

Having to swim away as your first action, and then escape from some kind of lion is one of the most brutal game experiences ever.

Even if you played that game for 1 minute you will remember that game forever.


> Even if you played that game for 1 minute you will remember that game forever.

I don't remember playing for much more than a few minutes (maybe a couple of hours), and barely making any progress, but that intro and the initial escape got etched in my memory for all those years. The dramatic camera effects of this game were indeed out of this world for the time.


The game itself is barely a couple of hours. It's very, very short.

I wonder, if the intro made such an impression on you, why didn't you finish it?


I also didn't finish it.

The game is hard and requires more patience than usual to figure it out.


Definitely a short, and not hard at all, game.

I beat it without difficulty when I was single-digit aged.

It's absolutely worth it, and better late than never.


As a general rule: Try not to take your subjective experience and imply that it’s either the universal experience or objectively true.


Maybe you're just a good gamer. I was absolutely stumped.


It was on par with games at the time though.


I'm in the same boat. I could not figure out how to get past the second screen. But I still remember those few minutes very clearly these decades later.


Do you mean how to get past the beast?


I had some trouble with the slugs but I don't think I ever got past the lion.


Ah, yes. Hard to time the jumps over the slugs. It helps that the beast trips and falls just as it's about to catch you. After that, you get "saved by the bell", so to speak ;)

I believe jumping over those slugs is possibly the hardest part of the whole game, it must be timed precisely and you're still learning to how to play.

It's not a lion, by the way ;) It's an alien beast, without a mane and looks like a cross between a gorilla and some giant black panther.


> Even if you played that game for 1 minute you will remember that game forever.

I’ve never player that game, but it’s been engraved in my mind for 30 years just from a 2 min? segment in a promotional VHS tape that came with a videogames magazine.

Also the artwork in the cover is amazing.


I'll never forget the "dialogue" in the game either, right after you get rescued from that lion thing by your new friend.

konanaka beetzai! motsuubo! /wave


If I remember correctly, your alien friend never rescues you from the beast. The ones who shoot the beast (and then you) are the "bad" aliens ;)


Mykaruba!


and not just the intro but the entire game fit on a single floppy disk, blew my mind.


I have the same memory of playing for one minute and getting stuck. I went back to it 25 years later and beat it. Once you get over the reaction-time hump, it’s a glorious and memorable game.


The original developer of Another World did a GDC postmortem, it's one of the better GDC talks:

https://www.youtube.com/watch?v=JFaOYYSxSEA

IIRC He shows some of his development tools including how he could modify and step through animation directly line by line in VM bytecode.


I wonder how common were full game VMs in the 90s. For a game older than myself, wouldn't a VM layer incur a great performance penalty on PCs from that time?


It was far more important to have the same software work on Amiga, x86 (DOS), Mac and the whole slew of different machines than came and went.

Today we have fewer machines than the great explosive growth of the 80s.

Consider that most 'software' today is JavaScript interpreted by the Web Browser. It's not like those portability concerns didn't exist in the 80s, if anything, it was harder because you had to make your own interpreter back then.

---------

Many (maybe most?) video games seem to have been written in a VM, at least before Doom / high performance 3d graphics.

I think console games were in C/Assembly for performance.

But 'computer' games at that time was before the standard IBM PC or at least, before the PC won and Microsoft achieved dominance. When you didn't know if Amiga, PC98, IBM PC, Mac, or others would win it only made sense to write a VM.

SCUMM (Monkey Island and many others) comes to mind.


The Infocom text adventures (e.g. Zork) were based on a VM

https://en.wikipedia.org/wiki/Z-machine


Which is stll working with libre implementations (frotz) and OOP based compilers targeting the Z-machine (inform6 +inform6lib).


> Consider that most 'software' today is JavaScript interpreted by the Web Browser.

I thought most software was MS Excel sheets with interacting formulae :-)


And as it happens, early versions of Excel used a bytecode running on a VM instead of native code. Though the motivation was not portability, but rather memory requirements:

> In most cases, p-code can reduce the size of an executable file by about 40 percent. For example, the Windows Project Manager version 1.0 (resource files not included) shrinks from 932K (C/C++ 7.0 with size optimizations turned on) to 556K when p-code is employed.

> Until now, p-code has been a proprietary technology developed by the applications group at Microsoft and used on a variety of internal projects. The retail releases of Microsoft Excel, Word, PowerPoint®, and other applications employ this technology to provide extensive breadth of functionality without consuming inordinate amounts of memory.

http://sandsprite.com/vb-reversing/files/Microsoft%20P-Code%...


> Many (maybe most?) video games seem to have been written in a VM, at least before Doom / high performance 3d graphics.

This was not terribly common, for the obvious performance reasons. Another World ran at around 10-20FPS on most of the systems it was released for, which is fine for a methodical game like that (and for adventure games like Monkey Island, etc.) but doesn't work for fast action games.

And of course VM games were basically impossible for the entire 8-bit era, with the exception of things like Zork (and the rest of Infocom's Z-Machine games) whose performance needs were so small that the gigantic overhead of an 8-bit VM was hardly noticeable.

Even into the 16-bit era, the majority of multi-platform games were fully rewritten ports.


Yes, but you weren't doing things like _Elite_ in these sorts of special-purpose VMs. Aside from the portability issue (extremely important when platforms had the lifespan of mayflies back then as Moore's law blazed along full speed), VMs also got you compression. A full compiled binary might be exorbitantly expensive in disk/tape space, not to mention RAM. But a very small VM could make a custom-tailored language to interpret on the fly, and save a ton of space where you needed to sweat every kilobyte. (Think about the different in size between `print "Hello world!"` and the default compiled binary.) It didn't matter how fast your text adventure ran if it couldn't fit in X kb of space.


During the heyday of assembly language, VMs were common in business software as well. It made porting to different types of systems easier in a time when standards-compliant C-language compilers targeting a variety of systems did not yet exist or were very expensive.


Oh, I know about the emulation layers of early computers! But I'd assume those programs rarely required frame-perfect input unlike video-games. Wouldn't that be too wasteful and needlessly limit the playerbase?

Edit: after reading through wikipedia, I think maybe a VM wouldn't be that wasteful, since the game is very simple mechanically.


Consoles (and arcades) back then had far better graphical performance than computers. So good computer games didn't have frame perfect inputs at all ... Or at least, not good games (bad games like TMNT for PC / DOS did exist but we're horribly buggy and broken)

Computer games had explosive inputs available, like Civilization or needed the use of a mouse.

Not so much action / frame perfect stuff. Not until a bit later anyway. Eventually computers were fast enough for arcade ports but computer games just didn't really target that action niche.

------

The 'computers' with good graphics were like Amiga, not x86 based DOS with mode 13h graphics. So it was all the fallen / failed computers that had the decent action games IIRC.


The trick to these earlier VMs, from the Infocom Z-Machine and Wizardry's interpreted Pascal code, through SCUMM, Sierra AGI and SCI, Another World, the Horrorsoft games, etc., is that they recognized that the games they were making were primarily going to be "content-delivery mechanisms": lots of text and graphical assets, driven by relatively simple computations: the authoring constraint is only related to the hardware in terms of I/O and data compression. So the code that was being run by the interpreter was mostly run-once "initialize the scene" and then some animation timers.

The opposing idea is represented more by arcade gaming, and later, stuff like Doom and Quake: The game is relatively intimate with the hardware in what it simulates, while the kind of definition that makes up a scene is more on the order of "put a monster here and a health pickup there", which aligns it towards being map data, instead of scripted logic.


Depends on what you consider 'full game VM'. Adventure games from Infocom ran all game code on a VM, and so did the graphical adventures from Sierra and LucasArts. The latter two used some native graphics primitives of course.


Scumm is a good example. There was a port for the original DS that ran well enough.

https://wiki.scummvm.org/index.php/Nintendo_DS


Another World is on a whole other level. SCUMM is from '89 and the NDS came out in 2004. Another World game came out in 1991, and because it used the VM it could be back-ported to Apple IIGS (1986), the computer that's 5 years older than the game itself!

The graphics exclusively used real-time rendered polygons with support for transparency, which nobody knew was even possible at the time. Along with researching the new rendering tech, the same person created everything else except the music - the memorable & immersive world, an original story, concept and cover art, strong cinematics that were SoTA at time, graphics and animation, innovative level design, puzzles, the game logic - over just 2 years. It also defined a new 'cinematic platformer' genre, with later titles like Flashback, Blackthorne, Oddworld, and recent LUNARK. It's simply incredible feat.


real-time rendered polygons with support for transparency, which nobody knew was even possible at the time

Aegis Animator was doing pretty much the same sort of rendering on the Amiga, in 1985.

I never did much with it, what with being a kid at the time, but it was fun to play with and looked pretty cool. I don't think its rendering was as tightly optimized as Another World's was, though.


I don't know any more full game examples, but...

Earthbound (SNES, 1994) contains TWO complete scripting systems, one for the dialog system (which is occasionally used for things it shouldn't be; most of shop logic is in it), and one for scripting sprite movement. The dialog script is actually quite impressive and easy to use; I'd consider implementing a similar system even in a modern RPG. The sprite movement script is trash, significantly harder to work with than games that use raw assembly. Apparently that movement script system was actually a common in-house library at HAL, dating back to the NES era, but I don't know too much about that history.

Also most of the game's assembly was actually compiled from C, which was almost unheard of for console games at the time.


Well the idea of a vm wasnt to foreign if my reading of computing history is right. Consider that java launched in 1993 or 94 and its big claim to fame was its portability between systems, and that was because of the jvm, or java virtual machine.

I don’t think virtual machines and emulation are that new of a thing. Virtualizing x86 at full speed on consumer hardware has been a thing for, what, 15 to 20 years? And sure that requires special processor features, but remember that systems that came before that that would need to be emulated had even less computational demands. Iirc, a widely used pos software from the 80s has been running in emulation on pos hardware that far exceeds its requirements for the last 25 years, at least.

Also, my understanding is that lots of crucial government and business software runs on many layers of virtualization.

And my last recollection from what I’ve gathered is that, really until around the mid 90s a lot of operating systems made until then were pretty much hypervisors that ran programs that were virtual machines themselves. Multitasking was simply being able to route hardware resources to a given program, which was sorta its own environment.


Memory was often the constraint on low-end computers "back in the day", so code density was a reason to have a VM. This is why Wozniak shipped a VM in the Apple II's ROM.

https://archive.org/details/byte-magazine-1977-11/page/n147/...


VM already existed since PL/0 which is the prototype of Pascal. It is also known as P-code and to.be honest it is fine. Especially when you can leverage JIT which trades memory space for gains in speed.


If you mean bytecode as executable format, that originates already in the late 1950's, early 1980's, with microcoded CPUs as the interpreter, from which Burroughs Large Systems is one of the most famous ones.


Oh, Burroughs Large Systems. The one Edsger Dijkstra worked on. Can't believe they are the one before IBM to invent microcode.


"older than myself"

#rightinthefeels


"Only Amiga makes it possible" is being replaced by FPGA 30 years later.


> [Transparency] introduces some complexity in the rasterizer. To flip only one bit [of the colour value] we need to know the prior value of the pixel at this location.

This is like one of only three advantages to using planar graphics, like the Amiga did. With bitplanes you don't need to read back video memory: you just assume the top bit is for transparency effects only and blat out your spans.

[The other two advantages are cool moire effects because you can move the planes relative to each other, and memory / bus bandwidth efficiency for awkward colour depths which don't fit nicely into a byte or a nybble, like 8 (3 bits per pixel) or 32 (5 bits per pixel)]


Because of this thread, I finally admitted to myself I was never going to figure this game out and watched a play through on YouTube. 22 minutes! I think I got past the lion once.


Loved this game. Still holds up...


I can't tell if this is just the intro rather than the full game?


The Story of Another World on Amiga, Technical Wizardry

https://youtu.be/0iz9PJbs5rE


This is quite cool project.


Off topic, but I was excited to find out Another World is on Steam... but isn't available to play on macOS 10.15 Catalina or above.

The incompatibility with 32-bit makes me extremely frustrated; it seems as if in 2023, with quantum computing, DL models, and people porting games like this to FPGA, there should be a way to get 32-bit software to run on modern hardware. It's bizarre to me.

Steam specifically recommends not upgrading your mac OS to play these older games.

Is all this software going to become unusable because of this sort of thing?


Yes, yes it will. How many other Amiga games can you run on anything besides an Amiga, real or emulated? What happens when you try to run the 2013 version of anything you still depend on?

There is a ton of stuff that broke when Apple moved to 32-bit and didn't bother making any kind of compatibility layer. Games are probably hit the worst because (a) almost nobody gives a shit about updating a game they finished working on a decade ago, and (b) almost nobody gives a shit about making a game work on the Mac anyway. I've been a Mac user since 2000 and I've been doing the vast majority of my gaming on consoles for all that time. The 2013 remake of Another World's available on my PS4, as well as the PS3, Vita, Wii U, Switch, Xbone, Android, iOS (well, assuming Apple didn't break that too), and more.

Steam says the remake works fine on the Steam Deck I just got, too, thanks to the work they put into their fork of WINE. Old software ends up in virtual machines, one way or another.


There's no business case in making sure those old titles persist and publishers mostly forget about them after initial sales are made. You can play the MS-DOS port in QEMU, so I presume there will eventually be some emulation layer capable of running the HD release.


Only macOS dropped 32bit compat. Join linux my friend


Android is dropping 32bit support.

I can't play planescape: torment on my phone because of this.


Yes, you can. Find a gemrb build for Android, maybe from F-Droid.


Link?

I spent 2h the other day trying to patch the apk to use APIs that would be compatible,and it still wouldn't start


True, I run a vanilla fedora, never touched the driver and buy most games on steam without thinking about compatibility. ( I play low demanding games, but still )


You can run Steam in Crossover Games to get some Windows games on your Mac. And Apple has a new compatibility layer themselves, though it takes finagling for the end user to use.


Play the SNES version emulated - it had the best musical score


Gregory Montoir have reimplemented the VM in C++ here:

https://github.com/cyxx/rawgl

He also did the same for Flashback (REminiscence)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: