/*  Pcsx2 - Pc Ps2 Emulator
 *  Copyright (C) 2002-2003  Pcsx2 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
#ifndef INTERTABLES_H
#define INTERTABLES_H

extern  void (*Int_OpcodePrintTable[64])();
extern  void (*Int_SpecialPrintTable[64])();
extern  void (*Int_REGIMMPrintTable[32])();
extern  void (*Int_MMIPrintTable[64])();
extern  void (*Int_MMI0PrintTable[32])();
extern  void (*Int_MMI1PrintTable[32])();
extern  void (*Int_MMI2PrintTable[32])();
extern  void (*Int_MMI3PrintTable[32])();
extern  void (*Int_COP0PrintTable[32])();
extern  void (*Int_COP0BC0PrintTable[32])();
extern  void (*Int_COP0C0PrintTable[64])();
extern  void (*Int_COP1PrintTable[32])();
extern  void (*Int_COP1BC1PrintTable[32])();
extern  void (*Int_COP1SPrintTable[64])();
extern  void (*Int_COP1WPrintTable[64])();
extern  void (*Int_COP2PrintTable[32])();
extern  void (*Int_COP2BC2PrintTable[32])();
extern  void (*Int_COP2SPECIAL1PrintTable[64])();
extern  void (*Int_COP2SPECIAL2PrintTable[128])();

void SPECIAL();
void REGIMM();
void UnknownOpcode();
void COP0();
void COP1();
void COP2();
void MMI_Unknown();
void MMI();
void MMI0();
void MMI1();
void MMI2();
void MMI3();
void COP0_Unknown();
void COP0_BC0();
void COP0_Func(); 
void COP1_BC1();
void COP1_S();
void COP1_W();
void COP1_Unknown();
void COP2_BC2();
void COP2_SPECIAL();
void COP2_Unknown();
void COP2_SPECIAL2();

// **********************Standard Opcodes**************************
void J();
void JAL();
void BEQ();
void BNE();
void BLEZ();
void BGTZ();
void ADDI();
void ADDIU();
void SLTI();
void SLTIU();
void ANDI();
void ORI();
void XORI();
void LUI();
void BEQL();
void BNEL();
void BLEZL();
void BGTZL();
void DADDI();
void DADDIU();
void LDL();
void LDR();
void LB();
void LH();
void LWL();
void LW();
void LBU();
void LHU();
void LWR();
void LWU();
void SB();
void SH();
void SWL();
void SW();
void SDL();
void SDR();
void SWR();
void CACHE();
void LWC1();
void PREF();
void LQC2();
void LD();
void SQC2();
void SD();
void LQ();
void SQ();
void SWC1();
//***************end of standard opcodes*************************


//***************SPECIAL OPCODES**********************************
void SLL();
void SRL();
void SRA();
void SLLV();
void SRLV();
void SRAV();
void JR();
void JALR();
void SYSCALL();
void BREAK();
void SYNC();
void MFHI();
void MTHI();
void MFLO();
void MTLO();
void DSLLV();
void DSRLV();
void DSRAV();
void MULT();
void MULTU();
void DIV();
void DIVU();
void ADD();
void ADDU();
void SUB();
void SUBU();
void AND();
void OR();
void XOR();
void NOR();
void SLT();
void SLTU();
void DADD();
void DADDU();
void DSUB();
void DSUBU();
void TGE();
void TGEU();
void TLT();
void TLTU();
void TEQ();
void TNE();
void DSLL();
void DSRL();
void DSRA();
void DSLL32();
void DSRL32();
void DSRA32();
void MOVZ();
void MOVN();
void MFSA();
void MTSA();
//******************END OF SPECIAL OPCODES**************************

//******************REGIMM OPCODES**********************************
void BLTZ();
void BGEZ();
void BLTZL();
void BGEZL();
void TGEI();
void TGEIU();
void TLTI();
void TLTIU();
void TEQI();
void TNEI();
void BLTZAL();
void BGEZAL();
void BLTZALL();
void BGEZALL();
void MTSAB();
void MTSAH();
//*****************END OF REGIMM OPCODES*****************************
//*****************MMI OPCODES*********************************
void MADD();
void MADDU();
void PLZCW();
void MADD1();
void MADDU1();
void MFHI1();
void MTHI1();
void MFLO1();
void MTLO1();
void MULT1();
void MULTU1();
void DIV1();
void DIVU1();
void PMFHL();
void PMTHL();
void PSLLH();
void PSRLH();
void PSRAH();
void PSLLW();
void PSRLW();
void PSRAW();
//*****************END OF MMI OPCODES**************************
//*************************MMI0 OPCODES************************

void PADDW();  
void PSUBW();  
void PCGTW();  
void PMAXW(); 
void PADDH();  
void PSUBH();  
void PCGTH();  
void PMAXH(); 
void PADDB();  
void PSUBB();  
void PCGTB();
void PADDSW(); 
void PSUBSW(); 
void PEXTLW();  
void PPACW(); 
void PADDSH();
void PSUBSH();
void PEXTLH(); 
void PPACH();
void PADDSB();
void PSUBSB();
void PEXTLB(); 
void PPACB();
void PEXT5(); 
void PPAC5();
//***END OF MMI0 OPCODES******************************************
//**********MMI1 OPCODES**************************************
void PABSW();
void PCEQW();
void PMINW(); 
void PADSBH();
void PABSH();
void PCEQH();
void PMINH();  
void PCEQB(); 
void PADDUW();
void PSUBUW(); 
void PEXTUW();  
void PADDUH();
void PSUBUH(); 
void PEXTUH(); 
void PADDUB();
void PSUBUB();
void PEXTUB();
void QFSRV(); 
//********END OF MMI1 OPCODES***********************************
//*********MMI2 OPCODES***************************************
void PMADDW();
void PSLLVW();
void PSRLVW(); 
void PMSUBW();
void PMFHI();
void PMFLO();
void PINTH();
void PMULTW();
void PDIVW();
void PCPYLD();
void PMADDH();
void PHMADH();
void PAND();
void PXOR(); 
void PMSUBH();
void PHMSBH();
void PEXEH();
void PREVH(); 
void PMULTH();
void PDIVBW();
void PEXEW();
void PROT3W();
//*****END OF MMI2 OPCODES***********************************
//*************************MMI3 OPCODES************************
void PMADDUW();
void PSRAVW(); 
void PMTHI();
void PMTLO();
void PINTEH(); 
void PMULTUW();
void PDIVUW();
void PCPYUD(); 
void POR();
void PNOR();  
void PEXCH();
void PCPYH(); 
void PEXCW();
//**********************END OF MMI3 OPCODES******************** 
//****************************************************************************
//** COP0                                                                   **
//****************************************************************************
void MFC0();
void MTC0();
void BC0F();
void BC0T();
void BC0FL();
void BC0TL();
void TLBR();
void TLBWI();
void TLBWR();
void TLBP();
void ERET();
void DI();
void EI();
//****************************************************************************
//** END OF COP0                                                            **
//****************************************************************************
//****************************************************************************
//** COP1 - Floating Point Unit (FPU)                                       **
//****************************************************************************
void MFC1();
void CFC1();
void MTC1();
void CTC1();
void BC1F();
void BC1T();
void BC1FL();
void BC1TL();
void ADD_S();  
void SUB_S();  
void MUL_S();  
void DIV_S();  
void SQRT_S(); 
void ABS_S();  
void MOV_S(); 
void NEG_S(); 
void RSQRT_S();  
void ADDA_S(); 
void SUBA_S(); 
void MULA_S();
void MADD_S(); 
void MSUB_S(); 
void MADDA_S(); 
void MSUBA_S();
void CVT_W();
void MAX_S();
void MIN_S();
void C_F();
void C_EQ();
void C_LT();
void C_LE();
 void CVT_S();
//****************************************************************************
//** END OF COP1                                                            **
//****************************************************************************
//****************************************************************************
//** COP2 - (VU0)                                                           **
//****************************************************************************
void QMFC2(); 
void CFC2(); 
void QMTC2();
void CTC2();  
void BC2F();
void BC2T();
void BC2FL();
void BC2TL();
//*****************SPECIAL 1 VUO TABLE*******************************
void VADDx();       
void VADDy();       
void VADDz();       
void VADDw();       
void VSUBx();        
void VSUBy();        
void VSUBz();
void VSUBw(); 
void VMADDx();
void VMADDy();
void VMADDz();
void VMADDw();
void VMSUBx();
void VMSUBy();
void VMSUBz();       
void VMSUBw(); 
void VMAXx();       
void VMAXy();       
void VMAXz();       
void VMAXw();       
void VMINIx();       
void VMINIy();       
void VMINIz();       
void VMINIw(); 
void VMULx();       
void VMULy();       
void VMULz();       
void VMULw();       
void VMULq();        
void VMAXi();        
void VMULi();        
void VMINIi();
void VADDq();
void VMADDq();      
void VADDi();       
void VMADDi();      
void VSUBq();        
void VMSUBq();       
void VSUBi();        
void VMSUBi(); 
void VADD();        
void VMADD();       
void VMUL();        
void VMAX();        
void VSUB();         
void VMSUB();       
void VOPMSUB();      
void VMINI();  
void VIADD();       
void VISUB();       
void VIADDI();       
void VIAND();        
void VIOR();        
void VCALLMS();     
void VCALLMSR();   
//***********************************END OF SPECIAL1 VU0 TABLE*****************************
//******************************SPECIAL2 VUO TABLE*****************************************
void VADDAx();      
void VADDAy();      
void VADDAz();      
void VADDAw();      
void VSUBAx();      
void VSUBAy();      
void VSUBAz();      
void VSUBAw();
void VMADDAx();     
void VMADDAy();     
void VMADDAz();     
void VMADDAw();     
void VMSUBAx();     
void VMSUBAy();     
void VMSUBAz();     
void VMSUBAw();
void VITOF0();      
void VITOF4();      
void VITOF12();     
void VITOF15();     
void VFTOI0();      
void VFTOI4();      
void VFTOI12();     
void VFTOI15();
void VMULAx();      
void VMULAy();      
void VMULAz();      
void VMULAw();      
void VMULAq();      
void VABS();        
void VMULAi();      
void VCLIPw();
void VADDAq();      
void VMADDAq();     
void VADDAi();      
void VMADDAi();     
void VSUBAq();      
void VMSUBAq();     
void VSUBAi();      
void VMSUBAi();
void VADDA();       
void VMADDA();      
void VMULA();       
void VSUBA();       
void VMSUBA();      
void VOPMULA();     
void VNOP();   
void VMOVE();       
void VMR32();       
void VLQI();        
void VSQI();        
void VLQD();        
void VSQD();   
void VDIV();        
void VSQRT();       
void VRSQRT();      
void VWAITQ();     
void VMTIR();       
void VMFIR();       
void VILWR();       
void VISWR();  
void VRNEXT();      
void VRGET();       
void VRINIT();      
void VRXOR();  
//************************************END OF SPECIAL2 ************
#endif
