Revs: How Geoff Crammond squeezed a Formula 3 sim racer into just 32KB on the BBC Micro

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ต.ค. 2024

ความคิดเห็น • 66

  • @oortcloud210
    @oortcloud210 ปีที่แล้ว +21

    My Dad bought a BBC Micro to play chess on, then decided the chess program wasn't good enough for him so the BBC got cast aside. I suggested it should go in my room as he wasn't using it and he (to my surprise!) agreed. So 12 year old me got a BEEB, with twin disk drives and a colour monitor :)
    Me and my brother (who were both racing fanatics) then spent hours playing Revs (and Elite obviously) and absolutely loved it. It was an incredible game. Geoff Crammond was a genius! I taught myself assembly language on that machine as I wanted to write my own games and have had a great career in software development all thanks to a cast off!

  • @jameswestgate416
    @jameswestgate416 5 หลายเดือนก่อน +2

    This was such a special game because it felt so fluid, especially with my analog joystick. I didn’t find another racing game that felt so accurate and so enjoyable for many years

  • @LurgsHowToGuides
    @LurgsHowToGuides 4 หลายเดือนก่อน +4

    What it all comes down to is that Geoff Crammond is a genius. I spent so many years playing on Revs on the C64 and it was just so good. Then Formula One Grand Prix on the Amiga. Just amazing. Great video, cheers. When you see these modern Laptops and PC's with 16GB memory and Windows uses it all up so easily, probably lazy programming coz memory is so cheap an easy now.

  • @theadamtron
    @theadamtron 5 หลายเดือนก่อน +1

    Revs really needs another look. The realism they put into that game was astounding. Truly the gran turismo of us day.

  • @AndrewWilsonStooshie
    @AndrewWilsonStooshie 6 หลายเดือนก่อน +3

    I went to a comprehensive and we had BBCs at school and my parents managed to get a second hand one at home where I learned to program.

  • @misterchippie
    @misterchippie 8 หลายเดือนก่อน +3

    Revs was amazing. On the C64 you could use Atari paddle controller for steering. I blu-tacked a frisbee to one to make a rudimentary steering wheel, and put my Quickshot 2 turbo on the floor so I could push it forward with my foot to accelerate. Mad times, when I see the controllers we have at our disposal these days!

    • @TimberwolfK
      @TimberwolfK  8 หลายเดือนก่อน +1

      Ah, the good old days of hacking together controllers. I remember moving the gear shift on my Thrustmaster T2 to the "correct" side for the UK and putting an old Ford Cortina gear knob on it. Always toyed with the idea of connecting up a Granada steering wheel I had lying around through some sort of gear system to get more turns lock to lock, but never worked out the engineering!

  • @hjalfi
    @hjalfi ปีที่แล้ว +4

    I believe that the lower sky segment is also resizable. When going up hill, your visualisation shows blue sky in the upper track segment even though the upper track segment doesn't allow blue. You can occasionally see red flickering as the sky moves here, showing slight timing glitches as it switches from drawing blue sky to drawing red track markers. What's cool is that it also allows the sky to go behind the top of the dashboard --- it's a really tiny detail that dramatically increases immersion.

  • @Paul-yh8km
    @Paul-yh8km 6 หลายเดือนก่อน +1

    Packing machine code into small spaces was absolutely common place in the 1980s, especially early 80s.
    I worked as a software engineer on 8 bit microcontrollers and often we were limited to 4k. We would squeeze the code for a weighing machine or a printer into that, including the fonts (for the printers).
    I remember modifying a colleagues programme where to save a few bytes he had made a jump into the middle of a 3 or 4 byte instruction.
    The byte at the location just happened to be the right byte to represent an instruction he wanted plus a jump back into the main programme.
    BTW I bought a BBC Model B back then as an engineer, practiced my assembler coding and Basic. But mainly used it for games.
    I had Revs and the floppy disc version of Elite.

    • @jjlee69
      @jjlee69 5 หลายเดือนก่อน +2

      If modern programs were written with such efficiency then my work laptop wouldn't take over 5 minutes to boot and login. My C64 takes less than a second. I can get most programs running in less time than on the laptop.

    • @Innesb
      @Innesb 5 หลายเดือนก่อน +1

      That’s primarily because the C64 ‘OS’ is stored in ROM. Code in ROM (or on a cartridge) loads more quickly than from disk because it’s ‘just there’, not because it’s written more optimally; it’s exactly the same code, just accessed differently. It’s also worth bearing in mind that it’s not worth spending time optimising code unless absolutely necessary to do so.
      Designing, developing, testing and supporting highly optimised code is expensive, so it makes more business sense to let your customers pay for more RAM and disk storage. The genius optimisations implemented by 8 bit developers were a necessity for the machines of that time, not a nicety.

    • @Innesb
      @Innesb 5 หลายเดือนก่อน

      I believe that on the ZX Spectrum, the 256 byte printer buffer was sometimes utilised for storing game data, graphics or code. I suppose you could fit 32 user defined graphics characters (or similar construct) in there. If memory serves me correctly (pun intended), if a printer was connected, some games would crash. Not that many ZX Spectrum game players had a printer!

  • @Svein-Frode
    @Svein-Frode 11 หลายเดือนก่อน +3

    Just discovered your channel, and I feel very lucky. Great videos - this one included!

  • @rakido7388
    @rakido7388 11 วันที่ผ่านมา

    Elite also used mode swapping, to get resolution (in the viewport) and more colours (in the instruments) . Every machine at the time, even the Spectrum, had a vertical blank interrupt (VBL), which generates an IRQ at the top of each frame, and allow the code to keep track of whatever needed to be timed, typically running the game engine as near to 25 or 50 fps as possible.
    The BBC would've used the VBL to set interrupts from the timer chip, at carefully timed intervals down the screen, as the scan progressed.
    The C64 had an additional trick available, the VIC chip could be set to generate an IRQ at specific raster positions, this was a commonly used method to display multiple palettes, re-use hardware sprites etc. on each frame. This technique was called 'raster splitting'. Although the C64's cpu run much more slowly than the beeb, typically games ran in a character mapped mode, which meant there was much less data to push around per frame, and most C64 game engines ran at full frame rate.

  • @aidanodonnell2490
    @aidanodonnell2490 7 หลายเดือนก่อน +1

    This is a great video, and it's lovely to see this extraordinary game getting some well-deserved love and attention from TH-camrs lately.
    One thing I really feel the need to point out is that none of the original releases of Revs had pages of instructive text. Instead the game was shipped with a whole load of detailed printed material, including maps, driving instructions from David Hunt (whose actual car was sponsored by Acorn), and a detailed manual explaining the physics of the car and motor racing. This added greatly to the immersive nature of the game.
    Obviously none of this can be included in an emulator image, so people have put some of it into the intro pages to the emulated game.

    • @Loganberrybunny
      @Loganberrybunny 5 หลายเดือนก่อน

      That approach (including a printed book about how to drive racing cars) was also chosen by one of the best regarded PC racers, Grand Prix Legends. It worked really well there too, speaking as someone who adored GPL. (Yep, I know there are still GPL leagues around, but I preferred it in the days of pick-up races when we all had cheapish wheels and used the same physics! ;) )

  • @slammy102
    @slammy102 ปีที่แล้ว +2

    REVS is a racing game masterpiece.

  • @Calilasseia
    @Calilasseia 4 หลายเดือนก่อน

    That's a LOT of ingenuity packed into one game ...

  • @wendyg4382
    @wendyg4382 8 หลายเดือนก่อน

    What really amazed me about the range of Geoff Crammond GrandPrix simulators was the ability to change the setup on your race car according to your driving style, the track layout, and either a wet or dry race.
    Great video, thank you for the memory.

  • @stevetobin7495
    @stevetobin7495 6 หลายเดือนก่อน +1

    Played revs and elite for the best part if two years…god i loved my bbc - 32k …you just cant get your head round that now

  • @mattsephton
    @mattsephton ปีที่แล้ว +1

    Super. Thanks. Crammond is so clever!

  • @BineshLad
    @BineshLad 9 หลายเดือนก่อน +1

    Nice video. I was brought up on this game.

  • @amytysoe2292
    @amytysoe2292 8 หลายเดือนก่อน +1

    having sunk 3 years into playing F1GP on a 16 mhz 386sx (no road texture, mid detail, 15fps if you were lucky) i shudder to think what it would have been like on a 286. thank you for your service.

    • @TimberwolfK
      @TimberwolfK  8 หลายเดือนก่อน

      Having a relatively fast 286 (as these things go) helped, also the unique way F1GP slows down with game time getting slower when the CPU can't keep up. Even now I think F1GP at 11fps is more playable than a lot of modern games at 18-20fps.

  • @WhatHoSnorkers
    @WhatHoSnorkers ปีที่แล้ว +1

    Oooh Snetterton! My LOCAL circuit! Lovely stuff, sir.

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว +1

      I love that TH-cam's top autosuggestion for this is "Mine too!"... sadly not accurate, it turns out to still be Brands Hatch, in fact more so than when I was small enough to be eating rabbit jelly and school milk.
      (Technically the absolute closest track of my youth was Brooklands, in that I could easily walk there, but you'd have a bit of a bad time trying to hold an actual motor race there and the people on the housing estate they built over it would likely get quite annoyed)

  • @RedFoxRoaming
    @RedFoxRoaming หลายเดือนก่อน

    Considering Revs ran on a Commodore 64, and a 32k BBC micro, it's astounding how well it plays and how so immersive it is. Plus it was the first ever racing sim, with nothing to be influenced by - Crammond went in blind and created a whole sim racing genre out of a few kilobytes. It's absolute programming mastery & wizardry.
    The only game that compares to this is Elite, equally astonishing.
    Elite gets a lot of praise, and very rightly so. Unfortunately Revs is often overlooked.
    Probably my top two 'How the hell did they come up with that and pull it off with that hardware?' games of all time.

  • @redmercury77
    @redmercury77 3 หลายเดือนก่อน

    Like Elite, Revs was ground breaking. All we had before it were racing games akin to Pole Position but now we had analogue steering, acceleration and braking controls. I remember being about 14 years old and finding a variable resistor in my dad's shed and crafting a rudimentary steering wheel connected to the analogue port... perhaps in another parallel universe I named it Thrustmaster Wheel V0.0.1

    • @TimberwolfK
      @TimberwolfK  3 หลายเดือนก่อน +1

      The Thrustmaster T-(minus) 2 ?

  • @MichaelPohoreski
    @MichaelPohoreski ปีที่แล้ว +1

    Code on the graphics screen, vector delta encoding, RLE. Fantastic video!

  • @Vuusteri
    @Vuusteri ปีที่แล้ว

    Wasn't aware of this game. Only got familiar with Geoff Crammond after getting Grand Prix 4 in 2002, which, sadly, was the swan song of Microprose. I think it's still one of the best F1 games ever made and holds up even today. Makes sense that Crammond's high quality programming wizardry was already in place in 1984.

  • @vidarlystadjohansen9829
    @vidarlystadjohansen9829 6 หลายเดือนก่อน

    millions in hot tubs you say.. hmmmm. great video !

  • @ClassicTrialsChannel
    @ClassicTrialsChannel 6 หลายเดือนก่อน

    This was before I got into computers, but I loved microprose grandprix

  • @Miss_Flawless
    @Miss_Flawless ปีที่แล้ว

    13:50 gave me a scare was like my phone was falling lol. Very good video this style and layout is perfect could watch this all day about other software and games of any era. Just got to figure out a way to hide us noticing you reading notes near the camera but not big deal. Very good very nice 👍👍

  • @philc8703
    @philc8703 5 หลายเดือนก่อน

    I grew up on a council estate in Middlesbrough and I had a BBC Micro, along the way, with a ZX Spectrum, Vic 20, C64, Atari ST, Amiga and then onto PC's, where we are today, and not a monocle or top hat in sight 😉

    • @TimberwolfK
      @TimberwolfK  5 หลายเดือนก่อน +1

      Ever been tempted to try one, though? :D

    • @philc8703
      @philc8703 5 หลายเดือนก่อน

      @@TimberwolfK Hmm, wore a top hat at a wedding once, but still no monocle 😆

  • @FrancisFjordCupola
    @FrancisFjordCupola 10 หลายเดือนก่อน

    No! It's not boring. Love seeing it.

  • @Mark-pr7ug
    @Mark-pr7ug 9 หลายเดือนก่อน

    The way the green side areas are drawn almost for free reminds me of the way I cracked the puzzle of very fast pattern filling in, let's say - an art program.
    1. Fill chosen area with desired colour.
    2. Copy a rectangular area around d that filled area and take it to a screen held memory.
    3. Set the chosen fill colour on that screen as transparent.
    4. Draw to the same screen a pattern and then paste the captured object over the top.
    5. Grab that area and then go back to the physical screen & paste it back.

  • @what9418
    @what9418 5 หลายเดือนก่อน

    The sky thing was a genius approach. The road segmentation thing not as much, I mean it is a no brainer to have a segment you are in and then render from that point.
    The thing that intrigues me is how he got enough point rotations and projection done.
    Normally, if you have no calculation power, you would have to precalculate the sine and projection outcomes so that you can get away with simple multiplies but, storing these precalculated values would take much more memory than the code itself.
    But this proofs it is possible.
    I needed a Pentium to program something similar, but without any lookup tables though😂

  • @DaveHoskinsCG
    @DaveHoskinsCG 8 หลายเดือนก่อน

    I remember seeing self modifying code loading into the screen when I hacked this game, it amazed me to see assembly language altering its own code while running. Can’t do that these days.

  • @elijahvincent985
    @elijahvincent985 6 หลายเดือนก่อน

    A racing game that raced the beam like the Atari 2600. Neat!!!

  • @RltchieI
    @RltchieI 6 หลายเดือนก่อน

    Used to play Granny’s Garden at school as well as Chuckie Egg, Citadel, Hunchback & a couple of others. Was lucky that my father bought a BBC Master in the mid 80s and my first game on it was Revs 4 Tracks. Also had Killer Gorilla, Airwolf & a few others on cassette. Geoff’s games would play a large part in my childhood with Stunt Car Racer on C64 & Amiga, plus Grand Prix on Amiga then PC plus the sequels. I enjoyed all the Codemasters F1 games pre being bought out by EA, but never as much as Geoff’s games. Even if it was a bit of a pain looking up random words in the manual as an early form of copy protection. The slip streaming was amazing on his games, something today’s F1 games just don’t do well.

  • @Un.CivilEngineer
    @Un.CivilEngineer 2 หลายเดือนก่อน +1

    I got pretty good at Revs eventually.
    No really.
    I also remember _The Sentinell._ Good times.

  • @Saturn2888
    @Saturn2888 9 หลายเดือนก่อน +1

    Wow, compression in the 80s!

  • @romaneberle
    @romaneberle 7 หลายเดือนก่อน

    great video :-) very inspiring. i like Revs a lot, played it for hours and days on the C64.
    i always wondered about the cars - very detailed, and with a side-view...?! maybe can you talk about that a little?

    • @hazy33
      @hazy33 6 หลายเดือนก่อน

      If you drove the wrong way the cars would come at you effectively in reverse as they were sprites not pure polygon models.

  • @JimLeonard
    @JimLeonard ปีที่แล้ว

    As someone who makes content in this vein, I really enjoyed this. I appreciate the work that went into production. (How did you do the animated drawing sections? A tablet?)
    One thing I don't quite understand is how the system buffer to video buffer copy worked -- is the "fill until next color" a function of the hardware? Did it skip areas that didn't need updating?

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว +2

      Indeed, I use Sketchbook on a tablet for all the animated drawing.
      There's no hardware-accelerated draw on the BBC, the saving being made here is not having to fill everything on the back buffer, only needing to do it during the screen copy. It has some further logic tricks so it's not doing conditional checks on each byte, but instead using a lookup table and some boolean logic to make this run almost as fast as a straight copy (which, combined with only needing to paint the edges on the back buffer, is overall faster than assembling the entire image off screen and doing a naive copy)
      Without knowing the BBC that well I suspect it's useful because memory writes are typially slow on old hardware, and thus limiting the number which are needed speeds things up even if it means running a few more CPU instructions between each write.

    • @JimLeonard
      @JimLeonard ปีที่แล้ว

      @@TimberwolfK This clears it up, thanks! Yes, memory access -- then and now -- is still a major limiting factor of computer speed.

  • @shambhangal438
    @shambhangal438 6 หลายเดือนก่อน

    For anyone interested in the man himself, there's a short interview of Geoff Crammond at th-cam.com/video/N6pIobIp0Y4/w-d-xo.html

  • @woldemunster9244
    @woldemunster9244 ปีที่แล้ว

    What about the sideview mirrors?
    There was some movement, where it comes from? :D

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว +3

      It's quite nicely optimised! They almost work like one of those old handheld LCD games. It checks the closest car behind the player and works out what the angle between the player car and that car is. Based on the angle there are 7 possibilities - one of 3 segments on the left mirror, one of 3 segments on the right mirror, or too much of an angle to be visible. Then the height at which it's drawn in that fixed segment is determined from how close the car is.
      There's also some code which uses the current timer value to randomise the drawn pixels when the engine is on, which gives the impression of the mirrors shaking with engine vibrations and speed.

  • @arciks11
    @arciks11 ปีที่แล้ว

    So that F1 game that you showed... Did it run that well on a 286?

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว +1

      I have a feeling that's an install I bumped up to 36fps using a vintage hacking tool, so technically it never ran that well on anything! (Default limit was 25fps, which was achievable on a 486/66 with texture mapping on).
      On a faster 286 I used to get 11-13fps depending on the track, I usually had it set to 11 as otherwise the CPU occupancy would go above 110% on complex sections of Phoenix or Monaco and slowdown would be noticeable. F1GP has a weird system where the frame rate is locked, and if set it to more frames than your computer can render the game runs slower than real time (e.g. at 20fps it might take 2 seconds to render 20 frames, but the in-game physics and time still only move at 1/20th of a second per frame. It was a real problem for hotlapping competitions, as people would try to run the game at 25fps on a slow computer to give themselves superhuman reaction times.)
      This was still better than the game running on an Amiga 500 or basic Atari ST, which would be even slower. I show the period-correct frame rates for a short section of my Hard Drivin' video here: th-cam.com/video/FpfJLT3O9jI/w-d-xo.html

  • @Yesterzine
    @Yesterzine ปีที่แล้ว

    I'm somehow not sure I've ever ACTUALLY played this, despite obviously being largely a Crammond driving game obsessive. Might be time to fix that.

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว

      This was me too until very recently. I wonder if Revs might have one of the worst "know it well":"played it" ratios going...
      It is good though. I got distracted a lot and ended up just playing it while making this. There were definitely some bits of footage intended to be 30-second clips where the recording was 5 or 6 minutes long before I remembered I should be clicking a "Stop Recording" button at some point.

  • @xyzzy1974
    @xyzzy1974 ปีที่แล้ว

    Is Mode 5 the most efficient mode to store the code in the sky then, as opposed to e.g. Mode 1 or 2?

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว +1

      I don't know. I'm guessing Crammond chose the best compromise between getting maximal storage space and avoiding flicker from the BBC's slightly unpredictable transitions between modes and palettes.

  • @Bernard_Ashtree
    @Bernard_Ashtree 6 หลายเดือนก่อน

    👍🏻

  • @davidh7336
    @davidh7336 ปีที่แล้ว

    Any idea how it erases the back buffer before/while it writes the new line edges to it?

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว +1

      It erases the back buffer as it copies it, so at the end of the copy anything which was written has been zeroed. There's a great site with annotated source code and detailed deep dive articles - revs.bbcelite.com/deep_dives/drawing_the_track_view.html

  • @DanielMonteiroNit
    @DanielMonteiroNit ปีที่แล้ว

    What game is that at 17:50? I remember playing it and loving the heck out of it, but never got around to take note

    • @TimberwolfK
      @TimberwolfK  ปีที่แล้ว

      Network Q RAC Rally Championship, from Magnetic Fields. I loved it way back when! Even though it took me a while to get a computer fast enough to run it properly...

    • @Loganberrybunny
      @Loganberrybunny 5 หลายเดือนก่อน

      @@TimberwolfK I think that was the first *PC* driving game I ever bought. Great fun, even if not always desperately realistic... I remember that if you set the Escort Cosworth up just so, you could get over 200 mph on one particular stage that had a long downhill section! 🤣

  • @colinmcdougall4753
    @colinmcdougall4753 8 หลายเดือนก่อน

    Wilma Cargo 😂