diff options
Diffstat (limited to 'wram.asm')
-rw-r--r-- | wram.asm | 258 |
1 files changed, 219 insertions, 39 deletions
@@ -1,17 +1,7 @@ -SECTION "audio",BSS[$c101] -; channel structure: -; $00: music id lo -; $01: music id hi -; -; $03: channel flags? bit 0 = on/off -; -; $06: address of music data -; -; $19: note length lo -; $1a: note length hi -; $1b: lr tracks (bit corresponds to track #) -; -; $2d: tempo +SECTION "audio",BSS[$c100] +MusicPlaying: ; c100 +; nonzero if playing + ds 1 Channels: Channel1: @@ -19,21 +9,157 @@ Channel1MusicID: ; c101 ds 2 Channel1MusicBank: ; c103 ds 1 -; $03 = channel flags? +Channel1Flags: ; c104 +; 0: on/off +; 1: subroutine +; 2: +; 3: +; 4: noise sampling on/off +; 5: +; 6: +; 7: + ds 1 +Channel1Flags2: ; c105 +; 0: vibrato on/off +; 1: +; 2: duty cycle on/off +; 3: +; 4: +; 5: +; 6: +; 7: + ds 1 +Channel1Flags3: ; c106 +; 0: vibrato up/down +; 1: +; 2: +; 3: +; 4: +; 5: +; 6: +; 7: ds 1 -; note/octave???? - ds 2 Channel1MusicAddress: ; c107 ds 2 - ds 17 -Channel1NoteLength: ; c11a +Channel1LastMusicAddress: ; c109 ds 2 -Channel1LR: ; c11c +; could have been meant as a third-level address +; unused? ; c10b ds 1 - ds 17 -Channel1Tempo: ; c12e +; unused? ; c10c ds 1 - ds 4 +Channel1NoteFlags: ; c10d +; 0: +; 1: +; 2: +; 3: +; 4: +; 5: rest +; 6: +; 7: + ds 1 +Channel1Condition: ; c10e +; used for conditional jumps + ds 1 +Channel1DutyCycle: ; c10f +; uses top 2 bits only +; 0: 12.5% +; 1: 25% +; 2: 50% +; 3: 75% + ds 1 +Channel1Intensity: ; c110 +; hi: pressure +; lo: velocity + ds 1 +Channel1Frequency: +; 11 bits +Channel1FrequencyLo: ; c111 + ds 1 +Channel1FrequencyHi: ; c112 + ds 1 +Channel1Pitch: ; c113 +; 0: rest +; 1: C +; 2: C# +; 3: D +; 4: D# +; 5: E +; 6: F +; 7: F# +; 8: G +; 9: G# +; a: A +; b: A# +; c: B + ds 1 +Channel1Octave: ; c114 +; 0: highest +; 7: lowest + ds 1 +Channel1StartingOctave ; c115 +; raises existing octaves by this value +; used for repeating phrases in a higher octave to save space + ds 1 +Channel1NoteDuration: ; c116 +; number of frames remaining in the current note + ds 1 +; c117 + ds 1 +; c118 + ds 1 +Channel1LoopCount ; c119 + ds 1 +Channel1Tempo: ; c11a + ds 2 +Channel1Tracks: ; c11c +; hi: l +; lo: r + ds 1 +; c11d + ds 1 + +Channel1VibratoDelayCount: ; c11e +; initialized at the value in VibratoDelay +; decrements each frame +; at 0, vibrato starts + ds 1 +Channel1VibratoDelay: ; c11f +; number of frames a note plays until vibrato starts + ds 1 +Channel1VibratoExtent: ; c120 +; difference in + ds 1 +Channel1VibratoRate: ; c121 +; counts down from a max of 15 frames +; over which the pitch is alternated +; hi: init frames +; lo: frame count + ds 1 + +; c122 + ds 1 +; c123 + ds 1 +; c124 + ds 1 +; c125 + ds 1 +; c126 + ds 1 + ds 7 +Channel1NoteLength: ; c12e +; # frames per 16th note + ds 1 +; c12f + ds 1 +; c130 + ds 1 +; c131 + ds 1 +; c132 + ds 1 +; end Channel2: ; c133 ds 50 @@ -52,13 +178,25 @@ Channel7: ; c22d Channel8: ; c25f ds 50 - ds 7 - -MusicHeaderBuffer: ; c298 +; c291 + ds 1 +; c292 + ds 1 +; c293 + ds 1 +; c294 ds 1 -CurMusicChannel: ; c299 +; c295 + ds 1 +; c296 + ds 1 +; c297 ds 1 +CurMusicByte: ; c298 + ds 1 +CurChannel: ; c299 + ds 1 Volume: ; c29a ; corresponds to $ff24 ; Channel control / ON-OFF / Volume (R/W) @@ -67,27 +205,69 @@ Volume: ; c29a ; bit 3 - Vin->SO1 ON/OFF ; bit 2-0 - SO1 output level (volume) (# 0-7) ds 1 +SoundOutput: ; c29b +; corresponds to $ff25 +; bit 4-7: ch1-4 so2 on/off +; bit 0-3: ch1-4 so1 on/off + ds 1 +SoundInput: ; c29c +; corresponds to $ff26 +; bit 7: global on/off +; bit 0: ch1 on/off +; bit 1: ch2 on/off +; bit 2: ch3 on/off +; bit 3: ch4 on/off + ds 1 - ds 2 - MusicID: MusicIDLo: ; c29d ds 1 MusicIDHi: ; c29e ds 1 - MusicBank: ; c29f ds 1 - - ds 7 - -MusicLength: ; c2a7 -; fades out when counter hits this value -; $00 = infinite +NoiseSampleAddress: +NoiseSampleAddressLo: ; c2a0 + ds 1 +NoiseSampleAddressHi: ; c2a1 + ds 1 +; noise delay? ; c2a2 + ds 1 +; c2a3 + ds 1 +MusicNoiseSampleSet: ; c2a4 + ds 1 +SFXNoiseSampleSet: ; c2a5 + ds 1 +; c2a6 + ds 1 +MusicFade: ; c2a7 +; fades volume over x frames +; bit 7: fade in/out +; bit 0-5: number of frames for each volume level +; $00 = none (default) + ds 1 +MusicFadeCount: ; c2a8 + ds 1 +MusicFadeID: +MusicFadeIDLo: ; c2a9 + ds 1 +MusicFadeIDHi: ; c2aa + ds 1 + ds 9 +LastVolume: ; c2b4 +; preserves volume of a song playing so cries can have their own volume + ds 1 + ds 1 +SFXPriority: ; c2b6 +; if nonzero, turn off music when playing sfx + ds 1 + ds 6 +CryTracks ; c2bd +; plays only in left or right track depending on what side the monster is on +; both tracks active outside of battle + ds 1 ds 1 - - ds 23 - CurSFX: ; c2bf ; id of sfx currently playing ds 1 |