mirror of
https://github.com/zeldaret/mm.git
synced 2024-11-24 05:19:53 +00:00
d5b71bd0f5
* ObjTree OK, data imported * EnMs OK, data imported * And the spec * OK * Some minor edits * A lot of preliminary stuff * Mostly complete beginning * First draft of other functions doc * Whoops, forgot the GlobalContext pad * Draw functions (minus colour), create Data * Data * gitignore, some progress on documenting * Review comments, continue documenting * spec * Finish off documentation * undefined_syms * Add a couple of todos * One more * At least add tools for object decomp * Start conversion table stuff * Document ObjTree * Document EnMs * Add more tables to conversions * Maide's review * Review * Review * Typos and incomplete thoughts * Update vscode.md * Correct function/variable names * Review suggestions * Format * Missed one * Rename functions and format * Fix ObjTree * Update actorfixer.py, fix some variable names * Some review * Review suggestions * More review * Hopefully fix all the thisx references * Missed one
8.5 KiB
8.5 KiB
Useful conversions
This article contains some useful conversion tables. Beware that we will omit the 0x
prefix on hex numbers: it will be evident from context which base is intended.
- Degrees and hex/binary angles
- Round decimal numbers in hex
- Extra large
- Shifts/powers of 2 in dec and hex
Degrees and hex/binary angles
Conversion of degrees to binary angles in the two common ways, that give different answers. Table is produced using this script:
$ printf "%s\t%s\t%s\n" "d" "d * 2^16/360" "2^16/360 * d" ; for i in {0..360..5} ; do printf "%d\t%X\t\t%X\n" "$i" $(( "$i" * 0x10000 / 360 )) $(( 0x10000 / 360 * "$i" )) ; done
Small angles
d |
d * 2^16/360 |
2^16/360 * d |
---|---|---|
0 | 0 | 0 |
1 | B6 | B6 |
2 | 16C | 16C |
3 | 222 | 222 |
4 | 2D8 | 2D8 |
5 | 38E | 38E |
6 | 444 | 444 |
7 | 4FA | 4FA |
8 | 5B0 | 5B0 |
9 | 666 | 666 |
10 | 71C | 71C |
11 | 7D2 | 7D2 |
12 | 888 | 888 |
13 | 93E | 93E |
14 | 9F4 | 9F4 |
15 | AAA | AAA |
16 | B60 | B60 |
17 | C16 | C16 |
18 | CCC | CCC |
19 | D82 | D82 |
20 | E38 | E38 |
21 | EEE | EEE |
22 | FA4 | FA4 |
23 | 105B | 105A |
24 | 1111 | 1110 |
25 | 11C7 | 11C6 |
26 | 127D | 127C |
27 | 1333 | 1332 |
28 | 13E9 | 13E8 |
29 | 149F | 149E |
30 | 1555 | 1554 |
Larger angles
d |
d * 2^16/360 |
2^16/360 * d |
---|---|---|
0 | 0 | 0 |
5 | 38E | 38E |
10 | 71C | 71C |
15 | AAA | AAA |
20 | E38 | E38 |
25 | 11C7 | 11C6 |
30 | 1555 | 1554 |
35 | 18E3 | 18E2 |
40 | 1C71 | 1C70 |
45 | 2000 | 1FFE |
50 | 238E | 238C |
55 | 271C | 271A |
60 | 2AAA | 2AA8 |
65 | 2E38 | 2E36 |
70 | 31C7 | 31C4 |
75 | 3555 | 3552 |
80 | 38E3 | 38E0 |
85 | 3C71 | 3C6E |
90 | 4000 | 3FFC |
95 | 438E | 438A |
100 | 471C | 4718 |
105 | 4AAA | 4AA6 |
110 | 4E38 | 4E34 |
115 | 51C7 | 51C2 |
120 | 5555 | 5550 |
125 | 58E3 | 58DE |
130 | 5C71 | 5C6C |
135 | 6000 | 5FFA |
140 | 638E | 6388 |
145 | 671C | 6716 |
150 | 6AAA | 6AA4 |
155 | 6E38 | 6E32 |
160 | 71C7 | 71C0 |
165 | 7555 | 754E |
170 | 78E3 | 78DC |
175 | 7C71 | 7C6A |
180 | 8000 | 7FF8 |
185 | 838E | 8386 |
190 | 871C | 8714 |
195 | 8AAA | 8AA2 |
200 | 8E38 | 8E30 |
205 | 91C7 | 91BE |
210 | 9555 | 954C |
215 | 98E3 | 98DA |
220 | 9C71 | 9C68 |
225 | A000 | 9FF6 |
230 | A38E | A384 |
235 | A71C | A712 |
240 | AAAA | AAA0 |
245 | AE38 | AE2E |
250 | B1C7 | B1BC |
255 | B555 | B54A |
260 | B8E3 | B8D8 |
265 | BC71 | BC66 |
270 | C000 | BFF4 |
275 | C38E | C382 |
280 | C71C | C710 |
285 | CAAA | CA9E |
290 | CE38 | CE2C |
295 | D1C7 | D1BA |
300 | D555 | D548 |
305 | D8E3 | D8D6 |
310 | DC71 | DC64 |
315 | E000 | DFF2 |
320 | E38E | E380 |
325 | E71C | E70E |
330 | EAAA | EA9C |
335 | EE38 | EE2A |
340 | F1C7 | F1B8 |
345 | F555 | F546 |
350 | F8E3 | F8D4 |
355 | FC71 | FC62 |
360 | 10000 | FFF0 |
Similarly for small angles with a smaller increment:
Round decimal numbers in hex
printf "%s\t%s\n" "dec" "hex" ; for i in {0..100..5} ; do printf "%d\t%X\n" "$i" "$i" ; done
Small
dec | hex |
---|---|
0 | 0 |
5 | 5 |
10 | A |
15 | F |
20 | 14 |
25 | 19 |
30 | 1E |
35 | 23 |
40 | 28 |
45 | 2D |
50 | 32 |
55 | 37 |
60 | 3C |
65 | 41 |
70 | 46 |
75 | 4B |
80 | 50 |
85 | 55 |
90 | 5A |
95 | 5F |
100 | 64 |
Medium
dec | hex |
---|---|
100 | 64 |
150 | 96 |
200 | C8 |
250 | FA |
300 | 12C |
350 | 15E |
400 | 190 |
450 | 1C2 |
500 | 1F4 |
550 | 226 |
600 | 258 |
650 | 28A |
700 | 2BC |
750 | 2EE |
800 | 320 |
850 | 352 |
900 | 384 |
950 | 3B6 |
1000 | 3E8 |
Large
dec | hex |
---|---|
1000 | 3E8 |
1500 | 5DC |
2000 | 7D0 |
2500 | 9C4 |
3000 | BB8 |
3500 | DAC |
4000 | FA0 |
4500 | 1194 |
5000 | 1388 |
5500 | 157C |
6000 | 1770 |
6500 | 1964 |
7000 | 1B58 |
7500 | 1D4C |
8000 | 1F40 |
8500 | 2134 |
9000 | 2328 |
9500 | 251C |
10000 | 2710 |
Extra large
dec | hex |
---|---|
10000 | 2710 |
11000 | 2AF8 |
12000 | 2EE0 |
13000 | 32C8 |
14000 | 36B0 |
15000 | 3A98 |
16000 | 3E80 |
17000 | 4268 |
18000 | 4650 |
19000 | 4A38 |
20000 | 4E20 |
21000 | 5208 |
22000 | 55F0 |
23000 | 59D8 |
24000 | 5DC0 |
25000 | 61A8 |
26000 | 6590 |
27000 | 6978 |
28000 | 6D60 |
29000 | 7148 |
30000 | 7530 |
Shifts/powers of 2 in dec and hex
$ printf "%s\t%s\t%s\n" "n" "1 << n (hex)" "1 << n (dec)" ; for i in {0..15..1} ; do printf "%d\t%X\t\t%d\n" "$i" $(( 1 << "$i" )) $(( 1 << "$i" )) ; done
1 << n
is the same as 2^n
.
n |
1 << n (hex) |
1 << n (dec) |
---|---|---|
0 | 1 | 1 |
1 | 2 | 2 |
2 | 4 | 4 |
3 | 8 | 8 |
4 | 10 | 16 |
5 | 20 | 32 |
6 | 40 | 64 |
7 | 80 | 128 |
8 | 100 | 256 |
9 | 200 | 512 |
10 | 400 | 1024 |
11 | 800 | 2048 |
12 | 1000 | 4096 |
13 | 2000 | 8192 |
14 | 4000 | 16384 |
15 | 8000 | 32768 |