Участник:Dim568: различия между версиями

Материал из Old-Games.RU Wiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
Черновик<br />
Черновик<br />
Silmarils IO Structure
=Silmarils IO Structure=
{| class="wikitable"  style="text-align:center;" |
{| class="wikitable"  style="text-align:center;" |
== Base Header ==
|-
|-
| 0|| 1 || 2 || 3 || 4 || 5
| 0|| 1 || 2 || 3 || 4 || 5
Строка 7: Строка 9:
| colspan="2"  | H0 || colspan="2"  | H1 || colspan="2" | H2
| colspan="2"  | H0 || colspan="2"  | H1 || colspan="2" | H2
|}
|}
H2 - используется как флаг для определения алгоритма обработки файла<br />
H2 - используется как флаг для определения алгоритма обработки файла<br />


==H2 равен 1==
===H2 равен 1===
1. H0 -= 6<br />
<syntaxhighlight lang="cpp">
2. (H1>>8)&0xFE сравнивается на знак(??)
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{
}
</syntaxhighlight>
 
===H2 равен 0===
Дочитываются дополнительные 16 байт заголовка


==H2 равен 0==
{| class="wikitable"  style="text-align:center;" |
{| class="wikitable"  style="text-align:center;" |
|-
|-
| 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="16" | ???
| colspan="2" | H3 || colspan="2" | H4 ||
|}
|}
1. Дочитываются дополнительные 16 байт заголовка
 
<syntaxhighlight lang="cpp">
uint16_t VAL1 = ((H3/4)+1)*16;
VAL1 += 0; // Need check in time
</syntaxhighlight>

Версия от 17:00, 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
uint16_t VAL1 = ((H3/4)+1)*16;
VAL1 += 0; // Need check in time