Участник:Dim568: различия между версиями
Перейти к навигации
Перейти к поиску
Dim568 (обсуждение | вклад) |
Dim568 (обсуждение | вклад) |
||
Строка 30: | Строка 30: | ||
| 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21 | | 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21 | ||
|- | |- | ||
− | | colspan="2" | H3 || colspan="2" | H4 || | + | | colspan="2" | H3 || colspan="2" | H4 || colspan="2" | H5||colspan="2" | H6 ||colspan="2" | H7 ||colspan="2" | ?? ||colspan="2" | H9 |
|} | |} | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
− | uint16_t | + | uint16_t VAL01 = ((H3/4)+1)*16; |
− | VAL1 += 0; // | + | VAL1 += 0; // Нужно проверить, при запуске равен нулю, но бывает ли иным? |
+ | uint16_t VAL02 = (H4*6)+VAL01; | ||
+ | uint16_t VAL03 = ES_REG_VAL; // Портит всю малину, нужно понять можно ли без значения регистра | ||
+ | VAL03 += (H7/16)+1 | ||
+ | uint16_t VAL04 = VAL03 + (((H9+3)*0x26)/16)+1; // Значение используется в алгоритме когда H2 равен 1, нужно проследить дальше | ||
+ | uint16_t VAL05 = ((H6&0x0F)<<12); | ||
+ | uint16_t VAL06 = H5/16; | ||
+ | VAL05 += VAL06; | ||
+ | uint16_t VAL07 = VAL04 + VAL05; | ||
</syntaxhighlight> | </syntaxhighlight> |
Версия 18:08, 8 сентября 2020
Черновик
Silmarils IO Structure
Base Header
0 | 1 | 2 | 3 | 4 | 5 |
H0 | H1 | H2 |
H2 - используется как флаг для определения алгоритма обработки файла
H2 равен 1
uint16_t VAL1 = H0 - 6
uint16_t _H1 = H1&0xFEFF;
int8_t Control_1 = (int8_t)(_H1>>8);
if(Control_1 > 0){
_H1 &= 0xFF;
}else{
}
H2 равен 0
Дочитываются дополнительные 16 байт заголовка
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
H3 | H4 | H5 | H6 | H7 | ?? | H9 |
uint16_t VAL01 = ((H3/4)+1)*16;
VAL1 += 0; // Нужно проверить, при запуске равен нулю, но бывает ли иным?
uint16_t VAL02 = (H4*6)+VAL01;
uint16_t VAL03 = ES_REG_VAL; // Портит всю малину, нужно понять можно ли без значения регистра
VAL03 += (H7/16)+1
uint16_t VAL04 = VAL03 + (((H9+3)*0x26)/16)+1; // Значение используется в алгоритме когда H2 равен 1, нужно проследить дальше
uint16_t VAL05 = ((H6&0x0F)<<12);
uint16_t VAL06 = H5/16;
VAL05 += VAL06;
uint16_t VAL07 = VAL04 + VAL05;