diff --git a/include/coreinit/debug.h b/include/coreinit/debug.h index 808d6877..dd65f097 100644 --- a/include/coreinit/debug.h +++ b/include/coreinit/debug.h @@ -12,6 +12,7 @@ extern "C" { #endif typedef void (*DisassemblyPrintFn)(const char *fmt, ...); + typedef uint32_t (*DisassemblyFindSymbolFn)(uint32_t addr, char *symbolNameBuf, uint32_t symbolNameBufSize); typedef enum DisassemblePPCFlags @@ -72,6 +73,12 @@ OSIsECOBoot(); BOOL OSIsECOMode(); +void +__OSSetCrashRecovery(uint32_t crashRecovery); + +uint32_t +__OSGetCrashRecovery(); + BOOL DisassemblePPCOpcode(uint32_t *opcode, char *buffer, diff --git a/include/coreinit/memory.h b/include/coreinit/memory.h index cbe0c10d..cc0e047e 100644 --- a/include/coreinit/memory.h +++ b/include/coreinit/memory.h @@ -33,6 +33,12 @@ OSGetSharedData(OSSharedDataType type, void **outPtr, uint32_t *outSize); +/* + * Can only be called from Root (process) + */ +void +__OSRootLoadShared(); + /** * Moves chunks of memory around, similarly to memmove. Overlapping source and * destination regions are supported. diff --git a/include/coreinit/transition.h b/include/coreinit/transition.h new file mode 100644 index 00000000..10ab6a2a --- /dev/null +++ b/include/coreinit/transition.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int +__OSGetSavedAudioFlags(); + +int __OSGetTransitionAudioBuffer(void **buffer, + uint32_t *size); + +void +__OSSetTransitionAudioSize(uint32_t size); + +#ifdef __cplusplus +} +#endif diff --git a/include/sndcore2/core.h b/include/sndcore2/core.h index 1a4d4925..91b412a8 100644 --- a/include/sndcore2/core.h +++ b/include/sndcore2/core.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include "result.h" /** @@ -15,6 +16,7 @@ extern "C" { typedef struct AXProfile AXProfile; typedef struct AXInitParams AXInitParams; +typedef struct AXTransitionAudioBuffer AXTransitionAudioBuffer; typedef void(*AXFrameCallback)(void); @@ -51,6 +53,24 @@ WUT_CHECK_OFFSET(AXInitParams, 0x00, renderer); WUT_CHECK_OFFSET(AXInitParams, 0x08, pipeline); WUT_CHECK_SIZE(AXInitParams, 0x0C); +struct WUT_PACKED AXTransitionAudioBuffer { + WUT_UNKNOWN_BYTES(0x8); + uint32_t length; + WUT_UNKNOWN_BYTES(0x4); + void *audioBuffer; + uint32_t audioBufferLen; + AXDeviceMode tvMode; + WUT_UNKNOWN_BYTES(0xC); + AXDeviceMode drcMode; + WUT_UNKNOWN_BYTES(0xC); +}; +WUT_CHECK_OFFSET(AXTransitionAudioBuffer, 0x08, length); +WUT_CHECK_OFFSET(AXTransitionAudioBuffer, 0x10, audioBuffer); +WUT_CHECK_OFFSET(AXTransitionAudioBuffer, 0x14, audioBufferLen); +WUT_CHECK_OFFSET(AXTransitionAudioBuffer, 0x18, tvMode); +WUT_CHECK_OFFSET(AXTransitionAudioBuffer, 0x28, drcMode); +WUT_CHECK_SIZE(AXTransitionAudioBuffer, 0x38); + void AXInit(); @@ -89,6 +109,12 @@ AXGetInputSamplesPerFrame(); uint32_t AXGetInputSamplesPerSec(); +void +AXStartTransitionAudio(); + +void +AXSetUpTransitionAudio(AXTransitionAudioBuffer *buffer); + #ifdef __cplusplus } #endif diff --git a/tests/test_compile_headers_common/test_compile_headers_list.h b/tests/test_compile_headers_common/test_compile_headers_list.h index 443d0af7..3de16415 100644 --- a/tests/test_compile_headers_common/test_compile_headers_list.h +++ b/tests/test_compile_headers_common/test_compile_headers_list.h @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include