summaryrefslogtreecommitdiff
path: root/gflib
diff options
context:
space:
mode:
Diffstat (limited to 'gflib')
-rw-r--r--gflib/bg.c112
-rw-r--r--gflib/text.c10
-rw-r--r--gflib/text.h6
-rw-r--r--gflib/window.c36
4 files changed, 75 insertions, 89 deletions
diff --git a/gflib/bg.c b/gflib/bg.c
index 66dd81a25..12c42d124 100644
--- a/gflib/bg.c
+++ b/gflib/bg.c
@@ -34,8 +34,8 @@ struct BgConfig2
u32 unk_3:18;
void* tilemap;
- s32 bg_x;
- s32 bg_y;
+ s32 bg_x; // Maybe unsigned, but game treats it as if it is signed a LOT.
+ s32 bg_y; // Same for this variable.
};
static struct BgControl sGpuBgConfigs;
@@ -621,17 +621,15 @@ s32 GetBgX(u8 bg)
{
if (IsInvalidBg32(bg))
return -1;
- else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
+ if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
return -1;
- else
- return sGpuBgConfigs2[bg].bg_x;
+ return sGpuBgConfigs2[bg].bg_x;
}
s32 ChangeBgY(u8 bg, s32 value, u8 op)
{
u8 mode;
- u16 temp1;
- u16 temp2;
+ u16 temp1, temp2;
if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
{
@@ -700,8 +698,7 @@ s32 ChangeBgY(u8 bg, s32 value, u8 op)
s32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op)
{
u8 mode;
- u16 temp1;
- u16 temp2;
+ u16 temp1, temp2;
if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
{
@@ -772,10 +769,9 @@ s32 GetBgY(u8 bg)
{
if (IsInvalidBg32(bg))
return -1;
- else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
+ if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
return -1;
- else
- return sGpuBgConfigs2[bg].bg_y;
+ return sGpuBgConfigs2[bg].bg_y;
}
void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle)
@@ -874,81 +870,77 @@ void* GetBgTilemapBuffer(u8 bg)
{
if (IsInvalidBg32(bg))
return NULL;
- else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
+ if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
return NULL;
- else
- return sGpuBgConfigs2[bg].tilemap;
+ return sGpuBgConfigs2[bg].tilemap;
}
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset)
{
- if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
- {
- if (mode != 0)
- CpuCopy16(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)), mode);
- else
- LZ77UnCompWram(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)));
- }
+ if (IsInvalidBg32(bg) || IsTileMapOutsideWram(bg))
+ return;
+ if (mode != 0)
+ CpuCopy16(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)), mode);
+ else
+ LZ77UnCompWram(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)));
}
void CopyBgTilemapBufferToVram(u8 bg)
{
u16 sizeToLoad;
- if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
+ if (IsInvalidBg32(bg) || IsTileMapOutsideWram(bg))
+ return;
+
+ switch (GetBgType(bg))
{
- switch (GetBgType(bg))
- {
- case 0:
- sizeToLoad = GetBgMetricTextMode(bg, 0) * 0x800;
- break;
- case 1:
- sizeToLoad = GetBgMetricAffineMode(bg, 0) * 0x100;
- break;
- default:
- sizeToLoad = 0;
- break;
- }
- LoadBgVram(bg, sGpuBgConfigs2[bg].tilemap, sizeToLoad, 0, 2);
+ case 0:
+ sizeToLoad = GetBgMetricTextMode(bg, 0) * 0x800;
+ break;
+ case 1:
+ sizeToLoad = GetBgMetricAffineMode(bg, 0) * 0x100;
+ break;
+ default:
+ sizeToLoad = 0;
+ break;
}
+ LoadBgVram(bg, sGpuBgConfigs2[bg].tilemap, sizeToLoad, 0, 2);
}
-void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
+void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height)
{
- u16 destX16;
- u16 destY16;
+ u16 destX16, destY16;
u16 mode;
- if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
+ if (IsInvalidBg32(bg) || IsTileMapOutsideWram(bg))
+ return;
+ switch (GetBgType(bg))
{
- switch (GetBgType(bg))
- {
- case 0:
+ case 0:
+ {
+ const u16 *srcCopy = src;
+ for (destY16 = destY; destY16 < (destY + height); destY16++)
{
- const u16 * srcCopy = src;
- for (destY16 = destY; destY16 < (destY + height); destY16++)
+ for (destX16 = destX; destX16 < (destX + width); destX16++)
{
- for (destX16 = destX; destX16 < (destX + width); destX16++)
- {
- ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
- }
+ ((u16 *)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
}
- break;
}
- case 1:
+ break;
+ }
+ case 1:
+ {
+ const u8 *srcCopy = src;
+ mode = GetBgMetricAffineMode(bg, 0x1);
+ for (destY16 = destY; destY16 < (destY + height); destY16++)
{
- const u8 * srcCopy = src;
- mode = GetBgMetricAffineMode(bg, 0x1);
- for (destY16 = destY; destY16 < (destY + height); destY16++)
+ for (destX16 = destX; destX16 < (destX + width); destX16++)
{
- for (destX16 = destX; destX16 < (destX + width); destX16++)
- {
- ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
- }
+ ((u8 *)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
}
- break;
- }
}
+ break;
+ }
}
}
diff --git a/gflib/text.c b/gflib/text.c
index 636fe50a9..2f4dc4f19 100644
--- a/gflib/text.c
+++ b/gflib/text.c
@@ -154,7 +154,7 @@ u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8
printerTemplate.currentY = y;
printerTemplate.letterSpacing = gFonts[fontId].letterSpacing;
printerTemplate.lineSpacing = gFonts[fontId].lineSpacing;
- printerTemplate.unk = gFonts[fontId].unk;
+ printerTemplate.style = gFonts[fontId].style;
printerTemplate.fgColor = gFonts[fontId].fgColor;
printerTemplate.bgColor = gFonts[fontId].bgColor;
printerTemplate.shadowColor = gFonts[fontId].shadowColor;
@@ -484,7 +484,7 @@ u8 GetLastTextColor(u8 colorType)
{ \
dst = windowTiles + ((j / 8) * 32) + ((j & 7) >> 1) + ((i / 8) * widthOffset) + ((i & 7) * 4); \
bits = ((j & 1) * 4); \
- *dst = (toOrr << bits) | ((0xF0 >> bits) & *dst); \
+ *dst = (toOrr << bits) | (*dst & (0xF0 >> bits)); \
} \
r5 >>= 4; \
} \
@@ -1567,7 +1567,7 @@ void SetDefaultFontsPointer(void)
u8 GetFontAttribute(u8 fontId, u8 attributeId)
{
- int result = 0;
+ u8 result = 0;
switch (attributeId)
{
case FONTATTR_MAX_LETTER_WIDTH:
@@ -1582,8 +1582,8 @@ u8 GetFontAttribute(u8 fontId, u8 attributeId)
case FONTATTR_LINE_SPACING:
result = gFontInfos[fontId].lineSpacing;
break;
- case FONTATTR_UNKNOWN:
- result = gFontInfos[fontId].unk;
+ case FONTATTR_STYLE:
+ result = gFontInfos[fontId].style;
break;
case FONTATTR_COLOR_FOREGROUND:
result = gFontInfos[fontId].fgColor;
diff --git a/gflib/text.h b/gflib/text.h
index 0829d748f..b76897757 100644
--- a/gflib/text.h
+++ b/gflib/text.h
@@ -282,7 +282,7 @@ enum
FONTATTR_MAX_LETTER_HEIGHT,
FONTATTR_LETTER_SPACING,
FONTATTR_LINE_SPACING,
- FONTATTR_UNKNOWN, // dunno what this is yet
+ FONTATTR_STYLE,
FONTATTR_COLOR_FOREGROUND,
FONTATTR_COLOR_BACKGROUND,
FONTATTR_COLOR_SHADOW
@@ -310,7 +310,7 @@ struct TextPrinterTemplate
u8 currentY;
u8 letterSpacing;
u8 lineSpacing;
- u8 unk:4; // 0xC
+ u8 style:4; // 0xC
u8 fgColor:4;
u8 bgColor:4;
u8 shadowColor:4;
@@ -339,7 +339,7 @@ struct FontInfo
u8 maxLetterHeight;
u8 letterSpacing;
u8 lineSpacing;
- u8 unk:4;
+ u8 style:4; //unused
u8 fgColor:4;
u8 bgColor:4;
u8 shadowColor:4;
diff --git a/gflib/window.c b/gflib/window.c
index 7c87ea86d..0be59773c 100644
--- a/gflib/window.c
+++ b/gflib/window.c
@@ -30,21 +30,18 @@ static void nullsub_8(void)
bool16 InitWindows(const struct WindowTemplate *templates)
{
- int i;
- void *bgTilemapBuffer;
- int j;
- u8 bgLayer;
- u16 attrib;
+ int i, j;
u8* allocatedTilemapBuffer;
+ u16 attrib;
int allocatedBaseBlock;
+ u8 bgLayer;
for (i = 0; i < 0x4; ++i)
{
- bgTilemapBuffer = GetBgTilemapBuffer(i);
- if (bgTilemapBuffer != NULL)
+ if (GetBgTilemapBuffer(i) != NULL)
gUnknown_03002F70[i] = nullsub_8;
else
- gUnknown_03002F70[i] = bgTilemapBuffer;
+ gUnknown_03002F70[i] = NULL;
}
for (i = 0; i < 0x20; ++i)
@@ -567,19 +564,19 @@ u32 GetWindowAttribute(u8 windowId, u8 attributeId)
switch (attributeId)
{
case WINDOW_BG:
- return gWindows[windowId].window.bg;
+ return (u32)gWindows[windowId].window.bg;
case WINDOW_TILEMAP_LEFT:
- return gWindows[windowId].window.tilemapLeft;
+ return (u32)gWindows[windowId].window.tilemapLeft;
case WINDOW_TILEMAP_TOP:
- return gWindows[windowId].window.tilemapTop;
+ return (u32)gWindows[windowId].window.tilemapTop;
case WINDOW_WIDTH:
- return gWindows[windowId].window.width;
+ return (u32)gWindows[windowId].window.width;
case WINDOW_HEIGHT:
- return gWindows[windowId].window.height;
+ return (u32)gWindows[windowId].window.height;
case WINDOW_PALETTE_NUM:
- return gWindows[windowId].window.paletteNum;
+ return (u32)gWindows[windowId].window.paletteNum;
case WINDOW_BASE_BLOCK:
- return gWindows[windowId].window.baseBlock;
+ return (u32)gWindows[windowId].window.baseBlock;
case WINDOW_TILE_DATA:
return (u32)(gWindows[windowId].tileData);
default:
@@ -643,12 +640,9 @@ u16 AddWindow8Bit(const struct WindowTemplate *template)
}
return 0xFF;
}
- else
- {
- gWindows[windowId].tileData = memAddress;
- gWindows[windowId].window = *template;
- return windowId;
- }
+ gWindows[windowId].tileData = memAddress;
+ gWindows[windowId].window = *template;
+ return windowId;
}
void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue)