diff options
author | Ludovic Pouzenc <lpouzenc@gmail.com> | 2013-09-15 17:27:25 +0200 |
---|---|---|
committer | Ludovic Pouzenc <lpouzenc@gmail.com> | 2013-09-15 17:27:25 +0200 |
commit | eba2d4025f2843ec9f95cfd78e51c968b49cf490 (patch) | |
tree | f5c31734280fb3de26118c44565c41a297f37006 | |
parent | ca1e187d31d6a1e49722542b6f525ad45ce32526 (diff) | |
download | mplemmings-eba2d4025f2843ec9f95cfd78e51c968b49cf490.tar.gz mplemmings-eba2d4025f2843ec9f95cfd78e51c968b49cf490.tar.bz2 mplemmings-eba2d4025f2843ec9f95cfd78e51c968b49cf490.zip |
Ajout module pour simluation. Y aplus qu'a ecrire le code
-rw-r--r-- | reverse-engineering/dosbox_snif/Makefile | 2 | ||||
-rw-r--r-- | reverse-engineering/dosbox_snif/main_validate_code.c | 17 |
2 files changed, 9 insertions, 10 deletions
diff --git a/reverse-engineering/dosbox_snif/Makefile b/reverse-engineering/dosbox_snif/Makefile index 937465b..3c38045 100644 --- a/reverse-engineering/dosbox_snif/Makefile +++ b/reverse-engineering/dosbox_snif/Makefile @@ -18,7 +18,7 @@ dump_delta: main_dump_delta.o $(OBJS) poke: main_poke.o $(OBJS) $(CC) $(LDFLAGS) -o $@ $^ -validate_code: main_validate_code.o $(OBJS) +validate_code: main_validate_code.o $(OBJS) dos_lemm_sim.o $(CC) $(LDFLAGS) -o $@ $^ int16todec: int16todec.o diff --git a/reverse-engineering/dosbox_snif/main_validate_code.c b/reverse-engineering/dosbox_snif/main_validate_code.c index fb76c0b..4548b3d 100644 --- a/reverse-engineering/dosbox_snif/main_validate_code.c +++ b/reverse-engineering/dosbox_snif/main_validate_code.c @@ -1,4 +1,5 @@ #include "dos_lemm.h" +#include "dos_lemm_sim.h" #include "rsp.h" #include "rsp_lemm.h" #include "utils.h" @@ -19,7 +20,6 @@ int main(int argc, char *argv[]) { unsigned int bs=0x100; /* RSP memdump block size */ struct game_data g_before, g_after, g_simulated, *g; - struct _lemm_data *lemm; hex_byte[2]='\0'; @@ -83,15 +83,14 @@ int main(int argc, char *argv[]) { //printf("\n"); if ( g == &g_before ) { - //TODO : exec local func + // Exec simulation + memcpy(&g_simulated,&g_before,sizeof(struct game_data)); + move_lemmings(&g_simulated); } else { - //TODO : exec comparison on states - lemm = g_after.lemmings; - //printf("g_after.paused == %x (off %02x)\n", g_after.paused, (void *)&g_after.paused - (void *)&g); - printf("g_after.lemm_spawned_count == %x (off %02x)\n", g_after.lemm_spawned_count, (void *)&g_after.lemm_spawned_count - (void *)&g_after); - printf("g_after.lemm_out_count == %x (off %02x)\n", g_after.lemm_out_count, (void *)&g_after.lemm_out_count - (void *)&g_after); - printf("g_after.lemm_level_count == %x (off %02x)\n", g_after.lemm_level_count, (void *)&g_after.lemm_level_count - (void *)&g_after); - printf("lemm->draw_hint == %x (off %02x)\n", lemm->draw_hint, (void *)&lemm->draw_hint - (void *)&g_after); + // Compare simulation results and orignal code results + if ( game_data_diff(&g_simulated, &g_after) != 0 ) { + (void) scanf("nothing"); + } } } |