Files
tp/libs/dolphin/gx/GXFrameBuf.c
T
hatal175 0de0339250 Some GX work (#1998)
* 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
2023-12-06 15:57:35 -08:00

648 lines
18 KiB
C

//
// Generated By: dol2asm
// Translation Unit: GXFrameBuf
//
#include "dolphin/gx/GXFrameBuf.h"
#include "dolphin/gx/GX.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
void GXSetDispCopyFrame2Field();
void GXSetCopyClamp();
void GXSetCopyClear();
void GXSetDispCopyGamma();
void GXClearBoundingBox();
extern u8 GXNtsc480IntDf[60];
extern u8 GXNtsc480Int[60];
extern u8 GXMpal480IntDf[60];
extern u8 GXPal528IntDf[60];
extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */];
//
// External References:
//
void __cvt_fp2unsigned();
//
// Declarations:
//
/* 8035CA04-8035CA80 357344 007C+00 0/0 2/2 0/0 .text GXSetDispCopySrc */
void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height)
{
__GXData->field_0x1e0 = 0;
GX_BITFIELD_SET(__GXData->field_0x1e0, 22, 10, left);
GX_BITFIELD_SET(__GXData->field_0x1e0, 12, 10, top);
GX_BITFIELD_SET(__GXData->field_0x1e0, 0, 8, 73);
__GXData->field_0x1e4 = 0;
GX_BITFIELD_SET(__GXData->field_0x1e4, 22, 10, width - 1);
GX_BITFIELD_SET(__GXData->field_0x1e4, 12, 10, height - 1);
GX_BITFIELD_SET(__GXData->field_0x1e4, 0, 8, 74);
}
/* 8035CA80-8035CAFC 3573C0 007C+00 0/0 9/9 0/0 .text GXSetTexCopySrc */
void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height)
{
__GXData->field_0x1f0 = 0;
GX_BITFIELD_SET(__GXData->field_0x1f0, 22, 10, left);
GX_BITFIELD_SET(__GXData->field_0x1f0, 12, 10, top);
GX_BITFIELD_SET(__GXData->field_0x1f0, 0, 8, 0x49);
__GXData->field_0x1f4 = 0;
GX_BITFIELD_SET(__GXData->field_0x1f4, 22, 10, width - 1);
GX_BITFIELD_SET(__GXData->field_0x1f4, 12, 10, height - 1);
GX_BITFIELD_SET(__GXData->field_0x1f4, 0, 8, 0x4A);
}
/* 8035CAFC-8035CB30 35743C 0034+00 0/0 2/2 0/0 .text GXSetDispCopyDst */
void GXSetDispCopyDst(u16 arg0, u16 arg1)
{
s32 val = (s32) ((arg0 << 1) & 0xFFFE) >> 5;
__GXData->field_0x1e8 = 0;
GX_BITFIELD_SET(__GXData->field_0x1e8, 22, 10, val);
GX_BITFIELD_SET(__GXData->field_0x1e8, 0, 8, 0x4D);
}
/* 8035CB30-8035CC60 357470 0130+00 0/0 9/9 0/0 .text GXSetTexCopyDst */
#ifdef NONMATCHING
void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) {
s32 fmt2;
s32 arg3, arg4, arg5;
__GXData->field_0x200 = 0;
fmt2 = fmt & 0xf;
if ((s32)fmt == GX_TF_Z16) {
fmt2 = 0xb;
}
switch (fmt) {
case 0:
case 1:
case 2:
case 3:
case 0x26:
GX_BITFIELD_SET(__GXData->cpTex, 15, 2, 3);
break;
default:
GX_BITFIELD_SET(__GXData->cpTex, 15, 2, 2);
break;
}
__GXData->field_0x200 = 0x10 == (fmt & 0x10);
__GXData->cpTex = __rlwimi(__GXData->cpTex, fmt2, 0, 28, 28);
fmt2 &= 7;
__GetImageTileCount(fmt, width, height, &arg3, &arg4, &arg5);
__GXData->field_0x1f8 = 0;
GX_BITFIELD_SET(__GXData->field_0x1f8, 22, 10, arg3*arg5);
GX_BITFIELD_SET(__GXData->field_0x1f8, 0, 8, 0x4d);
GX_BITFIELD_SET(__GXData->cpTex, 22, 1, mipmap);
GX_BITFIELD_SET(__GXData->cpTex, 25, 3, fmt2);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s"
}
#pragma pop
#endif
/* 8035CC60-8035CC84 3575A0 0024+00 0/0 1/1 0/0 .text GXSetDispCopyFrame2Field */
void GXSetDispCopyFrame2Field(GXCopyMode arg0)
{
GX_BITFIELD_SET(__GXData->field_0x1ec, 18, 2, arg0);
GX_BITFIELD_SET(__GXData->cpTex, 18, 2, 0);
}
#define INSERT_FIELD(reg, value, nbits, shift) \
(reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | \
((u32) (value) << (shift));
/* 8035CC84-8035CCDC 3575C4 0058+00 0/0 2/2 0/0 .text GXSetCopyClamp */
void GXSetCopyClamp(GXFBClamp clamp) {
u8 isTop = (clamp & GX_CLAMP_TOP) == GX_CLAMP_TOP;
u8 isBottom = (clamp & GX_CLAMP_BOTTOM) == GX_CLAMP_BOTTOM;
__GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isTop, 0, 31, 31);
__GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isBottom, 1, 30, 30);
__GXData->cpTex = __rlwimi(__GXData->cpTex, isTop, 0, 31, 31);
__GXData->cpTex = __rlwimi(__GXData->cpTex, isBottom, 1, 30, 30);
}
/* ############################################################################################## */
/* 804565A8-804565B0 004BA8 0004+04 3/3 0/0 0/0 .sdata2 @179 */
SECTION_SDATA2 static f32 lit_179[1 + 1 /* padding */] = {
256.0f,
/* padding */
0.0f,
};
static u32 __GXGetNumXfbLines(u16 efb_height, u32 y_scale) {
u32 rv = ((efb_height - 1) * 0x100) / y_scale + 1;
if (y_scale > 0x80 && y_scale < 0x100) {
for (; (y_scale & 1) == 0; y_scale >>= 1) {
}
if (efb_height % y_scale == 0) {
rv++;
}
}
if (rv > 0x400) {
rv = 0x400;
}
return rv;
}
/* 8035CCDC-8035CD6C 35761C 0090+00 0/0 2/2 0/0 .text GXGetNumXfbLines */
// regalloc
#ifdef NONMATCHING
u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale) {
return __GXGetNumXfbLines(efb_height, ((u32)(256.0f / y_scale)) & 0x1ff);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804565B0-804565B8 004BB0 0008+00 1/1 0/0 0/0 .sdata2 @234 */
SECTION_SDATA2 static f64 lit_234 = 4503599627370496.0 /* cast u32 to float */;
/* 8035CD6C-8035CFA4 3576AC 0238+00 0/0 2/2 0/0 .text GXGetYScaleFactor */
// Matches with literals
#ifdef NONMATCHING
f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height) {
u8 padding[0x10];
u32 uVar6 = xfb_height;
f32 f29;
f32 ratio = (f32)xfb_height / (f32)efb_height;
u32 uVar5 = __GXGetNumXfbLines(efb_height, (u32)(256.0f / ratio) & 0x1ff);
while (uVar5 > xfb_height) {
uVar6--;
ratio = (f32)uVar6 / (f32)efb_height;
uVar5 = __GXGetNumXfbLines(efb_height, ((u32)(256.0f / ratio)) & 0x1ff);
}
f29 = ratio;
while (uVar5 < xfb_height) {
uVar6++;
f29 = ratio;
ratio = (f32)uVar6 / (f32)efb_height;
uVar5 = __GXGetNumXfbLines(efb_height, ((u32)(256.0f / ratio)) & 0x1ff);
}
return f29;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s"
}
#pragma pop
#endif
/* 8035CFA4-8035D070 3578E4 00CC+00 0/0 2/2 0/0 .text GXSetDispCopyYScale */
// Needs works
#ifdef NONMATCHING
u32 GXSetDispCopyYScale(f32 y_scale) {
u32 r5;
u32 r6;
u32 r7 = ((u32)(256.0f / y_scale)) & 0x1ff;
GXFIFO.u8 = 0x61;
r6 = 0;
GX_BITFIELD_SET(r6, 0x17, 9, r7);
GX_BITFIELD_SET(r6, 0, 7, 0x4e);
GXFIFO.u32 = r6;
__GXData->bpSentNot = 0;
r5 = 0x100 - r7 != 1;
GX_BITFIELD_SET(__GXData->field_0x1ec, 0x15, 1, r5);
return __GXGetNumXfbLines(__GXData->field_0x1e4, r7);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 GXSetDispCopyYScale(f32 y_scale) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyYScale.s"
}
#pragma pop
#endif
/* 8035D070-8035D0E8 3579B0 0078+00 0/0 2/2 0/0 .text GXSetCopyClear */
void GXSetCopyClear(GXColor color, u32 clear_z) {
u32 r6 = 0;
GX_BITFIELD_SET(r6, 24, 8, color.r);
GX_BITFIELD_SET(r6, 16, 8, color.a);
GX_BITFIELD_SET(r6, 0, 8, 0x4f);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r6;
r6 = 0;
GX_BITFIELD_SET(r6, 24, 8, color.b);
GX_BITFIELD_SET(r6, 16, 8, color.g);
GX_BITFIELD_SET(r6, 0, 8, 0x50);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r6;
r6 = 0;
GX_BITFIELD_SET(r6, 8, 24, clear_z);
GX_BITFIELD_SET(r6, 0, 8, 0x51);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r6;
__GXData->bpSentNot = 0;
}
/* 8035D0E8-8035D2F0 357A28 0208+00 0/0 4/4 0/0 .text GXSetCopyFilter */
// Start of antialias if. Possibly variable definition order.
#ifdef NONMATCHING
void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfilter[7]) {
u32 r8;
u32 r7;
u32 r3;
u32 r9;
u32 r11;
u32 r5;
if (antialias) {
r3 = 0;
GX_BITFIELD_SET(r3, 0x1c, 4, pattern[0][0]);
GX_BITFIELD_SET(r3, 0x18, 4, pattern[0][1]);
GX_BITFIELD_SET(r3, 0x14, 4, pattern[1][0]);
GX_BITFIELD_SET(r3, 0x10, 4, pattern[1][1]);
GX_BITFIELD_SET(r3, 0xc, 4, pattern[2][0]);
GX_BITFIELD_SET(r3, 0x8, 4, pattern[2][1]);
GX_BITFIELD_SET(r3, 0, 8, 1);
r7 = 0;
GX_BITFIELD_SET(r7, 0x1c, 4, pattern[3][0]);
GX_BITFIELD_SET(r7, 0x18, 4, pattern[3][1]);
GX_BITFIELD_SET(r7, 0x14, 4, pattern[4][0]);
GX_BITFIELD_SET(r7, 0x10, 4, pattern[4][1]);
GX_BITFIELD_SET(r7, 0xc, 4, pattern[5][0]);
GX_BITFIELD_SET(r7, 0x8, 4, pattern[5][1]);
GX_BITFIELD_SET(r7, 0, 8, 2);
r8 = 0;
GX_BITFIELD_SET(r8, 0x1c, 4, pattern[6][0]);
GX_BITFIELD_SET(r8, 0x18, 4, pattern[6][1]);
GX_BITFIELD_SET(r8, 0x14, 4, pattern[7][0]);
GX_BITFIELD_SET(r8, 0x10, 4, pattern[7][1]);
GX_BITFIELD_SET(r8, 0xc, 4, pattern[8][0]);
GX_BITFIELD_SET(r8, 0x8, 4, pattern[8][1]);
GX_BITFIELD_SET(r8, 0, 8, 3);
r9 = 0;
GX_BITFIELD_SET(r9, 0x1c, 4, pattern[9][0]);
GX_BITFIELD_SET(r9, 0x18, 4, pattern[9][1]);
GX_BITFIELD_SET(r9, 0x14, 4, pattern[10][0]);
GX_BITFIELD_SET(r9, 0x10, 4, pattern[10][1]);
GX_BITFIELD_SET(r9, 0xc, 4, pattern[11][0]);
GX_BITFIELD_SET(r9, 0x8, 4, pattern[11][1]);
GX_BITFIELD_SET(r9, 0, 8, 4);
} else {
r3 = 0x01666666;
r7 = 0x02666666;
r8 = 0x03666666;
r9 = 0x04666666;
}
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r3;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r7;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r8;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r9;
r11 = 0;
GX_BITFIELD_SET(r11, 0, 8, 0x53);
r5 = 0;
GX_BITFIELD_SET(r5, 0, 8, 0x54);
if (vf) {
GX_BITFIELD_SET(r11, 0x1a, 6, vfilter[0]);
GX_BITFIELD_SET(r11, 0x14, 6, vfilter[1]);
GX_BITFIELD_SET(r11, 0xe, 6, vfilter[2]);
GX_BITFIELD_SET(r11, 0x8, 6, vfilter[3]);
GX_BITFIELD_SET(r5, 0x1a, 6, vfilter[4]);
GX_BITFIELD_SET(r5, 0x14, 6, vfilter[5]);
GX_BITFIELD_SET(r5, 0xe, 6, vfilter[6]);
} else {
GX_BITFIELD_SET(r11, 0x1a, 6, 0);
GX_BITFIELD_SET(r11, 0x14, 6, 0);
GX_BITFIELD_SET(r11, 0xe, 6, 0x15);
GX_BITFIELD_SET(r11, 0x8, 6, 0x16);
GX_BITFIELD_SET(r5, 0x1a, 6, 0x15);
GX_BITFIELD_SET(r5, 0x14, 6, 0);
GX_BITFIELD_SET(r5, 0xe, 6, 0);
}
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r11;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r5;
__GXData->bpSentNot = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfilter[7]) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s"
}
#pragma pop
#endif
/* 8035D2F0-8035D304 357C30 0014+00 0/0 2/2 0/0 .text GXSetDispCopyGamma */
void GXSetDispCopyGamma(GXGamma gamma)
{
GX_BITFIELD_SET(__GXData->field_0x1ec, 23, 2, gamma);
}
/* 8035D304-8035D46C 357C44 0168+00 0/0 3/3 0/0 .text GXCopyDisp */
// regalloc / instruction order
#ifdef NONMATCHING
void GXCopyDisp(void* dst, GXBool clear) {
u32 r7;
u32 r8;
GXBool r10;
u32 r9;
u32 field_0x1dc;
if (clear) {
r8 = __GXData->field_0x1d8;
GX_BITFIELD_SET(r8, 0x1f, 1, 1);
GX_BITFIELD_SET(r8, 0x1c, 3, 7);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r8;
r7 = __GXData->field_0x1d0;
GX_BITFIELD_SET(r7, 0x1f, 1, 0);
GX_BITFIELD_SET(r7, 0x1e, 1, 0);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r7;
}
r10 = 0;
if (clear || (__GXData->field_0x1dc & 0x7) == 3) {
field_0x1dc = __GXData->field_0x1dc;
if (((field_0x1dc >> 6) & 1) == 1) {
GX_BITFIELD_SET(field_0x1dc, 0x19, 1, 0);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = field_0x1dc;
r10 = 1;
}
}
r9 = 0;
__rlwimi(r9, (int)dst, 0x1b, 0xb, 0x1f);
GX_BITFIELD_SET(r9, 0, 8, 0x4b);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1e0;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1e4;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1e8;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r9;
GX_BITFIELD_SET(__GXData->field_0x1ec, 0x14, 1, clear);
GX_BITFIELD_SET(__GXData->field_0x1ec, 0x11, 1, 1);
GX_BITFIELD_SET(__GXData->field_0x1ec, 0, 8, 0x52);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1ec;
if (clear) {
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1d8;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1d0;
}
if (r10) {
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1dc;
}
__GXData->bpSentNot = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXCopyDisp(void* dst, GXBool clear) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s"
}
#pragma pop
#endif
/* 8035D46C-8035D5F8 357DAC 018C+00 0/0 9/9 0/0 .text GXCopyTex */
// regalloc
#ifdef NONMATCHING
void GXCopyTex(void* dst, GXBool clear) {
u32 r8;
u32 r7;
u32 field_0x1dc;
u8 r0;
u32 r10;
if (clear) {
r8 = __GXData->field_0x1d8;
GX_BITFIELD_SET(r8, 0x1f, 1, 1);
GX_BITFIELD_SET(r8, 0x1c, 3, 7);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r8;
r7 = __GXData->field_0x1d0;
GX_BITFIELD_SET(r7, 0x1f, 1, 0);
GX_BITFIELD_SET(r7, 0x1e, 1, 0);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r7;
}
r0 = 0;
field_0x1dc = __GXData->field_0x1dc;
if (__GXData->bpSentNot && (field_0x1dc & 0x7) != 3) {
GX_BITFIELD_SET(r7, 0x1d, 3, 3);
r0 = 1;
}
if ((clear || (field_0x1dc & 0x7) == 3) && ((field_0x1dc >> 6) & 1) == 1) {
GX_BITFIELD_SET(r7, 0x19, 1, 0);
r0 = 1;
}
if (r0) {
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r7;
}
r10 = 0;
__rlwimi(r10, (int)dst, 0x1b, 0xb, 0x1f);
GX_BITFIELD_SET(r10, 0, 8, 0x4b);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1f0;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1f4;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1f8;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r10;
GX_BITFIELD_SET(__GXData->cpTex, 0x14, 1, clear);
GX_BITFIELD_SET(__GXData->cpTex, 0x11, 1, 0);
GX_BITFIELD_SET(__GXData->cpTex, 0, 8, 0x52);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->cpTex;
if (clear) {
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1d8;
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1d0;
}
if (r0) {
GXFIFO.u8 = 0x61;
GXFIFO.u32 = __GXData->field_0x1dc;
}
__GXData->bpSentNot = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXCopyTex(void* dst, GXBool clear) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXCopyTex.s"
}
#pragma pop
#endif
/* 8035D5F8-8035D630 357F38 0038+00 0/0 1/1 0/0 .text GXClearBoundingBox */
void GXClearBoundingBox(void)
{
GXFIFO.u8 = GX_LOAD_BP_REG;
GXFIFO.u32 = 0x550003FF;
GXFIFO.u8 = GX_LOAD_BP_REG;
GXFIFO.u32 = 0x560003FF;
set_x2(GX_FALSE);
}
/* ############################################################################################## */
/* 803D2448-803D2484 02F568 003C+00 0/0 2/1 0/0 .data GXNtsc480IntDf */
SECTION_DATA extern u8 GXNtsc480IntDf[60] = {
0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0x28, 0x00, 0x00, 0x02,
0x80, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00,
};
/* 803D2484-803D24C0 02F5A4 003C+00 0/0 1/1 0/0 .data GXNtsc480Int */
SECTION_DATA extern u8 GXNtsc480Int[60] = {
0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0x28, 0x00, 0x00, 0x02,
0x80, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x15, 0x16, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803D24C0-803D24FC 02F5E0 003C+00 0/0 1/1 0/0 .data GXMpal480IntDf */
SECTION_DATA extern u8 GXMpal480IntDf[60] = {
0x00, 0x00, 0x00, 0x08, 0x02, 0x80, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0x28, 0x00, 0x00, 0x02,
0x80, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00,
};
/* 803D24FC-803D2538 02F61C 003C+00 0/0 1/1 0/0 .data GXPal528IntDf */
SECTION_DATA extern u8 GXPal528IntDf[60] = {
0x00, 0x00, 0x00, 0x04, 0x02, 0x80, 0x02, 0x10, 0x02, 0x10, 0x00, 0x28, 0x00, 0x17, 0x02,
0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00,
};
/* 803D2538-803D2578 02F658 003C+04 0/0 1/1 0/0 .data GXEurgb60Hz480IntDf */
SECTION_DATA extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */] = {
0x00,
0x00,
0x00,
0x14,
0x02,
0x80,
0x01,
0xE0,
0x01,
0xE0,
0x00,
0x28,
0x00,
0x00,
0x02,
0x80,
0x01,
0xE0,
0x00,
0x00,
0x00,
0x00,
0x00,
0x01,
0x00,
0x00,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x06,
0x08,
0x08,
0x0A,
0x0C,
0x0A,
0x08,
0x08,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
};