backend-infra-engineer: Pre-0.2.2 2024 Q4 snapshot
This commit is contained in:
61
incl/dungeon.h
Normal file
61
incl/dungeon.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef YAZE_BASE_DUNGEON_H_
|
||||
#define YAZE_BASE_DUNGEON_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct z3_object_door {
|
||||
short id;
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
uint8_t size;
|
||||
uint8_t type;
|
||||
uint8_t layer;
|
||||
} z3_object_door;
|
||||
|
||||
typedef struct z3_dungeon_destination {
|
||||
uint8_t index;
|
||||
uint8_t target;
|
||||
uint8_t target_layer;
|
||||
} z3_dungeon_destination;
|
||||
|
||||
typedef struct z3_staircase {
|
||||
uint8_t id;
|
||||
uint8_t room;
|
||||
const char *label;
|
||||
} z3_staircase;
|
||||
|
||||
typedef struct z3_chest {
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
uint8_t item;
|
||||
bool picker;
|
||||
bool big_chest;
|
||||
} z3_chest;
|
||||
|
||||
typedef struct z3_chest_data {
|
||||
uint8_t id;
|
||||
bool size;
|
||||
} z3_chest_data;
|
||||
|
||||
typedef enum z3_dungeon_background2 {
|
||||
Off,
|
||||
Parallax,
|
||||
Dark,
|
||||
OnTop,
|
||||
Translucent,
|
||||
Addition,
|
||||
Normal,
|
||||
Transparent,
|
||||
DarkRoom
|
||||
} z3_dungeon_background2;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // YAZE_BASE_DUNGEON_H_
|
||||
47
incl/overworld.h
Normal file
47
incl/overworld.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#ifndef YAZE_OVERWORLD_H
|
||||
#define YAZE_OVERWORLD_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "sprite.h"
|
||||
|
||||
/**
|
||||
* @brief Primitive of an overworld map.
|
||||
*/
|
||||
typedef struct z3_overworld_map {
|
||||
uint8_t id; /**< ID of the overworld map. */
|
||||
uint8_t parent_id;
|
||||
uint8_t quadrant_id;
|
||||
uint8_t world_id;
|
||||
uint8_t game_state;
|
||||
uint8_t area_graphics;
|
||||
uint8_t area_palette;
|
||||
|
||||
uint8_t sprite_graphics[3];
|
||||
uint8_t sprite_palette[3];
|
||||
uint8_t area_music[4];
|
||||
uint8_t static_graphics[16];
|
||||
} z3_overworld_map;
|
||||
|
||||
/**
|
||||
* @brief Primitive of the overworld.
|
||||
*/
|
||||
typedef struct z3_overworld {
|
||||
void *impl; // yaze::app::Overworld*
|
||||
|
||||
uint8_t *tile32_data; /**< Pointer to the 32x32 tile data. */
|
||||
uint8_t *tile16_data; /**< Pointer to the 16x16 tile data. */
|
||||
|
||||
z3_sprite **sprites; /**< Pointer to the sprites per map. */
|
||||
z3_overworld_map **maps; /**< Pointer to the overworld maps. */
|
||||
} z3_overworld;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // YAZE_OVERWORLD_H
|
||||
32
incl/snes_color.h
Normal file
32
incl/snes_color.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef YAZE_BASE_SNES_COLOR_H_
|
||||
#define YAZE_BASE_SNES_COLOR_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @brief Primitive of 16-bit RGB SNES color.
|
||||
*/
|
||||
typedef struct snes_color {
|
||||
uint16_t red; /**< Red component of the color. */
|
||||
uint16_t blue; /**< Blue component of the color. */
|
||||
uint16_t green; /**< Green component of the color. */
|
||||
} snes_color;
|
||||
|
||||
/**
|
||||
* @brief Primitive of a SNES color palette.
|
||||
*/
|
||||
typedef struct snes_palette {
|
||||
unsigned int id; /**< ID of the palette. */
|
||||
unsigned int size; /**< Size of the palette. */
|
||||
snes_color* colors; /**< Pointer to the colors in the palette. */
|
||||
} snes_palette;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // YAZE_BASE_SNES_COLOR_H_
|
||||
40
incl/snes_tile.h
Normal file
40
incl/snes_tile.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#ifndef YAZE_INCL_SNES_TILE_H
|
||||
#define YAZE_INCL_SNES_TILE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct snes_tile8 {
|
||||
uint32_t id;
|
||||
uint32_t palette_id;
|
||||
uint8_t data[64];
|
||||
} snes_tile8;
|
||||
|
||||
typedef struct snes_tile_info {
|
||||
uint16_t id;
|
||||
uint8_t palette;
|
||||
bool priority;
|
||||
bool vertical_mirror;
|
||||
bool horizontal_mirror;
|
||||
} snes_tile_info;
|
||||
|
||||
typedef struct snes_tile16 {
|
||||
snes_tile_info tiles[4];
|
||||
} snes_tile16;
|
||||
|
||||
typedef struct snes_tile32 {
|
||||
uint16_t t0;
|
||||
uint16_t t1;
|
||||
uint16_t t2;
|
||||
uint16_t t3;
|
||||
} snes_tile32;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
23
incl/sprite.h
Normal file
23
incl/sprite.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef YAZE_BASE_SPRITE_H_
|
||||
#define YAZE_BASE_SPRITE_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @brief Primitive of a sprite.
|
||||
*/
|
||||
typedef struct z3_sprite {
|
||||
const char* name; /**< Name of the sprite. */
|
||||
uint8_t id; /**< ID of the sprite. */
|
||||
uint8_t subtype; /**< Subtype of the sprite. */
|
||||
} z3_sprite;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // YAZE_BASE_SPRITE_H_
|
||||
91
incl/system/extension.h
Normal file
91
incl/system/extension.h
Normal file
@@ -0,0 +1,91 @@
|
||||
#ifndef EXTENSION_INTERFACE_H
|
||||
#define EXTENSION_INTERFACE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "yaze.h"
|
||||
|
||||
typedef void (*yaze_initialize_func)(yaze_editor_context* context);
|
||||
typedef void (*yaze_cleanup_func)(void);
|
||||
typedef void (*yaze_extend_ui_func)(yaze_editor_context* context);
|
||||
typedef void (*yaze_manipulate_rom_func)(z3_rom* rom);
|
||||
typedef void (*yaze_command_func)(void);
|
||||
typedef void (*yaze_event_hook_func)(void);
|
||||
|
||||
typedef enum {
|
||||
YAZE_EVENT_ROM_LOADED,
|
||||
YAZE_EVENT_ROM_SAVED,
|
||||
YAZE_EVENT_SPRITE_MODIFIED,
|
||||
YAZE_EVENT_PALETTE_CHANGED,
|
||||
} yaze_event_type;
|
||||
|
||||
/**
|
||||
* @brief Extension interface for Yaze.
|
||||
*
|
||||
* @details Yaze extensions can be written in C or Python.
|
||||
*/
|
||||
typedef struct yaze_extension {
|
||||
const char* name;
|
||||
const char* version;
|
||||
|
||||
/**
|
||||
* @brief Function to initialize the extension.
|
||||
*
|
||||
* @details This function is called when the extension is loaded. It can be
|
||||
* used to set up any resources or state needed by the extension.
|
||||
*/
|
||||
yaze_initialize_func initialize;
|
||||
|
||||
/**
|
||||
* @brief Function to clean up the extension.
|
||||
*
|
||||
* @details This function is called when the extension is unloaded. It can be
|
||||
* used to clean up any resources or state used by the extension.
|
||||
*/
|
||||
yaze_cleanup_func cleanup;
|
||||
|
||||
/**
|
||||
* @brief Function to manipulate the ROM.
|
||||
*
|
||||
* @param rom The ROM to manipulate.
|
||||
*
|
||||
*/
|
||||
yaze_manipulate_rom_func manipulate_rom;
|
||||
|
||||
/**
|
||||
* @brief Function to extend the UI.
|
||||
*
|
||||
* @param context The editor context.
|
||||
*
|
||||
* @details This function is called when the extension is loaded. It can be
|
||||
* used to add custom UI elements to the editor. The context parameter
|
||||
* provides access to the project, command registry, event dispatcher, and
|
||||
* ImGui context.
|
||||
*/
|
||||
yaze_extend_ui_func extend_ui;
|
||||
|
||||
/**
|
||||
* @brief Register commands in the yaze_command_registry.
|
||||
*/
|
||||
yaze_command_func register_commands;
|
||||
|
||||
/**
|
||||
* @brief Register custom tools in the yaze_command_registry.
|
||||
*/
|
||||
yaze_command_func register_custom_tools;
|
||||
|
||||
/**
|
||||
* @brief Register event hooks in the yaze_event_dispatcher.
|
||||
*/
|
||||
void (*register_event_hooks)(yaze_event_type event,
|
||||
yaze_event_hook_func hook);
|
||||
|
||||
} yaze_extension;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // EXTENSION_INTERFACE_H
|
||||
125
incl/yaze.h
Normal file
125
incl/yaze.h
Normal file
@@ -0,0 +1,125 @@
|
||||
#ifndef YAZE_H
|
||||
#define YAZE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "dungeon.h"
|
||||
#include "overworld.h"
|
||||
#include "snes_color.h"
|
||||
#include "sprite.h"
|
||||
|
||||
typedef struct z3_rom z3_rom;
|
||||
|
||||
typedef struct yaze_project yaze_project;
|
||||
typedef struct yaze_command_registry yaze_command_registry;
|
||||
typedef struct yaze_event_dispatcher yaze_event_dispatcher;
|
||||
|
||||
/**
|
||||
* @brief Extension editor context.
|
||||
*/
|
||||
typedef struct yaze_editor_context {
|
||||
z3_rom* rom;
|
||||
yaze_project* project;
|
||||
|
||||
yaze_command_registry* command_registry;
|
||||
yaze_event_dispatcher* event_dispatcher;
|
||||
} yaze_editor_context;
|
||||
|
||||
/**
|
||||
* @brief Initialize the Yaze library.
|
||||
*/
|
||||
int yaze_init(yaze_editor_context*);
|
||||
|
||||
/**
|
||||
* @brief Clean up the Yaze library.
|
||||
*/
|
||||
void yaze_cleanup(yaze_editor_context*);
|
||||
|
||||
/**
|
||||
* @brief Primitive of a Yaze project.
|
||||
*/
|
||||
struct yaze_project {
|
||||
const char* name;
|
||||
const char* filepath;
|
||||
const char* rom_filename;
|
||||
const char* code_folder;
|
||||
const char* labels_filename;
|
||||
};
|
||||
|
||||
yaze_project yaze_load_project(const char* filename);
|
||||
|
||||
/**
|
||||
* @brief Primitive of a Zelda3 ROM.
|
||||
*/
|
||||
struct z3_rom {
|
||||
const char* filename;
|
||||
const uint8_t* data;
|
||||
size_t size;
|
||||
void* impl; // yaze::app::Rom*
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Load a Zelda3 ROM from a file.
|
||||
*/
|
||||
z3_rom* yaze_load_rom(const char* filename);
|
||||
|
||||
/**
|
||||
* @brief Unload a Zelda3 ROM.
|
||||
*/
|
||||
void yaze_unload_rom(z3_rom* rom);
|
||||
|
||||
/**
|
||||
* @brief Primitive of a Bitmap
|
||||
*/
|
||||
typedef struct yaze_bitmap {
|
||||
int width;
|
||||
int height;
|
||||
uint8_t bpp;
|
||||
uint8_t* data;
|
||||
} yaze_bitmap;
|
||||
|
||||
/**
|
||||
* @brief Load a bitmap from a file.
|
||||
*/
|
||||
yaze_bitmap yaze_load_bitmap(const char* filename);
|
||||
|
||||
/**
|
||||
* @brief Get a color from a palette set.
|
||||
*/
|
||||
snes_color yaze_get_color_from_paletteset(const z3_rom* rom, int palette_set,
|
||||
int palette, int color);
|
||||
|
||||
/**
|
||||
* @brief Load the overworld from a Zelda3 ROM.
|
||||
*/
|
||||
z3_overworld* yaze_load_overworld(const z3_rom* rom);
|
||||
|
||||
/**
|
||||
* @brief Check the version of the Yaze library.
|
||||
*/
|
||||
void yaze_check_version(const char* version);
|
||||
|
||||
/**
|
||||
* @brief Command registry.
|
||||
*/
|
||||
struct yaze_command_registry {
|
||||
void (*register_command)(const char* name, void (*command)(void));
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Event dispatcher.
|
||||
*/
|
||||
struct yaze_event_dispatcher {
|
||||
void (*register_event_hook)(void (*event_hook)(void));
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // YAZE_H
|
||||
Reference in New Issue
Block a user