summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMichael Panzlaff <michael.panzlaff@fau.de>2020-05-09 14:49:51 +0200
committerMichael Panzlaff <michael.panzlaff@fau.de>2020-07-05 18:09:59 +0200
commit3264cf697f5fe996c2a79c6c34181c186fe2f96e (patch)
tree919e94607188da2a6e561f41dfba39e3a7558b24 /include
parent46f4a4bbf7239743c333cd32d30b74a7b3176acc (diff)
fix aggressive loop optimizations
Previously, aggressive loop optimizations with a new compiler were not possible due to undefined behaviour at end of arrays. A macro "UBFIX" is added to allow ifdefs for fixes which resolve undefined behavior. For example newer GCC versions will detect various bugs in the original game code and will otherwise not compile with -Werror.
Diffstat (limited to 'include')
-rw-r--r--include/config.h8
-rw-r--r--include/global.tv.h7
2 files changed, 15 insertions, 0 deletions
diff --git a/include/config.h b/include/config.h
index 318ed39d8..4f97a12a3 100644
--- a/include/config.h
+++ b/include/config.h
@@ -26,4 +26,12 @@
#define UNITS_METRIC
#endif
+// Various undefined behavior bugs may or may not prevent compilation with
+// newer compilers. So always fix them when using a modern compiler.
+#if MODERN
+#ifndef UBFIX
+#define UBFIX
+#endif
+#endif
+
#endif // GUARD_CONFIG_H
diff --git a/include/global.tv.h b/include/global.tv.h
index 34791d43c..ba1c3c37e 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -18,6 +18,13 @@ typedef union // size = 0x24
/*0x23*/ u8 trainerIdHi;
} common;
+ // Common init (used for initialization loop)
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 pad02[34];
+ } commonInit;
+
// Local shows
// TVSHOW_FAN_CLUB_LETTER
struct {