yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
zelda3_version.cc
Go to the documentation of this file.
1// C API version helpers declared in inc/zelda.h. They live in yaze_zelda3
2// rather than src/yaze.cc (which no CMake target builds) so the app, the CLI
3// and the tests can link them.
4
5#include <string>
6
7#include "absl/strings/match.h"
8#include "zelda.h"
9
10zelda3_version zelda3_detect_version(const uint8_t* rom_data, size_t size) {
11 if (rom_data == nullptr || size < 0x8000) {
13 }
14
15 // SNES LoROM header titles at 0x7FC0 (PC offset)
16 // Titles are 21 bytes long
17 std::string title;
18 for (int i = 0; i < 21; ++i) {
19 char c = static_cast<char>(rom_data[0x7FC0 + i]);
20 if (c >= 0x20 && c < 0x7F) {
21 title += c;
22 }
23 }
24
25 if (absl::StrContains(title, "THE LEGEND OF ZELDA")) {
26 // US or EU version often share this title
27 // Check destination code at 0x7FD9: 0x01 = USA, 0x02+ = PAL regions
28 uint8_t region = rom_data[0x7FD9];
29 if (region == 0x00)
30 return ZELDA3_VERSION_JP;
31 if (region == 0x01)
32 return ZELDA3_VERSION_US;
33 return ZELDA3_VERSION_EU;
34 }
35
36 if (absl::StrContains(title, "ZELDA NO DENSETSU")) {
37 return ZELDA3_VERSION_JP;
38 }
39
40 // Fallback: Check for common randomizer indicators
41 if (absl::StrContains(title, "VT RANDO") ||
42 absl::StrContains(title, "Z3 RANDOMIZER")) {
44 }
45
46 return ZELDA3_VERSION_US; // Default assumption for ALttP clones/hacks
47}
48
50 switch (version) {
52 return "US/North American";
54 return "Japanese";
56 return "European";
58 return "Prototype";
60 return "Randomizer";
61 default:
62 return "Unknown";
63 }
64}
const char * zelda3_version_to_string(zelda3_version version)
Get version name as string.
zelda3_version
Different versions of the game supported by YAZE.
Definition zelda.h:33
zelda3_version zelda3_detect_version(const uint8_t *rom_data, size_t size)
Detect ROM version from header data.
@ ZELDA3_VERSION_JP
Definition zelda.h:36
@ ZELDA3_VERSION_PROTO
Definition zelda.h:38
@ ZELDA3_VERSION_EU
Definition zelda.h:37
@ ZELDA3_VERSION_US
Definition zelda.h:35
@ ZELDA3_VERSION_RANDOMIZER
Definition zelda.h:39
@ ZELDA3_VERSION_UNKNOWN
Definition zelda.h:34
The Legend of Zelda: A Link to the Past - Data Structures and Constants.