[quote author=BlackAura link=board=dcemu;num=1097277534;start=30#33 date=10/14/04 at 05:33:11]The only place I'm doing any interfacing with FAME is in cpu68k, and I'm just using the existing memory read/write functions to do everything, so my setup is very simple:
Code:
struct M68K_CONTEXT cpu_contxt;
struct M68K_PROGRAM prg_fetch[] =
{
Â* Â* Â*{ 0x000000, 0x3FFFFF, (unsigned)cart_rom },
Â* Â* Â*{ 0xFF0000, 0xFFFFFF, (unsigned)work_ram },
Â* Â* Â*{ -1, -1, NULL }
};
struct M68K_DATA data_rb[] = {
Â* Â* Â*{ 0x000000, 0xFFFFFF, m68k_read_memory_8, NULL },
Â* Â* Â*{ -1, -1, NULL, NULL }
};
struct M68K_DATA data_rw[] = {
Â* Â* Â*{ 0x000000, 0xFFFFFF, m68k_read_memory_16, NULL },
Â* Â* Â*{ -1, -1, NULL, NULL }
};
struct M68K_DATA data_wb[] = {
Â* Â* Â*{ 0x000000, 0xFFFFFF, m68k_write_memory_8, NULL },
Â* Â* Â*{ -1, -1, NULL, NULL }
};
struct M68K_DATA data_ww[] = {
Â* Â* Â*{ 0x000000, 0xFFFFFF, m68k_write_memory_16, NULL },
Â* Â* Â*{ -1, -1, NULL, NULL }
};
[/quote]
Your code looks ok, but may be the handling functions are not working in the expected way.
I have set up a little example with only one memory region. Take a look at the way function handlers work:
Code:
int readbyte(int address, struct M68K_DATA *ds) {
printf("Calling read byte memory handling...\n");
printf("Direccion: %08X\n",address);
printf("Lectura: %02X\n",ram[address^1]);
return ram[address^1];
}
int readword(int address, struct M68K_DATA *ds) {
printf("Calling read word memory handling...\n");
printf("Address: %08X\n",address);
return ((unsigned *)ram)[address>>1];
}
void writebyte(int address, int data, struct M68K_DATA *ds) {
printf("Calling write byte memory handling...\n");
printf("Address: %08X Data: %08X\n",address,data);
ram[address^1] = data & 0xFF;
}
void writeword(int address, int data, struct M68K_DATA *ds) {
printf("Calling write word memory handling...\n");
printf("Address: %08X Data: %08X\n",address,data);
((unsigned *)ram)[address>>1] = data & 0xFFFF;
}
. . . .
// Defining memory map
M68K_PROGRAM p68ks[2] = {
{0x000000, 0x03FFFF, (unsigned)ram},
{-1,-1,NULL}
};
M68K_DATA d68_rb[2] = {
{0x000000, 0x03FFFF, readbyte, NULL},
{-1,-1, NULL, NULL}
};
M68K_DATA d68_rw[2] = {
{0x000000, 0x03FFFF, readword, NULL},
{-1,-1, NULL, NULL}
};
M68K_DATA d68_wb[2] = {
{0x000000, 0x03FFFF, writebyte, NULL},
{-1,-1, NULL, NULL}
};
M68K_DATA d68_ww[2] = {
{0x000000, 0x03FFFF, writeword, NULL},
{-1,-1, NULL, NULL}
};
I hope you find this useful.
Cheers.
Bookmarks