diff options
author | Bad Diode <bd@badd10de.dev> | 2023-04-03 12:29:48 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-04-03 12:29:48 +0200 |
commit | d96f6da677bc319f7868e832f09948c94ee6a148 (patch) | |
tree | d22dc99df5a1fb4f4b9c24b9d43aeb85fef4a283 /src/gba/gba.h | |
parent | 4a4e0f5d55caa5c56929f8505a6722eb1423e73f (diff) | |
download | stepper-d96f6da677bc319f7868e832f09948c94ee6a148.tar.gz stepper-d96f6da677bc319f7868e832f09948c94ee6a148.zip |
Add noise channel with note support
Diffstat (limited to 'src/gba/gba.h')
-rw-r--r-- | src/gba/gba.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gba/gba.h b/src/gba/gba.h index cdb3b31..b02d745 100644 --- a/src/gba/gba.h +++ b/src/gba/gba.h | |||
@@ -558,7 +558,7 @@ sound_volume(SoundChannel channels, u8 volume) { | |||
558 | #define SOUND_SWEEP_DIR(N) ((N) << 0x3) | 558 | #define SOUND_SWEEP_DIR(N) ((N) << 0x3) |
559 | #define SOUND_SWEEP_TIME(N) ((N) << 0x4) | 559 | #define SOUND_SWEEP_TIME(N) ((N) << 0x4) |
560 | 560 | ||
561 | // DMG frequency bits (Square/Wave). | 561 | // DMG frequency bits (Square/Wave/NOISE). |
562 | #define SOUND_FREQ_TIMED (1 << 0xE) | 562 | #define SOUND_FREQ_TIMED (1 << 0xE) |
563 | #define SOUND_FREQ_RESET (1 << 0xF) | 563 | #define SOUND_FREQ_RESET (1 << 0xF) |
564 | 564 | ||
@@ -585,6 +585,18 @@ typedef u8 WaveBank[32]; | |||
585 | 585 | ||
586 | #define SOUND_WAVE_RAM ((WaveBank*)(MEM_IO + 0x90)) | 586 | #define SOUND_WAVE_RAM ((WaveBank*)(MEM_IO + 0x90)) |
587 | 587 | ||
588 | // DMG noise control bits. | ||
589 | #define SOUND_NOISE_LENGTH(N) (((N) & 0x3F) << 0) | ||
590 | #define SOUND_NOISE_ENV_TIME(N) (((N) & 0x07) << 0x8) | ||
591 | #define SOUND_NOISE_ENV_DIR(N) (((N) & 0x01) << 0xB) | ||
592 | #define SOUND_NOISE_ENV_VOL(N) (((N) & 0x0F) << 0xC) | ||
593 | |||
594 | // DMG noise freq bits. | ||
595 | #define SOUND_NOISE_DIV_FREQ(N) (((N) & 0x07) << 0) | ||
596 | #define SOUND_NOISE_COUNTER_STAGE(N) (((N) & 0x01) << 0x3) | ||
597 | #define SOUND_NOISE_PRESTEP_FREQ(N) (((N) & 0x0F) << 0x4) | ||
598 | #define SOUND_NOISE_TIMED_MODE(N) (((N) & 0x01) << 0xe) | ||
599 | |||
588 | typedef enum { | 600 | typedef enum { |
589 | NOTE_C_2 , NOTE_C_SHARP_2 , NOTE_D_2 , NOTE_D_SHARP_2 , | 601 | NOTE_C_2 , NOTE_C_SHARP_2 , NOTE_D_2 , NOTE_D_SHARP_2 , |
590 | NOTE_E_2 , NOTE_F_2 , NOTE_F_SHARP_2 , NOTE_G_2 , | 602 | NOTE_E_2 , NOTE_F_2 , NOTE_F_SHARP_2 , NOTE_G_2 , |