Compare commits
44 Commits
beta
...
ph3nom/mia
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
80bad15904 | ||
|
|
4a453e3604 | ||
|
|
53261e57ed | ||
|
|
d79e4516a5 | ||
|
|
77530e641d | ||
|
|
ed540c8e00 | ||
|
|
428036968f | ||
|
|
30af702b47 | ||
|
|
75c8c88dce | ||
|
|
fea0c64122 | ||
|
|
08ddd4360a | ||
|
|
20b144df82 | ||
|
|
dd34e10ad4 | ||
|
|
d72b0d1894 | ||
|
|
bd7f7f1bd9 | ||
|
|
4ff8143d2e | ||
|
|
c457252551 | ||
|
|
3e474846a7 | ||
|
|
3d72c1765d | ||
|
|
2b5f567d77 | ||
|
|
fad0c7f1d7 | ||
|
|
7cf836e709 | ||
|
|
30ab9ab417 | ||
|
|
b38d4529dd | ||
|
|
f81bb9f7e4 | ||
|
|
49eef3c90c | ||
|
|
de14cc7f93 | ||
|
|
d5d9e99490 | ||
|
|
a4e929f549 | ||
|
|
55e4c6e9cd | ||
|
|
99be4f6404 | ||
|
|
adf8f39bda | ||
|
|
e6a5dbe809 | ||
|
|
018c289d9f | ||
|
|
a4dae3c8a6 | ||
|
|
f2bfb1916c | ||
|
|
4f84051b8c | ||
|
|
2a1092995a | ||
|
|
72a7f72bfe | ||
|
|
b1da5b5461 | ||
|
|
308adb0c64 | ||
|
|
4a6165b6ec | ||
|
|
7d77783492 | ||
|
|
09477b5c78 |
65
.gitignore
vendored
@@ -366,46 +366,27 @@ src/extras/GitSHA1.cpp
|
||||
*.d
|
||||
*.sim.o
|
||||
*.sim.o3
|
||||
|
||||
liberty/1ST_READ.BIN
|
||||
liberty/IP.BIN
|
||||
liberty/*.cdi
|
||||
liberty/*.iso
|
||||
liberty/dca-liberty.elf
|
||||
liberty/dca-liberty.elf.bin
|
||||
liberty/dca-liberty-sim.elf
|
||||
liberty/animtool*
|
||||
liberty/texconv*
|
||||
liberty/imgtool*
|
||||
liberty/coltool*
|
||||
liberty/streamheaderpack*
|
||||
liberty/extract-sfx*
|
||||
liberty/pack-sfx*
|
||||
liberty/analyze-profile*
|
||||
liberty/aud2adpcm*
|
||||
liberty/repack-data
|
||||
liberty/output.map
|
||||
liberty/git-version
|
||||
|
||||
miami/1ST_READ.BIN
|
||||
miami/IP.BIN
|
||||
miami/*.cdi
|
||||
miami/*.iso
|
||||
miami/dca-miami.elf
|
||||
miami/dca-miami.elf.bin
|
||||
miami/dca-miami-sim.elf
|
||||
miami/animtool*
|
||||
miami/texconv*
|
||||
miami/imgtool*
|
||||
miami/coltool*
|
||||
miami/streamheaderpack*
|
||||
miami/extract-sfx*
|
||||
miami/pack-sfx*
|
||||
miami/analyze-profile*
|
||||
miami/aud2adpcm*
|
||||
miami/adf2mp3*
|
||||
miami/repack-data
|
||||
miami/output.map
|
||||
miami/git-version
|
||||
|
||||
dreamcast/1ST_READ.BIN
|
||||
dreamcast/IP.BIN
|
||||
dreamcast/re3.cdi
|
||||
dreamcast/re3.iso
|
||||
dreamcast/re3.elf
|
||||
dreamcast/re3.elf.bin
|
||||
dreamcast/re3-sim.elf
|
||||
dreamcast/dca3.cdi
|
||||
dreamcast/dca3.iso
|
||||
dreamcast/dca3.elf
|
||||
dreamcast/dca3.elf.bin
|
||||
dreamcast/dca3-sim.elf
|
||||
dreamcast/texconv*
|
||||
dreamcast/imgtool*
|
||||
dreamcast/extract-sfx*
|
||||
dreamcast/pack-sfx*
|
||||
dreamcast/analyze-profile*
|
||||
dreamcast/aud2adpcm*
|
||||
dreamcast/repack-data
|
||||
dreamcast/output.map
|
||||
dreamcast/dca3.ds.iso
|
||||
dreamcast/git-version.h
|
||||
dreamcast/git-version.tmp
|
||||
.DS_Store
|
||||
|
||||
133
.gitlab-ci.yml
@@ -5,7 +5,7 @@ image:
|
||||
name: ghcr.io/kos-builds/kos-dc:latest-14.1.0
|
||||
entrypoint: ["/bin/sh", "-c", 'echo gitlab command: "$@" && /bin/bash -c "$@"']
|
||||
|
||||
build-dreamcast-liberty:
|
||||
build-dreamcast:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
@@ -23,13 +23,13 @@ build-dreamcast-liberty:
|
||||
- make -C /opt/toolchains/dc/kos/kernel/arch/dreamcast/sound/arm
|
||||
- make -C /opt/toolchains/dc/kos -j $(nproc)
|
||||
script:
|
||||
- cd liberty
|
||||
- cd dreamcast
|
||||
- make -j $(nproc)
|
||||
artifacts:
|
||||
paths:
|
||||
- liberty/dca-liberty.elf
|
||||
- dreamcast/dca3.elf
|
||||
|
||||
build-dreamcast-miami:
|
||||
build-dreamcast-ide-32mb:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
@@ -47,13 +47,13 @@ build-dreamcast-miami:
|
||||
- make -C /opt/toolchains/dc/kos/kernel/arch/dreamcast/sound/arm
|
||||
- make -C /opt/toolchains/dc/kos -j $(nproc)
|
||||
script:
|
||||
- cd miami
|
||||
- make -j $(nproc)
|
||||
- cd dreamcast
|
||||
- make -j $(nproc) WITH_IDE=1 WITH_32MB=1 TARGET=dca3-ide-32mb.elf
|
||||
artifacts:
|
||||
paths:
|
||||
- miami/dca-miami.elf
|
||||
- dreamcast/dca3-ide-32mb.elf
|
||||
|
||||
build-texconv-liberty:
|
||||
build-texconv:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
@@ -68,13 +68,13 @@ build-texconv-liberty:
|
||||
- update-ccache-symlinks
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd liberty
|
||||
- cd dreamcast
|
||||
- make texconv -j $(nproc)
|
||||
artifacts:
|
||||
paths:
|
||||
- liberty/texconv
|
||||
- dreamcast/texconv
|
||||
|
||||
build-texconv-liberty-clang:
|
||||
build-texconv-clang:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
@@ -89,14 +89,14 @@ build-texconv-liberty-clang:
|
||||
- update-ccache-symlinks
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd liberty
|
||||
- cd dreamcast
|
||||
- CC=clang CXX=clang++ make texconv -j $(nproc)
|
||||
- mv texconv texconv-clang
|
||||
artifacts:
|
||||
paths:
|
||||
- liberty/texconv-clang
|
||||
- dreamcast/texconv-clang
|
||||
|
||||
build-texconv-miami:
|
||||
build-sim:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
@@ -106,61 +106,19 @@ build-texconv-miami:
|
||||
- $CCACHE_DIR
|
||||
stage: build
|
||||
before_script:
|
||||
- dpkg --add-architecture i386
|
||||
- apt update
|
||||
- apt install -y build-essential gcc g++ ccache
|
||||
- apt install -y build-essential gcc g++ gcc-multilib g++-multilib libx11-dev:i386 ccache
|
||||
- update-ccache-symlinks
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd miami
|
||||
- make texconv -j $(nproc)
|
||||
artifacts:
|
||||
paths:
|
||||
- miami/texconv
|
||||
|
||||
build-texconv-miami-clang:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
cache:
|
||||
- key: ccache-$CI_JOB_NAME
|
||||
paths:
|
||||
- $CCACHE_DIR
|
||||
stage: build
|
||||
before_script:
|
||||
- apt update
|
||||
- apt install -y build-essential gcc g++ clang ccache
|
||||
- update-ccache-symlinks
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd miami
|
||||
- CC=clang CXX=clang++ make texconv -j $(nproc)
|
||||
- mv texconv texconv-clang
|
||||
artifacts:
|
||||
paths:
|
||||
- miami/texconv-clang
|
||||
|
||||
build-sim-liberty:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
cache:
|
||||
- key: ccache-$CI_JOB_NAME
|
||||
paths:
|
||||
- $CCACHE_DIR
|
||||
stage: build
|
||||
before_script:
|
||||
- apt update
|
||||
- apt install -y build-essential gcc g++ libx11-dev ccache
|
||||
- update-ccache-symlinks
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd liberty
|
||||
- cd dreamcast
|
||||
- make -f sim.mk -j $(nproc)
|
||||
artifacts:
|
||||
paths:
|
||||
- liberty/dca-liberty-sim.elf
|
||||
- dreamcast/dca3-sim.elf
|
||||
|
||||
build-sim-liberty-clang:
|
||||
build-sim-clang:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
@@ -170,55 +128,24 @@ build-sim-liberty-clang:
|
||||
- $CCACHE_DIR
|
||||
stage: build
|
||||
before_script:
|
||||
- dpkg --add-architecture i386
|
||||
- apt update
|
||||
- apt install -y build-essential gcc g++ libx11-dev clang ccache
|
||||
- apt install -y build-essential gcc g++ gcc-multilib g++-multilib libx11-dev:i386 clang ccache
|
||||
- update-ccache-symlinks
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd liberty
|
||||
- CC=clang CXX=clang++ make -f sim.mk -j $(nproc) TARGET=dca-liberty-sim-clang.elf
|
||||
- cd dreamcast
|
||||
- CC=clang CXX=clang++ make -f sim.mk -j $(nproc) TARGET=dca3-sim-clang.elf
|
||||
artifacts:
|
||||
paths:
|
||||
- liberty/dca-liberty-sim-clang.elf
|
||||
- dreamcast/dca3-sim-clang.elf
|
||||
|
||||
build-sim-miami:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
cache:
|
||||
- key: ccache-$CI_JOB_NAME
|
||||
paths:
|
||||
- $CCACHE_DIR
|
||||
stage: build
|
||||
before_script:
|
||||
- apt update
|
||||
- apt install -y build-essential gcc g++ libx11-dev ccache
|
||||
- update-ccache-symlinks
|
||||
pages:
|
||||
stage: deploy
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd miami
|
||||
- make -f sim.mk -j $(nproc)
|
||||
- echo "The site will be deployed to $CI_PAGES_URL"
|
||||
artifacts:
|
||||
paths:
|
||||
- miami/dca-liberty-sim.elf
|
||||
|
||||
build-sim-miami-clang:
|
||||
variables:
|
||||
CCACHE_BASEDIR: $CI_PROJECT_DIR
|
||||
CCACHE_DIR: $CI_PROJECT_DIR/ccache
|
||||
cache:
|
||||
- key: ccache-$CI_JOB_NAME
|
||||
paths:
|
||||
- $CCACHE_DIR
|
||||
stage: build
|
||||
before_script:
|
||||
- apt update
|
||||
- apt install -y build-essential gcc g++ libx11-dev clang ccache
|
||||
- update-ccache-symlinks
|
||||
script:
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- cd miami
|
||||
- CC=clang CXX=clang++ make -f sim.mk -j $(nproc) TARGET=dca-miami-sim-clang.elf
|
||||
artifacts:
|
||||
paths:
|
||||
- miami/dca-miami-sim-clang.elf
|
||||
- public
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
||||
100
CMakeLists.txt
Normal file
@@ -0,0 +1,100 @@
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
|
||||
set(EXECUTABLE re3)
|
||||
set(PROJECT RE3)
|
||||
|
||||
project(${EXECUTABLE} C CXX)
|
||||
set(${PROJECT}_AUTHOR "${PROJECT} Team")
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||
|
||||
include(GetGitRevisionDescription)
|
||||
get_git_head_revision(GIT_REFSPEC GIT_SHA1 "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR")
|
||||
message(STATUS "Building ${CMAKE_PROJECT_NAME} GIT SHA1: ${GIT_SHA1}")
|
||||
|
||||
if(NINTENDO_SWITCH)
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/nx")
|
||||
include(NXFunctions)
|
||||
endif()
|
||||
|
||||
if(NOT COMMAND re3_platform_target)
|
||||
function(re3_platform_target)
|
||||
endfunction()
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(${PROJECT}_AUDIOS "OAL" "MSS")
|
||||
else()
|
||||
set(${PROJECT}_AUDIOS "OAL")
|
||||
endif()
|
||||
|
||||
set(${PROJECT}_AUDIO "OAL" CACHE STRING "Audio")
|
||||
|
||||
option(${PROJECT}_INSTALL "Enable installation of ${EXECUTABLE} + gamefiles" OFF)
|
||||
option(${PROJECT}_WITH_OPUS "Build ${EXECUTABLE} with opus support" OFF)
|
||||
option(${PROJECT}_WITH_LIBSNDFILE "Build ${EXECUTABLE} with libsndfile (instead of internal decoder)" OFF)
|
||||
|
||||
set_property(CACHE ${PROJECT}_AUDIO PROPERTY STRINGS ${${PROJECT}_AUDIOS})
|
||||
message(STATUS "${PROJECT}_AUDIO = ${${PROJECT}_AUDIO} (choices=${${PROJECT}_AUDIOS})")
|
||||
set("${PROJECT}_AUDIO_${${PROJECT}_AUDIO}" ON)
|
||||
if(NOT ${PROJECT}_AUDIO IN_LIST ${PROJECT}_AUDIOS)
|
||||
message(FATAL_ERROR "Illegal ${PROJECT}_AUDIO=${${PROJECT}_AUDIO}")
|
||||
endif()
|
||||
|
||||
option(${PROJECT}_VENDORED_LIBRW "Use vendored librw" ON)
|
||||
if(${PROJECT}_VENDORED_LIBRW)
|
||||
add_subdirectory(vendor/librw)
|
||||
else()
|
||||
find_package(librw REQUIRED)
|
||||
endif()
|
||||
add_subdirectory(src)
|
||||
|
||||
if(${PROJECT}_INSTALL)
|
||||
install(DIRECTORY gamefiles/ DESTINATION ".")
|
||||
if(LIBRW_PLATFORM_NULL)
|
||||
set(platform "-null")
|
||||
elseif(LIBRW_PLATFORM_PS2)
|
||||
set(platform "-ps2")
|
||||
elseif(LIBRW_PLATFORM_GL3)
|
||||
if(LIBRW_GL3_GFXLIB STREQUAL "GLFW")
|
||||
set(platform "-gl3-glfw")
|
||||
else()
|
||||
set(platform "-gl3-sdl2")
|
||||
endif()
|
||||
elseif(LIBRW_PLATFORM_D3D9)
|
||||
set(platform "-d3d9")
|
||||
endif()
|
||||
if(${PROJECT}_AUDIO_OAL)
|
||||
set(audio "-oal")
|
||||
elseif(${PROJECT}_AUDIO_MSS)
|
||||
set(audio "-mss")
|
||||
endif()
|
||||
if(${PROJECT}_WITH_OPUS)
|
||||
set(audio "${audio}-opus")
|
||||
endif()
|
||||
if(NOT LIBRW_PLATFORM_PS2)
|
||||
if(WIN32)
|
||||
set(os "-win")
|
||||
elseif(APPLE)
|
||||
set(os "-apple")
|
||||
elseif(UNIX)
|
||||
set(os "-linux")
|
||||
elseif(NINTENDO_SWITCH)
|
||||
set(os "-switch")
|
||||
else()
|
||||
set(compiler "-UNK")
|
||||
message(WARNING "Unknown os. Created cpack package will be wrong. (override using cpack -P)")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}${platform}${audio}${os}${compiler}")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "GTA III reversed")
|
||||
set(CPACK_PACKAGE_VENDOR "GTAModding")
|
||||
# FIXME: missing license (https://github.com/GTAmodding/re3/issues/794)
|
||||
# set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/LICENSE")
|
||||
# set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}")
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
|
||||
set(CPACK_GENERATOR "ZIP")
|
||||
include(CPack)
|
||||
endif()
|
||||
107
CODING_STYLE.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# Coding style
|
||||
|
||||
I started writing in [Plan 9 style](http://man.cat-v.org/plan_9/6/style),
|
||||
but realize that this is not the most popular style, so I'm willing to compromise.
|
||||
Try not to deviate too much so the code will look similar across the whole project.
|
||||
|
||||
To give examples, these two styles (or anything in between) are fine:
|
||||
|
||||
```
|
||||
type
|
||||
functionname(args)
|
||||
{
|
||||
if(a == b){
|
||||
s1;
|
||||
s2;
|
||||
}else{
|
||||
s3;
|
||||
s4;
|
||||
}
|
||||
if(x != y)
|
||||
s5;
|
||||
}
|
||||
|
||||
type functionname(args)
|
||||
{
|
||||
if (a == b) {
|
||||
s1;
|
||||
s2;
|
||||
} else {
|
||||
s3;
|
||||
s4;
|
||||
}
|
||||
if (x != y)
|
||||
s5;
|
||||
}
|
||||
```
|
||||
|
||||
This one (or anything more extreme) is heavily discouraged:
|
||||
|
||||
```
|
||||
type functionname ( args )
|
||||
{
|
||||
if ( a == b )
|
||||
{
|
||||
s1;
|
||||
s2;
|
||||
}
|
||||
else
|
||||
{
|
||||
s3;
|
||||
s4;
|
||||
}
|
||||
if ( x != y )
|
||||
{
|
||||
s5;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
i.e.
|
||||
|
||||
* Put the brace on the same line as control statements
|
||||
|
||||
* Put the brace on the next line after function definitions and structs/classes
|
||||
|
||||
* Put an `else` on the same line with the braces
|
||||
|
||||
* Don't put braces around single statements
|
||||
|
||||
* Put the function return type on a separate line
|
||||
|
||||
* Indent with TABS
|
||||
|
||||
As for the less cosmetic choices, here are some guidelines how the code should look:
|
||||
|
||||
* Don't use magic numbers where the original source code would have had an enum or similar.
|
||||
Even if you don't know the exact meaning it's better to call something `FOOBAR_TYPE_4` than just `4`,
|
||||
since `4` will be used in other places and you can't easily see where else the enum value is used.
|
||||
|
||||
* Don't just copy paste code from IDA, make it look nice
|
||||
|
||||
* Use the right types. In particular:
|
||||
|
||||
* don't use types like `__int16`, we have `int16` for that
|
||||
|
||||
* don't use `unsigned`, we have typedefs for that
|
||||
|
||||
* don't use `char` for anything but actual characters, use `int8`, `uint8` or `bool`
|
||||
|
||||
* don't even think about using win32 types (`BYTE`, `WORD`, &c.) unless you're writing win32 specific code
|
||||
|
||||
* declare pointers like `int *ptr;`, not `int* ptr;`
|
||||
|
||||
* As for variable names, the original gta source code was not written in a uniform style,
|
||||
but here are some observations:
|
||||
|
||||
* many variables employ a form of hungarian notation, i.e.:
|
||||
|
||||
* `m_` may be used for class member variables (mostly those that are considered private)
|
||||
|
||||
* `ms_` for (mostly private) static members
|
||||
|
||||
* `f` is a float, `i` or `n` is an integer, `b` is a boolean, `a` is an array
|
||||
|
||||
* do *not* use `dw` for `DWORD` or so, we're not programming win32
|
||||
|
||||
* Generally, try to make the code look as if R* could have written it
|
||||
97
README.md
@@ -1,14 +1,14 @@
|
||||
## Intro
|
||||
|
||||
dca3 is a port of GTA III/VC for the Dreamcast made by The Gang, using [re3](https://github.com/halpz/re3/tree/master/) as a base.
|
||||
dca3 is a port of GTA III for the Dreamcast made by The Gang, using [re3](https://github.com/halpz/re3/tree/master/) as a base.
|
||||
|
||||
re3 a fully reversed source code for GTA III/VC.
|
||||
re3 a fully reversed source code for GTA III.
|
||||
|
||||
This project was started by [Stefanos Kornilios Mitsis Poiitidis](https://x.com/poiitidis) and uses [KallistiOS](https://kos-docs.dreamcast.wiki/).
|
||||
|
||||
## Baking the CDI
|
||||
### Prerequisites
|
||||
You need Grand Theft Auto III or Grand Theft Auto: Vice City installed. This version has been tested and works: https://store.rockstargames.com/game/buy-grand-theft-auto-the-trilogy.
|
||||
You need GTA 3 installed. This version has been tested and works: https://store.rockstargames.com/game/buy-grand-theft-auto-the-trilogy.
|
||||
|
||||
Please note that *SOME VERSIONS* of the game may not work. It has been reported that `d4_gta.mp3` is corrupted sometimes.
|
||||
|
||||
@@ -18,33 +18,28 @@ You will also need the following tools installed
|
||||
- git-scm http://git-scm.com/downloads/win
|
||||
- dreamsdk r3 https://github.com/dreamsdk/dreamsdk/releases
|
||||
|
||||
### Cloning the dca3-game repo (this is required once)
|
||||
### Preparing the gta3 folder
|
||||
- Open dreamsdk shell
|
||||
- type `git clone --branch beta https://gitlab.com/skmp/dca3-game.git` (and press enter).
|
||||
- It should take a moment and successfully clone the repo
|
||||
- close the dreamsdk shell and proceed to the next step.
|
||||
|
||||
### Grand Theft Auto III build (liberty)
|
||||
#### Preparing the liberty folder
|
||||
- Open dreamsdk shell
|
||||
- type `mkdir liberty` (and press enter)
|
||||
- type `mkdir gta3` (and press enter)
|
||||
- type `explorer .` (and press enter)
|
||||
- This will open a folder named liberty. Copy your gta3 files in there.
|
||||
- This will open a folder named gta3. Copy your gta3 files in there.
|
||||
- If you use the 2cdrom version of the game, make sure to also copy the contents of the play disc to this folder.
|
||||
- close the folder and the dreamsdk shell and proceed to the next step.
|
||||
|
||||
#### Downloading and extracting the prebuilt elf
|
||||
### Cloning the dca3-game repo and downloading the prebuilt elf
|
||||
- Open dreamsdk shell
|
||||
- type `cd dca3-game/liberty` (and press enter)
|
||||
- type `git clone --branch alpha https://gitlab.com/skmp/dca3-game.git` (and press enter)
|
||||
- It should take a moment and successfully clone the repo
|
||||
- type `cd dca3-game/dreamcast` (and press enter)
|
||||
- type `explorer .` (and press enter).
|
||||
- A folder named dreamcast with some files should be open. Keep it on the side.
|
||||
- Download the *liberty* beta prebuilt elf from https://gitlab.com/skmp/dca3-game/-/releases/beta
|
||||
- Open artifacts.zip and extract dca-liberty.elf to the folder that was kept open before.
|
||||
- Download the Alpha Prebuilt Elf from https://gitlab.com/skmp/dca3-game/-/releases
|
||||
- Open artifacts.zip and extract dca3.elf to the folder that was kept open before.
|
||||
- Close the folder and dreamsdk shell
|
||||
|
||||
#### Repacking and making a prebuilt cdi FOR GD-EMU
|
||||
### Repacking and making a prebuilt cdi FOR GD-EMU
|
||||
- Open dreamsdk shell
|
||||
- type `cd dca3-game/liberty` (and press enter)
|
||||
- type `cd dca3-game/dreamcast` (and press enter)
|
||||
- type `make cdi-prebuilt` (and press enter)
|
||||
- This should take a while (5-15 mins)
|
||||
- Due to an issue with dreamsdk, this won't fully complete the first time
|
||||
@@ -52,80 +47,28 @@ You will also need the following tools installed
|
||||
- It will continue where it left off before
|
||||
- It should run to completion now and show "*** Repack Completed Successfully ***"
|
||||
- type `explorer .` (and press enter)
|
||||
- The dreamcast folder should open up, and it should contain dca-liberty.cdi for you (~ 900 megs)
|
||||
- The dreamcast folder should open up, and it should contain dca3.cdi for you (~ 900 megs)
|
||||
|
||||
#### Repacking and making a prebuilt cdi FOR burning CD-ROM
|
||||
### Repacking and making a prebuilt cdi FOR burning CD-ROM
|
||||
- Open dreamsdk shell
|
||||
- type `cd dca3-game/liberty` (and press enter)
|
||||
- type `cd dca3-game/dreamcast` (and press enter)
|
||||
- type `make FOR_DISC=1 cdi-prebuilt` (and press enter)
|
||||
- This should take a while (5-15 mins)
|
||||
- Due to an issue with dreamsdk, this won't fully complete the first time
|
||||
- type `make FOR_DISC=1 cdi-prebuilt` (and press enter)
|
||||
- It will continue where it left off before
|
||||
- It should run to completion now and show "*** CDI Baked Successfully ***"
|
||||
- It should run to completion now and show "*** Repack Completed Successfully ***"
|
||||
- type `explorer .` (and press enter)
|
||||
- The dreamcast folder should open up, and it should contain dca-liberty.cdi for you (~ 700 megs or ~260 megs)
|
||||
- The dreamcast folder should open up, and it should contain dca3.cdi for you (~ 700 megs or ~260 megs)
|
||||
- If the .cdi is not ~ 700 megs (linux/mkdcdisc) or ~260 megs (windows/cdi4dc), then you did something wrong.
|
||||
- You can type `rm -rf repack-data` (and press enter)
|
||||
- And then start this step from the beggining
|
||||
|
||||
### Grand Theft Auto Vice City build (miami)
|
||||
#### Preparing the miami folder
|
||||
- Open dreamsdk shell
|
||||
- type `mkdir miami` (and press enter)
|
||||
- type `explorer .` (and press enter)
|
||||
- This will open a folder named liberty. Copy your gtavc files in there.
|
||||
- close the folder and the dreamsdk shell and proceed to the next step.
|
||||
|
||||
#### Downloading and extracting the prebuilt elf
|
||||
- Open dreamsdk shell
|
||||
- type `cd dca3-game/miami` (and press enter)
|
||||
- type `explorer .` (and press enter).
|
||||
- A folder named dreamcast with some files should be open. Keep it on the side.
|
||||
- Download the *miami* beta prebuilt elf from https://gitlab.com/skmp/dca3-game/-/releases/beta
|
||||
- Open artifacts.zip and extract dca-miami.elf to the folder that was kept open before.
|
||||
- Close the folder and dreamsdk shell
|
||||
|
||||
#### Repacking and making a prebuilt cdi FOR GD-EMU
|
||||
- Open dreamsdk shell
|
||||
- type `cd dca3-game/miami` (and press enter)
|
||||
- type `FOR_DISC=2 make cdi-prebuilt` (and press enter)
|
||||
- This should take a while (5-15 mins)
|
||||
- Due to an issue with dreamsdk, this won't fully complete the first time
|
||||
- type `FOR_DISC=2 make cdi-prebuilt` (and press enter)
|
||||
- It will continue where it left off before
|
||||
- You will have to close the dreamshell window a few times and restart this procesure a few times
|
||||
- Eventually it should run to completion now and show "*** CDI Baked Successfully ***"
|
||||
- type `explorer .` (and press enter)
|
||||
- The dreamcast folder should open up, and it should contain dca-miami.cdi for you (~ 1.5 gigs)
|
||||
|
||||
#### Repacking and making a prebuilt cdi FOR burning CD-ROM
|
||||
- Open dreamsdk shell
|
||||
- type `cd dca3-game/miami` (and press enter)
|
||||
- type `make FOR_DISC=1 cdi-prebuilt` (and press enter)
|
||||
- This should take a while (5-15 mins)
|
||||
- Due to an issue with dreamsdk, this won't fully complete the first time
|
||||
- type `make FOR_DISC=1 cdi-prebuilt` (and press enter)
|
||||
- It will continue where it left off before
|
||||
- It should run to completion now and show "*** Repack Completed Successfully ***"
|
||||
- type `explorer .` (and press enter)
|
||||
- The dreamcast folder should open up, and it should contain dca-miami.cdi for you (~700 or ~550 megs)
|
||||
|
||||
## Running on emulators
|
||||
You must have the 'trails' options turned off from the graphics settings, or a white overlay may appear over the 3d render
|
||||
|
||||
## Fine tuning settings
|
||||
Two experimental modes, 24 bpp (640x480x24) and Anti Aliasing are provided in the Graphics settings.
|
||||
|
||||
- When using HDMI or VGA out, it is recommended to turn enable 24 bpp mode. Note that you also have to disable the 'trails' effect.
|
||||
- Anti Aliasing will work with or without trails, however trails enabled will have a bigger performance hit in that mode.
|
||||
|
||||
Enabling any of those modes may result in some missing geometry under heavy scenes (more likely with AA mode).
|
||||
They can also be combined.
|
||||
|
||||
## How to report issues
|
||||
- Take a photo of your tv/monitor and vmu
|
||||
- open a ticket via https://gitlab.com/skmp/dca3-game/-/issues/new
|
||||
- state which elf you have used (eg, https://gitlab.com/skmp/dca3-game/-/jobs/8725216645)
|
||||
- write something descriptive of what is/went wrong
|
||||
|
||||
## License
|
||||
|
||||
27
autoconf/LICENSE.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
Copyright (c) 2016 Blizzard Entertainment and individual 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:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. 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.
|
||||
|
||||
3. Neither the name of Premake nor the names of its 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.
|
||||
305
autoconf/api.lua
Normal file
@@ -0,0 +1,305 @@
|
||||
---
|
||||
-- Autoconfiguration.
|
||||
-- Copyright (c) 2016 Blizzard Entertainment
|
||||
-- Enhanced by re3
|
||||
---
|
||||
local p = premake
|
||||
local autoconf = p.modules.autoconf
|
||||
autoconf.cache = {}
|
||||
autoconf.parameters = ""
|
||||
|
||||
|
||||
---
|
||||
-- register autoconfigure api.
|
||||
---
|
||||
p.api.register {
|
||||
name = "autoconfigure",
|
||||
scope = "config",
|
||||
kind = "table"
|
||||
}
|
||||
|
||||
---
|
||||
-- Check for a particular include file.
|
||||
--
|
||||
-- @cfg : Current config.
|
||||
-- @variable : The variable to store the result, such as 'HAVE_STDINT_H'.
|
||||
-- @filename : The header file to check for.
|
||||
---
|
||||
function check_include(cfg, variable, filename)
|
||||
local res = autoconf.cache_compile(cfg, variable, function ()
|
||||
p.outln('#include <' .. filename .. '>')
|
||||
p.outln('int main(void) { return 0; }')
|
||||
end)
|
||||
|
||||
if res.value then
|
||||
autoconf.set_value(cfg, variable, 1)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Check for size of a particular type.
|
||||
--
|
||||
-- @cfg : Current config.
|
||||
-- @variable : The variable to use, such as 'SIZEOF_SIZE_T', this method will also add "'HAVE_' .. variable".
|
||||
-- @type : The type to check.
|
||||
-- @headers : An optional array of header files to include.
|
||||
-- @defines : An optional array of defines to define.
|
||||
---
|
||||
function check_type_size(cfg, variable, type, headers, defines)
|
||||
check_include(cfg, 'HAVE_SYS_TYPES_H', 'sys/types.h')
|
||||
check_include(cfg, 'HAVE_STDINT_H', 'stdint.h')
|
||||
check_include(cfg, 'HAVE_STDDEF_H', 'stddef.h')
|
||||
|
||||
local res = autoconf.cache_compile(cfg, variable .. cfg.platform,
|
||||
function ()
|
||||
if cfg.autoconf['HAVE_SYS_TYPES_H'] then
|
||||
p.outln('#include <sys/types.h>')
|
||||
end
|
||||
|
||||
if cfg.autoconf['HAVE_STDINT_H'] then
|
||||
p.outln('#include <stdint.h>')
|
||||
end
|
||||
|
||||
if cfg.autoconf['HAVE_STDDEF_H'] then
|
||||
p.outln('#include <stddef.h>')
|
||||
end
|
||||
|
||||
autoconf.include_defines(defines)
|
||||
autoconf.include_headers(headers)
|
||||
p.outln("")
|
||||
p.outln("#define SIZE (sizeof(" .. type .. "))")
|
||||
p.outln("char info_size[] = {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',")
|
||||
p.outln(" ('0' + ((SIZE / 10000)%10)),")
|
||||
p.outln(" ('0' + ((SIZE / 1000)%10)),")
|
||||
p.outln(" ('0' + ((SIZE / 100)%10)),")
|
||||
p.outln(" ('0' + ((SIZE / 10)%10)),")
|
||||
p.outln(" ('0' + (SIZE %10)),")
|
||||
p.outln(" ']', '\\0'};")
|
||||
p.outln("")
|
||||
p.outln("int main(int argc, char *argv[]) {")
|
||||
p.outln(" int require = 0;")
|
||||
p.outln(" require += info_size[argc];")
|
||||
p.outln(" (void)argv;")
|
||||
p.outln(" return require;")
|
||||
p.outln("}")
|
||||
end,
|
||||
function (e)
|
||||
-- if the compile step succeeded, we should have a binary with 'INFO:size[*****]'
|
||||
-- somewhere in there.
|
||||
local content = io.readfile(e.binary)
|
||||
if content then
|
||||
local size = string.find(content, 'INFO:size')
|
||||
if size then
|
||||
e.size = tonumber(string.sub(content, size+10, size+14))
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
if res.size then
|
||||
autoconf.set_value(cfg, 'HAVE_' .. variable, 1)
|
||||
autoconf.set_value(cfg, variable, res.size)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Check if the given struct or class has the specified member variable
|
||||
--
|
||||
-- @cfg : current config.
|
||||
-- @variable : variable to store the result.
|
||||
-- @type : the name of the struct or class you are interested in
|
||||
-- @member : the member which existence you want to check
|
||||
-- @headers : an optional array of header files to include.
|
||||
-- @defines : An optional array of defines to define.
|
||||
---
|
||||
function check_struct_has_member(cfg, variable, type, member, headers, defines)
|
||||
local res = autoconf.cache_compile(cfg, variable, function ()
|
||||
autoconf.include_defines(defines)
|
||||
autoconf.include_headers(headers)
|
||||
p.outln('int main(void) {')
|
||||
p.outln(' (void)sizeof(((' .. type .. '*)0)->' .. member ..');')
|
||||
p.outln(' return 0;')
|
||||
p.outln('}')
|
||||
end)
|
||||
|
||||
if res.value then
|
||||
autoconf.set_value(cfg, variable, 1)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Check if a symbol exists as a function, variable, or macro
|
||||
--
|
||||
-- @cfg : current config.
|
||||
-- @variable : variable to store the result.
|
||||
-- @symbol : The symbol to check for.
|
||||
-- @headers : an optional array of header files to include.
|
||||
-- @defines : An optional array of defines to define.
|
||||
---
|
||||
function check_symbol_exists(cfg, variable, symbol, headers, defines)
|
||||
local h = headers
|
||||
local res = autoconf.cache_compile(cfg, variable, function ()
|
||||
autoconf.include_defines(defines)
|
||||
autoconf.include_headers(headers)
|
||||
p.outln('int main(int argc, char** argv) {')
|
||||
p.outln(' (void)argv;')
|
||||
p.outln('#ifndef ' .. symbol)
|
||||
p.outln(' return ((int*)(&' .. symbol .. '))[argc];')
|
||||
p.outln('#else')
|
||||
p.outln(' (void)argc;')
|
||||
p.outln(' return 0;')
|
||||
p.outln('#endif')
|
||||
p.outln('}')
|
||||
end)
|
||||
|
||||
if res.value then
|
||||
autoconf.set_value(cfg, variable, 1)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- try compiling a piece of c/c++
|
||||
---
|
||||
function autoconf.try_compile(cfg, cpp)
|
||||
local ts = autoconf.toolset(cfg)
|
||||
if ts then
|
||||
return ts.try_compile(cfg, cpp, autoconf.parameters)
|
||||
else
|
||||
p.warnOnce('autoconf', 'no toolset found, autoconf always failing.')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function autoconf.cache_compile(cfg, entry, func, post)
|
||||
if not autoconf.cache[entry] then
|
||||
local cpp = p.capture(func)
|
||||
local res = autoconf.try_compile(cfg, cpp)
|
||||
if res then
|
||||
local e = { binary = res, value = true }
|
||||
if post then
|
||||
post(e)
|
||||
end
|
||||
autoconf.cache[entry] = e
|
||||
else
|
||||
autoconf.cache[entry] = { }
|
||||
end
|
||||
end
|
||||
return autoconf.cache[entry]
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- get the current configured toolset, or the default.
|
||||
---
|
||||
function autoconf.toolset(cfg)
|
||||
local ts = p.config.toolset(cfg)
|
||||
if not ts then
|
||||
local tools = {
|
||||
-- Actually we always return nil on msc. see msc.lua
|
||||
['vs2010'] = p.tools.msc,
|
||||
['vs2012'] = p.tools.msc,
|
||||
['vs2013'] = p.tools.msc,
|
||||
['vs2015'] = p.tools.msc,
|
||||
['vs2017'] = p.tools.msc,
|
||||
['vs2019'] = p.tools.msc,
|
||||
['gmake'] = premake.tools.gcc,
|
||||
['gmake2'] = premake.tools.gcc,
|
||||
['codelite'] = premake.tools.gcc,
|
||||
['xcode4'] = premake.tools.clang,
|
||||
}
|
||||
ts = tools[_ACTION]
|
||||
end
|
||||
return ts
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- store the value of the variable in the configuration
|
||||
---
|
||||
function autoconf.set_value(cfg, variable, value)
|
||||
cfg.autoconf[variable] = value
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- write the cfg.autoconf table to the file
|
||||
---
|
||||
function autoconf.writefile(cfg, filename)
|
||||
if cfg.autoconf then
|
||||
local file = io.open(filename, "w+")
|
||||
for variable, value in pairs(cfg.autoconf) do
|
||||
file:write('#define ' .. variable .. ' ' .. tostring(value) .. (_eol or '\n'))
|
||||
end
|
||||
file:close()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Utility method to add a table of headers.
|
||||
---
|
||||
function autoconf.include_headers(headers)
|
||||
if headers ~= nil then
|
||||
if type(headers) == "table" then
|
||||
for _, v in ipairs(headers) do
|
||||
p.outln('#include <' .. v .. '>')
|
||||
end
|
||||
else
|
||||
p.outln('#include <' .. headers .. '>')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function autoconf.include_defines(defines)
|
||||
if defines ~= nil then
|
||||
if type(defines) == "table" then
|
||||
for _, v in ipairs(defines) do
|
||||
p.outln('#define ' .. v)
|
||||
end
|
||||
else
|
||||
p.outln('#define ' .. defines)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---
|
||||
-- attach ourselfs to the running action.
|
||||
---
|
||||
p.override(p.action, 'call', function (base, name)
|
||||
local a = p.action.get(name)
|
||||
|
||||
-- store the old callback.
|
||||
local onBaseProject = a.onProject or a.onproject
|
||||
|
||||
-- override it with our own.
|
||||
a.onProject = function(prj)
|
||||
-- go through each configuration, and call the setup configuration methods.
|
||||
for cfg in p.project.eachconfig(prj) do
|
||||
cfg.autoconf = {}
|
||||
if cfg.autoconfigure then
|
||||
verbosef('Running auto config steps for "%s/%s".', prj.name, cfg.name)
|
||||
for file, func in pairs(cfg.autoconfigure) do
|
||||
func(cfg)
|
||||
|
||||
if not (file ~= "dontWrite") then
|
||||
os.mkdir(cfg.objdir)
|
||||
local filename = path.join(cfg.objdir, file)
|
||||
autoconf.writefile(cfg, filename)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- then call the old onProject.
|
||||
if onBaseProject then
|
||||
onBaseProject(prj)
|
||||
end
|
||||
end
|
||||
|
||||
-- now call the original action.call methods
|
||||
base(name)
|
||||
end)
|
||||
18
autoconf/autoconf.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
-- Autoconfiguration.
|
||||
-- Copyright (c) 2016 Blizzard Entertainment
|
||||
---
|
||||
local p = premake
|
||||
|
||||
if not premake.modules.autoconf then
|
||||
p.modules.autoconf = {}
|
||||
p.modules.autoconf._VERSION = p._VERSION
|
||||
|
||||
verbosef('Loading autoconf module...')
|
||||
include('api.lua')
|
||||
include('msc.lua')
|
||||
include('clang.lua')
|
||||
include('gcc.lua')
|
||||
end
|
||||
|
||||
return p.modules.autoconf
|
||||
27
autoconf/clang.lua
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
-- Autoconfiguration.
|
||||
-- Copyright (c) 2016 Blizzard Entertainment
|
||||
---
|
||||
local p = premake
|
||||
local clang = p.tools.clang
|
||||
|
||||
function clang.try_compile(cfg, text, parameters)
|
||||
-- write the text to a temporary file.
|
||||
local cppFile = path.join(cfg.objdir, "temp.cpp")
|
||||
if not io.writefile(cppFile, text) then
|
||||
return nil
|
||||
end
|
||||
|
||||
if parameters == nil then
|
||||
parameters = ""
|
||||
end
|
||||
|
||||
local outFile = path.join(cfg.objdir, "temp.out")
|
||||
|
||||
-- compile that text file.
|
||||
if os.execute('clang "' .. cppFile .. '" ' .. parameters .. ' -o "' .. outFile ..'" &> /dev/null') then
|
||||
return outFile
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
27
autoconf/gcc.lua
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
-- Autoconfiguration.
|
||||
-- Copyright (c) 2016 Blizzard Entertainment
|
||||
---
|
||||
local p = premake
|
||||
local gcc = p.tools.gcc
|
||||
|
||||
function gcc.try_compile(cfg, text, parameters)
|
||||
-- write the text to a temporary file.
|
||||
local cppFile = path.join(cfg.objdir, "temp.cpp")
|
||||
if not io.writefile(cppFile, text) then
|
||||
return nil
|
||||
end
|
||||
|
||||
if parameters == nil then
|
||||
parameters = ""
|
||||
end
|
||||
|
||||
local outFile = path.join(cfg.objdir, "temp.out")
|
||||
|
||||
-- compile that text file.
|
||||
if os.execute('gcc "' .. cppFile .. '" ' .. parameters .. ' -o "' .. outFile ..'" &> /dev/null') then
|
||||
return outFile
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
62
autoconf/msc.lua
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
-- Autoconfiguration.
|
||||
-- Copyright (c) 2016 Blizzard Entertainment
|
||||
---
|
||||
local p = premake
|
||||
local msc = p.tools.msc
|
||||
|
||||
-- "parameters" is unused, matter of fact this file is unused - re3
|
||||
function msc.try_compile(cfg, text, parameters)
|
||||
|
||||
return nil
|
||||
--[[
|
||||
-- write the text to a temporary file.
|
||||
local cppFile = path.join(cfg.objdir, "temp.cpp")
|
||||
if not io.writefile(cppFile, text) then
|
||||
return nil
|
||||
end
|
||||
|
||||
-- write out a batch file.
|
||||
local batch = p.capture(function ()
|
||||
p.outln('@echo off')
|
||||
p.outln('SET mypath=%~dp0')
|
||||
p.outln('pushd %mypath%')
|
||||
|
||||
local map = {
|
||||
vs2010 = 'VS100COMNTOOLS',
|
||||
vs2012 = 'VS110COMNTOOLS',
|
||||
vs2013 = 'VS120COMNTOOLS',
|
||||
vs2015 = 'VS140COMNTOOLS',
|
||||
vs2017 = 'VS141COMNTOOLS',
|
||||
vs2019 = 'VS142COMNTOOLS',
|
||||
}
|
||||
|
||||
local a = map[_ACTION]
|
||||
if a then
|
||||
a = path.translate(os.getenv(a), '/')
|
||||
a = path.join(a, '../../VC/vcvarsall.bat')
|
||||
|
||||
if cfg.platform == 'x86' then
|
||||
p.outln('call "' .. a .. '" > NUL')
|
||||
else
|
||||
p.outln('call "' .. a .. '" amd64 > NUL')
|
||||
end
|
||||
|
||||
p.outln('cl.exe /nologo temp.cpp > NUL')
|
||||
else
|
||||
error('Unsupported Visual Studio version: ' .. _ACTION)
|
||||
end
|
||||
end)
|
||||
|
||||
local batchFile = path.join(cfg.objdir, "compile.bat")
|
||||
if not io.writefile(batchFile, batch) then
|
||||
return nil
|
||||
end
|
||||
|
||||
if os.execute(batchFile) then
|
||||
return path.join(cfg.objdir, "temp.exe")
|
||||
else
|
||||
return nil
|
||||
end
|
||||
--]]
|
||||
end
|
||||
34
cmake/FindMilesSDK.cmake
Normal file
@@ -0,0 +1,34 @@
|
||||
# - Find Miles SDK
|
||||
# Find the Miles SDK header + import library
|
||||
#
|
||||
# MilesSDK_INCLUDE_DIR - Where to find mss.h
|
||||
# MilesSDK_LIBRARIES - List of libraries when using MilesSDK.
|
||||
# MilesSDK_FOUND - True if Miles SDK found.
|
||||
# MilesSDK::MilesSDK - Imported library of Miles SDK
|
||||
|
||||
find_path(MilesSDK_INCLUDE_DIR mss.h
|
||||
PATHS "${MilesSDK_DIR}"
|
||||
PATH_SUFFIXES include
|
||||
)
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_miles_sdk_libname mss64)
|
||||
else()
|
||||
set(_miles_sdk_libname mss32)
|
||||
endif()
|
||||
|
||||
find_library(MilesSDK_LIBRARIES NAMES ${_miles_sdk_libname}
|
||||
PATHS "${MilesSDK_DIR}"
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MilesSDK DEFAULT_MSG MilesSDK_LIBRARIES MilesSDK_INCLUDE_DIR)
|
||||
|
||||
if(NOT TARGET MilesSDK::MilesSDK)
|
||||
add_library(MilesSDK::MilesSDK UNKNOWN IMPORTED)
|
||||
set_target_properties(MilesSDK::MilesSDK PROPERTIES
|
||||
IMPORTED_LOCATION "${MilesSDK_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${MilesSDK_INCLUDE_DIR}"
|
||||
)
|
||||
endif()
|
||||
67
cmake/FindSndFile.cmake
Normal file
@@ -0,0 +1,67 @@
|
||||
# Found on http://hg.kvats.net
|
||||
#
|
||||
# - Try to find libsndfile
|
||||
#
|
||||
# Once done this will define
|
||||
#
|
||||
# SNDFILE_FOUND - system has libsndfile
|
||||
# SNDFILE_INCLUDE_DIRS - the libsndfile include directory
|
||||
# SNDFILE_LIBRARIES - Link these to use libsndfile
|
||||
# SNDFILE_CFLAGS - Compile options to use libsndfile
|
||||
# SndFile::SndFile - Imported library of libsndfile
|
||||
#
|
||||
# Copyright (C) 2006 Wengo
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the New
|
||||
# BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
#
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_search_module(PKG_SNDFILE "sndfile")
|
||||
endif()
|
||||
|
||||
find_path(SNDFILE_INCLUDE_DIR
|
||||
NAMES
|
||||
sndfile.h
|
||||
HINTS
|
||||
${PKG_SNDFILE_INCLUDE_DIRS}
|
||||
PATHS
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/local/include
|
||||
/sw/include
|
||||
)
|
||||
|
||||
find_library(SNDFILE_LIBRARY
|
||||
NAMES
|
||||
sndfile
|
||||
HINTS
|
||||
${PKG_SNDFILE_LIBRARIES}
|
||||
PATHS
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/local/lib
|
||||
/sw/lib
|
||||
)
|
||||
|
||||
set(SNDFILE_CFLAGS "${PKG_SNDFILE_CFLAGS_OTHER}" CACHE STRING "CFLAGS of libsndfile")
|
||||
|
||||
set(SNDFILE_INCLUDE_DIRS "${SNDFILE_INCLUDE_DIR}")
|
||||
set(SNDFILE_LIBRARIES "${SNDFILE_LIBRARY}")
|
||||
|
||||
if(SNDFILE_INCLUDE_DIRS AND SNDFILE_LIBRARIES)
|
||||
set(SNDFILE_FOUND TRUE)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(SndFile DEFAULT_MSG SNDFILE_INCLUDE_DIRS SNDFILE_LIBRARIES)
|
||||
|
||||
if(NOT TARGET SndFile::SndFile)
|
||||
add_library(__SndFile INTERFACE)
|
||||
target_compile_options(__SndFile INTERFACE ${SNDFILE_CFLAGS})
|
||||
target_include_directories(__SndFile INTERFACE ${SNDFILE_INCLUDE_DIRS})
|
||||
target_link_libraries(__SndFile INTERFACE ${SNDFILE_LIBRARIES})
|
||||
add_library(SndFile::SndFile ALIAS __SndFile)
|
||||
endif()
|
||||
38
cmake/Findmpg123.cmake
Normal file
@@ -0,0 +1,38 @@
|
||||
# - Find mpg123
|
||||
# Find the native mpg123 includes and library
|
||||
#
|
||||
# mpg123_INCLUDE_DIR - Where to find mpg123.h
|
||||
# mpg123_LIBRARIES - List of libraries when using mpg123.
|
||||
# mpg123_CFLAGS - Compile options to use mpg123
|
||||
# mpg123_FOUND - True if mpg123 found.
|
||||
# MPG123::libmpg123 - Imported library of libmpg123
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_search_module(PKG_MPG123 mpg123)
|
||||
endif()
|
||||
|
||||
find_path(mpg123_INCLUDE_DIR mpg123.h
|
||||
HINTS ${PKG_MPG123_INCLUDE_DIRS}
|
||||
PATHS "${mpg123_DIR}"
|
||||
PATH_SUFFIXES include
|
||||
)
|
||||
|
||||
find_library(mpg123_LIBRARIES NAMES mpg123 mpg123-0 libmpg123-0
|
||||
HINTS ${PKG_MPG123_LIBRARIES}
|
||||
PATHS "${mpg123_DIR}"
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
set(mpg123_CFLAGS "${PKG_MPG123_CFLAGS_OTHER}" CACHE STRING "CFLAGS of mpg123")
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(mpg123 DEFAULT_MSG mpg123_LIBRARIES mpg123_INCLUDE_DIR)
|
||||
|
||||
if(NOT TARGET MPG123::libmpg123)
|
||||
add_library(__libmpg123 INTERFACE)
|
||||
target_compile_options(__libmpg123 INTERFACE ${mpg123_CFLAGS})
|
||||
target_include_directories(__libmpg123 INTERFACE ${mpg123_INCLUDE_DIR})
|
||||
target_link_libraries(__libmpg123 INTERFACE ${mpg123_LIBRARIES})
|
||||
add_library(MPG123::libmpg123 ALIAS __libmpg123)
|
||||
endif()
|
||||
64
cmake/Findopusfile.cmake
Normal file
@@ -0,0 +1,64 @@
|
||||
# - Try to find opusfile
|
||||
#
|
||||
# Once done this will define
|
||||
#
|
||||
# OPUSFILE_FOUND - system has opusfile
|
||||
# OPUSFILE_INCLUDE_DIRS - the opusfile include directories
|
||||
# OPUSFILE_LIBRARIES - Link these to use opusfile
|
||||
# OPUSFILE_CFLAGS - Compile options to use opusfile
|
||||
# opusfile::opusfile - Imported library of opusfile
|
||||
#
|
||||
|
||||
# FIXME: opusfile does not ship an official opusfile cmake script,
|
||||
# rename this file/variables/target when/if it has.
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_search_module(PKG_OPUSFILE "opusfile")
|
||||
endif()
|
||||
|
||||
find_path(OPUSFILE_INCLUDE_DIR
|
||||
NAMES
|
||||
opusfile.h
|
||||
PATH_SUFFIXES
|
||||
opusfile
|
||||
HINTS
|
||||
${PKG_OPUSFILE_INCLUDE_DIRS}
|
||||
PATHS
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/local/include
|
||||
/sw/include
|
||||
)
|
||||
|
||||
find_library(OPUSFILE_LIBRARY
|
||||
NAMES
|
||||
opusfile
|
||||
HINTS
|
||||
${PKG_OPUSFILE_LIBRARIES}
|
||||
PATHS
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/local/lib
|
||||
/sw/lib
|
||||
)
|
||||
|
||||
set(OPUSFILE_CFLAGS "${PKG_OPUSFILE_CFLAGS_OTHER}" CACHE STRING "CFLAGS of opusfile")
|
||||
|
||||
set(OPUSFILE_INCLUDE_DIRS "${OPUSFILE_INCLUDE_DIR}")
|
||||
set(OPUSFILE_LIBRARIES "${OPUSFILE_LIBRARY}")
|
||||
|
||||
if (OPUSFILE_INCLUDE_DIRS AND OPUSFILE_LIBRARIES)
|
||||
set(OPUSFILE_FOUND TRUE)
|
||||
endif (OPUSFILE_INCLUDE_DIRS AND OPUSFILE_LIBRARIES)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(opusfile DEFAULT_MSG OPUSFILE_INCLUDE_DIRS OPUSFILE_LIBRARIES)
|
||||
|
||||
if(NOT TARGET opusfile::opusfile)
|
||||
add_library(__opusfile INTERFACE)
|
||||
target_compile_options(__opusfile INTERFACE ${OPUSFILE_CFLAGS})
|
||||
target_include_directories(__opusfile INTERFACE ${OPUSFILE_INCLUDE_DIRS})
|
||||
target_link_libraries(__opusfile INTERFACE ${OPUSFILE_LIBRARIES})
|
||||
add_library(opusfile::opusfile ALIAS __opusfile)
|
||||
endif()
|
||||
284
cmake/GetGitRevisionDescription.cmake
Normal file
@@ -0,0 +1,284 @@
|
||||
# - Returns a version string from Git
|
||||
#
|
||||
# These functions force a re-configure on each git commit so that you can
|
||||
# trust the values of the variables in your build system.
|
||||
#
|
||||
# get_git_head_revision(<refspecvar> <hashvar> [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR])
|
||||
#
|
||||
# Returns the refspec and sha hash of the current head revision
|
||||
#
|
||||
# git_describe(<var> [<additional arguments to git describe> ...])
|
||||
#
|
||||
# Returns the results of git describe on the source tree, and adjusting
|
||||
# the output so that it tests false if an error occurs.
|
||||
#
|
||||
# git_describe_working_tree(<var> [<additional arguments to git describe> ...])
|
||||
#
|
||||
# Returns the results of git describe on the working tree (--dirty option),
|
||||
# and adjusting the output so that it tests false if an error occurs.
|
||||
#
|
||||
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
|
||||
#
|
||||
# Returns the results of git describe --exact-match on the source tree,
|
||||
# and adjusting the output so that it tests false if there was no exact
|
||||
# matching tag.
|
||||
#
|
||||
# git_local_changes(<var>)
|
||||
#
|
||||
# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes.
|
||||
# Uses the return code of "git diff-index --quiet HEAD --".
|
||||
# Does not regard untracked files.
|
||||
#
|
||||
# Requires CMake 2.6 or newer (uses the 'function' command)
|
||||
#
|
||||
# Original Author:
|
||||
# 2009-2020 Ryan Pavlik <ryan.pavlik@gmail.com> <abiryan@ryand.net>
|
||||
# http://academic.cleardefinition.com
|
||||
#
|
||||
# Copyright 2009-2013, Iowa State University.
|
||||
# Copyright 2013-2020, Ryan Pavlik
|
||||
# Copyright 2013-2020, Contributors
|
||||
# SPDX-License-Identifier: BSL-1.0
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
if(__get_git_revision_description)
|
||||
return()
|
||||
endif()
|
||||
set(__get_git_revision_description YES)
|
||||
|
||||
# We must run the following at "include" time, not at function call time,
|
||||
# to find the path to this module rather than the path to a calling list file
|
||||
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
|
||||
|
||||
# Function _git_find_closest_git_dir finds the next closest .git directory
|
||||
# that is part of any directory in the path defined by _start_dir.
|
||||
# The result is returned in the parent scope variable whose name is passed
|
||||
# as variable _git_dir_var. If no .git directory can be found, the
|
||||
# function returns an empty string via _git_dir_var.
|
||||
#
|
||||
# Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and
|
||||
# neither foo nor bar contain a file/directory .git. This wil return
|
||||
# C:/bla/.git
|
||||
#
|
||||
function(_git_find_closest_git_dir _start_dir _git_dir_var)
|
||||
set(cur_dir "${_start_dir}")
|
||||
set(git_dir "${_start_dir}/.git")
|
||||
while(NOT EXISTS "${git_dir}")
|
||||
# .git dir not found, search parent directories
|
||||
set(git_previous_parent "${cur_dir}")
|
||||
get_filename_component(cur_dir ${cur_dir} DIRECTORY)
|
||||
if(cur_dir STREQUAL git_previous_parent)
|
||||
# We have reached the root directory, we are not in git
|
||||
set(${_git_dir_var}
|
||||
""
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
set(git_dir "${cur_dir}/.git")
|
||||
endwhile()
|
||||
set(${_git_dir_var}
|
||||
"${git_dir}"
|
||||
PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(get_git_head_revision _refspecvar _hashvar)
|
||||
_git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR)
|
||||
|
||||
if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR")
|
||||
set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE)
|
||||
else()
|
||||
set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE)
|
||||
endif()
|
||||
if(NOT "${GIT_DIR}" STREQUAL "")
|
||||
file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}"
|
||||
"${GIT_DIR}")
|
||||
if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
|
||||
# We've gone above the CMake root dir.
|
||||
set(GIT_DIR "")
|
||||
endif()
|
||||
endif()
|
||||
if("${GIT_DIR}" STREQUAL "")
|
||||
set(${_refspecvar}
|
||||
"GITDIR-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
set(${_hashvar}
|
||||
"GITDIR-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check if the current source dir is a git submodule or a worktree.
|
||||
# In both cases .git is a file instead of a directory.
|
||||
#
|
||||
if(NOT IS_DIRECTORY ${GIT_DIR})
|
||||
# The following git command will return a non empty string that
|
||||
# points to the super project working tree if the current
|
||||
# source dir is inside a git submodule.
|
||||
# Otherwise the command will return an empty string.
|
||||
#
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" rev-parse
|
||||
--show-superproject-working-tree
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
OUTPUT_VARIABLE out
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(NOT "${out}" STREQUAL "")
|
||||
# If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule
|
||||
file(READ ${GIT_DIR} submodule)
|
||||
string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE
|
||||
${submodule})
|
||||
string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE)
|
||||
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
|
||||
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE}
|
||||
ABSOLUTE)
|
||||
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
|
||||
else()
|
||||
# GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree
|
||||
file(READ ${GIT_DIR} worktree_ref)
|
||||
# The .git directory contains a path to the worktree information directory
|
||||
# inside the parent git repo of the worktree.
|
||||
#
|
||||
string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir
|
||||
${worktree_ref})
|
||||
string(STRIP ${git_worktree_dir} git_worktree_dir)
|
||||
_git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR)
|
||||
set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD")
|
||||
endif()
|
||||
else()
|
||||
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
|
||||
endif()
|
||||
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
|
||||
if(NOT EXISTS "${GIT_DATA}")
|
||||
file(MAKE_DIRECTORY "${GIT_DATA}")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${HEAD_SOURCE_FILE}")
|
||||
return()
|
||||
endif()
|
||||
set(HEAD_FILE "${GIT_DATA}/HEAD")
|
||||
configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY)
|
||||
|
||||
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
|
||||
"${GIT_DATA}/grabRef.cmake" @ONLY)
|
||||
include("${GIT_DATA}/grabRef.cmake")
|
||||
|
||||
set(${_refspecvar}
|
||||
"${HEAD_REF}"
|
||||
PARENT_SCOPE)
|
||||
set(${_hashvar}
|
||||
"${HEAD_HASH}"
|
||||
PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(git_describe _var)
|
||||
if(NOT GIT_FOUND)
|
||||
find_package(Git QUIET)
|
||||
endif()
|
||||
get_git_head_revision(refspec hash)
|
||||
if(NOT GIT_FOUND)
|
||||
set(${_var}
|
||||
"GIT-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
if(NOT hash)
|
||||
set(${_var}
|
||||
"HEAD-HASH-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# TODO sanitize
|
||||
#if((${ARGN}" MATCHES "&&") OR
|
||||
# (ARGN MATCHES "||") OR
|
||||
# (ARGN MATCHES "\\;"))
|
||||
# message("Please report the following error to the project!")
|
||||
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
|
||||
#endif()
|
||||
|
||||
#message(STATUS "Arguments to execute_process: ${ARGN}")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
RESULT_VARIABLE res
|
||||
OUTPUT_VARIABLE out
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(NOT res EQUAL 0)
|
||||
set(out "${out}-${res}-NOTFOUND")
|
||||
endif()
|
||||
|
||||
set(${_var}
|
||||
"${out}"
|
||||
PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(git_describe_working_tree _var)
|
||||
if(NOT GIT_FOUND)
|
||||
find_package(Git QUIET)
|
||||
endif()
|
||||
if(NOT GIT_FOUND)
|
||||
set(${_var}
|
||||
"GIT-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
RESULT_VARIABLE res
|
||||
OUTPUT_VARIABLE out
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(NOT res EQUAL 0)
|
||||
set(out "${out}-${res}-NOTFOUND")
|
||||
endif()
|
||||
|
||||
set(${_var}
|
||||
"${out}"
|
||||
PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(git_get_exact_tag _var)
|
||||
git_describe(out --exact-match ${ARGN})
|
||||
set(${_var}
|
||||
"${out}"
|
||||
PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(git_local_changes _var)
|
||||
if(NOT GIT_FOUND)
|
||||
find_package(Git QUIET)
|
||||
endif()
|
||||
get_git_head_revision(refspec hash)
|
||||
if(NOT GIT_FOUND)
|
||||
set(${_var}
|
||||
"GIT-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
if(NOT hash)
|
||||
set(${_var}
|
||||
"HEAD-HASH-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD --
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
RESULT_VARIABLE res
|
||||
OUTPUT_VARIABLE out
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(res EQUAL 0)
|
||||
set(${_var}
|
||||
"CLEAN"
|
||||
PARENT_SCOPE)
|
||||
else()
|
||||
set(${_var}
|
||||
"DIRTY"
|
||||
PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
43
cmake/GetGitRevisionDescription.cmake.in
Normal file
@@ -0,0 +1,43 @@
|
||||
#
|
||||
# Internal file for GetGitRevisionDescription.cmake
|
||||
#
|
||||
# Requires CMake 2.6 or newer (uses the 'function' command)
|
||||
#
|
||||
# Original Author:
|
||||
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
||||
# http://academic.cleardefinition.com
|
||||
# Iowa State University HCI Graduate Program/VRAC
|
||||
#
|
||||
# Copyright 2009-2012, Iowa State University
|
||||
# Copyright 2011-2015, Contributors
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt)
|
||||
# SPDX-License-Identifier: BSL-1.0
|
||||
|
||||
set(HEAD_HASH)
|
||||
|
||||
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
|
||||
|
||||
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
|
||||
if(HEAD_CONTENTS MATCHES "ref")
|
||||
# named branch
|
||||
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
|
||||
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
|
||||
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
|
||||
else()
|
||||
configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
|
||||
file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
|
||||
if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
|
||||
set(HEAD_HASH "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
# detached HEAD
|
||||
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
|
||||
endif()
|
||||
|
||||
if(NOT HEAD_HASH)
|
||||
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
|
||||
string(STRIP "${HEAD_HASH}" HEAD_HASH)
|
||||
endif()
|
||||
38
cmake/nx/NXFunctions.cmake
Normal file
@@ -0,0 +1,38 @@
|
||||
if(NOT COMMAND nx_generate_nacp)
|
||||
message(FATAL_ERROR "The `nx_generate_nacp` cmake command is not available. Please use an appropriate Nintendo Switch toolchain.")
|
||||
endif()
|
||||
|
||||
if(NOT COMMAND nx_create_nro)
|
||||
message(FATAL_ERROR "The `nx_create_nro` cmake command is not available. Please use an appropriate Nintendo Switch toolchain.")
|
||||
endif()
|
||||
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
|
||||
|
||||
function(re3_platform_target TARGET)
|
||||
cmake_parse_arguments(RPT "INSTALL" "" "" ${ARGN})
|
||||
|
||||
get_target_property(TARGET_TYPE "${TARGET}" TYPE)
|
||||
if(TARGET_TYPE STREQUAL "EXECUTABLE")
|
||||
nx_generate_nacp(${TARGET}.nacp
|
||||
NAME "${TARGET}"
|
||||
AUTHOR "${${PROJECT}_AUTHOR}"
|
||||
VERSION "1.0.0-${GIT_SHA1}"
|
||||
)
|
||||
|
||||
nx_create_nro(${TARGET}
|
||||
NACP ${TARGET}.nacp
|
||||
ICON "${PROJECT_SOURCE_DIR}/res/images/logo_256.jpg"
|
||||
)
|
||||
|
||||
if(${PROJECT}_INSTALL AND RPT_INSTALL)
|
||||
get_target_property(TARGET_OUTPUT_NAME ${TARGET} OUTPUT_NAME)
|
||||
if(NOT TARGET_OUTPUT_NAME)
|
||||
set(TARGET_OUTPUT_NAME "${TARGET}")
|
||||
endif()
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_OUTPUT_NAME}.nro"
|
||||
DESTINATION "."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
0
codewarrior/Release/gta3.txt
Normal file
15378
codewarrior/re3.mcp.xml
Normal file
135
conanfile.py
Normal file
@@ -0,0 +1,135 @@
|
||||
from conans import ConanFile, CMake, tools
|
||||
from conans.errors import ConanException, ConanInvalidConfiguration
|
||||
import os
|
||||
import shutil
|
||||
import textwrap
|
||||
|
||||
|
||||
class Re3Conan(ConanFile):
|
||||
name = "re3"
|
||||
version = "master"
|
||||
license = "???" # FIXME: https://github.com/GTAmodding/re3/issues/794
|
||||
settings = "os", "arch", "compiler", "build_type"
|
||||
generators = "cmake", "cmake_find_package"
|
||||
options = {
|
||||
"audio": ["openal", "miles"],
|
||||
"with_libsndfile": [True, False],
|
||||
"with_opus": [True, False],
|
||||
}
|
||||
default_options = {
|
||||
"audio": "openal",
|
||||
"with_libsndfile": False,
|
||||
"with_opus": False,
|
||||
# "libsndfile:with_external_libs": False,
|
||||
# "mpg123:flexible_resampling": False,
|
||||
# "mpg123:network": False,
|
||||
# "mpg123:icy": False,
|
||||
# "mpg123:id3v2": False,
|
||||
# "mpg123:ieeefloat": False,
|
||||
# "mpg123:layer1": False,
|
||||
# "mpg123:layer2": False,
|
||||
# "mpg123:layer3": False,
|
||||
# "mpg123:moreinfo": False,
|
||||
# "sdl2:vulkan": False,
|
||||
# "sdl2:opengl": True,
|
||||
# "sdl2:sdl2main": True,
|
||||
}
|
||||
no_copy_source = True
|
||||
|
||||
@property
|
||||
def _os_is_playstation2(self):
|
||||
try:
|
||||
return self.settings.os == "Playstation2"
|
||||
except ConanException:
|
||||
return False
|
||||
|
||||
def configure(self):
|
||||
if self.options.audio != "openal":
|
||||
self.options.with_libsndfile = False
|
||||
|
||||
def requirements(self):
|
||||
self.requires("librw/{}".format(self.version))
|
||||
self.requires("mpg123/1.26.4")
|
||||
if self.options.audio == "openal":
|
||||
self.requires("openal/1.21.0")
|
||||
elif self.options.audio == "miles":
|
||||
self.requires("miles-sdk/{}".format(self.version))
|
||||
if self.options.with_libsndfile:
|
||||
self.requires("libsndfile/1.0.30")
|
||||
if self.options.with_opus:
|
||||
self.requires("opusfile/0.12")
|
||||
|
||||
def export_sources(self):
|
||||
for d in ("cmake", "gamefiles", "src"):
|
||||
shutil.copytree(src=d, dst=os.path.join(self.export_sources_folder, d))
|
||||
self.copy("CMakeLists.txt")
|
||||
|
||||
def validate(self):
|
||||
if self.options["librw"].platform == "gl3" and self.options["librw"].gl3_gfxlib != "glfw":
|
||||
raise ConanInvalidConfiguration("Only `glfw` is supported as gl3_gfxlib.")
|
||||
#if not self.options.with_opus:
|
||||
# if not self.options["libsndfile"].with_external_libs:
|
||||
# raise ConanInvalidConfiguration("re3 with opus support requires a libsndfile built with external libs (=ogg/flac/opus/vorbis)")
|
||||
|
||||
@property
|
||||
def _re3_audio(self):
|
||||
return {
|
||||
"miles": "MSS",
|
||||
"openal": "OAL",
|
||||
}[str(self.options.audio)]
|
||||
|
||||
def build(self):
|
||||
if self.source_folder == self.build_folder:
|
||||
raise Exception("cannot build with source_folder == build_folder")
|
||||
try:
|
||||
os.unlink(os.path.join(self.install_folder, "Findlibrw.cmake"))
|
||||
tools.save("FindOpenAL.cmake",
|
||||
textwrap.dedent(
|
||||
"""
|
||||
set(OPENAL_FOUND ON)
|
||||
set(OPENAL_INCLUDE_DIR ${OpenAL_INCLUDE_DIRS})
|
||||
set(OPENAL_LIBRARY ${OpenAL_LIBRARIES})
|
||||
set(OPENAL_DEFINITIONS ${OpenAL_DEFINITIONS})
|
||||
"""), append=True)
|
||||
if self.options["librw"].platform == "gl3" and self.options["librw"].gl3_gfxlib == "glfw":
|
||||
tools.save("Findglfw3.cmake",
|
||||
textwrap.dedent(
|
||||
"""
|
||||
if(NOT TARGET glfw)
|
||||
message(STATUS "Creating glfw TARGET")
|
||||
add_library(glfw INTERFACE IMPORTED)
|
||||
set_target_properties(glfw PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES CONAN_PKG::glfw)
|
||||
endif()
|
||||
"""), append=True)
|
||||
tools.save("CMakeLists.txt",
|
||||
textwrap.dedent(
|
||||
"""
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(cmake_wrapper)
|
||||
|
||||
include("{}/conanbuildinfo.cmake")
|
||||
conan_basic_setup(TARGETS NO_OUTPUT_DIRS)
|
||||
|
||||
add_subdirectory("{}" re3)
|
||||
""").format(self.install_folder.replace("\\", "/"),
|
||||
self.source_folder.replace("\\", "/")))
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
cmake = CMake(self)
|
||||
cmake.definitions["RE3_AUDIO"] = self._re3_audio
|
||||
cmake.definitions["RE3_WITH_OPUS"] = self.options.with_opus
|
||||
cmake.definitions["RE3_INSTALL"] = True
|
||||
cmake.definitions["RE3_VENDORED_LIBRW"] = False
|
||||
env = {}
|
||||
if self._os_is_playstation2:
|
||||
cmake.definitions["CMAKE_TOOLCHAIN_FILE"] = self.deps_user_info["ps2dev-cmaketoolchain"].cmake_toolchain_file
|
||||
env["PS2SDK"] = self.deps_cpp_info["ps2dev-ps2sdk"].rootpath
|
||||
|
||||
with tools.environment_append(env):
|
||||
cmake.configure(source_folder=self.build_folder)
|
||||
cmake.build()
|
||||
|
||||
def package(self):
|
||||
cmake = CMake(self)
|
||||
cmake.install()
|
||||
@@ -4,11 +4,8 @@
|
||||
#
|
||||
|
||||
# Put the filename of the output binary here
|
||||
PROJECT_NAME = dca-miami
|
||||
TEAM_NAME ="the gang"
|
||||
DISC_SERIAL = DCA-MIAM
|
||||
RELEASE_DATE = 20250401
|
||||
TARGET ?= dca-miami.elf
|
||||
PROJECT_NAME = dca3
|
||||
TARGET ?= dca3.elf
|
||||
|
||||
HAVE_CDI4DC := $(shell which cdi4dc > /dev/null 2>&1 && echo "yes" || echo "no")
|
||||
IS_MAC := $(shell uname -s | grep -i "darwin" > /dev/null && echo "yes" || echo "no")
|
||||
@@ -16,10 +13,8 @@ IS_MAC := $(shell uname -s | grep -i "darwin" > /dev/null && echo "yes" || echo
|
||||
MOD_NAME?=
|
||||
|
||||
GTA_DIR?=../../miami
|
||||
GTA_GAMEFILES_LOOSE_DIR?=../gamefiles/miami
|
||||
GTA_MOD_DIR?=../../miami_mod$(MOD_NAME)
|
||||
GTA_MOD_IMG_DIR?=$(GTA_MOD_DIR)/img
|
||||
GTA_MOD_CUTS_DIR=$(GTA_MOD_DIR)/cuts
|
||||
GTA_MOD_SFX_DIR?=$(GTA_MOD_DIR)/sfx
|
||||
GTA_MOD_LOOSE_DIR?=$(GTA_MOD_DIR)/loose
|
||||
|
||||
@@ -30,9 +25,6 @@ REPACK_IMG_DC_DIR?=$(REPACK_DIR)/miami-img-dc
|
||||
REPACK_SFX_ORIG_DIR?=$(REPACK_DIR)/miami-sfx-orig
|
||||
REPACK_SFX_DC_DIR?=$(REPACK_DIR)/miami-sfx-dc
|
||||
REPACK_STREAM_DECODED_DIR?=$(REPACK_DIR)/miami-stream-decoded
|
||||
REPACK_STREAM_DEST_DIR=$(REPACK_GTA_DIR)/stream
|
||||
REPACK_CUTS_ORIG_DIR?=$(REPACK_DIR)/miami-cuts-orig
|
||||
REPACK_CUTS_DC_DIR?=$(REPACK_DIR)/miami-cuts-dc
|
||||
|
||||
LIBS :=
|
||||
TEXCONV_FLAGS :=
|
||||
@@ -46,9 +38,6 @@ MKDCDISC_PAD_OPTION=-N
|
||||
ifeq ($(FOR_DISC),1)
|
||||
AUDIO_STREAM_OPTION=-q
|
||||
MKDCDISC_PAD_OPTION=
|
||||
else ifeq ($(FOR_DISC),2)
|
||||
AUDIO_STREAM_OPTION=-m
|
||||
MKDCDISC_PAD_OPTION=
|
||||
endif
|
||||
|
||||
all: $(TARGET)
|
||||
@@ -56,8 +45,8 @@ all: $(TARGET)
|
||||
include common.mk
|
||||
|
||||
OBJS = $(RE3_OBJS) $(RW_OBJS) \
|
||||
../src/miami/audio/sampman_dc.o \
|
||||
../src/common/prof/profiler.o
|
||||
../miami/audio/sampman_dc.o \
|
||||
../src/prof/profiler.o
|
||||
|
||||
OBJS_TEXCONV = $(RW_OBJS:.o=.texconv.o)
|
||||
OBJS_TEXCONV += \
|
||||
@@ -71,23 +60,23 @@ OBJS_TEXCONV += \
|
||||
../vendor/koshle/hlepvr_irq.texconv.o \
|
||||
../vendor/koshle/hlematrix3d.texconv.o \
|
||||
../vendor/librw/src/dc/vq.texconv.o \
|
||||
../src/miami/fakerw/fake.texconv.o \
|
||||
../src/miami/skel/crossplatform.texconv.o \
|
||||
../src/miami/rw/TxdStore.texconv.o \
|
||||
../src/miami/rw/RwHelper.texconv.o \
|
||||
../src/tools/texconv.texconv.o \
|
||||
../miami/fakerw/fake.texconv.o \
|
||||
../miami/skel/crossplatform.texconv.o \
|
||||
../miami/rw/TxdStore.texconv.o \
|
||||
../miami/rw/RwHelper.texconv.o \
|
||||
texconv.texconv.o \
|
||||
../vendor/TriStripper/src/connectivity_graph.texconv.o \
|
||||
../vendor/TriStripper/src/policy.texconv.o \
|
||||
../vendor/TriStripper/src/tri_stripper.texconv.o \
|
||||
../src/miami/rw/VisibilityPlugins.texconv.o \
|
||||
../src/miami/rw/NodeName.texconv.o \
|
||||
../src/miami/animation/RpAnimBlend.texconv.o \
|
||||
../src/miami/animation/Bones.texconv.o \
|
||||
../src/miami/animation/AnimBlendAssociation.texconv.o \
|
||||
../src/miami/animation/AnimBlendNode.texconv.o \
|
||||
../src/miami/animation/AnimBlendClumpData.texconv.o \
|
||||
../src/miami/rw/MemoryMgr.texconv.o \
|
||||
../src/miami/math/Quaternion.texconv.o \
|
||||
../miami/rw/VisibilityPlugins.texconv.o \
|
||||
../miami/rw/NodeName.texconv.o \
|
||||
../miami/animation/RpAnimBlend.texconv.o \
|
||||
../miami/animation/Bones.texconv.o \
|
||||
../miami/animation/AnimBlendAssociation.texconv.o \
|
||||
../miami/animation/AnimBlendNode.texconv.o \
|
||||
../miami/animation/AnimBlendClumpData.texconv.o \
|
||||
../miami/rw/MemoryMgr.texconv.o \
|
||||
../miami/math/Quaternion.texconv.o \
|
||||
../vendor/librw/src/ps2-x/ps2.texconv.o \
|
||||
../vendor/librw/src/ps2-x/ps2device.texconv.o \
|
||||
../vendor/librw/src/ps2-x/ps2raster.texconv.o \
|
||||
@@ -104,22 +93,21 @@ OBJS_TEXCONV += \
|
||||
# to conserve RAM.
|
||||
OBJS_O3 = \
|
||||
../vendor/librw/src/dc/rwdc.o \
|
||||
../src/miami/core/World.o \
|
||||
../src/miami/collision/Collision.o \
|
||||
../src/miami/math/math.o \
|
||||
../src/miami/math/Matrix.o \
|
||||
../src/miami/math/Quaternion.o \
|
||||
../src/miami/math/Rect.o \
|
||||
../src/miami/math/Vector.o \
|
||||
../src/vendor/librw/src/base.o \
|
||||
../src/miami/renderer/Shadows.o
|
||||
../miami/core/World.o \
|
||||
../miami/collision/Collision.o \
|
||||
../miami/math/math.o \
|
||||
../miami/math/Matrix.o \
|
||||
../miami/math/Quaternion.o \
|
||||
../miami/math/Rect.o \
|
||||
../miami/math/Vector.o \
|
||||
../vendor/librw/src/base.o \
|
||||
../miami/renderer/Shadows.o
|
||||
|
||||
OBJS_NO_FAST_MATH = \
|
||||
../src/miami/core/Cam.o \
|
||||
../src/miami/core/Camera.o \
|
||||
../src/miami/vehicles/Bike.o \
|
||||
../src/miami/vehicles/Boat.o \
|
||||
../src/miami/renderer/Particle.o
|
||||
../miami/core/Cam.o \
|
||||
../miami/core/Camera.o \
|
||||
../miami/vehicles/Bike.o \
|
||||
../miami/renderer/Particle.o
|
||||
|
||||
KOS_CPPFLAGS += -fbuiltin -ffast-math -ffp-contract=fast \
|
||||
-mfsrra -mfsca
|
||||
@@ -137,20 +125,20 @@ CXXFLAGS += $(if $(WITH_32MB),-O3,-Os) \
|
||||
$(if $(WITH_PROF),-DWITH_PROF=\"$(WITH_PROF)\") \
|
||||
-MMD -MP -ffunction-sections -fdata-sections -ffast-math \
|
||||
-fmerge-all-constants -fomit-frame-pointer -ml -std=gnu++20 \
|
||||
-fno-exceptions -fno-rtti -fipa-pta -fno-PIC -Wno-write-strings \
|
||||
-fno-exceptions -fno-rtti -fipa-pta -Wno-write-strings \
|
||||
-Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion \
|
||||
-Wno-multichar -Wno-unused-value -Wno-char-subscripts -Wno-reorder \
|
||||
-Wno-unused-function -Wno-class-memaccess -fno-permissive \
|
||||
-fno-asynchronous-unwind-tables -fno-enforce-eh-specs -fno-non-call-exceptions \
|
||||
-fno-strict-aliasing -fwrapv -Wno-unknown-pragmas
|
||||
-fno-strict-aliasing -fwrapv
|
||||
|
||||
clean-texconv:
|
||||
-rm -f $(OBJS_TEXCONV)
|
||||
-rm -f texconv
|
||||
|
||||
clean-pvrtex:
|
||||
$(MAKE) -C ../vendor/pvrtex clean
|
||||
-rm -f ../vendor/pvrtex/pvrtex
|
||||
$(MAKE) -C ./pvrtex clean
|
||||
-rm -f ./pvrtex/pvrtex
|
||||
|
||||
clean-objs:
|
||||
-rm -f $(OBJS)
|
||||
@@ -164,7 +152,6 @@ clean:
|
||||
-rm -f IP.BIN
|
||||
-rm -f $(PROJECT_NAME).iso
|
||||
-rm -f $(PROJECT_NAME).ds.iso
|
||||
-rm -f $(PROJECT_NAME)-prebuilt.ds.iso
|
||||
-rm -f $(PROJECT_NAME).cdi
|
||||
-rm -f $(DEPS)
|
||||
-rm -rf $(REPACK_DIR)
|
||||
@@ -179,20 +166,12 @@ $(OBJS_NO_FAST_MATH): %.o: %.cpp
|
||||
$(TARGET): $(OBJS)
|
||||
kos-c++ -o $(TARGET) $(OBJS) -Wl,--gc-sections -Wl,--as-needed -Wl,-Map,output.map \
|
||||
$(if $(WITH_IDE),-lkosfat) $(if $(WITH_SD),-lkosfat) -Wl,--build-id=sha1
|
||||
@echo && echo && echo "*** Build Completed Successfully ($(TARGET)) ***" && echo && echo
|
||||
@echo && echo && echo "*** Build Completed Successfully ***" && echo && echo
|
||||
|
||||
run: $(TARGET)
|
||||
$(KOS_LOADER) $(TARGET)
|
||||
|
||||
$(REPACK_GTA_DIR)/GTAVCSF8.b: assets/GTAVCSF8.b
|
||||
mkdir -p $(@D)
|
||||
cp $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/0GDTEX.PVR: assets/0GDTEX.PVR
|
||||
mkdir -p $(@D)
|
||||
cp $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/%.ico: assets/%.ico
|
||||
$(REPACK_GTA_DIR)/GTA3SF8.b: GTA3SF8.b
|
||||
mkdir -p $(@D)
|
||||
cp $< $@
|
||||
|
||||
@@ -205,26 +184,26 @@ $(REPACK_GTA_DIR)/%.ico: assets/%.ico
|
||||
.PHONY: pvrtex
|
||||
|
||||
pvrtex:
|
||||
$(MAKE) -C ../vendor/pvrtex
|
||||
$(MAKE) -C ./pvrtex
|
||||
|
||||
IP.BIN:
|
||||
rm -f IP.BIN
|
||||
$(KOS_BASE)/utils/makeip/makeip ip.txt IP.BIN
|
||||
|
||||
$(PROJECT_NAME).iso: IP.BIN 1ST_READ.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
$(PROJECT_NAME).iso: IP.BIN 1ST_READ.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTA3SF8.b
|
||||
rm -f $(PROJECT_NAME).iso
|
||||
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
cp 1ST_READ.BIN $(REPACK_GTA_DIR)
|
||||
mkisofs -C 0,11702 -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME).iso $(REPACK_GTA_DIR)
|
||||
|
||||
$(PROJECT_NAME)-no-repack.iso: IP.BIN 1ST_READ.BIN $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
$(PROJECT_NAME)-no-repack.iso: IP.BIN 1ST_READ.BIN $(REPACK_GTA_DIR)/GTA3SF8.b
|
||||
rm -f $(PROJECT_NAME)-no-repack.iso
|
||||
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
cp 1ST_READ.BIN $(REPACK_GTA_DIR)
|
||||
mkisofs -C 0,11702 -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME)-no-repack.iso $(REPACK_GTA_DIR)
|
||||
|
||||
|
||||
$(PROJECT_NAME).ds.iso: IP.BIN 1ST_READ.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
$(PROJECT_NAME).ds.iso: IP.BIN 1ST_READ.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTA3SF8.b
|
||||
rm -f $(PROJECT_NAME).ds.iso
|
||||
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
cp $(TARGET).bin $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
@@ -235,13 +214,7 @@ $(PROJECT_NAME).ds.iso: IP.BIN 1ST_READ.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_
|
||||
$(KOS_BASE)/utils/scramble/scramble $(TARGET)-prebuilt.bin 1ST_READ_PREBUILT.BIN
|
||||
mkdir -p $(REPACK_GTA_DIR)
|
||||
|
||||
$(PROJECT_NAME)-prebuilt.ds.iso: IP.BIN 1ST_READ_PREBUILT.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
rm -f $(PROJECT_NAME)-prebuilt.ds.iso
|
||||
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
cp 1ST_READ_PREBUILT.BIN $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
mkisofs -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME)-prebuilt.ds.iso $(REPACK_GTA_DIR)
|
||||
|
||||
$(PROJECT_NAME)-prebuilt.iso: IP.BIN 1ST_READ_PREBUILT.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
$(PROJECT_NAME)-prebuilt.iso: IP.BIN 1ST_READ_PREBUILT.BIN $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTA3SF8.b
|
||||
rm -f $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
cp 1ST_READ_PREBUILT.BIN $(REPACK_GTA_DIR)/1ST_READ.BIN
|
||||
mkisofs -C 0,11702 -V $(PROJECT_NAME) -G IP.BIN -r -J -l -o $(PROJECT_NAME).iso $(REPACK_GTA_DIR)
|
||||
@@ -249,28 +222,28 @@ $(PROJECT_NAME)-prebuilt.iso: IP.BIN 1ST_READ_PREBUILT.BIN $(REPACK_DIR)/repacke
|
||||
ifeq ($(HAVE_CDI4DC), yes)
|
||||
$(PROJECT_NAME).cdi: $(PROJECT_NAME).iso
|
||||
cdi4dc $(PROJECT_NAME).iso $(PROJECT_NAME).cdi > cdi.log
|
||||
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
||||
@echo && echo && echo "*** CDI Baked Successfully ***" && echo && echo
|
||||
|
||||
$(PROJECT_NAME)-no-repack.cdi: $(PROJECT_NAME)-no-repack.iso
|
||||
cdi4dc $(PROJECT_NAME)-no-repack.iso $(PROJECT_NAME)-no-repack.cdi > cdi.log
|
||||
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
||||
@echo && echo && echo "*** CDI Baked Successfully ***" && echo && echo
|
||||
|
||||
$(PROJECT_NAME)-prebuilt.cdi: $(PROJECT_NAME)-prebuilt.iso
|
||||
cdi4dc $(PROJECT_NAME).iso $(PROJECT_NAME).cdi > cdi.log
|
||||
rm 1ST_READ_PREBUILT.BIN
|
||||
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
||||
@echo && echo && echo "*** CDI Baked Successfully ***" && echo && echo
|
||||
else
|
||||
$(PROJECT_NAME).cdi: $(TARGET) $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME).cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n $(PROJECT_NAME) -a $(TEAM_NAME) -s $(DISC_SERIAL) -r $(RELEASE_DATE)
|
||||
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
||||
$(PROJECT_NAME).cdi: $(TARGET) $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTA3SF8.b
|
||||
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME).cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n DCA3 -a "the gang"
|
||||
@echo && echo && echo "*** CDI Baked Successfully ***" && echo && echo
|
||||
|
||||
$(PROJECT_NAME)-no-repack.cdi: $(TARGET) $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME)-no-repack.cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n $(PROJECT_NAME) -a $(TEAM_NAME) -s $(DISC_SERIAL) -r $(RELEASE_DATE)
|
||||
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
||||
$(PROJECT_NAME)-no-repack.cdi: $(TARGET) $(REPACK_GTA_DIR)/GTA3SF8.b
|
||||
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME)-no-repack.cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n DCA3 -a "the gang"
|
||||
@echo && echo && echo "*** CDI Baked Successfully ***" && echo && echo
|
||||
|
||||
$(PROJECT_NAME)-prebuilt.cdi: $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTAVCSF8.b $(REPACK_GTA_DIR)/0GDTEX.PVR $(REPACK_GTA_DIR)/settings.ico
|
||||
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME).cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n $(PROJECT_NAME) -a $(TEAM_NAME) -s $(DISC_SERIAL) -r $(RELEASE_DATE)
|
||||
@echo && echo && echo "*** CDI Baked Successfully ($@) ***" && echo && echo
|
||||
$(PROJECT_NAME)-prebuilt.cdi: $(REPACK_DIR)/repacked $(REPACK_GTA_DIR)/GTA3SF8.b
|
||||
mkdcdisc -e $(TARGET) -o $(PROJECT_NAME).cdi -d $(REPACK_GTA_DIR)/ $(MKDCDISC_PAD_OPTION) -n DCA3 -a "the gang"
|
||||
@echo && echo && echo "*** CDI Baked Successfully ***" && echo && echo
|
||||
endif
|
||||
|
||||
cdi: $(PROJECT_NAME).cdi
|
||||
@@ -279,8 +252,6 @@ cdi-no-repack: $(PROJECT_NAME)-no-repack.cdi
|
||||
|
||||
dsiso: $(PROJECT_NAME).ds.iso
|
||||
|
||||
dsiso-prebuilt: $(PROJECT_NAME)-prebuilt.ds.iso
|
||||
|
||||
cdi-prebuilt: $(PROJECT_NAME)-prebuilt.cdi
|
||||
|
||||
sim: $(REPACK_DIR)/repacked
|
||||
@@ -298,19 +269,19 @@ gprof:
|
||||
@echo "\033[42m Profiling data saved to $(TARGET)-kernel.png \033[0m"
|
||||
|
||||
# tools
|
||||
imgtool: ../src/tools/imgtool.cpp
|
||||
imgtool: imgtool.cpp
|
||||
$(CXX) -std=c++17 -o $@ -Og $<
|
||||
|
||||
extract-sfx: ../src/tools/extract-sfx.cpp
|
||||
extract-sfx: extract-sfx.cpp
|
||||
$(CXX) -std=c++17 -o $@ -Og $<
|
||||
|
||||
pack-sfx: ../src/tools/pack-sfx.cpp
|
||||
pack-sfx: pack-sfx.cpp
|
||||
$(CXX) -std=c++17 -o $@ -Og $<
|
||||
|
||||
adf2mp3: ../src/tools/adf2mp3.cpp
|
||||
adf2mp3: adf2mp3.cpp
|
||||
$(CXX) -o $@ -O3 -g $<
|
||||
|
||||
aud2adpcm: ../src/tools/aud2adpcm.c
|
||||
aud2adpcm: aud2adpcm.c
|
||||
$(CC) -o $@ -O3 -g $< -I../vendor/minimp3
|
||||
|
||||
texconv: $(OBJS_TEXCONV) | pvrtex # You'll have to rebuild pvrtex manually if you change it
|
||||
@@ -319,15 +290,6 @@ texconv: $(OBJS_TEXCONV) | pvrtex # You'll have to rebuild pvrtex manually if yo
|
||||
%.texconv.o: %.cpp
|
||||
$(CXX) -std=c++2a -c -O0 -g -MMD -MP -o $@ -I../vendor/koshle -I../vendor/librw/src $(INCLUDE) -I../vendor/emu -I../vendor/crypto -I../vendor/TriStripper/include $(DEFINES) -DDC_TEXCONV -DDC_SIM $(TEXCONV_FLAGS) $<
|
||||
|
||||
animtool: ../src/tools/animtool.cpp
|
||||
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
||||
|
||||
coltool: ../src/tools/coltool.cpp
|
||||
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
||||
|
||||
streamheaderpack: ../src/tools/streamheaderpack.cpp
|
||||
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
||||
|
||||
-include $(DEPS)
|
||||
|
||||
#### Repacking ####
|
||||
@@ -351,7 +313,6 @@ TXD_OPTS_LOADSC10 = 512 512
|
||||
TXD_OPTS_LOADSC11 = 512 512
|
||||
TXD_OPTS_LOADSC12 = 512 512
|
||||
TXD_OPTS_LOADSC13 = 512 512
|
||||
TXD_OPTS_LOADSC2 = 512 512
|
||||
TXD_OPTS_LOADSC3 = 512 512
|
||||
TXD_OPTS_LOADSC4 = 512 512
|
||||
TXD_OPTS_LOADSC5 = 512 512
|
||||
@@ -379,32 +340,21 @@ TEXTURE_DOWNSAMPLE_IMG ?= HALF
|
||||
-include sfxlooplist.mk
|
||||
-include wavlist.mk
|
||||
-include mp3list.mk
|
||||
-include cuts.mk
|
||||
|
||||
IMG_TEXTURES_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_TEXTURES))
|
||||
IMG_MODELS_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_MODELS))
|
||||
IMG_IFP_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_IFP))
|
||||
IMG_COL_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_COL))
|
||||
|
||||
CUTS_IFP_DC = $(addprefix $(REPACK_CUTS_DC_DIR)/, $(CUTS_IFP))
|
||||
CUTS_MISC_DC = $(addprefix $(REPACK_CUTS_DC_DIR)/, $(CUTS_MISC))
|
||||
|
||||
IMG_MISC_DC = $(addprefix $(REPACK_IMG_DC_DIR)/, $(IMG_MISC))
|
||||
LOOSE_FILES_DC = $(addprefix $(REPACK_GTA_DIR)/, $(MISC_FILES))
|
||||
|
||||
SFX_DC_DIR = $(REPACK_GTA_DIR)/sfx
|
||||
SFX_DC_RAW = $(SFX_DC_DIR)/sfx_all.raw
|
||||
SFX_DC_DSC = $(SFX_DC_DIR)/sfx_all.dsc
|
||||
STREAM_ADPCM_DC = $(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_WAV:.wav=.APM)) \
|
||||
$(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_MP3:.mp3=.APM)) \
|
||||
$(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_ADF:.adf=.APM))
|
||||
STREAM_ADPCM_DC = $(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_WAV:.wav=.APM)) \
|
||||
$(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_MP3:.mp3=.APM)) \
|
||||
$(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_ADF:.adf=.APM))
|
||||
|
||||
IMG_TEXTURES_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_TEXTURES))
|
||||
IMG_MODELS_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_MODELS))
|
||||
IMG_IFP_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_IFP))
|
||||
IMG_COL_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_COL))
|
||||
|
||||
CUTS_IFP_ORIG = $(addprefix $(REPACK_CUTS_ORIG_DIR)/, $(CUTS_IFP))
|
||||
CUTS_MISC_ORIG = $(addprefix $(REPACK_CUTS_ORIG_DIR)/, $(CUTS_MISC))
|
||||
IMG_MISC_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_MISC))
|
||||
|
||||
SFX_ORIG = $(addprefix $(REPACK_SFX_ORIG_DIR)/, $(SFX_WAV))
|
||||
SFX_ORIG_LOOP = $(addprefix $(REPACK_SFX_ORIG_DIR)/, $(SFX_LOOP_WAV))
|
||||
@@ -414,29 +364,18 @@ STREAM_ADF_DECODED = $(addprefix $(REPACK_STREAM_DECODED_DIR)/, $(STREAM_ADF:.ad
|
||||
|
||||
.PRECIOUS: $(SFX_ORIG) $(SFX_REPACK_DC) $(STREAM_ADF_DECODED)
|
||||
|
||||
$(REPACK_DIR)/repacked: $(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir $(REPACK_GTA_DIR)/anim/cuts.img $(REPACK_GTA_DIR)/anim/cuts.dir $(LOOSE_FILES_DC) $(STREAM_ADPCM_DC) $(SFX_DC_RAW) $(SFX_DC_DSC) streamheaderpack
|
||||
$(REPACK_DIR)/repacked: $(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir $(LOOSE_FILES_DC) $(STREAM_ADPCM_DC) $(SFX_DC_RAW) $(SFX_DC_DSC)
|
||||
mkdir -p $(@D)
|
||||
# $(REPACK_GTA_DIR) needed as first argument as paths in the game prefix with stream/
|
||||
./streamheaderpack miami $(REPACK_GTA_DIR) $(REPACK_STREAM_DEST_DIR)/hdr.bin
|
||||
@git archive --format zip --output "$(REPACK_GTA_DIR)/DCA3-$(GIT_VERSION).zip" HEAD
|
||||
@touch $@
|
||||
@echo && echo && echo "*** Repack Completed Successfully ($(PROJECT_NAME)) ***" && echo && echo
|
||||
@echo && echo && echo "*** Repack Completed Successfully ***" && echo && echo
|
||||
|
||||
$(REPACK_DIR)/unpacked: imgtool $(GTA_DIR)/models/gta3.img $(GTA_DIR)/models/gta3.dir
|
||||
mkdir -p $(@D)
|
||||
./imgtool unpack "$(GTA_DIR)/models/gta3" "$(REPACK_IMG_ORIG_DIR)"
|
||||
@touch $@
|
||||
|
||||
$(IMG_TEXTURES_ORIG) $(IMG_MODELS_ORIG) $(IMG_IFP_ORIG) $(IMG_COL_ORIG): $(REPACK_DIR)/unpacked
|
||||
@test -f $@
|
||||
@touch $@
|
||||
|
||||
$(REPACK_DIR)/unpacked-cuts: imgtool $(GTA_DIR)/anim/cuts.img $(GTA_DIR)/anim/cuts.dir
|
||||
mkdir -p $(@D)
|
||||
./imgtool unpack "$(GTA_DIR)/anim/cuts" "$(REPACK_CUTS_ORIG_DIR)"
|
||||
@touch $@
|
||||
|
||||
$(CUTS_IFP_ORIG) $(CUTS_MISC_ORIG): $(REPACK_DIR)/unpacked-cuts
|
||||
$(IMG_TEXTURES_ORIG) $(IMG_MODELS_ORIG) $(IMG_MISC_ORIG): $(REPACK_DIR)/unpacked
|
||||
@test -f $@
|
||||
@touch $@
|
||||
|
||||
@@ -473,38 +412,20 @@ $(REPACK_IMG_DC_DIR)/%.TXD: $(REPACK_IMG_ORIG_DIR)/%.TXD texconv
|
||||
./texconv $< $@ $(DEFAULT_RES) $(DEFAULT_RES) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_IMG)
|
||||
|
||||
# First try the mods img directory
|
||||
$(REPACK_IMG_DC_DIR)/%.col: $(GTA_MOD_IMG_DIR)/%.col coltool
|
||||
@mkdir -p $(@D)
|
||||
./coltool $< $@
|
||||
$(REPACK_IMG_DC_DIR)/%.ifp: $(GTA_MOD_IMG_DIR)/%.ifp animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
|
||||
# if not, the extracted img directory
|
||||
$(REPACK_IMG_DC_DIR)/%.col: $(REPACK_IMG_ORIG_DIR)/%.col coltool
|
||||
@mkdir -p $(@D)
|
||||
./coltool $< $@
|
||||
$(REPACK_IMG_DC_DIR)/%.ifp: $(REPACK_IMG_ORIG_DIR)/%.ifp animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
|
||||
### cuts
|
||||
# First try the mods img directory
|
||||
$(REPACK_CUTS_DC_DIR)/%.dat: $(GTA_MOD_CUTS_DIR)/%.dat
|
||||
$(REPACK_IMG_DC_DIR)/%.col: $(GTA_MOD_IMG_DIR)/%.col
|
||||
@mkdir -p $(@D)
|
||||
cp $< $@
|
||||
$(REPACK_CUTS_DC_DIR)/%.ifp: $(GTA_MOD_CUTS_DIR)/%.ifp animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
|
||||
# if not, the extracted img directory
|
||||
$(REPACK_CUTS_DC_DIR)/%.dat: $(REPACK_CUTS_ORIG_DIR)/%.dat
|
||||
$(REPACK_IMG_DC_DIR)/%.ifp: $(GTA_MOD_IMG_DIR)/%.ifp
|
||||
@mkdir -p $(@D)
|
||||
cp $< $@
|
||||
$(REPACK_CUTS_DC_DIR)/%.ifp: $(REPACK_CUTS_ORIG_DIR)/%.ifp animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
|
||||
# if not, the extracted img directory
|
||||
$(REPACK_IMG_DC_DIR)/%.col: $(REPACK_IMG_ORIG_DIR)/%.col
|
||||
@mkdir -p $(@D)
|
||||
cp $< $@
|
||||
$(REPACK_IMG_DC_DIR)/%.ifp: $(REPACK_IMG_ORIG_DIR)/%.ifp
|
||||
@mkdir -p $(@D)
|
||||
cp $< $@
|
||||
|
||||
# first try the mods loose directory
|
||||
$(REPACK_GTA_DIR)/%.dff: $(GTA_MOD_LOOSE_DIR)/%.dff texconv
|
||||
@@ -531,14 +452,6 @@ $(REPACK_GTA_DIR)/%.TXD: $(GTA_MOD_LOOSE_DIR)/%.TXD texconv
|
||||
@mkdir -p $(@D)
|
||||
./texconv $< $@ 1024 1024 -e $(PVR_ENCODER) -d NONE
|
||||
|
||||
# then the gamefiles directory
|
||||
$(REPACK_GTA_DIR)/%.txd: $(GTA_GAMEFILES_LOOSE_DIR)/%.txd texconv
|
||||
@mkdir -p $(@D)
|
||||
./texconv $< $@ $(TXD_OPTS_$(notdir $*)) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_TXD)
|
||||
$(REPACK_GTA_DIR)/%.TXD: $(GTA_GAMEFILES_LOOSE_DIR)/%.TXD texconv
|
||||
@mkdir -p $(@D)
|
||||
./texconv $< $@ $(TXD_OPTS_$(notdir $*)) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_TXD)
|
||||
|
||||
# if not, the original files
|
||||
$(REPACK_GTA_DIR)/%.txd: $(GTA_DIR)/%.txd texconv
|
||||
@mkdir -p $(@D)
|
||||
@@ -547,39 +460,7 @@ $(REPACK_GTA_DIR)/%.TXD: $(GTA_DIR)/%.TXD texconv
|
||||
@mkdir -p $(@D)
|
||||
./texconv $< $@ $(TXD_OPTS_$(notdir $*)) -e $(PVR_ENCODER) -d $(TEXTURE_DOWNSAMPLE_TXD)
|
||||
|
||||
# first try the mods loose directory
|
||||
$(REPACK_GTA_DIR)/%.ifp: $(GTA_MOD_LOOSE_DIR)/%.ifp animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
$(REPACK_GTA_DIR)/%.IFP: $(GTA_MOD_LOOSE_DIR)/%.IFP animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
|
||||
#if not, the original files
|
||||
$(REPACK_GTA_DIR)/%.ifp: $(GTA_DIR)/%.ifp animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
$(REPACK_GTA_DIR)/%.IFP: $(GTA_DIR)/%.IFP animtool
|
||||
@mkdir -p $(@D)
|
||||
./animtool $< $@
|
||||
|
||||
# first try the mods loose directory
|
||||
$(REPACK_GTA_DIR)/%.col: $(GTA_MOD_LOOSE_DIR)/%.col coltool
|
||||
@mkdir -p $(@D)
|
||||
./coltool $< $@
|
||||
$(REPACK_GTA_DIR)/%.COL: $(GTA_MOD_LOOSE_DIR)/%.COL coltool
|
||||
@mkdir -p $(@D)
|
||||
./coltool $< $@
|
||||
|
||||
#if not, the original files
|
||||
$(REPACK_GTA_DIR)/%.col: $(GTA_DIR)/%.col coltool
|
||||
@mkdir -p $(@D)
|
||||
./coltool $< $@
|
||||
$(REPACK_GTA_DIR)/%.COL: $(GTA_DIR)/%.COL coltool
|
||||
@mkdir -p $(@D)
|
||||
./coltool $< $@
|
||||
|
||||
$(REPACK_DIR)/packed: $(IMG_TEXTURES_DC) $(IMG_MODELS_DC) $(IMG_IFP_DC) $(IMG_COL_DC)
|
||||
$(REPACK_DIR)/packed: $(IMG_TEXTURES_DC) $(IMG_MODELS_DC) $(IMG_MISC_DC)
|
||||
mkdir -p $(@D)
|
||||
mkdir -p "$(REPACK_GTA_DIR)/models/gta3"
|
||||
./imgtool pack "$(REPACK_GTA_DIR)/models/gta3" "$(REPACK_IMG_DC_DIR)"
|
||||
@@ -588,15 +469,6 @@ $(REPACK_DIR)/packed: $(IMG_TEXTURES_DC) $(IMG_MODELS_DC) $(IMG_IFP_DC) $(IMG_CO
|
||||
$(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir: $(REPACK_DIR)/packed
|
||||
@touch $@
|
||||
|
||||
$(REPACK_DIR)/packed-cuts: $(CUTS_IFP_DC) $(CUTS_MISC_DC)
|
||||
mkdir -p $(@D)
|
||||
mkdir -p "$(REPACK_GTA_DIR)/anim/cuts"
|
||||
./imgtool pack "$(REPACK_GTA_DIR)/anim/cuts" "$(REPACK_CUTS_DC_DIR)"
|
||||
@touch $@
|
||||
|
||||
$(REPACK_GTA_DIR)/anim/cuts.img $(REPACK_GTA_DIR)/anim/cuts.dir: $(REPACK_DIR)/packed-cuts
|
||||
@touch $@
|
||||
|
||||
# sfx processing
|
||||
$(REPACK_DIR)/unpacked-sfx: extract-sfx $(GTA_DIR)/Audio/sfx.SDT $(GTA_DIR)/Audio/sfx.RAW
|
||||
mkdir -p $(@D)
|
||||
@@ -625,7 +497,7 @@ $(REPACK_SFX_DC_DIR)/%.pcm: $(REPACK_SFX_ORIG_DIR)/%.wav aud2adpcm
|
||||
# stream processing
|
||||
|
||||
# first try the mods loose directory
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.wav aud2adpcm
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.wav aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
@@ -633,16 +505,16 @@ $(REPACK_STREAM_DECODED_DIR)/%.mp3: $(GTA_MOD_LOOSE_DIR)/Audio/%.adf adf2mp3
|
||||
@mkdir -p $(@D)
|
||||
./adf2mp3 $< $@
|
||||
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.mp3 aud2adpcm
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
# then original folder
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/Audio/%.wav aud2adpcm
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_DIR)/Audio/%.wav aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
@@ -650,27 +522,16 @@ $(REPACK_STREAM_DECODED_DIR)/%.mp3: $(GTA_DIR)/Audio/%.adf adf2mp3
|
||||
@mkdir -p $(@D)
|
||||
./adf2mp3 $< $@
|
||||
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/Audio/%.mp3 aud2adpcm
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_DIR)/Audio/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
# Note: These are last so they have least priority, files should be processed if possible
|
||||
|
||||
# first try mods dir
|
||||
$(REPACK_GTA_DIR)/%: $(GTA_MOD_LOOSE_DIR)/%
|
||||
@mkdir -p $(@D)
|
||||
cp $< $@
|
||||
|
||||
# then gamefiles
|
||||
$(REPACK_GTA_DIR)/%: $(GTA_GAMEFILES_LOOSE_DIR)/%
|
||||
@mkdir -p $(@D)
|
||||
cp $< $@
|
||||
|
||||
# then original files
|
||||
# Note: This is last so it has least priority, files should be processed if possible
|
||||
$(REPACK_GTA_DIR)/%: $(GTA_DIR)/%
|
||||
@mkdir -p $(@D)
|
||||
cp $< $@
|
||||
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
@@ -558,7 +558,6 @@ void usage() {
|
||||
printf("based on wav2adpcm: 16bit mono wav to aica adpcm and vice-versa (c)2002 BERO\n"
|
||||
" wav2adpcm -q <infile.wav/mp3/ima adpcm> <outfile.wav> (To adpcm long stream)\n"
|
||||
" wav2adpcm -t <infile.wav/mp3/ima adpcm> <outfile.wav> (To adpcm long stream)\n"
|
||||
" wav2adpcm -m <infile.wav/mp3/ima adpcm> <outfile.wav> (To adpcm MONO long stream)\n"
|
||||
" wav2adpcm -raw <infile.wav/mp3/ima adpcm> <outfile.raw> (To adpcm sfx)\n"
|
||||
"\n"
|
||||
"If you are having trouble with your input wav file you can run it"
|
||||
@@ -572,10 +571,8 @@ int main(int argc, char **argv) {
|
||||
if (argc == 4) {
|
||||
if (!strcmp(argv[1], "-t")) {
|
||||
return aud2adpcm(argv[2], argv[3], 1, 0, 0);
|
||||
} else if (!strcmp(argv[1], "-m")) {
|
||||
return aud2adpcm(argv[2], argv[3], 1, 1, 0);
|
||||
} else if (!strcmp(argv[1], "-q")) {
|
||||
return aud2adpcm(argv[2], argv[3], 1, 1, 1);
|
||||
return aud2adpcm(argv[2], argv[3], 1, 1, 1);
|
||||
} else if (!strcmp(argv[1], "-raw")) {
|
||||
return aud2adpcm(argv[2], argv[3], 0, 0, 0);
|
||||
} else {
|
||||
411
dreamcast/common.mk
Normal file
@@ -0,0 +1,411 @@
|
||||
GIT_VERSION := $(shell git describe --always --tags --long --dirty 2>/dev/null || echo "NO_GIT")
|
||||
CI_JOB_ID ?= 00000000
|
||||
|
||||
|
||||
git-version.tmp:
|
||||
@echo "Generating git-version.tmp with GIT_VERSION = \"$(GIT_VERSION)\""
|
||||
@echo "#pragma once" > git-version.tmp
|
||||
@echo "#ifndef VERSION_H" >> git-version.tmp
|
||||
@echo "#define VERSION_H" >> git-version.tmp
|
||||
@echo "#define GIT_VERSION \"$(GIT_VERSION)\"" >> git-version.tmp
|
||||
@echo "#define CI_JOB_ID \"$(CI_JOB_ID)\"" >> git-version.tmp
|
||||
@echo "#endif // VERSION_H" >> git-version.tmp
|
||||
|
||||
git-version.h: git-version.tmp
|
||||
@if [ ! -f git-version.h ] || ! cmp -s git-version.tmp git-version.h; then \
|
||||
echo "Updating git-version.h"; \
|
||||
cp git-version.tmp git-version.h; \
|
||||
else \
|
||||
echo "git-version.h is up to date. No change."; \
|
||||
fi
|
||||
|
||||
.PHONY: git-version.tmp
|
||||
|
||||
../miami/skel/dc/dc.cpp: git-version.h
|
||||
|
||||
|
||||
|
||||
# List all of your C files here, but change the extension to ".o"
|
||||
# Include "romdisk.o" if you want a rom disk.
|
||||
RE3_OBJS = \
|
||||
../miami/animation/AnimBlendAssocGroup.o \
|
||||
../miami/animation/AnimBlendAssociation.o \
|
||||
../miami/animation/AnimBlendClumpData.o \
|
||||
../miami/animation/AnimBlendHierarchy.o \
|
||||
../miami/animation/AnimBlendNode.o \
|
||||
../miami/animation/AnimBlendSequence.o \
|
||||
../miami/animation/AnimManager.o \
|
||||
../miami/animation/Bones.o \
|
||||
../miami/animation/CutsceneMgr.o \
|
||||
../miami/animation/FrameUpdate.o \
|
||||
../miami/animation/RpAnimBlend.o \
|
||||
\
|
||||
../miami/buildings/Building.o \
|
||||
../miami/buildings/Treadable.o \
|
||||
\
|
||||
../miami/collision/ColBox.o \
|
||||
../miami/collision/ColLine.o \
|
||||
../miami/collision/Collision.o \
|
||||
../miami/collision/ColModel.o \
|
||||
../miami/collision/ColPoint.o \
|
||||
../miami/collision/ColSphere.o \
|
||||
../miami/collision/ColStore.o \
|
||||
../miami/collision/ColTriangle.o \
|
||||
../miami/collision/TempColModels.o \
|
||||
../miami/collision/VuCollision.o \
|
||||
\
|
||||
../miami/control/AutoPilot.o \
|
||||
../miami/control/Bridge.o \
|
||||
../miami/control/CarAI.o \
|
||||
../miami/control/CarCtrl.o \
|
||||
../miami/control/Curves.o \
|
||||
../miami/control/Darkel.o \
|
||||
../miami/control/GameLogic.o \
|
||||
../miami/control/Garages.o \
|
||||
../miami/control/NameGrid.o \
|
||||
../miami/control/OnscreenTimer.o \
|
||||
../miami/control/PathFind.o \
|
||||
../miami/control/Phones.o \
|
||||
../miami/control/Pickups.o \
|
||||
../miami/control/PowerPoints.o \
|
||||
../miami/control/Record.o \
|
||||
../miami/control/Remote.o \
|
||||
../miami/control/Replay.o \
|
||||
../miami/control/Restart.o \
|
||||
../miami/control/RoadBlocks.o \
|
||||
../miami/control/SceneEdit.o \
|
||||
../miami/control/Script.o \
|
||||
../miami/control/Script2.o \
|
||||
../miami/control/Script3.o \
|
||||
../miami/control/Script4.o \
|
||||
../miami/control/Script5.o \
|
||||
../miami/control/Script6.o \
|
||||
../miami/control/Script7.o \
|
||||
../miami/control/Script8.o \
|
||||
../miami/control/SetPieces.o \
|
||||
../miami/control/ScriptDebug.o \
|
||||
../miami/control/TrafficLights.o \
|
||||
\
|
||||
../miami/core/Accident.o \
|
||||
../miami/core/Cam.o \
|
||||
../miami/core/Camera.o \
|
||||
../miami/core/CdStreamDC.o \
|
||||
../miami/core/Clock.o \
|
||||
../miami/core/ControllerConfig.o \
|
||||
../miami/core/Debug.o \
|
||||
../miami/core/Directory.o \
|
||||
../miami/core/EventList.o \
|
||||
../miami/core/FileLoader.o \
|
||||
../miami/core/FileMgr.o \
|
||||
../miami/core/Fire.o \
|
||||
../miami/core/Frontend.o \
|
||||
../miami/core/FrontEndControls.o \
|
||||
../miami/core/Frontend_PS2.o \
|
||||
../miami/core/Game.o \
|
||||
../miami/core/IniFile.o \
|
||||
../miami/core/Lists.o \
|
||||
../miami/core/main.o \
|
||||
../miami/core/MenuScreens.o \
|
||||
../miami/core/MenuScreensCustom.o \
|
||||
../miami/core/obrstr.o \
|
||||
../miami/core/Pad.o \
|
||||
../miami/core/Placeable.o \
|
||||
../miami/core/PlayerInfo.o \
|
||||
../miami/core/Pools.o \
|
||||
../miami/core/Profile.o \
|
||||
../miami/core/Radar.o \
|
||||
../miami/core/Range2D.o \
|
||||
../miami/core/Range3D.o \
|
||||
../miami/core/re3.o \
|
||||
../miami/core/References.o \
|
||||
../miami/core/Ropes.o \
|
||||
../miami/core/Stats.o \
|
||||
../miami/core/Streaming.o \
|
||||
../miami/core/SurfaceTable.o \
|
||||
../miami/core/timebars.o \
|
||||
../miami/core/Timer.o \
|
||||
../miami/core/TimeStep.o \
|
||||
../miami/core/User.o \
|
||||
../miami/core/Wanted.o \
|
||||
../miami/core/World.o \
|
||||
../miami/core/ZoneCull.o \
|
||||
../miami/core/Zones.o \
|
||||
\
|
||||
../miami/entities/Dummy.o \
|
||||
../miami/entities/Entity.o \
|
||||
../miami/entities/Physical.o \
|
||||
\
|
||||
../miami/fakerw/fake.o \
|
||||
\
|
||||
../miami/math/math.o \
|
||||
../miami/math/Matrix.o \
|
||||
../miami/math/Quaternion.o \
|
||||
../miami/math/Rect.o \
|
||||
../miami/math/Vector.o \
|
||||
\
|
||||
../miami/modelinfo/BaseModelInfo.o \
|
||||
../miami/modelinfo/ClumpModelInfo.o \
|
||||
../miami/modelinfo/MloModelInfo.o \
|
||||
../miami/modelinfo/ModelIndices.o \
|
||||
../miami/modelinfo/ModelInfo.o \
|
||||
../miami/modelinfo/PedModelInfo.o \
|
||||
../miami/modelinfo/SimpleModelInfo.o \
|
||||
../miami/modelinfo/TimeModelInfo.o \
|
||||
../miami/modelinfo/VehicleModelInfo.o \
|
||||
../miami/modelinfo/WeaponModelInfo.o \
|
||||
\
|
||||
../miami/objects/CutsceneObject.o \
|
||||
../miami/objects/DummyObject.o \
|
||||
../miami/objects/Object.o \
|
||||
../miami/objects/ObjectData.o \
|
||||
../miami/objects/ParticleObject.o \
|
||||
../miami/objects/Projectile.o \
|
||||
../miami/objects/Stinger.o \
|
||||
\
|
||||
../miami/peds/CivilianPed.o \
|
||||
../miami/peds/CopPed.o \
|
||||
../miami/peds/EmergencyPed.o \
|
||||
../miami/peds/Gangs.o \
|
||||
../miami/peds/Ped.o \
|
||||
../miami/peds/PedAI.o \
|
||||
../miami/peds/PedChat.o \
|
||||
../miami/peds/PedDebug.o \
|
||||
../miami/peds/PedFight.o \
|
||||
../miami/peds/PedIK.o \
|
||||
../miami/peds/PedAttractor.o \
|
||||
../miami/peds/PedPlacement.o \
|
||||
../miami/peds/PedRoutes.o \
|
||||
../miami/peds/PedType.o \
|
||||
../miami/peds/PlayerPed.o \
|
||||
../miami/peds/Population.o \
|
||||
\
|
||||
../miami/renderer/Antennas.o \
|
||||
../miami/renderer/Clouds.o \
|
||||
../miami/renderer/Console.o \
|
||||
../miami/renderer/Coronas.o \
|
||||
../miami/renderer/Credits.o \
|
||||
../miami/renderer/CutsceneShadow.o \
|
||||
../miami/renderer/Draw.o \
|
||||
../miami/renderer/Fluff.o \
|
||||
../miami/renderer/Font.o \
|
||||
../miami/renderer/Glass.o \
|
||||
../miami/renderer/Hud.o \
|
||||
../miami/renderer/Instance.o \
|
||||
../miami/renderer/Lines.o \
|
||||
../miami/renderer/MBlur.o \
|
||||
../miami/renderer/Occlusion.o \
|
||||
../miami/renderer/Particle.o \
|
||||
../miami/renderer/ParticleMgr.o \
|
||||
../miami/renderer/PlayerSkin.o \
|
||||
../miami/renderer/PointLights.o \
|
||||
../miami/renderer/RenderBuffer.o \
|
||||
../miami/renderer/Renderer.o \
|
||||
../miami/renderer/Rubbish.o \
|
||||
../miami/renderer/Shadows.o \
|
||||
../miami/renderer/ShadowCamera.o \
|
||||
../miami/renderer/Skidmarks.o \
|
||||
../miami/renderer/SpecialFX.o \
|
||||
../miami/renderer/Sprite.o \
|
||||
../miami/renderer/Sprite2d.o \
|
||||
../miami/renderer/TexList.o \
|
||||
../miami/renderer/Timecycle.o \
|
||||
../miami/renderer/VarConsole.o \
|
||||
../miami/renderer/WaterCannon.o \
|
||||
../miami/renderer/WaterCreatures.o \
|
||||
../miami/renderer/WaterLevel.o \
|
||||
../miami/renderer/Weather.o \
|
||||
../miami/renderer/WindModifiers.o \
|
||||
\
|
||||
../miami/rw/ClumpRead.o \
|
||||
../miami/rw/Lights.o \
|
||||
../miami/rw/MemoryHeap.o \
|
||||
../miami/rw/MemoryMgr.o \
|
||||
../miami/rw/NodeName.o \
|
||||
../miami/rw/RwHelper.o \
|
||||
../miami/rw/RwMatFX.o \
|
||||
../miami/rw/RwPS2AlphaTest.o \
|
||||
../miami/rw/TexRead.o \
|
||||
../miami/rw/TexturePools.o \
|
||||
../miami/rw/TxdStore.o \
|
||||
../miami/rw/VisibilityPlugins.o \
|
||||
\
|
||||
../miami/skel/crossplatform.o \
|
||||
../miami/skel/events.o \
|
||||
../miami/skel/skeleton.o \
|
||||
../miami/skel/dc/dc.o \
|
||||
\
|
||||
../miami/text/Messages.o \
|
||||
../miami/text/Pager.o \
|
||||
../miami/text/Text.o \
|
||||
\
|
||||
../miami/vehicles/Automobile.o \
|
||||
../miami/vehicles/Boat.o \
|
||||
../miami/vehicles/Bike.o \
|
||||
../miami/vehicles/CarGen.o \
|
||||
../miami/vehicles/Cranes.o \
|
||||
../miami/vehicles/DamageManager.o \
|
||||
../miami/vehicles/Door.o \
|
||||
../miami/vehicles/Floater.o \
|
||||
../miami/vehicles/HandlingMgr.o \
|
||||
../miami/vehicles/Heli.o \
|
||||
../miami/vehicles/Plane.o \
|
||||
../miami/vehicles/Train.o \
|
||||
../miami/vehicles/Transmission.o \
|
||||
../miami/vehicles/Vehicle.o \
|
||||
\
|
||||
../miami/weapons/BulletInfo.o \
|
||||
../miami/weapons/Explosion.o \
|
||||
../miami/weapons/ProjectileInfo.o \
|
||||
../miami/weapons/ShotInfo.o \
|
||||
../miami/weapons/Weapon.o \
|
||||
../miami/weapons/WeaponEffects.o \
|
||||
../miami/weapons/WeaponInfo.o \
|
||||
\
|
||||
../miami/audio/AudioCollision.o \
|
||||
../miami/audio/AudioLogic.o \
|
||||
../miami/audio/AudioManager.o \
|
||||
../miami/audio/AudioScriptObject.o \
|
||||
../miami/audio/DMAudio.o \
|
||||
../miami/audio/MusicManager.o \
|
||||
../miami/audio/PolRadio.o \
|
||||
../miami/audio/sampman_miles.o \
|
||||
../miami/audio/sampman_oal.o \
|
||||
\
|
||||
../miami/save/Date.o \
|
||||
../miami/save/GenericGameStorage.o \
|
||||
../miami/save/MemoryCard.o \
|
||||
../miami/save/PCSave.o \
|
||||
\
|
||||
../miami/extras/debugmenu.o \
|
||||
../miami/extras/frontendoption.o \
|
||||
../miami/extras/postfx.o \
|
||||
../miami/extras/screendroplets.o \
|
||||
\
|
||||
../vendor/miniLZO/minilzo.o \
|
||||
\
|
||||
../miami/vmu/vmu.o
|
||||
|
||||
# Excluded \
|
||||
../miami/extras/custompipes.o \
|
||||
../miami/extras/custompipes_d3d9.o \
|
||||
../miami/extras/custompipes_gl.o \
|
||||
../miami/core/CdStream.o \
|
||||
../miami/core/CdStreamPosix.o \
|
||||
../miami/extras \
|
||||
../miami/extras/GitSHA1.cpp.in \
|
||||
../miami/core/AnimViewer.o \
|
||||
|
||||
RW_OBJS = \
|
||||
../vendor/librw/src/anim.o \
|
||||
../vendor/librw/src/base.o \
|
||||
../vendor/librw/src/camera.o \
|
||||
../vendor/librw/src/charset.o \
|
||||
../vendor/librw/src/clump.o \
|
||||
../vendor/librw/src/engine.o \
|
||||
../vendor/librw/src/error.o \
|
||||
../vendor/librw/src/frame.o \
|
||||
../vendor/librw/src/geometry.o \
|
||||
../vendor/librw/src/geoplg.o \
|
||||
../vendor/librw/src/hanim.o \
|
||||
../vendor/librw/src/image.o \
|
||||
../vendor/librw/src/light.o \
|
||||
../vendor/librw/src/matfx.o \
|
||||
../vendor/librw/src/pipeline.o \
|
||||
../vendor/librw/src/plg.o \
|
||||
../vendor/librw/src/prim.o \
|
||||
../vendor/librw/src/raster.o \
|
||||
../vendor/librw/src/render.o \
|
||||
../vendor/librw/src/skin.o \
|
||||
../vendor/librw/src/texture.o \
|
||||
../vendor/librw/src/tristrip.o \
|
||||
../vendor/librw/src/userdata.o \
|
||||
../vendor/librw/src/uvanim.o \
|
||||
../vendor/librw/src/world.o \
|
||||
\
|
||||
../vendor/librw/src/dc/rwdc.o \
|
||||
../vendor/librw/src/dc/alloc.o
|
||||
|
||||
# Excluded \
|
||||
../vendor/librw/src/d3d-x/d3d.o \
|
||||
../vendor/librw/src/d3d-x/d3d8.o \
|
||||
../vendor/librw/src/d3d-x/d3d8render.o \
|
||||
../vendor/librw/src/d3d/d3d8.o \
|
||||
../vendor/librw/src/d3d/d3d8matfx.o \
|
||||
../vendor/librw/src/d3d/d3d8render.o \
|
||||
../vendor/librw/src/d3d/d3d8skin.o \
|
||||
../vendor/librw/src/d3d/d3d9.o \
|
||||
../vendor/librw/src/d3d/d3d9matfx.o \
|
||||
../vendor/librw/src/d3d/d3d9render.o \
|
||||
../vendor/librw/src/d3d/d3d9skin.o \
|
||||
../vendor/librw/src/d3d/d3d.o \
|
||||
../vendor/librw/src/d3d/d3ddevice.o \
|
||||
../vendor/librw/src/d3d/d3dimmed.o \
|
||||
../vendor/librw/src/d3d/d3drender.o \
|
||||
../vendor/librw/src/d3d/xbox.o \
|
||||
../vendor/librw/src/d3d/xboxmatfx.o \
|
||||
../vendor/librw/src/d3d/xboxskin.o \
|
||||
../vendor/librw/src/d3d/xboxvfmt.o \
|
||||
\
|
||||
../vendor/librw/src/gl/gl3.o \
|
||||
../vendor/librw/src/gl/gl3device.o \
|
||||
../vendor/librw/src/gl/gl3immed.o \
|
||||
../vendor/librw/src/gl/gl3matfx.o \
|
||||
../vendor/librw/src/gl/gl3pipe.o \
|
||||
../vendor/librw/src/gl/gl3raster.o \
|
||||
../vendor/librw/src/gl/gl3render.o \
|
||||
../vendor/librw/src/gl/gl3shader.o \
|
||||
../vendor/librw/src/gl/gl3skin.o \
|
||||
../vendor/librw/src/gl/wdgl.o \
|
||||
../vendor/librw/src/gl/glad/glad.cXXX \
|
||||
\
|
||||
../vendor/librw/src/ps2/pds.o \
|
||||
../vendor/librw/src/ps2/ps2.o \
|
||||
../vendor/librw/src/ps2/ps2device.o \
|
||||
../vendor/librw/src/ps2/ps2matfx.o \
|
||||
../vendor/librw/src/ps2/ps2raster.o \
|
||||
../vendor/librw/src/ps2/ps2skin.o \
|
||||
|
||||
INCLUDE = \
|
||||
-I../miami/animation \
|
||||
-I../miami/audio \
|
||||
-I../miami/buildings \
|
||||
-I../miami/collision \
|
||||
-I../miami/control \
|
||||
-I../miami/core \
|
||||
-I../miami/entities \
|
||||
-I../miami/extras \
|
||||
-I../miami/fakerw \
|
||||
-I../miami/math \
|
||||
-I../miami/modelinfo \
|
||||
-I../miami/objects \
|
||||
-I../miami/peds \
|
||||
-I../miami/renderer \
|
||||
-I../miami/rw \
|
||||
-I../miami/save \
|
||||
-I../miami/skel \
|
||||
-I../miami/text \
|
||||
-I../miami/vehicles \
|
||||
-I../miami/weapons \
|
||||
-I../miami/audio/eax \
|
||||
-I../miami/audio/oal \
|
||||
-I../miami/extras/shaders \
|
||||
-I../miami/extras/shaders/obj \
|
||||
-I../miami/skel/glfw \
|
||||
-I../miami/skel/win \
|
||||
\
|
||||
-I../vendor/librw \
|
||||
\
|
||||
-I../vendor/miniLZO
|
||||
|
||||
DEFINES = -DRW_DC -DLIBRW $(if $(WITH_LOGGING),-DWITH_LOGGING) $(if $(WITH_DCLOAD),-DDC_CHDIR=/pc) \
|
||||
$(if $(WITH_BEEPS),-DWITH_BEEPS)
|
||||
FLAGS = -fpermissive -Wno-sign-compare -Wno-parentheses -Wno-maybe-uninitialized \
|
||||
-Wno-format -Wno-strict-aliasing -Wno-unused-variable \
|
||||
-Wno-unused-but-set-variable -Wno-write-strings \
|
||||
-Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion \
|
||||
-Wno-multichar -Wno-unused-value -Wno-char-subscripts -Wno-reorder \
|
||||
-Wno-unused-function -Wno-class-memaccess -fno-permissive
|
||||
|
||||
CPPFLAGS += $(INCLUDE) $(DEFINES) $(FLAGS)
|
||||
CFLAGS += -std=gnu17 $(CPPFLAGS)
|
||||
CXXFLAGS += -std=gnu++20 $(CPPFLAGS)
|
||||
114
dreamcast/gen-mesh-variants.py
Normal file
@@ -0,0 +1,114 @@
|
||||
|
||||
def variant(small_xyz, pad_xyz, small_uv):
|
||||
return f"""
|
||||
&submitMesh<false,0, false, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, false, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, true, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, true, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, false, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, false, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, true, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, true, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&submitMesh<false,0, false, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, false, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, true, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, true, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, false, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, false, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, true, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, true, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, false, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, false, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, true, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, true, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&submitMesh<false,0, false, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, false, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<false,0, true, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
&submitMesh<true,0, true, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
|
||||
0,
|
||||
&submitMesh<true,1, false, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, true, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, false, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, true, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&submitMesh<true,1, false, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, true, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, false, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, true, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, false, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, true, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&submitMesh<true,1, false, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,1, true, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
|
||||
0,
|
||||
&submitMesh<true,2, false, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, true, false, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, false, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, true, true, false, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&submitMesh<true,2, false, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, true, true, true, false, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, false, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, true, false, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, false, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, true, true, false, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
&submitMesh<true,2, false, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
0,
|
||||
&submitMesh<true,2, true, true, true, true, {'true' if small_xyz else 'false'}, {'true' if small_xyz and pad_xyz else 'false'}, {'true' if small_uv else 'false'}>,
|
||||
"""
|
||||
|
||||
str = ""
|
||||
str += variant(False, False, False)
|
||||
str += variant(False, False, True)
|
||||
str += variant(False, True, False)
|
||||
str += variant(False, True, True)
|
||||
str += variant(True, False, False)
|
||||
str += variant(True, False, True)
|
||||
str += variant(True, True, False)
|
||||
str += variant(True, True, True)
|
||||
|
||||
print(str)
|
||||
@@ -1,5 +1,3 @@
|
||||
# models/coll/peds.col # not actually used
|
||||
|
||||
MISC_FILES = \
|
||||
\
|
||||
txd/LOADSC8.TXD \
|
||||
@@ -29,6 +27,7 @@ MISC_FILES = \
|
||||
models/fonts.txd \
|
||||
models/hud.txd \
|
||||
models/coll/weapons.col \
|
||||
models/coll/peds.col \
|
||||
models/coll/vehicles.col \
|
||||
models/coll/generic.col \
|
||||
models/MISC.TXD \
|
||||
@@ -46,6 +45,8 @@ MISC_FILES = \
|
||||
models/generic/zonecylb.DFF \
|
||||
models/gta3.img \
|
||||
\
|
||||
anim/cuts.img \
|
||||
anim/cuts.dir \
|
||||
anim/ped.ifp \
|
||||
\
|
||||
Icons/app.ico \
|
||||
@@ -1,51 +1,43 @@
|
||||
IMG_COL = \
|
||||
IMG_MISC = \
|
||||
airport.col \
|
||||
airportN.col \
|
||||
bank.col \
|
||||
bridge.col \
|
||||
cisland.col \
|
||||
CLUB.col \
|
||||
concerth.col \
|
||||
docks.col \
|
||||
downtown.col \
|
||||
downtows.col \
|
||||
golf.col \
|
||||
haiti.col \
|
||||
haitin.col \
|
||||
hotel.col \
|
||||
islandsf.col \
|
||||
lawyers.col \
|
||||
littleha.col \
|
||||
mall.col \
|
||||
mansion.col \
|
||||
nbeachbt.col \
|
||||
nbeach.col \
|
||||
nbeachw.col \
|
||||
oceandN.col \
|
||||
oceandrv.col \
|
||||
stadint.col \
|
||||
starisl.col \
|
||||
stripclb.col \
|
||||
washintn.col \
|
||||
washints.col \
|
||||
yacht.col
|
||||
|
||||
IMG_IFP = \
|
||||
baseball.ifp \
|
||||
biked.ifp \
|
||||
bikeh.ifp \
|
||||
bikes.ifp \
|
||||
bikev.ifp \
|
||||
bridge.col \
|
||||
buddy.ifp \
|
||||
chainsaw.ifp \
|
||||
cisland.col \
|
||||
CLUB.col \
|
||||
coach.ifp \
|
||||
colt45.ifp \
|
||||
concerth.col \
|
||||
docks.col \
|
||||
downtown.col \
|
||||
downtows.col \
|
||||
flame.ifp \
|
||||
golf.col \
|
||||
grenade.ifp \
|
||||
haiti.col \
|
||||
haitin.col \
|
||||
hotel.col \
|
||||
islandsf.col \
|
||||
knife.ifp \
|
||||
lance.ifp \
|
||||
lawyers.col \
|
||||
littleha.col \
|
||||
m60.ifp \
|
||||
mall.col \
|
||||
mansion.col \
|
||||
medic.ifp \
|
||||
nbeachbt.col \
|
||||
nbeach.col \
|
||||
nbeachw.col \
|
||||
oceandN.col \
|
||||
oceandrv.col \
|
||||
playidles.ifp \
|
||||
python.ifp \
|
||||
rifle.ifp \
|
||||
@@ -53,9 +45,15 @@ IMG_IFP = \
|
||||
shotgun.ifp \
|
||||
skate.ifp \
|
||||
sniper.ifp \
|
||||
stadint.col \
|
||||
starisl.col \
|
||||
stripclb.col \
|
||||
strip.ifp \
|
||||
sunbathe.ifp \
|
||||
sword.ifp \
|
||||
tec.ifp \
|
||||
uzi.ifp \
|
||||
van.ifp
|
||||
van.ifp \
|
||||
washintn.col \
|
||||
washints.col \
|
||||
yacht.col
|
||||
@@ -28,12 +28,8 @@ std::vector<DirRecord> readDirFile(const std::string& dirFilePath) {
|
||||
DirRecord record;
|
||||
|
||||
while (dirFile.read(reinterpret_cast<char*>(&record), sizeof(DirRecord))) {
|
||||
// assert(record.size != 0); // plaster.dff is size zero on liberty
|
||||
if (record.size > 0) {
|
||||
records.push_back(record);
|
||||
} else {
|
||||
std::cerr << "Skipping record: " << record.name << " size is zero." << std::endl;
|
||||
}
|
||||
assert(record.size != 0);
|
||||
records.push_back(record);
|
||||
}
|
||||
|
||||
return records;
|
||||
@@ -1,9 +1,9 @@
|
||||
Device Info : CD-ROM1/1
|
||||
Area Symbols : JUE
|
||||
Peripherals : E000F10
|
||||
Product No : DCA-MIAM
|
||||
Product No : T0000
|
||||
Version : V1.000
|
||||
Release Date : 20250401
|
||||
Release Date : 20000627
|
||||
Boot Filename : 1ST_READ.BIN
|
||||
SW Maker Name : the gang
|
||||
Game Title : dca-miami
|
||||
Game Title : DCA3
|
||||
@@ -14,8 +14,8 @@ else
|
||||
endif
|
||||
|
||||
MYFLAGS=-Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Ilibavutil -I. -DCONFIG_MEMORY_POISONING=0 -DHAVE_FAST_UNALIGNED=0
|
||||
MYCPPFLAGS=$(MYFLAGS) -std=gnu++17
|
||||
MYCFLAGS=$(MYFLAGS) -Wno-pointer-sign -std=gnu17
|
||||
MYCPPFLAGS=$(MYFLAGS)
|
||||
MYCFLAGS=$(MYFLAGS) -Wno-pointer-sign
|
||||
|
||||
|
||||
.PHONY: all clean
|
||||