Files
pico-launcher/arm9/source/bgm/bcstm.h
2025-11-25 17:41:31 +01:00

103 lines
1.6 KiB
C

#pragma once
#include "common.h"
#define BCSTM_FORMAT_DSP_ADPCM 2
struct bcstm_ref_t
{
u16 typeId;
u16 padding;
u32 offset;
};
struct bcstm_sized_ref_t
{
u16 typeId;
u16 padding;
u32 offset;
u32 size;
};
struct bcstm_ref_table_t
{
u32 count;
bcstm_ref_t references[1];
};
struct bcstm_header_t
{
u32 signature;
u16 endianness;
u16 headerSize;
u32 version;
u32 fileSize;
u16 nrBlocks;
u16 reserved;
bcstm_sized_ref_t infoBlockRef;
bcstm_sized_ref_t seekBlockRef;
bcstm_sized_ref_t dataBlockRef;
};
struct bcstm_info_stream_t
{
u8 format;
u8 loop;
u8 nrChannels;
u8 padding;
u32 sampleRate;
u32 loopStart;
u32 loopEnd;
u32 nrBlocks;
u32 blockSize;
u32 blockSampleCount;
u32 lastBlockSize;
u32 lastBlockSampleCount;
u32 lastBlockPaddedSize;
u32 seekEntrySize;
u32 seekInterval;
bcstm_ref_t dataRef;
};
struct bcstm_info_channel_t
{
bcstm_ref_t codecInfoRef;
};
struct bcstm_dspadpcm_context_t
{
u8 predictorAndScale;
u8 reserved;
s16 last1;
s16 last2;
};
struct alignas(4) bcstm_dspadpcm_t
{
s16 coefs[16];
bcstm_dspadpcm_context_t context;
bcstm_dspadpcm_context_t loopContext;
};
struct bcstm_info_t
{
u32 signature;
u32 sectionSize;
bcstm_ref_t streamInfoRef;
bcstm_ref_t trackInfoRef;
bcstm_ref_t channelInfoRef;
};
struct bcstm_seek_t
{
u32 signature;
u32 sectionSize;
u8 seekData[1];
};
struct bcstm_data_t
{
u32 signature;
u32 sectionSize;
u8 data[1];
};