});
}
if (count($argv) < 2) {
    throw new \RuntimeException('You need to pass the ROM file name (Ex: drmario.rom)');
}
$filename = $argv[1];
if (!file_exists($filename)) {
    throw new \RuntimeException(sprintf('"%s" does not exist', $filename));
}
if (extension_loaded('xdebug')) {
    fwrite(STDERR, 'Running php-gameboy with Xdebug enabled reduces its speed considerably.' . PHP_EOL);
    fwrite(STDERR, 'You should consider to disable it before execute php-gameboy.' . PHP_EOL);
    sleep(1);
}
$rom = file_get_contents($filename);
$canvas = new TerminalCanvas();
$core = new Core($rom, $canvas);
$keyboard = new Keyboard($core);
$core->start();
if (($core->stopEmulator & 2) == 0) {
    throw new \RuntimeException('The GameBoy core is already running.');
}
if ($core->stopEmulator & 2 != 2) {
    throw new \RuntimeException('GameBoy core cannot run while it has not been initialized.');
}
$core->stopEmulator &= 1;
$core->lastIteration = (int) (microtime(true) * 1000);
while (true) {
    $core->run();
    $keyboard->check();
}
 /**
  * Opcode #0xFF.
  *
  * RST 0x38
  *
  * @param Core $core
  */
 public static function opcode255(Core $core)
 {
     $core->stackPointer = $core->unswtuw($core->stackPointer - 1);
     $core->memoryWrite($core->stackPointer, $core->programCounter >> 8);
     $core->stackPointer = $core->unswtuw($core->stackPointer - 1);
     $core->memoryWrite($core->stackPointer, $core->programCounter & 0xff);
     $core->programCounter = 0x38;
 }