mirror of https://github.com/sm64pc/sm64pc.git
parent
88c128fbd2
commit
278e755917
|
@ -41,6 +41,7 @@
|
||||||
# Text editor remnants
|
# Text editor remnants
|
||||||
*.swp
|
*.swp
|
||||||
.vscode/*
|
.vscode/*
|
||||||
|
.idea/*
|
||||||
|
|
||||||
# General project-specific ignores
|
# General project-specific ignores
|
||||||
doxygen/doxygen/*
|
doxygen/doxygen/*
|
||||||
|
|
|
@ -1,25 +1,37 @@
|
||||||
cmake_minimum_required(VERSION 3.12)
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNON_MATCHING -DAVOID_UB")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNON_MATCHING -DAVOID_UB")
|
||||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNON_MATCHING -DAVOID_UB")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNON_MATCHING -DAVOID_UB")
|
||||||
|
|
||||||
project(sm64pc)
|
project(sm64pc)
|
||||||
|
|
||||||
set(ROM_VERSION us)
|
set(ROM_VERSION us)
|
||||||
|
add_compile_definitions(VERSION_US)
|
||||||
|
|
||||||
set(HEXDUMP_PATH "C:/git-sdk-64/usr/bin/hexdump.exe")
|
set(HEXDUMP_PATH "C:/git-sdk-64/usr/bin/hexdump.exe")
|
||||||
set(N64GRAPHICS_DIR ${CMAKE_SOURCE_DIR}/tools/n64graphics)
|
set(N64GRAPHICS_DIR ${CMAKE_SOURCE_DIR}/tools/n64graphics)
|
||||||
set(SKYCONV_DIR ${CMAKE_SOURCE_DIR}/tools/skyconv)
|
set(SKYCONV_DIR ${CMAKE_SOURCE_DIR}/tools/skyconv)
|
||||||
set(MIO0_DIR ${CMAKE_SOURCE_DIR}/tools/mio0)
|
set(MIO0_DIR ${CMAKE_SOURCE_DIR}/tools/mio0)
|
||||||
set(AIFC_DECODE_DIR ${CMAKE_SOURCE_DIR}/tools/aifc_decode)
|
set(AIFC_DECODE_DIR ${CMAKE_SOURCE_DIR}/tools/aifc_decode)
|
||||||
|
set(TEXTCONV_DIR ${CMAKE_SOURCE_DIR}/tools/textconv)
|
||||||
|
|
||||||
IF (WIN32)
|
IF (WIN32)
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
|
||||||
set(N64GRAPHICS_DIR ${N64GRAPHICS_DIR}.exe)
|
set(N64GRAPHICS_DIR ${N64GRAPHICS_DIR}.exe)
|
||||||
set(SKYCONV_DIR ${SKYCONV_DIR}.exe)
|
set(SKYCONV_DIR ${SKYCONV_DIR}.exe)
|
||||||
set(MIO0_DIR ${MIO0_DIR}.exe)
|
set(MIO0_DIR ${MIO0_DIR}.exe)
|
||||||
set(AIFC_DECODE_DIR ${AIFC_DECODE_DIR}.exe)
|
set(AIFC_DECODE_DIR ${AIFC_DECODE_DIR}.exe)
|
||||||
|
set(AIFC_DECODE_DIR ${TEXTCONV_DIR}.exe)
|
||||||
|
set(LINK_LIBRARIES SDL2main SDL2 glew32 opengl32 m glu32 setupapi dinput8 user32 gdi32 imm32 ole32 oleaut32 shell32 winmm version uuid)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "-static")
|
||||||
|
ELSE ()
|
||||||
|
set(LINK_LIBRARIES SDL2main SDL2 GL m)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
|
|
||||||
set(N64_TOOLS ${N64GRAPHICS_DIR} ${SKYCONV_DIR} ${MIO0_DIR} ${AIFC_DECODE_DIR})
|
set(N64_TOOLS ${N64GRAPHICS_DIR} ${SKYCONV_DIR} ${MIO0_DIR} ${AIFC_DECODE_DIR})
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
|
@ -32,16 +44,16 @@ include_directories(
|
||||||
${CMAKE_BINARY_DIR}/include
|
${CMAKE_BINARY_DIR}/include
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(HEADER_FILES src/game/memory.h)
|
set(SOURCES src/pc/pc_main.c)
|
||||||
|
|
||||||
SET(SOURCES src/pc/gfx/gfx_pc.c
|
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||||
src/pc/pc_main.c
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADER_FILES})
|
|
||||||
|
|
||||||
|
add_subdirectory(include)
|
||||||
add_subdirectory(textures)
|
add_subdirectory(textures)
|
||||||
|
add_subdirectory(src/audio)
|
||||||
add_subdirectory(src/goddard)
|
add_subdirectory(src/goddard)
|
||||||
add_subdirectory(src/pc)
|
add_subdirectory(src/pc)
|
||||||
|
add_subdirectory(src/menu)
|
||||||
|
add_subdirectory(src/game)
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} goddard pc)
|
target_link_libraries(${PROJECT_NAME} game audio goddard pc menu ${LINK_LIBRARIES})
|
||||||
|
|
|
@ -47,6 +47,7 @@ def remove_file(fname):
|
||||||
def clean_assets(local_asset_file):
|
def clean_assets(local_asset_file):
|
||||||
assets = set(read_asset_map().keys())
|
assets = set(read_asset_map().keys())
|
||||||
assets.update(read_local_asset_list(local_asset_file))
|
assets.update(read_local_asset_list(local_asset_file))
|
||||||
|
local_asset_file.close()
|
||||||
for fname in list(assets) + [".assets-local.txt"]:
|
for fname in list(assets) + [".assets-local.txt"]:
|
||||||
if fname.startswith("@"):
|
if fname.startswith("@"):
|
||||||
continue
|
continue
|
||||||
|
@ -153,9 +154,9 @@ def main():
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Make sure tools exist
|
# Make sure tools exist
|
||||||
subprocess.check_call(
|
#subprocess.check_call(
|
||||||
["make", "-s", "-C", "tools/", "n64graphics", "skyconv", "mio0", "aifc_decode"]
|
# ["make", "-s", "-C", "tools/", "n64graphics", "skyconv", "mio0", "aifc_decode"]
|
||||||
)
|
#)
|
||||||
|
|
||||||
# Go through the assets in roughly alphabetical order (but assets in the same
|
# Go through the assets in roughly alphabetical order (but assets in the same
|
||||||
# mio0 file still go together).
|
# mio0 file still go together).
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
|
project(include)
|
||||||
|
|
||||||
|
set(GENERATED_HEADERS
|
||||||
|
${PROJECT_BINARY_DIR}/text_strings.h
|
||||||
|
${PROJECT_BINARY_DIR}/text_menu_strings.h
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
${PROJECT_NAME}
|
||||||
|
DEPENDS ${GENERATED_HEADERS}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${PROJECT_BINARY_DIR}/text_strings.h
|
||||||
|
COMMAND ${TEXTCONV_DIR} charmap.txt ${PROJECT_SOURCE_DIR}/text_strings.h.in ${PROJECT_BINARY_DIR}/text_strings.h
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
COMMENT "Generating text_strings.."
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${PROJECT_BINARY_DIR}/text_menu_strings.h
|
||||||
|
COMMAND ${TEXTCONV_DIR} charmap_menu.txt ${PROJECT_SOURCE_DIR}/text_menu_strings.h.in ${PROJECT_BINARY_DIR}/text_menu_strings.h
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
COMMENT "Generating text_menu_strings.."
|
||||||
|
)
|
|
@ -0,0 +1,11 @@
|
||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
|
project(audio)
|
||||||
|
|
||||||
|
|
||||||
|
file(GLOB SOURCES "*.c")
|
||||||
|
|
||||||
|
file(GLOB HEADERS "*.h")
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
|
project(game)
|
||||||
|
|
||||||
|
|
||||||
|
file(GLOB_RECURSE SOURCES "*.c")
|
||||||
|
|
||||||
|
file(GLOB_RECURSE HEADERS "*.h")
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||||
|
|
|
@ -43,3 +43,5 @@ set(HEADERS
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||||
|
|
||||||
|
add_dependencies(${PROJECT_NAME} textures)
|
|
@ -0,0 +1,16 @@
|
||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
|
project(menu)
|
||||||
|
|
||||||
|
file(GLOB SOURCES "*.c")
|
||||||
|
|
||||||
|
file(GLOB HEADERS "*.h")
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
||||||
|
|
||||||
|
target_include_directories(
|
||||||
|
${PROJECT_NAME} PRIVATE
|
||||||
|
${CMAKE_BINARY_DIR}/include
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(${PROJECT_NAME} include)
|
|
@ -14,8 +14,22 @@ add_custom_command(
|
||||||
COMMENT "Extracting assets from: baserom.${ROM_VERSION}.z64"
|
COMMENT "Extracting assets from: baserom.${ROM_VERSION}.z64"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
clean_textures
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET clean_textures
|
||||||
|
COMMAND python ${CMAKE_SOURCE_DIR}/extract_assets.py --clean
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
DEPENDS ${N64_TOOLS}
|
||||||
|
COMMENT "Cleaning textures.."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
file(GLOB_RECURSE TEXTURE_PNGS "${PROJECT_SOURCE_DIR}/*.*.png")
|
file(GLOB_RECURSE TEXTURE_PNGS "${PROJECT_SOURCE_DIR}/*.*.png")
|
||||||
set(OUTPUT_DUMPED)
|
set(OUTPUT_DUMPED)
|
||||||
|
set(OUTPUT_HEX)
|
||||||
|
|
||||||
foreach(TEXTURE_PNG ${TEXTURE_PNGS})
|
foreach(TEXTURE_PNG ${TEXTURE_PNGS})
|
||||||
file(RELATIVE_PATH TEXTURE_REL_PATH ${PROJECT_SOURCE_DIR} ${TEXTURE_PNG})
|
file(RELATIVE_PATH TEXTURE_REL_PATH ${PROJECT_SOURCE_DIR} ${TEXTURE_PNG})
|
||||||
|
@ -31,14 +45,17 @@ foreach(TEXTURE_PNG ${TEXTURE_PNGS})
|
||||||
DEPENDS ${PROJECT_SOURCE_DIR}/${TEXTURE_REL_PATH}
|
DEPENDS ${PROJECT_SOURCE_DIR}/${TEXTURE_REL_PATH}
|
||||||
)
|
)
|
||||||
list(APPEND OUTPUT_DUMPED ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED})
|
list(APPEND OUTPUT_DUMPED ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED})
|
||||||
|
set(TEXTURE_HEX ${TEXTURE_DUMPED}.inc.c)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX}
|
||||||
|
COMMAND ${HEXDUMP_PATH} -v -e '1/1 \"0x%%X,\"' ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED} > ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX}
|
||||||
|
COMMENT "dumping ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED} to ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX}"
|
||||||
|
DEPENDS ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED}
|
||||||
|
)
|
||||||
|
list(APPEND OUTPUT_HEX ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_custom_target(
|
|
||||||
dump_assets
|
|
||||||
DEPENDS extract_assets ${OUTPUT_DUMPED}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
${PROJECT_NAME}
|
${PROJECT_NAME}
|
||||||
DEPENDS extract_assets dump_assets
|
DEPENDS extract_assets ${OUTPUT_DUMPED} ${OUTPUT_HEX}
|
||||||
)
|
)
|
Loading…
Reference in New Issue