Serializes MusicSong to N-SPC byte format for direct ARAM upload. More...
#include <spc_serializer.h>
Classes | |
| struct | SerializeOptions |
| Serialization options. More... | |
| struct | SerializeResult |
| Serialization result. More... | |
Public Member Functions | |
| SpcSerializer ()=default | |
| ~SpcSerializer ()=default | |
Static Public Member Functions | |
| static absl::StatusOr< SerializeResult > | SerializeSong (const MusicSong &song, uint16_t base_address) |
| static absl::StatusOr< SerializeResult > | SerializeSongFromSegment (const MusicSong &song, int start_segment, uint16_t base_address) |
| Serialize a song starting from a specific segment (for seeking). | |
| static void | ApplyBaseAddress (SerializeResult *result, uint16_t new_base_address) |
| static int | CalculateRequiredSpace (const MusicSong &song) |
Static Private Member Functions | |
| static std::vector< uint8_t > | SerializeTrack (const MusicTrack &track) |
| static std::vector< uint8_t > | SerializeNote (const Note ¬e, uint8_t *current_duration) |
| static std::vector< uint8_t > | SerializeCommand (const MusicCommand &command) |
Serializes MusicSong to N-SPC byte format for direct ARAM upload.
Produces a complete sound bank block that can be uploaded to ARAM:
This enables preview of custom songs without saving to ROM first.
Definition at line 25 of file spc_serializer.h.
|
default |
|
default |
|
static |
Definition at line 9 of file spc_serializer.cc.
References yaze::zelda3::music::SpcSerializer::SerializeResult::base_address, yaze::zelda3::music::SpcSerializer::SerializeResult::data, yaze::zelda3::music::MusicSong::HasLoop(), yaze::zelda3::music::MusicSong::loop_point, yaze::zelda3::music::SpcSerializer::SerializeResult::relocations, yaze::zelda3::music::MusicSong::segments, and SerializeTrack().
Referenced by yaze::editor::music::MusicPlayer::PreviewCustomSong(), yaze::editor::music::MusicPlayer::PreviewSegment(), yaze::zelda3::music::MusicBank::SaveSongTable(), and SerializeSongFromSegment().

|
static |
Serialize a song starting from a specific segment (for seeking).
Creates song data starting from segment_index, allowing playback to resume from a specific point in the song.
Definition at line 122 of file spc_serializer.cc.
References yaze::zelda3::music::MusicSong::bank, yaze::zelda3::music::MusicSong::HasLoop(), yaze::zelda3::music::MusicSong::loop_point, yaze::zelda3::music::MusicSong::name, yaze::zelda3::music::MusicSong::segments, and SerializeSong().

|
static |
Definition at line 251 of file spc_serializer.cc.
References yaze::zelda3::music::SpcSerializer::SerializeResult::base_address, yaze::zelda3::music::SpcSerializer::SerializeResult::data, and yaze::zelda3::music::SpcSerializer::SerializeResult::relocations.
Referenced by yaze::zelda3::music::MusicBank::SaveSongTable().
|
static |
Definition at line 194 of file spc_serializer.cc.
References yaze::zelda3::music::MusicSong::HasLoop(), yaze::zelda3::music::MusicSong::segments, and SerializeTrack().

|
staticprivate |
Definition at line 159 of file spc_serializer.cc.
References yaze::zelda3::music::TrackEvent::Command, yaze::zelda3::music::TrackEvent::End, yaze::zelda3::music::MusicTrack::events, yaze::zelda3::music::kTrackEnd, yaze::zelda3::music::TrackEvent::Note, SerializeCommand(), and SerializeNote().
Referenced by CalculateRequiredSpace(), and SerializeSong().

|
staticprivate |
Definition at line 216 of file spc_serializer.cc.
References yaze::zelda3::music::Note::duration, yaze::zelda3::music::Note::has_duration_prefix, yaze::zelda3::music::Note::pitch, and yaze::zelda3::music::Note::velocity.
Referenced by SerializeTrack().
|
staticprivate |
Definition at line 237 of file spc_serializer.cc.
References yaze::zelda3::music::MusicCommand::GetParamCount(), yaze::zelda3::music::MusicCommand::opcode, and yaze::zelda3::music::MusicCommand::params.
Referenced by SerializeTrack().
