summaryrefslogtreecommitdiff
path: root/reverse-engineering/dosbox_snif/main_validate_code.c
diff options
context:
space:
mode:
Diffstat (limited to 'reverse-engineering/dosbox_snif/main_validate_code.c')
-rw-r--r--reverse-engineering/dosbox_snif/main_validate_code.c17
1 files changed, 8 insertions, 9 deletions
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");
+ }
}
}