Skip to content

Commit f280d4f

Browse files
committed
wip
1 parent 6aacb54 commit f280d4f

File tree

236 files changed

+197
-10240
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

236 files changed

+197
-10240
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ build.sh
4141
.vscode/
4242
.clangd/
4343
.idea/
44-
cmake-build-debug/
44+
cmake-build-debug/
45+
46+
lib/std

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@
2424
[submodule "server/Library/json"]
2525
path = server/Library/json
2626
url = https://github.com/nlohmann/json
27+
[submodule "sys"]
28+
path = sys
29+
url = https://github.com/fruityloops1/LibHakkun

CMakeLists.txt

Lines changed: 20 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,21 @@
1-
cmake_minimum_required(VERSION 3.21)
2-
project(subsdk)
1+
cmake_minimum_required(VERSION 3.16)
32

4-
## Error if not using switch toolchain file
5-
if (NOT SWITCH)
6-
message(FATAL_ERROR "Not targeting switch, make sure to specify -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain.cmake")
7-
endif()
8-
9-
set(CMAKE_C_STANDARD 17)
10-
set(CMAKE_CXX_STANDARD 20)
3+
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/sys/cmake/toolchain.cmake")
4+
project(Hakkun-Example VERSION 1.0 LANGUAGES ASM C CXX)
115
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
12-
enable_language(ASM C CXX)
13-
14-
## Title Id
15-
set(CONFIG_TITLE_ID 0x010028600ebda000)
16-
add_compile_definitions(EXL_PROGRAM_ID=${CONFIG_TITLE_ID} EXL_LOAD_KIND=Module EXL_LOAD_KIND_ENUM=2 NNSDK IMGUI_USER_CONFIG="imgui_backend/nvn_imgui_config.h" private=public protected=public DEBUGMENU)
176

18-
set(NN_SDK_MAJOR 4) # idk
19-
set(NN_SDK_MINOR 0) # idk
20-
set(NN_SDK_PATCH 0) # idk
21-
set(NN_SDK_TYPE "Release")
22-
set(NN_WARE_MAJOR 4) # idk
23-
set(NN_WARE_MINOR 0) # idk
24-
set(NN_WARE_PATCH 0) # idk
7+
include(config/config.cmake)
258

26-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/module/subsdk9.json.template ${CMAKE_CURRENT_BINARY_DIR}/subsdk9.json)
9+
file(GLOB_RECURSE SOURCES_ASM ${PROJECT_SOURCE_DIR}/src/*.S)
10+
file(GLOB_RECURSE SOURCES_C ${PROJECT_SOURCE_DIR}/src/*.c)
11+
file(GLOB_RECURSE SOURCES_CXX ${PROJECT_SOURCE_DIR}/src/*.cpp)
12+
set(SOURCES ${SOURCES_ASM} ${SOURCES_C} ${SOURCES_CXX})
2713

2814
add_subdirectory(${PROJECT_SOURCE_DIR}/lib/penet)
2915

30-
## Project sources
31-
set (INCLUDE_DIRS
16+
add_executable(${PROJECT_NAME} ${SOURCES})
17+
18+
set(INCLUDE_DIRS
3219
${PROJECT_SOURCE_DIR}/src/
3320
${PROJECT_SOURCE_DIR}/src/lib
3421
${PROJECT_SOURCE_DIR}/include
@@ -38,43 +25,18 @@ set (INCLUDE_DIRS
3825
${PROJECT_SOURCE_DIR}/lib/imgui
3926
${PROJECT_SOURCE_DIR}/lib/enet-nx/include
4027
${PROJECT_SOURCE_DIR}/lib/penet/Include
28+
${PROJECT_SOURCE_DIR}/sys/hakkun/include
4129
)
42-
include_directories(${INCLUDE_DIRS})
43-
44-
file(GLOB_RECURSE SOURCES_ASM ${PROJECT_SOURCE_DIR}/src/*.s)
45-
file(GLOB_RECURSE SOURCES_C ${PROJECT_SOURCE_DIR}/src/*.c)
46-
file(GLOB_RECURSE SOURCES_CXX ${PROJECT_SOURCE_DIR}/src/*.cpp)
47-
48-
file(GLOB IMGUI_SOURCES ${PROJECT_SOURCE_DIR}/lib/imgui/*.cpp)
49-
file(GLOB ENET_SOURCES ${PROJECT_SOURCE_DIR}/lib/enet-nx/source/*.c ${PROJECT_SOURCE_DIR}/lib/enet-nx/source/*.cpp)
5030

51-
## Include nx tools
52-
include(${CMAKE_SOURCE_DIR}/cmake/SwitchTools.cmake)
31+
include_directories(
32+
${INCLUDE_DIRS}
33+
)
5334

54-
## subsdk9
55-
set(CMAKE_EXECUTABLE_SUFFIX ".nss")
56-
add_executable(subsdk9 ${SOURCES_ASM} ${SOURCES_C} ${SOURCES_CXX} ${IMGUI_SOURCES} ${ENET_SOURCES})
57-
target_link_libraries(subsdk9 PUBLIC penet)
5835
target_include_directories(penet PUBLIC ${INCLUDE_DIRS})
5936

37+
target_link_libraries(${PROJECT_NAME} PUBLIC penet)
6038

61-
## Prepare subsdk ld
62-
set(SUBSDK_LD_PATH ${CMAKE_CURRENT_SOURCE_DIR}/module/subsdk9.ld)
63-
set(GAME_VERSION 110)
64-
set(SYMS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/syms/${GAME_VERSION}")
65-
66-
execute_process(
67-
COMMAND bash -c "find ${SYMS_PATH} -type f -name '*.sym' -exec cat {} + > ${CMAKE_BINARY_DIR}/syms.ld"
68-
)
69-
70-
execute_process(COMMAND uname OUTPUT_VARIABLE uname)
71-
if (uname MATCHES "^MINGW")
72-
string(REGEX REPLACE "^/([a-zA-Z])/" "\\1:/" SUBSDK_LD_PATH "${SUBSDK_LD_PATH}")
73-
endif ()
74-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/module/subsdk9.specs.template ${CMAKE_CURRENT_BINARY_DIR}/subsdk9.specs)
75-
76-
## Build nso & generate npdm
77-
add_nso_target_subsdk(subsdk9)
78-
set_target_properties(subsdk9 PROPERTIES CONFIG_JSON "${CMAKE_CURRENT_BINARY_DIR}/subsdk9.json")
79-
__generate_npdm(subsdk9)
80-
set_target_properties(subsdk9 PROPERTIES LINK_FLAGS "-specs ${CMAKE_BINARY_DIR}/subsdk9.specs -g ${ARCH} -nostartfiles -nostdlib")
39+
include(sys/cmake/module.cmake)
40+
include(sys/cmake/deploy.cmake)
41+
include(sys/cmake/sail.cmake)
42+
usesail(${PROJECT_NAME})

config/ModuleList.sym

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
rtld = 0
2+
game = 1
3+
sdk = 3

config/VersionList.sym

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@game
2+
110 = 891687f016a18f1773d4a88ebf8a973c

config/config.cmake

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
set(LINKFLAGS -nodefaultlibs)
2+
set(LLDFLAGS --no-demangle --gc-sections)
3+
4+
set(OPTIMIZE_OPTIONS_DEBUG -O2 -gdwarf-4)
5+
set(OPTIMIZE_OPTIONS_RELEASE -O3 -ffast-math -flto)
6+
set(WARN_OPTIONS -Werror=return-type -Wno-invalid-offsetof)
7+
8+
set(INCLUDES include include/agl)
9+
set(DEFINITIONS DEBUGMENU)
10+
11+
set(ASM_OPTIONS "")
12+
set(C_OPTIONS -ffunction-sections -fdata-sections)
13+
set(CXX_OPTIONS "")
14+
set(CMAKE_CXX_STANDARD 23)
15+
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
16+
17+
set(IS_32_BIT FALSE)
18+
set(TARGET_IS_STATIC FALSE)
19+
set(MODULE_NAME Hakkun-Example)
20+
set(TITLE_ID 0x0100A3D008C5C000)
21+
set(MODULE_BINARY subsdk4)
22+
set(SDK_PAST_1900 FALSE)
23+
set(USE_SAIL TRUE)
24+
25+
set(TRAMPOLINE_POOL_SIZE 0x10)
26+
set(BAKE_SYMBOLS FALSE)
27+
28+
set(HAKKUN_ADDONS HeapSourceDynamic)
29+
set(HAKKUN_BSS_HEAP_SIZE 0x100000)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name":"Application",
3-
"title_id":"@CONFIG_TITLE_ID@",
3+
"title_id":"@TITLE_ID@",
44
"title_id_range_min":"0x0100000000010000",
55
"title_id_range_max":"0x01ffffffffffffff",
66
"main_thread_stack_size":"0x00100000",

include/pe/Util/Nerve.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
#include "al/Nerve/Nerve.h"
44
#include "al/Nerve/NerveFunction.h"
5-
#include "util/modules.hpp"
65
#include <cstdint>
76

87
class ProductSequence;

include/pe/Util/Type.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "Game/Player/PlayerActor.h"
44
#include "al/LiveActor/LiveActor.h"
5-
#include "util/modules.hpp"
5+
#include "hk/ro/RoUtil.h"
66
#include <type_traits>
77

88
namespace pe {
@@ -18,7 +18,7 @@ namespace util {
1818
template <typename T>
1919
ptrdiff_t getVftOffsetMain(const T* instance)
2020
{
21-
return getVft(instance) - exl::util::modules::GetTargetStart();
21+
return getVft(instance) - hk::ro::getMainModule()->range().start();
2222
}
2323

2424
template <typename T, typename F>

include/types.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#pragma once
2+
3+
#include "hk/types.h"

0 commit comments

Comments
 (0)