summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2023-05-04 00:43:27 -0400
committerGitHub <noreply@github.com>2023-05-04 00:43:27 -0400
commiteaf682dc0596a6b12bab32b2498657ecd38b0895 (patch)
tree38090364040b67ff9fad4f4e33fd5b7dafb0ba72 /src/code
parentfc3da8451ac4270bbe2f63102010d6726c562240 (diff)
Transition table (#1210)
* transition_table.h * format * Update include/tables/transition_table.h Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * review * review * bss --------- Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Diffstat (limited to 'src/code')
-rw-r--r--src/code/sched.c1
-rw-r--r--src/code/z_fbdemo_dlftbls.c46
2 files changed, 28 insertions, 19 deletions
diff --git a/src/code/sched.c b/src/code/sched.c
index 98b005ba1..c2630677c 100644
--- a/src/code/sched.c
+++ b/src/code/sched.c
@@ -1,3 +1,4 @@
+#include "prevent_bss_reordering.h"
#include "global.h"
#include "stackcheck.h"
diff --git a/src/code/z_fbdemo_dlftbls.c b/src/code/z_fbdemo_dlftbls.c
index 9d3685a45..48d424813 100644
--- a/src/code/z_fbdemo_dlftbls.c
+++ b/src/code/z_fbdemo_dlftbls.c
@@ -1,30 +1,38 @@
#include "global.h"
-#include "initvars.h"
-#include "overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h"
-#include "overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h"
-#include "overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h"
-#include "overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h"
-#include "overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h"
-#define TRANSITION_OVERLAY(name, filename) \
- { \
- { 0, 0 }, SEGMENT_START(ovl_##filename), SEGMENT_END(ovl_##filename), SEGMENT_ROM_START(ovl_##filename), \
- SEGMENT_ROM_END(ovl_##filename), &name##_InitVars, sizeof(name) \
- }
+// InitVars and Linker symbol declarations (used in the table below)
+#define DEFINE_TRANSITION(_enumValue, structName, _instanceName, name) \
+ extern TransitionInit structName##_InitVars; \
+ DECLARE_OVERLAY_SEGMENT(name)
-#define TRANSITION_OVERLAY_INTERNAL(name) \
- { { 0, 0 }, NULL, NULL, 0, 0, &name##_InitVars, sizeof(name) }
+#define DEFINE_TRANSITION_INTERNAL(_enumValue, structName, _instanceName) extern TransitionInit structName##_InitVars;
-#define TRANSITION_OVERLAY_UNSET \
- { 0 }
+#include "tables/transition_table.h"
+
+#undef DEFINE_TRANSITION
+#undef DEFINE_TRANSITION_INTERNAL
+
+#define DEFINE_TRANSITION(_enumValue, structName, _instanceName, name) \
+ { \
+ { 0, 0 }, \
+ SEGMENT_START(ovl_##name), \
+ SEGMENT_END(ovl_##name), \
+ SEGMENT_ROM_START(ovl_##name), \
+ SEGMENT_ROM_END(ovl_##name), \
+ &structName##_InitVars, \
+ sizeof(structName), \
+ },
+
+#define DEFINE_TRANSITION_INTERNAL(_enumValue, structName, _instanceName) \
+ { { 0, 0 }, NULL, NULL, 0, 0, &structName##_InitVars, sizeof(structName) },
TransitionOverlay gTransitionOverlayTable[] = {
- TRANSITION_OVERLAY_INTERNAL(TransitionFade), TRANSITION_OVERLAY(TransitionTriforce, fbdemo_triforce),
- TRANSITION_OVERLAY(TransitionWipe1, fbdemo_wipe1), TRANSITION_OVERLAY(TransitionWipe3, fbdemo_wipe3),
- TRANSITION_OVERLAY(TransitionWipe4, fbdemo_wipe4), TRANSITION_OVERLAY_INTERNAL(TransitionCircle),
- TRANSITION_OVERLAY(TransitionWipe5, fbdemo_wipe5),
+#include "tables/transition_table.h"
};
+#undef DEFINE_TRANSITION
+#undef DEFINE_TRANSITION_INTERNAL
+
void Transition_Init(TransitionContext* transitionCtx) {
TransitionOverlay* overlayEntry;
ptrdiff_t relocOffset;