My guess is that it was easier to encode and use a blank tile than to specify those strange shapes where sprites are non-rectangular. Could it be that GFX ROM address 0x0000 could not be used? Analyzing other games also showed that tile 0x0000 was never used. Why the hair of the top left pose is offsetted is unknown. > Notice how Ruy's top hair for 0圆9/0圆A was placed at 0圆F/0x9F in order to not disturb the layout. If your program has two strings, "foobar" and "bar", the linker will just store "foobar" in the strings section and point 3 bytes into it for "bar", assuming the right compilation/linking options to make it work. Trivial "look for dupes and subsets and just change pointers" compression is already standard when building C code. zlib is then used in many, many formats, like PNG and PDF. Together, these two techniques are how DEFLATE compression works, which is the algorithm used by zip, gzip, and zlib. The most basic approach for this is Huffman coding, which is kind of like variable length binary phone numbers. The other is entropy coding, which means re-writing bytes and pointer codes into variable length values that are optimized by frequency: fewer bits for common codes, more bits for uncommon ones. Variants of this (LZW, LZ77, LZSS, and a bajillion custom variants, because game developers like to reinvent their own compression) have been used in many, many games. You keep a history of what you've already decompressed, and if you find something you already have, you instead encode a pointer to it. That is how basic Lempel-Ziv compression works, which is one of the two fundamental techniques used in data compression. I seem to remember our game couldn't use them, perhaps because of the way the 3D and 2D were composited in the frame, which was very unusual - most games were either 2D or 3D, not a combination.Īre there any easter eggs hidden in the sprites for SFII? There were various ones in Abomination, mainly written in the graffiti around the cities.Īnd then there are ones like this (TFT) that we can't talk about: When that game was started there were almost no 3D accelerators, and I don't remember if you needed specific SDK for them. whatever the fuck, because there were no rules in those days. I switched the entire game over in two weeks, including creating all the tooling to convert from 3D Studio to. So, several months into development it was decided to change all the characters to 3D to save RAM. The isometric backgrounds are all sheets of 2D tiles, laid out just like in Street Fighter and every other sprite based game. The numbers get out of hand very quickly when you have four main characters, each of which can walk in 8 or 16 directions, can also run, walk up stairs, climb ladders, crawl, fire one of 20 different guns etc. It was meant to be 100% 2D, and the programming and art went down that path for a few months before it was realized that there just wasn't enough RAM on PCs of the time to store all the possible sprites for the characters in every rotation. I was one of the developers on this game in the 90s: