mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-10-07 02:24:01 +00:00
eca5393e43
This is a proposal on how I would like the naming scheme going forward for the player. The proposal includes the naming and layout once we document Alucard and decompile Maria (PSP). Please let's agree on naming and structure so it can be easy to hack and plug new custom characters at any time. * Animations to have `XXX_anim_yyy` where `XXX` is three letters for `arc`, `ric` or `mar` (`arc` taken from `BIN/ARC_F.BIN`). To mark them `static` whenever it is possible to do so. * `PL_S_xxx` to mark a player step. Steps might be similar between the three different players, but they must be isolated into the respective headers `dra.h` for Alucard, `ric.h` for Richter, `mar.h` for Maria. I am aware that Alcuard steps are used in weapons, which is why they are currently found in `game.h`. This needs to be addressed at some point. * PL_T_xxx` for the various timers from `g_Player.D_80072F00`. Those _might_ be need to be shared between all players, we need more research. * `XxxHandleYyy` for the step handlers. You will see `RicHandleJump` to handle `PL_S_JUMP`. * `XxxSetYyy` for the functions responsible of transitioning into a specific step (see `RicSetJump`) Prefer imperative verbs than paste tense or anything else. So `dead` instead of `killed`, `run` instead of `running` and so on. Functions and animations have `Ric` or `ric_` pre-pended since those symbols are publicly exported and not marked as static. But `#define`s and `enum`s that are isolated into the player's header should be generic. I cracked the animation system, so I created the macros `A_END`, `A_LOOP_AT` and so on. In a next pull request I will change `Entity::unk4C` into `Entity::anim`. I did not want to include it here to not change too many files in one go.
413 lines
10 KiB
CMake
413 lines
10 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
|
|
project(Sound)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
if (WIN32)
|
|
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
|
endif()
|
|
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
|
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fsanitize=address")
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-implicit-function-declaration")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-incompatible-pointer-types")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-int-conversion")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-return-mismatch")
|
|
endif()
|
|
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-implicit-function-declaration")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-return-type")
|
|
endif()
|
|
|
|
find_package(SDL2 REQUIRED)
|
|
|
|
set(SOURCE_FILES_PC
|
|
src/pc/log.c
|
|
src/pc/stubs.c
|
|
src/pc/sotn.c
|
|
src/pc/pc.c
|
|
src/pc/io.c
|
|
src/pc/str.c
|
|
src/pc/sim_pc.c
|
|
src/pc/pl_arc.c
|
|
src/pc/pl_ric.c
|
|
src/pc/stages/stage_loader.c
|
|
src/pc/stages/stage_dummy.c
|
|
src/pc/weapon_pc.c
|
|
src/pc/psxsdk/PsyCross/src/gte/PsyX_GTE.cpp
|
|
src/pc/psxsdk/PsyCross/src/gte/inline_c.c
|
|
src/pc/psxsdk/PsyCross/src/gte/libgte_.c
|
|
|
|
)
|
|
|
|
if(WIN32)
|
|
list(APPEND SOURCE_FILES_PC src/pc/plat_win.c)
|
|
else()
|
|
list(APPEND SOURCE_FILES_PC src/pc/plat_unix.c)
|
|
endif()
|
|
|
|
set(SOURCE_FILES_PSX_SDK
|
|
src/main/psxsdk/libgpu/ext.c
|
|
src/main/psxsdk/libgpu/prim.c
|
|
)
|
|
|
|
set(WANT_LIBSND_LLE FALSE CACHE BOOL "Whether to append use LLE for libsnd")
|
|
|
|
if(WANT_LIBSND_LLE)
|
|
set(SOURCE_FILES_LIBSND_LLE
|
|
# libsnd
|
|
src/main/psxsdk/libsnd/adsr.c
|
|
src/main/psxsdk/libsnd/cres.c
|
|
src/main/psxsdk/libsnd/decre.c
|
|
src/main/psxsdk/libsnd/libsnd_i.h
|
|
src/main/psxsdk/libsnd/next.c
|
|
src/main/psxsdk/libsnd/pause.c
|
|
src/main/psxsdk/libsnd/play.c
|
|
src/main/psxsdk/libsnd/replay.c
|
|
src/main/psxsdk/libsnd/scsmvol.c
|
|
src/main/psxsdk/libsnd/scssattr.c
|
|
src/main/psxsdk/libsnd/scssvol.c
|
|
src/main/psxsdk/libsnd/seqinit.c
|
|
src/main/psxsdk/libsnd/seqread.c
|
|
src/main/psxsdk/libsnd/seskoff.c
|
|
src/main/psxsdk/libsnd/seskon.c
|
|
src/main/psxsdk/libsnd/sscall.c
|
|
src/main/psxsdk/libsnd/ssclose.c
|
|
src/main/psxsdk/libsnd/ssend.c
|
|
src/main/psxsdk/libsnd/ssinit.c
|
|
src/main/psxsdk/libsnd/ssinit_h.c
|
|
src/main/psxsdk/libsnd/ssplay.c
|
|
src/main/psxsdk/libsnd/ssquit.c
|
|
src/main/psxsdk/libsnd/ssstart.c
|
|
src/main/psxsdk/libsnd/sstable.c
|
|
src/main/psxsdk/libsnd/sstick.c
|
|
src/main/psxsdk/libsnd/ssvol.c
|
|
src/main/psxsdk/libsnd/stop.c
|
|
src/main/psxsdk/libsnd/tempo.c
|
|
src/main/psxsdk/libsnd/ut_gpa.c
|
|
src/main/psxsdk/libsnd/ut_gva.c
|
|
src/main/psxsdk/libsnd/ut_rdel.c
|
|
src/main/psxsdk/libsnd/ut_rdep.c
|
|
src/main/psxsdk/libsnd/ut_rev.c
|
|
src/main/psxsdk/libsnd/ut_rfb.c
|
|
src/main/psxsdk/libsnd/ut_roff.c
|
|
src/main/psxsdk/libsnd/ut_ron.c
|
|
src/main/psxsdk/libsnd/ut_sva.c
|
|
src/main/psxsdk/libsnd/vm_doff.c
|
|
src/main/psxsdk/libsnd/vm_don.c
|
|
src/main/psxsdk/libsnd/vm_vsu.c
|
|
src/main/psxsdk/libsnd/vmanager.c
|
|
src/main/psxsdk/libsnd/vs_mono.c
|
|
src/main/psxsdk/libsnd/vs_srv.c
|
|
src/main/psxsdk/libsnd/vs_vab.c
|
|
src/main/psxsdk/libsnd/vs_vfb.c
|
|
src/main/psxsdk/libsnd/vs_vh.c
|
|
src/main/psxsdk/libsnd/vs_vtb.c
|
|
src/main/psxsdk/libsnd/vs_vtbp.c
|
|
src/main/psxsdk/libsnd/vs_vtc.c
|
|
|
|
# libspu
|
|
src/main/psxsdk/libspu/s_cb.c
|
|
src/main/psxsdk/libspu/s_crwa.c
|
|
src/main/psxsdk/libspu/s_dcb.c
|
|
src/main/psxsdk/libspu/s_gva.c
|
|
src/main/psxsdk/libspu/s_i.c
|
|
src/main/psxsdk/libspu/s_ini.c
|
|
src/main/psxsdk/libspu/s_it.c
|
|
src/main/psxsdk/libspu/s_itc.c
|
|
src/main/psxsdk/libspu/s_m_f.c
|
|
src/main/psxsdk/libspu/s_m_init.c
|
|
src/main/psxsdk/libspu/s_m_m.c
|
|
src/main/psxsdk/libspu/s_m_util.c
|
|
src/main/psxsdk/libspu/s_m_wsa.c
|
|
src/main/psxsdk/libspu/s_n2p.c
|
|
src/main/psxsdk/libspu/s_q.c
|
|
src/main/psxsdk/libspu/s_r.c
|
|
src/main/psxsdk/libspu/s_sav.c
|
|
src/main/psxsdk/libspu/s_sca.c
|
|
src/main/psxsdk/libspu/s_si.c
|
|
src/main/psxsdk/libspu/s_sic.c
|
|
src/main/psxsdk/libspu/s_sk.c
|
|
src/main/psxsdk/libspu/s_snv.c
|
|
src/main/psxsdk/libspu/s_sr.c
|
|
src/main/psxsdk/libspu/s_srmp.c
|
|
src/main/psxsdk/libspu/s_stm.c
|
|
src/main/psxsdk/libspu/s_stsa.c
|
|
src/main/psxsdk/libspu/s_sva.c
|
|
src/main/psxsdk/libspu/s_w.c
|
|
src/main/psxsdk/libspu/s_wp.c
|
|
src/main/psxsdk/libspu/spu.c
|
|
src/main/psxsdk/libspu/sr_gaks.c
|
|
|
|
src/pc/psxsdk/emu.cpp
|
|
src/pc/psxsdk/mednafen/spu.cpp
|
|
)
|
|
list(APPEND SOURCE_FILES_PSX_SDK ${SOURCE_FILES_LIBSND_LLE})
|
|
endif()
|
|
|
|
set(SOURCE_FILES_MOCK_SDK
|
|
src/pc/psxsdk/libapi.c
|
|
src/pc/psxsdk/libetc.c
|
|
src/pc/psxsdk/libgpu.c
|
|
src/pc/psxsdk/libgte.c
|
|
src/pc/psxsdk/libgs.c
|
|
src/pc/psxsdk/libcd.c
|
|
src/pc/psxsdk/libcard.c
|
|
src/pc/psxsdk/libspu.c
|
|
src/pc/psxsdk/libsnd.c
|
|
src/pc/psxsdk/cdc.c
|
|
)
|
|
|
|
set(SOURCE_FILES_3RD
|
|
src/pc/3rd/cJSON/cJSON.c
|
|
)
|
|
|
|
set(SOURCE_FILES_DRA
|
|
src/dra/42398.c
|
|
src/dra/play.c
|
|
src/dra/loading.c
|
|
src/dra/pads.c
|
|
src/dra/save_mgr_pre.c
|
|
src/dra/save_mgr.c
|
|
src/dra/4A538.c
|
|
src/dra/collider.c
|
|
src/dra/demo.c
|
|
src/dra/5087C.c
|
|
src/dra/lba_stage.c
|
|
src/dra/config_us.c
|
|
src/dra/menu.c
|
|
src/dra/5D5BC.c
|
|
src/dra/d_C910.c
|
|
src/dra/627C4.c
|
|
src/dra/63ED4.c
|
|
src/dra/d_CD80.c
|
|
src/dra/692E8.c
|
|
src/dra/6D59C.c
|
|
src/dra/704D0.c
|
|
src/dra/71830.c
|
|
src/dra/72BB0.c
|
|
src/dra/75F54.c
|
|
src/dra/78D0C.c
|
|
src/dra/d_CF74.c
|
|
src/dra/7A4D0.c
|
|
src/dra/7E4BC.c
|
|
src/dra/d_DBD4.c
|
|
src/dra/d_E294.c
|
|
src/dra/d_10798.c
|
|
src/dra/843B0.c
|
|
src/dra/8A0A4.c
|
|
src/dra/8D3E8.c
|
|
src/dra/91EBC.c
|
|
src/dra/92F60.c
|
|
src/dra/93290.c
|
|
src/dra/93BDC.c
|
|
src/dra/94F50.c
|
|
src/dra/953A0.c
|
|
src/dra/d_24CEC.c
|
|
src/dra/d_2F324.c
|
|
src/dra/d_3B0D4.c
|
|
src/dra/bss.c
|
|
)
|
|
|
|
set(SOURCE_FILES_RIC
|
|
src/ric/pl_header.c
|
|
src/ric/1AC60.c
|
|
src/ric/1FCD0.c
|
|
src/ric/20920.c
|
|
src/ric/24788.c
|
|
src/ric/2A060.c
|
|
src/ric/319C4.c
|
|
src/ric/d_188F4.c
|
|
src/ric/d_194B0.c
|
|
src/ric/d_19EE0.c
|
|
src/ric/spriteparts.c
|
|
src/ric/1CB04.c
|
|
src/ric/202A8.c
|
|
src/ric/21250.c
|
|
src/ric/26C84.c
|
|
src/ric/2C4C4.c
|
|
src/ric/bss.c
|
|
src/ric/d_18568.c
|
|
src/ric/d_18C40.c
|
|
src/ric/d_19C70.c
|
|
)
|
|
|
|
set(SOURCE_FILES_TT_000
|
|
src/servant/tt_000/10E8.c
|
|
src/servant/tt_000/448.c
|
|
src/servant/tt_000/45E4.c
|
|
src/servant/tt_000/4A8.c
|
|
src/servant/tt_000/608.c
|
|
src/servant/tt_000/spriteparts.c
|
|
)
|
|
|
|
set(SOURCE_FILES_STAGE_SEL
|
|
src/pc/stages/stage_sel.c
|
|
src/st/sel/banks.c
|
|
src/st/sel/CD54.c
|
|
src/st/sel/2C048.c
|
|
src/st/sel/33164.c
|
|
src/st/sel/3410C.c
|
|
src/st/sel/3585C.c
|
|
src/st/sel/3642C.c
|
|
)
|
|
|
|
set(SOURCE_FILES_STAGE_WRP
|
|
src/pc/stages/stage_wrp.c
|
|
src/st/wrp/d_1b8.c
|
|
src/st/wrp/e_laydef.c
|
|
src/st/wrp/e_init.c
|
|
src/st/wrp/st_debug.c
|
|
src/st/wrp/e_breakable.c
|
|
src/st/wrp/d_608.c
|
|
src/st/wrp/rooms.c
|
|
src/st/wrp/e_layout.c
|
|
src/st/wrp/tile_data.c
|
|
src/st/wrp/sprites.c
|
|
src/st/wrp/warp.c
|
|
src/st/wrp/st_update.c
|
|
src/st/wrp/collision.c
|
|
src/st/wrp/create_entity.c
|
|
src/st/wrp/e_red_door.c
|
|
src/st/wrp/st_common.c
|
|
src/st/wrp/e_collect.c
|
|
src/st/wrp/blit_char.c
|
|
src/st/wrp/e_misc.c
|
|
src/st/wrp/e_stage_name.c
|
|
src/st/wrp/e_particles.c
|
|
src/st/wrp/e_room_fg.c
|
|
src/st/wrp/popup.c
|
|
src/st/wrp/prim_helpers.c
|
|
src/st/wrp/bss.c
|
|
)
|
|
|
|
set(SOURCE_FILES_WEAPON
|
|
src/weapon/w_000.c
|
|
src/weapon/w_002.c
|
|
)
|
|
|
|
# WEAPON_ID needs to be a string and not just a number
|
|
set_source_files_properties(src/weapon/w_000.c PROPERTIES COMPILE_DEFINITIONS WEAPON_ID=w_000)
|
|
set_source_files_properties(src/weapon/w_002.c PROPERTIES COMPILE_DEFINITIONS WEAPON_ID=w_002)
|
|
|
|
# organization is:
|
|
# two executables, sdl2 and null, plus a shared library "core"
|
|
# any executable links core (which is pc shared code + sotn psx code)
|
|
# the null backend is present to try and help with developing a backend-agnostic interface
|
|
# and for a basic "does it segfault" check in CI
|
|
|
|
# core library
|
|
|
|
set(SOURCE_FILES_CORE
|
|
${SOURCE_FILES_DRA}
|
|
${SOURCE_FILES_RIC}
|
|
${SOURCE_FILES_PC}
|
|
${SOURCE_FILES_PSX_SDK}
|
|
${SOURCE_FILES_MOCK_SDK}
|
|
${SOURCE_FILES_3RD}
|
|
${SOURCE_FILES_STAGE_SEL}
|
|
${SOURCE_FILES_STAGE_WRP}
|
|
${SOURCE_FILES_WEAPON}
|
|
${SOURCE_FILES_TT_000}
|
|
)
|
|
|
|
add_library(core ${SOURCE_FILES_CORE})
|
|
|
|
target_include_directories(core PRIVATE
|
|
include
|
|
src/dra
|
|
src/pc/3rd
|
|
)
|
|
|
|
target_compile_definitions(core PRIVATE
|
|
_USE_MATH_DEFINES # needed for msvc
|
|
VERSION_PC
|
|
PERMUTER
|
|
NON_MATCHING
|
|
HARD_LINK
|
|
DEMO_KEY_PTR=0
|
|
_internal_version_us
|
|
)
|
|
|
|
# sdl2 target
|
|
|
|
add_executable(${PROJECT_NAME}
|
|
src/pc/sdl2.c
|
|
src/pc/render_soft.c
|
|
src/pc/render_shared.c
|
|
src/pc/render_gl.c
|
|
src/pc/psxsdk/mednafen/gpu.cpp
|
|
src/pc/psxsdk/mednafen/gpu_line.cpp
|
|
src/pc/psxsdk/mednafen/gpu_polygon.cpp
|
|
src/pc/psxsdk/mednafen/gpu_sprite.cpp
|
|
src/pc/sdl2_macros.c
|
|
)
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
${SDL2_INCLUDE_DIRS}
|
|
include
|
|
src/dra
|
|
src/pc/3rd
|
|
)
|
|
|
|
if (WIN32)
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
${SDL2_LIBRARIES} core)
|
|
else()
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
${SDL2_LIBRARIES} core m)
|
|
endif()
|
|
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
|
_USE_MATH_DEFINES # needed for msvc
|
|
VERSION_PC
|
|
PERMUTER
|
|
NON_MATCHING
|
|
HARD_LINK
|
|
DEMO_KEY_PTR=0
|
|
_internal_version_us
|
|
)
|
|
|
|
if(WANT_LIBSND_LLE)
|
|
target_compile_definitions(core PRIVATE WANT_LIBSND_LLE=1)
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE WANT_LIBSND_LLE=1)
|
|
endif()
|
|
|
|
# null target
|
|
|
|
add_executable(${PROJECT_NAME}_null
|
|
src/pc/null.c
|
|
)
|
|
|
|
target_include_directories(${PROJECT_NAME}_null PRIVATE
|
|
include
|
|
src/dra
|
|
src/pc/3rd
|
|
)
|
|
|
|
if (WIN32)
|
|
target_link_libraries(${PROJECT_NAME}_null PRIVATE
|
|
core)
|
|
else()
|
|
target_link_libraries(${PROJECT_NAME}_null PRIVATE
|
|
core m)
|
|
endif()
|
|
|
|
target_compile_definitions(${PROJECT_NAME}_null PRIVATE
|
|
_USE_MATH_DEFINES # needed for msvc
|
|
VERSION_PC
|
|
PERMUTER
|
|
NON_MATCHING
|
|
HARD_LINK
|
|
DEMO_KEY_PTR=0
|
|
_internal_version_us
|
|
)
|