yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
zelda.h
Go to the documentation of this file.
1#ifndef ZELDA_H
2#define ZELDA_H
3
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#include <stdbool.h>
20#include <stdint.h>
21
47
55zelda3_version zelda3_detect_version(const uint8_t* rom_data, size_t size);
56
63const char* zelda3_version_to_string(zelda3_version version);
64
112
120
121const static zelda3_version_pointers zelda3_us_pointers = {
122 // New style names
123 0x10275, // gfx_animated_pointer
124 0x5D97, // overworld_gfx_groups1
125 0x6073, // overworld_gfx_groups2
126 0x1794D, // compressed_map32_pointers_high
127 0x17B2D, // compressed_map32_pointers_low
128 0x75504, // overworld_map_palette_group
129 0x77664, // overlay_pointers
130 0x0E, // overlay_pointers_bank
131 0x71459, // overworld_tiles_type
132 0x4F80, // overworld_gfx_ptr1
133 0x505F, // overworld_gfx_ptr2
134 0x513E, // overworld_gfx_ptr3
135 0x18000, // map32_tile_tl
136 0x1B400, // map32_tile_tr
137 0x20000, // map32_tile_bl
138 0x23400, // map32_tile_br
139 0x5B57, // sprite_blockset_pointer
140 0x75460, // dungeon_palettes_groups
141
142 // Legacy k-prefixed names (same values for backward compatibility)
143 0x10275, // kGfxAnimatedPointer
144 0x5D97, // kOverworldGfxGroups1
145 0x6073, // kOverworldGfxGroups2
146 0x1794D, // kCompressedAllMap32PointersHigh
147 0x17B2D, // kCompressedAllMap32PointersLow
148 0x75504, // kOverworldMapPaletteGroup
149 0x77664, // kOverlayPointers
150 0x0E, // kOverlayPointersBank
151 0x71459, // kOverworldTilesType
152 0x4F80, // kOverworldGfxPtr1
153 0x505F, // kOverworldGfxPtr2
154 0x513E, // kOverworldGfxPtr3
155 0x18000, // kMap32TileTL
156 0x1B400, // kMap32TileTR
157 0x20000, // kMap32TileBL
158 0x23400, // kMap32TileBR
159 0x5B57, // kSpriteBlocksetPointer
160 0x75460, // kDungeonPalettesGroups
161};
162
163const static zelda3_version_pointers zelda3_jp_pointers = {
164 // New style names
165 0x10624, // gfx_animated_pointer
166 0x5DD7, // overworld_gfx_groups1
167 0x60B3, // overworld_gfx_groups2
168 0x176B1, // compressed_map32_pointers_high
169 0x17891, // compressed_map32_pointers_low
170 0x67E74, // overworld_map_palette_group
171 0x3FAF4, // overlay_pointers
172 0x07, // overlay_pointers_bank
173 0x7FD94, // overworld_tiles_type
174 0x4FC0, // overworld_gfx_ptr1
175 0x509F, // overworld_gfx_ptr2
176 0x517E, // overworld_gfx_ptr3
177 0x18000, // map32_tile_tl
178 0x1B3C0, // map32_tile_tr
179 0x20000, // map32_tile_bl
180 0x233C0, // map32_tile_br
181 0x5B97, // sprite_blockset_pointer
182 0x67DD0, // dungeon_palettes_groups
183
184 // Legacy k-prefixed names (same values for backward compatibility)
185 0x10624, // kGfxAnimatedPointer
186 0x5DD7, // kOverworldGfxGroups1
187 0x60B3, // kOverworldGfxGroups2
188 0x176B1, // kCompressedAllMap32PointersHigh
189 0x17891, // kCompressedAllMap32PointersLow
190 0x67E74, // kOverworldMapPaletteGroup
191 0x3FAF4, // kOverlayPointers
192 0x07, // kOverlayPointersBank
193 0x7FD94, // kOverworldTilesType
194 0x4FC0, // kOverworldGfxPtr1
195 0x509F, // kOverworldGfxPtr2
196 0x517E, // kOverworldGfxPtr3
197 0x18000, // kMap32TileTL
198 0x1B3C0, // kMap32TileTR
199 0x20000, // kMap32TileBL
200 0x233C0, // kMap32TileBR
201 0x5B97, // kSpriteBlocksetPointer
202 0x67DD0, // kDungeonPalettesGroups
203};
204
210typedef struct zelda3_rom {
211 const char* filename;
212 uint8_t* data;
213 uint64_t size;
216 void* impl;
218
232zelda3_rom* yaze_load_rom(const char* filename);
233
239void yaze_unload_rom(zelda3_rom* rom);
240
248int yaze_save_rom(zelda3_rom* rom, const char* filename);
249
257
271typedef struct zelda3_message {
272 uint16_t id;
273 uint32_t rom_address;
274 uint16_t length;
275 uint8_t* raw_data;
280
294typedef struct zelda3_overworld_map {
295 uint16_t id;
296 uint8_t parent_id;
297 uint8_t quadrant_id;
298 uint8_t world_id;
299 uint8_t game_state;
301 /* Graphics and Visual Properties */
303 uint8_t area_palette;
304 uint8_t main_palette;
305 uint8_t animated_gfx;
307 /* Sprite Configuration */
308 uint8_t sprite_graphics[3];
309 uint8_t sprite_palette[3];
311 /* Audio Configuration */
312 uint8_t area_music[4];
314 /* Extended Graphics (ZSCustomOverworld) */
315 uint8_t static_graphics[16];
316 uint8_t custom_tileset[8];
318 /* Screen Properties */
322 /* Flags and Metadata */
326
339
352typedef struct dungeon_sprite {
353 const char* name;
354 uint8_t id;
355 uint8_t subtype;
356 uint8_t x;
357 uint8_t y;
358 uint8_t layer;
359 uint16_t properties;
361
379
380// Legacy aliases for backward compatibility
382#define Off ZELDA3_BG2_OFF
383#define Parallax ZELDA3_BG2_PARALLAX
384#define Dark ZELDA3_BG2_DARK
385#define OnTop ZELDA3_BG2_ON_TOP
386#define Translucent ZELDA3_BG2_TRANSLUCENT
387#define Addition ZELDA3_BG2_ADDITION
388#define Normal ZELDA3_BG2_NORMAL
389#define Transparent ZELDA3_BG2_TRANSPARENT
390#define DarkRoom ZELDA3_BG2_DARK_ROOM
391
397typedef struct object_door {
398 uint16_t id;
399 uint8_t x;
400 uint8_t y;
401 uint8_t size;
402 uint8_t type;
403 uint8_t layer;
404 uint8_t key_type;
407
413typedef struct staircase {
414 uint8_t id;
415 uint8_t room;
416 const char* label;
418
424typedef struct chest {
425 uint8_t x;
426 uint8_t y;
427 uint8_t item;
428 bool picker;
431
437typedef struct chest_data {
438 uint8_t id;
439 bool size;
441
447typedef struct destination {
448 uint8_t index;
449 uint8_t target;
450 uint8_t target_layer;
452
460typedef struct zelda3_dungeon_room {
461 uint16_t id;
464 /* Room Contents */
477 /* Room Connections */
481 /* Room Properties */
482 uint8_t floor_type;
483 uint8_t wall_type;
484 uint8_t palette_id;
485 uint8_t music_track;
487 /* Flags */
488 bool is_dark;
492
495#ifdef __cplusplus
496}
497#endif
498
499#endif // ZELDA_H
zelda3_bg2_effect background2
Definition zelda.h:381
zelda3_bg2_effect
Background layer 2 effects.
Definition zelda.h:368
@ ZELDA3_BG2_TRANSPARENT
Definition zelda.h:376
@ ZELDA3_BG2_PARALLAX
Definition zelda.h:370
@ ZELDA3_BG2_DARK
Definition zelda.h:371
@ ZELDA3_BG2_ON_TOP
Definition zelda.h:372
@ ZELDA3_BG2_TRANSLUCENT
Definition zelda.h:373
@ ZELDA3_BG2_ADDITION
Definition zelda.h:374
@ ZELDA3_BG2_DARK_ROOM
Definition zelda.h:377
@ ZELDA3_BG2_NORMAL
Definition zelda.h:375
@ ZELDA3_BG2_OFF
Definition zelda.h:369
void yaze_unload_rom(zelda3_rom *rom)
Unload and free ROM data.
Definition yaze.cc:138
zelda3_rom * yaze_copy_rom(const zelda3_rom *rom)
Create a copy of ROM data.
zelda3_rom * yaze_load_rom(const char *filename)
Load a ROM file.
Definition yaze.cc:118
int yaze_save_rom(zelda3_rom *rom, const char *filename)
Save ROM to file.
Definition yaze.cc:151
const char * zelda3_version_to_string(zelda3_version version)
Get version name as string.
Definition yaze.cc:334
zelda3_version
Different versions of the game supported by YAZE.
Definition zelda.h:33
const zelda3_version_pointers * zelda3_get_version_pointers(zelda3_version version)
Get version-specific pointers.
Definition yaze.cc:351
zelda3_version zelda3_detect_version(const uint8_t *rom_data, size_t size)
Detect ROM version from header data.
Definition yaze.cc:325
@ ZELDA3_VERSION_JP
Definition zelda.h:36
@ ZELDA3_VERSION_PROTO
Definition zelda.h:38
@ ZELDA3_VERSION_EU
Definition zelda.h:37
@ US
Definition zelda.h:42
@ SD
Definition zelda.h:44
@ ZELDA3_VERSION_US
Definition zelda.h:35
@ ZELDA3_VERSION_RANDOMIZER
Definition zelda.h:39
@ RANDO
Definition zelda.h:45
@ ZELDA3_VERSION_UNKNOWN
Definition zelda.h:34
@ JP
Definition zelda.h:43
Legacy chest data structure.
Definition zelda.h:437
uint8_t id
Definition zelda.h:438
bool size
Definition zelda.h:439
Treasure chest.
Definition zelda.h:424
uint8_t y
Definition zelda.h:426
uint8_t item
Definition zelda.h:427
bool picker
Definition zelda.h:428
uint8_t x
Definition zelda.h:425
bool big_chest
Definition zelda.h:429
Room transition destination.
Definition zelda.h:447
uint8_t target_layer
Definition zelda.h:450
uint8_t index
Definition zelda.h:448
uint8_t target
Definition zelda.h:449
Dungeon sprite definition.
Definition zelda.h:352
uint16_t properties
Definition zelda.h:359
const char * name
Definition zelda.h:353
uint8_t y
Definition zelda.h:357
uint8_t x
Definition zelda.h:356
uint8_t id
Definition zelda.h:354
uint8_t subtype
Definition zelda.h:355
uint8_t layer
Definition zelda.h:358
Dungeon door object.
Definition zelda.h:397
uint8_t y
Definition zelda.h:400
bool is_locked
Definition zelda.h:405
uint8_t x
Definition zelda.h:399
uint8_t key_type
Definition zelda.h:404
uint8_t layer
Definition zelda.h:403
uint8_t size
Definition zelda.h:401
uint8_t type
Definition zelda.h:402
uint16_t id
Definition zelda.h:398
Staircase connection.
Definition zelda.h:413
const char * label
Definition zelda.h:416
uint8_t room
Definition zelda.h:415
uint8_t id
Definition zelda.h:414
Complete dungeon room data.
Definition zelda.h:460
object_door * doors
Definition zelda.h:468
uint8_t wall_type
Definition zelda.h:483
background2 bg2
Definition zelda.h:462
destination stairs[4]
Definition zelda.h:479
uint8_t music_track
Definition zelda.h:485
uint8_t floor_type
Definition zelda.h:482
destination pits
Definition zelda.h:478
staircase * staircases
Definition zelda.h:471
uint8_t palette_id
Definition zelda.h:484
dungeon_sprite * sprites
Definition zelda.h:465
In-game text message data.
Definition zelda.h:271
uint32_t rom_address
Definition zelda.h:273
uint8_t * raw_data
Definition zelda.h:275
uint8_t encoding_type
Definition zelda.h:278
uint16_t id
Definition zelda.h:272
bool is_compressed
Definition zelda.h:277
char * parsed_text
Definition zelda.h:276
uint16_t length
Definition zelda.h:274
Overworld map data.
Definition zelda.h:294
uint16_t area_specific_bg_color
Definition zelda.h:319
uint8_t custom_tileset[8]
Definition zelda.h:316
uint8_t area_palette
Definition zelda.h:303
uint8_t sprite_palette[3]
Definition zelda.h:309
uint8_t parent_id
Definition zelda.h:296
uint8_t main_palette
Definition zelda.h:304
uint8_t game_state
Definition zelda.h:299
uint8_t area_graphics
Definition zelda.h:302
uint8_t quadrant_id
Definition zelda.h:297
uint8_t animated_gfx
Definition zelda.h:305
uint16_t subscreen_overlay
Definition zelda.h:320
uint8_t area_music[4]
Definition zelda.h:312
uint8_t static_graphics[16]
Definition zelda.h:315
uint8_t sprite_graphics[3]
Definition zelda.h:308
Complete overworld data.
Definition zelda.h:332
void * impl
Definition zelda.h:333
bool has_zsco_features
Definition zelda.h:337
zelda3_version rom_version
Definition zelda.h:336
zelda3_overworld_map ** maps
Definition zelda.h:334
ROM data structure.
Definition zelda.h:210
uint8_t * data
Definition zelda.h:212
bool is_modified
Definition zelda.h:215
const char * filename
Definition zelda.h:211
uint64_t size
Definition zelda.h:213
void * impl
Definition zelda.h:216
zelda3_version version
Definition zelda.h:214
ROM data pointers for different game versions.
Definition zelda.h:71
uint32_t kOverworldMapPaletteGroup
Definition zelda.h:98
uint32_t map32_tile_tl
Definition zelda.h:85
uint32_t overlay_pointers
Definition zelda.h:79
uint32_t kOverlayPointers
Definition zelda.h:99
uint32_t overworld_gfx_groups2
Definition zelda.h:75
uint32_t overworld_gfx_ptr3
Definition zelda.h:84
uint32_t kOverworldTilesType
Definition zelda.h:101
uint32_t kMap32TileTR
Definition zelda.h:106
uint32_t kCompressedAllMap32PointersHigh
Definition zelda.h:96
uint32_t overworld_gfx_groups1
Definition zelda.h:74
uint32_t overworld_gfx_ptr1
Definition zelda.h:82
uint32_t overlay_pointers_bank
Definition zelda.h:80
uint32_t kGfxAnimatedPointer
Definition zelda.h:93
uint32_t kOverworldGfxGroups1
Definition zelda.h:94
uint32_t kMap32TileTL
Definition zelda.h:105
uint32_t kOverworldGfxPtr1
Definition zelda.h:102
uint32_t kOverworldGfxPtr2
Definition zelda.h:103
uint32_t dungeon_palettes_groups
Definition zelda.h:90
uint32_t compressed_map32_pointers_low
Definition zelda.h:77
uint32_t map32_tile_br
Definition zelda.h:88
uint32_t kMap32TileBL
Definition zelda.h:107
uint32_t kSpriteBlocksetPointer
Definition zelda.h:109
uint32_t kOverworldGfxGroups2
Definition zelda.h:95
uint32_t map32_tile_tr
Definition zelda.h:86
uint32_t overworld_map_palette_group
Definition zelda.h:78
uint32_t overworld_gfx_ptr2
Definition zelda.h:83
uint32_t kOverworldGfxPtr3
Definition zelda.h:104
uint32_t map32_tile_bl
Definition zelda.h:87
uint32_t kMap32TileBR
Definition zelda.h:108
uint32_t sprite_blockset_pointer
Definition zelda.h:89
uint32_t compressed_map32_pointers_high
Definition zelda.h:76
uint32_t kCompressedAllMap32PointersLow
Definition zelda.h:97
uint32_t overworld_tiles_type
Definition zelda.h:81
uint32_t kOverlayPointersBank
Definition zelda.h:100
uint32_t gfx_animated_pointer
Definition zelda.h:73
uint32_t kDungeonPalettesGroups
Definition zelda.h:110