mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-08 05:20:31 -04:00
Import code_8019AF00.c (Audio) data & bss, introduce z64ocarina.h (#575)
* Import code_8018AF00 Data * code_8019AF00.c BSS Imported * format * Small touch-up * rename `bgm.h` to `sequence.h` * Missed a variable * PR Feedback 1
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#ifndef BGM_H
|
||||
#define BGM_H
|
||||
#ifndef SEQUENCE_H
|
||||
#define SEQUENCE_H
|
||||
|
||||
#define NA_BGM_STOP 0x100000FF
|
||||
|
||||
@@ -133,4 +133,146 @@
|
||||
#define NA_BGM_END_CREDITS_2 0x82 // The End/Credits II "STAFFROLL2"
|
||||
#define NA_BGM_DISABLED 0xFFFF
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SEQ_PLAYER_BGM_MAIN,
|
||||
/* 1 */ SEQ_PLAYER_FANFARE,
|
||||
/* 2 */ SEQ_PLAYER_SFX,
|
||||
/* 3 */ SEQ_PLAYER_BGM_SUB,
|
||||
/* 4 */ SEQ_PLAYER_NATURE
|
||||
} SequencePlayerId;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SEQ_MODE_DEFAULT,
|
||||
/* 1 */ SEQ_MODE_ENEMY,
|
||||
/* 2 */ SEQ_MODE_STILL, // Not moving or first-person view
|
||||
/* 3 */ SEQ_MODE_IGNORE
|
||||
} SequenceMode;
|
||||
|
||||
typedef enum {
|
||||
/* 0x0 */ CHANNEL_IO_PORT_0,
|
||||
/* 0x1 */ CHANNEL_IO_PORT_1,
|
||||
/* 0x2 */ CHANNEL_IO_PORT_2,
|
||||
/* 0x3 */ CHANNEL_IO_PORT_3,
|
||||
/* 0x4 */ CHANNEL_IO_PORT_4,
|
||||
/* 0x5 */ CHANNEL_IO_PORT_5,
|
||||
/* 0x6 */ CHANNEL_IO_PORT_6,
|
||||
/* 0x7 */ CHANNEL_IO_PORT_7
|
||||
} ChannelIOPort;
|
||||
|
||||
typedef enum {
|
||||
/* 0x0 */ NATURE_CHANNEL_STREAM_0,
|
||||
/* 0x1 */ NATURE_CHANNEL_CRITTER_0,
|
||||
/* 0x2 */ NATURE_CHANNEL_CRITTER_1,
|
||||
/* 0x3 */ NATURE_CHANNEL_CRITTER_2,
|
||||
/* 0x4 */ NATURE_CHANNEL_CRITTER_3,
|
||||
/* 0x5 */ NATURE_CHANNEL_CRITTER_4,
|
||||
/* 0x6 */ NATURE_CHANNEL_CRITTER_5,
|
||||
/* 0x7 */ NATURE_CHANNEL_CRITTER_6,
|
||||
/* 0x8 */ NATURE_CHANNEL_CRITTER_7,
|
||||
/* 0xC */ NATURE_CHANNEL_STREAM_1 = 12,
|
||||
/* 0xD */ NATURE_CHANNEL_UNK,
|
||||
/* 0xE */ NATURE_CHANNEL_RAIN,
|
||||
/* 0xF */ NATURE_CHANNEL_LIGHTNING
|
||||
} NatureChannelIdx; // playerIdx = 4
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ NATURE_AMBIENCE_0,
|
||||
/* 0x01 */ NATURE_AMBIENCE_1,
|
||||
/* 0x02 */ NATURE_AMBIENCE_2,
|
||||
/* 0x03 */ NATURE_AMBIENCE_3,
|
||||
/* 0x04 */ NATURE_AMBIENCE_4,
|
||||
/* 0x05 */ NATURE_AMBIENCE_5,
|
||||
/* 0x06 */ NATURE_AMBIENCE_6,
|
||||
/* 0x07 */ NATURE_AMBIENCE_7,
|
||||
/* 0x08 */ NATURE_AMBIENCE_8,
|
||||
/* 0x09 */ NATURE_AMBIENCE_9,
|
||||
/* 0x0A */ NATURE_AMBIENCE_A,
|
||||
/* 0x0B */ NATURE_AMBIENCE_B,
|
||||
/* 0x0C */ NATURE_AMBIENCE_C,
|
||||
/* 0x0D */ NATURE_AMBIENCE_D,
|
||||
/* 0x0E */ NATURE_AMBIENCE_E,
|
||||
/* 0x0F */ NATURE_AMBIENCE_F,
|
||||
/* 0x10 */ NATURE_AMBIENCE_10,
|
||||
/* 0x11 */ NATURE_AMBIENCE_11,
|
||||
/* 0x12 */ NATURE_AMBIENCE_12,
|
||||
/* 0x13 */ NATURE_AMBIENCE_13
|
||||
} NatureAmbienceId; // playerIdx = 4
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ NATURE_STREAM_0,
|
||||
/* 0x01 */ NATURE_STREAM_1,
|
||||
/* 0x02 */ NATURE_STREAM_2,
|
||||
/* 0x03 */ NATURE_STREAM_3
|
||||
} NatureStreamId;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ NATURE_CRITTER_00,
|
||||
/* 0x01 */ NATURE_CRITTER_01,
|
||||
/* 0x02 */ NATURE_CRITTER_02,
|
||||
/* 0x03 */ NATURE_CRITTER_03,
|
||||
/* 0x04 */ NATURE_CRITTER_04,
|
||||
/* 0x05 */ NATURE_CRITTER_05,
|
||||
/* 0x06 */ NATURE_CRITTER_06,
|
||||
/* 0x07 */ NATURE_CRITTER_07,
|
||||
/* 0x08 */ NATURE_CRITTER_08,
|
||||
/* 0x09 */ NATURE_CRITTER_09,
|
||||
/* 0x0A */ NATURE_CRITTER_10,
|
||||
/* 0x0B */ NATURE_CRITTER_11,
|
||||
/* 0x0C */ NATURE_CRITTER_12,
|
||||
/* 0x0D */ NATURE_CRITTER_13,
|
||||
/* 0x0E */ NATURE_CRITTER_14,
|
||||
/* 0x0F */ NATURE_CRITTER_15,
|
||||
/* 0x10 */ NATURE_CRITTER_16,
|
||||
/* 0x11 */ NATURE_CRITTER_17,
|
||||
/* 0x12 */ NATURE_CRITTER_18,
|
||||
/* 0x13 */ NATURE_CRITTER_19
|
||||
} NatureAmimalId;
|
||||
|
||||
#define NATURE_IO_CRITTER_0_TYPE(type) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_0_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_0_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_0_PORT5(reverb) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_1_TYPE(type) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_1_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_1_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_1_PORT5(reverb) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_2_TYPE(type) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_2_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_2_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_2_PORT5(reverb) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_3_TYPE(type) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_3_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_3_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_3_PORT5(reverb) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_4_TYPE(type) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_4_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_4_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_4_PORT5(reverb) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_5_TYPE(type) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_5_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_5_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_5_PORT5(reverb) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_6_TYPE(type) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_6_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_6_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_6_PORT5(reverb) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_STREAM_0_TYPE(type) NATURE_CHANNEL_STREAM_0, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_STREAM_0_PORT3(data) NATURE_CHANNEL_STREAM_0, CHANNEL_IO_PORT_3, data
|
||||
#define NATURE_IO_STREAM_0_PORT4(data) NATURE_CHANNEL_STREAM_0, CHANNEL_IO_PORT_4, data
|
||||
|
||||
#define NATURE_IO_STREAM_1_TYPE(type) NATURE_CHANNEL_STREAM_1, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_STREAM_1_PORT3(data) NATURE_CHANNEL_STREAM_1, CHANNEL_IO_PORT_3, data
|
||||
#define NATURE_IO_STREAM_1_PORT4(data) NATURE_CHANNEL_STREAM_1, CHANNEL_IO_PORT_4, data
|
||||
|
||||
#define NATURE_IO_RAIN_PORT4(data) NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_4, data
|
||||
|
||||
#define NATURE_IO_ENTRIES_END 0xFF
|
||||
|
||||
#endif
|
||||
+2
-1
@@ -1689,7 +1689,7 @@ extern UNK_PTR D_801D618C;
|
||||
// extern UNK_TYPE1 D_801D6648;
|
||||
// extern UNK_TYPE1 D_801D664C;
|
||||
// extern UNK_TYPE1 D_801D6650;
|
||||
extern f32 D_801D6654;
|
||||
extern f32 gSfxVolume;
|
||||
// extern UNK_TYPE1 D_801D6658;
|
||||
// extern UNK_TYPE1 D_801D665C;
|
||||
// extern UNK_TYPE1 D_801D6660;
|
||||
@@ -3340,6 +3340,7 @@ extern FaultAddrConvClient sGraphFaultAddrConvClient;
|
||||
extern FaultClient sGraphFaultClient;
|
||||
extern GfxMasterList* gGfxMasterDL;
|
||||
extern CfbInfo sGraphCfbInfos[3];
|
||||
extern OSTime sGraphTaskStartTime;
|
||||
extern OSMesgQueue sSiIntMsgQ;
|
||||
extern OSMesg sSiIntMsgBuf[1];
|
||||
extern u32 gSegments[NUM_SEGMENTS];
|
||||
|
||||
+2
-1
@@ -17,9 +17,9 @@
|
||||
#include "scheduler.h"
|
||||
#include "xstdio.h"
|
||||
|
||||
#include "bgm.h"
|
||||
#include "color.h"
|
||||
#include "ichain.h"
|
||||
#include "sequence.h"
|
||||
#include "sfx.h"
|
||||
|
||||
#include "z64actor.h"
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "z64light.h"
|
||||
#include "z64math.h"
|
||||
#include "z64object.h"
|
||||
#include "z64ocarina.h"
|
||||
#include "z64player.h"
|
||||
#include "z64scene.h"
|
||||
#include "z64save.h"
|
||||
|
||||
+7
-84
@@ -20,6 +20,13 @@
|
||||
|
||||
#define AIBUF_LEN 0x580
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ AUDIO_FS_STEREO,
|
||||
/* 1 */ AUDIO_FS_HEADSET,
|
||||
/* 2 */ AUDIO_FS_SURROUND,
|
||||
/* 3 */ AUDIO_FS_MONO
|
||||
} AudioFileSelectOption;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ AUDIO_MODE_STEREO,
|
||||
/* 1 */ AUDIO_MODE_HEADSET,
|
||||
@@ -71,63 +78,6 @@ typedef enum {
|
||||
/* 3 */ CACHE_PERMANENT
|
||||
} AudioCacheType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_SONG_SONATA,
|
||||
/* 1 */ OCARINA_SONG_GORON_LULLABY,
|
||||
/* 2 */ OCARINA_SONG_NEW_WAVE,
|
||||
/* 3 */ OCARINA_SONG_ELEGY,
|
||||
/* 4 */ OCARINA_SONG_OATH,
|
||||
/* 5 */ OCARINA_SONG_SARIAS,
|
||||
/* 6 */ OCARINA_SONG_TIME,
|
||||
/* 7 */ OCARINA_SONG_HEALING,
|
||||
/* 8 */ OCARINA_SONG_EPONAS,
|
||||
/* 9 */ OCARINA_SONG_SOARING,
|
||||
/* 10 */ OCARINA_SONG_STORMS,
|
||||
/* 11 */ OCARINA_SONG_SUNS,
|
||||
/* 12 */ OCARINA_SONG_INVERTED_TIME,
|
||||
/* 13 */ OCARINA_SONG_DOUBLE_TIME,
|
||||
/* 14 */ OCARINA_SONG_GORON_LULLABY_INTRO,
|
||||
/* 15 */ OCARINA_SONG_WIND_FISH_HUMAN, // "Ballad of the Wind Fish"
|
||||
/* 16 */ OCARINA_SONG_WIND_FISH_GORON,
|
||||
/* 17 */ OCARINA_SONG_WIND_FISH_ZORA,
|
||||
/* 18 */ OCARINA_SONG_WIND_FISH_DEKU,
|
||||
/* 19 */ OCARINA_SONG_EVAN_PART1,
|
||||
/* 20 */ OCARINA_SONG_EVAN_PART2,
|
||||
/* 21 */ OCARINA_SONG_ZELDAS_LULLABY,
|
||||
/* 22 */ OCARINA_SONG_SCARECROW,
|
||||
/* 23 */ OCARINA_SONG_TERMINA_WALL,
|
||||
/* 24 */ OCARINA_SONG_MAX,
|
||||
} OcarinaSongId;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_BTN_A,
|
||||
/* 1 */ OCARINA_BTN_C_DOWN,
|
||||
/* 2 */ OCARINA_BTN_C_RIGHT,
|
||||
/* 3 */ OCARINA_BTN_C_LEFT,
|
||||
/* 4 */ OCARINA_BTN_C_UP,
|
||||
/* -1 */ OCARINA_BTN_INVALID = 0xFF
|
||||
} OcarinaButtonIdx;
|
||||
|
||||
typedef enum {
|
||||
/* 0x0 */ OCARINA_PITCH_C4,
|
||||
/* 0x1 */ OCARINA_PITCH_DFLAT4,
|
||||
/* 0x2 */ OCARINA_PITCH_D4,
|
||||
/* 0x3 */ OCARINA_PITCH_EFLAT4,
|
||||
/* 0x4 */ OCARINA_PITCH_E4,
|
||||
/* 0x5 */ OCARINA_PITCH_F4,
|
||||
/* 0x6 */ OCARINA_PITCH_GFLAT4,
|
||||
/* 0x7 */ OCARINA_PITCH_G4,
|
||||
/* 0x8 */ OCARINA_PITCH_AFLAT4,
|
||||
/* 0x9 */ OCARINA_PITCH_A4,
|
||||
/* 0xA */ OCARINA_PITCH_BFLAT4,
|
||||
/* 0xB */ OCARINA_PITCH_B4,
|
||||
/* 0xC */ OCARINA_PITCH_C5,
|
||||
/* 0xD */ OCARINA_PITCH_DFLAT5,
|
||||
/* 0xE */ OCARINA_PITCH_D5,
|
||||
/* 0xF */ OCARINA_PITCH_EFLAT5,
|
||||
/* -1 */ OCARINA_PITCH_NONE = 0xFF
|
||||
} OcarinaNoteIdx;
|
||||
|
||||
typedef s32 (*DmaHandler)(OSPiHandle* handle, OSIoMesg* mb, s32 direction);
|
||||
|
||||
struct Note;
|
||||
@@ -1155,31 +1105,4 @@ typedef struct {
|
||||
/* 0x10 */ f32* vol;
|
||||
} SoundRequest; // size = 0x14
|
||||
|
||||
/**
|
||||
* Note:
|
||||
* Flag for resolving C_RIGHT and C_LEFT only being two semitones apart
|
||||
* 0x40 - BTN_Z is pressed to lower note by a semitone
|
||||
* 0x80 - BTN_R is pressed to raise note by a semitone
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 noteIdx;
|
||||
/* 0x2 */ u16 length; // number of frames the note is sustained
|
||||
/* 0x4 */ u8 volume;
|
||||
/* 0x5 */ u8 vibrato;
|
||||
/* 0x6 */ s8 bend;
|
||||
/* 0x7 */ u8 BFlat4Flag; // BFlat4Flag See note above
|
||||
} OcarinaNote; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 numButtons;
|
||||
/* 0x1 */ u8 buttonIdx[8];
|
||||
} OcarinaSongButtons; // size = 0x9
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 buttonIdx;
|
||||
/* 0x1 */ u8 state;
|
||||
/* 0x2 */ u8 pos;
|
||||
} OcarinaStaff; // size = 0x3
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
#ifndef Z64OCARINA_H
|
||||
#define Z64OCARINA_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_SONG_SONATA,
|
||||
/* 1 */ OCARINA_SONG_GORON_LULLABY,
|
||||
/* 2 */ OCARINA_SONG_NEW_WAVE,
|
||||
/* 3 */ OCARINA_SONG_ELEGY,
|
||||
/* 4 */ OCARINA_SONG_OATH,
|
||||
/* 5 */ OCARINA_SONG_SARIAS,
|
||||
/* 6 */ OCARINA_SONG_TIME,
|
||||
/* 7 */ OCARINA_SONG_HEALING,
|
||||
/* 8 */ OCARINA_SONG_EPONAS,
|
||||
/* 9 */ OCARINA_SONG_SOARING,
|
||||
/* 10 */ OCARINA_SONG_STORMS,
|
||||
/* 11 */ OCARINA_SONG_SUNS,
|
||||
/* 12 */ OCARINA_SONG_INVERTED_TIME,
|
||||
/* 13 */ OCARINA_SONG_DOUBLE_TIME,
|
||||
/* 14 */ OCARINA_SONG_GORON_LULLABY_INTRO,
|
||||
/* 15 */ OCARINA_SONG_WIND_FISH_HUMAN, // "Ballad of the Wind Fish"
|
||||
/* 16 */ OCARINA_SONG_WIND_FISH_GORON,
|
||||
/* 17 */ OCARINA_SONG_WIND_FISH_ZORA,
|
||||
/* 18 */ OCARINA_SONG_WIND_FISH_DEKU,
|
||||
/* 19 */ OCARINA_SONG_EVAN_PART1,
|
||||
/* 20 */ OCARINA_SONG_EVAN_PART2,
|
||||
/* 21 */ OCARINA_SONG_ZELDAS_LULLABY,
|
||||
/* 22 */ OCARINA_SONG_SCARECROW,
|
||||
/* 23 */ OCARINA_SONG_TERMINA_WALL,
|
||||
/* 24 */ OCARINA_SONG_MAX,
|
||||
/* 24 */ OCARINA_SONG_SCARECROW_LONG = OCARINA_SONG_MAX
|
||||
} OcarinaSongId;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_BTN_A,
|
||||
/* 1 */ OCARINA_BTN_C_DOWN,
|
||||
/* 2 */ OCARINA_BTN_C_RIGHT,
|
||||
/* 3 */ OCARINA_BTN_C_LEFT,
|
||||
/* 4 */ OCARINA_BTN_C_UP,
|
||||
/* -1 */ OCARINA_BTN_INVALID = 0xFF
|
||||
} OcarinaButtonIdx;
|
||||
|
||||
// Uses scientific pitch notation relative to middle C
|
||||
// https://en.wikipedia.org/wiki/Scientific_pitch_notation
|
||||
typedef enum {
|
||||
/* 0x0 */ OCARINA_PITCH_C4,
|
||||
/* 0x1 */ OCARINA_PITCH_DFLAT4,
|
||||
/* 0x2 */ OCARINA_PITCH_D4,
|
||||
/* 0x3 */ OCARINA_PITCH_EFLAT4,
|
||||
/* 0x4 */ OCARINA_PITCH_E4,
|
||||
/* 0x5 */ OCARINA_PITCH_F4,
|
||||
/* 0x6 */ OCARINA_PITCH_GFLAT4,
|
||||
/* 0x7 */ OCARINA_PITCH_G4,
|
||||
/* 0x8 */ OCARINA_PITCH_AFLAT4,
|
||||
/* 0x9 */ OCARINA_PITCH_A4,
|
||||
/* 0xA */ OCARINA_PITCH_BFLAT4,
|
||||
/* 0xB */ OCARINA_PITCH_B4,
|
||||
/* 0xC */ OCARINA_PITCH_C5,
|
||||
/* 0xD */ OCARINA_PITCH_DFLAT5,
|
||||
/* 0xE */ OCARINA_PITCH_D5,
|
||||
/* 0xF */ OCARINA_PITCH_EFLAT5,
|
||||
/* -1 */ OCARINA_PITCH_NONE = 0xFF
|
||||
} OcarinaPitch;
|
||||
|
||||
// Mainly set by func_80152CAC in z_message.c
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_INSTRUMENT_OFF,
|
||||
/* 1 */ OCARINA_INSTRUMENT_DEFAULT,
|
||||
/* 2 */ OCARINA_INSTRUMENT_FEMALE_VOICE,
|
||||
/* 3 */ OCARINA_INSTRUMENT_WHISTLING_FLUTE,
|
||||
/* 4 */ OCARINA_INSTRUMENT_HARP,
|
||||
/* 5 */ OCARINA_INSTRUMENT_IKANA_KING,
|
||||
/* 6 */ OCARINA_INSTRUMENT_TATL,
|
||||
/* 7 */ OCARINA_INSTRUMENT_GORON_DRUMS,
|
||||
/* 8 */ OCARINA_INSTRUMENT_ZORA_GUITAR,
|
||||
/* 9 */ OCARINA_INSTRUMENT_DEKU_PIPES,
|
||||
/* 10 */ OCARINA_INSTRUMENT_MONKEY,
|
||||
/* 11 */ OCARINA_INSTRUMENT_DEKU_TRUMPET, // Pull out ocarina for captured monkey
|
||||
/* 12 */ OCARINA_INSTRUMENT_ELDER_GORON_DRUMS,
|
||||
/* 13 */ OCARINA_INSTRUMENT_PIANO,
|
||||
/* 14 */ OCARINA_INSTRUMENT_BASS_GUITAR,
|
||||
/* 15 */ OCARINA_INSTRUMENT_BABY_SINGING,
|
||||
/* 16 */ OCARINA_INSTRUMENT_AMPLIFIED_GUITAR, // Related to (gSaveContext.weekEventReg[0x29] & 0x20)
|
||||
} OcarinaInstrumentId;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_RECORD_OFF,
|
||||
/* 1 */ OCARINA_RECORD_SCARECROW_LONG,
|
||||
/* 2 */ OCARINA_RECORD_SCARECROW_SPAWN,
|
||||
/* -1 */ OCARINA_RECORD_REJECTED = 0xFF
|
||||
} OcarinaRecordingState;
|
||||
|
||||
/**
|
||||
* BFlat4Flag Note:
|
||||
* Flag for resolving whether (noteIdx = NOTE_BFLAT4)
|
||||
* gets mapped to either C_RIGHT and C_LEFT
|
||||
*
|
||||
* This is required as C_RIGHT and C_LEFT are the only notes
|
||||
* that map to two semitones apart (NOTE_A4 and NOTE_B4)
|
||||
* 0x40 - BTN_Z is pressed to lower note by a semitone
|
||||
* 0x80 - BTN_R is pressed to raise note by a semitone
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 noteIdx; // number of semitones above middle C
|
||||
/* 0x2 */ u16 length; // number of frames the note is sustained
|
||||
/* 0x4 */ u8 volume;
|
||||
/* 0x5 */ u8 vibrato;
|
||||
/* 0x6 */ s8 bend; // frequency multiplicative offset from the pitch defined by noteIdx
|
||||
/* 0x7 */ u8 BFlat4Flag; // See note above
|
||||
} OcarinaNote; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 numButtons;
|
||||
/* 0x1 */ u8 buttonIdx[8];
|
||||
} OcarinaSongButtons; // size = 0x9
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 buttonIdx;
|
||||
/* 0x1 */ u8 state; // original name: "status"
|
||||
/* 0x2 */ u8 pos; // original name: "locate"
|
||||
} OcarinaStaff; // size = 0x3
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user