Imports music_macros.asm format files into MusicSong. More...
#include <asm_importer.h>
Classes | |
| struct | ParseState |
Public Member Functions | |
| AsmImporter ()=default | |
| ~AsmImporter ()=default | |
| absl::StatusOr< AsmParseResult > | ImportSong (const std::string &asm_source, const AsmImportOptions &options) |
| Import a song from ASM string. | |
| absl::StatusOr< AsmParseResult > | ImportFromFile (const std::string &path, const AsmImportOptions &options) |
| Import a song from a file. | |
Private Member Functions | |
| absl::Status | ParseLine (const std::string &line, MusicSong &song, ParseState &state, const AsmImportOptions &options) |
| bool | ParseLabel (const std::string &line, ParseState &state) |
| bool | ParseDirective (const std::string &line, ParseState &state) |
| absl::Status | ParseDataBytes (const std::string &line, MusicSong &song, ParseState &state, const AsmImportOptions &options) |
| absl::StatusOr< std::vector< TrackEvent > > | ParseMacro (const std::string ¯o_call, ParseState &state, const AsmImportOptions &options) |
| absl::StatusOr< uint8_t > | ParseNoteName (const std::string ¬e_name) |
| absl::StatusOr< uint8_t > | ParseDurationConstant (const std::string &duration) |
| absl::StatusOr< MusicCommand > | ResolveInstrumentMacro (const std::string ¯o_name) |
| absl::StatusOr< MusicCommand > | ResolveCommandMacro (const std::string ¯o_name, const std::vector< uint8_t > ¶ms) |
| bool | ParseMacroCall (const std::string &call, std::string ¯o_name, std::vector< std::string > ¶ms) |
| absl::StatusOr< uint8_t > | ParseHexValue (const std::string &value) |
Static Private Member Functions | |
| static std::string | Trim (const std::string &s) |
Imports music_macros.asm format files into MusicSong.
Supports the Oracle of Secrets music_macros.asm conventions:
Definition at line 47 of file asm_importer.h.
|
default |
|
default |
| absl::StatusOr< AsmParseResult > yaze::zelda3::music::AsmImporter::ImportSong | ( | const std::string & | asm_source, |
| const AsmImportOptions & | options ) |
Import a song from ASM string.
| asm_source | The ASM source code. |
| options | Import options. |
Definition at line 16 of file asm_importer.cc.
References yaze::zelda3::music::AsmParseResult::bytes_generated, yaze::zelda3::music::AsmImporter::ParseState::bytes_generated, yaze::zelda3::music::AsmParseResult::errors, yaze::zelda3::music::AsmImporter::ParseState::errors, yaze::zelda3::music::AsmImporter::ParseState::line_number, yaze::zelda3::music::AsmParseResult::lines_parsed, yaze::zelda3::music::MusicSong::name, ParseLine(), yaze::zelda3::music::MusicSong::segments, yaze::zelda3::music::AsmParseResult::song, yaze::zelda3::music::AsmImporter::ParseState::song_label, yaze::zelda3::music::AsmImportOptions::strict_mode, yaze::zelda3::music::AsmParseResult::warnings, and yaze::zelda3::music::AsmImporter::ParseState::warnings.
Referenced by yaze::editor::MusicEditor::ImportAsmBufferToSong(), and ImportFromFile().

| absl::StatusOr< AsmParseResult > yaze::zelda3::music::AsmImporter::ImportFromFile | ( | const std::string & | path, |
| const AsmImportOptions & | options ) |
Import a song from a file.
| path | Input file path. |
| options | Import options. |
Definition at line 57 of file asm_importer.cc.
References ImportSong().

|
private |
Definition at line 88 of file asm_importer.cc.
References yaze::zelda3::music::AsmImporter::ParseState::current_channel, yaze::zelda3::music::AsmImporter::ParseState::line_number, ParseDataBytes(), ParseDirective(), ParseLabel(), ParseMacro(), yaze::zelda3::music::MusicSong::segments, Trim(), yaze::zelda3::music::AsmImportOptions::verbose_errors, and yaze::zelda3::music::AsmImporter::ParseState::warnings.
Referenced by ImportSong().
|
private |
Definition at line 150 of file asm_importer.cc.
References yaze::zelda3::music::AsmImporter::ParseState::current_channel, yaze::zelda3::music::AsmImporter::ParseState::label_to_channel, and yaze::zelda3::music::AsmImporter::ParseState::song_label.
Referenced by ParseLine().
|
private |
Definition at line 196 of file asm_importer.cc.
References yaze::zelda3::music::AsmImporter::ParseState::aram_address, yaze::zelda3::name, ParseHexValue(), and Trim().
Referenced by ParseLine().

|
private |
Definition at line 228 of file asm_importer.cc.
References yaze::zelda3::music::AsmImporter::ParseState::bytes_generated, yaze::zelda3::music::TrackEvent::Command, yaze::zelda3::music::AsmImporter::ParseState::current_channel, yaze::zelda3::music::AsmImporter::ParseState::current_duration, yaze::zelda3::music::TrackEvent::End, yaze::zelda3::music::kNoteMaxPitch, yaze::zelda3::music::kNoteMinPitch, yaze::zelda3::music::kNoteRest, yaze::zelda3::music::kNoteTie, yaze::zelda3::music::kTrackEnd, yaze::zelda3::music::AsmImporter::ParseState::line_number, yaze::zelda3::music::TrackEvent::Note, ParseDurationConstant(), ParseHexValue(), ParseNoteName(), yaze::zelda3::music::MusicSong::segments, Trim(), yaze::zelda3::music::TrackEvent::type, yaze::zelda3::music::AsmImportOptions::verbose_errors, and yaze::zelda3::music::AsmImporter::ParseState::warnings.
Referenced by ParseLine().

|
private |
Definition at line 328 of file asm_importer.cc.
References yaze::zelda3::music::AsmImporter::ParseState::bytes_generated, yaze::zelda3::music::TrackEvent::Command, yaze::zelda3::music::AsmImporter::ParseState::current_duration, yaze::zelda3::music::AsmImporter::ParseState::line_number, ParseDurationConstant(), ParseHexValue(), ParseMacroCall(), ResolveCommandMacro(), ResolveInstrumentMacro(), yaze::zelda3::music::AsmImportOptions::strict_mode, yaze::zelda3::music::TrackEvent::type, and yaze::zelda3::music::AsmImporter::ParseState::warnings.
Referenced by ParseLine().
|
private |
Definition at line 401 of file asm_importer.cc.
References yaze::zelda3::music::kAsmNoteNames.
Referenced by ParseDataBytes().
|
private |
Definition at line 410 of file asm_importer.cc.
References yaze::zelda3::music::kDurationConstants, and yaze::zelda3::name.
Referenced by ParseDataBytes(), and ParseMacro().
|
private |
Definition at line 430 of file asm_importer.cc.
References yaze::zelda3::music::kInstrumentMacroImport, yaze::zelda3::music::MusicCommand::opcode, and yaze::zelda3::music::MusicCommand::params.
Referenced by ParseMacro().
|
private |
Definition at line 443 of file asm_importer.cc.
References yaze::zelda3::music::kCommandMacros, yaze::zelda3::music::MusicCommand::opcode, and yaze::zelda3::music::MusicCommand::params.
Referenced by ParseMacro().
|
private |
Definition at line 458 of file asm_importer.cc.
References Trim().
Referenced by ParseMacro().

|
private |
Definition at line 491 of file asm_importer.cc.
Referenced by ParseDataBytes(), ParseDirective(), and ParseMacro().
|
staticprivate |
Definition at line 513 of file asm_importer.cc.
Referenced by ParseDataBytes(), ParseDirective(), ParseLine(), and ParseMacroCall().