MCPcopy Create free account
hub / github.com/EasyRPG/Player / GetEngineType

Method GetEngineType

src/exe_reader.cpp:459–537  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

457}
458
459int EXEReader::FileInfo::GetEngineType(bool& is_maniac_patch) const {
460 is_maniac_patch = false;
461
462 if (is_easyrpg_player || machine_type == MachineType::Unknown) {
463 return Player::EngineNone;
464 }
465
466 if (version_str.empty()) {
467 // RPG2k and Rpg2k3 < 1.0.2.1 has no VERSIONINFO
468 if (logos == 3) {
469 // three logos only appear in old RPG2k
470 return Player::EngineRpg2k;
471 } else if (logos == 1) {
472 // VALUE! or Rpg2k3 < 1.0.2.1
473 // Check CODE segment size to be sure
474 if (code_size > 0xB0000) {
475 if (code_size >= 0xC7400) {
476 // Code segment size for >= 1.0.5.0
477 // In theory this check is unnecessary because this version has a VERSIONINFO.
478 // However the modified exe shipped with Ahriman's Prophecy is a 1.0.8.0 without a VERSIONINFO.
479 return Player::EngineRpg2k3 | Player::EngineMajorUpdated;
480 } else {
481 return Player::EngineRpg2k3;
482 }
483 }
484
485 return Player::EngineRpg2k | Player::EngineMajorUpdated;
486 }
487
488 return Player::EngineNone;
489 }
490
491 std::array<decltype(version), 4> ver = {
492 (version >> 48) & 0xFF,
493 (version >> 32) & 0xFF,
494 (version >> 16) & 0xFF,
495 (version & 0xFF)};
496
497 if (logos == 0) {
498 // New version of Maniac Patch is version 1.1.2.1 and is an rewrite of the engine
499 // Has no logos, no CODE segment and no CHERRY segment
500 if (ver[0] == 1 && ver[1] == 1 && ver[2] == 2 && ver[3] == 1 && code_size == 0 && cherry_size == 0) {
501 is_maniac_patch = true;
502 return Player::EngineRpg2k3 | Player::EngineMajorUpdated | Player::EngineEnglish;
503 }
504
505 return Player::EngineNone;
506 }
507
508 // Everything else with a VERSIONINFO must have one logo
509 if (logos != 1) {
510 return Player::EngineNone;
511 }
512
513 if (ver[0] == 1) {
514 if (ver[1] == 6) {
515 // English release of RPG Maker 2000 has a version info (thanks Cherry!)
516 return Player::EngineRpg2k | Player::EngineMajorUpdated | Player::EngineEnglish;

Callers 1

CreateGameObjectsMethod · 0.80

Calls 1

emptyMethod · 0.45

Tested by

no test coverage detected