AdjustBgMosaic Documentation
This commit is contained in:
+1
-1
@@ -71,7 +71,7 @@ u32 ChangeBgY(u8 bg, u32 value, u8 op);
|
|||||||
u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op);
|
u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op);
|
||||||
u32 GetBgY(u8 bg);
|
u32 GetBgY(u8 bg);
|
||||||
void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle);
|
void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle);
|
||||||
u8 AdjustBgMosaic(u8 a1, u8 a2);
|
u8 AdjustBgMosaic(u8 value, u8 mode);
|
||||||
void SetBgTilemapBuffer(u8 bg, void *tilemap);
|
void SetBgTilemapBuffer(u8 bg, void *tilemap);
|
||||||
void UnsetBgTilemapBuffer(u8 bg);
|
void UnsetBgTilemapBuffer(u8 bg);
|
||||||
void* GetBgTilemapBuffer(u8 bg);
|
void* GetBgTilemapBuffer(u8 bg);
|
||||||
|
|||||||
@@ -865,79 +865,66 @@ void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dis
|
|||||||
SetBgAffineInternal(bg, srcCenterX, srcCenterY, dispCenterX, dispCenterY, scaleX, scaleY, rotationAngle);
|
SetBgAffineInternal(bg, srcCenterX, srcCenterY, dispCenterX, dispCenterY, scaleX, scaleY, rotationAngle);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 AdjustBgMosaic(u8 a1, u8 a2)
|
#define BG_MOSAIC_SET 0
|
||||||
|
#define BG_MOSAIC_SET_H 1
|
||||||
|
#define BG_MOSAIC_INC_H 2
|
||||||
|
#define BG_MOSAIC_DEC_H 3
|
||||||
|
#define BG_MOSAIC_SET_V 4
|
||||||
|
#define BG_MOSAIC_INC_V 5
|
||||||
|
#define BG_MOSAIC_DEC_V 6
|
||||||
|
|
||||||
|
u8 AdjustBgMosaic(u8 value, u8 mode)
|
||||||
{
|
{
|
||||||
u16 result;
|
u16 mosaicSize;
|
||||||
s16 test1;
|
s16 bgMosaicH;
|
||||||
s16 test2;
|
s16 bgMosaicV;
|
||||||
|
mosaicSize = GetGpuReg(REG_OFFSET_MOSAIC);
|
||||||
|
bgMosaicH = mosaicSize & 0xF;
|
||||||
|
bgMosaicV = (mosaicSize >> 4) & 0xF;
|
||||||
|
mosaicSize &= 0xFF00;
|
||||||
|
|
||||||
result = GetGpuReg(REG_OFFSET_MOSAIC);
|
switch (mode)
|
||||||
|
|
||||||
test1 = result & 0xF;
|
|
||||||
test2 = (result >> 4) & 0xF;
|
|
||||||
result &= 0xFF00;
|
|
||||||
|
|
||||||
switch (a2)
|
|
||||||
{
|
{
|
||||||
case 0:
|
case BG_MOSAIC_SET:
|
||||||
default:
|
default:
|
||||||
test1 = a1 & 0xF;
|
bgMosaicH = value & 0xF;
|
||||||
test2 = a1 >> 0x4;
|
bgMosaicV = value >> 0x4;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case BG_MOSAIC_SET_H:
|
||||||
test1 = a1 & 0xF;
|
bgMosaicH = value & 0xF;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case BG_MOSAIC_INC_H:
|
||||||
if ((test1 + a1) > 0xF)
|
if ((bgMosaicH + value) > 0xF)
|
||||||
{
|
bgMosaicH = 0xF;
|
||||||
test1 = 0xF;
|
else
|
||||||
}
|
bgMosaicH += value;
|
||||||
else
|
break;
|
||||||
{
|
case BG_MOSAIC_DEC_H:
|
||||||
test1 += a1;
|
if ((bgMosaicH - value) < 0)
|
||||||
}
|
bgMosaicH = 0x0;
|
||||||
break;
|
else
|
||||||
case 3:
|
bgMosaicH -= value;
|
||||||
if ((test1 - a1) < 0)
|
break;
|
||||||
{
|
case BG_MOSAIC_SET_V:
|
||||||
test1 = 0x0;
|
bgMosaicV = value & 0xF;
|
||||||
}
|
break;
|
||||||
else
|
case BG_MOSAIC_INC_V:
|
||||||
{
|
if ((bgMosaicV + value) > 0xF)
|
||||||
test1 -= a1;
|
bgMosaicV = 0xF;
|
||||||
}
|
else
|
||||||
break;
|
bgMosaicV += value;
|
||||||
case 4:
|
break;
|
||||||
test2 = a1 & 0xF;
|
case BG_MOSAIC_DEC_V:
|
||||||
break;
|
if ((bgMosaicV - value) < 0)
|
||||||
case 5:
|
bgMosaicV = 0x0;
|
||||||
if ((test2 + a1) > 0xF)
|
else
|
||||||
{
|
bgMosaicV -= value;
|
||||||
test2 = 0xF;
|
break;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
test2 += a1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
if ((test2 - a1) < 0)
|
|
||||||
{
|
|
||||||
test2 = 0x0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
test2 -= a1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
mosaicSize |= ((bgMosaicV << 0x4) & 0xF0);
|
||||||
result |= ((test2 << 0x4) & 0xF0);
|
mosaicSize |= (bgMosaicH & 0xF);
|
||||||
result |= (test1 & 0xF);
|
SetGpuReg(REG_OFFSET_MOSAIC, mosaicSize);
|
||||||
|
return mosaicSize;
|
||||||
SetGpuReg(REG_OFFSET_MOSAIC, result);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBgTilemapBuffer(u8 bg, void *tilemap)
|
void SetBgTilemapBuffer(u8 bg, void *tilemap)
|
||||||
|
|||||||
Reference in New Issue
Block a user