#ifndef SYSTEM_PARTICLES_HPP #define SYSTEM_PARTICLES_HPP #include #include // Header fabricated extern bool gParticleFlagLoaded[0x201]; extern JPAResourceManager* gpResourceManager; // fabricated inline static void SMS_LoadParticle(const char* path, u16 id) { if (!gParticleFlagLoaded[id]) { gpResourceManager->load(path, id); gParticleFlagLoaded[id] = true; } } // Actual, real funcs!!!!!!!! // TODO: fill in the enums with particle IDs enum E_SMS_EFFECT_ONETIME_NORMAL /* 0 */ { PARTICLE_MS_M_ROCKET_A = 0x1, PARTICLE_MS_M_ROCKET_B = 0x2, PARTICLE_MS_M_ROCKET_B2 = 0x3, PARTICLE_MS_M_ROCKET_C = 0x4, PARTICLE_MS_M_ROCKET_D = 0x5, PARTICLE_MS_FUMI_A = 0x7, PARTICLE_MS_FUMI_B = 0x8, PARTICLE_MS_FUMI_C = 0x9, PARTICLE_MS_DMG_A = 0xA, PARTICLE_MS_DMG_B = 0xB, PARTICLE_MS_DMG_C = 0xC, PARTICLE_MS_ASE = 0xD, PARTICLE_MS_ITEMGET1_A = 0xE, PARTICLE_MS_ITEMGET1_B = 0xF, PARTICLE_MS_JUMP_ED_A = 0x10, PARTICLE_MS_JUMP_ED_B = 0x11, PARTICLE_MS_HIPDROP_A = 0x12, PARTICLE_MS_HIPDROP_B = 0x13, PARTICLE_MS_HIPDROP_C = 0x14, PARTICLE_MS_MARIWALK1_A = 0x15, PARTICLE_MS_MARIWALK1_B = 0x16, PARTICLE_MS_MARIWALK1_C = 0x17, PARTICLE_MS_WALLKICK_A = 0x18, PARTICLE_MS_WALLKICK_B = 0x19, MAP_MAP_GATE_MS_MARIOWP_BODY = 0x1A, MAP_MAP_GATE_MS_MARIOWP_HEAD = 0x1B, MAP_MAP_GATE_MS_MARIOWP_CAP = 0x1C, MAP_MAP_GATE_MS_MARIOWP_RHAND = 0x1D, MAP_MAP_GATE_MS_MARIOWP_LHAND = 0x1E, MAP_MAP_GATE_MS_MARIOWP_RLEG = 0x1F, MAP_MAP_GATE_MS_MARIOWP_RFOOT = 0x20, MAP_MAP_GATE_MS_MARIOWP_LLEG = 0x21, MAP_MAP_GATE_MS_MARIOWP_LFOOT = 0x22, MAP_MAP_GATE_MS_MARIOWP_WATGUN = 0x23, PARTICLE_MS_MARIOAP_BODY = 0x24, PARTICLE_MS_MARIOAP_HEAD = 0x25, PARTICLE_MS_MARIOAP_CAP = 0x26, PARTICLE_MS_MARIOAP_RHAND = 0x27, PARTICLE_MS_MARIOAP_LHAND = 0x28, PARTICLE_MS_MARIOAP_RLEG = 0x29, PARTICLE_MS_MARIOAP_RFOOT = 0x2A, PARTICLE_MS_MARIOAP_LLEG = 0x2B, PARTICLE_MS_MARIOAP_LFOOT = 0x2C, PARTICLE_MS_MARIOAP_WATGUN = 0x2D, PARTICLE_MS_M_TOBIKOMI_A = 0x2F, PARTICLE_MS_M_TOBIKOMI_B = 0x30, PARTICLE_MS_M_TOBIKOMI_S_A = 0x31, PARTICLE_MS_M_TOBIKOMI_S_B = 0x32, PARTICLE_MS_M_AWAHAMON = 0x33, PARTICLE_MS_M_WATRUN_A = 0x34, PARTICLE_MS_M_WATRUN_B = 0x35, PARTICLE_MS_M_WATRUN_C = 0x36, PARTICLE_MS_COINGET_A = 0x37, PARTICLE_MS_COINGET_B = 0x38, PARTICLE_MS_M_AMIATTACK = 0x39, PARTICLE_MS_M_WALKSAND_B = 0x3B, MAP_MAP_GATE_MS_MARIOWP_DUST = 0x3C, PARTICLE_MS_M_GOUT_GATE = 0x40, PARTICLE_MS_M_GOUT_DOKAN = 0x41, PARTICLE_MS_M_SPHIPD_HIT_A = 0x43, PARTICLE_MS_M_SPHIPD_HIT_B = 0x44, PARTICLE_MS_M_SPHIPD_HIT_C = 0x45, PARTICLE_MS_M_SPHIPD_HIT_D = 0x46, MAP_POLLUTION_MS_M_ASHIOS = 0x50, MAP_MAP_GATE_MS_MARIOWP_SENKO = 0x51, PARTICLE_MS_OSENDAN = 0x52, PARTICLE_MS_POI_SAND = 0x53, PARTICLE_MS_CHU_JUMP = 0x54, MAPOBJ_SANDBOMB = 0x55, MAPOBJ_SHININGSTONEF = 0x56, MAPOBJ_MS_WATCOIN_HIT = 0x57, MAPOBJ_MS_WATCOIN_KIRA = 0x58, MAP_MAP_MS_OBJUP_SLOPE_A = 0x59, MAPOBJ_BALLOONKOOPAJR = 0x5A, MAPOBJ_BALLOONKOOPAJRA = 0x5B, MAPOBJ_BALLOONKOOPAJRB = 0x5C, MAPOBJ_WATERMELON_BOMB = 0x5D, MAPOBJ_WATERMELON_BOMB_A = 0x5E, MAPOBJ_WATERMELON_BOMB_B = 0x5F, MAPOBJ_MS_EX_HAHEN = 0x63, MAP_POLLUTION_MS_NEWFIRE_A = 0x65, MAP_MAP_MS_OBJUP_MANIYA_A = 0x66, MAP_MAP_MS_OBJUP_TOUDAI_A = 0x67, MAP_MAP_MS_OBJUP_HOTEL_A = 0x68, MAP_MAP_MS_MARE_OBJUP_A = 0x69, MAPOBJ_SANDSTEAM = 0x6A, MAPOBJ_WATERMELON_SHRINK_A = 0x6B, MAPOBJ_WATERMELON_SHRINK_B = 0x6C, PARTICLE_MS_EX_CUBE_DISA = 0x6D, MAP_MAP_MS_M_FILEBLOCK = 0x6E, MAP_POLLUTION_MS_THUNDER_S = 0x6F, PARTICLE_MS_MNT_KIRA = 0x70, PARTICLE_MS_MARE_KIRA = 0x71, PARTICLE_MS_MNT_YOGORE_B = 0x72, PARTICLE_MS_MNT_YOGORE_F = 0x73, PARTICLE_MS_MARE_YOGORE = 0x74, PARTICLE_MS_KINO_YOGORE = 0x75, PARTICLE_MS_BOHA_SANDSMO = 0x76, PARTICLE_MS_BOHA_SAND = 0x77, PARTICLE_MS_BOHA_JOUKI_R_A = 0x78, PARTICLE_MS_BOHA_JOUKI_R_B = 0x79, PARTICLE_MS_BOHA_JOUKI_L_A = 0x7A, PARTICLE_MS_BOHA_JOUKI_L_B = 0x7B, PARTICLE_MS_BOHA_HAMON_A = 0x7C, PARTICLE_MS_BOHA_HAMON_B = 0x7D, COLUMSAND_JPA_MS_BOHA_CRASH_A = 0x7E, PARTICLE_MS_DEADNAMEKLI_N = 0x83, PARTICLE_MS_DEADNAMEKLI_O = 0x84, COLUMWATER_JPA_MS_ENEHAMON_A = 0x89, COLUMWATER_JPA_MS_ENEHAMON_B = 0x8A, PARTICLE_MS_MOE_FIRE_OFF = 0x8B, BGESO_JPA_MS_BOGE_ATTACK_A = 0x8C, BGESO_JPA_MS_BOGE_ATTACK_B = 0x8D, BGESO_JPA_MS_BOGE_ATTACK_C = 0x8E, BGESO_JPA_MS_BOGE_ATTACK_D = 0x8F, BGESO_JPA_MS_BOGE_CANON_A = 0x93, BGESO_JPA_MS_BOGE_CANON_B = 0x94, BGESO_JPA_MS_BOGE_HIT_A = 0x97, BGESO_JPA_MS_BOGE_HIT_B = 0x98, BGESO_JPA_MS_BOGE_HIT_C = 0x99, BGESO_JPA_MS_BOGE_HITDOWN = 0x9A, BGESO_JPA_MS_BOGE_JUMP = 0x9B, BGESO_JPA_MS_BOGE_KIZETSU = 0x9C, BGESO_JPA_MS_BOGE_KIZETSU_R = 0x9D, BGESO_JPA_MS_BOGE_ODANHIT_A = 0x9E, BGESO_JPA_MS_BOGE_ODANHIT_B = 0x9F, BGESO_JPA_MS_BOGE_OSEN = 0xA0, PARTICLE_MS_POPO_BOMB_A = 0xA1, PARTICLE_MS_POPO_BOMB_B = 0xA2, GATEKEEPER_JPA_MS_GKPA_DEAD = 0xA7, GATEKEEPER_JPA_MS_GKPA_DEADSMOKE = 0xA8, SCENE_BOSSPAKKUN_JPA_MS_BOPA_BLUR1 = 0xA9, SCENE_BOSSPAKKUN_JPA_MS_BOPA_DOWN = 0xAA, SCENE_BOSSPAKKUN_JPA_MS_BOPA_SWING1 = 0xAB, SCENE_BOSSPAKKUN_JPA_MS_BOPA_SWING2 = 0xAC, BWAN_JPA_JUMP_ROCK = 0xAD, BWAN_JPA_JUMP_SMOKE = 0xAE, BWAN_JPA_MS_HIBANA = 0xAF, BWAN_JPA_MS_DOWNYUGE = 0xB0, PARTICLE_MS_SMB_KAFUN_OW = 0xB2, PARTICLE_MS_SMB_KAFUN_OA = 0xB3, PARTICLE_MS_SMB_AP_ROCK = 0xB6, PARTICLE_MS_SMB_AP_SMOKE = 0xB7, PARTICLE_MS_SMB_HD_ROCK = 0xB8, PARTICLE_MS_SMB_HD_SMOKE = 0xB9, PARTICLE_MS_GESO_OSENHIT_A = 0xBC, PARTICLE_MS_GESO_OSENHIT_B = 0xBD, PARTICLE_MS_PKH_TOKE = 0xBE, PARTICLE_MS_PKH_FUMI = 0xBF, PARTICLE_MS_POI_DEAD = 0xC0, PARTICLE_MS_PETBTL_BOMB_A = 0xC1, PARTICLE_MS_PETBTL_BOMB_B = 0xC2, EXPLOSION_JPA_MS_BOMB_SMOKE = 0xC4, EXPLOSION_JPA_MS_BOMB_BOMB = 0xC5, EXPLOSION_JPA_MS_BOMB_HAHEN = 0xC6, PARTICLE_MS_CHO_MOKU_A = 0xC7, PARTICLE_MS_CHO_MOKU_B = 0xC8, PARTICLE_MS_CHO_ASE = 0xC9, PARTICLE_MS_DNK_SHIBIRE_B = 0xCA, PARTICLE_MS_IGA_FUMI_AIR = 0xCB, PARTICLE_MS_TAMA_FLOWER = 0xCC, PARTICLE_MS_TLS_CHANGE = 0xCD, KAZEKUN_JPA_MS_KAZE_APPEAR = 0xCF, PARTICLE_MS_GENE_DEAD = 0xD0, PARTICLE_MS_SL_OR_MELT1 = 0xD1, PARTICLE_MS_SL_OR_MELT2 = 0xD2, BOSSEEL_JPA_MS_MEO_AWA_TOOTH = 0xD3, BOSSEEL_JPA_MS_MEO_AWA_MOUTH = 0xD4, BOSSEELTEARS_MS_MEO_TEAR_BOMB = 0xD5, BOSSEELTEARS_MS_MEO_TEAR_AWAGET = 0xD6, SCENE_BTELESA_JPA_MS_BTLS_FHIT = 0xD7, SCENE_BTELESA_JPA_MS_BTLS_FHIT_PE = 0xD8, SCENE_BTELESA_JPA_MS_BTLS_FHIT_GR = 0xD9, SCENE_BTELESA_JPA_MS_BTLS_FHIT_OR = 0xDA, SCENE_BTELESA_JPA_MS_BTLS_DAMAGE = 0xDB, SCENE_BTELESA_JPA_MS_BTLS_DOWN = 0xDC, SCENE_BTELESA_JPA_MS_BTLS_DOWN_PE = 0xDD, SCENE_BTELESA_JPA_MS_BTLS_DOWN_GR = 0xDE, SCENE_BTELESA_JPA_MS_BTLS_DOWN_OR = 0xDF, SCENE_BTELESA_JPA_MS_BTLS_SPICY_HIT = 0xE0, SCENE_BTELESA_JPA_MS_BTLS_FUBUKI = 0xE1, PARTICLE_MS_ENM_WALLHIT = 0xE2, PARTICLE_MS_ENM_WALLHIT_O = 0xE3, PARTICLE_MS_ENM_DISAP_A = 0xE4, PARTICLE_MS_ENM_DISAP_A_W = 0xE5, PARTICLE_MS_ENM_DISAP_B = 0xE6, PARTICLE_MS_ENM_WATHIT = 0xE7, CANNON_JPA_MS_CANNON_A = 0xE8, CANNON_JPA_MS_CANNON_B = 0xE9, CANNON_JPA_MS_CANNON_C = 0xEA, CANNON_JPA_MS_CANNON_D = 0xEB, CANNON_JPA_MS_CANNON_E = 0xEC, SCENE_KAGEMARIO_JPA_MS_KGM_CHANGE = 0xED, SCENE_TINKOOPA_JPA_MS_MKP_HIBANA_D1HE = 0xEE, SCENE_TINKOOPA_JPA_MS_MKP_KILLER = 0xEF, SCENE_TINKOOPA_JPA_MS_MKP_SMOKE1 = 0xF0, SCENE_TINKOOPA_JPA_MS_MKP_PARGE_B14 = 0xF1, SCENE_TINKOOPA_JPA_MS_MKP_PARGE_B23 = 0xF2, SCENE_TINKOOPA_JPA_MS_MKP_FLAME_YUGE = 0xF3, SCENE_TINKOOPA_JPA_MS_MKP_KEMU_PARTS = 0xF4, MAP_MAP_MS_KP_BREAK_A = 0xF6, MAP_MAP_MS_KP_BREAK_B = 0xF7, SCENE_MANTA_JPA_MS_MAN_DEAD = 0xF8, SCENE_MANTA_JPA_MS_MAN_DIV1 = 0xF9, SCENE_MANTA_JPA_MS_MAN_DIV2 = 0xFA, SCENE_MANTA_JPA_MS_MAN_DIV3 = 0xFB, SCENE_MANTA_JPA_MS_MAN_DIV4 = 0xFC, }; enum E_SMS_EFFECT_LOOP_NORMAL /* 1 */ { PARTICLE_MS_HIKAGE1_A = 0x100, PARTICLE_MS_HIKAGE1_B = 0x101, PARTICLE_MS_MARIWALLSL1 = 0x102, PARTICLE_MS_M_SLIPSMOKE = 0x103, PARTICLE_MS_M_BLUR3 = 0x104, PARTICLE_MS_M_BLUR2 = 0x105, PARTICLE_MS_M_BLUR2SP = 0x106, PARTICLE_MS_M_HAMON_A = 0x107, PARTICLE_MS_M_HAMON_C = 0x108, PARTICLE_MS_M_HAMON_D = 0x109, PARTICLE_MS_M_MZBHAMON_A = 0x10A, PARTICLE_MS_M_MZBHAMON_C = 0x10B, PARTICLE_MS_M_AWA = 0x10C, PARTICLE_MS_NOZZLESMOKE = 0x10D, PARTICLE_MS_M_BLUR1 = 0x10E, PARTICLE_MS_M_SLIDESAND_A = 0x10F, PARTICLE_MS_M_SLIDESAND_B = 0x110, PARTICLE_MS_M_AWA_S = 0x111, PARTICLE_MS_M_WATSLIDE_B = 0x112, PARTICLE_MS_M_WATSLIDE_C = 0x113, PARTICLE_MS_M_SPINSHOT_A = 0x114, PARTICLE_MS_M_SPINSHOT_B = 0x115, PARTICLE_MS_M_BIRI_A = 0x116, PARTICLE_MS_M_BIRI_B = 0x117, PARTICLE_MS_M_BIRI_C = 0x118, PARTICLE_MS_M_SPHIPD_A = 0x11A, PARTICLE_MS_M_SPHIPD_B = 0x11B, PARTICLE_MS_M_SPHIPD_C = 0x11C, PARTICLE_MS_M_SPHIPD_D = 0x11D, PARTICLE_MS_M_SEASMOKE = 0x11E, PARTICLE_MS_TORO_WIND = 0x11F, PARTICLE_MS_TORO_HIBANA = 0x120, PARTICLE_MS_GESOSURF_B = 0x121, PARTICLE_MS_GESOSURF_C = 0x122, PARTICLE_MS_GESOSURF_D = 0x123, PARTICLE_MS_POI_ZZZ = 0x124, MAP_POLLUTION_MS_M_SPINOS = 0x126, PARTICLE_MS_SHINE_PROMI = 0x127, PARTICLE_MS_SHINE_SENKO = 0x128, PARTICLE_MS_SHINE_KIRA = 0x129, PARTICLE_MS_SHINE_BOW = 0x12A, MAP_POLLUTION_MS_M_TOKEOS = 0x12B, PARTICLE_MS_TEPPANFIRE_A = 0x12C, PARTICLE_MS_GENE_HIT = 0x12D, PARTICLE_MS_POI_KIZETSU = 0x12F, PARTICLE_MS_CHU_ASE = 0x130, MAP_MAP_GATE_MS_GATEWIND_A = 0x131, MAP_MAP_GATE_MS_GATEWIND_A2 = 0x132, MAP_MAP_GATE_MS_GATEWIND_A3 = 0x133, MAP_MAP_GATE_MS_GATEWIND_B = 0x134, PARTICLE_MS_MOE_FIRE_A = 0x135, PARTICLE_MS_MOE_FIRE_B = 0x136, PARTICLE_MS_MOE_FIRE_D = 0x137, BGESO_JPA_MS_BOGE_ASE = 0x138, BGESO_JPA_MS_BOGE_NAMIDA = 0x139, BGESO_JPA_MS_BOGE_WASH = 0x13B, PARTICLE_MS_POPO_SHUWA_A = 0x13C, PARTICLE_MS_POPO_SHUWA_B = 0x13D, PARTICLE_MS_PACKN_HD_ROCK = 0x13E, PARTICLE_MS_PACKN_HD_SMOKE = 0x13F, GATEKEEPER_JPA_MS_GKPA_BOTA = 0x140, GATEKEEPER_JPA_MS_GKPA_YODARE_S = 0x141, GATEKEEPER_JPA_MS_GKPA_YODARE_L = 0x142, MAPOBJ_SHININGSTONE1 = 0x143, MAPOBJ_SHININGSTONE2 = 0x144, MAPOBJ_SHININGSTONE3 = 0x145, MAPOBJ_MAREFALLSPLASH = 0x149, MAPOBJ_MAREFALLSMOKE = 0x14A, OTHERS_MARINESNOW_MS_MARE_MARINSNOW = 0x14B, MAP_MAP_MS_MARE_GUNWAT_A = 0x14C, MAP_MAP_MS_MARE_GUNWAT_B = 0x14D, MAP_MAP_MS_MARE_GUNWAT_C = 0x14E, SCENE_MAPOBJ_MS_SHIB_CYL1 = 0x154, SCENE_MAPOBJ_MS_SHIB_CUB1 = 0x155, MAP_MAP_MS_MONTE_YUGE = 0x156, MAPOBJ_ICEBLOCKA = 0x157, MAPOBJ_ICEBLOCKB = 0x158, MAP_MAP_MS_SUNADORI_A = 0x159, MAP_MAP_MS_SUNADORI_B = 0x15A, MAP_MAP_MS_MARE_BLOCKUP = 0x15B, SCENE_BOSSPAKKUN_JPA_MS_BOPA_WATHIT = 0x15D, SCENE_BOSSPAKKUN_JPA_MS_BOPA_WATHIT_W = 0x15E, SCENE_BOSSPAKKUN_JPA_MS_BOPA_ASE = 0x15F, SCENE_BOSSPAKKUN_JPA_MS_BOPA_BLUR2 = 0x160, SCENE_BOSSPAKKUN_JPA_MS_BOPA_JITA = 0x161, SCENE_BOSSPAKKUN_JPA_MS_BOPA_TR_ROCK = 0x162, SCENE_BOSSPAKKUN_JPA_MS_BOPA_TR_SMOKE = 0x163, SCENE_BOSSPAKKUN_JPA_MS_BOPA_TR_WEED = 0x164, PARTICLE_MS_GESO_KISEKI = 0x165, CANNON_JPA_MS_CANNON_SMOKE = 0x166, BWANWAN_JPA_MS_BWAN_HITYUGE = 0x167, BWANWAN_JPA_MS_BWAN_KIRA = 0x168, PARTICLE_MS_BOHA_JOUKI2_R_A = 0x169, PARTICLE_MS_BOHA_JOUKI2_R_B = 0x16A, PARTICLE_MS_BOHA_JOUKI2_L_A = 0x16B, PARTICLE_MS_BOHA_JOUKI2_L_B = 0x16C, PARTICLE_MS_BOHA_SANDSMO_SL = 0x16D, PARTICLE_MS_BOHA_SAND_SL = 0x16E, PARTICLE_MS_BOHA_KIZETSU = 0x16F, PARTICLE_MS_NPC_KOKUEN = 0x170, PARTICLE_MS_NPC_HAMON_A = 0x171, PARTICLE_MS_MNT_WASH = 0x172, PARTICLE_MS_MARE_WASH = 0x173, PARTICLE_MS_KIL_SMOKE = 0x174, PARTICLE_MS_PKH_DORO = 0x175, PARTICLE_MS_PKH_WASH = 0x176, PARTICLE_MS_PUKU_PICHI = 0x177, PARTICLE_MS_PUKU_AWA = 0x178, PARTICLE_MS_PETBTL_SMOKE = 0x179, PARTICLE_MS_DNK_BIRI = 0x17A, PARTICLE_MS_DNK_SPARK_L = 0x17B, PARTICLE_MS_DNK_SPARK_R = 0x17C, PARTICLE_MS_DNK_SHIBIRE_A = 0x17D, PARTICLE_MS_DNK_HIBANA = 0x17E, PARTICLE_MS_BOMB_LIMIT = 0x17F, PARTICLE_MS_AMN_BIRI = 0x180, PARTICLE_MS_AMN_SPARK_L = 0x181, PARTICLE_MS_AMN_SPARK_R = 0x182, PARTICLE_MS_AMN_SPARK_M = 0x183, MAPOBJ_AMIKING = 0x184, PARTICLE_MS_TAMA_HIT = 0x185, PARTICLE_MS_TAMA_BLUR = 0x186, PARTICLE_MS_TLS_YODARE_L = 0x187, PARTICLE_MS_TLS_YODARE_S = 0x188, KAZEKUN_JPA_MS_KAZE_WIND = 0x189, KAZEKUN_JPA_MS_KAZE_BLUR = 0x18A, PARTICLE_MS_YNB_ONPU = 0x18B, COOC_JPA_MS_ASE = 0x18C, COOC_JPA_MS_HANE = 0x18D, AMENBO_JPA_MS_AME_HAMON = 0x18E, FIREWANWAN_JPA_MS_CAN_HITYUGE = 0x18F, WIRETRAP_JPA_NS_WRT_BIRI_A = 0x190, WIRETRAP_JPA_NS_WRT_BIRI_B = 0x191, BOSSEEL_JPA_MS_MEO_EYEBLUR = 0x192, BOSSEEL_JPA_MS_MEO_SPIN_SMOKE = 0x193, BOSSEEL_JPA_MS_MEO_SPIN_SMOKE_L = 0x194, BOSSEEL_JPA_MS_MEO_SPIN_AWA = 0x195, BOSSEEL_JPA_MS_MEO_SPIN_AWA_L = 0x196, BOSSEEL_JPA_MS_MEO_AWA_BODY = 0x197, BOSSEEL_JPA_MS_MEO_AWA_DEAD = 0x198, BOSSEEL_JPA_MS_MEO_SUIKOMI = 0x199, BOSSEEL_JPA_MS_MEO_TOOTH_WASH = 0x19A, BOSSEEL_JPA_MS_MEO_TOOTH_KIRA = 0x19B, BOSSEEL_JPA_MS_MEO_TOOTH_ALWAYS = 0x19C, BOSSEELTEARS_MS_MEO_TEAR_AWA = 0x19D, SCENE_BTELESA_JPA_MS_BTLS_YODARE1 = 0x19E, SCENE_BTELESA_JPA_MS_BTLS_YODARE2 = 0x19F, SCENE_BTELESA_JPA_MS_BTLS_YODARE3 = 0x1A0, SCENE_BTELESA_JPA_MS_BTLS_ASE = 0x1A1, SCENE_BTELESA_JPA_MS_BTLS_SPICY_A = 0x1A2, SCENE_BTELESA_JPA_MS_BTLS_SPICY_B = 0x1A3, SCENE_BTELESA_JPA_MS_BTLS_SPICY_D = 0x1A4, SCENE_BTELESA_JPA_MS_BTLS_CHIKA_A = 0x1A5, SCENE_BTELESA_JPA_MS_BTLS_CHIKA_B = 0x1A6, SCENE_BTELESA_JPA_MS_BTLS_GLOW = 0x1A7, SCENE_KAGEMARIO_JPA_MS_KGM_MOVE_A = 0x1AA, SCENE_KAGEMARIO_JPA_MS_KGM_MOVE_B = 0x1AB, SCENE_TINKOOPA_JPA_MS_MKP_HIBANA_W1BR = 0x1AC, SCENE_TINKOOPA_JPA_MS_MKP_HIBANA_W3AR = 0x1AD, SCENE_TINKOOPA_JPA_MS_MKP_HIBANA_W4AR = 0x1AE, SCENE_TINKOOPA_JPA_MS_MKP_BIRI_W1ST = 0x1AF, SCENE_TINKOOPA_JPA_MS_MKP_BIRI_W1AR = 0x1B0, SCENE_TINKOOPA_JPA_MS_MKP_BIRI_W1FE = 0x1B1, SCENE_TINKOOPA_JPA_MS_MKP_BIRI_W1HE = 0x1B2, SCENE_TINKOOPA_JPA_MS_MKP_BIRI_D1BR_A = 0x1B3, SCENE_TINKOOPA_JPA_MS_MKP_BIRI_D1BR_B = 0x1B4, SCENE_TINKOOPA_JPA_MS_MKP_KEMU_B1AR = 0x1B5, SCENE_TINKOOPA_JPA_MS_MKP_KEMU_W2BR_A = 0x1B6, SCENE_TINKOOPA_JPA_MS_MKP_KEMU_W2BR_B = 0x1B7, SCENE_TINKOOPA_JPA_MS_MKP_KEMU_B1HE = 0x1B8, SCENE_TINKOOPA_JPA_MS_MKP_KEMU_B1FE_L = 0x1B9, SCENE_TINKOOPA_JPA_MS_MKP_KEMU_B1FE_R = 0x1BA, SCENE_TINKOOPA_JPA_MS_MKP_FIRE_A = 0x1BB, SCENE_TINKOOPA_JPA_MS_MKP_FIRE_B = 0x1BC, MAP_MAP_MS_LKP_YUGE1 = 0x1BE, MAP_MAP_MS_KP_FUNSUI = 0x1BF, KOOPA_JPA_MS_KP_FIRE_A = 0x1C0, KOOPA_JPA_MS_KP_FIRE_B = 0x1C1, KOOPA_JPA_MS_KP_FIRE_C = 0x1C2, KOOPA_JPA_MS_KP_FIRE_D = 0x1C3, PARTICLE_MS_MAP_FIRE_A = 0x1C4, PARTICLE_MS_MAP_FIRE_B = 0x1C5, SCENE_MAPOBJ_MS_OBJ_HAMON_A = 0x1C6, SCENE_MANTA_JPA_MS_MAN_HIT1_A = 0x1C7, SCENE_MANTA_JPA_MS_MAN_HIT1_B = 0x1C8, SCENE_MANTA_JPA_MS_MAN_HIT2_A = 0x1C9, SCENE_MANTA_JPA_MS_MAN_HIT2_B = 0x1CA, SCENE_MANTA_JPA_MS_MAN_HIT3_A1 = 0x1CB, SCENE_MANTA_JPA_MS_MAN_HIT3_A2 = 0x1CC, SCENE_MANTA_JPA_MS_MAN_HIT3_B = 0x1CD, SCENE_MANTA_JPA_MS_MAN_HIT4_A1 = 0x1CE, SCENE_MANTA_JPA_MS_MAN_HIT4_A2 = 0x1CF, SCENE_MANTA_JPA_MS_MAN_HIT4_B = 0x1D0, PARTICLE_MS_MPK_FIRE_A = 0x1D1, PARTICLE_MS_MPK_FIRE_B = 0x1D2, }; // NOTE: name fabricated, the map has no instantiation for this type. enum E_SMS_EFFECT_ONETIME_INDIRECT /* 2 */ { PARTICLE_MS_M_TOBIKOMI_C = 0x1D4, PARTICLE_MS_M_TOBIKOMI_S_C = 0x1D5, PARTICLE_MS_MARI_RAKUBALL = 0x1D8, PARTICLE_MS_MARI_RAKUHAMON = 0x1D9, MAP_POLLUTION_MS_NEWFIRE_B = 0x1DC, PARTICLE_MS_RAKU_INDAWA = 0x1DA, PARTICLE_MS_RAKU_KIE = 0x1DB, MAP_MAP_GATE_MS_GATEHIT_A = 0x1DD, MAP_MAP_GATE_MS_GATEHIT_B = 0x1DE, GATEKEEPER_JPA_MS_GKPA_KEMURI = 0x1DF, GATEKEEPER_JPA_MS_GKPA_KEMURI_W = 0x1E0, MAP_MAP_MS_OBJUP_SLOPE_B = 0x1E1, MAP_MAP_MS_OBJUP_MANIYA_B = 0x1E2, MAP_MAP_MS_OBJUP_TOUDAI_B = 0x1E3, MAP_MAP_MS_OBJUP_HOTEL_B = 0x1E4, MAP_MAP_MS_MARE_OBJUP_B = 0x1E5, }; enum E_SMS_EFFECT_LOOP_INDIRECT /* 3 */ { PARTICLE_MS_M_HAMON_B = 0x1E8, PARTICLE_MS_M_MZBHAMON_B = 0x1E9, SCENE_BTELESA_JPA_MS_BTLS_SPICY_C = 0x1F0, PARTICLE_MS_TEPPANFIRE_B = 0x1F1, SCENE_TINKOOPA_JPA_MS_MKP_FIRE_C = 0x1F2, KOOPA_JPA_MS_KP_FIRE_E = 0x1F3, FIREWANWAN_JPA_MS_CAN_YUGAMI = 0x1F4, PARTICLE_MS_MAP_FIRE_C = 0x1F5, SCENE_MAPOBJ_MS_OBJ_HAMON_B = 0x1F6, PARTICLE_MS_NPC_HAMON_B = 0x1F7, PARTICLE_MS_MPK_FIRE_C = 0x1F8, PARTICLE_MS_GESOSURF_A = 0x1E7, PARTICLE_MS_M_WATSLIDE_A = 0x1EA, PARTICLE_MS_MOE_FIRE_C = 0x1ED, BWAN_JPA_MS_YUGAMI = 0x1EE, }; // NOTE: doing this makes inlining work out, specializations DON'T. template struct FabricatedParticleTypeToFlag; template <> struct FabricatedParticleTypeToFlag { enum { value = TMarioParticleManager::EFFECT_ONETIME_NORMAL }; }; template <> struct FabricatedParticleTypeToFlag { enum { value = TMarioParticleManager::EFFECT_LOOP_NORMAL }; }; template <> struct FabricatedParticleTypeToFlag { enum { value = TMarioParticleManager::EFFECT_LOOP_INDIRECT }; }; // TODO: the fabricated setScale inline is most likely incorrect. template JPABaseEmitter* SMS_EasyEmitParticle(T id, const JGeometry::TVec3* pos_ptr, const void* identity, const JGeometry::TVec3& scale) { JPABaseEmitter* emitter = gpMarioParticleManager->emitAndBindToPosPtr( id, pos_ptr, FabricatedParticleTypeToFlag::value, identity); if (emitter) emitter->setGlobalScale(scale); return emitter; } template JPABaseEmitter* SMS_EasyEmitParticle(T id, MtxPtr mtx_ptr, const void* identity, const JGeometry::TVec3& scale) { JPABaseEmitter* emitter = gpMarioParticleManager->emitAndBindToMtxPtr( id, mtx_ptr, FabricatedParticleTypeToFlag::value, identity); if (emitter) emitter->setGlobalScale(scale); return emitter; } #endif