When we talk about ‘Retro games’ connoisseurs of the genre, there are actually several very different things we are talking about. Let me see if I can break it down in to eras.
Pre-Microcomputer era; this is really the era of the Intellivision and Atari 2600. This is basically 1975 to 1982.
Microcomputer era; this found it’s stride with the Commodore 64 and Apple ][. Essentially 1980 to 1988.
The release of the Amiga is a gray zone between the above and the ‘Mainstream PC market’ that you would say took over in the late 80s and lasted until 1995.
Finally after some small chaos you have what amounts to the ‘Modern PC era’ which essentially began when Windows ’95 released. It found full stride in 2001 with Windows XP.
What is surprising is when you look back at the power level of the computers at the time, it tells quite a different story. The Commodore 64 was released in 1982. Well, so was the 80286 — a 16 bit machine.
Ultima IV was released for the Apple ][ in 1985. This was an 8 bit game. However, in the same year, the 32-bit 80386 was released. By 1990, the SNES was released; by all accounts it was a 2d powerhouse. In actuality, the SNES was probably 4x to 5x more powerful than a C64 in every conceivable way. This was in 1990. But a year earlier, the 80486 was released.
There’s really a schizm here, as the world split in 1990 between 16 bit and 32 bit computing. Ironically, for a while, 16 bit would win (in terms of games, the SNES had a clear advantage), but the raw power of the 32 bit platform — in 1985 — could no longer be denied.
1985. The same year “Back to the Future” was released, as well as a dozen other iconic movies and a dozen other cult classics.
So really the question is, what is going on here? What is meant by the term “Retro”? I think that it has much less to do with 8, 16 and 32 bit processors and much more to do with RAM and the PPU/GPU. Thus I have broken retro gaming into four main areas.
- The under 64k era (1978-1988)
This refers to the C64, C128, Apple ][ and so on. This era is dominated by 8 bit processing and 64k usable ram or less. You can include older consoles here, but they almost deserve their own era due to extreme RAM limitations. Often times, the processor was just as good as a 6502, but would have under 4k of RAM. The Atari 2600 famously had only 128 bytes of RAM.
2. The 128k to 640k era (1985-1995)
This era is somewhat deceptive, as it really bridges the 8bit and 16 bit worlds. The Amiga 500 sits squarely in the middle of this era. It ends in with with the release of the 80386 in 1995, when 1MB ram became standard.
People often underestimate the SNES (1990) because it had a modified 6502 and only 128k RAM. But it was a cartridge based system with a very strong PPU and sample based playback. Pound for pound, it could compete with a stock 80386, whose weak point in gaming was no dedicated PPU or audio chip.
3. The era of 1mb to 8mb RAM (1995-)
In 1996 the N64 was released with SGI’s reality engine and 2 to 4mb (up to 8mb with expansion) RAM. This system was approximately 100 times the power of a Super Nintendo and defines the end of an era. While the SNES was a 2d powerhouse and could compete with any PC in gaming at the time, this ended with the release of 3d graphics acceleration.
The defining systems of the era were probably the early consoles, the C64 to Apple II, the SNES alongside the 16 and 32 bit Amigas and PCs, and the N64.
In terms of speed and RAM these are the ideas:
0.5 MIPS and 4-16k ram for early consoles. The difficulty with these are that there is no real OS. I liked those games but they were always a step behind.
a. The “1985” — 1 MIPS and 256k for the C64 to Apple ][ era. This era was defined by RAM size. Not by speed. The reason why the RAM is much larger is that we do not have ROM, a VIC-II, or a SID chip. Everything must be stored in RAM. This approximates what you would normally have with a bit of breathing room. We are not masochists, after all.
b. The “1990” — 5 to 10 MIPS and 1mb RAM for the SNES era. Perhaps even 5 MIPS is a bit fast for this era, but you want to cover some of the faster 680×0 and PC era chips. You also have to understand this is the era of the SNK Neo Geo and Sega System 32, so you want to include some extra speed if you want to explore the arcade side of things.
Why 1mb? Although we have a PPU and APU that offloads from RAM, I might reverse this. But the real reason to keep 1MB in any case is the reality of a cart-based system. Having data on-CART is like having it in memory; in fact with fast ROM enabled, SNES cartridge ROM was often faster than RAM. This is the big misunderstanding about consoles like the SNES; They had 128k RAM, but they had had several megabytes of data in ROM — making the 128k RAM somewhat misleading.
125 MIPS and 4mb RAM for the N64 era. In fact, if you increase this to 8mb you catch the tail end of the 80386 era — the launch of 32 bit. The policy of allowing approx. 2x the performance and RAM to make up for the lack of CDs, cartridges, graphics cards, etc. proves true.
These three eras are the main targets. How can you replicate games of this era?
Use 128×128 mode for anything prior to the C64 era. Use 320x200x16 mode for the C64/Apple ][ era. use 256x224x256 for the SNES era.
The N64 era is very interesting. The internal framebuffer for most games was 320×240. However, it could use up to 640×480 — yet so few games did because it was too demanding on the hardware.
So, final targets?
a) 1.28 MIPS and 256k RAM for the C64/Apple ][ era. This is “Mode 1985”. With 64k taken by video, 64k by ram, there is 64k to 128k of RAM to use, but is hard to use because it is not contiguous. Feels about right.
b) “Mode 1990”. 10 MIPS and 1mb RAM for the SNES era. MIPS feels a bit fast, but you want to cover some of the better PC-era games too and possibly cover for the lack of multitasking (the 286 was released in 1982) — we have one thread to do everything on (including the PPU and audio). Even the SNES, though a single core processor, had its PPU and SPC working at the same time. A kind of multitasking. It may be that 10MIPS is about right!
RAM is the same idea. Accounting for cartridges, 1MB of RAM sounds fair for this era. It’s more RAM, but actually not as much as you would find on some cartridges. The extra RAM helps balance that.
c) “Mode 1996” 125 MIPS and 4mb to 8mb for the N64 era. This is the realistic max power level on today’s hardware. You can see the shift to raw CPU power here for graphics performance; More RAM remained the limiting factor for complexity in gaming. The extra RAM in an N64 mainly going towards graphics, very few games had more depth than those on the SNES. For example, as good as Ocarina of Time was, can we really say it is a “larger” game than A Link to the Past? Well, A Link to the Past has more dungeons, but Ocarina of Time has longer dungeons. In gameplay terms it takes twice as long to go through the dungeons, but it’s not necessarily a “bigger” game. It is bigger, just not by much. Isn’t that interesting?
Now here’s my plan to allow people to funnel themselves into one of the three above camps.
A. Change system speed. There can be different levels. 0.5 MIPS, 1.28 MIPS, 6.4 MIPS, 12.8 MIPS, 40 MIPS, and 125 MIPS. These six speeds cover almost everything in the N64 and previous generations of consoles and computers.
B. Selection by Graphics Mode. There should be 1 or 2 “iconic graphics modes” for every level. So far we have 40×25 and 80×25 text (3 modes), 320x200x16 graphics mode, 256x224x256 graphics mode, and 128x128x16 mode. We need to possibly add: 512x256x256 mode (double bank mode), a 320×240, 480×360 and/or 640×480 mode for the later era.
Those will all be 256 color modes, as we already have too many graphics modes. The 512×256 mode probably isn’t going to be useful. The 320×240 and 480×360 mode are N64 specific. This leads me towards the idea of a configurable framebuffer. I will investigate this.
Finally the choice of audio. Sample based playback opens many doors. However, we do have access to the JavaScript oscillator for free, which covers most of the early era. Sound is the choice of the programmer and falls roughly into those main camps.
Ok, looks like this has been worked out, I’ll put it into a “Replicating Retro Games” tutorial later. Good!