add map namespace macro M(sym)

This commit is contained in:
Alex Bates 2020-10-21 03:37:42 +01:00
parent 9de4cebb79
commit 6474bf4704
No known key found for this signature in database
GPG Key ID: 5E11C2DB78877706
4 changed files with 49 additions and 46 deletions

View File

@ -104,7 +104,7 @@ ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES EXPAND_ONLY_PREDEF = YES
PREDEFINED = DOXYGEN NON_MATCHING __attribute__((x))= PREDEFINED = DOXYGEN NON_MATCHING __attribute__((x))=
EXPAND_AS_DEFINED = INCLUDE_ASM UNK_TYPE UNK_PTR UNK_RET UNK_FUN_ARG UNK_FUN_PTR UNK_ARGS EXPAND_AS_DEFINED = INCLUDE_ASM UNK_TYPE UNK_PTR UNK_RET UNK_FUN_ARG UNK_FUN_PTR UNK_ARGS M
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES

View File

@ -1,37 +1,33 @@
#include "kmr_12.h" #include "kmr_12.h"
static Script make_entities; Script M(ExitWest) = EXIT_WALK_SCRIPT(60, 0, "kmr_07", 1);
static Script read_west_sign; Script M(ExitEast) = EXIT_WALK_SCRIPT(60, 1, "kmr_11", 0);
static NpcGroupList npc_groups;
static Script exit_west = EXIT_WALK_SCRIPT(60, 0, "kmr_07", 1); Script M(BindExits) = {
static Script exit_east = EXIT_WALK_SCRIPT(60, 1, "kmr_11", 0); SI_BIND(M(ExitWest), TriggerFlag_FLOOR_ABOVE, 0 /* deili1 */, NULL),
SI_BIND(M(ExitEast), TriggerFlag_FLOOR_ABOVE, 3 /* deili2 */, NULL),
static Script bind_exits = {
SI_BIND(exit_west, TriggerFlag_FLOOR_ABOVE, 0 /* deili1 */, NULL),
SI_BIND(exit_east, TriggerFlag_FLOOR_ABOVE, 3 /* deili2 */, NULL),
SI_RETURN(), SI_RETURN(),
SI_END(), SI_END(),
}; };
Script kmr_12_main = { Script M(Main) = {
SI_SET(SI_SAVE_VAR(425), 31), SI_SET(SI_SAVE_VAR(425), 31),
SI_CALL(SetSpriteShading, -1), SI_CALL(SetSpriteShading, -1),
SI_CALL(SetCamPerspective, 0, 3, 25, 16, 4096), SI_CALL(SetCamPerspective, 0, 3, 25, 16, 4096),
SI_CALL(SetCamBGColor, 0, 0, 0, 0), SI_CALL(SetCamBGColor, 0, 0, 0, 0),
SI_CALL(SetCamEnabled, 0, 1), SI_CALL(SetCamEnabled, 0, 1),
SI_CALL(MakeNpcs, 0, npc_groups), SI_CALL(MakeNpcs, 0, M(npcGroupList)),
SI_EXEC_WAIT(make_entities), SI_EXEC_WAIT(M(MakeEntities)),
SI_EXEC(kmr_12_play_music), SI_EXEC(M(PlayMusic)),
SI_SET(SI_VAR(0), bind_exits), SI_SET(SI_VAR(0), M(BindExits)),
SI_EXEC(EnterWalk), SI_EXEC(EnterWalk),
SI_WAIT_FRAMES(1), SI_WAIT_FRAMES(1),
SI_BIND(read_west_sign, TriggerFlag_WALL_INTERACT, 10, NULL), SI_BIND(M(ReadWestSign), TriggerFlag_WALL_INTERACT, 10, NULL),
SI_RETURN(), SI_RETURN(),
SI_END(), SI_END(),
}; };
static NpcAISettings goomba_ai_settings = { NpcAISettings M(goombaAISettings) = {
.moveSpeed = 1.5f, .moveSpeed = 1.5f,
.moveTime = 30, .moveTime = 30,
.waitTime = 30, .waitTime = 30,
@ -46,16 +42,16 @@ static NpcAISettings goomba_ai_settings = {
.unk_2C = TRUE, .unk_2C = TRUE,
}; };
static Script goomba_ai = { Script M(GoombaAI) = {
SI_CALL(DoBasicAI, &goomba_ai_settings), SI_CALL(DoBasicAI, &M(goombaAISettings)),
SI_RETURN(), SI_RETURN(),
SI_END(), SI_END(),
}; };
static NpcSettings goomba_npc_settings = { NpcSettings M(GoombaNpcSettings) = {
.height = 20, .height = 20,
.radius = 23, .radius = 23,
.ai = &goomba_ai, .ai = &M(GoombaAI),
.onHit = EnemyNpcHit, .onHit = EnemyNpcHit,
.onDefeat = EnemyNpcDefeat, .onDefeat = EnemyNpcDefeat,
.level = 5, .level = 5,
@ -63,7 +59,7 @@ static NpcSettings goomba_npc_settings = {
// *INDENT-OFF* // *INDENT-OFF*
/// @bug The RETURN command is after the END command, so this script will never terminate. /// @bug The RETURN command is after the END command, so this script will never terminate.
static Script read_west_sign = { Script M(ReadWestSign) = {
SI_GROUP(0), SI_GROUP(0),
// "Eat a Mushroom to regain your energy!" // "Eat a Mushroom to regain your energy!"
@ -73,7 +69,7 @@ static Script read_west_sign = {
SI_RESUME_GROUP(1), SI_RESUME_GROUP(1),
SI_SET(SI_FLAG(0), FALSE), SI_SET(SI_FLAG(0), FALSE),
SI_CALL(kmr_12_get_goomba_ref), SI_CALL(M(GetGoomba)),
SI_IF_NE(SI_VAR(0), FALSE), SI_IF_NE(SI_VAR(0), FALSE),
SI_CALL(GetNpcVar, NpcId_GOOMBA, 0, SI_VAR(0)), SI_CALL(GetNpcVar, NpcId_GOOMBA, 0, SI_VAR(0)),
SI_IF_EQ(SI_VAR(0), FALSE), SI_IF_EQ(SI_VAR(0), FALSE),
@ -92,7 +88,7 @@ static Script read_west_sign = {
SI_RETURN(), SI_RETURN(),
}; };
static Script goomba_idle = { Script M(GoombaIdle) = {
SI_WAIT_FRAMES(1), SI_WAIT_FRAMES(1),
SI_CALL(SetSelfVar, 0, FALSE), SI_CALL(SetSelfVar, 0, FALSE),
@ -142,28 +138,28 @@ static Script goomba_idle = {
SI_CALL(SetSelfEnemyFlagBits, 0x40000000, TRUE), SI_CALL(SetSelfEnemyFlagBits, 0x40000000, TRUE),
// We're done jumping off; the player can read the sign again // We're done jumping off; the player can read the sign again
SI_BIND(read_west_sign, TriggerFlag_WALL_INTERACT, 10, NULL), SI_BIND(M(ReadWestSign), TriggerFlag_WALL_INTERACT, 10, NULL),
// Behave like a normal enemy from now on // Behave like a normal enemy from now on
SI_CALL(BindNpcAI, NpcId_SELF, &goomba_ai), SI_CALL(BindNpcAI, NpcId_SELF, &M(GoombaAI)),
SI_RETURN(), SI_RETURN(),
SI_END(), SI_END(),
}; };
static Script goomba_init = { Script M(GoombaInit) = {
SI_CALL(BindNpcIdle, NpcId_SELF, &goomba_idle), SI_CALL(BindNpcIdle, NpcId_SELF, &M(GoombaIdle)),
SI_RETURN(), SI_RETURN(),
SI_END(), SI_END(),
}; };
// *INDENT-ON* // *INDENT-ON*
static StaticNpc goomba_npc = { StaticNpc M(GoombaNPC) = {
.id = NpcId_GOOMBA, .id = NpcId_GOOMBA,
.settings = &goomba_npc_settings, .settings = &M(GoombaNpcSettings),
.pos = { -33.0f, 30.0f, -25.0f }, .pos = { -33.0f, 30.0f, -25.0f },
.flags = 0x00000C00, .flags = 0x00000C00,
.init = goomba_init, .init = M(GoombaInit),
.yaw = 90, .yaw = 90,
.dropFlags = 0x80, .dropFlags = 0x80,
.itemDropChance = 5, .itemDropChance = 5,
@ -204,13 +200,13 @@ static StaticNpc goomba_npc = {
}, },
}; };
static NpcGroupList npc_groups = { NpcGroupList M(npcGroupList) = {
NPC_GROUP(goomba_npc, FORMATION_ID(1, 0, 3)), NPC_GROUP(M(GoombaNPC), FORMATION_ID(1, 0, 3)),
NPC_GROUP_LIST_END(), NPC_GROUP_LIST_END(),
}; };
// *INDENT-OFF* // *INDENT-OFF*
static Script read_east_sign = { Script M(ReadEastSign) = {
SI_CALL(func_800441F0, SI_VAR(0)), SI_CALL(func_800441F0, SI_VAR(0)),
SI_IF_EQ(SI_VAR(0), 1), SI_IF_EQ(SI_VAR(0), 1),
SI_RETURN(), SI_RETURN(),
@ -228,9 +224,9 @@ static Script read_east_sign = {
SI_END(), SI_END(),
}; };
static Script make_entities = { Script M(MakeEntities) = {
SI_CALL(MakeEntity, 0x802EAFDC, 436, 0, -42, 0, 0x80000000), SI_CALL(MakeEntity, 0x802EAFDC, 436, 0, -42, 0, 0x80000000),
SI_CALL(AssignScript, &read_east_sign), SI_CALL(AssignScript, &M(ReadEastSign)),
SI_RETURN(), SI_RETURN(),
SI_END(), SI_END(),

View File

@ -1,25 +1,25 @@
#include "kmr_12.h" #include "kmr_12.h"
static EntryList entryList = { EntryList M(entryList) = {
{ -126.0f, 0.0f, 12.0f, 90.0f }, // west, towards Red/Blue Goomba miniboss room { -126.0f, 0.0f, 12.0f, 90.0f }, // west, towards Red/Blue Goomba miniboss room
{ 471.0f, 0.0f, 12.0f, 270.0f }, // east, towards Goomba King's Fortress { 471.0f, 0.0f, 12.0f, 270.0f }, // east, towards Goomba King's Fortress
}; };
MapConfig config = { MapConfig M(config) = {
.main = kmr_12_main, .main = M(Main),
.entryList = entryList, .entryList = M(entryList),
.entryCount = ENTRY_COUNT(entryList), .entryCount = ENTRY_COUNT(M(entryList)),
.background = &gBackgroundImage, .background = &gBackgroundImage,
.tattle = MessageID_TATTLE_KMR_12, .tattle = MessageID_TATTLE_KMR_12,
}; };
Script kmr_12_play_music = { Script M(PlayMusic) = {
SI_CALL(SetMusicTrack, 0, Song_PLEASANT_PATH, 0, 8), SI_CALL(SetMusicTrack, 0, Song_PLEASANT_PATH, 0, 8),
SI_RETURN(), SI_RETURN(),
SI_END(), SI_END(),
}; };
ApiStatus kmr_12_get_goomba_ref(ScriptInstance* script, s32 isInitialCall) { ApiStatus M(GetGoomba)(ScriptInstance* script, s32 isInitialCall) {
script->varTable[0] = get_enemy_safe(NpcId_GOOMBA); script->varTable[0] = get_enemy_safe(NpcId_GOOMBA);
return ApiStatus_DONE2; return ApiStatus_DONE2;
} }

View File

@ -1,8 +1,15 @@
#include "common.h" #include "common.h"
#include "map.h" #include "map.h"
#define M(sym) kmr_12 ## _ ## sym
#define NpcId_GOOMBA 0 #define NpcId_GOOMBA 0
Script kmr_12_main; ApiStatus M(GetGoomba)(ScriptInstance* script, s32 isInitialCall);
Script kmr_12_play_music;
ApiStatus kmr_12_get_goomba_ref(ScriptInstance* script, s32 isInitialCall); Script M(Main);
Script M(PlayMusic);
Script M(MakeEntities);
Script M(ReadWestSign);
NpcGroupList M(npcGroupList);