Dec 22, 2021
Street Fighter II, paper trails
The late 90s saw the emergence of Capcom in the world of arcades. The Osaka based company seemed to produce one hit after another with Ghouls’n Ghosts in 1988, Final Fight in 1989 and Street Fighter II in 1991 among a myriad of other excellent games.
During this era, a video-game enthusiast could not go to an arcade without seeing multiple Capcom cabinets, proof of their popularity with both players and operators.
Over the past six months, I have spent my spare time studying Capcom success stories and in particular the genesis of Street Fighter II. If discovering the engineering behind the CPS-1 was fascinating, I found the side story of how developers tracked ROM budget using paper and scissors equally interesting.
CP-System 101
Introduced in 1988, the CPS-1 (a.k.a CP-System at the time) was Capcom unified arcade platform. Among its many innovations was a powerful graphic rendering pipeline.
If it still embraced the concept of layers, the CPS-1 abandoned the constraint of rectangular sprites. The OBJ layer is built via 16×16 units called “tile”. In Street Fighter II, tiles are combined to make character poses. This approach gave considerable freedom to the artists who proceeded with designing “objects” of arbitrary sizes and shapes.
Besides a few basic operations such as horizontal and vertical flipping, the CPS-1 cannot alter tiles. It has no rotating or scaling capabilities. What made the machine stand out was the sheer volume of tiles it could manipulate per frame, reported to be in the vicinity of 256.
It was a real tour-de-force at the time to make so much of the screen move. The “wow” factor immensely contributed to the success of the games. In a game like “The Punisher”, the kingpin final boss is made of poses reaching up to 80 tiles.
“The Punisher” screen can be almost covered with sprites (Source: rq87.flyingomelette.com).
ROM Budget
If the CPS-1 capabilities were a blessing for artists, it was a problem for project managers. In an era where ROM chips were very expensive, a game was allocated a ROM budget at its beginning which it could not exceed.
Before the CPS-1, remaining within the budget was a simple matter of a division. The number of #sprites allowed to the art team was ROM size / rectangular sprite size. But the free form factor introduced a tracking problem.
The sheet system
The solution came under the form of paper sheets and scissors.
In order to make the best use of the capacity we had, we wrote the ROM’s capacity on a board, and cut and paste the pixel characters on the board.
If there was space left on the board, then there was open capacity in the ROM. So, from there we started filling in the spaces, like a puzzle.
One thing that happened that’s kinda interesting, we saved making the ending for last, and by the time we got there we were all out of capacity. We were wondering what to do, when we found a board that had gone missing under a desk.
We called it the ”Mirac-ulous Memory.”
– Akira Nishitani, SF2 development interview
A blank sheet
Since the CPS-1 uses 16 indexed colors (4-bit per pixel), a sheet of 16×16 tiles represents 16x16x16x16 / 2 = 32 KiB. For a game such as Street Fighter II: World Warrior, the team allocated 4.6 MiB out of its 6 MiB ROM budget to sprites and therefore printed 144 paper sheets.
Sheets archeology
This system is a golden opportunity for a software archaeologist.