summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>2021-11-11 04:16:44 +0000
committerGitHub <noreply@github.com>2021-11-10 23:16:44 -0500
commit30ff2e12b092d33fb9c4fcffcc3fe88cae3d6a3b (patch)
treeea645602ce427c35f00755ba61b76dca9bd32916 /src
parent304bfa443e6b33e6027b4f0c116bf5a7a3ff3c2f (diff)
guS2DInitBg OK (#426)
Diffstat (limited to 'src')
-rw-r--r--src/boot_O2_g3/idle.c1
-rw-r--r--src/libultra/gu/guS2DInitBg.c24
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;
+ }
+}