8 ms·
New 3D FPS released for 1979 Atari 800
- verifex 5y agoDownload link isn't working, for anyone that is trying to download it.
- legoxx 5y agoIt is working very well for me Verifex. Please try https://atari8.dev/final_assault/Final%20Assault%201.0.zip https://atari8.dev/final_assault/Final%20Assault%201.0.zip
- legoxx 5y agoSlovak group GMG released a full featured FPS for 40+ year old computer (64kb of ram, 1.79Mhz 6502) Features: - raycaster engine running at 25 - 30 FPS - animated textures - lighting system - destroyable walls - automap - 3 enemy types - final boss game is fully playable in Altirra emulator video: https://www.youtube.com/watch?v=lRd3MucaRoU https://www.youtube.com/watch?v=lRd3MucaRoU homepage: https://atari8.dev/final_assault https://atari8.dev/final_assault discussion: https://atariage.com/forums/topic/326709-final-assault-new-game-by-gm https://atariage.com/forums/topic/326709-final-assault-new-g...
- aliswe 5y agothe FPS is really smooth - and the floating point (?!) calculations of the raycasting engine seem to be totally "on point" ?!?!
- flatiron 5y agoComment a bit of a limitation of the ray casting: https://atariage.com/forums/topic/326709-final-assault-new-game-by-gmg/?do=findComment&comment=4937575 https://atariage.com/forums/topic/326709-final-assault-new-g... simply amazing what they did. could you imagine if this came out in the 80s?!?!
- GekkePrutser 5y agoYes this would have been mind-blowing. Ps there was a game that had a similar FPS view in those days. It was a maze game with polygon graphics but no textures. I forget the name. No shooting though!
- laumars 5y agoThere were a few. I had Sultans Maze[1][2] and Articfox but plenty others existed too. [1] https://en.m.wikipedia.org/wiki/Sultan's_Maze https://en.m.wikipedia.org/wiki/Sultan's_Maze [2] https://youtu.be/af1CfayG5Ec https://youtu.be/af1CfayG5Ec [3] https://en.m.wikipedia.org/wiki/Arcticfox https://en.m.wikipedia.org/wiki/Arcticfox
- Thoreandan 5y ago* Mercenary: Escape from Targ (Novagen) http://mercenarysite.free.fr/mercframes_graphic.htm http://mercenarysite.free.fr/mercframes_graphic.htm "open world" vector FPS/RPG, fully RAM-resident, in 48k & 64k editions. * Alternate Reality: The City (Datasoft/Paradise Programming) FRPG with 90-degree turns, rendered walls/doors as scaled textures between the animated backdrop and foreground NPC sprites. I wrote an FAQ as a kid for Mercenary for local BBS' - I think I discovered at least 3 victory conditions. :^)
- legohead 5y agoI could tell something was off, but couldn't put my finger on it. Very cool
- mywittyname 5y agoSo I was curious about how the Atari 800 handled floating point calculations. As it turns out, Steve Wozniak helped develop the FP routines for the 6502. http://archive.6502.org/publications/dr_dobbs_journal_selected_articles/floating_point_routines_for_the_6502.pdf http://archive.6502.org/publications/dr_dobbs_journal_select...
- brianpaul 5y agoIIRC, the Atari ROM routines used a different 6-byte BCD floating point format.
- legoxx 5y agoI can assure you that no BCD routines (nor Woz's nor Atari's) were hurt during production of this game. They are really slow. You need to use all kind of tricks and cheats when creating 3d game on 8bit machine and all needed calculations are precalculated in lookup tables.
- codedokode 5y agoI doubt there are any floating point numbers because FP is very slow to emulate (for example, just to add two numbers you have to shift mantissas and 6502 has no fast way to do it). If I was writing a game for an 8-bit CPU, I would use fixed point numbers (for example, 8.8 numbers which use 8 bits for integral part and 8 bits for the fractional part, or maybe 10.6, or 12.4 numbers). 6502 cannot multiply or divide (division is a costly operation even on modern CPUs) so I would use adding or subtracting logarithms for this purpose. 12-bit precision logarithm table requires just 8 Kb RAM (and you can get 13-bit precision with interpolation). The disadvantage of this approach is that every time you convert a number from linear to logarithm or vice versa you get approximately up to 0.3% error (for 12-bit logarithm). So multiplying or dividing several numbers in a row is fine, but if you have to alternate multiplication with additions you will accumulate an error. So I would look for formulas that avoid this. But for a game a little error in calculations is not noticeable. Also one might think that the most time-consuming part for pseudo-3D game is math and calculations. I doubt that. The most of CPU cycles are usually spent in rasterisation and applying textures. Is is easy to calculate positions of 3 vertices of a triangle, but it takes a lot of time to draw it line by line, pixel by pixel, and if you want to have textures this time can be multiplied 5x-10x.
- rasz 5y ago- 80x30 resolution - mostly 8 colors Its impressive, but unplayable.
- wombat-man 5y agoHere's a video: https://www.youtube.com/watch?v=92K9wnk_4Cw https://www.youtube.com/watch?v=92K9wnk_4Cw Pretty interesting but it's a little hard to make out what's going on sometimes.
- laurent123456 5y agoIf you reduce the window to a very small size (or look at your monitor from a few meters away) then it's actually easier to see what's going on.
- buescher 5y agoI wonder how it would look on a CRT TV over RF.
- memco 5y agoIt's a bit unclear what's demoing visuals vs. gameplay. It seemed often that when the player reaches a corner, instead of turning the corner and continuing down the corridor the player would sometimes turn into the corner and wiggle. I wonder is there something about corners that's a bit janky or is that just a habit of this particular user that they sometimes just turn left and right randomly particularly in corners?
- VeninVidiaVicii 5y agoIt's difficult for me to tell if the player is looking at a wall or a hallway...
- VeninVidiaVicii 5y agoMaybe it’s a wallway
- kingcharles 5y agoThank you. I can't help but feel the wall textures have screwed the whole thing. It might be that they've tried to just be too clever with this and a less complex solution (flat shading, gouraud shading) would have worked better.
- chaganated 5y agoi'm not surprised. atari 800 was an exceptional machine. great work on the game though.
- jhbadger 5y agoYes, it had a lot of custom chips, and some of the same people (like Jay Miner) who worked on the Atari 800 design later were involved in designing the Amiga which likewise was based on custom chips.
- legoxx 5y agothere were 3 custom chips (ANTIC, GTIA and POKEY) 1 semi-custom (SALLY was a VERY MINOR modification of 6502) and 1 common industry chip (PIA). I would not say exactlly "lot of" ;-)
- jhbadger 5y agoWell, relatively speaking that was a lot for late 1970s microcomputers. The original Apple ][ and TRS-80 Model I were essentially built from off the shelf chips (which is why both got off-brand clones).
- mysterydip 5y agoI was expecting a very basic raycaster, no textures etc. This is seriously impressive!
- lizknope 5y agoI had an Atari 800 in the early 1980s. The games were close to the arcade version and with the BASIC cartridge we could write programs and save them to a cassette tape drive or floppy. https://en.wikipedia.org/wiki/Atari_8-bit_family https://en.wikipedia.org/wiki/Atari_8-bit_family Jay Miner was one of the main developers who later went on to be the "father of the Amiga" https://en.wikipedia.org/wiki/Jay_Miner https://en.wikipedia.org/wiki/Jay_Miner
- r00fus 5y agoWas so jealous of my friends that had an Atari 400 even, the 800 was legendary.
- spicybright 5y agoI have so much respect for people that take on challenges like this. It might be "useless" in a utilitarian sense, but I think of it as an incredible art form.
- buescher 5y agoTo be pedantic, it needs a 64K machine like the 1982 1200Xl or 1983 800XL so would not run on the (max w/o 3rd party mods) 48K Atari 800 from 1979. But yes, wow!
- michaelcampbell 5y agoIIRC (and I may not), I upgraded my 400 to 64k, and a "real" keyboard. But I think you could only address 48k of it at once or something hinky.
- buescher 5y agoYeah, you had ROM space (and potentially cartridge ROM space) eating into your 64K on all the models and had to bank-switch for anything more than 48K IIRC. With a BASIC cartridge in place you'd lose another 8K. Also I don't recall any of the 400/800 3rd party upgrades being compatible - they used a different bank-switching mechanism - with the later XL/XE models.
- michaelcampbell 5y ago"bank switching" sounds familiar, so I'm pretty sure my memory of 64k is correct then. I can't say I understand what it means, but I remember something of that term at the time.
- bluGill 5y agoYou group your memory into groups of 16k (could be other sizes, 16k is what I recall but it has been years). Then you have a switch that you can program the switches between groups (also called banks). You can only access one at a time, but you can switch between them very fast. It was possible to get up to 5 MB of memory that way, even though you could only use 64K at a time.
- protomyth 5y agoWhere did you get a real keyboard for the 400. I searched and searched and could not find one. I was so envious of the Timex / Sinclair folks who had a nice replacement.
- Minor49er 5y agoThe theme song linked at the bottom reminds me a lot of the System Shock 1 theme song https://www.youtube.com/watch?v=uZRuDOqIIBA https://www.youtube.com/watch?v=uZRuDOqIIBA
- pixelpoet 5y agoHaving written realtime ray tracers in the classic demoscene style on e.g. 300 MHz Pentium 2 Celeron (the original one with no cache, that overclocked to 450-550 MHz), I sometimes wonder about how cool it would be to open source a modern rendering engine around the time of the first Pentium 3 with SSE, in 1999. You could completely revolutionise computer graphics on that era of hardware, with the view to increasing vectorisation, and probably strongly steer it towards ray tracing instead of rasterisation (even skipping over the local minimum of k-D tree methods, the introduction of Surface Area Heuristic and eventually settling on modern BVH building and traversal).
- tdeck 5y agoIs there somewhere I can read more about the history of these different techniques?
- romwell 5y agoFirst time reading about BVH. Sounds like Kirkpatrick's hierarchy, but in arbitrary dimension. What's the advantage over BSP/kD-trees/octrees? And what do you mean by rasterization - we still have to deal with pixels in the end, so it has to happen somewhere? (..I'd love to play with a color vector monitor though!).
- pixelpoet 5y ago> What's the advantage over BSP/kD-trees/octrees? With BVH, the partitioning is fundamentally over lists of objects rather than space; if you split by space, you can/will have objects on both sides of the splitting plane, leading to duplicate references. Doing it by lists means there are no duplicate references, however the combined bounding volumes can overlap, which is to be minimised, subject to the Surface Area Heuristic cost. It winds up being something like a quicksort, although for the highest quality acceleration structures you also want to do spatial clipping... this is an extremely deep field, and several people have spent considerable part of their professional career to it, for example the amazing Intel Embree guys :) It also happens to work out best for GPU traversal algorithms, which was investigated by software simulation quite a few years ago by the now-legendary Finnish Nvidia team, and together with improvements on parallel BVH building methods and further refinements is basically what today's RTX technology is. (As far as I'm reading from the literature over the years.) Here's a fundamental paper to get started: https://research.nvidia.com/publication/understanding-efficiency-ray-traversal-gpus https://research.nvidia.com/publication/understanding-effici... (Note that these are the same Finnish geniuses behind so many things... Umbra PVS, modern alias-free GAN methods, stochastic sampling techniques, ...)
- varelse 5y ago1982 is calling but expects to be connected to some HN pedant "helpfully" pointing out that you can't actually shoot stuff. https://youtu.be/j4OLnrwLcJA https://youtu.be/j4OLnrwLcJA
- kingcharles 5y agoThat's incredible. Was this the earliest instance of raycasting in the wild? Good intro to raycasting for those interested: https://lodev.org/cgtutor/raycasting.html https://lodev.org/cgtutor/raycasting.html
- varelse 5y agoI think it is. But... But PLATO Moria might be the OG of 3D in this space. https://en.wikipedia.org/wiki/Moria_(1978_video_game) https://en.wikipedia.org/wiki/Moria_(1978_video_game)
- col_sanders 5y agoNeither Wayout nor Capture the flag, it's older prettier brother uses raycasting. Sources are out and there's some more info in AtariAge forums where some maniacs ripped it apart and even made it faster using more current tricks. https://atariage.com/forums/topic/320414-smooth-3d-movement-like-wayout/page/2/?tab=comments#comment-4829537 https://atariage.com/forums/topic/320414-smooth-3d-movement-...
- buescher 5y agoThe Lucasfilm games ('84-'85) blew my mind at the time. Fractalus, Ballblazer, Koronis, Eidolon.
- varelse 5y agoHot take: The Eidolon is more impressive than this effort and it works with the technological limitations of the platform rather than against it like this does. All those LucasArts games were stunning for the time and Rescue At Fractalus has a genuinely terrifying experience within it not replicated IMO until the first time you hear "Anytime..." in Alien vs Predator...
- atum47 5y agoI tried to write a raycast [1] in JavaScript once, I used lines instead of the traditional grid, but it end up messy and with weird texture artifacts. Still, I would like one day to come back to this and do a proper job. I'll download the game after work and see if I can run it under an emulator, but the graphics and music alone seems wonderful. 1 - https://github.com/victorqribeiro/myRaycast https://github.com/victorqribeiro/myRaycast
- GekkePrutser 5y agoWow this looks amazing. Will give it a try on my real 800XL.
- ciroduran 5y agoI love that the credits mention the raycast tutorial by Permadi https://permadi.com/1996/05/ray-casting-tutorial-table-of-contents/ https://permadi.com/1996/05/ray-casting-tutorial-table-of-co... I used this tutorial in the 2000's to write a raycaster myself in C using Allegro. It's wonderful that these tutorial are still useful so many years after they've been written.
- joshspankit 5y agoIf this had been released when the 800 was new, it would have blown people’s minds.
- greggman3 5y agoThis isn't a complaint, it's a suggestion. Would be cool if I could just run it in my browser like https://www.2600online.com/ https://www.2600online.com/
- makach 5y agoWell, that was akward. Silly me clicking the screenshot thumbnails expecting a higher resolution picture to pop up.