2020-09-13 21:32:55 -04:00
|
|
|
#pragma once
|
|
|
|
|
2020-08-22 22:30:12 -04:00
|
|
|
/*!
|
|
|
|
* @file versions.h
|
|
|
|
* Version numbers for GOAL Language, Kernel, etc...
|
|
|
|
*/
|
|
|
|
|
2022-07-06 21:18:08 -04:00
|
|
|
#include <string>
|
|
|
|
|
2020-08-22 22:30:12 -04:00
|
|
|
#include "common/common_types.h"
|
|
|
|
|
|
|
|
namespace versions {
|
2020-12-19 15:21:29 -05:00
|
|
|
// language version (OpenGOAL)
|
2022-06-24 18:21:24 -04:00
|
|
|
constexpr s32 GOAL_VERSION_MAJOR = 1;
|
|
|
|
constexpr s32 GOAL_VERSION_MINOR = 0;
|
2021-02-11 14:35:28 -05:00
|
|
|
|
2022-06-06 17:58:49 -04:00
|
|
|
namespace jak1 {
|
2020-12-19 15:21:29 -05:00
|
|
|
// these versions are from the game
|
2020-11-16 19:57:45 -05:00
|
|
|
constexpr u32 ART_FILE_VERSION = 6;
|
|
|
|
constexpr u32 LEVEL_FILE_VERSION = 30;
|
|
|
|
constexpr u32 DGO_FILE_VERSION = 1;
|
|
|
|
constexpr u32 RES_FILE_VERSION = 1;
|
|
|
|
constexpr u32 TX_PAGE_VERSION = 7;
|
2022-06-06 17:58:49 -04:00
|
|
|
} // namespace jak1
|
|
|
|
|
|
|
|
namespace jak2 {
|
|
|
|
constexpr u32 ART_FILE_VERSION = 7;
|
2022-06-26 18:17:11 -04:00
|
|
|
constexpr u32 DGO_FILE_VERSION = 1;
|
|
|
|
constexpr u32 LEVEL_FILE_VERSION = 36;
|
|
|
|
constexpr u32 TX_PAGE_VERSION = 8;
|
|
|
|
|
|
|
|
} // namespace jak2
|
2022-06-06 17:58:49 -04:00
|
|
|
|
2020-08-26 01:21:33 -04:00
|
|
|
} // namespace versions
|
2020-08-22 22:30:12 -04:00
|
|
|
|
2020-12-19 15:21:29 -05:00
|
|
|
// GOAL kernel version (OpenGOAL changes this version from the game's version)
|
2020-08-22 22:30:12 -04:00
|
|
|
constexpr int KERNEL_VERSION_MAJOR = 2;
|
|
|
|
constexpr int KERNEL_VERSION_MINOR = 0;
|
2021-06-12 12:55:38 -04:00
|
|
|
|
|
|
|
// OVERLORD version returned by an RPC
|
|
|
|
constexpr int IRX_VERSION_MAJOR = 2;
|
2022-06-06 17:58:49 -04:00
|
|
|
constexpr int IRX_VERSION_MINOR = 0;
|
|
|
|
|
2022-06-26 18:17:11 -04:00
|
|
|
enum class GameVersion { Jak1 = 1, Jak2 = 2 };
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
struct PerGameVersion {
|
|
|
|
constexpr PerGameVersion(T jak1, T jak2) : data{jak1, jak2} {}
|
2022-08-26 18:03:48 -04:00
|
|
|
constexpr const T& operator[](GameVersion v) const { return data[(int)v - 1]; }
|
2022-06-26 18:17:11 -04:00
|
|
|
T data[2];
|
2022-06-30 21:11:58 -04:00
|
|
|
};
|
|
|
|
|
2022-07-06 21:18:08 -04:00
|
|
|
constexpr PerGameVersion<const char*> game_version_names = {"jak1", "jak2"};
|
|
|
|
|
2022-07-18 18:26:57 -04:00
|
|
|
GameVersion game_name_to_version(const std::string& name);
|
|
|
|
bool valid_game_version(const std::string& name);
|
2022-08-23 19:13:26 -04:00
|
|
|
std::string version_to_game_name(GameVersion v);
|