Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions include/core1/core1.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#include "core1/mem.h"
#include "core1/ml.h"
#include "core1/mlmtx.h"
#include "core1/music.h"
#include "core1/musicplayer.h"
#include "core1/pfsmanager.h"
#include "core1/rarezip.h"
#include "core1/sns.h"
Expand All @@ -34,14 +36,10 @@ void* malloc(size_t size);

void glcrc_calc_checksum(void *start, void *end, u32 checksum[2]);

void func_80250530(s32 arg0, u16 chan_mask, f32 arg2);

void func_8025A104(enum comusic_e arg0, s32 arg1);
void func_8025A55C(s32 arg0, s32 arg1, s32 arg2);
s32 func_8025A864(enum comusic_e track_id);
void func_8025ABB8(enum comusic_e comusic_id, s32 arg1, s32 arg2, s32 arg3);
int func_8025AD7C(enum comusic_e arg0);
int func_8025ADBC(enum comusic_e arg0);
void func_8025ABB8(enum comusic_e track_id, s32 arg1, s32 arg2, s32 arg3);

void piMgr_read(void *vaddr, s32 devaddr, s32 size);

Expand Down Expand Up @@ -120,7 +118,7 @@ void core1_7090_freeSfxSource(int idx);
/* src/core1/code_CE60.c */

void core1_ce60_setChanMask(s32 chan_mask);
void core1_ce60_setChanMaskWithValue(s32 chan_mask, f32 arg1);
void core1_ce60_setChanMaskWithTransitionSpeed(s32 chan_mask, f32 transition_speed);
bool core1_ce60_isPlayerInRange(s32 x, s32 z, s32 distance);
f32 core1_ce60_getPlayerDistance(f32 x, f32 z);
bool core1_ce60_isPlayerInsideBoundingBox(s32 box_idx);
Expand Down
87 changes: 87 additions & 0 deletions include/core1/music.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#ifndef MUSIC_H
#define MUSIC_H

#include <ultra64.h>
#include "bool.h"
#include "enums.h"

#ifdef __cplusplus
extern "C" {
#endif

#include <n_audio/PR/n_libaudio.h> // [port] inside extern "C" so n_audio decls keep C linkage in C++ TUs

#define NUM_CHANNEL_TEMPO_STATES 32

typedef struct chan_tempo_state_s {
s32 slot_id;
s32 chan;
f32 tempo;
f32 change_step;
f32 target_tempo;
} ChanTempoState;

typedef struct midi_bin_s {
u8 pad[1]; // Fake struct, contains compressed MIDI data of arbitrary size
} MidiBin;

typedef struct music_slot_s {
s16 volume;
u8 unk2;
u8 unk3;
ALCSeq cseq;
ALCSPlayer cseqp;
s16 track_id; // enum comusic_e
s16 index_cpy;
f32 unk17C;
f32 unk180;
u8 unk184[14];
u8 unk192[14];
} MusicSlot;

typedef struct music_track_meta_s {
char *name;
u16 volume;
} MusicTrackMeta;

void musicInstruments_init(void);
ALBank *musicInstruments_getSoundBank(void);
void musicTrack_load(enum comusic_e track_id);
void musicTrack_release(enum comusic_e track_id);
void musicTrack_releaseAll(void);
void musicSlot_loadTrack(u8 index, enum comusic_e track_id);
enum comusic_e musicSlot_getTrack(u8 index);
void musicSlot_func_8024FA98(u8 index, enum comusic_e track_id);
s32 musicSlot_getSlotSeqpState(u8 index);
void musicSlot_stopAll(void);
void musicSlot_func_8024FC1C(u8 index, enum comusic_e track_id);
void musicSlot_func_8024FC6C(u8 index);
void musicSlot_func_8024FCE0(u8 index, s16 volume);
void musicSlot_setVolume(u8 index, s16 volume);
void musicSlot_setTempo(u8 index, s32 tempo);
void musicSlot_func_8024FE44(u8 index, f32 arg1, f32 arg2);
s32 musicSlot_getCSeqTicks(u8 index);
void func_8024FF34(void);
s32 gcMusic_getDefaultVolumeForTrack(enum comusic_e track_id);
void gcMusic_setDefaultVolumeForTrack(enum comusic_e track_id, u16 volume);
char *gcMusic_getNameForTrack(enum comusic_e track_id);
bool musicSlot_hasStopped(u8 index);
s32 gcMusic_getAssetCount(void);
N_ALCSPlayer *musicSlot_getCSeqp(s32 index);
void musicSlot_func_802500F4(s32 index);
void musicSlot_func_802500FC(s32 index);
void musicSlot_func_80250104(ALCSeq *cseq, s32 arg1, s32 chan);
void musicSlot_func_80250170(u8 index, s32 arg1, s32 arg2);
s32 musicSlot_func_802501A0(u8 index, s32 arg1, s32 *chan);
void musicSlot_setChannelTempoChange(s32 index, s16 chan, s16 target_tempo, f32 transition_speed);
void musicSlot_setTempoChange(s32 index, s32 target_tempo, f32 transition_speed);
u16 musicSlot_func_80250474(s32 index);
void musicSlot_stepToChannelMask(s32 index, u16 chan_mask, f32 transition_speed);
void musicSlot_stepToTempo(s32 index, s32 target_tempo, f32 transition_speed);
void func_80250650(void); // n_audio ??

#ifdef __cplusplus
}
#endif

#endif
53 changes: 53 additions & 0 deletions include/core1/musicplayer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#ifndef BANJO_KAZOOIE_CORE1_MUSICPLAYER_H
#define BANJO_KAZOOIE_CORE1_MUSICPLAYER_H

#include <ultra64.h>
#include "bool.h"
#include "enums.h"
#include "core2/fla.h"

#ifdef __cplusplus
extern "C" {
#endif

#define NUM_MUSIC_SLOTS 6



typedef struct struct_12_s{
s32 volume_1; // volume 1
s32 volume_2; // volume 2
} struct12s;

typedef struct comusic_s {
f32 volume_change_wait_timer;
f32 unk4;
s32 volume;
s32 destination_volume;
s16 track_id; //trackId
s16 volume_change;
u8 unk14;
u8 unk15;
u8 pad16[0x2];
FREE_LIST(struct12s) *unk18;
s32 unk1C[0xE];
} CoMusic;

CoMusic *comusic_findTrack(enum comusic_e track_id);

void coMusicPlayer_init(void);
void coMusicPlayer_free(void);
s32 coMusicPlayer_getTrackCount(void);
void coMusicPlayer_update(void);


bool comusic_isTrackQueued(enum comusic_e track_id);
bool comusic_isPrimaryTrack(enum comusic_e track_id);
s32 comusic_getTrackPosition(enum comusic_e track_id);
void comusic_defrag(void);

#ifdef __cplusplus
}
#endif

#endif
3 changes: 2 additions & 1 deletion include/enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -870,7 +870,8 @@ enum comusic_e
COMUSIC_A9_TOOTY = 0xA9,
COMUSIC_AA_BEACH = 0xAA,
JINGLE_JINJOATOR_FINAL_HIT,
COMUSIC_AC_GOOD_ENDING = 0xAC
COMUSIC_AC_GOOD_ENDING = 0xAC,
COMUSIC_NUM_TRACKS
};

// SFXR_ = Repeating SFX
Expand Down
39 changes: 12 additions & 27 deletions include/functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,7 @@ void func_80353580(ActorMarker *marker);
void func_8025A58C(u32 arg0, u32 arg1);
void func_8025AABC(enum comusic_e track_id);
void func_8025AEA0(enum comusic_e track_id, s32 arg1);
void comusic_8025AB44(enum comusic_e comusic_id, s32 arg1, s32 arg2);
void comusic_8025AB44(enum comusic_e track_id, s32 arg1, s32 arg2);
void comusic_playTrack(enum comusic_e);
void coMusicPlayer_playMusic(enum comusic_e, s32);

Expand Down Expand Up @@ -962,26 +962,11 @@ void maCastle_release(void);
void maCastle_update(void);

// --- core1/audio_instruments.c ---
s32 gcMusic_getDefaultVolumeForTrack(s32 track_id);
s32 func_802501A0(u8 arg0, s32 arg1, s32 *arg2);
void func_8024F764(s32 arg0);
void func_8024F7C4(s32 arg0);
void func_8024F83C(void);
void func_8024FB8C(void);
s32 func_8024FEEC(u8 arg0);
void func_8024FF34(void);
void func_80250170(u8 arg0, s32 arg1, s32 arg2);
void func_80250650(void);
void musicInstruments_init(void);
// (see include/core1/music.h)

// --- core1/musicplayer.c ---
int func_8025AEEC(void);
s32 coMusicPlayer_getTrackCount(void);
s32 func_8025ADD4(enum comusic_e id);
void coMusicPlayer_free(void);
void coMusicPlayer_init(void);
void comusic_defrag(void);
void func_8025A23C(s32 arg0);
void func_8025A23C(enum comusic_e track_id);
void func_8025A2B0(void);
void func_8025A2D8(void);
void func_8025A2FC(s32 arg0, s32 arg1);
Expand Down Expand Up @@ -1250,7 +1235,7 @@ void assetCache_init(void);
void assetcache_update_ptr(void * arg0, void* arg1);
void func_8033B5FC(void);
void func_8033B61C(void);
void func_8033B788(void);
void assetcache_func_8033B788(void);
void func_8033BD6C(void);
bool func_8033BD8C(void* arg0);

Expand Down Expand Up @@ -1296,12 +1281,12 @@ void anSeq_update(void **ppAnSeq, AnimCtrl *pAnCtl);

// --- core2/sfx/instruments.c ---
bool func_803354EC(enum sfx_e sfx_id);
bool func_80335520(s32 arg0);
intptr_t func_8033531C(enum sfx_e uid, struct46s *arg1);
intptr_t func_80335354(int uid, struct46s *arg1);
void func_803353BC(intptr_t arg0, u16 arg1);
void func_803353F4(intptr_t arg0, s32 arg1);
void func_80335418(intptr_t arg0, s32 arg1);
bool func_80335520(enum sfx_e sfx_id);
intptr_t sfxInstruments_func_8033531C(enum sfx_e sfx_id, struct46s *arg1);
intptr_t sfxInstruments_func_80335354(enum sfx_e sfx_id, struct46s *arg1);
void sfxInstruments_func_803353BC(intptr_t arg0, u16 arg1);
void sfxInstruments_func_803353F4(intptr_t arg0, s32 arg1);
void sfxInstruments_func_80335418(intptr_t arg0, s32 arg1);
void sfxInstruments_init(void);

// --- core2/ba/anim.c ---
Expand Down Expand Up @@ -1795,7 +1780,7 @@ void ncCamera_update(void);

// --- core2/sfx/trackmanager.c ---
int func_80322914(void);
s32 func_803226E8(enum map_e map_id);
s32 core2_9B650_getMusicTrackFromMap(enum map_e map_id);
s32 func_8032274C(void);
s32 func_80322758(void);
void func_80322764(void);
Expand Down Expand Up @@ -3118,7 +3103,7 @@ void func_8029BC60(enum asset_e *anim_id, f32 *anim_duration);
s32 func_802E4AD4(s32 arg0);

// --- core2/sfx/instruments.c ---
void func_8033543C(Struct81s *arg0);
void sfxInstruments_func_8033543C(Struct81s *arg0);

// --- core2/fx/projectile_system.c ---
void func_8033F7F0(u8 indx, Gfx **gfx, Mtx **mtx, Vtx **vtx);
Expand Down
35 changes: 0 additions & 35 deletions include/music.h

This file was deleted.

23 changes: 2 additions & 21 deletions include/structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -240,25 +240,6 @@ typedef struct struct_8_s{
f32 unk60;
}struct8s;

typedef struct struct_11_s{
f32 unk0;
f32 unk4;
s32 volume;
s32 unkC;
s16 track_id; //trackId
s16 unk12;
u8 unk14;
u8 unk15;
u8 pad16[0x2];
FREE_LIST(struct12s) *unk18;
s32 unk1C[0xE];
} CoMusic;

typedef struct struct_12_s{
s32 unk0;
s32 unk1;
} struct12s;

typedef struct dialog_s {
s32 cmd;
u8* str;
Expand Down Expand Up @@ -795,8 +776,8 @@ typedef struct{
typedef struct {
s32 unk0; //sound state cnt
s32 unk4;
s32 unk8; //maxSounds
struct ALHeap *unkC; //heap
s32 max_sounds;
struct ALHeap *heap;
u16 unk10;
}Struct87s;
#ifdef __cplusplus
Expand Down
12 changes: 6 additions & 6 deletions lib/ultralib/audio/csp_chanmode.c
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
#include <ultra64.h>
#include "n_synth.h"

void func_8025F5C0(N_ALSeqPlayer *arg0, u8 arg1){
void func_8025F5C0(N_ALCSPlayer *seqp, u8 chan) {
ALEvent evt;

evt.type = AL_SEQP_MIDI_EVT;
evt.msg.midi.ticks = 0;
evt.msg.midi.status = AL_MIDI_ChannelModeSelect;
evt.msg.midi.byte1 = 0x7E;
evt.msg.midi.byte2 = arg1;
alEvtqPostEvent(&arg0->evtq, &evt, 0);
evt.msg.midi.byte2 = chan;
alEvtqPostEvent(&seqp->evtq, &evt, 0);
}

void func_8025F570(N_ALSeqPlayer *arg0, u8 arg1){
void func_8025F570(N_ALCSPlayer *seqp, u8 chan) {
ALEvent evt;

evt.type = AL_SEQP_MIDI_EVT;
evt.msg.midi.ticks = 0;
evt.msg.midi.status = AL_MIDI_ChannelModeSelect;
evt.msg.midi.byte1 = 0x7F;
evt.msg.midi.byte2 = arg1;
alEvtqPostEvent(&arg0->evtq, &evt, 0);
evt.msg.midi.byte2 = chan;
alEvtqPostEvent(&seqp->evtq, &evt, 0);
}
4 changes: 2 additions & 2 deletions lib/ultralib/audio/csp_controlchange.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
#include "variables.h"
#include <PR/libaudio.h>
// [port] N64 SDK audio library - stubbed for PC port
void func_8025F510(ALCSPlayer *seqp, u8 chan, u8 arg2)
void func_8025F510(ALCSPlayer *seqp, u8 chan, u8 tempo)
{
ALEvent evt;

evt.type = AL_SEQP_MIDI_EVT;
evt.msg.midi.ticks = 0;
evt.msg.midi.status = AL_MIDI_ControlChange | chan;
evt.msg.midi.byte1 = 0x7D;
evt.msg.midi.byte2 = arg2;
evt.msg.midi.byte2 = tempo;

alEvtqPostEvent(&seqp->evtq, &evt, 0);
}
Loading
Loading