Mario Kart 64
Loading...
Searching...
No Matches
mixer.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdbool.h>
4#include <stdint.h>
5#include "libultraship/libultra/abi.h"
6
7#undef aSegment
8#undef aClearBuffer
9#undef aSetBuffer
10#undef aLoadBuffer
11#undef aSaveBuffer
12#undef aDMEMMove
13#undef aMix
14#undef aEnvMixer
15#undef aResample
16#undef aInterleave
17#undef aSetVolume
18#undef aSetVolume32
19#undef aSetLoop
20#undef aLoadADPCM
21#undef aADPCMdec
22#undef aS8Dec
23#undef aAddMixer
24#undef aDuplicate
25#undef aDMEMMove2
26#undef aResampleZoh
27#undef aDownsampleHalf
28#undef aEnvSetup1
29#undef aEnvSetup2
30#undef aFilter
31#undef aHiLoGain
32#undef aInterl
33#undef aUnkCmd3
34#undef aUnkCmd19
35
36void aClearBufferImpl(uint16_t addr, int nbytes);
37void aLoadBufferImpl(const void* source_addr, uint16_t dest_addr, uint16_t nbytes);
38void aSaveBufferImpl(uint16_t source_addr, int16_t* dest_addr, uint16_t nbytes);
39void aLoadADPCMImpl(int num_entries_times_16, const int16_t* book_source_addr);
40void aSetBufferImpl(uint8_t flags, uint16_t in, uint16_t out, uint16_t nbytes);
41void aInterleaveImpl(uint16_t left, uint16_t right);
42void aDMEMMoveImpl(uint16_t in_addr, uint16_t out_addr, int nbytes);
43void aSetLoopImpl(ADPCM_STATE* adpcm_loop_state);
44void aADPCMdecImpl(uint8_t flags, ADPCM_STATE state);
45void aResampleImpl(uint8_t flags, uint16_t pitch, RESAMPLE_STATE state);
46void aEnvSetup1Impl(uint8_t initial_vol_wet, uint16_t rate_wet, uint16_t rate_left, uint16_t rate_right);
47void aEnvSetup2Impl(uint16_t initial_vol_left, uint16_t initial_vol_right);
48void aEnvMixerImpl(uint16_t in_addr, uint16_t n_samples, bool swap_reverb,
49 bool neg_left, bool neg_right,
50 uint16_t dry_left_addr, uint16_t dry_right_addr,
51 uint16_t wet_left_addr, uint16_t wet_right_addr);
52void aMixImpl(int16_t gain, uint16_t in_addr, uint16_t out_addr, uint16_t count);
53void aS8DecImpl(uint8_t flags, ADPCM_STATE state);
54void aAddMixerImpl(uint16_t count, uint16_t in_addr, uint16_t out_addr);
55void aDuplicateImpl(uint16_t count, uint16_t in_addr, uint16_t out_addr);
56void aDMEMMove2Impl(uint8_t t, uint16_t in_addr, uint16_t out_addr, uint16_t count);
57void aDownsampleHalfImpl(uint16_t n_samples, uint16_t in_addr, uint16_t out_addr);
58void aResampleZohImpl(uint16_t pitch, uint16_t start_fract);
59void aInterlImpl(uint16_t in_addr, uint16_t out_addr, uint16_t n_samples);
60void aFilterImpl(uint8_t flags, uint16_t count_or_buf, int16_t* state_or_filter);
61void aHiLoGainImpl(uint8_t g, uint16_t count, uint16_t addr);
62void aUnkCmd3Impl(uint16_t a, uint16_t b, uint16_t c);
63void aUnkCmd19Impl(uint8_t f, uint16_t count, uint16_t out_addr, uint16_t in_addr);
64
65#define aSegment(pkt, s, b) \
66 do { \
67 } while (0)
68#define aClearBuffer(pkt, d, c) aClearBufferImpl(d, c)
69#define aLoadBuffer(pkt, s, d, c) aLoadBufferImpl(s, d, c)
70#define aSaveBuffer(pkt, s, d, c) aSaveBufferImpl(s, d, c)
71#define aLoadADPCM(pkt, c, d) aLoadADPCMImpl(c, d)
72#define aSetBuffer(pkt, f, i, o, c) aSetBufferImpl(f, i, o, c)
73#define aInterleave(pkt, o, l, r, c) aInterleaveImpl(l, r)
74#define aDMEMMove(pkt, i, o, c) aDMEMMoveImpl(i, o, c)
75#define aSetLoop(pkt, a) aSetLoopImpl(a)
76#define aADPCMdec(pkt, f, s) aADPCMdecImpl(f, s)
77#define aResample(pkt, f, p, s) aResampleImpl(f, p, s)
78#define aEnvSetup1(pkt, initialVolReverb, rampReverb, rampLeft, rampRight) \
79 aEnvSetup1Impl(initialVolReverb, rampReverb, rampLeft, rampRight)
80#define aEnvSetup2(pkt, initialVolLeft, initialVolRight) aEnvSetup2Impl(initialVolLeft, initialVolRight)
81#define aEnvMixer(pkt, inBuf, nSamples, swapReverb, negLeft, negRight, dryLeft, dryRight, wetLeft, wetRight) \
82 aEnvMixerImpl(inBuf, nSamples, swapReverb, negLeft, negRight, dryLeft, dryRight, wetLeft, wetRight)
83#define aMix(pkt, g, i, o, c) aMixImpl(g, i, o, c)
84#define aS8Dec(pkt, f, s) aS8DecImpl(f, s)
85#define aAddMixer(pkt, s, d, c) aAddMixerImpl(s, d, c)
86#define aDuplicate(pkt, s, d, c) aDuplicateImpl(s, d, c)
87#define aDMEMMove2(pkt, t, i, o, c) aDMEMMove2Impl(t, i, o, c)
88#define aResampleZoh(pkt, pitch, startFract) aResampleZohImpl(pitch, startFract)
89#define aInterl(pkt, dmemi, dmemo, count) aInterlImpl(dmemi, dmemo, count)
90#define aFilter(pkt, f, countOrBuf, addr) aFilterImpl(f, countOrBuf, addr)
91#define aDownsampleHalf(pkt, nSamples, i, o) aDownsampleHalfImpl(nSamples, i, o)
92#define aHiLoGain(pkt, g, buflen, i, a4) aHiLoGainImpl(g, buflen, i)
93#define aUnkCmd3(pkt, a1, a2, a3) aUnkCmd3Impl(a1, a2, a3)
94#define aUnkCmd19(pkt, a1, a2, a3, a4) aUnkCmd19Impl(a1, a2, a3, a4)
uint16_t in
Definition mixer.c:80
ADPCM_STATE * adpcm_loop_state
Definition mixer.c:89
uint16_t nbytes
Definition mixer.c:82
uint16_t out
Definition mixer.c:81
uint16_t rate_wet
Definition mixer.c:87
void aUnkCmd19Impl(uint8_t f, uint16_t count, uint16_t out_addr, uint16_t in_addr)
Definition mixer.c:1047
void aLoadADPCMImpl(int num_entries_times_16, const int16_t *book_source_addr)
Definition mixer.c:166
void aEnvSetup2Impl(uint16_t initial_vol_left, uint16_t initial_vol_right)
Definition mixer.c:597
void aUnkCmd3Impl(uint16_t a, uint16_t b, uint16_t c)
Definition mixer.c:1044
void aAddMixerImpl(uint16_t count, uint16_t in_addr, uint16_t out_addr)
Definition mixer.c:828
void aLoadBufferImpl(const void *source_addr, uint16_t dest_addr, uint16_t nbytes)
Definition mixer.c:150
void aSetBufferImpl(uint8_t flags, uint16_t in, uint16_t out, uint16_t nbytes)
Definition mixer.c:170
void aSetLoopImpl(ADPCM_STATE *adpcm_loop_state)
Definition mixer.c:224
void aFilterImpl(uint8_t flags, uint16_t count_or_buf, int16_t *state_or_filter)
Definition mixer.c:970
void aInterlImpl(uint16_t in_addr, uint16_t out_addr, uint16_t n_samples)
Definition mixer.c:943
void aDownsampleHalfImpl(uint16_t n_samples, uint16_t in_addr, uint16_t out_addr)
Definition mixer.c:916
void aEnvMixerImpl(uint16_t in_addr, uint16_t n_samples, bool swap_reverb, bool neg_left, bool neg_right, uint16_t dry_left_addr, uint16_t dry_right_addr, uint16_t wet_left_addr, uint16_t wet_right_addr)
Definition mixer.c:606
void aADPCMdecImpl(uint8_t flags, ADPCM_STATE state)
Definition mixer.c:232
void aClearBufferImpl(uint16_t addr, int nbytes)
Definition mixer.c:145
void aS8DecImpl(uint8_t flags, ADPCM_STATE state)
Definition mixer.c:791
void aResampleImpl(uint8_t flags, uint16_t pitch, RESAMPLE_STATE state)
Definition mixer.c:376
void aDMEMMoveImpl(uint16_t in_addr, uint16_t out_addr, int nbytes)
Definition mixer.c:219
void aInterleaveImpl(uint16_t left, uint16_t right)
Definition mixer.c:176
void aEnvSetup1Impl(uint8_t initial_vol_wet, uint16_t rate_wet, uint16_t rate_left, uint16_t rate_right)
Definition mixer.c:590
void aHiLoGainImpl(uint8_t g, uint16_t count, uint16_t addr)
Definition mixer.c:1018
void aMixImpl(int16_t gain, uint16_t in_addr, uint16_t out_addr, uint16_t count)
Definition mixer.c:699
void aDuplicateImpl(uint16_t count, uint16_t in_addr, uint16_t out_addr)
Definition mixer.c:871
void aSaveBufferImpl(uint16_t source_addr, int16_t *dest_addr, uint16_t nbytes)
Definition mixer.c:160
void aDMEMMove2Impl(uint8_t t, uint16_t in_addr, uint16_t out_addr, uint16_t count)
Definition mixer.c:883
void aResampleZohImpl(uint16_t pitch, uint16_t start_fract)
Definition mixer.c:895