Savegames/es: Difference between revisions
| No edit summary | No edit summary | ||
| Line 43: | Line 43: | ||
| Los siguientes dos bytes que siguen al blockmap son el CRC16 (con 0xFFFF como valor inicial (como el modbus)) de los primeros 8 bytes del blockmap. | Los siguientes dos bytes que siguen al blockmap son el CRC16 (con 0xFFFF como valor inicial (como el modbus)) de los primeros 8 bytes del blockmap. | ||
| Entonces hay el journal. | |||
| La estructura del journal es: | |||
| <pre> | <pre> | ||
| struct sector_entry { | struct sector_entry { | ||
|          uint8_t virt_sec;       //  |          uint8_t virt_sec;       // Asignado al sector | ||
|          uint8_t prev_virt_sec;  //  |          uint8_t prev_virt_sec;  // Sector físico previamente asignado | ||
|          uint8_t phys_sec;       //  |          uint8_t phys_sec;       // Asignado desde el sector | ||
|          uint8_t prev_phys_sec;  //  |          uint8_t prev_phys_sec;  // Sector virtual previamente asignado | ||
|          uint8_t phys_realloc_cnt;       //  |          uint8_t phys_realloc_cnt;       // Cantidas de veces que el sector físico ha sido reasignado | ||
|          uint8_t virt_realloc_cnt;       //  |          uint8_t virt_realloc_cnt;       // Cantidas de veces que el sector virtual ha sido reasignado | ||
|          uint8_t chksums[8]; |          uint8_t chksums[8]; | ||
| } __attribute__((__packed__)); | } __attribute__((__packed__)); | ||
| Line 63: | Line 63: | ||
| </pre> | </pre> | ||
| Con la constante mágica 0x080d6ce0. | |||
| Los checksums de las entradas del blockmap/journal trabajan de la siguiente forma: | |||
| *  | * cada byte es el checksum de un bloque de tamaño 0x200 bytes encriptado | ||
| *  | * para calcular el checksum, el CRC16 del bloque ( con el valor iniciar 0xFFFF) es calculado, y los dos bytes del CRC16 son XOReados juntos para producir un checksum de 8 bits. | ||
| ===  | === Particiones=== | ||
| Puede haber múltiples particiones en el chip.   | |||
| Las particiones están representadas por tablas de manchas del DIFI dentro de la estructura DISA. | |||
| El orden de las manchas del DIFI es el orden de las particiones del chip. | |||
| '''DISA''' | '''DISA''' | ||
| Line 82: | Line 82: | ||
| {| class="wikitable" | {| class="wikitable" | ||
| |- | |- | ||
| !  | ! Principio | ||
| !  | ! Longitud | ||
| !  | ! Descripción | ||
| |- | |- | ||
| | 0x00 | | 0x00 | ||
| Line 92: | Line 92: | ||
| | 0x04 | | 0x04 | ||
| | 4 | | 4 | ||
| |  | | Desconocido (puede ser mágico, puede ser el mismo que todas las partidas) | ||
| |- | |- | ||
| | 0x08 | | 0x08 | ||
| | 8 | | 8 | ||
| |  | | Tamaño de la tabla de particiones | ||
| |- | |- | ||
| | 0x10 | | 0x10 | ||
| | 8 | | 8 | ||
| | Offset  | | Offset a la partición primaria de la tabla del DISA | ||
| |- | |- | ||
| | 0x18 | | 0x18 | ||
| | 8 | | 8 | ||
| | Offset  | | Offset a la partición secundaria de la tabla del DISA | ||
| |- | |- | ||
| | 0x20 | | 0x20 | ||
| | 8 | | 8 | ||
| |  | | Longitud de la tabla de particiones | ||
| |- | |- | ||
| | 0x28 | | 0x28 | ||
| | 8 | | 8 | ||
| |  | | Offset de la entrada de guardado en la tabla de particiones | ||
| |- | |- | ||
| | 0x30 | | 0x30 | ||
| | 8 | | 8 | ||
| |  | | Longitud de la entrada de guardado en la tabla de particiones | ||
| |- | |- | ||
| | 0x38 | | 0x38 | ||
| | 8 | | 8 | ||
| |  | | Offset de la entrada de datos en la tabla de particiones | ||
| |- | |- | ||
| | 0x40 | | 0x40 | ||
| | 8 | | 8 | ||
| |  | | Longitud de la entrada de datos en la tabla de particiones | ||
| |- | |- | ||
| | 0x48 | | 0x48 | ||
| | 8 | | 8 | ||
| |  | | Offset de la partición de guardado | ||
| |- | |- | ||
| | 0x50 | | 0x50 | ||
| | 8 | | 8 | ||
| |  | | Longitud de la partición de guardado | ||
| |- | |- | ||
| | 0x58 | | 0x58 | ||
| | 8 | | 8 | ||
| |  | | Offset de la partición de datos | ||
| |- | |- | ||
| | 0x60 | | 0x60 | ||
| | 8 | | 8 | ||
| |  | | Longitud de la partición de datos | ||
| |- | |- | ||
| | 0x68 | | 0x68 | ||
| | 4 | | 4 | ||
| |  | | Tabla activa (y el offset hacia la filebase) | ||
| |- | |- | ||
| | 0x6C | | 0x6C | ||
| | 0x20 | | 0x20 | ||
| | Hash  | | Hash desde la partición activa | ||
| |- | |- | ||
| | 0x8C | | 0x8C | ||
| | 4*29 | | 4*29 | ||
| |  | | Desconocido | ||
| |} | |} | ||