mirror of
https://github.com/izzy2lost/Ghostship.git
synced 2026-06-19 01:17:03 -07:00
First build ( with linker errors )
This commit is contained in:
@@ -51,6 +51,9 @@ build/*
|
||||
*.map
|
||||
.assets-local.txt
|
||||
|
||||
build-cmake/*
|
||||
cmake-build-*/*
|
||||
|
||||
# Assets. Generally ignored, but ones with "custom" in the name are fine.
|
||||
/levels/**/*.png
|
||||
/actors/**/*.png
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "libultraship"]
|
||||
path = libultraship
|
||||
url = https://github.com/KiritoDv/libultraship
|
||||
+444
@@ -0,0 +1,444 @@
|
||||
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
|
||||
|
||||
# Set the project version and language
|
||||
project(sm64-tmp VERSION 0.1.0 LANGUAGES C CXX ASM)
|
||||
|
||||
if(APPLE)
|
||||
enable_language(OBJCXX)
|
||||
endif()
|
||||
|
||||
# Set the minimum version of CMake and the deployment target for macOS
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
|
||||
|
||||
# Set the C++ standard and enable the MSVC parallel build option
|
||||
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
|
||||
set(CMAKE_C_STANDARD 11 CACHE STRING "The C standard to use")
|
||||
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
|
||||
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MT>)
|
||||
|
||||
# Add a custom module path to locate additional CMake modules
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
|
||||
include(FindFontconfig)
|
||||
|
||||
if (WIN32)
|
||||
include(cmake/automate-vcpkg.cmake)
|
||||
|
||||
if(MSVC)
|
||||
set(VCPKG_TRIPLET x64-windows-static)
|
||||
set(VCPKG_TARGET_TRIPLET x64-windows-static)
|
||||
else()
|
||||
set(VCPKG_TRIPLET x64-mingw-static)
|
||||
set(VCPKG_TARGET_TRIPLET x64-mingw-static)
|
||||
endif()
|
||||
|
||||
vcpkg_bootstrap()
|
||||
if(MSVC)
|
||||
vcpkg_install_packages(zlib bzip2 libpng getopt dirent libusb pthread)
|
||||
else()
|
||||
vcpkg_install_packages(fontconfig)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
set(CPP "${CMAKE_C_COMPILER}" "/EP")
|
||||
else()
|
||||
set(CPP "${CMAKE_C_COMPILER}" "-E" "-P" "-Wno-trigraphs" "-x" "c")
|
||||
endif()
|
||||
|
||||
# Set game compilation version
|
||||
set(VERSION us)
|
||||
|
||||
# Add the tools subdirectory to the build
|
||||
add_subdirectory(tools)
|
||||
|
||||
# Find Python 3 for the custom target
|
||||
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
||||
|
||||
# Add a custom target to extract assets
|
||||
add_custom_target(
|
||||
ExtractAssets
|
||||
COMMAND ${CMAKE_COMMAND} -E env "TOOLS_PATH=$<TARGET_FILE_DIR:mio0>" ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/extract_assets.py ${VERSION}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Running asset extraction..."
|
||||
DEPENDS Tools
|
||||
)
|
||||
|
||||
# Add a custom target to extract assets
|
||||
add_custom_target(
|
||||
CleanAssets
|
||||
COMMAND ${CMAKE_COMMAND} -E env "TOOLS_PATH=$<TARGET_FILE_DIR:mio0>" ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/extract_assets.py --clean
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_SOURCE_DIR}/.assets-local.txt
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Running asset extraction..."
|
||||
DEPENDS Tools
|
||||
)
|
||||
|
||||
# Add compile definitions for the target
|
||||
add_compile_definitions(
|
||||
VERSION_US=1
|
||||
F3DEX_GBI_2=1
|
||||
_LANGUAGE_C
|
||||
_USE_MATH_DEFINES
|
||||
CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||
)
|
||||
|
||||
# Find necessary libraries
|
||||
if (UNIX AND NOT APPLE)
|
||||
find_package(OpenGL REQUIRED)
|
||||
endif()
|
||||
|
||||
# Include directories
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/include
|
||||
${DIRECTORIES_TO_INCLUDE}
|
||||
)
|
||||
|
||||
# Collect source files to build the executable
|
||||
file(GLOB_RECURSE ALL_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
"actors/*.h"
|
||||
"actors/*.c"
|
||||
"bin/*.c"
|
||||
"data/*.c"
|
||||
"levels/*.h"
|
||||
"levels/*.c"
|
||||
"lib/src/alBnkfNew.c"
|
||||
"lib/src/guLookAtRef.c"
|
||||
"lib/src/guMtxF2L.c"
|
||||
"lib/src/guNormalize.c"
|
||||
"lib/src/guOrthoF.c"
|
||||
"lib/src/guPerspectiveF.c"
|
||||
"lib/src/guRotateF.c"
|
||||
"lib/src/guScaleF.c"
|
||||
"lib/src/guTranslateF.c"
|
||||
"sound/*.c"
|
||||
"src/audio/*.h"
|
||||
"src/audio/*.c"
|
||||
"src/buffers/*.h"
|
||||
"src/buffers/*.c"
|
||||
"src/engine/*.h"
|
||||
"src/engine/*.c"
|
||||
"src/game/*.h"
|
||||
"src/game/*.c"
|
||||
"src/goddard/*.h"
|
||||
"src/goddard/*.c"
|
||||
"src/menu/*.h"
|
||||
"src/menu/*.c"
|
||||
"src/pc/*.h"
|
||||
"src/pc/*.c"
|
||||
"src/pc/*.cpp"
|
||||
"src/port/*.h"
|
||||
"src/port/*.c"
|
||||
"src/port/*.cpp"
|
||||
"text/*.c"
|
||||
"textures/*.h"
|
||||
"textures/*.c"
|
||||
)
|
||||
|
||||
# Exclude specific files from the ALL_FILES list
|
||||
list(FILTER ALL_FILES EXCLUDE REGEX ".*.inc.c")
|
||||
list(FILTER ALL_FILES EXCLUDE REGEX "bin/eu/.*.c")
|
||||
list(FILTER ALL_FILES EXCLUDE REGEX "src/game/main.c")
|
||||
list(FILTER ALL_FILES EXCLUDE REGEX "src/pc/dlmalloc.c")
|
||||
|
||||
file(GLOB_RECURSE SKYBOXES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "textures/skyboxes/*.png")
|
||||
foreach(skybox ${SKYBOXES})
|
||||
get_filename_component(OUTPUT_FILE_WLE ${skybox} NAME_WLE)
|
||||
get_filename_component(OUTPUT_DIR ${skybox} DIRECTORY)
|
||||
set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/bin/${OUTPUT_FILE_WLE}_skybox.c)
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/bin
|
||||
VERBATIM COMMAND $<TARGET_FILE:skyconv> --type sky --split ${CMAKE_CURRENT_SOURCE_DIR}/${skybox} ${CMAKE_CURRENT_BINARY_DIR}/bin
|
||||
DEPENDS skyconv
|
||||
)
|
||||
list(APPEND ALL_FILES ${OUTPUT_FILE})
|
||||
endforeach(skybox)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.tmp
|
||||
COMMAND ${CPP} -I${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/levels/level_headers.h.in > ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.tmp
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT include/level_headers.h
|
||||
COMMAND ${Python3_EXECUTABLE} tools/wrapinclude.py ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.tmp > ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.tmp
|
||||
)
|
||||
|
||||
list(APPEND ALL_FILES ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.h)
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
# Generated Source Code Files #
|
||||
#==============================================================================#
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT assets/mario_anim_data.c
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/mario_anims_converter.py > ${CMAKE_CURRENT_BINARY_DIR}/assets/mario_anim_data.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
list(APPEND ALL_FILES ${CMAKE_CURRENT_BINARY_DIR}/assets/mario_anim_data.c)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT assets/demo_data.c
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/demo_data_converter.py ${CMAKE_CURRENT_SOURCE_DIR}/assets/demo_data.json -D VERSION_US > ${CMAKE_CURRENT_BINARY_DIR}/assets/demo_data.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
list(APPEND ALL_FILES ${CMAKE_CURRENT_BINARY_DIR}/assets/demo_data.c)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT include/text_strings.h
|
||||
COMMAND $<TARGET_FILE:textconv> charmap.txt ${CMAKE_CURRENT_SOURCE_DIR}/include/text_strings.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/text_strings.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS textconv
|
||||
)
|
||||
list(APPEND ALL_FILES ${CMAKE_CURRENT_BINARY_DIR}/include/text_strings.h)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT include/text_menu_strings.h
|
||||
COMMAND $<TARGET_FILE:textconv> charmap_menu.txt ${CMAKE_CURRENT_SOURCE_DIR}/include/text_menu_strings.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/text_menu_strings.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS textconv
|
||||
)
|
||||
list(APPEND ALL_FILES ${CMAKE_CURRENT_BINARY_DIR}/include/text_menu_strings.h)
|
||||
|
||||
add_executable(${PROJECT_NAME} ${ALL_FILES} ${GENERATED_SOURCES})
|
||||
|
||||
################################################################################
|
||||
# MSVC runtime library
|
||||
################################################################################
|
||||
if (MSVC)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
|
||||
$<$<CONFIG:Debug>:
|
||||
MultiThreadedDebug
|
||||
>
|
||||
$<$<CONFIG:Release>:
|
||||
MultiThreaded
|
||||
>
|
||||
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
|
||||
$<$<CONFIG:Debug>:
|
||||
MultiThreadedDebug
|
||||
>
|
||||
$<$<CONFIG:Release>:
|
||||
MultiThreaded
|
||||
>
|
||||
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
|
||||
)
|
||||
endif()
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#==============================================================================#
|
||||
# Libultraship Integration #
|
||||
#==============================================================================#
|
||||
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/include/libultraship
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/log
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/debug
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/menu
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/utils
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/utils/binarytools
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/config
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/resource
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/resource/type
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/resource/factory
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/audio
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/window
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/window/gui
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/config
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/public
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/public/libultra
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/public/bridge
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/extern
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/extern/tinyxml2
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/libultraship/Lib/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/libultraship/Lib/libjpeg/include/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/libultraship/Lib/spdlog/include/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/graphic/Fast3D/U64/PR
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/graphic
|
||||
${SDL2_INCLUDE_DIRS}
|
||||
${GLEW_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
add_subdirectory(libultraship ${CMAKE_CURRENT_SOURCE_DIR}/libultraship)
|
||||
|
||||
add_dependencies(${PROJECT_NAME} libultraship)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE libultraship)
|
||||
|
||||
if(APPLE)
|
||||
find_package(SDL2)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE SDL2::SDL2)
|
||||
endif()
|
||||
|
||||
#==============================================================================#
|
||||
# Texture Generation #
|
||||
#==============================================================================#
|
||||
|
||||
set (TEXTURE_ENCODING u8)
|
||||
set(INC_C_FILES "")
|
||||
|
||||
file(GLOB_RECURSE ORGFILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "actors/*.png")
|
||||
file(GLOB_RECURSE ORGFILES2 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "levels/*.png")
|
||||
file(GLOB_RECURSE ORGFILES3 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "textures/*.png")
|
||||
list (APPEND ORGFILES ${ORGFILES2})
|
||||
list (APPEND ORGFILES ${ORGFILES3})
|
||||
list(REMOVE_ITEM ORGFILES "levels/ending/cake.png")
|
||||
list(FILTER ORGFILES EXCLUDE REGEX "textures/ipl3_raw/.*.png")
|
||||
list(FILTER ORGFILES EXCLUDE REGEX "textures/skyboxes/.*.png")
|
||||
foreach(orgfile ${ORGFILES})
|
||||
get_filename_component(OUTPUT_FILE_WLE ${orgfile} NAME_WLE)
|
||||
get_filename_component(OUTPUT_DIR ${orgfile} DIRECTORY)
|
||||
set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.inc.c)
|
||||
string(REPLACE "." ";" FORMAT ${OUTPUT_FILE_WLE})
|
||||
list(POP_BACK FORMAT FORMAT2)
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
|
||||
VERBATIM COMMAND $<TARGET_FILE:n64graphics> -s ${TEXTURE_ENCODING} -i ${OUTPUT_FILE} -g ${CMAKE_CURRENT_SOURCE_DIR}/${orgfile} -f ${FORMAT2}
|
||||
DEPENDS n64graphics
|
||||
)
|
||||
list(APPEND INC_C_FILES ${OUTPUT_FILE})
|
||||
endforeach(orgfile)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/levels/ending/cake.inc.c
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/levels/ending
|
||||
COMMAND $<TARGET_FILE:skyconv> --type cake --split ${CMAKE_CURRENT_SOURCE_DIR}/levels/ending/cake.png ${CMAKE_CURRENT_BINARY_DIR}/levels/ending
|
||||
DEPENDS skyconv
|
||||
)
|
||||
list(APPEND INC_C_FILES ${CMAKE_CURRENT_BINARY_DIR}/levels/ending/cake.inc.c)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/text/us
|
||||
COMMAND ${CPP} -I${CMAKE_CURRENT_SOURCE_DIR}/text/us ${CMAKE_CURRENT_SOURCE_DIR}/text/define_text.inc.c > ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text.inc.c
|
||||
COMMAND $<TARGET_FILE:textconv> ${CMAKE_CURRENT_SOURCE_DIR}/charmap.txt ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text.inc.c
|
||||
VERBATIM
|
||||
DEPENDS textconv
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp
|
||||
)
|
||||
|
||||
list(APPEND INC_C_FILES ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text.inc.c)
|
||||
|
||||
#==============================================================================#
|
||||
# Sound File Generation #
|
||||
#==============================================================================#
|
||||
|
||||
execute_process(
|
||||
OUTPUT_VARIABLE endian_and_bitwidth
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/determine-endian-bitwidth.py
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
string(REPLACE " " ";" endian_and_bitwidth ${endian_and_bitwidth})
|
||||
|
||||
set (TABLE_FILES "")
|
||||
file(GLOB_RECURSE AIFF_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS "*.aiff")
|
||||
foreach(aifffile ${AIFF_FILES})
|
||||
get_filename_component(OUTPUT_FILE_WLE ${aifffile} NAME_WLE)
|
||||
get_filename_component(OUTPUT_DIR ${aifffile} DIRECTORY)
|
||||
set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.table)
|
||||
list(APPEND TABLE_FILES ${OUTPUT_FILE})
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
|
||||
VERBATIM COMMAND ${CMAKE_COMMAND} -E env "TOOLS_PATH=$<TARGET_FILE_DIR:mio0>" $<TARGET_FILE:aiff_extract_cookbook> ${CMAKE_CURRENT_SOURCE_DIR}/${aifffile} > ${OUTPUT_FILE}
|
||||
DEPENDS aiff_extract_cookbook
|
||||
DEPENDS ${aifffile}
|
||||
)
|
||||
endforeach(aifffile)
|
||||
|
||||
set(AIFC_FILES "")
|
||||
foreach(aifffile ${AIFF_FILES})
|
||||
get_filename_component(OUTPUT_FILE_WLE ${aifffile} NAME_WLE)
|
||||
get_filename_component(OUTPUT_DIR ${aifffile} DIRECTORY)
|
||||
set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.aifc)
|
||||
list(APPEND AIFC_FILES ${OUTPUT_FILE})
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
|
||||
VERBATIM COMMAND $<TARGET_FILE:vadpcm_enc> -c ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.table ${CMAKE_CURRENT_SOURCE_DIR}/${aifffile} ${OUTPUT_FILE}
|
||||
DEPENDS vadpcm_enc
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.table ${CMAKE_CURRENT_SOURCE_DIR}/${aifffile}
|
||||
)
|
||||
endforeach(aifffile)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT sound/sound_data.ctl.inc.c sound/sound_data.tbl.inc.c
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/assemble_sound.py ${CMAKE_CURRENT_BINARY_DIR}/sound/samples/ ${CMAKE_CURRENT_SOURCE_DIR}/sound/sound_banks ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.ctl ${CMAKE_CURRENT_BINARY_DIR}/sound/ctl_header ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.tbl ${CMAKE_CURRENT_BINARY_DIR}/sound/tbl_header -DVERSION_US ${endian_and_bitwidth}
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/conv2hex.py ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.ctl > ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.ctl.inc.c
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/conv2hex.py ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.tbl > ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.tbl.inc.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${TABLE_FILES}
|
||||
DEPENDS ${AIFC_FILES}
|
||||
)
|
||||
list(APPEND INC_C_FILES ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.ctl.inc.c ${CMAKE_CURRENT_BINARY_DIR}/sound/sound_data.tbl.inc.c)
|
||||
|
||||
file(GLOB_RECURSE SEQUENCES_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "sound/*.m64")
|
||||
|
||||
file(GLOB_RECURSE SEQUENCES_S_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "sound/*.s")
|
||||
foreach(sequence_s ${SEQUENCES_S_FILES})
|
||||
get_filename_component(OUTPUT_FILE_WLE ${sequence_s} NAME_WLE)
|
||||
get_filename_component(OUTPUT_DIR ${sequence_s} DIRECTORY)
|
||||
set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.m64)
|
||||
|
||||
if(APPLE)
|
||||
set(COPY_COMMAND i686-w64-mingw32-objcopy)
|
||||
else()
|
||||
set(COPY_COMMAND objcopy)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
set(AS_COMMAND i686-w64-mingw32-as)
|
||||
else()
|
||||
set(AS_COMMAND as)
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
|
||||
COMMAND ${CPP} ${CMAKE_CURRENT_SOURCE_DIR}/${sequence_s} -I${CMAKE_CURRENT_SOURCE_DIR}/include -DVERSION_US | ${AS_COMMAND} -o ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.o
|
||||
VERBATIM COMMAND ${COPY_COMMAND} -j .rodata ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}/${OUTPUT_FILE_WLE}.o -O binary ${OUTPUT_FILE}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${sequence_s}
|
||||
)
|
||||
list(APPEND SEQUENCES_FILES ${OUTPUT_FILE})
|
||||
endforeach(sequence_s)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT sound/sequences.bin.inc.c sound/bank_sets.inc.c
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/assemble_sound.py --sequences ${CMAKE_CURRENT_BINARY_DIR}/sound/sequences.bin ${CMAKE_CURRENT_BINARY_DIR}/sound/sequences_header ${CMAKE_CURRENT_BINARY_DIR}/sound/bank_sets ${CMAKE_CURRENT_SOURCE_DIR}/sound/sound_banks ${CMAKE_CURRENT_SOURCE_DIR}/sound/sequences.json ${SEQUENCES_FILES} -DVERSION_US ${endian_and_bitwidth}
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/conv2hex.py ${CMAKE_CURRENT_BINARY_DIR}/sound/sequences.bin > ${CMAKE_CURRENT_BINARY_DIR}/sound/sequences.bin.inc.c
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tools/conv2hex.py ${CMAKE_CURRENT_BINARY_DIR}/sound/bank_sets > ${CMAKE_CURRENT_BINARY_DIR}/sound/bank_sets.inc.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${SEQUENCES_FILES}
|
||||
)
|
||||
list(APPEND INC_C_FILES ${CMAKE_CURRENT_BINARY_DIR}/sound/sequences.bin.inc.c ${CMAKE_CURRENT_BINARY_DIR}/sound/bank_sets.inc.c)
|
||||
|
||||
add_custom_target(
|
||||
ConvertIncCFiles
|
||||
DEPENDS ${INC_C_FILES}
|
||||
)
|
||||
|
||||
add_dependencies(${PROJECT_NAME} ConvertIncCFiles)
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
FROM ubuntu:18.04 as build
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
binutils-mips-linux-gnu \
|
||||
bsdmainutils \
|
||||
build-essential \
|
||||
libcapstone-dev \
|
||||
pkgconf \
|
||||
python3
|
||||
|
||||
RUN mkdir /sm64
|
||||
WORKDIR /sm64
|
||||
ENV PATH="/sm64/tools:${PATH}"
|
||||
|
||||
CMD echo 'usage: docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 sm64 make VERSION=us -j4\n' \
|
||||
'see https://github.com/n64decomp/sm64/blob/master/README.md for advanced usage'
|
||||
Vendored
-60
@@ -1,60 +0,0 @@
|
||||
pipeline {
|
||||
agent any
|
||||
stages {
|
||||
stage('Build Tools') {
|
||||
steps {
|
||||
sh 'make -j4 -C tools/'
|
||||
}
|
||||
}
|
||||
stage('Extract Assets') {
|
||||
steps {
|
||||
sh 'ln -s "$ROMS_DIR/Super Mario 64 (J) [!].z64" baserom.jp.z64'
|
||||
sh 'ln -s "$ROMS_DIR/Super Mario 64 (U) [!].z64" baserom.us.z64'
|
||||
sh 'ln -s "$ROMS_DIR/Super Mario 64 (E) (M3) [!].z64" baserom.eu.z64'
|
||||
sh 'ln -s "$ROMS_DIR/Super Mario 64 - Shindou Edition (J) [!].z64" baserom.sh.z64'
|
||||
// verify no assets were committed to repo
|
||||
sh '[ -z "$(find {actors,levels,textures}/ -name \'*.png\')" ]'
|
||||
sh '[ -z "$(find assets/ -name \'*.m64\' -or \'*.bin\')" ]'
|
||||
sh './extract_assets.py jp us eu sh'
|
||||
}
|
||||
}
|
||||
stage('Build U Source') {
|
||||
steps {
|
||||
sh 'make -j4 VERSION=us VERBOSE=1 COLOR=0'
|
||||
}
|
||||
}
|
||||
stage('Build S Source') {
|
||||
steps {
|
||||
sh 'make -j4 VERSION=sh VERBOSE=1 COLOR=0'
|
||||
}
|
||||
}
|
||||
stage('Build E Source') {
|
||||
steps {
|
||||
sh 'make -j4 VERSION=eu VERBOSE=1 COLOR=0'
|
||||
}
|
||||
}
|
||||
stage('Build J Source') {
|
||||
steps {
|
||||
sh 'make -j4 VERSION=jp VERBOSE=1 COLOR=0'
|
||||
}
|
||||
}
|
||||
stage('Test Enhancements') {
|
||||
steps {
|
||||
sh '''
|
||||
set -e
|
||||
for f in enhancements/*.patch
|
||||
do
|
||||
git clean -fd .
|
||||
git checkout -- .
|
||||
echo 'y' | tools/apply_patch.sh "$f"
|
||||
make -j4 VERSION=us COMPARE=0 VERBOSE=1
|
||||
done
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
environment {
|
||||
QEMU_IRIX = credentials('qemu-irix')
|
||||
ROMS_DIR = credentials('roms')
|
||||
}
|
||||
}
|
||||
-270
@@ -1,270 +0,0 @@
|
||||
# --------------------------------------
|
||||
# General Rules
|
||||
# --------------------------------------
|
||||
|
||||
# obtain a list of segments from the *.c files in bin directory
|
||||
SEGMENTS := \
|
||||
$(notdir $(basename $(wildcard bin/*.c))) \
|
||||
$(addprefix $(VERSION)/,$(notdir $(basename $(wildcard bin/$(VERSION)/*.c)))) \
|
||||
$(addsuffix _skybox,$(notdir $(basename $(wildcard textures/skyboxes/*.png))))
|
||||
|
||||
# Directories containing PNG files
|
||||
TEXTURE_DIRS := \
|
||||
$(wildcard textures/*/) \
|
||||
$(filter %/,$(wildcard actors/*/))
|
||||
|
||||
# NOTE: textures assume naming convention "texture.<encoding>.png" generates "texture.<encoding>"
|
||||
|
||||
ACTOR_GROUPS := \
|
||||
group0 \
|
||||
group1 \
|
||||
group2 \
|
||||
group3 \
|
||||
group4 \
|
||||
group5 \
|
||||
group6 \
|
||||
group7 \
|
||||
group8 \
|
||||
group9 \
|
||||
group10 \
|
||||
group11 \
|
||||
group12 \
|
||||
group13 \
|
||||
group14 \
|
||||
group15 \
|
||||
group16 \
|
||||
group17 \
|
||||
common0 \
|
||||
common1
|
||||
|
||||
LEVEL_FILES := $(addsuffix leveldata,$(LEVEL_DIRS))
|
||||
|
||||
SEG_FILES := \
|
||||
$(SEGMENTS:%=$(BUILD_DIR)/bin/%.elf) \
|
||||
$(ACTOR_GROUPS:%=$(BUILD_DIR)/actors/%.elf) \
|
||||
$(LEVEL_FILES:%=$(BUILD_DIR)/levels/%.elf)
|
||||
|
||||
MIO0_FILES := \
|
||||
$(SEGMENTS:%=$(BUILD_DIR)/bin/%.mio0) \
|
||||
$(ACTOR_GROUPS:%=$(BUILD_DIR)/actors/%.mio0) \
|
||||
$(LEVEL_FILES:%=$(BUILD_DIR)/levels/%.mio0)
|
||||
|
||||
MIO0_OBJ_FILES := $(MIO0_FILES:.mio0=.mio0.o)
|
||||
|
||||
|
||||
# --------------------------------------
|
||||
# Actor Rules
|
||||
# --------------------------------------
|
||||
|
||||
# Actor Directories
|
||||
KOOPA_DIRS := koopa_flag poundable_pole koopa piranha_plant whomp chain_ball chain_chomp
|
||||
CAPSWITCH_DIRS := capswitch springboard
|
||||
CHILLYCHIEF_DIRS := chillychief moneybag
|
||||
BULLY_DIRS := bully blargg
|
||||
SPINDRIFT_DIRS := spindrift penguin snowman
|
||||
KING_BOBOMB_DIRS := king_bobomb water_bubble
|
||||
BOO_DIRS := bookend book chair small_key mad_piano boo haunted_cage
|
||||
MR_I_DIRS := mr_i_eyeball mr_i_iris swoop snufit dorrie scuttlebug
|
||||
HOOT_DIRS := yellow_sphere_small hoot yoshi_egg thwomp bullet_bill heave_ho
|
||||
COINS_DIRS := mist explosion butterfly coin warp_pipe door bowser_key flame blue_fish pebble leaves warp_collision mario_cap power_meter mushroom_1up star sand dirt transparent_star white_particle wooden_signpost tree
|
||||
BUBBA_DIRS := bubba wiggler wiggler_body_part lakitu_enemy spiny_egg spiny
|
||||
SKEETER_DIRS := skeeter seaweed water_mine cyan_fish bub water_ring treasure_chest
|
||||
KLEPTO_DIRS := klepto eyerok pokey tornado
|
||||
SEA_DIRS := clam_shell manta sushi unagi whirlpool
|
||||
AMP_DIRS := blue_coin_switch amp cannon_lid cannon_base cannon_barrel chuckya purple_switch checkerboard_platform heart flyguy breakable_box exclamation_box goomba bobomb metal_box exclamation_box_outline test_platform koopa_shell
|
||||
MOLE_DIRS := monty_mole_hole monty_mole smoke ukiki fwoosh
|
||||
LAKITU_DIRS := lakitu_cameraman toad mips boo_castle
|
||||
PEACH_DIRS := bird peach yoshi
|
||||
BOWSER_DIRS := bowser_flame impact_ring yellow_sphere bowser bomb impact_smoke
|
||||
MARIO_DIRS := mario bubble walk_smoke burn_smoke stomp_smoke water_wave sparkle water_splash white_particle_small sparkle_animation
|
||||
|
||||
# Actor Textures
|
||||
AMP_CHUCKYA_TEXTURES := $(foreach dir,$(AMP_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
BOBOMBS_BUBBLE_TEXTURES := $(foreach dir,$(KING_BOBOMB_DIRS),$(wildcard actors/$(dir)/*.png))
|
||||
BOO_BOOKEND_TEXTURES := $(foreach dir,$(BOO_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
CAPSWITCH_SPRINGBOARD_TEXTURES := $(foreach dir,$(CAPSWITCH_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
COINS_PIPE_TEXTURES := $(foreach dir,$(COINS_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
BOWSER_FLAMES_TEXTURES := $(foreach dir,$(BOWSER_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
BUBBA_WIGGLER_TEXTURES := $(foreach dir,$(BUBBA_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
BULLY_BLARGG_TEXTURES := $(foreach dir,$(BULLY_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
CHILLYCHIEF_TEXTURES := $(foreach dir,$(CHILLYCHIEF_DIRS),$(wildcard actors/$(dir)/*.png))
|
||||
HOOT_THWOMP_TEXTURES := $(foreach dir,$(HOOT_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
KOOPA_LOG_TEXTURES := $(foreach dir,$(KOOPA_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
KLEPTO_EYEROK_TEXTURES := $(foreach dir,$(KLEPTO_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
LAKITU_TOAD_TEXTURES := $(foreach dir,$(LAKITU_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
MARIO_WATER_TEXTURES := $(foreach dir,$(MARIO_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
MOLE_UKIKI_TEXTURES := $(foreach dir,$(MOLE_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
MR_I_SWOOP_TEXTURES := $(foreach dir,$(MR_I_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
PEACH_TOADSTOOL_TEXTURES := $(foreach dir,$(PEACH_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
SEA_CREATURES_TEXTURES := $(foreach dir,$(SEA_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
SKEETER_FISH_TEXTURES := $(foreach dir,$(SKEETER_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
SPINDRIFT_PENGUIN_TEXTURES := $(foreach dir,$(SPINDRIFT_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
|
||||
# Actor dependencies
|
||||
$(BUILD_DIR)/actors/group0.o: $(MARIO_WATER_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group1.o: $(HOOT_THWOMP_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group2.o: $(BULLY_BLARGG_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group3.o: $(BOBOMBS_BUBBLE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group4.o: $(SEA_CREATURES_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group5.o: $(KLEPTO_EYEROK_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group6.o: $(MOLE_UKIKI_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group7.o: $(SPINDRIFT_PENGUIN_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group8.o: $(CAPSWITCH_SPRINGBOARD_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group9.o: $(BOO_BOOKEND_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group10.o: $(PEACH_TOADSTOOL_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group11.o: $(BUBBA_WIGGLER_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group12.o: $(BOWSER_FLAMES_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group13.o: $(SKEETER_FISH_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group14.o: $(KOOPA_LOG_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group15.o: $(LAKITU_TOAD_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group16.o: $(CHILLYCHIEF_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/group17.o: $(MR_I_SWOOP_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/common0.o: $(AMP_CHUCKYA_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/actors/common1.o: $(COINS_PIPE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
|
||||
# Actor Elf Files
|
||||
$(BUILD_DIR)/actors/group0.elf: SEGMENT_ADDRESS := 0x04000000
|
||||
$(BUILD_DIR)/actors/group1.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group2.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group3.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group4.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group5.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group6.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group7.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group8.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group9.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group10.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group11.elf: SEGMENT_ADDRESS := 0x05000000
|
||||
$(BUILD_DIR)/actors/group12.elf: SEGMENT_ADDRESS := 0x06000000
|
||||
$(BUILD_DIR)/actors/group13.elf: SEGMENT_ADDRESS := 0x06000000
|
||||
$(BUILD_DIR)/actors/group14.elf: SEGMENT_ADDRESS := 0x06000000
|
||||
$(BUILD_DIR)/actors/group15.elf: SEGMENT_ADDRESS := 0x06000000
|
||||
$(BUILD_DIR)/actors/group16.elf: SEGMENT_ADDRESS := 0x06000000
|
||||
$(BUILD_DIR)/actors/group17.elf: SEGMENT_ADDRESS := 0x06000000
|
||||
$(BUILD_DIR)/actors/common0.elf: SEGMENT_ADDRESS := 0x08000000
|
||||
$(BUILD_DIR)/actors/common1.elf: SEGMENT_ADDRESS := 0x03000000
|
||||
|
||||
# --------------------------------------
|
||||
# Level Rules
|
||||
# --------------------------------------
|
||||
|
||||
$(BUILD_DIR)/levels/%/leveldata.elf: SEGMENT_ADDRESS := 0x07000000
|
||||
|
||||
# TODO: Generate these rules from the level configs?
|
||||
|
||||
define level_rules =
|
||||
$(1)_SEG7_FILES := $$(patsubst %.png,%.inc.c,$$(wildcard levels/$(1)/*.png))
|
||||
$$(BUILD_DIR)/levels/$(1)/leveldata.o: $$(addprefix $$(BUILD_DIR)/,$$($(1)_SEG7_FILES))
|
||||
$$(BUILD_DIR)/levels/$(1)/leveldata.elf: TEXTURE_BIN := $(2)
|
||||
endef
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(MAKECMDGOALS),distclean)
|
||||
$(BUILD_DIR)/level_rules.mk: levels/level_rules.mk levels/level_defines.h
|
||||
$(call print,Preprocessing level make rules:,$<,$@)
|
||||
$(V)$(CPP) $(CPPFLAGS) $(VERSION_CFLAGS) -I . -o $@ $<
|
||||
include $(BUILD_DIR)/level_rules.mk
|
||||
endif
|
||||
endif
|
||||
|
||||
# --------------------------------------
|
||||
# Extra Level Rules
|
||||
# --------------------------------------
|
||||
$(eval $(call level_rules,intro,generic)) # Intro (Super Mario 64 Logo)
|
||||
$(eval $(call level_rules,menu,generic)) # Menu (File Select)
|
||||
|
||||
# --------------------------------------
|
||||
# Cake Texture Rules
|
||||
# --------------------------------------
|
||||
|
||||
# Ending cake textures are generated in a special way
|
||||
$(BUILD_DIR)/levels/ending/cake_eu.inc.c: levels/ending/cake_eu.png
|
||||
$(call print,Splitting:,$<,$@)
|
||||
$(V)$(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending
|
||||
$(BUILD_DIR)/levels/ending/cake.inc.c: levels/ending/cake.png
|
||||
$(call print,Splitting:,$<,$@)
|
||||
$(V)$(SKYCONV) --type cake --split $^ $(BUILD_DIR)/levels/ending
|
||||
|
||||
# --------------------------------------
|
||||
# Texture Bin Rules
|
||||
# --------------------------------------
|
||||
|
||||
# Others
|
||||
SEGMENT2_TEXTURES := $(wildcard $(TEXTURE_DIR)/segment2/*.png)
|
||||
TITLE_SCREEN_BG_TEXTURES := $(wildcard $(TEXTURE_DIR)/title_screen_bg/*.png)
|
||||
SPOOKY_TEXTURES := $(wildcard $(TEXTURE_DIR)/spooky/*.png)
|
||||
GENERIC_TEXTURES := $(wildcard $(TEXTURE_DIR)/generic/*.png)
|
||||
OUTSIDE_TEXTURES := $(wildcard $(TEXTURE_DIR)/outside/*.png)
|
||||
SNOW_TEXTURES := $(wildcard $(TEXTURE_DIR)/snow/*.png)
|
||||
EFFECT_TEXTURES := $(wildcard $(TEXTURE_DIR)/effect/*.png)
|
||||
CAVE_TEXTURES := $(wildcard $(TEXTURE_DIR)/cave/*.png)
|
||||
INSIDE_TEXTURES := $(wildcard $(TEXTURE_DIR)/inside/*.png)
|
||||
WATER_TEXTURES := $(wildcard $(TEXTURE_DIR)/water/*.png)
|
||||
FIRE_TEXTURES_TEXTURES := $(wildcard $(TEXTURE_DIR)/fire/*.png)
|
||||
SKY_TEXTURES := $(wildcard $(TEXTURE_DIR)/sky/*.png)
|
||||
MACHINE_TEXTURES := $(wildcard $(TEXTURE_DIR)/machine/*.png)
|
||||
MOUNTAIN_TEXTURES := $(wildcard $(TEXTURE_DIR)/mountain/*.png)
|
||||
GRASS_TEXTURES := $(wildcard $(TEXTURE_DIR)/grass/*.png)
|
||||
|
||||
# Texture Files
|
||||
$(BUILD_DIR)/bin/segment2.o: $(SEGMENT2_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/title_screen_bg.o: $(TITLE_SCREEN_BG_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/spooky.o: $(SPOOKY_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/generic.o: $(GENERIC_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/outside.o: $(OUTSIDE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/snow.o: $(SNOW_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/effect.o: $(EFFECT_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/cave.o: $(CAVE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/inside.o: $(INSIDE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/water.o: $(WATER_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/fire.o: $(FIRE_TEXTURES_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/sky.o: $(SKY_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/machine.o: $(MACHINE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/mountain.o: $(MOUNTAIN_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
$(BUILD_DIR)/bin/grass.o: $(GRASS_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)
|
||||
|
||||
# Others
|
||||
$(BUILD_DIR)/bin/segment2.elf: SEGMENT_ADDRESS := 0x02000000
|
||||
$(BUILD_DIR)/bin/title_screen_bg.elf: SEGMENT_ADDRESS := 0x0A000000
|
||||
$(BUILD_DIR)/bin/debug_level_select.elf: SEGMENT_ADDRESS := 0x07000000
|
||||
$(BUILD_DIR)/bin/effect.elf: SEGMENT_ADDRESS := 0x0B000000
|
||||
$(BUILD_DIR)/bin/spooky.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/generic.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/outside.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/snow.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/cave.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/inside.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/water.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/fire.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/sky.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/machine.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/mountain.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
$(BUILD_DIR)/bin/grass.elf: SEGMENT_ADDRESS := 0x09000000
|
||||
# EU segment 19 translations
|
||||
$(BUILD_DIR)/bin/eu/translation_de.elf: SEGMENT_ADDRESS := 0x19000000
|
||||
$(BUILD_DIR)/bin/eu/translation_en.elf: SEGMENT_ADDRESS := 0x19000000
|
||||
$(BUILD_DIR)/bin/eu/translation_fr.elf: SEGMENT_ADDRESS := 0x19000000
|
||||
|
||||
# --------------------------------------
|
||||
# Skybox Rules
|
||||
# --------------------------------------
|
||||
|
||||
$(BUILD_DIR)/bin/%_skybox.c: textures/skyboxes/%.png
|
||||
$(call print,Splitting:,$<,$@)
|
||||
$(V)$(SKYCONV) --type sky --split $^ $(BUILD_DIR)/bin
|
||||
|
||||
$(BUILD_DIR)/bin/%_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
|
||||
|
||||
# --------------------------------------
|
||||
# Misc Rules
|
||||
# --------------------------------------
|
||||
|
||||
# intro and ipl3 textures are not compressed
|
||||
INTRO_RAW_FILES := $(wildcard $(TEXTURE_DIR)/intro_raw/*.png)
|
||||
$(BUILD_DIR)/src/goddard/renderer.o: $(addprefix $(BUILD_DIR)/,$(patsubst %.png,%.inc.c,$(INTRO_RAW_FILES)))
|
||||
|
||||
IPL3_TEXTURE_FILES := $(wildcard $(TEXTURE_DIR)/ipl3_raw/*.png)
|
||||
IPL3_RAW_FILES := $(addprefix $(BUILD_DIR)/,$(patsubst %.png,%,$(IPL3_TEXTURE_FILES)))
|
||||
|
||||
CRASH_TEXTURE_FILES := $(wildcard $(TEXTURE_DIR)/crash_screen/*.png)
|
||||
CRASH_TEXTURE_C_FILES := $(addprefix $(BUILD_DIR)/,$(patsubst %.png,%.inc.c,$(CRASH_TEXTURE_FILES)))
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/gbi.h>
|
||||
#include <libultra/types.h>
|
||||
#include <libultra/gbi.h>
|
||||
|
||||
#include "macros.h"
|
||||
#include "surface_terrains.h"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <ultra64.h>
|
||||
#include <libultraship.h>
|
||||
#include "sm64.h"
|
||||
#include "geo_commands.h"
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/gbi.h>
|
||||
#include <libultra/types.h>
|
||||
#include <libultra/gbi.h>
|
||||
|
||||
#include "macros.h"
|
||||
#include "surface_terrains.h"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <ultra64.h>
|
||||
#include <libultraship.h>
|
||||
#include "sm64.h"
|
||||
#include "geo_commands.h"
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#include <ultra64.h>
|
||||
#include <libultraship.h>
|
||||
#include "sm64.h"
|
||||
#include "surface_terrains.h"
|
||||
#include "geo_commands.h"
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#include <ultra64.h>
|
||||
#include <libultraship.h>
|
||||
#include "sm64.h"
|
||||
#include "geo_commands.h"
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/gbi.h>
|
||||
#include <libultra/types.h>
|
||||
#include <libultra/gbi.h>
|
||||
|
||||
#include "macros.h"
|
||||
#include "surface_terrains.h"
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/gbi.h>
|
||||
#include <libultra/types.h>
|
||||
#include <libultra/gbi.h>
|
||||
|
||||
#include "macros.h"
|
||||
#include "surface_terrains.h"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <ultra64.h>
|
||||
#include <libultraship.h>
|
||||
#include "sm64.h"
|
||||
#include "geo_commands.h"
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/gbi.h>
|
||||
#include <libultra/types.h>
|
||||
#include <libultra/gbi.h>
|
||||
|
||||
#include "geo_commands.h"
|
||||
#include "macros.h"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <ultra64.h>
|
||||
#include <libultraship.h>
|
||||
#include "sm64.h"
|
||||
#include "geo_commands.h"
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/gbi.h>
|
||||
#include <libultra/types.h>
|
||||
#include <libultra/gbi.h>
|
||||
|
||||
#include "macros.h"
|
||||
#include "surface_terrains.h"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user