#ifndef SOUNDS_H
#define SOUNDS_H

// Sound Magic Definition:
// First Byte (Upper Nibble): Sound Bank (not the same as audio bank!)
// First Byte (Lower Nibble): Bitflags for audio playback?
// Second Byte: Sound ID
// Third Byte: Priority
// Fourth Byte (Upper Nibble): More bitflags
// Fourth Byte (Lower Nibble): Sound Status (this is set to SOUND_STATUS_PLAYING when passed to the audio driver.)
#define SOUND_ARG_LOAD(bank, soundID, priority, flags) (\
    ((u32) (bank) << 28) | \
    ((u32) (soundID) << 16) | \
    ((u32) (priority) << 8) | \
    (flags) | \
    SOUND_STATUS_WAITING)

#define SOUNDARGS_MASK_BANK         0xF0000000
#define SOUNDARGS_MASK_SOUNDID      0x00FF0000
#define SOUNDARGS_MASK_PRIORITY     0x0000FF00
#define SOUNDARGS_MASK_STATUS       0x0000000F

#define SOUNDARGS_SHIFT_BANK        28
#define SOUNDARGS_SHIFT_SOUNDID     16
#define SOUNDARGS_SHIFT_PRIORITY    8

/* Sound banks */
#define SOUND_BANK_ACTION     0
#define SOUND_BANK_MOVING     1
#define SOUND_BANK_VOICE      2
#define SOUND_BANK_GENERAL    3
#define SOUND_BANK_ENV        4
#define SOUND_BANK_OBJ        5
#define SOUND_BANK_AIR        6
#define SOUND_BANK_MENU       7
#define SOUND_BANK_GENERAL2   8
#define SOUND_BANK_OBJ2       9
#define SOUND_BANK_COUNT     10

#define SOUND_BANKS_ALL_BITS 0xffff
#define SOUND_BANKS_ALL ((1 << SOUND_BANK_COUNT) - 1)
#define SOUND_BANKS_FOREGROUND (\
    (1 << SOUND_BANK_ACTION) |\
    (1 << SOUND_BANK_VOICE) |\
    (1 << SOUND_BANK_MENU))
#define SOUND_BANKS_BACKGROUND (SOUND_BANKS_ALL & ~SOUND_BANKS_FOREGROUND)
#define SOUND_BANKS_DISABLED_DURING_INTRO_CUTSCENE (\
    (1 << SOUND_BANK_ENV) |\
    (1 << SOUND_BANK_OBJ) |\
    (1 << SOUND_BANK_GENERAL2) |\
    (1 << SOUND_BANK_OBJ2))
#define SOUND_BANKS_DISABLED_AFTER_CREDITS (\
    (1 << SOUND_BANK_ACTION) |\
    (1 << SOUND_BANK_MOVING) |\
    (1 << SOUND_BANK_VOICE) |\
    (1 << SOUND_BANK_GENERAL))

/* Audio playback bitflags. */
#define SOUND_NO_VOLUME_LOSS        0x1000000 // No volume loss with distance
#define SOUND_VIBRATO               0x2000000 // Randomly alter frequency each audio frame
#define SOUND_NO_PRIORITY_LOSS      0x4000000 // Do not prioritize closer sounds
#define SOUND_CONSTANT_FREQUENCY    0x8000000 // Frequency is not affected by distance or speed. If
                                              // not set, frequency will increase with distance.
                                              // For sounds in SOUND_BANK_MOVING, frequency will
                                              // further increase with speed, and volume will
                                              // decrease at slow speeds.

/* Audio lower bitflags. */
#define SOUND_LOWER_BACKGROUND_MUSIC  0x10 // Lower volume of background music while playing
#define SOUND_NO_ECHO                 0x20 // Disable level reverb. Not in JP
#define SOUND_DISCRETE                0x80 // Every call to play_sound restarts the sound. If not
                                           // set, the sound is continuous and play_sound should be
                                           // called at least every other frame to keep it playing

/* Audio Status */
#define SOUND_STATUS_STOPPED        0
#define SOUND_STATUS_WAITING        1
#define SOUND_STATUS_PLAYING        2

/**
 * Terrain types. mario_get_terrain_sound_addend computes a
 * sound terrain type between 0 and 7, depending on the terrain type of the
 * level and the floor type that Mario is standing on. That value is then added
 * to the sound ID for the TERRAIN_* sounds.
 */
#define SOUND_TERRAIN_DEFAULT   0 // e.g. air
#define SOUND_TERRAIN_GRASS     1
#define SOUND_TERRAIN_WATER     2
#define SOUND_TERRAIN_STONE     3
#define SOUND_TERRAIN_SPOOKY    4 // squeaky floor
#define SOUND_TERRAIN_SNOW      5
#define SOUND_TERRAIN_ICE       6
#define SOUND_TERRAIN_SAND      7

// silence
#define NO_SOUND                    0

/**
 * The table below defines all sounds that exist in the game, and which flags
 * they are used with. If a sound is used with multiple sets of flags (e.g.
 * different priorities), they are given distinguishing suffixes.
 * A _2 suffix means the sound is the same despite a different sound ID.
 */

/* Terrain sounds */
// Terrain-dependent moving sounds; a value 0-7 is added to the sound ID before
// playing. See higher up for the different terrain types.
#define SOUND_ACTION_TERRAIN_JUMP                /* 0x04008080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x00, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_TERRAIN_LANDING             /* 0x04088080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x08, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_TERRAIN_STEP                /* 0x06108080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x10, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_TERRAIN_BODY_HIT_GROUND     /* 0x04188080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x18, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_TERRAIN_STEP_TIPTOE         /* 0x06208080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x20, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_TERRAIN_STUCK_IN_GROUND     /* 0x04488080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x48, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_TERRAIN_HEAVY_LANDING       /* 0x04608080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x60, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

#define SOUND_ACTION_METAL_JUMP                  /* 0x04289080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x28, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_METAL_LANDING               /* 0x04299080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x29, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_METAL_STEP                  /* 0x042A9080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2A, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_METAL_HEAVY_LANDING         /* 0x042B9080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2B, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_CLAP_HANDS_COLD             /* 0x062C0080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2C, 0x00, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_HANGING_STEP                /* 0x042DA080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2D, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_QUICKSAND_STEP              /* 0x042E0080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2E, 0x00, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_METAL_STEP_TIPTOE           /* 0x042F9080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2F, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_UNKNOWN430                  /* 0x0430C080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x30, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_UNKNOWN431                  /* 0x04316080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x31, 0x60, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_UNKNOWN432                  /* 0x04328080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x32, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_SWIM                        /* 0x04338080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x33, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_UNKNOWN434                  /* 0x04348080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x34, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_THROW                       /* 0x04358080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x35, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_KEY_SWISH                   /* 0x04368080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x36, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_SPIN                        /* 0x04378080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x37, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_TWIRL                       /* 0x04388080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x38, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // same sound as spin
#define SOUND_ACTION_CLIMB_UP_TREE               /* 0x043A8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3A, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_CLIMB_DOWN_TREE             /* 0x003B0000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3B, 0x00, 0) // unverified, unused
#define SOUND_ACTION_UNK3C                       /* 0x003C0000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3C, 0x00, 0) // unverified, unused
#define SOUND_ACTION_UNKNOWN43D                  /* 0x043D8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3D, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_UNKNOWN43E                  /* 0x043E8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_PAT_BACK                    /* 0x043F8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_BRUSH_HAIR                  /* 0x04408080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x40, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_CLIMB_UP_POLE               /* 0x04418080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x41, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_METAL_BONK                  /* 0x04428080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x42, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_UNSTUCK_FROM_GROUND         /* 0x04438080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x43, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_HIT                         /* 0x0444C080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x44, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_HIT_2                       /* 0x0444B080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x44, 0xB0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_HIT_3                       /* 0x0444A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x44, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_BONK                        /* 0x0445A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x45, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_SHRINK_INTO_BBH             /* 0x0446A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x46, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_SWIM_FAST                   /* 0x0447A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x47, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_METAL_JUMP_WATER            /* 0x04509080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x50, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_METAL_LAND_WATER            /* 0x04519080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x51, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_METAL_STEP_WATER            /* 0x04529080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x52, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_UNK53                       /* 0x00530000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x53, 0x00, 0) // unverified, unused
#define SOUND_ACTION_UNK54                       /* 0x00540000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x54, 0x00, 0) // unverified, unused
#define SOUND_ACTION_UNK55                       /* 0x00550000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x55, 0x00, 0) // unverified, unused
#define SOUND_ACTION_FLYING_FAST                 /* 0x04568080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x56, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // "swoop"?, unverified
#define SOUND_ACTION_TELEPORT                    /* 0x0457C080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x57, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_UNKNOWN458                  /* 0x0458A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x58, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_BOUNCE_OFF_OBJECT           /* 0x0459B080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x59, 0xB0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_SIDE_FLIP_UNK               /* 0x045A8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5A, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_READ_SIGN                   /* 0x045BFF80 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5B, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_ACTION_UNKNOWN45C                  /* 0x045C8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5C, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_UNK5D                       /* 0x005D0000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5D, 0x00, 0) // unverified, unused
#define SOUND_ACTION_INTRO_UNK45E                /* 0x045E8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_ACTION_INTRO_UNK45F                /* 0x045F8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified

/* Moving Sound Effects */

// Terrain-dependent moving sounds; a value 0-7 is added to the sound ID before
// playing. See higher up for the different terrain types.
#define SOUND_MOVING_TERRAIN_SLIDE               /* 0x14000000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x00, 0x00, SOUND_NO_PRIORITY_LOSS)
#define SOUND_MOVING_TERRAIN_RIDING_SHELL        /* 0x14200000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x20, 0x00, SOUND_NO_PRIORITY_LOSS)

#define SOUND_MOVING_LAVA_BURN                   /* 0x14100000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x10, 0x00, SOUND_NO_PRIORITY_LOSS) // ?
#define SOUND_MOVING_SLIDE_DOWN_POLE             /* 0x14110000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x11, 0x00, SOUND_NO_PRIORITY_LOSS) // ?
#define SOUND_MOVING_SLIDE_DOWN_TREE             /* 0x14128000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x12, 0x80, SOUND_NO_PRIORITY_LOSS)
#define SOUND_MOVING_QUICKSAND_DEATH             /* 0x14140000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x14, 0x00, SOUND_NO_PRIORITY_LOSS)
#define SOUND_MOVING_SHOCKED                     /* 0x14160000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x16, 0x00, SOUND_NO_PRIORITY_LOSS)
#define SOUND_MOVING_FLYING                      /* 0x14170000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x17, 0x00, SOUND_NO_PRIORITY_LOSS)
#define SOUND_MOVING_ALMOST_DROWNING             /* 0x1C180000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x18, 0x00, SOUND_NO_PRIORITY_LOSS | SOUND_CONSTANT_FREQUENCY)
#define SOUND_MOVING_AIM_CANNON                  /* 0x1D192000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x19, 0x20, SOUND_NO_VOLUME_LOSS | SOUND_NO_PRIORITY_LOSS | SOUND_CONSTANT_FREQUENCY)
#define SOUND_MOVING_UNK1A                       /* 0x101A0000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x1A, 0x00, 0) // ?, unused
#define SOUND_MOVING_RIDING_SHELL_LAVA           /* 0x14280000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x28, 0x00, SOUND_NO_PRIORITY_LOSS)

/* Mario Sound Effects */
// A random number 0-2 is added to the sound ID before playing, producing Yah/Wah/Hoo
#define SOUND_MARIO_YAH_WAH_HOO                  /* 0x24008080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x00, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_HOOHOO                       /* 0x24038080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x03, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_YAHOO                        /* 0x24048080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x04, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_UH                           /* 0x24058080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x05, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_HRMM                         /* 0x24068080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x06, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_WAH2                         /* 0x24078080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x07, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_WHOA                         /* 0x2408C080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x08, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_EEUH                         /* 0x24098080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x09, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_ATTACKED                     /* 0x240AFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0A, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_OOOF                         /* 0x240B8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0B, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_OOOF2                        /* 0x240BD080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0B, 0xD0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_HERE_WE_GO                   /* 0x240C8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0C, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_YAWNING                      /* 0x240D8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0D, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_SNORING1                     /* 0x240E8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_SNORING2                     /* 0x240F8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_WAAAOOOW                     /* 0x2410C080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x10, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_HAHA                         /* 0x24118080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x11, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_HAHA_2                       /* 0x2411F080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x11, 0xF0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_UH2                          /* 0x2413D080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x13, 0xD0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_UH2_2                        /* 0x24138080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x13, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_ON_FIRE                      /* 0x2414A080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x14, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_DYING                        /* 0x2415FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x15, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_MARIO_PANTING_COLD                 /* 0x24168080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x16, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

// A random number 0-2 is added to the sound ID before playing
#define SOUND_MARIO_PANTING                      /* 0x24188080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x18, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

#define SOUND_MARIO_COUGHING1                    /* 0x241B8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1B, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_COUGHING2                    /* 0x241C8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1C, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_COUGHING3                    /* 0x241D8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1D, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_PUNCH_YAH                    /* 0x241E8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_PUNCH_HOO                    /* 0x241F8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_MAMA_MIA                     /* 0x24208080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x20, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_OKEY_DOKEY                   /* 0x20210000 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x21, 0x00, 0) // unused
#define SOUND_MARIO_GROUND_POUND_WAH             /* 0x24228080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x22, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_DROWNING                     /* 0x2423F080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x23, 0xF0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_PUNCH_WAH                    /* 0x24248080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x24, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

/* Mario Sound Effects (US/EU only) */
#define SOUND_PEACH_DEAR_MARIO                   /* 0x2428FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x28, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

// A random number 0-4 is added to the sound ID before playing, producing one of
// Yahoo! (60% chance), Waha! (20%), or Yippee! (20%).
#define SOUND_MARIO_YAHOO_WAHA_YIPPEE            /* 0x242B8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x2B, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

#define SOUND_MARIO_DOH                          /* 0x24308080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x30, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_GAME_OVER                    /* 0x2431FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x31, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_HELLO                        /* 0x2432FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x32, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_PRESS_START_TO_PLAY          /* 0x2433FFA0 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x33, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_NO_ECHO | SOUND_DISCRETE)
#define SOUND_MARIO_TWIRL_BOUNCE                 /* 0x24348080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x34, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_SNORING3                     /* 0x2435FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x35, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_SO_LONGA_BOWSER              /* 0x24368080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x36, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_MARIO_IMA_TIRED                    /* 0x24378080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x37, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

/* Princess Peach Sound Effects (US/EU only) */
#define SOUND_PEACH_MARIO                        /* 0x2438FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x38, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_PEACH_POWER_OF_THE_STARS           /* 0x2439FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x39, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_PEACH_THANKS_TO_YOU                /* 0x243AFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3A, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_PEACH_THANK_YOU_MARIO              /* 0x243BFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3B, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_PEACH_SOMETHING_SPECIAL            /* 0x243CFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3C, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_PEACH_BAKE_A_CAKE                  /* 0x243DFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3D, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_PEACH_FOR_MARIO                    /* 0x243EFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3E, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)
#define SOUND_PEACH_MARIO2                       /* 0x243FFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3F, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)

/* General Sound Effects */
#define SOUND_GENERAL_ACTIVATE_CAP_SWITCH        /* 0x30008080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x00, 0x80, SOUND_DISCRETE)
#define SOUND_GENERAL_FLAME_OUT                  /* 0x30038080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x03, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_OPEN_WOOD_DOOR             /* 0x3004C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x04, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_CLOSE_WOOD_DOOR            /* 0x3005C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x05, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_OPEN_IRON_DOOR             /* 0x3006C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x06, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_CLOSE_IRON_DOOR            /* 0x3007C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x07, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BUBBLES                    /* 0x30080000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x08, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_MOVING_WATER               /* 0x30090080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x09, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_SWISH_WATER                /* 0x300A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0A, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_QUIET_BUBBLE               /* 0x300B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0B, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_VOLCANO_EXPLOSION          /* 0x300C8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0C, 0x80, SOUND_DISCRETE)
#define SOUND_GENERAL_QUIET_BUBBLE2              /* 0x300D0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0D, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_CASTLE_TRAP_OPEN           /* 0x300E8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0E, 0x80, SOUND_DISCRETE)
#define SOUND_GENERAL_WALL_EXPLOSION             /* 0x300F0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0F, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL_COIN                       /* 0x38118080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x11, 0x80, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_COIN_WATER                 /* 0x38128080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x12, 0x80, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_SHORT_STAR                 /* 0x30160090 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x16, 0x00, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BIG_CLOCK                  /* 0x30170080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x17, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_LOUD_POUND                 /* 0x30180000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x18, 0x00, 0) // _TERRAIN?, unverified, unused
#define SOUND_GENERAL_LOUD_POUND2                /* 0x30190000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x19, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_SHORT_POUND1               /* 0x301A0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1A, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_SHORT_POUND2               /* 0x301B0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1B, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_SHORT_POUND3               /* 0x301C0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1C, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_SHORT_POUND4               /* 0x301D0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1D, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_SHORT_POUND5               /* 0x301E0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1E, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_SHORT_POUND6               /* 0x301F0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1F, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_OPEN_CHEST                 /* 0x31208080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x20, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#define SOUND_GENERAL_CLAM_SHELL1                /* 0x31228080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x22, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOX_LANDING                /* 0x30240080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x24, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOX_LANDING_2              /* 0x32240080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x24, 0x00, SOUND_VIBRATO | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_UNKNOWN1                   /* 0x30250080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x25, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_UNKNOWN1_2                 /* 0x32250080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x25, 0x00, SOUND_VIBRATO | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_CLAM_SHELL2                /* 0x30264080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x26, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_CLAM_SHELL3                /* 0x30274080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x27, 0x40, SOUND_DISCRETE) // unverified
#ifdef VERSION_JP
#define SOUND_GENERAL_PAINTING_EJECT             /* 0x38280080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x28, 0x00, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE)
#else
#define SOUND_GENERAL_PAINTING_EJECT             /* 0x39280080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x28, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE)
#endif
#define SOUND_GENERAL_LEVEL_SELECT_CHANGE        /* 0x302B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2B, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL_PLATFORM                   /* 0x302D8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2D, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_DONUT_PLATFORM_EXPLOSION   /* 0x302E2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2E, 0x20, SOUND_DISCRETE)
#define SOUND_GENERAL_BOWSER_BOMB_EXPLOSION      /* 0x312F0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2F, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#if defined(VERSION_JP)
#define SOUND_GENERAL_COIN_SPURT                 /* 0x30300080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x30, 0x00, SOUND_DISCRETE) // unverified
#elif defined(VERSION_US)
#define SOUND_GENERAL_COIN_SPURT                 /* 0x38300080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x30, 0x00, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified
#else
#define SOUND_GENERAL_COIN_SPURT                 /* 0x38302080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x30, 0x20, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified
#endif
#define SOUND_GENERAL_EXPLOSION6                 /* 0x30310000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x31, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_UNK32                      /* 0x30320000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x32, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_BOAT_TILT1                 /* 0x30344080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x34, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOAT_TILT2                 /* 0x30354080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x35, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_COIN_DROP                  /* 0x30364080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x36, 0x40, SOUND_DISCRETE) // unverified
#ifdef VERSION_JP
#define SOUND_GENERAL_UNKNOWN3                   /* 0x30370080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x37, 0x00, SOUND_DISCRETE) // unverified
#else
#define SOUND_GENERAL_UNKNOWN3                   /* 0x38378080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x37, 0x80, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified
#endif
#define SOUND_GENERAL_PENDULUM_SWING             /* 0x30380080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x38, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL_CHAIN_CHOMP1               /* 0x30390080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x39, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_CHAIN_CHOMP2               /* 0x303A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3A, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_DOOR_TURN_KEY              /* 0x303B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3B, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL_MOVING_IN_SAND             /* 0x303C0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3C, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_UNKNOWN4_LOWPRIO           /* 0x303D0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3D, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_UNKNOWN4                   /* 0x303D8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3D, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_MOVING_PLATFORM_SWITCH     /* 0x303E0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3E, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL_CAGE_OPEN                  /* 0x303FA080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3F, 0xA0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_QUIET_POUND1_LOWPRIO       /* 0x30400080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x40, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_QUIET_POUND1               /* 0x30404080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x40, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BREAK_BOX                  /* 0x3041C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x41, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_DOOR_INSERT_KEY            /* 0x30420080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x42, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL_QUIET_POUND2               /* 0x30430080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x43, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BIG_POUND                  /* 0x30440080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x44, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_UNK45                      /* 0x30450080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x45, 0x00, SOUND_DISCRETE) // unverified
#ifdef VERSION_JP
#define SOUND_GENERAL_UNK46                      /* 0x30460080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x46, 0x00, SOUND_DISCRETE) // unverified
#else
#define SOUND_GENERAL_UNK46                      /* 0x30468080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x46, 0x80, SOUND_DISCRETE) // unverified
#endif
#define SOUND_GENERAL_CANNON_UP                  /* 0x30478080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x47, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_GRINDEL_ROLL               /* 0x30480080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x48, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_EXPLOSION7                 /* 0x30490000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x49, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_SHAKE_COFFIN               /* 0x304A0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4A, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_RACE_GUN_SHOT              /* 0x314D4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4D, 0x40, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_STAR_DOOR_OPEN             /* 0x304EC080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4E, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_STAR_DOOR_CLOSE            /* 0x304FC080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4F, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_POUND_ROCK                 /* 0x30560080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x56, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_STAR_APPEARS               /* 0x3057FF90 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x57, 0xFF, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_COLLECT_1UP                /* 0x3058FF80 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x58, 0xFF, SOUND_DISCRETE)
#define SOUND_GENERAL_BUTTON_PRESS_LOWPRIO       /* 0x305A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BUTTON_PRESS               /* 0x305A4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BUTTON_PRESS_2_LOWPRIO     /* 0x315A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BUTTON_PRESS_2             /* 0x315A4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x40, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_ELEVATOR_MOVE              /* 0x305B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5B, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_ELEVATOR_MOVE_2            /* 0x315B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5B, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_SWISH_AIR                  /* 0x305C0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5C, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_SWISH_AIR_2                /* 0x315C0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5C, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_HAUNTED_CHAIR              /* 0x305D0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5D, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_SOFT_LANDING               /* 0x305E0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5E, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_HAUNTED_CHAIR_MOVE         /* 0x305F0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5F, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOWSER_PLATFORM            /* 0x30628080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x62, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOWSER_PLATFORM_2          /* 0x31628080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x62, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_HEART_SPIN                 /* 0x3064C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x64, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_POUND_WOOD_POST            /* 0x3065C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x65, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_WATER_LEVEL_TRIG           /* 0x30668080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x66, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_SWITCH_DOOR_OPEN           /* 0x3067A080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x67, 0xA0, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_RED_COIN                   /* 0x30689080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x68, 0x90, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BIRDS_FLY_AWAY             /* 0x30690080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x69, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_METAL_POUND                /* 0x306B8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6B, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOING1                     /* 0x306C4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6C, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOING2_LOWPRIO             /* 0x306D2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6D, 0x20, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOING2                     /* 0x306D4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6D, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_YOSHI_WALK                 /* 0x306E2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6E, 0x20, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_ENEMY_ALERT1               /* 0x306F3080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6F, 0x30, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_YOSHI_TALK                 /* 0x30703080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x70, 0x30, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_SPLATTERING                /* 0x30713080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x71, 0x30, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOING3                     /* 0x30720000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x72, 0x00, 0) // unverified, unused
#define SOUND_GENERAL_GRAND_STAR                 /* 0x30730080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x73, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_GRAND_STAR_JUMP            /* 0x30740080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x74, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_BOAT_ROCK                  /* 0x30750080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x75, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_GENERAL_VANISH_SFX                 /* 0x30762080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x76, 0x20, SOUND_DISCRETE) // unverified

/* Environment Sound Effects */
#define SOUND_ENV_WATERFALL1                     /* 0x40000000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x00, 0x00, 0) // unverified
#define SOUND_ENV_WATERFALL2                     /* 0x40010000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x01, 0x00, 0) // unverified
#define SOUND_ENV_ELEVATOR1                      /* 0x40020000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x02, 0x00, 0) // unverified
#define SOUND_ENV_DRONING1                       /* 0x41030000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x03, 0x00, SOUND_NO_VOLUME_LOSS) // unverified
#define SOUND_ENV_DRONING2                       /* 0x40040000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x04, 0x00, 0) // unverified
#define SOUND_ENV_WIND1                          /* 0x40050000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x05, 0x00, 0) // unverified
#define SOUND_ENV_MOVING_SAND_SNOW               /* 0x40060000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x06, 0x00, 0) // unverified, unused
#define SOUND_ENV_UNK07                          /* 0x40070000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x07, 0x00, 0) // unverified, unused
#define SOUND_ENV_ELEVATOR2                      /* 0x40080000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x08, 0x00, 0) // unverified
#define SOUND_ENV_WATER                          /* 0x40090000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x09, 0x00, 0) // unverified
#define SOUND_ENV_UNKNOWN2                       /* 0x400A0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0A, 0x00, 0) // unverified
#define SOUND_ENV_BOAT_ROCKING1                  /* 0x400B0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0B, 0x00, 0) // unverified
#define SOUND_ENV_ELEVATOR3                      /* 0x400C0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0C, 0x00, 0) // unverified
#define SOUND_ENV_ELEVATOR4                      /* 0x400D0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0D, 0x00, 0) // unverified
#define SOUND_ENV_ELEVATOR4_2                    /* 0x410D0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0D, 0x00, SOUND_NO_VOLUME_LOSS) // unverified
#define SOUND_ENV_MOVINGSAND                     /* 0x400E0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0E, 0x00, 0) // unverified
#define SOUND_ENV_MERRY_GO_ROUND_CREAKING        /* 0x400F4000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0F, 0x40, 0) // unverified
#define SOUND_ENV_WIND2                          /* 0x40108000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x10, 0x80, 0) // unverified
#define SOUND_ENV_UNK12                          /* 0x40120000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x12, 0x00, 0) // unverified, unused
#define SOUND_ENV_SLIDING                        /* 0x40130000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x13, 0x00, 0) // unverified
#define SOUND_ENV_STAR                           /* 0x40140010 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x14, 0x00, SOUND_LOWER_BACKGROUND_MUSIC) // unverified
#define SOUND_ENV_MOVING_BIG_PLATFORM            /* 0x41150000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x15, 0x00, SOUND_NO_VOLUME_LOSS) // unverified
#define SOUND_ENV_WATER_DRAIN                    /* 0x41160000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x16, 0x00, SOUND_NO_VOLUME_LOSS) // unverified
#define SOUND_ENV_METAL_BOX_PUSH                 /* 0x40178000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x17, 0x80, 0) // unverified
#define SOUND_ENV_SINK_QUICKSAND                 /* 0x40188000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x18, 0x80, 0) // unverified

/* Object Sound Effects */
#define SOUND_OBJ_SUSHI_SHARK_WATER_SOUND        /* 0x50008080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x00, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_MRI_SHOOT                      /* 0x50010080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x01, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BABY_PENGUIN_WALK              /* 0x50020080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x02, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BOWSER_WALK                    /* 0x50030080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x03, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BOWSER_TAIL_PICKUP             /* 0x50050080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x05, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BOWSER_DEFEATED                /* 0x50060080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x06, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BOWSER_SPINNING                /* 0x50070080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x07, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BOWSER_INHALING                /* 0x50080080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x08, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BIG_PENGUIN_WALK               /* 0x50098080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x09, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_BOO_BOUNCE_TOP                 /* 0x500A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0A, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BOO_LAUGH_SHORT                /* 0x500B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0B, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_THWOMP                         /* 0x500CA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0C, 0xA0, SOUND_DISCRETE)
#define SOUND_OBJ_CANNON1                        /* 0x500DF080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0D, 0xF0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_CANNON2                        /* 0x500EF080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0E, 0xF0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_CANNON3                        /* 0x500FF080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0F, 0xF0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_JUMP_WALK_WATER                /* 0x50120000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x12, 0x00, 0) // unverified, unused
#define SOUND_OBJ_UNKNOWN2                       /* 0x50130080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x13, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_MRI_DEATH                      /* 0x50140080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x14, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_POUNDING1                      /* 0x50155080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x15, 0x50, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_POUNDING1_HIGHPRIO             /* 0x50158080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x15, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_WHOMP                          /* 0x50166080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x16, 0x60, SOUND_DISCRETE)
#define SOUND_OBJ_KING_BOBOMB                    /* 0x50168080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x16, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_BULLY_METAL                    /* 0x50178080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x17, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_BULLY_EXPLODE                  /* 0x5018A080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x18, 0xA0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_BULLY_EXPLODE_2                /* 0x5118A080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x18, 0xA0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified
#define SOUND_OBJ_POUNDING_CANNON                /* 0x501A5080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1A, 0x50, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_BULLY_WALK                     /* 0x501B3080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1B, 0x30, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_UNKNOWN3                       /* 0x501D8080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1D, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_UNKNOWN4                       /* 0x501EA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1E, 0xA0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_BABY_PENGUIN_DIVE              /* 0x501F4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1F, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ_GOOMBA_WALK                    /* 0x50200080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x20, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_UKIKI_CHATTER_LONG             /* 0x50210080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x21, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_MONTY_MOLE_ATTACK              /* 0x50220080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x22, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_EVIL_LAKITU_THROW              /* 0x50222080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x22, 0x20, SOUND_DISCRETE)
#define SOUND_OBJ_UNK23                          /* 0x50230000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x23, 0x00, 0) // unverified, unused
#define SOUND_OBJ_DYING_ENEMY1                   /* 0x50244080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x24, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ_CANNON4                        /* 0x50254080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x25, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_DYING_ENEMY2                   /* 0x50260000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x26, 0x00, 0) // unverified, unused
#define SOUND_OBJ_BOBOMB_WALK                    /* 0x50270080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x27, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_SOMETHING_LANDING              /* 0x50288080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x28, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_DIVING_IN_WATER                /* 0x5029A080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x29, 0xA0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_SNOW_SAND1                     /* 0x502A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2A, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_SNOW_SAND2                     /* 0x502B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2B, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_DEFAULT_DEATH                  /* 0x502C8080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2C, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_BIG_PENGUIN_YELL               /* 0x502D0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2D, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_WATER_BOMB_BOUNCING            /* 0x502E8080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2E, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_GOOMBA_ALERT                   /* 0x502F0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2F, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_WIGGLER_JUMP                   /* 0x502F6080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2F, 0x60, SOUND_DISCRETE)
#define SOUND_OBJ_STOMPED                        /* 0x50308080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x30, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_UNKNOWN6                       /* 0x50310080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x31, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_DIVING_INTO_WATER              /* 0x50324080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x32, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_PIRANHA_PLANT_SHRINK           /* 0x50334080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x33, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ_KOOPA_THE_QUICK_WALK           /* 0x50342080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x34, 0x20, SOUND_DISCRETE)
#define SOUND_OBJ_KOOPA_WALK                     /* 0x50350080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x35, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_BULLY_WALKING                  /* 0x50366080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x36, 0x60, SOUND_DISCRETE)
#define SOUND_OBJ_DORRIE                         /* 0x50376080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x37, 0x60, SOUND_DISCRETE)
#define SOUND_OBJ_BOWSER_LAUGH                   /* 0x50388080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x38, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_UKIKI_CHATTER_SHORT            /* 0x50390080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x39, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_UKIKI_CHATTER_IDLE             /* 0x503A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3A, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_UKIKI_STEP_DEFAULT             /* 0x503B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3B, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_UKIKI_STEP_LEAVES              /* 0x503C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3C, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_KOOPA_TALK                     /* 0x503DA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3D, 0xA0, SOUND_DISCRETE)
#define SOUND_OBJ_KOOPA_DAMAGE                   /* 0x503EA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3E, 0xA0, SOUND_DISCRETE)
#define SOUND_OBJ_KLEPTO1                        /* 0x503F4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3F, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_KLEPTO2                        /* 0x50406080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x40, 0x60, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_KING_BOBOMB_TALK               /* 0x50410080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x41, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_KING_BOBOMB_JUMP               /* 0x50468080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x46, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_KING_WHOMP_DEATH               /* 0x5147C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x47, 0xC0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#define SOUND_OBJ_BOO_LAUGH_LONG                 /* 0x50480080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x48, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_EEL                            /* 0x504A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4A, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_EEL_2                          /* 0x524A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4A, 0x00, SOUND_VIBRATO | SOUND_DISCRETE) // unverified
#define SOUND_OBJ_EYEROK_SHOW_EYE                /* 0x524B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4B, 0x00, SOUND_VIBRATO | SOUND_DISCRETE)
#define SOUND_OBJ_MR_BLIZZARD_ALERT              /* 0x504C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4C, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_SNUFIT_SHOOT                   /* 0x504D0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4D, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_SKEETER_WALK                   /* 0x504E0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4E, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_WALKING_WATER                  /* 0x504F0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4F, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_BIRD_CHIRP3                    /* 0x50514000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x51, 0x40, 0)
#define SOUND_OBJ_PIRANHA_PLANT_APPEAR           /* 0x50542080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x54, 0x20, SOUND_DISCRETE)
#define SOUND_OBJ_FLAME_BLOWN                    /* 0x50558080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x55, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ_MAD_PIANO_CHOMPING             /* 0x52564080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x56, 0x40, SOUND_VIBRATO | SOUND_DISCRETE)
#define SOUND_OBJ_BOBOMB_BUDDY_TALK              /* 0x50584080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x58, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ_SPINY_UNK59                    /* 0x50591080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x59, 0x10, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_WIGGLER_HIGH_PITCH             /* 0x505C4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5C, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ_HEAVEHO_TOSSED                 /* 0x505D4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5D, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ_WIGGLER_DEATH                  /* 0x505E0000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5E, 0x00, 0) // unverified, unused
#define SOUND_OBJ_BOWSER_INTRO_LAUGH             /* 0x505F8090 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5F, 0x80, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE)
#define SOUND_OBJ_ENEMY_DEATH_HIGH               /* 0x5060B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x60, 0xB0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_ENEMY_DEATH_LOW                /* 0x5061B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x61, 0xB0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_SWOOP_DEATH                    /* 0x5062B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x62, 0xB0, SOUND_DISCRETE)
#define SOUND_OBJ_KOOPA_FLYGUY_DEATH             /* 0x5063B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x63, 0xB0, SOUND_DISCRETE)
#define SOUND_OBJ_POKEY_DEATH                    /* 0x5063C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x63, 0xC0, SOUND_DISCRETE)
#define SOUND_OBJ_SNOWMAN_BOUNCE                 /* 0x5064C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x64, 0xC0, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_SNOWMAN_EXPLODE                /* 0x5065D080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x65, 0xD0, SOUND_DISCRETE)
#define SOUND_OBJ_POUNDING_LOUD                  /* 0x50684080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x68, 0x40, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_MIPS_RABBIT                    /* 0x506A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6A, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_MIPS_RABBIT_WATER              /* 0x506C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6C, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_OBJ_EYEROK_EXPLODE                 /* 0x506D0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6D, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_CHUCKYA_DEATH                  /* 0x516E0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6E, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#define SOUND_OBJ_WIGGLER_TALK                   /* 0x506F0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6F, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ_WIGGLER_ATTACKED               /* 0x50706080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x70, 0x60, SOUND_DISCRETE)
#define SOUND_OBJ_WIGGLER_LOW_PITCH              /* 0x50712080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x71, 0x20, SOUND_DISCRETE)
#define SOUND_OBJ_SNUFIT_SKEETER_DEATH           /* 0x5072C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x72, 0xC0, SOUND_DISCRETE)
#define SOUND_OBJ_BUBBA_CHOMP                    /* 0x50734080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x73, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ_ENEMY_DEFEAT_SHRINK            /* 0x50744080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x74, 0x40, SOUND_DISCRETE)

#define SOUND_AIR_BOWSER_SPIT_FIRE               /* 0x60000000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x00, 0x00, 0)
#define SOUND_AIR_UNK01                          /* 0x60010000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x01, 0x00, 0) // ?, unused
#define SOUND_AIR_LAKITU_FLY                     /* 0x60028000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x02, 0x80, 0)
#define SOUND_AIR_LAKITU_FLY_HIGHPRIO            /* 0x6002FF00 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x02, 0xFF, 0)
#define SOUND_AIR_AMP_BUZZ                       /* 0x60034000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x03, 0x40, 0)
#define SOUND_AIR_BLOW_FIRE                      /* 0x60048000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x04, 0x80, 0)
#define SOUND_AIR_BLOW_WIND                      /* 0x60044000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x04, 0x40, 0)
#define SOUND_AIR_ROUGH_SLIDE                    /* 0x60050000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x05, 0x00, 0)
#define SOUND_AIR_HEAVEHO_MOVE                   /* 0x60064000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x06, 0x40, 0)
#define SOUND_AIR_UNK07                          /* 0x60070000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x07, 0x00, 0) // ?, unused
#define SOUND_AIR_BOBOMB_LIT_FUSE                /* 0x60086000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x08, 0x60, 0)
#define SOUND_AIR_HOWLING_WIND                   /* 0x60098000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x09, 0x80, 0)
#define SOUND_AIR_CHUCKYA_MOVE                   /* 0x600A4000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x0A, 0x40, 0)
#define SOUND_AIR_PEACH_TWINKLE                  /* 0x600B4000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x0B, 0x40, 0)
#define SOUND_AIR_CASTLE_OUTDOORS_AMBIENT        /* 0x60104000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x10, 0x40, 0)

/* Menu Sound Effects */
#define SOUND_MENU_CHANGE_SELECT                 /* 0x7000F880 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x00, 0xF8, SOUND_DISCRETE)
#define SOUND_MENU_REVERSE_PAUSE                 /* 0x70010000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x01, 0x00, 0) // unverified, unused
#ifdef VERSION_JP
#define SOUND_MENU_PAUSE                         /* 0x7002F080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x02, 0xF0, SOUND_DISCRETE)
#else
#define SOUND_MENU_PAUSE                         /* 0x7002FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x02, 0xFF, SOUND_DISCRETE)
#endif
#define SOUND_MENU_PAUSE_2                       /* 0x7003FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x03, 0xFF, SOUND_DISCRETE)
#define SOUND_MENU_MESSAGE_APPEAR                /* 0x70040080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x04, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_MESSAGE_DISAPPEAR             /* 0x70050080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x05, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_CAMERA_ZOOM_IN                /* 0x70060080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x06, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_CAMERA_ZOOM_OUT               /* 0x70070080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x07, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_PINCH_MARIO_FACE              /* 0x70080080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x08, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_LET_GO_MARIO_FACE             /* 0x70090080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x09, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_HAND_APPEAR                   /* 0x700A0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0A, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_HAND_DISAPPEAR                /* 0x700B0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0B, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_UNK0C                         /* 0x700C0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0C, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_MENU_POWER_METER                   /* 0x700D0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0D, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_MENU_CAMERA_BUZZ                   /* 0x700E0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0E, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_CAMERA_TURN                   /* 0x700F0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0F, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_UNK10                         /* 0x70100000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x10, 0x00, 0) // unverified, unused
#define SOUND_MENU_CLICK_FILE_SELECT             /* 0x70110080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x11, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_MESSAGE_NEXT_PAGE             /* 0x70130080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x13, 0x00, SOUND_DISCRETE) // unverified
#define SOUND_MENU_COIN_ITS_A_ME_MARIO           /* 0x70140080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x14, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_YOSHI_GAIN_LIVES              /* 0x70150080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x15, 0x00, SOUND_DISCRETE)
#define SOUND_MENU_ENTER_PIPE                    /* 0x7016A080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x16, 0xA0, SOUND_DISCRETE)
#define SOUND_MENU_EXIT_PIPE                     /* 0x7017A080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x17, 0xA0, SOUND_DISCRETE)
#define SOUND_MENU_BOWSER_LAUGH                  /* 0x70188080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x18, 0x80, SOUND_DISCRETE)
#define SOUND_MENU_ENTER_HOLE                    /* 0x71198080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x19, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#define SOUND_MENU_CLICK_CHANGE_VIEW             /* 0x701A8080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1A, 0x80, SOUND_DISCRETE) // unverified
#define SOUND_MENU_CAMERA_UNUSED1                /* 0x701B0000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1B, 0x00, 0) // unverified, unused
#define SOUND_MENU_CAMERA_UNUSED2                /* 0x701C0000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1C, 0x00, 0) // unverified, unused
#define SOUND_MENU_MARIO_CASTLE_WARP             /* 0x701DB080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1D, 0xB0, SOUND_DISCRETE) // unverified
#define SOUND_MENU_STAR_SOUND                    /* 0x701EFF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1E, 0xFF, SOUND_DISCRETE)
#define SOUND_MENU_THANK_YOU_PLAYING_MY_GAME     /* 0x701FFF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1F, 0xFF, SOUND_DISCRETE)
#define SOUND_MENU_READ_A_SIGN                   /* 0x70200000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x20, 0x00, 0) // unverified, unused
#define SOUND_MENU_EXIT_A_SIGN                   /* 0x70210000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x21, 0x00, 0) // unverified, unused
#define SOUND_MENU_MARIO_CASTLE_WARP2            /* 0x70222080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x22, 0x20, SOUND_DISCRETE) // unverified
#define SOUND_MENU_STAR_SOUND_OKEY_DOKEY         /* 0x7023FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x23, 0xFF, SOUND_DISCRETE)
#define SOUND_MENU_STAR_SOUND_LETS_A_GO          /* 0x7024FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x24, 0xFF, SOUND_DISCRETE)

// US/EU only; an index between 0-7 or 0-4 is added to the sound ID before
// playing, producing the same sound with different pitch.
#define SOUND_MENU_COLLECT_RED_COIN              /* 0x78289080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x28, 0x90, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE)
#define SOUND_MENU_COLLECT_SECRET                /* 0x70302080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x30, 0x20, SOUND_DISCRETE)

// Channel 8 loads sounds from the same place as channel 3, making it possible
// to play two channel 3 sounds at once (since just one sound from each channel
// can play at a given time).
#define SOUND_GENERAL2_BOBOMB_EXPLOSION          /* 0x802E2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x2E, 0x20, SOUND_DISCRETE)
#define SOUND_GENERAL2_PURPLE_SWITCH             /* 0x803EC080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x3E, 0xC0, SOUND_DISCRETE)
#define SOUND_GENERAL2_ROTATING_BLOCK_CLICK      /* 0x80400080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x40, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL2_SPINDEL_ROLL              /* 0x80482080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x48, 0x20, SOUND_DISCRETE)
#define SOUND_GENERAL2_PYRAMID_TOP_SPIN          /* 0x814BE080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x4B, 0xE0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#define SOUND_GENERAL2_PYRAMID_TOP_EXPLOSION     /* 0x814CF080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x4C, 0xF0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#define SOUND_GENERAL2_BIRD_CHIRP2               /* 0x80504000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x50, 0x40, 0)
#define SOUND_GENERAL2_SWITCH_TICK_FAST          /* 0x8054F010 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x54, 0xF0, SOUND_LOWER_BACKGROUND_MUSIC)
#define SOUND_GENERAL2_SWITCH_TICK_SLOW          /* 0x8055F010 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x55, 0xF0, SOUND_LOWER_BACKGROUND_MUSIC)
#define SOUND_GENERAL2_STAR_APPEARS              /* 0x8057FF90 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x57, 0xFF, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE)
#define SOUND_GENERAL2_ROTATING_BLOCK_ALERT      /* 0x80590080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x59, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL2_BOWSER_EXPLODE            /* 0x80600080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x60, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL2_BOWSER_KEY                /* 0x80610080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x61, 0x00, SOUND_DISCRETE)
#define SOUND_GENERAL2_1UP_APPEAR                /* 0x8063D080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x63, 0xD0, SOUND_DISCRETE)
#define SOUND_GENERAL2_RIGHT_ANSWER              /* 0x806AA080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x6A, 0xA0, SOUND_DISCRETE)

// Channel 9 loads sounds from the same place as channel 5.
#define SOUND_OBJ2_BOWSER_ROAR                   /* 0x90040080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x04, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ2_PIRANHA_PLANT_BITE            /* 0x90105080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x10, 0x50, SOUND_DISCRETE)
#define SOUND_OBJ2_PIRANHA_PLANT_DYING           /* 0x90116080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x11, 0x60, SOUND_DISCRETE)
#define SOUND_OBJ2_BOWSER_PUZZLE_PIECE_MOVE      /* 0x90192080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x19, 0x20, SOUND_DISCRETE)
#define SOUND_OBJ2_BULLY_ATTACKED                /* 0x901C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x1C, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ2_KING_BOBOMB_DAMAGE            /* 0x91424080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x42, 0x40, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)
#define SOUND_OBJ2_SCUTTLEBUG_WALK               /* 0x90434080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x43, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ2_SCUTTLEBUG_ALERT              /* 0x90444080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x44, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ2_BABY_PENGUIN_YELL             /* 0x90450080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x45, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ2_SWOOP                         /* 0x90490080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x49, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ2_BIRD_CHIRP1                   /* 0x90524000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x52, 0x40, 0)
#define SOUND_OBJ2_LARGE_BULLY_ATTACKED          /* 0x90570080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x57, 0x00, SOUND_DISCRETE)
#define SOUND_OBJ2_EYEROK_SOUND_SHORT            /* 0x935A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x5A, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_VIBRATO | SOUND_DISCRETE)
#define SOUND_OBJ2_WHOMP_SOUND_SHORT             /* 0x935AC080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x5A, 0xC0, SOUND_NO_VOLUME_LOSS | SOUND_VIBRATO | SOUND_DISCRETE)
#define SOUND_OBJ2_EYEROK_SOUND_LONG             /* 0x925B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x5B, 0x00, SOUND_VIBRATO | SOUND_DISCRETE)
#define SOUND_OBJ2_BOWSER_TELEPORT               /* 0x90668080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x66, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ2_MONTY_MOLE_APPEAR             /* 0x90678080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x67, 0x80, SOUND_DISCRETE)
#define SOUND_OBJ2_BOSS_DIALOG_GRUNT             /* 0x90694080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x69, 0x40, SOUND_DISCRETE)
#define SOUND_OBJ2_MRI_SPINNING                  /* 0x906B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x6B, 0x00, SOUND_DISCRETE)

#endif // SOUNDS_H
