; HW sound channel register base addresses HW_CH1_BASE EQU (rNR10 % $100) HW_CH2_BASE EQU ((rNR21 % $100) - 1) HW_CH3_BASE EQU (rNR30 % $100) HW_CH4_BASE EQU ((rNR41 % $100) - 1) ; HW sound channel enable bit masks HW_CH1_ENABLE_MASK EQU %00010001 HW_CH2_ENABLE_MASK EQU %00100010 HW_CH3_ENABLE_MASK EQU %01000100 HW_CH4_ENABLE_MASK EQU %10001000 ; HW sound channel disable bit masks HW_CH1_DISABLE_MASK EQU (~HW_CH1_ENABLE_MASK & $ff) HW_CH2_DISABLE_MASK EQU (~HW_CH2_ENABLE_MASK & $ff) HW_CH3_DISABLE_MASK EQU (~HW_CH3_ENABLE_MASK & $ff) HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff) REG_DUTY_SOUND_LEN EQU 1 REG_VOLUME_ENVELOPE EQU 2 REG_FREQUENCY_LO EQU 3 MAX_SFX_ID EQU $B9 CRY_SFX_START EQU $14 CRY_SFX_END EQU $86 ; wChannelFlags1 constants BIT_PERFECT_PITCH EQU 0 ; controlled by toggleperfectpitch command BIT_CHANNEL_CALL EQU 1 ; if in channel call BIT_NOISE_OR_SFX EQU 2 ; if channel is the music noise channel or an SFX channel BIT_VIBRATO_DIRECTION EQU 3 ; if the pitch is above or below normal (cycles) BIT_PITCH_BEND_ON EQU 4 ; if pitch bend is active BIT_PITCH_BEND_DECREASING EQU 5 ; if the pitch bend frequency is decreasing (instead of increasing) BIT_ROTATE_DUTY EQU 6 ; if rotating duty ; wChannelFlags2 constant (only has one flag) BIT_EXECUTE_MUSIC EQU 0 ; if in execute music ; Song ids are calculated by address to save space. ;music_const: MACRO ;\1 EQUS "RB(\2)" ;ENDM const_value = 1 const MUSIC_PALLET_TOWN const MUSIC_POKECENTER const MUSIC_GYM const MUSIC_CITIES1 const MUSIC_CITIES2 const MUSIC_CELADON const MUSIC_CINNABAR const MUSIC_VERMILION const MUSIC_LAVENDER const MUSIC_SS_ANNE const MUSIC_MEET_PROF_OAK const MUSIC_MEET_RIVAL const MUSIC_MUSEUM_GUY const MUSIC_SAFARI_ZONE const MUSIC_PKMN_HEALED const MUSIC_ROUTES1 const MUSIC_ROUTES2 const MUSIC_ROUTES3 const MUSIC_ROUTES4 const MUSIC_INDIGO_PLATEAU const MUSIC_GYM_LEADER_BATTLE const MUSIC_TRAINER_BATTLE const MUSIC_WILD_BATTLE const MUSIC_FINAL_BATTLE const MUSIC_DEFEATED_TRAINER const MUSIC_DEFEATED_WILD_MON const MUSIC_DEFEATED_GYM_LEADER const MUSIC_TITLE_SCREEN const MUSIC_CREDITS const MUSIC_HALL_OF_FAME const MUSIC_OAKS_LAB const MUSIC_JIGGLYPUFF_SONG const MUSIC_BIKE_RIDING const MUSIC_SURFING const MUSIC_GAME_CORNER const MUSIC_INTRO_BATTLE const MUSIC_DUNGEON1 const MUSIC_DUNGEON2 const MUSIC_DUNGEON3 const MUSIC_CINNABAR_MANSION const MUSIC_POKEMON_TOWER const MUSIC_SILPH_CO const MUSIC_MEET_EVIL_TRAINER const MUSIC_MEET_FEMALE_TRAINER const MUSIC_MEET_MALE_TRAINER const_value = 1 ; AUDIO_1 AUDIO_3 const SFX_GET_ITEM_1 ; AUDIO_1 AUDIO_2 AUDIO_3 const SFX_GET_ITEM_2 const SFX_TINK const SFX_HEAL_HP const SFX_HEAL_AILMENT const SFX_START_MENU const SFX_PRESS_AB ; AUDIO_1 AUDIO_3 const SFX_POKEDEX_RATING const SFX_GET_KEY_ITEM const SFX_POISONED const SFX_TRADE_MACHINE const SFX_TURN_ON_PC const SFX_TURN_OFF_PC const SFX_ENTER_PC const SFX_SHRINK const SFX_SWITCH const SFX_HEALING_MACHINE const SFX_TELEPORT_EXIT_1 const SFX_TELEPORT_ENTER_1 const SFX_TELEPORT_EXIT_2 const SFX_LEDGE const SFX_TELEPORT_ENTER_2 const SFX_FLY const SFX_DENIED const SFX_ARROW_TILES const SFX_PUSH_BOULDER const SFX_SS_ANNE_HORN const SFX_WITHDRAW_DEPOSIT const SFX_CUT const SFX_GO_INSIDE const SFX_SWAP const SFX_59 const SFX_PURCHASE const SFX_COLLISION const SFX_GO_OUTSIDE const SFX_SAVE ; AUDIO_1 const SFX_POKEFLUTE const SFX_SAFARI_ZONE_PA ; AUDIO_2 const SFX_LEVEL_UP const SFX_BALL_TOSS const SFX_BALL_POOF const SFX_FAINT_THUD const SFX_RUN const SFX_DEX_PAGE_ADDED const SFX_CAUGHT_MON const SFX_PECK const SFX_FAINT_FALL const SFX_BATTLE_09 const SFX_POUND const SFX_BATTLE_0B const SFX_BATTLE_0C const SFX_BATTLE_0D const SFX_BATTLE_0E const SFX_BATTLE_0F const SFX_DAMAGE const SFX_NOT_VERY_EFFECTIVE const SFX_BATTLE_12 const SFX_BATTLE_13 const SFX_BATTLE_14 const SFX_VINE_WHIP const SFX_BATTLE_16 const SFX_BATTLE_17 const SFX_BATTLE_18 const SFX_BATTLE_19 const SFX_SUPER_EFFECTIVE const SFX_BATTLE_1B const SFX_BATTLE_1C const SFX_DOUBLESLAP const SFX_BATTLE_1E const SFX_HORN_DRILL const SFX_BATTLE_20 const SFX_BATTLE_21 const SFX_BATTLE_22 const SFX_BATTLE_23 const SFX_BATTLE_24 const SFX_BATTLE_25 const SFX_BATTLE_26 const SFX_BATTLE_27 const SFX_BATTLE_28 const SFX_BATTLE_29 const SFX_BATTLE_2A const SFX_BATTLE_2B const SFX_BATTLE_2C const SFX_PSYBEAM const SFX_BATTLE_2E const SFX_BATTLE_2F const SFX_PSYCHIC_M const SFX_BATTLE_31 const SFX_BATTLE_32 const SFX_BATTLE_33 const SFX_BATTLE_34 const SFX_BATTLE_35 const SFX_BATTLE_36 const SFX_SILPH_SCOPE ; AUDIO_3 const SFX_INTRO_LUNGE const SFX_INTRO_HIP const SFX_INTRO_HOP const SFX_INTRO_RAISE const SFX_INTRO_CRASH const SFX_INTRO_WHOOSH const SFX_SLOTS_STOP_WHEEL const SFX_SLOTS_REWARD const SFX_SLOTS_NEW_SPIN const SFX_SHOOTING_STAR const GSSFX_NOT_VERY_EFFECTIVE const GSSFX_DAMAGE const GSSFX_SUPER_EFFECTIVE