-
Notifications
You must be signed in to change notification settings - Fork 34
/
module.h
92 lines (78 loc) · 3.35 KB
/
module.h
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
/******************************************************************************\
* Project: Module Subsystem Interface to SP Interpreter Core *
* Authors: Iconoclast *
* Release: 2018.03.17 *
* License: CC0 Public Domain Dedication *
* *
* To the extent possible under law, the author(s) have dedicated all copyright *
* and related and neighboring rights to this software to the public domain *
* worldwide. This software is distributed without any warranty. *
* *
* You should have received a copy of the CC0 Public Domain Dedication along *
* with this software. *
* If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. *
\******************************************************************************/
#ifndef _MODULE_H_
#define _MODULE_H_
#include <stdio.h>
#include "rsp.h"
typedef enum {
M_GFXTASK = 1,
M_AUDTASK = 2,
M_VIDTASK = 3,
M_NJPEGTASK = 4,
M_NULTASK = 5,
M_HVQTASK = 6,
M_HVQMTASK = 7,
NUM_KNOWN_TASK_TYPES
} OSTask_type;
#define CFG_FILE "rsp_conf.bin"
/*
* Most of the point behind this config system is to let users use HLE video
* or audio plug-ins. The other task types are used less than 1% of the time
* and only in a few games. They require simulation from within the RSP
* internally, which I have no intention to ever support. Some good research
* on a few of these special task types was done by Hacktarux in the MUPEN64
* HLE RSP plug-in, so consider using that instead for complete HLE.
*/
#define CFG_HLE_GFX (conf[0x00])
#define CFG_HLE_AUD (conf[0x01])
#define CFG_HLE_VID (conf[0x02]) /* reserved/unused */
#define CFG_HLE_JPG (conf[0x03]) /* unused */
/*
* Schedule binary dump exports to the DllConfig schedule delay queue.
*/
#define CFG_QUEUE_E_DRAM (*(pi32)(conf + 0x04))
#define CFG_QUEUE_E_DMEM (*(pi32)(conf + 0x08))
#define CFG_QUEUE_E_IMEM (*(pi32)(conf + 0x0C))
/*
* Note: This never actually made it into the configuration system.
* Instead, DMEM and IMEM are always exported on every call to DllConfig().
*/
/*
* Special switches.
* (generally for correcting RSP clock behavior on Project64 2.x)
* Also includes RSP register states debugger.
*/
#define CFG_WAIT_FOR_CPU_HOST (*(pi32)(conf + 0x10))
#define CFG_MEND_SEMAPHORE_LOCK (*(pi32)(conf + 0x14))
#define CFG_TRACE_RSP_REGISTERS (*(pi32)(conf + 0x18))
/*
* Update RSP configuration memory from local file resource.
*/
#define CHARACTERS_PER_LINE (80)
/* typical standard DOS text file limit per line */
/*
* When using a graphics plugin from specs version 1.2, LLE is not supported.
* The behavior of requesting the GBI lists should be adjusted accordingly.
*/
extern p_func GBI_phase;
NOINLINE extern void update_conf(const char* source);
NOINLINE extern void export_data_cache(void);
NOINLINE extern void export_instruction_cache(void);
#ifdef SP_EXECUTE_LOG
static FILE *output_log;
extern void step_SP_commands(u32 inst);
#endif
extern void export_SP_memory(void);
#endif