diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bb23653 --- /dev/null +++ b/.gitignore @@ -0,0 +1,64 @@ +# VSCode file settings +.vscode/settings.json +.vscode/c_cpp_properties.json +.vscode/launch.json + +# Input elf and rom files +*.elf +*.z64 + +# Output C files +RecompiledFuncs/ +RecompiledPatches/ + +# Linux build output +build/ +*.o + +# Windows build output +*.exe +*.dll +*.lib +*.pdb + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ +out/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +vcpkg_installed/ + +# Runtime files +imgui.ini +rt64.log + +node_modules/ + +# Recompiler Linux binary +N64Recomp +RSPRecomp +.DS_Store + +# Controller mappings file +gamecontrollerdb.txt diff --git a/BanjoRecompSyms b/BanjoRecompSyms index a9d5ebc..b52831d 160000 --- a/BanjoRecompSyms +++ b/BanjoRecompSyms @@ -1 +1 @@ -Subproject commit a9d5ebce85b2d3365c4997014e4c99311465338a +Subproject commit b52831df83570689232188796bb1e4750754c303 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..3a9f97d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,354 @@ +cmake_minimum_required(VERSION 3.20) +project(BanjoRecompiled) +set(CMAKE_C_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +# set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-everything /W4") +endif() + +# Opt out of constexpr mutex constructor on windows to prevent vcredist issues +if (WIN32) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR") +endif() + +# Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24: +if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") + cmake_policy(SET CMP0135 NEW) +endif() + +set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + +if (WIN32) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/lib/") +endif() + +set(RT64_STATIC TRUE) +set(RT64_SDL_WINDOW_VULKAN TRUE) +add_compile_definitions(HLSL_CPU) + +add_subdirectory(${CMAKE_SOURCE_DIR}/lib/rt64 ${CMAKE_BINARY_DIR}/rt64) + +# set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}") +set(BUILD_SHARED_LIBS OFF) +SET(LUNASVG_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +add_subdirectory(${CMAKE_SOURCE_DIR}/lib/lunasvg) +# set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}") +SET(RMLUI_SVG_PLUGIN ON CACHE BOOL "" FORCE) +SET(RMLUI_TESTS_ENABLED OFF CACHE BOOL "" FORCE) +add_subdirectory(${CMAKE_SOURCE_DIR}/lib/RmlUi) + +add_subdirectory(${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime) + +target_include_directories(rt64 PRIVATE ${CMAKE_BINARY_DIR}/rt64/src) + +# RecompiledFuncs - Library containing the primary recompiler output +add_library(RecompiledFuncs STATIC) + +target_compile_options(RecompiledFuncs PRIVATE + # -Wno-unused-but-set-variable + -fno-strict-aliasing + -Wno-unused-variable + -Wno-implicit-function-declaration +) + +target_include_directories(RecompiledFuncs PRIVATE + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/ultramodern/include + ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/librecomp/include + ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/N64Recomp/include +) + +file(GLOB FUNC_C_SOURCES ${CMAKE_SOURCE_DIR}/RecompiledFuncs/*.c) +file(GLOB FUNC_CXX_SOURCES ${CMAKE_SOURCE_DIR}/RecompiledFuncs/*.cpp) + +target_sources(RecompiledFuncs PRIVATE ${FUNC_C_SOURCES} ${FUNC_CXX_SOURCES}) + +# PatchesLib - Library containing the recompiled output for any custom function patches +add_library(PatchesLib STATIC) + +target_compile_options(PatchesLib PRIVATE + # -Wno-unused-but-set-variable + -fno-strict-aliasing + -Wno-unused-variable + -Wno-implicit-function-declaration +) + +target_include_directories(PatchesLib PRIVATE + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/ultramodern/include + ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/librecomp/include + ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/N64Recomp/include +) + +target_sources(PatchesLib PRIVATE + ${CMAKE_SOURCE_DIR}/RecompiledPatches/patches.c + ${CMAKE_SOURCE_DIR}/RecompiledPatches/patches_bin.c +) + +set_source_files_properties(${CMAKE_SOURCE_DIR}/RecompiledPatches/patches.c PROPERTIES COMPILE_FLAGS -fno-strict-aliasing) + +# Build patches elf +if(NOT DEFINED PATCHES_C_COMPILER) + set(PATCHES_C_COMPILER clang) +endif() + +if(NOT DEFINED PATCHES_LD) + set(PATCHES_LD ld.lld) +endif() + +add_custom_target(PatchesBin + COMMAND ${CMAKE_COMMAND} -E env CC=${PATCHES_C_COMPILER} LD=${PATCHES_LD} make + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/patches + BYPRODUCTS ${CMAKE_SOURCE_DIR}/patches/patches.elf +) + +# Generate patches_bin.c from patches.bin +add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/RecompiledPatches/patches_bin.c + COMMAND file_to_c ${CMAKE_SOURCE_DIR}/patches/patches.bin bk_patches_bin ${CMAKE_SOURCE_DIR}/RecompiledPatches/patches_bin.c ${CMAKE_SOURCE_DIR}/RecompiledPatches/patches_bin.h + DEPENDS ${CMAKE_SOURCE_DIR}/patches/patches.bin +) + +# Recompile patches elf into patches.c and patches.bin +add_custom_command(OUTPUT + ${CMAKE_SOURCE_DIR}/patches/patches.bin + ${CMAKE_SOURCE_DIR}/RecompiledPatches/patches.c + ${CMAKE_SOURCE_DIR}/RecompiledPatches/recomp_overlays.inl + ${CMAKE_SOURCE_DIR}/RecompiledPatches/funcs.h + # TODO: Look into why modifying patches requires two builds to take + COMMAND ./N64Recomp patches.toml + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + DEPENDS ${CMAKE_SOURCE_DIR}/patches/patches.elf +) + +# Download controller db file for controller support via SDL2 +set(GAMECONTROLLERDB_COMMIT "b1e4090b3d4266e55feb0793efa35792e05faf66") +set(GAMECONTROLLERDB_URL "https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/${GAMECONTROLLERDB_COMMIT}/gamecontrollerdb.txt") + +file(DOWNLOAD ${GAMECONTROLLERDB_URL} ${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt + TLS_VERIFY ON) + +add_custom_target(DownloadGameControllerDB + DEPENDS ${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt) + +# Main executable +add_executable(BanjoRecompiled) +add_dependencies(BanjoRecompiled DownloadGameControllerDB) + +set (SOURCES + ${CMAKE_SOURCE_DIR}/src/main/main.cpp + ${CMAKE_SOURCE_DIR}/src/main/register_overlays.cpp + ${CMAKE_SOURCE_DIR}/src/main/register_patches.cpp + ${CMAKE_SOURCE_DIR}/src/main/rt64_render_context.cpp + + ${CMAKE_SOURCE_DIR}/src/game/input.cpp + ${CMAKE_SOURCE_DIR}/src/game/controls.cpp + ${CMAKE_SOURCE_DIR}/src/game/config.cpp + ${CMAKE_SOURCE_DIR}/src/game/debug.cpp + ${CMAKE_SOURCE_DIR}/src/game/recomp_api.cpp + ${CMAKE_SOURCE_DIR}/src/game/rom_decompression.cpp + + ${CMAKE_SOURCE_DIR}/src/ui/ui_renderer.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_state.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_launcher.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_config.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_config_sub_menu.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_color_hack.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_rml_hacks.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_elements.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_mod_details_panel.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_mod_menu.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_api.cpp + ${CMAKE_SOURCE_DIR}/src/ui/util/hsv.cpp + ${CMAKE_SOURCE_DIR}/src/ui/core/ui_context.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_button.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_clickable.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_container.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_element.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_image.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_label.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_radio.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_scroll_container.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_slider.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_style.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_text_input.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_toggle.cpp + + ${CMAKE_SOURCE_DIR}/rsp/n_aspMain.cpp + + ${CMAKE_SOURCE_DIR}/lib/RmlUi/Backends/RmlUi_Platform_SDL.cpp +) + +target_include_directories(BanjoRecompiled PRIVATE + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime/N64Recomp/include + ${CMAKE_SOURCE_DIR}/lib/concurrentqueue + ${CMAKE_SOURCE_DIR}/lib/GamepadMotionHelpers + ${CMAKE_SOURCE_DIR}/lib/RmlUi/Include + ${CMAKE_SOURCE_DIR}/lib/RmlUi/Backends + ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib + ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/hlslpp/include + ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/dxc/inc + ${CMAKE_SOURCE_DIR}/lib/rt64/src + ${CMAKE_SOURCE_DIR}/lib/rt64/src/rhi + ${CMAKE_SOURCE_DIR}/lib/rt64/src/render + ${CMAKE_SOURCE_DIR}/lib/freetype-windows-binaries/include + ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/nativefiledialog-extended/src/include + ${CMAKE_SOURCE_DIR}/lib/slot_map/slot_map + ${CMAKE_BINARY_DIR}/shaders + ${CMAKE_CURRENT_BINARY_DIR} +) + +if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64") + target_compile_options(BanjoRecompiled PRIVATE + -march=nehalem + -fno-strict-aliasing + -fms-extensions + ) +else() + target_compile_options(BanjoRecompiled PRIVATE + -fno-strict-aliasing + -fms-extensions + ) +endif() + +if (MSVC) + # Disable identical code folding, since this breaks mod function patching as multiple functions can get merged into one. + target_link_options(BanjoRecompiled PRIVATE /OPT:NOICF) +endif() + +if (WIN32) + include(FetchContent) + + if (DEFINED ENV{SDL2_VERSION}) + set(SDL2_VERSION $ENV{SDL2_VERSION}) + else() + set(SDL2_VERSION "2.30.3") + endif() + + # Fetch SDL2 on windows + FetchContent_Declare( + sdl2 + URL https://github.com/libsdl-org/SDL/releases/download/release-${SDL2_VERSION}/SDL2-devel-${SDL2_VERSION}-VC.zip + ) + FetchContent_MakeAvailable(sdl2) + target_include_directories(BanjoRecompiled PRIVATE + ${sdl2_SOURCE_DIR}/include + ) + target_link_directories(BanjoRecompiled PRIVATE + ${sdl2_SOURCE_DIR}/lib/x64 + ) + + # Copy SDL2 and dxc DLLs to output folder as post build step + add_custom_command(TARGET BanjoRecompiled POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${sdl2_SOURCE_DIR}/lib/x64/SDL2.dll" + "${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/dxc/bin/x64/dxil.dll" + "${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/dxc/bin/x64/dxcompiler.dll" + $) + + set_target_properties( + BanjoRecompiled + PROPERTIES + LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE" + LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup" + LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup" + LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup" + ) + + # target_sources(BanjoRecompiled PRIVATE ${CMAKE_SOURCE_DIR}/icons/app.rc) +endif() + +if (CMAKE_SYSTEM_NAME MATCHES "Linux") + find_package(SDL2 REQUIRED) + find_package(X11 REQUIRED) + + add_compile_definitions("RT64_SDL_WINDOW_VULKAN") + + # Generate icon_bytes.c from the app icon PNG. + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/icon_bytes.c ${CMAKE_CURRENT_BINARY_DIR}/icon_bytes.h + COMMAND file_to_c ${CMAKE_SOURCE_DIR}/icons/512.png icon_bytes ${CMAKE_CURRENT_BINARY_DIR}/icon_bytes.c ${CMAKE_CURRENT_BINARY_DIR}/icon_bytes.h + DEPENDS ${CMAKE_SOURCE_DIR}/icons/512.png + ) + target_sources(BanjoRecompiled PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/icon_bytes.c) + + message(STATUS "SDL2_FOUND = ${SDL2_FOUND}") + message(STATUS "SDL2_INCLUDE_DIRS = ${SDL2_INCLUDE_DIRS}") + + target_include_directories(BanjoRecompiled PRIVATE ${SDL2_INCLUDE_DIRS}) + + message(STATUS "X11_FOUND = ${X11_FOUND}") + message(STATUS "X11_Xrandr_FOUND = ${X11_Xrandr_FOUND}") + message(STATUS "X11_INCLUDE_DIR = ${X11_INCLUDE_DIR}") + message(STATUS "X11_LIBRARIES = ${X11_LIBRARIES}") + + target_include_directories(BanjoRecompiled PRIVATE ${X11_INCLUDE_DIR} ${X11_Xrandr_INCLUDE_PATH}) + target_link_libraries(BanjoRecompiled PRIVATE ${X11_LIBRARIES} ${X11_Xrandr_LIB}) + + find_package(Freetype REQUIRED) + + message(STATUS "FREETYPE_FOUND = ${FREETYPE_FOUND}") + message(STATUS "FREETYPE_INCLUDE_DIRS = ${FREETYPE_INCLUDE_DIRS}") + message(STATUS "FREETYPE_LIBRARIES = ${FREETYPE_LIBRARIES}") + + include_directories(${FREETYPE_LIBRARIES}) + target_link_libraries(BanjoRecompiled PRIVATE ${FREETYPE_LIBRARIES}) + + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) + set(THREADS_PREFER_PTHREAD_FLAG TRUE) + find_package(Threads REQUIRED) + + target_link_libraries(BanjoRecompiled PRIVATE "-latomic -static-libstdc++" ${CMAKE_DL_LIBS} Threads::Threads) +endif() + +target_link_libraries(BanjoRecompiled PRIVATE + PatchesLib + RecompiledFuncs + SDL2 + librecomp + ultramodern + rt64 + RmlUi::Core + RmlUi::Debugger + nfd + lunasvg +) + +# TODO fix the rt64 CMake script so that this doesn't need to be duplicated here +# For DXC +set (DXC_COMMON_OPTS "-I${PROJECT_SOURCE_DIR}/src") +set (DXC_DXIL_OPTS "-Wno-ignored-attributes") +set (DXC_SPV_OPTS "-spirv" "-fspv-target-env=vulkan1.0" "-fvk-use-dx-layout") +set (DXC_PS_OPTS "${DXC_COMMON_OPTS}" "-E" "PSMain" "-T ps_6_0" "-D DYNAMIC_RENDER_PARAMS") +set (DXC_VS_OPTS "${DXC_COMMON_OPTS}" "-E" "VSMain" "-T vs_6_0" "-D DYNAMIC_RENDER_PARAMS" "-fvk-invert-y") +set (DXC_CS_OPTS "${DXC_COMMON_OPTS}" "-E" "CSMain" "-T cs_6_0") +set (DXC_GS_OPTS "${DXC_COMMON_OPTS}" "-E" "GSMain" "-T gs_6_0") +set (DXC_RT_OPTS "${DXC_COMMON_OPTS}" "-D" "RT_SHADER" "-T" "lib_6_3" "-fspv-target-env=vulkan1.1spirv1.4" "-fspv-extension=SPV_KHR_ray_tracing" "-fspv-extension=SPV_EXT_descriptor_indexing") + +if (${WIN32}) + set (DXC "${PROJECT_SOURCE_DIR}/lib/rt64/src/contrib/dxc/bin/x64/dxc.exe") + add_compile_definitions(NOMINMAX) +else() + if (APPLE) + # Apple's binary is universal, so it'll work on both x86_64 and arm64 + set (DXC "DYLD_LIBRARY_PATH=${PROJECT_SOURCE_DIR}/lib/rt64/src/contrib/dxc/lib/arm64" "${PROJECT_SOURCE_DIR}/lib/rt64/src/contrib/dxc/bin/arm64/dxc-macos") + else() + if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64") + set (DXC "LD_LIBRARY_PATH=${PROJECT_SOURCE_DIR}/lib/rt64/src/contrib/dxc/lib/x64" "${PROJECT_SOURCE_DIR}/lib/rt64/src/contrib/dxc/bin/x64/dxc") + else() + set (DXC "LD_LIBRARY_PATH=${PROJECT_SOURCE_DIR}/lib/rt64/src/contrib/dxc/lib/arm64" "${PROJECT_SOURCE_DIR}/lib/rt64/src/contrib/dxc/bin/arm64/dxc-linux") + endif() + endif() +endif() + +build_vertex_shader(BanjoRecompiled "shaders/InterfaceVS.hlsl" "shaders/InterfaceVS.hlsl") +build_pixel_shader(BanjoRecompiled "shaders/InterfacePS.hlsl" "shaders/InterfacePS.hlsl") + +target_sources(BanjoRecompiled PRIVATE ${SOURCES}) + +set_property(TARGET BanjoRecompiled PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") diff --git a/CMakeSettings.json b/CMakeSettings.json new file mode 100644 index 0000000..2235809 --- /dev/null +++ b/CMakeSettings.json @@ -0,0 +1,38 @@ +{ + "configurations": [ + { + "name": "x64-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "clang_cl_x64" ], + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "" + }, + { + "name": "x64-Release", + "generator": "Ninja", + "configurationType": "Release", + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "clang_cl_x64" ] + }, + { + "name": "x64-ReleaseWithDebInfo", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "clang_cl_x64" ], + "variables": [] + } + ] +} \ No newline at end of file diff --git a/assets/LatoLatin-Bold.ttf b/assets/LatoLatin-Bold.ttf new file mode 100644 index 0000000..c598c24 Binary files /dev/null and b/assets/LatoLatin-Bold.ttf differ diff --git a/assets/LatoLatin-BoldItalic.ttf b/assets/LatoLatin-BoldItalic.ttf new file mode 100644 index 0000000..c1f225a Binary files /dev/null and b/assets/LatoLatin-BoldItalic.ttf differ diff --git a/assets/LatoLatin-Italic.ttf b/assets/LatoLatin-Italic.ttf new file mode 100644 index 0000000..c61fc07 Binary files /dev/null and b/assets/LatoLatin-Italic.ttf differ diff --git a/assets/LatoLatin-Regular.ttf b/assets/LatoLatin-Regular.ttf new file mode 100644 index 0000000..bcc5778 Binary files /dev/null and b/assets/LatoLatin-Regular.ttf differ diff --git a/assets/NotoEmoji-Regular.ttf b/assets/NotoEmoji-Regular.ttf new file mode 100644 index 0000000..19b7bad Binary files /dev/null and b/assets/NotoEmoji-Regular.ttf differ diff --git a/assets/components/prompt.rml b/assets/components/prompt.rml new file mode 100644 index 0000000..3de53ea --- /dev/null +++ b/assets/components/prompt.rml @@ -0,0 +1,30 @@ + diff --git a/assets/config_menu.rml b/assets/config_menu.rml new file mode 100644 index 0000000..0666d77 --- /dev/null +++ b/assets/config_menu.rml @@ -0,0 +1,137 @@ + + + + + Inventory + + + + + + + + + + + +
+
+
+ + +
General
+
+
+ +