diff options
author | StapleButter <thetotalworm@gmail.com> | 2017-02-01 18:47:13 +0100 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2017-02-01 18:47:13 +0100 |
commit | e028973caa0d93b9cd4b7473bde1cb63136884f2 (patch) | |
tree | 3d9990744ef24e98c1ab9a8a498f01c876744db1 | |
parent | 03c1a9cbc86f7fe83824129d67e8d151e95daf2a (diff) |
this is not how sprite priorities work, you derp
-rw-r--r-- | GPU2D.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
@@ -198,24 +198,26 @@ void GPU2D::DrawScanline_Mode1(u32 line, u16* dst) { if ((BGCnt[3] & 0x3) == i) { - if (DispCnt & 0x0800) DrawBG_Text(line, dst, 3); - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x38000, dst); + if (DispCnt & 0x0800) + DrawBG_Text(line, dst, 3); } if ((BGCnt[2] & 0x3) == i) { - if (DispCnt & 0x0400) DrawBG_Text(line, dst, 2); - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x28000, dst); + if (DispCnt & 0x0400) + DrawBG_Text(line, dst, 2); } if ((BGCnt[1] & 0x3) == i) { - if (DispCnt & 0x0200) DrawBG_Text(line, dst, 1); - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x18000, dst); + if (DispCnt & 0x0200) + DrawBG_Text(line, dst, 1); } if ((BGCnt[0] & 0x3) == i) { - if (DispCnt & 0x0100) DrawBG_Text(line, dst, 0); - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x08000, dst); + if (DispCnt & 0x0100) + DrawBG_Text(line, dst, 0); } + if (DispCnt & 0x1000) + InterleaveSprites(spritebuf, 0x8000 | (i<<16), dst); } break; @@ -224,24 +226,26 @@ void GPU2D::DrawScanline_Mode1(u32 line, u16* dst) { if ((BGCnt[3] & 0x3) == i) { - // ext. todo - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x38000, dst); + //if (DispCnt & 0x0800) + // ext todo } if ((BGCnt[2] & 0x3) == i) { - // ext. todo - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x28000, dst); + //if (DispCnt & 0x0400) + // ext todo } if ((BGCnt[1] & 0x3) == i) { - if (DispCnt & 0x0200) DrawBG_Text(line, dst, 1); - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x18000, dst); + if (DispCnt & 0x0200) + DrawBG_Text(line, dst, 1); } if ((BGCnt[0] & 0x3) == i) { - if (DispCnt & 0x0100) DrawBG_Text(line, dst, 0); - if (DispCnt & 0x1000) InterleaveSprites(spritebuf, 0x08000, dst); + if (DispCnt & 0x0100) + DrawBG_Text(line, dst, 0); } + if (DispCnt & 0x1000) + InterleaveSprites(spritebuf, 0x8000 | (i<<16), dst); } break; } |