Skip to content

Commit

Permalink
Added ability to set up keyboard
Browse files Browse the repository at this point in the history
  • Loading branch information
dingusdev committed Feb 1, 2025
1 parent 2f30395 commit 49a97bd
Showing 1 changed file with 24 additions and 8 deletions.
32 changes: 24 additions & 8 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ static string appDescription = string(
"\n"
);

uint32_t keyboard_id = 0;

/// Check for an existing directory (returns error message if check fails)
class WorkingDirectoryValidator : public CLI::detail::ExistingDirectoryValidator {
public:
Expand All @@ -91,8 +93,8 @@ class WorkingDirectoryValidator : public CLI::detail::ExistingDirectoryValidator
const WorkingDirectoryValidator WorkingDirectory;

void run_machine(
std::string machine_str, char *rom_data, size_t rom_size, uint32_t execution_mode,
uint32_t profiling_interval_ms
std::string machine_str, char *rom_data, size_t rom_size, uint32_t execution_mode
,uint32_t profiling_interval_ms
);

int main(int argc, char** argv) {
Expand All @@ -105,7 +107,12 @@ int main(int argc, char** argv) {

bool realtime_enabled = false;
bool debugger_enabled = false;
uint32_t keyboard_id = 0;
string keyboard_string = "Eng_USA";

const std::map<std::string, int> kbd_map{
{"Eng_USA", 0}, {"Eng_GBR", 1}, {"Fra_FRA", 10}, {"Deu_DEU", 20},
{"Ita_ITA", 30},{"Spa_ESP", 40}, {"Jpn_JPN", 80},
};

string bootrom_path("bootrom.bin");
string working_directory_path(".");
Expand All @@ -116,7 +123,7 @@ int main(int argc, char** argv) {
"Run the emulator in real-time");
execution_mode_group->add_flag("-d,--debugger", debugger_enabled,
"Enter the built-in debugger");
app.add_option("-k,--keyboard", keyboard_id, "Specify keyboard ID");
app.add_option("-k,--keyboard", keyboard_string, "Specify keyboard ID");
app.add_option("-w,--workingdir", working_directory_path, "Specifies working directory")
->check(WorkingDirectory);
app.add_option("-b,--bootrom", bootrom_path, "Specifies BootROM path")
Expand Down Expand Up @@ -265,8 +272,15 @@ int main(int argc, char** argv) {
// redirect SIGABRT to our own handler
signal(SIGABRT, sigabrt_handler);

keyboard_id = kbd_map.at(keyboard_string);

while (true) {
run_machine(machine_str, &rom_data[0], rom_size, execution_mode, profiling_interval_ms);
run_machine(
machine_str,
&rom_data[0],
rom_size,
execution_mode,
profiling_interval_ms);
if (power_off_reason == po_restarting) {
LOG_F(INFO, "Restarting...");
power_on = true;
Expand All @@ -289,10 +303,12 @@ int main(int argc, char** argv) {
return 0;
}

void run_machine(std::string machine_str, char *rom_data, size_t rom_size, uint32_t execution_mode,
void run_machine(std::string machine_str, char* rom_data,
size_t rom_size,
uint32_t execution_mode,
uint32_t
#ifdef CPU_PROFILING
profiling_interval_ms
profiling_interval_ms
#endif
) {
if (MachineFactory::create_machine_for_id(machine_str, rom_data, rom_size) < 0) {
Expand All @@ -317,7 +333,7 @@ void run_machine(std::string machine_str, char *rom_data, size_t rom_size, uint3
// set up system wide event polling using
// default Macintosh polling rate of 11 ms
uint32_t event_timer = TimerManager::get_instance()->add_cyclic_timer(MSECS_TO_NSECS(11), [] {
EventManager::get_instance()->poll_events(Eng_USA);
EventManager::get_instance()->poll_events(keyboard_id);
});

#ifdef CPU_PROFILING
Expand Down

0 comments on commit 49a97bd

Please sign in to comment.