aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-02-01 18:47:13 +0100
committerStapleButter <thetotalworm@gmail.com>2017-02-01 18:47:13 +0100
commite028973caa0d93b9cd4b7473bde1cb63136884f2 (patch)
tree3d9990744ef24e98c1ab9a8a498f01c876744db1
parent03c1a9cbc86f7fe83824129d67e8d151e95daf2a (diff)
this is not how sprite priorities work, you derp
-rw-r--r--GPU2D.cpp36
1 files changed, 20 insertions, 16 deletions
diff --git a/GPU2D.cpp b/GPU2D.cpp
index 2b9d487..306a522 100644
--- a/GPU2D.cpp
+++ b/GPU2D.cpp
@@ -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;
}