Optimize Sound Mixer (#182)
* Add sse2neon * Optimize Sound Mixer * Replace ssize_t with size_t * Remove a #ifndef NO_SEGMENTED_MEMORY block
This commit is contained in:
parent
c6f72a287f
commit
301bbd3cd9
|
|
@ -215,6 +215,12 @@ if (MSVC)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
#=================== SSE2NEON ===================
|
||||
set(SSE2NEON_DIR ${CMAKE_BINARY_DIR}/_deps/sse2neon)
|
||||
file(DOWNLOAD "https://raw.githubusercontent.com/DLTcollab/sse2neon/refs/heads/master/sse2neon.h" "${SSE2NEON_DIR}/sse2neon.h")
|
||||
|
||||
include_directories(${SSE2NEON_DIR})
|
||||
|
||||
#==============================================================================#
|
||||
# Libultraship Integration #
|
||||
#==============================================================================#
|
||||
|
|
|
|||
|
|
@ -129,9 +129,9 @@ void audio_dma_copy_async(uintptr_t devAddr, void* vAddr, size_t nbytes, OSMesgQ
|
|||
* Performs a partial asynchronous (normal priority) DMA copy. This is limited
|
||||
* to 0x1000 bytes transfer at once.
|
||||
*/
|
||||
void audio_dma_partial_copy_async(uintptr_t* devAddr, u8** vAddr, ssize_t* remaining, OSMesgQueue* queue,
|
||||
void audio_dma_partial_copy_async(uintptr_t* devAddr, u8** vAddr, size_t* remaining, OSMesgQueue* queue,
|
||||
OSIoMesg* mesg) {
|
||||
ssize_t transfer = (*remaining >= 0x1000 ? 0x1000 : *remaining);
|
||||
size_t transfer = (*remaining >= 0x1000 ? 0x1000 : *remaining);
|
||||
*remaining -= transfer;
|
||||
osInvalDCache(*vAddr, transfer);
|
||||
osPiStartDma(mesg, OS_MESG_PRI_NORMAL, OS_READ, *devAddr, *vAddr, transfer, queue);
|
||||
|
|
@ -174,7 +174,7 @@ void* dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8* dmaIndexRef) {
|
|||
u32 transfer;
|
||||
u32 i;
|
||||
u32 dmaIndex;
|
||||
ssize_t bufferPos;
|
||||
size_t bufferPos;
|
||||
UNUSED u32 pad;
|
||||
|
||||
if (arg2 != 0 || *dmaIndexRef >= sSampleDmaListSize1) {
|
||||
|
|
@ -604,11 +604,11 @@ uint8_t* load_sequence_immediate(s32 seqId, s32 arg1) {
|
|||
return GameEngine_LoadSequence(seqId)->data;
|
||||
}
|
||||
|
||||
struct CtlEntry* load_banks_immediate(s32 seqId, u8 *outDefaultBank) {
|
||||
struct CtlEntry* load_banks_immediate(s32 seqId, u8* outDefaultBank) {
|
||||
u32 bankId;
|
||||
struct AudioSequenceData *seqData = GameEngine_LoadSequence(seqId);
|
||||
struct CtlEntry *output;
|
||||
for(size_t i = 0; i < seqData->bankCount; i++) {
|
||||
struct AudioSequenceData* seqData = GameEngine_LoadSequence(seqId);
|
||||
struct CtlEntry* output;
|
||||
for (size_t i = 0; i < seqData->bankCount; i++) {
|
||||
output = GameEngine_LoadBank(bankId = seqData->banks[i]);
|
||||
}
|
||||
*outDefaultBank = bankId;
|
||||
|
|
@ -659,7 +659,7 @@ void load_sequence(u32 player, u32 seqId, s32 loadAsync) {
|
|||
}
|
||||
|
||||
void load_sequence_internal(u32 player, u32 seqId, s32 loadAsync) {
|
||||
struct SequencePlayer *seqPlayer = &gSequencePlayers[player];
|
||||
struct SequencePlayer* seqPlayer = &gSequencePlayers[player];
|
||||
|
||||
if (seqId >= gSequenceCount) {
|
||||
return;
|
||||
|
|
@ -808,7 +808,6 @@ void audio_init(void) {
|
|||
audio_set_player_volume(SEQ_PLAYER_LEVEL, CVarGetFloat("gMainMusicVolume", 1.0f));
|
||||
audio_set_player_volume(SEQ_PLAYER_ENV, CVarGetFloat("gEnvironmentVolume", 1.0f));
|
||||
audio_set_player_volume(SEQ_PLAYER_SFX, CVarGetFloat("gSFXMusicVolume", 1.0f));
|
||||
|
||||
}
|
||||
#else
|
||||
#ifdef VERSION_EU
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ struct SharedDma {
|
|||
void audio_init(void);
|
||||
void audio_dma_copy_immediate(u8* devAddr, void* vAddr, size_t nbytes);
|
||||
void audio_dma_copy_async(uintptr_t, void*, size_t, OSMesgQueue*, OSIoMesg*);
|
||||
void audio_dma_partial_copy_async(uintptr_t*, u8**, ssize_t*, OSMesgQueue*, OSIoMesg*);
|
||||
void audio_dma_partial_copy_async(uintptr_t*, u8**, size_t*, OSMesgQueue*, OSIoMesg*);
|
||||
void decrease_sample_dma_ttls(void);
|
||||
void* dma_sample_data(uintptr_t, u32, s32, u8*);
|
||||
void func_800BB030(s32);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -229,11 +229,6 @@ void process_notes(void) {
|
|||
note = &gNotes[i];
|
||||
playbackState = (struct NotePlaybackState*) ¬e->priority;
|
||||
if (note->parentLayer != NO_LAYER) {
|
||||
#ifndef NO_SEGMENTED_MEMORY
|
||||
if ((uintptr_t) playbackState->parentLayer < 0x7fffffffU) {
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VERSION_EU_1_0
|
||||
// Just threw these in here. They are probably wrong place and variables.
|
||||
|
|
|
|||
Loading…
Reference in New Issue