begin work on mosaic

OBJ Y mosaic emulated correctly, there's atleast that.
This commit is contained in:
Arisotura 2019-09-15 01:31:09 +02:00
parent b8f55623c1
commit cb90475b60
2 changed files with 274 additions and 333 deletions

File diff suppressed because it is too large Load Diff

View File

@ -111,7 +111,11 @@ private:
u8 BGMosaicSize[2];
u8 OBJMosaicSize[2];
u8 BGMosaicY, BGMosaicYMax;
u8 OBJMosaicY, OBJMosaicYMax;
u8 OBJMosaicYCount, OBJMosaicY, OBJMosaicYMax;
u8 MosaicTable[16][256];
u8* CurBGXMosaicTable;
u8* CurOBJXMosaicTable;
u16 BlendCnt;
u16 BlendAlpha;
@ -133,6 +137,8 @@ private:
u32 ColorBrightnessDown(u32 val, u32 factor);
u32 ColorComposite(int i, u32 val1, u32 val2);
void UpdateMosaicCounters(u32 line);
template<u32 bgmode> void DrawScanlineBGMode(u32 line);
void DrawScanlineBGMode6(u32 line);
void DrawScanlineBGMode7(u32 line);
@ -143,10 +149,10 @@ private:
void (*DrawPixel)(u32* dst, u16 color, u32 flag);
void DrawBG_3D();
void DrawBG_Text(u32 line, u32 bgnum);
void DrawBG_Affine(u32 line, u32 bgnum);
void DrawBG_Extended(u32 line, u32 bgnum);
void DrawBG_Large(u32 line);
template<bool mosaic> void DrawBG_Text(u32 line, u32 bgnum);
template<bool mosaic> void DrawBG_Affine(u32 line, u32 bgnum);
template<bool mosaic> void DrawBG_Extended(u32 line, u32 bgnum);
template<bool mosaic> void DrawBG_Large(u32 line);
void InterleaveSprites(u32 prio);
template<bool window> void DrawSprite_Rotscale(u16* attrib, u16* rotparams, u32 boundwidth, u32 boundheight, u32 width, u32 height, s32 xpos, s32 ypos);