1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#include <stdio.h>
#include "emu_if.h"
char invalid_code[0x100000];
void MFC0(void)
{
printf("MFC0!\n");
}
void gen_interupt()
{
printf("gen_interupt\n");
}
void check_interupt()
{
printf("check_interupt\n");
}
void read_nomem_new()
{
printf("read_nomem_new\n");
}
static void read_mem()
{
printf("read_mem %08x\n", address);
}
static void write_mem()
{
printf("write_mem %08x\n", address);
}
void (*readmem[0x10000])();
void (*readmemb[0x10000])();
void (*readmemh[0x10000])();
void (*writemem[0x10000])();
void (*writememb[0x10000])();
void (*writememh[0x10000])();
static int ari64_init()
{
size_t i;
new_dynarec_init();
for (i = 0; i < sizeof(readmem) / sizeof(readmem[0]); i++) {
readmem[i] = read_mem;
writemem[i] = write_mem;
}
memcpy(readmemb, readmem, sizeof(readmem));
memcpy(readmemh, readmem, sizeof(readmem));
memcpy(writememb, writemem, sizeof(writemem));
memcpy(writememh, writemem, sizeof(writemem));
}
static void ari64_reset()
{
/* hmh */
printf("ari64_reset\n");
}
static void ari64_execute()
{
/*
FILE *f = fopen("/mnt/ntz/dev/pnd/tmp/ram.dump", "wb");
fwrite((void *)0x80000000, 1, 0x200000, f);
fclose(f);
exit(1);
*/
printf("psxNextsCounter %d, psxNextCounter %d\n", psxNextsCounter, psxNextCounter);
printf("ari64_execute %08x\n", psxRegs.pc);
new_dyna_start(psxRegs.pc);
}
static void ari64_clear(u32 Addr, u32 Size)
{
}
static void ari64_shutdown()
{
new_dynarec_cleanup();
}
R3000Acpu psxRec = {
ari64_init,
ari64_reset,
ari64_execute,
// TODO recExecuteBlock,
ari64_clear,
ari64_shutdown
};
|