Skip to content

Commit 0bab891

Browse files
committed
Diagnostics support
1 parent 6276cf7 commit 0bab891

File tree

6 files changed

+43
-14
lines changed

6 files changed

+43
-14
lines changed

src/rage/script.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
#define ReadVar(x) stream >> x;
1313
#define ReadPointer(x) stream >> x; x = x & 0xffffff;
1414

15-
Script::Script(QString path)
15+
Script::Script(QString path, bool debug)
1616
: m_funcCount(0)
1717
, m_script(path)
18+
, m_debug(debug)
1819
{
1920
if (!m_script.open(QIODevice::ReadOnly))
2021
{
@@ -95,6 +96,15 @@ void Script::extractData()
9596

9697
int outSize = m_header.getSizeP() + m_header.getSizeV();
9798

99+
if (m_debug)
100+
{
101+
QFileInfo info(m_script);
102+
QFile out("debug/" + info.fileName() + ".dbg");
103+
104+
out.open(QIODevice::WriteOnly | QIODevice::Truncate);
105+
out.write(m_data);
106+
}
107+
98108
if (m_scriptType == ScriptType::TYPE_X360)
99109
{
100110
// remove lzx header

src/rage/script.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ enum ScriptType
5757
class Script
5858
{
5959
public:
60-
Script(QString path);
60+
Script(QString path, bool debug = false);
6161

6262
ScriptType getScriptType() { return m_scriptType; }
6363

@@ -123,6 +123,7 @@ class Script
123123
QByteArray m_data;
124124
QFile m_script;
125125
ScriptType m_scriptType;
126+
bool m_debug;
126127
};
127128

128129
#endif // SCRIPT_H

src/widgets/disassembler.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
#include "../QHexView/qhexview.h"
1313
#include "../QHexView/document/buffer/qmemoryrefbuffer.h"
1414

15-
Disassembler::Disassembler(QString file, QWidget *parent)
15+
Disassembler::Disassembler(QString file, bool debug, QWidget *parent)
1616
: QMainWindow(parent)
1717
, m_ui(new Ui::Disassembler)
18-
, m_script(file)
18+
, m_script(file, debug)
1919
, m_file(file)
20+
, m_debug(debug)
2021
{
2122
m_ui->setupUi(this);
2223

@@ -136,7 +137,7 @@ void Disassembler::open()
136137
{
137138
QApplication::setOverrideCursor(Qt::WaitCursor);
138139

139-
Disassembler *dsm = new Disassembler(file);
140+
Disassembler *dsm = new Disassembler(file, m_debug);
140141
dsm->show();
141142

142143
close();
@@ -319,18 +320,13 @@ QTableWidget *Disassembler::createStringsTab()
319320
return stringTable;
320321
}
321322

322-
#include <QDebug>
323-
324323
void Disassembler::fillDisassembly()
325324
{
326325
int invalidCalls = 0;
327326
bool firstFunc = true;
328327

329328
for (auto op : m_script.getOpcodes())
330329
{
331-
//if (op->getOp() == EOpcodes::OP_NOP)
332-
// continue;
333-
334330
int index = m_disasm->rowCount();
335331

336332
if (op->getOp() == EOpcodes::_SPACER)
@@ -424,7 +420,7 @@ void Disassembler::fillDisassembly()
424420
else if (op->getOp() >= EOpcodes::OP_JMP && op->getOp() <= EOpcodes::OP_JMPGT)
425421
{
426422
int jumpPos = op->getData()[1] + op->getLocation() + 3;
427-
//data->setText("@" + m_script.getJumps().at(jumpPos)->getSub());
423+
428424
data->setText("@" + m_script.getJumps().at(jumpPos)->getSub());
429425
data->setForeground(QColor(255, 0, 0));
430426
}

src/widgets/disassembler.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class Disassembler : public QMainWindow
1919
Q_OBJECT
2020

2121
public:
22-
explicit Disassembler(QString file, QWidget *parent = nullptr);
22+
explicit Disassembler(QString file, bool debug, QWidget *parent = nullptr);
2323
~Disassembler();
2424

2525
public slots:
@@ -50,6 +50,7 @@ public slots:
5050
Script m_script;
5151
QString m_file;
5252
OpcodeTable *m_disasm;
53+
bool m_debug;
5354
};
5455

5556
#endif // DISASSEMBLER_H

src/widgets/launchscreen.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ LaunchScreen::LaunchScreen(QWidget *parent) :
2121
m_ui->btnOpenFile->setEnabled(false);
2222
}
2323

24+
QDir().mkdir("debug");
25+
2426
connect(m_ui->btnOpenFile, SIGNAL(clicked()), this, SLOT(openFilePressed()));
2527
connect(m_ui->btnGithub, SIGNAL(clicked()), this, SLOT(githubPressed()));
2628
connect(m_ui->btnExit, SIGNAL(clicked()), this, SLOT(exitPressed()));
@@ -39,7 +41,7 @@ void LaunchScreen::openFilePressed()
3941
{
4042
QApplication::setOverrideCursor(Qt::WaitCursor);
4143

42-
Disassembler *dsm = new Disassembler(file);
44+
Disassembler *dsm = new Disassembler(file, m_ui->cbDebug->isChecked());
4345
dsm->show();
4446

4547
close();

src/widgets/launchscreen.ui

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<property name="font">
4444
<font>
4545
<family>Consolas</family>
46-
<pointsize>19</pointsize>
46+
<pointsize>18</pointsize>
4747
</font>
4848
</property>
4949
<property name="text">
@@ -92,6 +92,25 @@
9292
<string>Exit</string>
9393
</property>
9494
</widget>
95+
<widget class="QCheckBox" name="cbDebug">
96+
<property name="geometry">
97+
<rect>
98+
<x>110</x>
99+
<y>310</y>
100+
<width>91</width>
101+
<height>20</height>
102+
</rect>
103+
</property>
104+
<property name="font">
105+
<font>
106+
<family>Consolas</family>
107+
<pointsize>8</pointsize>
108+
</font>
109+
</property>
110+
<property name="text">
111+
<string>Debug mode</string>
112+
</property>
113+
</widget>
95114
</widget>
96115
<resources/>
97116
<connections/>

0 commit comments

Comments
 (0)