From 2ec3e1f18943e34cba68df711b88937274709297 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 23 Dec 2021 16:43:47 -0800 Subject: [PATCH 1/8] Add an enum for the different procnames (actor types) and switch over the stage data table to use it. --- include/d/d_procname.h | 798 ++++++++++++++++++++++++++ src/d/d_stage.cpp | 1218 ++++++++++++++++++++++++++++++---------- 2 files changed, 1712 insertions(+), 304 deletions(-) create mode 100644 include/d/d_procname.h diff --git a/include/d/d_procname.h b/include/d/d_procname.h new file mode 100644 index 00000000000..f47e472e7f3 --- /dev/null +++ b/include/d/d_procname.h @@ -0,0 +1,798 @@ + +#pragma once + +enum +{ + PROC_OVERLAP0 = 0x0000, + PROC_OVERLAP1 = 0x0001, + PROC_OVERLAP3 = 0x0002, + PROC_OVERLAP6 = 0x0003, + PROC_OVERLAP7 = 0x0004, + PROC_OVERLAP8 = 0x0005, + PROC_OVERLAP9 = 0x0006, + PROC_OVERLAP10 = 0x0007, + PROC_OVERLAP11 = 0x0008, + PROC_LOGO_SCENE = 0x0009, + PROC_MENU_SCENE = 0x000A, + PROC_PLAY_SCENE = 0x000B, + PROC_OPENING_SCENE = 0x000C, + PROC_NAME_SCENE = 0x000D, + PROC_NAMEEX_SCENE = 0x000E, + PROC_WARNING_SCENE = 0x000F, + PROC_WARNING2_SCENE = 0x0010, + PROC_OVERLAP2 = 0x0011, + PROC_ROOM_SCENE = 0x0012, + PROC_KANKYO = 0x0013, + PROC_ALLDIE = 0x0014, + PROC_ENVSE = 0x0015, + PROC_Obj_Swpush = 0x0016, + PROC_Obj_Swpush2 = 0x0017, + PROC_Obj_Swpush5 = 0x0018, + PROC_Tag_Gstart = 0x0019, + PROC_NO_CHG_ROOM = 0x001A, + PROC_Obj_Lv6ElevtA = 0x001B, + PROC_OBJ_SO = 0x001C, + PROC_Obj_Movebox = 0x001D, + PROC_Obj_SwTurn = 0x001E, + PROC_Obj_Lv6SwTurn = 0x001F, + PROC_OBJ_SEKIZOA = 0x0020, + PROC_OBJ_GRA = 0x0021, + PROC_TAG_GRA = 0x0022, + PROC_TAG_YAMI = 0x0023, + PROC_Obj_Ladder = 0x0024, + PROC_OBJ_BEF = 0x0025, + PROC_OBJ_FMOBJ = 0x0026, + PROC_OBJ_LBOX = 0x0027, + PROC_OBJ_WEB0 = 0x0028, + PROC_OBJ_WEB1 = 0x0029, + PROC_OBJ_CB = 0x002A, + PROC_OBJ_MAKI = 0x002B, + PROC_OBJ_BRG = 0x002C, + PROC_OBJ_GB = 0x002D, + PROC_OBJ_GM = 0x002E, + PROC_OBJ_TOBY = 0x002F, + PROC_OBJ_TP = 0x0030, + PROC_TREESH = 0x0031, + PROC_Obj_ZDoor = 0x0032, + PROC_Obj_Pillar = 0x0033, + PROC_Obj_Cdoor = 0x0034, + PROC_GRDWATER = 0x0035, + PROC_Obj_RotBridge = 0x0036, + PROC_Obj_MagLift = 0x0037, + PROC_Obj_MagLiftRot = 0x0038, + PROC_Obj_Lv1Cdl00 = 0x0039, + PROC_Obj_Lv1Cdl01 = 0x003A, + PROC_Obj_TvCdlst = 0x003B, + PROC_Obj_HsTarget = 0x003C, + PROC_Obj_HeavySw = 0x003D, + PROC_Obj_GoGate = 0x003E, + PROC_Obj_TaFence = 0x003F, + PROC_Obj_Saidan = 0x0040, + PROC_Obj_SpinLift = 0x0041, + PROC_Obj_BmWindow = 0x0042, + PROC_Obj_RfHole = 0x0043, + PROC_Obj_WaterPillar = 0x0044, + PROC_Obj_SyRock = 0x0045, + PROC_Obj_BsGate = 0x0046, + PROC_Obj_AmiShutter = 0x0047, + PROC_Obj_WtGate = 0x0048, + PROC_Obj_Lv2Candle = 0x0049, + PROC_Obj_TogeTrap = 0x004A, + PROC_Obj_RotTrap = 0x004B, + PROC_Obj_SwallShutter = 0x004C, + PROC_Obj_IceWall = 0x004D, + PROC_Obj_Lv5SwIce = 0x004E, + PROC_Obj_Lv5FBoard = 0x004F, + PROC_Obj_Turara = 0x0050, + PROC_Obj_TwGate = 0x0051, + PROC_Obj_Digholl = 0x0052, + PROC_Obj_Digpl = 0x0053, + PROC_Obj_TestCube = 0x0054, + PROC_Obj_Kshutter = 0x0055, + PROC_NPC_COACH = 0x0056, + PROC_NPC_THEB = 0x0057, + PROC_COACH_FIRE = 0x0058, + PROC_COACH2D = 0x0059, + PROC_BALLOON2D = 0x005A, + PROC_SKIP2D = 0x005B, + PROC_Obj_MvStair = 0x005C, + PROC_Obj_Cowdoor = 0x005D, + PROC_Obj_Swpropeller = 0x005E, + PROC_Obj_BoomShutter = 0x005F, + PROC_NPC_KS = 0x0060, + PROC_Obj_Hfuta = 0x0061, + PROC_Obj_BkDoor = 0x0062, + PROC_Obj_Cboard = 0x0063, + PROC_Obj_MGate = 0x0064, + PROC_Obj_Ikada = 0x0065, + PROC_Obj_Ice_l = 0x0066, + PROC_Obj_Ice_s = 0x0067, + PROC_Obj_E_CREATE = 0x0068, + PROC_Obj_Bhbridge = 0x0069, + PROC_Obj_Kaisou = 0x006A, + PROC_Obj_HHASHI = 0x006B, + PROC_Obj_BHASHI = 0x006C, + PROC_OCTHASHI = 0x006D, + PROC_Obj_THASHI = 0x006E, + PROC_Obj_CRVGATE = 0x006F, + PROC_Obj_CRVFENCE = 0x0070, + PROC_Obj_CRVHAHEN = 0x0071, + PROC_Obj_CRVSTEEL = 0x0072, + PROC_Obj_CRVLH_UP = 0x0073, + PROC_Obj_CRVLH_DW = 0x0074, + PROC_Obj_RIVERROCK = 0x0075, + PROC_Obj_DUST = 0x0076, + PROC_Obj_ITA = 0x0077, + PROC_Obj_Window = 0x0078, + PROC_Obj_MetalBox = 0x0079, + PROC_Obj_BBox = 0x007A, + PROC_OBJ_MSIMA = 0x007B, + PROC_OBJ_MYOGAN = 0x007C, + PROC_B_ZANTS = 0x007D, + PROC_Obj_ChainBlock = 0x007E, + PROC_Obj_ChainWall = 0x007F, + PROC_Obj_KkrGate = 0x0080, + PROC_Obj_RiderGate = 0x0081, + PROC_Obj_Onsen = 0x0082, + PROC_Obj_Chest = 0x0083, + PROC_Obj_Bemos = 0x0084, + PROC_Obj_RopeBridge = 0x0085, + PROC_Obj_WellCover = 0x0086, + PROC_Obj_GraveStone = 0x0087, + PROC_Obj_ZraRock = 0x0088, + PROC_Obj_GraRock = 0x0089, + PROC_Obj_GrzRock = 0x008A, + PROC_GRA_WALL = 0x008B, + PROC_OBJ_ONSEN_FIRE = 0x008C, + PROC_Obj_Lv6bemos = 0x008D, + PROC_Obj_Lv6bemos2 = 0x008E, + PROC_Obj_BarDesk = 0x008F, + PROC_Obj_DigSnow = 0x0090, + PROC_Obj_Ytaihou = 0x0091, + PROC_Obj_Elevator = 0x0092, + PROC_Obj_Lv6TogeRoll = 0x0093, + PROC_Obj_Lv6TogeTrap = 0x0094, + PROC_Obj_Lv6Tenbin = 0x0095, + PROC_Obj_Lv6SwGate = 0x0096, + PROC_Obj_Lv6Lblock = 0x0097, + PROC_Obj_Lv6ChgGate = 0x0098, + PROC_Obj_Lv6FuriTrap = 0x0099, + PROC_Obj_Lv6SzGate = 0x009A, + PROC_Obj_Lv4EdShutter = 0x009B, + PROC_Obj_Lv4Gate = 0x009C, + PROC_Obj_Lv4PoGate = 0x009D, + PROC_Obj_Lv4SlideWall = 0x009E, + PROC_Obj_Lv4HsTarget = 0x009F, + PROC_Obj_Lv7PropY = 0x00A0, + PROC_Obj_Lv7BsGate = 0x00A1, + PROC_Obj_Lv8OptiLift = 0x00A2, + PROC_Obj_Lv8KekkaiTrap = 0x00A3, + PROC_Obj_Lv8Lift = 0x00A4, + PROC_Obj_Lv8UdFloor = 0x00A5, + PROC_Obj_Lv9SwShutter = 0x00A6, + PROC_Obj_TobyHouse = 0x00A7, + PROC_Obj_poCandle = 0x00A8, + PROC_Obj_Lv4DigSand = 0x00A9, + PROC_Obj_FallObj = 0x00AA, + PROC_Obj_SmgDoor = 0x00AB, + PROC_Obj_SwLight = 0x00AC, + PROC_Obj_Avalanche = 0x00AD, + PROC_Obj_MirrorScrew = 0x00AE, + PROC_Obj_MirrorSand = 0x00AF, + PROC_Obj_MirrorTable = 0x00B0, + PROC_Obj_MirrorChain = 0x00B1, + PROC_Obj_Mirror6Pole = 0x00B2, + PROC_Obj_SwSpinner = 0x00B3, + PROC_Obj_TDoor = 0x00B4, + PROC_Obj_Lv7Bridge = 0x00B5, + PROC_Obj_zrTurara = 0x00B6, + PROC_Obj_TakaraDai = 0x00B7, + PROC_Obj_Table = 0x00B8, + PROC_Obj_CatDoor = 0x00B9, + PROC_Obj_Gake = 0x00BA, + PROC_CSTAF = 0x00BB, + PROC_Obj_Lv4RailWall = 0x00BC, + PROC_Obj_Lv4Sand = 0x00BD, + PROC_Obj_PushDoor = 0x00BE, + PROC_PushDoor = 0x00BF, + PROC_Obj_GanonWall2 = 0x00C0, + PROC_Obj_Lv4Bridge = 0x00C1, + PROC_Obj_Lv4Floor = 0x00C2, + PROC_Tag_Spinner = 0x00C3, + PROC_Obj_SwHang = 0x00C4, + PROC_Obj_RotStair = 0x00C5, + PROC_Obj_MagneArm = 0x00C6, + PROC_Obj_KWheel00 = 0x00C7, + PROC_Obj_KWheel01 = 0x00C8, + PROC_Obj_Ychndlr = 0x00C9, + PROC_Obj_PRElvtr = 0x00CA, + PROC_Obj_MHasu = 0x00CB, + PROC_Obj_YIblltray = 0x00CC, + PROC_Obj_Lv6EGate = 0x00CD, + PROC_Obj_PDtile = 0x00CE, + PROC_Obj_PDwall = 0x00CF, + PROC_Obj_Lv4PRwall = 0x00D0, + PROC_Obj_KLift00 = 0x00D1, + PROC_B_OH = 0x00D2, + PROC_Obj_Lv4Chan = 0x00D3, + PROC_Obj_Lv3R10Saka = 0x00D4, + PROC_Obj_Lv3Water = 0x00D5, + PROC_Obj_Lv3Water2 = 0x00D6, + PROC_OBJ_LV3WATERB = 0x00D7, + PROC_Obj_HBombkoya = 0x00D8, + PROC_Obj_SZbridge = 0x00D9, + PROC_Obj_KakarikoBrg = 0x00DA, + PROC_Obj_OrdinBrg = 0x00DB, + PROC_Obj_BurnBox = 0x00DC, + PROC_Obj_KJgjs = 0x00DD, + PROC_OBJ_IHASI = 0x00DE, + PROC_Obj_IceBlock = 0x00DF, + PROC_Obj_VolcanicBall = 0x00E0, + PROC_Obj_VolcanicBomb = 0x00E1, + PROC_Obj_VolcGnd = 0x00E2, + PROC_Obj_KKanban = 0x00E3, + PROC_E_PH = 0x00E4, + PROC_NPC_ZRA = 0x00E5, + PROC_Obj_Chandelier = 0x00E6, + PROC_Obj_Stopper2 = 0x00E7, + PROC_DOOR20 = 0x00E8, + PROC_Tag_Hinit = 0x00E9, + PROC_Tag_Hjump = 0x00EA, + PROC_Tag_AJnot = 0x00EB, + PROC_Tag_Hstop = 0x00EC, + PROC_CANOE = 0x00ED, + PROC_HORSE = 0x00EE, + PROC_E_WB = 0x00EF, + PROC_OBJ_ITO = 0x00F0, + PROC_OBJ_SW = 0x00F1, + PROC_SPINNER = 0x00F2, + PROC_B_OB = 0x00F3, + PROC_KAGO = 0x00F4, + PROC_E_YC = 0x00F5, + PROC_B_DS = 0x00F6, + PROC_B_DR = 0x00F7, + PROC_B_ZANTZ = 0x00F8, + PROC_B_ZANT = 0x00F9, + PROC_B_ZANTM = 0x00FA, + PROC_TBOX = 0x00FB, + PROC_TBOX2 = 0x00FC, + PROC_ALINK = 0x00FD, + PROC_BOOMERANG = 0x00FE, + PROC_MIDNA = 0x00FF, + PROC_NPC_TK = 0x0100, + PROC_NPC_WORM = 0x0101, + PROC_PPolamp = 0x0102, + PROC_BkyRock = 0x0103, + PROC_HITOBJ = 0x0104, + PROC_EP = 0x0105, + PROC_COW = 0x0106, + PROC_PERU = 0x0107, + PROC_NI = 0x0108, + PROC_NPC_TKJ2 = 0x0109, + PROC_SQ = 0x010A, + PROC_NPC_SQ = 0x010B, + PROC_DO = 0x010C, + PROC_NPC_NE = 0x010D, + PROC_NPC_TR = 0x010E, + PROC_NPC_LF = 0x010F, + PROC_OBJ_FOOD = 0x0110, + PROC_OBJ_KI = 0x0111, + PROC_OBJ_KITA = 0x0112, + PROC_OBJ_KEY = 0x0113, + PROC_OBJ_KEYHOLE = 0x0114, + PROC_Obj_Lv5Key = 0x0115, + PROC_OBJ_LP = 0x0116, + PROC_OBJ_TATIGI = 0x0117, + PROC_OBJ_ROCK = 0x0118, + PROC_OBJ_WFLAG = 0x0119, + PROC_OBJ_KAGE = 0x011A, + PROC_OBJ_KANBAN2 = 0x011B, + PROC_OBJ_BALLOON = 0x011C, + PROC_OBJ_SUISYA = 0x011D, + PROC_OBJ_OILTUBO = 0x011E, + PROC_OBJ_ROTEN = 0x011F, + PROC_OBJ_SSDRINK = 0x0120, + PROC_OBJ_SSITEM = 0x0121, + PROC_TAG_SSDRINK = 0x0122, + PROC_TAG_BTLITM = 0x0123, + PROC_TAG_LV5SOUP = 0x0124, + PROC_TAG_MNLIGHT = 0x0125, + PROC_TAG_SHOPCAM = 0x0126, + PROC_TAG_SHOPITM = 0x0127, + PROC_OBJ_NDOOR = 0x0128, + PROC_OBJ_UDOOR = 0x0129, + PROC_OBJ_USAKU = 0x012A, + PROC_Obj_SM_DOOR = 0x012B, + PROC_OBJ_BED = 0x012C, + PROC_OBJ_BOUMATO = 0x012D, + PROC_OBJ_ITAMATO = 0x012E, + PROC_OBJ_NOUGU = 0x012F, + PROC_OBJ_STICK = 0x0130, + PROC_OBJ_MIE = 0x0131, + PROC_OBJ_SEKIDOOR = 0x0132, + PROC_OBJ_SEKIZO = 0x0133, + PROC_OBJ_SMTILE = 0x0134, + PROC_NPC_FISH = 0x0135, + PROC_MG_FISH = 0x0136, + PROC_FSHOP = 0x0137, + PROC_NPC_DU = 0x0138, + PROC_DISAPPEAR = 0x0139, + PROC_Obj_Mato = 0x013A, + PROC_Obj_Flag = 0x013B, + PROC_Obj_Flag2 = 0x013C, + PROC_Obj_Flag3 = 0x013D, + PROC_Obj_GOMIKABE = 0x013E, + PROC_Obj_Yousei = 0x013F, + PROC_Obj_Kabuto = 0x0140, + PROC_Obj_Cho = 0x0141, + PROC_Obj_Kuw = 0x0142, + PROC_Obj_Nan = 0x0143, + PROC_Obj_Dan = 0x0144, + PROC_Obj_Kam = 0x0145, + PROC_Obj_Ten = 0x0146, + PROC_Obj_Ari = 0x0147, + PROC_Obj_Kag = 0x0148, + PROC_Obj_Batta = 0x0149, + PROC_Obj_Tombo = 0x014A, + PROC_Obj_Kat = 0x014B, + PROC_Obj_H_Saku = 0x014C, + PROC_Obj_Yobikusa = 0x014D, + PROC_Obj_KazeNeko = 0x014E, + PROC_Obj_KznkArm = 0x014F, + PROC_Obj_NamePlate = 0x0150, + PROC_Obj_OnCloth = 0x0151, + PROC_Obj_LndRope = 0x0152, + PROC_Obj_ItaRope = 0x0153, + PROC_Obj_Sakuita = 0x0154, + PROC_Obj_Laundry = 0x0155, + PROC_WarpBug = 0x0156, + PROC_Izumi_Gate = 0x0157, + PROC_Obj_Fchain = 0x0158, + PROC_Obj_Wchain = 0x0159, + PROC_Tag_Attp = 0x015A, + PROC_Obj_Tornado = 0x015B, + PROC_Obj_Tornado2 = 0x015C, + PROC_Obj_FirePillar = 0x015D, + PROC_Obj_FirePillar2 = 0x015E, + PROC_Obj_InoBone = 0x015F, + PROC_Obj_Stopper = 0x0160, + PROC_Obj_MHole = 0x0161, + PROC_Tag_Magne = 0x0162, + PROC_Obj_BossWarp = 0x0163, + PROC_Obj_WoodPendulum = 0x0164, + PROC_Obj_WdStick = 0x0165, + PROC_Obj_StairBlock = 0x0166, + PROC_Obj_Geyser = 0x0167, + PROC_Tag_KtOnFire = 0x0168, + PROC_Obj_FireWood = 0x0169, + PROC_Obj_FireWood2 = 0x016A, + PROC_Obj_GpTaru = 0x016B, + PROC_Obj_OnsenTaru = 0x016C, + PROC_Obj_KiPot = 0x016D, + PROC_TBOX_SW = 0x016E, + PROC_Obj_SwChain = 0x016F, + PROC_Obj_WoodenSword = 0x0170, + PROC_Obj_StoneMark = 0x0171, + PROC_Obj_Lv3Candle = 0x0172, + PROC_Tag_Lv4Candle = 0x0173, + PROC_Tag_Lv4CandleDm = 0x0174, + PROC_Obj_DamCps = 0x0175, + PROC_Obj_Smoke = 0x0176, + PROC_Obj_WaterFall = 0x0177, + PROC_Obj_ZoraCloth = 0x0178, + PROC_Obj_poFire = 0x0179, + PROC_Tag_poFire = 0x017A, + PROC_Obj_glowSphere = 0x017B, + PROC_Tag_LightBall = 0x017C, + PROC_SwLBall = 0x017D, + PROC_SwBall = 0x017E, + PROC_Obj_WaterEff = 0x017F, + PROC_Tag_RiverBack = 0x0180, + PROC_Tag_KagoFall = 0x0181, + PROC_Tag_Lv2PrChk = 0x0182, + PROC_Obj_Lv4Gear = 0x0183, + PROC_Obj_MasterSword = 0x0184, + PROC_Obj_WoodStatue = 0x0185, + PROC_Obj_Fan = 0x0186, + PROC_Obj_IceLeaf = 0x0187, + PROC_Obj_zrTuraraRc = 0x0188, + PROC_Tag_RetRoom = 0x0189, + PROC_Obj_WindStone = 0x018A, + PROC_Tag_WaraHowl = 0x018B, + PROC_Obj_SCannon = 0x018C, + PROC_Obj_SmWStone = 0x018D, + PROC_Obj_SCannonCrs = 0x018E, + PROC_Tag_SnowEff = 0x018F, + PROC_Tag_CstaSw = 0x0190, + PROC_Tag_Lv6CstaSw = 0x0191, + PROC_Obj_awaPlar = 0x0192, + PROC_Obj_poTbox = 0x0193, + PROC_Obj_TimeFire = 0x0194, + PROC_Obj_TMoon = 0x0195, + PROC_Obj_GanonWall = 0x0196, + PROC_Obj_Prop = 0x0197, + PROC_CSTATUE = 0x0198, + PROC_Obj_SwBallA = 0x0199, + PROC_Obj_SwBallB = 0x019A, + PROC_Obj_SnowSoup = 0x019B, + PROC_Obj_Nagaisu = 0x019C, + PROC_Obj_RCircle = 0x019D, + PROC_Obj_Picture = 0x019E, + PROC_Tag_SetBall = 0x019F, + PROC_Tag_SmkEmt = 0x01A0, + PROC_SwTime = 0x01A1, + PROC_Obj_HFtr = 0x01A2, + PROC_Obj_HBarrel = 0x01A3, + PROC_Obj_Crystal = 0x01A4, + PROC_Obj_SCannonTen = 0x01A5, + PROC_Obj_SwBallC = 0x01A6, + PROC_SCENE_EXIT2 = 0x01A7, + PROC_Obj_Hata = 0x01A8, + PROC_Obj_ToaruMaki = 0x01A9, + PROC_Tag_AttackItem = 0x01AA, + PROC_Tag_RmbitSw = 0x01AB, + PROC_Obj_Sword = 0x01AC, + PROC_Tag_Spring = 0x01AD, + PROC_Tag_Statue = 0x01AE, + PROC_E_AI = 0x01AF, + PROC_E_GS = 0x01B0, + PROC_E_GOB = 0x01B1, + PROC_E_DD = 0x01B2, + PROC_E_DN = 0x01B3, + PROC_E_S1 = 0x01B4, + PROC_E_MF = 0x01B5, + PROC_E_SG = 0x01B6, + PROC_E_BS = 0x01B7, + PROC_E_SF = 0x01B8, + PROC_E_SH = 0x01B9, + PROC_E_DF = 0x01BA, + PROC_E_GM = 0x01BB, + PROC_E_MD = 0x01BC, + PROC_E_SM = 0x01BD, + PROC_E_SM2 = 0x01BE, + PROC_E_ST = 0x01BF, + PROC_E_ST_LINE = 0x01C0, + PROC_E_SB = 0x01C1, + PROC_E_TH = 0x01C2, + PROC_E_CR = 0x01C3, + PROC_E_CR_EGG = 0x01C4, + PROC_E_DB = 0x01C5, + PROC_E_DB_LEAF = 0x01C6, + PROC_E_GA = 0x01C7, + PROC_E_GB = 0x01C8, + PROC_E_HB = 0x01C9, + PROC_E_HB_LEAF = 0x01CA, + PROC_E_HZELDA = 0x01CB, + PROC_E_YD = 0x01CC, + PROC_E_YH = 0x01CD, + PROC_E_YD_LEAF = 0x01CE, + PROC_E_HM = 0x01CF, + PROC_E_TK = 0x01D0, + PROC_E_TK2 = 0x01D1, + PROC_E_TK_BALL = 0x01D2, + PROC_E_RB = 0x01D3, + PROC_E_RD = 0x01D4, + PROC_E_RDB = 0x01D5, + PROC_E_RDY = 0x01D6, + PROC_E_FM = 0x01D7, + PROC_E_FS = 0x01D8, + PROC_E_PM = 0x01D9, + PROC_E_PO = 0x01DA, + PROC_E_MB = 0x01DB, + PROC_E_MK = 0x01DC, + PROC_E_MM = 0x01DD, + PROC_E_FZ = 0x01DE, + PROC_E_ZS = 0x01DF, + PROC_E_KK = 0x01E0, + PROC_E_HP = 0x01E1, + PROC_E_ZH = 0x01E2, + PROC_E_ZM = 0x01E3, + PROC_E_PZ = 0x01E4, + PROC_E_FB = 0x01E5, + PROC_E_FK = 0x01E6, + PROC_E_MS = 0x01E7, + PROC_E_NEST = 0x01E8, + PROC_E_NZ = 0x01E9, + PROC_E_BA = 0x01EA, + PROC_E_BU = 0x01EB, + PROC_E_BUG = 0x01EC, + PROC_E_BEE = 0x01ED, + PROC_E_IS = 0x01EE, + PROC_E_KG = 0x01EF, + PROC_E_KR = 0x01F0, + PROC_E_SW = 0x01F1, + PROC_E_GE = 0x01F2, + PROC_Tag_WatchGe = 0x01F3, + PROC_E_YM = 0x01F4, + PROC_E_YM_TAG = 0x01F5, + PROC_E_YMB = 0x01F6, + PROC_Tag_FWall = 0x01F7, + PROC_Tag_WaterFall = 0x01F8, + PROC_E_YK = 0x01F9, + PROC_E_YR = 0x01FA, + PROC_E_YG = 0x01FB, + PROC_E_HZ = 0x01FC, + PROC_E_WS = 0x01FD, + PROC_E_OC = 0x01FE, + PROC_E_OT = 0x01FF, + PROC_E_DT = 0x0200, + PROC_E_BG = 0x0201, + PROC_E_OctBg = 0x0202, + PROC_DR = 0x0203, + PROC_L7lowDr = 0x0204, + PROC_L7ODR = 0x0205, + PROC_E_TT = 0x0206, + PROC_E_DK = 0x0207, + PROC_E_VT = 0x0208, + PROC_E_WW = 0x0209, + PROC_E_GI = 0x020A, + PROC_B_BH = 0x020B, + PROC_B_BQ = 0x020C, + PROC_B_GM = 0x020D, + PROC_B_GND = 0x020E, + PROC_B_GO = 0x020F, + PROC_B_OH2 = 0x0210, + PROC_B_YO = 0x0211, + PROC_B_YOI = 0x0212, + PROC_B_TN = 0x0213, + PROC_B_GG = 0x0214, + PROC_B_DRE = 0x0215, + PROC_B_MGN = 0x0216, + PROC_E_WAP = 0x0217, + PROC_ITEM = 0x0218, + PROC_Obj_SmallKey = 0x0219, + PROC_Obj_Kantera = 0x021A, + PROC_Obj_LifeContainer = 0x021B, + PROC_Obj_Shield = 0x021C, + PROC_Demo_Item = 0x021D, + PROC_ShopItem = 0x021E, + PROC_Obj_Drop = 0x021F, + PROC_OBJ_RW = 0x0220, + PROC_NBOMB = 0x0221, + PROC_TAG_CSW = 0x0222, + PROC_TAG_QS = 0x0223, + PROC_HOZELDA = 0x0224, + PROC_SWC00 = 0x0225, + PROC_KNOB20 = 0x0226, + PROC_DBDOOR = 0x0227, + PROC_BOSS_DOOR = 0x0228, + PROC_L1BOSS_DOOR = 0x0229, + PROC_L1MBOSS_DOOR = 0x022A, + PROC_L5BOSS_DOOR = 0x022B, + PROC_DSHUTTER = 0x022C, + PROC_SPIRAL_DOOR = 0x022D, + PROC_Tag_ChgRestart = 0x022E, + PROC_Tag_Restart = 0x022F, + PROC_ANDSW = 0x0230, + PROC_ANDSW2 = 0x0231, + PROC_MYNA = 0x0232, + PROC_NPC_GND = 0x0233, + PROC_NPC_GRA = 0x0234, + PROC_NPC_GRC = 0x0235, + PROC_NPC_GRD = 0x0236, + PROC_NPC_GRM = 0x0237, + PROC_NPC_GRMC = 0x0238, + PROC_NPC_GRO = 0x0239, + PROC_NPC_GRR = 0x023A, + PROC_NPC_GRS = 0x023B, + PROC_NPC_GRZ = 0x023C, + PROC_NPC_YAMID = 0x023D, + PROC_NPC_YAMIT = 0x023E, + PROC_NPC_YAMIS = 0x023F, + PROC_NPC_BLUENS = 0x0240, + PROC_NPC_KAKASHI = 0x0241, + PROC_NPC_KDK = 0x0242, + PROC_NPC_ARU = 0x0243, + PROC_NPC_BANS = 0x0244, + PROC_NPC_BESU = 0x0245, + PROC_NPC_BOU = 0x0246, + PROC_NPC_BOU_S = 0x0247, + PROC_NPC_CLERKA = 0x0248, + PROC_NPC_CLERKB = 0x0249, + PROC_NPC_CLERKT = 0x024A, + PROC_NPC_WRESTLER = 0x024B, + PROC_Tag_Arena = 0x024C, + PROC_Tag_Instruction = 0x024D, + PROC_NPC_DOC = 0x024E, + PROC_NPC_GWOLF = 0x024F, + PROC_NPC_LEN = 0x0250, + PROC_NPC_LUD = 0x0251, + PROC_NPC_FAIRY_SEIREI = 0x0252, + PROC_NPC_FAIRY = 0x0253, + PROC_NPC_HANJO = 0x0254, + PROC_NPC_HENNA = 0x0255, + PROC_NPC_HENNA0 = 0x0256, + PROC_NPC_HOZ = 0x0257, + PROC_NPC_JAGAR = 0x0258, + PROC_NPC_KKRI = 0x0259, + PROC_NPC_KN = 0x025A, + PROC_KN_BULLET = 0x025B, + PROC_NPC_KNJ = 0x025C, + PROC_NPC_KOLIN = 0x025D, + PROC_NPC_KOLINB = 0x025E, + PROC_NPC_KYURY = 0x025F, + PROC_NPC_MARO = 0x0260, + PROC_NPC_MIDP = 0x0261, + PROC_NPC_MOI = 0x0262, + PROC_NPC_RACA = 0x0263, + PROC_NPC_SARU = 0x0264, + PROC_NPC_SEIB = 0x0265, + PROC_NPC_SEIC = 0x0266, + PROC_NPC_SEID = 0x0267, + PROC_NPC_SEIRA = 0x0268, + PROC_NPC_SERA2 = 0x0269, + PROC_NPC_SEIREI = 0x026A, + PROC_NPC_SHAMAN = 0x026B, + PROC_NPC_SMARO = 0x026C, + PROC_NPC_SOLA = 0x026D, + PROC_NPC_TARO = 0x026E, + PROC_NPC_PACHI_BESU = 0x026F, + PROC_NPC_PACHI_TARO = 0x0270, + PROC_NPC_PACHI_MARO = 0x0271, + PROC_TAG_PATI = 0x0272, + PROC_NPC_THE = 0x0273, + PROC_NPC_TKJ = 0x0274, + PROC_NPC_TKS = 0x0275, + PROC_NPC_TKC = 0x0276, + PROC_OBJ_TKS = 0x0277, + PROC_NPC_TOBY = 0x0278, + PROC_NPC_URI = 0x0279, + PROC_NPC_YELIA = 0x027A, + PROC_NPC_YKM = 0x027B, + PROC_NPC_YKW = 0x027C, + PROC_NPC_ZANB = 0x027D, + PROC_NPC_ZANT = 0x027E, + PROC_NPC_ZELDA = 0x027F, + PROC_NPC_ZELR = 0x0280, + PROC_NPC_ZELRO = 0x0281, + PROC_OBJ_ZRAFREEZE = 0x0282, + PROC_NPC_ZRC = 0x0283, + PROC_NPC_ZRZ = 0x0284, + PROC_ZRA_MARK = 0x0285, + PROC_MYNA2 = 0x0286, + PROC_TAG_MYNA2 = 0x0287, + PROC_NPC_CD3 = 0x0288, + PROC_Tag_Schedule = 0x0289, + PROC_Tag_Escape = 0x028A, + PROC_NPC_CHAT = 0x028B, + PROC_NPC_SOLDIERa = 0x028C, + PROC_NPC_SOLDIERb = 0x028D, + PROC_PASSER_MNG = 0x028E, + PROC_NPC_PASSER = 0x028F, + PROC_NPC_PASSER2 = 0x0290, + PROC_NPC_POST = 0x0291, + PROC_NPC_POUYA = 0x0292, + PROC_FORMATION_MNG = 0x0293, + PROC_NPC_FGUARD = 0x0294, + PROC_GUARD_MNG = 0x0295, + PROC_TAG_GUARD = 0x0296, + PROC_NPC_GUARD = 0x0297, + PROC_NPC_ASH = 0x0298, + PROC_NPC_ASHB = 0x0299, + PROC_NPC_SHAD = 0x029A, + PROC_NPC_RAFREL = 0x029B, + PROC_NPC_MOIR = 0x029C, + PROC_NPC_IMPAL = 0x029D, + PROC_NPC_SHOE = 0x029E, + PROC_NPC_DOORBOY = 0x029F, + PROC_NPC_PRAYER = 0x02A0, + PROC_NPC_KASIHANA = 0x02A1, + PROC_NPC_KASIKYU = 0x02A2, + PROC_NPC_KASIMICH = 0x02A3, + PROC_NPC_DRSOL = 0x02A4, + PROC_NPC_CHIN = 0x02A5, + PROC_NPC_INS = 0x02A6, + PROC_NPC_SHOP0 = 0x02A7, + PROC_NPC_MK = 0x02A8, + PROC_NPC_P2 = 0x02A9, + PROC_KYTAG00 = 0x02AA, + PROC_KYTAG01 = 0x02AB, + PROC_KYTAG02 = 0x02AC, + PROC_KYTAG03 = 0x02AD, + PROC_KYTAG04 = 0x02AE, + PROC_KYTAG05 = 0x02AF, + PROC_KYTAG06 = 0x02B0, + PROC_KYTAG07 = 0x02B1, + PROC_KYTAG08 = 0x02B2, + PROC_KYTAG09 = 0x02B3, + PROC_KYTAG10 = 0x02B4, + PROC_KYTAG11 = 0x02B5, + PROC_KYTAG12 = 0x02B6, + PROC_KYTAG13 = 0x02B7, + PROC_KYTAG14 = 0x02B8, + PROC_KYTAG15 = 0x02B9, + PROC_KYTAG16 = 0x02BA, + PROC_KYTAG17 = 0x02BB, + PROC_Ykgr = 0x02BC, + PROC_TALK = 0x02BD, + PROC_Obj_Crope = 0x02BE, + PROC_Obj_Bombf = 0x02BF, + PROC_Obj_BkLeaf = 0x02C0, + PROC_Tag_Mhint = 0x02C1, + PROC_Tag_Mmsg = 0x02C2, + PROC_Tag_Mwait = 0x02C3, + PROC_Tag_Mstop = 0x02C4, + PROC_Tag_Stream = 0x02C5, + PROC_Tag_Sppath = 0x02C6, + PROC_Tag_Wljump = 0x02C7, + PROC_Tag_TWGate = 0x02C8, + PROC_Tag_Lv6Gate = 0x02C9, + PROC_Tag_Lv7Gate = 0x02CA, + PROC_Tag_Lv8Gate = 0x02CB, + PROC_Tag_TheBHint = 0x02CC, + PROC_Tag_Assist = 0x02CD, + PROC_DEMO00 = 0x02CE, + PROC_TAG_CAMERA = 0x02CF, + PROC_TAG_CHKPOINT = 0x02D0, + PROC_TAG_EVENT = 0x02D1, + PROC_TAG_EVT = 0x02D2, + PROC_TAG_TELOP = 0x02D3, + PROC_TAG_HOWL = 0x02D4, + PROC_TAG_MSG = 0x02D5, + PROC_TAG_LANTERN = 0x02D6, + PROC_Tag_Mist = 0x02D7, + PROC_DMIDNA = 0x02D8, + PROC_KY_THUNDER = 0x02D9, + PROC_VRBOX = 0x02DA, + PROC_VRBOX2 = 0x02DB, + PROC_BG = 0x02DC, + PROC_SET_BG_OBJ = 0x02DD, + PROC_BG_OBJ = 0x02DE, + PROC_MIRROR = 0x02DF, + PROC_MOVIE_PLAYER = 0x02E0, + PROC_TITLE = 0x02E1, + PROC_FR = 0x02E2, + PROC_ECONT = 0x02E3, + PROC_MG_ROD = 0x02E4, + PROC_E_ARROW = 0x02E5, + PROC_BULLET = 0x02E6, + PROC_SWHIT0 = 0x02E7, + PROC_E_TH_BALL = 0x02E8, + PROC_TAG_EVTAREA = 0x02E9, + PROC_TAG_EVTMSG = 0x02EA, + PROC_TAG_KMSG = 0x02EB, + PROC_TAG_PUSH = 0x02EC, + PROC_E_MK_BO = 0x02ED, + PROC_E_MM_MT = 0x02EE, + PROC_OBJ_KBOX = 0x02EF, + PROC_OBJ_FW = 0x02F0, + PROC_B_GOS = 0x02F1, + PROC_OBJ_YSTONE = 0x02F2, + PROC_MANT = 0x02F3, + PROC_CROD = 0x02F4, + PROC_OBJ_PLEAF = 0x02F5, + PROC_OBJ_KBACKET = 0x02F6, + PROC_OBJ_YBAG = 0x02F7, + PROC_OBJ_PUMPKIN = 0x02F8, + PROC_OBJ_AUTOMATA = 0x02F9, + PROC_OBJ_GADGET = 0x02FA, + PROC_OBJ_KAGO = 0x02FB, + PROC_Obj_Carry = 0x02FC, + PROC_Obj_Stone = 0x02FD, + PROC_OBJ_HB = 0x02FE, + PROC_NPC_INKO = 0x02FF, + PROC_BD = 0x0300, + PROC_Obj_Eff = 0x0301, + PROC_WPILLAR = 0x0302, + PROC_WMARK = 0x0303, + PROC_E_BI = 0x0304, + PROC_E_BI_LEAF = 0x0305, + PROC_START_AND_GOAL = 0x0306, + PROC_NPC_DF = 0x0307, + PROC_ARROW = 0x0308, + PROC_PATH_LINE = 0x0309, + PROC_TAG_ALLMATO = 0x030A, + PROC_Obj_Timer = 0x030B, + PROC_SCENE_EXIT = 0x030C, + PROC_CAMERA = 0x030D, + PROC_CAMERA2 = 0x030E, + PROC_SUSPEND = 0x030F, + PROC_GRASS = 0x0310, + PROC_KYEFF = 0x0311, + PROC_KYEFF2 = 0x0312, + PROC_MSG_OBJECT = 0x0313, + PROC_MENUWINDOW = 0x0314, + PROC_TIMER = 0x0315, + PROC_METER2 = 0x0316, + PROC_GAMEOVER = 0x0317, +}; diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 4d2c6c29e78..e2bf64d5c69 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -4,6 +4,7 @@ // #include "d/d_stage.h" +#include "d/d_procname.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -643,313 +644,922 @@ dStage_roomStatus_c* dStage_roomControl_c::getStatusRoomDt(int i_statusIdx) { return &mStatus[i_statusIdx]; } +#define OBJNAME(name, proc, sub) { name, proc, sub } + /* ############################################################################################## */ /* 803A3B18-803A65CC 000C38 2AB4+00 2/2 0/0 0/0 .data l_objectName */ static dStage_objectNameInf l_objectName[0x38F] = { - {"Grass", 0x0310, 0xFF}, {"kusax1", 0x0310, 0xFF}, {"kusax7", 0x0310, 0xFF}, - {"kusax21", 0x0310, 0xFF}, {"flower", 0x0310, 0xFF}, {"flwr7", 0x0310, 0xFF}, - {"flwr17", 0x0310, 0xFF}, {"pflower", 0x0310, 0xFF}, {"pflwrx7", 0x0310, 0xFF}, - {"door", 0x00E8, 0xFF}, {"kdoor", 0x0226, 0xFF}, {"ddoor", 0x0227, 0xFF}, - {"bdoor", 0x0228, 0xFF}, {"ndoor", 0x00E8, 0xFF}, {"tadoor", 0x00E8, 0xFF}, - {"yodoor", 0x00E8, 0xFF}, {"nadoor", 0x00E8, 0xFF}, {"l9door", 0x00E8, 0xFF}, - {"l7door", 0x00E8, 0xFF}, {"pdoor", 0x00BF, 0xFF}, {"bigdoor", 0x00E8, 0xFF}, - {"kshtr00", 0x0055, 0xFF}, {"vshuter", 0x0055, 0xFF}, {"IzmGate", 0x0157, 0xFF}, - {"NoneCam", 0x030D, 0xFF}, {"NormCam", 0x030D, 0xFF}, {"Link", 0x00FD, 0xFF}, - {"carry00", 0x02FC, 0xFF}, {"carry01", 0x02FC, 0xFF}, {"carry02", 0x02FC, 0xFF}, - {"carry04", 0x02FC, 0xFF}, {"carry05", 0x02FC, 0xFF}, {"carry06", 0x02FC, 0xFF}, - {"carry07", 0x02FC, 0xFF}, {"carry08", 0x02FC, 0xFF}, {"carry09", 0x02FC, 0xFF}, - {"ball1", 0x02FC, 0xFF}, {"ball2", 0x02FC, 0xFF}, {"ball3", 0x02FC, 0xFF}, - {"carry12", 0x02FC, 0xFF}, {"carry13", 0x02FC, 0xFF}, {"TagLite", 0x017C, 0xFF}, - {"InoBone", 0x015F, 0xFF}, {"osiBLK0", 0x001D, 0x00}, {"dmblk", 0x001D, 0x00}, - {"Kkiba", 0x001D, 0x02}, {"smblk", 0x001D, 0x02}, {"Lv4blk", 0x001D, 0xFF}, - {"Lv4blk2", 0x001D, 0xFF}, {"gstone", 0x001D, 0xFF}, {"TagAtt", 0x015A, 0xFF}, - {"mmvbg", 0x02DD, 0xFF}, {"Drop", 0x021F, 0xFF}, {"BkLeaf", 0x02C0, 0xFF}, - {"cylwind", 0x015B, 0xFF}, {"TagTrnd", 0x015C, 0xFF}, {"mvstair", 0x005C, 0xFF}, - {"UHDoor", 0x005D, 0xFF}, {"SwBoom", 0x005E, 0xFF}, {"Swboom", 0x005E, 0xFF}, - {"BoomSht", 0x005F, 0xFF}, {"haihai", 0x0061, 0xFF}, {"stopper", 0x0160, 0xFF}, - {"dstop", 0x00E7, 0xFF}, {"mhole", 0x0161, 0xFF}, {"mhole2", 0x0161, 0xFF}, - {"TagMag", 0x0162, 0xFF}, {"P_Warp", 0x0163, 0xFF}, {"fpillar", 0x015D, 0xFF}, - {"yfire", 0x015E, 0xFF}, {"pfire", 0x015E, 0xFF}, {"Huriko1", 0x0164, 0xFF}, - {"VolBall", 0x00E0, 0xFF}, {"VolBom", 0x00E0, 0xFF}, {"BigVolc", 0x00E1, 0xFF}, - {"geyser", 0x0167, 0xFF}, {"Cwall", 0x007F, 0xFF}, {"Tansu", 0x0083, 0xFF}, - {"Onsen", 0x0082, 0xFF}, {"Obj_bm", 0x0084, 0xFF}, {"lv6bm", 0x008D, 0xFF}, - {"E_bm6", 0x008E, 0xFF}, {"stone", 0x02FD, 0xFF}, {"stoneB", 0x02FD, 0xFF}, - {"TagSpin", 0x00C3, 0xFF}, {"L_RopeS", 0x0085, 0xFF}, {"L_RopeB", 0x0085, 0xFF}, - {"wcover", 0x0086, 0xFF}, {"rstair", 0x00C5, 0xFF}, {"marm", 0x00C6, 0xFF}, - {"turnSw", 0x001E, 0xFF}, {"chainSw", 0x016F, 0xFF}, {"wsword", 0x0170, 0xFF}, - {"iceblk", 0x00DF, 0xFF}, {"KkrSmk", 0x0176, 0xFF}, {"dmele", 0x0092, 0xFF}, - {"wfall", 0x0177, 0xFF}, {"izora", 0x0178, 0xFF}, {"smgdoor", 0x00AB, 0xFF}, - {"smkdoor", 0x00AB, 0xFF}, {"Obj_ava", 0x00AD, 0xFF}, {"thdoor", 0x00B4, 0xFF}, - {"mstrsrd", 0x0184, 0xFF}, {"wimage", 0x0185, 0xFF}, {"sword", 0x01AC, 0xFF}, - {"spring", 0x01AD, 0xFF}, {"BkDoorL", 0x0062, 0xFF}, {"BkDoorR", 0x0062, 0xFF}, - {"IGateL", 0x0064, 0xFF}, {"IGateR", 0x0064, 0xFF}, {"HGateL", 0x0064, 0xFF}, - {"HGateR", 0x0064, 0xFF}, {"K_Gate", 0x0080, 0xFF}, {"R_Gate", 0x0081, 0xFF}, - {"kkanban", 0x00E3, 0xFF}, {"Mhsg6", 0x0024, 0x00}, {"Mhsg9", 0x0024, 0x01}, - {"Mhsg12", 0x0024, 0x02}, {"Mhsg15", 0x0024, 0x03}, {"Mhsg4h", 0x0024, 0x04}, - {"Mhsg3", 0x0024, 0x05}, {"bonbori", 0x0105, 0xFF}, {"Cow", 0x0106, 0xFF}, - {"Peru", 0x0107, 0xFF}, {"Kago", 0x00F4, 0xFF}, {"TagFall", 0x01F8, 0xFF}, - {"Kbota_A", 0x0016, 0x00}, {"Kbota_B", 0x0016, 0x01}, {"KbotaC", 0x0016, 0x02}, - {"Swpush", 0x0016, 0x00}, {"Lv3bota", 0x0016, 0x00}, {"Ksw00_C", 0x0017, 0x02}, - {"hvySw", 0x0018, 0x00}, {"buraA", 0x00C4, 0x00}, {"buraB", 0x00C4, 0x00}, - {"buraA2", 0x00C4, 0x00}, {"buraB2", 0x00C4, 0x00}, {"bura7A", 0x00C4, 0x00}, - {"bura7B", 0x00C4, 0x00}, {"bura7C", 0x00C4, 0x00}, {"bura7D", 0x00C4, 0x00}, - {"bura7E", 0x00C4, 0x00}, {"tbox_sw", 0x016E, 0x00}, {"swLight", 0x00AC, 0x00}, - {"iceleaf", 0x0187, 0x00}, {"swHit", 0x02E7, 0x00}, {"swHit2", 0x02E7, 0x01}, - {"ObjTime", 0x030B, 0xFF}, {"AND_SW", 0x0230, 0xFF}, {"AND_SW2", 0x0231, 0xFF}, - {"ALLdie", 0x0014, 0xFF}, {"rvback", 0x0180, 0xFF}, {"kagoFal", 0x0181, 0xFF}, - {"CrvGate", 0x006F, 0xFF}, {"CrvSaku", 0x0070, 0xFF}, {"CrvWood", 0x0071, 0xFF}, - {"CrvStel", 0x0072, 0xFF}, {"CrvLH", 0x0074, 0xFF}, {"RvRock", 0x0075, 0xFF}, - {"P2a", 0x02A9, 0x00}, {"P2b", 0x02A9, 0x01}, {"P2c", 0x02A9, 0x02}, - {"Gnd", 0x0233, 0xFF}, {"grA", 0x0234, 0xFF}, {"Obj_grA", 0x0021, 0xFF}, - {"Tag_grA", 0x0022, 0xFF}, {"TagYami", 0x0023, 0xFF}, {"grC", 0x0235, 0xFF}, - {"grM", 0x0237, 0xFF}, {"grMC", 0x0238, 0xFF}, {"grS", 0x023B, 0xFF}, - {"grD1", 0x0236, 0xFF}, {"grD", 0x024B, 0x01}, {"grR", 0x023A, 0xFF}, - {"grO", 0x0239, 0xFF}, {"grZ", 0x023C, 0xFF}, {"grARock", 0x0089, 0xFF}, - {"grZRock", 0x008A, 0xFF}, {"osnFire", 0x008C, 0xFF}, {"yamiD", 0x023D, 0xFF}, - {"yamiT", 0x023E, 0xFF}, {"yamiS", 0x023F, 0xFF}, {"Blue_NS", 0x0240, 0xFF}, - {"Kakashi", 0x0241, 0x00}, {"Kdk", 0x0242, 0xFF}, {"Aru", 0x0243, 0xFF}, - {"Bans", 0x0244, 0xFF}, {"Besu", 0x0245, 0xFF}, {"Bou", 0x0246, 0xFF}, - {"BouS", 0x0247, 0x00}, {"clerkA", 0x0248, 0x00}, {"clerkB", 0x0249, 0x00}, - {"clerkT", 0x024A, 0x00}, {"Ash", 0x0298, 0xFF}, {"AshB", 0x0299, 0xFF}, - {"Shad", 0x029A, 0xFF}, {"Rafrel", 0x029B, 0xFF}, {"MoiR", 0x029C, 0xFF}, - {"impal", 0x029D, 0xFF}, {"Coach", 0x0056, 0xFF}, {"TheB", 0x0057, 0xFF}, - {"TgArena", 0x024C, 0xFF}, {"TagInst", 0x024D, 0xFF}, {"GWolf", 0x024F, 0xFF}, - {"Len", 0x0250, 0xFF}, {"Lud", 0x0251, 0xFF}, {"Doc", 0x024E, 0xFF}, - {"FSeirei", 0x0252, 0xFF}, {"Fairy", 0x0253, 0xFF}, {"Hanjo", 0x0254, 0xFF}, - {"Hoz", 0x0257, 0xFF}, {"Jagar", 0x0258, 0xFF}, {"Kkri", 0x0259, 0xFF}, - {"Kn", 0x025A, 0xFF}, {"KnBlt", 0x025B, 0xFF}, {"Knj", 0x025C, 0xFF}, - {"Kolin", 0x025D, 0xFF}, {"Kolinb", 0x025E, 0xFF}, {"Kyury", 0x025F, 0xFF}, - {"Maro", 0x0260, 0xFF}, {"midP", 0x0261, 0xFF}, {"Moi", 0x0262, 0xFF}, - {"Raca", 0x0263, 0xFF}, {"Post", 0x0291, 0xFF}, {"Pouya", 0x0292, 0xFF}, - {"Saru", 0x0264, 0xFF}, {"seiB", 0x0265, 0xFF}, {"seiC", 0x0266, 0xFF}, - {"seiD", 0x0267, 0xFF}, {"Seira", 0x0268, 0xFF}, {"Seira2", 0x0269, 0xFF}, - {"Seirei", 0x026A, 0xFF}, {"Sha", 0x026B, 0xFF}, {"sMaro", 0x026C, 0xFF}, - {"solA", 0x026D, 0xFF}, {"Taro", 0x026E, 0xFF}, {"PA_Besu", 0x026F, 0xFF}, - {"PA_Taro", 0x0270, 0xFF}, {"PA_Maro", 0x0271, 0xFF}, {"TagPati", 0x0272, 0xFF}, - {"The", 0x0273, 0xFF}, {"Tkj", 0x0274, 0xFF}, {"Tks", 0x0275, 0xFF}, - {"ObjTks", 0x0277, 0xFF}, {"Tkc", 0x0276, 0xFF}, {"Tkj2", 0x0109, 0xFF}, - {"Toby", 0x0278, 0xFF}, {"Uri", 0x0279, 0xFF}, {"Yelia", 0x027A, 0xFF}, - {"ykM", 0x027B, 0xFF}, {"ykW", 0x027C, 0xFF}, {"zanB", 0x027D, 0xFF}, - {"Zant", 0x027E, 0xFF}, {"Zelda", 0x027F, 0xFF}, {"ZelR", 0x0280, 0xFF}, - {"ZelRo", 0x0281, 0xFF}, {"zrA", 0x00E5, 0x00}, {"zrS", 0x00E5, 0x01}, - {"zrWF", 0x00E5, 0x02}, {"zrR", 0x00E5, 0x03}, {"zrD", 0x00E5, 0x04}, - {"zrSP", 0x00E5, 0x05}, {"zrSPA", 0x00E5, 0x06}, {"zrF", 0x0282, 0x00}, - {"zrF2", 0x0282, 0x01}, {"zrF3", 0x0282, 0x02}, {"zrC", 0x0283, 0xFF}, - {"zrZ", 0x0284, 0xFF}, {"GrvStn", 0x0087, 0xFF}, {"zrARock", 0x0088, 0xFF}, - {"StAndGl", 0x0306, 0xFF}, {"zrAMark", 0x0285, 0xFF}, {"myna2", 0x0286, 0xFF}, - {"myn2tag", 0x0287, 0xFF}, {"MAN_a", 0x0288, 0x00}, {"MAD_a", 0x0288, 0x01}, - {"MCN_a", 0x0288, 0x02}, {"MON_a", 0x0288, 0x03}, {"MAN_b", 0x0288, 0x04}, - {"MAN_c", 0x0288, 0x05}, {"MAS_a", 0x0288, 0x06}, {"MBN_a", 0x0288, 0x07}, - {"MAN_a2", 0x0288, 0x08}, {"MAD_a2", 0x0288, 0x09}, {"MCN_a2", 0x0288, 0x0A}, - {"MON_a2", 0x0288, 0x0B}, {"MAN_b2", 0x0288, 0x0C}, {"MAN_c2", 0x0288, 0x0D}, - {"MAS_a2", 0x0288, 0x0E}, {"MBN_a2", 0x0288, 0x0F}, {"WAN_a", 0x0288, 0x10}, - {"WAD_a", 0x0288, 0x11}, {"MAT_a", 0x0288, 0x12}, {"WCN_a", 0x0288, 0x13}, - {"WON_a", 0x0288, 0x14}, {"WGN_a", 0x0288, 0x15}, {"WAN_b", 0x0288, 0x16}, - {"WAN_a2", 0x0288, 0x17}, {"WAD_a2", 0x0288, 0x18}, {"MAT_a2", 0x0288, 0x19}, - {"WCN_a2", 0x0288, 0x1A}, {"WON_a2", 0x0288, 0x1B}, {"WGN_a2", 0x0288, 0x1C}, - {"WAN_b2", 0x0288, 0x1D}, {"shoe", 0x029E, 0xFF}, {"DoorBoy", 0x029F, 0xFF}, - {"prayer", 0x02A0, 0xFF}, {"km_Hana", 0x02A1, 0xFF}, {"km_Kyu", 0x02A2, 0xFF}, - {"km_Mich", 0x02A3, 0xFF}, {"NpcChat", 0x028B, 0xFF}, {"chtSolA", 0x028C, 0xFF}, - {"chtSolB", 0x028D, 0xFF}, {"DrSol1", 0x02A4, 0x00}, {"DrSol2", 0x02A4, 0x01}, - {"chin", 0x02A5, 0xFF}, {"ins", 0x02A6, 0xFF}, {"Shop0", 0x02A7, 0xFF}, - {"TagSch", 0x0289, 0xFF}, {"TagEsc", 0x028A, 0xFF}, {"passer", 0x028E, 0x00}, - {"passerL", 0x028E, 0x01}, {"fmtion", 0x0293, 0x00}, {"fmtionL", 0x0293, 0x01}, - {"guard", 0x0295, 0xFF}, {"TgGuard", 0x0296, 0xFF}, {"Mk", 0x02A8, 0xFF}, - {"Obj_Tbi", 0x014D, 0x00}, {"Obj_Uma", 0x014D, 0x01}, {"Obj_knk", 0x014E, 0xFF}, - {"Obj_nmp", 0x0150, 0xFF}, {"Obj_Tie", 0x0151, 0xFF}, {"Obj_Lrp", 0x0152, 0xFF}, - {"Obj_Sit", 0x0153, 0xFF}, {"Ikada", 0x0065, 0xFF}, {"Dust", 0x0076, 0xFF}, - {"Obj_Ita", 0x0077, 0xFF}, {"Ice_l", 0x0066, 0xFF}, {"Ice_s", 0x0067, 0xFF}, - {"E_Make", 0x0068, 0xFF}, {"Bhhashi", 0x0069, 0xFF}, {"Yousei", 0x013F, 0xFF}, - {"G_Kabe", 0x013E, 0xFF}, {"B_ling", 0x013A, 0xFF}, {"kab_o", 0x0140, 0xFF}, - {"I_Cho", 0x0141, 0xFF}, {"I_Kuw", 0x0142, 0xFF}, {"I_Nan", 0x0143, 0xFF}, - {"I_Dan", 0x0144, 0xFF}, {"I_Kam", 0x0145, 0xFF}, {"I_Ten", 0x0146, 0xFF}, - {"I_Ari", 0x0147, 0xFF}, {"I_Kag", 0x0148, 0xFF}, {"I_Tom", 0x014A, 0xFF}, - {"I_Bat", 0x0149, 0xFF}, {"I_Kat", 0x014B, 0xFF}, {"H_Saku", 0x014C, 0xFF}, - {"sm_door", 0x012B, 0xFF}, {"Kaisou", 0x006A, 0xFF}, {"Ni", 0x0108, 0xFF}, - {"Fr", 0x02E2, 0xFF}, {"Sq", 0x010A, 0xFF}, {"Bd", 0x0300, 0xFF}, - {"Obj_ki", 0x0111, 0xFF}, {"Do", 0x010C, 0xFF}, {"Lm", 0x0135, 0x00}, - {"Tr", 0x0135, 0x05}, {"Npc_tr", 0x010E, 0xFF}, {"Npc_lf", 0x010F, 0xFF}, - {"Fish", 0x0136, 0xFF}, {"NPC_TK", 0x0100, 0xFF}, {"Obj_fd", 0x0110, 0xFF}, - {"MYNA", 0x0232, 0xFF}, {"SSITEM", 0x0121, 0xFF}, {"SSDRINK", 0x0120, 0xFF}, - {"TGDRINK", 0x0122, 0xFF}, {"Tag_Btl", 0x0123, 0xFF}, {"lv5soup", 0x0124, 0xFF}, - {"TGMNLIG", 0x0125, 0xFF}, {"TGSPCAM", 0x0126, 0xFF}, {"TGSPITM", 0x0127, 0xFF}, - {"OilTubo", 0x011E, 0xFF}, {"Roten", 0x011F, 0xFF}, {"Pleaf", 0x02F5, 0xFF}, - {"KBacket", 0x02F6, 0xFF}, {"YBag", 0x02F7, 0xFF}, {"Pumpkin", 0x02F8, 0xFF}, - {"Obj_kg", 0x02FB, 0xFF}, {"BbKago", 0x02FB, 0x00}, {"OnKago", 0x02FB, 0x01}, - {"ObjHasi", 0x006B, 0xFF}, {"Thashi", 0x006E, 0xFF}, {"B_Hashi", 0x006C, 0xFF}, - {"E_MD", 0x01BC, 0xFF}, {"E_s1", 0x01B4, 0xFF}, {"E_wb", 0x00EF, 0xFF}, - {"E_rd", 0x01D4, 0xFF}, {"E_rdb", 0x01D5, 0xFF}, {"E_rdy", 0x01D6, 0xFF}, - {"E_fm", 0x01D7, 0xFF}, {"E_dn", 0x01B3, 0xFF}, {"E_mf", 0x01B5, 0xFF}, - {"TreeSh", 0x0031, 0xFF}, {"E_bug", 0x01EC, 0xFF}, {"E_bee", 0x01ED, 0xFF}, - {"E_nest", 0x01E8, 0xFF}, {"E_kr", 0x01F0, 0xFF}, {"E_st", 0x01BF, 0xFF}, - {"E_tk", 0x01D0, 0xFF}, {"E_tk2", 0x01D1, 0xFF}, {"E_th", 0x01C2, 0xFF}, - {"E_cr", 0x01C3, 0xFF}, {"E_df", 0x01BA, 0xFF}, {"E_ph", 0x00E4, 0xFF}, - {"E_fs", 0x01D8, 0xFF}, {"E_SB", 0x01C1, 0xFF}, {"E_HM", 0x01CF, 0xFF}, - {"E_fk", 0x01E6, 0xFF}, {"E_pm", 0x01D9, 0xFF}, {"Npc_ne", 0x010D, 0xFF}, - {"E_db", 0x01C5, 0xFF}, {"E_kg", 0x01EF, 0xFF}, {"E_sh", 0x01B9, 0xFF}, - {"E_sf", 0x01B8, 0xFF}, {"Obj_lb", 0x0027, 0xFF}, {"Obj_kb", 0x02EF, 0xFF}, - {"E_bs", 0x01B7, 0xFF}, {"Sekizoa", 0x0020, 0x00}, {"Sekizob", 0x0020, 0x01}, - {"E_sm", 0x01BD, 0xFF}, {"E_sm2", 0x01BE, 0xFF}, {"ky_tag0", 0x02AA, 0xFF}, - {"ky_tag1", 0x02AB, 0x00}, {"ky_tag2", 0x02AC, 0xFF}, {"ky_tag3", 0x02AB, 0x01}, - {"kytag3", 0x02AD, 0xFF}, {"DK_tag", 0x02AE, 0xFF}, {"PPHole", 0x02AF, 0xFF}, - {"KY_chg", 0x02B0, 0xFF}, {"Plight", 0x02B1, 0xFF}, {"KY_mk", 0x02B2, 0xFF}, - {"Bound", 0x02B3, 0xFF}, {"WC_tag", 0x02AB, 0x02}, {"Sparks", 0x02B4, 0xFF}, - {"Tcntrl", 0x02B5, 0xFF}, {"Drkmst", 0x02B6, 0xFF}, {"Blsnow", 0x02B7, 0xFF}, - {"Savmem", 0x02B8, 0xFF}, {"Zshake", 0x02B9, 0xFF}, {"Pikari", 0x02BA, 0xFF}, - {"Lmask", 0x02BB, 0xFF}, {"E_is", 0x01EE, 0xFF}, {"E_ai", 0x01AF, 0xFF}, - {"E_ba", 0x01EA, 0xFF}, {"E_bu", 0x01EB, 0xFF}, {"E_sw", 0x01F1, 0xFF}, - {"E_ge", 0x01F2, 0xFF}, {"TagGe", 0x01F3, 0xFF}, {"E_ym", 0x01F4, 0xFF}, - {"E_ymt", 0x01F5, 0xFF}, {"E_ymb", 0x01F6, 0xFF}, {"Fwall", 0x01F7, 0xFF}, - {"E_hz", 0x01FC, 0xFF}, {"E_ws", 0x01FD, 0xFF}, {"E_oc", 0x01FE, 0xFF}, - {"E_dt", 0x0200, 0xFF}, {"E_bg", 0x0201, 0xFF}, {"E_octbg", 0x0202, 0xFF}, - {"E_tt", 0x0206, 0xFF}, {"E_dk", 0x0207, 0xFF}, {"E_vt", 0x0208, 0xFF}, - {"E_ww", 0x0209, 0xFF}, {"E_gi", 0x020A, 0xFF}, {"E_mk", 0x01DC, 0xFF}, - {"B_gm", 0x020D, 0xFF}, {"E_gm", 0x01BB, 0xFF}, {"E_gs", 0x01B0, 0xFF}, - {"Npc_ne", 0x010D, 0xFF}, {"Obj_gm", 0x002E, 0xFF}, {"E_mm", 0x01DD, 0xFF}, - {"E_mm2", 0x01DD, 0x01}, {"E_fz", 0x01DE, 0xFF}, {"E_fb", 0x01E5, 0xFF}, - {"E_Zs", 0x01DF, 0xFF}, {"E_kk", 0x01E0, 0xFF}, {"E_hp", 0x01E1, 0xFF}, - {"E_zh", 0x01E2, 0xFF}, {"E_zm", 0x01E3, 0xFF}, {"E_zm2", 0x01E3, 0x01}, - {"E_pz", 0x01E4, 0xFF}, {"Kita", 0x0112, 0xFF}, {"E_nz", 0x01E9, 0xFF}, - {"E_po", 0x01DA, 0xFF}, {"Obj_w0", 0x0028, 0xFF}, {"Obj_w1", 0x0029, 0xFF}, - {"Obj_cb", 0x002A, 0xFF}, {"Obj_mak", 0x002B, 0xFF}, {"Obj_brg", 0x002C, 0xFF}, - {"E_rb", 0x01D3, 0xFF}, {"E_sg", 0x01B6, 0xFF}, {"Obj_tby", 0x002F, 0xFF}, - {"Obj_sw", 0x00F1, 0xFF}, {"Npc_ks", 0x0060, 0xFF}, {"Obj_so", 0x001C, 0xFF}, - {"E_bi", 0x0304, 0xFF}, {"Obj_key", 0x0113, 0xFF}, {"E_hb", 0x01C9, 0xFF}, - {"Obj_hb", 0x02FE, 0xFF}, {"B_bq", 0x020C, 0xFF}, {"B_bh", 0x020B, 0xFF}, - {"B_go", 0x020F, 0xFF}, {"Obj_fw", 0x02F0, 0xFF}, {"E_ga", 0x01C7, 0xFF}, - {"E_gb", 0x01C8, 0xFF}, {"E_wap", 0x0217, 0xFF}, {"Obj_sui", 0x011D, 0xFF}, - {"Obj_bal", 0x011C, 0xFF}, {"Obj_lp", 0x0116, 0xFF}, {"Obj_nd", 0x0128, 0xFF}, - {"Obj_ud", 0x0129, 0xFF}, {"Obj_us", 0x012A, 0xFF}, {"Obj_kn2", 0x011B, 0xFF}, - {"Obj_kyh", 0x0114, 0xFF}, {"Bed", 0x012C, 0xFF}, {"BouMato", 0x012D, 0xFF}, - {"AutoMt", 0x02F9, 0xFF}, {"Gadget", 0x02FA, 0xFF}, {"ItaMato", 0x012E, 0xFF}, - {"Nougu", 0x012F, 0xFF}, {"Stick", 0x0130, 0xFF}, {"Mie", 0x0131, 0xFF}, - {"SkDoor", 0x0132, 0xFF}, {"Sekizo", 0x0133, 0xFF}, {"SMTile", 0x0134, 0xFF}, - {"H_kage", 0x011A, 0xFF}, {"E_ms", 0x01E7, 0xFF}, {"Obj_tp", 0x0030, 0xFF}, - {"Obj_ms", 0x007B, 0xFF}, {"E_gob", 0x01B1, 0xFF}, {"E_yk", 0x01F9, 0xFF}, - {"E_yr", 0x01FA, 0xFF}, {"E_yg", 0x01FB, 0xFF}, {"Obj_fm", 0x0026, 0xFF}, - {"B_ob", 0x00F3, 0xFF}, {"OcHashi", 0x006D, 0xFF}, {"E_dd", 0x01B2, 0xFF}, - {"Obj_rw", 0x0220, 0xFF}, {"Obj_ih", 0x00DE, 0xFF}, {"E_yc", 0x00F5, 0xFF}, - {"B_ds", 0x00F6, 0xFF}, {"B_dr", 0x00F7, 0xFF}, {"B_gg", 0x0214, 0xFF}, - {"B_yo", 0x0211, 0xFF}, {"B_tn", 0x0213, 0xFF}, {"B_zant", 0x00F9, 0xFF}, - {"B_zntm", 0x00F8, 0xFF}, {"B_znts", 0x007D, 0xFF}, {"E_yd", 0x01CC, 0xFF}, - {"E_yh", 0x01CD, 0xFF}, {"Henna", 0x0255, 0xFF}, {"Henna0", 0x0256, 0xFF}, - {"Npc_du", 0x0138, 0x00}, {"Econt", 0x02E3, 0xFF}, {"B_mgn", 0x0216, 0xFF}, - {"Hzelda", 0x01CB, 0xFF}, {"Worm", 0x0101, 0xFF}, {"B_gnd", 0x020E, 0xFF}, - {"Obj_gb", 0x002D, 0xFF}, {"tboxA0", 0x00FB, 0xFF}, {"tboxA1", 0x00FB, 0xFF}, - {"tboxA2", 0x00FB, 0xFF}, {"tboxB0", 0x00FB, 0xFF}, {"tboxB1", 0x00FB, 0xFF}, - {"tboxB2", 0x00FB, 0xFF}, {"tboxJ0", 0x00FB, 0xFF}, {"tboxP0", 0x00FB, 0xFF}, - {"tboxB00", 0x00FB, 0xFF}, {"tboxB01", 0x00FB, 0xFF}, {"tboxW0", 0x00FB, 0xFF}, - {"tboxEL0", 0x00FC, 0xFF}, {"tboxEL1", 0x00FC, 0xFF}, {"l8warp", 0x0163, 0xFF}, - {"L1Bdoor", 0x0229, 0xFF}, {"L2Bdoor", 0x0229, 0xFF}, {"L3Bdoor", 0x0055, 0xFF}, - {"L4Bdoor", 0x0229, 0xFF}, {"L5Bdoor", 0x022B, 0xFF}, {"L6Bdoor", 0x0229, 0xFF}, - {"L7Bdoor", 0x0229, 0xFF}, {"L8Bdoor", 0x0229, 0xFF}, {"L9Bdoor", 0x0229, 0xFF}, - {"L1Mdoor", 0x022A, 0x01}, {"L2Mdoor", 0x022A, 0x02}, {"L3Mdoor", 0x022A, 0x03}, - {"L4Mdoor", 0x022A, 0x04}, {"L5Mdoor", 0x022A, 0x05}, {"L6Mdoor", 0x022A, 0x06}, - {"L7Mdoor", 0x022A, 0x07}, {"L8Mdoor", 0x022A, 0x08}, {"L7door", 0x022A, 0x0A}, - {"L5door", 0x022A, 0x0B}, {"Horse", 0x00EE, 0xFF}, {"Canoe", 0x00ED, 0xFF}, - {"Crope", 0x02BE, 0xFF}, {"Cstatue", 0x0198, 0xFF}, {"CstaF", 0x00BB, 0xFF}, - {"HoZelda", 0x0224, 0xFF}, {"Mhint", 0x02C1, 0xFF}, {"Mmsg", 0x02C2, 0xFF}, - {"Mwait", 0x02C3, 0xFF}, {"Mstop", 0x02C4, 0xFF}, {"MstopE", 0x02C4, 0xFF}, - {"Hinit", 0x00E9, 0xFF}, {"Hjump", 0x00EA, 0xFF}, {"Hstop", 0x00EC, 0xFF}, - {"AJnot", 0x00EB, 0xFF}, {"Wljump", 0x02C7, 0xFF}, {"Sppath", 0x02C6, 0xFF}, - {"Stream", 0x02C5, 0xFF}, {"Gstart", 0x0019, 0xFF}, {"TgTGate", 0x02C8, 0xFF}, - {"Lv6Gate", 0x02C9, 0xFF}, {"Lv7Gate", 0x02CA, 0xFF}, {"Lv8Gate", 0x02CB, 0xFF}, - {"TgTHint", 0x02CC, 0xFF}, {"TagAsst", 0x02CD, 0xFF}, {"Dmidna", 0x02D8, 0xFF}, - {"Fchain", 0x0158, 0xFF}, {"Wchain", 0x0159, 0xFF}, {"Cdoor", 0x0034, 0xFF}, - {"Cgate", 0x0034, 0xFF}, {"Water00", 0x0035, 0xFF}, {"Digpl", 0x0053, 0xFF}, - {"Digholl", 0x0052, 0xFF}, {"Bombf", 0x02BF, 0xFF}, {"hider", 0x030F, 0xFF}, - {"SwAreaC", 0x0225, 0xFF}, {"SwAreaS", 0x0225, 0xFF}, {"SwLBall", 0x017D, 0xFF}, - {"SwBall", 0x017E, 0xFF}, {"thouse", 0x00A7, 0xFF}, {"ironbox", 0x0079, 0xFF}, - {"l6swtrn", 0x001F, 0xFF}, {"l2bmtag", 0x0182, 0xFF}, {"swspin", 0x00B3, 0xFF}, - {"spnGear", 0x0183, 0xFF}, {"fan", 0x0186, 0xFF}, {"tgake", 0x00BA, 0xFF}, - {"tmoon", 0x0195, 0xFF}, {"gwall", 0x0196, 0xFF}, {"gwall2", 0x00C0, 0xFF}, - {"scnChg", 0x030C, 0xFF}, {"scnChg2", 0x01A7, 0xFF}, {"noChgRm", 0x001A, 0xFF}, - {"readRm", 0x001A, 0x00}, {"Tetd", 0x022C, 0xFF}, {"fence", 0x022C, 0xFF}, - {"lv7saku", 0x022C, 0xFF}, {"YkgrON", 0x02BC, 0xFF}, {"YkgrOFF", 0x02BC, 0xFF}, - {"TagEv", 0x02D1, 0xFF}, {"TagEvC", 0x02D1, 0xFF}, {"TagEvt", 0x02D2, 0x00}, - {"TagEvt1", 0x02D2, 0x01}, {"TagHowl", 0x02D4, 0x01}, {"Tag_ms", 0x02D5, 0x00}, - {"LntnTag", 0x02D6, 0xFF}, {"EvtArea", 0x02E9, 0xFF}, {"AllMato", 0x030A, 0xFF}, - {"EvtMsg", 0x02EA, 0xFF}, {"KMsg", 0x02EB, 0xFF}, {"Push", 0x02EC, 0xFF}, - {"Teloper", 0x02D3, 0xFF}, {"CamChg", 0x02CF, 0xFF}, {"CamArea", 0x02CF, 0xFF}, - {"CamAreC", 0x02CF, 0xFF}, {"ChkPntS", 0x02D0, 0xFF}, {"ChkPntC", 0x02D0, 0xFF}, - {"setball", 0x019F, 0xFF}, {"atkItem", 0x01AA, 0xFF}, {"TagStat", 0x01AE, 0xFF}, - {"zdoor", 0x0032, 0xFF}, {"rdoor", 0x0032, 0xFF}, {"STDoa", 0x0032, 0xFF}, - {"hasi00", 0x0033, 0xFF}, {"hasi01", 0x0033, 0xFF}, {"window", 0x0078, 0xFF}, - {"bbox", 0x007A, 0xFF}, {"spiralC", 0x00D4, 0xFF}, {"spiral2", 0x00D4, 0xFF}, - {"digsnow", 0x0090, 0xFF}, {"digsand", 0x00A9, 0xFF}, {"fallobj", 0x00AA, 0xFF}, - {"l7brg", 0x00B5, 0xFF}, {"dr", 0x0203, 0xFF}, {"L7lowDr", 0x0204, 0xFF}, - {"swTime", 0x01A1, 0xFF}, {"pdrobj", 0x00BE, 0xFF}, {"crystal", 0x01A4, 0xFF}, - {"WarpBrg", 0x00DA, 0xFF}, {"WarpB2", 0x00DA, 0xFF}, {"WarpOB1", 0x00DB, 0x00}, - {"WarpOB2", 0x00DB, 0x01}, {"VolcGnd", 0x00E2, 0xFF}, {"r09wtr", 0x017F, 0xFF}, - {"ballSw", 0x0199, 0xFF}, {"lballSw", 0x019A, 0xFF}, {"lbsw", 0x01A6, 0xFF}, - {"R50Sand", 0x00BD, 0xFF}, {"rwall", 0x00BC, 0xFF}, {"l4brg", 0x00C1, 0xFF}, - {"l4floor", 0x00C2, 0xFF}, {"item", 0x0218, 0xFF}, {"itemKey", 0x0219, 0xFF}, - {"kantera", 0x021A, 0xFF}, {"witem", 0x0218, 0xFF}, {"wshield", 0x021C, 0xFF}, - {"htPiece", 0x021B, 0xFF}, {"htCase", 0x021B, 0xFF}, {"Mbrid15", 0x0036, 0xFF}, - {"Mbrid9", 0x0036, 0xFF}, {"maglift", 0x0037, 0xFF}, {"Cldst00", 0x0039, 0xFF}, - {"Cldst01", 0x003A, 0xFF}, {"RMback0", 0x022F, 0xFF}, {"RMback1", 0x022E, 0xFF}, - {"Mist", 0x02D7, 0xFF}, {"magLifR", 0x0038, 0xFF}, {"TCdlst", 0x003B, 0xFF}, - {"wdstick", 0x0165, 0xFF}, {"stBlock", 0x0166, 0xFF}, {"hsMato", 0x003C, 0xFF}, - {"ktFire", 0x0168, 0xFF}, {"hswitch", 0x003D, 0xFF}, {"goGate", 0x003E, 0xFF}, - {"taAmi", 0x003F, 0xFF}, {"fireWd", 0x0169, 0xFF}, {"fireWd2", 0x016A, 0xFF}, - {"altar", 0x0040, 0xFF}, {"gpTaru", 0x016B, 0xFF}, {"spinLf", 0x0041, 0xFF}, - {"bmWin", 0x0042, 0xFF}, {"roofHl", 0x0043, 0xFF}, {"syRock", 0x0045, 0xFF}, - {"wColumn", 0x0044, 0xFF}, {"kpot", 0x016D, 0xFF}, {"bsGate", 0x0046, 0xFF}, - {"amiShut", 0x0047, 0xFF}, {"kwhel00", 0x00C7, 0xFF}, {"kwhel01", 0x00C8, 0xFF}, - {"PRElvtr", 0x00CA, 0xFF}, {"swhel00", 0x00C7, 0xFF}, {"M_hasu", 0x00CB, 0xFF}, - {"yiblltr", 0x00CC, 0xFF}, {"l6egate", 0x00CD, 0xFF}, {"l6eleva", 0x001B, 0xFF}, - {"wtGate", 0x0048, 0xFF}, {"candlL2", 0x0049, 0xFF}, {"togeTp", 0x004A, 0xFF}, - {"rotTrap", 0x004B, 0xFF}, {"klift00", 0x00D1, 0xFF}, {"l4chand", 0x00D3, 0xFF}, - {"Ychndlr", 0x00C9, 0xFF}, {"hbmbkoy", 0x00D8, 0xFF}, {"TagCsw", 0x0222, 0xFF}, - {"TagCswO", 0x0222, 0xFF}, {"P_Rwall", 0x00D0, 0xFF}, {"PDtile", 0x00CE, 0xFF}, - {"PDwall", 0x00CF, 0xFF}, {"Qs", 0x0223, 0xFF}, {"mirror", 0x02DF, 0xFF}, - {"rGate", 0x004C, 0xFF}, {"l3water", 0x00D5, 0xFF}, {"l3wat02", 0x00D6, 0xFF}, - {"l3watB", 0x00D7, 0xFF}, {"szbridg", 0x00D9, 0xFF}, {"kjgjs", 0x00DD, 0xFF}, - {"kjs", 0x00DD, 0xFF}, {"candlL3", 0x0172, 0xFF}, {"l5icewl", 0x004D, 0xFF}, - {"Turara", 0x0050, 0xFF}, {"twGate", 0x0051, 0xFF}, {"L4cdlTg", 0x0173, 0xFF}, - {"L4cddTg", 0x0174, 0xFF}, {"togeRol", 0x0093, 0xFF}, {"l6TogeT", 0x0094, 0xFF}, - {"Tenbin", 0x0095, 0xFF}, {"l6Lblk", 0x0097, 0xFF}, {"l6SwGt", 0x0096, 0xFF}, - {"l6ChBlk", 0x0098, 0xFF}, {"l6FuriT", 0x0099, 0xFF}, {"KHdesk", 0x008F, 0xFF}, - {"Ytaihou", 0x0091, 0xFF}, {"L4eShut", 0x009B, 0xFF}, {"pofire", 0x0179, 0xFF}, - {"pofiTg", 0x017A, 0xFF}, {"poCandl", 0x00A8, 0xFF}, {"L4Gate", 0x009C, 0xFF}, - {"L4Pgate", 0x009D, 0xFF}, {"L4SWall", 0x009E, 0xFF}, {"L4hmato", 0x009F, 0xFF}, - {"propy", 0x00A0, 0xFF}, {"L7BsGt", 0x00A1, 0xFF}, {"optLift", 0x00A2, 0xFF}, - {"kkiTrap", 0x00A3, 0xFF}, {"L8LiftX", 0x00A4, 0xFF}, {"swStep", 0x00A5, 0xFF}, - {"L9SwSht", 0x00A6, 0xFF}, {"L5SwIce", 0x004E, 0xFF}, {"glwSph", 0x017B, 0xFF}, - {"MR_Scrw", 0x00AE, 0xFF}, {"MR_Sand", 0x00AF, 0xFF}, {"MR_Tble", 0x00B0, 0xFF}, - {"MR_Chin", 0x00B1, 0xFF}, {"MR_Pole", 0x00B2, 0xFF}, {"PPolamp", 0x0102, 0xFF}, - {"l5hYuka", 0x004F, 0xFF}, {"BYRock", 0x0103, 0xFF}, {"zrDrock", 0x00B6, 0xFF}, - {"tkrDai", 0x00B7, 0xFF}, {"Table", 0x00B8, 0xFF}, {"CatDoor", 0x00B9, 0xFF}, - {"RetTag", 0x0189, 0xFF}, {"WdStone", 0x018A, 0xFF}, {"HwlWara", 0x018B, 0xFF}, - {"SCannon", 0x018C, 0xFF}, {"szGate", 0x009A, 0xFF}, {"onsTaru", 0x016C, 0xFF}, - {"WStoneF", 0x018D, 0xFF}, {"SCanCrs", 0x018E, 0xFF}, {"snwEfTg", 0x018F, 0xFF}, - {"tmFire", 0x0194, 0xFF}, {"L7Prop", 0x0197, 0xFF}, {"awaPlar", 0x0192, 0xFF}, - {"poTbox", 0x0193, 0xFF}, {"SnwSoup", 0x019B, 0xFF}, {"Nagaisu", 0x019C, 0xFF}, - {"RCircle", 0x019D, 0xFF}, {"L9Chand", 0x00E6, 0xFF}, {"L9Pictr", 0x019E, 0xFF}, - {"SmkEmt", 0x01A0, 0xFF}, {"HFtr", 0x01A2, 0xFF}, {"HBarrel", 0x01A3, 0xFF}, - {"SCanTen", 0x01A5, 0xFF}, {"cstaSw", 0x0190, 0xFF}, {"l6cstSw", 0x0191, 0xFF}, - {"Hata", 0x01A8, 0xFF}, {"RmbitSw", 0x01AB, 0xFF}, {"T_Maki", 0x01A9, 0xFF}, - {"d_act", 0x02CE, 0xFF}, {"d_act0", 0x02CE, 0x00}, {"d_act1", 0x02CE, 0x01}, - {"d_act2", 0x02CE, 0x02}, {"d_act3", 0x02CE, 0x03}, {"d_act4", 0x02CE, 0x04}, - {"d_act5", 0x02CE, 0x05}, {"d_act6", 0x02CE, 0x06}, {"d_act7", 0x02CE, 0x07}, - {"d_act8", 0x02CE, 0x08}, {"d_act9", 0x02CE, 0x09}, {"d_act10", 0x02CE, 0x0A}, - {"d_act11", 0x02CE, 0x0B}, {"d_act12", 0x02CE, 0x0C}, {"d_act13", 0x02CE, 0x0D}, - {"d_act14", 0x02CE, 0x0E}, {"d_act15", 0x02CE, 0x0F}, {"d_act16", 0x02CE, 0x10}, - {"d_act17", 0x02CE, 0x11}, {"d_act18", 0x02CE, 0x12}, {"d_act19", 0x02CE, 0x13}, - {"d_act20", 0x02CE, 0x14}, {"d_act21", 0x02CE, 0x15}, {"d_act22", 0x02CE, 0x16}, - {"d_act23", 0x02CE, 0x17}, {"d_act24", 0x02CE, 0x18}, {"d_act25", 0x02CE, 0x19}, - {"d_act26", 0x02CE, 0x1A}, {"d_act27", 0x02CE, 0x1B}, {"d_act28", 0x02CE, 0x1C}, - {"d_act29", 0x02CE, 0x1D}, {"d_act30", 0x02CE, 0x1E}, {"d_act31", 0x02CE, 0x1F}, - {"TLogo", 0x02E1, 0xFF}, {"ClearB", 0x0063, 0xFF}, {"Bg", 0x02DC, 0xFF}, - {"Boom", 0x00FE, 0xFF}, {"Nbomb", 0x0221, 0xFF}, {"Arrow", 0x0308, 0xFF}, - {"E_Arrow", 0x02E5, 0xFF}, {"Spinner", 0x00F2, 0xFF}, {"Crod", 0x02F4, 0xFF}, - {"Midna", 0x00FF, 0xFF}, {"Vrbox", 0x02DA, 0xFF}, {"Vrbox2", 0x02DB, 0xFF}, - {"mvbg_a", 0x02DE, 0xFF}, {"burnBox", 0x00DC, 0xFF}, {"stnMark", 0x0171, 0xFF}, - {"Passer", 0x028F, 0xFF}, {"Passer2", 0x0290, 0xFF}, {"ShopItm", 0x021E, 0xFF}, - {"E_yd_lf", 0x01CE, 0xFF}, {"E_db_lf", 0x01C6, 0xFF}, {"E_hb_lf", 0x01CA, 0xFF}, - {"E_bi_lf", 0x0305, 0xFF}, {"O_Mato", 0x013A, 0xFF}, {"O_Flag", 0x013B, 0xFF}, - {"O_Flag2", 0x013C, 0xFF}, {"O_Flag3", 0x013D, 0xFF}, {"CRVLH_U", 0x0073, 0xFF}, - {"DemoItm", 0x021D, 0xFF}, {"EndCode", 0x000B, 0xFF}, + OBJNAME("Grass", PROC_GRASS, 0xFF), + OBJNAME("kusax1", PROC_GRASS, 0xFF), + OBJNAME("kusax7", PROC_GRASS, 0xFF), + OBJNAME("kusax21", PROC_GRASS, 0xFF), + OBJNAME("flower", PROC_GRASS, 0xFF), + OBJNAME("flwr7", PROC_GRASS, 0xFF), + OBJNAME("flwr17", PROC_GRASS, 0xFF), + OBJNAME("pflower", PROC_GRASS, 0xFF), + OBJNAME("pflwrx7", PROC_GRASS, 0xFF), + OBJNAME("door", PROC_DOOR20, 0xFF), + OBJNAME("kdoor", PROC_KNOB20, 0xFF), + OBJNAME("ddoor", PROC_DBDOOR, 0xFF), + OBJNAME("bdoor", PROC_BOSS_DOOR, 0xFF), + OBJNAME("ndoor", PROC_DOOR20, 0xFF), + OBJNAME("tadoor", PROC_DOOR20, 0xFF), + OBJNAME("yodoor", PROC_DOOR20, 0xFF), + OBJNAME("nadoor", PROC_DOOR20, 0xFF), + OBJNAME("l9door", PROC_DOOR20, 0xFF), + OBJNAME("l7door", PROC_DOOR20, 0xFF), + OBJNAME("pdoor", PROC_PushDoor, 0xFF), + OBJNAME("bigdoor", PROC_DOOR20, 0xFF), + OBJNAME("kshtr00", PROC_Obj_Kshutter, 0xFF), + OBJNAME("vshuter", PROC_Obj_Kshutter, 0xFF), + OBJNAME("IzmGate", PROC_Izumi_Gate, 0xFF), + OBJNAME("NoneCam", PROC_CAMERA, 0xFF), + OBJNAME("NormCam", PROC_CAMERA, 0xFF), + OBJNAME("Link", PROC_ALINK, 0xFF), + OBJNAME("carry00", PROC_Obj_Carry, 0xFF), + OBJNAME("carry01", PROC_Obj_Carry, 0xFF), + OBJNAME("carry02", PROC_Obj_Carry, 0xFF), + OBJNAME("carry04", PROC_Obj_Carry, 0xFF), + OBJNAME("carry05", PROC_Obj_Carry, 0xFF), + OBJNAME("carry06", PROC_Obj_Carry, 0xFF), + OBJNAME("carry07", PROC_Obj_Carry, 0xFF), + OBJNAME("carry08", PROC_Obj_Carry, 0xFF), + OBJNAME("carry09", PROC_Obj_Carry, 0xFF), + OBJNAME("ball1", PROC_Obj_Carry, 0xFF), + OBJNAME("ball2", PROC_Obj_Carry, 0xFF), + OBJNAME("ball3", PROC_Obj_Carry, 0xFF), + OBJNAME("carry12", PROC_Obj_Carry, 0xFF), + OBJNAME("carry13", PROC_Obj_Carry, 0xFF), + OBJNAME("TagLite", PROC_Tag_LightBall, 0xFF), + OBJNAME("InoBone", PROC_Obj_InoBone, 0xFF), + OBJNAME("osiBLK0", PROC_Obj_Movebox, 0x00), + OBJNAME("dmblk", PROC_Obj_Movebox, 0x00), + OBJNAME("Kkiba", PROC_Obj_Movebox, 0x02), + OBJNAME("smblk", PROC_Obj_Movebox, 0x02), + OBJNAME("Lv4blk", PROC_Obj_Movebox, 0xFF), + OBJNAME("Lv4blk2", PROC_Obj_Movebox, 0xFF), + OBJNAME("gstone", PROC_Obj_Movebox, 0xFF), + OBJNAME("TagAtt", PROC_Tag_Attp, 0xFF), + OBJNAME("mmvbg", PROC_SET_BG_OBJ, 0xFF), + OBJNAME("Drop", PROC_Obj_Drop, 0xFF), + OBJNAME("BkLeaf", PROC_Obj_BkLeaf, 0xFF), + OBJNAME("cylwind", PROC_Obj_Tornado, 0xFF), + OBJNAME("TagTrnd", PROC_Obj_Tornado2, 0xFF), + OBJNAME("mvstair", PROC_Obj_MvStair, 0xFF), + OBJNAME("UHDoor", PROC_Obj_Cowdoor, 0xFF), + OBJNAME("SwBoom", PROC_Obj_Swpropeller, 0xFF), + OBJNAME("Swboom", PROC_Obj_Swpropeller, 0xFF), + OBJNAME("BoomSht", PROC_Obj_BoomShutter, 0xFF), + OBJNAME("haihai", PROC_Obj_Hfuta, 0xFF), + OBJNAME("stopper", PROC_Obj_Stopper, 0xFF), + OBJNAME("dstop", PROC_Obj_Stopper2, 0xFF), + OBJNAME("mhole", PROC_Obj_MHole, 0xFF), + OBJNAME("mhole2", PROC_Obj_MHole, 0xFF), + OBJNAME("TagMag", PROC_Tag_Magne, 0xFF), + OBJNAME("P_Warp", PROC_Obj_BossWarp, 0xFF), + OBJNAME("fpillar", PROC_Obj_FirePillar, 0xFF), + OBJNAME("yfire", PROC_Obj_FirePillar2, 0xFF), + OBJNAME("pfire", PROC_Obj_FirePillar2, 0xFF), + OBJNAME("Huriko1", PROC_Obj_WoodPendulum, 0xFF), + OBJNAME("VolBall", PROC_Obj_VolcanicBall, 0xFF), + OBJNAME("VolBom", PROC_Obj_VolcanicBall, 0xFF), + OBJNAME("BigVolc", PROC_Obj_VolcanicBomb, 0xFF), + OBJNAME("geyser", PROC_Obj_Geyser, 0xFF), + OBJNAME("Cwall", PROC_Obj_ChainWall, 0xFF), + OBJNAME("Tansu", PROC_Obj_Chest, 0xFF), + OBJNAME("Onsen", PROC_Obj_Onsen, 0xFF), + OBJNAME("Obj_bm", PROC_Obj_Bemos, 0xFF), + OBJNAME("lv6bm", PROC_Obj_Lv6bemos, 0xFF), + OBJNAME("E_bm6", PROC_Obj_Lv6bemos2, 0xFF), + OBJNAME("stone", PROC_Obj_Stone, 0xFF), + OBJNAME("stoneB", PROC_Obj_Stone, 0xFF), + OBJNAME("TagSpin", PROC_Tag_Spinner, 0xFF), + OBJNAME("L_RopeS", PROC_Obj_RopeBridge, 0xFF), + OBJNAME("L_RopeB", PROC_Obj_RopeBridge, 0xFF), + OBJNAME("wcover", PROC_Obj_WellCover, 0xFF), + OBJNAME("rstair", PROC_Obj_RotStair, 0xFF), + OBJNAME("marm", PROC_Obj_MagneArm, 0xFF), + OBJNAME("turnSw", PROC_Obj_SwTurn, 0xFF), + OBJNAME("chainSw", PROC_Obj_SwChain, 0xFF), + OBJNAME("wsword", PROC_Obj_WoodenSword, 0xFF), + OBJNAME("iceblk", PROC_Obj_IceBlock, 0xFF), + OBJNAME("KkrSmk", PROC_Obj_Smoke, 0xFF), + OBJNAME("dmele", PROC_Obj_Elevator, 0xFF), + OBJNAME("wfall", PROC_Obj_WaterFall, 0xFF), + OBJNAME("izora", PROC_Obj_ZoraCloth, 0xFF), + OBJNAME("smgdoor", PROC_Obj_SmgDoor, 0xFF), + OBJNAME("smkdoor", PROC_Obj_SmgDoor, 0xFF), + OBJNAME("Obj_ava", PROC_Obj_Avalanche, 0xFF), + OBJNAME("thdoor", PROC_Obj_TDoor, 0xFF), + OBJNAME("mstrsrd", PROC_Obj_MasterSword, 0xFF), + OBJNAME("wimage", PROC_Obj_WoodStatue, 0xFF), + OBJNAME("sword", PROC_Obj_Sword, 0xFF), + OBJNAME("spring", PROC_Tag_Spring, 0xFF), + OBJNAME("BkDoorL", PROC_Obj_BkDoor, 0xFF), + OBJNAME("BkDoorR", PROC_Obj_BkDoor, 0xFF), + OBJNAME("IGateL", PROC_Obj_MGate, 0xFF), + OBJNAME("IGateR", PROC_Obj_MGate, 0xFF), + OBJNAME("HGateL", PROC_Obj_MGate, 0xFF), + OBJNAME("HGateR", PROC_Obj_MGate, 0xFF), + OBJNAME("K_Gate", PROC_Obj_KkrGate, 0xFF), + OBJNAME("R_Gate", PROC_Obj_RiderGate, 0xFF), + OBJNAME("kkanban", PROC_Obj_KKanban, 0xFF), + OBJNAME("Mhsg6", PROC_Obj_Ladder, 0x00), + OBJNAME("Mhsg9", PROC_Obj_Ladder, 0x01), + OBJNAME("Mhsg12", PROC_Obj_Ladder, 0x02), + OBJNAME("Mhsg15", PROC_Obj_Ladder, 0x03), + OBJNAME("Mhsg4h", PROC_Obj_Ladder, 0x04), + OBJNAME("Mhsg3", PROC_Obj_Ladder, 0x05), + OBJNAME("bonbori", PROC_EP, 0xFF), + OBJNAME("Cow", PROC_COW, 0xFF), + OBJNAME("Peru", PROC_PERU, 0xFF), + OBJNAME("Kago", PROC_KAGO, 0xFF), + OBJNAME("TagFall", PROC_Tag_WaterFall, 0xFF), + OBJNAME("Kbota_A", PROC_Obj_Swpush, 0x00), + OBJNAME("Kbota_B", PROC_Obj_Swpush, 0x01), + OBJNAME("KbotaC", PROC_Obj_Swpush, 0x02), + OBJNAME("Swpush", PROC_Obj_Swpush, 0x00), + OBJNAME("Lv3bota", PROC_Obj_Swpush, 0x00), + OBJNAME("Ksw00_C", PROC_Obj_Swpush2, 0x02), + OBJNAME("hvySw", PROC_Obj_Swpush5, 0x00), + OBJNAME("buraA", PROC_Obj_SwHang, 0x00), + OBJNAME("buraB", PROC_Obj_SwHang, 0x00), + OBJNAME("buraA2", PROC_Obj_SwHang, 0x00), + OBJNAME("buraB2", PROC_Obj_SwHang, 0x00), + OBJNAME("bura7A", PROC_Obj_SwHang, 0x00), + OBJNAME("bura7B", PROC_Obj_SwHang, 0x00), + OBJNAME("bura7C", PROC_Obj_SwHang, 0x00), + OBJNAME("bura7D", PROC_Obj_SwHang, 0x00), + OBJNAME("bura7E", PROC_Obj_SwHang, 0x00), + OBJNAME("tbox_sw", PROC_TBOX_SW, 0x00), + OBJNAME("swLight", PROC_Obj_SwLight, 0x00), + OBJNAME("iceleaf", PROC_Obj_IceLeaf, 0x00), + OBJNAME("swHit", PROC_SWHIT0, 0x00), + OBJNAME("swHit2", PROC_SWHIT0, 0x01), + OBJNAME("ObjTime", PROC_Obj_Timer, 0xFF), + OBJNAME("AND_SW", PROC_ANDSW, 0xFF), + OBJNAME("AND_SW2", PROC_ANDSW2, 0xFF), + OBJNAME("ALLdie", PROC_ALLDIE, 0xFF), + OBJNAME("rvback", PROC_Tag_RiverBack, 0xFF), + OBJNAME("kagoFal", PROC_Tag_KagoFall, 0xFF), + OBJNAME("CrvGate", PROC_Obj_CRVGATE, 0xFF), + OBJNAME("CrvSaku", PROC_Obj_CRVFENCE, 0xFF), + OBJNAME("CrvWood", PROC_Obj_CRVHAHEN, 0xFF), + OBJNAME("CrvStel", PROC_Obj_CRVSTEEL, 0xFF), + OBJNAME("CrvLH", PROC_Obj_CRVLH_DW, 0xFF), + OBJNAME("RvRock", PROC_Obj_RIVERROCK, 0xFF), + OBJNAME("P2a", PROC_NPC_P2, 0x00), + OBJNAME("P2b", PROC_NPC_P2, 0x01), + OBJNAME("P2c", PROC_NPC_P2, 0x02), + OBJNAME("Gnd", PROC_NPC_GND, 0xFF), + OBJNAME("grA", PROC_NPC_GRA, 0xFF), + OBJNAME("Obj_grA", PROC_OBJ_GRA, 0xFF), + OBJNAME("Tag_grA", PROC_TAG_GRA, 0xFF), + OBJNAME("TagYami", PROC_TAG_YAMI, 0xFF), + OBJNAME("grC", PROC_NPC_GRC, 0xFF), + OBJNAME("grM", PROC_NPC_GRM, 0xFF), + OBJNAME("grMC", PROC_NPC_GRMC, 0xFF), + OBJNAME("grS", PROC_NPC_GRS, 0xFF), + OBJNAME("grD1", PROC_NPC_GRD, 0xFF), + OBJNAME("grD", PROC_NPC_WRESTLER, 0x01), + OBJNAME("grR", PROC_NPC_GRR, 0xFF), + OBJNAME("grO", PROC_NPC_GRO, 0xFF), + OBJNAME("grZ", PROC_NPC_GRZ, 0xFF), + OBJNAME("grARock", PROC_Obj_GraRock, 0xFF), + OBJNAME("grZRock", PROC_Obj_GrzRock, 0xFF), + OBJNAME("osnFire", PROC_OBJ_ONSEN_FIRE, 0xFF), + OBJNAME("yamiD", PROC_NPC_YAMID, 0xFF), + OBJNAME("yamiT", PROC_NPC_YAMIT, 0xFF), + OBJNAME("yamiS", PROC_NPC_YAMIS, 0xFF), + OBJNAME("Blue_NS", PROC_NPC_BLUENS, 0xFF), + OBJNAME("Kakashi", PROC_NPC_KAKASHI, 0x00), + OBJNAME("Kdk", PROC_NPC_KDK, 0xFF), + OBJNAME("Aru", PROC_NPC_ARU, 0xFF), + OBJNAME("Bans", PROC_NPC_BANS, 0xFF), + OBJNAME("Besu", PROC_NPC_BESU, 0xFF), + OBJNAME("Bou", PROC_NPC_BOU, 0xFF), + OBJNAME("BouS", PROC_NPC_BOU_S, 0x00), + OBJNAME("clerkA", PROC_NPC_CLERKA, 0x00), + OBJNAME("clerkB", PROC_NPC_CLERKB, 0x00), + OBJNAME("clerkT", PROC_NPC_CLERKT, 0x00), + OBJNAME("Ash", PROC_NPC_ASH, 0xFF), + OBJNAME("AshB", PROC_NPC_ASHB, 0xFF), + OBJNAME("Shad", PROC_NPC_SHAD, 0xFF), + OBJNAME("Rafrel", PROC_NPC_RAFREL, 0xFF), + OBJNAME("MoiR", PROC_NPC_MOIR, 0xFF), + OBJNAME("impal", PROC_NPC_IMPAL, 0xFF), + OBJNAME("Coach", PROC_NPC_COACH, 0xFF), + OBJNAME("TheB", PROC_NPC_THEB, 0xFF), + OBJNAME("TgArena", PROC_Tag_Arena, 0xFF), + OBJNAME("TagInst", PROC_Tag_Instruction, 0xFF), + OBJNAME("GWolf", PROC_NPC_GWOLF, 0xFF), + OBJNAME("Len", PROC_NPC_LEN, 0xFF), + OBJNAME("Lud", PROC_NPC_LUD, 0xFF), + OBJNAME("Doc", PROC_NPC_DOC, 0xFF), + OBJNAME("FSeirei", PROC_NPC_FAIRY_SEIREI, 0xFF), + OBJNAME("Fairy", PROC_NPC_FAIRY, 0xFF), + OBJNAME("Hanjo", PROC_NPC_HANJO, 0xFF), + OBJNAME("Hoz", PROC_NPC_HOZ, 0xFF), + OBJNAME("Jagar", PROC_NPC_JAGAR, 0xFF), + OBJNAME("Kkri", PROC_NPC_KKRI, 0xFF), + OBJNAME("Kn", PROC_NPC_KN, 0xFF), + OBJNAME("KnBlt", PROC_KN_BULLET, 0xFF), + OBJNAME("Knj", PROC_NPC_KNJ, 0xFF), + OBJNAME("Kolin", PROC_NPC_KOLIN, 0xFF), + OBJNAME("Kolinb", PROC_NPC_KOLINB, 0xFF), + OBJNAME("Kyury", PROC_NPC_KYURY, 0xFF), + OBJNAME("Maro", PROC_NPC_MARO, 0xFF), + OBJNAME("midP", PROC_NPC_MIDP, 0xFF), + OBJNAME("Moi", PROC_NPC_MOI, 0xFF), + OBJNAME("Raca", PROC_NPC_RACA, 0xFF), + OBJNAME("Post", PROC_NPC_POST, 0xFF), + OBJNAME("Pouya", PROC_NPC_POUYA, 0xFF), + OBJNAME("Saru", PROC_NPC_SARU, 0xFF), + OBJNAME("seiB", PROC_NPC_SEIB, 0xFF), + OBJNAME("seiC", PROC_NPC_SEIC, 0xFF), + OBJNAME("seiD", PROC_NPC_SEID, 0xFF), + OBJNAME("Seira", PROC_NPC_SEIRA, 0xFF), + OBJNAME("Seira2", PROC_NPC_SERA2, 0xFF), + OBJNAME("Seirei", PROC_NPC_SEIREI, 0xFF), + OBJNAME("Sha", PROC_NPC_SHAMAN, 0xFF), + OBJNAME("sMaro", PROC_NPC_SMARO, 0xFF), + OBJNAME("solA", PROC_NPC_SOLA, 0xFF), + OBJNAME("Taro", PROC_NPC_TARO, 0xFF), + OBJNAME("PA_Besu", PROC_NPC_PACHI_BESU, 0xFF), + OBJNAME("PA_Taro", PROC_NPC_PACHI_TARO, 0xFF), + OBJNAME("PA_Maro", PROC_NPC_PACHI_MARO, 0xFF), + OBJNAME("TagPati", PROC_TAG_PATI, 0xFF), + OBJNAME("The", PROC_NPC_THE, 0xFF), + OBJNAME("Tkj", PROC_NPC_TKJ, 0xFF), + OBJNAME("Tks", PROC_NPC_TKS, 0xFF), + OBJNAME("ObjTks", PROC_OBJ_TKS, 0xFF), + OBJNAME("Tkc", PROC_NPC_TKC, 0xFF), + OBJNAME("Tkj2", PROC_NPC_TKJ2, 0xFF), + OBJNAME("Toby", PROC_NPC_TOBY, 0xFF), + OBJNAME("Uri", PROC_NPC_URI, 0xFF), + OBJNAME("Yelia", PROC_NPC_YELIA, 0xFF), + OBJNAME("ykM", PROC_NPC_YKM, 0xFF), + OBJNAME("ykW", PROC_NPC_YKW, 0xFF), + OBJNAME("zanB", PROC_NPC_ZANB, 0xFF), + OBJNAME("Zant", PROC_NPC_ZANT, 0xFF), + OBJNAME("Zelda", PROC_NPC_ZELDA, 0xFF), + OBJNAME("ZelR", PROC_NPC_ZELR, 0xFF), + OBJNAME("ZelRo", PROC_NPC_ZELRO, 0xFF), + OBJNAME("zrA", PROC_NPC_ZRA, 0x00), + OBJNAME("zrS", PROC_NPC_ZRA, 0x01), + OBJNAME("zrWF", PROC_NPC_ZRA, 0x02), + OBJNAME("zrR", PROC_NPC_ZRA, 0x03), + OBJNAME("zrD", PROC_NPC_ZRA, 0x04), + OBJNAME("zrSP", PROC_NPC_ZRA, 0x05), + OBJNAME("zrSPA", PROC_NPC_ZRA, 0x06), + OBJNAME("zrF", PROC_OBJ_ZRAFREEZE, 0x00), + OBJNAME("zrF2", PROC_OBJ_ZRAFREEZE, 0x01), + OBJNAME("zrF3", PROC_OBJ_ZRAFREEZE, 0x02), + OBJNAME("zrC", PROC_NPC_ZRC, 0xFF), + OBJNAME("zrZ", PROC_NPC_ZRZ, 0xFF), + OBJNAME("GrvStn", PROC_Obj_GraveStone, 0xFF), + OBJNAME("zrARock", PROC_Obj_ZraRock, 0xFF), + OBJNAME("StAndGl", PROC_START_AND_GOAL, 0xFF), + OBJNAME("zrAMark", PROC_ZRA_MARK, 0xFF), + OBJNAME("myna2", PROC_MYNA2, 0xFF), + OBJNAME("myn2tag", PROC_TAG_MYNA2, 0xFF), + OBJNAME("MAN_a", PROC_NPC_CD3, 0x00), + OBJNAME("MAD_a", PROC_NPC_CD3, 0x01), + OBJNAME("MCN_a", PROC_NPC_CD3, 0x02), + OBJNAME("MON_a", PROC_NPC_CD3, 0x03), + OBJNAME("MAN_b", PROC_NPC_CD3, 0x04), + OBJNAME("MAN_c", PROC_NPC_CD3, 0x05), + OBJNAME("MAS_a", PROC_NPC_CD3, 0x06), + OBJNAME("MBN_a", PROC_NPC_CD3, 0x07), + OBJNAME("MAN_a2", PROC_NPC_CD3, 0x08), + OBJNAME("MAD_a2", PROC_NPC_CD3, 0x09), + OBJNAME("MCN_a2", PROC_NPC_CD3, 0x0A), + OBJNAME("MON_a2", PROC_NPC_CD3, 0x0B), + OBJNAME("MAN_b2", PROC_NPC_CD3, 0x0C), + OBJNAME("MAN_c2", PROC_NPC_CD3, 0x0D), + OBJNAME("MAS_a2", PROC_NPC_CD3, 0x0E), + OBJNAME("MBN_a2", PROC_NPC_CD3, 0x0F), + OBJNAME("WAN_a", PROC_NPC_CD3, 0x10), + OBJNAME("WAD_a", PROC_NPC_CD3, 0x11), + OBJNAME("MAT_a", PROC_NPC_CD3, 0x12), + OBJNAME("WCN_a", PROC_NPC_CD3, 0x13), + OBJNAME("WON_a", PROC_NPC_CD3, 0x14), + OBJNAME("WGN_a", PROC_NPC_CD3, 0x15), + OBJNAME("WAN_b", PROC_NPC_CD3, 0x16), + OBJNAME("WAN_a2", PROC_NPC_CD3, 0x17), + OBJNAME("WAD_a2", PROC_NPC_CD3, 0x18), + OBJNAME("MAT_a2", PROC_NPC_CD3, 0x19), + OBJNAME("WCN_a2", PROC_NPC_CD3, 0x1A), + OBJNAME("WON_a2", PROC_NPC_CD3, 0x1B), + OBJNAME("WGN_a2", PROC_NPC_CD3, 0x1C), + OBJNAME("WAN_b2", PROC_NPC_CD3, 0x1D), + OBJNAME("shoe", PROC_NPC_SHOE, 0xFF), + OBJNAME("DoorBoy", PROC_NPC_DOORBOY, 0xFF), + OBJNAME("prayer", PROC_NPC_PRAYER, 0xFF), + OBJNAME("km_Hana", PROC_NPC_KASIHANA, 0xFF), + OBJNAME("km_Kyu", PROC_NPC_KASIKYU, 0xFF), + OBJNAME("km_Mich", PROC_NPC_KASIMICH, 0xFF), + OBJNAME("NpcChat", PROC_NPC_CHAT, 0xFF), + OBJNAME("chtSolA", PROC_NPC_SOLDIERa, 0xFF), + OBJNAME("chtSolB", PROC_NPC_SOLDIERb, 0xFF), + OBJNAME("DrSol1", PROC_NPC_DRSOL, 0x00), + OBJNAME("DrSol2", PROC_NPC_DRSOL, 0x01), + OBJNAME("chin", PROC_NPC_CHIN, 0xFF), + OBJNAME("ins", PROC_NPC_INS, 0xFF), + OBJNAME("Shop0", PROC_NPC_SHOP0, 0xFF), + OBJNAME("TagSch", PROC_Tag_Schedule, 0xFF), + OBJNAME("TagEsc", PROC_Tag_Escape, 0xFF), + OBJNAME("passer", PROC_PASSER_MNG, 0x00), + OBJNAME("passerL", PROC_PASSER_MNG, 0x01), + OBJNAME("fmtion", PROC_FORMATION_MNG, 0x00), + OBJNAME("fmtionL", PROC_FORMATION_MNG, 0x01), + OBJNAME("guard", PROC_GUARD_MNG, 0xFF), + OBJNAME("TgGuard", PROC_TAG_GUARD, 0xFF), + OBJNAME("Mk", PROC_NPC_MK, 0xFF), + OBJNAME("Obj_Tbi", PROC_Obj_Yobikusa, 0x00), + OBJNAME("Obj_Uma", PROC_Obj_Yobikusa, 0x01), + OBJNAME("Obj_knk", PROC_Obj_KazeNeko, 0xFF), + OBJNAME("Obj_nmp", PROC_Obj_NamePlate, 0xFF), + OBJNAME("Obj_Tie", PROC_Obj_OnCloth, 0xFF), + OBJNAME("Obj_Lrp", PROC_Obj_LndRope, 0xFF), + OBJNAME("Obj_Sit", PROC_Obj_ItaRope, 0xFF), + OBJNAME("Ikada", PROC_Obj_Ikada, 0xFF), + OBJNAME("Dust", PROC_Obj_DUST, 0xFF), + OBJNAME("Obj_Ita", PROC_Obj_ITA, 0xFF), + OBJNAME("Ice_l", PROC_Obj_Ice_l, 0xFF), + OBJNAME("Ice_s", PROC_Obj_Ice_s, 0xFF), + OBJNAME("E_Make", PROC_Obj_E_CREATE, 0xFF), + OBJNAME("Bhhashi", PROC_Obj_Bhbridge, 0xFF), + OBJNAME("Yousei", PROC_Obj_Yousei, 0xFF), + OBJNAME("G_Kabe", PROC_Obj_GOMIKABE, 0xFF), + OBJNAME("B_ling", PROC_Obj_Mato, 0xFF), + OBJNAME("kab_o", PROC_Obj_Kabuto, 0xFF), + OBJNAME("I_Cho", PROC_Obj_Cho, 0xFF), + OBJNAME("I_Kuw", PROC_Obj_Kuw, 0xFF), + OBJNAME("I_Nan", PROC_Obj_Nan, 0xFF), + OBJNAME("I_Dan", PROC_Obj_Dan, 0xFF), + OBJNAME("I_Kam", PROC_Obj_Kam, 0xFF), + OBJNAME("I_Ten", PROC_Obj_Ten, 0xFF), + OBJNAME("I_Ari", PROC_Obj_Ari, 0xFF), + OBJNAME("I_Kag", PROC_Obj_Kag, 0xFF), + OBJNAME("I_Tom", PROC_Obj_Tombo, 0xFF), + OBJNAME("I_Bat", PROC_Obj_Batta, 0xFF), + OBJNAME("I_Kat", PROC_Obj_Kat, 0xFF), + OBJNAME("H_Saku", PROC_Obj_H_Saku, 0xFF), + OBJNAME("sm_door", PROC_Obj_SM_DOOR, 0xFF), + OBJNAME("Kaisou", PROC_Obj_Kaisou, 0xFF), + OBJNAME("Ni", PROC_NI, 0xFF), + OBJNAME("Fr", PROC_FR, 0xFF), + OBJNAME("Sq", PROC_SQ, 0xFF), + OBJNAME("Bd", PROC_BD, 0xFF), + OBJNAME("Obj_ki", PROC_OBJ_KI, 0xFF), + OBJNAME("Do", PROC_DO, 0xFF), + OBJNAME("Lm", PROC_NPC_FISH, 0x00), + OBJNAME("Tr", PROC_NPC_FISH, 0x05), + OBJNAME("Npc_tr", PROC_NPC_TR, 0xFF), + OBJNAME("Npc_lf", PROC_NPC_LF, 0xFF), + OBJNAME("Fish", PROC_MG_FISH, 0xFF), + OBJNAME("NPC_TK", PROC_NPC_TK, 0xFF), + OBJNAME("Obj_fd", PROC_OBJ_FOOD, 0xFF), + OBJNAME("MYNA", PROC_MYNA, 0xFF), + OBJNAME("SSITEM", PROC_OBJ_SSITEM, 0xFF), + OBJNAME("SSDRINK", PROC_OBJ_SSDRINK, 0xFF), + OBJNAME("TGDRINK", PROC_TAG_SSDRINK, 0xFF), + OBJNAME("Tag_Btl", PROC_TAG_BTLITM, 0xFF), + OBJNAME("lv5soup", PROC_TAG_LV5SOUP, 0xFF), + OBJNAME("TGMNLIG", PROC_TAG_MNLIGHT, 0xFF), + OBJNAME("TGSPCAM", PROC_TAG_SHOPCAM, 0xFF), + OBJNAME("TGSPITM", PROC_TAG_SHOPITM, 0xFF), + OBJNAME("OilTubo", PROC_OBJ_OILTUBO, 0xFF), + OBJNAME("Roten", PROC_OBJ_ROTEN, 0xFF), + OBJNAME("Pleaf", PROC_OBJ_PLEAF, 0xFF), + OBJNAME("KBacket", PROC_OBJ_KBACKET, 0xFF), + OBJNAME("YBag", PROC_OBJ_YBAG, 0xFF), + OBJNAME("Pumpkin", PROC_OBJ_PUMPKIN, 0xFF), + OBJNAME("Obj_kg", PROC_OBJ_KAGO, 0xFF), + OBJNAME("BbKago", PROC_OBJ_KAGO, 0x00), + OBJNAME("OnKago", PROC_OBJ_KAGO, 0x01), + OBJNAME("ObjHasi", PROC_Obj_HHASHI, 0xFF), + OBJNAME("Thashi", PROC_Obj_THASHI, 0xFF), + OBJNAME("B_Hashi", PROC_Obj_BHASHI, 0xFF), + OBJNAME("E_MD", PROC_E_MD, 0xFF), + OBJNAME("E_s1", PROC_E_S1, 0xFF), + OBJNAME("E_wb", PROC_E_WB, 0xFF), + OBJNAME("E_rd", PROC_E_RD, 0xFF), + OBJNAME("E_rdb", PROC_E_RDB, 0xFF), + OBJNAME("E_rdy", PROC_E_RDY, 0xFF), + OBJNAME("E_fm", PROC_E_FM, 0xFF), + OBJNAME("E_dn", PROC_E_DN, 0xFF), + OBJNAME("E_mf", PROC_E_MF, 0xFF), + OBJNAME("TreeSh", PROC_TREESH, 0xFF), + OBJNAME("E_bug", PROC_E_BUG, 0xFF), + OBJNAME("E_bee", PROC_E_BEE, 0xFF), + OBJNAME("E_nest", PROC_E_NEST, 0xFF), + OBJNAME("E_kr", PROC_E_KR, 0xFF), + OBJNAME("E_st", PROC_E_ST, 0xFF), + OBJNAME("E_tk", PROC_E_TK, 0xFF), + OBJNAME("E_tk2", PROC_E_TK2, 0xFF), + OBJNAME("E_th", PROC_E_TH, 0xFF), + OBJNAME("E_cr", PROC_E_CR, 0xFF), + OBJNAME("E_df", PROC_E_DF, 0xFF), + OBJNAME("E_ph", PROC_E_PH, 0xFF), + OBJNAME("E_fs", PROC_E_FS, 0xFF), + OBJNAME("E_SB", PROC_E_SB, 0xFF), + OBJNAME("E_HM", PROC_E_HM, 0xFF), + OBJNAME("E_fk", PROC_E_FK, 0xFF), + OBJNAME("E_pm", PROC_E_PM, 0xFF), + OBJNAME("Npc_ne", PROC_NPC_NE, 0xFF), + OBJNAME("E_db", PROC_E_DB, 0xFF), + OBJNAME("E_kg", PROC_E_KG, 0xFF), + OBJNAME("E_sh", PROC_E_SH, 0xFF), + OBJNAME("E_sf", PROC_E_SF, 0xFF), + OBJNAME("Obj_lb", PROC_OBJ_LBOX, 0xFF), + OBJNAME("Obj_kb", PROC_OBJ_KBOX, 0xFF), + OBJNAME("E_bs", PROC_E_BS, 0xFF), + OBJNAME("Sekizoa", PROC_OBJ_SEKIZOA, 0x00), + OBJNAME("Sekizob", PROC_OBJ_SEKIZOA, 0x01), + OBJNAME("E_sm", PROC_E_SM, 0xFF), + OBJNAME("E_sm2", PROC_E_SM2, 0xFF), + OBJNAME("ky_tag0", PROC_KYTAG00, 0xFF), + OBJNAME("ky_tag1", PROC_KYTAG01, 0x00), + OBJNAME("ky_tag2", PROC_KYTAG02, 0xFF), + OBJNAME("ky_tag3", PROC_KYTAG01, 0x01), + OBJNAME("kytag3", PROC_KYTAG03, 0xFF), + OBJNAME("DK_tag", PROC_KYTAG04, 0xFF), + OBJNAME("PPHole", PROC_KYTAG05, 0xFF), + OBJNAME("KY_chg", PROC_KYTAG06, 0xFF), + OBJNAME("Plight", PROC_KYTAG07, 0xFF), + OBJNAME("KY_mk", PROC_KYTAG08, 0xFF), + OBJNAME("Bound", PROC_KYTAG09, 0xFF), + OBJNAME("WC_tag", PROC_KYTAG01, 0x02), + OBJNAME("Sparks", PROC_KYTAG10, 0xFF), + OBJNAME("Tcntrl", PROC_KYTAG11, 0xFF), + OBJNAME("Drkmst", PROC_KYTAG12, 0xFF), + OBJNAME("Blsnow", PROC_KYTAG13, 0xFF), + OBJNAME("Savmem", PROC_KYTAG14, 0xFF), + OBJNAME("Zshake", PROC_KYTAG15, 0xFF), + OBJNAME("Pikari", PROC_KYTAG16, 0xFF), + OBJNAME("Lmask", PROC_KYTAG17, 0xFF), + OBJNAME("E_is", PROC_E_IS, 0xFF), + OBJNAME("E_ai", PROC_E_AI, 0xFF), + OBJNAME("E_ba", PROC_E_BA, 0xFF), + OBJNAME("E_bu", PROC_E_BU, 0xFF), + OBJNAME("E_sw", PROC_E_SW, 0xFF), + OBJNAME("E_ge", PROC_E_GE, 0xFF), + OBJNAME("TagGe", PROC_Tag_WatchGe, 0xFF), + OBJNAME("E_ym", PROC_E_YM, 0xFF), + OBJNAME("E_ymt", PROC_E_YM_TAG, 0xFF), + OBJNAME("E_ymb", PROC_E_YMB, 0xFF), + OBJNAME("Fwall", PROC_Tag_FWall, 0xFF), + OBJNAME("E_hz", PROC_E_HZ, 0xFF), + OBJNAME("E_ws", PROC_E_WS, 0xFF), + OBJNAME("E_oc", PROC_E_OC, 0xFF), + OBJNAME("E_dt", PROC_E_DT, 0xFF), + OBJNAME("E_bg", PROC_E_BG, 0xFF), + OBJNAME("E_octbg", PROC_E_OctBg, 0xFF), + OBJNAME("E_tt", PROC_E_TT, 0xFF), + OBJNAME("E_dk", PROC_E_DK, 0xFF), + OBJNAME("E_vt", PROC_E_VT, 0xFF), + OBJNAME("E_ww", PROC_E_WW, 0xFF), + OBJNAME("E_gi", PROC_E_GI, 0xFF), + OBJNAME("E_mk", PROC_E_MK, 0xFF), + OBJNAME("B_gm", PROC_B_GM, 0xFF), + OBJNAME("E_gm", PROC_E_GM, 0xFF), + OBJNAME("E_gs", PROC_E_GS, 0xFF), + OBJNAME("Npc_ne", PROC_NPC_NE, 0xFF), + OBJNAME("Obj_gm", PROC_OBJ_GM, 0xFF), + OBJNAME("E_mm", PROC_E_MM, 0xFF), + OBJNAME("E_mm2", PROC_E_MM, 0x01), + OBJNAME("E_fz", PROC_E_FZ, 0xFF), + OBJNAME("E_fb", PROC_E_FB, 0xFF), + OBJNAME("E_Zs", PROC_E_ZS, 0xFF), + OBJNAME("E_kk", PROC_E_KK, 0xFF), + OBJNAME("E_hp", PROC_E_HP, 0xFF), + OBJNAME("E_zh", PROC_E_ZH, 0xFF), + OBJNAME("E_zm", PROC_E_ZM, 0xFF), + OBJNAME("E_zm2", PROC_E_ZM, 0x01), + OBJNAME("E_pz", PROC_E_PZ, 0xFF), + OBJNAME("Kita", PROC_OBJ_KITA, 0xFF), + OBJNAME("E_nz", PROC_E_NZ, 0xFF), + OBJNAME("E_po", PROC_E_PO, 0xFF), + OBJNAME("Obj_w0", PROC_OBJ_WEB0, 0xFF), + OBJNAME("Obj_w1", PROC_OBJ_WEB1, 0xFF), + OBJNAME("Obj_cb", PROC_OBJ_CB, 0xFF), + OBJNAME("Obj_mak", PROC_OBJ_MAKI, 0xFF), + OBJNAME("Obj_brg", PROC_OBJ_BRG, 0xFF), + OBJNAME("E_rb", PROC_E_RB, 0xFF), + OBJNAME("E_sg", PROC_E_SG, 0xFF), + OBJNAME("Obj_tby", PROC_OBJ_TOBY, 0xFF), + OBJNAME("Obj_sw", PROC_OBJ_SW, 0xFF), + OBJNAME("Npc_ks", PROC_NPC_KS, 0xFF), + OBJNAME("Obj_so", PROC_OBJ_SO, 0xFF), + OBJNAME("E_bi", PROC_E_BI, 0xFF), + OBJNAME("Obj_key", PROC_OBJ_KEY, 0xFF), + OBJNAME("E_hb", PROC_E_HB, 0xFF), + OBJNAME("Obj_hb", PROC_OBJ_HB, 0xFF), + OBJNAME("B_bq", PROC_B_BQ, 0xFF), + OBJNAME("B_bh", PROC_B_BH, 0xFF), + OBJNAME("B_go", PROC_B_GO, 0xFF), + OBJNAME("Obj_fw", PROC_OBJ_FW, 0xFF), + OBJNAME("E_ga", PROC_E_GA, 0xFF), + OBJNAME("E_gb", PROC_E_GB, 0xFF), + OBJNAME("E_wap", PROC_E_WAP, 0xFF), + OBJNAME("Obj_sui", PROC_OBJ_SUISYA, 0xFF), + OBJNAME("Obj_bal", PROC_OBJ_BALLOON, 0xFF), + OBJNAME("Obj_lp", PROC_OBJ_LP, 0xFF), + OBJNAME("Obj_nd", PROC_OBJ_NDOOR, 0xFF), + OBJNAME("Obj_ud", PROC_OBJ_UDOOR, 0xFF), + OBJNAME("Obj_us", PROC_OBJ_USAKU, 0xFF), + OBJNAME("Obj_kn2", PROC_OBJ_KANBAN2, 0xFF), + OBJNAME("Obj_kyh", PROC_OBJ_KEYHOLE, 0xFF), + OBJNAME("Bed", PROC_OBJ_BED, 0xFF), + OBJNAME("BouMato", PROC_OBJ_BOUMATO, 0xFF), + OBJNAME("AutoMt", PROC_OBJ_AUTOMATA, 0xFF), + OBJNAME("Gadget", PROC_OBJ_GADGET, 0xFF), + OBJNAME("ItaMato", PROC_OBJ_ITAMATO, 0xFF), + OBJNAME("Nougu", PROC_OBJ_NOUGU, 0xFF), + OBJNAME("Stick", PROC_OBJ_STICK, 0xFF), + OBJNAME("Mie", PROC_OBJ_MIE, 0xFF), + OBJNAME("SkDoor", PROC_OBJ_SEKIDOOR, 0xFF), + OBJNAME("Sekizo", PROC_OBJ_SEKIZO, 0xFF), + OBJNAME("SMTile", PROC_OBJ_SMTILE, 0xFF), + OBJNAME("H_kage", PROC_OBJ_KAGE, 0xFF), + OBJNAME("E_ms", PROC_E_MS, 0xFF), + OBJNAME("Obj_tp", PROC_OBJ_TP, 0xFF), + OBJNAME("Obj_ms", PROC_OBJ_MSIMA, 0xFF), + OBJNAME("E_gob", PROC_E_GOB, 0xFF), + OBJNAME("E_yk", PROC_E_YK, 0xFF), + OBJNAME("E_yr", PROC_E_YR, 0xFF), + OBJNAME("E_yg", PROC_E_YG, 0xFF), + OBJNAME("Obj_fm", PROC_OBJ_FMOBJ, 0xFF), + OBJNAME("B_ob", PROC_B_OB, 0xFF), + OBJNAME("OcHashi", PROC_OCTHASHI, 0xFF), + OBJNAME("E_dd", PROC_E_DD, 0xFF), + OBJNAME("Obj_rw", PROC_OBJ_RW, 0xFF), + OBJNAME("Obj_ih", PROC_OBJ_IHASI, 0xFF), + OBJNAME("E_yc", PROC_E_YC, 0xFF), + OBJNAME("B_ds", PROC_B_DS, 0xFF), + OBJNAME("B_dr", PROC_B_DR, 0xFF), + OBJNAME("B_gg", PROC_B_GG, 0xFF), + OBJNAME("B_yo", PROC_B_YO, 0xFF), + OBJNAME("B_tn", PROC_B_TN, 0xFF), + OBJNAME("B_zant", PROC_B_ZANT, 0xFF), + OBJNAME("B_zntm", PROC_B_ZANTZ, 0xFF), + OBJNAME("B_znts", PROC_B_ZANTS, 0xFF), + OBJNAME("E_yd", PROC_E_YD, 0xFF), + OBJNAME("E_yh", PROC_E_YH, 0xFF), + OBJNAME("Henna", PROC_NPC_HENNA, 0xFF), + OBJNAME("Henna0", PROC_NPC_HENNA0, 0xFF), + OBJNAME("Npc_du", PROC_NPC_DU, 0x00), + OBJNAME("Econt", PROC_ECONT, 0xFF), + OBJNAME("B_mgn", PROC_B_MGN, 0xFF), + OBJNAME("Hzelda", PROC_E_HZELDA, 0xFF), + OBJNAME("Worm", PROC_NPC_WORM, 0xFF), + OBJNAME("B_gnd", PROC_B_GND, 0xFF), + OBJNAME("Obj_gb", PROC_OBJ_GB, 0xFF), + OBJNAME("tboxA0", PROC_TBOX, 0xFF), + OBJNAME("tboxA1", PROC_TBOX, 0xFF), + OBJNAME("tboxA2", PROC_TBOX, 0xFF), + OBJNAME("tboxB0", PROC_TBOX, 0xFF), + OBJNAME("tboxB1", PROC_TBOX, 0xFF), + OBJNAME("tboxB2", PROC_TBOX, 0xFF), + OBJNAME("tboxJ0", PROC_TBOX, 0xFF), + OBJNAME("tboxP0", PROC_TBOX, 0xFF), + OBJNAME("tboxB00", PROC_TBOX, 0xFF), + OBJNAME("tboxB01", PROC_TBOX, 0xFF), + OBJNAME("tboxW0", PROC_TBOX, 0xFF), + OBJNAME("tboxEL0", PROC_TBOX2, 0xFF), + OBJNAME("tboxEL1", PROC_TBOX2, 0xFF), + OBJNAME("l8warp", PROC_Obj_BossWarp, 0xFF), + OBJNAME("L1Bdoor", PROC_L1BOSS_DOOR, 0xFF), + OBJNAME("L2Bdoor", PROC_L1BOSS_DOOR, 0xFF), + OBJNAME("L3Bdoor", PROC_Obj_Kshutter, 0xFF), + OBJNAME("L4Bdoor", PROC_L1BOSS_DOOR, 0xFF), + OBJNAME("L5Bdoor", PROC_L5BOSS_DOOR, 0xFF), + OBJNAME("L6Bdoor", PROC_L1BOSS_DOOR, 0xFF), + OBJNAME("L7Bdoor", PROC_L1BOSS_DOOR, 0xFF), + OBJNAME("L8Bdoor", PROC_L1BOSS_DOOR, 0xFF), + OBJNAME("L9Bdoor", PROC_L1BOSS_DOOR, 0xFF), + OBJNAME("L1Mdoor", PROC_L1MBOSS_DOOR, 0x01), + OBJNAME("L2Mdoor", PROC_L1MBOSS_DOOR, 0x02), + OBJNAME("L3Mdoor", PROC_L1MBOSS_DOOR, 0x03), + OBJNAME("L4Mdoor", PROC_L1MBOSS_DOOR, 0x04), + OBJNAME("L5Mdoor", PROC_L1MBOSS_DOOR, 0x05), + OBJNAME("L6Mdoor", PROC_L1MBOSS_DOOR, 0x06), + OBJNAME("L7Mdoor", PROC_L1MBOSS_DOOR, 0x07), + OBJNAME("L8Mdoor", PROC_L1MBOSS_DOOR, 0x08), + OBJNAME("L7door", PROC_L1MBOSS_DOOR, 0x0A), + OBJNAME("L5door", PROC_L1MBOSS_DOOR, 0x0B), + OBJNAME("Horse", PROC_HORSE, 0xFF), + OBJNAME("Canoe", PROC_CANOE, 0xFF), + OBJNAME("Crope", PROC_Obj_Crope, 0xFF), + OBJNAME("Cstatue", PROC_CSTATUE, 0xFF), + OBJNAME("CstaF", PROC_CSTAF, 0xFF), + OBJNAME("HoZelda", PROC_HOZELDA, 0xFF), + OBJNAME("Mhint", PROC_Tag_Mhint, 0xFF), + OBJNAME("Mmsg", PROC_Tag_Mmsg, 0xFF), + OBJNAME("Mwait", PROC_Tag_Mwait, 0xFF), + OBJNAME("Mstop", PROC_Tag_Mstop, 0xFF), + OBJNAME("MstopE", PROC_Tag_Mstop, 0xFF), + OBJNAME("Hinit", PROC_Tag_Hinit, 0xFF), + OBJNAME("Hjump", PROC_Tag_Hjump, 0xFF), + OBJNAME("Hstop", PROC_Tag_Hstop, 0xFF), + OBJNAME("AJnot", PROC_Tag_AJnot, 0xFF), + OBJNAME("Wljump", PROC_Tag_Wljump, 0xFF), + OBJNAME("Sppath", PROC_Tag_Sppath, 0xFF), + OBJNAME("Stream", PROC_Tag_Stream, 0xFF), + OBJNAME("Gstart", PROC_Tag_Gstart, 0xFF), + OBJNAME("TgTGate", PROC_Tag_TWGate, 0xFF), + OBJNAME("Lv6Gate", PROC_Tag_Lv6Gate, 0xFF), + OBJNAME("Lv7Gate", PROC_Tag_Lv7Gate, 0xFF), + OBJNAME("Lv8Gate", PROC_Tag_Lv8Gate, 0xFF), + OBJNAME("TgTHint", PROC_Tag_TheBHint, 0xFF), + OBJNAME("TagAsst", PROC_Tag_Assist, 0xFF), + OBJNAME("Dmidna", PROC_DMIDNA, 0xFF), + OBJNAME("Fchain", PROC_Obj_Fchain, 0xFF), + OBJNAME("Wchain", PROC_Obj_Wchain, 0xFF), + OBJNAME("Cdoor", PROC_Obj_Cdoor, 0xFF), + OBJNAME("Cgate", PROC_Obj_Cdoor, 0xFF), + OBJNAME("Water00", PROC_GRDWATER, 0xFF), + OBJNAME("Digpl", PROC_Obj_Digpl, 0xFF), + OBJNAME("Digholl", PROC_Obj_Digholl, 0xFF), + OBJNAME("Bombf", PROC_Obj_Bombf, 0xFF), + OBJNAME("hider", PROC_SUSPEND, 0xFF), + OBJNAME("SwAreaC", PROC_SWC00, 0xFF), + OBJNAME("SwAreaS", PROC_SWC00, 0xFF), + OBJNAME("SwLBall", PROC_SwLBall, 0xFF), + OBJNAME("SwBall", PROC_SwBall, 0xFF), + OBJNAME("thouse", PROC_Obj_TobyHouse, 0xFF), + OBJNAME("ironbox", PROC_Obj_MetalBox, 0xFF), + OBJNAME("l6swtrn", PROC_Obj_Lv6SwTurn, 0xFF), + OBJNAME("l2bmtag", PROC_Tag_Lv2PrChk, 0xFF), + OBJNAME("swspin", PROC_Obj_SwSpinner, 0xFF), + OBJNAME("spnGear", PROC_Obj_Lv4Gear, 0xFF), + OBJNAME("fan", PROC_Obj_Fan, 0xFF), + OBJNAME("tgake", PROC_Obj_Gake, 0xFF), + OBJNAME("tmoon", PROC_Obj_TMoon, 0xFF), + OBJNAME("gwall", PROC_Obj_GanonWall, 0xFF), + OBJNAME("gwall2", PROC_Obj_GanonWall2, 0xFF), + OBJNAME("scnChg", PROC_SCENE_EXIT, 0xFF), + OBJNAME("scnChg2", PROC_SCENE_EXIT2, 0xFF), + OBJNAME("noChgRm", PROC_NO_CHG_ROOM, 0xFF), + OBJNAME("readRm", PROC_NO_CHG_ROOM, 0x00), + OBJNAME("Tetd", PROC_DSHUTTER, 0xFF), + OBJNAME("fence", PROC_DSHUTTER, 0xFF), + OBJNAME("lv7saku", PROC_DSHUTTER, 0xFF), + OBJNAME("YkgrON", PROC_Ykgr, 0xFF), + OBJNAME("YkgrOFF", PROC_Ykgr, 0xFF), + OBJNAME("TagEv", PROC_TAG_EVENT, 0xFF), + OBJNAME("TagEvC", PROC_TAG_EVENT, 0xFF), + OBJNAME("TagEvt", PROC_TAG_EVT, 0x00), + OBJNAME("TagEvt1", PROC_TAG_EVT, 0x01), + OBJNAME("TagHowl", PROC_TAG_HOWL, 0x01), + OBJNAME("Tag_ms", PROC_TAG_MSG, 0x00), + OBJNAME("LntnTag", PROC_TAG_LANTERN, 0xFF), + OBJNAME("EvtArea", PROC_TAG_EVTAREA, 0xFF), + OBJNAME("AllMato", PROC_TAG_ALLMATO, 0xFF), + OBJNAME("EvtMsg", PROC_TAG_EVTMSG, 0xFF), + OBJNAME("KMsg", PROC_TAG_KMSG, 0xFF), + OBJNAME("Push", PROC_TAG_PUSH, 0xFF), + OBJNAME("Teloper", PROC_TAG_TELOP, 0xFF), + OBJNAME("CamChg", PROC_TAG_CAMERA, 0xFF), + OBJNAME("CamArea", PROC_TAG_CAMERA, 0xFF), + OBJNAME("CamAreC", PROC_TAG_CAMERA, 0xFF), + OBJNAME("ChkPntS", PROC_TAG_CHKPOINT, 0xFF), + OBJNAME("ChkPntC", PROC_TAG_CHKPOINT, 0xFF), + OBJNAME("setball", PROC_Tag_SetBall, 0xFF), + OBJNAME("atkItem", PROC_Tag_AttackItem, 0xFF), + OBJNAME("TagStat", PROC_Tag_Statue, 0xFF), + OBJNAME("zdoor", PROC_Obj_ZDoor, 0xFF), + OBJNAME("rdoor", PROC_Obj_ZDoor, 0xFF), + OBJNAME("STDoa", PROC_Obj_ZDoor, 0xFF), + OBJNAME("hasi00", PROC_Obj_Pillar, 0xFF), + OBJNAME("hasi01", PROC_Obj_Pillar, 0xFF), + OBJNAME("window", PROC_Obj_Window, 0xFF), + OBJNAME("bbox", PROC_Obj_BBox, 0xFF), + OBJNAME("spiralC", PROC_Obj_Lv3R10Saka, 0xFF), + OBJNAME("spiral2", PROC_Obj_Lv3R10Saka, 0xFF), + OBJNAME("digsnow", PROC_Obj_DigSnow, 0xFF), + OBJNAME("digsand", PROC_Obj_Lv4DigSand, 0xFF), + OBJNAME("fallobj", PROC_Obj_FallObj, 0xFF), + OBJNAME("l7brg", PROC_Obj_Lv7Bridge, 0xFF), + OBJNAME("dr", PROC_DR, 0xFF), + OBJNAME("L7lowDr", PROC_L7lowDr, 0xFF), + OBJNAME("swTime", PROC_SwTime, 0xFF), + OBJNAME("pdrobj", PROC_Obj_PushDoor, 0xFF), + OBJNAME("crystal", PROC_Obj_Crystal, 0xFF), + OBJNAME("WarpBrg", PROC_Obj_KakarikoBrg, 0xFF), + OBJNAME("WarpB2", PROC_Obj_KakarikoBrg, 0xFF), + OBJNAME("WarpOB1", PROC_Obj_OrdinBrg, 0x00), + OBJNAME("WarpOB2", PROC_Obj_OrdinBrg, 0x01), + OBJNAME("VolcGnd", PROC_Obj_VolcGnd, 0xFF), + OBJNAME("r09wtr", PROC_Obj_WaterEff, 0xFF), + OBJNAME("ballSw", PROC_Obj_SwBallA, 0xFF), + OBJNAME("lballSw", PROC_Obj_SwBallB, 0xFF), + OBJNAME("lbsw", PROC_Obj_SwBallC, 0xFF), + OBJNAME("R50Sand", PROC_Obj_Lv4Sand, 0xFF), + OBJNAME("rwall", PROC_Obj_Lv4RailWall, 0xFF), + OBJNAME("l4brg", PROC_Obj_Lv4Bridge, 0xFF), + OBJNAME("l4floor", PROC_Obj_Lv4Floor, 0xFF), + OBJNAME("item", PROC_ITEM, 0xFF), + OBJNAME("itemKey", PROC_Obj_SmallKey, 0xFF), + OBJNAME("kantera", PROC_Obj_Kantera, 0xFF), + OBJNAME("witem", PROC_ITEM, 0xFF), + OBJNAME("wshield", PROC_Obj_Shield, 0xFF), + OBJNAME("htPiece", PROC_Obj_LifeContainer, 0xFF), + OBJNAME("htCase", PROC_Obj_LifeContainer, 0xFF), + OBJNAME("Mbrid15", PROC_Obj_RotBridge, 0xFF), + OBJNAME("Mbrid9", PROC_Obj_RotBridge, 0xFF), + OBJNAME("maglift", PROC_Obj_MagLift, 0xFF), + OBJNAME("Cldst00", PROC_Obj_Lv1Cdl00, 0xFF), + OBJNAME("Cldst01", PROC_Obj_Lv1Cdl01, 0xFF), + OBJNAME("RMback0", PROC_Tag_Restart, 0xFF), + OBJNAME("RMback1", PROC_Tag_ChgRestart, 0xFF), + OBJNAME("Mist", PROC_Tag_Mist, 0xFF), + OBJNAME("magLifR", PROC_Obj_MagLiftRot, 0xFF), + OBJNAME("TCdlst", PROC_Obj_TvCdlst, 0xFF), + OBJNAME("wdstick", PROC_Obj_WdStick, 0xFF), + OBJNAME("stBlock", PROC_Obj_StairBlock, 0xFF), + OBJNAME("hsMato", PROC_Obj_HsTarget, 0xFF), + OBJNAME("ktFire", PROC_Tag_KtOnFire, 0xFF), + OBJNAME("hswitch", PROC_Obj_HeavySw, 0xFF), + OBJNAME("goGate", PROC_Obj_GoGate, 0xFF), + OBJNAME("taAmi", PROC_Obj_TaFence, 0xFF), + OBJNAME("fireWd", PROC_Obj_FireWood, 0xFF), + OBJNAME("fireWd2", PROC_Obj_FireWood2, 0xFF), + OBJNAME("altar", PROC_Obj_Saidan, 0xFF), + OBJNAME("gpTaru", PROC_Obj_GpTaru, 0xFF), + OBJNAME("spinLf", PROC_Obj_SpinLift, 0xFF), + OBJNAME("bmWin", PROC_Obj_BmWindow, 0xFF), + OBJNAME("roofHl", PROC_Obj_RfHole, 0xFF), + OBJNAME("syRock", PROC_Obj_SyRock, 0xFF), + OBJNAME("wColumn", PROC_Obj_WaterPillar, 0xFF), + OBJNAME("kpot", PROC_Obj_KiPot, 0xFF), + OBJNAME("bsGate", PROC_Obj_BsGate, 0xFF), + OBJNAME("amiShut", PROC_Obj_AmiShutter, 0xFF), + OBJNAME("kwhel00", PROC_Obj_KWheel00, 0xFF), + OBJNAME("kwhel01", PROC_Obj_KWheel01, 0xFF), + OBJNAME("PRElvtr", PROC_Obj_PRElvtr, 0xFF), + OBJNAME("swhel00", PROC_Obj_KWheel00, 0xFF), + OBJNAME("M_hasu", PROC_Obj_MHasu, 0xFF), + OBJNAME("yiblltr", PROC_Obj_YIblltray, 0xFF), + OBJNAME("l6egate", PROC_Obj_Lv6EGate, 0xFF), + OBJNAME("l6eleva", PROC_Obj_Lv6ElevtA, 0xFF), + OBJNAME("wtGate", PROC_Obj_WtGate, 0xFF), + OBJNAME("candlL2", PROC_Obj_Lv2Candle, 0xFF), + OBJNAME("togeTp", PROC_Obj_TogeTrap, 0xFF), + OBJNAME("rotTrap", PROC_Obj_RotTrap, 0xFF), + OBJNAME("klift00", PROC_Obj_KLift00, 0xFF), + OBJNAME("l4chand", PROC_Obj_Lv4Chan, 0xFF), + OBJNAME("Ychndlr", PROC_Obj_Ychndlr, 0xFF), + OBJNAME("hbmbkoy", PROC_Obj_HBombkoya, 0xFF), + OBJNAME("TagCsw", PROC_TAG_CSW, 0xFF), + OBJNAME("TagCswO", PROC_TAG_CSW, 0xFF), + OBJNAME("P_Rwall", PROC_Obj_Lv4PRwall, 0xFF), + OBJNAME("PDtile", PROC_Obj_PDtile, 0xFF), + OBJNAME("PDwall", PROC_Obj_PDwall, 0xFF), + OBJNAME("Qs", PROC_TAG_QS, 0xFF), + OBJNAME("mirror", PROC_MIRROR, 0xFF), + OBJNAME("rGate", PROC_Obj_SwallShutter, 0xFF), + OBJNAME("l3water", PROC_Obj_Lv3Water, 0xFF), + OBJNAME("l3wat02", PROC_Obj_Lv3Water2, 0xFF), + OBJNAME("l3watB", PROC_OBJ_LV3WATERB, 0xFF), + OBJNAME("szbridg", PROC_Obj_SZbridge, 0xFF), + OBJNAME("kjgjs", PROC_Obj_KJgjs, 0xFF), + OBJNAME("kjs", PROC_Obj_KJgjs, 0xFF), + OBJNAME("candlL3", PROC_Obj_Lv3Candle, 0xFF), + OBJNAME("l5icewl", PROC_Obj_IceWall, 0xFF), + OBJNAME("Turara", PROC_Obj_Turara, 0xFF), + OBJNAME("twGate", PROC_Obj_TwGate, 0xFF), + OBJNAME("L4cdlTg", PROC_Tag_Lv4Candle, 0xFF), + OBJNAME("L4cddTg", PROC_Tag_Lv4CandleDm, 0xFF), + OBJNAME("togeRol", PROC_Obj_Lv6TogeRoll, 0xFF), + OBJNAME("l6TogeT", PROC_Obj_Lv6TogeTrap, 0xFF), + OBJNAME("Tenbin", PROC_Obj_Lv6Tenbin, 0xFF), + OBJNAME("l6Lblk", PROC_Obj_Lv6Lblock, 0xFF), + OBJNAME("l6SwGt", PROC_Obj_Lv6SwGate, 0xFF), + OBJNAME("l6ChBlk", PROC_Obj_Lv6ChgGate, 0xFF), + OBJNAME("l6FuriT", PROC_Obj_Lv6FuriTrap, 0xFF), + OBJNAME("KHdesk", PROC_Obj_BarDesk, 0xFF), + OBJNAME("Ytaihou", PROC_Obj_Ytaihou, 0xFF), + OBJNAME("L4eShut", PROC_Obj_Lv4EdShutter, 0xFF), + OBJNAME("pofire", PROC_Obj_poFire, 0xFF), + OBJNAME("pofiTg", PROC_Tag_poFire, 0xFF), + OBJNAME("poCandl", PROC_Obj_poCandle, 0xFF), + OBJNAME("L4Gate", PROC_Obj_Lv4Gate, 0xFF), + OBJNAME("L4Pgate", PROC_Obj_Lv4PoGate, 0xFF), + OBJNAME("L4SWall", PROC_Obj_Lv4SlideWall, 0xFF), + OBJNAME("L4hmato", PROC_Obj_Lv4HsTarget, 0xFF), + OBJNAME("propy", PROC_Obj_Lv7PropY, 0xFF), + OBJNAME("L7BsGt", PROC_Obj_Lv7BsGate, 0xFF), + OBJNAME("optLift", PROC_Obj_Lv8OptiLift, 0xFF), + OBJNAME("kkiTrap", PROC_Obj_Lv8KekkaiTrap, 0xFF), + OBJNAME("L8LiftX", PROC_Obj_Lv8Lift, 0xFF), + OBJNAME("swStep", PROC_Obj_Lv8UdFloor, 0xFF), + OBJNAME("L9SwSht", PROC_Obj_Lv9SwShutter, 0xFF), + OBJNAME("L5SwIce", PROC_Obj_Lv5SwIce, 0xFF), + OBJNAME("glwSph", PROC_Obj_glowSphere, 0xFF), + OBJNAME("MR_Scrw", PROC_Obj_MirrorScrew, 0xFF), + OBJNAME("MR_Sand", PROC_Obj_MirrorSand, 0xFF), + OBJNAME("MR_Tble", PROC_Obj_MirrorTable, 0xFF), + OBJNAME("MR_Chin", PROC_Obj_MirrorChain, 0xFF), + OBJNAME("MR_Pole", PROC_Obj_Mirror6Pole, 0xFF), + OBJNAME("PPolamp", PROC_PPolamp, 0xFF), + OBJNAME("l5hYuka", PROC_Obj_Lv5FBoard, 0xFF), + OBJNAME("BYRock", PROC_BkyRock, 0xFF), + OBJNAME("zrDrock", PROC_Obj_zrTurara, 0xFF), + OBJNAME("tkrDai", PROC_Obj_TakaraDai, 0xFF), + OBJNAME("Table", PROC_Obj_Table, 0xFF), + OBJNAME("CatDoor", PROC_Obj_CatDoor, 0xFF), + OBJNAME("RetTag", PROC_Tag_RetRoom, 0xFF), + OBJNAME("WdStone", PROC_Obj_WindStone, 0xFF), + OBJNAME("HwlWara", PROC_Tag_WaraHowl, 0xFF), + OBJNAME("SCannon", PROC_Obj_SCannon, 0xFF), + OBJNAME("szGate", PROC_Obj_Lv6SzGate, 0xFF), + OBJNAME("onsTaru", PROC_Obj_OnsenTaru, 0xFF), + OBJNAME("WStoneF", PROC_Obj_SmWStone, 0xFF), + OBJNAME("SCanCrs", PROC_Obj_SCannonCrs, 0xFF), + OBJNAME("snwEfTg", PROC_Tag_SnowEff, 0xFF), + OBJNAME("tmFire", PROC_Obj_TimeFire, 0xFF), + OBJNAME("L7Prop", PROC_Obj_Prop, 0xFF), + OBJNAME("awaPlar", PROC_Obj_awaPlar, 0xFF), + OBJNAME("poTbox", PROC_Obj_poTbox, 0xFF), + OBJNAME("SnwSoup", PROC_Obj_SnowSoup, 0xFF), + OBJNAME("Nagaisu", PROC_Obj_Nagaisu, 0xFF), + OBJNAME("RCircle", PROC_Obj_RCircle, 0xFF), + OBJNAME("L9Chand", PROC_Obj_Chandelier, 0xFF), + OBJNAME("L9Pictr", PROC_Obj_Picture, 0xFF), + OBJNAME("SmkEmt", PROC_Tag_SmkEmt, 0xFF), + OBJNAME("HFtr", PROC_Obj_HFtr, 0xFF), + OBJNAME("HBarrel", PROC_Obj_HBarrel, 0xFF), + OBJNAME("SCanTen", PROC_Obj_SCannonTen, 0xFF), + OBJNAME("cstaSw", PROC_Tag_CstaSw, 0xFF), + OBJNAME("l6cstSw", PROC_Tag_Lv6CstaSw, 0xFF), + OBJNAME("Hata", PROC_Obj_Hata, 0xFF), + OBJNAME("RmbitSw", PROC_Tag_RmbitSw, 0xFF), + OBJNAME("T_Maki", PROC_Obj_ToaruMaki, 0xFF), + OBJNAME("d_act", PROC_DEMO00, 0xFF), + OBJNAME("d_act0", PROC_DEMO00, 0x00), + OBJNAME("d_act1", PROC_DEMO00, 0x01), + OBJNAME("d_act2", PROC_DEMO00, 0x02), + OBJNAME("d_act3", PROC_DEMO00, 0x03), + OBJNAME("d_act4", PROC_DEMO00, 0x04), + OBJNAME("d_act5", PROC_DEMO00, 0x05), + OBJNAME("d_act6", PROC_DEMO00, 0x06), + OBJNAME("d_act7", PROC_DEMO00, 0x07), + OBJNAME("d_act8", PROC_DEMO00, 0x08), + OBJNAME("d_act9", PROC_DEMO00, 0x09), + OBJNAME("d_act10", PROC_DEMO00, 0x0A), + OBJNAME("d_act11", PROC_DEMO00, 0x0B), + OBJNAME("d_act12", PROC_DEMO00, 0x0C), + OBJNAME("d_act13", PROC_DEMO00, 0x0D), + OBJNAME("d_act14", PROC_DEMO00, 0x0E), + OBJNAME("d_act15", PROC_DEMO00, 0x0F), + OBJNAME("d_act16", PROC_DEMO00, 0x10), + OBJNAME("d_act17", PROC_DEMO00, 0x11), + OBJNAME("d_act18", PROC_DEMO00, 0x12), + OBJNAME("d_act19", PROC_DEMO00, 0x13), + OBJNAME("d_act20", PROC_DEMO00, 0x14), + OBJNAME("d_act21", PROC_DEMO00, 0x15), + OBJNAME("d_act22", PROC_DEMO00, 0x16), + OBJNAME("d_act23", PROC_DEMO00, 0x17), + OBJNAME("d_act24", PROC_DEMO00, 0x18), + OBJNAME("d_act25", PROC_DEMO00, 0x19), + OBJNAME("d_act26", PROC_DEMO00, 0x1A), + OBJNAME("d_act27", PROC_DEMO00, 0x1B), + OBJNAME("d_act28", PROC_DEMO00, 0x1C), + OBJNAME("d_act29", PROC_DEMO00, 0x1D), + OBJNAME("d_act30", PROC_DEMO00, 0x1E), + OBJNAME("d_act31", PROC_DEMO00, 0x1F), + OBJNAME("TLogo", PROC_TITLE, 0xFF), + OBJNAME("ClearB", PROC_Obj_Cboard, 0xFF), + OBJNAME("Bg", PROC_BG, 0xFF), + OBJNAME("Boom", PROC_BOOMERANG, 0xFF), + OBJNAME("Nbomb", PROC_NBOMB, 0xFF), + OBJNAME("Arrow", PROC_ARROW, 0xFF), + OBJNAME("E_Arrow", PROC_E_ARROW, 0xFF), + OBJNAME("Spinner", PROC_SPINNER, 0xFF), + OBJNAME("Crod", PROC_CROD, 0xFF), + OBJNAME("Midna", PROC_MIDNA, 0xFF), + OBJNAME("Vrbox", PROC_VRBOX, 0xFF), + OBJNAME("Vrbox2", PROC_VRBOX2, 0xFF), + OBJNAME("mvbg_a", PROC_BG_OBJ, 0xFF), + OBJNAME("burnBox", PROC_Obj_BurnBox, 0xFF), + OBJNAME("stnMark", PROC_Obj_StoneMark, 0xFF), + OBJNAME("Passer", PROC_NPC_PASSER, 0xFF), + OBJNAME("Passer2", PROC_NPC_PASSER2, 0xFF), + OBJNAME("ShopItm", PROC_ShopItem, 0xFF), + OBJNAME("E_yd_lf", PROC_E_YD_LEAF, 0xFF), + OBJNAME("E_db_lf", PROC_E_DB_LEAF, 0xFF), + OBJNAME("E_hb_lf", PROC_E_HB_LEAF, 0xFF), + OBJNAME("E_bi_lf", PROC_E_BI_LEAF, 0xFF), + OBJNAME("O_Mato", PROC_Obj_Mato, 0xFF), + OBJNAME("O_Flag", PROC_Obj_Flag, 0xFF), + OBJNAME("O_Flag2", PROC_Obj_Flag2, 0xFF), + OBJNAME("O_Flag3", PROC_Obj_Flag3, 0xFF), + OBJNAME("CRVLH_U", PROC_Obj_CRVLH_UP, 0xFF), + OBJNAME("DemoItm", PROC_Demo_Item, 0xFF), + OBJNAME("EndCode", PROC_PLAY_SCENE, 0xFF), }; /* 803A65CC-803A65FC -00001 0030+00 1/1 0/0 0/0 .data l_roomFuncTable$5052 */ From 045fefcab74887e74eb6e6b462f9c50a09486ea9 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 23 Dec 2021 17:10:39 -0800 Subject: [PATCH 2/8] minor cleanups --- include/JSystem/J3DGraphBase/J3DShape.h | 11 ++++++----- include/f_pc/f_pc_leaf.h | 2 +- include/f_pc/f_pc_profile.h | 2 ++ src/f_op/f_op_actor_mng.cpp | 2 +- src/f_pc/f_pc_leaf.cpp | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index 1fd8e7c56c9..b0576077c03 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -24,10 +24,11 @@ class J3DVertexData; class J3DDrawMtxData; enum J3DShpFlag { + J3DShpFlag_Visible = 0x0001, J3DShpFlag_SkinPosCpu = 0x0004, J3DShpFlag_SkinNrmCpu = 0x0008, - J3DShpFlag_Hidden = 0x0010, - J3DShpFlag_EnableLod = 0x0100, + J3DShpFlag_Hidden = 0x0010, + J3DShpFlag_EnableLod = 0x0100, }; class J3DShape { @@ -56,8 +57,8 @@ public: void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; } void* getVcdVatCmd() const { return mVcdVatCmd; } void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; } - void show() { offFlag(1); } - void hide() { onFlag(1); } + void show() { offFlag(J3DShpFlag_Visible); } + void hide() { onFlag(J3DShpFlag_Visible); } void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; } void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; } void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; } @@ -66,7 +67,7 @@ public: u32 getBumpMtxOffset() const { return mBumpMtxOffset; } inline J3DMaterial* getMaterial() const { return mMaterial; } - inline u32 getPipeline() const { return (mFlags >> 2) & 7; } + inline u32 getPipeline() const { return (mFlags >> 2) & 0x07; } inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; } static void resetVcdVatCache() { sOldVcdVatCmd = NULL; } diff --git a/include/f_pc/f_pc_leaf.h b/include/f_pc/f_pc_leaf.h index 5bbb9baa0f1..485a6131e2d 100644 --- a/include/f_pc/f_pc_leaf.h +++ b/include/f_pc/f_pc_leaf.h @@ -23,7 +23,7 @@ typedef struct leafdraw_class { typedef struct leaf_process_profile_definition { /* 0x00 */ process_profile_definition mBase; /* 0x1C */ leafdraw_method_class* mLfDrwMth; - /* 0x20 */ s16 unk20; + /* 0x20 */ s16 mPriority; /* 0x22 */ u8 unk22[2]; /* 0x24 */ s32 unk24; } leaf_process_profile_definition; diff --git a/include/f_pc/f_pc_profile.h b/include/f_pc/f_pc_profile.h index beed93f24a4..a393e007286 100644 --- a/include/f_pc/f_pc_profile.h +++ b/include/f_pc/f_pc_profile.h @@ -19,6 +19,8 @@ typedef struct process_profile_definition { s32 mParameters; } process_profile_definition; +#define LAYER_DEFAULT (-2) + process_profile_definition* fpcPf_Get(s16 profileID); extern process_profile_definition** g_fpcPf_ProfileList_p; diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 31214dd9647..56737dfb569 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -553,7 +553,7 @@ s32 fopAcM_create(s16 procName, u16 enemyNo, u32 parameter, const cXyz* pPos, in fopAcM_prm_class* params = createAppend(enemyNo, parameter, pPos, roomNo, pRot, pScale, subType, 0xFFFFFFFF); if (params == NULL) { - return 0xFFFFFFFF; + return -1; } else { return fpcSCtRq_Request(fpcLy_CurrentLayer(), procName, (stdCreateFunc)pCreateFunc, NULL, params); diff --git a/src/f_pc/f_pc_leaf.cpp b/src/f_pc/f_pc_leaf.cpp index 3cbb59348b7..3acfcaf7717 100644 --- a/src/f_pc/f_pc_leaf.cpp +++ b/src/f_pc/f_pc_leaf.cpp @@ -60,7 +60,7 @@ s32 fpcLf_Create(leafdraw_class* pLeaf) { profDef = (leaf_process_profile_definition*)pLeaf->mBase.mpProf; pLeaf->mpDrawMtd = profDef->mLfDrwMth; pLeaf->mBase.mSubType = fpcBs_MakeOfType(&g_fpcLf_type); - fpcDwPi_Init(&pLeaf->mDwPi, profDef->unk20); + fpcDwPi_Init(&pLeaf->mDwPi, profDef->mPriority); pLeaf->mbUnk0 = 0; } return fpcMtd_Create(&pLeaf->mpDrawMtd->mBase, pLeaf); From 32d021a88949400915d92c10171a6b541a3c70fd Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 23 Dec 2021 20:56:02 -0800 Subject: [PATCH 3/8] JPAExtraShape --- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 38 --- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 64 ----- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 4 - ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 26 -- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 26 -- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 38 --- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 38 --- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 4 - ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 33 --- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 33 --- .../__ct__13JPAExtraShapeFPCUc.s | 14 - .../JPAExtraShape/init__13JPAExtraShapeFv.s | 71 ----- include/JSystem/JMath/JMATrigonometric.h | 11 + include/JSystem/JParticle/JPAExtraShape.h | 67 +++++ include/JSystem/JParticle/JPAParticle.h | 2 +- include/dolphin/os/OS.h | 20 +- libs/JSystem/JParticle/JPAExtraShape.cpp | 248 +++++++----------- 17 files changed, 187 insertions(+), 550 deletions(-) delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s delete mode 100644 asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index a961073a6ad..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8027AC10: -/* 8027AC10 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8027AC14 80 63 00 04 */ lwz r3, 4(r3) -/* 8027AC18 80 63 00 20 */ lwz r3, 0x20(r3) -/* 8027AC1C C0 84 00 84 */ lfs f4, 0x84(r4) -/* 8027AC20 80 A3 00 00 */ lwz r5, 0(r3) -/* 8027AC24 C0 05 00 2C */ lfs f0, 0x2c(r5) -/* 8027AC28 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027AC2C 40 80 00 20 */ bge lbl_8027AC4C -/* 8027AC30 C0 42 B8 F4 */ lfs f2, lit_2390(r2) -/* 8027AC34 C0 25 00 34 */ lfs f1, 0x34(r5) -/* 8027AC38 C0 03 00 04 */ lfs f0, 4(r3) -/* 8027AC3C EC 04 00 32 */ fmuls f0, f4, f0 -/* 8027AC40 EC 01 00 2A */ fadds f0, f1, f0 -/* 8027AC44 EC A2 00 32 */ fmuls f5, f2, f0 -/* 8027AC48 48 00 00 3C */ b lbl_8027AC84 -lbl_8027AC4C: -/* 8027AC4C C0 05 00 30 */ lfs f0, 0x30(r5) -/* 8027AC50 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027AC54 40 81 00 24 */ ble lbl_8027AC78 -/* 8027AC58 C0 62 B8 F4 */ lfs f3, lit_2390(r2) -/* 8027AC5C C0 45 00 38 */ lfs f2, 0x38(r5) -/* 8027AC60 EC 24 00 28 */ fsubs f1, f4, f0 -/* 8027AC64 C0 03 00 08 */ lfs f0, 8(r3) -/* 8027AC68 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027AC6C EC 02 00 2A */ fadds f0, f2, f0 -/* 8027AC70 EC A3 00 32 */ fmuls f5, f3, f0 -/* 8027AC74 48 00 00 10 */ b lbl_8027AC84 -lbl_8027AC78: -/* 8027AC78 C0 22 B8 F4 */ lfs f1, lit_2390(r2) -/* 8027AC7C C0 05 00 38 */ lfs f0, 0x38(r5) -/* 8027AC80 EC A1 00 32 */ fmuls f5, f1, f0 -lbl_8027AC84: -/* 8027AC84 F0 A1 A0 08 */ psq_st f5, 8(r1), 1, 2 /* qr2 */ -/* 8027AC88 88 01 00 08 */ lbz r0, 8(r1) -/* 8027AC8C 98 04 00 96 */ stb r0, 0x96(r4) -/* 8027AC90 38 21 00 10 */ addi r1, r1, 0x10 -/* 8027AC94 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 73030643a5e..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,64 +0,0 @@ -lbl_8027AC98: -/* 8027AC98 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AC9C 80 63 00 04 */ lwz r3, 4(r3) -/* 8027ACA0 80 63 00 20 */ lwz r3, 0x20(r3) -/* 8027ACA4 C0 64 00 84 */ lfs f3, 0x84(r4) -/* 8027ACA8 80 A3 00 00 */ lwz r5, 0(r3) -/* 8027ACAC C0 05 00 2C */ lfs f0, 0x2c(r5) -/* 8027ACB0 FC 03 00 40 */ fcmpo cr0, f3, f0 -/* 8027ACB4 40 80 00 18 */ bge lbl_8027ACCC -/* 8027ACB8 C0 25 00 34 */ lfs f1, 0x34(r5) -/* 8027ACBC C0 03 00 04 */ lfs f0, 4(r3) -/* 8027ACC0 EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027ACC4 EC A1 00 2A */ fadds f5, f1, f0 -/* 8027ACC8 48 00 00 2C */ b lbl_8027ACF4 -lbl_8027ACCC: -/* 8027ACCC C0 05 00 30 */ lfs f0, 0x30(r5) -/* 8027ACD0 FC 03 00 40 */ fcmpo cr0, f3, f0 -/* 8027ACD4 40 81 00 1C */ ble lbl_8027ACF0 -/* 8027ACD8 C0 45 00 38 */ lfs f2, 0x38(r5) -/* 8027ACDC EC 23 00 28 */ fsubs f1, f3, f0 -/* 8027ACE0 C0 03 00 08 */ lfs f0, 8(r3) -/* 8027ACE4 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027ACE8 EC A2 00 2A */ fadds f5, f2, f0 -/* 8027ACEC 48 00 00 08 */ b lbl_8027ACF4 -lbl_8027ACF0: -/* 8027ACF0 C0 A5 00 38 */ lfs f5, 0x38(r5) -lbl_8027ACF4: -/* 8027ACF4 C0 62 B8 F8 */ lfs f3, lit_2433(r2) -/* 8027ACF8 C0 44 00 6C */ lfs f2, 0x6c(r4) -/* 8027ACFC A8 04 00 80 */ lha r0, 0x80(r4) -/* 8027AD00 C8 22 B8 E8 */ lfd f1, lit_2312(r2) -/* 8027AD04 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AD08 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AD0C 3C 00 43 30 */ lis r0, 0x4330 -/* 8027AD10 90 01 00 10 */ stw r0, 0x10(r1) -/* 8027AD14 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AD18 EC 00 08 28 */ fsubs f0, f0, f1 -/* 8027AD1C EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AD20 EC 23 00 32 */ fmuls f1, f3, f0 -/* 8027AD24 C0 82 B8 E0 */ lfs f4, lit_2270(r2) -/* 8027AD28 C0 05 00 40 */ lfs f0, 0x40(r5) -/* 8027AD2C EC 04 00 28 */ fsubs f0, f4, f0 -/* 8027AD30 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027AD34 FC 00 00 1E */ fctiwz f0, f0 -/* 8027AD38 D8 01 00 18 */ stfd f0, 0x18(r1) -/* 8027AD3C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8027AD40 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c -/* 8027AD44 3C 60 80 44 */ lis r3, sincosTable___5JMath@ha /* 0x80439A20@ha */ -/* 8027AD48 38 63 9A 20 */ addi r3, r3, sincosTable___5JMath@l /* 0x80439A20@l */ -/* 8027AD4C 7C 03 04 2E */ lfsx f0, r3, r0 -/* 8027AD50 C0 62 B8 F4 */ lfs f3, lit_2390(r2) -/* 8027AD54 C0 42 B8 FC */ lfs f2, lit_2434(r2) -/* 8027AD58 EC 20 20 28 */ fsubs f1, f0, f4 -/* 8027AD5C C0 05 00 48 */ lfs f0, 0x48(r5) -/* 8027AD60 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027AD64 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AD68 EC 04 00 2A */ fadds f0, f4, f0 -/* 8027AD6C EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027AD70 EC A5 00 32 */ fmuls f5, f5, f0 -/* 8027AD74 F0 A1 A0 08 */ psq_st f5, 8(r1), 1, 2 /* qr2 */ -/* 8027AD78 88 01 00 08 */ lbz r0, 8(r1) -/* 8027AD7C 98 04 00 96 */ stb r0, 0x96(r4) -/* 8027AD80 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AD84 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 116f462763b..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8027AA14: -/* 8027AA14 C0 04 00 84 */ lfs f0, 0x84(r4) -/* 8027AA18 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AA1C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 689100d1568..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8027AA20: -/* 8027AA20 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AA24 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AA28 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AA2C 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AA30 A8 A5 00 28 */ lha r5, 0x28(r5) -/* 8027AA34 A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AA38 7C 04 2B D6 */ divw r0, r4, r5 -/* 8027AA3C 7C 00 29 D6 */ mullw r0, r0, r5 -/* 8027AA40 7C 00 20 50 */ subf r0, r0, r4 -/* 8027AA44 C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027AA48 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AA4C 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027AA50 3C 80 43 30 */ lis r4, 0x4330 -/* 8027AA54 90 81 00 08 */ stw r4, 8(r1) -/* 8027AA58 C8 01 00 08 */ lfd f0, 8(r1) -/* 8027AA5C EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AA60 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8027AA64 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AA68 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027AA6C C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AA70 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027AA74 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AA78 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AA7C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AA80 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 2128ce0df3e..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8027AA84: -/* 8027AA84 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AA88 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AA8C 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AA90 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AA94 A8 A5 00 2A */ lha r5, 0x2a(r5) -/* 8027AA98 A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AA9C 7C 04 2B D6 */ divw r0, r4, r5 -/* 8027AAA0 7C 00 29 D6 */ mullw r0, r0, r5 -/* 8027AAA4 7C 00 20 50 */ subf r0, r0, r4 -/* 8027AAA8 C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027AAAC 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AAB0 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027AAB4 3C 80 43 30 */ lis r4, 0x4330 -/* 8027AAB8 90 81 00 08 */ stw r4, 8(r1) -/* 8027AABC C8 01 00 08 */ lfd f0, 8(r1) -/* 8027AAC0 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AAC4 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8027AAC8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AACC 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027AAD0 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AAD4 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027AAD8 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AADC D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AAE0 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AAE4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 30f9e038aef..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8027AAE8: -/* 8027AAE8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AAEC 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AAF0 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AAF4 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AAF8 A8 C5 00 28 */ lha r6, 0x28(r5) -/* 8027AAFC A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AB00 7C A4 33 D6 */ divw r5, r4, r6 -/* 8027AB04 7C 05 31 D6 */ mullw r0, r5, r6 -/* 8027AB08 7C 00 20 50 */ subf r0, r0, r4 -/* 8027AB0C C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027AB10 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AB14 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027AB18 3C 80 43 30 */ lis r4, 0x4330 -/* 8027AB1C 90 81 00 08 */ stw r4, 8(r1) -/* 8027AB20 C8 01 00 08 */ lfd f0, 8(r1) -/* 8027AB24 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AB28 6C C0 80 00 */ xoris r0, r6, 0x8000 -/* 8027AB2C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AB30 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027AB34 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AB38 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027AB3C EC 61 00 24 */ fdivs f3, f1, f0 -/* 8027AB40 54 A0 07 FE */ clrlwi r0, r5, 0x1f -/* 8027AB44 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AB48 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8027AB4C 90 81 00 18 */ stw r4, 0x18(r1) -/* 8027AB50 C8 01 00 18 */ lfd f0, 0x18(r1) -/* 8027AB54 EC 40 10 28 */ fsubs f2, f0, f2 -/* 8027AB58 C0 22 B8 E0 */ lfs f1, lit_2270(r2) -/* 8027AB5C C0 02 B8 F0 */ lfs f0, lit_2339(r2) -/* 8027AB60 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8027AB64 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027AB68 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AB6C EC 03 00 2A */ fadds f0, f3, f0 -/* 8027AB70 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AB74 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AB78 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 77ca9dc3fd0..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8027AB7C: -/* 8027AB7C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AB80 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AB84 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AB88 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AB8C A8 C5 00 2A */ lha r6, 0x2a(r5) -/* 8027AB90 A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AB94 7C A4 33 D6 */ divw r5, r4, r6 -/* 8027AB98 7C 05 31 D6 */ mullw r0, r5, r6 -/* 8027AB9C 7C 00 20 50 */ subf r0, r0, r4 -/* 8027ABA0 C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027ABA4 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027ABA8 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027ABAC 3C 80 43 30 */ lis r4, 0x4330 -/* 8027ABB0 90 81 00 08 */ stw r4, 8(r1) -/* 8027ABB4 C8 01 00 08 */ lfd f0, 8(r1) -/* 8027ABB8 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027ABBC 6C C0 80 00 */ xoris r0, r6, 0x8000 -/* 8027ABC0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027ABC4 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027ABC8 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027ABCC EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027ABD0 EC 61 00 24 */ fdivs f3, f1, f0 -/* 8027ABD4 54 A0 07 FE */ clrlwi r0, r5, 0x1f -/* 8027ABD8 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027ABDC 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8027ABE0 90 81 00 18 */ stw r4, 0x18(r1) -/* 8027ABE4 C8 01 00 18 */ lfd f0, 0x18(r1) -/* 8027ABE8 EC 40 10 28 */ fsubs f2, f0, f2 -/* 8027ABEC C0 22 B8 E0 */ lfs f1, lit_2270(r2) -/* 8027ABF0 C0 02 B8 F0 */ lfs f0, lit_2339(r2) -/* 8027ABF4 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8027ABF8 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027ABFC EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AC00 EC 03 00 2A */ fadds f0, f3, f0 -/* 8027AC04 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AC08 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AC0C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 6247cf39bcd..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8027AA08: -/* 8027AA08 C0 04 00 60 */ lfs f0, 0x60(r4) -/* 8027AA0C D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027AA10 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index acbfdc25af0..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8027A918: -/* 8027A918 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027A91C 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027A920 C0 83 01 FC */ lfs f4, 0x1fc(r3) -/* 8027A924 80 65 00 00 */ lwz r3, 0(r5) -/* 8027A928 C0 03 00 0C */ lfs f0, 0xc(r3) -/* 8027A92C FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A930 40 80 00 24 */ bge lbl_8027A954 -/* 8027A934 C0 44 00 68 */ lfs f2, 0x68(r4) -/* 8027A938 C0 05 00 0C */ lfs f0, 0xc(r5) -/* 8027A93C EC 24 00 32 */ fmuls f1, f4, f0 -/* 8027A940 C0 03 00 14 */ lfs f0, 0x14(r3) -/* 8027A944 EC 01 00 2A */ fadds f0, f1, f0 -/* 8027A948 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027A94C D0 04 00 60 */ stfs f0, 0x60(r4) -/* 8027A950 4E 80 00 20 */ blr -lbl_8027A954: -/* 8027A954 C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8027A958 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A95C 40 81 00 28 */ ble lbl_8027A984 -/* 8027A960 C0 64 00 68 */ lfs f3, 0x68(r4) -/* 8027A964 C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027A968 C0 25 00 14 */ lfs f1, 0x14(r5) -/* 8027A96C EC 04 00 28 */ fsubs f0, f4, f0 -/* 8027A970 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027A974 EC 02 00 2A */ fadds f0, f2, f0 -/* 8027A978 EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027A97C D0 04 00 60 */ stfs f0, 0x60(r4) -/* 8027A980 4E 80 00 20 */ blr -lbl_8027A984: -/* 8027A984 C0 04 00 68 */ lfs f0, 0x68(r4) -/* 8027A988 D0 04 00 60 */ stfs f0, 0x60(r4) -/* 8027A98C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 7e4d76fa080..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8027A990: -/* 8027A990 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027A994 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027A998 C0 83 01 FC */ lfs f4, 0x1fc(r3) -/* 8027A99C 80 65 00 00 */ lwz r3, 0(r5) -/* 8027A9A0 C0 03 00 0C */ lfs f0, 0xc(r3) -/* 8027A9A4 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A9A8 40 80 00 24 */ bge lbl_8027A9CC -/* 8027A9AC C0 44 00 68 */ lfs f2, 0x68(r4) -/* 8027A9B0 C0 05 00 10 */ lfs f0, 0x10(r5) -/* 8027A9B4 EC 24 00 32 */ fmuls f1, f4, f0 -/* 8027A9B8 C0 03 00 1C */ lfs f0, 0x1c(r3) -/* 8027A9BC EC 01 00 2A */ fadds f0, f1, f0 -/* 8027A9C0 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027A9C4 D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027A9C8 4E 80 00 20 */ blr -lbl_8027A9CC: -/* 8027A9CC C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8027A9D0 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A9D4 40 81 00 28 */ ble lbl_8027A9FC -/* 8027A9D8 C0 64 00 68 */ lfs f3, 0x68(r4) -/* 8027A9DC C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027A9E0 C0 25 00 18 */ lfs f1, 0x18(r5) -/* 8027A9E4 EC 04 00 28 */ fsubs f0, f4, f0 -/* 8027A9E8 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027A9EC EC 02 00 2A */ fadds f0, f2, f0 -/* 8027A9F0 EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027A9F4 D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027A9F8 4E 80 00 20 */ blr -lbl_8027A9FC: -/* 8027A9FC C0 04 00 68 */ lfs f0, 0x68(r4) -/* 8027AA00 D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027AA04 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s b/asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s deleted file mode 100644 index 543945a7547..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8027AD88: -/* 8027AD88 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8027AD8C 7C 08 02 A6 */ mflr r0 -/* 8027AD90 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AD94 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8027AD98 7C 7F 1B 78 */ mr r31, r3 -/* 8027AD9C 90 83 00 00 */ stw r4, 0(r3) -/* 8027ADA0 48 00 00 1D */ bl init__13JPAExtraShapeFv -/* 8027ADA4 7F E3 FB 78 */ mr r3, r31 -/* 8027ADA8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8027ADAC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8027ADB0 7C 08 03 A6 */ mtlr r0 -/* 8027ADB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8027ADB8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s b/asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s deleted file mode 100644 index 8dd04fa1922..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s +++ /dev/null @@ -1,71 +0,0 @@ -lbl_8027ADBC: -/* 8027ADBC C0 02 B9 00 */ lfs f0, lit_2503(r2) -/* 8027ADC0 80 83 00 00 */ lwz r4, 0(r3) -/* 8027ADC4 C0 44 00 2C */ lfs f2, 0x2c(r4) -/* 8027ADC8 FC 00 10 00 */ fcmpu cr0, f0, f2 -/* 8027ADCC 41 82 00 18 */ beq lbl_8027ADE4 -/* 8027ADD0 C0 24 00 38 */ lfs f1, 0x38(r4) -/* 8027ADD4 C0 04 00 34 */ lfs f0, 0x34(r4) -/* 8027ADD8 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027ADDC EC 00 10 24 */ fdivs f0, f0, f2 -/* 8027ADE0 48 00 00 08 */ b lbl_8027ADE8 -lbl_8027ADE4: -/* 8027ADE4 C0 02 B8 E0 */ lfs f0, lit_2270(r2) -lbl_8027ADE8: -/* 8027ADE8 D0 03 00 04 */ stfs f0, 4(r3) -/* 8027ADEC C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027ADF0 80 83 00 00 */ lwz r4, 0(r3) -/* 8027ADF4 C0 64 00 30 */ lfs f3, 0x30(r4) -/* 8027ADF8 FC 02 18 00 */ fcmpu cr0, f2, f3 -/* 8027ADFC 41 82 00 18 */ beq lbl_8027AE14 -/* 8027AE00 C0 24 00 3C */ lfs f1, 0x3c(r4) -/* 8027AE04 C0 04 00 38 */ lfs f0, 0x38(r4) -/* 8027AE08 EC 21 00 28 */ fsubs f1, f1, f0 -/* 8027AE0C EC 02 18 28 */ fsubs f0, f2, f3 -/* 8027AE10 EC 41 00 24 */ fdivs f2, f1, f0 -lbl_8027AE14: -/* 8027AE14 D0 43 00 08 */ stfs f2, 8(r3) -/* 8027AE18 C0 02 B9 00 */ lfs f0, lit_2503(r2) -/* 8027AE1C 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE20 C0 44 00 0C */ lfs f2, 0xc(r4) -/* 8027AE24 FC 00 10 00 */ fcmpu cr0, f0, f2 -/* 8027AE28 41 82 00 34 */ beq lbl_8027AE5C -/* 8027AE2C C0 22 B8 E0 */ lfs f1, lit_2270(r2) -/* 8027AE30 C0 04 00 14 */ lfs f0, 0x14(r4) -/* 8027AE34 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027AE38 EC 00 10 24 */ fdivs f0, f0, f2 -/* 8027AE3C D0 03 00 0C */ stfs f0, 0xc(r3) -/* 8027AE40 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE44 C0 04 00 1C */ lfs f0, 0x1c(r4) -/* 8027AE48 EC 21 00 28 */ fsubs f1, f1, f0 -/* 8027AE4C C0 04 00 0C */ lfs f0, 0xc(r4) -/* 8027AE50 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AE54 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 8027AE58 48 00 00 10 */ b lbl_8027AE68 -lbl_8027AE5C: -/* 8027AE5C C0 02 B8 E0 */ lfs f0, lit_2270(r2) -/* 8027AE60 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 8027AE64 D0 03 00 0C */ stfs f0, 0xc(r3) -lbl_8027AE68: -/* 8027AE68 C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027AE6C 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE70 C0 64 00 10 */ lfs f3, 0x10(r4) -/* 8027AE74 FC 02 18 00 */ fcmpu cr0, f2, f3 -/* 8027AE78 41 82 00 38 */ beq lbl_8027AEB0 -/* 8027AE7C C0 04 00 18 */ lfs f0, 0x18(r4) -/* 8027AE80 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AE84 EC 02 18 28 */ fsubs f0, f2, f3 -/* 8027AE88 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AE8C D0 03 00 14 */ stfs f0, 0x14(r3) -/* 8027AE90 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE94 C0 04 00 20 */ lfs f0, 0x20(r4) -/* 8027AE98 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AE9C C0 04 00 10 */ lfs f0, 0x10(r4) -/* 8027AEA0 EC 02 00 28 */ fsubs f0, f2, f0 -/* 8027AEA4 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AEA8 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 8027AEAC 4E 80 00 20 */ blr -lbl_8027AEB0: -/* 8027AEB0 D0 43 00 18 */ stfs f2, 0x18(r3) -/* 8027AEB4 D0 43 00 14 */ stfs f2, 0x14(r3) -/* 8027AEB8 4E 80 00 20 */ blr diff --git a/include/JSystem/JMath/JMATrigonometric.h b/include/JSystem/JMath/JMATrigonometric.h index 79d3798ed20..a01b717ca8d 100644 --- a/include/JSystem/JMath/JMATrigonometric.h +++ b/include/JSystem/JMath/JMATrigonometric.h @@ -17,6 +17,9 @@ struct pair { struct TSinCosTable { std::pair table[0x2000]; + + f32 sinShort(s16 v) const { return table[static_cast(v) >> 3].a1; } + f32 cosShort(s16 v) const { return table[static_cast(v) >> 3].b1; } }; struct TAtanTable { @@ -35,4 +38,12 @@ extern TAtanTable atanTable_; extern TAsinAcosTable asinAcosTable_; }; // namespace JMath +inline f32 JMASSin(s16 s) { + return JMath::sincosTable_.sinShort(s); +} + +inline f32 JMASCos(s16 s) { + return JMath::sincosTable_.cosShort(s); +} + #endif /* JMATRIGONOMETRIC_H */ diff --git a/include/JSystem/JParticle/JPAExtraShape.h b/include/JSystem/JParticle/JPAExtraShape.h index abdcdd0b4d5..0df0e574366 100644 --- a/include/JSystem/JParticle/JPAExtraShape.h +++ b/include/JSystem/JParticle/JPAExtraShape.h @@ -3,4 +3,71 @@ #include "dolphin/types.h" +struct JPAExtraShapeData { + // Common header. + /* 0x00 */ u8 mMagic[4]; + /* 0x04 */ u32 mSize; + + /* 0x08 */ u32 mFlags; + /* 0x0C */ f32 mScaleInTiming; + /* 0x10 */ f32 mScaleOutTiming; + /* 0x14 */ f32 mScaleInValueX; + /* 0x18 */ f32 mScaleOutValueX; + /* 0x1C */ f32 mScaleInValueY; + /* 0x20 */ f32 mScaleOutValueY; + /* 0x24 */ f32 mScaleOutRandom; + /* 0x28 */ s16 mScaleAnmCycleX; + /* 0x2A */ s16 mScaleAnmCycleY; + /* 0x2C */ f32 mAlphaInTiming; + /* 0x30 */ f32 mAlphaOutTiming; + /* 0x34 */ f32 mAlphaInValue; + /* 0x38 */ f32 mAlphaBaseValue; + /* 0x3C */ f32 mAlphaOutValue; + /* 0x40 */ f32 mAlphaWaveFrequency; + /* 0x44 */ f32 mAlphaWaveRandom; + /* 0x48 */ f32 mAlphaWaveAmplitude; + /* 0x4C */ f32 mRotateAngle; + /* 0x50 */ f32 mRotateAngleRandom; + /* 0x54 */ f32 mRotateSpeed; + /* 0x58 */ f32 mRotateSpeedRandom; + /* 0x5C */ f32 mRotateDirection; +}; + +class JPAExtraShape { +public: + /* 8027AD88 */ JPAExtraShape(u8 const*); + /* 8027ADBC */ void init(); + + f32 getScaleInTiming() const { return mpData->mScaleInTiming; } + f32 getScaleOutTiming() const { return mpData->mScaleOutTiming; } + f32 getScaleInValueX() const { return mpData->mScaleInValueX; } + f32 getScaleInValueY() const { return mpData->mScaleInValueY; } + f32 getScaleOutValueX() const { return mpData->mScaleOutValueX; } + f32 getScaleOutValueY() const { return mpData->mScaleOutValueY; } + s16 getScaleAnmCycleX() const { return mpData->mScaleAnmCycleX; } + s16 getScaleAnmCycleY() const { return mpData->mScaleAnmCycleY; } + f32 getAlphaInTiming() const { return mpData->mAlphaInTiming; } + f32 getAlphaOutTiming() const { return mpData->mAlphaOutTiming; } + f32 getAlphaInValue() const { return mpData->mAlphaInValue; } + f32 getAlphaOutValue() const { return mpData->mAlphaOutValue; } + f32 getAlphaBaseValue() const { return mpData->mAlphaBaseValue; } + f32 getAlphaFreq() const { return mpData->mAlphaWaveFrequency; } + f32 getAlphaAmp() const { return mpData->mAlphaWaveAmplitude; } + f32 getScaleIncRateX() const { return mScaleIncRateX; } + f32 getScaleDecRateX() const { return mScaleDecRateX; } + f32 getScaleIncRateY() const { return mScaleIncRateY; } + f32 getScaleDecRateY() const { return mScaleDecRateY; } + f32 getAlphaIncRate() const { return mAlphaIncRate; } + f32 getAlphaDecRate() const { return mAlphaDecRate; } + +private: + /* 0x00 */ const JPAExtraShapeData* mpData; + /* 0x04 */ f32 mAlphaIncRate; + /* 0x08 */ f32 mAlphaDecRate; + /* 0x0C */ f32 mScaleIncRateX; + /* 0x10 */ f32 mScaleIncRateY; + /* 0x14 */ f32 mScaleDecRateX; + /* 0x18 */ f32 mScaleDecRateY; +}; + #endif /* JPAEXTRASHAPE_H */ diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index 046353808f4..ca6dd4d926e 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -277,7 +277,7 @@ public: /* 0x74 */ f32 mDrag; /* 0x78 */ u32 field_0x78; /* 0x7C */ u32 mStatus; - /* 0x80 */ u16 mAge; + /* 0x80 */ s16 mAge; /* 0x82 */ u16 mLifeTime; /* 0x84 */ f32 mTime; /* 0x88 */ u16 mRotateAngle; diff --git a/include/dolphin/os/OS.h b/include/dolphin/os/OS.h index e34324bd386..3bda004d8ae 100644 --- a/include/dolphin/os/OS.h +++ b/include/dolphin/os/OS.h @@ -304,4 +304,22 @@ inline void* OSPhysicalToCached(u32 offset) { return (void*)(offset + 0x80000000); } -#endif \ No newline at end of file +static inline u8 __OSf32tou8(register f32 src) { + f32 tmp; + register f32 *p = &tmp; + register u8 ret; + + asm + { + psq_st src, 0(p), 1, 2 + lbz ret, 0(p) + } + + return ret; +} + +static inline void OSf32tou8(register f32* src, volatile register u8* dst) { + *dst = __OSf32tou8(*src); +} + +#endif diff --git a/libs/JSystem/JParticle/JPAExtraShape.cpp b/libs/JSystem/JParticle/JPAExtraShape.cpp index 76580411191..49f599c0604 100644 --- a/libs/JSystem/JParticle/JPAExtraShape.cpp +++ b/libs/JSystem/JParticle/JPAExtraShape.cpp @@ -4,214 +4,144 @@ // #include "JSystem/JParticle/JPAExtraShape.h" +#include "JSystem/JParticle/JPAParticle.h" +#include "JSystem/JParticle/JPAResource.h" +#include "JSystem/JParticle/JPAResourceManager.h" +#include "JSystem/JMath/JMATrigonometric.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "dolphin/os/OS.h" // // Types: // -struct JPAExtraShape { - /* 8027AD88 */ JPAExtraShape(u8 const*); - /* 8027ADBC */ void init(); -}; - -struct JPAEmitterWorkData {}; - -struct JPABaseParticle {}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - -// -// Forward References: -// - -extern "C" void JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void __ct__13JPAExtraShapeFPCUc(); -extern "C" void init__13JPAExtraShapeFv(); - -// -// External References: -// - -extern "C" u8 sincosTable___5JMath[65536]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 804552E0-804552E8 0038E0 0004+04 6/6 0/0 0/0 .sdata2 @2270 */ -SECTION_SDATA2 static f32 lit_2270[1 + 1 /* padding */] = { - 1.0f, - /* padding */ - 0.0f, -}; - /* 8027A918-8027A990 275258 0078+00 0/0 1/1 0/0 .text * JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + if (work->mScaleAnm < esp->getScaleInTiming()) { + ptcl->mParticleScaleX = ptcl->mScaleOut * (esp->getScaleIncRateX() * work->mScaleAnm + esp->getScaleInValueX()); + } else if (work->mScaleAnm > esp->getScaleOutTiming()) { + ptcl->mParticleScaleX = ptcl->mScaleOut * (esp->getScaleDecRateX() * (work->mScaleAnm - esp->getScaleOutTiming()) + 1.0f); + } else { + ptcl->mParticleScaleX = ptcl->mScaleOut; + } } -#pragma pop /* 8027A990-8027AA08 2752D0 0078+00 0/0 1/1 0/0 .text * JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + if (work->mScaleAnm < esp->getScaleInTiming()) { + ptcl->mParticleScaleY = ptcl->mScaleOut * (esp->getScaleIncRateY() * work->mScaleAnm + esp->getScaleInValueY()); + } else if (work->mScaleAnm > esp->getScaleOutTiming()) { + ptcl->mParticleScaleY = ptcl->mScaleOut * (esp->getScaleDecRateY() * (work->mScaleAnm - esp->getScaleOutTiming()) + 1.0f); + } else { + ptcl->mParticleScaleY = ptcl->mScaleOut; + } } -#pragma pop /* 8027AA08-8027AA14 275348 000C+00 0/0 1/1 0/0 .text * JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleCopy(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleCopy(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + ptcl->mParticleScaleY = ptcl->mParticleScaleX; } -#pragma pop /* 8027AA14-8027AA20 275354 000C+00 0/0 1/1 0/0 .text * JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmNormal(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmNormal(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + work->mScaleAnm = ptcl->mTime; } -#pragma pop - -/* ############################################################################################## */ -/* 804552E8-804552F0 0038E8 0008+00 5/5 0/0 0/0 .sdata2 @2312 */ -SECTION_SDATA2 static f64 lit_2312 = 4503601774854144.0 /* cast s32 to float */; /* 8027AA20-8027AA84 275360 0064+00 0/0 1/1 0/0 .text * JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmRepeatX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmRepeatX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX(); } -#pragma pop /* 8027AA84-8027AAE8 2753C4 0064+00 0/0 1/1 0/0 .text * JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY(); } -#pragma pop - -/* ############################################################################################## */ -/* 804552F0-804552F4 0038F0 0004+00 2/2 0/0 0/0 .sdata2 @2339 */ -SECTION_SDATA2 static f32 lit_2339 = 2.0f; /* 8027AAE8-8027AB7C 275428 0094+00 0/0 1/1 0/0 .text * JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmReverseX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmReverseX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + s32 cycle = ptcl->mAge / esp->getScaleAnmCycleX(); + f32 base = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX(); + work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f)); } -#pragma pop /* 8027AB7C-8027AC10 2754BC 0094+00 0/0 1/1 0/0 .text * JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmReverseY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmReverseY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + s32 cycle = ptcl->mAge / esp->getScaleAnmCycleY(); + f32 base = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY(); + work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f)); } -#pragma pop - -/* ############################################################################################## */ -/* 804552F4-804552F8 0038F4 0004+00 2/2 0/0 0/0 .sdata2 @2390 */ -SECTION_SDATA2 static f32 lit_2390 = 255.0f; /* 8027AC10-8027AC98 275550 0088+00 0/0 1/1 0/0 .text * JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcAlphaAnm(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + f32 alpha; + if (ptcl->mTime < esp->getAlphaInTiming()) { + alpha = 255.0f * (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime); + } else if (ptcl->mTime > esp->getAlphaOutTiming()) { + alpha = 255.0f * ((ptcl->mTime - esp->getAlphaOutTiming()) * esp->getAlphaDecRate() + esp->getAlphaBaseValue()); + } else { + alpha = 255.0f * esp->getAlphaBaseValue(); + } + OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm); } -#pragma pop - -/* ############################################################################################## */ -/* 804552F8-804552FC 0038F8 0004+00 1/1 0/0 0/0 .sdata2 @2433 */ -SECTION_SDATA2 static f32 lit_2433 = 16384.0f; - -/* 804552FC-80455300 0038FC 0004+00 1/1 0/0 0/0 .sdata2 @2434 */ -SECTION_SDATA2 static f32 lit_2434 = 0.5f; /* 8027AC98-8027AD88 2755D8 00F0+00 0/0 1/1 0/0 .text * JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcAlphaFlickAnm(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcAlphaFlickAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + f32 alpha; + if (ptcl->mTime < esp->getAlphaInTiming()) { + alpha = (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime); + } else if (ptcl->mTime > esp->getAlphaOutTiming()) { + alpha = ((ptcl->mTime - esp->getAlphaOutTiming()) * esp->getAlphaDecRate() + esp->getAlphaBaseValue()); + } else { + alpha = esp->getAlphaBaseValue(); + } + s32 theta = ptcl->mAlphaWaveRandom * ptcl->mAge * 16384.0f * (1.0f - esp->getAlphaFreq()); + f32 wave = JMASSin(theta); + alpha *= (1.0f + esp->getAlphaAmp() * (wave - 1.0f) * 0.5f) * 255.0f; + OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm); } -#pragma pop /* 8027AD88-8027ADBC 2756C8 0034+00 0/0 1/1 0/0 .text __ct__13JPAExtraShapeFPCUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JPAExtraShape::JPAExtraShape(u8 const* param_0) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s" +JPAExtraShape::JPAExtraShape(u8 const* data) { + mpData = (const JPAExtraShapeData*)data; + init(); } -#pragma pop - -/* ############################################################################################## */ -/* 80455300-80455308 003900 0004+04 1/1 0/0 0/0 .sdata2 @2503 */ -SECTION_SDATA2 static f32 lit_2503[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; /* 8027ADBC-8027AEBC 2756FC 0100+00 1/1 0/0 0/0 .text init__13JPAExtraShapeFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPAExtraShape::init() { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s" +void JPAExtraShape::init() { + mAlphaIncRate = (getAlphaInTiming() != 0.0f) ? (getAlphaBaseValue() - getAlphaInValue()) / getAlphaInTiming() : 1.0f; + mAlphaDecRate = (getAlphaOutTiming() != 1.0f) ? (getAlphaOutValue() - getAlphaBaseValue()) / (1.0f - getAlphaOutTiming()) : 1.0f; + + if (getScaleInTiming() != 0.0f) { + mScaleIncRateX = (1.0f - getScaleInValueX()) / getScaleInTiming(); + mScaleIncRateY = (1.0f - getScaleInValueY()) / getScaleInTiming(); + } else { + mScaleIncRateX = mScaleIncRateY = 1.0f; + } + + if (getScaleOutTiming() != 1.0f) { + mScaleDecRateX = (getScaleOutValueX() - 1.0f) / (1.0f - getScaleOutTiming()); + mScaleDecRateY = (getScaleOutValueY() - 1.0f) / (1.0f - getScaleOutTiming()); + } else { + mScaleDecRateX = mScaleDecRateY = 1.0f; + } } -#pragma pop From f7eed3278f25b57c70e875c3f7354ba6388dfb24 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 23 Dec 2021 21:02:42 -0800 Subject: [PATCH 4/8] a few more JPAResource functions --- .../JPAResource/__ct__11JPAResourceFv.s | 29 ----- ...eFP18JPAEmitterWorkDataP14JPABaseEmitter.s | 61 ----------- include/JSystem/JParticle/JPABaseShape.h | 103 ++++++++++++++++++ include/JSystem/JParticle/JPAParticle.h | 1 + libs/JSystem/JParticle/JPABaseShape.cpp | 99 ----------------- libs/JSystem/JParticle/JPAResource.cpp | 56 +++++++--- 6 files changed, 146 insertions(+), 203 deletions(-) delete mode 100644 asm/JSystem/JParticle/JPAResource/__ct__11JPAResourceFv.s delete mode 100644 asm/JSystem/JParticle/JPAResource/draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s diff --git a/asm/JSystem/JParticle/JPAResource/__ct__11JPAResourceFv.s b/asm/JSystem/JParticle/JPAResource/__ct__11JPAResourceFv.s deleted file mode 100644 index f4f83d36c86..00000000000 --- a/asm/JSystem/JParticle/JPAResource/__ct__11JPAResourceFv.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_80274010: -/* 80274010 38 00 00 00 */ li r0, 0 -/* 80274014 90 03 00 08 */ stw r0, 8(r3) -/* 80274018 90 03 00 04 */ stw r0, 4(r3) -/* 8027401C 90 03 00 00 */ stw r0, 0(r3) -/* 80274020 90 03 00 18 */ stw r0, 0x18(r3) -/* 80274024 90 03 00 14 */ stw r0, 0x14(r3) -/* 80274028 90 03 00 10 */ stw r0, 0x10(r3) -/* 8027402C 90 03 00 0C */ stw r0, 0xc(r3) -/* 80274030 90 03 00 1C */ stw r0, 0x1c(r3) -/* 80274034 90 03 00 20 */ stw r0, 0x20(r3) -/* 80274038 90 03 00 24 */ stw r0, 0x24(r3) -/* 8027403C 90 03 00 28 */ stw r0, 0x28(r3) -/* 80274040 90 03 00 2C */ stw r0, 0x2c(r3) -/* 80274044 90 03 00 30 */ stw r0, 0x30(r3) -/* 80274048 90 03 00 34 */ stw r0, 0x34(r3) -/* 8027404C 90 03 00 38 */ stw r0, 0x38(r3) -/* 80274050 98 03 00 47 */ stb r0, 0x47(r3) -/* 80274054 98 03 00 46 */ stb r0, 0x46(r3) -/* 80274058 98 03 00 45 */ stb r0, 0x45(r3) -/* 8027405C 98 03 00 44 */ stb r0, 0x44(r3) -/* 80274060 98 03 00 43 */ stb r0, 0x43(r3) -/* 80274064 98 03 00 42 */ stb r0, 0x42(r3) -/* 80274068 98 03 00 41 */ stb r0, 0x41(r3) -/* 8027406C 98 03 00 40 */ stb r0, 0x40(r3) -/* 80274070 98 03 00 3F */ stb r0, 0x3f(r3) -/* 80274074 98 03 00 3E */ stb r0, 0x3e(r3) -/* 80274078 B0 03 00 3C */ sth r0, 0x3c(r3) -/* 8027407C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAResource/draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s b/asm/JSystem/JParticle/JPAResource/draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s deleted file mode 100644 index 488b16e4d81..00000000000 --- a/asm/JSystem/JParticle/JPAResource/draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s +++ /dev/null @@ -1,61 +0,0 @@ -lbl_80275A94: -/* 80275A94 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80275A98 7C 08 02 A6 */ mflr r0 -/* 80275A9C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80275AA0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80275AA4 48 0E C7 35 */ bl _savegpr_28 -/* 80275AA8 7C 7C 1B 78 */ mr r28, r3 -/* 80275AAC 7C 9D 23 78 */ mr r29, r4 -/* 80275AB0 7C BE 2B 78 */ mr r30, r5 -/* 80275AB4 93 C4 00 00 */ stw r30, 0(r4) -/* 80275AB8 93 84 00 04 */ stw r28, 4(r4) -/* 80275ABC 38 00 00 00 */ li r0, 0 -/* 80275AC0 98 04 02 16 */ stb r0, 0x216(r4) -/* 80275AC4 48 00 0F 49 */ bl calcWorkData_d__11JPAResourceFP18JPAEmitterWorkData -/* 80275AC8 80 7C 00 1C */ lwz r3, 0x1c(r28) -/* 80275ACC 7F A4 EB 78 */ mr r4, r29 -/* 80275AD0 48 00 4D 19 */ bl setGX__12JPABaseShapeCFP18JPAEmitterWorkData -/* 80275AD4 3B E0 00 01 */ li r31, 1 -/* 80275AD8 48 00 00 78 */ b lbl_80275B50 -lbl_80275ADC: -/* 80275ADC 88 7D 02 16 */ lbz r3, 0x216(r29) -/* 80275AE0 38 03 00 01 */ addi r0, r3, 1 -/* 80275AE4 98 1D 02 16 */ stb r0, 0x216(r29) -/* 80275AE8 80 7C 00 1C */ lwz r3, 0x1c(r28) -/* 80275AEC 80 63 00 00 */ lwz r3, 0(r3) -/* 80275AF0 80 03 00 08 */ lwz r0, 8(r3) -/* 80275AF4 54 00 02 53 */ rlwinm. r0, r0, 0, 9, 9 -/* 80275AF8 41 82 00 1C */ beq lbl_80275B14 -/* 80275AFC 80 1C 00 24 */ lwz r0, 0x24(r28) -/* 80275B00 28 00 00 00 */ cmplwi r0, 0 -/* 80275B04 41 82 00 10 */ beq lbl_80275B14 -/* 80275B08 7F 83 E3 78 */ mr r3, r28 -/* 80275B0C 7F A4 EB 78 */ mr r4, r29 -/* 80275B10 48 00 03 A1 */ bl drawC__11JPAResourceFP18JPAEmitterWorkData -lbl_80275B14: -/* 80275B14 7F 83 E3 78 */ mr r3, r28 -/* 80275B18 7F A4 EB 78 */ mr r4, r29 -/* 80275B1C 48 00 00 59 */ bl drawP__11JPAResourceFP18JPAEmitterWorkData -/* 80275B20 80 7C 00 1C */ lwz r3, 0x1c(r28) -/* 80275B24 80 63 00 00 */ lwz r3, 0(r3) -/* 80275B28 80 03 00 08 */ lwz r0, 8(r3) -/* 80275B2C 54 00 02 53 */ rlwinm. r0, r0, 0, 9, 9 -/* 80275B30 40 82 00 1C */ bne lbl_80275B4C -/* 80275B34 80 1C 00 24 */ lwz r0, 0x24(r28) -/* 80275B38 28 00 00 00 */ cmplwi r0, 0 -/* 80275B3C 41 82 00 10 */ beq lbl_80275B4C -/* 80275B40 7F 83 E3 78 */ mr r3, r28 -/* 80275B44 7F A4 EB 78 */ mr r4, r29 -/* 80275B48 48 00 03 69 */ bl drawC__11JPAResourceFP18JPAEmitterWorkData -lbl_80275B4C: -/* 80275B4C 3B FF 00 01 */ addi r31, r31, 1 -lbl_80275B50: -/* 80275B50 88 1E 01 10 */ lbz r0, 0x110(r30) -/* 80275B54 7C 1F 00 00 */ cmpw r31, r0 -/* 80275B58 40 81 FF 84 */ ble lbl_80275ADC -/* 80275B5C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80275B60 48 0E C6 C5 */ bl _restgpr_28 -/* 80275B64 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80275B68 7C 08 03 A6 */ mtlr r0 -/* 80275B6C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80275B70 4E 80 00 20 */ blr diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h index 0e7192f0839..3a38c81bd77 100644 --- a/include/JSystem/JParticle/JPABaseShape.h +++ b/include/JSystem/JParticle/JPABaseShape.h @@ -2,5 +2,108 @@ #define JPABASESHAPE_H #include "dolphin/types.h" +#include "dolphin/gx/GX.h" + +class JPAEmitterWorkData; +class JKRHeap; + +struct JPABaseShapeData { + // Common header. + /* 0x00 */ u8 mMagic[4]; + /* 0x04 */ u32 mSize; + + /* 0x08 */ u32 mFlags; + /* 0x0C */ s16 mClrPrmAnmOffset; + /* 0x0E */ s16 mClrEnvAnmOffset; + /* 0x10 */ f32 mBaseSizeX; + /* 0x14 */ f32 mBaseSizeY; + /* 0x18 */ u16 mBlendModeCfg; + /* 0x1A */ u8 mAlphaCompareCfg; + /* 0x1B */ u8 mAlphaRef0; + /* 0x1C */ u8 mAlphaRef1; + /* 0x1D */ u8 mZModeCfg; + /* 0x1E */ u8 mTexFlg; + /* 0x1F */ u8 mTexAnmNum; + /* 0x20 */ u8 mTexIdx; + /* 0x21 */ u8 mClrFlg; + /* 0x22 */ u8 mClrPrmKeyNum; + /* 0x23 */ u8 mClrEnvKeyNum; + /* 0x24 */ s16 mClrAnmFrmMax; + /* 0x26 */ GXColor mClrPrm; + /* 0x2A */ GXColor mClrEnv; + /* 0x2E */ u8 mAnmRndm; + /* 0x2F */ u8 mClrAnmRndmMask; + /* 0x30 */ u8 mTexAnmRndmMask; +}; + +struct JPABaseShape { +public: + /* 8027A6DC */ JPABaseShape(u8 const*, JKRHeap*); + /* 8027A7E8 */ void setGX(JPAEmitterWorkData*) const; + + static GXBlendMode st_bm[3]; + static GXBlendFactor st_bf[10]; + static GXLogicOp st_lo[16]; + static GXCompare st_c[8]; + static GXAlphaOp st_ao[4]; + static GXTevColorArg st_ca[6][4]; + static GXTevAlphaArg st_aa[2][4]; + + GXBlendMode getBlendMode() const { return st_bm[mpData->mBlendModeCfg & 0x03]; } + GXBlendFactor getBlendSrc() const { return st_bf[(mpData->mBlendModeCfg >> 2) & 0x0F]; } + GXBlendFactor getBlendDst() const { return st_bf[(mpData->mBlendModeCfg >> 6) & 0x0F]; } + GXLogicOp getLogicOp() const { return st_lo[(mpData->mBlendModeCfg >> 10) & 0x0F]; } + GXBool getZCompLoc() const { return (GXBool)((mpData->mZModeCfg >> 5) & 0x01); } + + GXBool getZEnable() const { return (GXBool)(mpData->mZModeCfg & 0x01); } + GXCompare getZCmp() const { return st_c[(mpData->mZModeCfg >> 1) & 0x07]; } + GXBool getZUpd() const { return (GXBool)((mpData->mZModeCfg >> 4) & 0x01); } + + GXCompare getAlphaCmp0() const { return st_c[mpData->mAlphaCompareCfg & 0x07]; } + u8 getAlphaRef0() const { return mpData->mAlphaRef0; } + GXAlphaOp getAlphaOp() const { return st_ao[(mpData->mAlphaCompareCfg >> 3) & 0x03]; } + GXCompare getAlphaCmp1() const { return st_c[(mpData->mAlphaCompareCfg >> 5) & 0x07]; } + u8 getAlphaRef1() const { return mpData->mAlphaRef1; } + + const GXTevColorArg* getTevColorArg() const { return st_ca[(mpData->mFlags >> 0x0F) & 0x07]; } + const GXTevAlphaArg* getTevAlphaArg() const { return st_aa[(mpData->mFlags >> 0x12) & 0x01]; } + + u32 getType() const { return (mpData->mFlags >> 0) & 0x0F; } + u32 getDirType() const { return (mpData->mFlags >> 4) & 0x07; } + u32 getRotType() const { return (mpData->mFlags >> 7) & 0x07; } + u32 getBasePlaneType() const { return (mpData->mFlags >> 10) & 0x07; } + u32 getTilingS() const { return (mpData->mFlags >> 25) & 0x01; } + u32 getTilingT() const { return (mpData->mFlags >> 26) & 0x01; } + bool isGlblClrAnm() const { return !!(mpData->mFlags & 0x00001000); } + bool isGlblTexAnm() const { return !!(mpData->mFlags & 0x00004000); } + bool isPrjTex() const { return !!(mpData->mFlags & 0x00100000); } + bool isDrawFwdAhead() const { return !!(mpData->mFlags & 0x00200000); } + bool isDrawPrntAhead() const { return !!(mpData->mFlags & 0x00400000); } + bool isClipOn() const { return !!(mpData->mFlags & 0x00800000); } + bool isTexCrdAnm() const { return !!(mpData->mFlags & 0x01000000); } + bool isNoDrawParent() const { return !!(mpData->mFlags & 0x08000000); } + bool isNoDrawChild() const { return !!(mpData->mFlags & 0x10000000); } + + bool isPrmAnm() const { return !!(mpData->mClrFlg & 0x02); } + bool isEnvAnm() const { return !!(mpData->mClrFlg & 0x08); } + u8 getClrAnmType() const { return (mpData->mClrFlg >> 4) & 0x07; } + s16 getClrAnmMaxFrm() const { return mpData->mClrAnmFrmMax; } + void getPrmClr(s16 idx, GXColor* dst) { *dst = mpPrmClrAnmTbl[idx]; } + void getEnvClr(s16 idx, GXColor* dst) { *dst = mpEnvClrAnmTbl[idx]; } + + bool isTexAnm() const { return !!(mpData->mTexFlg & 0x01); } + u8 getTexAnmType() const { return (mpData->mTexFlg >> 2) & 0x07; } + u32 getTexIdx() const { return mpData->mTexIdx; } + + f32 getBaseSizeX() const { return mpData->mBaseSizeX; } + f32 getBaseSizeY() const { return mpData->mBaseSizeY; } + +public: + const JPABaseShapeData* mpData; + const void* mpTexCrdMtxAnmTbl; + const u8* mpTexIdxAnimTbl; + GXColor* mpPrmClrAnmTbl; + GXColor* mpEnvClrAnmTbl; +}; #endif /* JPABASESHAPE_H */ diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index ca6dd4d926e..7b72bbe1c77 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -194,6 +194,7 @@ public: bool checkStatus(u32 status) { return !!(mStatus & status); } u8 getResourceManagerID() const { return mResMgrID; } u8 getGroupID() const { return mGroupID; } + u8 getDrawTimes() const { return mDrawTimes; } public: /* 0x00 */ Vec mLocalScl; diff --git a/libs/JSystem/JParticle/JPABaseShape.cpp b/libs/JSystem/JParticle/JPABaseShape.cpp index 12c7c3128eb..9eaabc93eaa 100644 --- a/libs/JSystem/JParticle/JPABaseShape.cpp +++ b/libs/JSystem/JParticle/JPABaseShape.cpp @@ -20,105 +20,6 @@ struct JKRHeap { /* 802CE474 */ void alloc(u32, int, JKRHeap*); }; -struct JPABaseShapeData { - // Common header. - /* 0x00 */ u8 mMagic[4]; - /* 0x04 */ u32 mSize; - - /* 0x08 */ u32 mFlags; - /* 0x0C */ s16 mClrPrmAnmOffset; - /* 0x0E */ s16 mClrEnvAnmOffset; - /* 0x10 */ f32 mBaseSizeX; - /* 0x14 */ f32 mBaseSizeY; - /* 0x18 */ u16 mBlendModeCfg; - /* 0x1A */ u8 mAlphaCompareCfg; - /* 0x1B */ u8 mAlphaRef0; - /* 0x1C */ u8 mAlphaRef1; - /* 0x1D */ u8 mZModeCfg; - /* 0x1E */ u8 mTexFlg; - /* 0x1F */ u8 mTexAnmNum; - /* 0x20 */ u8 mTexIdx; - /* 0x21 */ u8 mClrFlg; - /* 0x22 */ u8 mClrPrmKeyNum; - /* 0x23 */ u8 mClrEnvKeyNum; - /* 0x24 */ s16 mClrAnmFrmMax; - /* 0x26 */ GXColor mClrPrm; - /* 0x2A */ GXColor mClrEnv; - /* 0x2E */ u8 mAnmRndm; - /* 0x2F */ u8 mClrAnmRndmMask; - /* 0x30 */ u8 mTexAnmRndmMask; -}; - -struct JPABaseShape { -public: - /* 8027A6DC */ JPABaseShape(u8 const*, JKRHeap*); - /* 8027A7E8 */ void setGX(JPAEmitterWorkData*) const; - - static GXBlendMode st_bm[3]; - static GXBlendFactor st_bf[10]; - static GXLogicOp st_lo[16]; - static GXCompare st_c[8]; - static GXAlphaOp st_ao[4]; - static GXTevColorArg st_ca[6][4]; - static GXTevAlphaArg st_aa[2][4]; - - GXBlendMode getBlendMode() const { return st_bm[mpData->mBlendModeCfg & 0x03]; } - GXBlendFactor getBlendSrc() const { return st_bf[(mpData->mBlendModeCfg >> 2) & 0x0F]; } - GXBlendFactor getBlendDst() const { return st_bf[(mpData->mBlendModeCfg >> 6) & 0x0F]; } - GXLogicOp getLogicOp() const { return st_lo[(mpData->mBlendModeCfg >> 10) & 0x0F]; } - GXBool getZCompLoc() const { return (GXBool)((mpData->mZModeCfg >> 5) & 0x01); } - - GXBool getZEnable() const { return (GXBool)(mpData->mZModeCfg & 0x01); } - GXCompare getZCmp() const { return st_c[(mpData->mZModeCfg >> 1) & 0x07]; } - GXBool getZUpd() const { return (GXBool)((mpData->mZModeCfg >> 4) & 0x01); } - - GXCompare getAlphaCmp0() const { return st_c[mpData->mAlphaCompareCfg & 0x07]; } - u8 getAlphaRef0() const { return mpData->mAlphaRef0; } - GXAlphaOp getAlphaOp() const { return st_ao[(mpData->mAlphaCompareCfg >> 3) & 0x03]; } - GXCompare getAlphaCmp1() const { return st_c[(mpData->mAlphaCompareCfg >> 5) & 0x07]; } - u8 getAlphaRef1() const { return mpData->mAlphaRef1; } - - const GXTevColorArg* getTevColorArg() const { return st_ca[(mpData->mFlags >> 0x0F) & 0x07]; } - const GXTevAlphaArg* getTevAlphaArg() const { return st_aa[(mpData->mFlags >> 0x12) & 0x01]; } - - u32 getType() const { return (mpData->mFlags >> 0) & 0x0F; } - u32 getDirType() const { return (mpData->mFlags >> 4) & 0x07; } - u32 getRotType() const { return (mpData->mFlags >> 7) & 0x07; } - u32 getBasePlaneType() const { return (mpData->mFlags >> 10) & 0x07; } - u32 getTilingS() const { return (mpData->mFlags >> 25) & 0x01; } - u32 getTilingT() const { return (mpData->mFlags >> 26) & 0x01; } - bool isGlblClrAnm() const { return !!(mpData->mFlags & 0x00001000); } - bool isGlblTexAnm() const { return !!(mpData->mFlags & 0x00004000); } - bool isPrjTex() const { return !!(mpData->mFlags & 0x00100000); } - bool isDrawFwdAhead() const { return !!(mpData->mFlags & 0x00200000); } - bool isDrawPrntAhead() const { return !!(mpData->mFlags & 0x00400000); } - bool isClipOn() const { return !!(mpData->mFlags & 0x00800000); } - bool isTexCrdAnm() const { return !!(mpData->mFlags & 0x01000000); } - bool isNoDrawParent() const { return !!(mpData->mFlags & 0x08000000); } - bool isNoDrawChild() const { return !!(mpData->mFlags & 0x10000000); } - - bool isPrmAnm() const { return !!(mpData->mClrFlg & 0x02); } - bool isEnvAnm() const { return !!(mpData->mClrFlg & 0x08); } - u8 getClrAnmType() const { return (mpData->mClrFlg >> 4) & 0x07; } - s16 getClrAnmMaxFrm() const { return mpData->mClrAnmFrmMax; } - void getPrmClr(s16 idx, GXColor* dst) { *dst = mpPrmClrAnmTbl[idx]; } - void getEnvClr(s16 idx, GXColor* dst) { *dst = mpEnvClrAnmTbl[idx]; } - - bool isTexAnm() const { return !!(mpData->mTexFlg & 0x01); } - u8 getTexAnmType() const { return (mpData->mTexFlg >> 2) & 0x07; } - u32 getTexIdx() const { return mpData->mTexIdx; } - - f32 getBaseSizeX() const { return mpData->mBaseSizeX; } - f32 getBaseSizeY() const { return mpData->mBaseSizeY; } - -public: - const JPABaseShapeData* mpData; - const void* mpTexCrdMtxAnmTbl; - const u8* mpTexIdxAnimTbl; - GXColor* mpPrmClrAnmTbl; - GXColor* mpEnvClrAnmTbl; -}; - struct JMath { static u8 sincosTable_[65536]; }; diff --git a/libs/JSystem/JParticle/JPAResource.cpp b/libs/JSystem/JParticle/JPAResource.cpp index a21e82b7de5..ecab76d0213 100644 --- a/libs/JSystem/JParticle/JPAResource.cpp +++ b/libs/JSystem/JParticle/JPAResource.cpp @@ -5,6 +5,7 @@ #include "JSystem/JParticle/JPAResource.h" #include "JSystem/JParticle/JPAMath.h" +#include "JSystem/JParticle/JPABaseShape.h" #include "JSystem/JParticle/JPAParticle.h" #include "dol2asm.h" #include "dolphin/mtx/mtx.h" @@ -148,14 +149,34 @@ extern "C" void _restgpr_28(); // /* 80274010-80274080 26E950 0070+00 0/0 1/1 0/0 .text __ct__11JPAResourceFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JPAResource::JPAResource() { - nofralloc -#include "asm/JSystem/JParticle/JPAResource/__ct__11JPAResourceFv.s" +JPAResource::JPAResource() { + mpDrawEmitterChildFuncList = NULL; + mpDrawEmitterFuncList = NULL; + mpCalcEmitterFuncList = NULL; + mpDrawParticleChildFuncList = NULL; + mpCalcParticleChildFuncList = NULL; + mpDrawParticleFuncList = NULL; + mpCalcParticleFuncList = NULL; + mpBaseShape = NULL; + mpExtraShape = NULL; + mpChildShape = NULL; + mpExTexShape = NULL; + mpDynamicsBlock = NULL; + mpFieldBlocks = NULL; + mpKeyBlocks = NULL; + mpTDB1 = NULL; + mpDrawParticleChildFuncListNum = 0; + mpCalcParticleChildFuncListNum = 0; + mpDrawParticleFuncListNum = 0; + mpCalcParticleFuncListNum = 0; + mpDrawEmitterChildFuncListNum = 0; + mpDrawEmitterFuncListNum = 0; + mpCalcEmitterFuncListNum = 0; + mTDB1Num = 0; + mKeyBlockNum = 0; + mFieldBlockNum = 0; + mUsrIdx = 0; } -#pragma pop /* ############################################################################################## */ /* 803C40C0-803C4220 0211E0 0144+1C 2/2 0/0 0/0 .data jpa_pos */ @@ -574,14 +595,21 @@ asm void JPAResource::calc(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) /* 80275A94-80275B74 2703D4 00E0+00 0/0 1/1 0/0 .text * draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPAResource::draw(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAResource/draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s" +void JPAResource::draw(JPAEmitterWorkData* work, JPABaseEmitter* emtr) { + work->mpEmtr = emtr; + work->mpRes = this; + work->mDrawCount = 0; + calcWorkData_d(work); + mpBaseShape->setGX(work); + for (s32 i = 1; i <= emtr->getDrawTimes(); i++) { + work->mDrawCount++; + if (mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL) + drawC(work); + drawP(work); + if (!mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL) + drawC(work); + } } -#pragma pop /* ############################################################################################## */ /* 80455290-80455294 003890 0004+00 2/2 0/0 0/0 .sdata2 @3189 */ From e4e6a51a5ae4d88ba4b0e6eacc1374e877040f9f Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 23 Dec 2021 21:21:30 -0800 Subject: [PATCH 5/8] JPABaseShape color regist funcs --- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 70 --------- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 45 ------ .../JPARegistEnv__FP18JPAEmitterWorkData.s | 34 ----- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 34 ----- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 70 --------- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 45 ------ .../JPARegistPrmEnv__FP18JPAEmitterWorkData.s | 65 -------- .../JPARegistPrm__FP18JPAEmitterWorkData.s | 40 ----- libs/JSystem/JParticle/JPABaseShape.cpp | 143 +++++++++++------- 9 files changed, 86 insertions(+), 460 deletions(-) delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkData.s delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistPrmEnv__FP18JPAEmitterWorkData.s delete mode 100644 asm/JSystem/JParticle/JPABaseShape/JPARegistPrm__FP18JPAEmitterWorkData.s diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 34bc19c0573..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,70 +0,0 @@ -lbl_80277024: -/* 80277024 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80277028 7C 08 02 A6 */ mflr r0 -/* 8027702C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80277030 80 63 00 00 */ lwz r3, 0(r3) -/* 80277034 80 03 01 08 */ lwz r0, 0x108(r3) -/* 80277038 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027703C 80 04 00 90 */ lwz r0, 0x90(r4) -/* 80277040 90 01 00 10 */ stw r0, 0x10(r1) -/* 80277044 88 C1 00 14 */ lbz r6, 0x14(r1) -/* 80277048 88 A3 00 B8 */ lbz r5, 0xb8(r3) -/* 8027704C 38 05 00 01 */ addi r0, r5, 1 -/* 80277050 7C 06 01 D6 */ mullw r0, r6, r0 -/* 80277054 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80277058 98 01 00 14 */ stb r0, 0x14(r1) -/* 8027705C 88 C1 00 15 */ lbz r6, 0x15(r1) -/* 80277060 88 A3 00 B9 */ lbz r5, 0xb9(r3) -/* 80277064 38 05 00 01 */ addi r0, r5, 1 -/* 80277068 7C 06 01 D6 */ mullw r0, r6, r0 -/* 8027706C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80277070 98 01 00 15 */ stb r0, 0x15(r1) -/* 80277074 88 C1 00 16 */ lbz r6, 0x16(r1) -/* 80277078 88 A3 00 BA */ lbz r5, 0xba(r3) -/* 8027707C 38 05 00 01 */ addi r0, r5, 1 -/* 80277080 7C 06 01 D6 */ mullw r0, r6, r0 -/* 80277084 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80277088 98 01 00 16 */ stb r0, 0x16(r1) -/* 8027708C 88 C1 00 17 */ lbz r6, 0x17(r1) -/* 80277090 88 A3 00 BB */ lbz r5, 0xbb(r3) -/* 80277094 38 05 00 01 */ addi r0, r5, 1 -/* 80277098 7C 06 01 D6 */ mullw r0, r6, r0 -/* 8027709C 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f -/* 802770A0 98 A1 00 17 */ stb r5, 0x17(r1) -/* 802770A4 88 84 00 96 */ lbz r4, 0x96(r4) -/* 802770A8 38 04 00 01 */ addi r0, r4, 1 -/* 802770AC 7C 05 01 D6 */ mullw r0, r5, r0 -/* 802770B0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 802770B4 98 01 00 17 */ stb r0, 0x17(r1) -/* 802770B8 88 A1 00 10 */ lbz r5, 0x10(r1) -/* 802770BC 88 83 00 BC */ lbz r4, 0xbc(r3) -/* 802770C0 38 04 00 01 */ addi r0, r4, 1 -/* 802770C4 7C 05 01 D6 */ mullw r0, r5, r0 -/* 802770C8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 802770CC 98 01 00 10 */ stb r0, 0x10(r1) -/* 802770D0 88 A1 00 11 */ lbz r5, 0x11(r1) -/* 802770D4 88 83 00 BD */ lbz r4, 0xbd(r3) -/* 802770D8 38 04 00 01 */ addi r0, r4, 1 -/* 802770DC 7C 05 01 D6 */ mullw r0, r5, r0 -/* 802770E0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 802770E4 98 01 00 11 */ stb r0, 0x11(r1) -/* 802770E8 88 81 00 12 */ lbz r4, 0x12(r1) -/* 802770EC 88 63 00 BE */ lbz r3, 0xbe(r3) -/* 802770F0 38 03 00 01 */ addi r0, r3, 1 -/* 802770F4 7C 04 01 D6 */ mullw r0, r4, r0 -/* 802770F8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 802770FC 98 01 00 12 */ stb r0, 0x12(r1) -/* 80277100 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80277104 90 01 00 0C */ stw r0, 0xc(r1) -/* 80277108 38 60 00 01 */ li r3, 1 -/* 8027710C 38 81 00 0C */ addi r4, r1, 0xc -/* 80277110 48 0E 82 6D */ bl GXSetTevColor -/* 80277114 80 01 00 10 */ lwz r0, 0x10(r1) -/* 80277118 90 01 00 08 */ stw r0, 8(r1) -/* 8027711C 38 60 00 02 */ li r3, 2 -/* 80277120 38 81 00 08 */ addi r4, r1, 8 -/* 80277124 48 0E 82 59 */ bl GXSetTevColor -/* 80277128 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8027712C 7C 08 03 A6 */ mtlr r0 -/* 80277130 38 21 00 20 */ addi r1, r1, 0x20 -/* 80277134 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 567e6c36b2a..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_80276DB0: -/* 80276DB0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80276DB4 7C 08 02 A6 */ mflr r0 -/* 80276DB8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80276DBC 80 C3 00 00 */ lwz r6, 0(r3) -/* 80276DC0 80 06 01 08 */ lwz r0, 0x108(r6) -/* 80276DC4 90 01 00 0C */ stw r0, 0xc(r1) -/* 80276DC8 88 A1 00 0C */ lbz r5, 0xc(r1) -/* 80276DCC 88 66 00 B8 */ lbz r3, 0xb8(r6) -/* 80276DD0 38 03 00 01 */ addi r0, r3, 1 -/* 80276DD4 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276DD8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276DDC 98 01 00 0C */ stb r0, 0xc(r1) -/* 80276DE0 88 A1 00 0D */ lbz r5, 0xd(r1) -/* 80276DE4 88 66 00 B9 */ lbz r3, 0xb9(r6) -/* 80276DE8 38 03 00 01 */ addi r0, r3, 1 -/* 80276DEC 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276DF0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276DF4 98 01 00 0D */ stb r0, 0xd(r1) -/* 80276DF8 88 A1 00 0E */ lbz r5, 0xe(r1) -/* 80276DFC 88 66 00 BA */ lbz r3, 0xba(r6) -/* 80276E00 38 03 00 01 */ addi r0, r3, 1 -/* 80276E04 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276E08 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276E0C 98 01 00 0E */ stb r0, 0xe(r1) -/* 80276E10 88 A1 00 0F */ lbz r5, 0xf(r1) -/* 80276E14 88 66 00 BB */ lbz r3, 0xbb(r6) -/* 80276E18 38 03 00 01 */ addi r0, r3, 1 -/* 80276E1C 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276E20 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f -/* 80276E24 98 A1 00 0F */ stb r5, 0xf(r1) -/* 80276E28 88 64 00 96 */ lbz r3, 0x96(r4) -/* 80276E2C 38 03 00 01 */ addi r0, r3, 1 -/* 80276E30 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276E34 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276E38 98 01 00 0F */ stb r0, 0xf(r1) -/* 80276E3C 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80276E40 90 01 00 08 */ stw r0, 8(r1) -/* 80276E44 38 60 00 01 */ li r3, 1 -/* 80276E48 38 81 00 08 */ addi r4, r1, 8 -/* 80276E4C 48 0E 85 31 */ bl GXSetTevColor -/* 80276E50 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80276E54 7C 08 03 A6 */ mtlr r0 -/* 80276E58 38 21 00 10 */ addi r1, r1, 0x10 -/* 80276E5C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkData.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkData.s deleted file mode 100644 index 8112120c8e9..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkData.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_80276C2C: -/* 80276C2C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80276C30 7C 08 02 A6 */ mflr r0 -/* 80276C34 90 01 00 14 */ stw r0, 0x14(r1) -/* 80276C38 80 A3 00 00 */ lwz r5, 0(r3) -/* 80276C3C 80 05 01 0C */ lwz r0, 0x10c(r5) -/* 80276C40 90 01 00 0C */ stw r0, 0xc(r1) -/* 80276C44 88 81 00 0C */ lbz r4, 0xc(r1) -/* 80276C48 88 65 00 BC */ lbz r3, 0xbc(r5) -/* 80276C4C 38 03 00 01 */ addi r0, r3, 1 -/* 80276C50 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276C54 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276C58 98 01 00 0C */ stb r0, 0xc(r1) -/* 80276C5C 88 81 00 0D */ lbz r4, 0xd(r1) -/* 80276C60 88 65 00 BD */ lbz r3, 0xbd(r5) -/* 80276C64 38 03 00 01 */ addi r0, r3, 1 -/* 80276C68 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276C6C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276C70 98 01 00 0D */ stb r0, 0xd(r1) -/* 80276C74 88 81 00 0E */ lbz r4, 0xe(r1) -/* 80276C78 88 65 00 BE */ lbz r3, 0xbe(r5) -/* 80276C7C 38 03 00 01 */ addi r0, r3, 1 -/* 80276C80 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276C84 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276C88 98 01 00 0E */ stb r0, 0xe(r1) -/* 80276C8C 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80276C90 90 01 00 08 */ stw r0, 8(r1) -/* 80276C94 38 60 00 02 */ li r3, 2 -/* 80276C98 38 81 00 08 */ addi r4, r1, 8 -/* 80276C9C 48 0E 86 E1 */ bl GXSetTevColor -/* 80276CA0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80276CA4 7C 08 03 A6 */ mtlr r0 -/* 80276CA8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80276CAC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 6e8caa2343c..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_80277138: -/* 80277138 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8027713C 7C 08 02 A6 */ mflr r0 -/* 80277140 90 01 00 14 */ stw r0, 0x14(r1) -/* 80277144 80 A3 00 00 */ lwz r5, 0(r3) -/* 80277148 80 04 00 90 */ lwz r0, 0x90(r4) -/* 8027714C 90 01 00 0C */ stw r0, 0xc(r1) -/* 80277150 88 81 00 0C */ lbz r4, 0xc(r1) -/* 80277154 88 65 00 BC */ lbz r3, 0xbc(r5) -/* 80277158 38 03 00 01 */ addi r0, r3, 1 -/* 8027715C 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80277160 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80277164 98 01 00 0C */ stb r0, 0xc(r1) -/* 80277168 88 81 00 0D */ lbz r4, 0xd(r1) -/* 8027716C 88 65 00 BD */ lbz r3, 0xbd(r5) -/* 80277170 38 03 00 01 */ addi r0, r3, 1 -/* 80277174 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80277178 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027717C 98 01 00 0D */ stb r0, 0xd(r1) -/* 80277180 88 81 00 0E */ lbz r4, 0xe(r1) -/* 80277184 88 65 00 BE */ lbz r3, 0xbe(r5) -/* 80277188 38 03 00 01 */ addi r0, r3, 1 -/* 8027718C 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80277190 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80277194 98 01 00 0E */ stb r0, 0xe(r1) -/* 80277198 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8027719C 90 01 00 08 */ stw r0, 8(r1) -/* 802771A0 38 60 00 02 */ li r3, 2 -/* 802771A4 38 81 00 08 */ addi r4, r1, 8 -/* 802771A8 48 0E 81 D5 */ bl GXSetTevColor -/* 802771AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802771B0 7C 08 03 A6 */ mtlr r0 -/* 802771B4 38 21 00 10 */ addi r1, r1, 0x10 -/* 802771B8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 1b924fe8e76..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,70 +0,0 @@ -lbl_80276F10: -/* 80276F10 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80276F14 7C 08 02 A6 */ mflr r0 -/* 80276F18 90 01 00 24 */ stw r0, 0x24(r1) -/* 80276F1C 80 63 00 00 */ lwz r3, 0(r3) -/* 80276F20 80 04 00 8C */ lwz r0, 0x8c(r4) -/* 80276F24 90 01 00 14 */ stw r0, 0x14(r1) -/* 80276F28 80 04 00 90 */ lwz r0, 0x90(r4) -/* 80276F2C 90 01 00 10 */ stw r0, 0x10(r1) -/* 80276F30 88 C1 00 14 */ lbz r6, 0x14(r1) -/* 80276F34 88 A3 00 B8 */ lbz r5, 0xb8(r3) -/* 80276F38 38 05 00 01 */ addi r0, r5, 1 -/* 80276F3C 7C 06 01 D6 */ mullw r0, r6, r0 -/* 80276F40 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276F44 98 01 00 14 */ stb r0, 0x14(r1) -/* 80276F48 88 C1 00 15 */ lbz r6, 0x15(r1) -/* 80276F4C 88 A3 00 B9 */ lbz r5, 0xb9(r3) -/* 80276F50 38 05 00 01 */ addi r0, r5, 1 -/* 80276F54 7C 06 01 D6 */ mullw r0, r6, r0 -/* 80276F58 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276F5C 98 01 00 15 */ stb r0, 0x15(r1) -/* 80276F60 88 C1 00 16 */ lbz r6, 0x16(r1) -/* 80276F64 88 A3 00 BA */ lbz r5, 0xba(r3) -/* 80276F68 38 05 00 01 */ addi r0, r5, 1 -/* 80276F6C 7C 06 01 D6 */ mullw r0, r6, r0 -/* 80276F70 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276F74 98 01 00 16 */ stb r0, 0x16(r1) -/* 80276F78 88 C1 00 17 */ lbz r6, 0x17(r1) -/* 80276F7C 88 A3 00 BB */ lbz r5, 0xbb(r3) -/* 80276F80 38 05 00 01 */ addi r0, r5, 1 -/* 80276F84 7C 06 01 D6 */ mullw r0, r6, r0 -/* 80276F88 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f -/* 80276F8C 98 A1 00 17 */ stb r5, 0x17(r1) -/* 80276F90 88 84 00 96 */ lbz r4, 0x96(r4) -/* 80276F94 38 04 00 01 */ addi r0, r4, 1 -/* 80276F98 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276F9C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276FA0 98 01 00 17 */ stb r0, 0x17(r1) -/* 80276FA4 88 A1 00 10 */ lbz r5, 0x10(r1) -/* 80276FA8 88 83 00 BC */ lbz r4, 0xbc(r3) -/* 80276FAC 38 04 00 01 */ addi r0, r4, 1 -/* 80276FB0 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276FB4 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276FB8 98 01 00 10 */ stb r0, 0x10(r1) -/* 80276FBC 88 A1 00 11 */ lbz r5, 0x11(r1) -/* 80276FC0 88 83 00 BD */ lbz r4, 0xbd(r3) -/* 80276FC4 38 04 00 01 */ addi r0, r4, 1 -/* 80276FC8 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276FCC 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276FD0 98 01 00 11 */ stb r0, 0x11(r1) -/* 80276FD4 88 81 00 12 */ lbz r4, 0x12(r1) -/* 80276FD8 88 63 00 BE */ lbz r3, 0xbe(r3) -/* 80276FDC 38 03 00 01 */ addi r0, r3, 1 -/* 80276FE0 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276FE4 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276FE8 98 01 00 12 */ stb r0, 0x12(r1) -/* 80276FEC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80276FF0 90 01 00 0C */ stw r0, 0xc(r1) -/* 80276FF4 38 60 00 01 */ li r3, 1 -/* 80276FF8 38 81 00 0C */ addi r4, r1, 0xc -/* 80276FFC 48 0E 83 81 */ bl GXSetTevColor -/* 80277000 80 01 00 10 */ lwz r0, 0x10(r1) -/* 80277004 90 01 00 08 */ stw r0, 8(r1) -/* 80277008 38 60 00 02 */ li r3, 2 -/* 8027700C 38 81 00 08 */ addi r4, r1, 8 -/* 80277010 48 0E 83 6D */ bl GXSetTevColor -/* 80277014 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80277018 7C 08 03 A6 */ mtlr r0 -/* 8027701C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80277020 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 6be9a3e9625..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_80276E60: -/* 80276E60 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80276E64 7C 08 02 A6 */ mflr r0 -/* 80276E68 90 01 00 14 */ stw r0, 0x14(r1) -/* 80276E6C 80 C3 00 00 */ lwz r6, 0(r3) -/* 80276E70 80 04 00 8C */ lwz r0, 0x8c(r4) -/* 80276E74 90 01 00 0C */ stw r0, 0xc(r1) -/* 80276E78 88 A1 00 0C */ lbz r5, 0xc(r1) -/* 80276E7C 88 66 00 B8 */ lbz r3, 0xb8(r6) -/* 80276E80 38 03 00 01 */ addi r0, r3, 1 -/* 80276E84 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276E88 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276E8C 98 01 00 0C */ stb r0, 0xc(r1) -/* 80276E90 88 A1 00 0D */ lbz r5, 0xd(r1) -/* 80276E94 88 66 00 B9 */ lbz r3, 0xb9(r6) -/* 80276E98 38 03 00 01 */ addi r0, r3, 1 -/* 80276E9C 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276EA0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276EA4 98 01 00 0D */ stb r0, 0xd(r1) -/* 80276EA8 88 A1 00 0E */ lbz r5, 0xe(r1) -/* 80276EAC 88 66 00 BA */ lbz r3, 0xba(r6) -/* 80276EB0 38 03 00 01 */ addi r0, r3, 1 -/* 80276EB4 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276EB8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276EBC 98 01 00 0E */ stb r0, 0xe(r1) -/* 80276EC0 88 A1 00 0F */ lbz r5, 0xf(r1) -/* 80276EC4 88 66 00 BB */ lbz r3, 0xbb(r6) -/* 80276EC8 38 03 00 01 */ addi r0, r3, 1 -/* 80276ECC 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276ED0 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f -/* 80276ED4 98 A1 00 0F */ stb r5, 0xf(r1) -/* 80276ED8 88 64 00 96 */ lbz r3, 0x96(r4) -/* 80276EDC 38 03 00 01 */ addi r0, r3, 1 -/* 80276EE0 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276EE4 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276EE8 98 01 00 0F */ stb r0, 0xf(r1) -/* 80276EEC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80276EF0 90 01 00 08 */ stw r0, 8(r1) -/* 80276EF4 38 60 00 01 */ li r3, 1 -/* 80276EF8 38 81 00 08 */ addi r4, r1, 8 -/* 80276EFC 48 0E 84 81 */ bl GXSetTevColor -/* 80276F00 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80276F04 7C 08 03 A6 */ mtlr r0 -/* 80276F08 38 21 00 10 */ addi r1, r1, 0x10 -/* 80276F0C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmEnv__FP18JPAEmitterWorkData.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmEnv__FP18JPAEmitterWorkData.s deleted file mode 100644 index 79d4edca1c3..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrmEnv__FP18JPAEmitterWorkData.s +++ /dev/null @@ -1,65 +0,0 @@ -lbl_80276CB0: -/* 80276CB0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80276CB4 7C 08 02 A6 */ mflr r0 -/* 80276CB8 90 01 00 24 */ stw r0, 0x24(r1) -/* 80276CBC 80 63 00 00 */ lwz r3, 0(r3) -/* 80276CC0 80 03 01 08 */ lwz r0, 0x108(r3) -/* 80276CC4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80276CC8 80 03 01 0C */ lwz r0, 0x10c(r3) -/* 80276CCC 90 01 00 10 */ stw r0, 0x10(r1) -/* 80276CD0 88 A1 00 14 */ lbz r5, 0x14(r1) -/* 80276CD4 88 83 00 B8 */ lbz r4, 0xb8(r3) -/* 80276CD8 38 04 00 01 */ addi r0, r4, 1 -/* 80276CDC 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276CE0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276CE4 98 01 00 14 */ stb r0, 0x14(r1) -/* 80276CE8 88 A1 00 15 */ lbz r5, 0x15(r1) -/* 80276CEC 88 83 00 B9 */ lbz r4, 0xb9(r3) -/* 80276CF0 38 04 00 01 */ addi r0, r4, 1 -/* 80276CF4 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276CF8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276CFC 98 01 00 15 */ stb r0, 0x15(r1) -/* 80276D00 88 A1 00 16 */ lbz r5, 0x16(r1) -/* 80276D04 88 83 00 BA */ lbz r4, 0xba(r3) -/* 80276D08 38 04 00 01 */ addi r0, r4, 1 -/* 80276D0C 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276D10 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276D14 98 01 00 16 */ stb r0, 0x16(r1) -/* 80276D18 88 A1 00 17 */ lbz r5, 0x17(r1) -/* 80276D1C 88 83 00 BB */ lbz r4, 0xbb(r3) -/* 80276D20 38 04 00 01 */ addi r0, r4, 1 -/* 80276D24 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276D28 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276D2C 98 01 00 17 */ stb r0, 0x17(r1) -/* 80276D30 88 A1 00 10 */ lbz r5, 0x10(r1) -/* 80276D34 88 83 00 BC */ lbz r4, 0xbc(r3) -/* 80276D38 38 04 00 01 */ addi r0, r4, 1 -/* 80276D3C 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276D40 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276D44 98 01 00 10 */ stb r0, 0x10(r1) -/* 80276D48 88 A1 00 11 */ lbz r5, 0x11(r1) -/* 80276D4C 88 83 00 BD */ lbz r4, 0xbd(r3) -/* 80276D50 38 04 00 01 */ addi r0, r4, 1 -/* 80276D54 7C 05 01 D6 */ mullw r0, r5, r0 -/* 80276D58 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276D5C 98 01 00 11 */ stb r0, 0x11(r1) -/* 80276D60 88 81 00 12 */ lbz r4, 0x12(r1) -/* 80276D64 88 63 00 BE */ lbz r3, 0xbe(r3) -/* 80276D68 38 03 00 01 */ addi r0, r3, 1 -/* 80276D6C 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276D70 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276D74 98 01 00 12 */ stb r0, 0x12(r1) -/* 80276D78 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80276D7C 90 01 00 0C */ stw r0, 0xc(r1) -/* 80276D80 38 60 00 01 */ li r3, 1 -/* 80276D84 38 81 00 0C */ addi r4, r1, 0xc -/* 80276D88 48 0E 85 F5 */ bl GXSetTevColor -/* 80276D8C 80 01 00 10 */ lwz r0, 0x10(r1) -/* 80276D90 90 01 00 08 */ stw r0, 8(r1) -/* 80276D94 38 60 00 02 */ li r3, 2 -/* 80276D98 38 81 00 08 */ addi r4, r1, 8 -/* 80276D9C 48 0E 85 E1 */ bl GXSetTevColor -/* 80276DA0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80276DA4 7C 08 03 A6 */ mtlr r0 -/* 80276DA8 38 21 00 20 */ addi r1, r1, 0x20 -/* 80276DAC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrm__FP18JPAEmitterWorkData.s b/asm/JSystem/JParticle/JPABaseShape/JPARegistPrm__FP18JPAEmitterWorkData.s deleted file mode 100644 index edd544502e2..00000000000 --- a/asm/JSystem/JParticle/JPABaseShape/JPARegistPrm__FP18JPAEmitterWorkData.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_80276B90: -/* 80276B90 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80276B94 7C 08 02 A6 */ mflr r0 -/* 80276B98 90 01 00 14 */ stw r0, 0x14(r1) -/* 80276B9C 80 A3 00 00 */ lwz r5, 0(r3) -/* 80276BA0 80 05 01 08 */ lwz r0, 0x108(r5) -/* 80276BA4 90 01 00 0C */ stw r0, 0xc(r1) -/* 80276BA8 88 81 00 0C */ lbz r4, 0xc(r1) -/* 80276BAC 88 65 00 B8 */ lbz r3, 0xb8(r5) -/* 80276BB0 38 03 00 01 */ addi r0, r3, 1 -/* 80276BB4 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276BB8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276BBC 98 01 00 0C */ stb r0, 0xc(r1) -/* 80276BC0 88 81 00 0D */ lbz r4, 0xd(r1) -/* 80276BC4 88 65 00 B9 */ lbz r3, 0xb9(r5) -/* 80276BC8 38 03 00 01 */ addi r0, r3, 1 -/* 80276BCC 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276BD0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276BD4 98 01 00 0D */ stb r0, 0xd(r1) -/* 80276BD8 88 81 00 0E */ lbz r4, 0xe(r1) -/* 80276BDC 88 65 00 BA */ lbz r3, 0xba(r5) -/* 80276BE0 38 03 00 01 */ addi r0, r3, 1 -/* 80276BE4 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276BE8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276BEC 98 01 00 0E */ stb r0, 0xe(r1) -/* 80276BF0 88 81 00 0F */ lbz r4, 0xf(r1) -/* 80276BF4 88 65 00 BB */ lbz r3, 0xbb(r5) -/* 80276BF8 38 03 00 01 */ addi r0, r3, 1 -/* 80276BFC 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80276C00 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80276C04 98 01 00 0F */ stb r0, 0xf(r1) -/* 80276C08 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80276C0C 90 01 00 08 */ stw r0, 8(r1) -/* 80276C10 38 60 00 01 */ li r3, 1 -/* 80276C14 38 81 00 08 */ addi r4, r1, 8 -/* 80276C18 48 0E 87 65 */ bl GXSetTevColor -/* 80276C1C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80276C20 7C 08 03 A6 */ mtlr r0 -/* 80276C24 38 21 00 10 */ addi r1, r1, 0x10 -/* 80276C28 4E 80 00 20 */ blr diff --git a/libs/JSystem/JParticle/JPABaseShape.cpp b/libs/JSystem/JParticle/JPABaseShape.cpp index 9eaabc93eaa..6d60f7a479f 100644 --- a/libs/JSystem/JParticle/JPABaseShape.cpp +++ b/libs/JSystem/JParticle/JPABaseShape.cpp @@ -160,90 +160,119 @@ void JPASetLineWidth(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { GXSetLineWidth((u8)(lit_2262[0] * work->mGlobalPtclScl.x * ptcl->mParticleScaleX), GX_TO_ONE); } -/* 80276B90-80276C2C 2714D0 009C+00 0/0 1/1 0/0 .text JPARegistPrm__FP18JPAEmitterWorkData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistPrm(JPAEmitterWorkData* param_0) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrm__FP18JPAEmitterWorkData.s" +static inline u8 COLOR_MULTI(u32 a, u32 b) { + return ((a * (b + 1)) * 0x10000) >> 24; +} + +/* 80276B90-80276C2C 2714D0 009C+00 0/0 1/1 0/0 .text JPARegistPrm__FP18JPAEmitterWorkData */ +void JPARegistPrm(JPAEmitterWorkData* work) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor prm = emtr->mPrmClr; + prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); + prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); + prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); + prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); + GXSetTevColor(GX_TEVREG0, prm); } -#pragma pop /* 80276C2C-80276CB0 27156C 0084+00 0/0 1/1 0/0 .text JPARegistEnv__FP18JPAEmitterWorkData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistEnv(JPAEmitterWorkData* param_0) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkData.s" +void JPARegistEnv(JPAEmitterWorkData* work) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor env = emtr->mEnvClr; + env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); + env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); + env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); + GXSetTevColor(GX_TEVREG1, env); } -#pragma pop /* 80276CB0-80276DB0 2715F0 0100+00 0/0 1/1 0/0 .text JPARegistPrmEnv__FP18JPAEmitterWorkData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistPrmEnv(JPAEmitterWorkData* param_0) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrmEnv__FP18JPAEmitterWorkData.s" +void JPARegistPrmEnv(JPAEmitterWorkData* work) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor prm = emtr->mPrmClr; + GXColor env = emtr->mEnvClr; + prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); + prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); + prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); + prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); + env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); + env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); + env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); + GXSetTevColor(GX_TEVREG0, prm); + GXSetTevColor(GX_TEVREG1, env); } -#pragma pop /* 80276DB0-80276E60 2716F0 00B0+00 0/0 1/1 0/0 .text * JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistAlpha(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPARegistAlpha(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor prm = emtr->mPrmClr; + prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); + prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); + prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); + prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); + prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); + GXSetTevColor(GX_TEVREG0, prm); } -#pragma pop /* 80276E60-80276F10 2717A0 00B0+00 0/0 1/1 0/0 .text * JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistPrmAlpha(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPARegistPrmAlpha(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor prm = ptcl->mPrmClr; + prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); + prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); + prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); + prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); + prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); + GXSetTevColor(GX_TEVREG0, prm); } -#pragma pop /* 80276F10-80277024 271850 0114+00 0/0 1/1 0/0 .text * JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistPrmAlphaEnv(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPARegistPrmAlphaEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor prm = ptcl->mPrmClr; + GXColor env = ptcl->mEnvClr; + prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); + prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); + prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); + prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); + prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); + env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); + env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); + env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); + GXSetTevColor(GX_TEVREG0, prm); + GXSetTevColor(GX_TEVREG1, env); } -#pragma pop /* 80277024-80277138 271964 0114+00 0/0 1/1 0/0 .text * JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistAlphaEnv(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPARegistAlphaEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor prm = emtr->mPrmClr; + GXColor env = ptcl->mEnvClr; + prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); + prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); + prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); + prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); + prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); + env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); + env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); + env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); + GXSetTevColor(GX_TEVREG0, prm); + GXSetTevColor(GX_TEVREG1, env); } -#pragma pop /* 80277138-802771BC 271A78 0084+00 0/0 1/1 0/0 .text * JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistEnv(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPARegistEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPABaseEmitter* emtr = work->mpEmtr; + GXColor env = ptcl->mEnvClr; + env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); + env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); + env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); + GXSetTevColor(GX_TEVREG1, env); } -#pragma pop #define MIN(a, b) ((a) < (b) ? (a) : (b)) From b9a53e816975978d060446be054cc384cbddd3df Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 24 Dec 2021 13:01:37 -0800 Subject: [PATCH 6/8] JPAChildShape, more work on JPADynamicsBlock --- ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 12 - ...FP18JPAEmitterWorkDataP15JPABaseParticle.s | 13 -- ...egistChildPrmEnv__FP18JPAEmitterWorkData.s | 73 ------ .../__ct__16JPADynamicsBlockFPCUc.s | 14 -- .../init__16JPADynamicsBlockFv.s | 40 ---- include/JSystem/JGeometry.h | 16 ++ include/JSystem/JParticle/JPABaseShape.h | 10 +- include/JSystem/JParticle/JPAChildShape.h | 38 ++++ include/JSystem/JParticle/JPADynamicsBlock.h | 18 +- include/JSystem/JParticle/JPAParticle.h | 49 ++++- include/dolphin/gx/GX.h | 6 + libs/JSystem/JParticle/JPABaseShape.cpp | 29 ++- libs/JSystem/JParticle/JPAChildShape.cpp | 70 ++---- libs/JSystem/JParticle/JPADynamicsBlock.cpp | 207 ++++++++++++++---- 14 files changed, 337 insertions(+), 258 deletions(-) delete mode 100644 asm/JSystem/JParticle/JPAChildShape/JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAChildShape/JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s delete mode 100644 asm/JSystem/JParticle/JPAChildShape/JPARegistChildPrmEnv__FP18JPAEmitterWorkData.s delete mode 100644 asm/JSystem/JParticle/JPADynamicsBlock/__ct__16JPADynamicsBlockFPCUc.s delete mode 100644 asm/JSystem/JParticle/JPADynamicsBlock/init__16JPADynamicsBlockFv.s diff --git a/asm/JSystem/JParticle/JPAChildShape/JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAChildShape/JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 2a170dbadff..00000000000 --- a/asm/JSystem/JParticle/JPAChildShape/JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8027AFDC: -/* 8027AFDC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8027AFE0 C0 42 B9 08 */ lfs f2, lit_2318(r2) -/* 8027AFE4 C0 22 B9 0C */ lfs f1, lit_2319(r2) -/* 8027AFE8 C0 04 00 84 */ lfs f0, 0x84(r4) -/* 8027AFEC EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027AFF0 EC 62 00 32 */ fmuls f3, f2, f0 -/* 8027AFF4 F0 61 A0 08 */ psq_st f3, 8(r1), 1, 2 /* qr2 */ -/* 8027AFF8 88 01 00 08 */ lbz r0, 8(r1) -/* 8027AFFC 98 04 00 96 */ stb r0, 0x96(r4) -/* 8027B000 38 21 00 10 */ addi r1, r1, 0x10 -/* 8027B004 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAChildShape/JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAChildShape/JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 224478a1830..00000000000 --- a/asm/JSystem/JParticle/JPAChildShape/JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8027B008: -/* 8027B008 C0 24 00 68 */ lfs f1, 0x68(r4) -/* 8027B00C C0 42 B9 0C */ lfs f2, lit_2319(r2) -/* 8027B010 C0 04 00 84 */ lfs f0, 0x84(r4) -/* 8027B014 EC 02 00 28 */ fsubs f0, f2, f0 -/* 8027B018 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027B01C D0 04 00 60 */ stfs f0, 0x60(r4) -/* 8027B020 C0 24 00 6C */ lfs f1, 0x6c(r4) -/* 8027B024 C0 04 00 84 */ lfs f0, 0x84(r4) -/* 8027B028 EC 02 00 28 */ fsubs f0, f2, f0 -/* 8027B02C EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027B030 D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027B034 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAChildShape/JPARegistChildPrmEnv__FP18JPAEmitterWorkData.s b/asm/JSystem/JParticle/JPAChildShape/JPARegistChildPrmEnv__FP18JPAEmitterWorkData.s deleted file mode 100644 index 2e75c09424e..00000000000 --- a/asm/JSystem/JParticle/JPAChildShape/JPARegistChildPrmEnv__FP18JPAEmitterWorkData.s +++ /dev/null @@ -1,73 +0,0 @@ -lbl_8027AEBC: -/* 8027AEBC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AEC0 7C 08 02 A6 */ mflr r0 -/* 8027AEC4 90 01 00 24 */ stw r0, 0x24(r1) -/* 8027AEC8 80 83 00 04 */ lwz r4, 4(r3) -/* 8027AECC 80 84 00 24 */ lwz r4, 0x24(r4) -/* 8027AED0 80 63 00 00 */ lwz r3, 0(r3) -/* 8027AED4 80 84 00 00 */ lwz r4, 0(r4) -/* 8027AED8 89 64 00 34 */ lbz r11, 0x34(r4) -/* 8027AEDC 99 61 00 14 */ stb r11, 0x14(r1) -/* 8027AEE0 89 44 00 35 */ lbz r10, 0x35(r4) -/* 8027AEE4 99 41 00 15 */ stb r10, 0x15(r1) -/* 8027AEE8 89 24 00 36 */ lbz r9, 0x36(r4) -/* 8027AEEC 99 21 00 16 */ stb r9, 0x16(r1) -/* 8027AEF0 89 04 00 37 */ lbz r8, 0x37(r4) -/* 8027AEF4 99 01 00 17 */ stb r8, 0x17(r1) -/* 8027AEF8 88 E4 00 38 */ lbz r7, 0x38(r4) -/* 8027AEFC 98 E1 00 10 */ stb r7, 0x10(r1) -/* 8027AF00 88 C4 00 39 */ lbz r6, 0x39(r4) -/* 8027AF04 98 C1 00 11 */ stb r6, 0x11(r1) -/* 8027AF08 88 A4 00 3A */ lbz r5, 0x3a(r4) -/* 8027AF0C 98 A1 00 12 */ stb r5, 0x12(r1) -/* 8027AF10 88 04 00 3B */ lbz r0, 0x3b(r4) -/* 8027AF14 98 01 00 13 */ stb r0, 0x13(r1) -/* 8027AF18 88 83 00 B8 */ lbz r4, 0xb8(r3) -/* 8027AF1C 38 04 00 01 */ addi r0, r4, 1 -/* 8027AF20 7C 0B 01 D6 */ mullw r0, r11, r0 -/* 8027AF24 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027AF28 98 01 00 14 */ stb r0, 0x14(r1) -/* 8027AF2C 88 83 00 B9 */ lbz r4, 0xb9(r3) -/* 8027AF30 38 04 00 01 */ addi r0, r4, 1 -/* 8027AF34 7C 0A 01 D6 */ mullw r0, r10, r0 -/* 8027AF38 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027AF3C 98 01 00 15 */ stb r0, 0x15(r1) -/* 8027AF40 88 83 00 BA */ lbz r4, 0xba(r3) -/* 8027AF44 38 04 00 01 */ addi r0, r4, 1 -/* 8027AF48 7C 09 01 D6 */ mullw r0, r9, r0 -/* 8027AF4C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027AF50 98 01 00 16 */ stb r0, 0x16(r1) -/* 8027AF54 88 83 00 BB */ lbz r4, 0xbb(r3) -/* 8027AF58 38 04 00 01 */ addi r0, r4, 1 -/* 8027AF5C 7C 08 01 D6 */ mullw r0, r8, r0 -/* 8027AF60 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027AF64 98 01 00 17 */ stb r0, 0x17(r1) -/* 8027AF68 88 83 00 BC */ lbz r4, 0xbc(r3) -/* 8027AF6C 38 04 00 01 */ addi r0, r4, 1 -/* 8027AF70 7C 07 01 D6 */ mullw r0, r7, r0 -/* 8027AF74 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027AF78 98 01 00 10 */ stb r0, 0x10(r1) -/* 8027AF7C 88 83 00 BD */ lbz r4, 0xbd(r3) -/* 8027AF80 38 04 00 01 */ addi r0, r4, 1 -/* 8027AF84 7C 06 01 D6 */ mullw r0, r6, r0 -/* 8027AF88 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027AF8C 98 01 00 11 */ stb r0, 0x11(r1) -/* 8027AF90 88 63 00 BE */ lbz r3, 0xbe(r3) -/* 8027AF94 38 03 00 01 */ addi r0, r3, 1 -/* 8027AF98 7C 05 01 D6 */ mullw r0, r5, r0 -/* 8027AF9C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 8027AFA0 98 01 00 12 */ stb r0, 0x12(r1) -/* 8027AFA4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8027AFA8 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027AFAC 38 60 00 01 */ li r3, 1 -/* 8027AFB0 38 81 00 0C */ addi r4, r1, 0xc -/* 8027AFB4 48 0E 43 C9 */ bl GXSetTevColor -/* 8027AFB8 80 01 00 10 */ lwz r0, 0x10(r1) -/* 8027AFBC 90 01 00 08 */ stw r0, 8(r1) -/* 8027AFC0 38 60 00 02 */ li r3, 2 -/* 8027AFC4 38 81 00 08 */ addi r4, r1, 8 -/* 8027AFC8 48 0E 43 B5 */ bl GXSetTevColor -/* 8027AFCC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8027AFD0 7C 08 03 A6 */ mtlr r0 -/* 8027AFD4 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AFD8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPADynamicsBlock/__ct__16JPADynamicsBlockFPCUc.s b/asm/JSystem/JParticle/JPADynamicsBlock/__ct__16JPADynamicsBlockFPCUc.s deleted file mode 100644 index 9971f3b756d..00000000000 --- a/asm/JSystem/JParticle/JPADynamicsBlock/__ct__16JPADynamicsBlockFPCUc.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8027BB18: -/* 8027BB18 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8027BB1C 7C 08 02 A6 */ mflr r0 -/* 8027BB20 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027BB24 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8027BB28 7C 7F 1B 78 */ mr r31, r3 -/* 8027BB2C 90 83 00 00 */ stw r4, 0(r3) -/* 8027BB30 48 00 00 1D */ bl init__16JPADynamicsBlockFv -/* 8027BB34 7F E3 FB 78 */ mr r3, r31 -/* 8027BB38 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8027BB3C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8027BB40 7C 08 03 A6 */ mtlr r0 -/* 8027BB44 38 21 00 10 */ addi r1, r1, 0x10 -/* 8027BB48 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPADynamicsBlock/init__16JPADynamicsBlockFv.s b/asm/JSystem/JParticle/JPADynamicsBlock/init__16JPADynamicsBlockFv.s deleted file mode 100644 index abe1072918d..00000000000 --- a/asm/JSystem/JParticle/JPADynamicsBlock/init__16JPADynamicsBlockFv.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_8027BB4C: -/* 8027BB4C 80 83 00 00 */ lwz r4, 0(r3) -/* 8027BB50 80 04 00 08 */ lwz r0, 8(r4) -/* 8027BB54 54 00 C7 7E */ rlwinm r0, r0, 0x18, 0x1d, 0x1f -/* 8027BB58 28 00 00 06 */ cmplwi r0, 6 -/* 8027BB5C 4D 81 00 20 */ bgtlr -/* 8027BB60 3C 80 80 3C */ lis r4, lit_2631@ha /* 0x803C4488@ha */ -/* 8027BB64 38 84 44 88 */ addi r4, r4, lit_2631@l /* 0x803C4488@l */ -/* 8027BB68 54 00 10 3A */ slwi r0, r0, 2 -/* 8027BB6C 7C 04 00 2E */ lwzx r0, r4, r0 -/* 8027BB70 7C 09 03 A6 */ mtctr r0 -/* 8027BB74 4E 80 04 20 */ bctr -/* 8027BB78 3C 80 80 28 */ lis r4, JPAVolumeCube__FP18JPAEmitterWorkData@ha /* 0x8027B4E8@ha */ -/* 8027BB7C 38 04 B4 E8 */ addi r0, r4, JPAVolumeCube__FP18JPAEmitterWorkData@l /* 0x8027B4E8@l */ -/* 8027BB80 90 03 00 04 */ stw r0, 4(r3) -/* 8027BB84 4E 80 00 20 */ blr -/* 8027BB88 3C 80 80 28 */ lis r4, JPAVolumeSphere__FP18JPAEmitterWorkData@ha /* 0x8027B5F0@ha */ -/* 8027BB8C 38 04 B5 F0 */ addi r0, r4, JPAVolumeSphere__FP18JPAEmitterWorkData@l /* 0x8027B5F0@l */ -/* 8027BB90 90 03 00 04 */ stw r0, 4(r3) -/* 8027BB94 4E 80 00 20 */ blr -/* 8027BB98 3C 80 80 28 */ lis r4, JPAVolumeCylinder__FP18JPAEmitterWorkData@ha /* 0x8027B87C@ha */ -/* 8027BB9C 38 04 B8 7C */ addi r0, r4, JPAVolumeCylinder__FP18JPAEmitterWorkData@l /* 0x8027B87C@l */ -/* 8027BBA0 90 03 00 04 */ stw r0, 4(r3) -/* 8027BBA4 4E 80 00 20 */ blr -/* 8027BBA8 3C 80 80 28 */ lis r4, JPAVolumeTorus__FP18JPAEmitterWorkData@ha /* 0x8027B9F8@ha */ -/* 8027BBAC 38 04 B9 F8 */ addi r0, r4, JPAVolumeTorus__FP18JPAEmitterWorkData@l /* 0x8027B9F8@l */ -/* 8027BBB0 90 03 00 04 */ stw r0, 4(r3) -/* 8027BBB4 4E 80 00 20 */ blr -/* 8027BBB8 3C 80 80 28 */ lis r4, JPAVolumePoint__FP18JPAEmitterWorkData@ha /* 0x8027B144@ha */ -/* 8027BBBC 38 04 B1 44 */ addi r0, r4, JPAVolumePoint__FP18JPAEmitterWorkData@l /* 0x8027B144@l */ -/* 8027BBC0 90 03 00 04 */ stw r0, 4(r3) -/* 8027BBC4 4E 80 00 20 */ blr -/* 8027BBC8 3C 80 80 28 */ lis r4, JPAVolumeCircle__FP18JPAEmitterWorkData@ha /* 0x8027B33C@ha */ -/* 8027BBCC 38 04 B3 3C */ addi r0, r4, JPAVolumeCircle__FP18JPAEmitterWorkData@l /* 0x8027B33C@l */ -/* 8027BBD0 90 03 00 04 */ stw r0, 4(r3) -/* 8027BBD4 4E 80 00 20 */ blr -/* 8027BBD8 3C 80 80 28 */ lis r4, JPAVolumeLine__FP18JPAEmitterWorkData@ha /* 0x8027B220@ha */ -/* 8027BBDC 38 04 B2 20 */ addi r0, r4, JPAVolumeLine__FP18JPAEmitterWorkData@l /* 0x8027B220@l */ -/* 8027BBE0 90 03 00 04 */ stw r0, 4(r3) -/* 8027BBE4 4E 80 00 20 */ blr diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index fc2d86cd9ba..a4c0ca50ed6 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -33,6 +33,22 @@ struct TVec3 { y = other.y; z = other.z; } + + void set(f32 x_, f32 y_, f32 z_) { + x = x_; + y = y_; + z = z_; + } + + void zero() { + x = y = z = 0.0f; + } + + void mul(const TVec3& a, const TVec3& b) { + x = a.x * b.x; + y = a.y * b.y; + z = a.z * b.z; + } }; template diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h index 3a38c81bd77..a081b0c916d 100644 --- a/include/JSystem/JParticle/JPABaseShape.h +++ b/include/JSystem/JParticle/JPABaseShape.h @@ -99,11 +99,11 @@ public: f32 getBaseSizeY() const { return mpData->mBaseSizeY; } public: - const JPABaseShapeData* mpData; - const void* mpTexCrdMtxAnmTbl; - const u8* mpTexIdxAnimTbl; - GXColor* mpPrmClrAnmTbl; - GXColor* mpEnvClrAnmTbl; + /* 0x00 */ const JPABaseShapeData* mpData; + /* 0x04 */ const void* mpTexCrdMtxAnmTbl; + /* 0x08 */ const u8* mpTexIdxAnimTbl; + /* 0x0C */ GXColor* mpPrmClrAnmTbl; + /* 0x10 */ GXColor* mpEnvClrAnmTbl; }; #endif /* JPABASESHAPE_H */ diff --git a/include/JSystem/JParticle/JPAChildShape.h b/include/JSystem/JParticle/JPAChildShape.h index f5ef5fa60ea..5f6edf0d303 100644 --- a/include/JSystem/JParticle/JPAChildShape.h +++ b/include/JSystem/JParticle/JPAChildShape.h @@ -2,5 +2,43 @@ #define JPACHILDSHAPE_H #include "dolphin/types.h" +#include "dolphin/gx/GX.h" + +struct JPAChildShapeData { + // Common header. + /* 0x00 */ u8 mMagic[4]; + /* 0x04 */ u32 mSize; + + /* 0x08 */ u32 mFlags; + /* 0x0C */ f32 mPosRndm; + /* 0x10 */ f32 mBaseVel; + /* 0x14 */ f32 mBaseVelRndm; + /* 0x18 */ f32 mVelInfRate; + /* 0x1C */ f32 mGravity; + /* 0x20 */ f32 mScaleX; + /* 0x24 */ f32 mScaleY; + /* 0x28 */ f32 mInheritScale; + /* 0x2C */ f32 mInheritAlpha; + /* 0x30 */ f32 mInheritRGB; + /* 0x34 */ GXColor mPrmClr; + /* 0x38 */ GXColor mEnvClr; + /* 0x3C */ f32 mTiming; + /* 0x40 */ s16 mLife; + /* 0x42 */ s16 mRate; + /* 0x44 */ u8 mStep; + /* 0x45 */ u8 mTexIdx; + /* 0x46 */ s16 mRotSpeed; +}; + +class JPAChildShape { +public: + /* 8027B038 */ JPAChildShape(u8 const*); + + void getPrmClr(GXColor* dst) { *dst = mpData->mPrmClr; } + void getEnvClr(GXColor* dst) { *dst = mpData->mEnvClr; } + +public: + /* 0x00 */ const JPAChildShapeData* mpData; +}; #endif /* JPACHILDSHAPE_H */ diff --git a/include/JSystem/JParticle/JPADynamicsBlock.h b/include/JSystem/JParticle/JPADynamicsBlock.h index aa424f49a99..8b3e441c193 100644 --- a/include/JSystem/JParticle/JPADynamicsBlock.h +++ b/include/JSystem/JParticle/JPADynamicsBlock.h @@ -35,13 +35,21 @@ struct JPADynamicsBlockData { /* 0x70 */ s16 mStartFrame; /* 0x72 */ s16 mLifeTime; /* 0x74 */ s16 mVolumeSize; - /* 0x76 */ s16 mDivNumber; + /* 0x76 */ u16 mDivNumber; /* 0x78 */ u8 mRateStep; /* 0x7C */ u32 field_0x7c; }; typedef void (*JPADynamicsCalcVolumeFunc)(JPAEmitterWorkData*); +enum { + JPADynFlag_FixedDensity = 0x01, + JPADynFlag_FixedInterval = 0x02, + JPADynFlag_InheritScale = 0x04, + JPADynFlag_FollowEmtr = 0x08, + JPADynFlag_FollowEmtrChld = 0x10, +}; + class JPADynamicsBlock { public: /* 8027BB18 */ JPADynamicsBlock(u8 const*); @@ -52,10 +60,14 @@ public: s16 getStartFrame() const { return mpData->mStartFrame; } u32 getResUserWork() const { return mpData->mResUserWork; } + u32 getFlag() const { return mpData->mFlags; } + u32 getVolumeType() const { return (mpData->mFlags >> 8) & 0x07; } + u16 getDivNumber() const { return mpData->mDivNumber; } + f32 getRateRndm() const { return mpData->mRateRndm; } public: - JPADynamicsBlockData* mpData; - JPADynamicsCalcVolumeFunc mpCalcVolumeFunc; + /* 0x00 */ const JPADynamicsBlockData* mpData; + /* 0x04 */ JPADynamicsCalcVolumeFunc mpCalcVolumeFunc; }; #endif /* JPADYNAMICSBLOCK_H */ diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index 7b72bbe1c77..ae0a07b8b2e 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -7,6 +7,9 @@ #include "JSystem/JGeometry.h" #include "JSystem/JSupport/JSUList.h" +#include "JSystem/JParticle/JPADynamicsBlock.h" +#include "JSystem/JParticle/JPAResource.h" + class JKRHeap; class JPABaseEmitter; class JPABaseParticle; @@ -31,6 +34,30 @@ public: JPARandom() { mSeed = 0; } void set_seed(u32 seed) { mSeed = seed; } + u32 get_rndm_u() { + return mSeed = mSeed * 0x19660du + 0x3c6ef35fu; + } + + f32 get_rndm_f() { + union { u32 u; f32 f; } a; + a.u = ((get_rndm_u() >> 9) | 0x3f800000); + return a.f - 1.0f; + } + + f32 get_rndm_zp() { + f32 f = get_rndm_f(); + return (f + f) - 1.0f; + } + + f32 get_rndm_zh() { + f32 f = get_rndm_f(); + return f - 1.0f; + } + + s16 get_rndm_ss() { + return ((s16)get_rndm_u()) >> 16; + } + public: u32 mSeed; }; @@ -175,6 +202,13 @@ public: /* 8027E6A4 */ ~JPAEmitterCallBack(); }; +enum { + JPAEmtrStts_StopEmit = 0x01, + JPAEmtrStts_StopCalc = 0x02, + JPAEmtrStts_FirstEmit = 0x10, + JPAEmtrStts_RateStepEmit = 0x20, +}; + class JPABaseEmitter { public: /* 8027E5EC */ ~JPABaseEmitter(); @@ -191,11 +225,18 @@ public: /* 8027EF50 */ bool loadTexture(u8, GXTexMapID); void setStatus(u32 status) { mStatus |= status; } + void clearStatus(u32 status) { mStatus &= ~status; } bool checkStatus(u32 status) { return !!(mStatus & status); } + bool checkFlag(u32 flag) { return !!(mpRes->getDyn()->getFlag() & flag); } u8 getResourceManagerID() const { return mResMgrID; } u8 getGroupID() const { return mGroupID; } u8 getDrawTimes() const { return mDrawTimes; } + f32 get_r_f() { return mRndm.get_rndm_f(); } + f32 get_r_zp() { return mRndm.get_rndm_zp(); } + f32 get_r_zh() { return mRndm.get_rndm_zh(); } + s16 get_r_ss() { return mRndm.get_rndm_ss(); } + public: /* 0x00 */ Vec mLocalScl; /* 0x0C */ Vec mLocalTrs; @@ -235,7 +276,7 @@ public: /* 0xFC */ f32 mScaleOut; /* 0x100 */ u32 mTick; /* 0x104 */ s16 mWaitTime; - /* 0x106 */ u16 mRateStepTimer; + /* 0x106 */ s16 mRateStepTimer; /* 0x108 */ GXColor mPrmClr; /* 0x10C */ GXColor mEnvClr; /* 0x110 */ u8 mDrawTimes; @@ -246,11 +287,15 @@ public: class JPAParticleCallBack { public: - ~JPAParticleCallBack(); + virtual ~JPAParticleCallBack(); virtual void execute(JPABaseEmitter*, JPABaseParticle*); virtual void draw(JPABaseEmitter*, JPABaseParticle*); }; +enum { + JPAPtclStts_Invisible = 0x08, +}; + class JPABaseParticle { public: /* 8027EFEC */ void init_p(JPAEmitterWorkData*); diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h index e98033adfab..9f24e2e7106 100644 --- a/include/dolphin/gx/GX.h +++ b/include/dolphin/gx/GX.h @@ -922,7 +922,13 @@ inline void GXColor1u32(u32 c) { GFX_FIFO(u32) = c; } +inline void GXTexCoord2f32(f32 s, f32 t) { + GFX_FIFO(f32) = s; + GFX_FIFO(f32) = t; +} + inline void GXEnd() {} + }; #endif diff --git a/libs/JSystem/JParticle/JPABaseShape.cpp b/libs/JSystem/JParticle/JPABaseShape.cpp index 6d60f7a479f..158ac11b4fe 100644 --- a/libs/JSystem/JParticle/JPABaseShape.cpp +++ b/libs/JSystem/JParticle/JPABaseShape.cpp @@ -906,6 +906,22 @@ asm void JPADrawRotation(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) /* 80279110-802791B0 273A50 00A0+00 0/0 1/1 0/0 .text * JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle */ +#ifdef NONMATCHING +// literal only +void JPADrawPoint(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + if (!!(ptcl->mStatus & JPAPtclStts_Invisible)) + return; + + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXBegin(GX_POINTS, GX_VTXFMT1, 1); + GXPosition3f32(ptcl->mPosition.x, ptcl->mPosition.y, ptcl->mPosition.z); + GXTexCoord2f32(0.0f, 0.0f); + GXEnd(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -914,6 +930,7 @@ asm void JPADrawPoint(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { #include "asm/JSystem/JParticle/JPABaseShape/JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop +#endif /* 802791B0-80279364 273AF0 01B4+00 0/0 1/1 0/0 .text * JPADrawLine__FP18JPAEmitterWorkDataP15JPABaseParticle */ @@ -979,14 +996,12 @@ asm void JPADrawEmitterCallBackB(JPAEmitterWorkData* param_0) { /* 8027A414-8027A454 274D54 0040+00 0/0 1/1 0/0 .text * JPADrawParticleCallBack__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPADrawParticleCallBack(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPABaseShape/JPADrawParticleCallBack__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPADrawParticleCallBack(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + if (work->mpEmtr->mpPtclCallBack == NULL) + return; + + work->mpEmtr->mpPtclCallBack->draw(work->mpEmtr, ptcl); } -#pragma pop /* 8027A454-8027A6DC 274D94 0288+00 1/1 0/0 0/0 .text * makeColorTable__FPP8_GXColorPC16JPAClrAnmKeyDataUcsP7JKRHeap */ diff --git a/libs/JSystem/JParticle/JPAChildShape.cpp b/libs/JSystem/JParticle/JPAChildShape.cpp index 01b145b335e..8c982c3f556 100644 --- a/libs/JSystem/JParticle/JPAChildShape.cpp +++ b/libs/JSystem/JParticle/JPAChildShape.cpp @@ -7,81 +7,59 @@ #include "JSystem/JParticle/JPAParticle.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "dolphin/os/OS.h" // // Types: // -struct JPAChildShape { -public: - /* 8027B038 */ JPAChildShape(u8 const*); - -public: - u8 const* mpData; -}; - // // Forward References: // -extern "C" void JPARegistChildPrmEnv__FP18JPAEmitterWorkData(); -extern "C" void JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void __ct__13JPAChildShapeFPCUc(); - // // Declarations: // +static inline u32 COLOR_MULTI(u32 a, u32 b) { + return ((a * (b + 1)) * 0x10000) >> 24; +} + /* 8027AEBC-8027AFDC 2757FC 0120+00 0/0 1/1 0/0 .text JPARegistChildPrmEnv__FP18JPAEmitterWorkData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPARegistChildPrmEnv(JPAEmitterWorkData* param_0) { - nofralloc -#include "asm/JSystem/JParticle/JPAChildShape/JPARegistChildPrmEnv__FP18JPAEmitterWorkData.s" +void JPARegistChildPrmEnv(JPAEmitterWorkData* work) { + JPAChildShape* csp = work->mpRes->getCsp(); + JPABaseEmitter* emtr = work->mpEmtr; + GXColor prm, env; + csp->getPrmClr(&prm); + csp->getEnvClr(&env); + prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); + prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); + prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); + prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); + env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); + env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); + env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); + GXSetTevColor(GX_TEVREG0, prm); + GXSetTevColor(GX_TEVREG1, env); } -#pragma pop - -/* ############################################################################################## */ -/* 80455308-8045530C 003908 0004+00 1/1 0/0 0/0 .sdata2 @2318 */ -SECTION_SDATA2 static f32 lit_2318 = 255.0f; - -/* 8045530C-80455310 00390C 0004+00 2/2 0/0 0/0 .sdata2 @2319 */ -SECTION_SDATA2 static f32 lit_2319 = 1.0f; /* 8027AFDC-8027B008 27591C 002C+00 0/0 1/1 0/0 .text * JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcChildAlphaOut(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAChildShape/JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcChildAlphaOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + f32 anm = (1.0f - ptcl->mTime) * 255.0f; + OSf32tou8(&anm, &ptcl->mPrmColorAlphaAnm); } -#pragma pop /* 8027B008-8027B038 275948 0030+00 0/0 1/1 0/0 .text * JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#ifdef NONMATCHING void JPACalcChildScaleOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { // literal ptcl->mParticleScaleX = ptcl->mScaleOut * (1.0f - ptcl->mTime); ptcl->mParticleScaleY = ptcl->mAlphaWaveRandom * (1.0f - ptcl->mTime); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcChildScaleOut(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAChildShape/JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s" -} -#pragma pop -#endif /* 8027B038-8027B040 -00001 0008+00 0/0 0/0 0/0 .text __ct__13JPAChildShapeFPCUc */ JPAChildShape::JPAChildShape(u8 const* pData) { - mpData = pData; + mpData = (JPAChildShapeData*)pData; } diff --git a/libs/JSystem/JParticle/JPADynamicsBlock.cpp b/libs/JSystem/JParticle/JPADynamicsBlock.cpp index 100a8653777..a4576e49032 100644 --- a/libs/JSystem/JParticle/JPADynamicsBlock.cpp +++ b/libs/JSystem/JParticle/JPADynamicsBlock.cpp @@ -4,6 +4,8 @@ // #include "JSystem/JParticle/JPADynamicsBlock.h" +#include "JSystem/JParticle/JPAParticle.h" +#include "JSystem/JMath/JMATrigonometric.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -11,27 +13,17 @@ // Types: // -struct JPAEmitterWorkData {}; - -struct JPABaseEmitter { - /* 8027EA40 */ void createParticle(); -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - // // Forward References: // -extern "C" static void JPAVolumePoint__FP18JPAEmitterWorkData(); -extern "C" static void JPAVolumeLine__FP18JPAEmitterWorkData(); -extern "C" static void JPAVolumeCircle__FP18JPAEmitterWorkData(); -extern "C" static void JPAVolumeCube__FP18JPAEmitterWorkData(); -extern "C" static void JPAVolumeSphere__FP18JPAEmitterWorkData(); -extern "C" static void JPAVolumeCylinder__FP18JPAEmitterWorkData(); -extern "C" static void JPAVolumeTorus__FP18JPAEmitterWorkData(); +extern "C" static void JPAVolumePoint(JPAEmitterWorkData*); +extern "C" static void JPAVolumeLine(JPAEmitterWorkData*); +extern "C" static void JPAVolumeCircle(JPAEmitterWorkData*); +extern "C" static void JPAVolumeCube(JPAEmitterWorkData*); +extern "C" static void JPAVolumeSphere(JPAEmitterWorkData*); +extern "C" static void JPAVolumeCylinder(JPAEmitterWorkData*); +extern "C" static void JPAVolumeTorus(JPAEmitterWorkData*); extern "C" void __ct__16JPADynamicsBlockFPCUc(); extern "C" void init__16JPADynamicsBlockFv(); extern "C" void create__16JPADynamicsBlockFP18JPAEmitterWorkData(); @@ -67,6 +59,17 @@ SECTION_SDATA2 static f32 lit_2289[1 + 1 /* padding */] = { }; /* 8027B144-8027B220 275A84 00DC+00 1/1 0/0 0/0 .text JPAVolumePoint__FP18JPAEmitterWorkData */ +#ifdef NONMATCHING + +// bug in diff.py preventing me from seeing what's wrong +void JPAVolumePoint(JPAEmitterWorkData* work) { + work->mVolumePos.zero(); + work->mVelOmni.set(work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh()); + work->mVelAxis.set(work->mVelOmni.x, 0.0f, work->mVelOmni.z); +} + +#else + #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -76,11 +79,30 @@ static asm void JPAVolumePoint(JPAEmitterWorkData* param_0) { } #pragma pop +#endif + /* ############################################################################################## */ /* 80455320-80455328 003920 0008+00 6/6 0/0 0/0 .sdata2 @2321 */ SECTION_SDATA2 static f64 lit_2321 = 4503601774854144.0 /* cast s32 to float */; /* 8027B220-8027B33C 275B60 011C+00 1/1 0/0 0/0 .text JPAVolumeLine__FP18JPAEmitterWorkData */ +#ifdef NONMATCHING + +// bug in diff.py preventing me from seeing what's wrong +void JPAVolumeLine(JPAEmitterWorkData* work) { + if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) { + work->mVolumePos.set(0.0f, 0.0f, work->mVolumeSize * (s32)((work->mVolumeEmitIdx / (work->mEmitCount - 1.0f) - 0.5f))); + work->mVolumeEmitIdx++; + } else { + work->mVolumePos.set(0.0f, 0.0f, work->mVolumeSize * work->mpEmtr->get_r_zh()); + } + + work->mVelOmni.set(0.0f, 0.0f, work->mVolumePos.z * work->mGlobalScl.z); + work->mVelAxis.set(0.0f, 0.0f, work->mVolumePos.z); +} + +#else + #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -90,7 +112,34 @@ static asm void JPAVolumeLine(JPAEmitterWorkData* param_0) { } #pragma pop +#endif + /* 8027B33C-8027B4E8 275C7C 01AC+00 1/1 0/0 0/0 .text JPAVolumeCircle__FP18JPAEmitterWorkData */ + +#ifdef NONMATCHING + +// bug in diff.py preventing me from seeing what's wrong +void JPAVolumeCircle(JPAEmitterWorkData* work) { + f32 theta, distance, sizeXZ; + if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) { + theta = work->mVolumeSweep * (work->mVolumeEmitIdx++ / work->mEmitCount); + } else { + theta = work->mVolumeSweep * work->mpEmtr->get_r_ss(); + } + + distance = work->mpEmtr->get_r_f(); + if (work->mpEmtr->checkFlag(JPADynFlag_FixedDensity)) { + distance = 1.0f - (distance * distance); + } + + sizeXZ = work->mVolumeSize * (work->mVolumeMinRad + distance * (1.0f - work->mVolumeMinRad)); + work->mVolumePos.set(sizeXZ * JMASSin(theta), 0.0f, sizeXZ * JMASCos(theta)); + work->mVelOmni.mul(work->mVolumePos, work->mGlobalScl); + work->mVelAxis.set(work->mVolumePos.x, 0.0f, work->mVolumePos.z); +} + +#else + #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -100,7 +149,22 @@ static asm void JPAVolumeCircle(JPAEmitterWorkData* param_0) { } #pragma pop +#endif + /* 8027B4E8-8027B5F0 275E28 0108+00 1/1 0/0 0/0 .text JPAVolumeCube__FP18JPAEmitterWorkData */ + +#ifdef NONMATCHING + +// bug in diff.py preventing me from seeing what's wrong +void JPAVolumeCube(JPAEmitterWorkData* work) { + f32 size = work->mVolumeSize; + work->mVolumePos.set(size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh()); + work->mVelOmni.mul(work->mVolumePos, work->mGlobalScl); + work->mVelAxis.set(work->mVolumePos.x, 0.0f, work->mVolumePos.z); +} + +#else + #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -110,6 +174,8 @@ static asm void JPAVolumeCube(JPAEmitterWorkData* param_0) { } #pragma pop +#endif + /* ############################################################################################## */ /* 80455328-80455330 003928 0004+04 1/1 0/0 0/0 .sdata2 @2501 */ SECTION_SDATA2 static f32 lit_2501[1 + 1 /* padding */] = { @@ -152,41 +218,94 @@ static asm void JPAVolumeTorus(JPAEmitterWorkData* param_0) { #pragma pop /* 8027BB18-8027BB4C 276458 0034+00 0/0 1/1 0/0 .text __ct__16JPADynamicsBlockFPCUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JPADynamicsBlock::JPADynamicsBlock(u8 const* param_0) { - nofralloc -#include "asm/JSystem/JParticle/JPADynamicsBlock/__ct__16JPADynamicsBlockFPCUc.s" +JPADynamicsBlock::JPADynamicsBlock(u8 const* data) { + mpData = (const JPADynamicsBlockData*)data; + init(); } -#pragma pop -/* ############################################################################################## */ -/* 803C4488-803C44A8 -00001 001C+04 1/1 0/0 0/0 .data @2631 */ -SECTION_DATA static void* lit_2631[7 + 1 /* padding */] = { - (void*)(((char*)init__16JPADynamicsBlockFv) + 0x2C), - (void*)(((char*)init__16JPADynamicsBlockFv) + 0x3C), - (void*)(((char*)init__16JPADynamicsBlockFv) + 0x4C), - (void*)(((char*)init__16JPADynamicsBlockFv) + 0x5C), - (void*)(((char*)init__16JPADynamicsBlockFv) + 0x6C), - (void*)(((char*)init__16JPADynamicsBlockFv) + 0x7C), - (void*)(((char*)init__16JPADynamicsBlockFv) + 0x8C), - /* padding */ - NULL, +enum { + VOL_Cube = 0x00, + VOL_Sphere = 0x01, + VOL_Cylinder = 0x02, + VOL_Torus = 0x03, + VOL_Point = 0x04, + VOL_Circle = 0x05, + VOL_Line = 0x06, }; /* 8027BB4C-8027BBE8 27648C 009C+00 2/1 0/0 0/0 .text init__16JPADynamicsBlockFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPADynamicsBlock::init() { - nofralloc -#include "asm/JSystem/JParticle/JPADynamicsBlock/init__16JPADynamicsBlockFv.s" +void JPADynamicsBlock::init() { + switch (getVolumeType()) { + case VOL_Cube: mpCalcVolumeFunc = &JPAVolumeCube; break; + case VOL_Sphere: mpCalcVolumeFunc = &JPAVolumeSphere; break; + case VOL_Cylinder: mpCalcVolumeFunc = &JPAVolumeCylinder; break; + case VOL_Torus: mpCalcVolumeFunc = &JPAVolumeTorus; break; + case VOL_Point: mpCalcVolumeFunc = &JPAVolumePoint; break; + case VOL_Circle: mpCalcVolumeFunc = &JPAVolumeCircle; break; + case VOL_Line: mpCalcVolumeFunc = &JPAVolumeLine; break; + } } -#pragma pop /* 8027BBE8-8027BDEC 276528 0204+00 0/0 1/1 0/0 .text * create__16JPADynamicsBlockFP18JPAEmitterWorkData */ + +#ifdef NONMATCHING + +// literal only +void JPADynamicsBlock::create(JPAEmitterWorkData* work) { + if (work->mpEmtr->checkStatus(JPAEmtrStts_RateStepEmit)) { + s32 emitCount; + s32 createCount; + + // Probably an inlined function. + if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) { + s32 count; + if (getVolumeType() == VOL_Sphere) { + count = 4 * getDivNumber() * getDivNumber() + 2; + } else { + count = getDivNumber(); + } + emitCount = count; + + work->mVolumeEmitIdx = 0; + } else { + f32 newPtclCount = work->mpEmtr->mRate * (getRateRndm() * work->mpEmtr->get_r_zp() + 1.0f); + f32 newEmitCount = work->mpEmtr->mEmitCount + newPtclCount; + work->mpEmtr->mEmitCount = newEmitCount; + emitCount = (s32)newEmitCount; + work->mpEmtr->mEmitCount -= emitCount; + + if (work->mpEmtr->checkStatus(JPAEmtrStts_FirstEmit) && 0.0f < newPtclCount && newPtclCount < 1.0f) + emitCount = 1; + } + + work->mEmitCount = emitCount; + if (work->mpEmtr->checkStatus(JPAEmtrStts_StopEmit)) { + emitCount = 0; + } + + // Probably an inlined function. + createCount = emitCount; + while (createCount > 0) { + JPABaseParticle* ptcl = work->mpEmtr->createParticle(); + if (ptcl == NULL) + break; + createCount--; + } + } + + if (++work->mpEmtr->mRateStepTimer >= (work->mpEmtr->mRateStep + 1)) { + work->mpEmtr->mRateStepTimer -= (work->mpEmtr->mRateStep + 1); + work->mpEmtr->setStatus(JPAEmtrStts_RateStepEmit); + } else { + work->mpEmtr->clearStatus(JPAEmtrStts_RateStepEmit); + } + + work->mpEmtr->clearStatus(JPAEmtrStts_FirstEmit); +} + +#else + #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -195,3 +314,5 @@ asm void JPADynamicsBlock::create(JPAEmitterWorkData* param_0) { #include "asm/JSystem/JParticle/JPADynamicsBlock/create__16JPADynamicsBlockFP18JPAEmitterWorkData.s" } #pragma pop + +#endif From 4d9026121ece552ccd8a02c5a3009a27a646ad5c Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 24 Dec 2021 14:50:32 -0800 Subject: [PATCH 7/8] build fix --- include/JSystem/JParticle/JPAResource.h | 2 +- libs/JSystem/JParticle/JPAEmitterManager.cpp | 6 ------ libs/JSystem/JParticle/JPAResource.cpp | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/include/JSystem/JParticle/JPAResource.h b/include/JSystem/JParticle/JPAResource.h index f207f15d883..5b3e891bc32 100644 --- a/include/JSystem/JParticle/JPAResource.h +++ b/include/JSystem/JParticle/JPAResource.h @@ -20,7 +20,7 @@ class JPAResource { public: /* 80274010 */ JPAResource(); /* 80274080 */ void init(JKRHeap*); - /* 802755E8 */ void calc(JPAEmitterWorkData*, JPABaseEmitter*); + /* 802755E8 */ bool calc(JPAEmitterWorkData*, JPABaseEmitter*); /* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*); /* 80275B74 */ void drawP(JPAEmitterWorkData*); /* 80275EB0 */ void drawC(JPAEmitterWorkData*); diff --git a/libs/JSystem/JParticle/JPAEmitterManager.cpp b/libs/JSystem/JParticle/JPAEmitterManager.cpp index 079cd5ca11b..bf11dba204e 100644 --- a/libs/JSystem/JParticle/JPAEmitterManager.cpp +++ b/libs/JSystem/JParticle/JPAEmitterManager.cpp @@ -14,12 +14,6 @@ // Types: // -struct JPAResource; -struct JPAResource { - /* 802755E8 */ bool calc(JPAEmitterWorkData*, JPABaseEmitter*); - /* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*); -}; - // // Forward References: // diff --git a/libs/JSystem/JParticle/JPAResource.cpp b/libs/JSystem/JParticle/JPAResource.cpp index ecab76d0213..64df9b337e1 100644 --- a/libs/JSystem/JParticle/JPAResource.cpp +++ b/libs/JSystem/JParticle/JPAResource.cpp @@ -587,7 +587,7 @@ asm void JPAResource::init(JKRHeap* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JPAResource::calc(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) { +asm bool JPAResource::calc(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) { nofralloc #include "asm/JSystem/JParticle/JPAResource/calc__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s" } From 343f65d665a5f59d410feba7a1fe9a582ac4090c Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 24 Dec 2021 14:56:04 -0800 Subject: [PATCH 8/8] one more build fix --- libs/JSystem/JParticle/JPAParticle.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/libs/JSystem/JParticle/JPAParticle.cpp b/libs/JSystem/JParticle/JPAParticle.cpp index a4eef4657ba..c4345888dfa 100644 --- a/libs/JSystem/JParticle/JPAParticle.cpp +++ b/libs/JSystem/JParticle/JPAParticle.cpp @@ -7,16 +7,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct JPAResource { - /* 8027658C */ void calc_p(JPAEmitterWorkData*, JPABaseParticle*); - /* 80276608 */ void calc_c(JPAEmitterWorkData*, JPABaseParticle*); - /* 80276684 */ void calcField(JPAEmitterWorkData*, JPABaseParticle*); -}; - // // Forward References: //