Boot Sector Games

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
I’ve always been fascinated by very efficiently programmed games or demos. The Atari 2600 is an interesting example on its own since the early games like Pac-Man had to fit in 4K of ROM. While later cartridges ended up using bank switching to get 8K or even more, the early games really had to be coded very efficiently, and often meant sacrificing complex features of the game. But if you think 4K would be tough to code for, how about 2K? My friend Robin Harbron coded this little game called Minima, which is a play on words for the Ultima games. It’s a little role playing game that fits in 2K of code. Very impressive. But can you go even smaller? Well, yeah. Here’s another one. This is called “SPlatform” and fits in a meager 1K of RAM. So, to put things into perspective, how much is 1K exactly? Well, each of these dots represents a single byte. And here’s 1,024 of them. Now, you’re typical assembly language instruction takes up anywhere from 1 to 3 bytes. So, you could probably have a total of around 400 actual instructions. But that wouldn’t leave any room for data, graphics, sound, or even text. So, it would be a very delicate balance between instructions and data. But what about even smaller than this? Indeed, could games be written in just 512 bytes of RAM? It turns out, yes they can. In fact, 512 bytes is a magic number because that means it can fit into a boot sector! So, just a refresher here from my floppy disk documentary from a couple of years ago. Your typical 360K floppy disk for an IBM or compatible has 40 tracks starting from the outer rim to the inner core. And then the disk is divided up into 9 sectors like this. The boot sector is the first sector of track zero. And as you can see, it’s a very small portion of the disk surface. Of course, that’s a 360K disk. What about the more common 1.44 MB floppy disk that most people are familiar with? That format has twice as many tracks, and twice as many sectors. But a single sector is still just 512 bytes, so that means it is an even smaller portion of the disk surface. So, what does this boot sector do? Well, the BIOS is in a ROM chip on the motherboard, but that’s not really an operating system. So, the BIOS has just enough code to read the boot sector into RAM and then execute it. But the boot sector isn’t big enough to contain a whole operating system, so it’s purpose is to load the real operating system into RAM, such as DOS, Windows, or Linux. You might be surprised to find that, at least on the IBM PC and compatible computers, every floppy disk and hard disk has a boot sector. And, there’s a program installed on every boot sector, even if the disk is blank. Have you ever accidentally left a floppy disk in the drive during boot and see the message that says “Invalid System Disk. Replace the disk, then press any key.” Now, you might think this message is coming from the BIOS ROM. And that would be a good guess. But if that were the case, then how would you explain this. When I put a different blank disk in, the message changes. Now it says “non system disk or disk error.” What’s the difference? Well, the first disk was formatted with Windows 95, the second disk was formatted with MS-DOS. And that message you seen the screen is actually a small program in the boot sector of an otherwise blank disk, which displays this message. Using a sector editor, you could actually change this message to anything. For example, I changed the message on the Planet X3 disk so that it says a custom message, and then continues to boot to your hard drive if you have one. Boot sectors were also historically targeted by viruses. The viruses were just small programs that lived in the boot sector and then they would load the operating system afterwords. And then, they would copy themselves to either the boot sector on your hard drive or other floppy disks and because the virus loaded in the boot sector, that means it loaded before the operating system, giving it a higher level of control. Now that you definitely know what a boot sector is, can you imagine how hard it would be to write an actual game that fits in just 512 bytes? Well, what I have here is a space invaders game written by Oscar Toledo. And the whole thing is on the boot sector. And I want you to watch how quickly this boots up. Keep in mind it hasn’t even finished the power on self test yet. And there it is. I want to illustrate this from a different angle. See there, that’s the floppy disk light during the test cycle. The next time you see that light, that means it’s trying to boot, so watch how quickly the game starts after you see the light. Its super fast, not only because there is no operating system to load first, but because the drive’s head doesn’t even have to seek. Literally, all it takes is a single revolution of the disk to get the boot sector read into system RAM. Of course, this isn’t the best version of space invaders ever. Its very clear that many concessions were made. For example, there is no score board, no UFO across the top, and all of the aliens look exactly the same. Oh, and there are no sound effects or music either. But still, you can’t deny the skill involved to make this fit in a boot sector. So, besides space invaders, what other games are out there? This is another one. It’s called F-Bird, and if it isn’t obvious it’s a knock-off of flappy bird. Only, this version runs in text mode, using only ASCII characters for the graphics. One interesting thing about this game is that I think it’s the only one I have to show you today that actually has sound effects of any sort. Here’s another one, this is called Pillman. I guess because he eats so many little pills. With all of those ghosts chasing him, I hope they are Xanax. Anyway, this one also runs in VGA graphics mode, but there’s something I find very interesting about it. If you look down in the bottom-left corner you’ll see some weird flashing pixels. It looks like about 20 of them. I suspect what is happening here is that the author of this game is using the extra screen RAM as variable space for the game. You can actually see specific changes, for example, when Pillman changes direction. Which means, this game may only need a couple of dozen bytes of RAM for variables. It’s really blurry trying to zoom into these from a screen capture, but here’s a still-shot from DOSBOX. This is reminiscent of the Atari 2600, since it only had 128 bytes of RAM. Speaking of DOSBOX. Many people may be wondering how I’m booting a raw disk image like this from DOSBOX. Well, it’s actually quite easy. So, once you have DOSBOX open, you just type the command BOOT, following by the path to the disk image you want to use, in this case TetrOS. I assume that is an amalgamation of the words Tetris and Operating System, since the game is its own operating system. So yeah, this is a very playable version of Tetris, that fits completely in a boot sector. There are other things besides games. For example, this is a functional version off BASIC that runs from a boot sector. This is one of the example programs you can type in, which creates a pascal triangle. This version of BASIC is very limited, however. It has a very limited command set, and each line can only be 19 characters long. So you aren’t going to be able to make anything super exciting. Plus, I don’t think there is any way to load and save your work. OK, now being realistic for a moment, none of these games are that great in that you’re not going to want to sit down and play them for hours on end. I suspect the people who wrote the games probably had more fun writing them than they did playing them. And of course, that’s the whole point of these games is to challenge one’s self to see, you know, how much you can fit into a very confined space. And so, I just, I have a great admiration for anyone who can fit a game into 512 bytes of RAM, but anyway that’s actually all I’ve got for this episode, so stick around for the next one and thanks for watching!
Info
Channel: The 8-Bit Guy
Views: 1,413,903
Rating: undefined out of 5
Keywords: boot, sector, IBM, 5150, MS-DOS, 360K, 720K, 1.44MB, floppy disk, virus, computer, programming, code, demo, game, space invaders, tetris, pacman
Id: 1UzTf0Qo37A
Channel Id: undefined
Length: 8min 7sec (487 seconds)
Published: Fri Nov 01 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.