commit
0f96a0104e
|
@ -3,7 +3,7 @@
|
||||||
!define BASE_DIR "..\Binary\${DOLPHIN_ARCH}"
|
!define BASE_DIR "..\Binary\${DOLPHIN_ARCH}"
|
||||||
|
|
||||||
; HM NIS Edit Wizard helper defines
|
; HM NIS Edit Wizard helper defines
|
||||||
!define PRODUCT_PUBLISHER "Dolphin Development Team"
|
!define PRODUCT_PUBLISHER "Dolphin Team"
|
||||||
!define PRODUCT_WEB_SITE "https://dolphin-emu.org/"
|
!define PRODUCT_WEB_SITE "https://dolphin-emu.org/"
|
||||||
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}.exe"
|
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}.exe"
|
||||||
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||||
|
|
|
@ -51,13 +51,13 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo
|
||||||
aid_sample_rate = aid_sample_rate * (framelimit - 1) * 5 / VideoInterface::TargetRefreshRate;
|
aid_sample_rate = aid_sample_rate * (framelimit - 1) * 5 / VideoInterface::TargetRefreshRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
const u32 ratio = (u32)( 65536.0f * aid_sample_rate / (float)m_mixer->m_sampleRate );
|
const u32 ratio = (u32)(65536.0f * aid_sample_rate / (float)m_mixer->m_sampleRate);
|
||||||
|
|
||||||
s32 lvolume = m_LVolume;
|
s32 lvolume = m_LVolume;
|
||||||
s32 rvolume = m_RVolume;
|
s32 rvolume = m_RVolume;
|
||||||
|
|
||||||
// TODO: consider a higher-quality resampling algorithm.
|
// TODO: consider a higher-quality resampling algorithm.
|
||||||
for (; currentSample < numSamples*2 && ((indexW-indexR) & INDEX_MASK) > 2; currentSample+=2)
|
for (; currentSample < numSamples * 2 && ((indexW-indexR) & INDEX_MASK) > 2; currentSample += 2)
|
||||||
{
|
{
|
||||||
u32 indexR2 = indexR + 2; //next sample
|
u32 indexR2 = indexR + 2; //next sample
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo
|
||||||
sampleL = (sampleL * lvolume) >> 8;
|
sampleL = (sampleL * lvolume) >> 8;
|
||||||
sampleL += samples[currentSample + 1];
|
sampleL += samples[currentSample + 1];
|
||||||
MathUtil::Clamp(&sampleL, -32767, 32767);
|
MathUtil::Clamp(&sampleL, -32767, 32767);
|
||||||
samples[currentSample+1] = sampleL;
|
samples[currentSample + 1] = sampleL;
|
||||||
|
|
||||||
s16 r1 = Common::swap16(m_buffer[(indexR + 1) & INDEX_MASK]); //current
|
s16 r1 = Common::swap16(m_buffer[(indexR + 1) & INDEX_MASK]); //current
|
||||||
s16 r2 = Common::swap16(m_buffer[(indexR2 + 1) & INDEX_MASK]); //next
|
s16 r2 = Common::swap16(m_buffer[(indexR2 + 1) & INDEX_MASK]); //next
|
||||||
|
|
|
@ -10,11 +10,7 @@
|
||||||
DSPEmulator *CreateDSPEmulator(bool HLE)
|
DSPEmulator *CreateDSPEmulator(bool HLE)
|
||||||
{
|
{
|
||||||
if (HLE)
|
if (HLE)
|
||||||
{
|
|
||||||
return new DSPHLE();
|
return new DSPHLE();
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
return new DSPLLE();
|
return new DSPLLE();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,6 @@ void CCPU::Run()
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
reswitch:
|
|
||||||
switch (PowerPC::GetState())
|
switch (PowerPC::GetState())
|
||||||
{
|
{
|
||||||
case PowerPC::CPU_RUNNING:
|
case PowerPC::CPU_RUNNING:
|
||||||
|
@ -60,7 +59,7 @@ reswitch:
|
||||||
if (PowerPC::GetState() == PowerPC::CPU_POWERDOWN)
|
if (PowerPC::GetState() == PowerPC::CPU_POWERDOWN)
|
||||||
return;
|
return;
|
||||||
if (PowerPC::GetState() != PowerPC::CPU_STEPPING)
|
if (PowerPC::GetState() != PowerPC::CPU_STEPPING)
|
||||||
goto reswitch;
|
continue;
|
||||||
|
|
||||||
//3: do a step
|
//3: do a step
|
||||||
PowerPC::SingleStep();
|
PowerPC::SingleStep();
|
||||||
|
|
|
@ -136,7 +136,7 @@ static void ExceptionThread(mach_port_t port)
|
||||||
mach_msg_header_t *send_msg = nullptr;
|
mach_msg_header_t *send_msg = nullptr;
|
||||||
mach_msg_size_t send_size = 0;
|
mach_msg_size_t send_size = 0;
|
||||||
mach_msg_option_t option = MACH_RCV_MSG;
|
mach_msg_option_t option = MACH_RCV_MSG;
|
||||||
while (1)
|
while (true)
|
||||||
{
|
{
|
||||||
// If this isn't the first run, send the reply message. Then, receive
|
// If this isn't the first run, send the reply message. Then, receive
|
||||||
// a message: either a mach_exception_raise_state RPC due to
|
// a message: either a mach_exception_raise_state RPC due to
|
||||||
|
|
|
@ -32,7 +32,7 @@ typedef std::vector<u8> NetWiimote;
|
||||||
|
|
||||||
#define NETPLAY_VERSION "Dolphin NetPlay 2014-01-08"
|
#define NETPLAY_VERSION "Dolphin NetPlay 2014-01-08"
|
||||||
|
|
||||||
const int NETPLAY_INITIAL_GCTIME = 1272737767;
|
static const int NETPLAY_INITIAL_GCTIME = 1272737767;
|
||||||
|
|
||||||
|
|
||||||
// messages
|
// messages
|
||||||
|
|
|
@ -313,7 +313,7 @@ static void FindFunctionsAfterBLR(PPCSymbolDB *func_db)
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
// skip zeroes that sometimes pad function to 16 byte boundary (eg. Donkey Kong Country Returns)
|
// skip zeroes that sometimes pad function to 16 byte boundary (e.g. Donkey Kong Country Returns)
|
||||||
while (Memory::Read_Instruction(location) == 0 && ((location & 0xf) != 0))
|
while (Memory::Read_Instruction(location) == 0 && ((location & 0xf) != 0))
|
||||||
location += 4;
|
location += 4;
|
||||||
if (PPCTables::IsValidInstruction(Memory::Read_Instruction(location)))
|
if (PPCTables::IsValidInstruction(Memory::Read_Instruction(location)))
|
||||||
|
|
|
@ -176,7 +176,8 @@ static int GetEmptySlot(std::map<double, int> m)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) return i;
|
if (!found)
|
||||||
|
return i;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,10 +40,8 @@ WbfsFileReader::WbfsFileReader(const std::string& filename)
|
||||||
|
|
||||||
WbfsFileReader::~WbfsFileReader()
|
WbfsFileReader::~WbfsFileReader()
|
||||||
{
|
{
|
||||||
for (u32 i = 0; i != m_files.size(); ++ i)
|
for (file_entry* entry : m_files)
|
||||||
{
|
delete entry;
|
||||||
delete m_files[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
delete[] m_wlba_table;
|
delete[] m_wlba_table;
|
||||||
}
|
}
|
||||||
|
@ -58,7 +56,7 @@ bool WbfsFileReader::OpenFiles(const std::string& filename)
|
||||||
|
|
||||||
// Replace last character with index (e.g. wbfs = wbf1)
|
// Replace last character with index (e.g. wbfs = wbf1)
|
||||||
std::string path = filename;
|
std::string path = filename;
|
||||||
if (0 != m_total_files)
|
if (m_total_files != 0)
|
||||||
{
|
{
|
||||||
path[path.length() - 1] = '0' + m_total_files;
|
path[path.length() - 1] = '0' + m_total_files;
|
||||||
}
|
}
|
||||||
|
@ -73,7 +71,7 @@ bool WbfsFileReader::OpenFiles(const std::string& filename)
|
||||||
new_entry->size = new_entry->file.GetSize();
|
new_entry->size = new_entry->file.GetSize();
|
||||||
m_size += new_entry->size;
|
m_size += new_entry->size;
|
||||||
|
|
||||||
m_total_files ++;
|
m_total_files++;
|
||||||
m_files.push_back(new_entry);
|
m_files.push_back(new_entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,10 +88,7 @@ bool WbfsFileReader::ReadHeader()
|
||||||
m_hd_sector_size = 1ull << m_hd_sector_shift;
|
m_hd_sector_size = 1ull << m_hd_sector_shift;
|
||||||
|
|
||||||
if (m_size != (m_hd_sector_count * m_hd_sector_size))
|
if (m_size != (m_hd_sector_count * m_hd_sector_size))
|
||||||
{
|
|
||||||
//printf("File size doesn't match expected size\n");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
// Read wbfs cluster info
|
// Read wbfs cluster info
|
||||||
m_files[0]->file.ReadBytes(&m_wbfs_sector_shift, 1);
|
m_files[0]->file.ReadBytes(&m_wbfs_sector_shift, 1);
|
||||||
|
@ -101,10 +96,7 @@ bool WbfsFileReader::ReadHeader()
|
||||||
m_wbfs_sector_count = m_size / m_wbfs_sector_size;
|
m_wbfs_sector_count = m_size / m_wbfs_sector_size;
|
||||||
|
|
||||||
if (m_wbfs_sector_size < WII_SECTOR_SIZE)
|
if (m_wbfs_sector_size < WII_SECTOR_SIZE)
|
||||||
{
|
|
||||||
//Setting this too low would case a very large memory allocation
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
m_blocks_per_disc = (WII_SECTOR_COUNT * WII_SECTOR_SIZE) / m_wbfs_sector_size;
|
m_blocks_per_disc = (WII_SECTOR_COUNT * WII_SECTOR_SIZE) / m_wbfs_sector_size;
|
||||||
m_disc_info_size = align(WII_DISC_HEADER_SIZE + m_blocks_per_disc * 2, m_hd_sector_size);
|
m_disc_info_size = align(WII_DISC_HEADER_SIZE + m_blocks_per_disc * 2, m_hd_sector_size);
|
||||||
|
@ -113,11 +105,8 @@ bool WbfsFileReader::ReadHeader()
|
||||||
m_files[0]->file.Seek(2, SEEK_CUR);
|
m_files[0]->file.Seek(2, SEEK_CUR);
|
||||||
m_files[0]->file.ReadBytes(m_disc_table, 500);
|
m_files[0]->file.ReadBytes(m_disc_table, 500);
|
||||||
|
|
||||||
if (0 == m_disc_table[0])
|
if (m_disc_table[0] == 0)
|
||||||
{
|
|
||||||
//printf("Game must be in 'slot 0'\n");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -153,7 +142,7 @@ File::IOFile& WbfsFileReader::SeekToCluster(u64 offset, u64* available)
|
||||||
u64 cluster_offset = offset & (m_wbfs_sector_size - 1);
|
u64 cluster_offset = offset & (m_wbfs_sector_size - 1);
|
||||||
u64 final_address = cluster_address + cluster_offset;
|
u64 final_address = cluster_address + cluster_offset;
|
||||||
|
|
||||||
for (u32 i = 0; i != m_total_files; i ++)
|
for (u32 i = 0; i != m_total_files; i++)
|
||||||
{
|
{
|
||||||
if (final_address < (m_files[i]->base_address + m_files[i]->size))
|
if (final_address < (m_files[i]->base_address + m_files[i]->size))
|
||||||
{
|
{
|
||||||
|
|
|
@ -284,7 +284,7 @@ void DMainWindow::OnOpenDocs()
|
||||||
|
|
||||||
void DMainWindow::OnOpenGitHub()
|
void DMainWindow::OnOpenGitHub()
|
||||||
{
|
{
|
||||||
QDesktopServices::openUrl(QUrl(SL("https://github.com/dolphin-emu/dolphin/")));
|
QDesktopServices::openUrl(QUrl(SL("https://github.com/dolphin-emu/dolphin")));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DMainWindow::OnOpenSystemInfo()
|
void DMainWindow::OnOpenSystemInfo()
|
||||||
|
|
|
@ -41,7 +41,7 @@ AboutDolphin::AboutDolphin(wxWindow *parent, wxWindowID id,
|
||||||
"Today Dolphin is an open source project with many\n"
|
"Today Dolphin is an open source project with many\n"
|
||||||
"contributors, too many to list.\n"
|
"contributors, too many to list.\n"
|
||||||
"If interested, just go check out the project page at\n"
|
"If interested, just go check out the project page at\n"
|
||||||
"https://github.com/dolphin-emu/dolphin/ .\n"
|
"https://github.com/dolphin-emu/dolphin .\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Special thanks to Bushing, Costis, CrowTRobo,\n"
|
"Special thanks to Bushing, Costis, CrowTRobo,\n"
|
||||||
"Marcan, Segher, Titanik, or9 and Hotquik for their\n"
|
"Marcan, Segher, Titanik, or9 and Hotquik for their\n"
|
||||||
|
|
|
@ -1415,7 +1415,7 @@ void CFrame::OnHelp(wxCommandEvent& event)
|
||||||
WxUtils::Launch("https://dolphin-emu.org/docs/guides/");
|
WxUtils::Launch("https://dolphin-emu.org/docs/guides/");
|
||||||
break;
|
break;
|
||||||
case IDM_HELP_GITHUB:
|
case IDM_HELP_GITHUB:
|
||||||
WxUtils::Launch("https://github.com/dolphin-emu/dolphin/");
|
WxUtils::Launch("https://github.com/dolphin-emu/dolphin");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,7 @@ void Television::Submit(u32 xfbAddr, u32 stride, u32 width, u32 height)
|
||||||
// Load data from GameCube RAM to YUYV texture
|
// Load data from GameCube RAM to YUYV texture
|
||||||
u8* yuyvSrc = Memory::GetPointer(xfbAddr);
|
u8* yuyvSrc = Memory::GetPointer(xfbAddr);
|
||||||
D3D11_BOX box = CD3D11_BOX(0, 0, 0, stride, height, 1);
|
D3D11_BOX box = CD3D11_BOX(0, 0, 0, stride, height, 1);
|
||||||
D3D::context->UpdateSubresource(m_yuyvTexture, 0, &box, yuyvSrc, 2*stride, 2*stride*height);
|
D3D::context->UpdateSubresource(m_yuyvTexture, 0, &box, yuyvSrc, 2 * stride, 2 * stride * height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Television::Render()
|
void Television::Render()
|
||||||
|
|
|
@ -29,7 +29,7 @@ NEWBIES OR WANNABES. Sorry.
|
||||||
*************** If you are an experienced, known (by me or gscentral
|
*************** If you are an experienced, known (by me or gscentral
|
||||||
admins) code hacker, and you don't
|
admins) code hacker, and you don't
|
||||||
understand this document, you may try to ask help using the
|
understand this document, you may try to ask help using the
|
||||||
www.gscentral.com forums
|
gscentral.com forums
|
||||||
(or PM me there).
|
(or PM me there).
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue