diff --git a/.gitignore b/.gitignore index 2cde58b..d3fc2ce 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,5 @@ *.su *.idb *.pdb + +build/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..7a8e2f6 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,53 @@ +cmake_minimum_required(VERSION 3.13) +if("$ENV{PSXSDK_PATH}" STREQUAL "") + message(FATAL_ERROR "Please set PSXSDK_PATH env variable first " + "where psxsdk root is located e.g.: /usr/local/psxsdk") +endif() +set(CMAKE_C_COMPILER psx-gcc) +set(CMAKE_CXX_COMPILER psx-g++) +project(airport C) +set(cdroot ${CMAKE_SOURCE_DIR}/cdimg) + +if(NOT EXISTS ${cdroot}) + file(MAKE_DIRECTORY ${cdroot}) +endif() + +add_executable(${PROJECT_NAME} + "Source/Aircraft.c" + "Source/Camera.c" + "Source/EndAnimation.c" + "Source/Font.c" + "Source/Game.c" + "Source/GameGui.c" + "Source/Gfx.c" + "Source/LoadMenu.c" + "Source/main.c" + "Source/MainMenuBtnAni.c" + "Source/MemCard.c" + "Source/Menu.c" + "Source/Message.c" + "Source/Pad.c" + "Source/PltParser.c" + "Source/PSXSDKIntro.c" + "Source/Serial.c" + "Source/Sfx.c" + "Source/System.c" + "Source/Timer.c" +) +target_link_directories(${PROJECT_NAME} PUBLIC $ENV{PSXSDK_PATH}/lib) +target_compile_options(${PROJECT_NAME} PUBLIC -DFIXMATH_FAST_SIN -D_PAL_MODE_ + -DPSXSDK_DEBUG -DNO_CDDA -DNO_INTRO -Wall -g3 -Og) +target_link_libraries(${PROJECT_NAME} PUBLIC -lpsx -lfixmath) +target_include_directories(${PROJECT_NAME} PRIVATE . $ENV{PSXSDK_PATH}/include) +add_custom_target(exe ALL elf2exe ${PROJECT_NAME} + ${cdroot}/${PROJECT_NAME}.exe -mark=\"A homebrew game created with PSXSDK\" + DEPENDS ${PROJECT_NAME}) +add_custom_target(iso ALL mkisofs -o ${PROJECT_NAME}.iso -V ${PROJECT_NAME} + -sysid PLAYSTATION ${cdroot} DEPENDS exe) +set(license $ENV{PSXSDK_PATH}/share/licenses/infoeur.dat) +add_custom_target(bin_cue ALL mkpsxiso ${PROJECT_NAME}.iso ${PROJECT_NAME}.bin + ${license} -s DEPENDS iso) +add_subdirectory(Levels) +add_subdirectory(Sprites) +add_subdirectory(Sounds) +file(COPY "Source/system.cnf" DESTINATION ${cdroot}) diff --git a/Levels/CMakeLists.txt b/Levels/CMakeLists.txt new file mode 100644 index 0000000..4e04df0 --- /dev/null +++ b/Levels/CMakeLists.txt @@ -0,0 +1,18 @@ +if(NOT EXISTS ${cdroot}/DATA/LEVELS) + file(MAKE_DIRECTORY ${cdroot}/DATA/LEVELS) +endif() + +file(COPY + EASY.PLT + LEVEL18.LVL + LEVEL18.PLT + LEVEL1.LVL + LEVEL1.PLT + LEVEL2.LVL + LEVEL2.PLT + LEVEL3.LVL + LEVEL3.PLT + TUTORIA1.PLT + XAMI.LVL + XAMI.PLT + DESTINATION ${cdroot}/DATA/LEVELS) diff --git a/Sounds/CMakeLists.txt b/Sounds/CMakeLists.txt new file mode 100644 index 0000000..68e7356 --- /dev/null +++ b/Sounds/CMakeLists.txt @@ -0,0 +1,28 @@ +function(vag) + set(options "") + set(multiValueArgs "") + set(oneValueArgs NAME DEST) + cmake_parse_arguments(VAG "${options}" "${oneValueArgs}" + "${multiValueArgs}" ${ARGN}) + + if(NOT EXISTS ${VAG_DEST}) + file(MAKE_DIRECTORY ${VAG_DEST}) + endif() + + add_custom_target(${VAG_NAME}_vag ALL + wav2vag ${VAG_NAME}.wav ${VAG_DEST}/${VAG_NAME}.VAG + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${VAG_NAME}.wav + BYPRODUCTS ${VAG_DEST}/${VAG_NAME}.VAG) + add_dependencies(iso ${VAG_NAME}_vag) +endfunction() + +vag(NAME BELL DEST ${cdroot}/DATA/SOUNDS) +vag(NAME ACCEPT DEST ${cdroot}/DATA/SOUNDS) +vag(NAME TRAYCL DEST ${cdroot}/DATA/SOUNDS) +vag(NAME SPINDISK DEST ${cdroot}/DATA/SOUNDS) +vag(NAME BEEP DEST ${cdroot}/DATA/SOUNDS) +vag(NAME TAKEOFF1 DEST ${cdroot}/DATA/SOUNDS) +vag(NAME RCTM1F1 DEST ${cdroot}/DATA/SOUNDS) +vag(NAME RCPW1A1 DEST ${cdroot}/DATA/SOUNDS) +vag(NAME RCPM1A1 DEST ${cdroot}/DATA/SOUNDS) diff --git a/Sprites/CMakeLists.txt b/Sprites/CMakeLists.txt new file mode 100644 index 0000000..2b63085 --- /dev/null +++ b/Sprites/CMakeLists.txt @@ -0,0 +1,48 @@ +function(tim) + set(options "") + set(multiValueArgs "") + set(oneValueArgs NAME DEST EXT) + cmake_parse_arguments(TIM "${options}" "${oneValueArgs}" + "${multiValueArgs}" ${ARGN}) + file(READ ${TIM_NAME}.flags flags) + + # Avoid CMake from introducing escape characters on + # each whitespace inside flags. + separate_arguments(flags NATIVE_COMMAND ${flags}) + + if(NOT EXISTS ${TIM_DEST}) + file(MAKE_DIRECTORY ${TIM_DEST}) + endif() + + add_custom_target(${TIM_NAME}_tim ALL + bmp2tim ${TIM_NAME}.bmp ${TIM_DEST}/${TIM_NAME}.${TIM_EXT} ${flags} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${TIM_NAME}.bmp + BYPRODUCTS ${TIM_DEST}/${TIM_NAME}.${TIM_EXT}) + add_dependencies(iso ${TIM_NAME}_tim) +endfunction() + +tim(NAME PSXDISK DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME TILESET1 DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME TILESET2 DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME MAINMENU DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME LOADING DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME PLANE DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME BUTTONS DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME GAMEPLN DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME PLNBLUE DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME BUBBLE DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME GPL DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME OPENSRC DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME MOUSE DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME DEPARR DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME PAGEUPDN DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME BLDNGS1 DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME LFRARROW DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME UDNARROW DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME BCNGW DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME MENUSTAR DEST ${cdroot}/DATA/SPRITES EXT TIM) +tim(NAME INTROFNT DEST ${cdroot}/DATA/FONTS EXT TIM) + +tim(NAME FONT_1 DEST ${cdroot}/DATA/FONTS EXT FNT) +tim(NAME FONT_2 DEST ${cdroot}/DATA/FONTS EXT FNT)