Skip to content

Commit

Permalink
taken2009's FMV-hack
Browse files Browse the repository at this point in the history
  • Loading branch information
sickc committed Sep 14, 2018
1 parent 9da7508 commit 6d4d02a
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/citra_qt/configuration/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ void Config::ReadValues() {
Settings::values.frame_limit = ReadSetting("frame_limit", 100).toInt();
Settings::values.use_format_reinterpret_hack =
ReadSetting("use_format_reinterpret_hack", true).toBool();
Settings::values.FMV_hack = qt_config->value("FMV_hack", false).toBool();
Settings::values.AddTicks = qt_config->value("AddTicks", 16000).toInt();

Settings::values.bg_red = ReadSetting("bg_red", 0.0).toFloat();
Settings::values.bg_green = ReadSetting("bg_green", 0.0).toFloat();
Expand Down Expand Up @@ -383,6 +385,8 @@ void Config::SaveValues() {
WriteSetting("use_frame_limit", Settings::values.use_frame_limit, true);
WriteSetting("frame_limit", Settings::values.frame_limit, 100);
WriteSetting("use_format_reinterpret_hack", Settings::values.use_format_reinterpret_hack, true);
WriteSetting("FMV_hack", Settings::values.FMV_hack, false);
WriteSetting("AddTicks", Settings::values.AddTicks, 16000);

// Cast to double because Qt's written float values are not human-readable
WriteSetting("bg_red", (double)Settings::values.bg_red, 0.0);
Expand Down
6 changes: 6 additions & 0 deletions src/citra_qt/configuration/configure_graphics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent)
ui->frame_limit->setEnabled(Settings::values.use_frame_limit);
connect(ui->toggle_frame_limit, &QCheckBox::stateChanged, ui->frame_limit,
&QSpinBox::setEnabled);
ui->AddTicks->setEnabled(Settings::values.FMV_hack);
connect(ui->FMV_hack, &QCheckBox::stateChanged, ui->AddTicks, &QSpinBox::setEnabled);

ui->layoutBox->setEnabled(!Settings::values.custom_layout);

Expand Down Expand Up @@ -74,6 +76,8 @@ void ConfigureGraphics::setConfiguration() {
Settings::values.bg_blue);
ui->bg_button->setStyleSheet(
QString("QPushButton { background-color: %1 }").arg(bg_color.name()));
ui->FMV_hack->setChecked(Settings::values.FMV_hack);
ui->AddTicks->setValue(Settings::values.AddTicks);
}

void ConfigureGraphics::applyConfiguration() {
Expand All @@ -96,6 +100,8 @@ void ConfigureGraphics::applyConfiguration() {
Settings::values.bg_red = static_cast<float>(bg_color.redF());
Settings::values.bg_green = static_cast<float>(bg_color.greenF());
Settings::values.bg_blue = static_cast<float>(bg_color.blueF());
Settings::values.FMV_hack = ui->FMV_hack->isChecked();
Settings::values.AddTicks = ui->AddTicks->value();
}

void ConfigureGraphics::retranslateUi() {
Expand Down
24 changes: 24 additions & 0 deletions src/citra_qt/configuration/configure_graphics.ui
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,30 @@
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QCheckBox" name="FMV_hack">
<property name="text">
<string>FMV Hack (CoreTiming AddTicks)</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="AddTicks">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999999</number>
</property>
<property name="value">
<number>16000</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
Expand Down
7 changes: 6 additions & 1 deletion src/core/arm/dynarmic/arm_dynarmic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "core/core_timing.h"
#include "core/hle/kernel/svc.h"
#include "core/memory.h"
#include "core/settings.h"

class DynarmicThreadContext final : public ARM_Interface::ThreadContext {
public:
Expand Down Expand Up @@ -130,7 +131,11 @@ class DynarmicUserCallbacks final : public Dynarmic::A32::UserCallbacks {
}

void AddTicks(std::uint64_t ticks) override {
CoreTiming::AddTicks(ticks);
if (Settings::values.FMV_hack) {
CoreTiming::AddTicks(Settings::values.AddTicks);
} else {
CoreTiming::AddTicks(ticks);
}
}
std::uint64_t GetTicksRemaining() override {
s64 ticks = CoreTiming::GetDowncount();
Expand Down
2 changes: 2 additions & 0 deletions src/core/settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ struct Values {
bool use_format_reinterpret_hack;
bool use_frame_limit;
u16 frame_limit;
bool FMV_hack;
u16 AddTicks;

LayoutOption layout_option;
bool swap_screen;
Expand Down

0 comments on commit 6d4d02a

Please sign in to comment.