Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
back2root:reverse-engineering:planet-x3:part2-savegame_dat [2023/01/14 11:30] – modification externe 127.0.0.1 | back2root:reverse-engineering:planet-x3:part2-savegame_dat [2023/01/17 09:07] (Version actuelle) – frater | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
Ce fichier est un "dump mémoire" | Ce fichier est un "dump mémoire" | ||
+ | |||
+ | Le fichier est composé de 3 " | ||
+ | |||
+ | * 1 [[# | ||
+ | * 1 [[# | ||
+ | * 1 [[# | ||
+ | |||
+ | une sauvegarde fait donc TOUJOURS 36885 bytes | ||
===== Function de sauvegarde/ | ===== Function de sauvegarde/ | ||
Ligne 7: | Ligne 15: | ||
Dans le code source, la sauvegarde se fait <color # | Dans le code source, la sauvegarde se fait <color # | ||
- | elle est composée de 3 "blocs" | + | <code asm> |
+ | Game_WriteSaveGame: | ||
+ | MOV AH, | ||
+ | MOV CX, | ||
+ | MOV DX, | ||
+ | MOV AH, | ||
+ | INT 0x21 ; | ||
+ | JC exitError ; | ||
+ | MOV [fhandler_SaveGame], | ||
+ | | ||
+ | exitError: RET | ||
+ | </ | ||
+ | On découvre ici que cette fonction ne gère **aucune** erreur, la sauvegarde est simplement abandonnée en cas d' | ||
- | | + | L' |
- | * 1 [[# | + | |
- | * 1 [[# | + | Personnellement, |
+ | |||
+ | <code asm> | ||
+ | continue: | ||
+ | |||
+ | ; save current game map | ||
+ | MOV DX, | ||
+ | MOV CX, | ||
+ | MOV AH, | ||
+ | PUSH DS ; | ||
+ | MOV DS, | ||
+ | INT 0x21 ; | ||
+ | POP DS ; | ||
+ | </ | ||
+ | |||
+ | la carte du jeu est sauvegardée "tel quel" sans aucune encryption ni compression. | ||
+ | |||
+ | <code asm> | ||
+ | ; save unit/ | ||
+ | MOV BX, | ||
+ | MOV DX, | ||
+ | MOV CX,0x1010 ; Write 256 units/ | ||
+ | MOV AH, | ||
+ | INT 0x21 | ||
+ | </ | ||
+ | |||
+ | Pareil pour la structure des unités/ | ||
+ | |||
+ | <code asm> | ||
+ | ; save Ingame timers | ||
+ | MOV BX, | ||
+ | MOV DX, | ||
+ | MOV CX, | ||
+ | MOV AH, | ||
+ | INT 0x21 | ||
+ | </ | ||
+ | |||
+ | Avant de fermer le fichier, Planet X3 sauvegarde le compteur de temps générale (1 mot) et le temps " | ||
- | une sauvegarde fait donc TOUJOURS 36885 bytes | + | <code asm> |
+ | MOV AH, | ||
+ | MOV BX, | ||
+ | INT 0x21 | ||
+ | RET | ||
+ | </ | ||
===== Block Map ===== | ===== Block Map ===== |