mirror of https://github.com/zeldaret/tp.git
352 lines
10 KiB
C
352 lines
10 KiB
C
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: GXFrameBuf
|
|
//
|
|
|
|
#include "dolphin/gx/GXFrameBuf.h"
|
|
#include "dolphin/gx/GXInit.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->field_0x1fc, 15, 2, 3);
|
|
break;
|
|
default:
|
|
GX_BITFIELD_SET(__GXData->field_0x1fc, 15, 2, 2);
|
|
break;
|
|
}
|
|
|
|
__GXData->field_0x200 = (fmt & 0x10) == 0x10;
|
|
__GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, 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->field_0x1fc, 22, 1, mipmap);
|
|
GX_BITFIELD_SET(__GXData->field_0x1fc, 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->field_0x1fc, 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->field_0x1fc = __rlwimi(__GXData->field_0x1fc, isTop, 0, 31, 31);
|
|
__GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, 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,
|
|
};
|
|
|
|
/* 8035CCDC-8035CD6C 35761C 0090+00 0/0 2/2 0/0 .text GXGetNumXfbLines */
|
|
#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
|
|
|
|
/* ############################################################################################## */
|
|
/* 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 */
|
|
#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
|
|
|
|
/* 8035CFA4-8035D070 3578E4 00CC+00 0/0 2/2 0/0 .text GXSetDispCopyYScale */
|
|
#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
|
|
|
|
/* 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->field_0x2 = 0;
|
|
}
|
|
|
|
/* 8035D0E8-8035D2F0 357A28 0208+00 0/0 4/4 0/0 .text GXSetCopyFilter */
|
|
#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
|
|
|
|
/* 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 */
|
|
#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
|
|
|
|
/* 8035D46C-8035D5F8 357DAC 018C+00 0/0 9/9 0/0 .text GXCopyTex */
|
|
#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
|
|
|
|
/* 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,
|
|
};
|