1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- ----------------------------------------------------------------------------
- |For those of you who don't know how the SNES does do it's graphics, it |
- |uses tiles (surprise surprise!). |
- | |
- |There are different MODEs on the SNES; the most famous being MODE 7. |
- |Most people think that $2106 (Screen Pixelation: Look in SNES.1 for an ex- |
- |planation on this register) is MODE 7. *** THIS IS NOT MODE 7!!! ***. |
- |So, the next time the pixels get really "big" (almost making them look like |
- |look like IBM-clone 320x200x256 MODE 13h graphics), and your friend says |
- |"WOW! MODE 7 is really awesome," punch him/her in the nose for me. Just |
- |joking. :-) |
- | |
- |I'll be explaining MODE 1. I know how MODE 7 works, but since i've never |
- |used it, don't plan on me explaining it in the near future. Sorry to those |
- |who were looking for a MODE 7 document. Look elsewhere... |
- | |
- |MODE # of BGs MaxColour/Tile Palettes Colours |
- |----------------------------------------------------------------------------|
- |0 4 4 8 32 |
- |1 3 16/16/4 8 128 |
- | |
- |MODE 0 is good for geometric shapes (if you were going to rotate a wire- |
- |frame cube, or something like that), basic star scrolls, or a very 'bland' |
- |text scroller... it's pretty cool and doesn't take up much space. |
- | |
- |I'm going to explain MODE 1, since MODE 0 is the same thing but with less |
- |bitplanes. :-) |
- | |
- |MODE 1 is really best for things; detailed star scrolls, text scrollers, |
- |geometric shapes, and filled objects. It's the most common used MODE in the |
- |the professional SNES programming world. |
- | |
- |You need to "setup the plane" to tell it what tile goes where. If you want |
- |demo-code, check out 'test.asm' in 'test.lzh'. |
- |----------------------------------------------------------------------------|
- |So, lets assume we have a character (a 8x8 tile) which we want to work with |
- |to figure out the SNES's colour scheme: |
- | |
- |TestCHR1 dcb $00,$00,$00,$00,$00,$00,$00,$00 ; '@' |
- |TestCHR2 dcb $00,$3C,$4E,$5E,$5E,$40,$3C,$00 ; '@' |
- | |
- |You're probably wondering how the two lines above turn into actual graphic |
- |data on your monitor or television set. Very simple. Consider each byte |
- |(each new $xx statement) a new pixel line. Tile size is 8x8. |
- | |
- | %00000000 = $00 |
- | %00000000 = $00 This is TestCHR1 |
- | %00000000 = $00 |
- | %00000000 = $00 |
- | %00000000 = $00 |
- | %00000000 = $00 |
- | %00000000 = $00 |
- | %00000000 = $00 |
- | |
- | %00000000 = $00 |
- | %00111100 = $3C This is TestCHR2 |
- | %01001110 = $4E |
- | %01011110 = $5E |
- | %01011110 = $5E |
- | %01000000 = $40 |
- | %00111100 = $3C |
- | %00000000 = $00 |
- | |
- |The at-symbol ('@') is visible in TestCHR2. Now you're probably wondering |
- |"Well, that tells me how to define a pixel on and off; what about the colour|
- |itself!" Once again, very simple, but a tad more complex: |
- | |
- |If you have a 0 for bitplane 0, a 0 for bitplane 1, a 0 for bitplane 2, |
- |and a 0 for bitplane 3, you get color #0; eg.: |
- | 0000 = Color #0 |
- | ||||___________Bitplane 0 |
- | |||__________Bitplane 1 |
- | ||_________Bitplane 2 |
- | |________Bitplane 3 |
- | |
- |So, now, think about a 0 for bitplane 0, a 1 for bitplane 1 and 2, and a 0 |
- |for bitplane 3: |
- | 0110 = Color #6 |
- | ||||___________Bitplane 0 |
- | |||__________Bitplane 1 |
- | |_________Bitplane 2 |
- | |________Bitplane 3 |
- | |
- |Keep in mind, this is the best explanation i've ever seen done about SNES |
- |pixel color definition. Until I see better, I'd have to say this is the |
- |best it's gonna get. |
- |The result above gives you the color # per pixel; it's interesting. It's an |
- |"overlay" method, so-to-speak, not to confuse this w/ main and sub-screens. |
- ----------------------------------------------------------------------------
|