Difference between revisions of "Sonic the Hedgehog 2 (16-bit)"
From Sonic Retro
m (Black Squirrel moved page SCHG Talk:Sonic 2 to SCHG Talk:Sonic the Hedgehog 2 (16-bit)) |
|||
(3 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
"Nemesis provides this chart of values for the upper four bits of cellProperties. The LSB mirrors the cell." *insert table* | "Nemesis provides this chart of values for the upper four bits of cellProperties. The LSB mirrors the cell." *insert table* | ||
− | That table has bothered me from day one. Aside from the inconsistencies (what the hell does "mirror" mean? There are both H and V flip bits there...), the bitfield seems to match up perfectly with a PNT entry. As I don't have time to look at this myself, would somebody please check it out for me (or just say if you know)? --[[Aurochs]] | + | That table has bothered me from day one. Aside from the inconsistencies (what the hell does "mirror" mean? There are both H and V flip bits there...), the bitfield seems to match up perfectly with a PNT entry. As I don't have time to look at this myself, would somebody please check it out for me (or just say if you know)? --[[User:Aurochs|Aurochs]] |
+ | |||
+ | ==Pseudocode== | ||
+ | It's not pseudocode, it's actual C+ code. This is likely to be confusing to virtually everyone, because it's overly complicated and C+ programming is a completely unrelated subject. It should be replaced with something simpler. - [[User:Hivebrain|Hivebrain]] 17:50, 28 August 2006 (CDT) | ||
+ | :Oh, it is indeed pseudocode. Neither C nor C++ has a byte or word type. They would have to be typedefed further up from char and int respectively, which I did not show. Further, for clarity, I wrote the bitfields backwards - for instance, | ||
+ | <pre> | ||
+ | struct metaBlockElement { | ||
+ | int : 4; // x | ||
+ | int blockIndex : 12; }; // I | ||
+ | // xxxx IIII IIII IIII | ||
+ | </pre> | ||
+ | :should be | ||
+ | <pre> | ||
+ | struct metaBlockElement { | ||
+ | int blockIndex : 12; }; // I | ||
+ | int : 4; // x | ||
+ | // xxxx IIII IIII IIII | ||
+ | </pre> | ||
+ | :because the compiler allocates bits starting from the LSB rather than the MSB. Therefore, pseudocode. I'll admit that the bitfields are kind of esoteric, but I like them because they allow for named variables, rather than the cheap ASCII bitfields that only allow for letters. | ||
+ | :--[[User:Aurochs|Aurochs]] |
Latest revision as of 12:50, 25 April 2018
Block maps
"Nemesis provides this chart of values for the upper four bits of cellProperties. The LSB mirrors the cell." *insert table*
That table has bothered me from day one. Aside from the inconsistencies (what the hell does "mirror" mean? There are both H and V flip bits there...), the bitfield seems to match up perfectly with a PNT entry. As I don't have time to look at this myself, would somebody please check it out for me (or just say if you know)? --Aurochs
Pseudocode
It's not pseudocode, it's actual C+ code. This is likely to be confusing to virtually everyone, because it's overly complicated and C+ programming is a completely unrelated subject. It should be replaced with something simpler. - Hivebrain 17:50, 28 August 2006 (CDT)
- Oh, it is indeed pseudocode. Neither C nor C++ has a byte or word type. They would have to be typedefed further up from char and int respectively, which I did not show. Further, for clarity, I wrote the bitfields backwards - for instance,
struct metaBlockElement { int : 4; // x int blockIndex : 12; }; // I // xxxx IIII IIII IIII
- should be
struct metaBlockElement { int blockIndex : 12; }; // I int : 4; // x // xxxx IIII IIII IIII
- because the compiler allocates bits starting from the LSB rather than the MSB. Therefore, pseudocode. I'll admit that the bitfields are kind of esoteric, but I like them because they allow for named variables, rather than the cheap ASCII bitfields that only allow for letters.
- --Aurochs