LIBS = [ { "lib": "JStudio_JParticle", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JStudio_JParticle/object-particle", False], ["JSystem/JStudio_JParticle/control", True], ], }, { "lib": "JMessage", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JMessage/resource", False], ["JSystem/JMessage/data", True], ["JSystem/JMessage/processor", False], ["JSystem/JMessage/control", False], ], }, { "lib": "JStudio", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JStudio/stb-data-parse", True], ["JSystem/JStudio/functionvalue", False], ["JSystem/JStudio/fvb", False], ["JSystem/JStudio/fvb-data", True], ["JSystem/JStudio/fvb-data-parse", True], ["JSystem/JStudio/jstudio-control", True], ["JSystem/JStudio/jstudio-data", True], ["JSystem/JStudio/jstudio-object", False], ["JSystem/JStudio/object-id", True], ["JSystem/JStudio/stb", False], ["JSystem/JStudio/stb-data", True], ["JSystem/JStudio/jstudio-math", False], ], }, { "lib": "JStudio_JStage", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JStudio_JStage/object-light", False], ["JSystem/JStudio_JStage/object", True], ["JSystem/JStudio_JStage/object-actor", False], ["JSystem/JStudio_JStage/object-ambientlight", True], ["JSystem/JStudio_JStage/object-camera", True], ["JSystem/JStudio_JStage/object-fog", True], ["JSystem/JStudio_JStage/control", True], ], }, { "lib": "JStudio_JMessage", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JStudio_JMessage/object-message", True], ["JSystem/JStudio_JMessage/control", True], ], }, { "lib": "JStudio_JAudio", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JStudio_JAudio/object-sound", True], ["JSystem/JStudio_JAudio/control", True], ], }, { "lib": "J3DU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/J3DU/J3DUDL", True], ["JSystem/J3DU/J3DUMotion", True], ["JSystem/J3DU/J3DUShadow", True], ["JSystem/J3DU/J3DUMtxCache", True], ], }, { "lib": "JKernel", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JKernel/JKRAram", True], ["JSystem/JKernel/JKRAramArchive", True], ["JSystem/JKernel/JKRAramBlock", True], ["JSystem/JKernel/JKRAramHeap", True], ["JSystem/JKernel/JKRAramPiece", True], ["JSystem/JKernel/JKRAramStream", True], ["JSystem/JKernel/JKRArchivePri", True], ["JSystem/JKernel/JKRArchivePub", True], ["JSystem/JKernel/JKRCompArchive", True], ["JSystem/JKernel/JKRDecomp", True], ["JSystem/JKernel/JKRDisposer", True], ["JSystem/JKernel/JKRDvdFile", True], ["JSystem/JKernel/JKRDvdAramRipper", True], ["JSystem/JKernel/JKRDvdArchive", True], ["JSystem/JKernel/JKRDvdRipper", True], ["JSystem/JKernel/JKRExpHeap", True], ["JSystem/JKernel/JKRFileCache", True], ["JSystem/JKernel/JKRFileFinder", True], ["JSystem/JKernel/JKRFile", True], ["JSystem/JKernel/JKRFileLoader", True], ["JSystem/JKernel/JKRHeap", True], ["JSystem/JKernel/JKRMemArchive", True], ["JSystem/JKernel/JKRSolidHeap", True], ["JSystem/JKernel/JKRThread", True], ], }, { "lib": "JSupport", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JSupport/JSUOutputStream", True], ["JSystem/JSupport/JSUInputStream", True], ["JSystem/JSupport/JSUList", True], ["JSystem/JSupport/JSUMemoryStream", True], ["JSystem/JSupport/JSUFileStream", True], ], }, { "lib": "JGadget", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JGadget/binary", True], ["JSystem/JGadget/linklist", True], ["JSystem/JGadget/std-list", False], ["JSystem/JGadget/std-vector", False], ], }, { "lib": "JUtility", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JUtility/JUTAssert", True], ["JSystem/JUtility/JUTConsole", True], ["JSystem/JUtility/JUTDbPrint", True], ["JSystem/JUtility/JUTDirectFile", True], ["JSystem/JUtility/JUTDirectPrint", True], ["JSystem/JUtility/JUTException", True], ["JSystem/JUtility/JUTFader", True], ["JSystem/JUtility/JUTFont", True], ["JSystem/JUtility/JUTGamePad", True], ["JSystem/JUtility/JUTGraphFifo", True], ["JSystem/JUtility/JUTNameTab", True], ["JSystem/JUtility/JUTPalette", True], ["JSystem/JUtility/JUTProcBar", True], ["JSystem/JUtility/JUTResFont", True], ["JSystem/JUtility/JUTResource", True], ["JSystem/JUtility/JUTRomFont", True], ["JSystem/JUtility/JUTFontData_Ascfont_fix12", True], ["JSystem/JUtility/JUTTexture", True], ["JSystem/JUtility/JUTVideo", True], ["JSystem/JUtility/JUTXfb", True], ["JSystem/JUtility/JUTCacheFont", True], ], }, { "lib": "JMath", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JMath/JMath", True], ["JSystem/JMath/random", True], ["JSystem/JMath/JMATrigonometric", True], ], }, { "lib": "J2D", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/J2D/J2DOrthoGraph", True], ["JSystem/J2D/J2DPerspGraph", True], ["JSystem/J2D/J2DGrafContext", True], ["JSystem/J2D/J2DPane", True], ["JSystem/J2D/J2DPicture", False], ["JSystem/J2D/J2DPrint", True], ["JSystem/J2D/J2DScreen", False], ["JSystem/J2D/J2DTextBox", True], ["JSystem/J2D/J2DWindow", False], ["JSystem/J2D/J2DWindowEx", False], ["JSystem/J2D/J2DAnmLoader", True], ["JSystem/J2D/J2DBloSaver", False], ["JSystem/J2D/J2DManage", True], ["JSystem/J2D/J2DMatBlock", False], ["JSystem/J2D/J2DMaterial", False], ["JSystem/J2D/J2DMaterialFactory", False], ["JSystem/J2D/J2DPictureEx", False], ["JSystem/J2D/J2DTevs", False], ["JSystem/J2D/J2DTextBoxEx", False], ["JSystem/J2D/J2DAnimation", True], ], }, { "lib": "J3D", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/J3D/J3DSys", True], ["JSystem/J3D/J3DVertex", True], ["JSystem/J3D/J3DTransform", True], ["JSystem/J3D/J3DPacket", True], ["JSystem/J3D/J3DShape", False], ["JSystem/J3D/J3DMaterial", False], ["JSystem/J3D/J3DTevs", False], ["JSystem/J3D/J3DDrawBuffer", True], ["JSystem/J3D/J3DModel", False], ["JSystem/J3D/J3DAnimation", True], ["JSystem/J3D/J3DMaterialAnm", False], ["JSystem/J3D/J3DCluster", False], ["JSystem/J3D/J3DJoint", False], ["JSystem/J3D/J3DMaterialFactory", False], ["JSystem/J3D/J3DBinaryFormat", True], ["JSystem/J3D/J3DModelLoader", True], ["JSystem/J3D/J3DJointFactory", True], ["JSystem/J3D/J3DShapeFactory", True], ["JSystem/J3D/J3DAnmLoader", True], ["JSystem/J3D/J3DModelSaver", True], ["JSystem/J3D/J3DGD", False], ["JSystem/J3D/J3DMatBlock", False], ["JSystem/J3D/J3DModelData", True], ["JSystem/J3D/J3DMaterialAttach", False], ["JSystem/J3D/J3DMaterialFactory_v21", False], ["JSystem/J3D/J3DShapeMtx", True], ["JSystem/J3D/J3DModelLoaderCalcSize", False], ["JSystem/J3D/J3DJointTree", True], ["JSystem/J3D/J3DSkinDeform", True], ["JSystem/J3D/J3DShapeDraw", True], ["JSystem/J3D/J3DMtxBuffer", False], ["JSystem/J3D/J3DShapeTable", True], ], }, { "lib": "JFramework", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JFramework/JFWSystem", True], ["JSystem/JFramework/JFWDisplay", True], ], }, { "lib": "JParticle", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JParticle/JPABaseShape", False], ["JSystem/JParticle/JPAChildShape", True], ["JSystem/JParticle/JPADynamicsBlock", False], ["JSystem/JParticle/JPAEmitter", True], ["JSystem/JParticle/JPAEmitterManager", True], ["JSystem/JParticle/JPAExTexShape", True], ["JSystem/JParticle/JPAExtraShape", True], ["JSystem/JParticle/JPAFieldBlock", True], ["JSystem/JParticle/JPAKeyBlock", True], ["JSystem/JParticle/JPAMath", False], ["JSystem/JParticle/JPAParticle", True], ["JSystem/JParticle/JPAResource", False], ["JSystem/JParticle/JPAResourceLoader", False], ["JSystem/JParticle/JPAResourceManager", True], ["JSystem/JParticle/JPATexture", True], ], }, { "lib": "JStage", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JStage/JSGSystem", True], ["JSystem/JStage/JSGCamera", True], ["JSystem/JStage/JSGObject", True], ["JSystem/JStage/JSGActor", True], ], }, { "lib": "JAudio_JAS", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JAudio/JAS/JASWSParser", False], ["JSystem/JAudio/JAS/JASBankMgr", True], ["JSystem/JAudio/JAS/JASBasicBank", True], ["JSystem/JAudio/JAS/JASBasicInst", True], ["JSystem/JAudio/JAS/JASBasicWaveBank", True], ["JSystem/JAudio/JAS/JASBNKParser", False], ["JSystem/JAudio/JAS/JASDrumSet", True], ["JSystem/JAudio/JAS/JASInstEffect", True], ["JSystem/JAudio/JAS/JASInstRand", True], ["JSystem/JAudio/JAS/JASInstSense", True], ["JSystem/JAudio/JAS/JASSimpleWaveBank", True], ["JSystem/JAudio/JAS/JASWaveArcLoader", True], ["JSystem/JAudio/JAS/JASWaveBank", True], ["JSystem/JAudio/JAS/JASWaveBankMgr", True], ["JSystem/JAudio/JAS/JASBank", True], ["JSystem/JAudio/JAS/JASTrackPort", True], ["JSystem/JAudio/JAS/JASOuterParam", True], ["JSystem/JAudio/JAS/JASPlayer_impl", True], ["JSystem/JAudio/JAS/JASRegisterParam", True], ["JSystem/JAudio/JAS/JASSeqCtrl", True], ["JSystem/JAudio/JAS/JASSeqParser", False], ["JSystem/JAudio/JAS/JASTrack", False], ["JSystem/JAudio/JAS/JASTrackInterrupt", True], ["JSystem/JAudio/JAS/JASOscillator", True], ["JSystem/JAudio/JAS/JASChannel", False], ["JSystem/JAudio/JAS/JASDriverIF", True], ["JSystem/JAudio/JAS/JASDSPChannel", False], ["JSystem/JAudio/JAS/JASDSPInterface", True], ["JSystem/JAudio/JAS/JASAudioThread", True], ["JSystem/JAudio/JAS/JASCalc", True], ["JSystem/JAudio/JAS/JASCallback", True], ["JSystem/JAudio/JAS/JASCmdStack", True], ["JSystem/JAudio/JAS/JASDvdThread", True], ["JSystem/JAudio/JAS/JASHeapCtrl", True], ["JSystem/JAudio/JAS/JASProbe", True], ["JSystem/JAudio/JAS/JASResArcLoader", True], ["JSystem/JAudio/JAS/JASReport", True], ["JSystem/JAudio/JAS/JASAiCtrl", False], ["JSystem/JAudio/JAS/JASChannelUpdater", True], ["JSystem/JAudio/JAS/JASTaskThread", False], ["JSystem/JAudio/JAS/JASAramStream", False], ], }, { "lib": "JAudio_DSP", "cflags": "$cflags_pikmin -lang=c++ -func_align 32 -inline noauto -common off -use_lmw_stmw off -O4,s", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JAudio/dsp/dspproc", True], ["JSystem/JAudio/dsp/dsptask", True], ["JSystem/JAudio/dsp/osdsp", True], ["JSystem/JAudio/dsp/osdsp_task", True], ], }, { "lib": "JAudio_JAI", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JAudio/JAI/JAIAnimation", False], ["JSystem/JAudio/JAI/JAIBankWave", True], ["JSystem/JAudio/JAI/JAIBasic", False], ["JSystem/JAudio/JAI/JAIConst", True], ["JSystem/JAudio/JAI/JAIDummyObject", True], ["JSystem/JAudio/JAI/JAIFx", False], ["JSystem/JAudio/JAI/JAIGlobalParameter", True], ["JSystem/JAudio/JAI/JAIInitData", False], ["JSystem/JAudio/JAI/JAISeMgr", False], ["JSystem/JAudio/JAI/JAISequenceHeap", False], ["JSystem/JAudio/JAI/JAISequenceMgr", False], ["JSystem/JAudio/JAI/JAISound", False], ["JSystem/JAudio/JAI/JAISoundTable", False], ["JSystem/JAudio/JAI/JAIStreamMgr", False], ["JSystem/JAudio/JAI/JAISystemInterface", True], ["JSystem/JAudio/JAI/JAIObject", True], ], }, { "lib": "JAudio_JAD", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JAudio/JAD/JADHioNode", True], ], }, { "lib": "JAudio_JAL", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JAudio/JAL/JALCalc", True], ], }, { "lib": "JAudio_JAU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["JSystem/JAudio/JAU/JAUData", True], ["JSystem/JAudio/JAU/JAUDataMgr", True], ], }, { "lib": "TRK_MINNOW_DOLPHIN", "mw_version": "2.6", "cflags": "$cflags_base -inline deferred -sdata 0 -sdata2 0", "host": False, "objects": [ ["Dolphin/TRK_MINNOW_DOLPHIN/mainloop", True], ["Dolphin/TRK_MINNOW_DOLPHIN/nubevent", True], ["Dolphin/TRK_MINNOW_DOLPHIN/nubinit", True], ["Dolphin/TRK_MINNOW_DOLPHIN/msg", True], ["Dolphin/TRK_MINNOW_DOLPHIN/msgbuf", True], [ "Dolphin/TRK_MINNOW_DOLPHIN/serpoll", True, {"cflags": "$cflags_base -inline deferred -sdata 8"}, ], ["Dolphin/TRK_MINNOW_DOLPHIN/usr_put", True], ["Dolphin/TRK_MINNOW_DOLPHIN/dispatch", True], ["Dolphin/TRK_MINNOW_DOLPHIN/msghndlr", True], ["Dolphin/TRK_MINNOW_DOLPHIN/support", True], ["Dolphin/TRK_MINNOW_DOLPHIN/mutex_TRK", True], ["Dolphin/TRK_MINNOW_DOLPHIN/notify", True], ["Dolphin/TRK_MINNOW_DOLPHIN/flush_cache", True], ["Dolphin/TRK_MINNOW_DOLPHIN/mem_TRK", True], ["Dolphin/TRK_MINNOW_DOLPHIN/targimpl", True], [ "Dolphin/TRK_MINNOW_DOLPHIN/targsupp", True, {"cflags": "$cflags_base -inline deferred -func_align 32"}, ], ["Dolphin/TRK_MINNOW_DOLPHIN/mpc_7xx_603e", True], ["Dolphin/TRK_MINNOW_DOLPHIN/__exception", True], ["Dolphin/TRK_MINNOW_DOLPHIN/dolphin_trk", True], ["Dolphin/TRK_MINNOW_DOLPHIN/main_TRK", True], ["Dolphin/TRK_MINNOW_DOLPHIN/dolphin_trk_glue", True], ["Dolphin/TRK_MINNOW_DOLPHIN/targcont", True], ["Dolphin/TRK_MINNOW_DOLPHIN/target_options", True], ["Dolphin/TRK_MINNOW_DOLPHIN/mslsupp", True], ["Dolphin/TRK_MINNOW_DOLPHIN/UDP_Stubs", True], [ "Dolphin/TRK_MINNOW_DOLPHIN/ddh/main", True, {"cflags": "$cflags_base -inline deferred -sdata 8"}, ], ["Dolphin/TRK_MINNOW_DOLPHIN/CircleBuffer", True], [ "Dolphin/TRK_MINNOW_DOLPHIN/gdev/main", True, {"cflags": "$cflags_base -inline deferred -sdata 8"}, ], ["Dolphin/TRK_MINNOW_DOLPHIN/MWTrace", True], ["Dolphin/TRK_MINNOW_DOLPHIN/MWCriticalSection_gc", True], ], }, { "lib": "Runtime", "mw_version": "2.6", "cflags": "$cflags_base -inline deferred", "host": False, "objects": [ ["Dolphin/Runtime/__va_arg", True], ["Dolphin/Runtime/global_destructor_chain", True], ["Dolphin/Runtime/CPlusLibPPC", True], [ "Dolphin/Runtime/NMWException", True, {"cflags": "$cflags_base -inline deferred -Cpp_exceptions on"}, ], ["Dolphin/Runtime/ptmf", True], ["Dolphin/Runtime/runtime", True], ["Dolphin/Runtime/__init_cpp_exceptions", True], [ "Dolphin/Runtime/Gecko_ExceptionPPC", True, {"cflags": "$cflags_base -inline deferred -Cpp_exceptions on"}, ], ["Dolphin/Runtime/GCN_mem_alloc", True], ["Dolphin/Runtime/__mem", True], ], }, { "lib": "MSL_C", "mw_version": "2.6", "cflags": "$cflags_base -inline deferred", "host": False, "objects": [ ["Dolphin/MSL_C/PPC_EABI/abort_exit", True], ["Dolphin/MSL_C/MSL_Common/alloc", True], ["Dolphin/MSL_C/MSL_Common/ansi_files", True], [ "Dolphin/MSL_C/MSL_Common_Embedded/ansi_fp", True, {"cflags": "$cflags_base -inline deferred -str pool"}, ], ["Dolphin/MSL_C/MSL_Common/arith", True], ["Dolphin/MSL_C/MSL_Common/buffer_io", True], ["Dolphin/MSL_C/PPC_EABI/critical_regions.gamecube", True], ["Dolphin/MSL_C/MSL_Common/ctype", True], ["Dolphin/MSL_C/MSL_Common/direct_io", True], ["Dolphin/MSL_C/MSL_Common/errno", True], ["Dolphin/MSL_C/MSL_Common/file_io", True], ["Dolphin/MSL_C/MSL_Common/FILE_POS", True], [ "Dolphin/MSL_C/MSL_Common/locale", True, {"cflags": "$cflags_base -str pool"}, ], [ "Dolphin/MSL_C/MSL_Common/mbstring", True, {"cflags": "$cflags_base -inline noauto,deferred"}, ], ["Dolphin/MSL_C/MSL_Common/mem", True], ["Dolphin/MSL_C/MSL_Common/mem_funcs", True], ["Dolphin/MSL_C/MSL_Common/misc_io", True], [ "Dolphin/MSL_C/MSL_Common/printf", True, {"cflags": "$cflags_base -inline deferred -str pool"}, ], ["Dolphin/MSL_C/MSL_Common/rand", True], ["Dolphin/MSL_C/MSL_Common/float", True], ["Dolphin/MSL_C/MSL_Common/scanf", True], ["Dolphin/MSL_C/MSL_Common/string", True], ["Dolphin/MSL_C/MSL_Common/strtold", True], ["Dolphin/MSL_C/MSL_Common/strtoul", True], ["Dolphin/MSL_C/MSL_Common/wchar_io", True], ["Dolphin/MSL_C/PPC_EABI/uart_console_io_gcn", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_asin", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_atan2", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_exp", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_fmod", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_log", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_log10", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_pow", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_rem_pio2", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/k_cos", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/k_rem_pio2", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/k_sin", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/k_tan", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_atan", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_ceil", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_copysign", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_cos", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_floor", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_frexp", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_ldexp", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_modf", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_sin", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_tan", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/w_asin", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/w_atan2", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/w_exp", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/w_fmod", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/w_log10", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/w_pow", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_sqrt", True], ["Dolphin/MSL_C/PPC_EABI/math_ppc", True], ["Dolphin/MSL_C/MSL_Common_Embedded/Math/Double_precision/w_sqrt", True], ["Dolphin/MSL_C/MSL_Common/extras", True], ], }, { "lib": "OdemuExi2", "mw_version": "1.2.5n", "cflags": "$cflags_base -inline deferred", "host": False, "objects": [ ["Dolphin/OdemuExi2/DebuggerDriver", True], ], }, { "lib": "vi", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/vi/vi", True], ], }, { "lib": "amcstubs", "mw_version": "1.2.5n", "cflags": "$cflags_base", "host": False, "objects": [ ["Dolphin/amcstubs/AmcExi2Stubs", True], ], }, { "lib": "ar", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/ar/ar", True], ["Dolphin/ar/arq", True], ], }, { "lib": "base", "mw_version": "1.2.5n", "cflags": "$cflags_base", "host": False, "objects": [ ["Dolphin/base/PPCArch", True], ], }, { "lib": "card", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/card/CARDBios", True], ["Dolphin/card/CARDUnlock", True], ["Dolphin/card/CARDRdwr", True], ["Dolphin/card/CARDBlock", True], ["Dolphin/card/CARDDir", True], ["Dolphin/card/CARDCheck", True], ["Dolphin/card/CARDMount", True], ["Dolphin/card/CARDFormat", True], ["Dolphin/card/CARDOpen", True], ["Dolphin/card/CARDCreate", True], ["Dolphin/card/CARDRead", True], ["Dolphin/card/CARDWrite", True], ["Dolphin/card/CARDStat", True], ["Dolphin/card/CARDNet", True], ], }, { "lib": "db", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/db/db", True], ], }, { "lib": "dsp", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/dsp/dsp", True], ["Dolphin/dsp/dsp_debug", True], ["Dolphin/dsp/dsp_task", True], ], }, { "lib": "dvd", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/dvd/dvdlow", True], ["Dolphin/dvd/dvdfs", True], ["Dolphin/dvd/dvd", True], ["Dolphin/dvd/dvdqueue", True], ["Dolphin/dvd/dvderror", True], ["Dolphin/dvd/dvdidutils", True], ["Dolphin/dvd/dvdFatal", True], ["Dolphin/dvd/fstload", True], ], }, { "lib": "exi", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/exi/EXIBios", True], ["Dolphin/exi/EXIUart", True], ], }, { "lib": "gd", "mw_version": "1.2.5n", "cflags": "$cflags_base", "host": False, "objects": [ ["Dolphin/gd/GDBase", True], ["Dolphin/gd/GDGeometry", True], ], }, { "lib": "gx", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly -fp_contract off", "host": False, "objects": [ ["Dolphin/gx/GXInit", True], ["Dolphin/gx/GXFifo", True], ["Dolphin/gx/GXAttr", True], ["Dolphin/gx/GXMisc", True], ["Dolphin/gx/GXGeometry", True], ["Dolphin/gx/GXFrameBuf", True], ["Dolphin/gx/GXLight", True], ["Dolphin/gx/GXTexture", True], ["Dolphin/gx/GXBump", True], ["Dolphin/gx/GXTev", True], ["Dolphin/gx/GXPixel", True], ["Dolphin/gx/GXDisplayList", True], ["Dolphin/gx/GXTransform", True], ["Dolphin/gx/GXPerf", True], ], }, { "lib": "mtx", "mw_version": "1.2.5n", "cflags": "$cflags_base", "host": False, "objects": [ ["Dolphin/mtx/mtx", True], ["Dolphin/mtx/mtxvec", True], ["Dolphin/mtx/mtx44", True], ["Dolphin/mtx/vec", True], ], }, { "lib": "odenotstub", "mw_version": "1.2.5n", "cflags": "$cflags_base", "host": False, "objects": [ ["Dolphin/odenotstub/odenotstub", True], ], }, { "lib": "os", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/os/OS", True], ["Dolphin/os/OSAlarm", True], ["Dolphin/os/OSAlloc", True], ["Dolphin/os/OSArena", True], ["Dolphin/os/OSAudioSystem", True], ["Dolphin/os/OSCache", True], ["Dolphin/os/OSContext", True], ["Dolphin/os/OSError", True], ["Dolphin/os/OSFont", True], ["Dolphin/os/OSInterrupt", True], ["Dolphin/os/OSLink", True], ["Dolphin/os/OSMessage", True], ["Dolphin/os/OSMemory", True], ["Dolphin/os/OSMutex", True], ["Dolphin/os/OSReboot", True], ["Dolphin/os/OSReset", True], ["Dolphin/os/OSResetSW", True], ["Dolphin/os/OSRtc", True], ["Dolphin/os/OSSync", True], ["Dolphin/os/OSThread", True], ["Dolphin/os/OSTime", True], ["Dolphin/os/__start", True], ["Dolphin/os/__ppc_eabi_init", True], ], }, { "lib": "pad", "mw_version": "1.2.5n", "cflags": "$cflags_base -fp_contract off -str noreadonly", "host": False, "objects": [ ["Dolphin/pad/Padclamp", True], ["Dolphin/pad/Pad", True], ], }, { "lib": "si", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/si/SIBios", True], ["Dolphin/si/SISamplingRate", True], ], }, { "lib": "ai", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/ai/ai", True], ], }, { "lib": "thp", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/thp/THPDec", True], ["Dolphin/thp/THPAudio", True], ], }, { "lib": "gba", "mw_version": "1.2.5n", "cflags": "$cflags_base -str noreadonly", "host": False, "objects": [ ["Dolphin/gba/GBA", True], ["Dolphin/gba/GBARead", True], ["Dolphin/gba/GBAWrite", True], ["Dolphin/gba/GBAXfer", True], ], }, { "lib": "plugProjectYamashitaU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectYamashitaU/enemyBase", True], ["plugProjectYamashitaU/pelplant", True], ["plugProjectYamashitaU/pelplantState", True], ["plugProjectYamashitaU/enemyInteractBattle", True], ["plugProjectYamashitaU/generalEnemyMgr", True], ["plugProjectYamashitaU/kochappyAnimator", True], ["plugProjectYamashitaU/kochappy", True], ["plugProjectYamashitaU/kochappyState", False], ["plugProjectYamashitaU/kochappyMgr", True], ["plugProjectYamashitaU/enemyAction", False], ["plugProjectYamashitaU/chappy", True], ["plugProjectYamashitaU/chappyState", False], ["plugProjectYamashitaU/chappyAnimator", True], ["plugProjectYamashitaU/chappyMgr", True], ["plugProjectYamashitaU/lifeGaugeMgr", True], ["plugProjectYamashitaU/carryInfoMgr", True], ["plugProjectYamashitaU/gameLightMgr", False], ["plugProjectYamashitaU/vtxAnm", False], ["plugProjectYamashitaU/enemyInfo", True], ["plugProjectYamashitaU/farm", True], ["plugProjectYamashitaU/farmMgr", True], ["plugProjectYamashitaU/genEnemy", True], ["plugProjectYamashitaU/timeMgr", True], ["plugProjectYamashitaU/pelplantGenerator", True], ["plugProjectYamashitaU/enemyInteractActions", True], ["plugProjectYamashitaU/enemyAnimatorBase", True], ["plugProjectYamashitaU/enemyStoneMgr", True], ["plugProjectYamashitaU/enemyStoenInfo", True], ["plugProjectYamashitaU/enemyStoneDrawInfo", False], ["plugProjectYamashitaU/enemyStoneObj", True], ["plugProjectYamashitaU/enemyParmsBase", True], ["plugProjectYamashitaU/walkSmokeEffect", True], ["plugProjectYamashitaU/ChappyBaseMgr", True], ["plugProjectYamashitaU/ChappyBase", True], ["plugProjectYamashitaU/BlueChappyMgr", True], ["plugProjectYamashitaU/BlueChappy", True], ["plugProjectYamashitaU/YellowChappyMgr", True], ["plugProjectYamashitaU/YellowChappy", True], ["plugProjectYamashitaU/BlueKochappyMgr", True], ["plugProjectYamashitaU/BlueKochappy", True], ["plugProjectYamashitaU/YellowKochappy", True], ["plugProjectYamashitaU/YellowKochappyMgr", True], ["plugProjectYamashitaU/KochappyBaseMgr", True], ["plugProjectYamashitaU/KochappyBase", True], ["plugProjectYamashitaU/enemyBlendAnimatorBase", True], ["plugProjectYamashitaU/enemyPelletInfo", True], ["plugProjectYamashitaU/enemyEffectNode", True], ["plugProjectYamashitaU/enemyMgrBase", True], ["plugProjectYamashitaU/enemyFSM", True], ["plugProjectYamashitaU/singleGS_ZukanParms", False], ["plugProjectYamashitaU/treasureLightMgr", True], ["plugProjectYamashitaU/effectAnimator", True], ], }, { "lib": "plugProjectKandoU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectKandoU/pikiAnimator", True], ["plugProjectKandoU/collinfo", False], ["plugProjectKandoU/gameDynamics", False], ["plugProjectKandoU/creature", True], ["plugProjectKandoU/fakePiki", False], ["plugProjectKandoU/navi", False], ["plugProjectKandoU/piki", False], ["plugProjectKandoU/baseGameSection", False], ["plugProjectKandoU/singleGameSection", True], ["plugProjectKandoU/cellPyramid", False], ["plugProjectKandoU/naviMgr", True], ["plugProjectKandoU/pikiMgr", True], ["plugProjectKandoU/mapMgr", True], ["plugProjectKandoU/baseHIOSection", True], ["plugProjectKandoU/naviWhistle", False], ["plugProjectKandoU/pelletMgr", False], ["plugProjectKandoU/routeMgr", False], ["plugProjectKandoU/onyonMgr", True], ["plugProjectKandoU/objectTypes", True], ["plugProjectKandoU/naviState", False], ["plugProjectKandoU/pikiState", False], ["plugProjectKandoU/interactPiki", True], ["plugProjectKandoU/gameCPlate", False], ["plugProjectKandoU/updateMgr", True], ["plugProjectKandoU/aiAction", True], ["plugProjectKandoU/aiPrimitives", False], ["plugProjectKandoU/aiFormation", False], ["plugProjectKandoU/creatureStick", True], ["plugProjectKandoU/interactBattle", True], ["plugProjectKandoU/aiFree", True], ["plugProjectKandoU/aiAttack", True], ["plugProjectKandoU/aiTransport", True], ["plugProjectKandoU/aiEnter", False], ["plugProjectKandoU/pathfinder", False], ["plugProjectKandoU/pelletState", False], ["plugProjectKandoU/dynCreature", False], ["plugProjectKandoU/gameGenerator", True], ["plugProjectKandoU/genPiki", True], ["plugProjectKandoU/genNavi", True], ["plugProjectKandoU/genItem", True], ["plugProjectKandoU/gameStages", True], ["plugProjectKandoU/gameSeaMgr", True], ["plugProjectKandoU/pikiAI", True], ["plugProjectKandoU/pelletConfig", True], ["plugProjectKandoU/gameFootmark", True], ["plugProjectKandoU/gameSystem", True], ["plugProjectKandoU/aiConstants", True], ["plugProjectKandoU/gameMapParts", False], ["plugProjectKandoU/vsGameSection", True], ["plugProjectKandoU/gamePlatMgr", True], ["plugProjectKandoU/itemGate", False], ["plugProjectKandoU/itemMgr", True], ["plugProjectKandoU/aiBreakGate", False], ["plugProjectKandoU/gameStat", True], ["plugProjectKandoU/itemHole", True], ["plugProjectKandoU/itemHoney", False], ["plugProjectKandoU/gameCaveInfo", False], ["plugProjectKandoU/creatureLOD", False], ["plugProjectKandoU/interactNavi", True], ["plugProjectKandoU/itemPikihead", False], ["plugProjectKandoU/itemPlant", False], ["plugProjectKandoU/itemRock", True], ["plugProjectKandoU/aiBreakRock", True], ["plugProjectKandoU/aiCrop", True], ["plugProjectKandoU/registItem", True], ["plugProjectKandoU/gamePlayData", False], ["plugProjectKandoU/itemCave", False], ["plugProjectKandoU/itemBigFountain", True], ["plugProjectKandoU/itemBridge", False], ["plugProjectKandoU/pikiContainer", True], ["plugProjectKandoU/gameGeneratorCache", False], ["plugProjectKandoU/itemTreasure", True], ["plugProjectKandoU/itemDownFloor", True], ["plugProjectKandoU/kandoLib", True], ["plugProjectKandoU/itemBarrel", True], ["plugProjectKandoU/pelletNumber", True], ["plugProjectKandoU/pelletCarcass", True], ["plugProjectKandoU/pelletFruit", True], ["plugProjectKandoU/pelletOtakara", True], ["plugProjectKandoU/genPellet", True], ["plugProjectKandoU/pelletItem", True], ["plugProjectKandoU/mapMgrTraceMove", True], ["plugProjectKandoU/efxModelObjects", True], ["plugProjectKandoU/itemUjamushi", False], ["plugProjectKandoU/aiWeed", True], ["plugProjectKandoU/flockMgr", False], ["plugProjectKandoU/itemWeed", False], ["plugProjectKandoU/aiBridge", True], ["plugProjectKandoU/aiTeki", True], ["plugProjectKandoU/singleGS_MainGame", False], ["plugProjectKandoU/singleGS_CaveGame", False], ["plugProjectKandoU/singleGS_MainResult", True], ["plugProjectKandoU/singleGS_CaveResult", False], ["plugProjectKandoU/singleGS_WorldMap", True], ["plugProjectKandoU/singleGS_FileSelect", True], ["plugProjectKandoU/gamePlayDataMemCard", False], ["plugProjectKandoU/baseHIOparms", True], ["plugProjectKandoU/radarInfo", True], ["plugProjectKandoU/singleGS_Movie", True], ["plugProjectKandoU/navi_demoCheck", False], ["plugProjectKandoU/singleGS_Zukan", False], ["plugProjectKandoU/gameResultTexMgr", True], ["plugProjectKandoU/gamePelletList", True], ["plugProjectKandoU/vsGS_Title", True], ["plugProjectKandoU/vsGS_Game", True], ["plugProjectKandoU/vsGS_Result", True], ["plugProjectKandoU/vsGS_Load", True], ["plugProjectKandoU/vsStageData", True], ["plugProjectKandoU/cellMgrParms", True], ["plugProjectKandoU/cellIterator", False], ["plugProjectKandoU/vsGS_VSGame", True], ["plugProjectKandoU/gameSoundEvent", True], ["plugProjectKandoU/aiBattle", True], ["plugProjectKandoU/gameDeathCount", True], ["plugProjectKandoU/aiBore", True], ["plugProjectKandoU/mapPartsView", True], ["plugProjectKandoU/singleGS_Ending", True], ["plugProjectKandoU/gameIconTexture", True], ["plugProjectKandoU/gameTekiStat", True], ["plugProjectKandoU/gameHighscore", True], ["plugProjectKandoU/gamePlayCommonData", True], ["plugProjectKandoU/pelletCarry", True], ["plugProjectKandoU/gameChallenge2D", True], ["plugProjectKandoU/vsTekiMgr", True], ["plugProjectKandoU/vsCardMgr", False], ["plugProjectKandoU/aiRescue", True], ["plugProjectKandoU/baseGameSectionDraw", True], ["plugProjectKandoU/singleGS_Load", True], ["plugProjectKandoU/singleGS_DayEnd", True], ["plugProjectKandoU/baseGameSectionKantei", True], ["plugProjectKandoU/sweepPrune", True], ["plugProjectKandoU/texCaster", False], ["plugProjectKandoU/vsCoinOtakaraName", True], ["plugProjectKandoU/pelletBirthBuffer", True], ["plugProjectKandoU/vsFifo", True], ], }, { "lib": "plugProjectNishimuraU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectNishimuraU/nslibmath", False], ["plugProjectNishimuraU/ShadowCylinder", False], ["plugProjectNishimuraU/playCamera", False], ["plugProjectNishimuraU/shadowMgr", True], ["plugProjectNishimuraU/MapUnit", True], ["plugProjectNishimuraU/MapNode", True], ["plugProjectNishimuraU/EnemyUnit", True], ["plugProjectNishimuraU/RandMapMgr", False], ["plugProjectNishimuraU/RandMapDraw", True], ["plugProjectNishimuraU/RandMapChecker", True], ["plugProjectNishimuraU/RandMapUnit", False], ["plugProjectNishimuraU/RandEnemyUnit", False], ["plugProjectNishimuraU/DoorNode", True], ["plugProjectNishimuraU/MapUnitGenerator", True], ["plugProjectNishimuraU/MapCreator", True], ["plugProjectNishimuraU/RandMapScore", False], ["plugProjectNishimuraU/ItemUnit", True], ["plugProjectNishimuraU/RandItemUnit", True], ["plugProjectNishimuraU/GateUnit", True], ["plugProjectNishimuraU/RandGateUnit", True], ["plugProjectNishimuraU/ObjectLayout", True], ["plugProjectNishimuraU/CameraMgr", True], ["plugProjectNishimuraU/ContRumble", True], ["plugProjectNishimuraU/RumbleMgr", True], ["plugProjectNishimuraU/PomAnimator", True], ["plugProjectNishimuraU/PomMgr", True], ["plugProjectNishimuraU/Pom", True], ["plugProjectNishimuraU/PomState", True], ["plugProjectNishimuraU/FrogState", False], ["plugProjectNishimuraU/FrogAnimator", True], ["plugProjectNishimuraU/FrogMgr", True], ["plugProjectNishimuraU/Frog", True], ["plugProjectNishimuraU/UjibMgr", True], ["plugProjectNishimuraU/Ujib", False], ["plugProjectNishimuraU/UjibState", False], ["plugProjectNishimuraU/UjibAnimator", True], ["plugProjectNishimuraU/KoganeState", True], ["plugProjectNishimuraU/KoganeMgr", True], ["plugProjectNishimuraU/Kogane", False], ["plugProjectNishimuraU/KoganeAnimator", True], ["plugProjectNishimuraU/QurioneState", True], ["plugProjectNishimuraU/QurioneMgr", True], ["plugProjectNishimuraU/Qurione", True], ["plugProjectNishimuraU/QurioneAnimator", True], ["plugProjectNishimuraU/RumbleData", True], ["plugProjectNishimuraU/MaroFrogMgr", True], ["plugProjectNishimuraU/MaroFrog", True], ["plugProjectNishimuraU/RockState", True], ["plugProjectNishimuraU/RockAnimator", True], ["plugProjectNishimuraU/RockMgr", True], ["plugProjectNishimuraU/Rock", False], ["plugProjectNishimuraU/UjiaState", False], ["plugProjectNishimuraU/UjiaAnimator", True], ["plugProjectNishimuraU/UjiaMgr", True], ["plugProjectNishimuraU/Ujia", False], ["plugProjectNishimuraU/TobiState", False], ["plugProjectNishimuraU/TobiAnimator", True], ["plugProjectNishimuraU/TobiMgr", True], ["plugProjectNishimuraU/Tobi", False], ["plugProjectNishimuraU/HibaState", True], ["plugProjectNishimuraU/HibaAnimator", True], ["plugProjectNishimuraU/HibaMgr", True], ["plugProjectNishimuraU/Hiba", True], ["plugProjectNishimuraU/GasHibaState", True], ["plugProjectNishimuraU/GasHibaAnimator", True], ["plugProjectNishimuraU/GasHibaMgr", True], ["plugProjectNishimuraU/GasHiba", True], ["plugProjectNishimuraU/ElecHibaState", True], ["plugProjectNishimuraU/ElecHibaAnimator", True], ["plugProjectNishimuraU/ElecHibaMgr", True], ["plugProjectNishimuraU/ElecHiba", False], ["plugProjectNishimuraU/SaraiState", False], ["plugProjectNishimuraU/SaraiAnimator", True], ["plugProjectNishimuraU/SaraiMgr", True], ["plugProjectNishimuraU/Sarai", True], ["plugProjectNishimuraU/TankState", False], ["plugProjectNishimuraU/TankAnimator", True], ["plugProjectNishimuraU/TankMgr", True], ["plugProjectNishimuraU/Tank", True], ["plugProjectNishimuraU/CatfishMgr", True], ["plugProjectNishimuraU/Catfish", True], ["plugProjectNishimuraU/TadpoleState", True], ["plugProjectNishimuraU/TadpoleAnimator", True], ["plugProjectNishimuraU/TadpoleMgr", True], ["plugProjectNishimuraU/Tadpole", True], ["plugProjectNishimuraU/ElecBugState", True], ["plugProjectNishimuraU/ElecBugAnimator", True], ["plugProjectNishimuraU/ElecBugMgr", True], ["plugProjectNishimuraU/ElecBug", False], ["plugProjectNishimuraU/WtankMgr", True], ["plugProjectNishimuraU/Wtank", True], ["plugProjectNishimuraU/ArmorMgr", True], ["plugProjectNishimuraU/Armor", False], ["plugProjectNishimuraU/Mar", False], ["plugProjectNishimuraU/MarAnimator", True], ["plugProjectNishimuraU/MarMgr", True], ["plugProjectNishimuraU/MarState", False], ["plugProjectNishimuraU/WealthyMgr", True], ["plugProjectNishimuraU/Wealthy", True], ["plugProjectNishimuraU/FartMgr", True], ["plugProjectNishimuraU/Fart", True], ["plugProjectNishimuraU/ArmorState", False], ["plugProjectNishimuraU/ArmorAnimator", True], ["plugProjectNishimuraU/QueenState", False], ["plugProjectNishimuraU/QueenAnimator", True], ["plugProjectNishimuraU/QueenMgr", True], ["plugProjectNishimuraU/Queen", True], ["plugProjectNishimuraU/BabyState", False], ["plugProjectNishimuraU/BabyAnimator", True], ["plugProjectNishimuraU/BabyMgr", True], ["plugProjectNishimuraU/Baby", True], ["plugProjectNishimuraU/DemonMgr", True], ["plugProjectNishimuraU/Demon", True], ["plugProjectNishimuraU/QueenShadow", True], ["plugProjectNishimuraU/FireChappyMgr", True], ["plugProjectNishimuraU/FireChappy", True], ["plugProjectNishimuraU/SnakeCrowState", False], ["plugProjectNishimuraU/SnakeCrowAnimator", True], ["plugProjectNishimuraU/SnakeCrowMgr", True], ["plugProjectNishimuraU/SnakeCrow", False], ["plugProjectNishimuraU/KumaChappyState", False], ["plugProjectNishimuraU/KumaChappyAnimator", True], ["plugProjectNishimuraU/KumaChappyMgr", True], ["plugProjectNishimuraU/KumaChappy", False], ["plugProjectNishimuraU/FuefukiState", True], ["plugProjectNishimuraU/FuefukiAnimator", True], ["plugProjectNishimuraU/FuefukiMgr", True], ["plugProjectNishimuraU/Fuefuki", True], ["plugProjectNishimuraU/KoganemushiMgr", True], ["plugProjectNishimuraU/Koganemushi", True], ["plugProjectNishimuraU/FtankMgr", True], ["plugProjectNishimuraU/Ftank", True], ["plugProjectNishimuraU/RandPlantUnit", True], ["plugProjectNishimuraU/HanachirashiState", False], ["plugProjectNishimuraU/HanachirashiAnimator", True], ["plugProjectNishimuraU/HanachirashiMgr", True], ["plugProjectNishimuraU/Hanachirashi", False], ["plugProjectNishimuraU/DamagumoState", True], ["plugProjectNishimuraU/DamagumoAnimator", True], ["plugProjectNishimuraU/DamagumoMgr", True], ["plugProjectNishimuraU/Damagumo", True], ["plugProjectNishimuraU/IKSystemMgr", True], ["plugProjectNishimuraU/IKSystemBase", True], ["plugProjectNishimuraU/DamagumoShadow", True], ["plugProjectNishimuraU/KurageState", True], ["plugProjectNishimuraU/KurageAnimator", True], ["plugProjectNishimuraU/KurageMgr", True], ["plugProjectNishimuraU/Kurage", True], ["plugProjectNishimuraU/BombSaraiState", False], ["plugProjectNishimuraU/BombSaraiAnimator", True], ["plugProjectNishimuraU/BombSaraiMgr", True], ["plugProjectNishimuraU/BombSarai", True], ["plugProjectNishimuraU/OtakaraBaseState", True], ["plugProjectNishimuraU/OtakaraBaseAnimator", True], ["plugProjectNishimuraU/OtakaraBaseMgr", True], ["plugProjectNishimuraU/OtakaraBase", True], ["plugProjectNishimuraU/FireOtakaraMgr", True], ["plugProjectNishimuraU/FireOtakara", True], ["plugProjectNishimuraU/WaterOtakaraMgr", True], ["plugProjectNishimuraU/WaterOtakara", True], ["plugProjectNishimuraU/GasOtakaraMgr", True], ["plugProjectNishimuraU/GasOtakara", True], ["plugProjectNishimuraU/ElecOtakaraMgr", True], ["plugProjectNishimuraU/ElecOtakara", True], ["plugProjectNishimuraU/ImomushiState", False], ["plugProjectNishimuraU/ImomushiAnimator", True], ["plugProjectNishimuraU/ImomushiMgr", True], ["plugProjectNishimuraU/Imomushi", False], ["plugProjectNishimuraU/HoudaiState", True], ["plugProjectNishimuraU/HoudaiAnimator", True], ["plugProjectNishimuraU/HoudaiMgr", True], ["plugProjectNishimuraU/HoudaiShadow", True], ["plugProjectNishimuraU/Houdai", True], ["plugProjectNishimuraU/HoudaiShotGun", False], ["plugProjectNishimuraU/LeafChappyMgr", True], ["plugProjectNishimuraU/LeafChappy", True], ["plugProjectNishimuraU/BigFootState", True], ["plugProjectNishimuraU/BigFootAnimator", True], ["plugProjectNishimuraU/BigFootMgr", True], ["plugProjectNishimuraU/BigFootShadow", True], ["plugProjectNishimuraU/BigFoot", True], ["plugProjectNishimuraU/SnakeWholeState", True], ["plugProjectNishimuraU/SnakeWholeAnimator", True], ["plugProjectNishimuraU/SnakeWholeMgr", True], ["plugProjectNishimuraU/SnakeWhole", False], ["plugProjectNishimuraU/SnakeJointMgr", False], ["plugProjectNishimuraU/OniKurageState", True], ["plugProjectNishimuraU/OniKurageAnimator", True], ["plugProjectNishimuraU/OniKurageMgr", True], ["plugProjectNishimuraU/OniKurage", False], ["plugProjectNishimuraU/BigTreasureState", True], ["plugProjectNishimuraU/BigTreasureMgr", True], ["plugProjectNishimuraU/BigTreasureShadow", False], ["plugProjectNishimuraU/BigTreasure", True], ["plugProjectNishimuraU/KabutoState", False], ["plugProjectNishimuraU/KabutoAnimator", True], ["plugProjectNishimuraU/KabutoMgr", True], ["plugProjectNishimuraU/Kabuto", False], ["plugProjectNishimuraU/KumaKochappyState", False], ["plugProjectNishimuraU/KumaKochappyAnimator", True], ["plugProjectNishimuraU/KumaKochappyMgr", True], ["plugProjectNishimuraU/KumaKochappy", True], ["plugProjectNishimuraU/MiniHoudaiState", False], ["plugProjectNishimuraU/MiniHoudaiAnimator", True], ["plugProjectNishimuraU/MiniHoudaiMgr", True], ["plugProjectNishimuraU/MiniHoudai", False], ["plugProjectNishimuraU/MiniHoudaiShotGun", False], ["plugProjectNishimuraU/SokkuriState", True], ["plugProjectNishimuraU/SokkuriAnimator", True], ["plugProjectNishimuraU/SokkuriMgr", True], ["plugProjectNishimuraU/Sokkuri", True], ["plugProjectNishimuraU/JointShadowBase", False], ["plugProjectNishimuraU/UmimushiShadow", False], ["plugProjectNishimuraU/HanaMgr", True], ["plugProjectNishimuraU/Hana", True], ["plugProjectNishimuraU/BigTreasureAttack", False], ["plugProjectNishimuraU/SnakeCrowShadow", False], ["plugProjectNishimuraU/SnakeWholeShadow", False], ["plugProjectNishimuraU/BombOtakaraMgr", True], ["plugProjectNishimuraU/BombOtakara", True], ["plugProjectNishimuraU/DangoMushiState", False], ["plugProjectNishimuraU/DangoMushiMgr", True], ["plugProjectNishimuraU/DangoMushi", False], ["plugProjectNishimuraU/GreenKabutoMgr", True], ["plugProjectNishimuraU/GreenKabuto", True], ["plugProjectNishimuraU/RedKabutoMgr", True], ["plugProjectNishimuraU/RedKabuto", True], ["plugProjectNishimuraU/FixKabutoMgr", True], ["plugProjectNishimuraU/FixKabuto", True], ["plugProjectNishimuraU/RandCapEnemyUnit", True], ["plugProjectNishimuraU/NormMiniHoudaiMgr", True], ["plugProjectNishimuraU/NormMiniHoudai", True], ["plugProjectNishimuraU/FixMiniHoudaiMgr", True], ["plugProjectNishimuraU/FixMiniHoudai", True], ["plugProjectNishimuraU/TyreShadow", False], ], }, { "lib": "plugProjectOgawaU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectOgawaU/ogScreen", True], ["plugProjectOgawaU/ogDopingScreen", True], ["plugProjectOgawaU/ogPikminCounter", True], ["plugProjectOgawaU/ogAnime", True], ["plugProjectOgawaU/ogCounter", True], ["plugProjectOgawaU/ogLifeGauge", True], ["plugProjectOgawaU/ogSunMeter", True], ["plugProjectOgawaU/ogCatchPiki", True], ["plugProjectOgawaU/ogContenaCounter", True], ["plugProjectOgawaU/ogMapCounter", True], ["plugProjectOgawaU/ogAnimTextScreen", True], ["plugProjectOgawaU/ogCallBackMessage", True], ["plugProjectOgawaU/ogMenuMgr", False], ["plugProjectOgawaU/ogCallBackScreen", True], ["plugProjectOgawaU/ogCounterRV", False], ["plugProjectOgawaU/ogSE", True], ["plugProjectOgawaU/ogCounterDay", True], ["plugProjectOgawaU/testScene", True], ["plugProjectOgawaU/testObj", True], ["plugProjectOgawaU/ogSceneGround", True], ["plugProjectOgawaU/ogObjGround", True], ["plugProjectOgawaU/ogCopyPane", False], ["plugProjectOgawaU/ogBloGroup", True], ["plugProjectOgawaU/DispMemberBase", True], ["plugProjectOgawaU/ogLib2D", True], ["plugProjectOgawaU/ogObjSMenuMap", False], ["plugProjectOgawaU/ogSceneSMenuMap", True], ["plugProjectOgawaU/ogObjSMenuItem", False], ["plugProjectOgawaU/ogSceneSMenuItem", True], ["plugProjectOgawaU/ogSceneSMenuPause", True], ["plugProjectOgawaU/ogObjSMenuPause", True], ["plugProjectOgawaU/ogObjSMenuBase", True], ["plugProjectOgawaU/ogObjCourseName", True], ["plugProjectOgawaU/ogUtil", True], ["plugProjectOgawaU/ogSceneCourseName", True], ["plugProjectOgawaU/ogObjKantei", True], ["plugProjectOgawaU/ogSceneKantei", True], ["plugProjectOgawaU/ogObjSpecialItem", True], ["plugProjectOgawaU/ogSceneSpecialItem", True], ["plugProjectOgawaU/ogObjFloor", True], ["plugProjectOgawaU/ogSceneFloor", True], ["plugProjectOgawaU/ogObjCave", True], ["plugProjectOgawaU/ogSceneCave", True], ["plugProjectOgawaU/ogObjAnaDemo", True], ["plugProjectOgawaU/ogSceneAnaDemo", True], ["plugProjectOgawaU/ogObjChallenge2P", True], ["plugProjectOgawaU/ogSceneChallenge2P", True], ["plugProjectOgawaU/ogObjContena", False], ["plugProjectOgawaU/ogSceneContena", True], ["plugProjectOgawaU/ogObjSMenuPauseDoukutu", True], ["plugProjectOgawaU/ogSceneSMenuPauseDoukutu", True], ["plugProjectOgawaU/ogObjUfo", True], ["plugProjectOgawaU/ogSceneUfo", True], ["plugProjectOgawaU/ogObjSave", True], ["plugProjectOgawaU/ogSceneSave", True], ["plugProjectOgawaU/ogObjFinalMsg", True], ["plugProjectOgawaU/ogSceneFinalMsg", True], ["plugProjectOgawaU/ogObjVs", False], ["plugProjectOgawaU/ogSceneVs", True], ["plugProjectOgawaU/ogObjChallenge1P", True], ["plugProjectOgawaU/ogSceneChallenge1P", True], ["plugProjectOgawaU/ogScaleMgr", True], ["plugProjectOgawaU/ogObjSMenuPauseVs", True], ["plugProjectOgawaU/ogSceneSMenuPauseVs", True], ["plugProjectOgawaU/ogFuriko", True], ["plugProjectOgawaU/ogCounterSlot", False], ["plugProjectOgawaU/ogObjWorldMapInfoWindow0", True], ["plugProjectOgawaU/ogSceneWorldMapInfoWindow0", True], ["plugProjectOgawaU/ogObjWorldMapInfoWindow1", True], ["plugProjectOgawaU/ogSceneWorldMapInfoWindow1", True], ["plugProjectOgawaU/ogTotalPokoScreen", True], ["plugProjectOgawaU/ogObjChallengeBase", True], ["plugProjectOgawaU/ogSceneChallengeBase", True], ["plugProjectOgawaU/ogCallBackPicture", True], ["plugProjectOgawaU/ogDrawAfter", True], ["plugProjectOgawaU/ogOtakaraSensor", True], ["plugProjectOgawaU/ogTitleMsg", True], ["plugProjectOgawaU/ogAngleMgr", True], ["plugProjectOgawaU/ogSceneSMenuCont", True], ["plugProjectOgawaU/ogObjSMenuCont", True], ], }, { "lib": "plugProjectHikinoU", "cflags": "$cflags_pikmin -sym on", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectHikinoU/PSSeq", False], ["plugProjectHikinoU/PSGame", False], ["plugProjectHikinoU/PSSystemIF", True], ["plugProjectHikinoU/PSAutoBgm", False], ["plugProjectHikinoU/PSBnkMgr", False], ["plugProjectHikinoU/PSTaskBase", True], ["plugProjectHikinoU/PSBgmTask", True], ["plugProjectHikinoU/PSCreatureMgr", True], ["plugProjectHikinoU/PSAutoBgm_MeloArranger", True], ["plugProjectHikinoU/PSSe", False], ["plugProjectHikinoU/PSSeBase", True], ["plugProjectHikinoU/PSScene", True], ["plugProjectHikinoU/PSBgmTrack", True], ["plugProjectHikinoU/PSDirector", True], ], }, { "lib": "plugProjectMorimuraU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectMorimuraU/dayEndCount", False], ["plugProjectMorimuraU/hurryUp2D", False], ["plugProjectMorimuraU/gameOver2D", True], ["plugProjectMorimuraU/testBase", True], ["plugProjectMorimuraU/bombState", True], ["plugProjectMorimuraU/bombAnimator", True], ["plugProjectMorimuraU/bombMgr", True], ["plugProjectMorimuraU/bomb", True], ["plugProjectMorimuraU/eggState", True], ["plugProjectMorimuraU/eggAnimator", True], ["plugProjectMorimuraU/eggMgr", True], ["plugProjectMorimuraU/egg", True], ["plugProjectMorimuraU/panModokiState", True], ["plugProjectMorimuraU/panModokiAnimator", True], ["plugProjectMorimuraU/panModokiMgr", True], ["plugProjectMorimuraU/panModoki", False], ["plugProjectMorimuraU/plantsMgr", True], ["plugProjectMorimuraU/plantsAnimator", True], ["plugProjectMorimuraU/plants", True], ["plugProjectMorimuraU/kingChappyState", False], ["plugProjectMorimuraU/kingChappyMgr", True], ["plugProjectMorimuraU/kingChappy", False], ["plugProjectMorimuraU/miulinState", True], ["plugProjectMorimuraU/miulinAnimator", True], ["plugProjectMorimuraU/miulinMgr", True], ["plugProjectMorimuraU/miulin", False], ["plugProjectMorimuraU/jigumoState", True], ["plugProjectMorimuraU/jigumoAnimator", True], ["plugProjectMorimuraU/jigumoMgr", True], ["plugProjectMorimuraU/jigumo", False], ["plugProjectMorimuraU/enemyNestMgr", True], ["plugProjectMorimuraU/enemyNest", True], ["plugProjectMorimuraU/tamagoMushiState", True], ["plugProjectMorimuraU/tamagoMushiAnimator", True], ["plugProjectMorimuraU/tamagoMushiMgr", True], ["plugProjectMorimuraU/tamagoMushi", True], ["plugProjectMorimuraU/zukan2D", False], ["plugProjectMorimuraU/hiScore2D", False], ["plugProjectMorimuraU/umiMushiState", True], ["plugProjectMorimuraU/umiMushiAnimator", True], ["plugProjectMorimuraU/umiMushiMgr", True], ["plugProjectMorimuraU/umiMushi", False], ["plugProjectMorimuraU/shijimiChouState", True], ["plugProjectMorimuraU/shijimiChouAnimator", True], ["plugProjectMorimuraU/shijimiChouMgr", True], ["plugProjectMorimuraU/shijimiChou", False], ["plugProjectMorimuraU/challengeSelect2D", False], ["plugProjectMorimuraU/challengeResult2D", False], ["plugProjectMorimuraU/vsSelect2D", False], ["plugProjectMorimuraU/mrUtil", True], ["plugProjectMorimuraU/scrollList", False], ["plugProjectMorimuraU/mrWindow", True], ["plugProjectMorimuraU/blackManState", True], ["plugProjectMorimuraU/blackManAnimator", True], ["plugProjectMorimuraU/blackManMgr", True], ["plugProjectMorimuraU/blackMan", False], ["plugProjectMorimuraU/tyreState", True], ["plugProjectMorimuraU/tyreAnimator", True], ["plugProjectMorimuraU/tyreMgr", True], ["plugProjectMorimuraU/tyre", True], ], }, { "lib": "plugProjectEbisawaU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectEbisawaU/efxBase", False], ["plugProjectEbisawaU/efxEnemy", False], ["plugProjectEbisawaU/efxObject", True], ["plugProjectEbisawaU/efxPikmin", False], ["plugProjectEbisawaU/particle2dMgr", True], ["plugProjectEbisawaU/efx2dBase", True], ["plugProjectEbisawaU/efx2dEffect", False], ["plugProjectEbisawaU/particleMgr", False], ["plugProjectEbisawaU/ebiP2Title", False], ["plugProjectEbisawaU/ebiP2TitleUnit", True], ["plugProjectEbisawaU/ebiUtility", True], ["plugProjectEbisawaU/ebiP2TitleCamera", True], ["plugProjectEbisawaU/ebiP2TitleLight", True], ["plugProjectEbisawaU/ebiScreenMemoryCard", True], ["plugProjectEbisawaU/efxTPkEffectMgr", True], ["plugProjectEbisawaU/efxEnemyGeneral", True], ["plugProjectEbisawaU/ebi3DGraph", True], ["plugProjectEbisawaU/ebiGeometry", True], ["plugProjectEbisawaU/ebi2DGraph", True], ["plugProjectEbisawaU/ebiScreenOption", True], ["plugProjectEbisawaU/ebiScreenProgre", True], ["plugProjectEbisawaU/ebiOptionMgr", True], ["plugProjectEbisawaU/ebi2DCallBack", False], ["plugProjectEbisawaU/ebiCardMgr", True], ["plugProjectEbisawaU/ebiScreenFramework", True], ["plugProjectEbisawaU/ebiScreenPushStart", True], ["plugProjectEbisawaU/ebiScreenFileSelect", False, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiScreenTitleMenu", True], ["plugProjectEbisawaU/ebiSaveMgr", True], ["plugProjectEbisawaU/ebiScreenSaveMenu", True], ["plugProjectEbisawaU/ebiScreenFileSelect_Mgr", True, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiFileSelectMgr", True, {"cflags": "$cflags_pikmin"}], ["plugProjectEbisawaU/ebiCardMgr_Load", True], ["plugProjectEbisawaU/ebiP2TitleCoordMgr", True], ["plugProjectEbisawaU/ebiP2TitlePikmin", False, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiP2TitleKogane", True, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiP2TitleChappy", True, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiScreenTMBack", True, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiMainTitleMgr", False, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiP2TitleFog", True], ["plugProjectEbisawaU/efxEnemyBoss", False, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiCardEReader", True], ["plugProjectEbisawaU/ebiScreenOmake", False, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiOmakeMgr", False, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiScreenOmakeCardE", False, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiScreenOmakeGame", True, {"cflags": "$cflags_pikmin -sym on"}], ["plugProjectEbisawaU/ebiScreenInfoWindow", True, {"cflags": "$cflags_pikmin -sym on"}], ], }, { "lib": "plugProjectKonoU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["plugProjectKonoU/khWorldMap", False], ["plugProjectKonoU/khCaveResult", False], ["plugProjectKonoU/khSceneLoader", True], ["plugProjectKonoU/newGame2DMgr", True], ["plugProjectKonoU/newScreenMgr", True], ["plugProjectKonoU/khReadyGo", True], ["plugProjectKonoU/khFinalFloor", True], ["plugProjectKonoU/khDayEndResult", False], ["plugProjectKonoU/khUtil", True], ["plugProjectKonoU/khFinalResult", False], ["plugProjectKonoU/khPayDept", True], ["plugProjectKonoU/khWinLose", True], ["plugProjectKonoU/khWinLoseReason", True], ["plugProjectKonoU/khMailSaveData", True], ], }, { "lib": "sysBootupU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["sysBootupU/sysBootup", True], ], }, { "lib": "sysCommonU", "cflags": "$cflags_pikmin", "mw_version": "2.6", "host": True, "objects": [ ["sysCommonU/node", True], ["sysCommonU/sysMath", False], ["sysCommonU/id32", True], ["sysCommonU/parameters", True], ["sysCommonU/stream", True], ["sysCommonU/geometry", False], ["sysCommonU/mapCollision", True], ["sysCommonU/camera", False], ["sysCommonU/tagparams", True], ["sysCommonU/sysTemplates", True], ["sysCommonU/mapCode", True], ["sysCommonU/geomIntersection", False], ["sysCommonU/geomOBBTree", False], ["sysCommonU/geomTraceMove", False], ["sysCommonU/geomCylinder", True], ["sysCommonU/geomClone", True], ], }, { "lib": "sysGCU", "cflags": "$cflags_pikmin -lang=c++", "mw_version": "2.6", "host": True, "objects": [ ["sysGCU/system", False], ["sysGCU/section", False], ["sysGCU/gameflow", True], ["sysGCU/menuSection", True], ["sysGCU/dvdThread", True], ["sysGCU/appThread", True], ["sysGCU/controller", True], ["sysGCU/graphics", False], ["sysGCU/matMath", False], ["sysGCU/sysShape", True], ["sysGCU/reset", True], ["sysGCU/dvdStatus", True], ["sysGCU/sysTimers", True], ["sysGCU/modelMgr", True], ["sysGCU/heapStatus", True], ["sysGCU/light", True], ["sysGCU/wipe", True], ["sysGCU/moviePlayer", False], ["sysGCU/JSTObjectActor", False], ["sysGCU/JSTObjectCamera", False], ["sysGCU/JSTObjectGameActor", False], ["sysGCU/JSTObjectSystem", False], ["sysGCU/JSTFindCreature", True], ["sysGCU/movieConfig", True], ["sysGCU/gameConfig", True], ["sysGCU/fogMgr", True], ["sysGCU/aramMgr", False], ["sysGCU/resourceMgr", False], ["sysGCU/resourceMgr2D", True], ["sysGCU/sysMaterialAnim", True], ["sysGCU/P2DScreen", True], ["sysGCU/movieMessage", False], ["sysGCU/moviePlayerPauseAndDraw", True], ["sysGCU/JSTObjectSpecialActor", True], ["sysGCU/messageSequence", True], ["sysGCU/messageMgr", True], ["sysGCU/messageObj", True], ["sysGCU/messageRendering", False], ["sysGCU/message", True], ["sysGCU/modelEffect", True], ["sysGCU/messageReference", True], ["sysGCU/simpleMessage", True], ["sysGCU/sysShapeAnimation", True], ["sysGCU/sysShapeModel", False], ["sysGCU/windowMessage", False], ["sysGCU/memoryCard", False], ["sysGCU/pikmin2MemoryCardMgr", False], ["sysGCU/commonSaveData", True], ["sysGCU/bootSection", False], ["sysGCU/titleSection", False], ["sysGCU/loadResource", False], ["sysGCU/rootMenuSection", True], ["sysGCU/demoSection", True], ["sysGCU/THPAudioDecode", True], ["sysGCU/THPDraw", True], ["sysGCU/THPPlayer", True], ["sysGCU/THPRead", True], ["sysGCU/THPVideoDecode", True], ["sysGCU/pikmin2THPPlayer", True], ["sysGCU/captionMgr", True], ["sysGCU/captionMessage", True], ["sysGCU/screenScene", True], ["sysGCU/screenMgr", True], ["sysGCU/screenObj", True], ["sysGCU/JSTObjectParticleActor", False], ["sysGCU/moviePlayerAudio", True], ["sysGCU/illustratedBookMessage", True], ["sysGCU/sysDrawBuffer", True], ["sysGCU/dvdErrorMessage", True], ["sysGCU/pikmin2AramMgr", True], ["sysGCU/messageAnalyzer", True], ], }, { "lib": "utilityU", "cflags": "$cflags_pikmin -sym on", "mw_version": "2.6", "host": True, "objects": [ ["utilityU/menu", True], ["utilityU/PSMainSide_Director", False], ["utilityU/PSMainSide_Factory", False], ["utilityU/PSMainSide_ObjSound", False], ["utilityU/PSMainSide_Demo", True], ["utilityU/PSMainSide_Scene", False], ["utilityU/PSMainSide_BossMgr", False], ["utilityU/PSMainSide_Se", False], ["utilityU/PSMainSide_DirectorMgr", False], ["utilityU/PSMainSide_Sound", False], ["utilityU/PSMainSide_TrackMap", True], ["utilityU/PSMainSide_CreaturePrm", False], ["utilityU/PSMainSide_ObjCalc", False], ], }, ] def main(): import os import io import sys import argparse import json from pathlib import Path from shutil import which from tools import ninja_syntax if sys.version_info < (3, 8): sys.exit("Python 3.8 or later required.") parser = argparse.ArgumentParser() parser.add_argument( "--version", "-v", dest="version", default="usa", help="version to build (usa, usa.demo)", ) parser.add_argument( "--map", "-m", dest="map", action="store_true", help="generate map file", ) parser.add_argument( "--no-check", dest="check", action="store_false", help="don't check hash of resulting dol", ) parser.add_argument( "--no-static-libs", dest="static_libs", action="store_false", help="don't build and use static libs", ) parser.add_argument( "--powerpc", dest="powerpc", type=Path, default=Path("tools/powerpc"), help="path to powerpc-eabi tools", ) if os.name != "nt" and not "_NT-" in os.uname().sysname: parser.add_argument( "--wine", dest="wine", type=Path, help="path to wine (or wibo)", ) parser.add_argument( "--build-dtk", dest="build_dtk", type=Path, help="path to decomp-toolkit source", ) parser.add_argument( "--debug", "-d", dest="debug", action="store_true", help="build with debug info (non-matching)", ) parser.add_argument( "--compilers", dest="compilers", type=Path, default=Path("tools/mwcc_compiler"), help="path to compilers", ) parser.add_argument( "--build-dir", dest="build_dir", type=Path, default=Path("build"), help="base build directory", ) parser.add_argument( "--context", "-c", dest="context", action="store_true", help="generate context files for decomp.me", ) args = parser.parse_args() # On Windows, we need this to use && in commands chain = "cmd /c " if os.name == "nt" else "" out = io.StringIO() n = ninja_syntax.Writer(out) n.variable("ninja_required_version", "1.3") n.newline() n.comment("The arguments passed to configure.py, for rerunning it.") configure_args = sys.argv[1:] n.variable("configure_args", configure_args) n.variable("python", f'"{sys.executable}"') n.newline() ### # Variables ### n.comment("Variables") version = args.version.lower() if args.version.lower() == "usa": version_num = "2" elif args.version.lower() == "usa.demo": version_num = "1" else: sys.exit(f'Invalid version "{args.version}"') build_path = args.build_dir / f"pikmin2.{version}" cflags_base = f"-proc gekko -nodefaults -Cpp_exceptions off -RTTI off -fp hard -fp_contract on -O4,p -maxerrors 1 -enum int -inline auto -str reuse,readonly -nosyspath -use_lmw_stmw on -sdata 8 -sdata2 8 -DVERNUM={version_num} -i include -i include/stl" if args.debug: cflags_base += " -sym on -D_DEBUG" else: cflags_base += " -DNDEBUG -w off" n.variable("cflags_base", cflags_base) n.variable("cflags_pikmin", "$cflags_base -common on") asflags = f"-mgekko -I include --defsym version={version_num} -W --strip-local-absolute -gdwarf-2" n.variable("asflags", asflags) ldflags = "-fp fmadd -nodefaults -lcf ldscript.lcf" if args.map: map_path = build_path / "pikmin2UP.MAP" ldflags += f" -map {map_path} -mapunused" if args.debug: ldflags += " -g" else: ldflags += " -w off" n.variable("ldflags", ldflags) mw_link_version = "2.6" n.variable("mw_version", mw_link_version) if os.name == "nt": exe = ".exe" wine = "" else: if "_NT-" in os.uname().sysname: # MSYS2 wine = "" elif args.wine: wine = f"{args.wine} " elif which("wibo") is not None: wine = "wibo " else: wine = "wine " exe = "" n.newline() ### # Tooling ### tools_path = Path("tools") def path(input): if input is None: return None elif isinstance(input, list): return list(map(str, input)) else: return [str(input)] n.comment("decomp-toolkit") if args.build_dtk: dtk = tools_path / "release" / f"dtk{exe}" n.rule( name="cargo", command="cargo build --release --manifest-path $in --bin $bin --target-dir $target", description="CARGO $bin", depfile=path(Path("$target") / "release" / "$bin.d"), deps="gcc", ) n.build( outputs=path(dtk), rule="cargo", inputs=path(args.build_dtk / "Cargo.toml"), variables={ "bin": "dtk", "target": tools_path, }, ) else: dtk = tools_path / f"dtk{exe}" download_dtk = tools_path / "download_dtk.py" n.rule( name="download_dtk", command=f"$python {download_dtk} $in $out", description="DOWNLOAD $out", ) n.build( outputs=path(dtk), rule="download_dtk", inputs=path([tools_path / "dtk_version"]), implicit=path([download_dtk]), ) n.newline() # FIXME: Manual downloads because ninja doesn't play nice with directories, # replace with automated system like dtk uses if workaround is found if args.powerpc == Path("tools/powerpc") and not Path("tools/powerpc").exists(): import tools.download_ppc tools.download_ppc.main() if args.compilers == Path("tools/mwcc_compiler") and not Path("tools/mwcc_compiler").exists(): import tools.download_mwcc tools.download_mwcc.main() ### # Rules ### compiler_path = args.compilers / "$mw_version" mwcc = compiler_path / "mwcceppc.exe" mwld = compiler_path / "mwldeppc.exe" gnu_as = args.powerpc / f"powerpc-eabi-as{exe}" mwcc_cmd = f"{chain}{wine}{mwcc} $cflags -MMD -c $in -o $basedir" if args.context: mwcc_cmd += " && $python tools/decompctx.py $cfile -r -q" mwld_cmd = f"{wine}{mwld} $ldflags -o $out @$out.rsp" as_cmd = ( f"{chain}{gnu_as} $asflags -o $out $in -MD $out.d" + f" && {dtk} elf fixup $out $out" ) ar_cmd = f"{dtk} ar create $out @$out.rsp" if os.name != "nt": transform_dep = tools_path / "transform-dep.py" transform_dep_cmd = f" && $python {transform_dep} $basefile.d $basefile.d" mwcc_cmd += transform_dep_cmd n.comment("Link ELF file") n.rule( name="link", command=mwld_cmd, description="LINK $out", rspfile="$out.rsp", rspfile_content="$in_newline", ) n.newline() n.comment("MWCC build") n.rule( name="mwcc", command=mwcc_cmd, description="MWCC $out", depfile="$basefile.d", deps="gcc", ) n.newline() n.comment("Assemble asm") n.rule( name="as", command=as_cmd, description="AS $out", depfile="$out.d", deps="gcc", ) n.newline() n.comment("Create static library") n.rule( name="ar", command=ar_cmd, description="AR $out", rspfile="$out.rsp", rspfile_content="$in_newline", ) n.newline() n.comment("Host build") n.variable("host_cflags", "-I include -Wno-trigraphs") n.variable( "host_cppflags", "-std=c++98 -I include -fno-exceptions -fno-rtti -D_CRT_SECURE_NO_WARNINGS -Wno-trigraphs -Wno-c++11-extensions", ) n.rule( name="host_cc", command="clang $host_cflags -c -o $out $in", description="CC $out", ) n.rule( name="host_cpp", command="clang++ $host_cppflags -c -o $out $in", description="CXX $out", ) n.newline() ### # Rules for source files ### n.comment("Source files") src_path = Path("src") asm_path = Path("asm") build_src_path = build_path / "src" build_host_path = build_path / "host" build_asm_path = build_path / "asm" build_lib_path = build_path / "lib" objdiff_config = { "min_version": "0.4.3", "custom_make": "ninja", "build_target": True, "watch_patterns": [ "*.c", "*.cp", "*.cpp", "*.h", "*.hpp", "*.py", ], "units": [], } source_inputs = [] host_source_inputs = [] link_inputs = [] used_compiler_versions = set() for lib in LIBS: inputs = [] if "lib" in lib: lib_name = lib["lib"] n.comment(f"{lib_name}.a") else: n.comment("Loose files") for object in lib["objects"]: completed = False options = { "add_to_all": True, "mw_version": None, "cflags": None, } if type(object) is list: if len(object) > 1: completed = object[1] if len(object) > 2: options.update(object[2]) object = object[0] cflags = options["cflags"] or lib["cflags"] mw_version = options["mw_version"] or lib["mw_version"] used_compiler_versions.add(mw_version) # objdiff config unit_config = { "name": object, "complete": completed, } c_file = None if os.path.exists(src_path / f"{object}.cpp"): c_file = src_path / f"{object}.cpp" elif os.path.exists(src_path / f"{object}.cp"): c_file = src_path / f"{object}.cp" elif os.path.exists(src_path / f"{object}.c"): c_file = src_path / f"{object}.c" elif os.path.exists(src_path / f"{object}.C"): c_file = src_path / f"{object}.C" elif os.path.exists(src_path / f"{object}.s"): # specifically for __exception.s n.build( outputs=path(build_src_path / f"{object}.o"), rule="as", inputs=path(src_path / f"{object}.s"), implicit=path(dtk), ) if c_file is not None: n.build( outputs=path(build_src_path / f"{object}.o"), rule="mwcc", inputs=path(c_file), variables={ "mw_version": mw_version, "cflags": options["cflags"] or lib["cflags"], "basedir": os.path.dirname(build_src_path / f"{object}"), "basefile": path(build_src_path / f"{object}"), "cfile": path(c_file), }, implicit_outputs = None if not args.context else (str(c_file) + ".ctx") ) if lib["host"]: n.build( outputs=path(build_host_path / f"{object}.o"), rule="host_cc" if c_file.suffix == ".c" else "host_cpp", inputs=path(c_file), variables={ "basedir": os.path.dirname(build_host_path / object), "basefile": path(build_host_path / object), }, ) if options["add_to_all"]: host_source_inputs.append(build_host_path / f"{object}.o") if options["add_to_all"]: source_inputs.append(build_src_path / f"{object}.o") unit_config["base_path"] = str(build_src_path / f"{object}.o") if os.path.exists(asm_path / f"{object}.s"): n.build( outputs=path(build_asm_path / f"{object}.o"), rule="as", inputs=path(asm_path / f"{object}.s"), implicit=path(dtk), ) unit_config["target_path"] = str(build_asm_path / f"{object}.o") objdiff_config["units"].append(unit_config) if completed: inputs.append(build_src_path / f"{object}.o") else: inputs.append(build_asm_path / f"{object}.o") if args.static_libs and "lib" in lib: lib_name = lib["lib"] n.build( outputs=path(build_lib_path / f"{lib_name}.a"), rule="ar", inputs=path(inputs), implicit=path(dtk), ) link_inputs.append(build_lib_path / f"{lib_name}.a") else: link_inputs.extend(inputs) n.newline() # Check if all compiler versions exist for mw_version in used_compiler_versions: mw_path = args.compilers / mw_version / "mwcceppc.exe" if not os.path.exists(mw_path): print(f"Compiler {mw_path} does not exist") exit(1) # Check if linker exists mw_path = args.compilers / mw_link_version / "mwldeppc.exe" if not os.path.exists(mw_path): print(f"Linker {mw_path} does not exist") exit(1) ### # Link ### n.comment("Link") if args.map: n.build( outputs=path(build_path / "main.elf"), rule="link", inputs=path(link_inputs), implicit_outputs=path(map_path), ) else: n.build( outputs=path(build_path / "main.elf"), rule="link", inputs=path(link_inputs), ) n.newline() ### # Helper rule for building all source files ### n.comment("Build all source files") n.build( outputs="all_source", rule="phony", inputs=path(source_inputs), ) n.newline() ### # Helper rule for building all source files, with a host compiler ### n.comment("Build all source files with a host compiler") n.build( outputs="all_source_host", rule="phony", inputs=path(host_source_inputs), ) n.newline() ### # Generate DOL ### n.comment("Generate DOL") n.rule( name="elf2dol", command=f"{dtk} elf2dol $in $out", description="DOL $out", ) n.build( outputs=path(build_path / "main.dol"), rule="elf2dol", inputs=path(build_path / "main.elf"), implicit=path(dtk), ) n.newline() ### # Check DOL hash ### if args.check: n.comment("Check DOL hash") n.rule( name="check", command=f"{dtk} shasum -c $in -o $out", description="CHECK $in", ) n.build( outputs=path(build_path / "main.dol.ok"), rule="check", inputs=f"sha1/pikmin2.{version}.sha1", implicit=path([build_path / "main.dol", dtk]), ) n.newline() ### # Progress script ### if args.map: n.comment("Check progress") calc_progress = tools_path / "calcprogress.py" n.rule( name="progress", command=f"$python {calc_progress} $in -o $out", description="PROGRESS $in", ) n.build( outputs=path(build_path / "main.dol.progress"), rule="progress", inputs=path([build_path / "main.dol", map_path]), implicit=path([calc_progress, build_path / "main.dol.ok"]), ) n.newline() ### # Regenerate on change ### n.comment("Reconfigure on change") n.rule( name="configure", command="$python configure.py $configure_args", generator=True, ) n.build( outputs="build.ninja", rule="configure", implicit=path(["configure.py", tools_path / "ninja_syntax.py"]), ) n.newline() ### # Default rule ### n.comment("Default rule") if args.check: dol_out = build_path / "main.dol.ok" else: dol_out = build_path / "main.dol" if args.map: n.default(path([dol_out, build_path / "main.dol.progress"])) else: n.default(path([dol_out])) ### # Write build.ninja ### with open("build.ninja", "w") as f: f.write(out.getvalue()) n.close() ### # Write objdiff config ### with open("objdiff.json", "w") as w: json.dump(objdiff_config, w, indent=4) if __name__ == "__main__": main()