From The Mana World
m (Wushin moved page Bit mask tutorial to Dev:Bit mask tutorial) |
|||
Line 1: | Line 1: | ||
==Bit Masking Easy Reference Chart== | ==Bit Masking Easy Reference Chart== | ||
<table> | |||
<tr> | |||
<th>long word</th> | |||
<td colspan="32">0</td> | |||
</tr> | |||
<tr> | |||
<th>word</th> | |||
<td colspan="16">0</td><td colspan="16">1</td> | |||
</tr> | |||
<tr> | |||
<th>byte</th> | |||
<td colspan="8">0</td><td colspan="8">1</td><td colspan="8">2</td><td colspan="8">3</td> | |||
</tr> | |||
<tr> | |||
<th>nibble</th> | |||
<td colspan="4">0</td><td colspan="4">1</td><td colspan="4">2</td><td colspan="4">3</td> | |||
<td colspan="4">4</td><td colspan="4">5</td><td colspan="4">6</td><td colspan="4">7</td> | |||
</tr> | |||
<tr> | |||
<th>2-bit</th> | |||
<td colspan="2">0</td><td colspan="2">1</td><td colspan="2">2</td><td colspan="2">3</td> | |||
<td colspan="2">4</td><td colspan="2">5</td><td colspan="2">6</td><td colspan="2">7</td> | |||
<td colspan="2">8</td><td colspan="2">9</td><td colspan="2">10</td><td colspan="2">11</td> | |||
<td colspan="2">12</td><td colspan="2">13</td><td colspan="2">14</td><td colspan="2">15</td> | |||
</tr> | |||
<tr> | |||
<th>bit</th> | |||
<td>0</td><td>1</td><td>2</td><td>3</td> | |||
<td>4</td><td>5</td><td>6</td><td>7</td> | |||
<td>8</td><td>9</td><td>10</td><td>11</td> | |||
<td>12</td><td>13</td><td>14</td><td>15</td> | |||
<td>16</td><td>17</td><td>18</td><td>19</td> | |||
<td>20</td><td>21</td><td>22</td><td>23</td> | |||
<td>24</td><td>25</td><td>26</td><td>27</td> | |||
<td>28</td><td>29</td><td>30</td><td>31</td> | |||
</tr> | |||
</table> | |||
* All variables haves 4 Bytes, 8 Nibbles, 16 2Bits and/or 32 bits. | * All variables haves 1 Long Word, 2 Words, 4 Bytes, 8 Nibbles, 16 2Bits and/or 32 bits. | ||
** Byte range 0-255 | ** Byte range 0-255 | ||
** Nibble range 0-15 | ** Nibble range 0-15 |
Revision as of 18:08, 7 April 2016
Bit Masking Easy Reference Chart
long word | 0 | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
word | 0 | 1 | ||||||||||||||||||||||||||||||
byte | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
nibble | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||||||||||||||||||||||||
2-bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ||||||||||||||||
bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- All variables haves 1 Long Word, 2 Words, 4 Bytes, 8 Nibbles, 16 2Bits and/or 32 bits.
- Byte range 0-255
- Nibble range 0-15
- 2Bit range 0-3
- bit range 0 or 1
One Nibble Translated
- Binary = Decimal
- 0000 = 0
- 0001 = 1
- 0010 = 2
- 0011 = 3
- 0100 = 4
- 0101 = 5
- 0110 = 6
- 0111 = 7
- 1000 = 8
- 1001 = 9
- 1010 = 10
- 1011 = 11
- 1100 = 12
- 1101 = 13
- 1110 = 14
- 1111 = 15
- Note: Therefore Setting Bits 4-7 to 1 will make Nibble 1 15. Therefore Setting Bits 0-7 will make Nibble 0 & 1 15, and Byte 0 255
Linear Quest Var
- BYTE:
- 0: Step1.
- 1: Step2.
- ...
- 255: Step256.
- Nibble:
- 0: Step1.
- 1: Step2.
- ...
- 14: Step16.
Non-linear Quest Var
- BYTE: Main Quest Line
- NIBBLE: Current-Step
- BIT: Step
- BIT: Step
- BIT: Step
- BIT: Step
- NIBBLE: Sub-Quest
- 0-15: Step 1-16
- NIBBLE: Current-Step
Dev Note: There are plans to make 64 bit quest variables.
001-1,40,36,0|script|BitMaskDebug|175
{
mes "[Bit Mask Debug]"; mes "\"What you wyou like to do?\""; menu "Shift Byte 1.", L_ByteShift, "Shift Nibble 0.", L_NibbleShift, "Shift Bit 4.", L_BitShift, "Done.", L_Close;
L_ByteShift:
set @debugexample, ((DEBUGEXAMPLE & BYTE_1_MASK) >> BYTE_1_SHIFT); message strcharinfo(0), @debugexample; if (@debugexample == 175) goto L_ByteUnset;
mes "Byte 1 set to 175"; set DEBUGEXAMPLE, (DEBUGEXAMPLE & ~(BYTE_1_MASK) | (175 << BYTE_1_SHIFT)); goto L_Close;
L_ByteUnset:
mes "Byte 1 set to 0"; set DEBUGEXAMPLE, (DEBUGEXAMPLE & ~(BYTE_1_MASK) | (0 << BYTE_1_SHIFT)); goto L_Close;
L_NibbleShift:
set @debugexample, ((DEBUGEXAMPLE & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT); message strcharinfo(0), @debugexample; if (@debugexample == 10) goto L_NibbleUnset;
mes "Nibble 0 set to 10"; set DEBUGEXAMPLE, (DEBUGEXAMPLE & ~(NIBBLE_0_MASK) | (10 << NIBBLE_0_SHIFT)); goto L_Close;
L_NibbleUnset:
mes "Nibble 0 set to 0"; set DEBUGEXAMPLE, (DEBUGEXAMPLE & ~(NIBBLE_0_MASK) | (0 << NIBBLE_0_SHIFT)); goto L_Close;
L_BitShift:
set @debugexample, ((DEBUGEXAMPLE & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT); message strcharinfo(0), @debugexample; if (DEBUGEXAMPLE & (1 << 4)) goto L_BitUnset;
mes "Bit 4 Set to 1"; set DEBUGEXAMPLE, DEBUGEXAMPLE | (1 << 4); set DEBUGEXAMPLE, DEBUGEXAMPLE | (1 << 5); set DEBUGEXAMPLE, DEBUGEXAMPLE | (1 << 6); set DEBUGEXAMPLE, DEBUGEXAMPLE | (1 << 7); goto L_Close;
L_BitUnset:
mes "Bit 4 Set to 0"; set DEBUGEXAMPLE, DEBUGEXAMPLE &~ (1 << 4); set DEBUGEXAMPLE, DEBUGEXAMPLE &~ (1 << 5); set DEBUGEXAMPLE, DEBUGEXAMPLE &~ (1 << 6); set DEBUGEXAMPLE, DEBUGEXAMPLE &~ (1 << 7); goto L_Close;
L_Close:
set @debugexample, 0; close;
OnInit:
if (debug) end; disablenpc "BitMaskDebug"; end;
}