yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
music_constants.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_MUSIC_MUSIC_CONSTANTS_H
2#define YAZE_APP_EDITOR_MUSIC_MUSIC_CONSTANTS_H
3
4#include <cstdint>
5
6namespace yaze {
7namespace editor {
8namespace music {
9
10// APU Ports and Addresses
11constexpr uint16_t kApuPort0 = 0x2140;
12constexpr uint16_t kApuPort1 = 0x2141;
13constexpr uint16_t kApuPort2 = 0x2142;
14constexpr uint16_t kApuPort3 = 0x2143;
15
16constexpr uint16_t kSongTableAram = 0x1000;
17constexpr uint16_t kDriverEntryPoint = 0x0800;
18
19// DSP Registers
20constexpr uint8_t kDspVolL = 0x00;
21constexpr uint8_t kDspVolR = 0x01;
22constexpr uint8_t kDspPitchLow = 0x02;
23constexpr uint8_t kDspPitchHigh = 0x03;
24constexpr uint8_t kDspSrcn = 0x04;
25constexpr uint8_t kDspAdsr1 = 0x05;
26constexpr uint8_t kDspAdsr2 = 0x06;
27constexpr uint8_t kDspGain = 0x07;
28constexpr uint8_t kDspEnvx = 0x08;
29constexpr uint8_t kDspOutx = 0x09;
30
31constexpr uint8_t kDspMainVolL = 0x0C;
32constexpr uint8_t kDspMainVolR = 0x1C;
33constexpr uint8_t kDspEchoVolL = 0x2C;
34constexpr uint8_t kDspEchoVolR = 0x3C;
35constexpr uint8_t kDspKeyOn = 0x4C;
36constexpr uint8_t kDspKeyOff = 0x5C;
37constexpr uint8_t kDspFlg = 0x6C;
38constexpr uint8_t kDspEndx = 0x7C;
39constexpr uint8_t kDspEfb = 0x0D;
40constexpr uint8_t kDspPmod = 0x2D;
41constexpr uint8_t kDspNon = 0x3D;
42constexpr uint8_t kDspEon = 0x4D;
43constexpr uint8_t kDspDir = 0x5D;
44constexpr uint8_t kDspEsa = 0x6D;
45constexpr uint8_t kDspEdl = 0x7D;
46
47// Music Engine Opcodes
48constexpr uint8_t kOpcodeInstrument = 0xE0;
49constexpr uint8_t kOpcodePan = 0xE1;
50constexpr uint8_t kOpcodePanFade = 0xE2;
51constexpr uint8_t kOpcodeVibratoOn = 0xE3;
52constexpr uint8_t kOpcodeVibratoOff = 0xE4;
53constexpr uint8_t kOpcodeMasterVolume = 0xE5;
54constexpr uint8_t kOpcodeMasterVolumeFade = 0xE6;
55constexpr uint8_t kOpcodeTempo = 0xE7;
56constexpr uint8_t kOpcodeTempoFade = 0xE8;
57constexpr uint8_t kOpcodeGlobalTranspose = 0xE9;
58constexpr uint8_t kOpcodeChannelTranspose = 0xEA;
59constexpr uint8_t kOpcodeTremoloOn = 0xEB;
60constexpr uint8_t kOpcodeTremoloOff = 0xEC;
61constexpr uint8_t kOpcodeVolume = 0xED;
62constexpr uint8_t kOpcodeVolumeFade = 0xEE;
63constexpr uint8_t kOpcodeCallSubroutine = 0xEF;
64constexpr uint8_t kOpcodeSetVibratoFade = 0xF0;
65constexpr uint8_t kOpcodePitchSlide = 0xF1;
66constexpr uint8_t kOpcodePitchSlideOff = 0xF2;
67constexpr uint8_t kOpcodeEchoOn = 0xF3;
68constexpr uint8_t kOpcodeEchoOff = 0xF4;
69constexpr uint8_t kOpcodeSetEchoDelay = 0xF5;
70constexpr uint8_t kOpcodeSetEchoFeedback = 0xF6;
71constexpr uint8_t kOpcodeSetEchoFilter = 0xF7;
72constexpr uint8_t kOpcodeSetEchoVolume = 0xF8;
73constexpr uint8_t kOpcodeSetEchoVolumeFade = 0xF9;
74constexpr uint8_t kOpcodeLoopStart = 0xFA;
75constexpr uint8_t kOpcodeLoopEnd = 0xFB;
76constexpr uint8_t kOpcodeEnd = 0x00;
77
78// Timing
79constexpr int kSpcResetCycles = 32000;
80constexpr int kSpcPreviewCycles = 5000;
81constexpr int kSpcStopCycles = 16000;
82constexpr int kSpcInitCycles = 16000;
83
84// Piano Roll Layout
85constexpr int kToolbarHeight = 32;
86constexpr int kStatusBarHeight = 24;
87
88// Bank Offsets
89constexpr uint32_t kSoundBankOffsets[] = {
90 0xC8000, // ROM Bank 0 (common)
91 0xD1EF5, // ROM Bank 1 (overworld songs)
92 0xD8000, // ROM Bank 2 (dungeon songs)
93 0xD5380, // ROM Bank 3 (credits songs)
94 0x1A9EF5, // ROM Bank 4 (expanded overworld)
95 0x1ACCA7 // ROM Bank 5 (auxiliary)
96};
97
98} // namespace music
99} // namespace editor
100} // namespace yaze
101
102#endif // YAZE_APP_EDITOR_MUSIC_MUSIC_CONSTANTS_H
constexpr uint16_t kSongTableAram
constexpr int kSpcResetCycles
constexpr uint8_t kDspMainVolL
constexpr uint16_t kApuPort3
constexpr uint8_t kDspEdl
constexpr uint8_t kOpcodePitchSlide
constexpr uint32_t kSoundBankOffsets[]
constexpr uint8_t kDspOutx
constexpr uint8_t kDspEsa
constexpr uint8_t kDspKeyOn
constexpr uint8_t kDspSrcn
constexpr uint8_t kOpcodeInstrument
constexpr uint8_t kOpcodeGlobalTranspose
constexpr uint8_t kOpcodeSetEchoFilter
constexpr uint8_t kOpcodeEchoOn
constexpr uint8_t kOpcodeLoopStart
constexpr int kSpcPreviewCycles
constexpr uint8_t kOpcodePan
constexpr uint8_t kOpcodeVolumeFade
constexpr uint8_t kOpcodePitchSlideOff
constexpr uint8_t kOpcodeVibratoOn
constexpr int kSpcInitCycles
constexpr uint8_t kOpcodeEchoOff
constexpr uint8_t kOpcodeSetVibratoFade
constexpr uint16_t kApuPort1
constexpr uint16_t kDriverEntryPoint
constexpr int kToolbarHeight
constexpr uint8_t kDspGain
constexpr uint8_t kOpcodeMasterVolume
constexpr int kStatusBarHeight
constexpr uint8_t kDspEnvx
constexpr uint8_t kOpcodePanFade
constexpr uint8_t kOpcodeSetEchoVolumeFade
constexpr uint16_t kApuPort0
constexpr uint8_t kOpcodeTremoloOn
constexpr uint8_t kOpcodeLoopEnd
constexpr uint8_t kDspMainVolR
constexpr uint8_t kOpcodeVolume
constexpr uint8_t kDspEchoVolR
constexpr uint8_t kOpcodeChannelTranspose
constexpr uint8_t kOpcodeCallSubroutine
constexpr uint8_t kOpcodeTremoloOff
constexpr uint8_t kOpcodeTempo
constexpr uint8_t kDspAdsr1
constexpr uint8_t kOpcodeSetEchoVolume
constexpr uint8_t kDspVolL
constexpr uint8_t kDspFlg
constexpr uint8_t kOpcodeTempoFade
constexpr uint8_t kDspEfb
constexpr uint8_t kOpcodeEnd
constexpr uint8_t kDspEon
constexpr uint8_t kOpcodeSetEchoFeedback
constexpr uint8_t kDspKeyOff
constexpr uint8_t kDspVolR
constexpr uint8_t kDspNon
constexpr int kSpcStopCycles
constexpr uint8_t kDspPitchLow
constexpr uint16_t kApuPort2
constexpr uint8_t kOpcodeMasterVolumeFade
constexpr uint8_t kDspEchoVolL
constexpr uint8_t kDspDir
constexpr uint8_t kDspEndx
constexpr uint8_t kDspPmod
constexpr uint8_t kOpcodeVibratoOff
constexpr uint8_t kOpcodeSetEchoDelay
constexpr uint8_t kDspPitchHigh
constexpr uint8_t kDspAdsr2