Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion src/program/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ static void print_usage(void)
std::cout << " --libtas-so-path Path to libtas.so (equivalent to setting LIBTAS_SO_PATH)" << std::endl;
std::cout << " --libtas32-so-path Path to libtas32.so (equivalent to setting LIBTAS32_SO_PATH)" << std::endl;
std::cout << " -i, --input-editor Open Input Editor window at startup" << std::endl;
std::cout << " -L, --lua-console Open Lua Console window at startup" << std::endl;
std::cout << " -t, --system-time-sec Set the system time option (sec)" << std::endl;
std::cout << " -T, --system-time-nsec Set the system time option (nsec)" << std::endl;
std::cout << " -e, --elapsed-time-sec Set the elapsed time option (sec)" << std::endl;
std::cout << " -E, --elapsed-time-nsec Set the elapsed time option (nsec)" << std::endl;
std::cout << " -h, --help Show this message" << std::endl;
}

Expand Down Expand Up @@ -136,13 +141,17 @@ int main(int argc, char **argv)
{"libtas32-so-path", required_argument, nullptr, 'P'},
{"help", no_argument, nullptr, 'h'},
{"input-editor", no_argument, nullptr, 'i'},
{"system-time-sec", required_argument, nullptr, 't'},
{"system-time-nsec", required_argument, nullptr, 'T'},
{"elapsed-time-sec", required_argument, nullptr, 'e'},
{"elapsed-time-nsec", required_argument, nullptr, 'E'},
{nullptr, 0, nullptr, 0}
};
int option_index = 0;
bool openInputEditor = false;

// std::string libname;
while ((c = getopt_long (argc, argv, "+r:w:d:l:nhi", long_options, &option_index)) != -1) {
while ((c = getopt_long (argc, argv, "+r:w:d:l:nhit:T:e:E:", long_options, &option_index)) != -1) {
switch (c) {
case 'r':
case 'w':
Expand Down Expand Up @@ -186,6 +195,22 @@ int main(int argc, char **argv)
case 'i':
openInputEditor = true;
break;
case 'e':
context.config.sc.initial_monotonic_time_sec = atoll(optarg);
context.config.sc.initial_monotonic_time_set_via_cli = true;
break;
case 'E':
context.config.sc.initial_monotonic_time_nsec = atoll(optarg);
context.config.sc.initial_monotonic_time_set_via_cli = true;
break;
case 't':
context.config.sc.initial_time_sec = atoll(optarg);
context.config.sc.initial_time_set_via_cli = true;
break;
case 'T':
context.config.sc.initial_time_nsec = atoll(optarg);
context.config.sc.initial_time_set_via_cli = true;
break;
default:
return -1;
}
Expand Down
12 changes: 8 additions & 4 deletions src/program/movie/MovieFileHeader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,14 @@ void MovieFileHeader::load()
context->config.sc.mouse_support = config.value("mouse_support").toBool();

context->config.sc.nb_controllers = config.value("nb_controllers").toInt();
context->config.sc.initial_time_sec = config.value("initial_time_sec").toLongLong();
context->config.sc.initial_time_nsec = config.value("initial_time_nsec").toLongLong();
context->config.sc.initial_monotonic_time_sec = config.value("initial_monotonic_time_sec").toLongLong();
context->config.sc.initial_monotonic_time_nsec = config.value("initial_monotonic_time_nsec").toLongLong();
if (! context->config.sc.initial_time_set_via_cli) {
context->config.sc.initial_time_sec = config.value("initial_time_sec").toLongLong();
context->config.sc.initial_time_nsec = config.value("initial_time_nsec").toLongLong();
}
if (! context->config.sc.initial_monotonic_time_set_via_cli) {
context->config.sc.initial_monotonic_time_sec = config.value("initial_monotonic_time_sec").toLongLong();
context->config.sc.initial_monotonic_time_nsec = config.value("initial_monotonic_time_nsec").toLongLong();
}

framerate_num = config.value("framerate_num").toUInt();
framerate_den = config.value("framerate_den").toUInt();
Expand Down
12 changes: 8 additions & 4 deletions src/program/ui/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1147,10 +1147,14 @@ void MainWindow::slotLaunch(bool attach_gdb)
/* Set a few parameters */
context->config.sc.initial_framerate_num = fpsNumField->value();
context->config.sc.initial_framerate_den = fpsDenField->value();
context->config.sc.initial_monotonic_time_sec = elapsedTimeSec->value();
context->config.sc.initial_monotonic_time_nsec = elapsedTimeNsec->value();
context->config.sc.initial_time_sec = realTimeSec->value();
context->config.sc.initial_time_nsec = realTimeNsec->value();
if (! context->config.sc.initial_monotonic_time_set_via_cli) {
context->config.sc.initial_monotonic_time_sec = elapsedTimeSec->value();
context->config.sc.initial_monotonic_time_nsec = elapsedTimeNsec->value();
}
if (! context->config.sc.initial_time_set_via_cli) {
context->config.sc.initial_time_sec = realTimeSec->value();
context->config.sc.initial_time_nsec = realTimeNsec->value();
}

context->config.sc.sigint_upon_launch &= context->attach_gdb;

Expand Down
12 changes: 8 additions & 4 deletions src/program/ui/MovieSettingsWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,10 +217,14 @@ void MovieSettingsWindow::saveConfig()
context->config.sc.initial_framerate_den = framerateDen->value();
context->config.auto_restart = autoRestart->currentData().toBool();

context->config.sc.initial_time_sec = initialSec->value();
context->config.sc.initial_time_nsec = initialNSec->value();
context->config.sc.initial_monotonic_time_sec = initialMonotonicSec->value();
context->config.sc.initial_monotonic_time_nsec = initialMonotonicNSec->value();
if (! context->config.sc.initial_time_set_via_cli) {
context->config.sc.initial_time_sec = initialSec->value();
context->config.sc.initial_time_nsec = initialNSec->value();
}
if (! context->config.sc.initial_monotonic_time_set_via_cli) {
context->config.sc.initial_monotonic_time_sec = initialMonotonicSec->value();
context->config.sc.initial_monotonic_time_nsec = initialMonotonicNSec->value();
}

context->config.sc.main_gettimes_threshold[SharedConfig::TIMETYPE_TIME] = timeTrackingTime->value();
context->config.sc.main_gettimes_threshold[SharedConfig::TIMETYPE_GETTIMEOFDAY] = timeTrackingGettimeofday->value();
Expand Down
2 changes: 2 additions & 0 deletions src/shared/SharedConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,12 +144,14 @@ struct __attribute__((packed, aligned(8))) SharedConfig {
* depends on the arch.*/
int64_t initial_time_sec = 1;
int64_t initial_time_nsec = 0;
bool initial_time_set_via_cli = false;

/* Initial monotonic time at game startup. */
/* We don't use struct timespec because it contains longs so the size
* depends on the arch.*/
int64_t initial_monotonic_time_sec = 1;
int64_t initial_monotonic_time_nsec = 0;
bool initial_monotonic_time_set_via_cli = false;

/* Virtual monitor resolution */
int screen_width = 0;
Expand Down