mirror of
https://github.com/mupen64plus/mupen64plus-rsp-cxd4.git
synced 2024-05-14 01:59:35 -04:00
93 lines
3.4 KiB
C
93 lines
3.4 KiB
C
/******************************************************************************\
|
|
* 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
|