1#ifndef YAZE_ZELDA3_MUSIC_ASM_EXPORTER_H
2#define YAZE_ZELDA3_MUSIC_ASM_EXPORTER_H
5#include <unordered_map>
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
81 uint8_t& current_duration);
86 uint8_t& current_duration);
138 {0x02,
"%Tympani()"}, {0x04,
"%Sawtooth()"}, {0x05,
"%Sine()"},
139 {0x09,
"%Strings()"}, {0x0B,
"%Trombone()"}, {0x0C,
"%Cymbal()"},
140 {0x0D,
"%Ocarina()"}, {0x0F,
"%Harp()"}, {0x10,
"%Splash()"},
141 {0x11,
"%Trumpet()"}, {0x12,
"%Horn()"}, {0x13,
"%Snare()"},
142 {0x15,
"%Choir()"}, {0x16,
"%Flute()"}, {0x18,
"%Piano()"},
Exports MusicSong to Oracle of Secrets music_macros.asm format.
std::string ConvertCommandToAsm(const MusicCommand &cmd, const AsmExportOptions &options)
static int GetCommandParamCount(uint8_t opcode)
std::string GenerateChannelData(const MusicTrack &track, int channel_index, const AsmExportOptions &options)
static const char * GetDurationConstant(uint8_t duration)
static const char * GetInstrumentMacro(uint8_t instrument_id)
static std::string GetNoteName(uint8_t pitch)
absl::Status ExportToFile(const MusicSong &song, const std::string &path, const AsmExportOptions &options)
Export a song to a file.
std::string GenerateChannelPointers(const MusicSong &song, const AsmExportOptions &options)
static const char * GetCommandMacro(uint8_t opcode)
absl::StatusOr< std::string > ExportSong(const MusicSong &song, const AsmExportOptions &options)
Export a song to ASM string.
std::string ConvertNoteToAsm(const Note ¬e, const AsmExportOptions &options, uint8_t ¤t_duration)
std::string GenerateHeader(const MusicSong &song, const AsmExportOptions &options)
std::string ConvertEventToAsm(const TrackEvent &event, const AsmExportOptions &options, uint8_t ¤t_duration)
constexpr DurationConstant kDurationConstants[]
constexpr InstrumentMacro kInstrumentMacros[]
Options for ASM export in music_macros.asm format.
bool use_instrument_macros
uint16_t base_aram_address
Represents an N-SPC command (opcodes 0xE0-0xFF).
A complete song composed of segments.
One of 8 channels in a music segment.
Represents a single musical note.
A single event in a music track (note, command, or control).