diff --git a/errors.txt b/errors.txt new file mode 100644 index 0000000000..3a763ed74f --- /dev/null +++ b/errors.txt @@ -0,0 +1,1369 @@ +Change Dir: '/Users/christopher/GIT/2ship2harkinian/build-cmake' + +Run Build Command(s): /usr/local/bin/ninja -v +[1/3] cd /Users/christopher/GIT/2ship2harkinian && mkdir -p /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset && sips -z 16 16 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_16x16.png && sips -z 32 32 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_16x16@2x.png && sips -z 32 32 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_32x32.png && sips -z 64 64 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_32x32@2x.png && sips -z 128 128 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_128x128.png && sips -z 256 256 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_128x128@2x.png && sips -z 256 256 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_256x256.png && sips -z 512 512 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_256x256@2x.png && sips -z 512 512 mm/macosx/2s2hIcon.png --out /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_512x512.png && cp mm/macosx/2s2hIcon.png /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_512x512@2x.png && iconutil -c icns -o /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.icns /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_16x16.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_16x16@2x.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_32x32.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_32x32@2x.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_128x128.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_128x128@2x.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_256x256.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_256x256@2x.png +/Users/christopher/GIT/2ship2harkinian/mm/macosx/2s2hIcon.png + /Users/christopher/GIT/2ship2harkinian/build-cmake/macosx/2s2h.iconset/icon_512x512.png +[2/3] /Library/Developer/CommandLineTools/usr/bin/c++ -DCVAR_CONSOLE_WINDOW_OPEN=\"gOpenWindows.Console\" -DCVAR_CONTROLLER_CONFIGURATION_WINDOW_OPEN=\"gOpenWindows.ControllerConfiguration\" -DCVAR_CONTROLLER_DISCONNECTED_WINDOW_OPEN=\"gOpenWindows.ControllerDisconnected\" -DCVAR_CONTROLLER_REORDERING_WINDOW_OPEN=\"gOpenWindows.ControllerReordering\" -DCVAR_DROPPED_FILE=\"gGeneral.DroppedFile\" -DCVAR_ENABLE_MULTI_VIEWPORTS=\"gSettings.EnableMultiViewports\" -DCVAR_GAME_OVERLAY_FONT=\"gSettings.OverlayFont\" -DCVAR_GFX_DEBUGGER_WINDOW_OPEN=\"gOpenWindows.GfxDebugger\" -DCVAR_IMGUI_CONTROLLER_NAV=\"gSettings.ControlNav\" -DCVAR_INTERNAL_RESOLUTION=\"gSettings.InternalResolution\" -DCVAR_LOW_RES_MODE=\"gSettings.LowResMode\" -DCVAR_MENU_BAR_OPEN=\"gSettings.OpenMenuBar\" -DCVAR_MSAA_VALUE=\"gSettings.MSAAValue\" -DCVAR_NEW_FILE_DROPPED=\"gGeneral.NewFileDropped\" -DCVAR_PREFIX_ADVANCED_RESOLUTION=\"gSettings.AdvancedResolution\" -DCVAR_PREFIX_AUDIO=\"gAudioEditor\" -DCVAR_PREFIX_CHEAT=\"gCheats\" -DCVAR_PREFIX_CONTROLLERS=\"gSettings.Controllers\" -DCVAR_PREFIX_COSMETIC=\"gCosmetics\" -DCVAR_PREFIX_DEVELOPER_TOOLS=\"gDeveloperTools\" -DCVAR_PREFIX_ENHANCEMENT=\"gEnhancements\" -DCVAR_PREFIX_GENERAL=\"gGeneral\" -DCVAR_PREFIX_RANDOMIZER_ENHANCEMENT=\"gRandoEnhancements\" -DCVAR_PREFIX_RANDOMIZER_SETTING=\"gRandoSettings\" -DCVAR_PREFIX_REMOTE=\"gRemote\" -DCVAR_PREFIX_SETTING=\"gSettings\" -DCVAR_PREFIX_TRACKER=\"gTrackers\" -DCVAR_PREFIX_WINDOW=\"gOpenWindows\" -DCVAR_SDL_WINDOWED_FULLSCREEN=\"gSettings.SdlWindowedFullscreen\" -DCVAR_SIMULATED_INPUT_LAG=\"gSettings.SimulatedInputLag\" -DCVAR_STATS_WINDOW_OPEN=\"gOpenWindows.Stats\" -DCVAR_TEXTURE_FILTER=\"gSettings.TextureFilter\" -DCVAR_VSYNC_ENABLED=\"gSettings.VsyncEnabled\" -DCVAR_Z_FIGHTING_MODE=\"gSettings.ZFightingMode\" -DENABLE_OPENGL -DF3DEX_GBI_2 -DIMGUI_IMPL_METAL_CPP -DNON_EQUIVALENT -DNON_MATCHING -DSPDLOG_ACTIVE_LEVEL=0 -DSPDLOG_COMPILED_LIB -DSTORMLIB_NO_AUTO_LINK -DTINYXML2_DEBUG -DTINYXML2_IMPORT -DUNICODE -D_CONSOLE -D_CRT_SECURE_NO_WARNINGS -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_UNICODE -I/Users/christopher/GIT/2ship2harkinian/mm/assets -I/Users/christopher/GIT/2ship2harkinian/mm/include -I/Users/christopher/GIT/2ship2harkinian/mm/include/PR -I/Users/christopher/GIT/2ship2harkinian/mm/src -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/log -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/debug -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/menu -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/utils -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/utils/binarytools -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/config -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/resource -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/resource/type -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/resource/factory -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/audio -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/window -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/window/gui -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/public -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/public/libultra -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/public/bridge -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/extern -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/extern/tinyxml2 -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/libultraship/Lib -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/libultraship/Lib/libjpeg/include -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/libultraship/Lib/spdlog/include -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/graphic/Fast3D/U64/PR -I/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/graphic -I/Users/christopher/GIT/2ship2harkinian/mm/../ZAPDTR/ZAPD/resource/type -I/Users/christopher/GIT/2ship2harkinian/mm -I/Users/christopher/GIT/2ship2harkinian/mm/2s2h -I/usr/local/Cellar/sdl2/2.30.5/include -I/Users/christopher/GIT/2ship2harkinian/mm/. -I/Users/christopher/GIT/2ship2harkinian/libultraship/src -I/Users/christopher/GIT/2ship2harkinian/libultraship/src/../include -I/Users/christopher/GIT/2ship2harkinian/build-cmake/_deps/imgui-src -I/Users/christopher/GIT/2ship2harkinian/build-cmake/_deps/imgui-src/backends -I/Users/christopher/GIT/2ship2harkinian/build-cmake/_deps/stormlib-src/src -I/Users/christopher/GIT/2ship2harkinian/build-cmake/_deps/stb -I/Users/christopher/GIT/2ship2harkinian/build-cmake/_deps/threadpool-src/include -I/Users/christopher/GIT/2ship2harkinian/build-cmake/_deps/metalcpp-src -I/Users/christopher/GIT/2ship2harkinian/build-cmake/_deps/spdlog-src/include -isystem /usr/local/Cellar/sdl2/2.30.5/include/SDL2 -isystem /usr/local/include -g -std=gnu++20 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk -mmacosx-version-min=10.15 -F/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/System/Library/Frameworks -Wall -Wextra -Wno-error -Wno-return-type -Wno-unused-parameter -Wno-unused-function -Wno-unused-variable -Wno-missing-field-initializers -Wno-parentheses -Wno-narrowing -Wno-missing-braces -fpermissive -Wno-c++11-narrowing -Wno-deprecated-enum-enum-conversion -pthread -MD -MT mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp.o -MF mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp.o.d -o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp.o -c /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/z64save.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/ultra64.h:8: +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/guint.h:19:9: warning: 'ROUND' macro redefined [-Wmacro-redefined] +#define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x) - 0.5)) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/gu.h:10:9: note: previous definition is here +#define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x)-0.5)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/z64save.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/ultra64.h:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/PR/os.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_ai.h:4: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/os.h:35:9: warning: 'CONT_TYPE_MASK' macro redefined [-Wmacro-redefined] +#define CONT_TYPE_MASK 0x1f07 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/controller.h:73:9: note: previous definition is here +#define CONT_TYPE_MASK 0x1F07 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:3: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/window/gui/Gui.h:17: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/window/gui/InputEditorWindow.h:13: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/controller/controldevice/controller/Controller.h:13: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/controller/controldevice/controller/ControllerButton.h:8: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/controller/controldevice/controller/mapping/keyboard/KeyboardScancodes.h:6:1: warning: typedef requires a name [-Wmissing-declarations] +typedef enum KbEventType { +^~~~~~~ +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/src/controller/controldevice/controller/mapping/keyboard/KeyboardScancodes.h:13:1: warning: typedef requires a name [-Wmissing-declarations] +typedef enum KbScancode { +^~~~~~~ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:5:9: warning: 'OS_CPU_COUNTER' macro redefined [-Wmacro-redefined] +#define OS_CPU_COUNTER (OS_CLOCK_RATE * 3 / 4) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:7:9: note: previous definition is here +#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:7:9: warning: 'OS_NSEC_TO_CYCLES' macro redefined [-Wmacro-redefined] +#define OS_NSEC_TO_CYCLES(n) (((u64)(n) * (OS_CPU_COUNTER / 15625000LL)) / (1000000000LL / 15625000LL)) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:10:9: note: previous definition is here +#define OS_NSEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625000LL))/(1000000000LL/15625000LL)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:8:9: warning: 'OS_USEC_TO_CYCLES' macro redefined [-Wmacro-redefined] +#define OS_USEC_TO_CYCLES(n) (((u64)(n) * (OS_CPU_COUNTER / 15625LL)) / (1000000LL / 15625LL)) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:11:9: note: previous definition is here +#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:9:9: warning: 'OS_CYCLES_TO_NSEC' macro redefined [-Wmacro-redefined] +#define OS_CYCLES_TO_NSEC(c) (((u64)(c) * (1000000000LL / 15625000LL)) / (OS_CPU_COUNTER / 15625000LL)) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:12:9: note: previous definition is here +#define OS_CYCLES_TO_NSEC(c) (((u64)(c)*(1000000000LL/15625000LL))/(OS_CPU_COUNTER/15625000LL)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:10:9: warning: 'OS_CYCLES_TO_USEC' macro redefined [-Wmacro-redefined] +#define OS_CYCLES_TO_USEC(c) (((u64)(c) * (1000000LL / 15625LL)) / (OS_CPU_COUNTER / 15625LL)) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:13:9: note: previous definition is here +#define OS_CYCLES_TO_USEC(c) (((u64)(c)*(1000000LL/15625LL))/(OS_CPU_COUNTER/15625LL)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:13:9: warning: 'OS_K1_TO_PHYSICAL' macro redefined [-Wmacro-redefined] +#define OS_K1_TO_PHYSICAL(x) (x) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:16:9: note: previous definition is here +#define OS_K1_TO_PHYSICAL(x) (u32)(((char*)(x)-0xA0000000)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:15:9: warning: 'OS_PHYSICAL_TO_K0' macro redefined [-Wmacro-redefined] +#define OS_PHYSICAL_TO_K0(x) (x) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:18:9: note: previous definition is here +#define OS_PHYSICAL_TO_K0(x) (void*)(((u32)(x)+0x80000000)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:6: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/convert.h:16:9: warning: 'OS_PHYSICAL_TO_K1' macro redefined [-Wmacro-redefined] +#define OS_PHYSICAL_TO_K1(x) (x) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/os_convert.h:19:9: note: previous definition is here +#define OS_PHYSICAL_TO_K1(x) (void*)(((u32)(x)+0xA0000000)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:6:9: warning: 'IO_WRITE' macro redefined [-Wmacro-redefined] +#define IO_WRITE(addr, data) (*(vu32*)PHYS_TO_K1(addr) = (u32)(data)) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:271:9: note: previous definition is here +#define IO_WRITE(addr,data) (*(vu32*)PHYS_TO_K1(addr)=(u32)(data)) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:8:9: warning: 'AI_DRAM_ADDR_REG' macro redefined [-Wmacro-redefined] +#define AI_DRAM_ADDR_REG 0x04500000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:49:9: note: previous definition is here +#define AI_DRAM_ADDR_REG (AI_BASE_REG + 0x00) /* R0: DRAM address */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:9:9: warning: 'AI_LEN_REG' macro redefined [-Wmacro-redefined] +#define AI_LEN_REG 0x04500004 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:53:9: note: previous definition is here +#define AI_LEN_REG (AI_BASE_REG + 0x04) /* R1: Length */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:10:9: warning: 'AI_CONTROL_REG' macro redefined [-Wmacro-redefined] +#define AI_CONTROL_REG 0x04500008 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:56:9: note: previous definition is here +#define AI_CONTROL_REG (AI_BASE_REG + 0x08) /* R2: DMA Control */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:11:9: warning: 'AI_STATUS_REG' macro redefined [-Wmacro-redefined] +#define AI_STATUS_REG 0x0450000C + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:67:9: note: previous definition is here +#define AI_STATUS_REG (AI_BASE_REG + 0x0C) /* R3: Status */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:12:9: warning: 'AI_DACRATE_REG' macro redefined [-Wmacro-redefined] +#define AI_DACRATE_REG 0x04500010 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:78:9: note: previous definition is here +#define AI_DACRATE_REG (AI_BASE_REG + 0x10) /* R4: DAC rate 14-lsb*/ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:13:9: warning: 'AI_BITRATE_REG' macro redefined [-Wmacro-redefined] +#define AI_BITRATE_REG 0x04500014 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:91:9: note: previous definition is here +#define AI_BITRATE_REG (AI_BASE_REG + 0x14) /* R5: Bit rate 4-lsb */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:15:9: warning: 'AI_CONTROL_DMA_ON' macro redefined [-Wmacro-redefined] +#define AI_CONTROL_DMA_ON 0x01 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:59:9: note: previous definition is here +#define AI_CONTROL_DMA_ON 1 /* LSB = 1: DMA enable*/ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:16:9: warning: 'AI_CONTROL_DMA_OFF' macro redefined [-Wmacro-redefined] +#define AI_CONTROL_DMA_OFF 0x00 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:60:9: note: previous definition is here +#define AI_CONTROL_DMA_OFF 0 /* LSB = 1: DMA enable*/ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:22:9: warning: 'VI_CONTROL_REG' macro redefined [-Wmacro-redefined] +#define VI_CONTROL_REG VI_STATUS_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:195:9: note: previous definition is here +#define VI_CONTROL_REG 0x04400000 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:24:9: warning: 'VI_DRAM_ADDR_REG' macro redefined [-Wmacro-redefined] +#define VI_DRAM_ADDR_REG VI_ORIGIN_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:197:9: note: previous definition is here +#define VI_DRAM_ADDR_REG 0x04400004 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:26:9: warning: 'VI_H_WIDTH_REG' macro redefined [-Wmacro-redefined] +#define VI_H_WIDTH_REG VI_WIDTH_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:199:9: note: previous definition is here +#define VI_H_WIDTH_REG 0x04400008 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:28:9: warning: 'VI_V_INTER_REG' macro redefined [-Wmacro-redefined] +#define VI_V_INTER_REG VI_H_WIDTH_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:201:9: note: previous definition is here +#define VI_V_INTER_REG 0x0440000C + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:30:9: warning: 'VI_V_CURRENT_LINE_REG' macro redefined [-Wmacro-redefined] +#define VI_V_CURRENT_LINE_REG VI_CURRENT_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:203:9: note: previous definition is here +#define VI_V_CURRENT_LINE_REG 0x04400010 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:32:9: warning: 'VI_TIMING_REG' macro redefined [-Wmacro-redefined] +#define VI_TIMING_REG VI_BURST_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:205:9: note: previous definition is here +#define VI_TIMING_REG 0x04400014 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:36:9: warning: 'VI_H_SYNC_LEAP_REG' macro redefined [-Wmacro-redefined] +#define VI_H_SYNC_LEAP_REG VI_LEAP_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:209:9: note: previous definition is here +#define VI_H_SYNC_LEAP_REG 0x04400020 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:38:9: warning: 'VI_H_VIDEO_REG' macro redefined [-Wmacro-redefined] +#define VI_H_VIDEO_REG VI_H_START_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:211:9: note: previous definition is here +#define VI_H_VIDEO_REG 0x04400024 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:40:9: warning: 'VI_V_VIDEO_REG' macro redefined [-Wmacro-redefined] +#define VI_V_VIDEO_REG VI_V_START_REG + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:213:9: note: previous definition is here +#define VI_V_VIDEO_REG 0x04400028 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:73:9: warning: 'PI_STATUS_ERROR' macro redefined [-Wmacro-redefined] +#define PI_STATUS_ERROR 0x4 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:236:9: note: previous definition is here +#define PI_STATUS_ERROR (1 << 2) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:78:9: warning: 'SI_DRAM_ADDR_REG' macro redefined [-Wmacro-redefined] +#define SI_DRAM_ADDR_REG 0x04800000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:260:9: note: previous definition is here +#define SI_DRAM_ADDR_REG (SI_BASE_REG + 0x00) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:79:9: warning: 'SI_PIF_ADDR_RD64B_REG' macro redefined [-Wmacro-redefined] +#define SI_PIF_ADDR_RD64B_REG 0x04800004 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:261:9: note: previous definition is here +#define SI_PIF_ADDR_RD64B_REG (SI_BASE_REG + 0x04) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:80:9: warning: 'SI_PIF_ADDR_WR64B_REG' macro redefined [-Wmacro-redefined] +#define SI_PIF_ADDR_WR64B_REG 0x04800010 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:262:9: note: previous definition is here +#define SI_PIF_ADDR_WR64B_REG (SI_BASE_REG + 0x10) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:81:9: warning: 'SI_STATUS_REG' macro redefined [-Wmacro-redefined] +#define SI_STATUS_REG 0x04800018 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:263:9: note: previous definition is here +#define SI_STATUS_REG (SI_BASE_REG + 0x18) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:83:9: warning: 'SI_STATUS_DMA_BUSY' macro redefined [-Wmacro-redefined] +#define SI_STATUS_DMA_BUSY 0x1 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:265:9: note: previous definition is here +#define SI_STATUS_DMA_BUSY (1 << 0) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:84:9: warning: 'SI_STATUS_IO_READ_BUSY' macro redefined [-Wmacro-redefined] +#define SI_STATUS_IO_READ_BUSY 0x2 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:266:9: note: previous definition is here +#define SI_STATUS_IO_READ_BUSY (1 << 1) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:22: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rcp.h:85:9: warning: 'SI_STATUS_DMA_ERROR' macro redefined [-Wmacro-redefined] +#define SI_STATUS_DMA_ERROR 0x8 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:267:9: note: previous definition is here +#define SI_STATUS_DMA_ERROR (1 << 3) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:5:9: warning: 'SP_STATUS_HALT' macro redefined [-Wmacro-redefined] +#define SP_STATUS_HALT 0x001 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:159:9: note: previous definition is here +#define SP_STATUS_HALT (1 << 0) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:6:9: warning: 'SP_STATUS_BROKE' macro redefined [-Wmacro-redefined] +#define SP_STATUS_BROKE 0x002 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:160:9: note: previous definition is here +#define SP_STATUS_BROKE (1 << 1) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:7:9: warning: 'SP_STATUS_DMA_BUSY' macro redefined [-Wmacro-redefined] +#define SP_STATUS_DMA_BUSY 0x004 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:161:9: note: previous definition is here +#define SP_STATUS_DMA_BUSY (1 << 2) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:8:9: warning: 'SP_STATUS_DMA_FULL' macro redefined [-Wmacro-redefined] +#define SP_STATUS_DMA_FULL 0x008 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:162:9: note: previous definition is here +#define SP_STATUS_DMA_FULL (1 << 3) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:9:9: warning: 'SP_STATUS_IO_FULL' macro redefined [-Wmacro-redefined] +#define SP_STATUS_IO_FULL 0x010 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:163:9: note: previous definition is here +#define SP_STATUS_IO_FULL (1 << 4) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:10:9: warning: 'SP_STATUS_SSTEP' macro redefined [-Wmacro-redefined] +#define SP_STATUS_SSTEP 0x020 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:164:9: note: previous definition is here +#define SP_STATUS_SSTEP (1 << 5) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:11:9: warning: 'SP_STATUS_INTR_BREAK' macro redefined [-Wmacro-redefined] +#define SP_STATUS_INTR_BREAK 0x040 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:165:9: note: previous definition is here +#define SP_STATUS_INTR_BREAK (1 << 6) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:12:9: warning: 'SP_STATUS_YIELD' macro redefined [-Wmacro-redefined] +#define SP_STATUS_YIELD 0x080 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:180:9: note: previous definition is here +#define SP_STATUS_YIELD SP_STATUS_SIG0 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:13:9: warning: 'SP_STATUS_YIELDED' macro redefined [-Wmacro-redefined] +#define SP_STATUS_YIELDED 0x100 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:183:9: note: previous definition is here +#define SP_STATUS_YIELDED SP_STATUS_SIG1 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:14:9: warning: 'SP_STATUS_TASKDONE' macro redefined [-Wmacro-redefined] +#define SP_STATUS_TASKDONE 0x200 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:186:9: note: previous definition is here +#define SP_STATUS_TASKDONE SP_STATUS_SIG2 + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:18:9: warning: 'SP_STATUS_SIG3' macro redefined [-Wmacro-redefined] +#define SP_STATUS_SIG3 0x400 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:169:9: note: previous definition is here +#define SP_STATUS_SIG3 (1 << 10) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:19:9: warning: 'SP_STATUS_SIG4' macro redefined [-Wmacro-redefined] +#define SP_STATUS_SIG4 0x800 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:170:9: note: previous definition is here +#define SP_STATUS_SIG4 (1 << 11) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:20:9: warning: 'SP_STATUS_SIG5' macro redefined [-Wmacro-redefined] +#define SP_STATUS_SIG5 0x1000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:171:9: note: previous definition is here +#define SP_STATUS_SIG5 (1 << 12) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:21:9: warning: 'SP_STATUS_SIG6' macro redefined [-Wmacro-redefined] +#define SP_STATUS_SIG6 0x2000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:172:9: note: previous definition is here +#define SP_STATUS_SIG6 (1 << 13) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:22:9: warning: 'SP_STATUS_SIG7' macro redefined [-Wmacro-redefined] +#define SP_STATUS_SIG7 0x4000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:173:9: note: previous definition is here +#define SP_STATUS_SIG7 (1 << 14) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:24:9: warning: 'SP_CLR_HALT' macro redefined [-Wmacro-redefined] +#define SP_CLR_HALT 0x00001 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:130:9: note: previous definition is here +#define SP_CLR_HALT (1 << 0) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:25:9: warning: 'SP_SET_HALT' macro redefined [-Wmacro-redefined] +#define SP_SET_HALT 0x00002 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:131:9: note: previous definition is here +#define SP_SET_HALT (1 << 1) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:26:9: warning: 'SP_CLR_BROKE' macro redefined [-Wmacro-redefined] +#define SP_CLR_BROKE 0x00004 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:132:9: note: previous definition is here +#define SP_CLR_BROKE (1 << 2) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:27:9: warning: 'SP_CLR_INTR' macro redefined [-Wmacro-redefined] +#define SP_CLR_INTR 0x00008 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:133:9: note: previous definition is here +#define SP_CLR_INTR (1 << 3) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:28:9: warning: 'SP_SET_INTR' macro redefined [-Wmacro-redefined] +#define SP_SET_INTR 0x00010 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:134:9: note: previous definition is here +#define SP_SET_INTR (1 << 4) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:29:9: warning: 'SP_CLR_SSTEP' macro redefined [-Wmacro-redefined] +#define SP_CLR_SSTEP 0x00020 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:135:9: note: previous definition is here +#define SP_CLR_SSTEP (1 << 5) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:30:9: warning: 'SP_SET_SSTEP' macro redefined [-Wmacro-redefined] +#define SP_SET_SSTEP 0x00040 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:136:9: note: previous definition is here +#define SP_SET_SSTEP (1 << 6) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:31:9: warning: 'SP_CLR_INTR_BREAK' macro redefined [-Wmacro-redefined] +#define SP_CLR_INTR_BREAK 0x00080 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:137:9: note: previous definition is here +#define SP_CLR_INTR_BREAK (1 << 7) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:32:9: warning: 'SP_SET_INTR_BREAK' macro redefined [-Wmacro-redefined] +#define SP_SET_INTR_BREAK 0x00100 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:138:9: note: previous definition is here +#define SP_SET_INTR_BREAK (1 << 8) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:33:9: warning: 'SP_CLR_SIG0' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG0 0x00200 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:139:9: note: previous definition is here +#define SP_CLR_SIG0 (1 << 9) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:34:9: warning: 'SP_SET_SIG0' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG0 0x00400 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:140:9: note: previous definition is here +#define SP_SET_SIG0 (1 << 10) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:35:9: warning: 'SP_CLR_SIG1' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG1 0x00800 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:141:9: note: previous definition is here +#define SP_CLR_SIG1 (1 << 11) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:36:9: warning: 'SP_SET_SIG1' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG1 0x01000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:142:9: note: previous definition is here +#define SP_SET_SIG1 (1 << 12) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:37:9: warning: 'SP_CLR_SIG2' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG2 0x02000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:143:9: note: previous definition is here +#define SP_CLR_SIG2 (1 << 13) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:38:9: warning: 'SP_SET_SIG2' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG2 0x04000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:144:9: note: previous definition is here +#define SP_SET_SIG2 (1 << 14) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:39:9: warning: 'SP_CLR_SIG3' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG3 0x08000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:145:9: note: previous definition is here +#define SP_CLR_SIG3 (1 << 15) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:40:9: warning: 'SP_SET_SIG3' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG3 0x10000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:146:9: note: previous definition is here +#define SP_SET_SIG3 (1 << 16) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:41:9: warning: 'SP_CLR_SIG4' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG4 0x20000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:147:9: note: previous definition is here +#define SP_CLR_SIG4 (1 << 17) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:42:9: warning: 'SP_SET_SIG4' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG4 0x40000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:148:9: note: previous definition is here +#define SP_SET_SIG4 (1 << 18) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:43:9: warning: 'SP_CLR_SIG5' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG5 0x80000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:149:9: note: previous definition is here +#define SP_CLR_SIG5 (1 << 19) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:44:9: warning: 'SP_SET_SIG5' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG5 0x100000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:150:9: note: previous definition is here +#define SP_SET_SIG5 (1 << 20) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:45:9: warning: 'SP_CLR_SIG6' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG6 0x200000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:151:9: note: previous definition is here +#define SP_CLR_SIG6 (1 << 21) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:46:9: warning: 'SP_SET_SIG6' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG6 0x400000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:152:9: note: previous definition is here +#define SP_SET_SIG6 (1 << 22) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:47:9: warning: 'SP_CLR_SIG7' macro redefined [-Wmacro-redefined] +#define SP_CLR_SIG7 0x800000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:153:9: note: previous definition is here +#define SP_CLR_SIG7 (1 << 23) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:8: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h:6: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/BenGui/UIWidgets.hpp:10: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultraship.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra.h:24: +/Users/christopher/GIT/2ship2harkinian/mm/../libultraship/include/libultraship/libultra/rsp.h:48:9: warning: 'SP_SET_SIG7' macro redefined [-Wmacro-redefined] +#define SP_SET_SIG7 0x1000000 + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/PR/rcp.h:154:9: note: previous definition is here +#define SP_SET_SIG7 (1 << 24) + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:5: +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:12:1: warning: typedef requires a name [-Wmissing-declarations] +typedef struct CAROUSEL_BUTTONS_TYPE { +^~~~~~~ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:70:35: warning: 'getEquipSlots' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] + virtual ArbitraryItemEquipSet getEquipSlots(PlayState* play, Input* input); + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:69:35: note: overridden virtual function is here + virtual ArbitraryItemEquipSet getEquipSlots(PlayState* play, Input* input); + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:71:18: warning: 'initItemEquips' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] + virtual void initItemEquips(ItemEquips* equips); + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:71:18: note: overridden virtual function is here + virtual void initItemEquips(ItemEquips* equips); + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/z64.h:7: +/Users/christopher/GIT/2ship2harkinian/mm/include/libc/math.h:4:9: warning: 'M_PI' macro redefined [-Wmacro-redefined] +#define M_PI 3.14159265358979323846f + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/math.h:695:9: note: previous definition is here +#define M_PI 3.14159265358979323846264338327950288 /* pi */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/z64.h:7: +/Users/christopher/GIT/2ship2harkinian/mm/include/libc/math.h:5:9: warning: 'M_SQRT2' macro redefined [-Wmacro-redefined] +#define M_SQRT2 1.41421356237309504880f + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/math.h:701:9: note: previous definition is here +#define M_SQRT2 1.41421356237309504880168872420969808 /* sqrt(2) */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/z64.h:7: +/Users/christopher/GIT/2ship2harkinian/mm/include/libc/math.h:6:9: warning: 'M_SQRT1_2' macro redefined [-Wmacro-redefined] +#define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */ + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/math.h:702:9: note: previous definition is here +#define M_SQRT1_2 0.707106781186547524400844362104849039 /* 1/sqrt(2) */ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/include/z64.h:7: +/Users/christopher/GIT/2ship2harkinian/mm/include/libc/math.h:7:9: warning: 'FLT_MAX' macro redefined [-Wmacro-redefined] +#define FLT_MAX 340282346638528859811704183484516925440.0f + ^ +/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/float.h:124:9: note: previous definition is here +#define FLT_MAX __FLT_MAX__ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:249:17: warning: expression result unused [-Wunused-value] + play->state.frames; + ~~~~~~~~~~~ ^~~~~~ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:275:34: warning: comparison of integers of different signs: 'int16_t' (aka 'short') and 'size_type' (aka 'unsigned long') [-Wsign-compare] + while (selectedIndex >= this->carouselSlots.size()) { + ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:295:38: warning: comparison of integers of different signs: 'int16_t' (aka 'short') and 'size_type' (aka 'unsigned long') [-Wsign-compare] + while (selectedIndex >= this->carouselSlots.size()) { + ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] + auto config = INDEXED_CAROUSELS[carouselNumber - 1]; + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:53: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:34:19: note: expanded from macro 'CAROUSEL1' +#define CAROUSEL1 MAKE_CAROUSEL_BUTTONS(1) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:24:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Use Carousel Item " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:53: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:34:19: note: expanded from macro 'CAROUSEL1' +#define CAROUSEL1 MAKE_CAROUSEL_BUTTONS(1) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:25:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Left " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:53: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:34:19: note: expanded from macro 'CAROUSEL1' +#define CAROUSEL1 MAKE_CAROUSEL_BUTTONS(1) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:26:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Right " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:63: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:35:19: note: expanded from macro 'CAROUSEL2' +#define CAROUSEL2 MAKE_CAROUSEL_BUTTONS(2) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:24:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Use Carousel Item " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:63: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:35:19: note: expanded from macro 'CAROUSEL2' +#define CAROUSEL2 MAKE_CAROUSEL_BUTTONS(2) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:25:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Left " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:63: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:35:19: note: expanded from macro 'CAROUSEL2' +#define CAROUSEL2 MAKE_CAROUSEL_BUTTONS(2) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:26:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Right " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:73: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:36:19: note: expanded from macro 'CAROUSEL3' +#define CAROUSEL3 MAKE_CAROUSEL_BUTTONS(3) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:24:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Use Carousel Item " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:73: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:36:19: note: expanded from macro 'CAROUSEL3' +#define CAROUSEL3 MAKE_CAROUSEL_BUTTONS(3) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:25:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Left " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:73: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:36:19: note: expanded from macro 'CAROUSEL3' +#define CAROUSEL3 MAKE_CAROUSEL_BUTTONS(3) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:26:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Right " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:83: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:37:19: note: expanded from macro 'CAROUSEL4' +#define CAROUSEL4 MAKE_CAROUSEL_BUTTONS(4) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:24:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Use Carousel Item " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:83: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:37:19: note: expanded from macro 'CAROUSEL4' +#define CAROUSEL4 MAKE_CAROUSEL_BUTTONS(4) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:25:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Left " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:83: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:37:19: note: expanded from macro 'CAROUSEL4' +#define CAROUSEL4 MAKE_CAROUSEL_BUTTONS(4) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:26:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Right " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:93: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:38:19: note: expanded from macro 'CAROUSEL5' +#define CAROUSEL5 MAKE_CAROUSEL_BUTTONS(5) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:24:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Use Carousel Item " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:93: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:38:19: note: expanded from macro 'CAROUSEL5' +#define CAROUSEL5 MAKE_CAROUSEL_BUTTONS(5) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:25:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Left " #num,\ + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:366:19: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:40:93: note: expanded from macro 'INDEXED_CAROUSELS' +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:38:19: note: expanded from macro 'CAROUSEL5' +#define CAROUSEL5 MAKE_CAROUSEL_BUTTONS(5) + ^ +/Users/christopher/GIT/2ship2harkinian/mm/include/intent-control-types.h:26:5: note: expanded from macro 'MAKE_CAROUSEL_BUTTONS' + "Swap Carousel Right " #num,\ + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:4: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/chrono:769: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/convert_to_tm.h:22: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/statically_widen.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/concepts.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/format_parse_context.h:16: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/string_view:1059: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/algorithm:1778: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__algorithm/inplace_merge.h:28: +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:68:5: warning: delete called on non-final 'ArbitraryItemSlotsListerOptions' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor] + delete __ptr; + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:300:7: note: in instantiation of member function 'std::default_delete::operator()' requested here + __ptr_.second()(__tmp); + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:266:75: note: in instantiation of member function 'std::unique_ptr::reset' requested here + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() { reset(); } + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/shared_ptr.h:514:25: note: in instantiation of member function 'std::unique_ptr::~unique_ptr' requested here + unique_ptr<_Yp> __hold(__p); + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:57:61: note: in instantiation of function template specialization 'std::shared_ptr::shared_ptr' requested here + std::shared_ptr options{ new ArbitraryItemSlotsListerOptions() }; + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:4: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/chrono:769: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/convert_to_tm.h:22: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/statically_widen.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/concepts.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/format_parse_context.h:16: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/string_view:1059: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/algorithm:1778: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__algorithm/inplace_merge.h:28: +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:68:5: warning: delete called on non-final 'ArbitraryItemSlotManager' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor] + delete __ptr; + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:300:7: note: in instantiation of member function 'std::default_delete::operator()' requested here + __ptr_.second()(__tmp); + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:266:75: note: in instantiation of member function 'std::unique_ptr::reset' requested here + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() { reset(); } + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/shared_ptr.h:514:25: note: in instantiation of member function 'std::unique_ptr::~unique_ptr' requested here + unique_ptr<_Yp> __hold(__p); + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:60:9: note: in instantiation of function template specialization 'std::shared_ptr::shared_ptr' requested here + std::shared_ptr{ new ArbitraryItemSlotManager("1", ARB_EQUIP_ITEM_1, this) }, + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:4: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/chrono:769: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/convert_to_tm.h:22: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/statically_widen.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/concepts.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/format_parse_context.h:16: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/string_view:1059: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/algorithm:1778: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__algorithm/inplace_merge.h:28: +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:68:5: warning: delete called on non-final 'CarouselItemSlotManager' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor] + delete __ptr; + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:300:7: note: in instantiation of member function 'std::default_delete::operator()' requested here + __ptr_.second()(__tmp); + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:266:75: note: in instantiation of member function 'std::unique_ptr::reset' requested here + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() { reset(); } + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/shared_ptr.h:514:25: note: in instantiation of member function 'std::unique_ptr::~unique_ptr' requested here + unique_ptr<_Yp> __hold(__p); + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:219:28: note: in instantiation of function template specialization 'std::shared_ptr::shared_ptr' requested here + auto newSlot = std::shared_ptr{ new CarouselItemSlotManager( + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:4: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/chrono:769: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/convert_to_tm.h:22: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/statically_widen.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/concepts.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/format_parse_context.h:16: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/string_view:1059: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/algorithm:1778: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__algorithm/inplace_merge.h:28: +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:68:5: warning: delete called on non-final 'CarouselListerOptions' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor] + delete __ptr; + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:300:7: note: in instantiation of member function 'std::default_delete::operator()' requested here + __ptr_.second()(__tmp); + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:266:75: note: in instantiation of member function 'std::unique_ptr::reset' requested here + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() { reset(); } + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/shared_ptr.h:514:25: note: in instantiation of member function 'std::unique_ptr::~unique_ptr' requested here + unique_ptr<_Yp> __hold(__p); + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:232:21: note: in instantiation of function template specialization 'std::shared_ptr::shared_ptr' requested here + this->options = std::shared_ptr(new CarouselListerOptions()); + ^ +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:1: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h:4: +In file included from /Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h:4: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/chrono:769: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/convert_to_tm.h:22: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__chrono/statically_widen.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/concepts.h:17: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__format/format_parse_context.h:16: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/string_view:1059: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/algorithm:1778: +In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__algorithm/inplace_merge.h:28: +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:68:5: warning: delete called on non-final 'CarouselItemSlotLister' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor] + delete __ptr; + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:300:7: note: in instantiation of member function 'std::default_delete::operator()' requested here + __ptr_.second()(__tmp); + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/unique_ptr.h:266:75: note: in instantiation of member function 'std::unique_ptr::reset' requested here + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() { reset(); } + ^ +/Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/c++/v1/__memory/shared_ptr.h:514:25: note: in instantiation of member function 'std::unique_ptr::~unique_ptr' requested here + unique_ptr<_Yp> __hold(__p); + ^ +/Users/christopher/GIT/2ship2harkinian/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp:368:22: note: in instantiation of function template specialization 'std::shared_ptr::shared_ptr' requested here + auto newLister = std::shared_ptr{ + ^ +108 warnings generated. +[3/3] : && /Library/Developer/CommandLineTools/usr/bin/c++ -g -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk -mmacosx-version-min=10.15 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -pthread mm/CMakeFiles/2ship.dir/2s2h/BenPort.cpp.o mm/CMakeFiles/2ship.dir/2s2h/framebuffer_effects.c.o mm/CMakeFiles/2ship.dir/2s2h/gu_pc.c.o mm/CMakeFiles/2ship.dir/2s2h/mixer.c.o mm/CMakeFiles/2ship.dir/2s2h/z_message_OTR.cpp.o mm/CMakeFiles/2ship.dir/2s2h/z_play_2SH.cpp.o mm/CMakeFiles/2ship.dir/2s2h/z_scene_2SH.cpp.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/ActorViewer.cpp.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/BetterMapSelect.c.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/CollisionViewer.cpp.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/DebugConsole.cpp.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/DeveloperTools.cpp.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/EventLog.cpp.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/SaveEditor.cpp.o mm/CMakeFiles/2ship.dir/2s2h/DeveloperTools/WarpPoint.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/MultipleConfigs.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/SlotState.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/ArbitraryEquipmentSlots/guis/CarouselGUI.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Camera/CameraInterpolationFixes.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Camera/DebugCam.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Camera/FreeLook.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cheats/Infinite.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cheats/LongerFlowerGlide.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cheats/MoonJump.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cheats/UnbreakableRazorSword.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cheats/UnrestrictedItems.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/Cutscenes.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/HideTitleCards.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/MiscInteractions/SkipDekuSalesman.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/MiscInteractions/SkipScarecrowDance.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/MiscInteractions/SkipTatlInterrupts.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/SkipEntranceCutscenes.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/SkipIntroSequence.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/SkipToFileSelect.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cutscenes/StoryCutscenes/SkipClockTowerOpen.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Cycle/EndOfCycle.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Dialogue/FastBankSelection.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Enhancements.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Equipment/SkipMagicArrowEquip.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/FrameInterpolation/FrameInterpolation.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/GameInteractor/GameInteractor.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/GfxPatcher/AuthenticGfxPatches.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Graphics/DisableBlackBars.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Graphics/MotionBlur.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Graphics/PlayAsKafei.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Graphics/TextBasedClock.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Masks/BlastMaskKeg.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Masks/FastTransformation.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Masks/FierceDeityAnywhere.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Masks/NoBlastMaskCooldown.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Minigames/AlwaysWinDoggyRace.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Modes/TimeMovesWhenYouMove.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Player/ClimbSpeed.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Player/FastFlowerLaunch.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Player/InstantPutaway.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Restorations/FlipHopVariable.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Restorations/PowerCrouchStab.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Restorations/SideRoll.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Restorations/TatlISG.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Saving/SavingEnhancements.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Enhancements/Songs/EnableSunsSong.cpp.o mm/CMakeFiles/2ship.dir/2s2h/BenGui/BenGui.cpp.o mm/CMakeFiles/2ship.dir/2s2h/BenGui/BenMenuBar.cpp.o mm/CMakeFiles/2ship.dir/2s2h/BenGui/HudEditor.cpp.o mm/CMakeFiles/2ship.dir/2s2h/BenGui/UIWidgets.cpp.o mm/CMakeFiles/2ship.dir/2s2h/SaveManager/BinarySaveConverter.cpp.o mm/CMakeFiles/2ship.dir/2s2h/SaveManager/Migrations/1.cpp.o mm/CMakeFiles/2ship.dir/2s2h/SaveManager/Migrations/2.cpp.o mm/CMakeFiles/2ship.dir/2s2h/SaveManager/Migrations/3.cpp.o mm/CMakeFiles/2ship.dir/2s2h/SaveManager/Migrations/4.cpp.o mm/CMakeFiles/2ship.dir/2s2h/SaveManager/Migrations/5.cpp.o mm/CMakeFiles/2ship.dir/2s2h/SaveManager/SaveManager.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Extractor/Extract.cpp.o mm/CMakeFiles/2ship.dir/2s2h/Extractor/FastCrc32C.c.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/AnimationFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/ArrayFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/AudioSampleFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/AudioSequenceFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/AudioSoundFontFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/BackgroundFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/CollisionHeaderFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/CutsceneFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/KeyFrameFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/PathFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/PlayerAnimationFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/SceneFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/SkeletonFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/SkeletonLimbFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/TextMMFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/TextureAnimationFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/EndMarkerFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SceneCommandFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetActorCutsceneListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetActorListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetAlternateHeadersFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetAnimatedMaterialListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetCameraSettingsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetCollisionHeaderFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetCsCameraFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetCutscenesFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetEchoSettingsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetEntranceListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetExitListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetLightListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetLightingSettingsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetMeshFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetMinimapChestsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetMinimapListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetObjectListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetPathwaysFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetRoomBehaviorFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetRoomListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetSkyboxModifierFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetSkyboxSettingsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetSoundSettingsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetSpecialObjectsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetStartPositionListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetTimeSettingsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetTransitionActorListFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/importer/scenecommand/SetWindSettingsFactory.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/Animation.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/Array.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/AudioSample.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/AudioSequence.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/AudioSoundFont.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/Background.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/CollisionHeader.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/Cutscene.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/KeyFrame.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/Path.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/PlayerAnimation.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/Scene.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/Skeleton.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/SkeletonLimb.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/TextMM.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/TextureAnimation.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/EndMarker.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetActorCutsceneList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetActorList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetAlternateHeaders.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetAnimatedMaterialList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetCameraSettings.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetCollisionHeader.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetCsCamera.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetCutscenes.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetEchoSettings.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetEntranceList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetExitList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetLightList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetLightingSettings.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetMesh.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetMinimapChests.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetMinimapList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetObjectList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetPathways.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetRoomBehavior.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetRoomList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetSkyboxModifier.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetSkyboxSettings.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetSoundSettings.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetSpecialObjects.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetStartPositionList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetTimeSettings.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetTransitionActorList.cpp.o mm/CMakeFiles/2ship.dir/2s2h/resource/type/scenecommand/SetWindSettings.cpp.o mm/CMakeFiles/2ship.dir/src/audio/code_8019AF00.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/aisetnextbuf.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/data.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/dcache.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/effects.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/heap.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/load.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/playback.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/seqplayer.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/synthesis.c.o mm/CMakeFiles/2ship.dir/src/audio/lib/thread.c.o mm/CMakeFiles/2ship.dir/src/audio/sequence.c.o mm/CMakeFiles/2ship.dir/src/audio/session_config.c.o mm/CMakeFiles/2ship.dir/src/audio/sfx.c.o mm/CMakeFiles/2ship.dir/src/audio/sfx_params.c.o mm/CMakeFiles/2ship.dir/src/audio/voice_external.c.o mm/CMakeFiles/2ship.dir/src/audio/voice_internal.c.o mm/CMakeFiles/2ship.dir/src/boot/CIC6105.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/__osMalloc.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/__osMemcpy.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/__osMemset.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/__osStrcmp.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/__osStrcpy.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/debug.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/fmodf.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/gfxprint.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/loadfragment.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/loadfragment2.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/math64.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/mtxuty-cvt.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/padsetup.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/padutils.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/printutils.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/rand.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/rcp_utils.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/sleep.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/sprintf.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/stackcheck.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/system_heap.c.o mm/CMakeFiles/2ship.dir/src/boot/O2/system_malloc.c.o mm/CMakeFiles/2ship.dir/src/boot/boot_main.c.o mm/CMakeFiles/2ship.dir/src/boot/build.c.o mm/CMakeFiles/2ship.dir/src/boot/carthandle.c.o mm/CMakeFiles/2ship.dir/src/boot/fault.c.o mm/CMakeFiles/2ship.dir/src/boot/fault_drawer.c.o mm/CMakeFiles/2ship.dir/src/boot/idle.c.o mm/CMakeFiles/2ship.dir/src/boot/irqmgr.c.o mm/CMakeFiles/2ship.dir/src/boot/syncprintf.c.o mm/CMakeFiles/2ship.dir/src/boot/viconfig.c.o mm/CMakeFiles/2ship.dir/src/boot/yaz0.c.o mm/CMakeFiles/2ship.dir/src/boot/z_std_dma.c.o mm/CMakeFiles/2ship.dir/src/buffers/gfxpools.c.o mm/CMakeFiles/2ship.dir/src/buffers/gfxstack.c.o mm/CMakeFiles/2ship.dir/src/buffers/gfxyield.c.o mm/CMakeFiles/2ship.dir/src/buffers/heaps.c.o mm/CMakeFiles/2ship.dir/src/code/PreRender.c.o mm/CMakeFiles/2ship.dir/src/code/TwoHeadArena.c.o mm/CMakeFiles/2ship.dir/src/code/TwoHeadGfxArena.c.o mm/CMakeFiles/2ship.dir/src/code/audio_stop_all_sfx.c.o mm/CMakeFiles/2ship.dir/src/code/audio_thread_manager.c.o mm/CMakeFiles/2ship.dir/src/code/c_keyframe.c.o mm/CMakeFiles/2ship.dir/src/code/code_800E8EA0.c.o mm/CMakeFiles/2ship.dir/src/code/code_8010C1B0.c.o mm/CMakeFiles/2ship.dir/src/code/code_8012EC80.c.o mm/CMakeFiles/2ship.dir/src/code/code_80183070.c.o mm/CMakeFiles/2ship.dir/src/code/cutscene_camera.c.o mm/CMakeFiles/2ship.dir/src/code/flg_set.c.o mm/CMakeFiles/2ship.dir/src/code/game.c.o mm/CMakeFiles/2ship.dir/src/code/gamealloc.c.o mm/CMakeFiles/2ship.dir/src/code/graph.c.o mm/CMakeFiles/2ship.dir/src/code/graphalloc.c.o mm/CMakeFiles/2ship.dir/src/code/jpegdecoder.c.o mm/CMakeFiles/2ship.dir/src/code/jpegutils.c.o mm/CMakeFiles/2ship.dir/src/code/listalloc.c.o mm/CMakeFiles/2ship.dir/src/code/main.c.o mm/CMakeFiles/2ship.dir/src/code/object_table.c.o mm/CMakeFiles/2ship.dir/src/code/padmgr.c.o mm/CMakeFiles/2ship.dir/src/code/sched.c.o mm/CMakeFiles/2ship.dir/src/code/speed_meter.c.o mm/CMakeFiles/2ship.dir/src/code/stubs.c.o mm/CMakeFiles/2ship.dir/src/code/su_mtx.c.o mm/CMakeFiles/2ship.dir/src/code/sys_cfb.c.o mm/CMakeFiles/2ship.dir/src/code/sys_cmpdma.c.o mm/CMakeFiles/2ship.dir/src/code/sys_flashrom.c.o mm/CMakeFiles/2ship.dir/src/code/sys_initial_check.c.o mm/CMakeFiles/2ship.dir/src/code/sys_math.c.o mm/CMakeFiles/2ship.dir/src/code/sys_math3d.c.o mm/CMakeFiles/2ship.dir/src/code/sys_math_atan.c.o mm/CMakeFiles/2ship.dir/src/code/sys_matrix.c.o mm/CMakeFiles/2ship.dir/src/code/sys_rumble.c.o mm/CMakeFiles/2ship.dir/src/code/sys_slowly.c.o mm/CMakeFiles/2ship.dir/src/code/sys_ucode.c.o mm/CMakeFiles/2ship.dir/src/code/title_setup.c.o mm/CMakeFiles/2ship.dir/src/code/z_DLF.c.o mm/CMakeFiles/2ship.dir/src/code/z_actor.c.o mm/CMakeFiles/2ship.dir/src/code/z_actor_dlftbls.c.o mm/CMakeFiles/2ship.dir/src/code/z_bg_collect.c.o mm/CMakeFiles/2ship.dir/src/code/z_bg_item.c.o mm/CMakeFiles/2ship.dir/src/code/z_bgcheck.c.o mm/CMakeFiles/2ship.dir/src/code/z_camera.c.o mm/CMakeFiles/2ship.dir/src/code/z_collision_btltbls.c.o mm/CMakeFiles/2ship.dir/src/code/z_collision_check.c.o mm/CMakeFiles/2ship.dir/src/code/z_common_data.c.o mm/CMakeFiles/2ship.dir/src/code/z_construct.c.o mm/CMakeFiles/2ship.dir/src/code/z_debug.c.o mm/CMakeFiles/2ship.dir/src/code/z_debug_display.c.o mm/CMakeFiles/2ship.dir/src/code/z_debug_mode.c.o mm/CMakeFiles/2ship.dir/src/code/z_demo.c.o mm/CMakeFiles/2ship.dir/src/code/z_draw.c.o mm/CMakeFiles/2ship.dir/src/code/z_eff_blure.c.o mm/CMakeFiles/2ship.dir/src/code/z_eff_footmark.c.o mm/CMakeFiles/2ship.dir/src/code/z_eff_shield_particle.c.o mm/CMakeFiles/2ship.dir/src/code/z_eff_spark.c.o mm/CMakeFiles/2ship.dir/src/code/z_eff_ss_dead.c.o mm/CMakeFiles/2ship.dir/src/code/z_eff_tire_mark.c.o mm/CMakeFiles/2ship.dir/src/code/z_effect.c.o mm/CMakeFiles/2ship.dir/src/code/z_effect_soft_sprite.c.o mm/CMakeFiles/2ship.dir/src/code/z_effect_soft_sprite_dlftbls.c.o mm/CMakeFiles/2ship.dir/src/code/z_effect_soft_sprite_old_init.c.o mm/CMakeFiles/2ship.dir/src/code/z_elf_message.c.o mm/CMakeFiles/2ship.dir/src/code/z_en_a_keep.c.o mm/CMakeFiles/2ship.dir/src/code/z_en_hy_code.c.o mm/CMakeFiles/2ship.dir/src/code/z_en_item00.c.o mm/CMakeFiles/2ship.dir/src/code/z_env_flags.c.o mm/CMakeFiles/2ship.dir/src/code/z_eventmgr.c.o mm/CMakeFiles/2ship.dir/src/code/z_face_reaction.c.o mm/CMakeFiles/2ship.dir/src/code/z_fbdemo.c.o mm/CMakeFiles/2ship.dir/src/code/z_fbdemo_circle.c.o mm/CMakeFiles/2ship.dir/src/code/z_fbdemo_dlftbls.c.o mm/CMakeFiles/2ship.dir/src/code/z_fbdemo_fade.c.o mm/CMakeFiles/2ship.dir/src/code/z_fcurve_data.c.o mm/CMakeFiles/2ship.dir/src/code/z_fcurve_data_skelanime.c.o mm/CMakeFiles/2ship.dir/src/code/z_fireobj.c.o mm/CMakeFiles/2ship.dir/src/code/z_game_dlftbls.c.o mm/CMakeFiles/2ship.dir/src/code/z_game_over.c.o mm/CMakeFiles/2ship.dir/src/code/z_horse.c.o mm/CMakeFiles/2ship.dir/src/code/z_jpeg.c.o mm/CMakeFiles/2ship.dir/src/code/z_kaleido_manager.c.o mm/CMakeFiles/2ship.dir/src/code/z_kaleido_scope_call.c.o mm/CMakeFiles/2ship.dir/src/code/z_kaleido_setup.c.o mm/CMakeFiles/2ship.dir/src/code/z_kanfont.c.o mm/CMakeFiles/2ship.dir/src/code/z_kankyo.c.o mm/CMakeFiles/2ship.dir/src/code/z_lib.c.o mm/CMakeFiles/2ship.dir/src/code/z_lifemeter.c.o mm/CMakeFiles/2ship.dir/src/code/z_lights.c.o mm/CMakeFiles/2ship.dir/src/code/z_malloc.c.o mm/CMakeFiles/2ship.dir/src/code/z_map_data.c.o mm/CMakeFiles/2ship.dir/src/code/z_map_disp.c.o mm/CMakeFiles/2ship.dir/src/code/z_map_exp.c.o mm/CMakeFiles/2ship.dir/src/code/z_message.c.o mm/CMakeFiles/2ship.dir/src/code/z_message_nes.c.o mm/CMakeFiles/2ship.dir/src/code/z_message_staff.c.o mm/CMakeFiles/2ship.dir/src/code/z_msgevent.c.o mm/CMakeFiles/2ship.dir/src/code/z_nmi_buff.c.o mm/CMakeFiles/2ship.dir/src/code/z_olib.c.o mm/CMakeFiles/2ship.dir/src/code/z_overlay.c.o mm/CMakeFiles/2ship.dir/src/code/z_parameter.c.o mm/CMakeFiles/2ship.dir/src/code/z_path.c.o mm/CMakeFiles/2ship.dir/src/code/z_pause.c.o mm/CMakeFiles/2ship.dir/src/code/z_play.c.o mm/CMakeFiles/2ship.dir/src/code/z_play_hireso.c.o mm/CMakeFiles/2ship.dir/src/code/z_player_call.c.o mm/CMakeFiles/2ship.dir/src/code/z_player_lib.c.o mm/CMakeFiles/2ship.dir/src/code/z_prenmi.c.o mm/CMakeFiles/2ship.dir/src/code/z_quake.c.o mm/CMakeFiles/2ship.dir/src/code/z_rcp.c.o mm/CMakeFiles/2ship.dir/src/code/z_room.c.o mm/CMakeFiles/2ship.dir/src/code/z_rumble.c.o mm/CMakeFiles/2ship.dir/src/code/z_scene.c.o mm/CMakeFiles/2ship.dir/src/code/z_scene_proc.c.o mm/CMakeFiles/2ship.dir/src/code/z_scene_table.c.o mm/CMakeFiles/2ship.dir/src/code/z_schedule.c.o mm/CMakeFiles/2ship.dir/src/code/z_shrink_window.c.o mm/CMakeFiles/2ship.dir/src/code/z_skelanime.c.o mm/CMakeFiles/2ship.dir/src/code/z_skin.c.o mm/CMakeFiles/2ship.dir/src/code/z_skin_awb.c.o mm/CMakeFiles/2ship.dir/src/code/z_skin_matrix.c.o mm/CMakeFiles/2ship.dir/src/code/z_snap.c.o mm/CMakeFiles/2ship.dir/src/code/z_sound_source.c.o mm/CMakeFiles/2ship.dir/src/code/z_sram_NES.c.o mm/CMakeFiles/2ship.dir/src/code/z_sub_s.c.o mm/CMakeFiles/2ship.dir/src/code/z_view.c.o mm/CMakeFiles/2ship.dir/src/code/z_vimode.c.o mm/CMakeFiles/2ship.dir/src/code/z_viscvg.c.o mm/CMakeFiles/2ship.dir/src/code/z_visfbuf.c.o mm/CMakeFiles/2ship.dir/src/code/z_vismono.c.o mm/CMakeFiles/2ship.dir/src/code/z_viszbuf.c.o mm/CMakeFiles/2ship.dir/src/code/z_vr_box.c.o mm/CMakeFiles/2ship.dir/src/code/z_vr_box_draw.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Astr_Bombwall/z_bg_astr_bombwall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Botihasira/z_bg_botihasira.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ctower_Rot/z_bg_ctower_rot.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Danpei_Movebg/z_bg_danpei_movebg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Dblue_Balance/z_bg_dblue_balance.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Dblue_Elevator/z_bg_dblue_elevator.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Dblue_Waterfall/z_bg_dblue_waterfall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Dkjail_Ivy/z_bg_dkjail_ivy.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_F40_Block/z_bg_f40_block.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_F40_Flift/z_bg_f40_flift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_F40_Switch/z_bg_f40_switch.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_F40_Swlift/z_bg_f40_swlift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Fire_Wall/z_bg_fire_wall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Fu_Kaiten/z_bg_fu_kaiten.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Fu_Mizu/z_bg_fu_mizu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Goron_Oyu/z_bg_goron_oyu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Haka_Bombwall/z_bg_haka_bombwall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Haka_Curtain/z_bg_haka_curtain.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Haka_Tomb/z_bg_haka_tomb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Hakugin_Bombwall/z_bg_hakugin_bombwall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Hakugin_Elvpole/z_bg_hakugin_elvpole.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Icefloe/z_bg_icefloe.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Icicle/z_bg_icicle.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikana_Block/z_bg_ikana_block.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikana_Bombwall/z_bg_ikana_bombwall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikana_Dharma/z_bg_ikana_dharma.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikana_Mirror/z_bg_ikana_mirror.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikana_Ray/z_bg_ikana_ray.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikana_Shutter/z_bg_ikana_shutter.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Iknin_Susceil/z_bg_iknin_susceil.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ikninside/z_bg_ikninside.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Inibs_Movebg/z_bg_inibs_movebg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Keikoku_Saku/z_bg_keikoku_saku.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Keikoku_Spr/z_bg_keikoku_spr.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Kin2_Bombwall/z_bg_kin2_bombwall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Kin2_Picture/z_bg_kin2_picture.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Kin2_Shelf/z_bg_kin2_shelf.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Ladder/z_bg_ladder.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Last_Bwall/z_bg_last_bwall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Lbfshot/z_bg_lbfshot.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Lotus/z_bg_lotus.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Market_Step/z_bg_market_step.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Mbar_Chair/z_bg_mbar_chair.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Sinkai_Kabe/z_bg_sinkai_kabe.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Spout_Fire/z_bg_spout_fire.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_01/z_boss_01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_02/z_boss_02.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_03/z_boss_03.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_04/z_boss_04.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_05/z_boss_05.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_06/z_boss_06.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_07/z_boss_07.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Boss_Hakugin/z_boss_hakugin.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Demo_Getitem/z_demo_getitem.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Ah/z_dm_ah.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Al/z_dm_al.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_An/z_dm_an.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Bal/z_dm_bal.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char00/z_dm_char00.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char03/z_dm_char03.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char04/z_dm_char04.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char05/z_dm_char05.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char06/z_dm_char06.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char07/z_dm_char07.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Char09/z_dm_char09.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Gm/z_dm_gm.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Hina/z_dm_hina.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Opstage/z_dm_opstage.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Statue/z_dm_statue.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Door_Ana/z_door_ana.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Door_Spiral/z_door_spiral.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Eff_Change/z_eff_change.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Eff_Stk/z_eff_stk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Eff_Zoraband/z_eff_zoraband.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Elf_Msg3/z_elf_msg3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Elf_Msg4/z_elf_msg4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Elf_Msg5/z_elf_msg5.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ah/z_en_ah.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Al/z_en_al.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Am/z_en_am.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_An/z_en_an.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_And/z_en_and.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ani/z_en_ani.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Az/z_en_az.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Baba/z_en_baba.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bal/z_en_bal.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bat/z_en_bat.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bb/z_en_bb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bee/z_en_bee.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bh/z_en_bh.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Boj_01/z_en_boj_01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Boj_02/z_en_boj_02.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Boj_03/z_en_boj_03.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Boj_04/z_en_boj_04.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Boj_05/z_en_boj_05.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bom/z_en_bom.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bombal/z_en_bombal.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Boom/z_en_boom.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Box/z_en_box.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bu/z_en_bu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Bubble/z_en_bubble.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Butte/z_en_butte.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Cha/z_en_cha.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Cow/z_en_cow.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Crow/z_en_crow.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dai/z_en_dai.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Death/z_en_death.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dg/z_en_dg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dnb/z_en_dnb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dnk/z_en_dnk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dno/z_en_dno.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dns/z_en_dns.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Door/z_en_door.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Door_Etc/z_en_door_etc.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Drs/z_en_drs.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ds2n/z_en_ds2n.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dt/z_en_dt.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Egol/z_en_egol.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Elf/z_en_elf.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Encount3/z_en_encount3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ending_Hero6/z_en_ending_hero6.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Estone/z_en_estone.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fall/z_en_fall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fall2/z_en_fall2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Famos/z_en_famos.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fg/z_en_fg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Firefly2/z_en_firefly2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fish/z_en_fish.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fr/z_en_fr.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fu/z_en_fu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fu_Kago/z_en_fu_kago.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fu_Mato/z_en_fu_mato.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Fz/z_en_fz.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gamelupy/z_en_gamelupy.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Geg/z_en_geg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gg/z_en_gg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Giant/z_en_giant.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_GirlA/z_en_girla.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gk/z_en_gk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gm/z_en_gm.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Go/z_en_go.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Gs/z_en_gs.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hakurock/z_en_hakurock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hanabi/z_en_hanabi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hata/z_en_hata.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Heishi/z_en_heishi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hg/z_en_hg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hit_Tag/z_en_hit_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Holl/z_en_holl.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Horse/z_en_horse.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hs/z_en_hs.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ig/z_en_ig.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ik/z_en_ik.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_In/z_en_in.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Insect/z_en_insect.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Invadepoh_Demo/z_en_invadepoh_demo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Invisible_Ruppe/z_en_invisible_ruppe.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ja/z_en_ja.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Jg/z_en_jg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Js/z_en_js.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Jso/z_en_jso.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kame/z_en_kame.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kitan/z_en_kitan.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Knight/z_en_knight.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Light/z_en_light.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mag/z_en_mag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Maruta/z_en_maruta.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Minideath/z_en_minideath.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mk/z_en_mk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mm/z_en_mm.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mnk/z_en_mnk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ms/z_en_ms.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Muto/z_en_muto.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Nb/z_en_nb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Neo_Reeba/z_en_neo_reeba.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Nimotsu/z_en_nimotsu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Niw/z_en_niw.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Nnh/z_en_nnh.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Onpuman/z_en_onpuman.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Osk/z_en_osk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Osn/z_en_osn.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ot/z_en_ot.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Owl/z_en_owl.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Paper/z_en_paper.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Part/z_en_part.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Pm/z_en_pm.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Poh/z_en_poh.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Pp/z_en_pp.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Pr/z_en_pr.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Prz/z_en_prz.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Pst/z_en_pst.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Raf/z_en_raf.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Rail_Skb/z_en_rail_skb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Rat/z_en_rat.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Rd/z_en_rd.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Rg/z_en_rg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Rr/z_en_rr.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Rsn/z_en_rsn.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ru/z_en_ru.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Rz/z_en_rz.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sb/z_en_sb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Scopecoin/z_en_scopecoin.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sda/z_en_sda.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Shn/z_en_shn.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Si/z_en_si.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Skb/z_en_skb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Slime/z_en_slime.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Snowwd/z_en_snowwd.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_St/z_en_st.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sth/z_en_sth.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sth2/z_en_sth2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Stream/z_en_stream.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Sw/z_en_sw.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Syateki_Crow/z_en_syateki_crow.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tab/z_en_tab.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tag_Obj/z_en_tag_obj.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Takaraya/z_en_takaraya.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Talk/z_en_talk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tanron5/z_en_tanron5.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tanron6/z_en_tanron6.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Test/z_en_test.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Test2/z_en_test2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Test3/z_en_test3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Test4/z_en_test4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Test5/z_en_test5.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Test6/z_en_test6.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Test7/z_en_test7.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tg/z_en_tg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tite/z_en_tite.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tk/z_en_tk.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Torch/z_en_torch.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Toto/z_en_toto.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Trt/z_en_trt.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tru/z_en_tru.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Twig/z_en_twig.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Vm/z_en_vm.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Wdhand/z_en_wdhand.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Wf/z_en_wf.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Yb/z_en_yb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zo/z_en_zo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zob/z_en_zob.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zod/z_en_zod.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zog/z_en_zog.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zos/z_en_zos.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zot/z_en_zot.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zov/z_en_zov.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_En_Zow/z_en_zow.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Mir_Ray2/z_mir_ray2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Mir_Ray3/z_mir_ray3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Armos/z_obj_armos.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Bell/z_obj_bell.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Bigicicle/z_obj_bigicicle.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Boat/z_obj_boat.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Boyo/z_obj_boyo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Chikuwa/z_obj_chikuwa.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Danpeilift/z_obj_danpeilift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Demo/z_obj_demo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Dhouse/z_obj_dhouse.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Dora/z_obj_dora.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Dowsing/z_obj_dowsing.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Driftice/z_obj_driftice.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Ending/z_obj_ending.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Entotu/z_obj_entotu.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Funen/z_obj_funen.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Grass_Unit/z_obj_grass_unit.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hakaisi/z_obj_hakaisi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hariko/z_obj_hariko.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_HsStump/z_obj_hsstump.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hugebombiwa/z_obj_hugebombiwa.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Jg_Gakki/z_obj_jg_gakki.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Kendo_Kanban/z_obj_kendo_kanban.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Kepn_Koya/z_obj_kepn_koya.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Kinoko/z_obj_kinoko.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Kzsaku/z_obj_kzsaku.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Lightblock/z_obj_lightblock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Lupygamelift/z_obj_lupygamelift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Mine/z_obj_mine.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Purify/z_obj_purify.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Pzlblock/z_obj_pzlblock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Raillift/z_obj_raillift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Rotlift/z_obj_rotlift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Shutter/z_obj_shutter.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Smork/z_obj_smork.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Snowball2/z_obj_snowball2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Sound/z_obj_sound.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Spinyroll/z_obj_spinyroll.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Swprize/z_obj_swprize.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Takaraya_Wall/z_obj_takaraya_wall.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Taru/z_obj_taru.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Toge/z_obj_toge.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Tokei_Tobira/z_obj_tokei_tobira.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Tokei_Turret/z_obj_tokei_turret.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Toudai/z_obj_toudai.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Tree/z_obj_tree.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Um/z_obj_um.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Visiblock/z_obj_visiblock.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Vspinyroll/z_obj_vspinyroll.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Wind/z_obj_wind.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Y2lift/z_obj_y2lift.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Y2shutter/z_obj_y2shutter.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Obj_Yasi/z_obj_yasi.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Wipe5/z_oceff_wipe5.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Oceff_Wipe7/z_oceff_wipe7.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_TG_Sw/z_tg_sw.c.o mm/CMakeFiles/2ship.dir/src/overlays/actors/ovl_player_actor/z_player.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_En_Ice_Block/z_eff_en_ice_block.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Hitmark/z_eff_ss_hitmark.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Kirakira/z_eff_ss_kirakira.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c.o mm/CMakeFiles/2ship.dir/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c.o mm/CMakeFiles/2ship.dir/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c.o mm/CMakeFiles/2ship.dir/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c.o mm/CMakeFiles/2ship.dir/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c.o mm/CMakeFiles/2ship.dir/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c.o mm/CMakeFiles/2ship.dir/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_daytelop/z_daytelop.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_opening/z_opening.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_select/z_select.c.o mm/CMakeFiles/2ship.dir/src/overlays/gamestates/ovl_title/z_title.c.o mm/CMakeFiles/2ship.dir/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c.o mm/CMakeFiles/2ship.dir/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c.o mm/CMakeFiles/2ship.dir/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c.o mm/CMakeFiles/2ship.dir/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c.o mm/CMakeFiles/2ship.dir/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c.o mm/CMakeFiles/2ship.dir/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c.o mm/CMakeFiles/2ship.dir/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c.o -o mm/2s2h-macos -F/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/System/Library/Frameworks -L/usr/local/Cellar/sdl2/2.30.5/lib -Wl,-rpath,/usr/local/Cellar/sdl2/2.30.5/lib -Wl,-rpath,/usr/local/lib libultraship/src/libultraship.a ZAPD/libZAPDLib.a /usr/local/Cellar/sdl2/2.30.5/lib/libSDL2.dylib libultraship/src/libultraship.a -Xlinker -force_load -Xlinker _deps/stormlib-build/libstorm.a /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/lib/libz.tbd /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/lib/libbz2.tbd libultraship/libImGui.a /usr/local/Cellar/sdl2/2.30.5/lib/libSDL2.dylib /usr/local/lib/libGLEW.2.2.0.dylib -framework OpenGL libultraship/libstb.a libultraship/liblibgfxd.a /usr/local/lib/libzip.5.5.dylib /usr/local/lib/libtinyxml2.10.0.0.dylib _deps/spdlog-build/libspdlogd.a -framework Foundation -framework AVFoundation -framework Metal -framework QuartzCore -Wl,-force_load OTRExporter/OTRExporter/libOTRExporter.a /usr/local/lib/libpng.dylib /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/lib/libz.tbd && cd /Users/christopher/GIT/2ship2harkinian/build-cmake/mm && /usr/local/Cellar/cmake/3.30.1/bin/cmake -E copy_directory /Users/christopher/GIT/2ship2harkinian/mm/assets/extractor /Users/christopher/GIT/2ship2harkinian/build-cmake/mm/assets/extractor && /usr/local/Cellar/cmake/3.30.1/bin/cmake -E copy_directory /Users/christopher/GIT/2ship2harkinian/mm/assets/xml /Users/christopher/GIT/2ship2harkinian/build-cmake/mm/assets/extractor/xmls && /usr/local/Cellar/cmake/3.30.1/bin/cmake -E copy_directory /Users/christopher/GIT/2ship2harkinian/OTRExporter/CFG/filelists /Users/christopher/GIT/2ship2harkinian/build-cmake/mm/assets/extractor/filelists && /usr/local/Cellar/cmake/3.30.1/bin/cmake -E make_directory /Users/christopher/GIT/2ship2harkinian/build-cmake/mm/assets/extractor/symbols && /usr/local/Cellar/cmake/3.30.1/bin/cmake -E copy /Users/christopher/GIT/2ship2harkinian/OTRExporter/CFG/ActorList_MM.txt /Users/christopher/GIT/2ship2harkinian/build-cmake/mm/assets/extractor/symbols && /usr/local/Cellar/cmake/3.30.1/bin/cmake -E copy /Users/christopher/GIT/2ship2harkinian/OTRExporter/CFG/ObjectList_MM.txt /Users/christopher/GIT/2ship2harkinian/build-cmake/mm/assets/extractor/symbols && /usr/local/Cellar/cmake/3.30.1/bin/cmake -E copy /Users/christopher/GIT/2ship2harkinian/OTRExporter/CFG/SymbolMap_MM.txt /Users/christopher/GIT/2ship2harkinian/build-cmake/mm/assets/extractor/symbols +ld: warning: ignoring duplicate libraries: 'libultraship/src/libultraship.a' + diff --git a/libultraship b/libultraship index 31e9b009f9..41366d1264 160000 --- a/libultraship +++ b/libultraship @@ -1 +1 @@ -Subproject commit 31e9b009f94e7074a847c7954926cba354cd7c72 +Subproject commit 41366d126498fe09db063da50ec8368e32c7f030 diff --git a/mm/2s2h/BenGui/BenGui.cpp b/mm/2s2h/BenGui/BenGui.cpp index b41e537e07..32a24704b9 100644 --- a/mm/2s2h/BenGui/BenGui.cpp +++ b/mm/2s2h/BenGui/BenGui.cpp @@ -19,6 +19,7 @@ #include "include/global.h" #include "include/z64audio.h" +#include "2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h" namespace BenGui { // MARK: - Delegates @@ -89,6 +90,9 @@ void SetupGuiElements() { mEventLogWindow = std::make_shared("gWindows.EventLog", "Event Log"); gui->AddGuiWindow(mEventLogWindow); + + arbItemSlotsWindow = std::shared_ptr{ new ArbitraryItemSlotsWindow() }; + gui->AddGuiWindow(arbItemSlotsWindow); } void Destroy() { diff --git a/mm/2s2h/BenGui/BenMenuBar.cpp b/mm/2s2h/BenGui/BenMenuBar.cpp index eef6b1cd44..7b59c2ac71 100644 --- a/mm/2s2h/BenGui/BenMenuBar.cpp +++ b/mm/2s2h/BenGui/BenMenuBar.cpp @@ -14,6 +14,7 @@ #include "2s2h/DeveloperTools/DeveloperTools.h" #include "2s2h/Enhancements/Cheats/Cheats.h" #include "2s2h/Enhancements/Player/Player.h" +#include "2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h" #include "HudEditor.h" extern "C" { @@ -507,6 +508,9 @@ void DrawEnhancementsMenu() { if (UIWidgets::BeginMenu("Equipment")) { UIWidgets::CVarCheckbox("Fast Magic Arrow Equip Animation", "gEnhancements.Equipment.MagicArrowEquipSpeed", { .tooltip = "Removes the animation for equipping Magic Arrows." }); + + UIWidgets::WindowButton("Arbitrary Item Slots", "gWindow.ArbitraryItemSlots", arbItemSlotsWindow); + ImGui::EndMenu(); } diff --git a/mm/2s2h/BenJsonConversions.hpp b/mm/2s2h/BenJsonConversions.hpp index 190f5202f4..57c0de5339 100644 --- a/mm/2s2h/BenJsonConversions.hpp +++ b/mm/2s2h/BenJsonConversions.hpp @@ -32,11 +32,27 @@ void from_json(const json& j, ShipSaveInfo& shipSaveInfo) { j.at("pauseSaveEntrance").get_to(shipSaveInfo.pauseSaveEntrance); } +// void from_json(const json& j, ); + void to_json(json& j, const ItemEquips& itemEquips) { + std::vector a; + if(itemEquips.equipsSlotGetter.getEquipSlots != nullptr){ + FOREACH_SLOT( + itemEquips.equipsSlotGetter.getEquipSlots(&itemEquips.equipsSlotGetter, nullptr, nullptr), + arbSlot, + { + a.push_back(json{ + {"id", arbSlot->getID(arbSlot)}, + {"assignedItemSlot", arbSlot->getAssignedItemSlot(arbSlot)} + }); + } + ); + } j = json{ { "buttonItems", itemEquips.buttonItems }, { "cButtonSlots", itemEquips.cButtonSlots }, { "equipment", itemEquips.equipment }, + { "arbitraryEquipmentSlots", a }, }; } @@ -47,6 +63,30 @@ void from_json(const json& j, ItemEquips& itemEquips) { j.at("buttonItems").at(i).get_to(itemEquips.buttonItems[i]); j.at("cButtonSlots").at(i).get_to(itemEquips.cButtonSlots[i]); } + + size_t arbCount = 0; + if(j.contains("arbitraryEquipmentSlots")){ + arbCount = j.at("arbitraryEquipmentSlots").size(); + } + + initItemEquips(&itemEquips); + + ArbitraryItemEquipSet slots = itemEquips.equipsSlotGetter.getEquipSlots(&itemEquips.equipsSlotGetter, NULL, NULL); + + for(int i = 0; i < slots.count; i++){ + ArbitraryItemEquipButton& a = slots.equips[i]; + + for(size_t k = 0; k < arbCount ; k++){ + std::string parsedId; + j.at("arbitraryEquipmentSlots").at(k).at("id").get_to(parsedId); + + if(parsedId == a.getID(&a)){ + InventorySlot itemSlot; + j.at("arbitraryEquipmentSlots").at(k).at("assignedItemSlot").get_to(itemSlot); + a.assignItemSlot(&a, itemSlot); // TODO + } + } + } } void to_json(json& j, const Inventory& inventory) { diff --git a/mm/2s2h/BenPort.cpp b/mm/2s2h/BenPort.cpp index 5009eb2ce3..8402ace2cd 100644 --- a/mm/2s2h/BenPort.cpp +++ b/mm/2s2h/BenPort.cpp @@ -37,7 +37,7 @@ #endif #include "Extractor/Extract.h" // OTRTODO -//#include +// #include #include "2s2h/Enhancements/FrameInterpolation/FrameInterpolation.h" #ifdef ENABLE_CROWD_CONTROL @@ -340,11 +340,11 @@ void OTRAudio_Thread() { // AudioMgr_ThreadEntry(&gAudioMgr); // 528 and 544 relate to 60 fps at 32 kHz 32000/60 = 533.333.. // in an ideal world, one third of the calls should use num_samples=544 and two thirds num_samples=528 -//#define SAMPLES_HIGH 560 -//#define SAMPLES_LOW 528 +// #define SAMPLES_HIGH 560 +// #define SAMPLES_LOW 528 // PAL values -//#define SAMPLES_HIGH 656 -//#define SAMPLES_LOW 624 +// #define SAMPLES_HIGH 656 +// #define SAMPLES_LOW 624 // 44KHZ values #define SAMPLES_HIGH 752 diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.cpp b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.cpp new file mode 100644 index 0000000000..dd8cb90204 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.cpp @@ -0,0 +1,284 @@ +#include "intent-control-types.h" +#include +#include +#include +#include +#include +#include "ArbitraryItemSlots.h" + +extern "C" { +#include +} + +#include "CarouselItemSlots.h" +#include "MultipleConfigs.h" +#include +extern "C" { +#include +#include +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" +} + +uint16_t width = 27, height = 27; + +ArbitraryItemSlotManager::ArbitraryItemSlotManager(std::string id, uint16_t specialButtonId, + ArbitraryItemSlotLister* lister) { + this->arbId = id; + this->specialButtonId = specialButtonId; + this->assignedItemSlot = SLOT_NONE; + this->drawParams = { 0, 0, 27, 27, 620, 620, 255, 0, 0, 255, true }; + this->lister = lister; + this->loadCVars(); +} +ArbitraryItemSlotManager::ArbitraryItemSlotManager(std::string id, ArbitraryItemSlotLister* lister) { + this->arbId = id; + this->specialButtonId = 0; + this->assignedItemSlot = SLOT_NONE; + this->drawParams = { 0, 0, 27, 27, 620, 620, 255, 0, 0, 255, true }; + this->lister = lister; + this->loadCVars(); +} + +ArbitraryItemEquipButton ArbitraryItemSlotManager::makeEquipButton() { + return { + this, // userData; + +[](ArbitraryItemEquipButton* self, ItemId item) { + return ((ArbitraryItemSlotManager*)self->userData)->canTakeAssignment(item); + }, // canTakeAssignment + +[](ArbitraryItemEquipButton* self, Input* input) { + return ((ArbitraryItemSlotManager*)self->userData)->assignmentTriggered(input); + }, // assignmentTriggered + +[](ArbitraryItemEquipButton* self, Input* input, uint8_t buttonState) { + return ((ArbitraryItemSlotManager*)self->userData)->activateItem(input, buttonState); + }, // activateItem + +[](ArbitraryItemEquipButton* self, Input* input) { + return ((ArbitraryItemSlotManager*)self->userData)->tradeItem(input); + }, // tradeItem + +[](ArbitraryItemEquipButton* self, PlayState* play) { + return ((ArbitraryItemSlotManager*)self->userData)->getDrawParams(play); + }, // getDrawParams + +[](ArbitraryItemEquipButton* self) { + return ((ArbitraryItemSlotManager*)self->userData)->getAssignedItemSlot(); + }, // getAssignedItemSlot + +[](ArbitraryItemEquipButton* self, InventorySlot itemSlot) { + return ((ArbitraryItemSlotManager*)self->userData)->assignItemSlot(itemSlot); + }, // assignItemSlot + + +[](struct ArbitraryItemEquipButton* self, uint8_t disabled) { + return ((ArbitraryItemSlotManager*)self->userData)->setDisabled(disabled); + }, // setDisabled + +[](struct ArbitraryItemEquipButton* self) { + return ((ArbitraryItemSlotManager*)self->userData)->isDisabled(); + }, // isDisabled + +[](struct ArbitraryItemEquipButton* self, PlayState* play, HudVisibility hudMode, s16 dimmingAlpha) { + ((ArbitraryItemSlotManager*)self->userData)->updateHudAlpha(play, hudMode, dimmingAlpha); + }, // updateHudAlpha + +[](struct ArbitraryItemEquipButton* self) { + return ((ArbitraryItemSlotManager*)self->userData)->arbId.c_str(); + }, // getId + +[](ArbitraryItemEquipButton* self) { + return ((ArbitraryItemSlotManager*)self->userData)->getAssignedItemID(); + }, // getAssignedItemID + }; +} + +uint8_t ArbitraryItemSlotManager::canTakeAssignment(ItemId item) { + return true; +} +uint8_t ArbitraryItemSlotManager::assignmentTriggered(Input* input) { + return CHECK_INTENT(input->cur.intentControls, this->specialButtonId, BUTTON_STATE_PRESS, 0); +} +uint8_t ArbitraryItemSlotManager::activateItem(Input* input, uint8_t buttonState) { + if (this->disabled) { + return 0; + } + return CHECK_INTENT(input->cur.intentControls, this->specialButtonId, buttonState, 0); +} +uint8_t ArbitraryItemSlotManager::tradeItem(Input* input) { + if (this->disabled) { + return 0; + } + return CHECK_INTENT(input->cur.intentControls, this->specialButtonId, BUTTON_STATE_PRESS, 0); +} +ArbitraryItemDrawParams ArbitraryItemSlotManager::getDrawParams(PlayState* play) { + ArbitraryItemDrawParams result = this->drawParams; + + SlotState state = this->lister->parentState.parent(this->state); + if (this->disabled) { + state = state.parent(this->disabledState); + } + + return state.toDrawParams(this->hudAlpha); +} +InventorySlot ArbitraryItemSlotManager::getAssignedItemSlot() { + // return gSaveContext.save.saveInfo.inventory.items[this->assignedItemSlot]; + return this->assignedItemSlot; +} +InventorySlot ArbitraryItemSlotManager::assignItemSlot(InventorySlot itemSlot) { + this->assignedItemSlot = itemSlot; + this->disabled = false; + return itemSlot; +} + +ItemId ArbitraryItemSlotManager::getAssignedItemID() { + if (this->assignedItemSlot == SLOT_NONE) { + return ITEM_NONE; + } + return (ItemId)gSaveContext.save.saveInfo.inventory.items[this->assignedItemSlot]; +} + +uint8_t ArbitraryItemSlotManager::setDisabled(uint8_t disabled) { + if (disabled != this->disabled) { + this->disabledStarted = std::chrono::high_resolution_clock::now(); + } + return (this->disabled = disabled); +} + +uint8_t ArbitraryItemSlotManager::isDisabled() { + return this->disabled; +} + +void ArbitraryItemSlotManager::updateHudAlpha(PlayState* play, HudVisibility hudMode, s16 dimmingAlpha) { + int32_t risingAlpha = 255 - dimmingAlpha; + +#define disabledCheck() \ + if (this->disabled && play->pauseCtx.state == PAUSE_STATE_OFF) { \ + if (this->hudAlpha != 70) { \ + this->hudAlpha = 70; \ + } \ + } else { \ + if (this->hudAlpha != 255) { \ + this->hudAlpha = risingAlpha; \ + } \ + } + + switch (hudMode) { + case HUD_VISIBILITY_NONE: + case HUD_VISIBILITY_NONE_ALT: + case HUD_VISIBILITY_B: + case HUD_VISIBILITY_A: + case HUD_VISIBILITY_HEARTS_MAGIC: + case HUD_VISIBILITY_B_ALT: + case HUD_VISIBILITY_HEARTS: + case HUD_VISIBILITY_A_B_MINIMAP: + case HUD_VISIBILITY_B_MINIMAP: + case HUD_VISIBILITY_HEARTS_MAGIC_MINIMAP: + case HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP: + case HUD_VISIBILITY_B_MAGIC: + case HUD_VISIBILITY_A_B: + case HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP: + this->hudAlpha = dimmingAlpha; + break; + case HUD_VISIBILITY_HEARTS_MAGIC_C: + case HUD_VISIBILITY_ALL_NO_MINIMAP: + case HUD_VISIBILITY_A_B_C: + this->hudAlpha = risingAlpha; + break; + case HUD_VISIBILITY_HEARTS_WITH_OVERWRITE: + case HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_OVERWRITE: + case HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_OVERWRITE: + case HUD_VISIBILITY_HEARTS_MAGIC_WITH_OVERWRITE: + if (gSaveContext.hudVisibilityForceButtonAlphasByStatus) { + disabledCheck(); + } else { + this->hudAlpha = dimmingAlpha; + } + break; + case HUD_VISIBILITY_ALL_NO_MINIMAP_W_DISABLED: + case HUD_VISIBILITY_ALL: + disabledCheck(); + break; + } +} + +std::string ArbitraryItemSlotManager::getCVarListerString() { + return this->lister->getCVarListerString() + "." + this->arbId; +} + +std::string ArbitraryItemSlotLister::getCVarListerString() { + return std::string("gEnhancements.equipment.arbitraryEquipmentSlots.") + this->name; +} + +void ArbitraryItemSlotManager::saveCVars() { + this->state.saveCVars(this->getCVarListerString() + ".defaultState"); + this->disabledState.saveCVars(this->getCVarListerString() + ".disabledState"); +} +void ArbitraryItemSlotManager::loadCVars() { + this->state.loadCVars(this->getCVarListerString() + ".defaultState"); + this->disabledState.loadCVars(this->getCVarListerString() + ".disabledState"); +} + +void ArbitraryItemSlotLister::saveCVars() { + this->parentState.saveCVars(this->getCVarListerString() + ".defaultState"); + this->disabledState.saveCVars(this->getCVarListerString() + ".disabledState"); +} +void ArbitraryItemSlotLister::loadCVars() { + this->parentState.loadCVars(this->getCVarListerString() + ".defaultState"); + this->disabledState.loadCVars(this->getCVarListerString() + ".disabledState"); +} + +ArbitraryItemEquipSet ArbitraryItemSlotLister::getEquipSlots(PlayState* play, Input* input) { + this->baseSlots = {}; + + for (auto& slot : this->slots) { + this->baseSlots.push_back(slot->makeEquipButton()); + } + + ArbitraryItemEquipSet set; + set.equips = this->baseSlots.data(); + set.count = this->baseSlots.size(); + this->addEquipSetCallbacks(&set); + + return set; +} + +void ArbitraryItemSlotLister::addEquipSetCallbacks(ArbitraryItemEquipSet* set) { + set->findSlotWithItem = +[](ArbitraryItemEquipSet* self, uint16_t item) { + FOREACH_SLOT(*self, slot, { + if (gSaveContext.save.saveInfo.inventory.items[slot->getAssignedItemSlot(slot)] == item) { + return 1; + } + }); + return -1; + }; +} + +void ArbitraryItemSlotLister::initItemEquips(ItemEquips* equips) { + equips->equipsSlotGetter.userData = this; + equips->equipsSlotGetter.getEquipSlots = +[](const ArbitraryEquipsSlotGetter* self, PlayState* play, Input* input) { + return ((ArbitraryItemSlotLister*)self->userData)->getEquipSlots(play, input); + }; + + auto second = this->slots.at(1); + second->drawParams.rectLeft = width; + second->drawParams.r = 0; + second->drawParams.g = 0; + second->drawParams.b = 255; +} + +ArbitraryItemSlotLister::ArbitraryItemSlotLister() { + this->loadCVars(); +} + +std::shared_ptr currentLister = NULL; + +std::shared_ptr ArbitraryItemSlotLister::getLister() { + if (currentLister == NULL) { + currentLister = std::shared_ptr{ new MulitpleItemSlotLister( + "Slots", + { std::shared_ptr{ new ArbitraryItemSlotLister() }, + std::shared_ptr{ new MulitpleItemSlotLister( + "Carousel Slots", + { + // std::shared_ptr{ new CarouselItemSlotLister( + // "1", INTENT_USE_ITEM, INTENT_HOTSWAP_ITEM_LEFT, INTENT_HOTSWAP_ITEM_RIGHT) } + }, + CarouselItemSlotLister::makeCarousel) } }, + nullptr) }; + } + return currentLister; +} + +extern "C" void initItemEquips(ItemEquips* equips) { + return ArbitraryItemSlotLister::getLister()->initItemEquips(equips); +} diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h new file mode 100644 index 0000000000..3ef3705173 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlots.h @@ -0,0 +1,79 @@ +#ifndef _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS +#define _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS +#include +#include +extern "C" { +#include +} +#include "ArbitraryItemSlotsGUI.h" +#include "./SlotState.h" + +#define ARB_EQUIP_ITEM_1 101 +#define ARB_EQUIP_ITEM_2 102 + +struct ArbitraryItemSlotsManagerOptions; +struct ArbitraryItemSlotLister; + +struct ArbitraryItemSlotManager { + std::string arbId; + uint16_t specialButtonId; + InventorySlot assignedItemSlot; + int32_t hudAlpha = 255; + ArbitraryItemDrawParams drawParams; + ArbitraryItemSlotLister* lister; + std::chrono::high_resolution_clock::time_point createPoint = std::chrono::high_resolution_clock::now(); + std::chrono::high_resolution_clock::time_point disabledStarted = std::chrono::high_resolution_clock::now(); + bool disabled = false; + SlotState state; + SlotState disabledState{}; + + ArbitraryItemSlotManager(std::string id, ArbitraryItemSlotLister* lister); + ArbitraryItemSlotManager(std::string id, uint16_t specialButtonId, ArbitraryItemSlotLister* lister); + + virtual std::string getCVarListerString(); + + virtual void saveCVars(); + virtual void loadCVars(); + + virtual ArbitraryItemEquipButton makeEquipButton(); + virtual uint8_t canTakeAssignment(ItemId item); + virtual uint8_t assignmentTriggered(Input* input); + virtual uint8_t activateItem(Input* input, uint8_t buttonState); + virtual uint8_t tradeItem(Input* input); + virtual InventorySlot getAssignedItemSlot(); + virtual ItemId getAssignedItemID(); + virtual InventorySlot assignItemSlot(InventorySlot item); + virtual ArbitraryItemDrawParams getDrawParams(PlayState* play); + + virtual uint8_t setDisabled(uint8_t disabled); + virtual uint8_t isDisabled(); + virtual void updateHudAlpha(PlayState* play, HudVisibility hudMode, s16 dimmingAlpha); +}; + +struct ArbitraryItemSlotLister { + std::string name = "Dedicated Slots"; + SlotState parentState; + SlotState disabledState; + std::shared_ptr options{ new ArbitraryItemSlotsListerOptions() }; + std::vector baseSlots; + std::vector> slots = { + std::shared_ptr{ new ArbitraryItemSlotManager("1", ARB_EQUIP_ITEM_1, this) }, + std::shared_ptr{ new ArbitraryItemSlotManager("2", ARB_EQUIP_ITEM_2, this) } + }; + + virtual std::string getCVarListerString(); + + virtual void saveCVars(); + virtual void loadCVars(); + + virtual ArbitraryItemEquipSet getEquipSlots(PlayState* play, Input* input); + + virtual void initItemEquips(ItemEquips* equips); + virtual void addEquipSetCallbacks(ArbitraryItemEquipSet* set); + + ArbitraryItemSlotLister(); + + static std::shared_ptr getLister(); +}; + +#endif \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.cpp b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.cpp new file mode 100644 index 0000000000..3b2a7e3486 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.cpp @@ -0,0 +1,74 @@ +#include "ArbitraryItemSlotsGUI.h" +#include "ArbitraryItemSlots.h" +#include "Context.h" + +void ArbitraryItemSlotsWindow::InitElement() { + return; +} +void ArbitraryItemSlotsWindow::DrawElement() { + ImGui::SetNextWindowSize(ImVec2(480, 600), ImGuiCond_FirstUseEver); + if (ImGui::Begin("Arbitrary Equipment Slots", &mIsVisible, ImGuiWindowFlags_NoFocusOnAppearing)) { + std::shared_ptr lister = ArbitraryItemSlotLister::getLister(); + lister->options->drawOptions(this, lister.get()); + ImGui::End(); + return; + } + + ImGui::End(); +} +void ArbitraryItemSlotsWindow::UpdateElement() { +} + +ArbitraryItemSlotsWindow::ArbitraryItemSlotsWindow() : Ship::GuiWindow("", "") { +} + +void ArbitraryItemSlotsListerOptions::drawSlotState(ArbitraryItemSlotsWindow* win, SlotState* state, + std::string appendex) { + ImGui::DragInt(("Position left" + appendex).c_str(), &state->posLeft); + ImGui::DragInt(("Position top" + appendex).c_str(), &state->posTop); + ImGui::DragFloat(("Scale" + appendex).c_str(), &state->scale, 0.01, 0.001, 0); + ImGui::DragFloat(("Transparency" + appendex).c_str(), &state->transparency, 0.01, 0.001, 2); + ImGui::ColorEdit4(("Color" + appendex).c_str(), state->rgb, ImGuiColorEditFlags_NoInputs); +} + +void ArbitraryItemSlotsListerOptions::drawOptions(ArbitraryItemSlotsWindow* win, ArbitraryItemSlotLister* manager) { + Ship::InputEditorWindow* inputWindow = (Ship::InputEditorWindow*)(void*)Ship::Context::GetInstance() + ->GetWindow() + ->GetGui() + ->GetGuiWindow("Input Editor") + .get(); + ImGui::Text("Default State"); + this->drawSlotState(win, &manager->parentState, "##parentState"); + ImGui::Text("Disabled State"); + this->drawSlotState(win, &manager->disabledState, "##parentDisabledState"); + + size_t i = 1; + + for (auto slot : manager->slots) { + std::string label = "Slot #"; + label += std::to_string(i); + std::string slotUniqueAppendex = "##"; + slotUniqueAppendex += std::to_string(i); + label += slotUniqueAppendex; + + if (ImGui::CollapsingHeader(label.c_str())) { + ImGui::Text("Default State"); + this->drawSlotState(win, &slot->state, slotUniqueAppendex); + ImGui::Text("Disabled State"); + this->drawSlotState(win, &slot->disabledState, slotUniqueAppendex + "disabledState"); + + if (inputWindow != nullptr) { + inputWindow->DrawButtonLine( + "Use/Assign Item", 0, 0, slot->specialButtonId, + ImVec4(slot->state.rgb[0], slot->state.rgb[1], slot->state.rgb[2], slot->state.rgb[3])); + } + } + i++; + slot->saveCVars(); + } + + manager->saveCVars(); + CVarSave(); +} + +std::shared_ptr arbItemSlotsWindow; diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h new file mode 100644 index 0000000000..4e596defad --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/ArbitraryItemSlotsGUI.h @@ -0,0 +1,33 @@ +#ifndef _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_GUI +#define _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_GUI +#include "Gui.h" +#include "window/gui/GuiWindow.h" +#include +#include "2s2h/BenGui/UIWidgets.hpp" +#include "InputEditorWindow.h" +#include "./SlotState.h" + +struct ArbitraryItemSlotLister; +struct ArbitraryItemSlotManager; + +struct ArbitraryItemSlotsWindow : public Ship::GuiWindow { + + ArbitraryItemSlotsWindow(); + + void InitElement() override; + void DrawElement() override; + void UpdateElement() override; +}; + +struct ArbitraryItemSlotsListerOptions { + virtual void drawOptions(ArbitraryItemSlotsWindow* win, ArbitraryItemSlotLister* manager); + virtual void drawSlotState(ArbitraryItemSlotsWindow* win, SlotState* state, std::string appendex); +}; +struct ArbitraryItemSlotsManagerOptions { + virtual void drawOptions(ArbitraryItemSlotsWindow* win, ArbitraryItemSlotManager* lister) { + } +}; + +extern std::shared_ptr arbItemSlotsWindow; + +#endif \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp new file mode 100644 index 0000000000..f7ee5456c6 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.cpp @@ -0,0 +1,378 @@ +#include "CarouselItemSlots.h" +#include // TODO: Without this import, below imports break a bunch of internal `extern` imports deeper in the 2ship include tree for some reason +extern "C" { +#include +#include +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" +} +#include "./guis/CarouselGUI.h" + +CarouselItemSlotManager::CarouselItemSlotManager(std::string id, CarouselItemSlotLister* lister) + : ArbitraryItemSlotManager(id, lister) { + // this->scrollPosition = 0; +} + +int32_t CarouselItemSlotManager::getLeftOffset(int16_t index) { + int8_t negative = index < 0 ? -1 : 1; + int abs = index * negative; + auto l = (CarouselItemSlotLister*)lister; + abs %= l->carouselSlots.size(); + + if (negative < 0) { + abs *= -1; + abs += l->carouselSlots.size(); + abs %= l->carouselSlots.size(); + } + + auto it = std::find_if(l->carouselSlots.begin(), l->carouselSlots.end(), + [this](std::shared_ptr slot) { return slot.get() == this; }); + long thisIndex = it - l->carouselSlots.begin(); + + long dist = thisIndex - abs; + + if (std::abs(dist) > ((double)l->carouselSlots.size() / 2.0)) { + if (dist < 0) { + dist += l->carouselSlots.size(); + } else { + dist -= l->carouselSlots.size(); + } + } + + return dist; +} + +SlotState CarouselItemSlotManager::getIndexSlotState(int16_t relativeIndex, double width) { + auto l = (CarouselItemSlotLister*)lister; + SlotState resultState; + double distance = width * relativeIndex; + + float angleRads = l->carouselDirectionAngle; + + resultState.posLeft += std::cos(angleRads) * distance; + resultState.posTop += std::sin(angleRads) * distance; + + if (std::abs(relativeIndex) > l->carouselIndexRadius) { + resultState.transparency = 0; + } + + return resultState; +} + +double CarouselItemSlotManager::getScrollTimeRatio() { + auto l = (CarouselItemSlotLister*)lister; + std::chrono::duration> elapsedTime = + (std::chrono::high_resolution_clock::now() - l->lastSlotSwap); + + return std::clamp(elapsedTime.count() / l->fadeTimeSeconds, 0.0, 1.0); +} +double CarouselItemSlotManager::getActivationRatio() { + auto l = (CarouselItemSlotLister*)lister; + std::chrono::duration> elapsedTime = + (std::chrono::high_resolution_clock::now() - l->activeStarted); + + if (!l->active) { + elapsedTime = (std::chrono::high_resolution_clock::now() - l->inactiveStarted); + } + + double clampedRatio = std::clamp(elapsedTime.count() / l->fadeTimeSeconds, 0.0, 1.0); + + if (!l->active) { + clampedRatio = 1.0 - clampedRatio; + } + + return clampedRatio; +} + +ArbitraryItemDrawParams CarouselItemSlotManager::getDrawParams(PlayState* play) { + auto l = (CarouselItemSlotLister*)lister; + + SlotState defaultState = l->parentState; + SlotState scrollingState = l->scrollingState; + SlotState scrollingSelectedState = l->scrollingSelectedState; + + auto dist = this->getLeftOffset(l->selectedIndex); + auto prevDist = this->getLeftOffset(l->previousSelectedIndex); + + SlotState result = defaultState.parent(scrollingState); + + SlotState scrollingCurPositionState = this->getIndexSlotState(dist, scrollingSelectedState.getWidth()); + SlotState scrollingPrevPositionState = this->getIndexSlotState(prevDist, scrollingSelectedState.getWidth()); + SlotState scrollingPositionState = + scrollingCurPositionState.blend(scrollingPrevPositionState, this->getScrollTimeRatio()); + + result = result.parent(scrollingPositionState); + + if (dist == 0) { + result = result.parent(scrollingSelectedState); + } else { + defaultState.transparency = 0; + } + + if (this->disabled) { + result = result.parent(l->disabledState); + } + + result = result.blend(defaultState, this->getActivationRatio()); + + return result.toDrawParams(this->hudAlpha); +} + +bool CarouselItemSlotManager::isSelectedSlot() { + auto l = (CarouselItemSlotLister*)lister; + int8_t negative = l->selectedIndex < 0 ? -1 : 1; + int abs = l->selectedIndex * negative; + abs %= l->carouselSlots.size(); + + if (negative < 0) { + abs *= -1; + abs += l->carouselSlots.size(); + abs %= l->carouselSlots.size(); + } + + auto it = std::find_if(l->carouselSlots.begin(), l->carouselSlots.end(), + [this](std::shared_ptr slot) { return slot.get() == this; }); + long thisIndex = it - l->carouselSlots.begin(); + + return thisIndex == abs; +} + +uint8_t CarouselItemSlotManager::canTakeAssignment(ItemId item) { + if (!this->isSelectedSlot()) { + return 0; + } + + return true; +} +uint8_t CarouselItemSlotManager::assignmentTriggered(Input* input) { + if (!this->isSelectedSlot()) { + return 0; + } + + auto l = (CarouselItemSlotLister*)lister; + return CHECK_INTENT(input->press.intentControls, l->buttons.useItem, BUTTON_STATE_PRESS, 0); +} +uint8_t CarouselItemSlotManager::activateItem(Input* input, uint8_t buttonState) { + if (!this->isSelectedSlot()) { + return 0; + } else if (this->disabled) { + return 0; + } + + auto l = (CarouselItemSlotLister*)lister; + return CHECK_INTENT(input->press.intentControls, l->buttons.useItem, buttonState, 0); +} +uint8_t CarouselItemSlotManager::tradeItem(Input* input) { + if (!this->isSelectedSlot()) { + return 0; + } + + auto l = (CarouselItemSlotLister*)lister; + return CHECK_INTENT(input->cur.intentControls, l->buttons.useItem, BUTTON_STATE_PRESS, 0); +} + +#define LOAD_CVAR(name, cvarFun) this->name = cvarFun((this->getCVarListerString() + "." #name).c_str(), this->name) +#define SET_CVAR(name, cvarFun) cvarFun((this->getCVarListerString() + "." #name).c_str(), this->name) + +void CarouselItemSlotManager::loadCVars() { + ArbitraryItemSlotManager::loadCVars(); +} +void CarouselItemSlotManager::saveCVars() { + ArbitraryItemSlotManager::saveCVars(); +} + +void CarouselItemSlotLister::loadCVars() { + ArbitraryItemSlotLister::loadCVars(); + LOAD_CVAR(slotCount, CVarGetInteger); + LOAD_CVAR(carouselIndexRadius, CVarGetInteger); + LOAD_CVAR(carouselDirectionAngle, CVarGetFloat); + #define LOAD_STATE_CVAR(state) this->state.loadCVars(this->getCVarListerString() + "." #state); + LOAD_STATE_CVAR(parentState); + LOAD_STATE_CVAR(disabledState); + LOAD_STATE_CVAR(scrollingState); + LOAD_STATE_CVAR(scrollingSelectedState); +} +void CarouselItemSlotLister::saveCVars() { + ArbitraryItemSlotLister::saveCVars(); + SET_CVAR(slotCount, CVarSetInteger); + SET_CVAR(carouselIndexRadius, CVarSetInteger); + SET_CVAR(carouselDirectionAngle, CVarSetFloat); + + #define SAVE_STATE_CVAR(state) this->state.saveCVars(this->getCVarListerString() + "." #state) + SAVE_STATE_CVAR(parentState); + SAVE_STATE_CVAR(disabledState); + SAVE_STATE_CVAR(scrollingState); + SAVE_STATE_CVAR(scrollingSelectedState); +} + +#undef LOAD_CVAR +#undef SET_CVAR + +void CarouselItemSlotLister::resetSlotCount(uint8_t count) { + std::vector> newSlots; + + for (size_t i = 0; i < count; i++) { + if (i < this->carouselSlots.size()) { + auto existing = this->carouselSlots.at(i); + existing->arbId = i + 1; + newSlots.push_back(existing); + } else { + auto newSlot = std::shared_ptr{ new CarouselItemSlotManager( + "carouselSlotNum" + std::to_string(i + 1), this) }; + newSlots.push_back(newSlot); + } + } + + this->slotCount = newSlots.size(); + this->carouselSlots = newSlots; +} + +CarouselItemSlotLister::CarouselItemSlotLister(std::string name, CAROUSEL_BUTTONS_TYPE buttons) { + this->name = name; + this->buttons = buttons; + this->options = std::shared_ptr(new CarouselListerOptions()); + + this->parentState.posLeft = 345; + this->parentState.posTop = 32; + + this->scrollingState.posTop = 17; + + this->scrollingSelectedState.scale = 1.25; + this->scrollingSelectedState.rgb[0] = 1; + this->scrollingSelectedState.rgb[1] = 1; + this->scrollingSelectedState.rgb[2] = 1; + + this->loadCVars(); + this->resetSlotCount(this->slotCount); +} + +ArbitraryItemEquipSet CarouselItemSlotLister::getEquipSlots(PlayState* play, Input* input) { + play->state.frames; + // Only process carousel index changes when the frame has changed to prevent the same button press from changing the + // index twice. + if (input != NULL && play != NULL && this->processedInputOnFrame != play->state.frames) { + this->processedInputOnFrame = play->state.frames; + bool isPaused = play->pauseCtx.state != PAUSE_STATE_OFF; + bool pauseMenuJustClosed = this->prevWasPaused && !isPaused; + this->prevWasPaused = isPaused; + + int16_t prev = selectedIndex; + int8_t direction = 0; + + if (CHECK_INTENT(input->press.intentControls, this->buttons.swapLeft, BUTTON_STATE_PRESS, 0)) { + direction--; + } + if (CHECK_INTENT(input->press.intentControls, this->buttons.swapRight, BUTTON_STATE_PRESS, 0)) { + direction++; + } + + selectedIndex += direction; + + // Normalize the index into a valid point withing the index range + if (prev != selectedIndex) { + while (selectedIndex < 0) { + selectedIndex += this->carouselSlots.size(); + } + while (selectedIndex >= this->carouselSlots.size()) { + selectedIndex -= this->carouselSlots.size(); + } + } + + // When outside the pause menu, swap to the next non-disabled item slot. + // Disable this when paused so that items can be assigned to disabled slots. + // Don't swap immediately after closing the pause menu so that the game has a moment to update disabled status. + if (play != NULL && !isPaused && !pauseMenuJustClosed) { + // If the direction is zero, set to one so that the while-loop below doesn't loop forever. + if (direction == 0) { + direction = 1; + } + // End the loop if no non-disabled item slot was found. + size_t iterationCount = 0; + while (this->carouselSlots.at(selectedIndex)->disabled && iterationCount++ < this->carouselSlots.size()) { + selectedIndex += direction; + while (selectedIndex < 0) { + selectedIndex += this->carouselSlots.size(); + } + while (selectedIndex >= this->carouselSlots.size()) { + selectedIndex -= this->carouselSlots.size(); + } + } + // If no non-disabled item slot was found, then reset the index. + if (iterationCount >= this->carouselSlots.size()) { + selectedIndex = prev; + } + } + + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration> elapsedActiveTime = (now - this->activeStarted); + std::chrono::duration> elapsedSwapTime = (now - this->lastSlotSwap); + + // Set tracking info for animation purposes + if (prev != selectedIndex) { + this->previousSelectedIndex = prev; + this->lastSlotSwap = now; + if (!this->active) { + this->active = true; + this->activeStarted = this->lastSlotSwap; + } + } else if (this->active && elapsedSwapTime.count() >= this->lingerSeconds) { + this->active = false; + this->inactiveStarted = now; + } + } + + this->baseSlots = {}; + + for (auto& slot : this->carouselSlots) { + this->baseSlots.push_back(slot->makeEquipButton()); + } + + ArbitraryItemEquipSet set; + set.equips = this->baseSlots.data(); + set.count = this->baseSlots.size(); + + this->addEquipSetCallbacks(&set); + return set; +} + +void CarouselItemSlotLister::initItemEquips(ItemEquips* equips) { + equips->equipsSlotGetter.userData = this; + equips->equipsSlotGetter.getEquipSlots = +[](const ArbitraryEquipsSlotGetter* self, PlayState* play, Input* input) { + return ((CarouselItemSlotLister*)self->userData)->getEquipSlots(play, input); + }; +} + +std::vector> CarouselItemSlotLister::existingCarousels; + +std::shared_ptr CarouselItemSlotLister::makeCarousel(MulitpleItemSlotLister* parent) { + uint8_t carouselNumber = 1; + while(carouselNumber <= 5){ + bool numberWasInUse = false; + for(auto listerRef : CarouselItemSlotLister::existingCarousels){ + if(!listerRef.expired()){ + auto lister = listerRef.lock(); + if(lister->buttons.carouselNumber == carouselNumber){ + carouselNumber++; + numberWasInUse = true; + break; + } + } + } + if(!numberWasInUse){ + break; + } + } + + std::printf("Making carousel #%d\n", carouselNumber); + auto config = INDEXED_CAROUSELS[carouselNumber - 1]; + + auto newLister = std::shared_ptr{ + new CarouselItemSlotLister( + std::string("Carousel #") + std::to_string(config.carouselNumber), + config + ) + }; + + CarouselItemSlotLister::existingCarousels.push_back(newLister); + + return newLister; +} \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h new file mode 100644 index 0000000000..54cb8ef90a --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/CarouselItemSlots.h @@ -0,0 +1,76 @@ +#ifndef _2SHIP_ENHANCEMENT_CAROUSEL_ITEM_SLOTS +#define _2SHIP_ENHANCEMENT_CAROUSEL_ITEM_SLOTS + +#include "ArbitraryItemSlots.h" +#include "intent-control-types.h" +#include +#include "MultipleConfigs.h" + +struct CarouselItemSlotLister; + +struct CarouselItemSlotManager : public ArbitraryItemSlotManager { + CarouselItemSlotManager(std::string id, CarouselItemSlotLister* lister); + int32_t getLeftOffset(int16_t index); + bool isSelectedSlot(); + + virtual void saveCVars(); + virtual void loadCVars(); + + virtual uint8_t canTakeAssignment(ItemId item); + virtual uint8_t assignmentTriggered(Input* input); + virtual uint8_t activateItem(Input* input, uint8_t buttonState); + virtual uint8_t tradeItem(Input* input); + + virtual ArbitraryItemDrawParams getDrawParams(PlayState* play); + + virtual SlotState getIndexSlotState(int16_t index, double width); + virtual double getScrollTimeRatio(); + virtual double getActivationRatio(); +}; + +struct CarouselItemSlotLister : public ArbitraryItemSlotLister { + static std::shared_ptr makeCarousel(MulitpleItemSlotLister* parent); + static std::vector> existingCarousels; + CAROUSEL_BUTTONS_TYPE buttons; + uint32_t processedInputOnFrame = 0; + + int carouselIndexRadius = 1; + + SlotState scrollingState; + SlotState scrollingSelectedState; + + bool prevWasPaused = false; + /** + * Direction of the carousel in radians + */ + float carouselDirectionAngle = 0; + + int slotCount = 3; + int16_t selectedIndex = 0; + int16_t previousSelectedIndex = 0; + + bool activePositionDifferent = true; + + double lingerSeconds = 1.5; + double fadeTimeSeconds = 0.125; + + std::vector> carouselSlots = {}; + + std::chrono::high_resolution_clock::time_point lastSlotSwap = std::chrono::high_resolution_clock::now(); + + bool active = false; + std::chrono::high_resolution_clock::time_point activeStarted = std::chrono::high_resolution_clock::now(); + std::chrono::high_resolution_clock::time_point inactiveStarted = std::chrono::high_resolution_clock::now(); + + void resetSlotCount(uint8_t count); + + virtual void saveCVars() override; + virtual void loadCVars() override; + + virtual ArbitraryItemEquipSet getEquipSlots(PlayState* play, Input* input); + virtual void initItemEquips(ItemEquips* equips); +private: + CarouselItemSlotLister(std::string name, CAROUSEL_BUTTONS_TYPE buttons); +}; + +#endif \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/MultipleConfigs.cpp b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/MultipleConfigs.cpp new file mode 100644 index 0000000000..ded41f688d --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/MultipleConfigs.cpp @@ -0,0 +1,59 @@ +#include "./MultipleConfigs.h" + +void MultipleItemSlotsListerOptions::drawOptions(ArbitraryItemSlotsWindow* win, ArbitraryItemSlotLister* lister) { + auto mulLister = (MulitpleItemSlotLister*)lister; + + ImGui::BeginTabBar("Multiple Lister Tabs"); + for (auto sub : mulLister->subListers) { + std::string label = sub->name; + if (ImGui::BeginTabItem(label.c_str())) { + sub->options->drawOptions(win, sub.get()); + ImGui::EndTabItem(); + } + } + + if (mulLister->subFactory != nullptr && ImGui::TabItemButton("+##addNewSubLister")) { + std::printf("Add a new element: %X\n", this); + auto newSub = mulLister->subFactory(mulLister); + if (newSub.get() != nullptr) { + mulLister->subListers.push_back(newSub); + } + } + + ImGui::EndTabBar(); + ImGui::SameLine(); +} + +MulitpleItemSlotLister::MulitpleItemSlotLister(std::string name, + std::vector> subListers, + SubListerFactory subFactory) { + this->name = name; + this->subListers = subListers; + this->subFactory = subFactory; + this->options = std::shared_ptr(new MultipleItemSlotsListerOptions()); +} + +ArbitraryItemEquipSet MulitpleItemSlotLister::getEquipSlots(PlayState* play, Input* input) { + this->baseSlots = {}; + + for (auto sub : this->subListers) { + auto set = sub->getEquipSlots(play, input); + for (size_t i = 0; i < set.count; i++) { + this->baseSlots.push_back(set.equips[i]); + } + } + + ArbitraryItemEquipSet set; + set.equips = this->baseSlots.data(); + set.count = this->baseSlots.size(); + this->addEquipSetCallbacks(&set); + + return set; +} + +void MulitpleItemSlotLister::initItemEquips(ItemEquips* equips) { + equips->equipsSlotGetter.userData = this; + equips->equipsSlotGetter.getEquipSlots = +[](const ArbitraryEquipsSlotGetter* self, PlayState* play, Input* input) { + return ((MulitpleItemSlotLister*)self->userData)->getEquipSlots(play, input); + }; +} diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/MultipleConfigs.h b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/MultipleConfigs.h new file mode 100644 index 0000000000..76843f2069 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/MultipleConfigs.h @@ -0,0 +1,23 @@ +#ifndef _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_MULTIPLE +#define _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_MULTIPLE +#include "./ArbitraryItemSlots.h" +#include + +struct MultipleItemSlotsListerOptions : public ArbitraryItemSlotsListerOptions { + virtual void drawOptions(ArbitraryItemSlotsWindow* win, ArbitraryItemSlotLister* lister) override; +}; + +struct MulitpleItemSlotLister : public ArbitraryItemSlotLister { + std::vector> subListers; + using SubListerFactory = std::function(MulitpleItemSlotLister* lister)>; + SubListerFactory subFactory = [](MulitpleItemSlotLister*) { return nullptr; }; + + MulitpleItemSlotLister(std::string name, std::vector> subListers, + SubListerFactory subFactory); + + virtual ArbitraryItemEquipSet getEquipSlots(PlayState* play, Input* input) override; + + virtual void initItemEquips(ItemEquips* equips) override; +}; + +#endif \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/SlotState.cpp b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/SlotState.cpp new file mode 100644 index 0000000000..07f4945d64 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/SlotState.cpp @@ -0,0 +1,108 @@ +#include "./SlotState.h" +#include "consolevariablebridge.h" + +SlotState SlotState::blend(SlotState& other, float ratio) { + SlotState result; + + float otherRatio = 1.0 - ratio; + +#define blend(a, b) a* ratio + b* otherRatio + + result.rgb[0] = blend(this->rgb[0], other.rgb[0]); + result.rgb[1] = blend(this->rgb[1], other.rgb[1]); + result.rgb[2] = blend(this->rgb[2], other.rgb[2]); + result.rgb[3] = blend(this->rgb[3], other.rgb[3]); + + result.transparency = blend(this->transparency, other.transparency); + + result.posLeft = blend(this->posLeft, other.posLeft); + result.posTop = blend(this->posTop, other.posTop); + + result.scale = blend(this->scale, other.scale); + +#undef blend + + return result; +} + +SlotState SlotState::parent(SlotState& child) { + SlotState result; + + SlotState blended = child.blend(*this, child.rgb[3]); + result.rgb[0] = blended.rgb[0]; + result.rgb[1] = blended.rgb[1]; + result.rgb[2] = blended.rgb[2]; + result.rgb[3] = blended.rgb[3]; + + result.transparency = this->transparency * child.transparency; + result.scale = this->scale * child.scale; + result.posLeft = this->posLeft + child.posLeft; + result.posTop = this->posTop + child.posTop; + + return result; +} + +int32_t SlotState::getWidth() { + return this->scale * 27.0; +} +int32_t SlotState::getHeight() { + return this->scale * 27.0; +} + +#define LOAD_CVAR(name, cvarFun) this->name = cvarFun((savePath + "." #name).c_str(), this->name) +#define SET_CVAR(name, cvarFun) cvarFun((savePath + "." #name).c_str(), this->name) + +void SlotState::saveCVars(std::string savePath) { + SET_CVAR(posLeft, CVarSetInteger); + SET_CVAR(posTop, CVarSetInteger); + SET_CVAR(scale, CVarSetFloat); + SET_CVAR(transparency, CVarSetFloat); + + SET_CVAR(rgb[0], CVarSetFloat); + SET_CVAR(rgb[1], CVarSetFloat); + SET_CVAR(rgb[2], CVarSetFloat); + SET_CVAR(rgb[3], CVarSetFloat); +} +void SlotState::loadCVars(std::string savePath) { + LOAD_CVAR(posLeft, CVarGetInteger); + LOAD_CVAR(posTop, CVarGetInteger); + LOAD_CVAR(scale, CVarGetFloat); + LOAD_CVAR(transparency, CVarGetFloat); + + LOAD_CVAR(rgb[0], CVarGetFloat); + LOAD_CVAR(rgb[1], CVarGetFloat); + LOAD_CVAR(rgb[2], CVarGetFloat); + LOAD_CVAR(rgb[3], CVarGetFloat); +} + +#undef LOAD_CVAR +#undef SET_CVAR + +ArbitraryItemDrawParams SlotState::toDrawParams(int32_t hudAlpha) { + ArbitraryItemDrawParams result; + result.rectWidth = this->getWidth(); + result.rectHeight = this->getHeight(); + result.dsdx = 620.0 / this->scale; + result.dtdy = 620.0 / this->scale; + + result.rectLeft = this->posLeft - result.rectWidth / 2.0; + result.rectTop = this->posTop - result.rectHeight / 2.0; + + result.r = 255 * this->rgb[0]; + result.g = 255 * this->rgb[1]; + result.b = 255 * this->rgb[2]; + result.a = hudAlpha * this->transparency; + + result.ammoRectLeft = result.rectLeft; + result.ammoRectTop = result.rectTop + result.rectHeight - 8 * this->scale; + + result.ammoTensRectLeft = result.ammoRectLeft + 6 * this->scale; + result.ammoTensRectTop = result.ammoRectTop; + + result.ammoRectWidth = 8 * this->scale; + result.ammoRectHeight = 8 * this->scale; + result.ammoDsdx = (1 << 10) / this->scale; + result.ammoDtdy = (1 << 10) / this->scale; + + return result; +} \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/SlotState.h b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/SlotState.h new file mode 100644 index 0000000000..8688d0068d --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/SlotState.h @@ -0,0 +1,25 @@ +#ifndef _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_SLOT_STATE +#define _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_SLOT_STATE +#include +#include +#include + +struct SlotState { + int32_t posLeft = 0; + int32_t posTop = 0; + float scale = 1; + float rgb[4] = { 255.0 / 255.0, 240.0 / 255.0, 0.0 / 255.0, 1.0 }; + float transparency = 1; + + int32_t getWidth(); + int32_t getHeight(); + + SlotState blend(SlotState& other, float ratio); + SlotState parent(SlotState& child); + ArbitraryItemDrawParams toDrawParams(int32_t hudAlpha); + + virtual void saveCVars(std::string savePath); + virtual void loadCVars(std::string savePath); +}; + +#endif \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/guis/CarouselGUI.cpp b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/guis/CarouselGUI.cpp new file mode 100644 index 0000000000..8dee0dc882 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/guis/CarouselGUI.cpp @@ -0,0 +1,44 @@ +#include "./CarouselGUI.h" +#include "../CarouselItemSlots.h" +#include "InputEditorWindow.h" + +void CarouselListerOptions::drawOptions(ArbitraryItemSlotsWindow* win, ArbitraryItemSlotLister* manager) { + CarouselItemSlotLister* m = (CarouselItemSlotLister*)manager; + Ship::InputEditorWindow* inputWindow = (Ship::InputEditorWindow*)(void*)Ship::Context::GetInstance() + ->GetWindow() + ->GetGui() + ->GetGuiWindow("Input Editor") + .get(); + inputWindow->DrawDeviceVisibilityButtons(); + if (inputWindow != nullptr) { + inputWindow->DrawButtonLine(m->buttons.useItemName, 0, 0, m->buttons.useItem, ImVec4(0.4f, 0.4f, 0.4f, 1.0f)); + inputWindow->DrawButtonLine(m->buttons.swapLeftName, 0, 0, m->buttons.swapLeft, ImVec4(0.4f, 0.4f, 0.4f, 1.0f)); + inputWindow->DrawButtonLine(m->buttons.swapRightName, 0, 0, m->buttons.swapRight, ImVec4(0.4f, 0.4f, 0.4f, 1.0f)); + } + + ImGui::SliderAngle("Scroll Direction", &m->carouselDirectionAngle); + + ImGui::InputInt("Carousel Slot Radius", &m->carouselIndexRadius); + + int count = m->slotCount; + ImGui::InputInt("Slot Count", &count); + + if (count != m->slotCount) { + m->resetSlotCount(count); + } + + if (ImGui::CollapsingHeader("Default State##carouselParentState")) { + this->drawSlotState(win, &m->parentState, "##carouselParentState"); + } + if (ImGui::CollapsingHeader("Scrolling State##carouselScrollingState")) { + this->drawSlotState(win, &m->scrollingState, "##carouselScrollingState"); + } + if (ImGui::CollapsingHeader("Scrolling Selected State##carouselScrollingSelectedState")) { + this->drawSlotState(win, &m->scrollingSelectedState, "##carouselScrollingSelectedState"); + } + if (ImGui::CollapsingHeader("Disabled State##carouselDisabledState")) { + this->drawSlotState(win, &m->disabledState, "##carouselDisabledState"); + } + m->saveCVars(); + CVarSave(); +} \ No newline at end of file diff --git a/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/guis/CarouselGUI.h b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/guis/CarouselGUI.h new file mode 100644 index 0000000000..707dec7ca1 --- /dev/null +++ b/mm/2s2h/Enhancements/ArbitraryEquipmentSlots/guis/CarouselGUI.h @@ -0,0 +1,9 @@ +#ifndef _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_CAROUSEL_GUI +#define _2SHIP_ENHANCEMENT_ARBITRARY_ITEM_SLOTS_CAROUSEL_GUI +#include "../ArbitraryItemSlotsGUI.h" + +struct CarouselListerOptions : public ArbitraryItemSlotsListerOptions { + virtual void drawOptions(ArbitraryItemSlotsWindow* win, ArbitraryItemSlotLister* manager) override; +}; + +#endif \ No newline at end of file diff --git a/mm/2s2h/mixer.c b/mm/2s2h/mixer.c index 2e6e45cc94..233acb8e9c 100644 --- a/mm/2s2h/mixer.c +++ b/mm/2s2h/mixer.c @@ -15,7 +15,7 @@ #define ROUND_UP_8(v) (((v) + 7) & ~7) #define ROUND_DOWN_16(v) ((v) & ~0xf) -//#define DMEM_BUF_SIZE (0x1000 - 0x0330 - 0x10 - 0x40) +// #define DMEM_BUF_SIZE (0x1000 - 0x0330 - 0x10 - 0x40) #define DMEM_BUF_SIZE 0xC80 #define BUF_U8(a) (rspa.buf.as_u8 + ((a)-0x0330)) #define BUF_S16(a) (rspa.buf.as_s16 + ((a)-0x0330) / sizeof(int16_t)) diff --git a/mm/2s2h/resource/importer/CutsceneFactory.cpp b/mm/2s2h/resource/importer/CutsceneFactory.cpp index 944d645259..53660ea3b2 100644 --- a/mm/2s2h/resource/importer/CutsceneFactory.cpp +++ b/mm/2s2h/resource/importer/CutsceneFactory.cpp @@ -3,7 +3,7 @@ #include "spdlog/spdlog.h" // TODO headers // extern "C" { -//#include "z64cutscene.h" +// #include "z64cutscene.h" //} typedef enum { /* 0x00A */ CS_CMD_TEXT = 10, diff --git a/mm/CMakeLists.txt b/mm/CMakeLists.txt index b03c9ff59f..1f4a1f7288 100644 --- a/mm/CMakeLists.txt +++ b/mm/CMakeLists.txt @@ -523,6 +523,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang") $<$: #-Werror-implicit-function-declaration -Wno-incompatible-pointer-types + -Wno-int-conversion > $<$:-fpermissive> $<$: diff --git a/mm/include/intent-control-types.h b/mm/include/intent-control-types.h new file mode 100644 index 0000000000..57d1f16b60 --- /dev/null +++ b/mm/include/intent-control-types.h @@ -0,0 +1,40 @@ +#pragma once +#define INTENT_CONTROL_ROLL 1 +#define INTENT_CONTROL_JUMP 2 +#define INTENT_CONTROL_TALK 3 + +// Buttons for firing/shooting +#define INTENT_CONTROL_FIRE_BOW 4 +#define INTENT_CONTROL_FIRE_HOOKSHOT 5 + +#define CAROUSEL_RANGE_START 1000 + +typedef struct CAROUSEL_BUTTONS_TYPE { + char* useItemName; + char* swapLeftName; + char* swapRightName; + unsigned short carouselNumber; + unsigned short useItem; + unsigned short swapRight; + unsigned short swapLeft; +}; + +#define MAKE_CAROUSEL_BUTTONS(num) \ + ((struct CAROUSEL_BUTTONS_TYPE) { \ + "Use Carousel Item " #num,\ + "Swap Carousel Left " #num,\ + "Swap Carousel Right " #num,\ + num, \ + CAROUSEL_RANGE_START + num * 3, \ + CAROUSEL_RANGE_START + num * 3 + 1, \ + CAROUSEL_RANGE_START + num * 3 + 2, \ +}) \ + + +#define CAROUSEL1 MAKE_CAROUSEL_BUTTONS(1) +#define CAROUSEL2 MAKE_CAROUSEL_BUTTONS(2) +#define CAROUSEL3 MAKE_CAROUSEL_BUTTONS(3) +#define CAROUSEL4 MAKE_CAROUSEL_BUTTONS(4) +#define CAROUSEL5 MAKE_CAROUSEL_BUTTONS(5) + +#define INDEXED_CAROUSELS (CAROUSEL_BUTTONS_TYPE[]){CAROUSEL1,CAROUSEL2,CAROUSEL3,CAROUSEL4,CAROUSEL5} \ No newline at end of file diff --git a/mm/include/macros.h b/mm/include/macros.h index 0ed8d52fdf..0c5c5a2d06 100644 --- a/mm/include/macros.h +++ b/mm/include/macros.h @@ -4,6 +4,7 @@ #include "libc/stdint.h" #include "PR/os_convert.h" #include "main.h" +#include "luslog.h" #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 @@ -56,10 +57,20 @@ // To be used with `Magic_Add`, but ensures enough magic is added to fill the magic bar to capacity #define MAGIC_FILL_TO_CAPACITY (((void)0, gSaveContext.magicFillTarget) + (gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER) -#define CHECK_BTN_ALL(state, combo) (~((state) | ~(combo)) == 0) -#define CHECK_BTN_ANY(state, combo) (((state) & (combo)) != 0) +#define _debug_btnAny(state, combo, file, line) ( \ + ((((state) & (combo)) != 0) && (combo & BTN_CRIGHT) ? (lusprintf(file, line, LUSLOG_LEVEL_DEBUG, "BTN_CRIGHT button ANY pressed.\n"),0) : 0 ), \ + (((state) & (combo)) != 0) \ +) -#define CHECK_FLAG_ALL(flags, mask) (((flags) & (mask)) == (mask)) +#define _debug_btnAll(state, combo, file, line) ( \ + ((~((state) | ~(combo)) == 0) && (combo & BTN_CRIGHT) ? (lusprintf(file, line, LUSLOG_LEVEL_DEBUG, "BTN_CRIGHT button ALL pressed.\n"),0) : 0 ), \ + ((~((state) | ~(combo)) == 0) != 0) \ +) + +#define CHECK_BTN_ALL(state, combo) _debug_btnAll(state, combo, __FILE__, __LINE__) +#define CHECK_BTN_ANY(state, combo) _debug_btnAny(state, combo, __FILE__, __LINE__) + +#define CHECK_FLAG_ALL(flags, mask) (((flags) & (mask)) == (mask)) #define BIT_FLAG_TO_SHIFT(flag) \ ((flag & 0x80) ? 7 : \ diff --git a/mm/include/z64.h b/mm/include/z64.h index 64a8888c17..b01879ac9d 100644 --- a/mm/include/z64.h +++ b/mm/include/z64.h @@ -130,6 +130,7 @@ typedef struct PauseContext { /* 0x272 */ u16 equipTargetItem; /* 0x274 */ u16 equipTargetSlot; /* 0x276 */ u16 equipTargetCBtn; + /* 0x276 */ ArbitraryItemEquipButton* equipTargetArbitraryEquip; /* 0x278 */ s16 equipAnimX; /* 0x27A */ s16 equipAnimY; /* 0x27C */ s16 equipAnimAlpha; diff --git a/mm/include/z64interface.h b/mm/include/z64interface.h index d1e99f9a13..1244fbc897 100644 --- a/mm/include/z64interface.h +++ b/mm/include/z64interface.h @@ -283,6 +283,7 @@ void Interface_Dpad_LoadItemIconImpl(struct PlayState* play, u8 btn); void Interface_Dpad_LoadItemIcon(struct PlayState* play, u8 btn); // #endregion void Interface_LoadItemIconImpl(struct PlayState* play, u8 btn); +void Interface_LoadItemIconImplArbitrary(struct PlayState* play, ArbitraryItemEquipButton* btn); void Interface_LoadItemIcon(struct PlayState* play, u8 btn); void Interface_UpdateButtonsAlt(struct PlayState* play, u16 flag); u8 Item_Give(struct PlayState* play, u8 item); @@ -300,6 +301,7 @@ void Inventory_Dpad_UpdateBottleItem(struct PlayState* play, u8 item, u8 btn); void Interface_DrawAutosaveIcon(struct PlayState* play, uint16_t opacity); // #endregion void Inventory_UpdateBottleItem(struct PlayState* play, u8 item, u8 btn); +void Inventory_Arbitrary_UpdateBottleItem(struct PlayState* play, u8 item, ArbitraryItemEquipButton* btn); s32 Inventory_ConsumeFairy(struct PlayState* play); void Inventory_UpdateItem(struct PlayState* play, s16 slot, s16 item); void Interface_SetAButtonDoAction(struct PlayState* play, u16 aButtonDoAction); diff --git a/mm/include/z64player.h b/mm/include/z64player.h index 4b7810b1a1..986869e646 100644 --- a/mm/include/z64player.h +++ b/mm/include/z64player.h @@ -1308,6 +1308,8 @@ typedef struct Player { /* 0xD6A */ s8 unk_D6A; /* 0xD6B */ u8 unk_D6B; /* 0xD6C */ Vec3f unk_D6C; // previous body part 0 position + + ArbitraryItemEquipButton* heldArbitrarySlot; } Player; // size = 0xD78 #ifdef __cplusplus } diff --git a/mm/include/z64save.h b/mm/include/z64save.h index 73cc19e1f4..d210d5ccb3 100644 --- a/mm/include/z64save.h +++ b/mm/include/z64save.h @@ -7,6 +7,7 @@ #include "z64math.h" #include "unk.h" #include "z64item.h" +#include "padutils.h" struct GameState; struct PlayState; @@ -199,12 +200,88 @@ typedef struct SramContext { /* 0x24 */ s16 unk_24; } SramContext; // size = 0x28 +typedef struct ArbitraryItemDrawParams { + s16 rectLeft; + s16 rectTop; + s16 rectWidth; + s16 rectHeight; + u16 dsdx; + u16 dtdy; + s16 r; + s16 g; + s16 b; + s16 a; + + uint8_t visible; + + s16 ammoRectLeft; + s16 ammoRectTop; + s16 ammoTensRectLeft; + s16 ammoTensRectTop; + + s16 ammoRectWidth; + s16 ammoRectHeight; + u16 ammoDsdx; + u16 ammoDtdy; +} ArbitraryItemDrawParams; + +typedef struct ArbitraryItemEquipButton { + void* userData; + + // Logic checks + uint8_t (*canTakeAssignment)(struct ArbitraryItemEquipButton* self, ItemId item); + uint8_t (*assignmentTriggered)(struct ArbitraryItemEquipButton* self, Input* input); + uint8_t (*activateItem)(struct ArbitraryItemEquipButton* self, Input* input, uint8_t buttonState); + uint8_t (*tradeItem)(struct ArbitraryItemEquipButton* self, Input* input); + ArbitraryItemDrawParams (*getDrawParams)(struct ArbitraryItemEquipButton* self, struct PlayState *play); + InventorySlot (*getAssignedItemSlot)(struct ArbitraryItemEquipButton* self); + InventorySlot (*assignItemSlot)(struct ArbitraryItemEquipButton* self, InventorySlot item); + + uint8_t (*setDisabled)(struct ArbitraryItemEquipButton* self, uint8_t disabled); + uint8_t (*isDisabled)(struct ArbitraryItemEquipButton* self); + void (*updateHudAlpha)(struct ArbitraryItemEquipButton* self, struct PlayState *play, HudVisibility hudMode, s16 dimmingAlpha); + + const char* (*getID)(struct ArbitraryItemEquipButton* self); + ItemId (*getAssignedItemID)(struct ArbitraryItemEquipButton* self); +} ArbitraryItemEquipButton; + +typedef struct ArbitraryItemEquipSet { + ArbitraryItemEquipButton *equips; + u8 count; + /** + * Returns the index of the slot with specified item, or -1 if none found. + */ + int (*findSlotWithItem)(struct ArbitraryItemEquipSet* thisSet, uint16_t item); +} ArbitraryItemEquipSet; + +#define ARB_SLOTS(play, input) gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots ? (gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots(&gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, input)) : (ArbitraryItemEquipSet){0,0,0} + +#define FOREACH_SLOT(slots, curentSlotName, code) \ + {\ + ArbitraryItemEquipSet _arbitrarySlotsToIterate = slots; \ + for(size_t _arbitraryItemSlotIndex = 0; _arbitraryItemSlotIndex < _arbitrarySlotsToIterate.count; _arbitraryItemSlotIndex++){\ + ArbitraryItemEquipButton* curentSlotName = &_arbitrarySlotsToIterate.equips[_arbitraryItemSlotIndex];\ + {\ + code \ + }\ + } \ + } + +typedef struct ArbitraryEquipsSlotGetter { + void* userData; + ArbitraryItemEquipSet (*getEquipSlots)(const struct ArbitraryEquipsSlotGetter* self, struct PlayState *play, Input* input); +} ItemEquipsIniter; + typedef struct ItemEquips { /* 0x00 */ u8 buttonItems[4][4]; // "register_item" /* 0x10 */ u8 cButtonSlots[4][4]; // "register_item_pt" /* 0x20 */ u16 equipment; + + struct ArbitraryEquipsSlotGetter equipsSlotGetter; } ItemEquips; // size = 0x22 +extern void initItemEquips(ItemEquips* equips); + typedef struct Inventory { /* 0x00 */ u8 items[48]; // "item_register", first 24 elements are normal items and the other 24 are masks /* 0x30 */ s8 ammo[24]; // "item_count" diff --git a/mm/src/boot/fault.c b/mm/src/boot/fault.c index 46e140e0b8..f03307993f 100644 --- a/mm/src/boot/fault.c +++ b/mm/src/boot/fault.c @@ -1011,9 +1011,9 @@ void Fault_UpdatePad(void) { // Fault_SetOptionsFromController3(); } -//#define FAULT_MSG_CPU_BREAK ((OSMesg)1) -//#define FAULT_MSG_FAULT ((OSMesg)2) -//#define FAULT_MSG_UNK ((OSMesg)3) +// #define FAULT_MSG_CPU_BREAK ((OSMesg)1) +// #define FAULT_MSG_FAULT ((OSMesg)2) +// #define FAULT_MSG_UNK ((OSMesg)3) void Fault_ThreadEntry(void* arg) { #if 0 diff --git a/mm/src/boot/fault_drawer.c b/mm/src/boot/fault_drawer.c index e86b8d7e18..e843213a83 100644 --- a/mm/src/boot/fault_drawer.c +++ b/mm/src/boot/fault_drawer.c @@ -78,7 +78,7 @@ FaultDrawer sFaultDrawerDefault = { }; #endif //! TODO: Needs to be extracted -//#pragma GLOBAL_ASM("asm/non_matchings/boot/fault_drawer/sFaultDrawerFont.s") +// #pragma GLOBAL_ASM("asm/non_matchings/boot/fault_drawer/sFaultDrawerFont.s") void FaultDrawer_SetOsSyncPrintfEnabled(u32 enabled) { // sFaultDrawerInstance->osSyncPrintfEnabled = enabled; diff --git a/mm/src/code/main.c b/mm/src/code/main.c index 046fd99e44..3741b08833 100644 --- a/mm/src/code/main.c +++ b/mm/src/code/main.c @@ -13,6 +13,10 @@ #include "stack.h" #include "stackcheck.h" #include "BenPort.h" +#include "intent-control-types.h" + +#define ARB_EQUIP_ITEM_1 101 +#define ARB_EQUIP_ITEM_2 102 // Variables are put before most headers as a hacky way to bypass bss reordering OSMesgQueue sSerialEventQueue; @@ -57,6 +61,35 @@ void SDL_main(int argc, char** argv /* void* arg*/) { s32 exit; s16* msg; + #define CAROUSEL_REGISTRATION(num) \ + {(CAROUSEL ## num).useItem, (CAROUSEL ## num).useItemName},\ + {(CAROUSEL ## num).swapRight, (CAROUSEL ## num).swapRightName},\ + {(CAROUSEL ## num).swapLeft, (CAROUSEL ## num).swapLeftName}\ + + IntentControlDefinition d[] = { { INTENT_CONTROL_ROLL, "Roll" }, + { INTENT_CONTROL_JUMP, "Jump" }, + { INTENT_CONTROL_TALK, "Talk" }, + { INTENT_CONTROL_FIRE_BOW, "Fire Bow" }, + { INTENT_CONTROL_FIRE_HOOKSHOT, "Fire Hookshot" }, + // { INTENT_HOTSWAP_ITEM_RIGHT, "Swap Item Right" }, + // { INTENT_HOTSWAP_ITEM_LEFT, "Swap Item Left" }, + + // { INTENT_USE_ITEM, "Use Item" }, + { ARB_EQUIP_ITEM_1, "Arbitrary Equipment Button 1" }, + { ARB_EQUIP_ITEM_2, "Arbitrary Equipment Button 2" }, + + // { INTENT_USE_ITEM2, "Use Item 2" }, + // { INTENT_HOTSWAP_ITEM_RIGHT2, "Swap Item Right 2" }, + // { INTENT_HOTSWAP_ITEM_LEFT2, "Swap Item Left 2" }, + + CAROUSEL_REGISTRATION(1), + CAROUSEL_REGISTRATION(2), + CAROUSEL_REGISTRATION(3), + CAROUSEL_REGISTRATION(4), + CAROUSEL_REGISTRATION(5), + }; + setIntentControlDefinitions((IntentControlDefinitionSet){ d, sizeof(d) / sizeof(IntentControlDefinition) }); + // Attach console for windows so we can conditionally display it when running the extractor #ifdef _WIN32 AllocConsole(); diff --git a/mm/src/code/object_table.c b/mm/src/code/object_table.c index f342ef67f3..fb75bd95f1 100644 --- a/mm/src/code/object_table.c +++ b/mm/src/code/object_table.c @@ -15,9 +15,9 @@ ObjectId gObjectTableSize = OBJECT_ID_MAX; #define DEFINE_OBJECT_NULL(name, _1) ROM_FILE(name), #define DEFINE_OBJECT_UNSET(_0) { 0, 0, "" }, #define DEFINE_OBJECT_SIZE_ZERO(name, x) DEFINE_OBJECT_UNSET(aa) -//#define DEFINE_OBJECT(name, _enumValue) { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, -//#define DEFINE_OBJECT_UNSET(_enumValue) { 0, 0 }, -//#define DEFINE_OBJECT_SIZE_ZERO(name, _enumValue) { SEGMENT_ROM_START(name), SEGMENT_ROM_START(name) }, +// #define DEFINE_OBJECT(name, _enumValue) { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, +// #define DEFINE_OBJECT_UNSET(_enumValue) { 0, 0 }, +// #define DEFINE_OBJECT_SIZE_ZERO(name, _enumValue) { SEGMENT_ROM_START(name), SEGMENT_ROM_START(name) }, RomFile gObjectTable[] = { #include "tables/object_table.h" diff --git a/mm/src/code/padmgr.c b/mm/src/code/padmgr.c index 1beb8bfea2..2c1669207f 100644 --- a/mm/src/code/padmgr.c +++ b/mm/src/code/padmgr.c @@ -37,6 +37,7 @@ #include "fault.h" #include #include +#include // extern FaultMgr gFaultMgr; #define PADMGR_RETRACE_MSG (1 << 0) @@ -500,6 +501,20 @@ void PadMgr_UpdateInputs(void) { input->press.button |= (u16)(diff & input->cur.button); input->rel.button |= (u16)(diff & input->prev.button); + if (input->cur.intentControls != input->prev.intentControls) { + input->prev.intentControls = input->cur.intentControls; + } + if (input->cur.intentControls != input->press.intentControls) { + input->press.intentControls = input->cur.intentControls; + } + if (input->cur.intentControls != input->rel.intentControls) { + input->rel.intentControls = input->cur.intentControls; + } + + if (input->cur.intentControls != NULL) { + input->cur.intentControls->updateState(input->cur.intentControls->userData); + } + if (1) {} PadMgr_AdjustInput(input); } diff --git a/mm/src/code/stubs.c b/mm/src/code/stubs.c index dea4cedb92..e7bc7a9e94 100644 --- a/mm/src/code/stubs.c +++ b/mm/src/code/stubs.c @@ -4,7 +4,7 @@ #include #include "BenPort.h" #include "2s2h/Enhancements/FrameInterpolation/FrameInterpolation.h" -//#include +// #include #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 diff --git a/mm/src/code/z_actor_dlftbls.c b/mm/src/code/z_actor_dlftbls.c index 1a6c3f50f5..f75f188f67 100644 --- a/mm/src/code/z_actor_dlftbls.c +++ b/mm/src/code/z_actor_dlftbls.c @@ -15,7 +15,7 @@ #undef DEFINE_ACTOR_UNSET //// Actor Overlay Table definition -//#define DEFINE_ACTOR(name, _enumValue, allocType, _debugName) \ +// #def in e DEFINE_ACTOR(name, _enumValue, allocType, _debugName) \ // { SEGMENT_ROM_START(ovl_##name), \ // SEGMENT_ROM_END(ovl_##name), \ // SEGMENT_START(ovl_##name), \ diff --git a/mm/src/code/z_parameter.c b/mm/src/code/z_parameter.c index de76c56417..726bca72d3 100644 --- a/mm/src/code/z_parameter.c +++ b/mm/src/code/z_parameter.c @@ -1334,6 +1334,9 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 risingAlpha = 255 - dimmingAlpha; + FOREACH_SLOT(ARB_SLOTS(play, CONTROLLER1(&play->state)), arbSlot, + { arbSlot->updateHudAlpha(arbSlot, play, gSaveContext.nextHudVisibility, dimmingAlpha); }) + switch (gSaveContext.nextHudVisibility) { case HUD_VISIBILITY_NONE: case HUD_VISIBILITY_NONE_ALT: @@ -2315,6 +2318,147 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { } } +s16 Interface_UpdateButtonsPart2_ArbitraryButton(PlayState* play, ArbitraryItemEquipButton* arbSlot) { + MessageContext* msgCtx = &play->msgCtx; + InterfaceContext* interfaceCtx = &play->interfaceCtx; + Player* player = GET_PLAYER(play); + s16 restoreHudVisibility = false; + + ItemId arbItemId = arbSlot->getAssignedItemID(arbSlot); + ItemId itemId = arbItemId; + if (GameInteractor_Should(GI_VB_ITEM_BE_RESTRICTED, !gPlayerFormItemRestrictions[GET_PLAYER_FORM][itemId], + &itemId)) { + // Item not usable in current playerForm + if (!arbSlot->isDisabled(arbSlot)) { + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + restoreHudVisibility = true; + } + } else if (player->actor.id != ACTOR_PLAYER) { + // Currently not playing as the main player + if (!arbSlot->isDisabled(arbSlot)) { + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + restoreHudVisibility = true; + } + } else if (player->currentMask == PLAYER_MASK_GIANT) { + // Currently wearing Giant's Mask + if (arbItemId != ITEM_MASK_GIANT) { + if (!arbSlot->isDisabled(arbSlot)) { + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + restoreHudVisibility = true; + } + } else if (arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + arbSlot->setDisabled(arbSlot, BTN_ENABLED); + } + } else if (arbItemId == ITEM_MASK_GIANT) { + // Giant's Mask is equipped + if (play->sceneId != SCENE_INISIE_BS) { + if (!arbSlot->isDisabled(arbSlot)) { + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + restoreHudVisibility = true; + } + } else if (arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + arbSlot->setDisabled(arbSlot, BTN_ENABLED); + } + } else if (arbItemId == ITEM_MASK_FIERCE_DEITY) { + // Fierce Deity's Mask is equipped + u8 vanillaSceneConditionResult = (play->sceneId != SCENE_MITURIN_BS) && (play->sceneId != SCENE_HAKUGIN_BS) && + (play->sceneId != SCENE_SEA_BS) && (play->sceneId != SCENE_INISIE_BS) && + (play->sceneId != SCENE_LAST_BS); + if (GameInteractor_Should(GI_VB_DISABLE_FD_MASK, vanillaSceneConditionResult, NULL)) { + if (!arbSlot->isDisabled(arbSlot)) { + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + restoreHudVisibility = true; + } + } else if (arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + arbSlot->setDisabled(arbSlot, BTN_ENABLED); + } + } else { + // End of special item cases. Apply restrictions to buttons + if (interfaceCtx->restrictions.tradeItems != 0) { + if (((arbItemId >= ITEM_MOONS_TEAR) && (arbItemId <= ITEM_PENDANT_OF_MEMORIES)) || + ((arbItemId >= ITEM_BOTTLE) && (arbItemId <= ITEM_OBABA_DRINK)) || + (arbItemId == ITEM_OCARINA_OF_TIME)) { + if (!arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + } + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + } + } else if (interfaceCtx->restrictions.tradeItems == 0) { + if (((arbItemId >= ITEM_MOONS_TEAR) && (arbItemId <= ITEM_PENDANT_OF_MEMORIES)) || + ((arbItemId >= ITEM_BOTTLE) && (arbItemId <= ITEM_OBABA_DRINK)) || + (arbItemId == ITEM_OCARINA_OF_TIME)) { + if (arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + } + arbSlot->setDisabled(arbSlot, BTN_ENABLED); + } + } + + if (interfaceCtx->restrictions.masks != 0) { + if ((arbItemId >= ITEM_MASK_DEKU) && (arbItemId <= ITEM_MASK_GIANT)) { + if (!arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + } + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + } + } else if (interfaceCtx->restrictions.masks == 0) { + if ((arbItemId >= ITEM_MASK_DEKU) && (arbItemId <= ITEM_MASK_GIANT)) { + if (arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + } + arbSlot->setDisabled(arbSlot, BTN_ENABLED); + } + } + + if (interfaceCtx->restrictions.pictoBox != 0) { + if (arbItemId == ITEM_PICTOGRAPH_BOX) { + if (!arbSlot->isDisabled(arbSlot)) { // == BTN_ENABLED + restoreHudVisibility = true; + } + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + } + } else if (interfaceCtx->restrictions.pictoBox == 0) { + if (arbItemId == ITEM_PICTOGRAPH_BOX) { + if (arbSlot->isDisabled(arbSlot)) { + restoreHudVisibility = true; + } + arbSlot->setDisabled(arbSlot, BTN_ENABLED); + } + } + + if (interfaceCtx->restrictions.all != 0) { + if (!((arbItemId >= ITEM_MOONS_TEAR) && (arbItemId <= ITEM_PENDANT_OF_MEMORIES)) && + !((arbItemId >= ITEM_BOTTLE) && (arbItemId <= ITEM_OBABA_DRINK)) && + (arbItemId != ITEM_OCARINA_OF_TIME) && + !((arbItemId >= ITEM_MASK_DEKU) && (arbItemId <= ITEM_MASK_GIANT)) && + (arbItemId != ITEM_PICTOGRAPH_BOX)) { + + if ((!arbSlot->isDisabled(arbSlot))) { + restoreHudVisibility = true; + arbSlot->setDisabled(arbSlot, BTN_DISABLED); + } + } + } else if (interfaceCtx->restrictions.all == 0) { + if (!((arbItemId >= ITEM_MOONS_TEAR) && (arbItemId <= ITEM_PENDANT_OF_MEMORIES)) && + !((arbItemId >= ITEM_BOTTLE) && (arbItemId <= ITEM_OBABA_DRINK)) && + (arbItemId != ITEM_OCARINA_OF_TIME) && + !((arbItemId >= ITEM_MASK_DEKU) && (arbItemId <= ITEM_MASK_GIANT)) && + (arbItemId != ITEM_PICTOGRAPH_BOX)) { + + if ((arbSlot->isDisabled(arbSlot))) { + restoreHudVisibility = true; + arbSlot->setDisabled(arbSlot, BTN_ENABLED); + } + } + } + } + + return restoreHudVisibility; +} + /** * A continuation of the if-else chain from Interface_UpdateButtonsPart1 * Also used directly when opening the pause menu i.e. skips part 1 @@ -3057,6 +3201,8 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } } // #endregion + FOREACH_SLOT(ARB_SLOTS(play, CONTROLLER1(&play->state)), arbSlot, + { restoreHudVisibility = Interface_UpdateButtonsPart2_ArbitraryButton(play, arbSlot); }) } } @@ -3477,6 +3623,21 @@ void Interface_LoadItemIconImpl(PlayState* play, u8 btn) { // #endregion } +void Interface_LoadItemIconImplArbitrary(PlayState* play, ArbitraryItemEquipButton* arbEquip) { + InterfaceContext* interfaceCtx = &play->interfaceCtx; + // TODO + + // #region 2S2H [Port] + // CmpDma_LoadFile(SEGMENT_ROM_START(icon_item_static_yar), GET_CUR_FORM_BTN_ITEM(EQUIP_SLOT_C_DOWN), + // &interfaceCtx->iconItemSegment[(u32)EQUIP_SLOT_C_DOWN * 0x1000], 0x1000); + // if (arbEquip->assignedItem < ARRAY_COUNT(gItemIcons)) { + // interfaceCtx->iconItemSegment[EQUIP_SLOT_C_DOWN] = gItemIcons[arbEquip->assignedItem]; + // } else { + // interfaceCtx->iconItemSegment[EQUIP_SLOT_C_DOWN] = gEmptyTexture; + // } + // #endregion +} + void Interface_Dpad_LoadItemIcon(PlayState* play, u8 btn) { Interface_Dpad_LoadItemIconImpl(play, btn); } @@ -4307,6 +4468,20 @@ void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn) { } } +void Inventory_Arbitrary_UpdateBottleItem(PlayState* play, u8 item, ArbitraryItemEquipButton* eqp) { + InventorySlot slot = eqp->getAssignedItemSlot(eqp); + gSaveContext.save.saveInfo.inventory.items[slot] = item; + + Interface_LoadItemIconImplArbitrary(play, eqp); + + play->pauseCtx.cursorItem[PAUSE_ITEM] = item; + eqp->setDisabled(eqp, BTN_ENABLED); + + if (item == ITEM_HOT_SPRING_WATER) { + Interface_StartBottleTimer(60, slot - SLOT_BOTTLE_1); + } +} + s32 Inventory_ConsumeFairy(PlayState* play) { u8 bottleSlot = SLOT(ITEM_FAIRY); u8 btn; @@ -4895,6 +5070,10 @@ void Magic_Update(PlayState* play) { (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, CONTROLLER1(&play->state)); + int lensOfTruthIndex = slots.findSlotWithItem(&slots, ITEM_LENS_OF_TRUTH); + if ((gSaveContext.save.saveInfo.playerData.magic == 0) || ((Player_GetEnvironmentalHazard(play) >= PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) && (Player_GetEnvironmentalHazard(play) <= PLAYER_ENV_HAZARD_UNDERWATER_FREE)) || @@ -4906,8 +5085,9 @@ void Magic_Update(PlayState* play) { (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) != ITEM_LENS_OF_TRUTH) && (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) != ITEM_LENS_OF_TRUTH) && (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) != ITEM_LENS_OF_TRUTH) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) != ITEM_LENS_OF_TRUTH))) || - // #endregion + (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) != ITEM_LENS_OF_TRUTH)) + // #endregion + && (lensOfTruthIndex < 0)) || !play->actorCtx.lensActive) { // Deactivate Lens of Truth and set magic state to idle play->actorCtx.lensActive = false; @@ -5221,6 +5401,9 @@ void Interface_SetOrthoView(InterfaceContext* interfaceCtx) { View_ApplyOrthoToOverlay(&interfaceCtx->view); } +void Interface_DrawItemCButton(uint8_t cButton) { +} + void Interface_DrawItemButtons(PlayState* play) { static TexturePtr cUpLabelTextures[] = { gTatlCUpENGTex, gTatlCUpENGTex, gTatlCUpGERTex, gTatlCUpFRATex, gTatlCUpESPTex, @@ -5268,6 +5451,21 @@ void Interface_DrawItemButtons(PlayState* play) { 100, 255, 120, interfaceCtx->bAlpha); gDPPipeSync(OVERLAY_DISP++); + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, CONTROLLER1(&play->state)); + + for (uint8_t i = 0; i < slots.count; i++) { + ArbitraryItemEquipButton* eqBtn = &slots.equips[i]; + ArbitraryItemDrawParams drawParams = eqBtn->getDrawParams(eqBtn, play); + if (!drawParams.visible) { + continue; + } + // HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_C_LEFT); + OVERLAY_DISP = Gfx_DrawRect_DropShadow( + OVERLAY_DISP, drawParams.rectLeft, drawParams.rectTop, drawParams.rectWidth, drawParams.rectHeight, + drawParams.dsdx * 2, drawParams.dtdy * 2, drawParams.r, drawParams.g, drawParams.b, drawParams.a); + } + // C-Left Button Color & Texture HudEditor_SetActiveElement(HUD_EDITOR_ELEMENT_C_LEFT); OVERLAY_DISP = Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D4[EQUIP_SLOT_C_LEFT], D_801BF9DC[EQUIP_SLOT_C_LEFT], @@ -5595,6 +5793,48 @@ void Interface_DrawItemIconTexture(PlayState* play, TexturePtr texture, s16 butt CLOSE_DISPS(play->state.gfxCtx); } +void Interface_DrawItemIconTextureArb(PlayState* play, TexturePtr texture, ArbitraryItemEquipButton* arbEquipment) { + static s16 D_801BFAFC[] = { 30, 24, 24, 24 }; + + OPEN_DISPS(play->state.gfxCtx); + + gDPLoadTextureBlock(OVERLAY_DISP++, texture, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + // #region 2S2H [Cosmetic] Hud Editor + // HudEditor_SetActiveElement(button); + ArbitraryItemDrawParams drawParams = arbEquipment->getDrawParams(arbEquipment, play); + if (HudEditor_ShouldOverrideDraw()) { + if (CVarGetInteger(hudEditorElements[hudEditorActiveElement].modeCvar, HUD_EDITOR_ELEMENT_MODE_VANILLA) == + HUD_EDITOR_ELEMENT_MODE_HIDDEN) { + hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE; + } else { + // All of this information was derived from the original call to gSPTextureRectangle below + s16 rectLeft = drawParams.rectLeft; + s16 rectTop = drawParams.rectTop; + s16 rectWidth = drawParams.rectWidth; + s16 rectHeight = drawParams.rectHeight; + s16 dsdx = drawParams.dsdx; + s16 dtdy = drawParams.dtdy; + + HudEditor_ModifyDrawValues(&rectLeft, &rectTop, &rectWidth, &rectHeight, &dsdx, &dtdy); + + hudEditorActiveElement = HUD_EDITOR_ELEMENT_NONE; + + gSPWideTextureRectangle(OVERLAY_DISP++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2, + (rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx << 1, dtdy << 1); + } + // #endregion + } else { + gSPTextureRectangle(OVERLAY_DISP++, drawParams.rectLeft << 2, drawParams.rectTop << 2, + (drawParams.rectLeft + drawParams.rectWidth) << 2, + (drawParams.rectTop + drawParams.rectHeight) << 2, G_TX_RENDERTILE, 0, 0, + drawParams.dsdx << 1, drawParams.dtdy << 1); + } + + CLOSE_DISPS(play->state.gfxCtx); +} + s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 }; s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 }; @@ -5671,6 +5911,77 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { CLOSE_DISPS(play->state.gfxCtx); } +void Interface_DrawAmmoCountArbEquip(PlayState* play, ArbitraryItemEquipButton* arbEquip, s16 alpha) { + u8 i; + u16 ammo; + OPEN_DISPS(play->state.gfxCtx); + i = arbEquip->getAssignedItemID(arbEquip); + + if ((i == ITEM_DEKU_STICK) || (i == ITEM_DEKU_NUT) || (i == ITEM_BOMB) || (i == ITEM_BOW) || + ((i >= ITEM_BOW_FIRE) && (i <= ITEM_BOW_LIGHT)) || (i == ITEM_BOMBCHU) || (i == ITEM_POWDER_KEG) || + (i == ITEM_MAGIC_BEANS) || (i == ITEM_PICTOGRAPH_BOX)) { + + if ((i >= ITEM_BOW_FIRE) && (i <= ITEM_BOW_LIGHT)) { + i = ITEM_BOW; + } + + ammo = AMMO(i); + + if (i == ITEM_PICTOGRAPH_BOX) { + if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { + ammo = 0; + } else { + ammo = 1; + } + } + + gDPPipeSync(OVERLAY_DISP++); + // @bug Missing a gDPSetEnvColor here, which means the ammo count will be drawn with the last env color set. + // Once you have the magic meter, this becomes a non issue, as the magic meter will set the color to black, + // but prior to that, when certain conditions are met, the color will have last been set by the wallet icon + // causing the ammo count to be drawn incorrectly. This is most obvious when you get deku nuts early on, and + // the ammo count is drawn with a shade of green. + if (CVarGetInteger("gFixes.FixAmmoCountEnvColor", 0)) { + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + } + + if (((i == ITEM_BOW) && (AMMO(i) == CUR_CAPACITY(UPG_QUIVER))) || + ((i == ITEM_BOMB) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) || + ((i == ITEM_DEKU_STICK) && (AMMO(i) == CUR_CAPACITY(UPG_DEKU_STICKS))) || + ((i == ITEM_DEKU_NUT) && (AMMO(i) == CUR_CAPACITY(UPG_DEKU_NUTS))) || + ((i == ITEM_BOMBCHU) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) || + ((i == ITEM_POWDER_KEG) && (ammo == 1)) || ((i == ITEM_PICTOGRAPH_BOX) && (ammo == 1)) || + ((i == ITEM_MAGIC_BEANS) && (ammo == 20))) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, alpha); + } + + if ((u32)ammo == 0) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, alpha); + } + + for (i = 0; ammo >= 10; i++) { + ammo -= 10; + } + + ArbitraryItemDrawParams drawParams = arbEquip->getDrawParams(arbEquip, play); + // Draw upper digit (tens) + if ((u32)i != 0) { + // HudEditor_SetActiveElement(button); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gAmmoDigitTextures[i], 8, 8, drawParams.ammoRectLeft, + drawParams.ammoRectTop, drawParams.ammoRectWidth, + drawParams.ammoRectHeight, drawParams.ammoDsdx, drawParams.ammoDtdy); + } + + // Draw lower digit (ones) + // HudEditor_SetActiveElement(button); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gAmmoDigitTextures[ammo], 8, 8, drawParams.ammoTensRectLeft, + drawParams.ammoTensRectTop, drawParams.ammoRectWidth, + drawParams.ammoRectHeight, drawParams.ammoDsdx, drawParams.ammoDtdy); + } + + CLOSE_DISPS(play->state.gfxCtx); +} + void Interface_DrawBButtonIcons(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; Player* player = GET_PLAYER(play); @@ -5813,6 +6124,31 @@ void Interface_DrawCButtonIcons(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, CONTROLLER1(&play->state)); + + for (uint8_t i = 0; i < slots.count; i++) { + ArbitraryItemEquipButton* eqBtn = &slots.equips[i]; + ArbitraryItemDrawParams drawParams = eqBtn->getDrawParams(eqBtn, play); + if (!drawParams.visible) { + continue; + } + + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, drawParams.a); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + ItemId item = eqBtn->getAssignedItemID(eqBtn); + + if (item == ITEM_NONE) { + Interface_DrawItemIconTextureArb(play, gEmptyTexture, eqBtn); + } else { + Interface_DrawItemIconTextureArb(play, gItemIcons[item], eqBtn); + } + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + Interface_DrawAmmoCountArbEquip(play, eqBtn, drawParams.a); + } + // C-Left Button Icon & Ammo Count if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) < ITEM_F0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cLeftAlpha); @@ -8892,6 +9228,9 @@ void Interface_Update(PlayState* play) { Interface_UpdateButtonAlphasByStatus(play, risingAlpha); + FOREACH_SLOT(ARB_SLOTS(play, CONTROLLER1(&play->state)), arbSlot, + { arbSlot->updateHudAlpha(arbSlot, play, HUD_VISIBILITY_ALL, dimmingAlpha); }) + if (gSaveContext.buttonStatus[5] == BTN_DISABLED) { if (interfaceCtx->startAlpha != 70) { interfaceCtx->startAlpha = 70; diff --git a/mm/src/code/z_player_lib.c b/mm/src/code/z_player_lib.c index 01556acc8e..7839f10416 100644 --- a/mm/src/code/z_player_lib.c +++ b/mm/src/code/z_player_lib.c @@ -676,6 +676,33 @@ PlayerItemAction func_80123810(PlayState* play) { } } } + + initItemEquips(&gSaveContext.save.saveInfo.equips); + + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, CONTROLLER1(&play->state)); + + for (uint16_t arbIndex = 0; arbIndex < slots.count; arbIndex++) { + ArbitraryItemEquipButton* arb = &slots.equips[arbIndex]; + if (arb->tradeItem(arb, CONTROLLER1(&play->state))) { + play->interfaceCtx.unk_222 = 0; + play->interfaceCtx.unk_224 = 0; + Interface_SetHudVisibility(play->msgCtx.hudVisibility); + itemId = arb->getAssignedItemID(arb); + + if ((itemId >= ITEM_FD) || ((itemAction = play->unk_18794(play, player, itemId)) <= PLAYER_IA_MINUS1)) { + Audio_PlaySfx(NA_SE_SY_ERROR); + return PLAYER_IA_MINUS1; + } else { + s32 pad; + + player->heldItemButton = EQUIP_SLOT_MAX; + player->heldArbitrarySlot = arb; + return itemAction; + } + } + } + // #region 2S2H [Dpad] if (CVarGetInteger("gEnhancements.Dpad.DpadEquips", 0)) { for (i = 0; i < ARRAY_COUNT(sDItemButtons); i++) { @@ -1368,8 +1395,11 @@ void Player_SetEquipmentData(PlayState* play, Player* player) { } void Player_UpdateBottleHeld(PlayState* play, Player* player, ItemId itemId, PlayerItemAction itemAction) { + if (player->heldItemButton == EQUIP_SLOT_MAX && player->heldArbitrarySlot != NULL) { + Inventory_Arbitrary_UpdateBottleItem(play, itemId, player->heldArbitrarySlot); + } // #region 2S2H [Dpad] - if (IS_HELD_DPAD(player->heldItemButton)) { + else if (IS_HELD_DPAD(player->heldItemButton)) { Inventory_Dpad_UpdateBottleItem(play, itemId, HELD_ITEM_TO_DPAD(player->heldItemButton)); } else { Inventory_UpdateBottleItem(play, itemId, player->heldItemButton); diff --git a/mm/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c b/mm/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c index 686e9572bf..ccdcc0fdb2 100644 --- a/mm/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c +++ b/mm/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c @@ -8,6 +8,7 @@ #include "objects/gameplay_keep/gameplay_keep.h" #include "objects/object_link_child/object_link_child.h" #include "2s2h/Enhancements/GameInteractor/GameInteractor.h" +#include "intent-control-types.h": #define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20) @@ -266,7 +267,9 @@ void ArmsHook_Shoot(ArmsHook* this, PlayState* play) { CollisionCheck_SpawnShieldParticlesMetal(play, &this->actor.world.pos); Audio_PlaySfx_AtPos(&this->actor.projectedPos, NA_SE_IT_HOOKSHOT_REFLECT); } - } else if (CHECK_BTN_ANY(CONTROLLER1(&play->state)->press.button, BTN_A | BTN_B | BTN_R | BTN_CUP | BTN_CLEFT | + } else if (CHECK_INTENT(CONTROLLER1(&play->state)->rel.intentControls, INTENT_CONTROL_FIRE_HOOKSHOT, + BUTTON_STATE_REL, 0) || + CHECK_BTN_ANY(CONTROLLER1(&play->state)->press.button, BTN_A | BTN_B | BTN_R | BTN_CUP | BTN_CLEFT | BTN_CRIGHT | BTN_CDOWN | BTN_DPAD_EQUIP)) { s32 pad; diff --git a/mm/src/overlays/actors/ovl_En_Raf/z_en_raf.c b/mm/src/overlays/actors/ovl_En_Raf/z_en_raf.c index 6619564e75..e79a253438 100644 --- a/mm/src/overlays/actors/ovl_En_Raf/z_en_raf.c +++ b/mm/src/overlays/actors/ovl_En_Raf/z_en_raf.c @@ -622,8 +622,8 @@ void EnRaf_Dissolve(EnRaf* this, PlayState* play) { this->dissolveTimer++; if (this->dissolveTimer < (BREG(3) + 105)) { for (i = 0; i < (BREG(4) + 5); i++) { - //#region 2S2H [Port] Instead of directly zeroing the texture pixels, set a texture mask. - // Applies to both loops. + // #region 2S2H [Port] Instead of directly zeroing the texture pixels, set a texture mask. + // Applies to both loops. EnRaf_ClearPixelPetal(sCurPetalMask, sPetalClearPixelTableFirstPass, this->petalClearPixelFirstPassIndex); EnRaf_ClearPixelTeeth(sCurTeethMask, sTeethClearPixelTableFirstPass, diff --git a/mm/src/overlays/actors/ovl_player_actor/z_player.c b/mm/src/overlays/actors/ovl_player_actor/z_player.c index f3a173303d..53a408601a 100644 --- a/mm/src/overlays/actors/ovl_player_actor/z_player.c +++ b/mm/src/overlays/actors/ovl_player_actor/z_player.c @@ -46,6 +46,7 @@ #include "objects/object_link_child/object_link_child.h" #include "2s2h/Enhancements/GameInteractor/GameInteractor.h" +#include "intent-control-types.h" #define THIS ((Player*)thisx) @@ -3606,6 +3607,21 @@ s32 Player_ItemIsInUse(Player* this, ItemId item) { return false; } } +s32 Player_ItemIsInUseAnyArbitraryEquipment(Player* this) { + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, NULL, NULL); + for (size_t i = 0; i < slots.count; i++) { + ArbitraryItemEquipButton* e = &slots.equips[i]; + + ItemId item = e->getAssignedItemID(e); + + if ((item < ITEM_FD) && (Player_ItemToItemAction(this, item) == this->itemAction)) { + return true; + } + } + + return false; +} s32 Player_ItemIsItemAction(Player* this, ItemId item, PlayerItemAction itemAction) { if ((item < ITEM_FD) && (Player_ItemToItemAction(this, item) == itemAction)) { @@ -3715,7 +3731,21 @@ void Player_ProcessItemButtons(Player* this, PlayState* play) { } // #endregion - if (btn <= EQUIP_SLOT_NONE) { + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, NULL, NULL); + ArbitraryItemEquipButton* targetArbSlot = NULL; + for (size_t i = 0; i < slots.count; i++) { + ArbitraryItemEquipButton* e = &slots.equips[i]; + + ItemId item = e->getAssignedItemID(e); + + if (Player_ItemIsItemAction(this, item, maskItemAction)) { + targetArbSlot = e; + break; + } + } + + if (btn <= EQUIP_SLOT_NONE && targetArbSlot == NULL) { // #region 2S2H [Dpad] - need to convert between helditem value to actual item ItemId maskItem; if (IS_HELD_DPAD(this->unk_154)) { @@ -3754,7 +3784,8 @@ void Player_ProcessItemButtons(Player* this, PlayState* play) { // #end region Player_ItemIsInUse(this, C_BTN_ITEM(EQUIP_SLOT_C_LEFT)) || Player_ItemIsInUse(this, C_BTN_ITEM(EQUIP_SLOT_C_DOWN)) || - Player_ItemIsInUse(this, C_BTN_ITEM(EQUIP_SLOT_C_RIGHT))))) { + Player_ItemIsInUse(this, C_BTN_ITEM(EQUIP_SLOT_C_RIGHT)) || + Player_ItemIsInUseAnyArbitraryEquipment(this)))) { Player_UseItem(play, this, ITEM_NONE); } else { s32 pad; @@ -3781,6 +3812,20 @@ void Player_ProcessItemButtons(Player* this, PlayState* play) { } // #endregion + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, CONTROLLER1(&play->state)); + ArbitraryItemEquipButton* arbitraryEquipSlot = NULL; + for (size_t arbIndex = 0; arbIndex < slots.count; arbIndex++) { + ArbitraryItemEquipButton* arb = &slots.equips[arbIndex]; + if (arb->activateItem(arb, sPlayerControlInput, BUTTON_STATE_PRESS)) { + arbitraryEquipSlot = arb; + + i = EQUIP_SLOT_MAX; + item = arb->getAssignedItemID(arb); + break; + } + } + if (item >= ITEM_FD) { for (i = 0; i < ARRAY_COUNT(sPlayerItemButtons); i++) { if (CHECK_BTN_ALL(sPlayerControlInput->cur.button, sPlayerItemButtons[i])) { @@ -3789,6 +3834,17 @@ void Player_ProcessItemButtons(Player* this, PlayState* play) { } item = Player_GetItemOnButton(play, this, i); + + for (size_t arbIndex = 0; arbIndex < slots.count; arbIndex++) { + ArbitraryItemEquipButton* arb = &slots.equips[arbIndex]; + if (arb->activateItem(arb, sPlayerControlInput, BUTTON_STATE_CUR)) { + i = EQUIP_SLOT_MAX; + + item = arb->getAssignedItemID(arb); + break; + } + } + if ((item < ITEM_FD) && (Player_ItemToItemAction(this, item) == this->heldItemAction)) { sPlayerHeldItemButtonIsHeldDown = true; } @@ -3830,6 +3886,7 @@ void Player_ProcessItemButtons(Player* this, PlayState* play) { } } else { this->heldItemButton = i; + this->heldArbitrarySlot = arbitraryEquipSlot; Player_UseItem(play, this, item); } } @@ -7794,7 +7851,8 @@ s32 Player_ActionChange_4(Player* this, PlayState* play) { return false; } - if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A) || + if (CHECK_INTENT((sPlayerControlInput->press.intentControls), INTENT_CONTROL_TALK, + BUTTON_STATE_PRESS, 0) || (talkActor->flags & ACTOR_FLAG_10000)) { var_a1 = NULL; } else if (var_a1 == NULL) { @@ -7970,7 +8028,7 @@ s32 func_80839A84(PlayState* play, Player* this) { } s32 Player_ActionChange_10(Player* this, PlayState* play) { - if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A) && + if (CHECK_INTENT((sPlayerControlInput->press.intentControls), INTENT_CONTROL_JUMP, BUTTON_STATE_PRESS, 0) && (play->roomCtx.curRoom.behaviorType1 != ROOM_BEHAVIOR_TYPE1_2) && (sPlayerFloorType != FLOOR_TYPE_7) && (sPlayerFloorEffect != FLOOR_EFFECT_1)) { s32 temp_a2 = this->unk_AE3[this->unk_ADE]; @@ -8100,7 +8158,9 @@ s32 Player_ActionChange_6(Player* this, PlayState* play) { if (!D_80862B04 && !(this->stateFlags1 & PLAYER_STATE1_800000) && !func_8082FB68(this)) { if ((this->transformation == PLAYER_FORM_ZORA) && (this->stateFlags1 & PLAYER_STATE1_8000000)) { func_8083A04C(this); - } else if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A) && !func_8082FB68(this)) { + } else if (CHECK_INTENT((sPlayerControlInput->press.intentControls), INTENT_CONTROL_ROLL, BUTTON_STATE_PRESS, + 0) && + !func_8082FB68(this)) { if (this->transformation == PLAYER_FORM_GORON) { if (func_80839F98(play, this)) { return true; @@ -17535,6 +17595,38 @@ void Player_Action_68(Player* this, PlayState* play) { } } // #endregion + else { + FOREACH_SLOT(ARB_SLOTS(play, CONTROLLER1(&play->state)), arbSlot, { + ItemId item = arbSlot->getAssignedItemID(arbSlot); + if (item == ITEM_BOTTLE) { + Actor* interactRangeActor = this->interactRangeActor; + + if (interactRangeActor != NULL) { + struct_8085D798* entry = D_8085D798; + s32 i; + + for (i = 0; i < ARRAY_COUNT(D_8085D798); i++) { + if (((interactRangeActor->id == entry->actorId) && + ((entry->actorParams <= BOTTLE_CATCH_PARAMS_ANY) || + (interactRangeActor->params == entry->actorParams)))) { + break; + } + entry++; + } + + if (i < ARRAY_COUNT(D_8085D798)) { + this->av1.actionVar1 = i + 1; + this->av2.actionVar2 = 0; + this->stateFlags1 |= PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000; + interactRangeActor->parent = &this->actor; + Player_UpdateBottleHeld(play, this, entry->itemId, entry->itemAction); + func_8082DB90(play, this, sp24->unk_4); + } + } + break; + } + }) + } } } diff --git a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c index 1bb67221fa..0d0e039b32 100644 --- a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c +++ b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c @@ -393,6 +393,9 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; pauseCtx->nameColorSet = PAUSE_NAME_COLOR_SET_WHITE; + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, CONTROLLER1(&play->state)); + if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_ITEM) && !pauseCtx->itemDescriptionOn) { moveCursorResult = PAUSE_CURSOR_RESULT_NONE; @@ -625,11 +628,24 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { pauseCtx->cursorItem[PAUSE_ITEM] = cursorItem; pauseCtx->cursorSlot[PAUSE_ITEM] = cursorSlot; if (cursorItem != PAUSE_ITEM_NONE) { + uint8_t arbEquipAccepts = 0; + pauseCtx->equipTargetArbitraryEquip = NULL; + for (size_t arbIndex = 0; arbIndex < slots.count; arbIndex++) { + ArbitraryItemEquipButton* targetArb = &slots.equips[arbIndex]; + if (targetArb->canTakeAssignment && targetArb->canTakeAssignment(targetArb, cursorItem) && + targetArb->assignmentTriggered && + targetArb->assignmentTriggered(targetArb, CONTROLLER1(&play->state))) { + arbEquipAccepts = 1; + pauseCtx->equipTargetArbitraryEquip = targetArb; + break; + } + } // Equip item to the C buttons if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && !pauseCtx->itemDescriptionOn && (pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && - CHECK_BTN_ANY(CONTROLLER1(&play->state)->press.button, - BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT | BTN_DPAD_EQUIP)) { + (CHECK_BTN_ANY(CONTROLLER1(&play->state)->press.button, + BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT | BTN_DPAD_EQUIP) || + arbEquipAccepts)) { // Ensure that a transformation mask can not be unequipped while being used if (GET_PLAYER_FORM != PLAYER_FORM_HUMAN) { @@ -678,8 +694,11 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { // #endregion } + if (arbEquipAccepts) { + + } // Ensure that a non-transformation mask can not be unequipped while being used - if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_CLEFT)) { + else if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_CLEFT)) { if ((Player_GetCurMaskItemId(play) != ITEM_NONE) && (Player_GetCurMaskItemId(play) == BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT))) { Audio_PlaySfx(NA_SE_SY_ERROR); @@ -1467,6 +1486,175 @@ void KaleidoScope_UpdateDpadItemEquip(PlayState* play) { } // #endregion +void KaleidoScope_AssignCButtonEquip(PlayState* play, PauseContext* pauseCtx, uint8_t form, uint8_t button) { + BUTTON_ITEM_EQUIP(form, button) = pauseCtx->equipTargetItem; + C_SLOT_EQUIP(form, button) = pauseCtx->equipTargetSlot; + Interface_LoadItemIconImpl(play, button); +} + +void KaleidoScope_AssignArbitraryButtonEquip(PlayState* play, PauseContext* pauseCtx, uint8_t form, + ArbitraryItemEquipButton* arbEquip) { + arbEquip->assignItemSlot(arbEquip, pauseCtx->equipTargetSlot); + Interface_LoadItemIconImplArbitrary(play, arbEquip); +} + +void KaleifoScope_SetCButton_01(PauseContext* pauseCtx, PlayState* play, uint8_t cSlot, uint8_t equipmentCSlot) { + if ((BUTTON_ITEM_EQUIP(0, cSlot) & 0xFF) != ITEM_NONE) { + if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8) && + (((BUTTON_ITEM_EQUIP(0, cSlot) & 0xFF) == ITEM_BOW) || + (((BUTTON_ITEM_EQUIP(0, cSlot) & 0xFF) >= ITEM_BOW_FIRE) && + ((BUTTON_ITEM_EQUIP(0, cSlot) & 0xFF) <= ITEM_BOW_LIGHT)))) { + pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; + pauseCtx->equipTargetSlot = SLOT_BOW; + } else { + BUTTON_ITEM_EQUIP(0, equipmentCSlot) = BUTTON_ITEM_EQUIP(0, cSlot); + C_SLOT_EQUIP(0, equipmentCSlot) = C_SLOT_EQUIP(0, cSlot); + Interface_LoadItemIcon(play, equipmentCSlot); + } + } else { + BUTTON_ITEM_EQUIP(0, equipmentCSlot) = ITEM_NONE; + C_SLOT_EQUIP(0, equipmentCSlot) = SLOT_NONE; + } +} + +void KaleifoScope_SetCButton(PauseContext* pauseCtx, PlayState* play, uint8_t cSlot) { + uint8_t other1; + uint8_t other2; + + if (cSlot == EQUIP_SLOT_C_LEFT) { + other1 = EQUIP_SLOT_C_DOWN; + other2 = EQUIP_SLOT_C_RIGHT; + } else if (cSlot == EQUIP_SLOT_C_DOWN) { + other1 = EQUIP_SLOT_C_RIGHT; + other2 = EQUIP_SLOT_C_LEFT; + } else { + other1 = EQUIP_SLOT_C_LEFT; + other2 = EQUIP_SLOT_C_DOWN; + } + + // Swap if item is already equipped on CDown or CRight. + if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, other1)) { + KaleifoScope_SetCButton_01(pauseCtx, play, cSlot, other1); + } else if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, other2)) { + KaleifoScope_SetCButton_01(pauseCtx, play, cSlot, other2); + } + // #region 2S2H [Dpad] + KaleidoScope_SwapDpadItemToCItem(play, cSlot); + // #endregion + + // Special case for magic arrows + if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8)) { + if ((BUTTON_ITEM_EQUIP(0, cSlot) == ITEM_BOW) || + ((BUTTON_ITEM_EQUIP(0, cSlot) >= ITEM_BOW_FIRE) && (BUTTON_ITEM_EQUIP(0, cSlot) <= ITEM_BOW_LIGHT))) { + pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; + pauseCtx->equipTargetSlot = SLOT_BOW; + } + } else if (pauseCtx->equipTargetItem == ITEM_BOW) { + if ((BUTTON_ITEM_EQUIP(0, other1) >= ITEM_BOW_FIRE) && (BUTTON_ITEM_EQUIP(0, other1) <= ITEM_BOW_LIGHT)) { + BUTTON_ITEM_EQUIP(0, other1) = BUTTON_ITEM_EQUIP(0, cSlot); + C_SLOT_EQUIP(0, other1) = C_SLOT_EQUIP(0, cSlot); + Interface_LoadItemIcon(play, other1); + } else if ((BUTTON_ITEM_EQUIP(0, other2) >= ITEM_BOW_FIRE) && + (BUTTON_ITEM_EQUIP(0, other2) <= ITEM_BOW_LIGHT)) { + BUTTON_ITEM_EQUIP(0, other2) = BUTTON_ITEM_EQUIP(0, cSlot); + C_SLOT_EQUIP(0, other2) = C_SLOT_EQUIP(0, cSlot); + Interface_LoadItemIcon(play, other2); + } + // #region 2S2H [Dpad] + // Note Only C-Left has the swap of 'slot equips' here + if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) >= ITEM_BOW_FIRE) && + (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) <= ITEM_BOW_LIGHT)) { + DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) = BUTTON_ITEM_EQUIP(0, cSlot); + DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_RIGHT) = C_SLOT_EQUIP(0, cSlot); + Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_RIGHT); + } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) >= ITEM_BOW_FIRE) && + (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) <= ITEM_BOW_LIGHT)) { + DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) = BUTTON_ITEM_EQUIP(0, cSlot); + DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_LEFT) = C_SLOT_EQUIP(0, cSlot); + Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_LEFT); + } else if ((DPAD_BUTTON_ITEM_EQUIP(0, other1) >= ITEM_BOW_FIRE) && + (DPAD_BUTTON_ITEM_EQUIP(0, other1) <= ITEM_BOW_LIGHT)) { + DPAD_BUTTON_ITEM_EQUIP(0, other1) = BUTTON_ITEM_EQUIP(0, cSlot); + DPAD_SLOT_EQUIP(0, other1) = C_SLOT_EQUIP(0, cSlot); + Interface_Dpad_LoadItemIcon(play, other1); + } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) >= ITEM_BOW_FIRE) && + (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) <= ITEM_BOW_LIGHT)) { + DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) = BUTTON_ITEM_EQUIP(0, cSlot); + DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_UP) = C_SLOT_EQUIP(0, cSlot); + Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_UP); + } + // #endregion + } + + // Equip item on CLeft + KaleidoScope_AssignCButtonEquip(play, pauseCtx, 0, cSlot); + // BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = pauseCtx->equipTargetItem; + // C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT) = pauseCtx->equipTargetSlot; + // Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_LEFT); +} + +void KaleifoScope_SetArbitraryButton(PauseContext* pauseCtx, PlayState* play, ArbitraryItemEquipButton* arbEquip) { + // TODO: Swap logic + // Swap if item is already equipped on CDown or CRight. + // if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, other1)) { + // KaleifoScope_SetCButton_01(pauseCtx, play, cSlot, other1); + // } else if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, other2)) { + // KaleifoScope_SetCButton_01(pauseCtx, play, cSlot, other2); + // } + + // Special case for magic arrows + // if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8)) { + // if ((BUTTON_ITEM_EQUIP(0, cSlot) == ITEM_BOW) || + // ((BUTTON_ITEM_EQUIP(0, cSlot) >= ITEM_BOW_FIRE) && + // (BUTTON_ITEM_EQUIP(0, cSlot) <= ITEM_BOW_LIGHT))) { + // pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; + // pauseCtx->equipTargetSlot = SLOT_BOW; + // } + // } else if (pauseCtx->equipTargetItem == ITEM_BOW) { + // if ((BUTTON_ITEM_EQUIP(0, other1) >= ITEM_BOW_FIRE) && + // (BUTTON_ITEM_EQUIP(0, other1) <= ITEM_BOW_LIGHT)) { + // BUTTON_ITEM_EQUIP(0, other1) = BUTTON_ITEM_EQUIP(0, cSlot); + // C_SLOT_EQUIP(0, other1) = C_SLOT_EQUIP(0, cSlot); + // Interface_LoadItemIcon(play, other1); + // } else if ((BUTTON_ITEM_EQUIP(0, other2) >= ITEM_BOW_FIRE) && + // (BUTTON_ITEM_EQUIP(0, other2) <= ITEM_BOW_LIGHT)) { + // BUTTON_ITEM_EQUIP(0, other2) = BUTTON_ITEM_EQUIP(0, cSlot); + // C_SLOT_EQUIP(0, other2) = C_SLOT_EQUIP(0, cSlot); + // Interface_LoadItemIcon(play, other2); + // } + // // #region 2S2H [Dpad] + // // Note Only C-Left has the swap of 'slot equips' here + // if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) >= ITEM_BOW_FIRE) && + // (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) <= ITEM_BOW_LIGHT)) { + // DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) = BUTTON_ITEM_EQUIP(0, cSlot); + // DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_RIGHT) = C_SLOT_EQUIP(0, cSlot); + // Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_RIGHT); + // } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) >= ITEM_BOW_FIRE) && + // (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) <= ITEM_BOW_LIGHT)) { + // DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) = BUTTON_ITEM_EQUIP(0, cSlot); + // DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_LEFT) = C_SLOT_EQUIP(0, cSlot); + // Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_LEFT); + // } else if ((DPAD_BUTTON_ITEM_EQUIP(0, other1) >= ITEM_BOW_FIRE) && + // (DPAD_BUTTON_ITEM_EQUIP(0, other1) <= ITEM_BOW_LIGHT)) { + // DPAD_BUTTON_ITEM_EQUIP(0, other1) = BUTTON_ITEM_EQUIP(0, cSlot); + // DPAD_SLOT_EQUIP(0, other1) = C_SLOT_EQUIP(0, cSlot); + // Interface_Dpad_LoadItemIcon(play, other1); + // } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) >= ITEM_BOW_FIRE) && + // (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) <= ITEM_BOW_LIGHT)) { + // DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) = BUTTON_ITEM_EQUIP(0, cSlot); + // DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_UP) = C_SLOT_EQUIP(0, cSlot); + // Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_UP); + // } + // // #endregion + // } + + // Equip item on CLeft + KaleidoScope_AssignArbitraryButtonEquip(play, pauseCtx, 0, arbEquip); + // BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = pauseCtx->equipTargetItem; + // C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT) = pauseCtx->equipTargetSlot; + // Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_LEFT); +} + void KaleidoScope_UpdateItemEquip(PlayState* play) { static s16 sEquipMagicArrowBowSlotHoldTimer = 0; PauseContext* pauseCtx = &play->pauseCtx; @@ -1474,6 +1662,10 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) { u16 offsetX; u16 offsetY; + if (pauseCtx->equipTargetArbitraryEquip != NULL) { + return; + } + // Grow glowing orb when equipping magic arrows if (sEquipState == EQUIP_STATE_MAGIC_ARROW_GROW_ORB) { pauseCtx->equipAnimAlpha += 14; @@ -1596,267 +1788,12 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) { // Equip item onto c buttons if (pauseCtx->equipTargetCBtn == PAUSE_EQUIP_C_LEFT) { - // Swap if item is already equipped on CDown or CRight. - if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) != ITEM_NONE) { - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8) && - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) == ITEM_BOW) || - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) >= ITEM_BOW_FIRE) && - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) <= ITEM_BOW_LIGHT)))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_DOWN); - } - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = ITEM_NONE; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = SLOT_NONE; - } - } else if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) != ITEM_NONE) { - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8) && - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) == ITEM_BOW) || - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) >= ITEM_BOW_FIRE) && - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) & 0xFF) <= ITEM_BOW_LIGHT)))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_RIGHT); - } - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = ITEM_NONE; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT) = SLOT_NONE; - } - } - // #region 2S2H [Dpad] - KaleidoScope_SwapDpadItemToCItem(play, EQUIP_SLOT_C_LEFT); - // #endregion - - // Special case for magic arrows - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) == ITEM_BOW) || - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) <= ITEM_BOW_LIGHT))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } - } else if (pauseCtx->equipTargetItem == ITEM_BOW) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) <= ITEM_BOW_LIGHT)) { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_DOWN); - } else if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) <= ITEM_BOW_LIGHT)) { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_RIGHT); - } - // #region 2S2H [Dpad] - // Note Only C-Left has the swap of 'slot equips' here - if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_RIGHT) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_RIGHT); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_LEFT) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_LEFT); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_DOWN) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_DOWN); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT); - DPAD_SLOT_EQUIP(0, EQUIP_SLOT_D_UP) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_UP); - } - // #endregion - } - - // Equip item on CLeft - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = pauseCtx->equipTargetItem; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT) = pauseCtx->equipTargetSlot; - Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_LEFT); + KaleifoScope_SetCButton(pauseCtx, play, EQUIP_SLOT_C_LEFT); } else if (pauseCtx->equipTargetCBtn == PAUSE_EQUIP_C_DOWN) { - // Swap if item is already equipped on CLeft or CRight. - if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) != ITEM_NONE) { - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8) && - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) == ITEM_BOW) || - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) >= ITEM_BOW_FIRE) && - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) <= ITEM_BOW_LIGHT)))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_LEFT); - } - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = ITEM_NONE; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT) = SLOT_NONE; - } - } else if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) != ITEM_NONE) { - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8) && - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) == ITEM_BOW) || - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) >= ITEM_BOW_FIRE) && - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) & 0xFF) <= ITEM_BOW_LIGHT)))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_RIGHT); - } - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = ITEM_NONE; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT) = SLOT_NONE; - } - } - // #region 2S2H [Dpad] - KaleidoScope_SwapDpadItemToCItem(play, EQUIP_SLOT_C_DOWN); - // #endregion - - // Special case for magic arrows - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) == ITEM_BOW) || - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) <= ITEM_BOW_LIGHT))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } - } else if (pauseCtx->equipTargetItem == ITEM_BOW) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) <= ITEM_BOW_LIGHT)) { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_LEFT); - } else if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) <= ITEM_BOW_LIGHT)) { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_RIGHT); - } - // #region 2S2H [Dpad] - // Note Only C-Left has the swap of 'slot equips' here - if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_RIGHT); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_LEFT); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_DOWN); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_UP); - } - // #endregion - } - - // Equip item on CDown - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = pauseCtx->equipTargetItem; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = pauseCtx->equipTargetSlot; - Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_DOWN); + KaleifoScope_SetCButton(pauseCtx, play, EQUIP_SLOT_C_DOWN); } else if (pauseCtx->equipTargetCBtn == PAUSE_EQUIP_C_RIGHT) { // #Region 2S2H [Dpad] Added condition here to allow for other cases - // Swap if item is already equipped on CLeft or CDown. - if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) != ITEM_NONE) { - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8) && - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) == ITEM_BOW) || - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) >= ITEM_BOW_FIRE) && - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) <= ITEM_BOW_LIGHT)))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_LEFT); - } - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = ITEM_NONE; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT) = SLOT_NONE; - } - } else if (pauseCtx->equipTargetSlot == C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) != ITEM_NONE) { - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8) && - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) == ITEM_BOW) || - (((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) >= ITEM_BOW_FIRE) && - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) & 0xFF) <= ITEM_BOW_LIGHT)))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_DOWN); - } - } else { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = ITEM_NONE; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = SLOT_NONE; - } - } - // #region 2S2H [Dpad] - KaleidoScope_SwapDpadItemToCItem(play, EQUIP_SLOT_C_RIGHT); - // #endregion - - // Special case for magic arrows - if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipTargetItem < 0xB8)) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) == ITEM_BOW) || - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) <= ITEM_BOW_LIGHT))) { - pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; - pauseCtx->equipTargetSlot = SLOT_BOW; - } - } else if (pauseCtx->equipTargetItem == ITEM_BOW) { - if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) <= ITEM_BOW_LIGHT)) { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_LEFT); - } else if ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) >= ITEM_BOW_FIRE) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) <= ITEM_BOW_LIGHT)) { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_LoadItemIcon(play, EQUIP_SLOT_C_DOWN); - } - // #region 2S2H [Dpad] - // Note Only C-Left has the swap of 'slot equips' here - if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_RIGHT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_RIGHT); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_LEFT) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_LEFT); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_DOWN) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_DOWN); - } else if ((DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) >= ITEM_BOW_FIRE) && - (DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) <= ITEM_BOW_LIGHT)) { - DPAD_BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_D_UP) = BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT); - Interface_Dpad_LoadItemIcon(play, EQUIP_SLOT_D_UP); - } - // #endregion - } - - // Equip item on CRight - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = pauseCtx->equipTargetItem; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT) = pauseCtx->equipTargetSlot; - Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_RIGHT); + KaleifoScope_SetCButton(pauseCtx, play, EQUIP_SLOT_C_RIGHT); } // #region 2S2H [Dpad] else if (CVarGetInteger("gEnhancements.Dpad.DpadEquips", 0)) { @@ -1877,3 +1814,122 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) { } } } + +void KaleidoScope_UpdateItemEquipArbitrary(PlayState* play) { + static s16 sEquipMagicArrowBowSlotHoldTimer = 0; + PauseContext* pauseCtx = &play->pauseCtx; + Vtx* bowItemVtx; + u16 offsetX; + u16 offsetY; + + ArbitraryItemEquipButton* arbEquip = pauseCtx->equipTargetArbitraryEquip; + if (arbEquip == NULL) { + return; + } + + ArbitraryItemDrawParams drawParams = arbEquip->getDrawParams(arbEquip, play); + s32 cButtonPosX = -1580 - drawParams.rectLeft * 10; + s32 cButtonPosY = 1260 - drawParams.rectTop * 10; + + // Grow glowing orb when equipping magic arrows + if (sEquipState == EQUIP_STATE_MAGIC_ARROW_GROW_ORB) { + pauseCtx->equipAnimAlpha += 14; + if (pauseCtx->equipAnimAlpha > 255) { + pauseCtx->equipAnimAlpha = 254; + sEquipState++; + } + // Hover over magic arrow slot when the next state is reached + sEquipMagicArrowSlotHoldTimer = 5; + return; + } + + if (sEquipState == EQUIP_STATE_MAGIC_ARROW_HOVER_OVER_BOW_SLOT) { + sEquipMagicArrowBowSlotHoldTimer--; + + if (sEquipMagicArrowBowSlotHoldTimer == 0) { + pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; + pauseCtx->equipTargetSlot = SLOT_BOW; + sEquipAnimTimer = 6; + pauseCtx->equipAnimScale = 320; + pauseCtx->equipAnimShrinkRate = 40; + sEquipState++; + Audio_PlaySfx(NA_SE_SY_SYNTH_MAGIC_ARROW); + } + return; + } + + if (sEquipState == EQUIP_STATE_MAGIC_ARROW_MOVE_TO_BOW_SLOT) { + bowItemVtx = &pauseCtx->itemVtx[SLOT_BOW * 4]; + offsetX = ABS_ALT(pauseCtx->equipAnimX - bowItemVtx->v.ob[0] * 10) / sEquipAnimTimer; + offsetY = ABS_ALT(pauseCtx->equipAnimY - bowItemVtx->v.ob[1] * 10) / sEquipAnimTimer; + } else { + // 2S2H [Cosmetic] Use position vars from above + offsetX = ABS_ALT(pauseCtx->equipAnimX - cButtonPosX) / sEquipAnimTimer; + offsetY = ABS_ALT(pauseCtx->equipAnimY - cButtonPosY) / sEquipAnimTimer; + } + + if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipAnimAlpha < 254)) { + pauseCtx->equipAnimAlpha += 14; + if (pauseCtx->equipAnimAlpha > 255) { + pauseCtx->equipAnimAlpha = 254; + } + sEquipMagicArrowSlotHoldTimer = 5; + return; + } + + if (sEquipMagicArrowSlotHoldTimer == 0) { + pauseCtx->equipAnimScale -= pauseCtx->equipAnimShrinkRate / sEquipAnimTimer; + pauseCtx->equipAnimShrinkRate -= pauseCtx->equipAnimShrinkRate / sEquipAnimTimer; + + // Update coordinates of item icon while being equipped + if (sEquipState == EQUIP_STATE_MAGIC_ARROW_MOVE_TO_BOW_SLOT) { + // target is the bow slot + if (pauseCtx->equipAnimX >= (pauseCtx->itemVtx[SLOT_BOW * 4].v.ob[0] * 10)) { + pauseCtx->equipAnimX -= offsetX; + } else { + pauseCtx->equipAnimX += offsetX; + } + + if (pauseCtx->equipAnimY >= (pauseCtx->itemVtx[SLOT_BOW * 4].v.ob[1] * 10)) { + pauseCtx->equipAnimY -= offsetY; + } else { + pauseCtx->equipAnimY += offsetY; + } + } else { + if (pauseCtx->equipAnimX >= cButtonPosX) { + pauseCtx->equipAnimX -= offsetX; + } else { + pauseCtx->equipAnimX += offsetX; + } + + if (pauseCtx->equipAnimY >= cButtonPosY) { + pauseCtx->equipAnimY -= offsetY; + } else { + pauseCtx->equipAnimY += offsetY; + } + } + + sEquipAnimTimer--; + if (sEquipAnimTimer == 0) { + if (sEquipState == EQUIP_STATE_MAGIC_ARROW_MOVE_TO_BOW_SLOT) { + sEquipState++; + sEquipMagicArrowBowSlotHoldTimer = 4; + return; + } + + // Equip item onto arbitrary buttons + KaleifoScope_SetArbitraryButton(pauseCtx, play, arbEquip); + + // Reset params + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + sEquipAnimTimer = 10; + pauseCtx->equipAnimScale = 320; + pauseCtx->equipAnimShrinkRate = 40; + } + } else { + sEquipMagicArrowSlotHoldTimer--; + if (sEquipMagicArrowSlotHoldTimer == 0) { + pauseCtx->equipAnimAlpha = 255; + } + } +} diff --git a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c index 13583678c4..a262ceabed 100644 --- a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c +++ b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c @@ -306,6 +306,9 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; pauseCtx->nameColorSet = PAUSE_NAME_COLOR_SET_WHITE; + ArbitraryItemEquipSet slots = gSaveContext.save.saveInfo.equips.equipsSlotGetter.getEquipSlots( + &gSaveContext.save.saveInfo.equips.equipsSlotGetter, play, input); + if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_MASK) && !pauseCtx->itemDescriptionOn) { moveCursorResult = PAUSE_CURSOR_RESULT_NONE; @@ -552,13 +555,29 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { pauseCtx->cursorItem[PAUSE_MASK] = cursorItem; pauseCtx->cursorSlot[PAUSE_MASK] = cursorSlot; if (cursorItem != PAUSE_ITEM_NONE) { + uint8_t arbEquipAccepts = 0; + pauseCtx->equipTargetArbitraryEquip = NULL; + for (size_t arbIndex = 0; arbIndex < slots.count; arbIndex++) { + ArbitraryItemEquipButton* targetArb = &slots.equips[arbIndex]; + if (targetArb->canTakeAssignment && targetArb->canTakeAssignment(targetArb, cursorItem) && + targetArb->assignmentTriggered && + targetArb->assignmentTriggered(targetArb, CONTROLLER1(&play->state))) { + arbEquipAccepts = 1; + pauseCtx->equipTargetArbitraryEquip = targetArb; + break; + } + } // Equip item to the C buttons if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && !pauseCtx->itemDescriptionOn && (pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && - CHECK_BTN_ANY(input->press.button, BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT | BTN_DPAD_EQUIP)) { + (CHECK_BTN_ANY(input->press.button, BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT | BTN_DPAD_EQUIP) || + arbEquipAccepts)) { + if (arbEquipAccepts) { + + } // Ensure that a mask is not unequipped while being used - if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { + else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { if (((Player_GetCurMaskItemId(play) != ITEM_NONE) && (Player_GetCurMaskItemId(play) == BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT))) || ((sMaskPlayerFormItems[GET_PLAYER_FORM] != ITEM_NONE) && @@ -633,7 +652,9 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { return; } - if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { + if (arbEquipAccepts) { + + } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { pauseCtx->equipTargetCBtn = PAUSE_EQUIP_C_LEFT; } else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN)) { pauseCtx->equipTargetCBtn = PAUSE_EQUIP_C_DOWN; @@ -1008,6 +1029,10 @@ void KaleidoScope_UpdateMaskEquip(PlayState* play) { u16 offsetX; u16 offsetY; + if (pauseCtx->equipTargetArbitraryEquip != NULL) { + return; + } + // Grow glowing orb when equipping magic arrows if (sMaskEquipState == EQUIP_STATE_MAGIC_ARROW_GROW_ORB) { pauseCtx->equipAnimAlpha += 14; @@ -1240,3 +1265,127 @@ void KaleidoScope_UpdateMaskEquip(PlayState* play) { } } } + +void KaleidoScope_UpdateMaskEquipArbitrary(PlayState* play) { + static s16 sMaskEquipMagicArrowBowSlotHoldTimer = 0; + PauseContext* pauseCtx = &play->pauseCtx; + Vtx* bowItemVtx; + u16 offsetX; + u16 offsetY; + + ArbitraryItemEquipButton* arbEquip = pauseCtx->equipTargetArbitraryEquip; + if (arbEquip == NULL) { + return; + } + + ArbitraryItemDrawParams drawParams = arbEquip->getDrawParams(arbEquip, play); + s32 maskCButtonPosX = -1580 - drawParams.rectLeft * 10; + s32 maskCButtonPosY = 1260 - drawParams.rectTop * 10; + + // Grow glowing orb when equipping magic arrows + if (sMaskEquipState == EQUIP_STATE_MAGIC_ARROW_GROW_ORB) { + pauseCtx->equipAnimAlpha += 14; + if (pauseCtx->equipAnimAlpha > 255) { + pauseCtx->equipAnimAlpha = 254; + sMaskEquipState++; + } + // Hover over magic arrow slot when the next state is reached + sMaskEquipMagicArrowSlotHoldTimer = 5; + return; + } + + if (sMaskEquipState == EQUIP_STATE_MAGIC_ARROW_HOVER_OVER_BOW_SLOT) { + sMaskEquipMagicArrowBowSlotHoldTimer--; + + if (sMaskEquipMagicArrowBowSlotHoldTimer == 0) { + pauseCtx->equipTargetItem -= 0xB5 - ITEM_BOW_FIRE; + pauseCtx->equipTargetSlot = SLOT_BOW; + sMaskEquipAnimTimer = 6; + pauseCtx->equipAnimScale = 320; + pauseCtx->equipAnimShrinkRate = 40; + sMaskEquipState++; + Audio_PlaySfx(NA_SE_SY_SYNTH_MAGIC_ARROW); + } + return; + } + + if (sMaskEquipState == EQUIP_STATE_MAGIC_ARROW_MOVE_TO_BOW_SLOT) { + //! Note: Copied from OoT when `SLOT_BOW` was still valued at 3. + // Due to a shift, `SLOT_ARROW_ICE` now occupies slot 3 but this value was not updated + // Block is never reached as you can not equip magic arrows from the mask page + bowItemVtx = &pauseCtx->itemVtx[SLOT_ARROW_ICE * 4]; + offsetX = ABS_ALT(pauseCtx->equipAnimX - bowItemVtx->v.ob[0] * 10) / sMaskEquipAnimTimer; + offsetY = ABS_ALT(pauseCtx->equipAnimY - bowItemVtx->v.ob[1] * 10) / sMaskEquipAnimTimer; + } else { + // 2S2H [Cosmetic] Use position vars from above + offsetX = ABS_ALT(pauseCtx->equipAnimX - maskCButtonPosX) / sMaskEquipAnimTimer; + offsetY = ABS_ALT(pauseCtx->equipAnimY - maskCButtonPosY) / sMaskEquipAnimTimer; + } + + if ((pauseCtx->equipTargetItem >= 0xB5) && (pauseCtx->equipAnimAlpha < 254)) { + pauseCtx->equipAnimAlpha += 14; + if (pauseCtx->equipAnimAlpha > 255) { + pauseCtx->equipAnimAlpha = 254; + } + sMaskEquipMagicArrowSlotHoldTimer = 5; + return; + } + + if (sMaskEquipMagicArrowSlotHoldTimer == 0) { + pauseCtx->equipAnimScale -= pauseCtx->equipAnimShrinkRate / sMaskEquipAnimTimer; + pauseCtx->equipAnimShrinkRate -= pauseCtx->equipAnimShrinkRate / sMaskEquipAnimTimer; + + // Update coordinates of item icon while being equipped + if (sMaskEquipState == EQUIP_STATE_MAGIC_ARROW_MOVE_TO_BOW_SLOT) { + // target is the bow slot + if (pauseCtx->equipAnimX >= (pauseCtx->itemVtx[12].v.ob[0] * 10)) { + pauseCtx->equipAnimX -= offsetX; + } else { + pauseCtx->equipAnimX += offsetX; + } + + if (pauseCtx->equipAnimY >= (pauseCtx->itemVtx[12].v.ob[1] * 10)) { + pauseCtx->equipAnimY -= offsetY; + } else { + pauseCtx->equipAnimY += offsetY; + } + } else { + // target is the c button + // 2S2H [Cosmetic] Use position vars from above + if (pauseCtx->equipAnimX >= maskCButtonPosX) { + pauseCtx->equipAnimX -= offsetX; + } else { + pauseCtx->equipAnimX += offsetX; + } + + if (pauseCtx->equipAnimY >= maskCButtonPosY) { + pauseCtx->equipAnimY -= offsetY; + } else { + pauseCtx->equipAnimY += offsetY; + } + } + + sMaskEquipAnimTimer--; + if (sMaskEquipAnimTimer == 0) { + if (sMaskEquipState == EQUIP_STATE_MAGIC_ARROW_MOVE_TO_BOW_SLOT) { + sMaskEquipState++; + sMaskEquipMagicArrowBowSlotHoldTimer = 4; + return; + } + + // Equip mask onto arbitrary button + KaleifoScope_SetArbitraryButton(pauseCtx, play, arbEquip); + + // Reset params + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + sMaskEquipAnimTimer = 10; + pauseCtx->equipAnimScale = 320; + pauseCtx->equipAnimShrinkRate = 40; + } + } else { + sMaskEquipMagicArrowSlotHoldTimer--; + if (sMaskEquipMagicArrowSlotHoldTimer == 0) { + pauseCtx->equipAnimAlpha = 255; + } + } +} diff --git a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h index 5698584cd6..6dfb67751b 100644 --- a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h +++ b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h @@ -424,11 +424,14 @@ void KaleidoScope_SetCursorVtxPos(PauseContext* pauseCtx, u16 vtxIndex, Vtx* vtx void KaleidoScope_DrawItemSelect(PlayState* play); void KaleidoScope_UpdateItemCursor(PlayState* play); void KaleidoScope_UpdateItemEquip(PlayState* play); +void KaleifoScope_SetArbitraryButton(PauseContext *pauseCtx, PlayState* play, ArbitraryItemEquipButton *arbEquip); +void KaleidoScope_UpdateItemEquipArbitrary(PlayState* play); // Mask void KaleidoScope_DrawMaskSelect(PlayState* play); void KaleidoScope_UpdateMaskCursor(PlayState* play); void KaleidoScope_UpdateMaskEquip(PlayState* play); +void KaleidoScope_UpdateMaskEquipArbitrary(PlayState* play); // Prompt void KaleidoScope_UpdatePrompt(PlayState* play); diff --git a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c index 5446f710c9..1591c074d2 100644 --- a/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c +++ b/mm/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c @@ -3424,6 +3424,7 @@ void KaleidoScope_Update(PlayState* play) { case PAUSE_MAIN_STATE_EQUIP_ITEM: KaleidoScope_UpdateItemEquip(play); + KaleidoScope_UpdateItemEquipArbitrary(play); break; case PAUSE_MAIN_STATE_SONG_PROMPT_INIT: @@ -3498,6 +3499,7 @@ void KaleidoScope_Update(PlayState* play) { case PAUSE_MAIN_STATE_EQUIP_MASK: KaleidoScope_UpdateMaskEquip(play); + KaleidoScope_UpdateMaskEquipArbitrary(play); break; case PAUSE_MAIN_STATE_BOMBERS_NOTEBOOK_OPEN: