From eba2d4025f2843ec9f95cfd78e51c968b49cf490 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sun, 15 Sep 2013 17:27:25 +0200 Subject: Ajout module pour simluation. Y aplus qu'a ecrire le code --- reverse-engineering/dosbox_snif/Makefile | 2 +- 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"); + } } } -- cgit v1.2.3