cleanup header includes and orders

Not complete, but a good start.
This commit is contained in:
Michael Panzlaff 2021-06-24 15:55:08 +02:00
parent ac7337cc64
commit 9ff579dac8
47 changed files with 356 additions and 231 deletions

View File

@ -0,0 +1,12 @@
#ifndef GUARD_SND_ALARM_H
#define GUARD_SND_ALARM_H
#include "global.h"
#include "SND_alarm_shared.h"
void SND_StopAlarm(u32 idx);
void SND_StartAlarm(u32 idx);
void SND_SetupAlarm();
void SND_AlarmInit();
#endif //GUARD_SND_ALARM_H

View File

@ -0,0 +1,8 @@
#ifndef GUARD_SND_EXCHANNEL_H
#define GUARD_SND_EXCHANNEL_H
#include "global.h"
bool SND_IsChannelActive(u32 idx);
#endif //GUARD_SND_EXCHANNEL_H

View File

@ -0,0 +1,4 @@
#ifndef GUARD_SND_WORK_H
#define GUARD_SND_WORK_H
#endif //GUARD_SND_WORK_H

View File

@ -6,6 +6,7 @@
#include "MI_dma.h"
#include "CARD_common.h"
#include "OS_tcm.h"
#include "mmap.h"
#define CARD_ROM_PAGE_SIZE 512

View File

@ -3,6 +3,8 @@
#include "fx.h"
#include "registers.h"
void GXi_NopClearFifo128_(void *reg);
void G3X_Init();
void G3X_ResetMtxStack();

View File

@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_MI_EXMEMORY_H
#define POKEDIAMOND_MI_EXMEMORY_H
#include "consts.h"
#include "registers.h"
typedef enum {
MI_PROCESSOR_ARM9 = 0,

View File

@ -5,8 +5,7 @@
#ifndef POKEDIAMOND_OS_ENTROPY_H
#define POKEDIAMOND_OS_ENTROPY_H
#include "consts.h"
#include "userInfo.h"
#include "registers.h"
void OS_GetLowEntropyData(u32 * arr);

View File

@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_ARM9_OS_INTERRUPT_H
#define POKEDIAMOND_ARM9_OS_INTERRUPT_H
#include "consts.h"
#include "registers.h"
#include "nitro/OS_interrupt_shared.h"
#define REG_OS_IME_IME_SHIFT 0

View File

@ -1,8 +1,8 @@
#ifndef POKEDIAMOND_OS_IRQHANDLER_H
#define POKEDIAMOND_OS_IRQHANDLER_H
#include "consts.h"
#include "OS_interrupt.h"
#include "mmap.h"
static inline void OS_ClearIrqCheckFlag(OSIrqMask intr)
{

View File

@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_ARM9_OS_IRQTABLE_H
#define POKEDIAMOND_ARM9_OS_IRQTABLE_H
#include "consts.h"
#include "mmap.h"
#include "OS_interrupt.h"
void OS_IrqDummy(void);

View File

@ -1,9 +1,8 @@
#ifndef POKEDIAMOND_ARM9_OS_RESET_H
#define POKEDIAMOND_ARM9_OS_RESET_H
#include "consts.h"
#include "nitro/OS_reset_shared.h"
#include "PXI_fifo.h"
#include "mmap.h"
void OS_InitReset(void);
void OS_ResetSystem(u32 parameter);

View File

@ -1,7 +1,7 @@
#ifndef NITRO_PAD_PAD_H_
#define NITRO_PAD_PAD_H_
#include "consts.h"
#include "registers.h"
//================================================================================
// BUTTONS

View File

@ -2,24 +2,13 @@
#define GUARD_SND_ALARM_H
#include "global.h"
#include "OS_alarm.h"
#include "nitro/SND_alarm_shared.h"
typedef void (*SNDAlarmCallback)(void *);
struct SNDAlarm {
u8 enable; // 0x00
u8 id; // 0x01
u16 unk_2; // 0x02
OSTick tick; // 0x04
OSTick period; // 0x0C
OSAlarm alarm; // 0x14
}; // size = 0x40
void SND_AlarmInit(void);
void SNDi_IncAlarmId(u32 idx);
u8 SNDi_SetAlarmHandler(u32 idx, SNDAlarmCallback cb, void *data);
void SNDi_CallAlarmHandler(s32 idx);
#define SND_ALARM_COUNT 8
#endif

View File

@ -4,6 +4,7 @@
#include "global.h"
#include "SND_bank.h"
#include "SND_work.h"
#include "SND_alarm.h"
void SND_StartSeq(s32 player, const void *seqBasePtr, u32 seqOffset, struct SNDBankData *bankData);
void SND_StopSeq(s32 player);

View File

@ -3,6 +3,8 @@
#include "global.h"
#include "nitro/SND_main_shared.h"
void SNDi_UnlockMutex(void);
void SNDi_LockMutex(void);
void SND_Init(void);
@ -21,165 +23,4 @@ typedef struct SNDBinaryBlockHeader {
u32 size; // 0x4
} SNDBinaryBlockHeader; // size = 0x8
struct SNDWaveParam {
u8 format; // 0x0
u8 loopEnabled; // 0x1
u16 samplerate; // 0x2
u16 timer; // 0x4
u16 loopStart; // 0x6
u32 loopLength; // 0x8
}; // size = 0xC
struct SNDLfoParam {
u8 target; // 0x0
u8 speed; // 0x1
u8 depth; // 0x2
u8 range; // 0x3
u16 delay; // 0x4
}; // size = 0x6
struct SNDLfo {
struct SNDLfoParam param; // 0x0
u16 delayCounter; // 0x6
u16 counter; // 0x8
}; // size = 0xA
struct SNDExChannel {
u8 id; // 0x00
u8 type; // 0x01
u8 envStatus; // 0x02
struct {
u8 active : 1;
u8 start : 1;
u8 autoSweep : 1;
u8 syncFlag : 5;
} flags; // 0x03
u8 panRange; // 0x04
u8 rootMidiKey; // 0x05
s16 userDecay2; // 0x06
u8 midiKey; // 0x08
u8 velocity; // 0x09
s8 initPan; // 0x0A
s8 userPan; // 0x0B
s16 userDecay; // 0x0C
s16 userPitch; // 0x0E
s32 envAttenuation; // 0x10
s32 sweepCounter; // 0x14
s32 sweepLength; // 0x18
u8 envAttack; // 0x1C
u8 envSustain; // 0x1D
u16 envDecay; // 0x1E
u16 envRelease; // 0x20
u8 priority; // 0x22
u8 pan; // 0x23
u16 volume; // 0x24
u16 timer; // 0x26
struct SNDLfo lfo; // 0x28
s16 sweepPitch; // 0x32
s32 length; // 0x34
struct SNDWaveParam waveParam; // 0x38
union {
const void *waveDataPtr;
u32 dutyCycle;
}; // 0x44
void (*callback)(struct SNDExChannel *chn, u32 status, void *userData); // 0x48
void *callbackUserData; // 0x4C
struct SNDExChannel *channelLLNext; // 0x50
}; // size = 0x54
#define SND_TRACK_COUNT_PER_PLAYER 16
#define SND_INVALID_TRACK_INDEX 0xFF
struct SNDPlayer {
struct {
u8 active : 1;
u8 prepared : 1;
u8 paused : 1;
} flags; // 0x0
u8 playerId; // 0x1
u8 unk_2[2]; // 0x2
u8 prio; // 0x4
u8 volume; // 0x5
s16 extFader; // 0x6
u8 tracks[SND_TRACK_COUNT_PER_PLAYER]; // 0x8
u16 tempo; // 0x18
u16 tempoRatio; // 0x1A
u16 tempoCounter; // 0x1C
u8 unk_1E[2]; // 0x1E
struct SNDBankData *bank; // 0x20
}; // size = 0x24
#define SND_TRACK_MAX_CALL 3
struct SNDBankData;
struct SNDTrack {
struct {
u8 active : 1;
u8 noteWait : 1;
u8 muted : 1;
u8 tie : 1;
u8 noteFinishWait : 1;
u8 portamento : 1;
u8 cmp : 1; // ???
u8 channelMask : 1;
} flags; // 0x00
u8 panRange; // 0x01
u16 program; // 0x02
u8 volume; // 0x04
u8 expression; // 0x05
s8 pitchBend; // 0x06
u8 bendRange; // 0x07
s8 pan; // 0x08
s8 extPan; // 0x09
s16 extFader; // 0x0A
s16 extPitch; // 0x0C
u8 envAttack; // 0x0E
u8 envDecay; // 0x0F
u8 envSustain; // 0x10
u8 envRelease; // 0x11
u8 priority; // 0x12
s8 transpose; // 0x13
u8 portamentoKey; // 0x14
u8 portamentoTime; // 0x15
s16 sweepPitch; // 0x16
struct SNDLfoParam mod; // 0x18
u16 channelMask; // 0x1E
s32 wait; // 0x20
const u8 *trackDataStart; // 0x24
const u8 *trackDataPos; // 0x28
const u8 *posCallStack[SND_TRACK_MAX_CALL]; // 0x34
u8 loopCount[SND_TRACK_MAX_CALL]; // 0x38
u8 callStackDepth; // 0x3B
struct SNDExChannel *channelLLHead; // 0x3C
}; // size = 0x40
#endif // GUARD_SND_MAIN_H

View File

@ -4,31 +4,7 @@
#include "global.h"
#include "SND_main.h"
#include "SND_alarm.h"
#define SND_PLAYER_COUNT 16
#define SND_CHANNEL_COUNT 16
#define SND_TRACK_COUNT 32
struct SNDWork {
struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00
struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540
struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780
struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80
}; // size = 0x1180
struct SNDSharedWork {
u32 finishedCommandTag; // 0x0
u32 playerStatus; // 0x4
u16 channelStatus; // 0x8
u16 captureStatus; // 0xA
u8 unk_C[0x14]; // 0xC
struct {
s16 localVars[16]; // local 0x0
u32 tickCounter; // local 0x20
} players[SND_PLAYER_COUNT]; // 0x20
s16 globalVars[16]; // 0x260
}; // size = 0x280
#include "nitro/SND_work_shared.h"
struct SNDDriverInfo {
struct SNDWork work; // 0x0000

View File

@ -2,9 +2,6 @@
#define POKEDIAMOND_ARM9_CONSTS_H
#include "nitro/consts_shared.h"
#include "mmap.h"
#include "registers.h"
#include "systemWork.h"
#define HW_C5_PERMIT_MASK 0xf

View File

@ -1,6 +1,8 @@
#ifndef GUARD_FX_H
#define GUARD_FX_H
#include "nitro/types.h"
typedef s16 fx16;
typedef s32 fx32;
typedef s64 fx64;

View File

@ -1,7 +1,6 @@
#ifndef POKEDIAMOND_ARM9_SYSTEMWORK_H
#define POKEDIAMOND_ARM9_SYSTEMWORK_H
#include "OS_context.h"
#include "nitro/OS_systemWork_shared.h"
#endif //POKEDIAMOND_ARM9_SYSTEMWORK_H

View File

@ -8,6 +8,7 @@
#include "OS_cache.h"
#include "MB_mb.h"
#include "PXI_fifo.h"
#include "mmap.h"
CARDiCommon cardi_common ALIGN(32);
static CARDiCommandArg cardi_arg ALIGN(32);

View File

@ -8,6 +8,7 @@
#include "PAD_pad.h"
#include "SPI_pm.h"
#include "syscall.h"
#include "mmap.h"
static CARDPulledOutCallback CARD_UserCallback;
static BOOL CARDi_IsPulledOutFlag = FALSE;

View File

@ -1,6 +1,6 @@
#include "CP_context.h"
#include "function_target.h"
#include "consts.h"
#include "registers.h"
ARM_FUNC asm void CP_SaveContext(register CPContext *context)
{

View File

@ -7,6 +7,7 @@
#include "PXI_fifo.h"
#include "MI_dma.h"
#include "MI_memory.h"
#include "mmap.h"
CTRDGWork CTRDGi_Work;

View File

@ -1,6 +1,8 @@
#include "global.h"
#include "fx.h"
#include "global.h"
#include "registers.h"
ARM_FUNC fx32 FX_Div(fx32 numerator, fx32 denominator){
FX_DivAsync(numerator, denominator);

View File

@ -1,6 +1,8 @@
#include "global.h"
#include "fx.h"
#include "global.h"
#include "registers.h"
ARM_FUNC void VEC_Add(struct Vecx32 *a, struct Vecx32 *b, struct Vecx32 *dst){
dst->x = a->x + b->x;
dst->y = a->y + b->y;

View File

@ -1,6 +1,9 @@
#include "global.h"
#include "gx.h"
#include "global.h"
#include "OS_spinLock.h"
#include "OS_terminate_proc.h"
u32 GXi_DmaId = 3;
vu16 GXi_VRamLockId = 0;

View File

@ -1,7 +1,8 @@
#include "function_target.h"
#include "consts.h"
#include "MI_wram.h"
#include "global.h"
#include "registers.h"
ARM_FUNC void MI_SetWramBank(MIWram cnt)
{
reg_GX_VRAMCNT_WRAM = (u8)cnt;

View File

@ -1,8 +1,9 @@
#include "function_target.h"
#include "consts.h"
#include "OS_arena.h"
#include "global.h"
#include "OS_protectionRegion.h"
#include "OS_emulator.h"
#include "mmap.h"
static BOOL OSi_Initialized = FALSE;
static BOOL OSi_MainExArenaEnabled = FALSE;

View File

@ -2,10 +2,13 @@
// Created by red031000 on 2020-05-03.
//
#include "function_target.h"
#include "consts.h"
#include "OS_entropy.h"
#include "global.h"
#include "registers.h"
#include "systemWork.h"
#include "userInfo.h"
ARM_FUNC void OS_GetLowEntropyData(u32 * arr)
{
const OSSystemWork* work = OS_GetSystemWork();

View File

@ -1,6 +1,8 @@
#include "OS_exception.h"
#include "function_target.h"
#include "global.h"
#include "OS_protectionUnit.h"
#include "mmap.h"
static OSiExContext OSi_ExContext;

View File

@ -1,6 +1,8 @@
#include "consts.h"
#include "function_target.h"
#include "OS_interrupt.h"
#include "global.h"
#include "registers.h"
#include "mmap.h"
#include "OS_thread.h"
#pragma optimize_for_size on

View File

@ -1,5 +1,7 @@
#include "function_target.h"
#include "OS_ownerInfo.h"
#include "global.h"
#include "systemWork.h"
#include "MI_memory.h"
ARM_FUNC void OS_GetMacAddress(u8 *macAddress)

View File

@ -1,5 +1,6 @@
#include "function_target.h"
#include "OS_reset.h"
#include "global.h"
#include "MB_mb.h"
#include "OS_terminate_proc.h"
#include "OS_interrupt.h"

View File

@ -3,9 +3,10 @@
//
#include "OS_spinLock.h"
#include "OS_system.h"
#include "function_target.h"
#include "consts.h"
#include "mmap.h"
#include "MI_exMemory.h"
extern void MIi_CpuClear32(u32 param1, void * addr, u32 length); //not too sure about names

View File

@ -6,7 +6,8 @@
#include "OS_system.h"
#include "OS_context.h"
#include "OS_terminate_proc.h"
#include "consts.h"
#include "systemWork.h"
#include "mmap.h"
extern void SDK_SYS_STACKSIZE(void);
extern void SDK_IRQ_STACKSIZE(void);

View File

@ -1,7 +1,10 @@
#include "SND_alarm.h"
#include "SND_command.h"
#include "SND_work.h"
#include "OS_emulator.h"
#include "OS_system.h"
#include "OS_cache.h"
#include "PXI_fifo.h"
#define SND_CMD_WAIT_QUEUE_COUNT 8

View File

@ -1,6 +1,8 @@
#include "global.h"
#include "custom_allocator.h"
#include "global.h"
#include "OS_alloc.h"
static FreeFunc sDestructor;
static AllocFunc sAllocator;

View File

@ -1,6 +1,8 @@
#include "mod21_02254A6C.h"
#include "global.h"
#include "heap.h"
#include "mod21_02254A6C.h"
#include "registers.h"
#include "MI_memory.h"
extern void MOD20_022536F4(u32 *param0, u32 param1);

View File

@ -3,6 +3,7 @@
#include "save_block_2.h"
#include "heap.h"
#include "CARD_backup.h"
#include "OS_spinLock.h"
#pragma thumb on

View File

@ -1,5 +1,11 @@
#include "timer3.h"
#include "OS_interrupt.h"
#include "OS_irqTable.h"
#include "OS_timer.h"
#include "OS_system.h"
#include "registers.h"
static BOOL timer3_needReset;
static vu64 timer3_counter;

View File

@ -5,7 +5,7 @@
#include "MWC_string.h"
#include "function_target.h"
#include "nitro.h"
#include "nitro/types.h"
#include "constants/global.h"
#include "error_handling.h"

View File

@ -2,6 +2,7 @@
#define POKEDIAMOND_HEAP_H
#include "global.h"
#include "nitro/OS_arena_shared.h"
#include "NNS_FND_expheap.h"
#include "NNS_FND_allocator.h"

View File

@ -15,6 +15,7 @@
#include "nitro/types.h"
#include "nitro/OS_tick_shared.h"
#include "nitro/OS_thread_shared.h"
typedef void (*OSAlarmHandler) (void *);

View File

@ -15,6 +15,9 @@
#include "nitro/types.h"
/* UGLY HACK: include proc specific header for OSContext */
#include "OS_context.h"
typedef struct OSiAlarm OSAlarm;
typedef struct _OSThread OSThread;

View File

@ -0,0 +1,30 @@
/*
* NOTE:
* This file is shared between ARM9 and ARM7
* DO NOT PUT PROC SPECIFIC CODE IN HERE
* Thank You!
*/
/*
* DO NOT INCLUDE THIS FILE DIRECTLY
* Include SND_alarm.h from the specific proc's lib
*/
#ifndef POKEDIAMOND_SND_ALARM_SHARED_H
#define POKEDIAMOND_SND_ALARM_SHARED_H
#include "nitro/OS_tick_shared.h"
#include "nitro/OS_alarm_shared.h"
struct SNDAlarm {
u8 enable; // 0x00
u8 id; // 0x01
u16 unk_2; // 0x02
OSTick tick; // 0x04
OSTick period; // 0x0C
OSAlarm alarm; // 0x14
}; // size = 0x40
#define SND_ALARM_COUNT 8
#endif //POKEDIAMOND_SND_ALARM_SHARED_H

View File

@ -0,0 +1,176 @@
/*
* NOTE:
* This file is shared between ARM9 and ARM7
* DO NOT PUT PROC SPECIFIC CODE IN HERE
* Thank You!
*/
/*
* DO NOT INCLUDE THIS FILE DIRECTLY
* Include SND_main.h from the specific proc's lib
*/
#ifndef POKEDIAMOND_SND_MAIN_SHARED_H
#define POKEDIAMOND_SND_MAIN_SHARED_H
struct SNDWaveParam {
u8 format; // 0x0
u8 loopEnabled; // 0x1
u16 samplerate; // 0x2
u16 timer; // 0x4
u16 loopStart; // 0x6
u32 loopLength; // 0x8
}; // size = 0xC
struct SNDLfoParam {
u8 target; // 0x0
u8 speed; // 0x1
u8 depth; // 0x2
u8 range; // 0x3
u16 delay; // 0x4
}; // size = 0x6
struct SNDLfo {
struct SNDLfoParam param; // 0x0
u16 delayCounter; // 0x6
u16 counter; // 0x8
}; // size = 0xA
struct SNDExChannel {
u8 id; // 0x00
u8 type; // 0x01
u8 envStatus; // 0x02
struct {
u8 active : 1;
u8 start : 1;
u8 autoSweep : 1;
u8 syncFlag : 5;
} flags; // 0x03
u8 panRange; // 0x04
u8 rootMidiKey; // 0x05
s16 userDecay2; // 0x06
u8 midiKey; // 0x08
u8 velocity; // 0x09
s8 initPan; // 0x0A
s8 userPan; // 0x0B
s16 userDecay; // 0x0C
s16 userPitch; // 0x0E
s32 envAttenuation; // 0x10
s32 sweepCounter; // 0x14
s32 sweepLength; // 0x18
u8 envAttack; // 0x1C
u8 envSustain; // 0x1D
u16 envDecay; // 0x1E
u16 envRelease; // 0x20
u8 priority; // 0x22
u8 pan; // 0x23
u16 volume; // 0x24
u16 timer; // 0x26
struct SNDLfo lfo; // 0x28
s16 sweepPitch; // 0x32
s32 length; // 0x34
struct SNDWaveParam waveParam; // 0x38
union {
const void *waveDataPtr;
u32 dutyCycle;
}; // 0x44
void (*callback)(struct SNDExChannel *chn, u32 status, void *userData); // 0x48
void *callbackUserData; // 0x4C
struct SNDExChannel *channelLLNext; // 0x50
}; // size = 0x54
#define SND_TRACK_COUNT_PER_PLAYER 16
#define SND_INVALID_TRACK_INDEX 0xFF
struct SNDBankData;
struct SNDPlayer {
struct {
u8 active : 1;
u8 prepared : 1;
u8 paused : 1;
} flags; // 0x0
u8 playerId; // 0x1
u8 unk_2[2]; // 0x2
u8 prio; // 0x4
u8 volume; // 0x5
s16 extFader; // 0x6
u8 tracks[SND_TRACK_COUNT_PER_PLAYER]; // 0x8
u16 tempo; // 0x18
u16 tempoRatio; // 0x1A
u16 tempoCounter; // 0x1C
u8 unk_1E[2]; // 0x1E
struct SNDBankData *bank; // 0x20
}; // size = 0x24
#define SND_TRACK_MAX_CALL 3
struct SNDTrack {
struct {
u8 active : 1;
u8 noteWait : 1;
u8 muted : 1;
u8 tie : 1;
u8 noteFinishWait : 1;
u8 portamento : 1;
u8 cmp : 1; // ???
u8 channelMask : 1;
} flags; // 0x00
u8 panRange; // 0x01
u16 program; // 0x02
u8 volume; // 0x04
u8 expression; // 0x05
s8 pitchBend; // 0x06
u8 bendRange; // 0x07
s8 pan; // 0x08
s8 extPan; // 0x09
s16 extFader; // 0x0A
s16 extPitch; // 0x0C
u8 envAttack; // 0x0E
u8 envDecay; // 0x0F
u8 envSustain; // 0x10
u8 envRelease; // 0x11
u8 priority; // 0x12
s8 transpose; // 0x13
u8 portamentoKey; // 0x14
u8 portamentoTime; // 0x15
s16 sweepPitch; // 0x16
struct SNDLfoParam mod; // 0x18
u16 channelMask; // 0x1E
s32 wait; // 0x20
const u8 *trackDataStart; // 0x24
const u8 *trackDataPos; // 0x28
const u8 *posCallStack[SND_TRACK_MAX_CALL]; // 0x34
u8 loopCount[SND_TRACK_MAX_CALL]; // 0x38
u8 callStackDepth; // 0x3B
struct SNDExChannel *channelLLHead; // 0x3C
}; // size = 0x40
#endif //POKEDIAMOND_SND_MAIN_SHARED_H

View File

@ -0,0 +1,46 @@
/*
* NOTE:
* This file is shared between ARM9 and ARM7
* DO NOT PUT PROC SPECIFIC CODE IN HERE
* Thank You!
*/
/*
* DO NOT INCLUDE THIS FILE DIRECTLY
* Include SND_work.h from the specific proc's lib
*/
#ifndef POKEDIAMOND_SND_WORK_SHARED_H
#define POKEDIAMOND_SND_WORK_SHARED_H
#include "nitro/SND_alarm_shared.h"
#include "nitro/SND_main_shared.h"
#define SND_PLAYER_COUNT 16
#define SND_CHANNEL_COUNT 16
#define SND_TRACK_COUNT 32
struct SNDWork {
struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00
struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540
struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780
struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80
}; // size = 0x1180
struct SNDSharedWork {
u32 finishedCommandTag; // 0x0
u32 playerStatus; // 0x4
u16 channelStatus; // 0x8
u16 captureStatus; // 0xA
u8 unk_C[0x14]; // 0xC
struct {
s16 localVars[16]; // local 0x0
u32 tickCounter; // local 0x20
} players[SND_PLAYER_COUNT]; // 0x20
s16 globalVars[16]; // 0x260
}; // size = 0x280
extern struct SNDWork SNDi_Work;
extern struct SNDSharedWork *SNDi_SharedWork;
#endif //POKEDIAMOND_SND_WORK_SHARED_H