2012-11-15 00:39:56 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
2016-04-14 01:09:41 +02:00
|
|
|
#include "PPUOpcodes.h"
|
2014-08-22 23:15:02 +02:00
|
|
|
|
2016-04-14 01:09:41 +02:00
|
|
|
class PPUThread;
|
2012-11-15 00:39:56 +01:00
|
|
|
|
2016-04-14 01:09:41 +02:00
|
|
|
struct ppu_interpreter
|
2015-01-17 23:04:45 +01:00
|
|
|
{
|
2016-05-13 15:55:34 +02:00
|
|
|
static bool MFVSCR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MTVSCR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDCUW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDSBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDSHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDSWS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDUBM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDUBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDUHM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDUHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDUWM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VADDUWS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VAND(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VANDC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VAVGSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VAVGSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VAVGSW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VAVGUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VAVGUH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VAVGUW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCFSX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCFUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPBFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPEQFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPEQUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPEQUH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPEQUW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGEFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGTFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGTSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGTSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGTSW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGTUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGTUH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCMPGTUW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCTSXS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VCTUXS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VEXPTEFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VLOGEFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMADDFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMAXFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMAXSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMAXSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMAXSW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMAXUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMAXUH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMAXUW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMHADDSHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMHRADDSHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMINFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMINSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMINSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMINSW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMINUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMINUH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMINUW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMLADDUHM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMRGHB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMRGHH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMRGHW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMRGLB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMRGLH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMRGLW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMSUMMBM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMSUMSHM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMSUMSHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMSUMUBM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMSUMUHM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMSUMUHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULESB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULESH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULEUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULEUH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULOSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULOSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULOUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VMULOUH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VNMSUBFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VNOR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VOR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPERM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKPX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKSHSS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKSHUS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKSWSS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKSWUS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKUHUM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKUHUS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKUWUM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VPKUWUS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VREFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRFIM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRFIN(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRFIP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRFIZ(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRLB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRLH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRLW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VRSQRTEFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSEL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSLB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSLDOI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSLH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSLO(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSLW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSPLTB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSPLTH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSPLTISB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSPLTISH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSPLTISW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSPLTW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSRAB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSRAH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSRAW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSRB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSRH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSRO(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSRW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBCUW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBFP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBSBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBSHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBSWS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBUBM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBUBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBUHM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBUHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBUWM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUBUWS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUMSWS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUM2SWS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUM4SBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUM4SHS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VSUM4UBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VUPKHPX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VUPKHSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VUPKHSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VUPKLPX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VUPKLSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VUPKLSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool VXOR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool TDI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool TWI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MULLI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SUBFIC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CMPLI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CMPI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADDIC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADDI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADDIS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool BC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool HACK(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool B(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MCRF(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool BCLR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CRNOR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CRANDC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ISYNC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CRXOR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CRNAND(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CRAND(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CREQV(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CRORC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CROR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool BCCTR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLWIMI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLWINM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLWNM(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ORI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ORIS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool XORI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool XORIS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ANDI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ANDIS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLDICL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLDICR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLDIC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLDIMI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLDCL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool RLDCR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CMP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool TW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVSL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVEBX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SUBFC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MULHDU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADDC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MULHWU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MFOCRF(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWARX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LDX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWZX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SLW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CNTLZW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SLD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool AND(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CMPL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVSR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVEHX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SUBF(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LDUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DCBST(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWZUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool CNTLZD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ANDC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool TD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVEWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MULHD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MULHW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LDARX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DCBF(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LBZX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool NEG(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LBZUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool NOR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVEBX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SUBFE(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADDE(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MTOCRF(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STDX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STWCX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVEHX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STDUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STWUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVEWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SUBFZE(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADDZE(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STDCX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STBX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MULLD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SUBFME(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADDME(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MULLW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DCBTST(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STBUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ADD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DCBT(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHZX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool EQV(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ECIWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHZUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool XOR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MFSPR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWAX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DST(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHAX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVXL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MFTB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWAUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DSTST(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHAUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STHX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ORC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ECOWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STHUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool OR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DIVDU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DIVWU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MTSPR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DCBI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool NAND(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVXL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DIVD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DIVW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVLX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LDBRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LSWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWBRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFSX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SRW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SRD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LSWI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFSUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SYNC(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFDX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFDUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVLX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STDBRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STSWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STWBRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFSX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFSUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STSWI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFDX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFDUX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVLXL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHBRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SRAW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SRAD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LVRXL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DSS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SRAWI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool SRADI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool EIEIO(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVLXL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STHBRX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool EXTSH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STVRXL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool EXTSB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFIWX(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool EXTSW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool ICBI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool DCBZ(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWZ(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWZU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LBZ(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LBZU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STWU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STBU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHZ(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHZU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHA(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LHAU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STH(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STHU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LMW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STMW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFSU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LFDU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFSU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STFDU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LDU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool LWA(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool STDU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FDIVS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FSUBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FADDS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FSQRTS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FRES(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FMULS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FMADDS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FMSUBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FNMSUBS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FNMADDS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MTFSB1(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MCRFS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MTFSB0(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MTFSFI(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MFFS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool MTFSF(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FCMPU(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FRSP(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FCTIW(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FCTIWZ(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FDIV(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FSUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FADD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FSQRT(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FSEL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FMUL(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FRSQRTE(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FMSUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FMADD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FNMSUB(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FNMADD(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FCMPO(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FNEG(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FMR(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FNABS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FABS(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FCTID(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FCTIDZ(PPUThread&, ppu_opcode_t);
|
|
|
|
|
static bool FCFID(PPUThread&, ppu_opcode_t);
|
2016-04-14 01:09:41 +02:00
|
|
|
|
2016-05-13 15:55:34 +02:00
|
|
|
static bool UNK(PPUThread&, ppu_opcode_t);
|
2016-04-14 01:09:41 +02:00
|
|
|
};
|
2015-04-03 18:56:57 +02:00
|
|
|
|
2016-04-14 01:09:41 +02:00
|
|
|
struct ppu_interpreter_precise final : ppu_interpreter
|
2015-01-18 13:14:19 +01:00
|
|
|
{
|
2016-04-14 01:09:41 +02:00
|
|
|
// TODO
|
|
|
|
|
};
|
2015-12-05 19:32:25 +01:00
|
|
|
|
2016-04-14 01:09:41 +02:00
|
|
|
struct ppu_interpreter_fast final : ppu_interpreter
|
2012-11-15 00:39:56 +01:00
|
|
|
{
|
2016-04-14 01:09:41 +02:00
|
|
|
// TODO
|
2012-11-15 00:39:56 +01:00
|
|
|
};
|