First build ( with linker errors )

This commit is contained in:
KiritoDv
2023-08-15 11:18:01 -06:00
parent 44947861a1
commit bb04ebdcc7
486 changed files with 2524 additions and 26462 deletions
+3
View File
@@ -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
+3
View File
@@ -0,0 +1,3 @@
[submodule "libultraship"]
path = libultraship
url = https://github.com/KiritoDv/libultraship
+444
View File
@@ -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
View File
@@ -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'
-2482
View File
File diff suppressed because it is too large Load Diff
Vendored
-60
View File
@@ -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')
}
}
-761
View File
File diff suppressed because it is too large Load Diff
-270
View File
@@ -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
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
#include <ultra64.h>
#include <libultraship.h>
#include "sm64.h"
#include "geo_commands.h"
+2 -2
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
#include <ultra64.h>
#include <libultraship.h>
#include "sm64.h"
#include "geo_commands.h"
+1 -1
View File
@@ -1,4 +1,4 @@
#include <ultra64.h>
#include <libultraship.h>
#include "sm64.h"
#include "surface_terrains.h"
#include "geo_commands.h"
+1 -1
View File
@@ -1,4 +1,4 @@
#include <ultra64.h>
#include <libultraship.h>
#include "sm64.h"
#include "geo_commands.h"
+2 -2
View File
@@ -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
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
#include <ultra64.h>
#include <libultraship.h>
#include "sm64.h"
#include "geo_commands.h"
+2 -2
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
#include <ultra64.h>
#include <libultraship.h>
#include "sm64.h"
#include "geo_commands.h"
+2 -2
View File
@@ -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