From ec8bd3e1ae2872c7dd564aaa687092556ec3e8da Mon Sep 17 00:00:00 2001 From: Rangi Date: Mon, 15 Dec 2025 15:43:39 -0500 Subject: [PATCH] Verify that only one of each `callback` type exists per map Fixes #1213 --- constants/map_setup_constants.asm | 1 + macros/scripts/maps.asm | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/constants/map_setup_constants.asm b/constants/map_setup_constants.asm index 0291f3f8..f85e80ea 100644 --- a/constants/map_setup_constants.asm +++ b/constants/map_setup_constants.asm @@ -21,6 +21,7 @@ DEF NUM_MAPSETUP_SCRIPTS EQU const_value - $f1 const MAPCALLBACK_CMDQUEUE const MAPCALLBACK_SPRITES const MAPCALLBACK_NEWMAP +DEF NUM_MAPCALLBACK_TYPES EQU const_value - 1 ; see data/maps/setup_script_pointers.asm DEF MAPSETUPSCRIPT_HAS_PARAM_F EQU 7 diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm index fe487d1a..521d652e 100644 --- a/macros/scripts/maps.asm +++ b/macros/scripts/maps.asm @@ -39,11 +39,17 @@ MACRO def_callbacks REDEF _NUM_CALLBACKS EQUS "_NUM_CALLBACKS_\@" db {_NUM_CALLBACKS} DEF {_NUM_CALLBACKS} = 0 + for x, 1, NUM_MAPCALLBACK_TYPES + 1 + DEF map_callback_{d:x} = 0 + endr ENDM MACRO callback ;\1: type: a MAPCALLBACK_* constant ;\2: script pointer + DEF x = \1 + assert !map_callback_{d:x}, "Already defined a `callback \1` for this map" + DEF map_callback_{d:x} = 1 dbw \1, \2 DEF {_NUM_CALLBACKS} += 1 ENDM