summaryrefslogtreecommitdiff
path: root/Source/DSPSpy/util/printresult.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2009-05-05 20:56:40 +0000
committerhrydgard <hrydgard@gmail.com>2009-05-05 20:56:40 +0000
commit05efaeeef1e9417de629fac3eacc90fd977f09fa (patch)
tree68bd3f439949732bc05438651f34ba6ef827d731 /Source/DSPSpy/util/printresult.cpp
parent2a28a1e857d26b99600747264c4810c1e0c7be0c (diff)
Move the printresult tool so that it doesn't mess with the DSPSpy build.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3158 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/DSPSpy/util/printresult.cpp')
-rw-r--r--Source/DSPSpy/util/printresult.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/Source/DSPSpy/util/printresult.cpp b/Source/DSPSpy/util/printresult.cpp
new file mode 100644
index 0000000000..5ea511b9af
--- /dev/null
+++ b/Source/DSPSpy/util/printresult.cpp
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <arpa/inet.h>
+
+typedef unsigned short u16;
+
+u16 reg_in[32], reg_out[1000][32];
+
+void printRegs(u16 *lastRegs, u16 *regs) {
+ for (int i = 0; i < 32; i++) {
+ if (! lastRegs || lastRegs[i] != regs[i]) {
+ printf("%02x %04x ", i, htons(regs[i]));
+ } else {
+ printf(" ");
+ }
+
+ if ((i+1) % 8 == 0)
+ printf("\n");
+ }
+}
+
+int main(int argc, char **argv) {
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage %s: <filename>\n", argv[0]);
+ exit(1);
+ }
+
+ FILE *f = fopen(argv[1], "rb");
+ int steps;
+ if (f) {
+ // read initial regs
+ fread(reg_in, 1, 32 * 2, f);
+
+ // read initial regs (guess number of steps)
+ steps = fread(reg_out, 32 * 2, 1000, f);
+ fclose(f);
+ } else {
+ fprintf(stderr, "Error opening file %s\n", argv[1]);
+ exit(1);
+ }
+
+ printf("Start with:\n");
+ printRegs(NULL, reg_in);
+
+ printf("\nStep 0:\n");
+ printRegs(reg_in, reg_out[0]);
+
+ for (int i=1;i < steps;i++) {
+ printf("\nStep %d:\n", i);
+ printRegs(reg_out[i-1], reg_out[i]);
+ }
+
+ exit(0);
+}