mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Kill Plugin_DSP_NULL
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@229 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -1,244 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
#include "../Globals.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "../PCHW/DSoundStream.h"
|
||||
#endif
|
||||
#include "../PCHW/Mixer.h"
|
||||
#include "../MailHandler.h"
|
||||
|
||||
#include "UCodes.h"
|
||||
#include "UCode_AX.h"
|
||||
|
||||
CUCode_AX::CUCode_AX(CMailHandler& _rMailHandler)
|
||||
: IUCode(_rMailHandler)
|
||||
{
|
||||
// we got loaded
|
||||
m_rMailHandler.PushMail(0xDCD10000);
|
||||
m_rMailHandler.PushMail(0x80000000); // handshake ??? only (crc == 0xe2136399) needs it ...
|
||||
}
|
||||
|
||||
|
||||
CUCode_AX::~CUCode_AX()
|
||||
{
|
||||
m_rMailHandler.Clear();
|
||||
}
|
||||
|
||||
|
||||
void CUCode_AX::HandleMail(u32 _uMail)
|
||||
{
|
||||
if ((_uMail & 0xFFFF0000) == 0xBABE0000)
|
||||
{
|
||||
// a new List
|
||||
}
|
||||
else
|
||||
{
|
||||
AXTask(_uMail);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CUCode_AX::MixAdd(short* _pBuffer, int _iSize)
|
||||
{}
|
||||
|
||||
|
||||
void CUCode_AX::Update()
|
||||
{
|
||||
// check if we have to sent something
|
||||
if (!m_rMailHandler.IsEmpty())
|
||||
{
|
||||
g_dspInitialize.pGenerateDSPInterrupt();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool CUCode_AX::AXTask(u32& _uMail)
|
||||
{
|
||||
u32 uAddress = _uMail;
|
||||
|
||||
DebugLog("AXTask - AXCommandList-Addr: 0x%08x", uAddress);
|
||||
|
||||
u32 Addr__AXStudio;
|
||||
u32 Addr__AXOutSBuffer;
|
||||
u32 Addr__AXOutSBuffer_1;
|
||||
u32 Addr__AXOutSBuffer_2;
|
||||
|
||||
u32 Addr__A;
|
||||
u32 Addr__12;
|
||||
u32 Addr__4_1;
|
||||
u32 Addr__4_2;
|
||||
u32 Addr__5_1;
|
||||
u32 Addr__5_2;
|
||||
u32 Addr__6;
|
||||
u32 Addr__9;
|
||||
|
||||
bool bExecuteList = true;
|
||||
|
||||
while (bExecuteList)
|
||||
{
|
||||
u16 iCommand = Memory_Read_U16(uAddress);
|
||||
uAddress += 2;
|
||||
|
||||
switch (iCommand)
|
||||
{
|
||||
case 0x00: //00
|
||||
Addr__AXStudio = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST studio address: %08x", Addr__AXStudio);
|
||||
break;
|
||||
|
||||
case 0x001:
|
||||
{
|
||||
u32 address = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
u16 param1 = Memory_Read_U16(uAddress);
|
||||
uAddress += 2;
|
||||
u16 param2 = Memory_Read_U16(uAddress);
|
||||
uAddress += 2;
|
||||
u16 param3 = Memory_Read_U16(uAddress);
|
||||
uAddress += 2;
|
||||
DebugLog("AXLIST 1: %08x, %04x, %04x, %04x", address, param1, param2, param3);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x02: //02
|
||||
{
|
||||
uAddress += 4;
|
||||
#ifdef _WIN32
|
||||
DebugLog("Update the SoundThread to be in sync");
|
||||
DSound::DSound_UpdateSound(); //do it in this thread to avoid sync problems
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0003: // ????
|
||||
DebugLog("AXLIST command 0x0003 ????");
|
||||
break;
|
||||
|
||||
case 0x0004:
|
||||
Addr__4_1 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
Addr__4_2 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST 4_1 4_2 addresses: %08x %08x", Addr__4_1, Addr__4_2);
|
||||
break;
|
||||
|
||||
case 0x0005:
|
||||
Addr__5_1 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
Addr__5_2 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST 5_1 5_2 addresses: %08x %08x", Addr__5_1, Addr__5_2);
|
||||
break;
|
||||
|
||||
case 0x0006:
|
||||
Addr__6 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST 6 address: %08x", Addr__6);
|
||||
break;
|
||||
|
||||
case 0x07:
|
||||
Addr__AXOutSBuffer = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST OutSBuffer address: %08x", Addr__AXOutSBuffer);
|
||||
break;
|
||||
|
||||
case 0x0009:
|
||||
Addr__9 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST 6 address: %08x", Addr__9);
|
||||
break;
|
||||
|
||||
case 0x0a:
|
||||
Addr__A = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST CompressorTable address: %08x", Addr__A);
|
||||
break;
|
||||
|
||||
case 0x000e:
|
||||
Addr__AXOutSBuffer_1 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
Addr__AXOutSBuffer_2 = Memory_Read_U32(uAddress);
|
||||
uAddress += 4;
|
||||
DebugLog("AXLIST sbuf2 addresses: %08x %08x", Addr__AXOutSBuffer_1, Addr__AXOutSBuffer_2);
|
||||
break;
|
||||
|
||||
case 0x0f:
|
||||
bExecuteList = false;
|
||||
DebugLog("AXLIST end");
|
||||
break;
|
||||
|
||||
case 0x0010: //monkey ball2
|
||||
DebugLog("AXLIST unknown");
|
||||
//should probably read/skip stuff here
|
||||
uAddress += 8;
|
||||
break;
|
||||
|
||||
case 0x0011:
|
||||
uAddress += 4;
|
||||
break;
|
||||
|
||||
case 0x0012:
|
||||
Addr__12 = Memory_Read_U16(uAddress);
|
||||
uAddress += 2;
|
||||
break;
|
||||
|
||||
case 0x0013:
|
||||
uAddress += 6 * 4; // 6 Addresses
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
static bool bFirst = true;
|
||||
|
||||
if (bFirst == true)
|
||||
{
|
||||
char szTemp[2048];
|
||||
sprintf(szTemp, "Unknown AX-Command 0x%x (address: 0x%08x)\n", iCommand, uAddress - 2);
|
||||
int num = 0;
|
||||
|
||||
while (num < 64)
|
||||
{
|
||||
char szTemp2[128] = "";
|
||||
sprintf(szTemp2, "0x%04x\n", Memory_Read_U16(uAddress + num));
|
||||
strcat(szTemp, szTemp2);
|
||||
num += 2;
|
||||
}
|
||||
|
||||
PanicAlert(szTemp);
|
||||
|
||||
bFirst = false;
|
||||
}
|
||||
|
||||
// unknown command so stop the execution of this TaskList
|
||||
bExecuteList = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DebugLog("AXTask - done, send resume");
|
||||
|
||||
// i hope resume is okay AX
|
||||
m_rMailHandler.PushMail(0xDCD10001);
|
||||
|
||||
return(true);
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#pragma once
|
||||
|
||||
class CUCode_AX
|
||||
: public IUCode
|
||||
{
|
||||
public:
|
||||
|
||||
// constructor
|
||||
CUCode_AX(CMailHandler& _rMailHandler);
|
||||
|
||||
// destructor
|
||||
virtual ~CUCode_AX();
|
||||
|
||||
// HandleMail
|
||||
void HandleMail(u32 _uMail);
|
||||
|
||||
// Mix Add
|
||||
void MixAdd(short* _pBuffer, int _iSize);
|
||||
|
||||
// Update
|
||||
void Update();
|
||||
|
||||
private:
|
||||
|
||||
// ax task message handler
|
||||
bool AXTask(u32& _uMail);
|
||||
|
||||
// SendMail
|
||||
void SendMail(u32 _uMail);
|
||||
};
|
||||
|
@ -1,70 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
#include "../Globals.h"
|
||||
#include "../DSPHandler.h"
|
||||
#include "UCodes.h"
|
||||
#include "UCode_CARD.h"
|
||||
|
||||
|
||||
CUCode_CARD::CUCode_CARD(CMailHandler& _rMailHandler)
|
||||
: IUCode(_rMailHandler)
|
||||
{
|
||||
DebugLog("CUCode_CARD - initialized");
|
||||
m_rMailHandler.PushMail(DSP_INIT);
|
||||
}
|
||||
|
||||
|
||||
CUCode_CARD::~CUCode_CARD()
|
||||
{
|
||||
m_rMailHandler.Clear();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CUCode_CARD::Update()
|
||||
{
|
||||
// check if we have to sent something
|
||||
if (!m_rMailHandler.IsEmpty())
|
||||
{
|
||||
g_dspInitialize.pGenerateDSPInterrupt();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ==================================================================================================
|
||||
// Mail handler
|
||||
// ==================================================================================================
|
||||
|
||||
void
|
||||
CUCode_CARD::HandleMail(u32 _uMail)
|
||||
{
|
||||
if (_uMail == 0xFF000000) // unlock card
|
||||
{
|
||||
// m_Mails.push(0x00000001); // ACK (actualy anything != 0)
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugLog("CUCode_CARD - unknown cmd: %x (size %i)", _uMail);
|
||||
}
|
||||
|
||||
m_rMailHandler.PushMail(DSP_DONE);
|
||||
CDSPHandler::GetInstance().SetUCode(UCODE_ROM);
|
||||
}
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _UCODE_CARD_H
|
||||
#define _UCODE_CARD_H
|
||||
|
||||
#include "UCodes.h"
|
||||
|
||||
class CUCode_CARD
|
||||
: public IUCode
|
||||
{
|
||||
private:
|
||||
|
||||
enum EDSP_Codes
|
||||
{
|
||||
DSP_INIT = 0xDCD10000,
|
||||
DSP_RESUME = 0xDCD10001,
|
||||
DSP_YIELD = 0xDCD10002,
|
||||
DSP_DONE = 0xDCD10003,
|
||||
DSP_SYNC = 0xDCD10004,
|
||||
DSP_UNKN = 0xDCD10005,
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
// constructor
|
||||
CUCode_CARD(CMailHandler& _rMailHandler);
|
||||
|
||||
// destructor
|
||||
virtual ~CUCode_CARD();
|
||||
|
||||
// handle mail
|
||||
void HandleMail(u32 _uMail);
|
||||
|
||||
|
||||
// update
|
||||
void Update();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,55 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
#include "../Globals.h"
|
||||
#include "../DSPHandler.h"
|
||||
#include "UCodes.h"
|
||||
#include "UCode_InitAudioSystem.h"
|
||||
|
||||
CUCode_InitAudioSystem::CUCode_InitAudioSystem(CMailHandler& _rMailHandler)
|
||||
: IUCode(_rMailHandler)
|
||||
, m_BootTask_numSteps(0)
|
||||
, m_NextParameter(0)
|
||||
, IsInitialized(false)
|
||||
{
|
||||
DebugLog("CUCode_InitAudioSystem - initialized");
|
||||
}
|
||||
|
||||
|
||||
CUCode_InitAudioSystem::~CUCode_InitAudioSystem()
|
||||
{}
|
||||
|
||||
|
||||
void CUCode_InitAudioSystem::Init()
|
||||
{}
|
||||
|
||||
|
||||
void CUCode_InitAudioSystem::Update()
|
||||
{
|
||||
if (m_rMailHandler.IsEmpty())
|
||||
{
|
||||
m_rMailHandler.PushMail(0x80544348);
|
||||
// HALT
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CUCode_InitAudioSystem::HandleMail(u32 _uMail)
|
||||
{}
|
||||
|
||||
|
@ -1,58 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _UCODE_INITAUDIOSYSTEM
|
||||
#define _UCODE_INITAUDIOSYSTEM
|
||||
|
||||
#include "UCodes.h"
|
||||
|
||||
class CUCode_InitAudioSystem
|
||||
: public IUCode
|
||||
{
|
||||
public:
|
||||
|
||||
CUCode_InitAudioSystem(CMailHandler& _rMailHandler);
|
||||
virtual ~CUCode_InitAudioSystem();
|
||||
|
||||
void HandleMail(u32 _uMail);
|
||||
void Update();
|
||||
void Init();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
struct SUCode
|
||||
{
|
||||
u32 m_RAMAddress;
|
||||
u32 m_Length;
|
||||
u32 m_IMEMAddress;
|
||||
u32 m_Unk;
|
||||
u32 m_StartPC;
|
||||
};
|
||||
|
||||
SUCode m_CurrentUCode;
|
||||
int m_BootTask_numSteps;
|
||||
|
||||
u32 m_NextParameter;
|
||||
|
||||
bool IsInitialized;
|
||||
|
||||
void BootUCode();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,162 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
#include "../Globals.h"
|
||||
#include "UCodes.h"
|
||||
#include "UCode_Jac.h"
|
||||
#include "../MailHandler.h"
|
||||
|
||||
CUCode_Jac::CUCode_Jac(CMailHandler& _rMailHandler)
|
||||
: IUCode(_rMailHandler)
|
||||
, m_bListInProgress(false)
|
||||
{
|
||||
DebugLog("CUCode_Jac: init");
|
||||
m_rMailHandler.PushMail(0xDCD10000);
|
||||
m_rMailHandler.PushMail(0x80000000);
|
||||
}
|
||||
|
||||
|
||||
CUCode_Jac::~CUCode_Jac()
|
||||
{
|
||||
m_rMailHandler.Clear();
|
||||
}
|
||||
|
||||
|
||||
void CUCode_Jac::HandleMail(u32 _uMail)
|
||||
{
|
||||
// this is prolly totally bullshit and should work like the zelda one...
|
||||
// but i am to lazy to change it atm
|
||||
|
||||
if (m_bListInProgress == false)
|
||||
{
|
||||
// get the command to find out how much steps it has
|
||||
switch (_uMail & 0xFFFF)
|
||||
{
|
||||
// release halt
|
||||
case 0x00:
|
||||
// m_Mails.push(0x80000000);
|
||||
g_dspInitialize.pGenerateDSPInterrupt();
|
||||
break;
|
||||
|
||||
case 0x40:
|
||||
m_step = 0;
|
||||
((u32*)m_Buffer)[m_step++] = _uMail;
|
||||
m_bListInProgress = true;
|
||||
m_numSteps = 5;
|
||||
break;
|
||||
|
||||
case 0x2000:
|
||||
case 0x4000:
|
||||
m_step = 0;
|
||||
((u32*)m_Buffer)[m_step++] = _uMail;
|
||||
m_bListInProgress = true;
|
||||
m_numSteps = 3;
|
||||
break;
|
||||
|
||||
default:
|
||||
PanicAlert("UCode Jac");
|
||||
DebugLog("UCode Jac - unknown cmd: %x", _uMail & 0xFFFF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
((u32*)m_Buffer)[m_step] = _uMail;
|
||||
m_step++;
|
||||
|
||||
if (m_step == m_numSteps)
|
||||
{
|
||||
ExecuteList();
|
||||
m_bListInProgress = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CUCode_Jac::Update()
|
||||
{
|
||||
// check if we have to sent something
|
||||
/* if (!g_MailHandler.empty())
|
||||
{
|
||||
g_dspInitialize.pGenerateDSPInterrupt();
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
void CUCode_Jac::ExecuteList()
|
||||
{
|
||||
// begin with the list
|
||||
m_readOffset = 0;
|
||||
|
||||
u16 cmd = Read16();
|
||||
u16 sync = Read16();
|
||||
|
||||
DebugLog("==============================================================================");
|
||||
DebugLog("UCode Jac - execute dlist (cmd: 0x%04x : sync: 0x%04x)", cmd, sync);
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
// ==============================================================================
|
||||
// DsetupTable
|
||||
// ==============================================================================
|
||||
case 0x40:
|
||||
{
|
||||
u32 tmp[4];
|
||||
tmp[0] = Read32();
|
||||
tmp[1] = Read32();
|
||||
tmp[2] = Read32();
|
||||
tmp[3] = Read32();
|
||||
|
||||
DebugLog("DsetupTable");
|
||||
DebugLog("???: 0x%08x", tmp[0]);
|
||||
DebugLog("DSPRES_FILTER (size: 0x40): 0x%08x", tmp[1]);
|
||||
DebugLog("DSPADPCM_FILTER (size: 0x500): 0x%08x", tmp[2]);
|
||||
DebugLog("???: 0x%08x", tmp[3]);
|
||||
}
|
||||
break;
|
||||
|
||||
// ==============================================================================
|
||||
// UpdateDSPChannel
|
||||
// ==============================================================================
|
||||
case 0x2000:
|
||||
case 0x4000: // animal crossing
|
||||
{
|
||||
u32 tmp[3];
|
||||
tmp[0] = Read32();
|
||||
tmp[1] = Read32();
|
||||
tmp[2] = Read32();
|
||||
|
||||
DebugLog("UpdateDSPChannel");
|
||||
DebugLog("audiomemory: 0x%08x", tmp[0]);
|
||||
DebugLog("audiomemory: 0x%08x", tmp[1]);
|
||||
DebugLog("DSPADPCM_FILTER (size: 0x40): 0x%08x", tmp[2]);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
PanicAlert("UCode Jac unknown cmd: %s (size %)", cmd, m_numSteps);
|
||||
DebugLog("Jac UCode - unknown cmd: %x (size %i)", cmd, m_numSteps);
|
||||
break;
|
||||
}
|
||||
|
||||
// sync, we are rdy
|
||||
m_rMailHandler.PushMail(DSP_SYNC);
|
||||
m_rMailHandler.PushMail(0xF3550000 | sync);
|
||||
}
|
||||
|
||||
|
@ -1,85 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _UCODE_JAC
|
||||
#define _UCODE_JAC
|
||||
|
||||
#include "UCodes.h"
|
||||
|
||||
class CUCode_Jac
|
||||
: public IUCode
|
||||
{
|
||||
private:
|
||||
|
||||
enum EDSP_Codes
|
||||
{
|
||||
DSP_INIT = 0xDCD10000,
|
||||
DSP_RESUME = 0xDCD10001,
|
||||
DSP_YIELD = 0xDCD10002,
|
||||
DSP_DONE = 0xDCD10003,
|
||||
DSP_SYNC = 0xDCD10004,
|
||||
DSP_UNKN = 0xDCD10005,
|
||||
};
|
||||
|
||||
// List in progre
|
||||
bool m_bListInProgress;
|
||||
int m_numSteps;
|
||||
int m_step;
|
||||
u8 m_Buffer[1024];
|
||||
void ExecuteList();
|
||||
|
||||
|
||||
u32 m_readOffset;
|
||||
|
||||
u8 Read8()
|
||||
{
|
||||
return(m_Buffer[m_readOffset++]);
|
||||
}
|
||||
|
||||
|
||||
u16 Read16()
|
||||
{
|
||||
u16 res = *(u16*)&m_Buffer[m_readOffset];
|
||||
m_readOffset += 2;
|
||||
return(res);
|
||||
}
|
||||
|
||||
|
||||
u32 Read32()
|
||||
{
|
||||
u32 res = *(u32*)&m_Buffer[m_readOffset];
|
||||
m_readOffset += 4;
|
||||
return(res);
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// constructor
|
||||
CUCode_Jac(CMailHandler& _rMailHandler);
|
||||
|
||||
// destructor
|
||||
virtual ~CUCode_Jac();
|
||||
|
||||
// handleMail
|
||||
void HandleMail(u32 _uMail);
|
||||
|
||||
void Update();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,117 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
#include "../Globals.h"
|
||||
#include "../DSPHandler.h"
|
||||
#include "UCodes.h"
|
||||
#include "UCode_ROM.h"
|
||||
|
||||
|
||||
CUCode_Rom::CUCode_Rom(CMailHandler& _rMailHandler)
|
||||
: IUCode(_rMailHandler)
|
||||
, m_BootTask_numSteps(0)
|
||||
, m_NextParameter(0)
|
||||
{
|
||||
DebugLog("UCode_Rom - initialized");
|
||||
m_rMailHandler.Clear();
|
||||
m_rMailHandler.PushMail(0x8071FEED);
|
||||
}
|
||||
|
||||
|
||||
CUCode_Rom::~CUCode_Rom()
|
||||
{}
|
||||
|
||||
|
||||
void CUCode_Rom::Update()
|
||||
{}
|
||||
|
||||
|
||||
void CUCode_Rom::HandleMail(u32 _uMail)
|
||||
{
|
||||
if (m_NextParameter == 0)
|
||||
{
|
||||
// wait for beginning of UCode
|
||||
if ((_uMail & 0xFFFF0000) != 0x80F30000)
|
||||
{
|
||||
u32 Message = 0xFEEE0000 | (_uMail & 0xFFFF);
|
||||
m_rMailHandler.PushMail(Message);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_NextParameter = _uMail;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (m_NextParameter)
|
||||
{
|
||||
case 0x80F3A001:
|
||||
m_CurrentUCode.m_RAMAddress = _uMail;
|
||||
break;
|
||||
|
||||
case 0x80F3A002:
|
||||
m_CurrentUCode.m_Length = _uMail;
|
||||
break;
|
||||
|
||||
case 0x80F3C002:
|
||||
m_CurrentUCode.m_IMEMAddress = _uMail;
|
||||
break;
|
||||
|
||||
case 0x80F3B002:
|
||||
m_CurrentUCode.m_Unk = _uMail;
|
||||
break;
|
||||
|
||||
case 0x80F3D001:
|
||||
{
|
||||
m_CurrentUCode.m_StartPC = _uMail;
|
||||
BootUCode();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
m_NextParameter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CUCode_Rom::BootUCode()
|
||||
{
|
||||
// simple non-scientific crc invented by ector :P
|
||||
// too annoying to change now, and probably good enough anyway
|
||||
u32 crc = 0;
|
||||
|
||||
for (u32 i = 0; i < m_CurrentUCode.m_Length; i++)
|
||||
{
|
||||
crc ^= Memory_Read_U8(m_CurrentUCode.m_RAMAddress + i);
|
||||
//let's rol
|
||||
crc = (crc << 3) | (crc >> 29);
|
||||
}
|
||||
|
||||
DebugLog("CurrentUCode SOURCE Addr: 0x%08x", m_CurrentUCode.m_RAMAddress);
|
||||
DebugLog("CurrentUCode Length: 0x%08x", m_CurrentUCode.m_Length);
|
||||
DebugLog("CurrentUCode DEST Addr: 0x%08x", m_CurrentUCode.m_IMEMAddress);
|
||||
DebugLog("CurrentUCode ???: 0x%08x", m_CurrentUCode.m_Unk);
|
||||
DebugLog("CurrentUCode init_vector: 0x%08x", m_CurrentUCode.m_StartPC);
|
||||
DebugLog("CurrentUCode CRC: 0x%08x", crc);
|
||||
DebugLog("BootTask - done");
|
||||
|
||||
CDSPHandler::GetInstance().SetUCode(crc);
|
||||
}
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _UCODE_ROM
|
||||
#define _UCODE_ROM
|
||||
|
||||
#include "UCodes.h"
|
||||
|
||||
class CUCode_Rom
|
||||
: public IUCode
|
||||
{
|
||||
public:
|
||||
|
||||
CUCode_Rom(CMailHandler& _rMailHandler);
|
||||
virtual ~CUCode_Rom();
|
||||
|
||||
void HandleMail(u32 _uMail);
|
||||
void Update();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
struct SUCode
|
||||
{
|
||||
u32 m_RAMAddress;
|
||||
u32 m_Length;
|
||||
u32 m_IMEMAddress;
|
||||
u32 m_Unk;
|
||||
u32 m_StartPC;
|
||||
};
|
||||
|
||||
SUCode m_CurrentUCode;
|
||||
int m_BootTask_numSteps;
|
||||
|
||||
u32 m_NextParameter;
|
||||
|
||||
void BootUCode();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,171 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
// Games that uses this UCode:
|
||||
// Zelda: The Windwalker, Mario Sunshine, Mario Kart
|
||||
|
||||
#include "Common.h"
|
||||
#include "../Globals.h"
|
||||
#include "UCodes.h"
|
||||
#include "UCode_Zelda.h"
|
||||
#include "../MailHandler.h"
|
||||
|
||||
|
||||
CUCode_Zelda::CUCode_Zelda(CMailHandler& _rMailHandler)
|
||||
: IUCode(_rMailHandler)
|
||||
, m_numSteps(0)
|
||||
, m_bListInProgress(false)
|
||||
{
|
||||
DebugLog("UCode_Zelda - add boot mails for handshake");
|
||||
m_rMailHandler.PushMail(DSP_INIT);
|
||||
m_rMailHandler.PushMail(0x80000000); // handshake
|
||||
}
|
||||
|
||||
|
||||
CUCode_Zelda::~CUCode_Zelda()
|
||||
{
|
||||
m_rMailHandler.Clear();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CUCode_Zelda::Update()
|
||||
{
|
||||
// check if we have to sent something
|
||||
if (!m_rMailHandler.IsEmpty())
|
||||
{
|
||||
g_dspInitialize.pGenerateDSPInterrupt();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ==================================================================================================
|
||||
// Mail handler
|
||||
// ==================================================================================================
|
||||
|
||||
|
||||
void
|
||||
CUCode_Zelda::HandleMail(u32 _uMail)
|
||||
{
|
||||
if (m_bListInProgress == false)
|
||||
{
|
||||
m_bListInProgress = true;
|
||||
m_numSteps = _uMail;
|
||||
m_step = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
((u32*)m_Buffer)[m_step] = _uMail;
|
||||
m_step++;
|
||||
|
||||
if (m_step == m_numSteps)
|
||||
{
|
||||
ExecuteList();
|
||||
m_bListInProgress = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CUCode_Zelda::ExecuteList()
|
||||
{
|
||||
// begin with the list
|
||||
m_readOffset = 0;
|
||||
|
||||
u32 Temp = Read32();
|
||||
u32 Command = (Temp >> 24) & 0x7f;
|
||||
u32 Sync = Temp >> 16;
|
||||
|
||||
DebugLog("==============================================================================");
|
||||
DebugLog("Zelda UCode - execute dlist (cmd: 0x%04x : sync: 0x%04x)", Command, Sync);
|
||||
|
||||
switch (Command)
|
||||
{
|
||||
// DsetupTable ... zelda ww jumps to 0x0095
|
||||
case 0x01:
|
||||
{
|
||||
u32 tmp[4];
|
||||
tmp[0] = Read32();
|
||||
tmp[1] = Read32();
|
||||
tmp[2] = Read32();
|
||||
tmp[3] = Read32();
|
||||
|
||||
DebugLog("DsetupTable");
|
||||
DebugLog("???: 0x%08x", tmp[0]);
|
||||
DebugLog("DSPRES_FILTER (size: 0x40): 0x%08x", tmp[1]);
|
||||
DebugLog("DSPADPCM_FILTER (size: 0x500): 0x%08x", tmp[2]);
|
||||
DebugLog("???: 0x%08x", tmp[3]);
|
||||
}
|
||||
break;
|
||||
|
||||
// SyncFrame ... zelda ww jumps to 0x0243
|
||||
case 0x02:
|
||||
{
|
||||
u32 tmp[3];
|
||||
tmp[0] = Read32();
|
||||
tmp[1] = Read32();
|
||||
tmp[2] = Read32();
|
||||
|
||||
DebugLog("DsyncFrame");
|
||||
DebugLog("???: 0x%08x", tmp[0]);
|
||||
DebugLog("???: 0x%08x", tmp[1]);
|
||||
DebugLog("DSPADPCM_FILTER (size: 0x500): 0x%08x", tmp[2]);
|
||||
}
|
||||
break;
|
||||
|
||||
/*
|
||||
case 0x03: break; // dunno ... zelda ww jmps to 0x0073
|
||||
case 0x04: break; // dunno ... zelda ww jmps to 0x0580
|
||||
case 0x05: break; // dunno ... zelda ww jmps to 0x0592
|
||||
case 0x06: break; // dunno ... zelda ww jmps to 0x0469
|
||||
|
||||
case 0x07: break; // dunno ... zelda ww jmps to 0x044d
|
||||
case 0x08: break; // Mixer ... zelda ww jmps to 0x0485
|
||||
case 0x09: break; // dunno ... zelda ww jmps to 0x044d
|
||||
*/
|
||||
|
||||
// DsetDolbyDelay ... zelda ww jumps to 0x00b2
|
||||
case 0x0d:
|
||||
{
|
||||
u32 tmp[2];
|
||||
tmp[0] = Read32();
|
||||
tmp[1] = Read32();
|
||||
|
||||
DebugLog("DSetDolbyDelay");
|
||||
DebugLog("DOLBY2_DELAY_BUF (size 0x960): 0x%08x", tmp[0]);
|
||||
DebugLog("DSPRES_FILTER (size 0x500): 0x%08x", tmp[1]);
|
||||
}
|
||||
break;
|
||||
|
||||
// Set VARAM
|
||||
case 0x0e:
|
||||
// MessageBox(NULL, "Zelda VARAM", "cmd", MB_OK);
|
||||
break;
|
||||
|
||||
// default ... zelda ww jumps to 0x0043
|
||||
default:
|
||||
PanicAlert("Zelda UCode - unknown cmd: %x (size %i)", Command, m_numSteps);
|
||||
break;
|
||||
}
|
||||
|
||||
// sync, we are rdy
|
||||
m_rMailHandler.PushMail(DSP_SYNC);
|
||||
m_rMailHandler.PushMail(0xF3550000 | Sync);
|
||||
}
|
||||
|
||||
|
@ -1,81 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _UCODE_ZELDA_H
|
||||
#define _UCODE_ZELDA_H
|
||||
|
||||
#include "Common.h"
|
||||
#include "UCodes.h"
|
||||
|
||||
class CUCode_Zelda
|
||||
: public IUCode
|
||||
{
|
||||
private:
|
||||
|
||||
enum EDSP_Codes
|
||||
{
|
||||
DSP_INIT = 0xDCD10000,
|
||||
DSP_RESUME = 0xDCD10001,
|
||||
DSP_YIELD = 0xDCD10002,
|
||||
DSP_DONE = 0xDCD10003,
|
||||
DSP_SYNC = 0xDCD10004,
|
||||
DSP_UNKN = 0xDCD10005,
|
||||
};
|
||||
|
||||
// List in progress
|
||||
int m_numSteps;
|
||||
bool m_bListInProgress;
|
||||
int m_step;
|
||||
u8 m_Buffer[1024];
|
||||
void ExecuteList();
|
||||
|
||||
|
||||
u32 m_readOffset;
|
||||
|
||||
u8 Read8()
|
||||
{
|
||||
return(m_Buffer[m_readOffset++]);
|
||||
}
|
||||
|
||||
|
||||
u16 Read16()
|
||||
{
|
||||
u16 res = *(u16*)&m_Buffer[m_readOffset];
|
||||
m_readOffset += 2;
|
||||
return(res);
|
||||
}
|
||||
|
||||
|
||||
u32 Read32()
|
||||
{
|
||||
u32 res = *(u32*)&m_Buffer[m_readOffset];
|
||||
m_readOffset += 4;
|
||||
return(res);
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
|
||||
CUCode_Zelda(CMailHandler& _rMailHandler);
|
||||
virtual ~CUCode_Zelda();
|
||||
|
||||
void HandleMail(u32 _uMail);
|
||||
void Update();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,87 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
#include "../Globals.h"
|
||||
|
||||
#include "UCodes.h"
|
||||
|
||||
#include "UCode_AX.h"
|
||||
#include "UCode_Zelda.h"
|
||||
#include "UCode_Jac.h"
|
||||
#include "UCode_ROM.h"
|
||||
#include "UCode_CARD.h"
|
||||
#include "UCode_InitAudioSystem.h"
|
||||
|
||||
IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler)
|
||||
{
|
||||
switch (_CRC)
|
||||
{
|
||||
case UCODE_ROM:
|
||||
return(new CUCode_Rom(_rMailHandler));
|
||||
|
||||
case UCODE_INIT_AUDIO_SYSTEM:
|
||||
return(new CUCode_InitAudioSystem(_rMailHandler));
|
||||
|
||||
case 0x65d6cc6f: // CARD
|
||||
return(new CUCode_CARD(_rMailHandler));
|
||||
|
||||
case 0x088e38a5: // IPL - JAP
|
||||
case 0xd73338cf: // IPL
|
||||
case 0x42f64ac4: // Luigi (after fix)
|
||||
case 0x4be6a5cb: // AC, Pikmin (after fix)
|
||||
DebugLog("JAC ucode chosen");
|
||||
return(new CUCode_Jac(_rMailHandler));
|
||||
|
||||
case 0x3ad3b7ac: // Naruto3
|
||||
case 0x3daf59b9: // Alien Hominid
|
||||
case 0x4e8a8b21: // spdemo, ctaxi, 18 wheeler, disney, monkeyball2,cubivore,puzzlecollection,wario,
|
||||
// capcom vs snk, naruto2, lost kingdoms, star fox, mario party 4, mortal kombat,
|
||||
// smugglers run warzone, smash brothers, sonic mega collection, ZooCube
|
||||
// nddemo, starfox
|
||||
case 0x07f88145: // bustamove, ikaruga, fzero, robotech battle cry, star soldier, soul calibur2,
|
||||
// Zelda:OOT, Tony hawk, viewtiful joe
|
||||
case 0xe2136399: // billy hatcher, dragonballz, mario party 5, TMNT, ava1080
|
||||
DebugLog("AX ucode chosen, yay!");
|
||||
return(new CUCode_AX(_rMailHandler));
|
||||
|
||||
case 0x6CA33A6D: // DK Jungle Beat
|
||||
case 0x86840740: // zelda
|
||||
case 0x56d36052: // mario
|
||||
case 0x2fcdf1ec: // mariokart, zelda 4 swords
|
||||
DebugLog("Zelda ucode chosen");
|
||||
return(new CUCode_Zelda(_rMailHandler));
|
||||
|
||||
// WII CRCs
|
||||
case 0x6c3f6f94: // zelda - PAL
|
||||
case 0xd643001f: // mario galaxy - PAL
|
||||
DebugLog("Zelda Wii ucode chosen");
|
||||
return(new CUCode_Zelda(_rMailHandler));
|
||||
|
||||
case 0x347112ba: // raving rabbits
|
||||
DebugLog("Wii - AX chosen");
|
||||
return(new CUCode_AX(_rMailHandler));
|
||||
|
||||
default:
|
||||
PanicAlert("Unknown ucode (CRC = %08x) - forcing AX", _CRC);
|
||||
return(new CUCode_AX(_rMailHandler));
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
|
@ -1,56 +0,0 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// 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, version 2.0.
|
||||
|
||||
// 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 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _UCODES_H
|
||||
#define _UCODES_H
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#define UCODE_ROM 0x0000000
|
||||
#define UCODE_INIT_AUDIO_SYSTEM 0x0000001
|
||||
|
||||
class CMailHandler;
|
||||
class IUCode
|
||||
{
|
||||
public:
|
||||
|
||||
IUCode(CMailHandler& _rMailHandler)
|
||||
: m_rMailHandler(_rMailHandler)
|
||||
{}
|
||||
|
||||
|
||||
virtual ~IUCode()
|
||||
{}
|
||||
|
||||
|
||||
virtual void HandleMail(u32 _uMail) = 0;
|
||||
virtual void Update(void) = 0;
|
||||
|
||||
|
||||
virtual void MixAdd(short* buffer, int size) {}
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
CMailHandler& m_rMailHandler;
|
||||
};
|
||||
|
||||
extern IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler);
|
||||
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user