mirror of https://github.com/mgba-emu/mgba.git
DS Video: Use separate value for maximum sprite cycles (fixes #624)
This commit is contained in:
parent
ef9081da7e
commit
82c06bb42e
1
CHANGES
1
CHANGES
|
@ -23,6 +23,7 @@ Bugfixes:
|
||||||
- DS Video: Fix size of VRAM zeroes buffer
|
- DS Video: Fix size of VRAM zeroes buffer
|
||||||
- DS GX: Fix depth test scaling
|
- DS GX: Fix depth test scaling
|
||||||
- DS GX: Fix overflow causing a division crash
|
- DS GX: Fix overflow causing a division crash
|
||||||
|
- DS Video: Use separate value for maximum sprite cycles (fixes mgba.io/i/624)
|
||||||
Misc:
|
Misc:
|
||||||
- ARM: Add F-block instruction decoding
|
- ARM: Add F-block instruction decoding
|
||||||
- DS GX: Clean up and unify texture mapping
|
- DS GX: Clean up and unify texture mapping
|
||||||
|
|
|
@ -400,6 +400,7 @@ static void DSVideoSoftwareRendererDrawGBAScanline(struct GBAVideoRenderer* rend
|
||||||
}
|
}
|
||||||
|
|
||||||
GBAVideoSoftwareRendererPreprocessBuffer(softwareRenderer, y);
|
GBAVideoSoftwareRendererPreprocessBuffer(softwareRenderer, y);
|
||||||
|
softwareRenderer->spriteCyclesRemaining = 1530; // TODO: Figure out the actual value; this value is just a fudge factor for now
|
||||||
int spriteLayers = GBAVideoSoftwareRendererPreprocessSpriteLayer(softwareRenderer, y);
|
int spriteLayers = GBAVideoSoftwareRendererPreprocessSpriteLayer(softwareRenderer, y);
|
||||||
memset(softwareRenderer->alphaA, softwareRenderer->blda, sizeof(softwareRenderer->alphaA));
|
memset(softwareRenderer->alphaA, softwareRenderer->blda, sizeof(softwareRenderer->alphaA));
|
||||||
memset(softwareRenderer->alphaB, softwareRenderer->bldb, sizeof(softwareRenderer->alphaB));
|
memset(softwareRenderer->alphaB, softwareRenderer->bldb, sizeof(softwareRenderer->alphaB));
|
||||||
|
|
|
@ -582,6 +582,7 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render
|
||||||
}
|
}
|
||||||
|
|
||||||
GBAVideoSoftwareRendererPreprocessBuffer(softwareRenderer, y);
|
GBAVideoSoftwareRendererPreprocessBuffer(softwareRenderer, y);
|
||||||
|
softwareRenderer->spriteCyclesRemaining = GBARegisterDISPCNTIsHblankIntervalFree(softwareRenderer->dispcnt) ? OBJ_HBLANK_FREE_LENGTH : OBJ_LENGTH;
|
||||||
int spriteLayers = GBAVideoSoftwareRendererPreprocessSpriteLayer(softwareRenderer, y);
|
int spriteLayers = GBAVideoSoftwareRendererPreprocessSpriteLayer(softwareRenderer, y);
|
||||||
softwareRenderer->d.vramOBJ[0] = objVramBase;
|
softwareRenderer->d.vramOBJ[0] = objVramBase;
|
||||||
if (softwareRenderer->lastHighlightAmount != softwareRenderer->d.highlightAmount) {
|
if (softwareRenderer->lastHighlightAmount != softwareRenderer->d.highlightAmount) {
|
||||||
|
@ -959,7 +960,6 @@ int GBAVideoSoftwareRendererPreprocessSpriteLayer(struct GBAVideoSoftwareRendere
|
||||||
renderer->oamMax = GBAVideoRendererCleanOAM(renderer->d.oam->obj, renderer->sprites, renderer->objOffsetY, renderer->masterHeight, renderer->combinedObjSort);
|
renderer->oamMax = GBAVideoRendererCleanOAM(renderer->d.oam->obj, renderer->sprites, renderer->objOffsetY, renderer->masterHeight, renderer->combinedObjSort);
|
||||||
renderer->oamDirty = false;
|
renderer->oamDirty = false;
|
||||||
}
|
}
|
||||||
renderer->spriteCyclesRemaining = GBARegisterDISPCNTIsHblankIntervalFree(renderer->dispcnt) ? OBJ_HBLANK_FREE_LENGTH : OBJ_LENGTH;
|
|
||||||
int mosaicV = GBAMosaicControlGetObjV(renderer->mosaic) + 1;
|
int mosaicV = GBAMosaicControlGetObjV(renderer->mosaic) + 1;
|
||||||
int mosaicY = y - (y % mosaicV);
|
int mosaicY = y - (y % mosaicV);
|
||||||
int i;
|
int i;
|
||||||
|
|
Loading…
Reference in New Issue