summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Pouzenc <lpouzenc@gmail.com>2013-09-15 17:27:25 +0200
committerLudovic Pouzenc <lpouzenc@gmail.com>2013-09-15 17:27:25 +0200
commiteba2d4025f2843ec9f95cfd78e51c968b49cf490 (patch)
treef5c31734280fb3de26118c44565c41a297f37006
parentca1e187d31d6a1e49722542b6f525ad45ce32526 (diff)
downloadmplemmings-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/Makefile2
-rw-r--r--reverse-engineering/dosbox_snif/main_validate_code.c17
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");
+ }
}
}