213 lines
4.7 KiB
C++
213 lines
4.7 KiB
C++
/******************************************************************************/
|
|
/* Mednafen NEC PC-FX Emulation Module */
|
|
/******************************************************************************/
|
|
/* king.h:
|
|
** Copyright (C) 2006-2016 Mednafen Team
|
|
**
|
|
** This program is free software; you can redistribute it and/or
|
|
** modify it under the terms of the GNU General Public License
|
|
** as published by the Free Software Foundation; either version 2
|
|
** of the License, or (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program; if not, write to the Free Software Foundation, Inc.,
|
|
** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef __PCFX_KING_H
|
|
#define __PCFX_KING_H
|
|
|
|
namespace MDFN_IEN_PCFX
|
|
{
|
|
|
|
//
|
|
// Be sure to keep the numbered/lettered *_GSREG_* registers(MPROG0*, AFFIN*, etc.) here in contiguous sequential order(since we do stuff like "- KING_GSREG_MPROG0"
|
|
// in king.cpp.
|
|
//
|
|
|
|
void KING_StartFrame(VDC **, EmulateSpecStruct *espec);
|
|
void KING_SetPixelFormat();
|
|
uint16 FXVCE_Read16(uint32 A);
|
|
void FXVCE_Write16(uint32 A, uint16 V);
|
|
|
|
#ifdef WANT_DEBUGGER
|
|
enum
|
|
{
|
|
FXVCE_GSREG_Line = 0,
|
|
|
|
FXVCE_GSREG_PRIO0,
|
|
FXVCE_GSREG_PRIO1,
|
|
|
|
FXVCE_GSREG_PICMODE,
|
|
FXVCE_GSREG_PALRWOF,
|
|
FXVCE_GSREG_PALRWLA,
|
|
|
|
FXVCE_GSREG_PALOFS0,
|
|
FXVCE_GSREG_PALOFS1,
|
|
FXVCE_GSREG_PALOFS2,
|
|
FXVCE_GSREG_PALOFS3,
|
|
|
|
FXVCE_GSREG_CCR,
|
|
FXVCE_GSREG_BLE,
|
|
FXVCE_GSREG_SPBL,
|
|
|
|
FXVCE_GSREG_COEFF0,
|
|
FXVCE_GSREG_COEFF1,
|
|
FXVCE_GSREG_COEFF2,
|
|
FXVCE_GSREG_COEFF3,
|
|
FXVCE_GSREG_COEFF4,
|
|
FXVCE_GSREG_COEFF5,
|
|
|
|
FXVCE_GSREG_CKeyY,
|
|
FXVCE_GSREG_CKeyU,
|
|
FXVCE_GSREG_CKeyV
|
|
};
|
|
|
|
uint32 FXVCE_GetRegister(const unsigned int id, char* special, const uint32 special_len);
|
|
void FXVCE_SetRegister(const unsigned int id, uint32 value);
|
|
#endif
|
|
|
|
uint8 KING_Read8(const v810_timestamp_t timestamp, uint32 A);
|
|
uint16 KING_Read16(const v810_timestamp_t timestamp, uint32 A);
|
|
|
|
void KING_Write8(const v810_timestamp_t timestamp, uint32 A, uint8 V);
|
|
void KING_Write16(const v810_timestamp_t timestamp, uint32 A, uint16 V);
|
|
void KING_Init(void) MDFN_COLD;
|
|
void KING_Reset(const v810_timestamp_t timestamp) MDFN_COLD;
|
|
|
|
uint16 KING_GetADPCMHalfWord(int ch);
|
|
|
|
uint8 KING_MemPeek(uint32 A);
|
|
|
|
uint8 KING_RB_Fetch();
|
|
|
|
void KING_SetLayerEnableMask(uint64 mask);
|
|
|
|
#ifdef WANT_DEBUGGER
|
|
enum
|
|
{
|
|
KING_GSREG_AR = 0,
|
|
KING_GSREG_MPROGADDR,
|
|
KING_GSREG_MPROGCTRL,
|
|
|
|
KING_GSREG_PAGESET,
|
|
KING_GSREG_RTCTRL,
|
|
KING_GSREG_RKRAMA,
|
|
KING_GSREG_RSTART,
|
|
KING_GSREG_RCOUNT,
|
|
KING_GSREG_RIRQLINE,
|
|
KING_GSREG_KRAMWA,
|
|
KING_GSREG_KRAMRA,
|
|
KING_GSREG_DMATA,
|
|
KING_GSREG_DMATS,
|
|
KING_GSREG_DMASTT,
|
|
KING_GSREG_ADPCMCTRL,
|
|
|
|
KING_GSREG_ADPCMBM0,
|
|
KING_GSREG_ADPCMBM1,
|
|
|
|
KING_GSREG_ADPCMPA0,
|
|
KING_GSREG_ADPCMPA1,
|
|
|
|
KING_GSREG_ADPCMSA0,
|
|
KING_GSREG_ADPCMSA1,
|
|
|
|
KING_GSREG_ADPCMIA0,
|
|
KING_GSREG_ADPCMIA1,
|
|
|
|
KING_GSREG_ADPCMEA0,
|
|
KING_GSREG_ADPCMEA1,
|
|
|
|
KING_GSREG_ADPCMStat,
|
|
KING_GSREG_Reg01,
|
|
KING_GSREG_Reg02,
|
|
KING_GSREG_Reg03,
|
|
KING_GSREG_SUBCC,
|
|
KING_GSREG_DB,
|
|
KING_GSREG_BSY,
|
|
KING_GSREG_REQ,
|
|
KING_GSREG_ACK,
|
|
KING_GSREG_MSG,
|
|
KING_GSREG_IO,
|
|
KING_GSREG_CD,
|
|
KING_GSREG_SEL,
|
|
|
|
KING_GSREG_BGMODE,
|
|
KING_GSREG_BGPRIO,
|
|
KING_GSREG_BGSCRM,
|
|
|
|
KING_GSREG_BGSIZ0,
|
|
KING_GSREG_BGSIZ1,
|
|
KING_GSREG_BGSIZ2,
|
|
KING_GSREG_BGSIZ3,
|
|
|
|
KING_GSREG_BGXSC0,
|
|
KING_GSREG_BGXSC1,
|
|
KING_GSREG_BGXSC2,
|
|
KING_GSREG_BGXSC3,
|
|
|
|
KING_GSREG_BGYSC0,
|
|
KING_GSREG_BGYSC1,
|
|
KING_GSREG_BGYSC2,
|
|
KING_GSREG_BGYSC3,
|
|
|
|
KING_GSREG_BGBATS,
|
|
KING_GSREG_BGBAT0,
|
|
KING_GSREG_BGBAT1,
|
|
KING_GSREG_BGBAT2,
|
|
KING_GSREG_BGBAT3,
|
|
|
|
KING_GSREG_BGCGS,
|
|
KING_GSREG_BGCG0,
|
|
KING_GSREG_BGCG1,
|
|
KING_GSREG_BGCG2,
|
|
KING_GSREG_BGCG3,
|
|
|
|
KING_GSREG_AFFINA,
|
|
KING_GSREG_AFFINB,
|
|
KING_GSREG_AFFINC,
|
|
KING_GSREG_AFFIND,
|
|
|
|
KING_GSREG_AFFINX,
|
|
KING_GSREG_AFFINY,
|
|
|
|
KING_GSREG_MPROG0,
|
|
KING_GSREG_MPROG1,
|
|
KING_GSREG_MPROG2,
|
|
KING_GSREG_MPROG3,
|
|
KING_GSREG_MPROG4,
|
|
KING_GSREG_MPROG5,
|
|
KING_GSREG_MPROG6,
|
|
KING_GSREG_MPROG7,
|
|
KING_GSREG_MPROG8,
|
|
KING_GSREG_MPROG9,
|
|
KING_GSREG_MPROGA,
|
|
KING_GSREG_MPROGB,
|
|
KING_GSREG_MPROGC,
|
|
KING_GSREG_MPROGD,
|
|
KING_GSREG_MPROGE,
|
|
KING_GSREG_MPROGF
|
|
};
|
|
|
|
uint32 KING_GetRegister(const unsigned int id, char* special, const uint32 special_len);
|
|
void KING_SetRegister(const unsigned int id, uint32 value);
|
|
#endif
|
|
|
|
void KING_NotifyOfBPE(bool read, bool write);
|
|
|
|
void KING_SetLogFunc(void (*logfunc)(const char *, const char *, ...));
|
|
|
|
void KING_EndFrame(v810_timestamp_t timestamp);
|
|
void KING_ResetTS(v810_timestamp_t ts_base);
|
|
|
|
v810_timestamp_t MDFN_FASTCALL KING_Update(const v810_timestamp_t timestamp);
|
|
|
|
}
|
|
|
|
#endif
|