aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec/emu_if.c
blob: cee61cce2854ae09128f7f2bfe45e9cae4cb8e58 (plain)
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
};