[HN Gopher] The Polygons of Another World ___________________________________________________________________ The Polygons of Another World Author : ibobev Score : 372 points Date : 2020-01-02 17:40 UTC (5 hours ago) (HTM) web link (fabiensanglard.net) (TXT) w3m dump (fabiensanglard.net) | bluedino wrote: | The SNES was the platform I played "Out of this World" on. | | The interesting thing about it was, it was a polygon game that | ran without using the SuprFX chip. | | With the SNES being sprite-based I could never figure that out. | nsxwolf wrote: | I've always wondered, did Nintendo demand that all games have | continuously running soundtracks? I remember playing this game | and Prince of Persia on the SNES and being really put off by | these soundtracks someone shoehorned in. | garaetjjte wrote: | Funny trivia about this: | | >[...] They also wanted to replace all the music made by | Jean-Francois. I had yielded for the extra songs, but I | wanted to keep the music of the introduction, as it perfecly | matched the atmosphere and the animation timing. This became | a real struggle [...] So I took drastic measures. I thought | of creating an endless fax. A huge fax of a meter long in | which I wrote in big letters "keep the original intro music". | I would insert it in the fax, enter the number, and when the | transmission started, I would tape both ends of the letter | together, which would create a circle that went on and on | until there was no paper left in the offices of Interplay, at | the other end. | | http://www.anotherworld.fr/anotherworld_uk/another_world.htm | egypturnash wrote: | The article has a link to a video of the author of the SNES | port talking about it. | https://www.youtube.com/watch?v=tiq0OL8rzso | AndrewStephens wrote: | Another World was _astounding_ when it came out. Although the | Amiga was considered a high spec machine at the time, its | graphics hardware was oriented around scrolling, sprites, and | rectangular blits. This is good for the typical platformers and | shoot-em-ups that dominated gaming at the time but useless for | the type of full motion video the AW was attempting. | | The Amiga's blitter could write almost 4Mbs per second (if you | set things up juuuust right and you had the wind behind you). On | a modern monitor (a modest 1920 * 1080) the Amiga's blitter would | take almost 2 seconds just to clear the screen. | the_af wrote: | It was astounding back then and in my mind still is a work of | art. Like Fabien says, its limited palette actually worked in | its favor. The evocative graphics still remain some of my | favorites, ever. | | It's one of my most replayed games ever. Even when I know the | plot and there are no surprises, this game manages every time | to take me to... (cue music) ANOTHER WORLD. | meerita wrote: | I played this game in the PC, back then. It was one of those | games I've consireded like "top game" for D.O.S. What a nostalgia | bump I've got. | tetris11 wrote: | I played this for the first time on the Nokia N900 (armv7-a). I | thought it pretty, but unplayable. Had no idea of the porting | history until this article. | yantrams wrote: | It's available on Nintendo Switch for those who are interested in | trying it out. | rasz wrote: | Traditionally some corrections for the author: | | >The Amiga 1000 could not boot by themselves, they had no ROM. | The bootloader was on a floppy and you better not lose or damage | it! | | Amiga 1000 has bootloader (Kickstart loader) in ROM, chips U5N | and U5P - two 256Kbit EPROMs/mask ROMs, 64KB in total. What it | didnt have was firmware(Kickstart, like PC bios) or | system(Workbench, like PC DOS/Windows) in ROM. You can see chips | containing A1000 bootloader on the motherboard picture, its the | two with stickers, right below two 8250 CIA chips | https://www.bigbookofamigahardware.com/bboah/media/download_... | | You __cant __boot(load) without a bootloader. Trivia: Back in the | day Bill Gates held a record of writing the shortest bootloader | for Altair 8800, computer with nothing but LEDs for output and | switches for input. You had to input said bootloader every single | time you wanted to load something (like BASIC) from tape. | 'Computer Notes Volume 1, Issue 6, 1975' Page Twenty-One, Author | Bill Gates: "I've written a bootloader that only takes 13 bytes | of keyed-in data, but anything smaller than 20 bytes isn't easy | to use.". He was finally beat by one byte in 2017 | http://just8bits.blogspot.com/2017/03/doing-it-in-less-than-... | | >It was Commodore best selling product with an estimated 6 | millions units shipped from 1987 to 1991 | | other than you know, C64 ;-) and thats not counting other | products like Datasette Commodore 1530, shipped with every VIC-20 | and C64. | | >amiga_arch.svg | | Chip RAM is not directly connected to CPU, its gated behind AGNUS | https://www.pmsoft.nl/amiga/A500-block-diagram.jpg DBR signal is | what switches CPU data bus access. | Flow wrote: | A few games used the RAM intended for the Kickstart on A1000. | The same game on A500 needed 1MB RAM. | fabiensanglard wrote: | Thanks for these clarification, I will update the article and | drawings tonight. | gpderetta wrote: | > firmware(Kickstart, like PC bios) | | My understanding is that Kickstart contained both Exec (the | kernel) and Intuition (the windowing GUI library), so it was | more than a BIOS. | the_af wrote: | Since you seem knowledgeable, and this seems surprisingly hard | to google, do you know why it was named "Amiga"? I know the | codename was "Lorraine" and, because I'm a native Spanish | speaker, I know "amiga" means "female friend", but why was this | name chosen? Did they simply pick a random name, and if so, why | Spanish? | coldtea wrote: | The team that designed (which Commodore later bought) was | called Amiga Corporation. | | They were initially called Toro, but there was another | company with that name. | | As for the choice - they just wanted a nice friendly name, | and Amiga was that, being simultaneously a nice sounding | foreign word (for the English speakers) by with the known | friendly Spanish connotation to many. | cbm-vic-20 wrote: | > Datasette Commodore 1530, shipped with every VIC-20 | | The Datasette did _not_ ship with every VIC-20. There were | plenty of non-Commodore datasette clones on the market, | however. | bbmario wrote: | Fabien's blog is a pot of gold. I love this "archeological" | approach to programming. He also makes the articles feel like | documentaries. It's just unique. | m3kw9 wrote: | Awesome read | stephc_int13 wrote: | Using a custom VM was certainly a clever and efficient at the | time. LucasArt used the same trick for a lot of point and click | games. | | I don't think this idea would scale well for much bigger | projects, as debugging internal scripts can quickly become a | bottleneck. | klodolph wrote: | Well, the technique has been used in newer projects as well. | Quake and Quake 3 both had VMs that ran the game logic. | | Tooling is a perennial problem with extension systems, but it's | really damned if you do, damned if you don't. If you're not | using an extension system, then you're probably writing the | game logic and the engine as one giant mass of C++ code. | Writing tons of game logic in C++ will get you in trouble for | lots of reasons. Writing an interface between your C++ core and | some kind of scripting system will get you in trouble for | completely different reasons. | | Tim Sweeney did a presentation about the programming | environment needs of different parts of games back in 2005, | still worth reading: https://www.st.cs.uni- | saarland.de/edu/seminare/2005/advanced... | csande17 wrote: | Another example of custom VMs from that era is Infocom's | Z-machine, used for text adventure games. | | The strategy of using a bytecode VM to ship cross-platform | games seems to have been pretty popular back then, which is a | little surprising to me -- I thought Java came up with that | idea first! | gowld wrote: | The first computer language in history was bytecode language | for a VM. | | https://en.wikipedia.org/wiki/Short_Code_(computer_language) | jonny_eh wrote: | I guess Java's "innovation" with VMs was requiring the user | to download it separately from the programs it runs. | pkaye wrote: | Its older than that. There was the p-code machine used for | Pascal. https://en.wikipedia.org/wiki/P-code_machine | ncmncm wrote: | This is truly amazing. | keithnoizu wrote: | I was just eyeing the game on my steam library early in the day. | Fantastic title, shame he went on to produce so few follow ups. | jonny_eh wrote: | Eric is clearly a genius, I assume he hit a sophomore slump. | He's only made a couple games since, many years later. | AdmiralAsshat wrote: | Even with just one major game to his name, its legacy lives | on. Another World set the template for the "cinematic | videogame" and even today you can see the influence of its | cutscenes and minimalist gameplay on games like Ico/Shadow of | the Colossus and a plethora of modern indie games. It | accomplishes with wordless dialog what Hideo Kojima tries to | do with 20 hours of overwrought monologues. | tekstar wrote: | If you haven't played this game I strongly recommend it. It's on | GOG. It's on old emulators too but the graphics and input | handling can be pretty rough and unforgiving. | derefr wrote: | Given that it's apparently a bytecode executable for a VM, is | there a modern implementation of said VM? Maybe even one that | translates the draw ops into Vulkan commands? Seems like a fun | project. | ricardobeat wrote: | It's also on Steam now! | facorreia wrote: | I second this. Another world was a fantastic, innovative game. | | Also look for Another World - 20th Anniversary Edition. | flanbiscuit wrote: | Didn't realize they released an updated version. Just found | this graphics comparison[1]. Looks like they mostly just | smoothed out the lines. | | 1. https://www.youtube.com/watch?v=b86QXaOdgX8 | lloeki wrote: | IIRC the 20th anniversary version has backgrounds entirely | redrawn and pre rendered as bitmap, they're not poly | anymore. The animated stuff is the original polys rendered | as always, only at much higher resolution than the original | 320x200. Sadly they lack detail, see notably at 2:26 in the | comparison video. Also at 2:47 you can see perspective has | been corrected, but the overall result is less consistent | (left wall vs five spoke machine). I very much prefer the | original one overall, the reduced detail and | inconsistencies in art of the new one just takes away the | immersion. | stuart78 wrote: | What I found funny about watching that is that the 2014 | version is exactly how I remembered the 1991 version. | Memory smoothed it all out I suppose. | exlurker wrote: | The magic of CRT :) | DHPersonal wrote: | It's available on iOS, too: | https://apps.apple.com/us/app/another-world-20th/id460076328 | artur_makly wrote: | who remembers... Bard's Tale?? | https://en.wikipedia.org/wiki/The_Bard%27s_Tale_(1985_video_... | luismedel wrote: | Amazing, as everything in Fabien's site. | | I rushed, hoping to find some oldskool tricks and remember my | time spent reading Denthor's VGA Trainer[0]. | | It seems I'll have to wait some more chapters for that, though. | :-) | | [0] http://textfiles.com/programming/astrainer.txt | [deleted] | newnewpdro wrote: | Another World's original author Eric Chahi gave a great GDC | "Classic Game Postmortem" talk about creating the game: | | https://www.youtube.com/watch?v=JFaOYYSxSEA | lilSebastian wrote: | Third time this has been posted in 17 hours: | | https://news.ycombinator.com/item?id=21931895 | carapace wrote: | Tell the mods: hn@ycombinator.com | tombert wrote: | I was one of the few kids who got a 3DO (yes really), and I had a | copy of Another World for it, after already having played it on | the Genesis, and I was a bit underwhelmed, since moving to | comparatively more-powerful hardware didn't make the game look a | million times better. | | After a bit, though, I realized it wasn't that the 3DO version | was underwhelming, but instead that the Genesis version was | _amazing_. It already felt like a next-gen game, and so the | upgrade to the 3DO didn 't make a huge change. | | In the end, it has become one of my favorite games. I love the | art, the style, the cutscenes, and even though it's incredibly | short, I love the story. | | I never played Heart of the Alien, because I never had a Sega CD, | but I'd like to play it at some point on an emulator. | jacobush wrote: | "The 3DO version of Out of This World is quite different from | the other versions in terms of graphics and sound. The polygon | backgrounds have been replaced by hand-drawn versions, the | quality of which varies from stunning to amateurish." | | https://www.mobygames.com/game/out-of-this-world | quincunx wrote: | Love this, love the write up.. but on the amiga... | | the A500 had 6 bitplanes, not 5, also, with PAL being the most | popular region, I'd say 320x256 was the more popular resolution | over 320x200. 6 bitplanes are used for Hold and Modify (HAM mode, | where 2 bits select Red, Green, Blue or Palette, and the | remaining 4 bits indicate either R G or B values, or the index of | the color.) The other 6 bitplane mode is "Halfbrite" which | doubles the palette size for a total of 64 colors, where the | second half 32 colors are half the intensity of the first half. | When running with 6 bitplanes, agnus (the memory controller if | you will) steals a lot of cycles for Denise (the display chip) | from both the 68K and the blitter. The blitter being crucial for | drawing filled polygons. | | The second thing that made the Amiga revolutionary (and one could | argue, for this reason, that the PCI architecture of Hombre/AAA | is not a true Amiga no matter Commodore's demise) - the second | thing is the way that Agnus orchestrates memory access much like | the microcode inside a CPU orchestrates registers and ALUs. In | particular, Agnus controls the memory address lines and chip- | register-address lines; the chip-register-address and the memory | address lines are opened up simultaneously against eachother with | one reading and the other writing. So, for instance, when reading | bitplans, agnus opens the chip bus using one of the register | addresses 0x110-0x11A for BPL1DAT to BPL6DAT depending on which | of the 6 bitplanes is being read; while at the same time driving | the appropriate memory address by putting the contents of agnus | registers 0x0E0-0x0F6 for BPL1PTL/H to BPL6PTL/H on the address | bus of the "chip memory" DRAMs. The datalines of the DRAM and the | special chips (Denise here) directly open on eachother (eg. DRAM | and Paula chip-selected at the same time.) | | I'm not sure if I did it justice and got the elegance of this | architecture across in this short post. I'm sure many enthusiasts | like me who got their start on the Amiga programming 68K continue | to discover new things about this machine. | | Good times, warm memories. | fabiensanglard wrote: | Thanks for the correction. I will update the drawings asap. | | Since you seem to know the machine well, maybe you can shed | some light on something i was unable to clarify: What is the | fastest way to clear a framebuffer to a desired color on an | Amiga. My hypethesis is that it was done with the Blitter, by | disabling all DMA entries "doing something else". Do you have | any idea? | quincunx wrote: | To set the framebuffer to a single color, consider that there | are actually up to 6 "framebuffers" (one for each bitplane.) | Consequently, it is to either set all bits for a given | bitplane to 1 or to set them all to 0. To control the actual | word that is blitted without DMA, you would use BLTADAT, | BLTBDAT or BLTCDAT registers to control the corresponding | blitter input word with DMA disabled (so the blitter does not | write into these registers itself.) | | A common technique to avoid having to blit each bitplane | independently (esp. for BOB sprites where the blits are small | and plentiful) is to interleave the bitplanes by row using | the BPL1MOD and BPL2MOD register values; these values are | added to each bitplane pointer address at the end of each row | to move the pointer to the start of the next row; | consequently a single blit operation can capture all | bitplanes as in memory a row can consist of all row bits | belonging to bitplane 0, all row bits belonging to bitplane | 1, all row bits belonging to bitplane 2 and so on. | | If this is the bitplane layout used then a single blit can | only set the values to 0 or 15 (all 0's or all 1's for 4 | bitplanes enabled); note however that the blitter too has | modulo registers (BLTA/B/CMOD for each input and BLTDMOD for | the destination) so perhaps best examine how fancy the | programmer got with it (eg. multiple blits to clear the | screen to a specific color even if the bitplanes are | interleaved using BLTDMOD.) | | Obviously I'm a bit rusty given it's been a few years, but I | hope this helps. I'm a fan of your work, thank you. | fabiensanglard wrote: | Thank you so much, I am going to amend the "fill" section. | Are you ok with being credited as "quincunx" or you prefer | something else? | quincunx wrote: | That's very kind, quincunx is fine, or no credit is fine | too. Glad I could be of help. | fabiensanglard wrote: | I had no idea about the BPL1MOD and BPL2MOD. Now that i | know they exist I don't see why a game developer would not | use them. | | I will try to double check with Eric Chahi but this is so | much more efficient that it has to be the way he drew | polygons (instead of drawing into a scrap buffer and | blitting four times, he used BPL*MOD to draw and blit only | once). | [deleted] | agumonkey wrote: | so fun to see both of you discuss in depth like old magicians | jacobush wrote: | Half-brite was not in the Amiga 1000 and early Amiga 500 and | 2000. The later "ECS" chipset has included "halfbrite". Most | games did not take advantage. | egypturnash wrote: | Do you know of any games that used halfbrite? I can't think | of a single game that did. | | I think there were like three games that used HAM mode, if | you filter out "displaying a scan of the box art while the | rest of the game loads". Knights of the Crystallon, Pioneer | Plague, and maybe Mindscape? | jacobush wrote: | At least Pinball Dreams did and googling suggests Cannon | Fodder. I suppose a few more must be in there. | | Edit: https://retrocomputing.stackexchange.com/a/196/4616 | | Also The Settlers | | Black Crypt - http://hol.abime.net/126 Links - | http://hol.abime.net/892 Universe - https://en.wikipedia. | org/wiki/Universe_%281994_video_game%29 | vidarh wrote: | To maximize performance you'd tend to _combine_ the blitter | with a M68k loop, typically using MOVEM to maximize the | number of bytes copied per instruction. | | The reason for this is that the blitter _can not_ utilize | every single memory cycle. | | So if you want to maximize graphics throughput you'll need to | carefully balance the work between the blitter and CPU | depending on which CPU. | jonny_eh wrote: | Targetting 320x256 makes it harder to port to 320x200. | Meanwhile, porting 320x200 to 320x256 is easy, just add a small | letterbox. | asmosoinio wrote: | I always thought 256 vs 200 was a PAL vs NTSC thing? Is that | wrong? | egypturnash wrote: | It certainly was on the Amiga. | jonny_eh wrote: | Ya, depends on the system. For example, the NES is 320x224 | (NTSC) and 320x240 (PAL). | | I can't speak to why they differ exactly though. | jacobush wrote: | The number of lines per second is constant, but you get | 50 frames per second on PAL and 60 frames per second on | NTSC. | CobrastanJorji wrote: | I just want to let you know that I appreciate someone showing | up in threads like this who have such solid knowledge of things | like the details of the Amiga Halfbrite mode. | zozbot234 wrote: | And only a few years afterwards, the Acorn Archimedes (launched | in 1987!) would achieve comparable or better (especially in 3D) | graphics and sound via pure CPU power, with little or no custom | hardware. Cool stuff, but it was essentially a dead end | architecturally. Even if Commodore hadn't screwed up to the | extent it did, that whole generation of machines was tied to | the 68k series, and would have died with it anyway. (Even Apple | could not save the 68k, they jumped ship to POWER instead.) | D_Guidi wrote: | amazing stuff, give a try also to the video from the snes | conversion programmer | [deleted] ___________________________________________________________________ (page generated 2020-01-02 23:00 UTC)