summaryrefslogtreecommitdiff
path: root/include/global.h
diff options
context:
space:
mode:
authorpaul <nintendo6496@googlemail.com>2018-10-06 17:51:44 +0200
committerpaul <nintendo6496@googlemail.com>2018-10-06 17:51:44 +0200
commit0aa555d13499fb5f446b5c42d3d7c5166225edc4 (patch)
tree7a73f77a735323c7967cc80d056b070b2fd687c7 /include/global.h
parentefebe909c604beff57c7e2481a0de83dfe084d21 (diff)
parent2cb551cf0df29e2602d6a80c16f8bac0a136b134 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'include/global.h')
-rw-r--r--include/global.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/include/global.h b/include/global.h
index dd466678d..75911b9f2 100644
--- a/include/global.h
+++ b/include/global.h
@@ -31,6 +31,24 @@ char* strcpy(char *dst0, const char *src0);
#define POKEMON_NAME_LENGTH 10
#define OT_NAME_LENGTH 7
+// There are many quirks in the source code which have overarching behavioral differences from
+// a number of other files. For example, diploma.c seems to declare rodata before each use while
+// other files declare out of order and must be at the beginning. There are also a number of
+// macros which differ from one file to the next due to the method of obtaining the result, such
+// as these below. Because of this, there is a theory (Two Team Theory) that states that these
+// programming projects had more than 1 "programming team" which utilized different macros for
+// each of the files that were worked on.
+#define T1_READ_8(ptr) ((ptr)[0])
+#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24))
+#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr)
+
+// T2_READ_8 is a duplicate to remain consistent with each group.
+#define T2_READ_8(ptr) ((ptr)[0])
+#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
+#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+
extern u8 gStringVar1[];
extern u8 gStringVar2[];
extern u8 gStringVar3[];
@@ -456,7 +474,11 @@ struct RecordMixingDayCareMail
struct SaveBlock1
{
- /*0x0000*/ u8 filler[0x3A4C];
+ /*0x0000*/ u8 filler[0x4];
+ /*0x0004*/ struct WarpData location;
+ /*0x000C*/ u8 fillerC[0x3610];
+ /*0x361C*/ struct RamScript ramScript;
+ /*0x3A08*/ u8 filler3A08[0x44];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
};