cen64/rsp/cp2.h
2016-06-29 21:38:25 -04:00

62 lines
1.2 KiB
C

//
// rsp/cp2.h: RSP control coprocessor.
//
// CEN64: Cycle-Accurate Nintendo 64 Emulator.
// Copyright (C) 2015, Tyler J. Stachecki.
//
// This file is subject to the terms and conditions defined in
// 'LICENSE', which is part of this source code package.
//
#ifndef __rsp_cp2_h__
#define __rsp_cp2_h__
#include "common.h"
#include "rsp/rsp.h"
enum rsp_flags_t {
RSP_VCO = 0,
RSP_VCC = 1,
RSP_VCE = 2
};
enum rsp_acc_t {
RSP_ACC_LO = 16,
RSP_ACC_MD = 8,
RSP_ACC_HI = 0,
};
union aligned_rsp_3vect_t {
rsp_vect_t __align[3];
uint16_t e[24];
};
union aligned_rsp_2vect_t {
rsp_vect_t __align[2];
uint16_t e[16];
};
union aligned_rsp_1vect_t {
rsp_vect_t __align;
uint16_t e[8];
};
struct rsp_cp2 {
union aligned_rsp_1vect_t regs[32];
union aligned_rsp_2vect_t flags[3];
union aligned_rsp_3vect_t acc;
int16_t div_out;
int16_t div_in;
char dp_flag;
};
void RSP_CFC2(struct rsp *rsp, uint32_t iw, uint32_t rs, uint32_t rt);
void RSP_CTC2(struct rsp *rsp, uint32_t iw, uint32_t rs, uint32_t rt);
void RSP_MFC2(struct rsp *rsp, uint32_t iw, uint32_t rs, uint32_t rt);
void RSP_MTC2(struct rsp *rsp, uint32_t iw, uint32_t rs, uint32_t rt);
cen64_cold void rsp_cp2_init(struct rsp *rsp);
#endif