FABIEN SANGLARD'S WEBSITE

ABOUT  CONTACT  RSS  GIVE


Nov 29, 2024
CPSS: The Capcom Sheets Explorer

When I wrote The Book of CP-System I became borderline obsessed with the Capcom sheet system. It fascinated me that such a major hit had been achieved in great part with pencils and grid paper.

Since I could find only two sheets (Dhalsim 0x3300 in "How to make Capcom Fighting Characters" book and Ryu 0x4500 in Developer interview article), I wrote a tool to reconstruct them from ROMs. I called it cpss (for CPS-Sheet).

Dhalsim 0x3300 Ryu 0x4500

Originally cpss handled only OBJ (sprites) but I spent Thanksgiving adding backgrounds capability (SCROLL1, SCROLL2, SCROLL2). Here is the source code and the Street Fighter II sheets below with commentaries.

I have tried to find more sheets ever since. I purchased all the books I could find but never found more.

I have heard rumors that more were exposed in the Street Fighter 35th Anniversary Exhibit in Osaka in 2022. If you ever see one, please message me.

Street Fighter II paper sheets

Nothing more normal than to start with the hero from Street Fighter 1. Notice how 0x0000 is blank. I thought it was so programmers would always have a transparent tile handy but I was wrong. The board has a hard-coded OBJ offset for transparency (in the case of SF2, that is 0x400 even though there is something there).

Ken is a set of patches on top of Ryu, it consumes next to no GFXROM.

Bank 0x200 illustrates how gfxrom and palette are not linked. The researcher (me) has to manually find each tile palette. In 0x0200 I set the whole sheet to using Ryu's palette.

Look at the sheer number of tiles Honda takes compared to Ryu. Honda takes 19 sheets. He is only second to Zangief (19 sheets).

The first of the three "flamed" sprites appears in 0x0400. The same sprites set is used regardless of the character affected. They are also used when a character is hit by Dictator's Psycho Crusher. With three poses, they actually made a six frames animation by using a full black palette in between colored frames.

Honda is massive, both as a contestant and in GFXROM byte consumption.

Ryu/Ken's Hadouken sprites are in 0x0700.

Second "flamed" sprite is in 0x0800.

More Hadouken sprites.

In 0x0a00 we can see the barrels used in the second bonus stage.

Looks like they were really scraping the bottom of the barrel with the third "flamed" pose, they had to cut it tile by tile and spread it over two sheets.

Zangief is also massive!

If all characters used the same "flamed" pose, they all have their own "electricity" pose. Here in this Zangief sheet, we can see Chun-li effect.

Credit sprite here. They show caricature portraits of the developers.

"Here comes a new challengers" spreads over three sheets.

Dhalsim sheet for which we actually have a paper sheet. Chun-li replaced one pose in 0x60.

The reconstruction of the only other paper sheet I have seen. Notice more portraits of developers in sepia color which is used in the credit roll.

Portrait

No small savings. Sagat's right leg is missing. The CP-S draws it by X-flipping his left leg.

Sagat's electricity pose is located on Chun-li sheet. It is impressive how much GFXROM budget this Blanka power was allocated. Likely the cool factor prevailed.

Notice that Blanka does not have an electricity sprite since there was no mirror match in SF2. It became a problemw when "Champion Edition" allowed same character selection. They had to squeeze these new sprites in 0x8b00 (see upper left) and 0x8c00.

For a sequence that lasts only a few frames, I was surprised to see how much they were willing to dedicate to Dictator's cap.

Zangief was still being done when they invented Blanka electricity since the sprite is full.

"Small" Shadows. Zangief, Honda, Blanka, and Blade have their own shadow sprites.

The hero sheet with Guile's calves saving SF2 from a big typo (see The World Warrier).

Endings area. The Zangief dancing pose is legendary. Notice the typo in the title "The World Warrier" which Akiman hacked into "The World WarrIOr"

Ryu ending animation has three frames (two here and one in 0x7e00).

I wrote about how developers had to pre-render animation. All 19 tiles make for a smooth energy bar (0xF0).

You would have thought the portrait would use the same palette for each character. Nope :( . I did not have the courage to look them up. On this sheet we also find the two logos used for the rotating and scaling intro animation.

All breakables are starting here.

The bonus stage where a car has to be demolished. The car is rumored to be a 1990 Lexus LS 400.

Start of SCROLL1 (8x8 tiles).

Why is there a second font you may ask? Because the CPS-1 is limited to 256 OBJs. To write the full warning paragraph made of a thousand letters, they had to use a SCROLL. That is why the spacing of letters is weird.

I did not add the smiley. They are in the GFXROM. Likely a trick to recognize empty tiles given how tiny they are in this layer. I did not spend much time recovering the palettes. So from here, the tool uses the default grayscale.

Start of SCROLL2 (16x16 tiles, same as OBJ).

Start of SCROLL3 (32x32 tiles).

Map!


*