mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-22 05:49:01 -04:00
Reorganize library code into libs/ (#3119)
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN}
* Update configure.py and project.py for new libs structure
* Refactor `#include <dolphin/x.h>` -> `<x.h>`
* Remove `__REVOLUTION_SDK__` forwards from dolphin
* Fix dolphin/ references in revolution
* Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__`
* Always build TRK against dolphin headers
* Resolve revolution SDK header resolution issues
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
#if DEBUG
|
||||
const char* __AXVersion = "<< Dolphin SDK - AX\tdebug build: Apr 5 2004 03:56:21 (0x2301) >>";
|
||||
#else
|
||||
const char* __AXVersion = "<< Dolphin SDK - AX\trelease build: Apr 5 2004 04:15:05 (0x2301) >>";
|
||||
#endif
|
||||
|
||||
void AXInit(void) {
|
||||
AXInitEx(0);
|
||||
}
|
||||
|
||||
void AXInitEx(u32 outputBufferMode) {
|
||||
#if DEBUG
|
||||
OSReport("Initializing AX\n");
|
||||
#endif
|
||||
OSRegisterVersion(__AXVersion);
|
||||
|
||||
__AXAllocInit();
|
||||
__AXVPBInit();
|
||||
__AXSPBInit();
|
||||
__AXAuxInit();
|
||||
__AXClInit();
|
||||
__AXOutInit(outputBufferMode);
|
||||
}
|
||||
|
||||
void AXQuit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Shutting down AX\n");
|
||||
#endif
|
||||
__AXAllocQuit();
|
||||
__AXVPBQuit();
|
||||
__AXSPBQuit();
|
||||
__AXAuxQuit();
|
||||
__AXClQuit();
|
||||
__AXOutQuit();
|
||||
}
|
||||
@@ -0,0 +1,248 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
static AXVPB* __AXStackHead[AX_PRIORITY_STACKS];
|
||||
static AXVPB* __AXStackTail[AX_PRIORITY_STACKS];
|
||||
|
||||
static AXVPB* __AXCallbackStack;
|
||||
|
||||
static u32 __AXCheckStacks(void) {
|
||||
u32 i;
|
||||
u32 voices;
|
||||
AXVPB* voice;
|
||||
|
||||
voices = 0;
|
||||
for (i = 0; i < 32; i++) {
|
||||
voice = __AXStackHead[i];
|
||||
while (voice != 0) {
|
||||
voices++;
|
||||
if (voices > 64) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
voice = voice->next;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
AXVPB* __AXGetStackHead(u32 priority) {
|
||||
ASSERTLINE(97, priority < AX_PRIORITY_STACKS);
|
||||
return __AXStackHead[priority];
|
||||
}
|
||||
|
||||
void __AXServiceCallbackStack(void) {
|
||||
AXVPB* p;
|
||||
|
||||
for (p = __AXPopCallbackStack(); p; p = __AXPopCallbackStack()) {
|
||||
if (p->priority != 0) {
|
||||
if (p->callback) {
|
||||
p->callback(p);
|
||||
}
|
||||
|
||||
__AXRemoveFromStack(p);
|
||||
__AXPushFreeStack(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void __AXInitVoiceStacks(void) {
|
||||
u32 i;
|
||||
|
||||
__AXCallbackStack = NULL;
|
||||
for (i = 0; i < AX_PRIORITY_STACKS; i++) {
|
||||
__AXStackHead[i] = __AXStackTail[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void __AXAllocInit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Initializing AXAlloc code module\n");
|
||||
#endif
|
||||
__AXInitVoiceStacks();
|
||||
}
|
||||
|
||||
void __AXAllocQuit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Shutting down AXAlloc code module\n");
|
||||
#endif
|
||||
__AXInitVoiceStacks();
|
||||
}
|
||||
|
||||
void __AXPushFreeStack(AXVPB* p) {
|
||||
ASSERTLINE(168, p->priority);
|
||||
p->next = __AXStackHead[0];
|
||||
__AXStackHead[0] = p;
|
||||
p->priority = 0;
|
||||
}
|
||||
|
||||
AXVPB* __AXPopFreeStack(void) {
|
||||
AXVPB* p;
|
||||
|
||||
p = (void*)(u32)&__AXStackHead[0]->next;
|
||||
if (p) {
|
||||
__AXStackHead[0] = p->next;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
void __AXPushCallbackStack(AXVPB* p) {
|
||||
p->next1 = __AXCallbackStack;
|
||||
__AXCallbackStack = p;
|
||||
}
|
||||
|
||||
AXVPB* __AXPopCallbackStack(void) {
|
||||
AXVPB* p;
|
||||
|
||||
p = (void*)(u32)&__AXCallbackStack[0];
|
||||
if (p) {
|
||||
__AXCallbackStack = p->next1;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
void __AXRemoveFromStack(AXVPB* p) {
|
||||
u32 i;
|
||||
AXVPB* head;
|
||||
AXVPB* tail;
|
||||
|
||||
ASSERTLINE(219, p->priority);
|
||||
|
||||
i = p->priority;
|
||||
head = __AXStackHead[i];
|
||||
tail = __AXStackTail[i];
|
||||
if (head == tail) {
|
||||
__AXStackHead[i] = __AXStackTail[i] = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (p == head) {
|
||||
__AXStackHead[i] = p->next;
|
||||
__AXStackHead[i]->prev = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (p == tail) {
|
||||
__AXStackTail[i] = p->prev;
|
||||
__AXStackTail[i]->next = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
head = p->prev;
|
||||
tail = p->next;
|
||||
head->next = tail;
|
||||
tail->prev = head;
|
||||
}
|
||||
|
||||
void __AXPushStackHead(AXVPB* p, u32 priority) {
|
||||
ASSERTLINE(261, priority);
|
||||
ASSERTLINE(262, priority < AX_PRIORITY_STACKS);
|
||||
|
||||
p->next = __AXStackHead[priority];
|
||||
p->prev = 0;
|
||||
|
||||
if (p->next) {
|
||||
__AXStackHead[priority]->prev = p;
|
||||
__AXStackHead[priority] = p;
|
||||
} else {
|
||||
__AXStackTail[priority] = p;
|
||||
__AXStackHead[priority] = p;
|
||||
}
|
||||
|
||||
p->priority = priority;
|
||||
}
|
||||
|
||||
AXVPB* __AXPopStackFromBottom(u32 priority) {
|
||||
AXVPB* p;
|
||||
|
||||
ASSERTLINE(287, priority);
|
||||
ASSERTLINE(288, priority < AX_PRIORITY_STACKS);
|
||||
|
||||
p = NULL;
|
||||
if (__AXStackHead[priority]) {
|
||||
if (__AXStackHead[priority] == __AXStackTail[priority]) {
|
||||
p = __AXStackHead[priority];
|
||||
__AXStackHead[priority] = __AXStackTail[priority] = 0;
|
||||
} else if (__AXStackTail[priority]) {
|
||||
p = __AXStackTail[priority];
|
||||
__AXStackTail[priority] = p->prev;
|
||||
__AXStackTail[priority]->next = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
void AXFreeVoice(AXVPB* p) {
|
||||
BOOL old;
|
||||
|
||||
ASSERTLINE(322, p);
|
||||
ASSERTMSGLINE(326, p->priority != 0, "Calling AXFreeVoice() for voice that is already free\n");
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
__AXRemoveFromStack(p);
|
||||
if (p->pb.state == 1) {
|
||||
p->depop = 1;
|
||||
}
|
||||
__AXSetPBDefault(p);
|
||||
__AXPushFreeStack(p);
|
||||
|
||||
ASSERTMSGLINE(343, __AXCheckStacks() != 0, "Voice list is trashed!\n");
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
AXVPB* AXAcquireVoice(u32 priority, void (*callback)(void*), u32 userContext) {
|
||||
BOOL old;
|
||||
AXVPB* p;
|
||||
u32 i;
|
||||
|
||||
ASSERTLINE(361, priority);
|
||||
ASSERTLINE(362, priority < AX_PRIORITY_STACKS);
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p = __AXPopFreeStack();
|
||||
if (p == 0) {
|
||||
for (i = 1; i < priority; i++) {
|
||||
p = __AXPopStackFromBottom(i);
|
||||
if (p) {
|
||||
if (p->pb.state == 1) {
|
||||
p->depop = 1;
|
||||
}
|
||||
if (p->callback != 0) {
|
||||
p->callback(p);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (p) {
|
||||
__AXPushStackHead(p, priority);
|
||||
p->callback = callback;
|
||||
p->userContext = userContext;
|
||||
__AXSetPBDefault(p);
|
||||
}
|
||||
|
||||
ASSERTMSGLINE(410, __AXCheckStacks() != 0, "Voice list is trashed!\n");
|
||||
OSRestoreInterrupts(old);
|
||||
return p;
|
||||
}
|
||||
|
||||
void AXSetVoicePriority(AXVPB* p, u32 priority) {
|
||||
BOOL old;
|
||||
|
||||
ASSERTLINE(424, p);
|
||||
ASSERTMSGLINE(428, p->priority != 0, "Calling AXSetVoicePriority() for voice that is already free\n");
|
||||
ASSERTMSGLINE(433, priority, "Do not set voice priority to 0, use AXFreeVoice() to free voice\n");
|
||||
ASSERTLINE(435, priority < AX_PRIORITY_STACKS);
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
__AXRemoveFromStack(p);
|
||||
__AXPushStackHead(p, priority);
|
||||
|
||||
ASSERTMSGLINE(442, __AXCheckStacks() != 0, "Voice list is trashed!\n");
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
static s32 __AXBufferAuxA[3][480] ATTRIBUTE_ALIGN(32);
|
||||
static s32 __AXBufferAuxB[3][480] ATTRIBUTE_ALIGN(32);
|
||||
|
||||
static void (* __AXCallbackAuxA)(void*, void*);
|
||||
static void (* __AXCallbackAuxB)(void*, void*);
|
||||
static void* __AXContextAuxA;
|
||||
static void* __AXContextAuxB;
|
||||
static s32* __AXAuxADspWrite;
|
||||
static s32* __AXAuxADspRead;
|
||||
static s32* __AXAuxBDspWrite;
|
||||
static s32* __AXAuxBDspRead;
|
||||
static u32 __AXAuxDspWritePosition;
|
||||
static u32 __AXAuxDspReadPosition;
|
||||
static u32 __AXAuxDspWritePositionDpl2;
|
||||
static u32 __AXAuxDspReadPositionDpl2;
|
||||
static u32 __AXAuxCpuReadWritePosition;
|
||||
|
||||
void __AXAuxInit(void) {
|
||||
int i;
|
||||
s32* pA;
|
||||
s32* pB;
|
||||
|
||||
#if DEBUG
|
||||
OSReport("Initializing AXAux code module\n");
|
||||
#endif
|
||||
__AXCallbackAuxA = NULL;
|
||||
__AXCallbackAuxB = NULL;
|
||||
__AXContextAuxA = 0;
|
||||
__AXContextAuxB = 0;
|
||||
__AXAuxDspWritePosition = 0;
|
||||
__AXAuxDspReadPosition = 1;
|
||||
__AXAuxDspWritePositionDpl2 = 0;
|
||||
__AXAuxDspReadPositionDpl2 = 1;
|
||||
__AXAuxCpuReadWritePosition = 2;
|
||||
|
||||
pA = (s32*)&__AXBufferAuxA;
|
||||
pB = (s32*)&__AXBufferAuxB;
|
||||
|
||||
for (i = 0; i < 480; i++) {
|
||||
*(pA) = 0; pA++;
|
||||
*(pB) = 0; pB++;
|
||||
}
|
||||
}
|
||||
|
||||
void __AXAuxQuit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Shutting down AXAux code module\n");
|
||||
#endif
|
||||
__AXCallbackAuxA = NULL;
|
||||
__AXCallbackAuxB = NULL;
|
||||
}
|
||||
|
||||
void __AXGetAuxAInput(u32* p) {
|
||||
if (__AXCallbackAuxA) {
|
||||
*p = (u32)&__AXBufferAuxA[__AXAuxDspWritePosition][0];
|
||||
} else {
|
||||
*p = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void __AXGetAuxAInputDpl2(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxB[__AXAuxDspWritePosition][320];
|
||||
}
|
||||
|
||||
void __AXGetAuxAOutput(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxA[__AXAuxDspReadPosition][0];
|
||||
}
|
||||
|
||||
void __AXGetAuxAOutputDpl2R(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxA[__AXAuxDspReadPosition][160];
|
||||
}
|
||||
|
||||
void __AXGetAuxAOutputDpl2Ls(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxA[__AXAuxDspReadPosition][320];
|
||||
}
|
||||
|
||||
void __AXGetAuxAOutputDpl2Rs(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxB[__AXAuxDspReadPosition][320];
|
||||
}
|
||||
|
||||
void __AXGetAuxBInput(u32* p) {
|
||||
if (__AXCallbackAuxB) {
|
||||
*p = (u32)&__AXBufferAuxB[__AXAuxDspWritePosition][0];
|
||||
} else {
|
||||
*p = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void __AXGetAuxBOutput(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxB[__AXAuxDspReadPosition][0];
|
||||
}
|
||||
|
||||
void __AXGetAuxBForDPL2(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxB[__AXAuxDspWritePositionDpl2][0];
|
||||
}
|
||||
|
||||
void __AXGetAuxBOutputDPL2(u32* p) {
|
||||
*p = (u32)&__AXBufferAuxB[__AXAuxDspReadPositionDpl2][0];
|
||||
}
|
||||
|
||||
void __AXProcessAux(void) {
|
||||
__AXAuxADspWrite = &__AXBufferAuxA[__AXAuxDspWritePosition][0];
|
||||
__AXAuxADspRead = &__AXBufferAuxA[__AXAuxDspReadPosition][0];
|
||||
__AXAuxBDspWrite = &__AXBufferAuxB[__AXAuxDspWritePosition][0];
|
||||
__AXAuxBDspRead = &__AXBufferAuxB[__AXAuxDspReadPosition][0];
|
||||
|
||||
if (__AXCallbackAuxA) {
|
||||
if (__AXClMode == 2) {
|
||||
AX_AUX_DATA_DPL2 auxData;
|
||||
auxData.l = &__AXBufferAuxA[__AXAuxCpuReadWritePosition][0];
|
||||
auxData.r = &__AXBufferAuxA[__AXAuxCpuReadWritePosition][160];
|
||||
auxData.ls = &__AXBufferAuxA[__AXAuxCpuReadWritePosition][320];
|
||||
auxData.rs = &__AXBufferAuxB[__AXAuxCpuReadWritePosition][320];
|
||||
DCInvalidateRange(auxData.l, 0x780);
|
||||
DCInvalidateRange(auxData.rs, 0x280);
|
||||
__AXCallbackAuxA(&auxData.l, __AXContextAuxA);
|
||||
DCFlushRangeNoSync(auxData.l, 0x780);
|
||||
DCFlushRangeNoSync(auxData.rs, 0x280);
|
||||
} else {
|
||||
AX_AUX_DATA auxData;
|
||||
auxData.l = &__AXBufferAuxA[__AXAuxCpuReadWritePosition][0];
|
||||
auxData.r = &__AXBufferAuxA[__AXAuxCpuReadWritePosition][160];
|
||||
auxData.s = &__AXBufferAuxA[__AXAuxCpuReadWritePosition][320];
|
||||
DCInvalidateRange(auxData.l, 0x780);
|
||||
__AXCallbackAuxA(&auxData.l, __AXContextAuxA);
|
||||
DCFlushRangeNoSync(auxData.l, 0x780);
|
||||
}
|
||||
}
|
||||
|
||||
if (__AXCallbackAuxB && __AXClMode != 2) {
|
||||
AX_AUX_DATA auxData;
|
||||
auxData.l = &__AXBufferAuxB[__AXAuxCpuReadWritePosition][0];
|
||||
auxData.r = &__AXBufferAuxB[__AXAuxCpuReadWritePosition][160];
|
||||
auxData.s = &__AXBufferAuxB[__AXAuxCpuReadWritePosition][320];
|
||||
DCInvalidateRange(auxData.l, 0x780);
|
||||
__AXCallbackAuxB(&auxData.l, __AXContextAuxB);
|
||||
DCFlushRangeNoSync(auxData.l, 0x780);
|
||||
}
|
||||
|
||||
__AXAuxDspWritePosition += 1;
|
||||
__AXAuxDspWritePosition %= 3;
|
||||
__AXAuxDspReadPosition += 1;
|
||||
__AXAuxDspReadPosition %= 3;
|
||||
|
||||
__AXAuxDspWritePositionDpl2 += 1;
|
||||
__AXAuxDspWritePositionDpl2 &= 1;
|
||||
__AXAuxDspReadPositionDpl2 += 1;
|
||||
__AXAuxDspReadPositionDpl2 &= 1;
|
||||
|
||||
__AXAuxCpuReadWritePosition += 1;
|
||||
__AXAuxCpuReadWritePosition %= 3;
|
||||
}
|
||||
|
||||
void AXRegisterAuxACallback(void (*callback)(void*, void*), void* context) {
|
||||
__AXCallbackAuxA = callback;
|
||||
__AXContextAuxA = context;
|
||||
}
|
||||
|
||||
void AXRegisterAuxBCallback(void (*callback)(void*, void*), void* context) {
|
||||
__AXCallbackAuxB = callback;
|
||||
__AXContextAuxB = context;
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
static u16 __AXCommandList[2][384];
|
||||
|
||||
static u32 __AXCommandListPosition;
|
||||
static u16* __AXClWrite;
|
||||
static u32 __AXCommandListCycles;
|
||||
static u32 __AXCompressor;
|
||||
u32 __AXClMode;
|
||||
|
||||
u32 __AXGetCommandListCycles(void) {
|
||||
return __AXCommandListCycles;
|
||||
}
|
||||
|
||||
u32 __AXGetCommandListAddress(void) {
|
||||
u32 address;
|
||||
|
||||
address = (u32)&__AXCommandList[__AXCommandListPosition][0];
|
||||
__AXCommandListPosition += 1;
|
||||
__AXCommandListPosition &= 1;
|
||||
__AXClWrite = (void*)&__AXCommandList[__AXCommandListPosition][0];
|
||||
return address;
|
||||
}
|
||||
|
||||
void __AXWriteToCommandList(u16 data) {
|
||||
*__AXClWrite = data;
|
||||
__AXClWrite++;
|
||||
}
|
||||
|
||||
void __AXNextFrame(void* sbuffer, void* buffer) {
|
||||
u32 data;
|
||||
u16* pCommandList;
|
||||
|
||||
__AXCommandListCycles = 0x1A9;
|
||||
pCommandList = __AXClWrite;
|
||||
data = __AXGetStudio();
|
||||
__AXWriteToCommandList(0);
|
||||
__AXWriteToCommandList((u16)(data >> 0x10));
|
||||
__AXWriteToCommandList((u16)(data));
|
||||
__AXCommandListCycles += 0x2E44;
|
||||
|
||||
switch (__AXClMode) {
|
||||
case 0:
|
||||
__AXWriteToCommandList(7);
|
||||
__AXWriteToCommandList((u16)((u32)sbuffer >> 0x10));
|
||||
__AXWriteToCommandList((u32)sbuffer);
|
||||
__AXCommandListCycles += 0x546;
|
||||
break;
|
||||
case 1:
|
||||
__AXWriteToCommandList(0x11);
|
||||
__AXWriteToCommandList((u16)((u32)sbuffer >> 0x10));
|
||||
__AXWriteToCommandList((u32)sbuffer);
|
||||
__AXCommandListCycles += 0x5E6;
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
default:
|
||||
ASSERTMSGLINE(193, 0, "Unknown AX mode!");
|
||||
}
|
||||
|
||||
data = (u32)__AXGetPBs();
|
||||
__AXWriteToCommandList(2);
|
||||
__AXWriteToCommandList((u16)(data >> 0x10));
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXWriteToCommandList(3);
|
||||
|
||||
if (__AXClMode == 2) {
|
||||
__AXGetAuxAInput(&data);
|
||||
if (data != 0) {
|
||||
__AXWriteToCommandList(0x13);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxAInputDpl2(&data);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxAOutput(&data);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxAOutputDpl2R(&data);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxAOutputDpl2Ls(&data);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxAOutputDpl2Rs(&data);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXCommandListCycles += 0xDED;
|
||||
}
|
||||
__AXWriteToCommandList(0x10);
|
||||
__AXGetAuxBForDPL2(&data);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxBOutputDPL2(&data);
|
||||
__AXWriteToCommandList(data >> 0x10);
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXCommandListCycles += 0xDED;
|
||||
} else {
|
||||
__AXGetAuxAInput(&data);
|
||||
|
||||
if (data != 0) {
|
||||
__AXWriteToCommandList(4);
|
||||
__AXWriteToCommandList((u16)(data >> 0x10));
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxAOutput(&data);
|
||||
__AXWriteToCommandList((u16)(data >> 0x10));
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXCommandListCycles += 0xDED;
|
||||
}
|
||||
|
||||
__AXGetAuxBInput(&data);
|
||||
if (data != 0) {
|
||||
__AXWriteToCommandList(5);
|
||||
__AXCommandListCycles += 0xDED;
|
||||
__AXWriteToCommandList((u16)(data >> 0x10));
|
||||
__AXWriteToCommandList((u16)data);
|
||||
__AXGetAuxBOutput(&data);
|
||||
__AXWriteToCommandList((u16)(data >> 0x10));
|
||||
__AXWriteToCommandList((u16)data);
|
||||
}
|
||||
}
|
||||
|
||||
if (__AXCompressor) {
|
||||
__AXWriteToCommandList(0x12);
|
||||
__AXWriteToCommandList(0x8000);
|
||||
__AXWriteToCommandList(0xA);
|
||||
__AXWriteToCommandList((u32)__AXCompressorTable >> 0x10);
|
||||
__AXWriteToCommandList((u32)__AXCompressorTable);
|
||||
__AXCommandListCycles += 0xBB8;
|
||||
}
|
||||
|
||||
__AXWriteToCommandList(0xE);
|
||||
__AXWriteToCommandList((u16)((u32)sbuffer >> 0x10));
|
||||
__AXWriteToCommandList((u32)sbuffer);
|
||||
__AXWriteToCommandList((u16)((u32)buffer >> 0x10));
|
||||
__AXWriteToCommandList((u32)buffer);
|
||||
__AXCommandListCycles += 0x2710;
|
||||
__AXWriteToCommandList(0xF);
|
||||
__AXCommandListCycles += 2;
|
||||
DCFlushRange(pCommandList, 0x300);
|
||||
}
|
||||
|
||||
void __AXClInit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Initializing AXCL code module\n");
|
||||
#endif
|
||||
ASSERTLINE(338, ((u32)&__AXCommandList[0][0] & 0x1F) == 0);
|
||||
ASSERTLINE(339, ((u32)&__AXCommandList[1][0] & 0x1F) == 0);
|
||||
__AXClMode = 0;
|
||||
__AXCommandListPosition = 0;
|
||||
__AXClWrite = (void*)&__AXCommandList;
|
||||
__AXCompressor = 1;
|
||||
}
|
||||
|
||||
void __AXClQuit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Shutting down AXCL code module\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void AXSetMode(u32 mode) {
|
||||
if (__AXClMode != mode) {
|
||||
__AXClMode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
u32 AXGetMode(void) {
|
||||
return __AXClMode;
|
||||
}
|
||||
|
||||
void AXSetCompressor(u32 i) {
|
||||
__AXCompressor = i;
|
||||
}
|
||||
@@ -0,0 +1,567 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
u16 __AXCompressorTable[3360] = {
|
||||
0x7FA1, 0x7F43, 0x7EE6, 0x7E88, 0x7E2B, 0x7DCE,
|
||||
0x7D72, 0x7D16, 0x7CBA, 0x7C5E, 0x7C02, 0x7BA7,
|
||||
0x7B4C, 0x7AF1, 0x7A97, 0x7A3D, 0x79E3, 0x7989,
|
||||
0x7930, 0x78D6, 0x787E, 0x7825, 0x77CD, 0x7774,
|
||||
0x771C, 0x76C5, 0x766D, 0x7616, 0x75BF, 0x7569,
|
||||
0x7512, 0x74BC, 0x7466, 0x7411, 0x73BB, 0x7366,
|
||||
0x7311, 0x72BD, 0x7268, 0x7214, 0x71C0, 0x716C,
|
||||
0x7119, 0x70C6, 0x7073, 0x7020, 0x6FCD, 0x6F7B,
|
||||
0x6F29, 0x6ED7, 0x6E86, 0x6E35, 0x6DE3, 0x6D93,
|
||||
0x6D42, 0x6CF2, 0x6CA1, 0x6C52, 0x6C02, 0x6BB2,
|
||||
0x6B63, 0x6B14, 0x6AC5, 0x6A77, 0x6A28, 0x69DA,
|
||||
0x698C, 0x693F, 0x68F1, 0x68A4, 0x6857, 0x680A,
|
||||
0x67BE, 0x6771, 0x6725, 0x66D9, 0x668E, 0x6642,
|
||||
0x65F7, 0x65AC, 0x6561, 0x6517, 0x64CC, 0x6482,
|
||||
0x6438, 0x63EE, 0x63A5, 0x635C, 0x6312, 0x62CA,
|
||||
0x6281, 0x6238, 0x61F0, 0x61A8, 0x6160, 0x6119,
|
||||
0x60D1, 0x608A, 0x6043, 0x5FFC, 0x5FB5, 0x5F6F,
|
||||
0x5F29, 0x5EE3, 0x5E9D, 0x5E57, 0x5E12, 0x5DCD,
|
||||
0x5D88, 0x5D43, 0x5CFE, 0x5CBA, 0x5C76, 0x5C32,
|
||||
0x5BEE, 0x5BAA, 0x5B67, 0x5B23, 0x5AE0, 0x5A9D,
|
||||
0x5A5B, 0x5A18, 0x59D6, 0x5994, 0x5952, 0x5910,
|
||||
0x58CF, 0x588D, 0x584C, 0x580B, 0x57CB, 0x578A,
|
||||
0x574A, 0x5709, 0x56C9, 0x5689, 0x564A, 0x560A,
|
||||
0x55CB, 0x558C, 0x554D, 0x550E, 0x54D0, 0x5491,
|
||||
0x5453, 0x5415, 0x53D7, 0x5399, 0x535C, 0x531E,
|
||||
0x52E1, 0x52A4, 0x5267, 0x522B, 0x51EE, 0x51B2,
|
||||
0x5176, 0x513A, 0x50FE, 0x50C3, 0x79EC, 0x799B,
|
||||
0x794A, 0x78FA, 0x78AA, 0x785A, 0x780A, 0x77BB,
|
||||
0x776C, 0x771C, 0x76CE, 0x767F, 0x7630, 0x75E2,
|
||||
0x7594, 0x7546, 0x74F9, 0x74AB, 0x745E, 0x7411,
|
||||
0x73C4, 0x7377, 0x732B, 0x72DE, 0x7292, 0x7246,
|
||||
0x71FB, 0x71AF, 0x7164, 0x7119, 0x70CE, 0x7083,
|
||||
0x7039, 0x6FEE, 0x6FA4, 0x6F5A, 0x6F11, 0x6EC7,
|
||||
0x6E7E, 0x6E35, 0x6DEC, 0x6DA3, 0x6D5A, 0x6D12,
|
||||
0x6CC9, 0x6C81, 0x6C3A, 0x6BF2, 0x6BAA, 0x6B63,
|
||||
0x6B1C, 0x6AD5, 0x6A8E, 0x6A48, 0x6A01, 0x69BB,
|
||||
0x6975, 0x692F, 0x68EA, 0x68A4, 0x685F, 0x681A,
|
||||
0x67D5, 0x6790, 0x674B, 0x6707, 0x66C3, 0x667F,
|
||||
0x663B, 0x65F7, 0x65B4, 0x6570, 0x652D, 0x64EA,
|
||||
0x64A7, 0x6464, 0x6422, 0x63E0, 0x639E, 0x635C,
|
||||
0x631A, 0x62D8, 0x6297, 0x6255, 0x6214, 0x61D3,
|
||||
0x6192, 0x6152, 0x6111, 0x60D1, 0x6091, 0x6051,
|
||||
0x6011, 0x5FD2, 0x5F92, 0x5F53, 0x5F14, 0x5ED5,
|
||||
0x5E96, 0x5E57, 0x5E19, 0x5DDB, 0x5D9C, 0x5D5E,
|
||||
0x5D21, 0x5CE3, 0x5CA5, 0x5C68, 0x5C2B, 0x5BEE,
|
||||
0x5BB1, 0x5B74, 0x5B38, 0x5AFB, 0x5ABF, 0x5A83,
|
||||
0x5A47, 0x5A0B, 0x59CF, 0x5994, 0x5959, 0x591D,
|
||||
0x58E2, 0x58A8, 0x586D, 0x5832, 0x57F8, 0x57BE,
|
||||
0x5783, 0x574A, 0x5710, 0x56D6, 0x569D, 0x5663,
|
||||
0x562A, 0x55F1, 0x55B8, 0x557F, 0x5547, 0x550E,
|
||||
0x54D6, 0x549E, 0x5466, 0x542E, 0x53F6, 0x53BE,
|
||||
0x5387, 0x534F, 0x5318, 0x52E1, 0x52AA, 0x5274,
|
||||
0x523D, 0x5207, 0x51D0, 0x519A, 0x5164, 0x512E,
|
||||
0x50F8, 0x50C3, 0x7478, 0x7433, 0x73EF, 0x73AA,
|
||||
0x7366, 0x7322, 0x72DE, 0x729B, 0x7257, 0x7214,
|
||||
0x71D1, 0x718E, 0x714B, 0x7108, 0x70C6, 0x7083,
|
||||
0x7041, 0x6FFF, 0x6FBD, 0x6F7B, 0x6F3A, 0x6EF8,
|
||||
0x6EB7, 0x6E76, 0x6E35, 0x6DF4, 0x6DB3, 0x6D72,
|
||||
0x6D32, 0x6CF2, 0x6CB1, 0x6C71, 0x6C32, 0x6BF2,
|
||||
0x6BB2, 0x6B73, 0x6B34, 0x6AF5, 0x6AB6, 0x6A77,
|
||||
0x6A38, 0x69FA, 0x69BB, 0x697D, 0x693F, 0x6901,
|
||||
0x68C3, 0x6885, 0x6848, 0x680A, 0x67CD, 0x6790,
|
||||
0x6753, 0x6716, 0x66D9, 0x669D, 0x6660, 0x6624,
|
||||
0x65E8, 0x65AC, 0x6570, 0x6534, 0x64F9, 0x64BD,
|
||||
0x6482, 0x6447, 0x640C, 0x63D1, 0x6396, 0x635C,
|
||||
0x6321, 0x62E7, 0x62AC, 0x6272, 0x6238, 0x61FF,
|
||||
0x61C5, 0x618B, 0x6152, 0x6119, 0x60DF, 0x60A6,
|
||||
0x606D, 0x6035, 0x5FFC, 0x5FC4, 0x5F8B, 0x5F53,
|
||||
0x5F1B, 0x5EE3, 0x5EAB, 0x5E73, 0x5E3C, 0x5E04,
|
||||
0x5DCD, 0x5D95, 0x5D5E, 0x5D27, 0x5CF1, 0x5CBA,
|
||||
0x5C83, 0x5C4D, 0x5C16, 0x5BE0, 0x5BAA, 0x5B74,
|
||||
0x5B3E, 0x5B09, 0x5AD3, 0x5A9D, 0x5A68, 0x5A33,
|
||||
0x59FE, 0x59C9, 0x5994, 0x595F, 0x592B, 0x58F6,
|
||||
0x58C2, 0x588D, 0x5859, 0x5825, 0x57F1, 0x57BE,
|
||||
0x578A, 0x5756, 0x5723, 0x56F0, 0x56BC, 0x5689,
|
||||
0x5656, 0x5624, 0x55F1, 0x55BE, 0x558C, 0x5559,
|
||||
0x5527, 0x54F5, 0x54C3, 0x5491, 0x545F, 0x542E,
|
||||
0x53FC, 0x53CB, 0x5399, 0x5368, 0x5337, 0x5306,
|
||||
0x52D5, 0x52A4, 0x5274, 0x5243, 0x5213, 0x51E2,
|
||||
0x51B2, 0x5182, 0x5152, 0x5122, 0x50F2, 0x50C3,
|
||||
0x6F42, 0x6F08, 0x6ECF, 0x6E96, 0x6E5D, 0x6E24,
|
||||
0x6DEC, 0x6DB3, 0x6D7A, 0x6D42, 0x6D0A, 0x6CD2,
|
||||
0x6C99, 0x6C61, 0x6C2A, 0x6BF2, 0x6BBA, 0x6B83,
|
||||
0x6B4B, 0x6B14, 0x6ADD, 0x6AA6, 0x6A6F, 0x6A38,
|
||||
0x6A01, 0x69CB, 0x6994, 0x695E, 0x6927, 0x68F1,
|
||||
0x68BB, 0x6885, 0x684F, 0x681A, 0x67E4, 0x67AE,
|
||||
0x6779, 0x6744, 0x670F, 0x66D9, 0x66A4, 0x6670,
|
||||
0x663B, 0x6606, 0x65D2, 0x659D, 0x6569, 0x6534,
|
||||
0x6500, 0x64CC, 0x6498, 0x6464, 0x6431, 0x63FD,
|
||||
0x63CA, 0x6396, 0x6363, 0x6330, 0x62FD, 0x62CA,
|
||||
0x6297, 0x6264, 0x6231, 0x61FF, 0x61CC, 0x619A,
|
||||
0x6167, 0x6135, 0x6103, 0x60D1, 0x609F, 0x606D,
|
||||
0x603C, 0x600A, 0x5FD9, 0x5FA7, 0x5F76, 0x5F45,
|
||||
0x5F14, 0x5EE3, 0x5EB2, 0x5E81, 0x5E50, 0x5E20,
|
||||
0x5DEF, 0x5DBF, 0x5D8F, 0x5D5E, 0x5D2E, 0x5CFE,
|
||||
0x5CCE, 0x5C9F, 0x5C6F, 0x5C3F, 0x5C10, 0x5BE0,
|
||||
0x5BB1, 0x5B82, 0x5B52, 0x5B23, 0x5AF4, 0x5AC6,
|
||||
0x5A97, 0x5A68, 0x5A3A, 0x5A0B, 0x59DD, 0x59AE,
|
||||
0x5980, 0x5952, 0x5924, 0x58F6, 0x58C8, 0x589A,
|
||||
0x586D, 0x583F, 0x5812, 0x57E4, 0x57B7, 0x578A,
|
||||
0x575D, 0x5730, 0x5703, 0x56D6, 0x56A9, 0x567D,
|
||||
0x5650, 0x5624, 0x55F7, 0x55CB, 0x559F, 0x5573,
|
||||
0x5547, 0x551B, 0x54EF, 0x54C3, 0x5497, 0x546C,
|
||||
0x5440, 0x5415, 0x53EA, 0x53BE, 0x5393, 0x5368,
|
||||
0x533D, 0x5312, 0x52E7, 0x52BD, 0x5292, 0x5267,
|
||||
0x523D, 0x5213, 0x51E8, 0x51BE, 0x5194, 0x516A,
|
||||
0x5140, 0x5116, 0x50EC, 0x50C3, 0x6A48, 0x6A19,
|
||||
0x69EA, 0x69BB, 0x698C, 0x695E, 0x692F, 0x6901,
|
||||
0x68D2, 0x68A4, 0x6876, 0x6848, 0x681A, 0x67EC,
|
||||
0x67BE, 0x6790, 0x6762, 0x6735, 0x6707, 0x66D9,
|
||||
0x66AC, 0x667F, 0x6651, 0x6624, 0x65F7, 0x65CA,
|
||||
0x659D, 0x6570, 0x6543, 0x6517, 0x64EA, 0x64BD,
|
||||
0x6491, 0x6464, 0x6438, 0x640C, 0x63E0, 0x63B4,
|
||||
0x6388, 0x635C, 0x6330, 0x6304, 0x62D8, 0x62AC,
|
||||
0x6281, 0x6255, 0x622A, 0x61FF, 0x61D3, 0x61A8,
|
||||
0x617D, 0x6152, 0x6127, 0x60FC, 0x60D1, 0x60A6,
|
||||
0x607C, 0x6051, 0x6027, 0x5FFC, 0x5FD2, 0x5FA7,
|
||||
0x5F7D, 0x5F53, 0x5F29, 0x5EFF, 0x5ED5, 0x5EAB,
|
||||
0x5E81, 0x5E57, 0x5E2E, 0x5E04, 0x5DDB, 0x5DB1,
|
||||
0x5D88, 0x5D5E, 0x5D35, 0x5D0C, 0x5CE3, 0x5CBA,
|
||||
0x5C91, 0x5C68, 0x5C3F, 0x5C16, 0x5BEE, 0x5BC5,
|
||||
0x5B9D, 0x5B74, 0x5B4C, 0x5B23, 0x5AFB, 0x5AD3,
|
||||
0x5AAB, 0x5A83, 0x5A5B, 0x5A33, 0x5A0B, 0x59E3,
|
||||
0x59BC, 0x5994, 0x596C, 0x5945, 0x591D, 0x58F6,
|
||||
0x58CF, 0x58A8, 0x5880, 0x5859, 0x5832, 0x580B,
|
||||
0x57E4, 0x57BE, 0x5797, 0x5770, 0x574A, 0x5723,
|
||||
0x56FC, 0x56D6, 0x56B0, 0x5689, 0x5663, 0x563D,
|
||||
0x5617, 0x55F1, 0x55CB, 0x55A5, 0x557F, 0x5559,
|
||||
0x5534, 0x550E, 0x54E9, 0x54C3, 0x549E, 0x5478,
|
||||
0x5453, 0x542E, 0x5408, 0x53E3, 0x53BE, 0x5399,
|
||||
0x5374, 0x534F, 0x532B, 0x5306, 0x52E1, 0x52BD,
|
||||
0x5298, 0x5274, 0x524F, 0x522B, 0x5207, 0x51E2,
|
||||
0x51BE, 0x519A, 0x5176, 0x5152, 0x512E, 0x510A,
|
||||
0x50E6, 0x50C3, 0x6587, 0x6561, 0x653C, 0x6517,
|
||||
0x64F1, 0x64CC, 0x64A7, 0x6482, 0x645D, 0x6438,
|
||||
0x6413, 0x63EE, 0x63CA, 0x63A5, 0x6380, 0x635C,
|
||||
0x6337, 0x6312, 0x62EE, 0x62CA, 0x62A5, 0x6281,
|
||||
0x625D, 0x6238, 0x6214, 0x61F0, 0x61CC, 0x61A8,
|
||||
0x6184, 0x6160, 0x613C, 0x6119, 0x60F5, 0x60D1,
|
||||
0x60AD, 0x608A, 0x6066, 0x6043, 0x601F, 0x5FFC,
|
||||
0x5FD9, 0x5FB5, 0x5F92, 0x5F6F, 0x5F4C, 0x5F29,
|
||||
0x5F06, 0x5EE3, 0x5EC0, 0x5E9D, 0x5E7A, 0x5E57,
|
||||
0x5E35, 0x5E12, 0x5DEF, 0x5DCD, 0x5DAA, 0x5D88,
|
||||
0x5D65, 0x5D43, 0x5D21, 0x5CFE, 0x5CDC, 0x5CBA,
|
||||
0x5C98, 0x5C76, 0x5C54, 0x5C32, 0x5C10, 0x5BEE,
|
||||
0x5BCC, 0x5BAA, 0x5B88, 0x5B67, 0x5B45, 0x5B23,
|
||||
0x5B02, 0x5AE0, 0x5ABF, 0x5A9D, 0x5A7C, 0x5A5B,
|
||||
0x5A3A, 0x5A18, 0x59F7, 0x59D6, 0x59B5, 0x5994,
|
||||
0x5973, 0x5952, 0x5931, 0x5910, 0x58F0, 0x58CF,
|
||||
0x58AE, 0x588D, 0x586D, 0x584C, 0x582C, 0x580B,
|
||||
0x57EB, 0x57CB, 0x57AA, 0x578A, 0x576A, 0x574A,
|
||||
0x5729, 0x5709, 0x56E9, 0x56C9, 0x56A9, 0x5689,
|
||||
0x566A, 0x564A, 0x562A, 0x560A, 0x55EB, 0x55CB,
|
||||
0x55AB, 0x558C, 0x556C, 0x554D, 0x552D, 0x550E,
|
||||
0x54EF, 0x54D0, 0x54B0, 0x5491, 0x5472, 0x5453,
|
||||
0x5434, 0x5415, 0x53F6, 0x53D7, 0x53B8, 0x5399,
|
||||
0x537B, 0x535C, 0x533D, 0x531E, 0x5300, 0x52E1,
|
||||
0x52C3, 0x52A4, 0x5286, 0x5267, 0x5249, 0x522B,
|
||||
0x520D, 0x51EE, 0x51D0, 0x51B2, 0x5194, 0x5176,
|
||||
0x5158, 0x513A, 0x511C, 0x50FE, 0x50E0, 0x50C3,
|
||||
0x60FC, 0x60DF, 0x60C3, 0x60A6, 0x608A, 0x606D,
|
||||
0x6051, 0x6035, 0x6018, 0x5FFC, 0x5FE0, 0x5FC4,
|
||||
0x5FA7, 0x5F8B, 0x5F6F, 0x5F53, 0x5F37, 0x5F1B,
|
||||
0x5EFF, 0x5EE3, 0x5EC7, 0x5EAB, 0x5E8F, 0x5E73,
|
||||
0x5E57, 0x5E3C, 0x5E20, 0x5E04, 0x5DE8, 0x5DCD,
|
||||
0x5DB1, 0x5D95, 0x5D7A, 0x5D5E, 0x5D43, 0x5D27,
|
||||
0x5D0C, 0x5CF1, 0x5CD5, 0x5CBA, 0x5C9F, 0x5C83,
|
||||
0x5C68, 0x5C4D, 0x5C32, 0x5C16, 0x5BFB, 0x5BE0,
|
||||
0x5BC5, 0x5BAA, 0x5B8F, 0x5B74, 0x5B59, 0x5B3E,
|
||||
0x5B23, 0x5B09, 0x5AEE, 0x5AD3, 0x5AB8, 0x5A9D,
|
||||
0x5A83, 0x5A68, 0x5A4D, 0x5A33, 0x5A18, 0x59FE,
|
||||
0x59E3, 0x59C9, 0x59AE, 0x5994, 0x597A, 0x595F,
|
||||
0x5945, 0x592B, 0x5910, 0x58F6, 0x58DC, 0x58C2,
|
||||
0x58A8, 0x588D, 0x5873, 0x5859, 0x583F, 0x5825,
|
||||
0x580B, 0x57F1, 0x57D7, 0x57BE, 0x57A4, 0x578A,
|
||||
0x5770, 0x5756, 0x573D, 0x5723, 0x5709, 0x56F0,
|
||||
0x56D6, 0x56BC, 0x56A3, 0x5689, 0x5670, 0x5656,
|
||||
0x563D, 0x5624, 0x560A, 0x55F1, 0x55D8, 0x55BE,
|
||||
0x55A5, 0x558C, 0x5573, 0x5559, 0x5540, 0x5527,
|
||||
0x550E, 0x54F5, 0x54DC, 0x54C3, 0x54AA, 0x5491,
|
||||
0x5478, 0x545F, 0x5446, 0x542E, 0x5415, 0x53FC,
|
||||
0x53E3, 0x53CB, 0x53B2, 0x5399, 0x5381, 0x5368,
|
||||
0x534F, 0x5337, 0x531E, 0x5306, 0x52ED, 0x52D5,
|
||||
0x52BD, 0x52A4, 0x528C, 0x5274, 0x525B, 0x5243,
|
||||
0x522B, 0x5213, 0x51FA, 0x51E2, 0x51CA, 0x51B2,
|
||||
0x519A, 0x5182, 0x516A, 0x5152, 0x513A, 0x5122,
|
||||
0x510A, 0x50F2, 0x50DB, 0x50C3, 0x5CA5, 0x5C91,
|
||||
0x5C7C, 0x5C68, 0x5C54, 0x5C3F, 0x5C2B, 0x5C16,
|
||||
0x5C02, 0x5BEE, 0x5BD9, 0x5BC5, 0x5BB1, 0x5B9D,
|
||||
0x5B88, 0x5B74, 0x5B60, 0x5B4C, 0x5B38, 0x5B23,
|
||||
0x5B0F, 0x5AFB, 0x5AE7, 0x5AD3, 0x5ABF, 0x5AAB,
|
||||
0x5A97, 0x5A83, 0x5A6F, 0x5A5B, 0x5A47, 0x5A33,
|
||||
0x5A1F, 0x5A0B, 0x59F7, 0x59E3, 0x59CF, 0x59BC,
|
||||
0x59A8, 0x5994, 0x5980, 0x596C, 0x5959, 0x5945,
|
||||
0x5931, 0x591D, 0x590A, 0x58F6, 0x58E2, 0x58CF,
|
||||
0x58BB, 0x58A8, 0x5894, 0x5880, 0x586D, 0x5859,
|
||||
0x5846, 0x5832, 0x581F, 0x580B, 0x57F8, 0x57E4,
|
||||
0x57D1, 0x57BE, 0x57AA, 0x5797, 0x5783, 0x5770,
|
||||
0x575D, 0x574A, 0x5736, 0x5723, 0x5710, 0x56FC,
|
||||
0x56E9, 0x56D6, 0x56C3, 0x56B0, 0x569D, 0x5689,
|
||||
0x5676, 0x5663, 0x5650, 0x563D, 0x562A, 0x5617,
|
||||
0x5604, 0x55F1, 0x55DE, 0x55CB, 0x55B8, 0x55A5,
|
||||
0x5592, 0x557F, 0x556C, 0x5559, 0x5547, 0x5534,
|
||||
0x5521, 0x550E, 0x54FB, 0x54E9, 0x54D6, 0x54C3,
|
||||
0x54B0, 0x549E, 0x548B, 0x5478, 0x5466, 0x5453,
|
||||
0x5440, 0x542E, 0x541B, 0x5408, 0x53F6, 0x53E3,
|
||||
0x53D1, 0x53BE, 0x53AC, 0x5399, 0x5387, 0x5374,
|
||||
0x5362, 0x534F, 0x533D, 0x532B, 0x5318, 0x5306,
|
||||
0x52F4, 0x52E1, 0x52CF, 0x52BD, 0x52AA, 0x5298,
|
||||
0x5286, 0x5274, 0x5261, 0x524F, 0x523D, 0x522B,
|
||||
0x5219, 0x5207, 0x51F4, 0x51E2, 0x51D0, 0x51BE,
|
||||
0x51AC, 0x519A, 0x5188, 0x5176, 0x5164, 0x5152,
|
||||
0x5140, 0x512E, 0x511C, 0x510A, 0x50F8, 0x50E6,
|
||||
0x50D5, 0x50C3, 0x5880, 0x5873, 0x5866, 0x5859,
|
||||
0x584C, 0x583F, 0x5832, 0x5825, 0x5818, 0x580B,
|
||||
0x57FE, 0x57F1, 0x57E4, 0x57D7, 0x57CB, 0x57BE,
|
||||
0x57B1, 0x57A4, 0x5797, 0x578A, 0x577D, 0x5770,
|
||||
0x5763, 0x5756, 0x574A, 0x573D, 0x5730, 0x5723,
|
||||
0x5716, 0x5709, 0x56FC, 0x56F0, 0x56E3, 0x56D6,
|
||||
0x56C9, 0x56BC, 0x56B0, 0x56A3, 0x5696, 0x5689,
|
||||
0x567D, 0x5670, 0x5663, 0x5656, 0x564A, 0x563D,
|
||||
0x5630, 0x5624, 0x5617, 0x560A, 0x55FE, 0x55F1,
|
||||
0x55E4, 0x55D8, 0x55CB, 0x55BE, 0x55B2, 0x55A5,
|
||||
0x5598, 0x558C, 0x557F, 0x5573, 0x5566, 0x5559,
|
||||
0x554D, 0x5540, 0x5534, 0x5527, 0x551B, 0x550E,
|
||||
0x5502, 0x54F5, 0x54E9, 0x54DC, 0x54D0, 0x54C3,
|
||||
0x54B7, 0x54AA, 0x549E, 0x5491, 0x5485, 0x5478,
|
||||
0x546C, 0x545F, 0x5453, 0x5446, 0x543A, 0x542E,
|
||||
0x5421, 0x5415, 0x5408, 0x53FC, 0x53F0, 0x53E3,
|
||||
0x53D7, 0x53CB, 0x53BE, 0x53B2, 0x53A6, 0x5399,
|
||||
0x538D, 0x5381, 0x5374, 0x5368, 0x535C, 0x534F,
|
||||
0x5343, 0x5337, 0x532B, 0x531E, 0x5312, 0x5306,
|
||||
0x52FA, 0x52ED, 0x52E1, 0x52D5, 0x52C9, 0x52BD,
|
||||
0x52B0, 0x52A4, 0x5298, 0x528C, 0x5280, 0x5274,
|
||||
0x5267, 0x525B, 0x524F, 0x5243, 0x5237, 0x522B,
|
||||
0x521F, 0x5213, 0x5207, 0x51FA, 0x51EE, 0x51E2,
|
||||
0x51D6, 0x51CA, 0x51BE, 0x51B2, 0x51A6, 0x519A,
|
||||
0x518E, 0x5182, 0x5176, 0x516A, 0x515E, 0x5152,
|
||||
0x5146, 0x513A, 0x512E, 0x5122, 0x5116, 0x510A,
|
||||
0x50FE, 0x50F2, 0x50E6, 0x50DB, 0x50CF, 0x50C3,
|
||||
0x548B, 0x5485, 0x547E, 0x5478, 0x5472, 0x546C,
|
||||
0x5466, 0x545F, 0x5459, 0x5453, 0x544D, 0x5446,
|
||||
0x5440, 0x543A, 0x5434, 0x542E, 0x5427, 0x5421,
|
||||
0x541B, 0x5415, 0x540F, 0x5408, 0x5402, 0x53FC,
|
||||
0x53F6, 0x53F0, 0x53EA, 0x53E3, 0x53DD, 0x53D7,
|
||||
0x53D1, 0x53CB, 0x53C4, 0x53BE, 0x53B8, 0x53B2,
|
||||
0x53AC, 0x53A6, 0x539F, 0x5399, 0x5393, 0x538D,
|
||||
0x5387, 0x5381, 0x537B, 0x5374, 0x536E, 0x5368,
|
||||
0x5362, 0x535C, 0x5356, 0x534F, 0x5349, 0x5343,
|
||||
0x533D, 0x5337, 0x5331, 0x532B, 0x5325, 0x531E,
|
||||
0x5318, 0x5312, 0x530C, 0x5306, 0x5300, 0x52FA,
|
||||
0x52F4, 0x52ED, 0x52E7, 0x52E1, 0x52DB, 0x52D5,
|
||||
0x52CF, 0x52C9, 0x52C3, 0x52BD, 0x52B7, 0x52B0,
|
||||
0x52AA, 0x52A4, 0x529E, 0x5298, 0x5292, 0x528C,
|
||||
0x5286, 0x5280, 0x527A, 0x5274, 0x526E, 0x5267,
|
||||
0x5261, 0x525B, 0x5255, 0x524F, 0x5249, 0x5243,
|
||||
0x523D, 0x5237, 0x5231, 0x522B, 0x5225, 0x521F,
|
||||
0x5219, 0x5213, 0x520D, 0x5207, 0x5201, 0x51FA,
|
||||
0x51F4, 0x51EE, 0x51E8, 0x51E2, 0x51DC, 0x51D6,
|
||||
0x51D0, 0x51CA, 0x51C4, 0x51BE, 0x51B8, 0x51B2,
|
||||
0x51AC, 0x51A6, 0x51A0, 0x519A, 0x5194, 0x518E,
|
||||
0x5188, 0x5182, 0x517C, 0x5176, 0x5170, 0x516A,
|
||||
0x5164, 0x515E, 0x5158, 0x5152, 0x514C, 0x5146,
|
||||
0x5140, 0x513A, 0x5134, 0x512E, 0x5128, 0x5122,
|
||||
0x511C, 0x5116, 0x5110, 0x510A, 0x5104, 0x50FE,
|
||||
0x50F8, 0x50F2, 0x50EC, 0x50E6, 0x50E0, 0x50DB,
|
||||
0x50D5, 0x50CF, 0x50C9, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3, 0x50C3,
|
||||
0x50C3, 0x50C3, 0x7A46, 0x7A4F, 0x7A58, 0x7A61,
|
||||
0x7A6A, 0x7A73, 0x7A7C, 0x7A85, 0x7A8E, 0x7A97,
|
||||
0x7AA0, 0x7AA9, 0x7AB2, 0x7ABB, 0x7AC4, 0x7ACD,
|
||||
0x7AD6, 0x7ADF, 0x7AE8, 0x7AF1, 0x7AFA, 0x7B03,
|
||||
0x7B0D, 0x7B16, 0x7B1F, 0x7B28, 0x7B31, 0x7B3A,
|
||||
0x7B43, 0x7B4C, 0x7B55, 0x7B5E, 0x7B67, 0x7B70,
|
||||
0x7B7A, 0x7B83, 0x7B8C, 0x7B95, 0x7B9E, 0x7BA7,
|
||||
0x7BB0, 0x7BB9, 0x7BC2, 0x7BCC, 0x7BD5, 0x7BDE,
|
||||
0x7BE7, 0x7BF0, 0x7BF9, 0x7C02, 0x7C0B, 0x7C15,
|
||||
0x7C1E, 0x7C27, 0x7C30, 0x7C39, 0x7C42, 0x7C4B,
|
||||
0x7C55, 0x7C5E, 0x7C67, 0x7C70, 0x7C79, 0x7C82,
|
||||
0x7C8C, 0x7C95, 0x7C9E, 0x7CA7, 0x7CB0, 0x7CBA,
|
||||
0x7CC3, 0x7CCC, 0x7CD5, 0x7CDE, 0x7CE8, 0x7CF1,
|
||||
0x7CFA, 0x7D03, 0x7D0C, 0x7D16, 0x7D1F, 0x7D28,
|
||||
0x7D31, 0x7D3A, 0x7D44, 0x7D4D, 0x7D56, 0x7D5F,
|
||||
0x7D69, 0x7D72, 0x7D7B, 0x7D84, 0x7D8E, 0x7D97,
|
||||
0x7DA0, 0x7DA9, 0x7DB3, 0x7DBC, 0x7DC5, 0x7DCE,
|
||||
0x7DD8, 0x7DE1, 0x7DEA, 0x7DF4, 0x7DFD, 0x7E06,
|
||||
0x7E0F, 0x7E19, 0x7E22, 0x7E2B, 0x7E35, 0x7E3E,
|
||||
0x7E47, 0x7E51, 0x7E5A, 0x7E63, 0x7E6C, 0x7E76,
|
||||
0x7E7F, 0x7E88, 0x7E92, 0x7E9B, 0x7EA4, 0x7EAE,
|
||||
0x7EB7, 0x7EC0, 0x7ECA, 0x7ED3, 0x7EDC, 0x7EE6,
|
||||
0x7EEF, 0x7EF8, 0x7F02, 0x7F0B, 0x7F15, 0x7F1E,
|
||||
0x7F27, 0x7F31, 0x7F3A, 0x7F43, 0x7F4D, 0x7F56,
|
||||
0x7F60, 0x7F69, 0x7F72, 0x7F7C, 0x7F85, 0x7F8F,
|
||||
0x7F98, 0x7FA1, 0x7FAB, 0x7FB4, 0x7FBE, 0x7FC7,
|
||||
0x7FD0, 0x7FDA, 0x7FE3, 0x7FED, 0x7FF6, 0x8000,
|
||||
0x74C5, 0x74CD, 0x74D6, 0x74DF, 0x74E7, 0x74F0,
|
||||
0x74F9, 0x7501, 0x750A, 0x7512, 0x751B, 0x7524,
|
||||
0x752C, 0x7535, 0x753E, 0x7546, 0x754F, 0x7558,
|
||||
0x7560, 0x7569, 0x7571, 0x757A, 0x7583, 0x758B,
|
||||
0x7594, 0x759D, 0x75A5, 0x75AE, 0x75B7, 0x75BF,
|
||||
0x75C8, 0x75D1, 0x75D9, 0x75E2, 0x75EB, 0x75F4,
|
||||
0x75FC, 0x7605, 0x760E, 0x7616, 0x761F, 0x7628,
|
||||
0x7630, 0x7639, 0x7642, 0x764B, 0x7653, 0x765C,
|
||||
0x7665, 0x766D, 0x7676, 0x767F, 0x7688, 0x7690,
|
||||
0x7699, 0x76A2, 0x76AB, 0x76B3, 0x76BC, 0x76C5,
|
||||
0x76CE, 0x76D6, 0x76DF, 0x76E8, 0x76F1, 0x76F9,
|
||||
0x7702, 0x770B, 0x7714, 0x771C, 0x7725, 0x772E,
|
||||
0x7737, 0x7740, 0x7748, 0x7751, 0x775A, 0x7763,
|
||||
0x776C, 0x7774, 0x777D, 0x7786, 0x778F, 0x7798,
|
||||
0x77A0, 0x77A9, 0x77B2, 0x77BB, 0x77C4, 0x77CD,
|
||||
0x77D5, 0x77DE, 0x77E7, 0x77F0, 0x77F9, 0x7802,
|
||||
0x780A, 0x7813, 0x781C, 0x7825, 0x782E, 0x7837,
|
||||
0x783F, 0x7848, 0x7851, 0x785A, 0x7863, 0x786C,
|
||||
0x7875, 0x787E, 0x7886, 0x788F, 0x7898, 0x78A1,
|
||||
0x78AA, 0x78B3, 0x78BC, 0x78C5, 0x78CE, 0x78D6,
|
||||
0x78DF, 0x78E8, 0x78F1, 0x78FA, 0x7903, 0x790C,
|
||||
0x7915, 0x791E, 0x7927, 0x7930, 0x7939, 0x7942,
|
||||
0x794A, 0x7953, 0x795C, 0x7965, 0x796E, 0x7977,
|
||||
0x7980, 0x7989, 0x7992, 0x799B, 0x79A4, 0x79AD,
|
||||
0x79B6, 0x79BF, 0x79C8, 0x79D1, 0x79DA, 0x79E3,
|
||||
0x79EC, 0x79F5, 0x79FE, 0x7A07, 0x7A10, 0x7A19,
|
||||
0x7A22, 0x7A2B, 0x7A34, 0x7A3D, 0x6F83, 0x6F8C,
|
||||
0x6F94, 0x6F9C, 0x6FA4, 0x6FAD, 0x6FB5, 0x6FBD,
|
||||
0x6FC5, 0x6FCD, 0x6FD6, 0x6FDE, 0x6FE6, 0x6FEE,
|
||||
0x6FF7, 0x6FFF, 0x7007, 0x700F, 0x7018, 0x7020,
|
||||
0x7028, 0x7031, 0x7039, 0x7041, 0x7049, 0x7052,
|
||||
0x705A, 0x7062, 0x706A, 0x7073, 0x707B, 0x7083,
|
||||
0x708C, 0x7094, 0x709C, 0x70A4, 0x70AD, 0x70B5,
|
||||
0x70BD, 0x70C6, 0x70CE, 0x70D6, 0x70DF, 0x70E7,
|
||||
0x70EF, 0x70F8, 0x7100, 0x7108, 0x7111, 0x7119,
|
||||
0x7121, 0x712A, 0x7132, 0x713A, 0x7143, 0x714B,
|
||||
0x7153, 0x715C, 0x7164, 0x716C, 0x7175, 0x717D,
|
||||
0x7185, 0x718E, 0x7196, 0x719F, 0x71A7, 0x71AF,
|
||||
0x71B8, 0x71C0, 0x71C8, 0x71D1, 0x71D9, 0x71E2,
|
||||
0x71EA, 0x71F2, 0x71FB, 0x7203, 0x720C, 0x7214,
|
||||
0x721C, 0x7225, 0x722D, 0x7236, 0x723E, 0x7246,
|
||||
0x724F, 0x7257, 0x7260, 0x7268, 0x7271, 0x7279,
|
||||
0x7281, 0x728A, 0x7292, 0x729B, 0x72A3, 0x72AC,
|
||||
0x72B4, 0x72BD, 0x72C5, 0x72CE, 0x72D6, 0x72DE,
|
||||
0x72E7, 0x72EF, 0x72F8, 0x7300, 0x7309, 0x7311,
|
||||
0x731A, 0x7322, 0x732B, 0x7333, 0x733C, 0x7344,
|
||||
0x734D, 0x7355, 0x735E, 0x7366, 0x736F, 0x7377,
|
||||
0x7380, 0x7388, 0x7391, 0x7399, 0x73A2, 0x73AA,
|
||||
0x73B3, 0x73BB, 0x73C4, 0x73CC, 0x73D5, 0x73DD,
|
||||
0x73E6, 0x73EF, 0x73F7, 0x7400, 0x7408, 0x7411,
|
||||
0x7419, 0x7422, 0x742A, 0x7433, 0x743C, 0x7444,
|
||||
0x744D, 0x7455, 0x745E, 0x7466, 0x746F, 0x7478,
|
||||
0x7480, 0x7489, 0x7491, 0x749A, 0x74A2, 0x74AB,
|
||||
0x74B4, 0x74BC, 0x6A7F, 0x6A86, 0x6A8E, 0x6A96,
|
||||
0x6A9E, 0x6AA6, 0x6AAE, 0x6AB6, 0x6ABD, 0x6AC5,
|
||||
0x6ACD, 0x6AD5, 0x6ADD, 0x6AE5, 0x6AED, 0x6AF5,
|
||||
0x6AFC, 0x6B04, 0x6B0C, 0x6B14, 0x6B1C, 0x6B24,
|
||||
0x6B2C, 0x6B34, 0x6B3C, 0x6B43, 0x6B4B, 0x6B53,
|
||||
0x6B5B, 0x6B63, 0x6B6B, 0x6B73, 0x6B7B, 0x6B83,
|
||||
0x6B8B, 0x6B93, 0x6B9B, 0x6BA2, 0x6BAA, 0x6BB2,
|
||||
0x6BBA, 0x6BC2, 0x6BCA, 0x6BD2, 0x6BDA, 0x6BE2,
|
||||
0x6BEA, 0x6BF2, 0x6BFA, 0x6C02, 0x6C0A, 0x6C12,
|
||||
0x6C1A, 0x6C22, 0x6C2A, 0x6C32, 0x6C3A, 0x6C42,
|
||||
0x6C4A, 0x6C52, 0x6C59, 0x6C61, 0x6C69, 0x6C71,
|
||||
0x6C79, 0x6C81, 0x6C89, 0x6C91, 0x6C99, 0x6CA1,
|
||||
0x6CA9, 0x6CB1, 0x6CB9, 0x6CC1, 0x6CC9, 0x6CD2,
|
||||
0x6CDA, 0x6CE2, 0x6CEA, 0x6CF2, 0x6CFA, 0x6D02,
|
||||
0x6D0A, 0x6D12, 0x6D1A, 0x6D22, 0x6D2A, 0x6D32,
|
||||
0x6D3A, 0x6D42, 0x6D4A, 0x6D52, 0x6D5A, 0x6D62,
|
||||
0x6D6A, 0x6D72, 0x6D7A, 0x6D82, 0x6D8B, 0x6D93,
|
||||
0x6D9B, 0x6DA3, 0x6DAB, 0x6DB3, 0x6DBB, 0x6DC3,
|
||||
0x6DCB, 0x6DD3, 0x6DDB, 0x6DE3, 0x6DEC, 0x6DF4,
|
||||
0x6DFC, 0x6E04, 0x6E0C, 0x6E14, 0x6E1C, 0x6E24,
|
||||
0x6E2C, 0x6E35, 0x6E3D, 0x6E45, 0x6E4D, 0x6E55,
|
||||
0x6E5D, 0x6E65, 0x6E6D, 0x6E76, 0x6E7E, 0x6E86,
|
||||
0x6E8E, 0x6E96, 0x6E9E, 0x6EA6, 0x6EAF, 0x6EB7,
|
||||
0x6EBF, 0x6EC7, 0x6ECF, 0x6ED7, 0x6EE0, 0x6EE8,
|
||||
0x6EF0, 0x6EF8, 0x6F00, 0x6F08, 0x6F11, 0x6F19,
|
||||
0x6F21, 0x6F29, 0x6F31, 0x6F3A, 0x6F42, 0x6F4A,
|
||||
0x6F52, 0x6F5A, 0x6F63, 0x6F6B, 0x6F73, 0x6F7B,
|
||||
0x65B4, 0x65BB, 0x65C3, 0x65CA, 0x65D2, 0x65D9,
|
||||
0x65E1, 0x65E8, 0x65F0, 0x65F7, 0x65FF, 0x6606,
|
||||
0x660E, 0x6615, 0x661D, 0x6624, 0x662C, 0x6633,
|
||||
0x663B, 0x6642, 0x664A, 0x6651, 0x6659, 0x6660,
|
||||
0x6668, 0x6670, 0x6677, 0x667F, 0x6686, 0x668E,
|
||||
0x6695, 0x669D, 0x66A4, 0x66AC, 0x66B4, 0x66BB,
|
||||
0x66C3, 0x66CA, 0x66D2, 0x66D9, 0x66E1, 0x66E9,
|
||||
0x66F0, 0x66F8, 0x66FF, 0x6707, 0x670F, 0x6716,
|
||||
0x671E, 0x6725, 0x672D, 0x6735, 0x673C, 0x6744,
|
||||
0x674B, 0x6753, 0x675B, 0x6762, 0x676A, 0x6771,
|
||||
0x6779, 0x6781, 0x6788, 0x6790, 0x6798, 0x679F,
|
||||
0x67A7, 0x67AE, 0x67B6, 0x67BE, 0x67C5, 0x67CD,
|
||||
0x67D5, 0x67DC, 0x67E4, 0x67EC, 0x67F3, 0x67FB,
|
||||
0x6803, 0x680A, 0x6812, 0x681A, 0x6821, 0x6829,
|
||||
0x6831, 0x6838, 0x6840, 0x6848, 0x684F, 0x6857,
|
||||
0x685F, 0x6866, 0x686E, 0x6876, 0x687E, 0x6885,
|
||||
0x688D, 0x6895, 0x689C, 0x68A4, 0x68AC, 0x68B4,
|
||||
0x68BB, 0x68C3, 0x68CB, 0x68D2, 0x68DA, 0x68E2,
|
||||
0x68EA, 0x68F1, 0x68F9, 0x6901, 0x6909, 0x6910,
|
||||
0x6918, 0x6920, 0x6927, 0x692F, 0x6937, 0x693F,
|
||||
0x6947, 0x694E, 0x6956, 0x695E, 0x6966, 0x696D,
|
||||
0x6975, 0x697D, 0x6985, 0x698C, 0x6994, 0x699C,
|
||||
0x69A4, 0x69AC, 0x69B3, 0x69BB, 0x69C3, 0x69CB,
|
||||
0x69D2, 0x69DA, 0x69E2, 0x69EA, 0x69F2, 0x69FA,
|
||||
0x6A01, 0x6A09, 0x6A11, 0x6A19, 0x6A21, 0x6A28,
|
||||
0x6A30, 0x6A38, 0x6A40, 0x6A48, 0x6A50, 0x6A57,
|
||||
0x6A5F, 0x6A67, 0x6A6F, 0x6A77, 0x6120, 0x6127,
|
||||
0x612E, 0x6135, 0x613C, 0x6144, 0x614B, 0x6152,
|
||||
0x6159, 0x6160, 0x6167, 0x616F, 0x6176, 0x617D,
|
||||
0x6184, 0x618B, 0x6192, 0x619A, 0x61A1, 0x61A8,
|
||||
0x61AF, 0x61B6, 0x61BE, 0x61C5, 0x61CC, 0x61D3,
|
||||
0x61DA, 0x61E2, 0x61E9, 0x61F0, 0x61F7, 0x61FF,
|
||||
0x6206, 0x620D, 0x6214, 0x621B, 0x6223, 0x622A,
|
||||
0x6231, 0x6238, 0x6240, 0x6247, 0x624E, 0x6255,
|
||||
0x625D, 0x6264, 0x626B, 0x6272, 0x627A, 0x6281,
|
||||
0x6288, 0x628F, 0x6297, 0x629E, 0x62A5, 0x62AC,
|
||||
0x62B4, 0x62BB, 0x62C2, 0x62CA, 0x62D1, 0x62D8,
|
||||
0x62DF, 0x62E7, 0x62EE, 0x62F5, 0x62FD, 0x6304,
|
||||
0x630B, 0x6312, 0x631A, 0x6321, 0x6328, 0x6330,
|
||||
0x6337, 0x633E, 0x6346, 0x634D, 0x6354, 0x635C,
|
||||
0x6363, 0x636A, 0x6372, 0x6379, 0x6380, 0x6388,
|
||||
0x638F, 0x6396, 0x639E, 0x63A5, 0x63AC, 0x63B4,
|
||||
0x63BB, 0x63C2, 0x63CA, 0x63D1, 0x63D8, 0x63E0,
|
||||
0x63E7, 0x63EE, 0x63F6, 0x63FD, 0x6405, 0x640C,
|
||||
0x6413, 0x641B, 0x6422, 0x6429, 0x6431, 0x6438,
|
||||
0x6440, 0x6447, 0x644E, 0x6456, 0x645D, 0x6464,
|
||||
0x646C, 0x6473, 0x647B, 0x6482, 0x648A, 0x6491,
|
||||
0x6498, 0x64A0, 0x64A7, 0x64AF, 0x64B6, 0x64BD,
|
||||
0x64C5, 0x64CC, 0x64D4, 0x64DB, 0x64E3, 0x64EA,
|
||||
0x64F1, 0x64F9, 0x6500, 0x6508, 0x650F, 0x6517,
|
||||
0x651E, 0x6526, 0x652D, 0x6534, 0x653C, 0x6543,
|
||||
0x654B, 0x6552, 0x655A, 0x6561, 0x6569, 0x6570,
|
||||
0x6578, 0x657F, 0x6587, 0x658E, 0x6596, 0x659D,
|
||||
0x65A5, 0x65AC, 0x5CC1, 0x5CC7, 0x5CCE, 0x5CD5,
|
||||
0x5CDC, 0x5CE3, 0x5CEA, 0x5CF1, 0x5CF7, 0x5CFE,
|
||||
0x5D05, 0x5D0C, 0x5D13, 0x5D1A, 0x5D21, 0x5D27,
|
||||
0x5D2E, 0x5D35, 0x5D3C, 0x5D43, 0x5D4A, 0x5D51,
|
||||
0x5D57, 0x5D5E, 0x5D65, 0x5D6C, 0x5D73, 0x5D7A,
|
||||
0x5D81, 0x5D88, 0x5D8F, 0x5D95, 0x5D9C, 0x5DA3,
|
||||
0x5DAA, 0x5DB1, 0x5DB8, 0x5DBF, 0x5DC6, 0x5DCD,
|
||||
0x5DD4, 0x5DDB, 0x5DE1, 0x5DE8, 0x5DEF, 0x5DF6,
|
||||
0x5DFD, 0x5E04, 0x5E0B, 0x5E12, 0x5E19, 0x5E20,
|
||||
0x5E27, 0x5E2E, 0x5E35, 0x5E3C, 0x5E42, 0x5E49,
|
||||
0x5E50, 0x5E57, 0x5E5E, 0x5E65, 0x5E6C, 0x5E73,
|
||||
0x5E7A, 0x5E81, 0x5E88, 0x5E8F, 0x5E96, 0x5E9D,
|
||||
0x5EA4, 0x5EAB, 0x5EB2, 0x5EB9, 0x5EC0, 0x5EC7,
|
||||
0x5ECE, 0x5ED5, 0x5EDC, 0x5EE3, 0x5EEA, 0x5EF1,
|
||||
0x5EF8, 0x5EFF, 0x5F06, 0x5F0D, 0x5F14, 0x5F1B,
|
||||
0x5F22, 0x5F29, 0x5F30, 0x5F37, 0x5F3E, 0x5F45,
|
||||
0x5F4C, 0x5F53, 0x5F5A, 0x5F61, 0x5F68, 0x5F6F,
|
||||
0x5F76, 0x5F7D, 0x5F84, 0x5F8B, 0x5F92, 0x5F99,
|
||||
0x5FA0, 0x5FA7, 0x5FAE, 0x5FB5, 0x5FBC, 0x5FC4,
|
||||
0x5FCB, 0x5FD2, 0x5FD9, 0x5FE0, 0x5FE7, 0x5FEE,
|
||||
0x5FF5, 0x5FFC, 0x6003, 0x600A, 0x6011, 0x6018,
|
||||
0x601F, 0x6027, 0x602E, 0x6035, 0x603C, 0x6043,
|
||||
0x604A, 0x6051, 0x6058, 0x605F, 0x6066, 0x606D,
|
||||
0x6075, 0x607C, 0x6083, 0x608A, 0x6091, 0x6098,
|
||||
0x609F, 0x60A6, 0x60AD, 0x60B5, 0x60BC, 0x60C3,
|
||||
0x60CA, 0x60D1, 0x60D8, 0x60DF, 0x60E7, 0x60EE,
|
||||
0x60F5, 0x60FC, 0x6103, 0x610A, 0x6111, 0x6119,
|
||||
0x5894, 0x589A, 0x58A1, 0x58A8, 0x58AE, 0x58B5,
|
||||
0x58BB, 0x58C2, 0x58C8, 0x58CF, 0x58D5, 0x58DC,
|
||||
0x58E2, 0x58E9, 0x58F0, 0x58F6, 0x58FD, 0x5903,
|
||||
0x590A, 0x5910, 0x5917, 0x591D, 0x5924, 0x592B,
|
||||
0x5931, 0x5938, 0x593E, 0x5945, 0x594B, 0x5952,
|
||||
0x5959, 0x595F, 0x5966, 0x596C, 0x5973, 0x597A,
|
||||
0x5980, 0x5987, 0x598D, 0x5994, 0x599B, 0x59A1,
|
||||
0x59A8, 0x59AE, 0x59B5, 0x59BC, 0x59C2, 0x59C9,
|
||||
0x59CF, 0x59D6, 0x59DD, 0x59E3, 0x59EA, 0x59F1,
|
||||
0x59F7, 0x59FE, 0x5A04, 0x5A0B, 0x5A12, 0x5A18,
|
||||
0x5A1F, 0x5A26, 0x5A2C, 0x5A33, 0x5A3A, 0x5A40,
|
||||
0x5A47, 0x5A4D, 0x5A54, 0x5A5B, 0x5A61, 0x5A68,
|
||||
0x5A6F, 0x5A75, 0x5A7C, 0x5A83, 0x5A89, 0x5A90,
|
||||
0x5A97, 0x5A9D, 0x5AA4, 0x5AAB, 0x5AB2, 0x5AB8,
|
||||
0x5ABF, 0x5AC6, 0x5ACC, 0x5AD3, 0x5ADA, 0x5AE0,
|
||||
0x5AE7, 0x5AEE, 0x5AF4, 0x5AFB, 0x5B02, 0x5B09,
|
||||
0x5B0F, 0x5B16, 0x5B1D, 0x5B23, 0x5B2A, 0x5B31,
|
||||
0x5B38, 0x5B3E, 0x5B45, 0x5B4C, 0x5B52, 0x5B59,
|
||||
0x5B60, 0x5B67, 0x5B6D, 0x5B74, 0x5B7B, 0x5B82,
|
||||
0x5B88, 0x5B8F, 0x5B96, 0x5B9D, 0x5BA3, 0x5BAA,
|
||||
0x5BB1, 0x5BB8, 0x5BBE, 0x5BC5, 0x5BCC, 0x5BD3,
|
||||
0x5BD9, 0x5BE0, 0x5BE7, 0x5BEE, 0x5BF5, 0x5BFB,
|
||||
0x5C02, 0x5C09, 0x5C10, 0x5C16, 0x5C1D, 0x5C24,
|
||||
0x5C2B, 0x5C32, 0x5C38, 0x5C3F, 0x5C46, 0x5C4D,
|
||||
0x5C54, 0x5C5A, 0x5C61, 0x5C68, 0x5C6F, 0x5C76,
|
||||
0x5C7C, 0x5C83, 0x5C8A, 0x5C91, 0x5C98, 0x5C9F,
|
||||
0x5CA5, 0x5CAC, 0x5CB3, 0x5CBA, 0x5497, 0x549E,
|
||||
0x54A4, 0x54AA, 0x54B0, 0x54B7, 0x54BD, 0x54C3,
|
||||
0x54C9, 0x54D0, 0x54D6, 0x54DC, 0x54E2, 0x54E9,
|
||||
0x54EF, 0x54F5, 0x54FB, 0x5502, 0x5508, 0x550E,
|
||||
0x5514, 0x551B, 0x5521, 0x5527, 0x552D, 0x5534,
|
||||
0x553A, 0x5540, 0x5547, 0x554D, 0x5553, 0x5559,
|
||||
0x5560, 0x5566, 0x556C, 0x5573, 0x5579, 0x557F,
|
||||
0x5585, 0x558C, 0x5592, 0x5598, 0x559F, 0x55A5,
|
||||
0x55AB, 0x55B2, 0x55B8, 0x55BE, 0x55C5, 0x55CB,
|
||||
0x55D1, 0x55D8, 0x55DE, 0x55E4, 0x55EB, 0x55F1,
|
||||
0x55F7, 0x55FE, 0x5604, 0x560A, 0x5611, 0x5617,
|
||||
0x561D, 0x5624, 0x562A, 0x5630, 0x5637, 0x563D,
|
||||
0x5643, 0x564A, 0x5650, 0x5656, 0x565D, 0x5663,
|
||||
0x566A, 0x5670, 0x5676, 0x567D, 0x5683, 0x5689,
|
||||
0x5690, 0x5696, 0x569D, 0x56A3, 0x56A9, 0x56B0,
|
||||
0x56B6, 0x56BC, 0x56C3, 0x56C9, 0x56D0, 0x56D6,
|
||||
0x56DC, 0x56E3, 0x56E9, 0x56F0, 0x56F6, 0x56FC,
|
||||
0x5703, 0x5709, 0x5710, 0x5716, 0x571D, 0x5723,
|
||||
0x5729, 0x5730, 0x5736, 0x573D, 0x5743, 0x574A,
|
||||
0x5750, 0x5756, 0x575D, 0x5763, 0x576A, 0x5770,
|
||||
0x5777, 0x577D, 0x5783, 0x578A, 0x5790, 0x5797,
|
||||
0x579D, 0x57A4, 0x57AA, 0x57B1, 0x57B7, 0x57BE,
|
||||
0x57C4, 0x57CB, 0x57D1, 0x57D7, 0x57DE, 0x57E4,
|
||||
0x57EB, 0x57F1, 0x57F8, 0x57FE, 0x5805, 0x580B,
|
||||
0x5812, 0x5818, 0x581F, 0x5825, 0x582C, 0x5832,
|
||||
0x5839, 0x583F, 0x5846, 0x584C, 0x5853, 0x5859,
|
||||
0x5860, 0x5866, 0x586D, 0x5873, 0x587A, 0x5880,
|
||||
0x5887, 0x588D, 0x50C9, 0x50CF, 0x50D5, 0x50DB,
|
||||
0x50E0, 0x50E6, 0x50EC, 0x50F2, 0x50F8, 0x50FE,
|
||||
0x5104, 0x510A, 0x5110, 0x5116, 0x511C, 0x5122,
|
||||
0x5128, 0x512E, 0x5134, 0x513A, 0x5140, 0x5146,
|
||||
0x514C, 0x5152, 0x5158, 0x515E, 0x5164, 0x516A,
|
||||
0x5170, 0x5176, 0x517C, 0x5182, 0x5188, 0x518E,
|
||||
0x5194, 0x519A, 0x51A0, 0x51A6, 0x51AC, 0x51B2,
|
||||
0x51B8, 0x51BE, 0x51C4, 0x51CA, 0x51D0, 0x51D6,
|
||||
0x51DC, 0x51E2, 0x51E8, 0x51EE, 0x51F4, 0x51FA,
|
||||
0x5201, 0x5207, 0x520D, 0x5213, 0x5219, 0x521F,
|
||||
0x5225, 0x522B, 0x5231, 0x5237, 0x523D, 0x5243,
|
||||
0x5249, 0x524F, 0x5255, 0x525B, 0x5261, 0x5267,
|
||||
0x526E, 0x5274, 0x527A, 0x5280, 0x5286, 0x528C,
|
||||
0x5292, 0x5298, 0x529E, 0x52A4, 0x52AA, 0x52B0,
|
||||
0x52B7, 0x52BD, 0x52C3, 0x52C9, 0x52CF, 0x52D5,
|
||||
0x52DB, 0x52E1, 0x52E7, 0x52ED, 0x52F4, 0x52FA,
|
||||
0x5300, 0x5306, 0x530C, 0x5312, 0x5318, 0x531E,
|
||||
0x5325, 0x532B, 0x5331, 0x5337, 0x533D, 0x5343,
|
||||
0x5349, 0x534F, 0x5356, 0x535C, 0x5362, 0x5368,
|
||||
0x536E, 0x5374, 0x537B, 0x5381, 0x5387, 0x538D,
|
||||
0x5393, 0x5399, 0x539F, 0x53A6, 0x53AC, 0x53B2,
|
||||
0x53B8, 0x53BE, 0x53C4, 0x53CB, 0x53D1, 0x53D7,
|
||||
0x53DD, 0x53E3, 0x53EA, 0x53F0, 0x53F6, 0x53FC,
|
||||
0x5402, 0x5408, 0x540F, 0x5415, 0x541B, 0x5421,
|
||||
0x5427, 0x542E, 0x5434, 0x543A, 0x5440, 0x5446,
|
||||
0x544D, 0x5453, 0x5459, 0x545F, 0x5466, 0x546C,
|
||||
0x5472, 0x5478, 0x547E, 0x5485, 0x548B, 0x5491
|
||||
};
|
||||
@@ -0,0 +1,238 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/dsp.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
static s16 __AXOutBuffer[3][320];
|
||||
static s32 __AXOutSBuffer[160];
|
||||
static u16 __AXDramImage[8192];
|
||||
static DSPTaskInfo __AXDSPTask;
|
||||
AXPROFILE __AXLocalProfile;
|
||||
|
||||
volatile static u32 __AXOutFrame;
|
||||
volatile static u32 __AXAiDmaFrame;
|
||||
volatile static u32 __AXOutDspReady;
|
||||
volatile static OSTime __AXOsTime;
|
||||
static void (*__AXUserFrameCallback)();
|
||||
volatile static int __AXDSPInitFlag;
|
||||
static int __AXDSPDoneFlag;
|
||||
|
||||
static volatile u32 __AXDebugSteppingMode;
|
||||
static OSThreadQueue __AXOutThreadQueue;
|
||||
static u32 __AXOutputBufferMode;
|
||||
|
||||
// prototypes
|
||||
static void __AXDSPInitCallback(void* task);
|
||||
static void __AXDSPResumeCallback(void* task);
|
||||
static void __AXDSPDoneCallback(void* task);
|
||||
|
||||
void __AXOutNewFrame(u32 lessDspCycles) {
|
||||
u32 cl;
|
||||
AXPROFILE* profile;
|
||||
u8* src;
|
||||
u8* dest;
|
||||
u32 i;
|
||||
|
||||
__AXLocalProfile.axFrameStart = OSGetTime();
|
||||
__AXSyncPBs(lessDspCycles);
|
||||
__AXPrintStudio();
|
||||
cl = __AXGetCommandListAddress();
|
||||
|
||||
DSPSendMailToDSP(0xBABE0180);
|
||||
do {} while (DSPCheckMailToDSP() != 0);
|
||||
|
||||
DSPSendMailToDSP(cl);
|
||||
do {} while (DSPCheckMailToDSP() != 0);
|
||||
|
||||
__AXServiceCallbackStack();
|
||||
__AXLocalProfile.auxProcessingStart = OSGetTime();
|
||||
__AXProcessAux();
|
||||
__AXLocalProfile.auxProcessingEnd = OSGetTime();
|
||||
__AXLocalProfile.userCallbackStart = OSGetTime();
|
||||
|
||||
if (__AXUserFrameCallback) {
|
||||
__AXUserFrameCallback();
|
||||
}
|
||||
|
||||
__AXLocalProfile.userCallbackEnd = OSGetTime();
|
||||
__AXNextFrame(__AXOutSBuffer, &__AXOutBuffer[__AXOutFrame][0]);
|
||||
__AXOutFrame += 1;
|
||||
|
||||
if (__AXOutputBufferMode == 1) {
|
||||
__AXOutFrame %= 3;
|
||||
} else {
|
||||
__AXOutFrame &= 1;
|
||||
AIInitDMA((u32)&__AXOutBuffer[__AXOutFrame][0], 0x280);
|
||||
}
|
||||
|
||||
__AXLocalProfile.axFrameEnd = OSGetTime();
|
||||
__AXLocalProfile.axNumVoices = __AXGetNumVoices();
|
||||
profile = (void*)__AXGetCurrentProfile();
|
||||
|
||||
if (profile) {
|
||||
i = 56;
|
||||
dest = (u8*)profile;
|
||||
src = (u8*)&__AXLocalProfile;
|
||||
|
||||
while (i != 0) {
|
||||
*dest = *src;
|
||||
dest++;
|
||||
src++;
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void __AXOutAiCallback(void) {
|
||||
if (__AXOutDspReady == 0) {
|
||||
__AXOsTime = OSGetTime();
|
||||
}
|
||||
|
||||
if (__AXOutDspReady == 1) {
|
||||
__AXOutDspReady = 0;
|
||||
__AXOutNewFrame(0);
|
||||
} else {
|
||||
__AXOutDspReady = 2;
|
||||
DSPAssertTask(&__AXDSPTask);
|
||||
}
|
||||
|
||||
if (__AXOutputBufferMode == 1) {
|
||||
AIInitDMA((u32)__AXOutBuffer[__AXAiDmaFrame], 0x280);
|
||||
__AXAiDmaFrame++;
|
||||
__AXAiDmaFrame %= 3;
|
||||
}
|
||||
}
|
||||
|
||||
static void __AXDSPInitCallback(void* task) {
|
||||
__AXDSPInitFlag = 1;
|
||||
}
|
||||
|
||||
void AXSetStepMode(u32 i) {
|
||||
__AXDebugSteppingMode = i;
|
||||
}
|
||||
|
||||
static void __AXDSPResumeCallback(void* task) {
|
||||
#if DEBUG
|
||||
if (__AXDebugSteppingMode != 0) {
|
||||
__AXOutDspReady = 1;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (__AXOutDspReady == 2) {
|
||||
__AXOutDspReady = 0;
|
||||
__AXOutNewFrame((u32)(OSGetTime() - __AXOsTime) / 4);
|
||||
return;
|
||||
}
|
||||
__AXOutDspReady = 1;
|
||||
}
|
||||
|
||||
static void __AXDSPDoneCallback(void* task) {
|
||||
__AXDSPDoneFlag = 1;
|
||||
OSWakeupThread(&__AXOutThreadQueue);
|
||||
}
|
||||
|
||||
#define BUFFER_MEMSET(buffer, size) \
|
||||
{ \
|
||||
u32* p = (u32*)&buffer; \
|
||||
int i; \
|
||||
for (i = 0; i < size; i++) { \
|
||||
*p = 0; \
|
||||
p++; \
|
||||
} \
|
||||
}
|
||||
|
||||
void __AXOutInitDSP(void) {
|
||||
__AXDSPTask.iram_mmem_addr = axDspSlave;
|
||||
__AXDSPTask.iram_length = axDspSlaveLength;
|
||||
__AXDSPTask.iram_addr = 0;
|
||||
__AXDSPTask.dram_mmem_addr = __AXDramImage;
|
||||
__AXDSPTask.dram_length = 0x2000;
|
||||
__AXDSPTask.dram_addr = 0;
|
||||
__AXDSPTask.dsp_init_vector = 0x10;
|
||||
__AXDSPTask.dsp_resume_vector = 0x30;
|
||||
__AXDSPTask.init_cb = __AXDSPInitCallback;
|
||||
__AXDSPTask.res_cb = __AXDSPResumeCallback;
|
||||
__AXDSPTask.done_cb = __AXDSPDoneCallback;
|
||||
__AXDSPTask.req_cb = NULL;
|
||||
__AXDSPTask.priority = 0;
|
||||
__AXDSPInitFlag = 0;
|
||||
__AXDSPDoneFlag = 0;
|
||||
|
||||
OSInitThreadQueue(&__AXOutThreadQueue);
|
||||
if (DSPCheckInit() == 0) {
|
||||
DSPInit();
|
||||
}
|
||||
|
||||
DSPAddTask(&__AXDSPTask);
|
||||
do {} while (__AXDSPInitFlag == 0);
|
||||
}
|
||||
|
||||
void __AXOutInit(u32 outputBufferMode) {
|
||||
#if DEBUG
|
||||
OSReport("Initializing AXOut code module\n");
|
||||
#endif
|
||||
ASSERTLINE(404, ((u32)&__AXOutBuffer[0][0] & 0x1F) == 0);
|
||||
ASSERTLINE(405, ((u32)&__AXOutBuffer[1][0] & 0x1F) == 0);
|
||||
ASSERTLINE(406, ((u32)&__AXOutBuffer[2][0] & 0x1F) == 0);
|
||||
ASSERTLINE(407, ((u32)&__AXOutSBuffer[0] & 0x1F) == 0);
|
||||
|
||||
__AXOutputBufferMode = outputBufferMode;
|
||||
__AXOutFrame = 0;
|
||||
__AXAiDmaFrame = 0;
|
||||
__AXDebugSteppingMode = 0;
|
||||
|
||||
BUFFER_MEMSET(__AXOutBuffer, 0x1E0);
|
||||
DCFlushRange(__AXOutBuffer, sizeof(__AXOutBuffer));
|
||||
|
||||
BUFFER_MEMSET(__AXOutSBuffer, 0xA0);
|
||||
DCFlushRange(__AXOutSBuffer, sizeof(__AXOutSBuffer));
|
||||
|
||||
__AXOutInitDSP();
|
||||
AIRegisterDMACallback(__AXOutAiCallback);
|
||||
|
||||
if (__AXOutputBufferMode == 1) {
|
||||
__AXNextFrame(__AXOutSBuffer, &__AXOutBuffer[2][0]);
|
||||
} else {
|
||||
__AXNextFrame(__AXOutSBuffer, &__AXOutBuffer[1][0]);
|
||||
}
|
||||
|
||||
__AXOutDspReady = 1;
|
||||
__AXUserFrameCallback = NULL;
|
||||
|
||||
if (__AXOutputBufferMode == 1) {
|
||||
AIInitDMA((u32)&__AXOutBuffer[__AXAiDmaFrame][0], sizeof(__AXOutBuffer[0]));
|
||||
__AXAiDmaFrame++;
|
||||
__AXAiDmaFrame &= 1;
|
||||
} else {
|
||||
AIInitDMA((u32)&__AXOutBuffer[__AXOutFrame][0], sizeof(__AXOutBuffer[0]));
|
||||
}
|
||||
|
||||
AIStartDMA();
|
||||
}
|
||||
|
||||
void __AXOutQuit(void) {
|
||||
BOOL old;
|
||||
#if DEBUG
|
||||
OSReport("Shutting down AXOut code module\n");
|
||||
#endif
|
||||
old = OSDisableInterrupts();
|
||||
__AXUserFrameCallback = NULL;
|
||||
DSPCancelTask(&__AXDSPTask);
|
||||
OSSleepThread(&__AXOutThreadQueue);
|
||||
AIStopDMA();
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
AXCallback AXRegisterCallback(AXCallback callback) {
|
||||
BOOL enabled;
|
||||
AXCallback oldCB;
|
||||
|
||||
oldCB = __AXUserFrameCallback;
|
||||
enabled = OSDisableInterrupts();
|
||||
__AXUserFrameCallback = callback;
|
||||
|
||||
OSRestoreInterrupts(enabled);
|
||||
return oldCB;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
static AXPROFILE* __AXProfile;
|
||||
static u32 __AXMaxProfiles;
|
||||
static u32 __AXCurrentProfile;
|
||||
static u32 __AXProfileInitialized;
|
||||
|
||||
AXPROFILE* __AXGetCurrentProfile(void) {
|
||||
AXPROFILE* profile;
|
||||
|
||||
if (__AXProfileInitialized != 0) {
|
||||
profile = &__AXProfile[__AXCurrentProfile];
|
||||
__AXCurrentProfile += 1;
|
||||
__AXCurrentProfile %= __AXMaxProfiles;
|
||||
return profile;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AXInitProfile(AXPROFILE* profile, u32 maxProfiles) {
|
||||
ASSERTLINE(60, profile);
|
||||
ASSERTLINE(61, maxProfiles);
|
||||
|
||||
__AXProfile = profile;
|
||||
__AXMaxProfiles = maxProfiles;
|
||||
__AXCurrentProfile = 0;
|
||||
__AXProfileInitialized = 1;
|
||||
}
|
||||
|
||||
u32 AXGetProfile(void) {
|
||||
BOOL old;
|
||||
u32 n;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
n = __AXCurrentProfile;
|
||||
if (n != 0) {
|
||||
n -= 1;
|
||||
}
|
||||
|
||||
__AXCurrentProfile = 0;
|
||||
OSRestoreInterrupts(old);
|
||||
return n;
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
static AXSPB __AXStudio ATTRIBUTE_ALIGN(32);
|
||||
|
||||
static s32 __AXSpbAL;
|
||||
static s32 __AXSpbAR;
|
||||
static s32 __AXSpbAS;
|
||||
static s32 __AXSpbAAL;
|
||||
static s32 __AXSpbAAR;
|
||||
static s32 __AXSpbAAS;
|
||||
static s32 __AXSpbABL;
|
||||
static s32 __AXSpbABR;
|
||||
static s32 __AXSpbABS;
|
||||
|
||||
u32 __AXGetStudio(void) {
|
||||
return (u32)&__AXStudio;
|
||||
}
|
||||
|
||||
void __AXDepopFade(s32* hostSum, s32* dspVolume, s16* dspDelta) {
|
||||
int frames;
|
||||
s32 delta;
|
||||
|
||||
frames = *hostSum / 160;
|
||||
|
||||
if (frames) {
|
||||
delta = *hostSum / 160;
|
||||
if (delta > 0x14) {
|
||||
delta = 0x14;
|
||||
}
|
||||
if (delta < -0x14) {
|
||||
delta = -0x14;
|
||||
}
|
||||
*dspVolume = *hostSum;
|
||||
*hostSum -= delta* 0xA0;
|
||||
*dspDelta = delta * -1;
|
||||
return;
|
||||
}
|
||||
|
||||
*hostSum = 0;
|
||||
*dspVolume = 0;
|
||||
*dspDelta = 0;
|
||||
}
|
||||
|
||||
void __AXPrintStudio(void) {
|
||||
__AXDepopFade(&__AXSpbAL, (void*)&__AXStudio.dpopLHi, &__AXStudio.dpopLDelta);
|
||||
__AXDepopFade(&__AXSpbAR, (void*)&__AXStudio.dpopRHi, &__AXStudio.dpopRDelta);
|
||||
__AXDepopFade(&__AXSpbAS, (void*)&__AXStudio.dpopSHi, &__AXStudio.dpopSDelta);
|
||||
__AXDepopFade(&__AXSpbAAL, (void*)&__AXStudio.dpopALHi, &__AXStudio.dpopALDelta);
|
||||
__AXDepopFade(&__AXSpbAAR, (void*)&__AXStudio.dpopARHi, &__AXStudio.dpopARDelta);
|
||||
__AXDepopFade(&__AXSpbAAS, (void*)&__AXStudio.dpopASHi, &__AXStudio.dpopASDelta);
|
||||
__AXDepopFade(&__AXSpbABL, (void*)&__AXStudio.dpopBLHi, &__AXStudio.dpopBLDelta);
|
||||
__AXDepopFade(&__AXSpbABR, (void*)&__AXStudio.dpopBRHi, &__AXStudio.dpopBRDelta);
|
||||
__AXDepopFade(&__AXSpbABS, (void*)&__AXStudio.dpopBSHi, &__AXStudio.dpopBSDelta);
|
||||
DCFlushRange(&__AXStudio, sizeof(__AXStudio));
|
||||
}
|
||||
|
||||
void __AXSPBInit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Initializing AXSPB code module\n");
|
||||
#endif
|
||||
__AXSpbAL =
|
||||
__AXSpbAR =
|
||||
__AXSpbAS =
|
||||
__AXSpbAAL =
|
||||
__AXSpbAAR =
|
||||
__AXSpbAAS =
|
||||
__AXSpbABL =
|
||||
__AXSpbABR =
|
||||
__AXSpbABS = 0;
|
||||
}
|
||||
|
||||
void __AXSPBQuit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Shutting down AXSPB code module\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void __AXDepopVoice(AXPB* p) {
|
||||
__AXSpbAL += p->dpop.aL;
|
||||
__AXSpbAAL += p->dpop.aAuxAL;
|
||||
__AXSpbABL += p->dpop.aAuxBL;
|
||||
__AXSpbAR += p->dpop.aR;
|
||||
__AXSpbAAR += p->dpop.aAuxAR;
|
||||
__AXSpbABR += p->dpop.aAuxBR;
|
||||
__AXSpbAS += p->dpop.aS;
|
||||
__AXSpbAAS += p->dpop.aAuxAS;
|
||||
__AXSpbABS += p->dpop.aAuxBS;
|
||||
}
|
||||
@@ -0,0 +1,966 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
#include "sdk_math.h"
|
||||
|
||||
#include "__ax.h"
|
||||
|
||||
static u32 __AXSrcCycles[5] = {
|
||||
0x00000DF8,
|
||||
0x00000F78,
|
||||
0x000014B8,
|
||||
0x000019F8,
|
||||
0x000019F8
|
||||
};
|
||||
|
||||
static u32 __AXMainMixCycles[16] = {
|
||||
0x00000000, 0x000002F8, 0x000002F8,
|
||||
0x000005BE, 0x000002F8, 0x000005F0,
|
||||
0x000005F0, 0x000008B6, 0x00000000,
|
||||
0x000004F1, 0x000004F1, 0x000009A6,
|
||||
0x000004F1, 0x000009E2, 0x000009E2,
|
||||
0x00000E97
|
||||
};
|
||||
|
||||
static u32 __AXAuxMixCycles[32] = {
|
||||
0x00000000, 0x000002F8, 0x000002F8,
|
||||
0x000005BE, 0x00000000, 0x000004F1,
|
||||
0x000004F1, 0x000009A6, 0x000002F8,
|
||||
0x000005F0, 0x000005F0, 0x000008B6,
|
||||
0x000002F8, 0x000007E9, 0x000007E9,
|
||||
0x00000C9E, 0x00000000, 0x000002F8,
|
||||
0x000002F8, 0x000005BE, 0x00000000,
|
||||
0x000004F1, 0x000004F1, 0x000009A6,
|
||||
0x000004F1, 0x000007E9, 0x000007E9,
|
||||
0x00000AAF, 0x000004F1, 0x000009E2,
|
||||
0x000009E2, 0x00000E97
|
||||
};
|
||||
|
||||
static AXPB __AXPB[AX_MAX_VOICES] ATTRIBUTE_ALIGN(32);
|
||||
static AXPBITDBUFFER __AXITD[AX_MAX_VOICES] ATTRIBUTE_ALIGN(32);
|
||||
static AXPBU __AXUpdates[AX_MAX_VOICES] ATTRIBUTE_ALIGN(32);
|
||||
static AXVPB __AXVPB[AX_MAX_VOICES];
|
||||
|
||||
static u32 __AXMaxDspCycles;
|
||||
static u32 __AXRecDspCycles;
|
||||
static u32 __AXNumVoices;
|
||||
|
||||
u32 __AXGetNumVoices(void) {
|
||||
return __AXNumVoices;
|
||||
}
|
||||
|
||||
void __AXServiceVPB(AXVPB* pvpb) {
|
||||
AXPB* ppbDsp;
|
||||
AXPB* ppbUser;
|
||||
u32 sync;
|
||||
|
||||
ASSERTLINE(238, (pvpb->index >= 0) && (pvpb->index < AX_MAX_VOICES));
|
||||
|
||||
__AXNumVoices += 1;
|
||||
ppbDsp = &__AXPB[pvpb->index];
|
||||
ppbUser = &pvpb->pb;
|
||||
sync = pvpb->sync;
|
||||
if (sync == 0) {
|
||||
ppbUser->state = ppbDsp->state;
|
||||
ppbUser->ve.currentVolume = ppbDsp->ve.currentVolume;
|
||||
ppbUser->addr.currentAddressHi = ppbDsp->addr.currentAddressHi;
|
||||
ppbUser->addr.currentAddressLo = ppbDsp->addr.currentAddressLo;
|
||||
return;
|
||||
}
|
||||
if (sync & AX_SYNC_FLAG_COPYALL) {
|
||||
// copy the whole PB struct. (size: 0xF4)
|
||||
u32* src;
|
||||
u32* dst;
|
||||
src = (void*)ppbUser;
|
||||
dst = (void*)ppbDsp;
|
||||
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
|
||||
if (pvpb->updateCounter != 0) {
|
||||
u32 count;
|
||||
src = (void*)&__AXUpdates[pvpb->index];
|
||||
dst = (void*)pvpb->updateData;
|
||||
for (count = pvpb->updateCounter; count; count--) {
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYSELECT) {
|
||||
ppbDsp->srcSelect = ppbUser->srcSelect;
|
||||
ppbDsp->coefSelect = ppbUser->coefSelect;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYMXRCTRL) {
|
||||
ppbDsp->mixerCtrl = ppbUser->mixerCtrl;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYSTATE) {
|
||||
ppbDsp->state = ppbUser->state;
|
||||
} else {
|
||||
ppbUser->state = ppbDsp->state;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYTYPE) {
|
||||
ppbDsp->type = ppbUser->type;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYAXPBMIX) {
|
||||
// copy AXPBMIX.
|
||||
u16* src;
|
||||
u16* dst;
|
||||
src = (void*)&ppbUser->mix;
|
||||
dst = (void*)&ppbDsp->mix;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYTSHIFT) {
|
||||
ppbDsp->itd.targetShiftL = ppbUser->itd.targetShiftL;
|
||||
ppbDsp->itd.targetShiftR = ppbUser->itd.targetShiftR;
|
||||
} else if (sync & AX_SYNC_FLAG_COPYITD) {
|
||||
// copy ITD struct.
|
||||
u16* src;
|
||||
u16* dst;
|
||||
u32* dst_;
|
||||
src = (void*)&ppbUser->itd;
|
||||
dst = (void*)&ppbDsp->itd;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); src+=1;
|
||||
|
||||
dst; // fixes reg alloc
|
||||
dst_ = pvpb->itdBuffer;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0; dst_+=1;
|
||||
*(dst_) = 0;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYUPDATE) {
|
||||
// copy UPDATE struct.
|
||||
u16* src;
|
||||
u16* dst;
|
||||
dst = (void*)&ppbDsp->update;
|
||||
src = (void*)&ppbUser->update;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
|
||||
if (pvpb->updateCounter) {
|
||||
u32* src_;
|
||||
u32* dst_;
|
||||
u32 count;
|
||||
|
||||
dst_ = (void*)&__AXUpdates[pvpb->index];
|
||||
src_ = (void*)&pvpb->updateData;
|
||||
|
||||
for (count = pvpb->updateCounter; count; count--) {
|
||||
*(dst_) = *(src_); dst_+=1; src_+=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYDPOP) {
|
||||
// copy DPOP struct.
|
||||
u16* src;
|
||||
u16* dst;
|
||||
dst = (void*)&ppbDsp->dpop;
|
||||
src = (void*)&ppbUser->dpop;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_SWAPVOL) {
|
||||
ppbUser->ve.currentVolume = ppbDsp->ve.currentVolume;
|
||||
ppbDsp->ve.currentDelta = ppbUser->ve.currentDelta;
|
||||
} else if (sync & AX_SYNC_FLAG_COPYVOL) {
|
||||
ppbDsp->ve.currentVolume = ppbUser->ve.currentVolume;
|
||||
ppbDsp->ve.currentDelta = ppbUser->ve.currentDelta;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYFIR) {
|
||||
// copy FIR struct.
|
||||
u16* src;
|
||||
u16* dst;
|
||||
dst = (void*)&ppbDsp->fir;
|
||||
src = (void*)&ppbUser->fir;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
}
|
||||
|
||||
if (sync & (AX_SYNC_FLAG_COPYLOOP | AX_SYNC_FLAG_COPYLOOPADDR | AX_SYNC_FLAG_COPYENDADDR | AX_SYNC_FLAG_COPYCURADDR)) {
|
||||
if (sync & AX_SYNC_FLAG_COPYLOOP) {
|
||||
ppbDsp->addr.loopFlag = ppbUser->addr.loopFlag;
|
||||
}
|
||||
if (sync & AX_SYNC_FLAG_COPYLOOPADDR) {
|
||||
*(u32*)&ppbDsp->addr.loopAddressHi = *(u32*)&ppbUser->addr.loopAddressHi;
|
||||
}
|
||||
if (sync & AX_SYNC_FLAG_COPYENDADDR) {
|
||||
*(u32*)&ppbDsp->addr.endAddressHi = *(u32*)&ppbUser->addr.endAddressHi;
|
||||
}
|
||||
if (sync & AX_SYNC_FLAG_COPYCURADDR) {
|
||||
*(u32*)&ppbDsp->addr.currentAddressHi = *(u32*)&ppbUser->addr.currentAddressHi;
|
||||
} else {
|
||||
*(u32*)&ppbUser->addr.currentAddressHi = *(u32*)&ppbDsp->addr.currentAddressHi;
|
||||
}
|
||||
} else if (sync & AX_SYNC_FLAG_COPYADDR) {
|
||||
// copy ADDR struct.
|
||||
u32* src;
|
||||
u32* dst;
|
||||
dst = (void*)&ppbDsp->addr;
|
||||
src = (void*)&ppbUser->addr;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
} else {
|
||||
ppbUser->addr.currentAddressHi = ppbDsp->addr.currentAddressHi;
|
||||
ppbUser->addr.currentAddressLo = ppbDsp->addr.currentAddressLo;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYADPCM) {
|
||||
// copy ADPCM struct.
|
||||
u32* src;
|
||||
u32* dst;
|
||||
dst = (void*)&ppbDsp->adpcm;
|
||||
src = (void*)&ppbUser->adpcm;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYRATIO) {
|
||||
ppbDsp->src.ratioHi = ppbUser->src.ratioHi;
|
||||
ppbDsp->src.ratioLo = ppbUser->src.ratioLo;
|
||||
} else if (sync & AX_SYNC_FLAG_COPYSRC) {
|
||||
// copy SRC struct.
|
||||
u16* src;
|
||||
u16* dst;
|
||||
dst = (void*)&ppbDsp->src;
|
||||
src = (void*)&ppbUser->src;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
}
|
||||
|
||||
if (sync & AX_SYNC_FLAG_COPYADPCMLOOP) {
|
||||
// copy ADPCMLOOP struct.
|
||||
u16* src;
|
||||
u16* dst;
|
||||
dst = (void*)&ppbDsp->adpcmLoop;
|
||||
src = (void*)&ppbUser->adpcmLoop;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
}
|
||||
|
||||
if (sync & 0x400000) {
|
||||
ppbDsp->lpf.a0 = ppbUser->lpf.a0;
|
||||
ppbDsp->lpf.b0 = ppbUser->lpf.b0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (sync & 0x200000) {
|
||||
// copy AXPBLPF struct
|
||||
u16* src;
|
||||
u16* dst;
|
||||
|
||||
dst = (void*)&ppbDsp->lpf;
|
||||
src = (void*)&ppbUser->lpf;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
}
|
||||
}
|
||||
|
||||
void __AXDumpVPB(AXVPB* pvpb) {
|
||||
AXPB* ppbDsp;
|
||||
|
||||
ppbDsp = &__AXPB[pvpb->index];
|
||||
if (ppbDsp->state == 1) {
|
||||
__AXDepopVoice(ppbDsp);
|
||||
}
|
||||
pvpb->pb.state = ppbDsp->state = ppbDsp->update.updNum[0]
|
||||
= ppbDsp->update.updNum[1] = ppbDsp->update.updNum[2]
|
||||
= ppbDsp->update.updNum[3] = ppbDsp->update.updNum[4] = 0;
|
||||
__AXPushCallbackStack(pvpb);
|
||||
}
|
||||
|
||||
void __AXSyncPBs(u32 lessDlpfycles) {
|
||||
u32 cycles;
|
||||
u32 i;
|
||||
AXVPB* pvpb;
|
||||
|
||||
__AXNumVoices = 0;
|
||||
DCInvalidateRange(__AXPB, sizeof(__AXPB));
|
||||
DCInvalidateRange(__AXITD, sizeof(__AXITD));
|
||||
cycles = (__AXGetCommandListCycles() + 0x10000) - 0x55F0 + lessDlpfycles;
|
||||
|
||||
for (i = 31; i; i--) {
|
||||
for (pvpb = __AXGetStackHead(i); pvpb; pvpb = pvpb->next) {
|
||||
if (pvpb->depop != 0) {
|
||||
__AXDepopVoice(&__AXPB[pvpb->index]);
|
||||
}
|
||||
|
||||
if ((pvpb->pb.state == 1) || (pvpb->updateCounter != 0)) {
|
||||
if (pvpb->pb.srcSelect != 2) {
|
||||
cycles += __AXSrcCycles[pvpb->pb.src.ratioHi];
|
||||
}
|
||||
|
||||
if (pvpb->pb.lpf.on) {
|
||||
cycles += 555;
|
||||
}
|
||||
|
||||
cycles += __AXMainMixCycles[pvpb->pb.mixerCtrl & 0xF] + __AXAuxMixCycles[(pvpb->pb.mixerCtrl >> 4) & 0x1F] + __AXAuxMixCycles[(pvpb->pb.mixerCtrl >> 9) & 0x1F] + 0x8C;
|
||||
if (__AXMaxDspCycles > cycles) {
|
||||
__AXServiceVPB(pvpb);
|
||||
} else {
|
||||
__AXDumpVPB(pvpb);
|
||||
}
|
||||
} else {
|
||||
__AXServiceVPB(pvpb);
|
||||
}
|
||||
|
||||
pvpb->sync = 0;
|
||||
pvpb->depop = 0;
|
||||
pvpb->updateMS = pvpb->updateCounter = 0;
|
||||
pvpb->updateWrite = pvpb->updateData;
|
||||
}
|
||||
}
|
||||
|
||||
__AXRecDspCycles = cycles;
|
||||
for (pvpb = __AXGetStackHead(0); pvpb; pvpb = pvpb->next) {
|
||||
if (pvpb->depop != 0) {
|
||||
__AXDepopVoice(&__AXPB[pvpb->index]);
|
||||
}
|
||||
pvpb->depop = 0;
|
||||
__AXPB[pvpb->index].state = __AXPB[pvpb->index].update.updNum[0] = __AXPB[pvpb->index].update.updNum[1]
|
||||
= __AXPB[pvpb->index].update.updNum[2] = __AXPB[pvpb->index].update.updNum[3]
|
||||
= __AXPB[pvpb->index].update.updNum[4] = 0;
|
||||
}
|
||||
|
||||
DCFlushRange(__AXPB, sizeof(__AXPB));
|
||||
DCFlushRange(__AXITD, sizeof(__AXITD));
|
||||
DCFlushRange(__AXUpdates, sizeof(__AXUpdates));
|
||||
}
|
||||
|
||||
AXPB* __AXGetPBs(void) {
|
||||
return __AXPB;
|
||||
}
|
||||
|
||||
void __AXSetPBDefault(AXVPB* p) {
|
||||
p->pb.state = 0;
|
||||
p->pb.itd.flag = 0;
|
||||
p->sync = 0x2000A4;
|
||||
p->updateMS = p->updateCounter = 0;
|
||||
p->updateWrite = p->updateData;
|
||||
p->pb.update.updNum[0] = p->pb.update.updNum[1] = p->pb.update.updNum[2] = p->pb.update.updNum[3] = p->pb.update.updNum[4] = 0;
|
||||
p->pb.lpf.on = 0;
|
||||
}
|
||||
|
||||
void __AXVPBInit(void) {
|
||||
u32 i;
|
||||
AXPB* ppb;
|
||||
AXPBITDBUFFER* ppbi;
|
||||
AXPBU* ppbu;
|
||||
AXVPB* pvpb;
|
||||
u32* p;
|
||||
|
||||
#if DEBUG
|
||||
OSReport("Initializing AXVPB code module\n");
|
||||
#endif
|
||||
__AXMaxDspCycles = OS_BUS_CLOCK / 400;
|
||||
__AXRecDspCycles = 0;
|
||||
|
||||
#define BUFFER_MEMSET(buffer, size) \
|
||||
{ \
|
||||
p = (u32*)&buffer; \
|
||||
for (i = size; i != 0; i--) { \
|
||||
*p = 0; \
|
||||
p++; \
|
||||
} \
|
||||
}
|
||||
|
||||
BUFFER_MEMSET(__AXPB, 0xF40);
|
||||
BUFFER_MEMSET(__AXITD, 0x400);
|
||||
BUFFER_MEMSET(__AXVPB, 0x22C0);
|
||||
|
||||
for (i = 0; i < AX_MAX_VOICES; i++) {
|
||||
ppb = &__AXPB[i];
|
||||
ppbi = &__AXITD[i];
|
||||
ppbu = &__AXUpdates[i];
|
||||
pvpb = &__AXVPB[i];
|
||||
|
||||
ASSERTLINE(913, (u32)ppb ^ 0x1F);
|
||||
ASSERTLINE(914, (u32)ppbi ^ 0x1F);
|
||||
ASSERTLINE(915, (u32)ppbu ^ 0x1F);
|
||||
|
||||
pvpb->index = i;
|
||||
pvpb->updateWrite = pvpb->updateData;
|
||||
pvpb->itdBuffer = ppbi;
|
||||
__AXSetPBDefault(pvpb);
|
||||
|
||||
if (i == 0x3F) {
|
||||
pvpb->pb.nextHi = pvpb->pb.nextLo = ppb->nextHi = ppb->nextLo = 0;
|
||||
} else {
|
||||
pvpb->pb.nextHi = (u16)( (u32)((char*)ppb + sizeof(AXPB)) >> 16 );
|
||||
pvpb->pb.nextLo = (u16)( (u32)((char*)ppb + sizeof(AXPB)) );
|
||||
ppb->nextHi = (u16)( (u32)((char*)ppb + sizeof(AXPB)) >> 16 );
|
||||
ppb->nextLo = (u16)( (u32)((char*)ppb + sizeof(AXPB)) );
|
||||
}
|
||||
|
||||
pvpb->pb.currHi = (u16)(((u32)ppb) >> 16);
|
||||
pvpb->pb.currLo = (u16)((u32)ppb);
|
||||
ppb->currHi = (u16)(((u32)ppb) >> 16);
|
||||
ppb->currLo = (u16)((u32)ppb);
|
||||
pvpb->pb.itd.bufferHi = (u16)(((u32)ppbi) >> 16);
|
||||
pvpb->pb.itd.bufferLo = (u16)((u32)ppbi);
|
||||
ppb->itd.bufferHi = (u16)(((u32)ppbi) >> 16);
|
||||
ppb->itd.bufferLo = (u16)((u32)ppbi);
|
||||
pvpb->pb.update.dataHi = (u16)(((u32)ppbu) >> 16);
|
||||
pvpb->pb.update.dataLo = (u16)((u32)ppbu);
|
||||
ppb->update.dataHi = (u16)(((u32)ppbu) >> 16);
|
||||
ppb->update.dataLo = (u16)((u32)ppbu);
|
||||
|
||||
pvpb->priority = 1;
|
||||
__AXPushFreeStack(pvpb);
|
||||
}
|
||||
|
||||
DCFlushRange(__AXPB, sizeof(__AXPB));
|
||||
}
|
||||
|
||||
void __AXVPBQuit(void) {
|
||||
#if DEBUG
|
||||
OSReport("Shutting down AXVPB code module\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void AXSetVoiceSrcType(AXVPB* p, u32 type) {
|
||||
BOOL old;
|
||||
AXPB* ppb;
|
||||
|
||||
ASSERTLINE(1020, p);
|
||||
ASSERTLINE(1021, type <= AX_SRC_TYPE_4TAP_16K);
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
ppb = &p->pb;
|
||||
switch(type) {
|
||||
case AX_SRC_TYPE_NONE:
|
||||
ppb->srcSelect = 2;
|
||||
break;
|
||||
case AX_SRC_TYPE_LINEAR:
|
||||
ppb->srcSelect = 1;
|
||||
break;
|
||||
case AX_SRC_TYPE_4TAP_8K:
|
||||
ppb->srcSelect = 0;
|
||||
ppb->coefSelect = 0;
|
||||
break;
|
||||
case AX_SRC_TYPE_4TAP_12K:
|
||||
ppb->srcSelect = 0;
|
||||
ppb->coefSelect = 1;
|
||||
break;
|
||||
case AX_SRC_TYPE_4TAP_16K:
|
||||
ppb->srcSelect = 0;
|
||||
ppb->coefSelect = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
p->sync |= AX_SYNC_FLAG_COPYSELECT;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceState(AXVPB* p, u16 state) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.state = state;
|
||||
p->sync |= AX_SYNC_FLAG_COPYSTATE;
|
||||
if (state == 0) {
|
||||
p->depop = 1;
|
||||
}
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceType(AXVPB* p, u16 type) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.type = type;
|
||||
p->sync |= AX_SYNC_FLAG_COPYTYPE;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceMix(AXVPB* p, AXPBMIX* mix) {
|
||||
BOOL old;
|
||||
u16 mixerCtrl;
|
||||
u16* dst;
|
||||
u16* src;
|
||||
|
||||
src = (u16*)mix;
|
||||
dst = (u16*)&p->pb.mix;
|
||||
mixerCtrl = 0;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x1;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x9;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x2;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0xA;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x10;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x50;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x20;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x60;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x200;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0xA00;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x400;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0xC00;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x1000;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x3000;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x4;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0xC;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x80;
|
||||
if ((*dst++ = *src++)) mixerCtrl |= 0x180;
|
||||
|
||||
p->pb.mixerCtrl = mixerCtrl;
|
||||
p->sync |= (AX_SYNC_FLAG_COPYAXPBMIX | AX_SYNC_FLAG_COPYMXRCTRL);
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceItdOn(AXVPB* p) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.itd.flag = 1;
|
||||
p->pb.itd.shiftL = p->pb.itd.shiftR = p->pb.itd.targetShiftL = p->pb.itd.targetShiftR = 0;
|
||||
p->sync &= ~(AX_SYNC_FLAG_COPYTSHIFT);
|
||||
p->sync |= AX_SYNC_FLAG_COPYITD;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceItdTarget(AXVPB* p, u16 lShift, u16 rShift) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.itd.targetShiftL = lShift;
|
||||
p->pb.itd.targetShiftR = rShift;
|
||||
p->sync |= AX_SYNC_FLAG_COPYTSHIFT;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceUpdateIncrement(AXVPB* p) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->updateMS++;
|
||||
p->sync |= AX_SYNC_FLAG_COPYUPDATE;
|
||||
ASSERTMSGLINE(1191, p->updateMS <= 4, "PB updates cannot exceed 5ms\n");
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceUpdateWrite(AXVPB* p, u16 param, u16 data) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->updateCounter+=2;
|
||||
ASSERTMSGLINE(1205, p->updateCounter <= 128, "PB update block exceeded 128 words\n");
|
||||
|
||||
*(p->updateWrite) = param; p->updateWrite+=1;
|
||||
*(p->updateWrite) = data; p->updateWrite+=1;
|
||||
p->sync |= AX_SYNC_FLAG_COPYUPDATE;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceDpop(AXVPB* p, AXPBDPOP* dpop) {
|
||||
BOOL old;
|
||||
u16* dst;
|
||||
u16* src;
|
||||
|
||||
dst = (void*)&p->pb.dpop;
|
||||
src = (void*)dpop;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
{
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
}
|
||||
p->sync |= AX_SYNC_FLAG_COPYDPOP;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceVe(AXVPB* p, AXPBVE* ve) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.ve.currentVolume = ve->currentVolume;
|
||||
p->pb.ve.currentDelta = ve->currentDelta;
|
||||
p->sync |= AX_SYNC_FLAG_COPYVOL;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceVeDelta(AXVPB* p, s16 delta) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.ve.currentDelta = delta;
|
||||
p->sync |= AX_SYNC_FLAG_SWAPVOL;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceFir(AXVPB* p, AXPBFIR* fir) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.fir.numCoefs = fir->numCoefs;
|
||||
p->pb.fir.coefsHi = fir->coefsHi;
|
||||
p->pb.fir.coefsLo = fir->coefsLo;
|
||||
p->sync |= AX_SYNC_FLAG_COPYFIR;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceAddr(AXVPB* p, AXPBADDR* addr) {
|
||||
BOOL old;
|
||||
u32* dst;
|
||||
u32* src;
|
||||
|
||||
dst = (void*)&p->pb.addr;
|
||||
src = (void*)addr;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
{
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src);
|
||||
}
|
||||
|
||||
switch(addr->format) {
|
||||
case 0:
|
||||
ASSERTMSGLINE(1335, (addr->loopAddressLo & 0xF) > 1, "*** loop address on ADPCM frame header! ***\n");
|
||||
ASSERTMSGLINE(1340, (addr->endAddressLo & 0xF) > 1, "*** end address on ADPCM frame header! ***\n");
|
||||
ASSERTMSGLINE(1345, (addr->currentAddressLo & 0xF) > 1, "*** current address on ADPCM frame header! ***\n");
|
||||
break;
|
||||
case 10:
|
||||
dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0x08000000; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
break;
|
||||
case 25:
|
||||
dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
*(dst) = 0x01000000; dst+=1;
|
||||
*(dst) = 0; dst+=1;
|
||||
break;
|
||||
default:
|
||||
ASSERTMSGLINE(1389, 0, "unknown addr->formaqt in PB\n");
|
||||
break;
|
||||
}
|
||||
|
||||
p->sync &= ~(AX_SYNC_FLAG_COPYLOOP | AX_SYNC_FLAG_COPYLOOPADDR | AX_SYNC_FLAG_COPYENDADDR | AX_SYNC_FLAG_COPYCURADDR);
|
||||
p->sync |= (AX_SYNC_FLAG_COPYADDR | AX_SYNC_FLAG_COPYADPCM);
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceLoop(AXVPB* p, u16 loop) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.addr.loopFlag = loop;
|
||||
p->sync |= AX_SYNC_FLAG_COPYLOOP;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceLoopAddr(AXVPB* p, u32 addr) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.addr.loopAddressHi = (addr >> 0x10);
|
||||
p->pb.addr.loopAddressLo = (addr);
|
||||
p->sync |= AX_SYNC_FLAG_COPYLOOPADDR;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceEndAddr(AXVPB* p, u32 addr) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.addr.endAddressHi = (addr >> 0x10);
|
||||
p->pb.addr.endAddressLo = (addr);
|
||||
p->sync |= AX_SYNC_FLAG_COPYENDADDR;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceCurrentAddr(AXVPB* p, u32 addr) {
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
p->pb.addr.currentAddressHi = (addr >> 0x10);
|
||||
p->pb.addr.currentAddressLo = (addr);
|
||||
p->sync |= AX_SYNC_FLAG_COPYCURADDR;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceAdpcm(AXVPB* p, AXPBADPCM* adpcm) {
|
||||
BOOL old;
|
||||
u32* dst;
|
||||
u32* src;
|
||||
|
||||
dst = (void*)&p->pb.adpcm;
|
||||
src = (void*)adpcm;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
|
||||
{
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
}
|
||||
p->sync |= AX_SYNC_FLAG_COPYADPCM;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceSrc(AXVPB* p, AXPBSRC* src_) {
|
||||
BOOL old;
|
||||
u16* dst;
|
||||
u16* src;
|
||||
|
||||
dst = (void*)&p->pb.src;
|
||||
src = (void*)src_;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
{
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
}
|
||||
p->sync &= ~(AX_SYNC_FLAG_COPYRATIO);
|
||||
p->sync |= AX_SYNC_FLAG_COPYSRC;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceSrcRatio(AXVPB* p, float ratio) {
|
||||
u32 r;
|
||||
BOOL old;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
r = 65536.0f* ratio;
|
||||
if (r > 0x40000) {
|
||||
r = 0x40000;
|
||||
}
|
||||
p->pb.src.ratioHi = ((u32)r >> 0x10);
|
||||
p->pb.src.ratioLo = ((u32)r);
|
||||
p->sync |= AX_SYNC_FLAG_COPYRATIO;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceAdpcmLoop(AXVPB* p, AXPBADPCMLOOP* adpcmloop) {
|
||||
BOOL old;
|
||||
u16* dst;
|
||||
u16* src;
|
||||
|
||||
dst = (void*)&p->pb.adpcmLoop;
|
||||
src = (void*)adpcmloop;
|
||||
old = OSDisableInterrupts();
|
||||
{
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
*(dst) = *(src); dst+=1; src+=1;
|
||||
}
|
||||
p->sync |= AX_SYNC_FLAG_COPYADPCMLOOP;
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceLpf(AXVPB* p, AXPBLPF* lpf) {
|
||||
BOOL old;
|
||||
u16* dst;
|
||||
u16* src;
|
||||
|
||||
dst = (u16*)&p->pb.lpf;
|
||||
src = (u16*)lpf;
|
||||
|
||||
old = OSDisableInterrupts();
|
||||
|
||||
*dst = *src; dst++; src++;
|
||||
*dst = *src; dst++; src++;
|
||||
*dst = *src; dst++; src++;
|
||||
*dst = *src; dst++; src++;
|
||||
p->sync |= 0x200000;
|
||||
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
void AXSetVoiceLpfCoefs(AXVPB* p, u16 a0, u16 b0) {
|
||||
BOOL old;
|
||||
old = OSDisableInterrupts();
|
||||
|
||||
p->pb.lpf.a0 = a0;
|
||||
p->pb.lpf.b0 = b0;
|
||||
p->sync |= 0x400000;
|
||||
|
||||
OSRestoreInterrupts(old);
|
||||
}
|
||||
|
||||
#define PI 3.14159265358979323846f
|
||||
|
||||
void AXGetLpfCoefs(u16 freq, u16* a0, u16* b0) {
|
||||
f32 bb;
|
||||
f32 cc;
|
||||
|
||||
ASSERTMSGLINE(1616, freq <= 16000, "freq is out of range");
|
||||
|
||||
cc = 2.0f - cos(((PI * 2) * (f32)freq) / 32000.0f);
|
||||
bb = sqrt((cc * cc) - 1.0f) - cc;
|
||||
|
||||
*b0 = 32768.0f * -bb;
|
||||
*a0 = 0x7FFF - *b0;
|
||||
}
|
||||
|
||||
void AXSetMaxDspCycles(u32 cycles) {
|
||||
__AXMaxDspCycles = cycles;
|
||||
}
|
||||
|
||||
u32 AXGetMaxDspCycles(void) {
|
||||
return __AXMaxDspCycles;
|
||||
}
|
||||
|
||||
u32 AXGetDspCycles(void) {
|
||||
return __AXRecDspCycles;
|
||||
}
|
||||
@@ -0,0 +1,669 @@
|
||||
#include <dolphin/dolphin.h>
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
u16 axDspSlaveLength = (AX_DSP_SLAVE_LENGTH * 2);
|
||||
|
||||
u16 axDspSlave[AX_DSP_SLAVE_LENGTH] ATTRIBUTE_ALIGN(32) = {
|
||||
0x0000, 0x0000, 0x029F, 0x0E88, 0x029F, 0x0E97,
|
||||
0x029F, 0x0EB3, 0x029F, 0x0ED3, 0x029F, 0x0ED9,
|
||||
0x029F, 0x0F0B, 0x029F, 0x0F11, 0x1302, 0x1303,
|
||||
0x1204, 0x1305, 0x1306, 0x8E00, 0x8C00, 0x8B00,
|
||||
0x0092, 0x00FF, 0x8100, 0x8900, 0x009E, 0x0E80,
|
||||
0x00FE, 0x0E1B, 0x8100, 0x00FE, 0x0E31, 0x16FC,
|
||||
0xDCD1, 0x16FD, 0x0000, 0x16FB, 0x0001, 0x26FC,
|
||||
0x02A0, 0x8000, 0x029C, 0x0029, 0x029F, 0x0045,
|
||||
0x1302, 0x1303, 0x1204, 0x1305, 0x1306, 0x8E00,
|
||||
0x8C00, 0x8B00, 0x0092, 0x00FF, 0x16FC, 0xDCD1,
|
||||
0x16FD, 0x0001, 0x16FB, 0x0001, 0x26FC, 0x02A0,
|
||||
0x8000, 0x029C, 0x0040, 0x8E00, 0x8100, 0x8900,
|
||||
0x009F, 0xBABE, 0x26FE, 0x02C0, 0x8000, 0x029C,
|
||||
0x004A, 0x8200, 0x0294, 0x004A, 0x23FF, 0x8100,
|
||||
0x26FE, 0x02C0, 0x8000, 0x029C, 0x0054, 0x27FF,
|
||||
0x0240, 0x7FFF, 0x2ECE, 0x2FCF, 0x16CD, 0x0C00,
|
||||
0x8100, 0x2EC9, 0x1FFB, 0x2FCB, 0x02BF, 0x0652,
|
||||
0x0080, 0x0C00, 0x8E00, 0x8100, 0x8970, 0xB100,
|
||||
0x0291, 0x007E, 0x0A13, 0xC100, 0x0292, 0x007E,
|
||||
0x009F, 0x0C9D, 0x4C00, 0x1C7E, 0x0213, 0x1C7E,
|
||||
0x176F, 0x16FC, 0xFBAD, 0x16FD, 0x8080, 0x0021,
|
||||
0x16FC, 0xBAAD, 0x2EFD, 0x0021, 0x8D00, 0x8F00,
|
||||
0x8A00, 0x8900, 0x8168, 0x0098, 0x0000, 0x0099,
|
||||
0x0001, 0x0081, 0x0000, 0x193E, 0x193C, 0x11A0,
|
||||
0x009A, 0xA100, 0x8271, 0x0277, 0x1F19, 0x193C,
|
||||
0xA100, 0x8271, 0x0277, 0x1F19, 0x193C, 0x1FD8,
|
||||
0xB100, 0x0294, 0x00CB, 0x00DE, 0x0E44, 0xB100,
|
||||
0x0294, 0x00AB, 0x191C, 0x191C, 0x191C, 0x00E0,
|
||||
0x0E45, 0x029F, 0x0114, 0x8B00, 0x7A00, 0x00FE,
|
||||
0x0E44, 0x8400, 0x0099, 0x0140, 0x1F1E, 0xA000,
|
||||
0x191E, 0x191E, 0x191C, 0x00E0, 0x0E45, 0x009A,
|
||||
0x0000, 0x0098, 0x0DC0, 0x4E00, 0x4800, 0x2ECE,
|
||||
0x2CCF, 0x009E, 0x0E48, 0x2ECD, 0x0E00, 0x2EC9,
|
||||
0x009E, 0x0140, 0x2ECB, 0x029F, 0x00E3, 0x8B00,
|
||||
0x00D8, 0x0E44, 0x0099, 0x0140, 0xA000, 0x191E,
|
||||
0x00FE, 0x0E44, 0x191E, 0x191C, 0x00E0, 0x0E45,
|
||||
0x4E00, 0x2ECE, 0x2CCF, 0x009E, 0x0E48, 0x2ECD,
|
||||
0x0E00, 0x2EC9, 0x009E, 0x0140, 0x2ECB, 0x02BF,
|
||||
0x0652, 0x8A48, 0x0083, 0x0E48, 0x0080, 0x0000,
|
||||
0x0081, 0x0000, 0x1979, 0x193A, 0xB041, 0xA64B,
|
||||
0xF051, 0xB441, 0x9100, 0x1150, 0x00FC, 0xA792,
|
||||
0xF151, 0xB520, 0x9941, 0xA693, 0xF051, 0xB428,
|
||||
0x9141, 0x0083, 0x0E48, 0x0080, 0x0140, 0x0081,
|
||||
0x0140, 0x1979, 0x193A, 0xB041, 0xA64B, 0xF051,
|
||||
0xB441, 0x9100, 0x1150, 0x0113, 0xA792, 0xF151,
|
||||
0xB520, 0x9941, 0xA693, 0xF051, 0xB428, 0x9141,
|
||||
0x00C0, 0x0E45, 0x029F, 0x0068, 0x8100, 0x8970,
|
||||
0x8E78, 0x2ECE, 0x2FCF, 0x009E, 0x0E48, 0x2ECD,
|
||||
0x0E00, 0x2EC9, 0x009E, 0x0040, 0x2ECB, 0x0081,
|
||||
0x0E48, 0x0082, 0x0000, 0x009B, 0x009F, 0x009A,
|
||||
0x0140, 0x8100, 0x8900, 0x8F00, 0x02BF, 0x0652,
|
||||
0x193E, 0x193C, 0xB100, 0x193F, 0x0294, 0x013C,
|
||||
0x005A, 0x1B5E, 0x029F, 0x0144, 0x9900, 0x1B5E,
|
||||
0x1B5C, 0x007B, 0x0143, 0x4C00, 0x1B5E, 0x1B5C,
|
||||
0x193E, 0x193C, 0xB100, 0x193F, 0x0294, 0x014E,
|
||||
0x005A, 0x1B5E, 0x029F, 0x0156, 0x9900, 0x1B5E,
|
||||
0x1B5C, 0x007B, 0x0155, 0x4C00, 0x1B5E, 0x1B5C,
|
||||
0x193E, 0x193C, 0xB100, 0x193F, 0x0294, 0x0160,
|
||||
0x005A, 0x1B5E, 0x029F, 0x0168, 0x9900, 0x1B5E,
|
||||
0x1B5C, 0x007B, 0x0167, 0x4C00, 0x1B5E, 0x1B5C,
|
||||
0x0082, 0x0400, 0x193E, 0x193C, 0xB179, 0x0294,
|
||||
0x0173, 0x005A, 0x1B5E, 0x029F, 0x017B, 0x9900,
|
||||
0x1B5E, 0x1B5C, 0x007B, 0x017A, 0x4C00, 0x1B5E,
|
||||
0x1B5C, 0x193E, 0x193C, 0xB179, 0x0294, 0x0184,
|
||||
0x005A, 0x1B5E, 0x029F, 0x018C, 0x9900, 0x1B5E,
|
||||
0x1B5C, 0x007B, 0x018B, 0x4C00, 0x1B5E, 0x1B5C,
|
||||
0x193E, 0x193C, 0xB179, 0x0294, 0x0195, 0x005A,
|
||||
0x1B5E, 0x029F, 0x019D, 0x9900, 0x1B5E, 0x1B5C,
|
||||
0x007B, 0x019C, 0x4C00, 0x1B5E, 0x1B5C, 0x0082,
|
||||
0x07C0, 0x193E, 0x193C, 0xB179, 0x0294, 0x01A8,
|
||||
0x005A, 0x1B5E, 0x029F, 0x01B0, 0x9900, 0x1B5E,
|
||||
0x1B5C, 0x007B, 0x01AF, 0x4C00, 0x1B5E, 0x1B5C,
|
||||
0x193E, 0x193C, 0xB179, 0x0294, 0x01B9, 0x005A,
|
||||
0x1B5E, 0x029F, 0x01C1, 0x9900, 0x1B5E, 0x1B5C,
|
||||
0x007B, 0x01C0, 0x4C00, 0x1B5E, 0x1B5C, 0x193E,
|
||||
0x193C, 0xB179, 0x0294, 0x01CA, 0x005A, 0x1B5E,
|
||||
0x029F, 0x01D2, 0x9900, 0x1B5E, 0x1B5C, 0x007B,
|
||||
0x01D1, 0x4C00, 0x1B5E, 0x1B5C, 0x029F, 0x0068,
|
||||
0x0085, 0xFFFF, 0x8150, 0x8940, 0x8E48, 0x00FA,
|
||||
0x0E17, 0x00F8, 0x0E18, 0x0081, 0x0000, 0x02BF,
|
||||
0x05E7, 0x00DA, 0x0E17, 0x00D8, 0x0E18, 0x8948,
|
||||
0x0081, 0x0400, 0x02BF, 0x05E7, 0x00DA, 0x0E17,
|
||||
0x00D8, 0x0E18, 0x8948, 0x0081, 0x07C0, 0x02BF,
|
||||
0x05E7, 0x029F, 0x0068, 0x0086, 0x07C0, 0x02BF,
|
||||
0x057A, 0x029F, 0x0068, 0x8100, 0x8E00, 0x191E,
|
||||
0x191C, 0x2ECE, 0x2CCF, 0x16CD, 0x0000, 0x16C9,
|
||||
0x0001, 0x16CB, 0x0780, 0x02BF, 0x0652, 0x029F,
|
||||
0x0068, 0x8100, 0x8970, 0x8E60, 0x2ECE, 0x2CCF,
|
||||
0x16CD, 0x0E48, 0x16C9, 0x0000, 0x8900, 0x0D20,
|
||||
0x2DCB, 0x4C00, 0x1C80, 0x0080, 0x0280, 0x0081,
|
||||
0x0000, 0x0082, 0x0140, 0x0083, 0x0E48, 0x0A00,
|
||||
0x27C9, 0x03A0, 0x0004, 0x029C, 0x0222, 0x2ECE,
|
||||
0x2CCF, 0x16CD, 0x0E58, 0x16C9, 0x0000, 0x16CB,
|
||||
0x0260, 0x009F, 0x00A0, 0x8F00, 0x007F, 0x023B,
|
||||
0x197E, 0x1B1A, 0x197C, 0x1B1A, 0x1B5E, 0x7C22,
|
||||
0x1B3E, 0x1B3C, 0x1C04, 0x029F, 0x0068, 0x8E70,
|
||||
0x8960, 0x191F, 0x2ECE, 0x2CCF, 0x16CD, 0x0C00,
|
||||
0x16C9, 0x0000, 0x0503, 0x0340, 0xFFF0, 0x2FCB,
|
||||
0x02BF, 0x0652, 0x0080, 0x0C00, 0x029F, 0x0068,
|
||||
0x8100, 0x8970, 0x8E78, 0x2ECE, 0x2FCF, 0x16CD,
|
||||
0x0B80, 0x16C9, 0x0000, 0x16CB, 0x00C4, 0x0082,
|
||||
0x0E08, 0x009F, 0x0000, 0x1B5F, 0x009F, 0x0140,
|
||||
0x1B5F, 0x009F, 0x0280, 0x1B5F, 0x009F, 0x0400,
|
||||
0x1B5F, 0x009F, 0x0540, 0x1B5F, 0x009F, 0x0680,
|
||||
0x1B5F, 0x009F, 0x07C0, 0x1B5F, 0x009F, 0x0900,
|
||||
0x1B5F, 0x009F, 0x0A40, 0x1B5F, 0x02BF, 0x0652,
|
||||
0x00DE, 0x0BA7, 0x00DF, 0x0BA8, 0x2ECE, 0x2FCF,
|
||||
0x16CD, 0x03C0, 0x16C9, 0x0000, 0x16CB, 0x0080,
|
||||
0x8100, 0x8900, 0x00DE, 0x0B84, 0x009F, 0x0D21,
|
||||
0x4C00, 0x1C7E, 0x0213, 0x00FE, 0x0E15, 0x00DE,
|
||||
0x0B85, 0x009F, 0x0D24, 0x4C00, 0x1C7E, 0x0213,
|
||||
0x00FE, 0x0E16, 0x00DE, 0x0B86, 0x009A, 0x000F,
|
||||
0x009F, 0x0CB1, 0x3400, 0x4C00, 0x1C7E, 0x0213,
|
||||
0x00FE, 0x0E14, 0x00DE, 0x0B86, 0x009A, 0x001F,
|
||||
0x009F, 0x0CC1, 0x14FC, 0x3400, 0x4C00, 0x1C7E,
|
||||
0x0213, 0x00FE, 0x0E46, 0x00DE, 0x0B86, 0x009F,
|
||||
0x0CE1, 0x14F7, 0x4C00, 0x1C7E, 0x0213, 0x00FE,
|
||||
0x0E47, 0x8100, 0x00DE, 0x0B9B, 0xB100, 0x0295,
|
||||
0x02EA, 0x8900, 0x00DF, 0x0B9E, 0x0300, 0x0CC0,
|
||||
0x00FF, 0x0E40, 0x00DF, 0x0B9F, 0x0300, 0x0CC0,
|
||||
0x00FF, 0x0E41, 0x009F, 0x0CE0, 0x00FF, 0x0E42,
|
||||
0x00FF, 0x0E43, 0x02BF, 0x0652, 0x00DE, 0x0B9C,
|
||||
0x2ECE, 0x00DE, 0x0B9D, 0x2ECF, 0x16CD, 0x0CC0,
|
||||
0x16C9, 0x0000, 0x16CB, 0x0040, 0x02BF, 0x0652,
|
||||
0x029F, 0x0068, 0x009F, 0x0CE0, 0x00FF, 0x0E42,
|
||||
0x00FF, 0x0E40, 0x00FF, 0x0E41, 0x00FF, 0x0E43,
|
||||
0x02BF, 0x0652, 0x029F, 0x0068, 0x8E00, 0x00E0,
|
||||
0x0E07, 0x0080, 0x0BA2, 0x0081, 0x03C0, 0x0E05,
|
||||
0x00FE, 0x0E04, 0x8900, 0x8150, 0x009F, 0x0B80,
|
||||
0x007A, 0x030B, 0x193E, 0x4C49, 0x1C5E, 0x1A59,
|
||||
0x0083, 0x0E05, 0x1B61, 0x1B60, 0x00DE, 0x0B87,
|
||||
0x0601, 0x0295, 0x0317, 0x029F, 0x040E, 0x00DE,
|
||||
0x0E42, 0x00FE, 0x0E1C, 0x00C3, 0x0E15, 0x177F,
|
||||
0x8E00, 0x8A00, 0x8100, 0x8900, 0x00DE, 0x0BB3,
|
||||
0x00DF, 0x0BB2, 0x1F1F, 0x4D00, 0x1481, 0x8D1E,
|
||||
0x1FD8, 0x0098, 0x8000, 0x0080, 0x0E48, 0xA830,
|
||||
0xAC38, 0xAD30, 0xAC38, 0xAD30, 0xAC38, 0xAD30,
|
||||
0xAC38, 0xAD30, 0xAC38, 0xAD30, 0xAC38, 0xAD30,
|
||||
0xAC38, 0xAD30, 0xAC38, 0xAD30, 0xAC38, 0xAD30,
|
||||
0xAC38, 0xAD30, 0xAC38, 0xAD30, 0xAC38, 0xAD30,
|
||||
0xAC38, 0xAD30, 0xAC38, 0xAD30, 0xAC38, 0xAD30,
|
||||
0xAC38, 0x00FE, 0x0BB2, 0x8F00, 0x0080, 0x0E48,
|
||||
0x00C1, 0x0E43, 0x1C61, 0x193A, 0x1918, 0x9059,
|
||||
0x1919, 0x9E51, 0x8080, 0x9759, 0x8091, 0x9E51,
|
||||
0x8080, 0x9759, 0x8091, 0x9E51, 0x8080, 0x9759,
|
||||
0x8091, 0x9E51, 0x8080, 0x9759, 0x8091, 0x9E51,
|
||||
0x8080, 0x9759, 0x8091, 0x9E51, 0x8080, 0x9759,
|
||||
0x8091, 0x9E51, 0x8080, 0x9759, 0x8091, 0x9E51,
|
||||
0x8080, 0x9759, 0x8091, 0x9E51, 0x8080, 0x9759,
|
||||
0x8091, 0x9E51, 0x8080, 0x9759, 0x8091, 0x9E51,
|
||||
0x8080, 0x9759, 0x8091, 0x9E51, 0x8080, 0x9759,
|
||||
0x8091, 0x9E51, 0x8080, 0x9759, 0x8091, 0x9E51,
|
||||
0x8080, 0x9759, 0x8091, 0x9E51, 0x8080, 0x9759,
|
||||
0x8091, 0x9E00, 0x6F33, 0x1B7F, 0x8100, 0x00DE,
|
||||
0x0BDD, 0xB100, 0x0295, 0x03C0, 0x8D00, 0x8F00,
|
||||
0x8A00, 0x00C0, 0x0E43, 0x00C1, 0x0E43, 0x0083,
|
||||
0x0BDF, 0x0087, 0xFFFF, 0x00DE, 0x0BDE, 0x80E1,
|
||||
0xB04F, 0x1F5E, 0xE2E1, 0xB64F, 0x1F5E, 0xE2E1,
|
||||
0x110F, 0x03BB, 0xB79A, 0x1F5F, 0xE2E1, 0xB69B,
|
||||
0x1F5E, 0xE2E1, 0xB79A, 0x1B1F, 0x00FF, 0x0BDE,
|
||||
0x00C3, 0x0E14, 0x8A00, 0x177F, 0x00C3, 0x0E46,
|
||||
0x8A00, 0x177F, 0x00C3, 0x0E47, 0x8A00, 0x177F,
|
||||
0x8100, 0x00DE, 0x0B9B, 0xB100, 0x0295, 0x0406,
|
||||
0x00DE, 0x0E42, 0x00FE, 0x0E43, 0x8100, 0x8900,
|
||||
0x00DE, 0x0B9E, 0x00DF, 0x0BA0, 0x8200, 0x0293,
|
||||
0x03E2, 0x7800, 0x029F, 0x03E5, 0x0295, 0x03E5,
|
||||
0x7400, 0x00FE, 0x0B9E, 0x00DF, 0x0E43, 0x05E0,
|
||||
0x4C00, 0x00FE, 0x0E40, 0x8100, 0x8900, 0x00DE,
|
||||
0x0B9F, 0x00DF, 0x0BA1, 0x8200, 0x0293, 0x03F9,
|
||||
0x7800, 0x029F, 0x03FC, 0x0295, 0x03FC, 0x7400,
|
||||
0x00FE, 0x0B9F, 0x00DF, 0x0E43, 0x05E0, 0x4C00,
|
||||
0x00FE, 0x0E41, 0x029F, 0x040E, 0x00DE, 0x0E42,
|
||||
0x00FE, 0x0E40, 0x00FE, 0x0E41, 0x00FE, 0x0E43,
|
||||
0x8100, 0x8E00, 0x8400, 0x8900, 0x1EFE, 0x0E40,
|
||||
0x1EBE, 0x0083, 0x0E08, 0x1C03, 0x1FF5, 0x191A,
|
||||
0xF858, 0xFBA0, 0xF8B1, 0xFBA0, 0xF8B1, 0xFBA0,
|
||||
0xF8B1, 0xFBA0, 0xF83B, 0x1B7E, 0x0083, 0x0E04,
|
||||
0x8100, 0x8973, 0x1961, 0x1960, 0x7800, 0x00FE,
|
||||
0x0E04, 0x0294, 0x0303, 0x8E00, 0x8100, 0x00DE,
|
||||
0x0B9B, 0xB100, 0x0295, 0x0446, 0x00DE, 0x0B9C,
|
||||
0x00DC, 0x0B9D, 0x2ECE, 0x2CCF, 0x8100, 0x00DE,
|
||||
0x0E1C, 0x2ECD, 0x16C9, 0x0001, 0x16CB, 0x0040,
|
||||
0x02BF, 0x0652, 0x8100, 0x8900, 0x00DE, 0x0B82,
|
||||
0x00DF, 0x0B83, 0x2ECE, 0x2FCF, 0x16CD, 0x0B80,
|
||||
0x16C9, 0x0001, 0x16CB, 0x00C4, 0x02BF, 0x0652,
|
||||
0x8100, 0x00DE, 0x0B80, 0x00DC, 0x0B81, 0xB100,
|
||||
0x0294, 0x0462, 0x00C0, 0x0E07, 0x029F, 0x0068,
|
||||
0x2ECE, 0x2CCF, 0x16CD, 0x0B80, 0x16C9, 0x0000,
|
||||
0x16CB, 0x00C4, 0x0082, 0x0E08, 0x009F, 0x0000,
|
||||
0x1B5F, 0x009F, 0x0140, 0x1B5F, 0x009F, 0x0280,
|
||||
0x1B5F, 0x009F, 0x0400, 0x1B5F, 0x009F, 0x0540,
|
||||
0x1B5F, 0x009F, 0x0680, 0x1B5F, 0x009F, 0x07C0,
|
||||
0x1B5F, 0x009F, 0x0900, 0x1B5F, 0x009F, 0x0A40,
|
||||
0x1B5F, 0x02BF, 0x0652, 0x00DE, 0x0BA7, 0x00DF,
|
||||
0x0BA8, 0x2ECE, 0x2FCF, 0x16CD, 0x03C0, 0x16C9,
|
||||
0x0000, 0x16CB, 0x0080, 0x8100, 0x8900, 0x00DE,
|
||||
0x0B84, 0x009F, 0x0D21, 0x4C00, 0x1C7E, 0x0213,
|
||||
0x00FE, 0x0E15, 0x00DE, 0x0B85, 0x009F, 0x0D24,
|
||||
0x4C00, 0x1C7E, 0x0213, 0x00FE, 0x0E16, 0x00DE,
|
||||
0x0B86, 0x009A, 0x000F, 0x009F, 0x0CB1, 0x3400,
|
||||
0x4C00, 0x1C7E, 0x0213, 0x00FE, 0x0E14, 0x00DE,
|
||||
0x0B86, 0x009A, 0x001F, 0x009F, 0x0CC1, 0x14FC,
|
||||
0x3400, 0x4C00, 0x1C7E, 0x0213, 0x00FE, 0x0E46,
|
||||
0x00DE, 0x0B86, 0x009F, 0x0CE1, 0x14F7, 0x4C00,
|
||||
0x1C7E, 0x0213, 0x00FE, 0x0E47, 0x8100, 0x00DE,
|
||||
0x0B9B, 0xB100, 0x0295, 0x04F9, 0x8900, 0x00DF,
|
||||
0x0B9E, 0x0300, 0x0CC0, 0x00FF, 0x0E40, 0x00DF,
|
||||
0x0B9F, 0x0300, 0x0CC0, 0x00FF, 0x0E41, 0x009F,
|
||||
0x0CE0, 0x00FF, 0x0E42, 0x00FF, 0x0E43, 0x02BF,
|
||||
0x0652, 0x00DE, 0x0B9C, 0x2ECE, 0x00DE, 0x0B9D,
|
||||
0x2ECF, 0x16CD, 0x0CC0, 0x16C9, 0x0000, 0x16CB,
|
||||
0x0040, 0x02BF, 0x0652, 0x00C0, 0x0E07, 0x029F,
|
||||
0x02F8, 0x009F, 0x0CE0, 0x00FF, 0x0E42, 0x00FF,
|
||||
0x0E40, 0x00FF, 0x0E41, 0x00FF, 0x0E43, 0x02BF,
|
||||
0x0652, 0x00C0, 0x0E07, 0x029F, 0x02F8, 0x8E00,
|
||||
0x0086, 0x0400, 0x8100, 0x8970, 0x191C, 0x2ECE,
|
||||
0x2CCF, 0x1FC6, 0x2ECD, 0x16C9, 0x0001, 0x16CB,
|
||||
0x0780, 0x02BF, 0x0652, 0x02BF, 0x057A, 0x029F,
|
||||
0x0068, 0x8E00, 0x0086, 0x07C0, 0x8100, 0x8970,
|
||||
0x191C, 0x2ECE, 0x2CCF, 0x1FC6, 0x2ECD, 0x16C9,
|
||||
0x0001, 0x16CB, 0x0780, 0x02BF, 0x0652, 0x02BF,
|
||||
0x057A, 0x029F, 0x0068, 0x8C00, 0x8A00, 0x8100,
|
||||
0x8970, 0x191F, 0x2ECE, 0x2FCF, 0x16CD, 0x0280,
|
||||
0x16C9, 0x0001, 0x16CB, 0x0280, 0x8F50, 0x8140,
|
||||
0x0081, 0x0400, 0x0083, 0x0000, 0x0082, 0x0140,
|
||||
0x0099, 0x0080, 0x02BF, 0x0652, 0x1105, 0x0562,
|
||||
0x1F61, 0x1120, 0x0554, 0x8972, 0x195C, 0xF07B,
|
||||
0x197D, 0xF131, 0x8139, 0x8900, 0x6800, 0x2ECE,
|
||||
0x2CCF, 0x1FFB, 0x2FCD, 0x0F01, 0x2FC9, 0x1FF9,
|
||||
0x2FCB, 0x7200, 0x1F5E, 0x1F1C, 0x8100, 0x26C9,
|
||||
0x02A0, 0x0004, 0x029C, 0x0563, 0x029F, 0x0068,
|
||||
0x029F, 0x0068, 0x029F, 0x0068, 0x029F, 0x0068,
|
||||
0x16FC, 0xDCD1, 0x16FD, 0x0002, 0x16FB, 0x0001,
|
||||
0x029F, 0x0F1A, 0x029F, 0x0045, 0x8E00, 0x191F,
|
||||
0x191D, 0x1F5F, 0x1F1D, 0x2FCE, 0x2DCF, 0x8900,
|
||||
0x1FA6, 0x2DCD, 0x0E00, 0x2EC9, 0x8100, 0x009C,
|
||||
0x00C0, 0x2CCB, 0x1CA0, 0x0081, 0x0E48, 0x4800,
|
||||
0x1B3E, 0x1B3C, 0x0B00, 0x0099, 0x0060, 0x4B00,
|
||||
0x1B3D, 0x0081, 0x0E48, 0x1C06, 0x0083, 0x0000,
|
||||
0x1C43, 0x27C9, 0x03A0, 0x0004, 0x029C, 0x059B,
|
||||
0x1109, 0x05D0, 0x8E00, 0x193A, 0x1938, 0x6900,
|
||||
0x2FCE, 0x2DCF, 0x8900, 0x193D, 0x2DCD, 0x16C9,
|
||||
0x0000, 0x8100, 0x009C, 0x00C0, 0x2CCB, 0x0081,
|
||||
0x0E48, 0x4800, 0x1B3E, 0x1B3C, 0x0B00, 0x0960,
|
||||
0x4B00, 0x1B3D, 0x0081, 0x0E48, 0x8F00, 0x80F0,
|
||||
0x80C0, 0x6A00, 0x4800, 0x1117, 0x05CA, 0x80F0,
|
||||
0x80C0, 0x6B32, 0x4922, 0x80F0, 0x80C0, 0x6A3A,
|
||||
0x482A, 0x80F0, 0x80C0, 0x6B32, 0x4922, 0x1B5F,
|
||||
0x1B5D, 0x80F0, 0x80C0, 0x6A00, 0x4800, 0x1117,
|
||||
0x05DE, 0x80F0, 0x80C0, 0x6B32, 0x4922, 0x80F0,
|
||||
0x80C0, 0x6A3A, 0x482A, 0x80F0, 0x80C0, 0x6B32,
|
||||
0x4922, 0x1B5F, 0x1B5D, 0x1C05, 0x02DF, 0x8E00,
|
||||
0x009B, 0x0E48, 0x009D, 0x00C0, 0x02BF, 0x0637,
|
||||
0x4900, 0x00FF, 0x0E1D, 0x00FD, 0x0E1E, 0x8900,
|
||||
0x02BF, 0x0652, 0x1104, 0x0622, 0x00DA, 0x0E1D,
|
||||
0x00D8, 0x0E1E, 0x009B, 0x0EA8, 0x009D, 0x00C0,
|
||||
0x02BF, 0x0637, 0x4900, 0x00FF, 0x0E1D, 0x00FD,
|
||||
0x0E1E, 0x0083, 0x0E48, 0x02BF, 0x0642, 0x8900,
|
||||
0x00DA, 0x0E1D, 0x00D8, 0x0E1E, 0x009B, 0x0E48,
|
||||
0x009D, 0x00C0, 0x02BF, 0x0637, 0x4900, 0x00FF,
|
||||
0x0E1D, 0x00FD, 0x0E1E, 0x0083, 0x0EA8, 0x02BF,
|
||||
0x0642, 0x0000, 0x0000, 0x8E00, 0x8900, 0x00DA,
|
||||
0x0E1D, 0x00D8, 0x0E1E, 0x009B, 0x0EA8, 0x009D,
|
||||
0x00C0, 0x02BF, 0x0637, 0x4900, 0x0083, 0x0E48,
|
||||
0x02BF, 0x0642, 0x0083, 0x0EA8, 0x02BF, 0x0642,
|
||||
0x02DF, 0x8E00, 0x00FA, 0xFFCE, 0x00F8, 0xFFCF,
|
||||
0x00FB, 0xFFCD, 0x16C9, 0x0000, 0x2DCB, 0x02DF,
|
||||
0x8F00, 0x8D00, 0x8A00, 0x197A, 0x1978, 0xA000,
|
||||
0xB600, 0x1130, 0x0650, 0x9179, 0x4E6D, 0x197A,
|
||||
0x4D43, 0xA039, 0xB629, 0x02DF, 0x26C9, 0x02A0,
|
||||
0x0004, 0x029C, 0x0652, 0x02DF, 0x26FE, 0x02C0,
|
||||
0x8000, 0x029C, 0x0658, 0x02DF, 0x26FC, 0x02A0,
|
||||
0x8000, 0x029C, 0x065E, 0x02DF, 0x26FC, 0x02A0,
|
||||
0x8000, 0x029C, 0x0664, 0x02DF, 0x8100, 0x8970,
|
||||
0x8E60, 0x2ECE, 0x2CCF, 0x16CD, 0x0E48, 0x16C9,
|
||||
0x0000, 0x8900, 0x0D20, 0x2DCB, 0x4C00, 0x1C80,
|
||||
0x0080, 0x0280, 0x0081, 0x0000, 0x0082, 0x0140,
|
||||
0x0083, 0x0E48, 0x0A00, 0x27C9, 0x03A0, 0x0004,
|
||||
0x029C, 0x0681, 0x2ECE, 0x2CCF, 0x16CD, 0x0E58,
|
||||
0x16C9, 0x0000, 0x16CB, 0x0260, 0x009F, 0x00A0,
|
||||
0x8F00, 0x007F, 0x069A, 0x197E, 0x1B1A, 0x197C,
|
||||
0x1B1A, 0x1B5E, 0x1B5C, 0x1B3E, 0x1B3C, 0x1C04,
|
||||
0x029F, 0x0068, 0x0082, 0x0BB8, 0x195E, 0x2ED1,
|
||||
0x195E, 0x2ED4, 0x195E, 0x2ED5, 0x195E, 0x2ED6,
|
||||
0x195E, 0x2ED7, 0x195E, 0x2ED8, 0x195E, 0x2ED9,
|
||||
0x195E, 0x2EA0, 0x195E, 0x2EA1, 0x195E, 0x2EA2,
|
||||
0x195E, 0x2EA3, 0x195E, 0x2EA4, 0x195E, 0x2EA5,
|
||||
0x195E, 0x2EA6, 0x195E, 0x2EA7, 0x195E, 0x2EA8,
|
||||
0x195E, 0x2EA9, 0x195E, 0x2EAA, 0x195E, 0x2EAB,
|
||||
0x195E, 0x2EAC, 0x195E, 0x2EAD, 0x195E, 0x2EAE,
|
||||
0x195E, 0x2EAF, 0x195E, 0x2EDE, 0x195E, 0x2EDA,
|
||||
0x195E, 0x2EDB, 0x195E, 0x2EDC, 0x8C00, 0x8A00,
|
||||
0x8E00, 0x00D8, 0x0E16, 0x195B, 0x1959, 0x8100,
|
||||
0x195C, 0x0080, 0x0E48, 0x195F, 0x1B1F, 0x195F,
|
||||
0x1B1F, 0x195F, 0x1B1F, 0x185F, 0x1B1F, 0x6B00,
|
||||
0x1505, 0x4D00, 0x157E, 0x1C9F, 0x1CBD, 0x05E0,
|
||||
0x9900, 0x7D00, 0x1CDD, 0x8900, 0x1FA5, 0x1502,
|
||||
0x1CBF, 0x009A, 0x01FC, 0x009E, 0x0E48, 0x0081,
|
||||
0xFFDD, 0x0083, 0x0D80, 0x0064, 0x0710, 0x1827,
|
||||
0x1B07, 0x4A00, 0x1FFC, 0x1827, 0x1B07, 0x1579,
|
||||
0x3500, 0x1827, 0x1B07, 0x4100, 0x1B7E, 0x1827,
|
||||
0x1B07, 0x1B7F, 0x0000, 0x0065, 0x0716, 0x1827,
|
||||
0x1B07, 0x0000, 0x0000, 0x0007, 0x187F, 0x0066,
|
||||
0x071F, 0x4A3B, 0x1FFC, 0x1579, 0x3533, 0x4100,
|
||||
0x1B7F, 0x0004, 0x189F, 0x1ADF, 0x189F, 0x1ADF,
|
||||
0x189F, 0x1ADF, 0x189F, 0x1ADF, 0x1ADC, 0x0082,
|
||||
0x0BD2, 0x27DC, 0x1ADF, 0x27DB, 0x1ADF, 0x27DA,
|
||||
0x1ADF, 0x0082, 0x0BBE, 0x27D9, 0x1ADF, 0x27D8,
|
||||
0x1ADF, 0x8F00, 0x00C1, 0x0E42, 0x0082, 0x0D80,
|
||||
0x1940, 0x1943, 0x80F0, 0xB8C0, 0x111F, 0x074A,
|
||||
0xA6F0, 0xBCF0, 0x1940, 0x1943, 0xBCF0, 0x4EC0,
|
||||
0xB831, 0xA6F0, 0xBCF0, 0xBC00, 0x4E00, 0x1B3E,
|
||||
0x00E1, 0x0E42, 0x02DF, 0x0082, 0x0BB8, 0x195E,
|
||||
0x2ED1, 0x195E, 0x2ED4, 0x195E, 0x2ED5, 0x195E,
|
||||
0x2ED6, 0x195E, 0x2ED7, 0x195E, 0x2ED8, 0x195E,
|
||||
0x2ED9, 0x195E, 0x2EA0, 0x195E, 0x2EA1, 0x195E,
|
||||
0x2EA2, 0x195E, 0x2EA3, 0x195E, 0x2EA4, 0x195E,
|
||||
0x2EA5, 0x195E, 0x2EA6, 0x195E, 0x2EA7, 0x195E,
|
||||
0x2EA8, 0x195E, 0x2EA9, 0x195E, 0x2EAA, 0x195E,
|
||||
0x2EAB, 0x195E, 0x2EAC, 0x195E, 0x2EAD, 0x195E,
|
||||
0x2EAE, 0x195E, 0x2EAF, 0x195E, 0x2EDE, 0x195E,
|
||||
0x2EDA, 0x195E, 0x2EDB, 0x195E, 0x2EDC, 0x8C00,
|
||||
0x8A00, 0x8F00, 0x195B, 0x1959, 0x1958, 0x0080,
|
||||
0x0E48, 0x195F, 0x1B1F, 0x195F, 0x1B1F, 0x195F,
|
||||
0x1B1F, 0x185F, 0x1B1F, 0x6B00, 0x1505, 0x7100,
|
||||
0x157E, 0x03A0, 0xFFFF, 0x029C, 0x07AB, 0x0085,
|
||||
0x0000, 0x1502, 0x1C9F, 0x0086, 0x0020, 0x029F,
|
||||
0x07B7, 0x7900, 0x1CBF, 0x1C9D, 0x05E0, 0x9900,
|
||||
0x7D00, 0x1CDD, 0x8900, 0x1FA4, 0x1502, 0x0504,
|
||||
0x1C9F, 0x009E, 0x0E4A, 0x7000, 0x0081, 0xFFDD,
|
||||
0x0083, 0x0D80, 0x1F42, 0x0064, 0x07C4, 0x1827,
|
||||
0x1B07, 0x0000, 0x0000, 0x0065, 0x07D6, 0x1827,
|
||||
0x1B07, 0x4A00, 0x1C5E, 0x1827, 0x1B07, 0x1958,
|
||||
0x195F, 0x1827, 0x1B07, 0x5100, 0x1B7F, 0x1827,
|
||||
0x1B07, 0x1B7C, 0x1B78, 0x0066, 0x07E0, 0x4A00,
|
||||
0x1C5E, 0x1958, 0x195F, 0x5100, 0x1B7F, 0x1B7C,
|
||||
0x1B78, 0x0004, 0x1C5A, 0x189F, 0x1ADF, 0x189F,
|
||||
0x1ADF, 0x189F, 0x1ADF, 0x189F, 0x1ADF, 0x1ADC,
|
||||
0x0082, 0x0BD2, 0x27DC, 0x1ADF, 0x27DB, 0x1ADF,
|
||||
0x27DA, 0x1ADF, 0x0082, 0x0BBE, 0x27D9, 0x1ADF,
|
||||
0x27D8, 0x1ADF, 0x8D00, 0x8B00, 0x8F00, 0x0080,
|
||||
0x0D80, 0x00C3, 0x0E42, 0x191A, 0x1919, 0xB058,
|
||||
0xFB50, 0x1919, 0x110F, 0x080D, 0xB058, 0xFAA1,
|
||||
0x1919, 0xB058, 0xFBA0, 0x1919, 0xB058, 0xFA3B,
|
||||
0x1B7E, 0x00E3, 0x0E42, 0x02DF, 0x0082, 0x0BB8,
|
||||
0x195E, 0x2ED1, 0x195E, 0x2ED4, 0x195E, 0x2ED5,
|
||||
0x195E, 0x2ED6, 0x195E, 0x2ED7, 0x195E, 0x2ED8,
|
||||
0x195E, 0x2ED9, 0x195E, 0x2EA0, 0x195E, 0x2EA1,
|
||||
0x195E, 0x2EA2, 0x195E, 0x2EA3, 0x195E, 0x2EA4,
|
||||
0x195E, 0x2EA5, 0x195E, 0x2EA6, 0x195E, 0x2EA7,
|
||||
0x195E, 0x2EA8, 0x195E, 0x2EA9, 0x195E, 0x2EAA,
|
||||
0x195E, 0x2EAB, 0x195E, 0x2EAC, 0x195E, 0x2EAD,
|
||||
0x195E, 0x2EAE, 0x195E, 0x2EAF, 0x195E, 0x2EDE,
|
||||
0x195E, 0x2EDA, 0x195E, 0x2EDB, 0x195E, 0x2EDC,
|
||||
0x00C0, 0x0E42, 0x0081, 0xFFDD, 0x1120, 0x0855,
|
||||
0x1824, 0x1B04, 0x0000, 0x0000, 0x00E0, 0x0E42,
|
||||
0x0082, 0x0BD9, 0x0004, 0x189F, 0x1ADF, 0x189F,
|
||||
0x1ADF, 0x189F, 0x1ADF, 0x189F, 0x1ADF, 0x8900,
|
||||
0x1ADC, 0x27DC, 0x00FF, 0x0BD2, 0x27DB, 0x00FF,
|
||||
0x0BD1, 0x27DA, 0x00FF, 0x0BD0, 0x27D9, 0x00FF,
|
||||
0x0BBE, 0x27D8, 0x00FF, 0x0BBD, 0x02DF, 0x02DF,
|
||||
0x00C0, 0x0E40, 0x0081, 0x0B89, 0x00C2, 0x0E08,
|
||||
0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BA9, 0x02DF,
|
||||
0x00C0, 0x0E41, 0x0081, 0x0B8B, 0x00C2, 0x0E09,
|
||||
0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BAC, 0x02DF,
|
||||
0x00C0, 0x0E40, 0x0081, 0x0B89, 0x00C2, 0x0E08,
|
||||
0x1C62, 0x00C4, 0x0E41, 0x00C5, 0x0E09, 0x02BF,
|
||||
0x80E7, 0x00F8, 0x0BA9, 0x00FB, 0x0BAC, 0x02DF,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B97, 0x00C2, 0x0E0A,
|
||||
0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BAF, 0x02DF,
|
||||
0x00C0, 0x0E40, 0x0081, 0x0B89, 0x00C2, 0x0E08,
|
||||
0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BA9, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B97, 0x00C2, 0x0E0A, 0x1C62,
|
||||
0x02BF, 0x81F9, 0x00F8, 0x0BAF, 0x02DF, 0x00C0,
|
||||
0x0E41, 0x0081, 0x0B8B, 0x00C2, 0x0E09, 0x1C62,
|
||||
0x02BF, 0x81F9, 0x00F8, 0x0BAC, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B97, 0x00C2, 0x0E0A, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BAF, 0x02DF, 0x00C0, 0x0E40,
|
||||
0x0081, 0x0B89, 0x00C2, 0x0E08, 0x1C62, 0x00C4,
|
||||
0x0E41, 0x00C5, 0x0E09, 0x02BF, 0x80E7, 0x00F8,
|
||||
0x0BA9, 0x00FB, 0x0BAC, 0x00C0, 0x0E43, 0x0081,
|
||||
0x0B97, 0x00C2, 0x0E0A, 0x1C62, 0x02BF, 0x81F9,
|
||||
0x00F8, 0x0BAF, 0x02DF, 0x00C0, 0x0E40, 0x0081,
|
||||
0x0B89, 0x00C2, 0x0E08, 0x0083, 0x0E48, 0x02BF,
|
||||
0x845D, 0x00F8, 0x0BA9, 0x02DF, 0x00C0, 0x0E41,
|
||||
0x0081, 0x0B8B, 0x00C2, 0x0E09, 0x0083, 0x0E48,
|
||||
0x02BF, 0x845D, 0x00F8, 0x0BAC, 0x02DF, 0x00C0,
|
||||
0x0E40, 0x0081, 0x0B89, 0x00C2, 0x0E08, 0x0083,
|
||||
0x0E48, 0x00C4, 0x0E41, 0x00C5, 0x0E09, 0x02BF,
|
||||
0x8282, 0x00F8, 0x0BA9, 0x00FB, 0x0BAC, 0x02DF,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B97, 0x00C2, 0x0E0A,
|
||||
0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BAF,
|
||||
0x02DF, 0x00C0, 0x0E40, 0x0081, 0x0B89, 0x00C2,
|
||||
0x0E08, 0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8,
|
||||
0x0BA9, 0x00C0, 0x0E43, 0x0081, 0x0B97, 0x00C2,
|
||||
0x0E0A, 0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8,
|
||||
0x0BAF, 0x02DF, 0x00C0, 0x0E41, 0x0081, 0x0B8B,
|
||||
0x00C2, 0x0E09, 0x0083, 0x0E48, 0x02BF, 0x845D,
|
||||
0x00F8, 0x0BAC, 0x00C0, 0x0E43, 0x0081, 0x0B97,
|
||||
0x00C2, 0x0E0A, 0x0083, 0x0E48, 0x02BF, 0x845D,
|
||||
0x00F8, 0x0BAF, 0x02DF, 0x00C0, 0x0E40, 0x0081,
|
||||
0x0B89, 0x00C2, 0x0E08, 0x0083, 0x0E48, 0x00C4,
|
||||
0x0E41, 0x00C5, 0x0E09, 0x02BF, 0x8282, 0x00F8,
|
||||
0x0BA9, 0x00FB, 0x0BAC, 0x00C0, 0x0E43, 0x0081,
|
||||
0x0B97, 0x00C2, 0x0E0A, 0x0083, 0x0E48, 0x02BF,
|
||||
0x845D, 0x00F8, 0x0BAF, 0x02DF, 0x00C0, 0x0E40,
|
||||
0x0081, 0x0B8D, 0x00C2, 0x0E0B, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BAA, 0x02DF, 0x00C0, 0x0E41,
|
||||
0x0081, 0x0B8F, 0x00C2, 0x0E0C, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BAD, 0x02DF, 0x00C0, 0x0E40,
|
||||
0x0081, 0x0B8D, 0x00C2, 0x0E0B, 0x1C62, 0x00C4,
|
||||
0x0E41, 0x00C5, 0x0E0C, 0x02BF, 0x80E7, 0x00F8,
|
||||
0x0BAA, 0x00FB, 0x0BAD, 0x02DF, 0x00C0, 0x0E40,
|
||||
0x0081, 0x0B8D, 0x00C2, 0x0E0B, 0x0083, 0x0E48,
|
||||
0x02BF, 0x845D, 0x00F8, 0x0BAA, 0x02DF, 0x00C0,
|
||||
0x0E41, 0x0081, 0x0B8F, 0x00C2, 0x0E0C, 0x0083,
|
||||
0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BAD, 0x02DF,
|
||||
0x00C0, 0x0E40, 0x0081, 0x0B8D, 0x00C2, 0x0E0B,
|
||||
0x0083, 0x0E48, 0x00C4, 0x0E41, 0x00C5, 0x0E0C,
|
||||
0x02BF, 0x8282, 0x00F8, 0x0BAA, 0x00FB, 0x0BAD,
|
||||
0x02DF, 0x00C0, 0x0E43, 0x0081, 0x0B99, 0x00C2,
|
||||
0x0E0D, 0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BB0,
|
||||
0x02DF, 0x00C0, 0x0E43, 0x0081, 0x0B99, 0x00C2,
|
||||
0x0E0D, 0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BB0,
|
||||
0x029F, 0x0982, 0x00C0, 0x0E43, 0x0081, 0x0B99,
|
||||
0x00C2, 0x0E0D, 0x1C62, 0x02BF, 0x81F9, 0x00F8,
|
||||
0x0BB0, 0x029F, 0x098E, 0x00C0, 0x0E43, 0x0081,
|
||||
0x0B99, 0x00C2, 0x0E0D, 0x1C62, 0x02BF, 0x81F9,
|
||||
0x00F8, 0x0BB0, 0x029F, 0x099A, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B99, 0x00C2, 0x0E0D, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BB0, 0x029F, 0x09AC, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B99, 0x00C2, 0x0E0D, 0x1C62,
|
||||
0x02BF, 0x81F9, 0x00F8, 0x0BB0, 0x029F, 0x09B9,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B99, 0x00C2, 0x0E0D,
|
||||
0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BB0, 0x029F,
|
||||
0x09C6, 0x00C0, 0x0E43, 0x0081, 0x0B99, 0x00C2,
|
||||
0x0E0D, 0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8,
|
||||
0x0BB0, 0x02DF, 0x00C0, 0x0E43, 0x0081, 0x0B99,
|
||||
0x00C2, 0x0E0D, 0x0083, 0x0E48, 0x02BF, 0x845D,
|
||||
0x00F8, 0x0BB0, 0x029F, 0x0982, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B99, 0x00C2, 0x0E0D, 0x0083, 0x0E48,
|
||||
0x02BF, 0x845D, 0x00F8, 0x0BB0, 0x029F, 0x098E,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B99, 0x00C2, 0x0E0D,
|
||||
0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BB0,
|
||||
0x029F, 0x099A, 0x00C0, 0x0E43, 0x0081, 0x0B99,
|
||||
0x00C2, 0x0E0D, 0x0083, 0x0E48, 0x02BF, 0x845D,
|
||||
0x00F8, 0x0BB0, 0x029F, 0x09AC, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B99, 0x00C2, 0x0E0D, 0x0083, 0x0E48,
|
||||
0x02BF, 0x845D, 0x00F8, 0x0BB0, 0x029F, 0x09B9,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B99, 0x00C2, 0x0E0D,
|
||||
0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BB0,
|
||||
0x029F, 0x09C6, 0x00C0, 0x0E40, 0x0081, 0x0B91,
|
||||
0x00C2, 0x0E0E, 0x1C62, 0x02BF, 0x81F9, 0x00F8,
|
||||
0x0BAB, 0x02DF, 0x00C0, 0x0E41, 0x0081, 0x0B93,
|
||||
0x00C2, 0x0E0F, 0x1C62, 0x02BF, 0x81F9, 0x00F8,
|
||||
0x0BAE, 0x02DF, 0x00C0, 0x0E40, 0x0081, 0x0B91,
|
||||
0x00C2, 0x0E0E, 0x1C62, 0x00C4, 0x0E41, 0x00C5,
|
||||
0x0E0F, 0x02BF, 0x80E7, 0x00F8, 0x0BAB, 0x00FB,
|
||||
0x0BAE, 0x02DF, 0x00C0, 0x0E40, 0x0081, 0x0B91,
|
||||
0x00C2, 0x0E0E, 0x0083, 0x0E48, 0x02BF, 0x845D,
|
||||
0x00F8, 0x0BAB, 0x02DF, 0x00C0, 0x0E41, 0x0081,
|
||||
0x0B93, 0x00C2, 0x0E0F, 0x0083, 0x0E48, 0x02BF,
|
||||
0x845D, 0x00F8, 0x0BAE, 0x02DF, 0x00C0, 0x0E40,
|
||||
0x0081, 0x0B91, 0x00C2, 0x0E0E, 0x0083, 0x0E48,
|
||||
0x00C4, 0x0E41, 0x00C5, 0x0E0F, 0x02BF, 0x8282,
|
||||
0x00F8, 0x0BAB, 0x00FB, 0x0BAE, 0x02DF, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10, 0x1C62,
|
||||
0x02BF, 0x81F9, 0x00F8, 0x0BB1, 0x02DF, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10, 0x1C62,
|
||||
0x02BF, 0x81F9, 0x00F8, 0x0BB1, 0x029F, 0x0A94,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10,
|
||||
0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BB1, 0x029F,
|
||||
0x0AA0, 0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2,
|
||||
0x0E10, 0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BB1,
|
||||
0x029F, 0x0AAC, 0x00C0, 0x0E43, 0x0081, 0x0B95,
|
||||
0x00C2, 0x0E10, 0x1C62, 0x02BF, 0x81F9, 0x00F8,
|
||||
0x0BB1, 0x029F, 0x0ABE, 0x00C0, 0x0E43, 0x0081,
|
||||
0x0B95, 0x00C2, 0x0E10, 0x1C62, 0x02BF, 0x81F9,
|
||||
0x00F8, 0x0BB1, 0x029F, 0x0ACB, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B95, 0x00C2, 0x0E10, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BB1, 0x029F, 0x0AD8, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10, 0x0083,
|
||||
0x0E48, 0x02BF, 0x845D, 0x02DF, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B95, 0x00C2, 0x0E10, 0x0083, 0x0E48,
|
||||
0x02BF, 0x845D, 0x00F8, 0x0BB1, 0x029F, 0x0A94,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10,
|
||||
0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BB1,
|
||||
0x029F, 0x0AA0, 0x00C0, 0x0E43, 0x0081, 0x0B95,
|
||||
0x00C2, 0x0E10, 0x0083, 0x0E48, 0x02BF, 0x845D,
|
||||
0x00F8, 0x0BB1, 0x029F, 0x0AAC, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B95, 0x00C2, 0x0E10, 0x0083, 0x0E48,
|
||||
0x02BF, 0x845D, 0x00F8, 0x0BB1, 0x029F, 0x0ABE,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10,
|
||||
0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BB1,
|
||||
0x029F, 0x0ACB, 0x00C0, 0x0E43, 0x0081, 0x0B95,
|
||||
0x00C2, 0x0E10, 0x0083, 0x0E48, 0x02BF, 0x845D,
|
||||
0x00F8, 0x0BB1, 0x029F, 0x0AD8, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B91, 0x00C2, 0x0E0E, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BAB, 0x02DF, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B93, 0x00C2, 0x0E0F, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BAE, 0x02DF, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B91, 0x00C2, 0x0E0E, 0x1C62, 0x00C4,
|
||||
0x0E43, 0x00C5, 0x0E0F, 0x02BF, 0x80E7, 0x00F8,
|
||||
0x0BAB, 0x00FB, 0x0BAE, 0x02DF, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B91, 0x00C2, 0x0E0E, 0x0083, 0x0E48,
|
||||
0x02BF, 0x845D, 0x00F8, 0x0BAB, 0x02DF, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B93, 0x00C2, 0x0E0F, 0x0083,
|
||||
0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BAE, 0x02DF,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B91, 0x00C2, 0x0E0E,
|
||||
0x0083, 0x0E48, 0x00C4, 0x0E43, 0x00C5, 0x0E0F,
|
||||
0x02BF, 0x8282, 0x00F8, 0x0BAB, 0x00FB, 0x0BAE,
|
||||
0x02DF, 0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2,
|
||||
0x0E10, 0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BB1,
|
||||
0x029F, 0x0BA4, 0x00C0, 0x0E43, 0x0081, 0x0B95,
|
||||
0x00C2, 0x0E10, 0x1C62, 0x02BF, 0x81F9, 0x00F8,
|
||||
0x0BB1, 0x029F, 0x0BB0, 0x00C0, 0x0E43, 0x0081,
|
||||
0x0B95, 0x00C2, 0x0E10, 0x1C62, 0x02BF, 0x81F9,
|
||||
0x00F8, 0x0BB1, 0x029F, 0x0BBC, 0x00C0, 0x0E43,
|
||||
0x0081, 0x0B95, 0x00C2, 0x0E10, 0x1C62, 0x02BF,
|
||||
0x81F9, 0x00F8, 0x0BB1, 0x029F, 0x0BCE, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10, 0x1C62,
|
||||
0x02BF, 0x81F9, 0x00F8, 0x0BB1, 0x029F, 0x0BDB,
|
||||
0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10,
|
||||
0x1C62, 0x02BF, 0x81F9, 0x00F8, 0x0BB1, 0x029F,
|
||||
0x0BE8, 0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2,
|
||||
0x0E10, 0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8,
|
||||
0x0BB1, 0x029F, 0x0BA4, 0x00C0, 0x0E43, 0x0081,
|
||||
0x0B95, 0x00C2, 0x0E10, 0x0083, 0x0E48, 0x02BF,
|
||||
0x845D, 0x00F8, 0x0BB1, 0x029F, 0x0BB0, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10, 0x0083,
|
||||
0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BB1, 0x029F,
|
||||
0x0BBC, 0x00C0, 0x0E43, 0x0081, 0x0B95, 0x00C2,
|
||||
0x0E10, 0x0083, 0x0E48, 0x02BF, 0x845D, 0x00F8,
|
||||
0x0BB1, 0x029F, 0x0BCE, 0x00C0, 0x0E43, 0x0081,
|
||||
0x0B95, 0x00C2, 0x0E10, 0x0083, 0x0E48, 0x02BF,
|
||||
0x845D, 0x00F8, 0x0BB1, 0x029F, 0x0BDB, 0x00C0,
|
||||
0x0E43, 0x0081, 0x0B95, 0x00C2, 0x0E10, 0x0083,
|
||||
0x0E48, 0x02BF, 0x845D, 0x00F8, 0x0BB1, 0x029F,
|
||||
0x0BE8, 0x0118, 0x01D4, 0x0252, 0x02F8, 0x0509,
|
||||
0x051D, 0x01FB, 0x066A, 0x0D27, 0x01F5, 0x056E,
|
||||
0x056A, 0x056C, 0x023F, 0x0531, 0x0570, 0x0DA1,
|
||||
0x020B, 0x0082, 0x0E17, 0x0875, 0x0876, 0x0882,
|
||||
0x088E, 0x08A0, 0x08AC, 0x08C3, 0x08DA, 0x0875,
|
||||
0x08F7, 0x0904, 0x0911, 0x0924, 0x0931, 0x094A,
|
||||
0x0963, 0x0875, 0x0982, 0x098E, 0x099A, 0x0875,
|
||||
0x09AC, 0x09B9, 0x09C6, 0x09D9, 0x09E5, 0x09F2,
|
||||
0x09FF, 0x09D9, 0x0A0C, 0x0A19, 0x0A26, 0x0875,
|
||||
0x0982, 0x098E, 0x099A, 0x0875, 0x09AC, 0x09B9,
|
||||
0x09C6, 0x0A33, 0x0A40, 0x0A4E, 0x0A5C, 0x0A33,
|
||||
0x0A6A, 0x0A78, 0x0A86, 0x0875, 0x0A94, 0x0AA0,
|
||||
0x0AAC, 0x0875, 0x0ABE, 0x0ACB, 0x0AD8, 0x0AEB,
|
||||
0x0AF7, 0x0B04, 0x0B11, 0x0AEB, 0x0B1E, 0x0B2B,
|
||||
0x0B38, 0x0875, 0x0A94, 0x0AA0, 0x0AAC, 0x0875,
|
||||
0x0ABE, 0x0ACB, 0x0AD8, 0x0B45, 0x0B50, 0x0B5E,
|
||||
0x0B6C, 0x0B45, 0x0B7A, 0x0B88, 0x0B96, 0x0875,
|
||||
0x0BA4, 0x0BB0, 0x0BBC, 0x0875, 0x0BCE, 0x0BDB,
|
||||
0x0BE8, 0x0AEB, 0x0BFB, 0x0C08, 0x0C15, 0x0AEB,
|
||||
0x0C22, 0x0C2F, 0x0C3C, 0x0875, 0x0BA4, 0x0BB0,
|
||||
0x0BBC, 0x0875, 0x0BCE, 0x0BDB, 0x0BE8, 0x0B45,
|
||||
0x0C49, 0x0C57, 0x0C65, 0x0B45, 0x0C73, 0x0C81,
|
||||
0x0C8F, 0x069E, 0x0753, 0x0814, 0x1000, 0x1200,
|
||||
0x1400, 0x8E00, 0x8100, 0x8970, 0x191C, 0x2ECE,
|
||||
0x2CCF, 0x16CD, 0x0E80, 0x16C9, 0x0000, 0x16CB,
|
||||
0x0100, 0x1F7E, 0x1F3C, 0x8100, 0x26C9, 0x02A0,
|
||||
0x0004, 0x029C, 0x0D36, 0x191E, 0x191C, 0x2ECE,
|
||||
0x2CCF, 0x16CD, 0x0280, 0x16C9, 0x0000, 0x16CB,
|
||||
0x0280, 0x1C80, 0x0080, 0x0280, 0x00C1, 0x0E1B,
|
||||
0x0085, 0x0000, 0x0089, 0x007F, 0x0082, 0x0F00,
|
||||
0x0083, 0x16B4, 0x1CE3, 0x8100, 0x26C9, 0x02A0,
|
||||
0x0004, 0x029C, 0x0D54, 0x8F00, 0x8A78, 0x8C68,
|
||||
0xF100, 0x1A3F, 0x84E3, 0x107E, 0xF2E3, 0xF2E7,
|
||||
0xF278, 0x6E68, 0xF132, 0x1A3F, 0x119E, 0x0D70,
|
||||
0x1C67, 0x84E3, 0x107E, 0xF2E3, 0xF2E7, 0xF278,
|
||||
0x6E68, 0xF132, 0x1A3F, 0x1C67, 0x84E3, 0x107E,
|
||||
0xF2E3, 0xF2E7, 0xF200, 0x6E00, 0x1B5E, 0x00E1,
|
||||
0x0E1B, 0x0080, 0x0280, 0x0083, 0x0F00, 0x0081,
|
||||
0x0000, 0x0082, 0x0140, 0x0089, 0xFFFF, 0x8900,
|
||||
0x8100, 0x8F00, 0x11A0, 0x0D90, 0x197F, 0x9930,
|
||||
0x1B1E, 0x1B3F, 0x7D29, 0x1B5F, 0x1B5D, 0x8E00,
|
||||
0x1FDB, 0x1F99, 0x2ECE, 0x2CCF, 0x16CD, 0x0E80,
|
||||
0x16C9, 0x0001, 0x16CB, 0x0100, 0x02BF, 0x0652,
|
||||
0x1C04, 0x029F, 0x0068, 0x8E00, 0x8100, 0x8970,
|
||||
0x191C, 0x2ECE, 0x2CCF, 0x16CD, 0x07C0, 0x16C9,
|
||||
0x0001, 0x16CB, 0x0500, 0x02BF, 0x0652, 0x8100,
|
||||
0x8970, 0x191C, 0x2ECE, 0x2CCF, 0x16CD, 0x07C0,
|
||||
0x16C9, 0x0000, 0x8900, 0x0D20, 0x2DCB, 0x4C00,
|
||||
0x1C80, 0x0080, 0x07C0, 0x0083, 0x0000, 0x1C43,
|
||||
0x0A00, 0x27C9, 0x03A0, 0x0004, 0x029C, 0x0DC3,
|
||||
0x2ECE, 0x2CCF, 0x16CD, 0x07D0, 0x16C9, 0x0000,
|
||||
0x16CB, 0x04E0, 0x8F00, 0x80F0, 0x80C0, 0x6A00,
|
||||
0x4800, 0x114F, 0x0DDE, 0x80F0, 0x80C0, 0x6B32,
|
||||
0x4922, 0x80F0, 0x80C0, 0x6A3A, 0x482A, 0x80F0,
|
||||
0x80C0, 0x6B32, 0x4922, 0x1B5F, 0x1B5D, 0x80F0,
|
||||
0x80C0, 0x6800, 0x7C00, 0x4A00, 0x114F, 0x0DF5,
|
||||
0x80F0, 0x80C0, 0x6932, 0x7D00, 0x4B22, 0x80F0,
|
||||
0x80C0, 0x683A, 0x7C00, 0x4A2A, 0x80F0, 0x80C0,
|
||||
0x6932, 0x7D00, 0x4B22, 0x1B5F, 0x1B5D, 0x1C04,
|
||||
0x029F, 0x0068, 0x8F00, 0x80F1, 0x80C1, 0x6A00,
|
||||
0x4800, 0x114F, 0x0E0E, 0x80F1, 0x80C1, 0x6B32,
|
||||
0x4922, 0x80F1, 0x80C1, 0x6A3A, 0x482A, 0x80F1,
|
||||
0x80C1, 0x6B32, 0x4922, 0x1B5F, 0x1B5D, 0x8E00,
|
||||
0x02DF, 0x8E00, 0x8100, 0x8970, 0x191C, 0x2ECE,
|
||||
0x2CCF, 0x16CD, 0x0400, 0x16C9, 0x0001, 0x16CB,
|
||||
0x0780, 0x02BF, 0x0652, 0x8100, 0x8970, 0x191C,
|
||||
0x2ECE, 0x2CCF, 0x16CD, 0x0A40, 0x16C9, 0x0001,
|
||||
0x16CB, 0x0280, 0x02BF, 0x0652, 0x8100, 0x8970,
|
||||
0x191C, 0x2ECE, 0x2CCF, 0x16CD, 0x0E48, 0x16C9,
|
||||
0x0000, 0x16CB, 0x0280, 0x0081, 0x0E48, 0x0082,
|
||||
0x0000, 0x0083, 0x0000, 0x02BF, 0x0652, 0x02BF,
|
||||
0x0E00, 0x8100, 0x8970, 0x191C, 0x2ECE, 0x2CCF,
|
||||
0x16CD, 0x0E48, 0x16C9, 0x0000, 0x16CB, 0x0280,
|
||||
0x0081, 0x0E48, 0x0082, 0x0140, 0x0083, 0x0140,
|
||||
0x02BF, 0x0652, 0x02BF, 0x0E00, 0x8100, 0x8970,
|
||||
0x191C, 0x2ECE, 0x2CCF, 0x16CD, 0x0E48, 0x16C9,
|
||||
0x0000, 0x16CB, 0x0280, 0x0081, 0x0E48, 0x0082,
|
||||
0x07C0, 0x0083, 0x07C0, 0x02BF, 0x0652, 0x02BF,
|
||||
0x0E00, 0x8100, 0x8970, 0x191C, 0x2ECE, 0x2CCF,
|
||||
0x16CD, 0x0E48, 0x16C9, 0x0000, 0x16CB, 0x0280,
|
||||
0x0081, 0x0E48, 0x0082, 0x0900, 0x0083, 0x0900,
|
||||
0x02BF, 0x0652, 0x02BF, 0x0E00, 0x029F, 0x0068,
|
||||
0x8E00, 0x16FC, 0xECC0, 0x1FCC, 0x1D9E, 0x2EFD,
|
||||
0x26FC, 0x02A0, 0x8000, 0x029C, 0x0E8E, 0x0000,
|
||||
0x0000, 0x0000, 0x02FF, 0x8E00, 0x00F0, 0x0E17,
|
||||
0x00FE, 0x0E18, 0x00FC, 0x0E19, 0x1FCC, 0x1D9E,
|
||||
0x16FC, 0xFEED, 0x2EFD, 0x26FC, 0x02A0, 0x8000,
|
||||
0x029C, 0x0EA3, 0x00D0, 0x0E17, 0x00DE, 0x0E18,
|
||||
0x00DC, 0x0E19, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x02FF, 0x8E00, 0x1DBC, 0x1DBE, 0x8100, 0x00DE,
|
||||
0x0BB7, 0x0601, 0x0295, 0x0EBF, 0x0E00, 0x00FE,
|
||||
0x0B87, 0x8100, 0x00DE, 0x0B88, 0x0601, 0x0295,
|
||||
0x0EC9, 0x8100, 0x1FCD, 0x1F8D, 0x02FF, 0x8100,
|
||||
0x00DC, 0x0BE1, 0x7600, 0x00FC, 0x0BE1, 0x8100,
|
||||
0x1FCD, 0x1F8D, 0x02FF, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x02FF, 0x8E00, 0x1DBC, 0x1DBE,
|
||||
0x8100, 0x00DE, 0x0BB7, 0x0601, 0x0295, 0x0EE8,
|
||||
0x0E00, 0x00FE, 0x0B87, 0x1FCD, 0x1F8D, 0x02FF,
|
||||
0x8100, 0x00DE, 0x0B88, 0x0601, 0x0295, 0x0EFA,
|
||||
0x00DE, 0x0BDA, 0x2EDA, 0x00DE, 0x0BDB, 0x2EDB,
|
||||
0x00DE, 0x0BDC, 0x2EDC, 0x1FCD, 0x1F8D, 0x02FF,
|
||||
0x00DE, 0x0BDA, 0x2EDA, 0x26DB, 0x2EDB, 0x26DC,
|
||||
0x2EDC, 0x8100, 0x00DC, 0x0BE1, 0x7600, 0x00FC,
|
||||
0x0BE1, 0x8100, 0x1FCD, 0x1F8D, 0x02FF, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x02FF, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x02FF, 0x0F28, 0x0F2B,
|
||||
0x0F63, 0x0F66, 0x8E00, 0x8100, 0x8900, 0x02BF,
|
||||
0x0F69, 0x27FF, 0x009E, 0x0F16, 0x4C00, 0x1C7E,
|
||||
0x0313, 0x1C7F, 0x176F, 0x0021, 0x029F, 0x0030,
|
||||
0x0021, 0x8100, 0x8900, 0x02BF, 0x0F69, 0x24FF,
|
||||
0x02BF, 0x0F6F, 0x25FF, 0x02BF, 0x0F6F, 0x27FF,
|
||||
0x2ECE, 0x2CCF, 0x16C9, 0x0001, 0x2FCD, 0x2DCB,
|
||||
0x8100, 0x8900, 0x02BF, 0x0F69, 0x24FF, 0x1C9E,
|
||||
0x1CBC, 0x02BF, 0x0F6F, 0x25FF, 0x02BF, 0x0F6F,
|
||||
0x27FF, 0x1CDF, 0x1CFD, 0x8100, 0x02BF, 0x0F69,
|
||||
0x26FF, 0x1C1E, 0x8900, 0x02BF, 0x0F6F, 0x20FF,
|
||||
0x1F5F, 0x02BF, 0x0F69, 0x21FF, 0x02BF, 0x0F69,
|
||||
0x23FF, 0x26C9, 0x02A0, 0x0004, 0x029C, 0x0F5B,
|
||||
0x029F, 0x80B5, 0x0021, 0x029F, 0x8000, 0x0021,
|
||||
0x029F, 0x0045, 0x0021, 0x26FE, 0x02C0, 0x8000,
|
||||
0x029C, 0x0F69, 0x02DF, 0x27FE, 0x03C0, 0x8000,
|
||||
0x029C, 0x0F6F, 0x02DF, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000
|
||||
};
|
||||
@@ -0,0 +1,84 @@
|
||||
#ifndef _DOLPHIN_AX_INTERNAL_H_
|
||||
#define _DOLPHIN_AX_INTERNAL_H_
|
||||
|
||||
#include <dolphin/ax.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// AXAlloc
|
||||
AXVPB* __AXGetStackHead(u32 priority);
|
||||
void __AXServiceCallbackStack(void);
|
||||
void __AXInitVoiceStacks(void);
|
||||
void __AXAllocInit(void);
|
||||
void __AXAllocQuit(void);
|
||||
void __AXPushFreeStack(AXVPB* p);
|
||||
AXVPB* __AXPopFreeStack(void);
|
||||
void __AXPushCallbackStack(AXVPB* p);
|
||||
AXVPB* __AXPopCallbackStack(void);
|
||||
void __AXRemoveFromStack(AXVPB* p);
|
||||
void __AXPushStackHead(AXVPB* p, u32 priority);
|
||||
AXVPB* __AXPopStackFromBottom(u32 priority);
|
||||
|
||||
// AXAux
|
||||
void __AXAuxInit(void);
|
||||
void __AXAuxQuit(void);
|
||||
void __AXGetAuxAInput(u32* p);
|
||||
void __AXGetAuxAOutput(u32* p);
|
||||
void __AXGetAuxBInput(u32* p);
|
||||
void __AXGetAuxBOutput(u32* p);
|
||||
void __AXProcessAux(void);
|
||||
void __AXGetAuxAInputDpl2(u32* p);
|
||||
void __AXGetAuxAOutputDpl2R(u32* p);
|
||||
void __AXGetAuxAOutputDpl2Ls(u32* p);
|
||||
void __AXGetAuxAOutputDpl2Rs(u32* p);
|
||||
void __AXGetAuxBForDPL2(u32* p);
|
||||
void __AXGetAuxBOutputDPL2(u32* p);
|
||||
|
||||
// AXCL
|
||||
extern u32 __AXClMode;
|
||||
|
||||
// AXComp
|
||||
extern u16 __AXCompressorTable[3360];
|
||||
|
||||
u32 __AXGetCommandListCycles(void);
|
||||
u32 __AXGetCommandListAddress(void);
|
||||
void __AXWriteToCommandList(u16 data);
|
||||
void __AXNextFrame(void* sbuffer, void* buffer);
|
||||
void __AXClInit(void);
|
||||
void __AXClQuit(void);
|
||||
|
||||
// AXOut
|
||||
void __AXOutNewFrame(u32 lessDspCycles);
|
||||
void __AXOutAiCallback(void);
|
||||
void __AXOutInitDSP(void);
|
||||
void __AXOutInit(u32 outputBufferMode);
|
||||
void __AXOutQuit(void);
|
||||
|
||||
// AXProf
|
||||
AXPROFILE* __AXGetCurrentProfile(void);
|
||||
|
||||
// AXSPB
|
||||
u32 __AXGetStudio(void);
|
||||
void __AXDepopFade(s32* hostSum, s32* dspVolume, s16* dspDelta);
|
||||
void __AXPrintStudio(void);
|
||||
void __AXSPBInit(void);
|
||||
void __AXSPBQuit(void);
|
||||
void __AXDepopVoice(AXPB* p);
|
||||
|
||||
// AXVPB
|
||||
u32 __AXGetNumVoices(void);
|
||||
void __AXServiceVPB(AXVPB *pvpb);
|
||||
void __AXDumpVPB(AXVPB* pvpb);
|
||||
void __AXSyncPBs(u32 lessDspCycles);
|
||||
AXPB* __AXGetPBs(void);
|
||||
void __AXSetPBDefault(AXVPB* p);
|
||||
void __AXVPBInit(void);
|
||||
void __AXVPBQuit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _DOLPHIN_AX_INTERNAL_H_
|
||||
Reference in New Issue
Block a user