summaryrefslogtreecommitdiff
path: root/wram.asm
diff options
context:
space:
mode:
Diffstat (limited to 'wram.asm')
-rw-r--r--wram.asm258
1 files changed, 219 insertions, 39 deletions
diff --git a/wram.asm b/wram.asm
index 7eb8d7044..dd77a3d23 100644
--- a/wram.asm
+++ b/wram.asm
@@ -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