diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-30 08:46:36 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-30 08:46:36 -0400 |
commit | f6a55433a2d93898b03e3ee3a65a2061ceda6a9a (patch) | |
tree | 4b012f31a56b7365ed168378cbbe81399fe18b77 /src | |
parent | 474df271368917b79071ab101c36857fcab72c4b (diff) |
through sub_81237B4
Diffstat (limited to 'src')
-rw-r--r-- | src/region_map.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/region_map.c b/src/region_map.c index c4d15a8ac..0a2da354a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -3,6 +3,7 @@ #include "global.h" #include "main.h" #include "menu.h" +#include "gpu_regs.h" #include "palette.h" #include "trig.h" #include "region_map.h" @@ -454,17 +455,40 @@ void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, s32 var4; gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; - gRegionMap->bg2pb = e * -gSineTable[rotation] >> 8; - gRegionMap->bg2pc = f * gSineTable[rotation] >> 8; + gRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; + gRegionMap->bg2pb = f * gSineTable[rotation] >> 8; gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; var1 = (scrollX << 8) + (c << 8); - var2 = d * gRegionMap->bg2pc + gRegionMap->bg2pa * c; + var2 = d * gRegionMap->bg2pb + gRegionMap->bg2pa * c; gRegionMap->bg2x = var1 - var2; var3 = (scrollY << 8) + (d << 8); - var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pb * c; + var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pc * c; gRegionMap->bg2y = var3 - var4; gRegionMap->needUpdateVideoRegs = TRUE; } + +void sub_812378C(s16 x, s16 y) +{ + gRegionMap->bg2x = (x << 8) + 0x1c00; + gRegionMap->bg2y = (y << 8) + 0x2400; + gRegionMap->needUpdateVideoRegs = TRUE; +} + +void sub_81237B4(void) +{ + if (gRegionMap->needUpdateVideoRegs) + { + SetGpuReg(REG_OFFSET_BG2PA, gRegionMap->bg2pa); + SetGpuReg(REG_OFFSET_BG2PB, gRegionMap->bg2pb); + SetGpuReg(REG_OFFSET_BG2PC, gRegionMap->bg2pc); + SetGpuReg(REG_OFFSET_BG2PD, gRegionMap->bg2pd); + SetGpuReg(REG_OFFSET_BG2X_L, gRegionMap->bg2x); + SetGpuReg(REG_OFFSET_BG2X_H, gRegionMap->bg2x >> 16); + SetGpuReg(REG_OFFSET_BG2Y_L, gRegionMap->bg2y); + SetGpuReg(REG_OFFSET_BG2Y_H, gRegionMap->bg2y >> 16); + gRegionMap->needUpdateVideoRegs = FALSE; + } +} |