yaze
0.3.2
Link to the Past ROM Editor
Loading...
Searching...
No Matches
offsets.h
Go to the documentation of this file.
1
#ifndef YAZE_APP_ZELDA3_FORMATS_OFFSETS_H
2
#define YAZE_APP_ZELDA3_FORMATS_OFFSETS_H
3
4
#include <cstddef>
5
#include <cstdint>
6
#include <optional>
7
8
// Zelda 3 offsets extracted from hmagic (US ROM) with added safety checks.
9
// Intended for parsing text/dungeon structures in yaze without pulling in
10
// hmagic's unsafe global state.
11
namespace
yaze::zelda3::formats
{
12
13
enum class
Region
{
14
kUs
= 0,
15
kEu
,
16
kJp
,
17
};
18
19
struct
DungeonOffsets
{
20
uint32_t
torches
= 0;
21
uint32_t
torch_count
= 0;
22
};
23
24
struct
TextCodes
{
25
uint8_t
zchar_base
= 0;
26
uint8_t
zchar_bound
= 0;
27
uint8_t
command_base
= 0;
28
uint8_t
command_bound
= 0;
29
uint8_t
msg_terminator
= 0;
30
uint8_t
region_switch
= 0;
31
uint8_t
dict_base
= 0;
32
uint8_t
dict_bound
= 0;
33
uint8_t
abs_terminator
= 0;
34
};
35
36
struct
TextOffsets
{
37
uint8_t
bank
= 0;
38
uint32_t
dictionary
= 0;
39
uint32_t
dictionary_bound
= 0;
40
uint32_t
param_counts
= 0;
41
uint32_t
region1
= 0;
42
uint32_t
region1_bound
= 0;
43
uint32_t
region2
= 0;
44
uint32_t
region2_bound
= 0;
45
uint32_t
max_message_length
= 0;
46
TextCodes
codes
{};
47
};
48
49
struct
OverworldOffsets
{
50
// Placeholder for future additions; kept for parity with hmagic structs.
51
uint32_t
dummy
= 0;
52
};
53
54
struct
RegionOffsets
{
55
DungeonOffsets
dungeon
{};
56
OverworldOffsets
overworld
{};
57
TextOffsets
text
{};
58
};
59
60
// Returns offsets for a region if known; currently populated for US only.
61
std::optional<RegionOffsets>
GetRegionOffsets
(
Region
region);
62
63
// Simple bounds validation to avoid reading outside the ROM buffer.
64
bool
ValidateOffsets
(
const
RegionOffsets& offsets,
size_t
rom_size_bytes);
65
66
}
// namespace yaze::zelda3::formats
67
68
#endif
// YAZE_APP_ZELDA3_FORMATS_OFFSETS_H
yaze::zelda3::formats
Definition
offsets.cc:5
yaze::zelda3::formats::GetRegionOffsets
std::optional< RegionOffsets > GetRegionOffsets(Region region)
Definition
offsets.cc:41
yaze::zelda3::formats::Region
Region
Definition
offsets.h:13
yaze::zelda3::formats::Region::kEu
@ kEu
yaze::zelda3::formats::Region::kUs
@ kUs
yaze::zelda3::formats::Region::kJp
@ kJp
yaze::zelda3::formats::ValidateOffsets
bool ValidateOffsets(const RegionOffsets &offsets, size_t rom_size_bytes)
Definition
offsets.cc:50
yaze::zelda3::formats::DungeonOffsets
Definition
offsets.h:19
yaze::zelda3::formats::DungeonOffsets::torch_count
uint32_t torch_count
Definition
offsets.h:21
yaze::zelda3::formats::DungeonOffsets::torches
uint32_t torches
Definition
offsets.h:20
yaze::zelda3::formats::OverworldOffsets
Definition
offsets.h:49
yaze::zelda3::formats::OverworldOffsets::dummy
uint32_t dummy
Definition
offsets.h:51
yaze::zelda3::formats::RegionOffsets
Definition
offsets.h:54
yaze::zelda3::formats::RegionOffsets::dungeon
DungeonOffsets dungeon
Definition
offsets.h:55
yaze::zelda3::formats::RegionOffsets::text
TextOffsets text
Definition
offsets.h:57
yaze::zelda3::formats::RegionOffsets::overworld
OverworldOffsets overworld
Definition
offsets.h:56
yaze::zelda3::formats::TextCodes
Definition
offsets.h:24
yaze::zelda3::formats::TextCodes::zchar_bound
uint8_t zchar_bound
Definition
offsets.h:26
yaze::zelda3::formats::TextCodes::zchar_base
uint8_t zchar_base
Definition
offsets.h:25
yaze::zelda3::formats::TextCodes::region_switch
uint8_t region_switch
Definition
offsets.h:30
yaze::zelda3::formats::TextCodes::dict_base
uint8_t dict_base
Definition
offsets.h:31
yaze::zelda3::formats::TextCodes::msg_terminator
uint8_t msg_terminator
Definition
offsets.h:29
yaze::zelda3::formats::TextCodes::dict_bound
uint8_t dict_bound
Definition
offsets.h:32
yaze::zelda3::formats::TextCodes::abs_terminator
uint8_t abs_terminator
Definition
offsets.h:33
yaze::zelda3::formats::TextCodes::command_bound
uint8_t command_bound
Definition
offsets.h:28
yaze::zelda3::formats::TextCodes::command_base
uint8_t command_base
Definition
offsets.h:27
yaze::zelda3::formats::TextOffsets
Definition
offsets.h:36
yaze::zelda3::formats::TextOffsets::region1_bound
uint32_t region1_bound
Definition
offsets.h:42
yaze::zelda3::formats::TextOffsets::param_counts
uint32_t param_counts
Definition
offsets.h:40
yaze::zelda3::formats::TextOffsets::max_message_length
uint32_t max_message_length
Definition
offsets.h:45
yaze::zelda3::formats::TextOffsets::bank
uint8_t bank
Definition
offsets.h:37
yaze::zelda3::formats::TextOffsets::region2_bound
uint32_t region2_bound
Definition
offsets.h:44
yaze::zelda3::formats::TextOffsets::region2
uint32_t region2
Definition
offsets.h:43
yaze::zelda3::formats::TextOffsets::dictionary
uint32_t dictionary
Definition
offsets.h:38
yaze::zelda3::formats::TextOffsets::region1
uint32_t region1
Definition
offsets.h:41
yaze::zelda3::formats::TextOffsets::dictionary_bound
uint32_t dictionary_bound
Definition
offsets.h:39
yaze::zelda3::formats::TextOffsets::codes
TextCodes codes
Definition
offsets.h:46
src
zelda3
formats
offsets.h
Generated by
1.10.0