// // 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, };