view trans.c @ 103:a71544cd01ea

Don't pre-emptively translate code at interrupt vectors as some PD ROMs have these pointing at junk. Need some kind of heuristic for detecting garbage if I'm going to translate them ahead of time by default.
author Mike Pavone <pavone@retrodev.com>
date Thu, 27 Dec 2012 22:48:54 -0800
parents 4717146a7606
children e657a99b5abf
line wrap: on
line source

#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);
	m68k_reset(&context);
	return 0;
}