mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-13 07:14:49 +00:00
commit
65ecaab2c4
@ -156,9 +156,9 @@ int decrypt_data(rFile *in, rFile *out, EDAT_SDAT_HEADER *edat, NPD_HEADER *npd,
|
|||||||
int length = 0;
|
int length = 0;
|
||||||
int compression_end = 0;
|
int compression_end = 0;
|
||||||
|
|
||||||
if ((edat->flags & EDAT_FLAG_0x3C) != 0 || (edat->flags & EDAT_FLAG_0x3D) != 0)
|
if ((edat->flags & EDAT_FLAG_0x04) != 0)
|
||||||
{
|
{
|
||||||
LOG_ERROR(LOADER, "EDAT: Flag 0x3C/0x3D EDAT files are unsupported yet");
|
LOG_ERROR(LOADER, "EDAT: Flag 0x04 is not yet supported");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,12 +5,11 @@
|
|||||||
#define SDAT_FLAG 0x01000000
|
#define SDAT_FLAG 0x01000000
|
||||||
#define EDAT_COMPRESSED_FLAG 0x00000001
|
#define EDAT_COMPRESSED_FLAG 0x00000001
|
||||||
#define EDAT_FLAG_0x02 0x00000002
|
#define EDAT_FLAG_0x02 0x00000002
|
||||||
|
#define EDAT_FLAG_0x04 0x00000004
|
||||||
#define EDAT_ENCRYPTED_KEY_FLAG 0x00000008
|
#define EDAT_ENCRYPTED_KEY_FLAG 0x00000008
|
||||||
#define EDAT_FLAG_0x10 0x00000010
|
#define EDAT_FLAG_0x10 0x00000010
|
||||||
#define EDAT_FLAG_0x20 0x00000020
|
#define EDAT_FLAG_0x20 0x00000020
|
||||||
#define EDAT_DEBUG_DATA_FLAG 0x80000000
|
#define EDAT_DEBUG_DATA_FLAG 0x80000000
|
||||||
#define EDAT_FLAG_0x3C 0x0000003C
|
|
||||||
#define EDAT_FLAG_0x3D 0x0000003D
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
1380
rpcs3/Emu/GS/GCM.h
1380
rpcs3/Emu/GS/GCM.h
File diff suppressed because it is too large
Load Diff
@ -248,7 +248,7 @@ template<typename T> std::string GLFragmentDecompilerThread::GetSRC(T src)
|
|||||||
std::string GLFragmentDecompilerThread::BuildCode()
|
std::string GLFragmentDecompilerThread::BuildCode()
|
||||||
{
|
{
|
||||||
//main += fmt::Format("\tgl_FragColor = %c0;\n", m_ctrl & 0x40 ? 'r' : 'h');
|
//main += fmt::Format("\tgl_FragColor = %c0;\n", m_ctrl & 0x40 ? 'r' : 'h');
|
||||||
static const std::pair<std::string, std::string> table[] =
|
const std::pair<std::string, std::string> table[] =
|
||||||
{
|
{
|
||||||
{ "ocol0", m_ctrl & 0x40 ? "r0" : "h0" },
|
{ "ocol0", m_ctrl & 0x40 ? "r0" : "h0" },
|
||||||
{ "ocol1", m_ctrl & 0x40 ? "r2" : "h2" },
|
{ "ocol1", m_ctrl & 0x40 ? "r2" : "h2" },
|
||||||
|
@ -353,7 +353,7 @@ std::string GLVertexDecompilerThread::BuildCode()
|
|||||||
{ "tc6", true, "dst_reg13", "", false },
|
{ "tc6", true, "dst_reg13", "", false },
|
||||||
{ "tc7", true, "dst_reg14", "", false },
|
{ "tc7", true, "dst_reg14", "", false },
|
||||||
{ "tc8", true, "dst_reg15", "", false },
|
{ "tc8", true, "dst_reg15", "", false },
|
||||||
{ "tc9", true, "dst_reg6", "", false }
|
{ "tc9", true, "dst_reg6", "", false } // In this line, dst_reg6 is correct since dst_reg goes from 0 to 15.
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string f;
|
std::string f;
|
||||||
|
@ -1524,7 +1524,7 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t args, const u32
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Anti aliasing
|
// Anti-aliasing
|
||||||
case NV4097_SET_ANTI_ALIASING_CONTROL:
|
case NV4097_SET_ANTI_ALIASING_CONTROL:
|
||||||
{
|
{
|
||||||
// TODO:
|
// TODO:
|
||||||
@ -1969,8 +1969,11 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t args, const u32
|
|||||||
|
|
||||||
case NV309E_SET_FORMAT:
|
case NV309E_SET_FORMAT:
|
||||||
{
|
{
|
||||||
if (ARGS(0))
|
const u8 height = ARGS(0) >> 24;
|
||||||
LOG_WARNING(RSX, "NV309E_SET_FORMAT: %x", ARGS(0));
|
const u8 width = ARGS(0) >> 16;
|
||||||
|
const u8 format = ARGS(0);
|
||||||
|
const u32 offset = ARGS(1);
|
||||||
|
LOG_WARNING(RSX, "NV309E_SET_FORMAT: Format:0x%x, Width:%d, Height:%d, Offset:0x%x", format, width, height, offset);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2041,7 +2044,7 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t args, const u32
|
|||||||
case NV308A_SET_CONTEXT_SURFACE:
|
case NV308A_SET_CONTEXT_SURFACE:
|
||||||
{
|
{
|
||||||
if (ARGS(0))
|
if (ARGS(0))
|
||||||
LOG_WARNING(RSX, "NV3089_SET_CONTEXT_SURFACE: %x", ARGS(0));
|
LOG_WARNING(RSX, "NV308A_SET_CONTEXT_SURFACE: %x", ARGS(0));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -206,12 +206,14 @@ void GameViewer::DClick(wxListEvent& event)
|
|||||||
Emu.Stop();
|
Emu.Stop();
|
||||||
Emu.GetVFS().Init(path);
|
Emu.GetVFS().Init(path);
|
||||||
std::string local_path;
|
std::string local_path;
|
||||||
if(Emu.GetVFS().GetDevice(path, local_path) && !Emu.BootGame(local_path))
|
if (Emu.GetVFS().GetDevice(path, local_path) && !Emu.BootGame(local_path)) {
|
||||||
{
|
|
||||||
LOG_ERROR(HLE, "Boot error: elf not found! [%s]", path.c_str());
|
LOG_ERROR(HLE, "Boot error: elf not found! [%s]", path.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Emu.Run();
|
|
||||||
|
if (Ini.HLEAlwaysStart.GetValue() && Emu.IsReady()) {
|
||||||
|
Emu.Run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameViewer::RightClick(wxListEvent& event)
|
void GameViewer::RightClick(wxListEvent& event)
|
||||||
|
@ -40,10 +40,8 @@ enum IDs
|
|||||||
id_tools_compiler,
|
id_tools_compiler,
|
||||||
id_tools_memory_viewer,
|
id_tools_memory_viewer,
|
||||||
id_tools_rsx_debugger,
|
id_tools_rsx_debugger,
|
||||||
id_tools_fnid_generator,
|
|
||||||
id_help_about,
|
id_help_about,
|
||||||
id_update_dbg,
|
id_update_dbg,
|
||||||
id_boot_game_and_run,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
wxString GetPaneName()
|
wxString GetPaneName()
|
||||||
@ -69,11 +67,10 @@ MainFrame::MainFrame()
|
|||||||
|
|
||||||
wxMenu* menu_boot = new wxMenu();
|
wxMenu* menu_boot = new wxMenu();
|
||||||
menubar->Append(menu_boot, "Boot");
|
menubar->Append(menu_boot, "Boot");
|
||||||
|
menu_boot->Append(id_boot_elf, "Boot ELF / SELF file");
|
||||||
menu_boot->Append(id_boot_game, "Boot game");
|
menu_boot->Append(id_boot_game, "Boot game");
|
||||||
menu_boot->Append(id_boot_game_and_run, "Boot game and start");
|
|
||||||
menu_boot->Append(id_install_pkg, "Install PKG");
|
|
||||||
menu_boot->AppendSeparator();
|
menu_boot->AppendSeparator();
|
||||||
menu_boot->Append(id_boot_elf, "Boot (S)ELF");
|
menu_boot->Append(id_install_pkg, "Install PKG");
|
||||||
|
|
||||||
wxMenu* menu_sys = new wxMenu();
|
wxMenu* menu_sys = new wxMenu();
|
||||||
menubar->Append(menu_sys, "System");
|
menubar->Append(menu_sys, "System");
|
||||||
@ -113,10 +110,9 @@ MainFrame::MainFrame()
|
|||||||
AddPane(m_debugger_frame, "Debugger", wxAUI_DOCK_RIGHT);
|
AddPane(m_debugger_frame, "Debugger", wxAUI_DOCK_RIGHT);
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
Bind(wxEVT_MENU, &MainFrame::BootGame, this, id_boot_game);
|
|
||||||
Bind(wxEVT_MENU, &MainFrame::BootGameAndRun, this, id_boot_game_and_run);
|
|
||||||
Bind(wxEVT_MENU, &MainFrame::InstallPkg, this, id_install_pkg);
|
|
||||||
Bind(wxEVT_MENU, &MainFrame::BootElf, this, id_boot_elf);
|
Bind(wxEVT_MENU, &MainFrame::BootElf, this, id_boot_elf);
|
||||||
|
Bind(wxEVT_MENU, &MainFrame::BootGame, this, id_boot_game);
|
||||||
|
Bind(wxEVT_MENU, &MainFrame::InstallPkg, this, id_install_pkg);
|
||||||
|
|
||||||
Bind(wxEVT_MENU, &MainFrame::Pause, this, id_sys_pause);
|
Bind(wxEVT_MENU, &MainFrame::Pause, this, id_sys_pause);
|
||||||
Bind(wxEVT_MENU, &MainFrame::Stop, this, id_sys_stop);
|
Bind(wxEVT_MENU, &MainFrame::Stop, this, id_sys_stop);
|
||||||
@ -201,40 +197,6 @@ void MainFrame::BootGame(wxCommandEvent& WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainFrame::BootGameAndRun(wxCommandEvent& WXUNUSED(event))
|
|
||||||
{
|
|
||||||
bool stopped = false;
|
|
||||||
|
|
||||||
if (Emu.IsRunning())
|
|
||||||
{
|
|
||||||
Emu.Pause();
|
|
||||||
stopped = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxDirDialog ctrl(this, L"Select game folder", wxEmptyString);
|
|
||||||
|
|
||||||
if (ctrl.ShowModal() == wxID_CANCEL)
|
|
||||||
{
|
|
||||||
if (stopped) Emu.Resume();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Emu.Stop();
|
|
||||||
|
|
||||||
if (Emu.BootGame(ctrl.GetPath().ToStdString()))
|
|
||||||
{
|
|
||||||
LOG_SUCCESS(HLE, "Game: boot done.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG_ERROR(HLE, "PS3 executable not found in selected folder (%s)", ctrl.GetPath().wx_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Emu.IsReady())
|
|
||||||
{
|
|
||||||
Emu.Run();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void MainFrame::InstallPkg(wxCommandEvent& WXUNUSED(event))
|
void MainFrame::InstallPkg(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
bool stopped = false;
|
bool stopped = false;
|
||||||
@ -299,7 +261,6 @@ void MainFrame::BootElf(wxCommandEvent& WXUNUSED(event))
|
|||||||
LOG_NOTICE(HLE, "(S)ELF: booting...");
|
LOG_NOTICE(HLE, "(S)ELF: booting...");
|
||||||
|
|
||||||
Emu.Stop();
|
Emu.Stop();
|
||||||
|
|
||||||
Emu.SetPath(fmt::ToUTF8(ctrl.GetPath()));
|
Emu.SetPath(fmt::ToUTF8(ctrl.GetPath()));
|
||||||
Emu.Load();
|
Emu.Load();
|
||||||
|
|
||||||
|
@ -276,7 +276,7 @@ public:
|
|||||||
HLESaveTTY.Load(false);
|
HLESaveTTY.Load(false);
|
||||||
HLEExitOnStop.Load(false);
|
HLEExitOnStop.Load(false);
|
||||||
HLELogLvl.Load(3);
|
HLELogLvl.Load(3);
|
||||||
HLEAlwaysStart.Load(false);
|
HLEAlwaysStart.Load(true);
|
||||||
|
|
||||||
// Language
|
// Language
|
||||||
SysLanguage.Load(1);
|
SysLanguage.Load(1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user