mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-26 22:40:33 +00:00
Windows build with cmake (#889)
This adds cmake and a windows build to the CI. I haven't tested the result, just got it building. I had to make quite a few changes since MSVC has a number of differences compared to GCC. I added two cmake modules to find sdl2 and sdl2_image from here https://github.com/aminosbh/sdl2-cmake-modules The dirent stuff is just `#ifdef`ed out for now since I think it's unused? I'm keeping the Makefile.pc for the moment until this is more proven. I wasn't able to figure out how to add -fsanitize=address for some reason to gcc/clang builds, open to suggestions there. Otherwise I think the cmake build is more or less the same as the Makefile one.
This commit is contained in:
parent
440db77cf2
commit
4791b03c89
20
.github/workflows/picci.yaml
vendored
20
.github/workflows/picci.yaml
vendored
@ -28,3 +28,23 @@ jobs:
|
||||
submodules: false
|
||||
- name: build
|
||||
run: make build_pc
|
||||
|
||||
build-windows:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Dependencies
|
||||
run: |
|
||||
mkdir C:\temp-sdl2
|
||||
powershell Invoke-WebRequest 'https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-devel-2.28.5-VC.zip' -OutFile C:\temp-sdl2\SDL2-devel-2.28.5-VC.zip
|
||||
7z x C:\temp-sdl2\SDL2-devel-2.28.5-VC.zip -oC:\temp-sdl2
|
||||
mkdir C:\temp-sdl2_image
|
||||
powershell Invoke-WebRequest 'https://github.com/libsdl-org/SDL_image/releases/download/release-2.8.1/SDL2_image-devel-2.8.1-VC.zip' -OutFile C:\temp-sdl2_image\SDL2_image-devel-2.8.1-VC.zip
|
||||
7z x C:\temp-sdl2_image\SDL2_image-devel-2.8.1-VC.zip -oC:\temp-sdl2_image
|
||||
- name: Configure CMake
|
||||
run: cmake -B ${{github.workspace}}/cmake_build -DCMAKE_BUILD_TYPE=Release -DSDL2_PATH=C:\temp-sdl2\SDL2-2.28.5 -DSDL2_IMAGE_PATH=C:\temp-sdl2_image\SDL2_image-2.8.1
|
||||
|
||||
- name: Build
|
||||
run: cmake --build ${{github.workspace}}/cmake_build --config Release
|
||||
|
92
CMakeLists.txt
Normal file
92
CMakeLists.txt
Normal file
@ -0,0 +1,92 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
project(Sound)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
find_package(SDL2 REQUIRED)
|
||||
find_package(SDL2_image REQUIRED)
|
||||
|
||||
set(SOURCE_FILES_PC
|
||||
src/pc/main.c
|
||||
src/pc/log.c
|
||||
src/pc/stubs.c
|
||||
src/pc/sotn.c
|
||||
src/pc/pc.c
|
||||
src/pc/sdl2.c
|
||||
)
|
||||
|
||||
set(SOURCE_FILES_PSX_SDK
|
||||
src/main/psxsdk/libgpu/ext.c
|
||||
)
|
||||
|
||||
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/menu.c
|
||||
src/dra/5D6C4.c
|
||||
src/dra/627C4.c
|
||||
src/dra/63ED4.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
|
||||
)
|
||||
|
||||
add_executable(${PROJECT_NAME}
|
||||
${SOURCE_FILES_PC}
|
||||
${SOURCE_FILES_PSX_SDK}
|
||||
${SOURCE_FILES_MOCK_SDK}
|
||||
${SOURCE_FILES_3RD}
|
||||
${SOURCE_FILES_DRA}
|
||||
)
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||
${SDL2_INCLUDE_DIRS}
|
||||
${SDL2_IMAGE_INCLUDE_DIRS}
|
||||
include
|
||||
src/dra
|
||||
src/pc/3rd
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
${SDL2_LIBRARIES}
|
||||
${SDL2_IMAGE_LIBRARIES}
|
||||
)
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
VERSION_PC
|
||||
PERMUTER
|
||||
NON_MATCHING
|
||||
DEMO_KEY_PTR=0
|
||||
_internal_version_us
|
||||
)
|
388
cmake/FindSDL2.cmake
Normal file
388
cmake/FindSDL2.cmake
Normal file
@ -0,0 +1,388 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
|
||||
# Copyright 2000-2019 Kitware, Inc. and Contributors
|
||||
# All rights reserved.
|
||||
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
|
||||
# * Neither the name of Kitware, Inc. nor the names of Contributors
|
||||
# may be used to endorse or promote products derived from this
|
||||
# software without specific prior written permission.
|
||||
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindSDL2
|
||||
--------
|
||||
|
||||
Locate SDL2 library
|
||||
|
||||
This module defines the following 'IMPORTED' targets:
|
||||
|
||||
::
|
||||
|
||||
SDL2::Core
|
||||
The SDL2 library, if found.
|
||||
Libraries should link to SDL2::Core
|
||||
|
||||
SDL2::Main
|
||||
The SDL2main library, if found.
|
||||
Applications should link to SDL2::Main instead of SDL2::Core
|
||||
|
||||
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
::
|
||||
|
||||
SDL2_LIBRARIES, the name of the library to link against
|
||||
SDL2_INCLUDE_DIRS, where to find SDL.h
|
||||
SDL2_FOUND, if false, do not try to link to SDL2
|
||||
SDL2MAIN_FOUND, if false, do not try to link to SDL2main
|
||||
SDL2_VERSION_STRING, human-readable string containing the version of SDL2
|
||||
|
||||
|
||||
|
||||
This module responds to the following cache variables:
|
||||
|
||||
::
|
||||
|
||||
SDL2_PATH
|
||||
Set a custom SDL2 Library path (default: empty)
|
||||
|
||||
SDL2_NO_DEFAULT_PATH
|
||||
Disable search SDL2 Library in default path.
|
||||
If SDL2_PATH (default: ON)
|
||||
Else (default: OFF)
|
||||
|
||||
SDL2_INCLUDE_DIR
|
||||
SDL2 headers path.
|
||||
|
||||
SDL2_LIBRARY
|
||||
SDL2 Library (.dll, .so, .a, etc) path.
|
||||
|
||||
SDL2MAIN_LIBRAY
|
||||
SDL2main Library (.a) path.
|
||||
|
||||
SDL2_BUILDING_LIBRARY
|
||||
This flag is useful only when linking to SDL2_LIBRARIES insead of
|
||||
SDL2::Main. It is required only when building a library that links to
|
||||
SDL2_LIBRARIES, because only applications need main() (No need to also
|
||||
link to SDL2main).
|
||||
If this flag is defined, then no SDL2main will be added to SDL2_LIBRARIES
|
||||
and no SDL2::Main target will be created.
|
||||
|
||||
|
||||
Don't forget to include SDLmain.h and SDLmain.m in your project for the
|
||||
OS X framework based version. (Other versions link to -lSDL2main which
|
||||
this module will try to find on your behalf.) Also for OS X, this
|
||||
module will automatically add the -framework Cocoa on your behalf.
|
||||
|
||||
|
||||
Additional Note: If you see an empty SDL2_LIBRARY in your project
|
||||
configuration, it means CMake did not find your SDL2 library
|
||||
(SDL2.dll, libsdl2.so, SDL2.framework, etc). Set SDL2_LIBRARY to point
|
||||
to your SDL2 library, and configure again. Similarly, if you see an
|
||||
empty SDL2MAIN_LIBRARY, you should set this value as appropriate. These
|
||||
values are used to generate the final SDL2_LIBRARIES variable and the
|
||||
SDL2::Core and SDL2::Main targets, but when these values are unset,
|
||||
SDL2_LIBRARIES, SDL2::Core and SDL2::Main does not get created.
|
||||
|
||||
|
||||
$SDL2DIR is an environment variable that would correspond to the
|
||||
./configure --prefix=$SDL2DIR used in building SDL2. l.e.galup 9-20-02
|
||||
|
||||
|
||||
|
||||
Created by Amine Ben Hassouna:
|
||||
Adapt FindSDL.cmake to SDL2 (FindSDL2.cmake).
|
||||
Add cache variables for more flexibility:
|
||||
SDL2_PATH, SDL2_NO_DEFAULT_PATH (for details, see doc above).
|
||||
Mark 'Threads' as a required dependency for non-OSX systems.
|
||||
Modernize the FindSDL2.cmake module by creating specific targets:
|
||||
SDL2::Core and SDL2::Main (for details, see doc above).
|
||||
|
||||
|
||||
Original FindSDL.cmake module:
|
||||
Modified by Eric Wing. Added code to assist with automated building
|
||||
by using environmental variables and providing a more
|
||||
controlled/consistent search behavior. Added new modifications to
|
||||
recognize OS X frameworks and additional Unix paths (FreeBSD, etc).
|
||||
Also corrected the header search path to follow "proper" SDL
|
||||
guidelines. Added a search for SDLmain which is needed by some
|
||||
platforms. Added a search for threads which is needed by some
|
||||
platforms. Added needed compile switches for MinGW.
|
||||
|
||||
On OSX, this will prefer the Framework version (if found) over others.
|
||||
People will have to manually change the cache value of SDL2_LIBRARY to
|
||||
override this selection or set the SDL2_PATH variable or the CMake
|
||||
environment CMAKE_INCLUDE_PATH to modify the search paths.
|
||||
|
||||
Note that the header path has changed from SDL/SDL.h to just SDL.h
|
||||
This needed to change because "proper" SDL convention is #include
|
||||
"SDL.h", not <SDL/SDL.h>. This is done for portability reasons
|
||||
because not all systems place things in SDL/ (see FreeBSD).
|
||||
#]=======================================================================]
|
||||
|
||||
# Define options for searching SDL2 Library in a custom path
|
||||
|
||||
set(SDL2_PATH "" CACHE STRING "Custom SDL2 Library path")
|
||||
|
||||
set(_SDL2_NO_DEFAULT_PATH OFF)
|
||||
if(SDL2_PATH)
|
||||
set(_SDL2_NO_DEFAULT_PATH ON)
|
||||
endif()
|
||||
|
||||
set(SDL2_NO_DEFAULT_PATH ${_SDL2_NO_DEFAULT_PATH}
|
||||
CACHE BOOL "Disable search SDL2 Library in default path")
|
||||
unset(_SDL2_NO_DEFAULT_PATH)
|
||||
|
||||
set(SDL2_NO_DEFAULT_PATH_CMD)
|
||||
if(SDL2_NO_DEFAULT_PATH)
|
||||
set(SDL2_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
|
||||
endif()
|
||||
|
||||
# Search for the SDL2 include directory
|
||||
find_path(SDL2_INCLUDE_DIR SDL.h
|
||||
HINTS
|
||||
ENV SDL2DIR
|
||||
${SDL2_NO_DEFAULT_PATH_CMD}
|
||||
PATH_SUFFIXES SDL2
|
||||
# path suffixes to search inside ENV{SDL2DIR}
|
||||
include/SDL2 include
|
||||
PATHS ${SDL2_PATH}
|
||||
DOC "Where the SDL2 headers can be found"
|
||||
)
|
||||
|
||||
set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR}")
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(VC_LIB_PATH_SUFFIX lib/x64)
|
||||
else()
|
||||
set(VC_LIB_PATH_SUFFIX lib/x86)
|
||||
endif()
|
||||
|
||||
# SDL-2.0 is the name used by FreeBSD ports...
|
||||
# don't confuse it for the version number.
|
||||
find_library(SDL2_LIBRARY
|
||||
NAMES SDL2 SDL-2.0
|
||||
HINTS
|
||||
ENV SDL2DIR
|
||||
${SDL2_NO_DEFAULT_PATH_CMD}
|
||||
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
|
||||
PATHS ${SDL2_PATH}
|
||||
DOC "Where the SDL2 Library can be found"
|
||||
)
|
||||
|
||||
set(SDL2_LIBRARIES "${SDL2_LIBRARY}")
|
||||
|
||||
if(NOT SDL2_BUILDING_LIBRARY)
|
||||
if(NOT SDL2_INCLUDE_DIR MATCHES ".framework")
|
||||
# Non-OS X framework versions expect you to also dynamically link to
|
||||
# SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
|
||||
# seem to provide SDL2main for compatibility even though they don't
|
||||
# necessarily need it.
|
||||
|
||||
if(SDL2_PATH)
|
||||
set(SDL2MAIN_LIBRARY_PATHS "${SDL2_PATH}")
|
||||
endif()
|
||||
|
||||
if(NOT SDL2_NO_DEFAULT_PATH)
|
||||
set(SDL2MAIN_LIBRARY_PATHS
|
||||
/sw
|
||||
/opt/local
|
||||
/opt/csw
|
||||
/opt
|
||||
"${SDL2MAIN_LIBRARY_PATHS}"
|
||||
)
|
||||
endif()
|
||||
|
||||
find_library(SDL2MAIN_LIBRARY
|
||||
NAMES SDL2main
|
||||
HINTS
|
||||
ENV SDL2DIR
|
||||
${SDL2_NO_DEFAULT_PATH_CMD}
|
||||
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
|
||||
PATHS ${SDL2MAIN_LIBRARY_PATHS}
|
||||
DOC "Where the SDL2main library can be found"
|
||||
)
|
||||
unset(SDL2MAIN_LIBRARY_PATHS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# SDL2 may require threads on your system.
|
||||
# The Apple build may not need an explicit flag because one of the
|
||||
# frameworks may already provide it.
|
||||
# But for non-OSX systems, I will use the CMake Threads package.
|
||||
if(NOT APPLE)
|
||||
find_package(Threads QUIET)
|
||||
if(NOT Threads_FOUND)
|
||||
set(SDL2_THREADS_NOT_FOUND "Could NOT find Threads (Threads is required by SDL2).")
|
||||
if(SDL2_FIND_REQUIRED)
|
||||
message(FATAL_ERROR ${SDL2_THREADS_NOT_FOUND})
|
||||
else()
|
||||
if(NOT SDL2_FIND_QUIETLY)
|
||||
message(STATUS ${SDL2_THREADS_NOT_FOUND})
|
||||
endif()
|
||||
return()
|
||||
endif()
|
||||
unset(SDL2_THREADS_NOT_FOUND)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# MinGW needs an additional link flag, -mwindows
|
||||
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -mwindows
|
||||
if(MINGW)
|
||||
set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW")
|
||||
endif()
|
||||
|
||||
if(SDL2_LIBRARY)
|
||||
# For SDL2main
|
||||
if(SDL2MAIN_LIBRARY AND NOT SDL2_BUILDING_LIBRARY)
|
||||
list(FIND SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" _SDL2_MAIN_INDEX)
|
||||
if(_SDL2_MAIN_INDEX EQUAL -1)
|
||||
set(SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" ${SDL2_LIBRARIES})
|
||||
endif()
|
||||
unset(_SDL2_MAIN_INDEX)
|
||||
endif()
|
||||
|
||||
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
|
||||
# CMake doesn't display the -framework Cocoa string in the UI even
|
||||
# though it actually is there if I modify a pre-used variable.
|
||||
# I think it has something to do with the CACHE STRING.
|
||||
# So I use a temporary variable until the end so I can set the
|
||||
# "real" variable in one-shot.
|
||||
if(APPLE)
|
||||
set(SDL2_LIBRARIES ${SDL2_LIBRARIES} -framework Cocoa)
|
||||
endif()
|
||||
|
||||
# For threads, as mentioned Apple doesn't need this.
|
||||
# In fact, there seems to be a problem if I used the Threads package
|
||||
# and try using this line, so I'm just skipping it entirely for OS X.
|
||||
if(NOT APPLE)
|
||||
set(SDL2_LIBRARIES ${SDL2_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
|
||||
# For MinGW library
|
||||
if(MINGW)
|
||||
set(SDL2_LIBRARIES ${MINGW32_LIBRARY} ${SDL2_LIBRARIES})
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
# Read SDL2 version
|
||||
if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h")
|
||||
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$")
|
||||
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$")
|
||||
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$")
|
||||
string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}")
|
||||
string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}")
|
||||
string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}")
|
||||
set(SDL2_VERSION_STRING ${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH})
|
||||
unset(SDL2_VERSION_MAJOR_LINE)
|
||||
unset(SDL2_VERSION_MINOR_LINE)
|
||||
unset(SDL2_VERSION_PATCH_LINE)
|
||||
unset(SDL2_VERSION_MAJOR)
|
||||
unset(SDL2_VERSION_MINOR)
|
||||
unset(SDL2_VERSION_PATCH)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
|
||||
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
|
||||
VERSION_VAR SDL2_VERSION_STRING)
|
||||
|
||||
if(SDL2MAIN_LIBRARY)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2main
|
||||
REQUIRED_VARS SDL2MAIN_LIBRARY SDL2_INCLUDE_DIR
|
||||
VERSION_VAR SDL2_VERSION_STRING)
|
||||
endif()
|
||||
|
||||
|
||||
mark_as_advanced(SDL2_PATH
|
||||
SDL2_NO_DEFAULT_PATH
|
||||
SDL2_LIBRARY
|
||||
SDL2MAIN_LIBRARY
|
||||
SDL2_INCLUDE_DIR
|
||||
SDL2_BUILDING_LIBRARY)
|
||||
|
||||
|
||||
# SDL2:: targets (SDL2::Core and SDL2::Main)
|
||||
if(SDL2_FOUND)
|
||||
|
||||
# SDL2::Core target
|
||||
if(SDL2_LIBRARY AND NOT TARGET SDL2::Core)
|
||||
add_library(SDL2::Core UNKNOWN IMPORTED)
|
||||
set_target_properties(SDL2::Core PROPERTIES
|
||||
IMPORTED_LOCATION "${SDL2_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}")
|
||||
|
||||
if(APPLE)
|
||||
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
|
||||
# For more details, please see above.
|
||||
set_property(TARGET SDL2::Core APPEND PROPERTY
|
||||
INTERFACE_LINK_OPTIONS -framework Cocoa)
|
||||
else()
|
||||
# For threads, as mentioned Apple doesn't need this.
|
||||
# For more details, please see above.
|
||||
set_property(TARGET SDL2::Core APPEND PROPERTY
|
||||
INTERFACE_LINK_LIBRARIES Threads::Threads)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# SDL2::Main target
|
||||
# Applications should link to SDL2::Main instead of SDL2::Core
|
||||
# For more details, please see above.
|
||||
if(NOT SDL2_BUILDING_LIBRARY AND NOT TARGET SDL2::Main)
|
||||
|
||||
if(SDL2_INCLUDE_DIR MATCHES ".framework" OR NOT SDL2MAIN_LIBRARY)
|
||||
add_library(SDL2::Main INTERFACE IMPORTED)
|
||||
set_property(TARGET SDL2::Main PROPERTY
|
||||
INTERFACE_LINK_LIBRARIES SDL2::Core)
|
||||
elseif(SDL2MAIN_LIBRARY)
|
||||
# MinGW requires that the mingw32 library is specified before the
|
||||
# libSDL2main.a static library when linking.
|
||||
# The SDL2::MainInternal target is used internally to make sure that
|
||||
# CMake respects this condition.
|
||||
add_library(SDL2::MainInternal UNKNOWN IMPORTED)
|
||||
set_property(TARGET SDL2::MainInternal PROPERTY
|
||||
IMPORTED_LOCATION "${SDL2MAIN_LIBRARY}")
|
||||
set_property(TARGET SDL2::MainInternal PROPERTY
|
||||
INTERFACE_LINK_LIBRARIES SDL2::Core)
|
||||
|
||||
add_library(SDL2::Main INTERFACE IMPORTED)
|
||||
|
||||
if(MINGW)
|
||||
# MinGW needs an additional link flag '-mwindows' and link to mingw32
|
||||
set_property(TARGET SDL2::Main PROPERTY
|
||||
INTERFACE_LINK_LIBRARIES "mingw32" "-mwindows")
|
||||
endif()
|
||||
|
||||
set_property(TARGET SDL2::Main APPEND PROPERTY
|
||||
INTERFACE_LINK_LIBRARIES SDL2::MainInternal)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
endif()
|
222
cmake/FindSDL2_image.cmake
Normal file
222
cmake/FindSDL2_image.cmake
Normal file
@ -0,0 +1,222 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
|
||||
# Copyright 2000-2019 Kitware, Inc. and Contributors
|
||||
# All rights reserved.
|
||||
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
|
||||
# * Neither the name of Kitware, Inc. nor the names of Contributors
|
||||
# may be used to endorse or promote products derived from this
|
||||
# software without specific prior written permission.
|
||||
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindSDL2_image
|
||||
--------------
|
||||
|
||||
Locate SDL2_image library
|
||||
|
||||
This module defines the following 'IMPORTED' target:
|
||||
|
||||
::
|
||||
|
||||
SDL2::Image
|
||||
The SDL2_image library, if found.
|
||||
Have SDL2::Core as a link dependency.
|
||||
|
||||
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
::
|
||||
|
||||
SDL2_IMAGE_LIBRARIES, the name of the library to link against
|
||||
SDL2_IMAGE_INCLUDE_DIRS, where to find the headers
|
||||
SDL2_IMAGE_FOUND, if false, do not try to link against
|
||||
SDL2_IMAGE_VERSION_STRING - human-readable string containing the
|
||||
version of SDL2_image
|
||||
|
||||
|
||||
|
||||
This module responds to the following cache variables:
|
||||
|
||||
::
|
||||
|
||||
SDL2_IMAGE_PATH
|
||||
Set a custom SDL2_image Library path (default: empty)
|
||||
|
||||
SDL2_IMAGE_NO_DEFAULT_PATH
|
||||
Disable search SDL2_image Library in default path.
|
||||
If SDL2_IMAGE_PATH (default: ON)
|
||||
Else (default: OFF)
|
||||
|
||||
SDL2_IMAGE_INCLUDE_DIR
|
||||
SDL2_image headers path.
|
||||
|
||||
SDL2_IMAGE_LIBRARY
|
||||
SDL2_image Library (.dll, .so, .a, etc) path.
|
||||
|
||||
|
||||
Additional Note: If you see an empty SDL2_IMAGE_LIBRARY in your project
|
||||
configuration, it means CMake did not find your SDL2_image library
|
||||
(SDL2_image.dll, libsdl2_image.so, etc). Set SDL2_IMAGE_LIBRARY to point
|
||||
to your SDL2_image library, and configure again. This value is used to
|
||||
generate the final SDL2_IMAGE_LIBRARIES variable and the SDL2::Image target,
|
||||
but when this value is unset, SDL2_IMAGE_LIBRARIES and SDL2::Image does not
|
||||
get created.
|
||||
|
||||
|
||||
$SDL2IMAGEDIR is an environment variable that would correspond to the
|
||||
./configure --prefix=$SDL2IMAGEDIR used in building SDL2_image.
|
||||
|
||||
$SDL2DIR is an environment variable that would correspond to the
|
||||
./configure --prefix=$SDL2DIR used in building SDL2.
|
||||
|
||||
|
||||
|
||||
Created by Amine Ben Hassouna:
|
||||
Adapt FindSDL_image.cmake to SDL2_image (FindSDL2_image.cmake).
|
||||
Add cache variables for more flexibility:
|
||||
SDL2_IMAGE_PATH, SDL2_IMAGE_NO_DEFAULT_PATH (for details, see doc above).
|
||||
Add SDL2 as a required dependency.
|
||||
Modernize the FindSDL2_image.cmake module by creating a specific target:
|
||||
SDL2::Image (for details, see doc above).
|
||||
|
||||
Original FindSDL_image.cmake module:
|
||||
Created by Eric Wing. This was influenced by the FindSDL.cmake
|
||||
module, but with modifications to recognize OS X frameworks and
|
||||
additional Unix paths (FreeBSD, etc).
|
||||
#]=======================================================================]
|
||||
|
||||
# SDL2 Library required
|
||||
find_package(SDL2 QUIET)
|
||||
if(NOT SDL2_FOUND)
|
||||
set(SDL2_IMAGE_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_image).")
|
||||
if(SDL2_image_FIND_REQUIRED)
|
||||
message(FATAL_ERROR ${SDL2_IMAGE_SDL2_NOT_FOUND})
|
||||
else()
|
||||
if(NOT SDL2_image_FIND_QUIETLY)
|
||||
message(STATUS ${SDL2_IMAGE_SDL2_NOT_FOUND})
|
||||
endif()
|
||||
return()
|
||||
endif()
|
||||
unset(SDL2_IMAGE_SDL2_NOT_FOUND)
|
||||
endif()
|
||||
|
||||
|
||||
# Define options for searching SDL2_image Library in a custom path
|
||||
|
||||
set(SDL2_IMAGE_PATH "" CACHE STRING "Custom SDL2_image Library path")
|
||||
|
||||
set(_SDL2_IMAGE_NO_DEFAULT_PATH OFF)
|
||||
if(SDL2_IMAGE_PATH)
|
||||
set(_SDL2_IMAGE_NO_DEFAULT_PATH ON)
|
||||
endif()
|
||||
|
||||
set(SDL2_IMAGE_NO_DEFAULT_PATH ${_SDL2_IMAGE_NO_DEFAULT_PATH}
|
||||
CACHE BOOL "Disable search SDL2_image Library in default path")
|
||||
unset(_SDL2_IMAGE_NO_DEFAULT_PATH)
|
||||
|
||||
set(SDL2_IMAGE_NO_DEFAULT_PATH_CMD)
|
||||
if(SDL2_IMAGE_NO_DEFAULT_PATH)
|
||||
set(SDL2_IMAGE_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
|
||||
endif()
|
||||
|
||||
# Search for the SDL2_image include directory
|
||||
find_path(SDL2_IMAGE_INCLUDE_DIR SDL_image.h
|
||||
HINTS
|
||||
ENV SDL2IMAGEDIR
|
||||
ENV SDL2DIR
|
||||
${SDL2_IMAGE_NO_DEFAULT_PATH_CMD}
|
||||
PATH_SUFFIXES SDL2
|
||||
# path suffixes to search inside ENV{SDL2DIR}
|
||||
# and ENV{SDL2IMAGEDIR}
|
||||
include/SDL2 include
|
||||
PATHS ${SDL2_IMAGE_PATH}
|
||||
DOC "Where the SDL2_image headers can be found"
|
||||
)
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(VC_LIB_PATH_SUFFIX lib/x64)
|
||||
else()
|
||||
set(VC_LIB_PATH_SUFFIX lib/x86)
|
||||
endif()
|
||||
|
||||
# Search for the SDL2_image library
|
||||
find_library(SDL2_IMAGE_LIBRARY
|
||||
NAMES SDL2_image
|
||||
HINTS
|
||||
ENV SDL2IMAGEDIR
|
||||
ENV SDL2DIR
|
||||
${SDL2_IMAGE_NO_DEFAULT_PATH_CMD}
|
||||
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
|
||||
PATHS ${SDL2_IMAGE_PATH}
|
||||
DOC "Where the SDL2_image Library can be found"
|
||||
)
|
||||
|
||||
# Read SDL2_image version
|
||||
if(SDL2_IMAGE_INCLUDE_DIR AND EXISTS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h")
|
||||
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+[0-9]+$")
|
||||
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+[0-9]+$")
|
||||
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+[0-9]+$")
|
||||
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MAJOR "${SDL2_IMAGE_VERSION_MAJOR_LINE}")
|
||||
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MINOR "${SDL2_IMAGE_VERSION_MINOR_LINE}")
|
||||
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_PATCH "${SDL2_IMAGE_VERSION_PATCH_LINE}")
|
||||
set(SDL2_IMAGE_VERSION_STRING ${SDL2_IMAGE_VERSION_MAJOR}.${SDL2_IMAGE_VERSION_MINOR}.${SDL2_IMAGE_VERSION_PATCH})
|
||||
unset(SDL2_IMAGE_VERSION_MAJOR_LINE)
|
||||
unset(SDL2_IMAGE_VERSION_MINOR_LINE)
|
||||
unset(SDL2_IMAGE_VERSION_PATCH_LINE)
|
||||
unset(SDL2_IMAGE_VERSION_MAJOR)
|
||||
unset(SDL2_IMAGE_VERSION_MINOR)
|
||||
unset(SDL2_IMAGE_VERSION_PATCH)
|
||||
endif()
|
||||
|
||||
set(SDL2_IMAGE_LIBRARIES ${SDL2_IMAGE_LIBRARY})
|
||||
set(SDL2_IMAGE_INCLUDE_DIRS ${SDL2_IMAGE_INCLUDE_DIR})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_image
|
||||
REQUIRED_VARS SDL2_IMAGE_LIBRARIES SDL2_IMAGE_INCLUDE_DIRS
|
||||
VERSION_VAR SDL2_IMAGE_VERSION_STRING)
|
||||
|
||||
|
||||
mark_as_advanced(SDL2_IMAGE_PATH
|
||||
SDL2_IMAGE_NO_DEFAULT_PATH
|
||||
SDL2_IMAGE_LIBRARY
|
||||
SDL2_IMAGE_INCLUDE_DIR)
|
||||
|
||||
|
||||
if(SDL2_IMAGE_FOUND)
|
||||
|
||||
# SDL2::Image target
|
||||
if(SDL2_IMAGE_LIBRARY AND NOT TARGET SDL2::Image)
|
||||
add_library(SDL2::Image UNKNOWN IMPORTED)
|
||||
set_target_properties(SDL2::Image PROPERTIES
|
||||
IMPORTED_LOCATION "${SDL2_IMAGE_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_IMAGE_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES SDL2::Core)
|
||||
endif()
|
||||
endif()
|
@ -25,6 +25,10 @@
|
||||
#define LENU(x) ((u32)(sizeof(x) / sizeof(*(x))))
|
||||
#define STRCPY(dst, src) __builtin_memcpy(dst, src, sizeof(src))
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define __builtin_memcpy memcpy
|
||||
#endif
|
||||
|
||||
#define LOH(x) (*(s16*)&(x))
|
||||
#define LOHU(x) (*(u16*)&(x))
|
||||
#define LOW(x) (*(s32*)&(x))
|
||||
|
@ -482,7 +482,11 @@ typedef struct {
|
||||
unsigned char width;
|
||||
unsigned char height;
|
||||
unsigned short unk2;
|
||||
#ifdef _MSC_VER
|
||||
unsigned char* data;
|
||||
#else
|
||||
unsigned char data[0];
|
||||
#endif
|
||||
} ImgSrc;
|
||||
|
||||
typedef struct {
|
||||
@ -1154,7 +1158,6 @@ typedef struct {
|
||||
/* 8003C808 */ EnemyDef* enemyDefs;
|
||||
/* 8003C80C */ Entity* (*func_80118970)(void);
|
||||
/* 8003C810 */ s32 (*func_80118B18)(Entity* ent1, Entity* ent2, s32 arg2);
|
||||
;
|
||||
/* 8003C814 */ s32 (*UpdateUnarmedAnim)(s8* frameProps, u16** frames);
|
||||
/* 8003C818 */ void (*func_8010DBFC)(s32*, s32*);
|
||||
/* 8003C81C */ void (*func_80118C28)(s32 arg0);
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include <types.h>
|
||||
|
||||
/* Location */
|
||||
typedef struct {
|
||||
u_char minute;
|
||||
|
@ -18,6 +18,12 @@ typedef unsigned int size_t;
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
typedef unsigned char u_char;
|
||||
typedef unsigned short u_short;
|
||||
typedef unsigned long long u_long;
|
||||
#endif
|
||||
|
||||
typedef signed char s8;
|
||||
typedef signed short s16;
|
||||
typedef signed int s32;
|
||||
|
@ -573,7 +573,7 @@ s16 D_800A21B8[] = {
|
||||
PL_SPRT(0x0101, 0x0101, false),
|
||||
};
|
||||
|
||||
s16 unused_800A21FC[286] = {};
|
||||
s16 unused_800A21FC[286] = {0};
|
||||
|
||||
void InitRenderer(void) {
|
||||
int i;
|
||||
|
@ -616,7 +616,7 @@ extern ItemTypes D_801375CC;
|
||||
extern s32 D_801375D0;
|
||||
extern s32 D_801375D4;
|
||||
extern s32* D_801375D8;
|
||||
extern s32 D_801375DC[0];
|
||||
extern s32 D_801375DC[1];
|
||||
extern s32 D_801375E0[8];
|
||||
extern s32 D_801375FC;
|
||||
extern s32 D_80137608;
|
||||
@ -881,6 +881,7 @@ extern u8 D_801EC000[];
|
||||
extern u8 D_8013B688[];
|
||||
extern struct Cmd14 D_8013B5F4[];
|
||||
|
||||
void func_801072DC(POLY_GT4* poly);
|
||||
void InitializePads(void);
|
||||
void ReadPads(void);
|
||||
void ClearBackbuffer(void);
|
||||
|
@ -1,10 +1,14 @@
|
||||
#ifndef _MSC_VER
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#include <common.h>
|
||||
#include <log.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifndef _MSC_VER
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <psxsdk/kernel.h>
|
||||
@ -14,15 +18,17 @@ int VSync(int mode) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
long SetRCnt(unsigned long, unsigned short, long) { NOT_IMPLEMENTED; }
|
||||
long SetRCnt(unsigned long a, unsigned short b, long c) { NOT_IMPLEMENTED; }
|
||||
|
||||
void ChangeClearPAD(long) { NOT_IMPLEMENTED; }
|
||||
void ChangeClearPAD(long a) { NOT_IMPLEMENTED; }
|
||||
|
||||
void _bu_init(void) { NOT_IMPLEMENTED; }
|
||||
|
||||
long OpenEvent(unsigned long, long, long, long (*func)()) { NOT_IMPLEMENTED; }
|
||||
long OpenEvent(unsigned long a, long b, long c, long (*func)()) {
|
||||
NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
long EnableEvent(long) { NOT_IMPLEMENTED; }
|
||||
long EnableEvent(long a) { NOT_IMPLEMENTED; }
|
||||
|
||||
long TestEvent(unsigned long event) { NOT_IMPLEMENTED; }
|
||||
|
||||
@ -31,12 +37,15 @@ void EnterCriticalSection(void) { NOT_IMPLEMENTED; }
|
||||
void ExitCriticalSection(void) { NOT_IMPLEMENTED; }
|
||||
|
||||
void _adjust_path(char* dst, const char* src, int maxlen) {
|
||||
#ifndef _MSC_VER
|
||||
INFOF("TODO: adjust path '%s'", src);
|
||||
strncpy(dst, src, maxlen);
|
||||
dst[maxlen - 1] = '\0';
|
||||
#endif
|
||||
}
|
||||
|
||||
void _populate_entry(struct DIRENTRY* dst, struct dirent* src) {
|
||||
#ifndef _MSC_VER
|
||||
struct stat fileStat;
|
||||
if (stat(src->d_name, &fileStat) == -1) {
|
||||
ERRORF("failed to stat '%s'", src->d_name);
|
||||
@ -55,9 +64,11 @@ void _populate_entry(struct DIRENTRY* dst, struct dirent* src) {
|
||||
dst->system[1] = 'S';
|
||||
dst->system[2] = '\0';
|
||||
dst->system[3] = '\0';
|
||||
#endif
|
||||
}
|
||||
|
||||
struct DIRENTRY* firstfile(char* dirPath, struct DIRENTRY* firstEntry) {
|
||||
#ifndef _MSC_VER
|
||||
char adjPath[0x100];
|
||||
_adjust_path(adjPath, dirPath, sizeof(adjPath));
|
||||
|
||||
@ -79,14 +90,17 @@ struct DIRENTRY* firstfile(char* dirPath, struct DIRENTRY* firstEntry) {
|
||||
_populate_entry(firstEntry, entry);
|
||||
firstEntry->next = (struct DIRENTRY*)dir;
|
||||
|
||||
// since libapi does not offer a 'closefile', the expectation is that the
|
||||
// caller will consume 'nextfile' until a NULL is received, effectively
|
||||
// calling 'closedir' and freeing the resource created here.
|
||||
// If that does not happen, a memory leak will occur.
|
||||
// since libapi does not offer a 'closefile', the expectation is that the
|
||||
// caller will consume 'nextfile' until a NULL is received, effectively
|
||||
// calling 'closedir' and freeing the resource created here.
|
||||
// If that does not happen, a memory leak will occur.
|
||||
#endif
|
||||
return firstEntry;
|
||||
}
|
||||
|
||||
// dirent not available on MSVC
|
||||
struct DIRENTRY* nextfile(struct DIRENTRY* outEntry) {
|
||||
#ifndef _MSC_VER
|
||||
if (!outEntry) {
|
||||
return NULL;
|
||||
}
|
||||
@ -111,16 +125,20 @@ struct DIRENTRY* nextfile(struct DIRENTRY* outEntry) {
|
||||
// Close the directory if there are no more entries
|
||||
closedir(dir);
|
||||
outEntry->next = NULL;
|
||||
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
long erase(char* path) {
|
||||
#ifndef _MSC_VER
|
||||
char adjPath[0x100];
|
||||
_adjust_path(adjPath, path, sizeof(adjPath));
|
||||
|
||||
DEBUGF("remove('%s')", adjPath);
|
||||
return remove(adjPath) == 0;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
long format(char* fs) { NOT_IMPLEMENTED; }
|
||||
|
@ -1,4 +1,8 @@
|
||||
#ifdef _MSC_VER
|
||||
#include <SDL.h>
|
||||
#else
|
||||
#include <SDL2/SDL.h>
|
||||
#endif
|
||||
#include <common.h>
|
||||
#include <psxsdk/libcard.h>
|
||||
#include <log.h>
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
extern FILE* cd_fp;
|
||||
bool reading = false;
|
||||
const int sector_size = 2352;
|
||||
#define SECTOR_SIZE 2352
|
||||
int current_file = 0;
|
||||
int current_channel = 0;
|
||||
|
||||
@ -40,6 +40,7 @@ char* CdSyncModeToStr(int mode) {
|
||||
case CdlGetTD:
|
||||
return "CdlGetTD";
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return "";
|
||||
@ -62,7 +63,7 @@ int CdControl(u_char com, u_char* param, u_char* result) {
|
||||
switch (com) {
|
||||
case CdlSetloc:
|
||||
CdlLOC* pos = (CdlLOC*)param;
|
||||
fseek(cd_fp, CdPosToInt(pos) * sector_size, SEEK_SET);
|
||||
fseek(cd_fp, CdPosToInt(pos) * SECTOR_SIZE, SEEK_SET);
|
||||
break;
|
||||
case CdlReadN:
|
||||
reading = true;
|
||||
@ -87,8 +88,8 @@ int CdMix(CdlATV* vol) {
|
||||
|
||||
void ExecCd() {
|
||||
if (reading) {
|
||||
uint8_t sector[sector_size];
|
||||
fread(sector, sizeof(uint8_t), sector_size, cd_fp);
|
||||
uint8_t sector[SECTOR_SIZE];
|
||||
fread(sector, sizeof(uint8_t), SECTOR_SIZE, cd_fp);
|
||||
XA_ProcessSector(sector, &AudioBuffer);
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,13 @@
|
||||
#include <common.h>
|
||||
#include <log.h>
|
||||
#include <game.h>
|
||||
#ifdef _MSC_VER
|
||||
#include <SDL.h>
|
||||
#include <SDL_image.h>
|
||||
#else
|
||||
#include <SDL2/SDL.h>
|
||||
#include <SDL2/SDL_image.h>
|
||||
#endif
|
||||
#include "pc.h"
|
||||
|
||||
extern bool g_IsQuitRequested;
|
||||
@ -112,7 +117,7 @@ bool InitializeTexture(unsigned int textureIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int MyResetGraph(int) { return 0; }
|
||||
int MyResetGraph(int arg0) { return 0; }
|
||||
|
||||
void MyAudioCallback(void* data, Uint8* buffer, int length);
|
||||
void SDLAudioCallback(void* data, Uint8* buffer, int length) {
|
||||
|
@ -2,9 +2,15 @@
|
||||
#include "dra.h"
|
||||
#include "servant.h"
|
||||
#include "sfx.h"
|
||||
#ifdef _MSC_VER
|
||||
#include <SDL.h>
|
||||
#else
|
||||
#include <SDL2/SDL.h>
|
||||
#endif
|
||||
#include <cJSON/cJSON.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
const char g_DummyName[] = "DUMMY\xFF";
|
||||
const char g_DummyDesc[] = "dummy description";
|
||||
RelicDesc g_RelicDummy = {g_DummyName, g_DummyDesc, 0, 0, 0};
|
||||
|
@ -58,16 +58,16 @@ s32 D_8006C3AC;
|
||||
s32 D_800978C4;
|
||||
s32 D_80097C98;
|
||||
u32 D_800A04F8;
|
||||
SVECTOR* D_800A3210[];
|
||||
SVECTOR* D_800A33A0[];
|
||||
SVECTOR* D_800A3210[1];
|
||||
SVECTOR* D_800A33A0[1];
|
||||
SVECTOR* D_800A34C0[18][3];
|
||||
SVECTOR* D_800A3598[];
|
||||
SVECTOR* D_800A35D0[];
|
||||
SVECTOR* D_800A3608[];
|
||||
SVECTOR* D_800A3598[1];
|
||||
SVECTOR* D_800A35D0[1];
|
||||
SVECTOR* D_800A3608[1];
|
||||
u8 D_800A3728;
|
||||
MATRIX D_800A37B8;
|
||||
s16 D_80136308[];
|
||||
u16 g_Clut[];
|
||||
s16 D_80136308[1];
|
||||
u16 g_Clut[1];
|
||||
s32 D_8006C384;
|
||||
s32 D_8006C388;
|
||||
MenuNavigation g_MenuNavigation;
|
||||
@ -76,12 +76,12 @@ s32 D_8006C384;
|
||||
s32 D_8006C388;
|
||||
s32 D_8006C38C;
|
||||
s32 D_8006C390;
|
||||
u16 D_8003C104[];
|
||||
u16 D_8003C104[0x400];
|
||||
s32 D_8003C738;
|
||||
u8 g_CastleFlags[0x300];
|
||||
s32 D_8006C374;
|
||||
s32 D_8006C378;
|
||||
u16 D_8003C3C2[];
|
||||
u16 D_8003C3C2[1];
|
||||
u32 D_80070BCC;
|
||||
s32 g_Servant;
|
||||
s32 g_ServantLoaded;
|
||||
@ -128,9 +128,9 @@ u8 g_saveIcon13[0x180];
|
||||
u8 g_saveIcon14[0x180];
|
||||
u8 g_saveIcon15[0x180];
|
||||
u16 g_saveIconPal0[0x10][0x10];
|
||||
s32 D_8003C0EC[4] = {};
|
||||
Unkstruct_8006C3C4 D_8006C3C4[32] = {};
|
||||
GfxLoad g_GfxLoad[0x10] = {};
|
||||
s32 D_8003C0EC[4] = {0};
|
||||
Unkstruct_8006C3C4 D_8006C3C4[32] = {0};
|
||||
GfxLoad g_GfxLoad[0x10] = {0};
|
||||
s16 D_800705CC[0x100];
|
||||
PlayerDraw g_PlayerDraw[0x10];
|
||||
s32 D_8013AED0;
|
||||
@ -156,7 +156,7 @@ s32 g_DebugHitboxViewMode;
|
||||
u32 D_801362B4;
|
||||
u32 g_DebugCurPal;
|
||||
s32 D_801362D4;
|
||||
RoomTeleport D_800A245C[];
|
||||
RoomTeleport D_800A245C[1];
|
||||
s32 D_8013640C;
|
||||
s32 D_800974A4;
|
||||
u32* g_CurrentOT;
|
||||
@ -183,11 +183,11 @@ u8 aPbav_2[] = {0}; // VAB file?
|
||||
u8 aPqes[] = {0}; // SEQ file
|
||||
u8 aPqes_0[] = {0}; // SEQ file
|
||||
u8 aPqes_1[] = {0}; // SEQ file
|
||||
s32 D_801362D0[];
|
||||
s32 D_801362D0[1];
|
||||
s32 D_800987B4;
|
||||
u8 g_PadsRepeatTimer[BUTTON_COUNT * PAD_COUNT];
|
||||
s32 D_80136410;
|
||||
s32 D_80136414[];
|
||||
s32 D_80136414[1];
|
||||
s32 D_801375C0;
|
||||
s32 D_801375C4;
|
||||
s32 D_801375C8;
|
||||
@ -195,7 +195,7 @@ ItemTypes D_801375CC;
|
||||
s32 D_801375D0;
|
||||
s32 D_801375D4;
|
||||
s32* D_801375D8;
|
||||
s32 D_801375DC[0];
|
||||
s32 D_801375DC[1];
|
||||
s32 D_801375E0[8];
|
||||
s32 D_801375FC;
|
||||
s32 D_80137608;
|
||||
@ -213,17 +213,17 @@ MenuContext g_JosephsCloakContext;
|
||||
s32 D_8013783C;
|
||||
s32 D_801377FC[0x10];
|
||||
s32 D_80137840;
|
||||
s32 D_80137844[];
|
||||
s32 D_80137848[];
|
||||
s32 D_80137844[1];
|
||||
s32 D_80137848[1];
|
||||
s32 D_8013784C;
|
||||
s16 g_RelicMenuFadeTimer;
|
||||
s32 g_TimeAttackEntryTimes[];
|
||||
s32 c_strTimeAttackEntry[];
|
||||
s32 c_strTimeAttackGoals[];
|
||||
s32 g_TimeAttackEntryTimes[1];
|
||||
s32 c_strTimeAttackEntry[1];
|
||||
s32 c_strTimeAttackGoals[1];
|
||||
s32 g_NewAttackRightHand;
|
||||
s32 g_NewAttackLeftHand;
|
||||
s32 g_NewDefenseEquip;
|
||||
s32 g_NewPlayerStatsTotal[];
|
||||
s32 g_NewPlayerStatsTotal[1];
|
||||
s32 D_80137948;
|
||||
s8* D_8013794C; // Pointer to texture pattern
|
||||
s32 D_80137950;
|
||||
@ -239,7 +239,7 @@ VECTOR D_801379E0;
|
||||
VECTOR D_80137B20;
|
||||
SVECTOR D_80137CA0;
|
||||
SVECTOR D_80137D40;
|
||||
SVECTOR D_80137E70[];
|
||||
SVECTOR D_80137E70[1];
|
||||
s32 D_80137EE0;
|
||||
s32 D_80137EE4;
|
||||
s32 D_80137EE8;
|
||||
@ -247,9 +247,9 @@ s32 D_80137EEC;
|
||||
s32 D_80137EF0;
|
||||
s32 D_80137EF4;
|
||||
s32 D_80139824;
|
||||
s32 D_80139828[];
|
||||
s32 D_80139828[1];
|
||||
s32 D_8013982C;
|
||||
s32 D_80139830[];
|
||||
s32 D_80139830[1];
|
||||
s32 D_8013983C;
|
||||
s32 D_80139840;
|
||||
s32 D_80139844;
|
||||
@ -301,7 +301,7 @@ u16 D_801374F8[0x20];
|
||||
u16 D_80137538[0x20];
|
||||
u8* D_80137590;
|
||||
s32 D_80137594;
|
||||
u32 g_DisplayHP[];
|
||||
u32 g_DisplayHP[1];
|
||||
s32 D_80137970;
|
||||
s32 D_80137974;
|
||||
u32 D_80137978;
|
||||
@ -381,7 +381,7 @@ const char* c_strTimeAttackEntries[] = {
|
||||
dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy,
|
||||
dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy, dummy,
|
||||
};
|
||||
ImgSrc* g_imgUnk8013C200_impl = {
|
||||
ImgSrc g_imgUnk8013C200_impl = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
@ -392,7 +392,7 @@ ImgSrc* g_imgUnk8013C270 = &g_imgUnk8013C200_impl;
|
||||
s32 g_ExpNext[100] = {0};
|
||||
s32 g_PrevEquippedWeapons[2];
|
||||
s32 D_8013AEE4;
|
||||
s32 D_800A3194[];
|
||||
s32 D_800A3194[1];
|
||||
s32 D_80139060;
|
||||
u32 D_8013799C;
|
||||
s32 D_801379A0;
|
||||
@ -431,12 +431,12 @@ s16 g_VolL;
|
||||
s16 g_VolR;
|
||||
s16 D_8013AE94;
|
||||
u16 D_8013AEE0;
|
||||
Unkstruct_800BF554 g_SfxData[];
|
||||
Unkstruct_800BF554 g_SfxData[1];
|
||||
u16 D_8013AE7C;
|
||||
s16 D_801390A4;
|
||||
s16 D_80139010;
|
||||
s8 D_8013B690;
|
||||
s16 D_8013B678[];
|
||||
s16 D_8013B678[1];
|
||||
s16 D_8013B648[4];
|
||||
s16 D_8013AEA0[4];
|
||||
s32 D_8013B628[4];
|
||||
@ -445,11 +445,11 @@ s16 D_8013B66C[4];
|
||||
s8 g_UnkChannelSetting1[4];
|
||||
s16 g_ChannelGroupVolume[4];
|
||||
s16 g_UnkChannelSetting2[4];
|
||||
s32 D_801390B4[];
|
||||
s8 D_80139018[];
|
||||
s16 D_80139814[];
|
||||
s8 D_80139058[];
|
||||
s16 D_801390AC[];
|
||||
s32 D_801390B4[1];
|
||||
s8 D_80139018[1];
|
||||
s16 D_80139814[1];
|
||||
s8 D_80139058[1];
|
||||
s16 D_801390AC[1];
|
||||
s32 D_8013B61C;
|
||||
s32 D_8013980C;
|
||||
s16 g_sfxRingBufferWritePos;
|
||||
@ -468,11 +468,11 @@ s16 g_volumeL;
|
||||
s16 g_volumeR;
|
||||
u8 g_CdSoundCommand16;
|
||||
u8 D_80139014;
|
||||
struct Cmd14 D_8013B5F4[];
|
||||
struct Cmd14 D_8013B5F4[1];
|
||||
s32 D_8013AE90;
|
||||
s32 D_8013AEF4;
|
||||
u8 g_CdCommandResult[];
|
||||
u8 D_8013B688[];
|
||||
u8 g_CdCommandResult[1];
|
||||
u8 D_8013B688[1];
|
||||
u8 g_CdMode[3];
|
||||
|
||||
// TODO
|
||||
@ -517,7 +517,7 @@ s16 D_8013AED4[4];
|
||||
s16 D_8013B650[4];
|
||||
s32 g_CdCommandStatus;
|
||||
const char* D_80138784[0x800];
|
||||
s32 D_800C1ECC[];
|
||||
s32 D_800C1ECC[1];
|
||||
s32 D_8013B65C;
|
||||
|
||||
// sound stubs
|
||||
|
Loading…
Reference in New Issue
Block a user