summaryrefslogtreecommitdiff
path: root/trans.c
diff options
context:
space:
mode:
Diffstat (limited to 'trans.c')
-rw-r--r--trans.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/trans.c b/trans.c
new file mode 100644
index 0000000..0b6e25e
--- /dev/null
+++ b/trans.c
@@ -0,0 +1,39 @@
+#include "68kinst.h"
+#include "m68k_to_x86.h"
+#include "mem.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char ** argv)
+{
+ long filesize;
+ unsigned short *filebuf;
+ char disbuf[1024];
+ size_t size = 1024 * 1024;
+ uint8_t * transbuf = alloc_code(&size);
+ uint8_t *trans_cur, *end;
+ unsigned short * cur;
+ x86_68k_options opts;
+ m68k_context context;
+ FILE * f = fopen(argv[1], "rb");
+ fseek(f, 0, SEEK_END);
+ filesize = ftell(f);
+ fseek(f, 0, SEEK_SET);
+ filebuf = malloc(filesize);
+ fread(filebuf, 2, filesize/2, f);
+ fclose(f);
+ for(cur = filebuf; cur - filebuf < (filesize/2); ++cur)
+ {
+ *cur = (*cur >> 8) | (*cur << 8);
+ }
+ init_x86_68k_opts(&opts);
+ init_68k_context(&context, opts.native_code_map, &opts);
+ //cartridge ROM
+ context.mem_pointers[0] = filebuf;
+ context.target_cycle = 0x7FFFFFFF;
+ //work RAM
+ context.mem_pointers[1] = malloc(64 * 1024);
+ translate_m68k_stream(transbuf, transbuf + size, 0, &context);
+ start_68k_context(&context, 0);
+ return 0;
+}