blob: bb2f50ae829747846791b8f917b72c7d0467298e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include "ultra64/ultratypes.h"
#include "ultra64/gbi.h"
#include "ultra64/gs2dex.h"
void guS2DInitBg(uObjBg* bg) {
u16 tmem = (bg->b.imageFmt == G_IM_FMT_CI) ? 0x100 : 0x200;
u16 shift = 6 - bg->b.imageSiz;
u32 tsize;
if (bg->b.imageLoad == G_BGLT_LOADBLOCK) {
bg->b.tmemW = bg->b.imageW >> shift;
bg->b.tmemH = (tmem / bg->b.tmemW) << 2;
bg->b.tmemSizeW = bg->b.tmemW << 1;
bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW;
bg->b.tmemLoadSH = (bg->b.tmemSize >> 1) - 1;
bg->b.tmemLoadTH = GS_CALC_DXT(bg->b.tmemW);
} else { // G_BGLT_LOADTILE
bg->b.tmemW = (bg->b.frameW >> shift) + 3;
bg->b.tmemH = (tmem / bg->b.tmemW) << 2;
bg->b.tmemSizeW = (bg->b.imageW >> shift) << 1;
tsize = bg->b.tmemH * bg->b.tmemSizeW;
bg->b.tmemSize = tsize >> 16;
bg->b.tmemLoadSH = tsize & 0xFFFF;
bg->b.tmemLoadTH = bg->b.tmemH - 1;
}
}
|