diff options
| author | hrydgard <hrydgard@gmail.com> | 2009-05-05 20:56:40 +0000 |
|---|---|---|
| committer | hrydgard <hrydgard@gmail.com> | 2009-05-05 20:56:40 +0000 |
| commit | 05efaeeef1e9417de629fac3eacc90fd977f09fa (patch) | |
| tree | 68bd3f439949732bc05438651f34ba6ef827d731 /Source/DSPSpy/util/printresult.cpp | |
| parent | 2a28a1e857d26b99600747264c4810c1e0c7be0c (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.cpp | 55 |
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); +} |
