summaryrefslogtreecommitdiff
path: root/src/field_camera.c
diff options
context:
space:
mode:
authorJaceCearK1 <JaceCearK1@users.noreply.github.com>2017-07-01 21:04:18 +0200
committerGitHub <noreply@github.com>2017-07-01 21:04:18 +0200
commit0dd804a99e5455a0eac8ff6ed87d9de16c7380b7 (patch)
tree7b3567978b63ee6548a7b945e075ea8ba37bef51 /src/field_camera.c
parentf1344efd2aff92292f58f7323bd9297a38fe9b02 (diff)
parent8d82578d3a101b06f9d2ced31738021007c4e533 (diff)
Merge pull request #1 from pret/master
Update fork to match main fork.
Diffstat (limited to 'src/field_camera.c')
-rw-r--r--src/field_camera.c234
1 files changed, 111 insertions, 123 deletions
diff --git a/src/field_camera.c b/src/field_camera.c
index c55d8e2a3..1aed1549b 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -1,14 +1,12 @@
#include "global.h"
#include "field_camera.h"
-#include "asm.h"
#include "berry.h"
#include "field_player_avatar.h"
-#include "asm_fieldmap.h"
+#include "fieldmap.h"
+#include "rotating_gate.h"
#include "sprite.h"
#include "text.h"
-extern u16 gBGTilemapBuffers[4][0x400];
-
extern u8 gUnknown_0202E854;
@@ -27,16 +25,6 @@ extern s16 gUnknown_0300059A;
extern u8 gUnknown_0300059C;
extern void (*gUnknown_030005A0)(void);
-struct CameraSomething
-{
- void (*callback)(struct CameraSomething *);
- u32 unk4;
- s32 unk8;
- s32 unkC;
- s32 unk10;
- s32 unk14;
-};
-
extern struct CameraSomething gUnknown_03004880;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
@@ -91,8 +79,8 @@ void sub_8057A58(void)
*gBGVOffsetRegs[2] = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
*gBGHOffsetRegs[3] = gUnknown_03000590.unk0 + gUnknown_03000598;
*gBGVOffsetRegs[3] = gUnknown_03000590.unk1 + gUnknown_0300059A + 8;
-
- if(gUnknown_03000590.unk4)
+
+ if (gUnknown_03000590.unk4)
{
DmaCopy16(3, gBGTilemapBuffers[1], (void *)(VRAM + 0xE800), 0x800);
DmaCopy16(3, gBGTilemapBuffers[2], (void *)(VRAM + 0xE000), 0x800);
@@ -119,17 +107,17 @@ static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData)
u8 j;
u32 r6;
u8 temp;
-
- for(i = 0; i < 32; i += 2)
+
+ for (i = 0; i < 32; i += 2)
{
temp = gUnknown_03000590.unk3 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
r6 = temp * 32;
- for(j = 0; j < 32; j += 2)
+ for (j = 0; j < 32; j += 2)
{
temp = gUnknown_03000590.unk2 + j;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, r6 + temp, x + j / 2, y + i / 2);
}
@@ -139,14 +127,14 @@ static void DrawWholeMapViewInternal(int x, int y, struct MapData *mapData)
static void RedrawMapSlicesForCameraUpdate(struct UnknownStruct *a, int x, int y)
{
struct MapData *mapData = gMapHeader.mapData;
-
- if(x > 0)
+
+ if (x > 0)
RedrawMapSliceWest(a, mapData);
- if(x < 0)
+ if (x < 0)
RedrawMapSliceEast(a, mapData);
- if(y > 0)
+ if (y > 0)
RedrawMapSliceNorth(a, mapData);
- if(y < 0)
+ if (y < 0)
RedrawMapSliceSouth(a, mapData);
a->unk4 = TRUE;
}
@@ -156,15 +144,15 @@ static void RedrawMapSliceNorth(struct UnknownStruct *a, struct MapData *mapData
u8 i;
u8 temp;
u32 r7;
-
+
temp = a->unk3 + 28;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
r7 = temp * 32;
- for(i = 0; i < 32; i += 2)
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk2 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y + 14);
}
@@ -175,11 +163,11 @@ static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData
u8 i;
u8 temp;
u32 r7 = a->unk3 * 32;
-
- for(i = 0; i < 32; i += 2)
+
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk2 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1.pos.x + i / 2, gSaveBlock1.pos.y);
}
@@ -190,11 +178,11 @@ static void RedrawMapSliceEast(struct UnknownStruct *a, struct MapData *mapData)
u8 i;
u8 temp;
u32 r6 = a->unk2;
-
- for(i = 0; i < 32; i += 2)
+
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk3 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, temp * 32 + r6, gSaveBlock1.pos.x, gSaveBlock1.pos.y + i / 2);
}
@@ -205,13 +193,13 @@ static void RedrawMapSliceWest(struct UnknownStruct *a, struct MapData *mapData)
u8 i;
u8 temp;
u8 r5 = a->unk2 + 28;
-
- if(r5 >= 32)
+
+ if (r5 >= 32)
r5 -= 32;
- for(i = 0; i < 32; i += 2)
+ for (i = 0; i < 32; i += 2)
{
temp = a->unk3 + i;
- if(temp >= 32)
+ if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapData, temp * 32 + r5, gSaveBlock1.pos.x + 14, gSaveBlock1.pos.y + i / 2);
}
@@ -220,8 +208,8 @@ static void RedrawMapSliceWest(struct UnknownStruct *a, struct MapData *mapData)
void CurrentMapDrawMetatileAt(int a, int b)
{
int offset = MapPosToBgTilemapOffset(&gUnknown_03000590, a, b);
-
- if(offset >= 0)
+
+ if (offset >= 0)
{
DrawMetatileAt(gMapHeader.mapData, offset, a, b);
gUnknown_03000590.unk4 = TRUE;
@@ -231,8 +219,8 @@ void CurrentMapDrawMetatileAt(int a, int b)
void DrawDoorMetatileAt(int x, int y, u16 *arr)
{
int offset = MapPosToBgTilemapOffset(&gUnknown_03000590, x, y);
-
- if(offset >= 0)
+
+ if (offset >= 0)
{
DrawMetatile(1, arr, offset);
gUnknown_03000590.unk4 = TRUE;
@@ -243,10 +231,10 @@ static void DrawMetatileAt(struct MapData *mapData, u16 b, int c, int d)
{
u16 metatileId = MapGridGetMetatileIdAt(c, d);
u16 *metatiles;
-
- if(metatileId > 1024)
+
+ if (metatileId > 1024)
metatileId = 0;
- if(metatileId < 512)
+ if (metatileId < 512)
metatiles = mapData->primaryTileset->metatiles;
else
{
@@ -258,56 +246,56 @@ static void DrawMetatileAt(struct MapData *mapData, u16 b, int c, int d)
static void DrawMetatile(s32 a, u16 *b, u16 c)
{
- switch(a)
+ switch (a)
{
- case 2:
- gBGTilemapBuffers[3][c] = b[0];
- gBGTilemapBuffers[3][c + 1] = b[1];
- gBGTilemapBuffers[3][c + 0x20] = b[2];
- gBGTilemapBuffers[3][c + 0x21] = b[3];
-
- gBGTilemapBuffers[2][c] = 0;
- gBGTilemapBuffers[2][c + 1] = 0;
- gBGTilemapBuffers[2][c + 0x20] = 0;
- gBGTilemapBuffers[2][c + 0x21] = 0;
-
- gBGTilemapBuffers[1][c] = b[4];
- gBGTilemapBuffers[1][c + 1] = b[5];
- gBGTilemapBuffers[1][c + 0x20] = b[6];
- gBGTilemapBuffers[1][c + 0x21] = b[7];
- break;
- case 1:
- gBGTilemapBuffers[3][c] = b[0];
- gBGTilemapBuffers[3][c + 1] = b[1];
- gBGTilemapBuffers[3][c + 0x20] = b[2];
- gBGTilemapBuffers[3][c + 0x21] = b[3];
-
- gBGTilemapBuffers[2][c] = b[4];
- gBGTilemapBuffers[2][c + 1] = b[5];
- gBGTilemapBuffers[2][c + 0x20] = b[6];
- gBGTilemapBuffers[2][c + 0x21] = b[7];
-
- gBGTilemapBuffers[1][c] = 0;
- gBGTilemapBuffers[1][c + 1] = 0;
- gBGTilemapBuffers[1][c + 0x20] = 0;
- gBGTilemapBuffers[1][c + 0x21] = 0;
- break;
- case 0:
- gBGTilemapBuffers[3][c] = 0x3014;
- gBGTilemapBuffers[3][c + 1] = 0x3014;
- gBGTilemapBuffers[3][c + 0x20] = 0x3014;
- gBGTilemapBuffers[3][c + 0x21] = 0x3014;
-
- gBGTilemapBuffers[2][c] = b[0];
- gBGTilemapBuffers[2][c + 1] = b[1];
- gBGTilemapBuffers[2][c + 0x20] = b[2];
- gBGTilemapBuffers[2][c + 0x21] = b[3];
-
- gBGTilemapBuffers[1][c] = b[4];
- gBGTilemapBuffers[1][c + 1] = b[5];
- gBGTilemapBuffers[1][c + 0x20] = b[6];
- gBGTilemapBuffers[1][c + 0x21] = b[7];
- break;
+ case 2:
+ gBGTilemapBuffers[3][c] = b[0];
+ gBGTilemapBuffers[3][c + 1] = b[1];
+ gBGTilemapBuffers[3][c + 0x20] = b[2];
+ gBGTilemapBuffers[3][c + 0x21] = b[3];
+
+ gBGTilemapBuffers[2][c] = 0;
+ gBGTilemapBuffers[2][c + 1] = 0;
+ gBGTilemapBuffers[2][c + 0x20] = 0;
+ gBGTilemapBuffers[2][c + 0x21] = 0;
+
+ gBGTilemapBuffers[1][c] = b[4];
+ gBGTilemapBuffers[1][c + 1] = b[5];
+ gBGTilemapBuffers[1][c + 0x20] = b[6];
+ gBGTilemapBuffers[1][c + 0x21] = b[7];
+ break;
+ case 1:
+ gBGTilemapBuffers[3][c] = b[0];
+ gBGTilemapBuffers[3][c + 1] = b[1];
+ gBGTilemapBuffers[3][c + 0x20] = b[2];
+ gBGTilemapBuffers[3][c + 0x21] = b[3];
+
+ gBGTilemapBuffers[2][c] = b[4];
+ gBGTilemapBuffers[2][c + 1] = b[5];
+ gBGTilemapBuffers[2][c + 0x20] = b[6];
+ gBGTilemapBuffers[2][c + 0x21] = b[7];
+
+ gBGTilemapBuffers[1][c] = 0;
+ gBGTilemapBuffers[1][c + 1] = 0;
+ gBGTilemapBuffers[1][c + 0x20] = 0;
+ gBGTilemapBuffers[1][c + 0x21] = 0;
+ break;
+ case 0:
+ gBGTilemapBuffers[3][c] = 0x3014;
+ gBGTilemapBuffers[3][c + 1] = 0x3014;
+ gBGTilemapBuffers[3][c + 0x20] = 0x3014;
+ gBGTilemapBuffers[3][c + 0x21] = 0x3014;
+
+ gBGTilemapBuffers[2][c] = b[0];
+ gBGTilemapBuffers[2][c + 1] = b[1];
+ gBGTilemapBuffers[2][c + 0x20] = b[2];
+ gBGTilemapBuffers[2][c + 0x21] = b[3];
+
+ gBGTilemapBuffers[1][c] = b[4];
+ gBGTilemapBuffers[1][c + 1] = b[5];
+ gBGTilemapBuffers[1][c + 0x20] = b[6];
+ gBGTilemapBuffers[1][c + 0x21] = b[7];
+ break;
}
}
@@ -315,25 +303,25 @@ static s32 MapPosToBgTilemapOffset(struct UnknownStruct *a, s32 x, s32 y)
{
x -= gSaveBlock1.pos.x;
x *= 2;
- if(x >= 32 || x < 0)
+ if (x >= 32 || x < 0)
return -1;
x = x + a->unk2;
- if(x >= 32)
+ if (x >= 32)
x -= 32;
-
+
y = (y - gSaveBlock1.pos.y) * 2;
- if(y >= 32 || y < 0)
+ if (y >= 32 || y < 0)
return -1;
y = y + a->unk3;
- if(y >= 32)
+ if (y >= 32)
y -= 32;
-
+
return y * 32 + x;
}
static void CameraUpdateCallback(struct CameraSomething *a)
{
- if(a->unk4 != 0)
+ if (a->unk4 != 0)
{
a->unk8 = gSprites[a->unk4].data2;
a->unkC = gSprites[a->unk4].data3;
@@ -352,7 +340,7 @@ void ResetCameraUpdateInfo(void)
u32 InitCameraUpdateCallback(u8 a)
{
- if(gUnknown_03004880.unk4 != 0)
+ if (gUnknown_03004880.unk4 != 0)
DestroySprite(&gSprites[gUnknown_03004880.unk4]);
gUnknown_03004880.unk4 = AddCameraObject(a);
gUnknown_03004880.callback = CameraUpdateCallback;
@@ -367,8 +355,8 @@ void CameraUpdate(void)
int r1;
int r7;
int r8;
-
- if(gUnknown_03004880.callback != NULL)
+
+ if (gUnknown_03004880.callback != NULL)
gUnknown_03004880.callback(&gUnknown_03004880);
r7 = gUnknown_03004880.unk8;
r8 = gUnknown_03004880.unkC;
@@ -376,43 +364,43 @@ void CameraUpdate(void)
deltaY = 0;
r1 = gUnknown_03004880.unk10;
r0 = gUnknown_03004880.unk14;
-
-
- if(r1 == 0 && r7 != 0)
+
+
+ if (r1 == 0 && r7 != 0)
{
- if(r7 > 0)
+ if (r7 > 0)
deltaX = 1;
else
deltaX = -1;
}
- if(r0 == 0 && r8 != 0)
+ if (r0 == 0 && r8 != 0)
{
- if(r8 > 0)
+ if (r8 > 0)
deltaY = 1;
else
deltaY = -1;
}
- if(r1 != 0 && r1 == -r7)
+ if (r1 != 0 && r1 == -r7)
{
- if(r7 > 0)
+ if (r7 > 0)
deltaX = 1;
else
deltaX = -1;
}
- if(r0 != 0 && r0 == -r8)
+ if (r0 != 0 && r0 == -r8)
{
- if(r8 > 0)
+ if (r8 > 0)
deltaX = 1;
else
deltaX = -1;
}
-
+
gUnknown_03004880.unk10 += r7;
- gUnknown_03004880.unk10 = gUnknown_03004880.unk10 - 16 * (gUnknown_03004880.unk10 / 16);
+ gUnknown_03004880.unk10 = gUnknown_03004880.unk10 - 16 * (gUnknown_03004880.unk10 / 16);
gUnknown_03004880.unk14 += r8;
gUnknown_03004880.unk14 = gUnknown_03004880.unk14 - 16 * (gUnknown_03004880.unk14 / 16);
-
- if(deltaX != 0 || deltaY != 0)
+
+ if (deltaX != 0 || deltaY != 0)
{
CameraMove(deltaX, deltaY);
UpdateFieldObjectsForCameraUpdate(deltaX, deltaY);
@@ -421,7 +409,7 @@ void CameraUpdate(void)
tilemap_move_something(&gUnknown_03000590, deltaX * 2, deltaY * 2);
RedrawMapSlicesForCameraUpdate(&gUnknown_03000590, deltaX * 2, deltaY * 2);
}
-
+
coords8_add(&gUnknown_03000590, r7, r8);
gUnknown_0300489C -= r7;
gUnknown_03004898 -= r8;
@@ -467,7 +455,7 @@ void UpdateCameraPanning(void)
static void CameraPanningCB_PanAhead(void)
{
u8 var;
-
+
if (gUnknown_0202E854 == 0)
{
InstallCameraPanAheadCallback();
@@ -484,7 +472,7 @@ static void CameraPanningCB_PanAhead(void)
{
gUnknown_0300059C = 0;
}
-
+
var = player_get_direction_upper_nybble();
if (var == 2)
{