Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | Dernière révisionLes deux révisions suivantes | ||
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/15 19:35] – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
Dans le code source, la sauvegarde se fait <color # | Dans le code source, la sauvegarde se fait <color # | ||
- | elle est composée | + | <code asm> |
+ | Game_WriteSaveGame: | ||
+ | MOV AH, | ||
+ | MOV CX, | ||
+ | MOV DX, | ||
+ | MOV AH, | ||
+ | INT 0x21 ; | ||
+ | JC exitError ; | ||
+ | MOV [fhandler_SaveGame], | ||
+ | | ||
+ | exitError: | ||
+ | </ | ||
+ | On découvre ici que cette fonction ne gère **aucune** erreur, la sauvegarde | ||
+ | |||
+ | L' | ||
+ | |||
+ | 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, | ||
+ | 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 "en jeu" 3 bytes | ||
+ | |||
+ | <code asm> | ||
+ | MOV AH, | ||
+ | MOV BX, | ||
+ | INT 0x21 | ||
+ | RET | ||
+ | </ | ||
+ | |||
+ | Le fichier est composé | ||
* 1 [[# | * 1 [[# | ||
Ligne 14: | Ligne 76: | ||
une sauvegarde fait donc TOUJOURS 36885 bytes | une sauvegarde fait donc TOUJOURS 36885 bytes | ||
+ | |||
===== Block Map ===== | ===== Block Map ===== |