You can login if you already have an account or register by clicking the button below.
Registering is free and all you need is a username and password. We never ask you for your e-mail.
[+]Tetromino0 points0 points0 points
ago
(edited ago)
[–]Tetromino[S]0 points
0 points
0 points
(+0|-0)
ago
(edited ago)
Each cell in the 8x16 block represents a number 0 to 127 starting from top / left.
During the first frame we see the highest bit (bit #6) of each 7 bit number. The next frame shows the next lower bit of each number (bit #5), and so on (#4, #3, #2...). Bit #0 is the last frame.
If the block is visible it means there's a 1 instead of 0 in the binary representation.
Basic binary construction of numbers.
6 5 4 3 2 1 0 - Bit #
| | | | | | |
| | | | | | `-- add 1 if visible
| | | | | `---- add 2 if visible
| | | | `------ add 4 if visible
| | | `-------- add 8 if visible
| | `---------- add 16 if visible
| `------------ add 32 if visible
`-------------- add 64 if visible
For example, the number 69 (decimal) is on the 9th row from the top, the 5th cell counting from the left. 69 = 64 + 4 + 1 = 1000101 bin.
So the cell will be visible in the first frame (where the bottom half [64 to 127] is enabled, but the top half isn't [0-63]). Then there will be 3 frames where the cell is invisible, then it will toggle on, off, and on again. Every integer 0 to 127 is represented thus.
Normally no one would ever do this. You would just write changes to the display as they happen. However, the display for this program is very limited, and so batches of actions need to be hardcoded into the viewers "ROM". Rotate L/R, Move v<>, drop, that's 66 or 46,656 different combinations of actions to hard code into the view. Instead I figured that I could make the grid able to contain temporal data in the form of turning on / off blocks. That's only 127 extra states and can represent any set of up to 6 actions.
Basically the grid can now display a very low res 7 frame monochrome video, and I've just created a video encoding format that stores frame deltas as pixels with extra baggage in the temporal domain.
Spent free time this weekend creating, coding and manually testing each cell's binary time code (verifying / testing took the longest). The grid serves as a sort of temporal test pattern.
This is the kind of unglamorous boring but necessary under the hood grinding that gamedevs do all the time.
view the rest of the comments →
[–] Tetromino [S] ago (edited ago)
Each cell in the 8x16 block represents a number 0 to 127 starting from top / left.
During the first frame we see the highest bit (bit #6) of each 7 bit number. The next frame shows the next lower bit of each number (bit #5), and so on (#4, #3, #2...). Bit #0 is the last frame.
If the block is visible it means there's a 1 instead of 0 in the binary representation.
For example, the number 69 (decimal) is on the 9th row from the top, the 5th cell counting from the left. 69 = 64 + 4 + 1 = 1000101 bin. So the cell will be visible in the first frame (where the bottom half [64 to 127] is enabled, but the top half isn't [0-63]). Then there will be 3 frames where the cell is invisible, then it will toggle on, off, and on again. Every integer 0 to 127 is represented thus.
Normally no one would ever do this. You would just write changes to the display as they happen. However, the display for this program is very limited, and so batches of actions need to be hardcoded into the viewers "ROM". Rotate L/R, Move v<>, drop, that's 66 or 46,656 different combinations of actions to hard code into the view. Instead I figured that I could make the grid able to contain temporal data in the form of turning on / off blocks. That's only 127 extra states and can represent any set of up to 6 actions.
Basically the grid can now display a very low res 7 frame monochrome video, and I've just created a video encoding format that stores frame deltas as pixels with extra baggage in the temporal domain.
Spent free time this weekend creating, coding and manually testing each cell's binary time code (verifying / testing took the longest). The grid serves as a sort of temporal test pattern.
This is the kind of unglamorous boring but necessary under the hood grinding that gamedevs do all the time.