yaze 0.2.0
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze.cc
Go to the documentation of this file.
1#include "yaze.h"
2
3#include <cstdio>
4
5#include "app/rom.h"
7
8void yaze_check_version(const char* version) {
9 printf("Yaze version: %s\n", version);
10 auto version_check = yaze::app::core::CheckVersion(version);
11 if (!version_check.ok()) {
12 // Print the error message to the console for a pure C interface.
13 printf("%s\n", version_check.status().message().data());
14 // Exit the program if the version check fails.
15 exit(1);
16 }
17 return;
18}
19
20int yaze_init(yaze_flags* flags) {
21 if (flags == nullptr) {
22 return -1;
23 }
24
25 if (flags->rom_filename == nullptr) {
26 return -1;
27 }
28
29 flags->rom = yaze_load_rom(flags->rom_filename);
30 if (flags->rom == nullptr) {
31 return -1;
32 }
33
34 return 0;
35}
36
38 if (flags->rom) {
39 yaze_unload_rom(flags->rom);
40 }
41}
42
43yaze_project* yaze_load_project(const char* filename) {
44 yaze_project* project = new yaze_project();
45 project->filename = filename;
46 project->rom = yaze_load_rom(filename);
47 project->overworld = yaze_load_overworld(project->rom);
48 return project;
49}
50
51z3_rom* yaze_load_rom(const char* filename) {
52 yaze::app::Rom* internal_rom;
53 internal_rom = new yaze::app::Rom();
54 if (!internal_rom->LoadFromFile(filename).ok()) {
55 delete internal_rom;
56 return nullptr;
57 }
58
59 z3_rom* rom = new z3_rom();
60 rom->filename = filename;
61 rom->impl = internal_rom;
62 rom->data = internal_rom->data();
63 rom->size = internal_rom->size();
64 return rom;
65}
66
68 if (rom->impl) {
69 delete static_cast<yaze::app::Rom*>(rom->impl);
70 }
71
72 if (rom) {
73 delete rom;
74 }
75}
76
78 int palette, int color) {
79 snes_color color_struct;
80 color_struct.red = 0;
81 color_struct.green = 0;
82 color_struct.blue = 0;
83
84 if (rom->impl) {
85 yaze::app::Rom* internal_rom = static_cast<yaze::app::Rom*>(rom->impl);
86 auto get_color =
87 internal_rom->palette_group()
88 .get_group(yaze::app::gfx::kPaletteGroupAddressesKeys[palette_set])
89 ->palette(palette)
90 .GetColor(color);
91 if (!get_color.ok()) {
92 return color_struct;
93 }
94 color_struct = get_color.value().rom_color();
95
96 return color_struct;
97 }
98
99 return color_struct;
100}
101
103 if (rom->impl == nullptr) {
104 return nullptr;
105 }
106
107 yaze::app::Rom* internal_rom = static_cast<yaze::app::Rom*>(rom->impl);
108
109 yaze::app::zelda3::overworld::Overworld* internal_overworld =
111 auto load_ow = internal_overworld->Load(*internal_rom);
112 if (!load_ow.ok()) {
113 return nullptr;
114 }
115
116 z3_overworld* overworld = new z3_overworld();
117 overworld->impl = internal_overworld;
118 int map_id = 0;
119 for (const auto& ow_map : internal_overworld->overworld_maps()) {
120 overworld->maps[map_id] = new z3_overworld_map();
121 overworld->maps[map_id]->id = map_id;
122 map_id++;
123 }
124 return overworld;
125}
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:145
auto palette_group()
Definition rom.h:481
auto size() const
Definition rom.h:467
auto data()
Definition rom.h:470
absl::Status LoadFromFile(const std::string &filename, bool z3_load=true)
Definition rom.cc:142
Represents the full Overworld data, light and dark world.
Definition overworld.h:447
struct z3_overworld z3_overworld
Definition overworld.h:8
struct z3_overworld_map z3_overworld_map
Definition overworld.h:9
absl::StatusOr< std::string > CheckVersion(const char *version)
Definition common.cc:292
constexpr const char * kPaletteGroupAddressesKeys[]
Primitive of 16-bit RGB SNES color.
Definition snes_color.h:13
uint16_t green
Definition snes_color.h:16
uint16_t red
Definition snes_color.h:14
uint16_t blue
Definition snes_color.h:15
Flags to initialize the Yaze library.
Definition yaze.h:52
const char * rom_filename
Definition yaze.h:54
z3_rom * rom
Definition yaze.h:55
Primitive of a Yaze project.
Definition yaze.h:77
const char * filename
Definition yaze.h:78
z3_rom * rom
Definition yaze.h:80
z3_overworld * overworld
Definition yaze.h:81
Primitive of the overworld.
Definition overworld.h:23
void * impl
Definition overworld.h:25
z3_overworld_map ** maps
Definition overworld.h:24
Primitive of a Zelda3 ROM.
Definition yaze.h:89
const char * filename
Definition yaze.h:90
void * impl
Definition yaze.h:93
size_t size
Definition yaze.h:92
const uint8_t * data
Definition yaze.h:91
void yaze_cleanup(yaze_flags *flags)
Clean up the Yaze library.
Definition yaze.cc:37
int yaze_init(yaze_flags *flags)
Initialize the Yaze library.
Definition yaze.cc:20
void yaze_unload_rom(z3_rom *rom)
Unload a Zelda3 ROM.
Definition yaze.cc:67
yaze_project * yaze_load_project(const char *filename)
Definition yaze.cc:43
void yaze_check_version(const char *version)
Definition yaze.cc:8
z3_overworld * yaze_load_overworld(const z3_rom *rom)
Definition yaze.cc:102
z3_rom * yaze_load_rom(const char *filename)
Load a Zelda3 ROM from a file.
Definition yaze.cc:51
snes_color yaze_get_color_from_paletteset(const z3_rom *rom, int palette_set, int palette, int color)
Get a color from a palette set.
Definition yaze.cc:77
struct yaze_project yaze_project
Definition yaze.h:17
struct z3_rom z3_rom
Definition yaze.h:15