Fixed scrolling for 3D layer (it would scroll backwards).
Plus, we can now get rid of the start/end params in the 3D GetLine func.
This commit is contained in:
parent
6740cc3b7d
commit
747cc72948
|
@ -1080,8 +1080,8 @@ static BOOL setFinal3DColorSpecialDecreaseWnd(GPU *gpu, u32 passing, u8 *dst, u1
|
||||||
// render a text background to the combined pixelbuffer
|
// render a text background to the combined pixelbuffer
|
||||||
INLINE void renderline_textBG(GPU * gpu, u8 num, u8 * dst, u32 Y, u16 XBG, u16 YBG, u16 LG)
|
INLINE void renderline_textBG(GPU * gpu, u8 num, u8 * dst, u32 Y, u16 XBG, u16 YBG, u16 LG)
|
||||||
{
|
{
|
||||||
struct _BGxCNT * bgCnt = &(gpu->dispx_st)->dispx_BGxCNT[num].bits;
|
struct _BGxCNT *bgCnt = &(gpu->dispx_st)->dispx_BGxCNT[num].bits;
|
||||||
struct _DISPCNT * dispCnt = &(gpu->dispx_st)->dispx_DISPCNT.bits;
|
struct _DISPCNT *dispCnt = &(gpu->dispx_st)->dispx_DISPCNT.bits;
|
||||||
u16 lg = gpu->BGSize[num][0];
|
u16 lg = gpu->BGSize[num][0];
|
||||||
u16 ht = gpu->BGSize[num][1];
|
u16 ht = gpu->BGSize[num][1];
|
||||||
u16 tmp = ((YBG&(ht-1))>>3);
|
u16 tmp = ((YBG&(ht-1))>>3);
|
||||||
|
@ -2502,24 +2502,25 @@ static void GPU_ligne_layer(NDS_Screen * screen, u16 l)
|
||||||
{
|
{
|
||||||
if (i16 == 0 && dispCnt->BG0_3D)
|
if (i16 == 0 && dispCnt->BG0_3D)
|
||||||
{
|
{
|
||||||
u16 line3Dcolor[256];
|
u16 line3Dcolor[512];
|
||||||
u8 line3Dalpha[256];
|
u8 line3Dalpha[512];
|
||||||
|
|
||||||
memset(line3Dcolor, 0, sizeof(line3Dcolor));
|
memset(line3Dcolor, 0, sizeof(line3Dcolor));
|
||||||
memset(line3Dalpha, 0, sizeof(line3Dalpha));
|
memset(line3Dalpha, 0, sizeof(line3Dalpha));
|
||||||
//determine the 3d range to grab
|
|
||||||
BGxOFS * bgofs = &gpu->dispx_st->dispx_BGxOFS[i16];
|
|
||||||
s16 hofs = (s16)T1ReadWord((u8 *)&bgofs->BGxHOFS, 0);
|
|
||||||
int start, end, ofs;
|
|
||||||
if(hofs==0) { start = 0; end = 255; ofs = 0; }
|
|
||||||
else if(hofs<0) { start = -hofs; end=255; ofs=0; }
|
|
||||||
else { start = 0; end=255-hofs; ofs=hofs; }
|
|
||||||
|
|
||||||
gpu3D->NDS_3D_GetLine(l, start, end, line3Dcolor, line3Dalpha);
|
|
||||||
|
|
||||||
for(int k = start, q=0; k <= end; ++k, ++q)
|
BGxOFS *bgofs = &gpu->dispx_st->dispx_BGxOFS[i16];
|
||||||
|
u16 hofs = (T1ReadWord((u8*)&bgofs->BGxHOFS, 0) & 0x1FF);
|
||||||
|
|
||||||
|
gpu3D->NDS_3D_GetLine(l, 0, 255, line3Dcolor, line3Dalpha);
|
||||||
|
|
||||||
|
for(int k = 0, q = hofs; k < 256; k++)
|
||||||
|
{
|
||||||
if(line3Dcolor[q] & 0x8000)
|
if(line3Dcolor[q] & 0x8000)
|
||||||
gpu->setFinalColor3D(gpu, (q+ofs)<<1, dst, line3Dcolor[q], line3Dalpha[q], k);
|
gpu->setFinalColor3D(gpu, (k << 1), dst, line3Dcolor[q], line3Dalpha[q], k);
|
||||||
|
|
||||||
|
q++;
|
||||||
|
q &= 0x1FF;
|
||||||
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue