diff options
| author | EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> | 2021-11-11 04:16:44 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-10 23:16:44 -0500 |
| commit | 30ff2e12b092d33fb9c4fcffcc3fe88cae3d6a3b (patch) | |
| tree | ea645602ce427c35f00755ba61b76dca9bd32916 /src | |
| parent | 304bfa443e6b33e6027b4f0c116bf5a7a3ff3c2f (diff) | |
guS2DInitBg OK (#426)
Diffstat (limited to 'src')
| -rw-r--r-- | src/boot_O2_g3/idle.c | 1 | ||||
| -rw-r--r-- | src/libultra/gu/guS2DInitBg.c | 24 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c index 4be8a1094..f2cded98c 100644 --- a/src/boot_O2_g3/idle.c +++ b/src/boot_O2_g3/idle.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" u8 D_80096B20 = 1; diff --git a/src/libultra/gu/guS2DInitBg.c b/src/libultra/gu/guS2DInitBg.c index f4a2606e4..d2e5a2b04 100644 --- a/src/libultra/gu/guS2DInitBg.c +++ b/src/libultra/gu/guS2DInitBg.c @@ -1,3 +1,25 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/guS2DInitBg/guS2DInitBg.s") +void guS2DInitBg(uObjBg* bg) { + u32 size; + s32 tmem = (bg->b.imageFmt == G_IM_FMT_CI) ? 0x100 : 0x200; + u16 shift = (6 - bg->b.imageSiz); + + if (bg->b.imageLoad == G_BGLT_LOADBLOCK) { + bg->b.tmemW = bg->b.imageW >> shift; + bg->b.tmemH = (tmem / bg->b.tmemW) * 4; + bg->b.tmemSizeW = bg->b.tmemW * 2; + bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW; + bg->b.tmemLoadSH = (bg->b.tmemSize >> 1) - 1; + bg->b.tmemLoadTH = (0x7FF / bg->b.tmemW) + 1; + } else { // G_BGLT_LOADTILE + bg->b.tmemW = (bg->b.frameW >> shift) + 3; + bg->b.tmemH = (tmem / bg->b.tmemW) * 4; + bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2; + + size = bg->b.tmemH * bg->b.tmemSizeW; + bg->b.tmemSize = (size >> 16); + bg->b.tmemLoadSH = (size >> 0) & 0xFFFF; + bg->b.tmemLoadTH = bg->b.tmemH - 1; + } +} |
