[HN Gopher] Another World ported to FPGA
___________________________________________________________________
Another World ported to FPGA
Author : retro_guy
Score : 219 points
Date : 2023-07-15 16:23 UTC (6 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| burglins wrote:
| 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?
| dragontamer wrote:
| 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.
| einpoklum wrote:
| > Consider that most 'software' today is JavaScript
| interpreted by the Web Browser.
|
| I thought most software was MS Excel sheets with interacting
| formulae :-)
| pdw wrote:
| 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(r), 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%...
| PaulHoule wrote:
| The Infocom text adventures (e.g. Zork) were based on a VM
|
| https://en.wikipedia.org/wiki/Z-machine
| anthk wrote:
| Which is stll working with libre implementations (frotz)
| and OOP based compilers targeting the Z-machine (inform6
| +inform6lib).
| stevefan1999 wrote:
| 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.
| pjmlp wrote:
| 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.
| ashleyn wrote:
| 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.
| burglins wrote:
| 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.
| dragontamer wrote:
| 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.
| gwern wrote:
| 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.
| syntheweave wrote:
| 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.
| thepawn1 wrote:
| "older than myself"
|
| #rightinthefeels
| bzzzt wrote:
| 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.
| joshvm wrote:
| 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
| jmiskovic wrote:
| 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.
| egypturnash wrote:
| _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.
| andrewf wrote:
| 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/...
| derbOac wrote:
| 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?
| bdhcuidbebe wrote:
| Only macOS dropped 32bit compat. Join linux my friend
| VHRanger wrote:
| Android is dropping 32bit support.
|
| I can't play planescape: torment on my phone because of this.
| anthk wrote:
| Yes, you can. Find a gemrb build for Android, maybe from
| F-Droid.
| dopidopHN wrote:
| 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 )
| egypturnash wrote:
| 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.
| lightedman wrote:
| Play the SNES version emulated - it had the best musical score
| striking wrote:
| 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.
| bzzzt wrote:
| 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.
| retro_guy wrote:
| 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
| thepawn1 wrote:
| Loved this game. Still holds up...
| pengaru wrote:
| 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.
| pbj1968 wrote:
| 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.
| [deleted]
| erickhill wrote:
| "Only Amiga makes it possible" is being replaced by FPGA 30 years
| later.
| nickelpro wrote:
| 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.
| 29athrowaway wrote:
| 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.
| guiambros wrote:
| > _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_af wrote:
| 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?
| 29athrowaway wrote:
| I also didn't finish it.
|
| The game is hard and requires more patience than usual to
| figure it out.
| crtasm wrote:
| and not just the intro but the entire game fit on a single
| floppy disk, blew my mind.
| ChainOfFools wrote:
| 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
| the_af wrote:
| 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 ;)
| jakemauer wrote:
| Mykaruba!
| dougmwne wrote:
| 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.
| Xenoamorphous wrote:
| > 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.
| msephton wrote:
| I can't tell if this is just the intro rather than the full game?
| tombert wrote:
| 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.
| slim wrote:
| Flashback has a sequel : Fade to black
| efnx wrote:
| 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.
| theragra wrote:
| I liked flashback so much, I tried to complete it on expert.
| Stuck somewhere closer to the end, though, cannot defeat slime
| man
___________________________________________________________________
(page generated 2023-07-15 23:00 UTC)