Ban compression of Wii images until it has been tested. All sorts of minor cleanup.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@669 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard 2008-09-24 19:10:56 +00:00
parent 284e3ec211
commit e4785df7a2
18 changed files with 121 additions and 107 deletions

View File

@ -49,6 +49,11 @@
#endif
#ifdef _WIN32
#ifdef _WIN32
#define fseek _fseeki64
#define ftell _ftelli64
#endif
#define POSIX 0
#define NOMINMAX

View File

@ -110,6 +110,8 @@ void CLogWindow::OnClear(wxCommandEvent& event)
void CLogWindow::OnEnableAll(wxCommandEvent& event)
{
if (!LogManager::m_Log[0])
return;
static bool enable = true;
IniFile ini;
ini.Load("Dolphin.ini");

View File

@ -26,6 +26,7 @@
#include "Common.h"
#include "CompressedBlob.h"
#include "FileUtil.h"
#include "Hash.h"
#ifdef _WIN32
@ -35,11 +36,6 @@
#include "../../../../Externals/zlib/zlib.h"
#endif
#ifdef _WIN32
#define fseek _fseeki64
#endif
namespace DiscIO
{
@ -163,6 +159,11 @@ void CompressedBlobReader::GetBlock(u64 block_num, u8 *out_ptr)
bool CompressFileToBlob(const char* infile, const char* outfile, u32 sub_type,
int block_size, CompressCB callback, void* arg)
{
if (File::GetSize(infile) > 2000000000ULL) {
PanicAlert("Sorry - compressing Wii games not yet supported.");
return false;
}
if (IsCompressedBlob(infile))
{
PanicAlert("%s is already compressed! Cannot compress it further.", infile);

View File

@ -137,6 +137,7 @@ size_t CFileSystemGCWii::GetFileList(std::vector<const SFileInfo *> &_rFilenames
if (_rFilenames.size())
PanicAlert("GetFileList : input list has contents?");
_rFilenames.clear();
_rFilenames.reserve(m_FileInfoVector.size());
for (size_t i = 0; i < m_FileInfoVector.size(); i++)
_rFilenames.push_back(&m_FileInfoVector[i]);
return m_FileInfoVector.size();
@ -182,9 +183,11 @@ bool CFileSystemGCWii::InitFileSystem()
if (Root.IsDirectory())
{
m_FileInfoVector.clear();
if (m_FileInfoVector.size())
PanicAlert("Wtf?");
u64 NameTableOffset = FSTOffset;
m_FileInfoVector.reserve(Root.m_FileSize);
for (u32 i = 0; i < Root.m_FileSize; i++)
{
SFileInfo sfi;
@ -194,7 +197,6 @@ bool CFileSystemGCWii::InitFileSystem()
sfi.m_FileSize = Read32(Offset + 0x8);
m_FileInfoVector.push_back(sfi);
NameTableOffset += 0xC;
}

View File

@ -79,7 +79,7 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename)
{
case DISC_TYPE_WII:
case DISC_TYPE_GC:
return(new CVolumeGC(pReader));
return new CVolumeGC(pReader);
case DISC_TYPE_WII_CONTAINER:
{
@ -106,7 +106,7 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename)
IVolume* CreateVolumeFromDirectory(const std::string& _rDirectory, bool _bIsWii)
{
if(CVolumeDirectory::IsValidDirectory(_rDirectory))
if (CVolumeDirectory::IsValidDirectory(_rDirectory))
return new CVolumeDirectory(_rDirectory, _bIsWii);
return NULL;

View File

@ -421,7 +421,7 @@ void CVolumeDirectory::WriteEntry(const File::FSTEntry& entry, u32& fstOffset, u
m_virtualDisk.insert(make_pair(dataOffset, entry.physicalName));
// 4 byte aligned
dataOffset = (dataOffset + entry.size + 3) & ~3;
dataOffset = (dataOffset + entry.size + 3) & ~3ULL;
}
}

View File

@ -26,63 +26,63 @@
class CGameListCtrl : public wxListCtrl
{
public:
public:
CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style);
~CGameListCtrl();
CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style);
~CGameListCtrl();
void Update();
void BrowseForDirectory();
const GameListItem *GetSelectedISO() const;
const GameListItem *GetISO(int index) const;
void Update();
void BrowseForDirectory();
const GameListItem *GetSelectedISO() const;
const GameListItem *GetISO(int index) const;
enum
{
COLUMN_BANNER = 0,
COLUMN_TITLE,
COLUMN_COMPANY,
COLUMN_NOTES,
COLUMN_COUNTRY,
COLUMN_SIZE,
COLUMN_EMULATION_STATE,
NUMBER_OF_COLUMN
};
enum
{
COLUMN_BANNER = 0,
COLUMN_TITLE,
COLUMN_COMPANY,
COLUMN_NOTES,
COLUMN_COUNTRY,
COLUMN_SIZE,
COLUMN_EMULATION_STATE,
NUMBER_OF_COLUMN
};
private:
private:
std::vector<int> m_FlagImageIndex;
std::vector<GameListItem> m_ISOFiles;
std::vector<int> m_FlagImageIndex;
std::vector<GameListItem> m_ISOFiles;
int last_column;
int last_sort;
int last_column;
int last_sort;
void InitBitmaps();
void InsertItemInReportView(long _Index);
void SetBackgroundColor();
void ScanForISOs();
void InitBitmaps();
void InsertItemInReportView(long _Index);
void SetBackgroundColor();
void ScanForISOs();
DECLARE_EVENT_TABLE()
DECLARE_EVENT_TABLE()
// events
void OnRightClick(wxMouseEvent& event);
void OnColumnClick(wxListEvent& event);
void OnColBeginDrag(wxListEvent& event);
void OnColEndDrag(wxListEvent& event);
void OnSelected(wxListEvent& event);
void OnActivated(wxListEvent& event);
void OnSize(wxSizeEvent& event);
void OnEditPatchFile(wxCommandEvent& event);
void OnOpenContainingFolder(wxCommandEvent& event);
void OnSetDefaultGCM(wxCommandEvent& event);
void OnDeleteGCM(wxCommandEvent& event);
void OnCompressGCM(wxCommandEvent& event);
void OnFilesystemViewer(wxCommandEvent& event);
// events
void OnRightClick(wxMouseEvent& event);
void OnColumnClick(wxListEvent& event);
void OnColBeginDrag(wxListEvent& event);
void OnColEndDrag(wxListEvent& event);
void OnSelected(wxListEvent& event);
void OnActivated(wxListEvent& event);
void OnSize(wxSizeEvent& event);
void OnEditPatchFile(wxCommandEvent& event);
void OnOpenContainingFolder(wxCommandEvent& event);
void OnSetDefaultGCM(wxCommandEvent& event);
void OnDeleteGCM(wxCommandEvent& event);
void OnCompressGCM(wxCommandEvent& event);
void OnFilesystemViewer(wxCommandEvent& event);
virtual bool MSWDrawSubItem(wxPaintDC& rPaintDC, int item, int subitem);
virtual bool MSWDrawSubItem(wxPaintDC& rPaintDC, int item, int subitem);
void AutomaticColumnWidth();
void AutomaticColumnWidth();
static void CompressCB(const char* text, float percent, void* arg);
static void CompressCB(const char* text, float percent, void* arg);
};

View File

@ -18,7 +18,8 @@
#include <vector>
#include <string>
#ifdef WIN32
#include "svnrev.h"
#include <crtdbg.h>
#include "svnrev.h"
#endif
#include "CPUDetect.h"
#include "Globals.h"
@ -69,6 +70,13 @@ LONG WINAPI MyUnhandledExceptionFilter(LPEXCEPTION_POINTERS e) {
bool DolphinApp::OnInit()
{
DetectCPU();
#ifdef _DEBUG
int tmpflag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpflag |= _CRTDBG_DELAY_FREE_MEM_DF;
_CrtSetDbgFlag(tmpflag);
#endif
#ifndef _WIN32
// RegisterPanicAlertHandler(&wxPanicAlert);
#endif

View File

@ -42,9 +42,7 @@ CDSPHandler::~CDSPHandler()
void CDSPHandler::Update()
{
if (m_pUCode != NULL)
{
m_pUCode->Update();
}
}
unsigned short CDSPHandler::WriteControlRegister(unsigned short _Value)
@ -64,32 +62,29 @@ unsigned short CDSPHandler::WriteControlRegister(unsigned short _Value)
}
m_DSPControl.Hex = Temp.Hex;
return(m_DSPControl.Hex);
return m_DSPControl.Hex;
}
unsigned short CDSPHandler::ReadControlRegister()
{
return(m_DSPControl.Hex);
return m_DSPControl.Hex;
}
void CDSPHandler::SendMailToDSP(u32 _uMail)
{
if (m_pUCode != NULL)
{
m_pUCode->HandleMail(_uMail);
}
}
IUCode* CDSPHandler::GetUCode()
{
return(m_pUCode);
return m_pUCode;
}
void CDSPHandler::SetUCode(u32 _crc)
{
delete m_pUCode;
m_pUCode = NULL;
m_MailHandler.Clear();
m_pUCode = UCodeFactory(_crc, m_MailHandler);
}

View File

@ -32,11 +32,11 @@ public:
IUCode* GetUCode();
void SetUCode(u32 _crc);
CMailHandler& AccessMailHandler() {return(m_MailHandler);}
CMailHandler& AccessMailHandler() { return m_MailHandler; }
static CDSPHandler& GetInstance()
{
return(*m_pInstance);
return *m_pInstance;
}
static void Destroy()
@ -48,11 +48,9 @@ public:
static CDSPHandler& CreateInstance()
{
if (!m_pInstance)
{
m_pInstance = new CDSPHandler();
}
return(*m_pInstance);
return *m_pInstance;
}
private:

View File

@ -18,7 +18,9 @@
#include "MailHandler.h"
CMailHandler::CMailHandler()
{}
{
}
CMailHandler::~CMailHandler()
{
@ -38,13 +40,11 @@ u16 CMailHandler::ReadDSPMailboxHigh()
if (!m_Mails.empty())
{
u16 result = (m_Mails.front() >> 16) & 0xFFFF;
Update();
return(result);
return result;
}
return(0x00);
return 0x00;
}
u16 CMailHandler::ReadDSPMailboxLow()
@ -60,20 +60,18 @@ u16 CMailHandler::ReadDSPMailboxLow()
return(result);
}
return(0x00);
return 0x00;
}
void CMailHandler::Clear()
{
while (!m_Mails.empty())
{
m_Mails.pop();
}
}
bool CMailHandler::IsEmpty()
{
return(m_Mails.empty());
return m_Mails.empty();
}
void CMailHandler::Halt(bool _Halt)

View File

@ -29,10 +29,13 @@ CUCode_Zelda::CUCode_Zelda(CMailHandler& _rMailHandler)
: IUCode(_rMailHandler)
, m_numSteps(0)
, m_bListInProgress(false)
, m_step(0)
, m_readOffset(0)
{
DebugLog("UCode_Zelda - add boot mails for handshake");
m_rMailHandler.PushMail(DSP_INIT);
m_rMailHandler.PushMail(0x80000000); // handshake
memset(m_Buffer, 0, sizeof(m_Buffer));
}
@ -46,9 +49,7 @@ void CUCode_Zelda::Update()
{
// check if we have to sent something
if (!m_rMailHandler.IsEmpty())
{
g_dspInitialize.pGenerateDSPInterrupt();
}
}
@ -62,6 +63,8 @@ void CUCode_Zelda::HandleMail(u32 _uMail)
}
else
{
if (m_step < 0 || m_step >= sizeof(m_Buffer)/4)
PanicAlert("m_step out of range");
((u32*)m_Buffer)[m_step] = _uMail;
m_step++;

View File

@ -45,21 +45,21 @@ private:
u8 Read8()
{
return(m_Buffer[m_readOffset++]);
return m_Buffer[m_readOffset++];
}
u16 Read16()
{
u16 res = *(u16*)&m_Buffer[m_readOffset];
m_readOffset += 2;
return(res);
return res;
}
u32 Read32()
{
u32 res = *(u32*)&m_Buffer[m_readOffset];
m_readOffset += 4;
return(res);
return res;
}
public:

View File

@ -32,20 +32,20 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler)
switch (_CRC)
{
case UCODE_ROM:
return(new CUCode_Rom(_rMailHandler));
return new CUCode_Rom(_rMailHandler);
case UCODE_INIT_AUDIO_SYSTEM:
return(new CUCode_InitAudioSystem(_rMailHandler));
return new CUCode_InitAudioSystem(_rMailHandler);
case 0x65d6cc6f: // CARD
return(new CUCode_CARD(_rMailHandler));
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));
return new CUCode_Jac(_rMailHandler);
case 0x3ad3b7ac: // Naruto3
case 0x3daf59b9: // Alien Hominid
@ -57,31 +57,31 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler)
// 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));
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));
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));
return new CUCode_Zelda(_rMailHandler);
case 0x347112ba: // raving rabbits
DebugLog("Wii - AX chosen");
return(new CUCode_AX(_rMailHandler, true));
return new CUCode_AX(_rMailHandler, true);
default:
PanicAlert("Unknown ucode (CRC = %08x) - forcing AX", _CRC);
return(new CUCode_AX(_rMailHandler));
return new CUCode_AX(_rMailHandler);
}
return(NULL);
return NULL;
}

View File

@ -24,6 +24,7 @@
#define UCODE_INIT_AUDIO_SYSTEM 0x0000001
class CMailHandler;
class IUCode
{
public:

View File

@ -132,6 +132,12 @@ void DSP_Initialize(DSPInitialize _dspInitialize)
CDSPHandler::CreateInstance();
#ifdef _WIN32
#ifdef _DEBUG
int tmpflag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpflag |= _CRTDBG_DELAY_FREE_MEM_DF;
_CrtSetDbgFlag(tmpflag);
#endif
DSound::DSound_StartSound((HWND)g_dspInitialize.hWnd, 48000, Mixer);
#else
AOSound::AOSound_StartSound(48000, Mixer);
@ -157,11 +163,11 @@ unsigned short DSP_ReadMailboxHigh(bool _CPUMailbox)
{
if (_CPUMailbox)
{
return((g_dspState.CPUMailbox >> 16) & 0xFFFF);
return (g_dspState.CPUMailbox >> 16) & 0xFFFF;
}
else
{
return(CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxHigh());
return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxHigh();
}
}
@ -169,11 +175,11 @@ unsigned short DSP_ReadMailboxLow(bool _CPUMailbox)
{
if (_CPUMailbox)
{
return(g_dspState.CPUMailbox & 0xFFFF);
return g_dspState.CPUMailbox & 0xFFFF;
}
else
{
return(CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxLow());
return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxLow();
}
}
@ -249,5 +255,4 @@ void DSP_SendAIBuffer(unsigned int address, int sample_rate)
if ((counter & 255) == 0)
DSound::DSound_UpdateSound();
#endif
}

View File

@ -7,11 +7,10 @@
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//-----------------------------------------------------------------------------
#define STRICT
#define DIRECTINPUT_VERSION 0x0800
#include "stdafx.h"
#define DIRECTINPUT_VERSION 0x0800
#include <basetsd.h>
#include <tchar.h>
#include <stdio.h>
@ -21,9 +20,6 @@
#include "MultiDI.h"
#include <assert.h>
//-----------------------------------------------------------------------------
// Name: CMultiplayerInputDeviceManager
// Desc: Constructor

View File

@ -303,8 +303,8 @@ void SendReportCoreAccelIr12() {
RECT screenRect;
POINT point;
_dbg_assert_(WIIMOTE, GetClipCursor(&screenRect));
_dbg_assert_(WIIMOTE, GetCursorPos(&point));
GetClipCursor(&screenRect);
GetCursorPos(&point);
y0 = y1 = (point.y * (screenRect.bottom - screenRect.top)) / (BOTTOM - TOP);
int x = (point.x * (screenRect.right - screenRect.left)) / (RIGHT - LEFT);
x0 = x - SENSOR_BAR_RADIUS;