mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 06:39:46 -06:00
reapply changes from 4550-4551,4556-4559 correctly...sigh...some files were ignored by tortoisesvn, and myself :|
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4570 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -51,7 +51,7 @@ enum
|
||||
ZCODE_END = 0x00,
|
||||
ZCODE_NORM = 0x02,
|
||||
ZCODE_ROW = 0x03,
|
||||
ZCODE_MEM_COPY = 0x04,
|
||||
ZCODE_04 = 0x04,
|
||||
|
||||
// Conditonal Codes
|
||||
CONDTIONAL_IF_EQUAL = 0x01,
|
||||
@ -227,16 +227,17 @@ void LogInfo(const char *format, ...)
|
||||
|
||||
void RunAllActive()
|
||||
{
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats) {
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats)
|
||||
{
|
||||
for (std::vector<ARCode>::iterator i = activeCodes.begin(); i != activeCodes.end(); ++i)
|
||||
{
|
||||
if (i->active)
|
||||
{
|
||||
if (!RunCode(*i))
|
||||
i->active = false;
|
||||
i->active = RunCode(*i);
|
||||
LogInfo("\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (!b_RanOnce)
|
||||
b_RanOnce = true;
|
||||
}
|
||||
@ -292,16 +293,18 @@ bool RunCode(const ARCode &arcode) {
|
||||
LogInfo("Command: %08x", cmd);
|
||||
|
||||
// Do Fill & Slide
|
||||
if (doFillNSlide) {
|
||||
if (doFillNSlide)
|
||||
{
|
||||
doFillNSlide = false;
|
||||
LogInfo("Doing Fill And Slide");
|
||||
if (!ZeroCode_FillAndSlide(val_last, addr, data))
|
||||
return false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Memory Copy
|
||||
if (doMemoryCopy) {
|
||||
if (doMemoryCopy)
|
||||
{
|
||||
doMemoryCopy = false;
|
||||
LogInfo("Doing Memory Copy");
|
||||
if (!ZeroCode_MemoryCopy(val_last, addr, data))
|
||||
@ -310,7 +313,8 @@ bool RunCode(const ARCode &arcode) {
|
||||
}
|
||||
|
||||
// ActionReplay program self modification codes
|
||||
if (addr >= 0x00002000 && addr < 0x00003000) {
|
||||
if (addr >= 0x00002000 && addr < 0x00003000)
|
||||
{
|
||||
LogInfo("This action replay simulator does not support codes that modify Action Replay itself.");
|
||||
PanicAlert("This action replay simulator does not support codes that modify Action Replay itself.");
|
||||
return false;
|
||||
@ -339,7 +343,7 @@ bool RunCode(const ARCode &arcode) {
|
||||
LogInfo("ZCode: Executes all codes in the same row, Set register 1BB4 to 1 (zcode not supported)");
|
||||
PanicAlert("Zero 3 code not supported");
|
||||
return false;
|
||||
case ZCODE_MEM_COPY: // Fill & Slide or Memory Copy
|
||||
case ZCODE_04: // Fill & Slide or Memory Copy
|
||||
if (((addr >> 25) & 0x03) == 0x3)
|
||||
{
|
||||
LogInfo("ZCode: Memory Copy");
|
||||
@ -554,7 +558,7 @@ bool Subtype_WriteToPointer(u32 addr, u32 data)
|
||||
bool Subtype_AddCode(u32 addr, u32 data)
|
||||
{
|
||||
// Used to incrment a value in memory
|
||||
u32 new_addr = (addr & 0x01FFFFFF) | 0x80000000;
|
||||
u32 new_addr = (addr & 0x81FFFFFF);
|
||||
u8 size = (addr >> 25) & 0x03;
|
||||
LogInfo("Hardware Address: %08x", new_addr);
|
||||
LogInfo("Size: %08x", size);
|
||||
@ -585,12 +589,15 @@ bool Subtype_AddCode(u32 addr, u32 data)
|
||||
{
|
||||
LogInfo("32-bit floating Add");
|
||||
LogInfo("--------");
|
||||
union conv {float x; u32 y;};
|
||||
conv c1;
|
||||
c1.y = Memory::Read_U32(new_addr);
|
||||
c1.x += (float)data;
|
||||
Memory::Write_U32((u32)c1.x, new_addr);
|
||||
LogInfo("Wrote %08x to address %08x", (u32)c1.x, new_addr);
|
||||
|
||||
u32 read = Memory::Read_U32(new_addr);
|
||||
float fread = *((float*)&read);
|
||||
fread += (float)data;
|
||||
u32 newval = *((u32*)&fread);
|
||||
Memory::Write_U32(newval, new_addr);
|
||||
LogInfo("Old Value %08x", read);
|
||||
LogInfo("Increment %08x", data);
|
||||
LogInfo("New value %08x", newval);
|
||||
LogInfo("--------");
|
||||
break;
|
||||
}
|
||||
@ -615,7 +622,7 @@ bool Subtype_MasterCodeAndWriteToCCXXXXXX(u32 addr, u32 data)
|
||||
|
||||
bool ZeroCode_FillAndSlide(u32 val_last, u32 addr, u32 data) // This needs more testing
|
||||
{
|
||||
u32 new_addr = (val_last & 0x01FFFFFF) | 0x80000000;
|
||||
u32 new_addr = (val_last & 0x81FFFFFF);
|
||||
u8 size = (val_last >> 25) & 0x03;
|
||||
s16 addr_incr = (s16)(data & 0xFFFF);
|
||||
s8 val_incr = (s8)((data & 0xFF000000) >> 24);
|
||||
|
@ -235,8 +235,7 @@ void PatchEngineCallback(u64 userdata, int cyclesLate)
|
||||
// Patch mem and run the Action Replay
|
||||
PatchEngine::ApplyFramePatches();
|
||||
PatchEngine::ApplyARPatches();
|
||||
|
||||
CoreTiming::ScheduleEvent((GetTicksPerSecond() / 60) - cyclesLate, et_PatchEngine);
|
||||
CoreTiming::ScheduleEvent(((GetTicksPerSecond() / 5000) - cyclesLate, et_PatchEngine);
|
||||
}
|
||||
|
||||
void Init()
|
||||
|
@ -19,6 +19,7 @@
|
||||
// Supports simple memory patches, and has a partial Action Replay implementation
|
||||
// in ActionReplay.cpp/h.
|
||||
|
||||
// TODO: Still even needed? Zelda WW now works with improved DSP code.
|
||||
// Zelda item hang fixes:
|
||||
// [Tue Aug 21 2007] [18:30:40] <Knuckles-> 0x802904b4 in US released
|
||||
// [Tue Aug 21 2007] [18:30:53] <Knuckles-> 0x80294d54 in EUR Demo version
|
||||
|
@ -156,9 +156,10 @@ u16 dsp_read_accelerator()
|
||||
// Set address back to start address.
|
||||
Address = (gdsp_ifx_regs[DSP_ACSAH] << 16) | gdsp_ifx_regs[DSP_ACSAL];
|
||||
|
||||
// Do we really need both?
|
||||
DSPHost_InterruptRequest();
|
||||
DSPCore_SetException(EXP_2);
|
||||
// Do we really need both? (nakee: seems to cause problems with some
|
||||
// AX games)
|
||||
// DSPHost_InterruptRequest();
|
||||
// DSPCore_SetException(EXP_2);
|
||||
DSPCore_SetException(EXP_ACCOV);
|
||||
|
||||
// Somehow, YN1 and YN2 must be initialized with their "loop" values,
|
||||
|
@ -161,7 +161,7 @@ void gdsp_ifx_write(u16 addr, u16 val)
|
||||
break;
|
||||
|
||||
case 0xd3: // ZeldaUnk (accelerator WRITE)
|
||||
NOTICE_LOG(DSPLLE, "Write To ZeldaUnk pc=%04x (%04x)", g_dsp.pc, val);
|
||||
// NOTICE_LOG(DSPLLE, "Write To ZeldaUnk pc=%04x (%04x)", g_dsp.pc, val);
|
||||
dsp_write_aram_d3(val);
|
||||
break;
|
||||
|
||||
@ -215,7 +215,7 @@ u16 gdsp_ifx_read(u16 addr)
|
||||
return dsp_read_accelerator();
|
||||
|
||||
case 0xd3:
|
||||
NOTICE_LOG(DSPLLE, "Read from ZeldaUnk pc=%04x", g_dsp.pc);
|
||||
//NOTICE_LOG(DSPLLE, "Read from ZeldaUnk pc=%04x", g_dsp.pc);
|
||||
return dsp_read_aram_d3();
|
||||
|
||||
default:
|
||||
@ -316,7 +316,7 @@ void gdsp_do_dma()
|
||||
exit(0);
|
||||
}
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||
NOTICE_LOG(DSPLLE, "DMA pc: %04x ctl: %04x addr: %08x da: %04x size: %04x", g_dsp.pc, ctl, addr, dsp_addr, len);
|
||||
DEBUG_LOG(DSPLLE, "DMA pc: %04x ctl: %04x addr: %08x da: %04x size: %04x", g_dsp.pc, ctl, addr, dsp_addr, len);
|
||||
#endif
|
||||
switch (ctl & 0x3)
|
||||
{
|
||||
|
@ -116,8 +116,8 @@ void CARCodeAddEdit::SaveCheatData(wxCommandEvent& WXUNUSED (event))
|
||||
|
||||
if (pieces.size() == 2 && pieces[0].size() == 8 && pieces[1].size() == 8)
|
||||
{
|
||||
u32 addr = strtol(pieces[0].c_str(), NULL, 16);
|
||||
u32 value = strtol(pieces[1].c_str(), NULL, 16);
|
||||
u32 addr = strtoul(pieces[0].c_str(), NULL, 16);
|
||||
u32 value = strtoul(pieces[1].c_str(), NULL, 16);
|
||||
// Decrypted code
|
||||
tempEntries.push_back(ActionReplay::AREntry(addr, value));
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ void PixelShaderManager::SetConstants()
|
||||
break;
|
||||
case 2:
|
||||
// 24 bits
|
||||
ftemp[0] = ffrac/65536.0f; ftemp[1] = ffrac/256.0f; ftemp[2] = ffrac; ftemp[3] = ffrac/16777216.0f;
|
||||
ftemp[0] = ffrac/65536.0f; ftemp[1] = ffrac/256.0f; ftemp[2] = ffrac; ftemp[3] = 0;
|
||||
break;
|
||||
}
|
||||
SetPSConstant4fv(C_ZBIAS, ftemp);
|
||||
|
@ -60,6 +60,25 @@ int TexDecoder_GetTexelSizeInNibbles(int format)
|
||||
case GX_TF_C8: return 2;
|
||||
case GX_TF_C14X2: return 4;
|
||||
case GX_TF_CMPR: return 1;
|
||||
case GX_CTF_R4: return 1;
|
||||
case GX_CTF_RA4: return 2;
|
||||
case GX_CTF_RA8: return 4;
|
||||
case GX_CTF_YUVA8: return 8;
|
||||
case GX_CTF_A8: return 2;
|
||||
case GX_CTF_R8: return 2;
|
||||
case GX_CTF_G8: return 2;
|
||||
case GX_CTF_B8: return 2;
|
||||
case GX_CTF_RG8: return 4;
|
||||
case GX_CTF_GB8: return 4;
|
||||
|
||||
case GX_TF_Z8: return 2;
|
||||
case GX_TF_Z16: return 4;
|
||||
case GX_TF_Z24X8: return 8;
|
||||
|
||||
case GX_CTF_Z4: return 1;
|
||||
case GX_CTF_Z8M: return 2;
|
||||
case GX_CTF_Z8L: return 2;
|
||||
case GX_CTF_Z16L: return 4;
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user