pikuma Profile picture
May 9 27 tweets 14 min read Twitter logo Read on Twitter
Lately, I've been studying the early days of 3D polygons on home consoles for a new course.

We often think 3D on the #PS1 or #Saturn, but there was a bracket of time where special chips were added to both #SNES & #Genesis to help them render fast polygons.

Here's a review...🧵
It's probably not news to anyone here that retro consoles added special power to games by adding special chips *inside* the game cartridges!

Therefore, newer and fancier games were more expensive because manufacturing the cartridge with extra chips cost more for the developers. The Nintendo SA-1 chip
If you took our course on #NES programming, you know that this was also true for 3rd gen. consoles.

For example, the NES console is always the same (CPU speed, RAM size, etc.), but NES games got better with time by adding these special chips *per* cartridge! Different chips added insid...
Therefore, we buy *one* console and delegate the responsibility of adding more powerful features to the cartridge!

Some NES & Famicom cartridges came with special chips to enable more graphics data, more audio channels, and even persisting game state using a battery. Battery-backed NES cartridge
I'm mentioning NES games, but some cartridges from the 4th gen. (16-bits - #SNES & #Genesis) followed the same idea.

You want extra juicy stuff and more power to your SNES games? Add them to the cartridge! SNES cartridge
Cool! So, it's the early 90s and it's clear that the next game revolution would be "3D stuff!"

Nintendo knew the SNES was aging, especially compared to the Sega Genesis & the TurboGrafx-16.

They needed something different, and for that, they joined forces with #Argonaut Games. British game developer Argo...
The British studio Argonaut Games wrote a game called #Starglider (Amiga, Atari ST, etc.).

They showed an NES prototype of Starglider to Nintendo at a Consumer Electronics Show in 1990. Nintendo was interested in the prototype and Argonaut developed a #SNES version soon after.
Nintendo sat down with Argonaut to discuss the technical requirements needed to render fast polygons with the SNES for a new 3D game "like" Starglider.

That was the beginning of the development of a chip called #SuperFX, and also the beginning of a popular game called #StarFox!
The #SuperFX chip was used to draw 3D polygons with the SNES.

It's a custom RISC processor programmed to act like a graphics accelerator. It draws polygons to a framebuffer in RAM. The framebuffer data is periodically transferred to the main video memory in the console via DMA. Super FX chip
The Super FX chip was one of the first attempts at enabling 3D console games.

Many games used the #SuperFX chip or its variants... For example, Star Fox used it to render its 3D polygons, while SuperMarioWorld 2: Yoshi's Island used the chip for 2D sprite scaling and stretching. Star Fox 3D polygons
While in development, the Super FX chip was codenamed "Super Mario FX".

"MARIO" is a backronym for "Mathematical, Argonaut, Rotation, Input/Output".

You can actually see "MARIO CHIP" printed on the face of the final production chip inside the cartridge! Super FX (MARIO) chip
The first version of the Super FX chip is clocked with a 21.4 MHz signal, but an internal clock speed divider halves it to 10.7 MHz.

The design was later revised to become the Super FX GSU (Graphics Support Unit). Unlike the first revision, this chip was able to reach 21 MHz.
Programming for it is done with a special "Super FX assembly language".

SuperFX games use a combination of standard SNES assembly with specially compiled SuperFX assembly routines (coded as binary data in the cartridge). These can (sometimes) also run in parallel with the SNES! Super FX programming
One fun fact about the SuperFX chip is that it became its own commercially-licensable IP core.

It was called the "Argonaut RISC Core" (or ARC) and it became its own business.

PS: This is very similar to how ARM became a company out of #Acorn RISC initiative in Cambridge! ARM processor
It was fun, but SuperFX games were expensive!

Because of high manufacturing costs and increased development time, few Super FX games were made compared to the rest of the SNES library.

Also, remember that a shiny next gen. Nintendo console (3D-focused) was in the oven. Nintendo 64
But of course, Nintendo was not the only one running the 3D race.

Nintendo's SuperFX directly competed with the #Sega #VirtuaProcessor.

Sega's SVP chip which was more powerful and even more expensive than the SuperFX! Sega Virtua Processor chip
Remember those Sega "Virtua <something>" arcade games?

• Virtua Racing
• Virtua Fighter
• Virtua Cop
• etc...

Sega was already producing 3D effects on its arcade titles, and they managed to adapt some of it to the home console by developing the SVP chip.
The Sega Virtua Processor (SVP) was a 23 Mhz custom-designed Genesis-compatible #DSP chip to enhance graphics and sound.

The SVP chip basically served as an extra processor, allowing games to push faster polygons than what was possible with the vanilla Genesis hardware. Mega Drive Virtua Racing ca...
The SVP chip was primarily seen as a reaction to the SNES's SuperFX.

Sega’s SVP boasted more performance than Nintendo's chip but would ultimately see use in only a single title (Virtua Racing), which saw an increase in both its cartridge size and retail price.
Based on a #DSP core, the SVP chip allows the Genesis to render real-time polygons and provides an "axis transformation unit" to handle scaling & rotation.

Virtua Racing (1994) was the only game released with this chip, and the only Genesis cartridge with any enhancement chip!
Technically, the DSP-core Sega chip was more powerful than the RISC-core SuperFX.

While the SuperFX could handle hundreds of polygons per second, the SVP could handle *thousands* of polygons per second. 🔥🔥🔥
As programmers, we often read about about CISC and RISC cores, but Sega’s SVP chip used a #DSP core.

Digital Signal Processing (DSP) algorithms require a large number of mathematical operations to be performed quickly and repeatedly on a series of data samples. DSP processor
Differently than general-purpose microprocessors (CISC & RISC), many DSP applications have constraints on latency. The DSP operation *must* be completed within some fixed time.

DSP chips are often still coded using #Assember to make the most of chip-specific performance tricks!
But the SVP had a similar fate than the SuperFX. It was clear that both Nintendo & Sega were about to release a new 3D-dedicated console (N64 & Saturn).

That were plans of developing Virtua Fighter & Daytona USA for the SVP chip, but they were both moved to Saturn's line-up. Sega Saturn & Nintendo 64
Great stuff! 🙂

And this is just a super quick overview of the history and the technical details of these important chips.

Both SuperFX and SVP were at the start of the 3D home console revolution and helped shape the design of the next generation of 3D 32-bit home consoles. ❤️
And speaking of 4th gen. programming... two handles that are extremely useful on “all things” SNES development using expansion chips are @kandowontu (StarFox development with SuperFX & SuperFX 2) and @HackerVilela (SNES development with SA-1).'

Follow them!
I honestly love to dive into this early 3D era and I’m super excited to cover a little bit of it in my next course.

That being said, our next course it's not going to be Nintendo, and it’s not going to be Sega either. 😋

Bye for now! And don't forget to follow us @pikuma. ❤️ twitter.com/i/web/status/1…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with pikuma

pikuma Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @pikuma

Apr 14
I remember reading about determinants in high school. The name was scary and not much context was given. 😦

For a long time, a determinant was just a value I had to blindly compute using a formula.

Here's what I would like to know about determinants when I first started... 🧵 twitter.com/i/web/status/1…
The word "determinant" appears when we are learning about matrices.

And since we want to build some *intuition*, let's look at a simple 2x2 matrix first.

We learn that the determinant of a 2x2 matrix is:

| a b |
| c d | = a*d - b*c

But where does that come from? Determinant of a 2x2 matrix
Alright, let's go back in time!

Seki Kōwa was a Japanese mathematician from the Edo period. He had Samurai origins but was adopted into the noble Seki family, subject of the shōgun.

As a kid, he had great potential with numbers. He was often called "Japan's Newton". Seki Kōwa Japanese mathemat...
Read 25 tweets
May 12, 2022
You know I always add some #math spice into my #gamedev courses, and that usually means touching some cool linear algebra.

But something most students still struggle with is the *intuition* behind the #Determinant of a matrix.

Let's quickly look at it together...🙂

[1/18] 🧵
Since we are really interested in building some *intuition*, let's look at the determinant of a 2x2 matrix first.

When we were in high school, we learned that the determinant of a 2x2 matrix is given by:

| a b |
| c d | = a*d - b-c

But, where does that come from?

[2/18]
Seki Kōwa was a Japanese mathematician from the Edo period, and he was sometimes described as "Japan's Newton."

He had Samurai origins but was adopted into the noble Seki family, subject of the shōgun.

As a kid, it was visible that he had great potential with numbers.

[3/18] Seki Kowa
Read 20 tweets
Feb 25, 2022
Since we discussed isometric games in a previous post, let's briefly mention one of the big #devs of this style: Chis Sawyer.

Most retro gamers think Chris' first isometric game was Transport Tycoon, but his journey started 10 years before.

So, let's dive in!

[1/15] 🧵...
In 1984, Chris programmed QOGO.

QOGO was a clone of the popular arcade game #QBert that ran on the Memotech computer.

QBert is one of the most popular arcade games to carry the isometric look. If you are a retro gamer, you probably played (or at least heard of) QBert.

[2/15]
Now, we mortals usually coded for these machines using some sort of BASIC. But we have to remember that BASIC is an interpreted language, meaning every high-level BASIC command needs to be translated to low-level machine code.

And for 8-bit machines, that means *slow*!

[3/15] Memotech MTX computer
Read 15 tweets
Dec 27, 2021
This is one of my favorite folklore stories about computer #bugs!

...

In the 1980s, Jake Poznanski had a programming mentor, Sergei, who was writing software for an SM-1800, a Soviet clone of the PDP-11.

[1/10] 🧵
The computer was just installed at a railroad station near Sverdlovsk, a major USSR shipping center at the time. The new system was designed to route trains and cargo to their intended destinations, but there was a nasty bug that was causing random failures and crashes.

[2/10]
The crashes would always occur once everyone had gone home for the night, but despite extensive investigation, the computer always performed flawlessly during manual and automatic testing procedures the next day.

[3/10]
Read 11 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(