mirror of
https://github.com/zeldaret/tp
synced 2026-08-01 08:17:31 -04:00
0de0339250
* Some GX work * GXFrameBuf work * Import GXAttr functions and enums * Import most of GXTev * Import most of GXPixel * Import GXFifo * Import some of GXInit * Import and work on GXTransform * Import GXPerf * A little work on GXTexture
507 lines
14 KiB
C
507 lines
14 KiB
C
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: GXInit
|
|
//
|
|
|
|
#include "dolphin/gx/GXInit.h"
|
|
#include "dolphin/gx/GX.h"
|
|
#include "dolphin/base/PPCArch.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/os/OSTime.h"
|
|
#include "dolphin/os/OS.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
void __GXInitRevisionBits();
|
|
void __GXInitGX();
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
void PPCSync();
|
|
void OSRegisterVersion();
|
|
void OSRegisterResetFunction();
|
|
void VIGetTvFormat();
|
|
void GXSetCPUFifo();
|
|
void GXSetGPFifo();
|
|
void __GXFifoInit();
|
|
void GXClearVtxDesc();
|
|
void GXSetVtxAttrFmtv();
|
|
void GXInvalidateVtxCache();
|
|
void __GXAbort();
|
|
void GXPokeAlphaRead();
|
|
void GXPokeBlendMode();
|
|
void __GXPEInit();
|
|
void GXSetDispCopyFrame2Field();
|
|
void GXClearBoundingBox();
|
|
void GXInitTlutRegion();
|
|
void GXInvalidateTexAll();
|
|
void __GXSetTmemConfig();
|
|
void __GXSetIndirectMask();
|
|
void __GXFlushTextureState();
|
|
void GXSetProjectionv();
|
|
void GXSetScissorBoxOffset();
|
|
void GXSetGPMetric();
|
|
void GXClearGPMetric();
|
|
extern u8 GXNtsc480IntDf[60];
|
|
extern u8 GXMpal480IntDf[60];
|
|
extern u8 GXPal528IntDf[60];
|
|
extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* ############################################################################################## */
|
|
/* 8044CE00-8044CE80 079B20 0080+00 1/1 0/0 0/0 .bss FifoObj */
|
|
static GXFifoObj FifoObj;
|
|
|
|
/* 8044CE80-8044D430 079BA0 05B0+00 1/0 0/0 0/0 .bss gxData */
|
|
static GXData gxData;
|
|
|
|
/* 80456580-80456584 -00001 0004+00 6/6 108/108 0/0 .sdata2 __GXData */
|
|
GXData* const __GXData = &gxData;
|
|
|
|
/* 8035921C-80359318 353B5C 00FC+00 1/1 0/0 0/0 .text __GXDefaultTexRegionCallback */
|
|
GXTexRegion* __GXDefaultTexRegionCallback(GXTexObj* obj, GXTexMapID id) {
|
|
GXTexFmt format; // r31
|
|
GXBool isMipMap; // r3
|
|
|
|
format = GXGetTexObjFmt(obj);
|
|
isMipMap = GXGetTexObjMipMap(obj);
|
|
id = (GXTexMapID)(id % GX_MAX_TEXMAP);
|
|
|
|
switch (format) {
|
|
case GX_TF_RGBA8:
|
|
if (isMipMap) {
|
|
return &__GXData->TexRegions2[id];
|
|
}
|
|
return &__GXData->TexRegions1[id];
|
|
|
|
case GX_TF_C4:
|
|
case GX_TF_C8:
|
|
case GX_TF_C14X2:
|
|
return &__GXData->TexRegions0[id];
|
|
|
|
default:
|
|
if (isMipMap) {
|
|
return &__GXData->TexRegions1[id];
|
|
}
|
|
return &__GXData->TexRegions0[id];
|
|
}
|
|
}
|
|
|
|
/* 80359318-8035933C 353C58 0024+00 1/1 0/0 0/0 .text __GXDefaultTlutRegionCallback */
|
|
GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) {
|
|
if (tlut >= 0x14) {
|
|
return NULL;
|
|
} else {
|
|
return &__GXData->TlutRegions[tlut];
|
|
}
|
|
}
|
|
|
|
/* 80451944-80451948 000E44 0004+00 1/1 0/0 0/0 .sbss resetFuncRegistered$145 */
|
|
/* static */ u32 resetFuncRegistered;
|
|
|
|
/* 80451940-80451944 000E40 0004+00 1/1 0/0 0/0 .sbss calledOnce$37 */
|
|
/* static */ u32 calledOnce;
|
|
|
|
/* 80451938-8045193C 000E38 0004+00 1/1 0/0 0/0 .sbss time$36 */
|
|
/* static */ OSTime time;
|
|
|
|
/* 80451930-80451938 000E30 0004+04 1/1 0/0 0/0 .sbss peCount$35 */
|
|
/* static */ u32 peCount;
|
|
|
|
/* 8045192C-80451930 000E2C 0004+00 2/2 2/2 0/0 .sbss __memReg */
|
|
vu16* __memReg;
|
|
|
|
/* 80451928-8045192C 000E28 0004+00 1/1 11/11 0/0 .sbss __peReg */
|
|
u16* __peReg;
|
|
|
|
/* 80451924-80451928 000E24 0004+00 2/2 12/12 0/0 .sbss __cpReg */
|
|
u16* __cpReg;
|
|
|
|
/* ############################################################################################## */
|
|
/* 80451920-80451924 000E20 0004+00 1/1 2/2 0/0 .sbss __piReg */
|
|
u32* __piReg;
|
|
|
|
/* 8035933C-803594CC 353C7C 0190+00 1/0 0/0 0/0 .text __GXShutdown */
|
|
BOOL __GXShutdown(BOOL final) {
|
|
u32 val;
|
|
u32 newPeCount;
|
|
OSTime newTime;
|
|
|
|
if (!final) {
|
|
if (!calledOnce) {
|
|
peCount = GXReadMEMReg(0x28, 0x27);
|
|
time = OSGetTime();
|
|
calledOnce = 1;
|
|
return FALSE;
|
|
}
|
|
|
|
newTime = OSGetTime();
|
|
newPeCount = GXReadMEMReg(0x28, 0x27);
|
|
|
|
if (newTime - time < 10) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (newPeCount != peCount) {
|
|
peCount = newPeCount;
|
|
time = newTime;
|
|
return FALSE;
|
|
}
|
|
|
|
} else {
|
|
GXSetBreakPtCallback(NULL);
|
|
GXSetDrawSyncCallback(NULL);
|
|
GXSetDrawDoneCallback(NULL);
|
|
|
|
GX_WRITE_U32(0);
|
|
GX_WRITE_U32(0);
|
|
GX_WRITE_U32(0);
|
|
GX_WRITE_U32(0);
|
|
GX_WRITE_U32(0);
|
|
GX_WRITE_U32(0);
|
|
GX_WRITE_U32(0);
|
|
GX_WRITE_U32(0);
|
|
|
|
PPCSync();
|
|
|
|
GX_SET_CP_REG(1, 0);
|
|
GX_SET_CP_REG(2, 3);
|
|
|
|
__GXData->abtWaitPECopy = GX_TRUE;
|
|
|
|
__GXAbort();
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* 803594CC-80359670 353E0C 01A4+00 1/1 1/1 0/0 .text __GXInitRevisionBits */
|
|
void __GXInitRevisionBits(void) {
|
|
u32 i;
|
|
for (i = 0; i < 8; i++) {
|
|
FAST_FLAG_SET(__GXData->vatA[i], 1, 30, 33);
|
|
FAST_FLAG_SET(__GXData->vatB[i], 1, 31, 33);
|
|
|
|
GX_WRITE_U8(0x8);
|
|
GX_WRITE_U8(i | 0x80);
|
|
GX_WRITE_U32(__GXData->vatB[i]);
|
|
}
|
|
|
|
{
|
|
u32 reg1 = 0;
|
|
u32 reg2 = 0;
|
|
|
|
FAST_FLAG_SET(reg1, 1, 0, 1);
|
|
FAST_FLAG_SET(reg1, 1, 1, 1);
|
|
FAST_FLAG_SET(reg1, 1, 2, 1);
|
|
FAST_FLAG_SET(reg1, 1, 3, 1);
|
|
FAST_FLAG_SET(reg1, 1, 4, 1);
|
|
FAST_FLAG_SET(reg1, 1, 5, 1);
|
|
GX_WRITE_U8(0x10);
|
|
GX_WRITE_U32(0x1000);
|
|
GX_WRITE_U32(reg1);
|
|
|
|
FAST_FLAG_SET(reg2, 1, 0, 1);
|
|
GX_WRITE_U8(0x10);
|
|
GX_WRITE_U32(0x1012);
|
|
GX_WRITE_U32(reg2);
|
|
}
|
|
|
|
{
|
|
u32 reg = 0;
|
|
FAST_FLAG_SET(reg, 1, 0, 1);
|
|
FAST_FLAG_SET(reg, 1, 1, 1);
|
|
FAST_FLAG_SET(reg, 1, 2, 1);
|
|
FAST_FLAG_SET(reg, 1, 3, 1);
|
|
FAST_FLAG_SET(reg, 0x58, 24, 8);
|
|
GX_WRITE_U8(0x61);
|
|
GX_WRITE_U32(reg);
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 803D2040-803D20A0 02F160 0044+1C 2/1 0/0 0/0 .data @1 */
|
|
SECTION_DATA static char lit_1[] = "<< Dolphin SDK - GX release build: Nov 10 2004 06:27:12 (0x2301) >>";
|
|
|
|
/* 803D20A0-803D20C0 02F1C0 0020+00 0/1 0/0 0/0 .data DefaultTexData */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static u8 DefaultTexData[32] ALIGN_DECL(32) = {
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803D20C0-803D2190 02F1E0 00D0+00 0/1 0/0 0/0 .data GXDefaultVATList */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static u8 GXDefaultVATList[208] = {
|
|
0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803D2190-803D21AC 02F2B0 001C+00 0/1 0/0 0/0 .data GXDefaultProjData */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static u8 GXDefaultProjData[28] = {
|
|
0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803D21AC-803D226C 02F2CC 00C0+00 1/1 0/0 0/0 .data GXTexRegionAddrTable */
|
|
static u32 GXTexRegionAddrTable[] = {
|
|
0x00000, 0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000, 0x70000, 0x08000, 0x18000, 0x28000, 0x38000,
|
|
0x48000, 0x58000, 0x68000, 0x78000, 0x00000, 0x90000, 0x20000, 0xB0000, 0x40000, 0x98000, 0x60000, 0xB8000,
|
|
0x80000, 0x10000, 0xA0000, 0x30000, 0x88000, 0x50000, 0xA8000, 0x70000, 0x00000, 0x90000, 0x20000, 0xB0000,
|
|
0x40000, 0x90000, 0x60000, 0xB0000, 0x80000, 0x10000, 0xA0000, 0x30000, 0x80000, 0x50000, 0xA0000, 0x70000,
|
|
};
|
|
|
|
/* 803D226C-803D2280 -00001 0010+04 1/1 0/0 0/0 .data GXResetFuncInfo */
|
|
SECTION_DATA static void* GXResetFuncInfo[4 + 1 /* padding */] = {
|
|
(void*)__GXShutdown,
|
|
(void*)0x0000007F,
|
|
(void*)NULL,
|
|
(void*)NULL,
|
|
/* padding */
|
|
NULL,
|
|
};
|
|
|
|
/* 80450A78-80450A80 -00001 0004+04 1/1 0/0 0/0 .sdata __GXVersion */
|
|
SECTION_SDATA static const char* __GXVersion = lit_1;
|
|
|
|
/* 80456584-80456588 004B84 0004+00 1/1 0/0 0/0 .sdata2 @267 */
|
|
SECTION_SDATA2 static f32 lit_267 = 16777216.0f;
|
|
|
|
/* 80456588-8045658C 004B88 0004+00 2/2 0/0 0/0 .sdata2 @268 */
|
|
SECTION_SDATA2 static u8 lit_268[4] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
|
|
/* 80359670-80359C70 353FB0 0600+00 0/0 2/2 0/0 .text GXInit */
|
|
// Matches with literals
|
|
#ifdef NONMATCHING
|
|
static void EnableWriteGatherPipe() {
|
|
u32 hid2; // r31
|
|
hid2 = PPCMfhid2();
|
|
PPCMtwpar(OSUncachedToPhysical((void*)GXFIFO_ADDR));
|
|
hid2 |= 0x40000000;
|
|
PPCMthid2(hid2);
|
|
}
|
|
|
|
GXFifoObj* GXInit(void* base, u32 size)
|
|
{
|
|
u32 i;
|
|
u32 pad2; // for stack matching
|
|
|
|
OSRegisterVersion(__GXVersion);
|
|
__GXData->inDispList = GX_FALSE;
|
|
__GXData->dlSaveContext = GX_TRUE;
|
|
__GXData->abtWaitPECopy = GX_TRUE;
|
|
|
|
__GXData->tcsManEnab = 0;
|
|
__GXData->tevTcEnab = 0;
|
|
|
|
GXSetMisc(GX_MT_XF_FLUSH, 0);
|
|
|
|
__piReg = (void*)OSPhysicalToUncached(GX_PI_ADDR);
|
|
__cpReg = (void*)OSPhysicalToUncached(GX_CP_ADDR);
|
|
__peReg = (void*)OSPhysicalToUncached(GX_PE_ADDR);
|
|
__memReg = (void*)OSPhysicalToUncached(GX_MEM_ADDR);
|
|
|
|
__GXFifoInit();
|
|
|
|
GXInitFifoBase(&FifoObj, base, size);
|
|
GXSetCPUFifo(&FifoObj);
|
|
GXSetGPFifo(&FifoObj);
|
|
|
|
if (!resetFuncRegistered) {
|
|
OSRegisterResetFunction(&GXResetFuncInfo);
|
|
resetFuncRegistered = 1;
|
|
}
|
|
|
|
__GXPEInit();
|
|
EnableWriteGatherPipe();
|
|
|
|
__GXData->genMode = 0;
|
|
FAST_FLAG_SET(__GXData->genMode, 0, 24, 8);
|
|
|
|
__GXData->bpMask = 255;
|
|
FAST_FLAG_SET(__GXData->bpMask, 0xF, 24, 8);
|
|
|
|
__GXData->lpSize = 0;
|
|
FAST_FLAG_SET(__GXData->lpSize, 34, 24, 8);
|
|
|
|
for (i = 0; i < GX_MAX_TEVSTAGE; i++) {
|
|
__GXData->tevc[i] = 0;
|
|
__GXData->teva[i] = 0;
|
|
__GXData->tref[i / 2] = 0;
|
|
__GXData->texmapId[i] = GX_TEXMAP_NULL;
|
|
|
|
FAST_FLAG_SET(__GXData->tevc[i], 0xC0 + i * 2, 24, 8);
|
|
FAST_FLAG_SET(__GXData->teva[i], 0xC1 + i * 2, 24, 8);
|
|
FAST_FLAG_SET(__GXData->tevKsel[i / 2], 0xF6 + i / 2, 24, 8);
|
|
FAST_FLAG_SET(__GXData->tref[i / 2], 0x28 + i / 2, 24, 8);
|
|
}
|
|
|
|
__GXData->iref = 0;
|
|
FAST_FLAG_SET(__GXData->iref, 0x27, 24, 8);
|
|
|
|
for (i = 0; i < GX_MAXCOORD; i++) {
|
|
__GXData->suTs0[i] = 0;
|
|
__GXData->suTs1[i] = 0;
|
|
|
|
FAST_FLAG_SET(__GXData->suTs0[i], 0x30 + i * 2, 24, 8);
|
|
FAST_FLAG_SET(__GXData->suTs1[i], 0x31 + i * 2, 24, 8);
|
|
}
|
|
|
|
FAST_FLAG_SET(__GXData->suScis0, 0x20, 24, 8);
|
|
FAST_FLAG_SET(__GXData->suScis1, 0x21, 24, 8);
|
|
|
|
FAST_FLAG_SET(__GXData->cmode0, 0x41, 24, 8);
|
|
FAST_FLAG_SET(__GXData->cmode1, 0x42, 24, 8);
|
|
|
|
FAST_FLAG_SET(__GXData->zmode, 0x40, 24, 8);
|
|
FAST_FLAG_SET(__GXData->peCtrl, 0x43, 24, 8);
|
|
|
|
FAST_FLAG_SET(__GXData->cpTex, 0, 7, 2);
|
|
|
|
__GXData->zScale = 1.6777216E7f;
|
|
__GXData->zOffset = 0.0f;
|
|
|
|
__GXData->dirtyFlags = 0;
|
|
__GXData->dirtyVAT = 0;
|
|
|
|
{
|
|
u32 val1;
|
|
u32 val2;
|
|
|
|
val2 = OS_BUS_CLOCK / 500;
|
|
|
|
__GXFlushTextureState();
|
|
|
|
val1 = (val2 / 2048) | 0x69000400;
|
|
|
|
GX_WRITE_U8(0x61);
|
|
GX_WRITE_U32(val1);
|
|
|
|
__GXFlushTextureState();
|
|
|
|
val1 = (val2 / 4224) | 0x46000200;
|
|
GX_WRITE_U8(0x61);
|
|
GX_WRITE_U32(val1);
|
|
}
|
|
|
|
__GXInitRevisionBits();
|
|
|
|
for (i = 0; i < GX_MAX_TEXMAP; i++) {
|
|
GXInitTexCacheRegion(&__GXData->TexRegions0[i], GX_FALSE, GXTexRegionAddrTable[i], GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 8],
|
|
GX_TEXCACHE_32K);
|
|
GXInitTexCacheRegion(&__GXData->TexRegions1[i], GX_FALSE, GXTexRegionAddrTable[i + 16], GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 24],
|
|
GX_TEXCACHE_32K);
|
|
GXInitTexCacheRegion(&__GXData->TexRegions2[i], GX_TRUE, GXTexRegionAddrTable[i + 32], GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 40],
|
|
GX_TEXCACHE_32K);
|
|
}
|
|
|
|
for (i = 0; i < GX_MAX_TLUT; i++) {
|
|
GXInitTlutRegion(&__GXData->TlutRegions[i], 0xC0000 + 0x2000 * i, GX_TLUT_256);
|
|
}
|
|
|
|
for (i = 0; i < GX_MAX_BIGTLUT; i++) {
|
|
GXInitTlutRegion(&__GXData->TlutRegions[i + 16], 0xE0000 + 0x8000 * i, GX_TLUT_1K);
|
|
}
|
|
|
|
GX_SET_CP_REG(3, 0);
|
|
|
|
FAST_FLAG_SET(__GXData->perfSel, 0, 4, 4);
|
|
|
|
GX_WRITE_U8(0x8);
|
|
GX_WRITE_U8(0x20);
|
|
GX_WRITE_U32(__GXData->perfSel);
|
|
|
|
GX_WRITE_U8(0x10);
|
|
GX_WRITE_U32(0x1006);
|
|
GX_WRITE_U32(0);
|
|
|
|
GX_WRITE_U8(0x61);
|
|
GX_WRITE_U32(0x23000000);
|
|
|
|
GX_WRITE_U8(0x61);
|
|
GX_WRITE_U32(0x24000000);
|
|
|
|
GX_WRITE_U8(0x61);
|
|
GX_WRITE_U32(0x67000000);
|
|
|
|
__GXSetIndirectMask(0);
|
|
__GXSetTmemConfig(2);
|
|
__GXInitGX();
|
|
|
|
return &FifoObj;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm GXFifoObj* GXInit(void* base, u32 size) {
|
|
nofralloc
|
|
#include "asm/dolphin/gx/GXInit/GXInit.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 8045658C-80456590 004B8C 0004+00 1/1 0/0 0/0 .sdata2 @269 */
|
|
SECTION_SDATA2 static u32 lit_269 = 0x404040FF;
|
|
|
|
/* 80456590-80456594 004B90 0004+00 1/1 0/0 0/0 .sdata2 @270 */
|
|
SECTION_SDATA2 static u8 lit_270[4] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
|
|
/* 80456594-80456598 004B94 0004+00 1/1 0/0 0/0 .sdata2 @271 */
|
|
SECTION_SDATA2 static u32 lit_271 = 0xFFFFFFFF;
|
|
|
|
/* 80456598-8045659C 004B98 0004+00 1/1 0/0 0/0 .sdata2 @331 */
|
|
SECTION_SDATA2 static f32 lit_331 = 1.0f;
|
|
|
|
/* 8045659C-804565A0 004B9C 0004+00 1/1 0/0 0/0 .sdata2 @332 */
|
|
SECTION_SDATA2 static f32 lit_332 = 1.0f / 10.0f;
|
|
|
|
/* 804565A0-804565A8 004BA0 0008+00 1/1 0/0 0/0 .sdata2 @334 */
|
|
SECTION_SDATA2 static f64 lit_334 = 4503599627370496.0 /* cast u32 to float */;
|
|
|
|
/* 80359C70-8035A5A8 3545B0 0938+00 1/1 0/0 0/0 .text __GXInitGX */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void __GXInitGX(void) {
|
|
nofralloc
|
|
#include "asm/dolphin/gx/GXInit/__GXInitGX.s"
|
|
}
|
|
#pragma pop
|