From b055076cae3b364d83d8eb9dd2ff3bfba50cb89a Mon Sep 17 00:00:00 2001 From: Northfear <11291116+Northfear@users.noreply.github.com> Date: Tue, 13 Apr 2021 10:03:23 +0300 Subject: [PATCH] Initial Vita port --- .gitignore | 1 + CMakeLists.txt | 14 ++ README.md | 67 ++++++ common/CMakeLists.txt | 2 + common/debugstring.cpp | 15 ++ common/file_posix.cpp | 47 ++++ common/mixfile.h | 12 ++ common/mssleep.h | 6 + common/paths_vita.cpp | 100 +++++++++ common/settings.cpp | 5 + common/video_sdl2.cpp | 16 +- common/wwkeyboard.cpp | 203 ++++++++++++++++++ common/wwkeyboard.h | 28 +++ common/wwstd.h | 4 +- redalert/conquer.cpp | 9 +- redalert/globals.cpp | 3 + redalert/init.cpp | 6 + redalert/loaddlg.cpp | 11 + redalert/radar.cpp | 2 +- redalert/saveload.cpp | 25 +++ redalert/scroll.cpp | 8 + redalert/startup.cpp | 23 ++ tiberiandawn/conquer.cpp | 5 + tiberiandawn/init.cpp | 28 ++- tiberiandawn/loaddlg.cpp | 11 + tiberiandawn/radar.cpp | 2 +- tiberiandawn/saveload.cpp | 24 +++ tiberiandawn/scroll.cpp | 8 + tiberiandawn/startup.cpp | 24 ++- tiberiandawn/teamtype.cpp | 2 +- tiberiandawn/techno.cpp | 3 + vita/sce_sys/icon_ra.png | Bin 0 -> 21330 bytes vita/sce_sys/icon_td.png | Bin 0 -> 3421 bytes vita/sce_sys/livearea/contents/bg.png | Bin 0 -> 135173 bytes vita/sce_sys/livearea/contents/startup_ra.png | Bin 0 -> 4140 bytes vita/sce_sys/livearea/contents/startup_td.png | Bin 0 -> 4042 bytes vita/sce_sys/livearea/contents/template.xml | 11 + vita/sce_sys/pic0.png | Bin 0 -> 68682 bytes vita/vcra_vita.cmake | 23 ++ vita/vctd_vita.cmake | 21 ++ 40 files changed, 750 insertions(+), 19 deletions(-) create mode 100644 common/paths_vita.cpp create mode 100644 vita/sce_sys/icon_ra.png create mode 100644 vita/sce_sys/icon_td.png create mode 100644 vita/sce_sys/livearea/contents/bg.png create mode 100644 vita/sce_sys/livearea/contents/startup_ra.png create mode 100644 vita/sce_sys/livearea/contents/startup_td.png create mode 100644 vita/sce_sys/livearea/contents/template.xml create mode 100644 vita/sce_sys/pic0.png create mode 100644 vita/vcra_vita.cmake create mode 100644 vita/vctd_vita.cmake diff --git a/.gitignore b/.gitignore index 0ec9e7f9..684856af 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /build* +.vscode \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index b4dc6744..991e985c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,9 +113,23 @@ if(OPENAL) set(DSOUND OFF) endif() +if(VITA) + add_definitions(-DVITA) + set(VITA_FLAGS "-Ofast -mcpu=cortex-a9 -mfpu=neon -fgraphite-identity -floop-nest-optimize -fno-lto -Wl,--whole-archive -lpthread -Wl,--no-whole-archive") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${VITA_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VITA_FLAGS}") + list(APPEND VANILLA_LIBS "-lSceMotion_stub -lSceTouch_stub -lSceAudio_stub -lSceAudioIn_stub -lSceCtrl_stub -lSceGxm_stub \ + -lSceHid_stub -lSceDisplay_stub -lSceSysmodule_stub -lSceCommonDialog_stub -lScePower_stub -lSceAppUtil_stub") +endif() + add_subdirectory(common) add_subdirectory(tiberiandawn) add_subdirectory(redalert) +if(VITA) + include("${CMAKE_SOURCE_DIR}/vita/vctd_vita.cmake") + include("${CMAKE_SOURCE_DIR}/vita/vcra_vita.cmake") +endif() + feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:") feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:") diff --git a/README.md b/README.md index 3ca42ea4..c0382f02 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,70 @@ +# Vanilla Conquer port for PS Vita + +## Install +Download vanillatd.vpk or vanillara.vpk file from https://github.com/Northfear/Vanilla-Conquer-vita/releases. Install it to your PS Vita. + +Copy content of installed Tiberium Dawn game folder into to ```ux0:data/VanillaTD/``` or installed Red Alert folder into ```ux0:data/VanillaRA/```. + +Check Vanilla Conquer Wiki for more info about required folder/file structure and game versions compatibility: + +[Installing VanillaTD](https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaTD) + +[Installing VanillaRA](https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaRA) + +```expand.mix, expand2.mix, hires1.mix``` files that are required for RA expansions can be aquired from 3.03 patch. + +[rePatch reDux0](https://github.com/dots-tb/rePatch-reDux0) OR [FdFix](https://github.com/TheOfficialFloW/FdFix) plugin may be required for proper suspend/resume support (only use one at a time). + +## Building + +### Prerequisites +- VitaSDK +- SDL2 +- OpenAL + +### Build +``` +mkdir build && cd build +cmake .. -DCMAKE_TOOLCHAIN_FILE=$VITASDK/share/vita.toolchain.cmake -DVITA=true -DCMAKE_BUILD_TYPE=Release +make +``` + +Debug output can be previewed with psp2shell + +https://github.com/Cpasjuste/psp2shell + +## Port info + +### Controls + +Game is optimized for touch controls. + +- Left/Right analog stick - Map scrolling +- CIRCLE - Right mouse button (Cancel building, deselect unit..) +- CROSS - G (Guard Area) +- SQUARE - F (Formation. RA only I guess) +- TRIANGLE - X (Scatter Units) +- D-Pad Up/Right/Down/Left - 1/2/3/4 button +- R1 - Alt (force move) +- L1 - Ctrl (force attack) +- SELECT - Esc (opens menu, skips videos) +- START - Enter (to submit score after the mission) + +Use R1 + D-Pad to create teams (1-4) and D-Pad to select them (same as Ctrl + 1-4 on keyboard). You can use DPad numbers while entering savegame names. + +### Other + +Game supports nearest and linear filtering. Nearest is used by default and it produces sharp, but pixelated image (that's especially noticeable on text). Linear is smooth, but somewhat blurred. To select linear filtering edit +```ux0:data/VanillaTD/vanillatd/conquer.ini``` or ```ux0:data/VanillaRA/vanillara/redalert.ini``` and change ```Scaler``` option to ```linear``` + +``` +[Video] +Scaler=linear +``` + +Change it back to ```nearest``` to select nearest filtering again. + + # Vanilla Conquer Vanilla Conquer is a fully portable version of the first generation C&C engine and is capable of running both Tiberian Dawn and Red Alert on multiple platforms. It can also be used for mod development for the Remastered Collection. diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index c274948d..bded8b51 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -100,6 +100,8 @@ set(COMMON_SRC if (WIN32) list(APPEND COMMON_SRC file_win.cpp paths_win.cpp) +elseif (VITA) + list(APPEND COMMON_SRC file_posix.cpp paths_vita.cpp) else() list(APPEND COMMON_SRC file_posix.cpp paths_posix.cpp) endif() diff --git a/common/debugstring.cpp b/common/debugstring.cpp index d02efab9..6bc70d43 100644 --- a/common/debugstring.cpp +++ b/common/debugstring.cpp @@ -9,6 +9,10 @@ #include #endif +#ifdef VITA +#include +#endif + static class DebugStateClass { public: @@ -66,6 +70,16 @@ void Debug_String_Log(unsigned level, const char* file, int line, const char* fm fflush(DebugState.File); } +#ifdef VITA + /* Don't print file and line numbers to stderr to avoid clogging it up with too much info */ + va_list args; + sceClibPrintf("%-5s: ", levels[level]); + va_start(args, fmt); + char msg[200]; + vsprintf(msg, fmt, args); + sceClibPrintf("%s\n", msg); + va_end(args); +#else /* Don't print file and line numbers to stderr to avoid clogging it up with too much info */ va_list args; fprintf(stderr, "%-5s: ", levels[level]); @@ -74,6 +88,7 @@ void Debug_String_Log(unsigned level, const char* file, int line, const char* fm fprintf(stderr, "\n"); va_end(args); fflush(stderr); +#endif } void Debug_String_File(const char* file) diff --git a/common/file_posix.cpp b/common/file_posix.cpp index 5b793dd9..7280143e 100644 --- a/common/file_posix.cpp +++ b/common/file_posix.cpp @@ -8,6 +8,53 @@ #include #include +#ifdef VITA +#include +#include +#include + +#define PATH_MAX 256 + +std::string StringLower(std::string str) +{ + std::transform(str.begin(), str.end(), str.begin(), ::tolower); + return str; +} + +int fnmatch(const char *pattern, const char *string, int flags) +{ + //massive hackjob.. + std::string filename = string; + std::string filter = pattern; + filename = StringLower(filename); + filter = StringLower(filter); + std::vector filter_split; + std::string delimiter = "*"; + bool found = true; + + size_t pos = 0; + std::string token; + while ((pos = filter.find(delimiter)) != std::string::npos) { + token = filter.substr(0, pos); + filter_split.push_back(token); + filter.erase(0, pos + delimiter.length()); + } + + if (!filter_split.empty()) { + for (int i = 0; i < filter_split.size(); ++i) { + if (filename.find(filter_split[i]) == std::string::npos) { + found = false; + break; + } + } + } else { + found = filename.find(filter) != std::string::npos; + } + + return found ? 0 : 1; +} +#endif + class Find_File_Data_Posix : public Find_File_Data { public: diff --git a/common/mixfile.h b/common/mixfile.h index 084b5dd6..0d7ff486 100644 --- a/common/mixfile.h +++ b/common/mixfile.h @@ -34,6 +34,18 @@ #include // For basename() #endif +#ifdef VITA +#define PATH_MAX 256 +#define basename basename_vita + +// fails to link due to undefined basename. old newlib? +static char *basename_vita (const char *filename) +{ + char *p = strrchr(filename, '/'); + return p ? p + 1 : (char*)filename; +} +#endif + #ifndef _MAX_PATH #define _MAX_PATH PATH_MAX #endif diff --git a/common/mssleep.h b/common/mssleep.h index 649bfaa3..0674bfce 100644 --- a/common/mssleep.h +++ b/common/mssleep.h @@ -14,6 +14,10 @@ #include #endif +#ifdef VITA +#include "SDL2/SDL.h" +#endif + /** * Yield the current thread for at least ms milliseconds. */ @@ -21,6 +25,8 @@ static inline void ms_sleep(unsigned ms) { #ifdef _WIN32 Sleep(ms); +#elif VITA + SDL_Delay(ms); #else struct timespec ts; ts.tv_sec = ms / 1000; diff --git a/common/paths_vita.cpp b/common/paths_vita.cpp new file mode 100644 index 00000000..c043965d --- /dev/null +++ b/common/paths_vita.cpp @@ -0,0 +1,100 @@ +// TiberianDawn.DLL and RedAlert.dll and corresponding source code is free +// software: you can redistribute it and/or modify it under the terms of +// the GNU General Public License as published by the Free Software Foundation, +// either version 3 of the License, or (at your option) any later version. + +// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed +// in the hope that it will be useful, but with permitted additional restrictions +// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT +// distributed with this program. You should have received a copy of the +// GNU General Public License along with permitted additional restrictions +// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection + +#include "paths.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define PATH_MAX 256 + +#include + +std::string vitaGamePath; + +const char* PathsClass::Program_Path() +{ + if (ProgramPath.empty()) { + ProgramPath = vitaGamePath; + } + + return ProgramPath.c_str(); +} + +const char* PathsClass::Data_Path() +{ + if (DataPath.empty()) { + if (ProgramPath.empty()) { + // Init the program path first if it hasn't been done already. + Program_Path(); + } + + DataPath = vitaGamePath; + + if (!Suffix.empty()) { + DataPath += SEP + Suffix; + } + } + + return DataPath.c_str(); +} + +const char* PathsClass::User_Path() +{ + if (UserPath.empty()) { + UserPath = vitaGamePath; + + if (!Suffix.empty()) { + UserPath += SEP + Suffix; + } + + Create_Directory(UserPath.c_str()); + } + + return UserPath.c_str(); +} + +bool PathsClass::Create_Directory(const char* dirname) +{ + bool ret = true; + + if (dirname == nullptr) { + return ret; + } + + std::string temp = dirname; + size_t pos = 0; + do { + pos = temp.find_first_of("/", pos + 1); + sceIoMkdir(temp.substr(0, pos).c_str(), 0700); + } while (pos != std::string::npos); + + return ret; +} + +bool PathsClass::Is_Absolute(const char* path) +{ + return path != nullptr && path[0] == 'u' && path[1] == 'x' && path[2] == '0'; +} + +std::string PathsClass::Argv_Path(const char* cmd_arg) +{ + vitaGamePath = cmd_arg; + return vitaGamePath; +} diff --git a/common/settings.cpp b/common/settings.cpp index 89a03a9e..f00c3b1b 100644 --- a/common/settings.cpp +++ b/common/settings.cpp @@ -52,6 +52,11 @@ void SettingsClass::Load(INIClass& ini) Video.Driver = ini.Get_String("Video", "Driver", Video.Driver); Video.PixelFormat = ini.Get_String("Video", "PixelFormat", Video.PixelFormat); +#ifdef VITA + //touch to mouse translates badly with boxing on + Video.Boxing = false; +#endif + /* ** VQA and WSA interpolation mode 0 = scanlines, 1 = vertical doubling, 2 = linear */ diff --git a/common/video_sdl2.cpp b/common/video_sdl2.cpp index e4b0a3d9..b9b6497d 100644 --- a/common/video_sdl2.cpp +++ b/common/video_sdl2.cpp @@ -259,8 +259,11 @@ bool Set_Video_Mode(int w, int h, int bits_per_pixel) DBG_INFO(" %s%s", info.name, (i == renderer_index ? " (selected)" : "")); } } - +#ifdef VITA + renderer = SDL_CreateRenderer(window, renderer_index, SDL_RENDERER_TARGETTEXTURE | SDL_RENDERER_PRESENTVSYNC); +#else renderer = SDL_CreateRenderer(window, renderer_index, SDL_RENDERER_TARGETTEXTURE); +#endif if (renderer == nullptr) { DBG_ERROR("SDL_CreateRenderer failed: %s", SDL_GetError()); Reset_Video_Mode(); @@ -333,6 +336,12 @@ bool Set_Video_Mode(int w, int h, int bits_per_pixel) hwcursor.Y = h / 2; Update_HWCursor_Settings(); +#ifdef VITA + SDL_Init(SDL_INIT_GAMECONTROLLER); + extern WWKeyboardClass* Keyboard; + Keyboard->OpenController(); +#endif + return true; } @@ -468,6 +477,11 @@ void Reset_Video_Mode(void) SDL_DestroyWindow(window); window = nullptr; + +#ifdef VITA + extern WWKeyboardClass* Keyboard; + Keyboard->CloseController(); +#endif } static void Update_HWCursor() diff --git a/common/wwkeyboard.cpp b/common/wwkeyboard.cpp index a79b4657..3cda7744 100644 --- a/common/wwkeyboard.cpp +++ b/common/wwkeyboard.cpp @@ -595,6 +595,29 @@ void WWKeyboardClass::Fill_Buffer_From_System(void) break; } break; +#ifdef VITA + case SDL_CONTROLLERDEVICEREMOVED: + if (gameController != nullptr) { + const SDL_GameController * removedController = SDL_GameControllerFromInstanceID( event.jdevice.which ); + if (removedController == gameController) { + SDL_GameControllerClose(gameController); + gameController = nullptr; + } + } + break; + case SDL_CONTROLLERDEVICEADDED: + if (gameController == nullptr) { + gameController = SDL_GameControllerOpen(event.jdevice.which); + } + break; + case SDL_CONTROLLERAXISMOTION: + HandleControllerAxisEvent(event.caxis); + break; + case SDL_CONTROLLERBUTTONDOWN: + case SDL_CONTROLLERBUTTONUP: + HandleControllerButtonEvent(event.cbutton); + break; +#endif } } #elif defined(_WIN32) @@ -611,6 +634,186 @@ void WWKeyboardClass::Fill_Buffer_From_System(void) #endif } +#ifdef VITA +typedef enum DirType : unsigned char +{ + DIR_N = 0, + DIR_NE = 1 << 5, + DIR_E = 2 << 5, + DIR_SE = 3 << 5, + DIR_S = 4 << 5, + DIR_SW = 5 << 5, + DIR_W = 6 << 5, + DIR_NW = 7 << 5, + DIR_NONE = 100 +} DirType; + +bool scrollActive = false; +DirType scrollDirection = DIR_NONE; + +void WWKeyboardClass::OpenController() +{ + for (int i = 0; i < SDL_NumJoysticks(); ++i) { + if (SDL_IsGameController(i)) { + gameController = SDL_GameControllerOpen(i); + } + } +} + +void WWKeyboardClass::CloseController() +{ + if (SDL_GameControllerGetAttached(gameController)) { + SDL_GameControllerClose(gameController); + gameController = nullptr; + } +} + +void WWKeyboardClass::HandleControllerAxisEvent(const SDL_ControllerAxisEvent & motion) +{ + scrollActive = false; + DirType directionX = DIR_NONE; + DirType directionY = DIR_NONE; + + if (motion.axis == SDL_CONTROLLER_AXIS_LEFTX) { + if (std::abs(motion.value) > CONTROLLER_L_DEADZONE) + controllerLeftXAxis = motion.value; + else + controllerLeftXAxis = 0; + } + else if (motion.axis == SDL_CONTROLLER_AXIS_LEFTY) { + if (std::abs(motion.value) > CONTROLLER_L_DEADZONE) + controllerLeftYAxis = motion.value; + else + controllerLeftYAxis = 0; + } + else if (motion.axis == SDL_CONTROLLER_AXIS_RIGHTX) { + if (std::abs(motion.value) > CONTROLLER_R_DEADZONE) + controllerRightXAxis = motion.value; + else + controllerRightXAxis = 0; + } + else if (motion.axis == SDL_CONTROLLER_AXIS_RIGHTY) { + if (std::abs(motion.value) > CONTROLLER_R_DEADZONE) + controllerRightYAxis = motion.value; + else + controllerRightYAxis = 0; + } + + if (controllerLeftXAxis != 0) { + scrollActive = true; + directionX = controllerLeftXAxis > 0 ? DIR_E : DIR_W; + } else if (controllerRightXAxis != 0) { + scrollActive = true; + directionX = controllerRightXAxis > 0 ? DIR_E : DIR_W; + } + + if (controllerLeftYAxis != 0) { + scrollActive = true; + directionY = controllerLeftYAxis > 0 ? DIR_S : DIR_N; + } else if (controllerRightYAxis != 0) { + scrollActive = true; + directionY = controllerRightYAxis > 0 ? DIR_S : DIR_N; + } + + if (directionX == DIR_E && directionY == DIR_N) + scrollDirection = DIR_NE; + else if (directionX == DIR_E && directionY == DIR_S) + scrollDirection = DIR_SE; + else if (directionX == DIR_W && directionY == DIR_N) + scrollDirection = DIR_NW; + else if (directionX == DIR_W && directionY == DIR_S) + scrollDirection = DIR_SW; + else if (directionX == DIR_E) + scrollDirection = DIR_E; + else if (directionX == DIR_W) + scrollDirection = DIR_W; + else if (directionY == DIR_S) + scrollDirection = DIR_S; + else if (directionY == DIR_N) + scrollDirection = DIR_N; +} + +void WWKeyboardClass::HandleControllerButtonEvent(const SDL_ControllerButtonEvent & button) +{ + bool keyboardPress = false; + bool mousePress = false; + unsigned short key; + SDL_Scancode scancode; + + switch (button.button) + { + case SDL_CONTROLLER_BUTTON_A: + keyboardPress = true; + scancode = SDL_SCANCODE_G; + break; + case SDL_CONTROLLER_BUTTON_B: + mousePress = true; + key = VK_RBUTTON; + break; + case SDL_CONTROLLER_BUTTON_X: + keyboardPress = true; + scancode = SDL_SCANCODE_F; + break; + case SDL_CONTROLLER_BUTTON_Y: + keyboardPress = true; + scancode = SDL_SCANCODE_X; + break; + case SDL_CONTROLLER_BUTTON_BACK: + keyboardPress = true; + scancode = SDL_SCANCODE_ESCAPE; + break; + case SDL_CONTROLLER_BUTTON_START: + keyboardPress = true; + scancode = SDL_SCANCODE_RETURN; + break; + case SDL_CONTROLLER_BUTTON_LEFTSHOULDER: + keyboardPress = true; + scancode = SDL_SCANCODE_LCTRL; + break; + case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: + keyboardPress = true; + scancode = SDL_SCANCODE_LALT; + break; + case SDL_CONTROLLER_BUTTON_DPAD_UP: + keyboardPress = true; + scancode = SDL_SCANCODE_1; + break; + case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: + keyboardPress = true; + scancode = SDL_SCANCODE_2; + break; + case SDL_CONTROLLER_BUTTON_DPAD_DOWN: + keyboardPress = true; + scancode = SDL_SCANCODE_3; + break; + case SDL_CONTROLLER_BUTTON_DPAD_LEFT: + keyboardPress = true; + scancode = SDL_SCANCODE_4; + break; + default: + break; + } + + if (keyboardPress) { + Put_Key_Message(scancode, button.state == SDL_RELEASED); + } else if (mousePress) { + int x, y; + Get_Video_Mouse(x, y); + Put_Mouse_Message(key, x, y, button.state == SDL_RELEASED); + } +} + +bool WWKeyboardClass::ScrollActive() +{ + return scrollActive; +} + +unsigned char WWKeyboardClass::GetScrollDirection() +{ + return scrollDirection; +} +#endif + /*********************************************************************************************** * WWKeyboardClass::Clear -- Clears the keyboard buffer. * * * diff --git a/common/wwkeyboard.h b/common/wwkeyboard.h index 3a5b89b9..9e3bc3e8 100644 --- a/common/wwkeyboard.h +++ b/common/wwkeyboard.h @@ -38,6 +38,10 @@ #endif #include +#ifdef VITA +#include +#endif + typedef enum { WWKEY_SHIFT_BIT = 0x100, @@ -723,6 +727,13 @@ class WWKeyboardClass KeyASCIIType To_ASCII(unsigned short num); bool Down(unsigned short key); +#ifdef VITA + void OpenController(); + void CloseController(); + bool ScrollActive(); + unsigned char GetScrollDirection(); +#endif + #if defined(_WIN32) && !defined(SDL2_BUILD) /* Define the main hook for the message processing loop. */ bool Message_Handler(HWND hwnd, UINT message, UINT wParam, LONG lParam); @@ -770,6 +781,23 @@ class WWKeyboardClass */ uint8_t DownState[0x2000]; // (UINT16_MAX / 8) + 1 int DownSkip; + +#ifdef VITA + void HandleControllerAxisEvent(const SDL_ControllerAxisEvent & motion); + void HandleControllerButtonEvent(const SDL_ControllerButtonEvent & button); + + enum + { + CONTROLLER_L_DEADZONE = 6000, + CONTROLLER_R_DEADZONE = 6000 + }; + + SDL_GameController * gameController = nullptr; + int16_t controllerLeftXAxis = 0; + int16_t controllerLeftYAxis = 0; + int16_t controllerRightXAxis = 0; + int16_t controllerRightYAxis = 0; +#endif }; #endif diff --git a/common/wwstd.h b/common/wwstd.h index 16309e6b..882735a6 100644 --- a/common/wwstd.h +++ b/common/wwstd.h @@ -130,7 +130,7 @@ template T MAX(T a, T b) #define PROC_PENTIUM 2 // Inline Routines -//ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ +//���������������� // // These Template functions are generally used // by classes when they havce over loaded > and <. @@ -258,12 +258,14 @@ inline static void _splitpath(const char* path, char* drive, char* dir, char* fn } } +#ifndef VITA inline static char* strupr(char* str) { for (int i = 0; i < strlen(str); i++) str[i] = toupper(str[i]); return str; } +#endif inline static void strrev(char* str) { diff --git a/redalert/conquer.cpp b/redalert/conquer.cpp index 7914c406..3dbc1678 100644 --- a/redalert/conquer.cpp +++ b/redalert/conquer.cpp @@ -3886,8 +3886,13 @@ static bool Change_Local_Dir(int cd) { static bool _initialised = false; static unsigned _detected = 0; +#ifdef VITA + static const char* _vol_labels[CD_COUNT] = {"ux0:data/VanillaRA/allied", "ux0:data/VanillaRA/soviet", "ux0:data/VanillaRA/counterstrike", "ux0:data/VanillaRA/aftermath", "ux0:data/VanillaRA"}; + char vol_buff[64]; +#else static const char* _vol_labels[CD_COUNT] = {"allied", "soviet", "counterstrike", "aftermath", "."}; char vol_buff[16]; +#endif // Detect which if any of the discs have had their data copied to an appropriate local folder. if (!_initialised) { @@ -4260,7 +4265,7 @@ bool Force_CD_Available(int cd) #endif #ifdef FRENCH - sprintf(buffer, "InsŠrez le %s", _cd_name[cd]); + sprintf(buffer, "Ins�rez le %s", _cd_name[cd]); #else #ifdef GERMAN sprintf(buffer, "Bitte %s", _cd_name[cd]); @@ -4271,7 +4276,7 @@ bool Force_CD_Available(int cd) } else { #ifdef DVD #ifdef FRENCH - sprintf(buffer, "InsŠrez le %s", _cd_name[4]); + sprintf(buffer, "Ins�rez le %s", _cd_name[4]); #else #ifdef GERMAN sprintf(buffer, "Bitte %s", _cd_name[4]); diff --git a/redalert/globals.cpp b/redalert/globals.cpp index 41b9558c..ea40286c 100644 --- a/redalert/globals.cpp +++ b/redalert/globals.cpp @@ -678,7 +678,10 @@ int MouseInstalled; // // Variables for helping track how much time goes bye in routines // +#ifndef VITA +//multiple definition of `LogLevel' with openal int LogLevel = 0; +#endif unsigned long LogLevelTime[MAX_LOG_LEVEL] = {0}; unsigned long LogLastTime = 0; bool LogDump_Print = false; // true = print the Log time Stuff diff --git a/redalert/init.cpp b/redalert/init.cpp index ac0a9308..b06ae59c 100644 --- a/redalert/init.cpp +++ b/redalert/init.cpp @@ -2144,9 +2144,15 @@ static void Init_Expansion_Files(void) for (int p = 0; p < 100; p++) { strcpy(search_path, path); +#ifdef VITA + if (search_path[strlen(search_path) - 1] != '/') { + strcat(search_path, "/"); + } +#else if (search_path[strlen(search_path) - 1] != '\\') { strcat(search_path, "\\"); } +#endif strcpy(scan_path, search_path); strcat(scan_path, "SC*.MIX"); diff --git a/redalert/loaddlg.cpp b/redalert/loaddlg.cpp index d3f70044..5ddc8eec 100644 --- a/redalert/loaddlg.cpp +++ b/redalert/loaddlg.cpp @@ -48,6 +48,10 @@ #include "common/file.h" #include "common/framelimit.h" +#ifdef VITA +#include "common/paths.h" +#endif + /*********************************************************************************************** * LoadOptionsClass::LoadOptionsClass -- class constructor * * * @@ -659,7 +663,14 @@ void LoadOptionsClass::Fill_List(ListClass* list) /* ** Find all savegame files */ +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.*"); + bool rc = Find_First(savePath.c_str(), 0, &ff); +#else bool rc = Find_First("SAVEGAME.*", 0, &ff); +#endif while (rc) { diff --git a/redalert/radar.cpp b/redalert/radar.cpp index c01b4195..9eff020e 100644 --- a/redalert/radar.cpp +++ b/redalert/radar.cpp @@ -200,7 +200,7 @@ void RadarClass::Init_Clear(void) ** If we have a valid map lets make sure that we set it correctly */ if (MapCellWidth || MapCellHeight) { - IsZoomed = false; + IsZoomed = true; Zoom_Mode(Coord_Cell(Map.TacticalCoord)); } } diff --git a/redalert/saveload.cpp b/redalert/saveload.cpp index 583ace71..2f394a01 100644 --- a/redalert/saveload.cpp +++ b/redalert/saveload.cpp @@ -55,6 +55,10 @@ #include "carry.h" #include "common/tcpip.h" +#ifdef VITA +#include "common/paths.h" +#endif + #ifdef REMASTER_BUILD extern bool DLLSave(Pipe& file); extern bool DLLLoad(Straw& file); @@ -334,7 +338,14 @@ bool Save_Game(int id, char const* descr, bool) strcpy(name, NET_SAVE_FILE_NAME); // save_net = 1; } else { +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.%03d"); + sprintf(name, savePath.c_str(), id); +#else sprintf(name, "SAVEGAME.%03d", id); +#endif } return Save_Game(name, descr); @@ -500,7 +511,14 @@ bool Load_Game(int id) strcpy(name, NET_SAVE_FILE_NAME); // load_net = 1; } else { +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.%03d"); + sprintf(name, savePath.c_str(), id); +#else sprintf(name, "SAVEGAME.%03d", id); +#endif } return Load_Game(name); } @@ -1438,7 +1456,14 @@ bool Get_Savefile_Info(int id, char* buf, unsigned* scenp, HousesType* housep) /* ** Generate the filename to load */ +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.%03d"); + sprintf(name, savePath.c_str(), id); +#else sprintf(name, "SAVEGAME.%03d", id); +#endif BufferIOFileClass file(name); FileStraw straw(file); diff --git a/redalert/scroll.cpp b/redalert/scroll.cpp index 3be4d6d5..b13d973a 100644 --- a/redalert/scroll.cpp +++ b/redalert/scroll.cpp @@ -98,6 +98,14 @@ void ScrollClass::AI(KeyNumType& input, int x, int y) */ bool noscroll = false; +#ifdef VITA + if (Keyboard->ScrollActive()) { + unsigned char scrollDirection = Keyboard->GetScrollDirection(); + int scrollDistance = (7 - Options.ScrollRate) * 20; + Scroll_Map((DirType)scrollDirection, scrollDistance, true); + } +#endif + if (!noscroll) { bool at_screen_edge = (y == 0 || x == 0 || x >= SeenBuff.Get_Width() - 1 || y >= SeenBuff.Get_Height() - 1); diff --git a/redalert/startup.cpp b/redalert/startup.cpp index 49ae405f..4990fae5 100644 --- a/redalert/startup.cpp +++ b/redalert/startup.cpp @@ -57,6 +57,16 @@ void Print_Error_Exit(char* string); #define vc_chdir(x) _wchdir(UTF8To16(x)) extern void Create_Main_Window(HANDLE instance, int command_show, int width, int height); HINSTANCE ProgramInstance; +#elif VITA +int _newlib_heap_size_user = 192 * 1024 * 1024; +#include +#include + +#define vc_chdir(x) chdir_vita(x) + +void chdir_vita(const char *path) +{ +} #else #include #define vc_chdir(x) chdir(x) @@ -170,6 +180,10 @@ int main(int argc, char* argv[]) { #endif // _WIN32 +#ifdef VITA + scePowerSetArmClockFrequency(444); +#endif + // printf("in program.\n");getch(); // printf("ram free = %ld\n",Ram_Free(MEM_NORMAL));getch(); #ifdef _WIN32 @@ -271,7 +285,11 @@ int main(int argc, char* argv[]) /* ** Remember the current working directory and drive. */ +#ifdef VITA + Paths.Init("vanillara", CONFIG_FILE_NAME, "REDALERT.MIX", "ux0:data/VanillaRA"); +#else Paths.Init("vanillara", CONFIG_FILE_NAME, "REDALERT.MIX", argv[0]); +#endif vc_chdir(Paths.Program_Path()); CDFileClass::Refresh_Search_Drives(); @@ -524,6 +542,11 @@ int main(int argc, char* argv[]) /* ** Restore the current drive and directory. */ + +#ifdef VITA + sceKernelExitProcess(0); +#endif + return (EXIT_SUCCESS); } diff --git a/tiberiandawn/conquer.cpp b/tiberiandawn/conquer.cpp index 57fa9a92..f0edc115 100644 --- a/tiberiandawn/conquer.cpp +++ b/tiberiandawn/conquer.cpp @@ -3383,8 +3383,13 @@ static bool Change_Local_Dir(int cd) { static bool _initialised = false; static unsigned _detected = 0; +#ifdef VITA + static const char* _vol_labels[CD_COUNT] = {"ux0:data/VanillaTD/gdi", "ux0:data/VanillaTD/nod", "ux0:data/VanillaTD/covertops", "ux0:data/VanillaTD"}; + char vol_buff[64]; +#else static const char* _vol_labels[CD_COUNT] = {"gdi", "nod", "covertops", "."}; char vol_buff[16]; +#endif // Detect which if any of the discs have had their data copied to an appropriate local folder. if (!_initialised) { diff --git a/tiberiandawn/init.cpp b/tiberiandawn/init.cpp index 939a26c5..f5fb8d54 100644 --- a/tiberiandawn/init.cpp +++ b/tiberiandawn/init.cpp @@ -279,7 +279,7 @@ bool Init_Game(int, char*[]) sprintf(buffer, "Command & Conquer kann Ihren Maustreiber nicht finden.."); #else #ifdef FRENCH - sprintf(buffer, "Command & Conquer ne peut pas d‚tecter votre gestionnaire de souris."); + sprintf(buffer, "Command & Conquer ne peut pas d�tecter votre gestionnaire de souris."); #else sprintf(buffer, "Command & Conquer is unable to detect your mouse driver."); #endif @@ -323,9 +323,15 @@ bool Init_Game(int, char*[]) for (int p = 0; p < 100; p++) { strcpy(search_path, path); +#ifdef VITA + if (search_path[strlen(search_path) - 1] != '/') { + strcat(search_path, "/"); + } +#else if (search_path[strlen(search_path) - 1] != '\\') { strcat(search_path, "\\"); } +#endif strcpy(scan_path, search_path); strcat(scan_path, "SC*.MIX"); @@ -1816,20 +1822,20 @@ bool Parse_Command_Line(int argc, char* argv[]) " (Syntax: DESTNETxx.xx.xx.xx)\r\n" " -SOCKET = Kennung des Netzwerk-Sockets (0 - 16383)\n" " -STEALTH = Namen im Mehrspieler-Modus verstecken (\"Boss-Modus\")\r\n" - " -MESSAGES = Mitteilungen von auáerhalb des Spiels zulassen\r\n" + " -MESSAGES = Mitteilungen von au�erhalb des Spiels zulassen\r\n" // " -ELITE = Fortgeschrittene KI und Gefechtstechniken.\r\n" "\r\n"); #else #ifdef FRENCH puts("Command & Conquer (c) 1995, Westwood Studios\r\n" - "ParamŠtres:\r\n" - // " -CD = Recherche des fichiers dans le\r\n" - // " r‚pertoire indiqu‚.\r\n" - " -DESTNET = Sp‚cifier le num‚ro de r‚seau du systŠme de destination\r\n" + "Param�tres:\r\n" + // " -CD = Recherche des fichiers dans le\r\n" + // " r�pertoire indiqu�.\r\n" + " -DESTNET = Sp�cifier le num�ro de r�seau du syst�me de destination\r\n" " (Syntaxe: DESTNETxx.xx.xx.xx)\r\n" - " -SOCKET = ID poste r‚seau (0 … 16383)\r\n" + " -SOCKET = ID poste r�seau (0 � 16383)\r\n" " -STEALTH = Cacher les noms en mode multijoueurs (\"Mode Boss\")\r\n" - " -MESSAGES = Autorise les messages ext‚rieurs … ce jeu.\r\n" + " -MESSAGES = Autorise les messages ext�rieurs � ce jeu.\r\n" "\r\n"); #else puts("Command & Conquer (c) 1995, 1996 Westwood Studios\r\n" @@ -2278,9 +2284,9 @@ void Parse_INI_File(void) /* ** These arrays store the coded version of the names Geologic, Period, & Jurassic. ** Decode them by subtracting 83. For you curious types, the names look like: - ** š¸Â¿Âº¼¶ - ** £¸Å¼Â· - ** ?ÈÅ´ÆƼ¶ + ** ��¿º�� + ** ��ż· + ** ?�Ŵ�Ƽ� ** If these INI entries aren't found, the IsJurassic flag does nothing. */ static char coded_section[] = {154, 184, 194, 191, 194, 186, 188, 182, 0}; diff --git a/tiberiandawn/loaddlg.cpp b/tiberiandawn/loaddlg.cpp index fb7dc13f..03fda043 100644 --- a/tiberiandawn/loaddlg.cpp +++ b/tiberiandawn/loaddlg.cpp @@ -44,6 +44,10 @@ #include "common/file.h" #include "common/framelimit.h" +#ifdef VITA +#include "common/paths.h" +#endif + /*********************************************************************************************** * LoadOptionsClass::LoadOptionsClass -- class constructor * * * @@ -591,7 +595,14 @@ void LoadOptionsClass::Fill_List(ListClass* list) /* ** Find all savegame files */ +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.*"); + bool rc = Find_First(savePath.c_str(), 0, &ff); +#else bool rc = Find_First("SAVEGAME.*", 0, &ff); +#endif while (rc) { /* diff --git a/tiberiandawn/radar.cpp b/tiberiandawn/radar.cpp index dee89ccf..6af42656 100644 --- a/tiberiandawn/radar.cpp +++ b/tiberiandawn/radar.cpp @@ -182,7 +182,7 @@ void RadarClass::Init_Clear(void) ** If we have a valid map lets make sure that we set it correctly */ if (MapCellWidth || MapCellHeight) { - IsZoomed = false; + IsZoomed = true; Zoom_Mode(Coord_Cell(Map.TacticalCoord)); } } diff --git a/tiberiandawn/saveload.cpp b/tiberiandawn/saveload.cpp index 027c74a4..817dae26 100644 --- a/tiberiandawn/saveload.cpp +++ b/tiberiandawn/saveload.cpp @@ -45,6 +45,9 @@ * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #include "function.h" +#ifdef VITA +#include "common/paths.h" +#endif extern bool DLLSave(FileClass& file); extern bool DLLLoad(FileClass& file); @@ -108,7 +111,14 @@ bool Save_Game(int id, char* descr) /* ** Generate the filename to save */ +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.%03d"); + sprintf(name, savePath.c_str(), id); +#else sprintf(name, "SAVEGAME.%03d", id); +#endif return Save_Game(name, descr); } @@ -313,7 +323,14 @@ bool Load_Game(int id) /* ** Generate the filename to load */ +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.%03d"); + sprintf(name, savePath.c_str(), id); +#else sprintf(name, "SAVEGAME.%03d", id); +#endif return Load_Game(name); } @@ -984,7 +1001,14 @@ bool Get_Savefile_Info(int id, char* buf, unsigned* scenp, HousesType* housep) /* ** Generate the filename to load */ +#ifdef VITA + std::string savePath; + savePath = Paths.User_Path(); + savePath.append("/SAVEGAME.%03d"); + sprintf(name, savePath.c_str(), id); +#else sprintf(name, "SAVEGAME.%03d", id); +#endif /* ** If the file opens OK, read the file diff --git a/tiberiandawn/scroll.cpp b/tiberiandawn/scroll.cpp index 22c352b9..e436e6e7 100644 --- a/tiberiandawn/scroll.cpp +++ b/tiberiandawn/scroll.cpp @@ -102,6 +102,14 @@ void ScrollClass::AI(KeyNumType& input, int x, int y) noscroll = true; } +#ifdef VITA + if (Keyboard->ScrollActive()) { + unsigned char scrollDirection = Keyboard->GetScrollDirection(); + int scrollDistance = (7 - Options.ScrollRate) * 20; + Scroll_Map((DirType)scrollDirection, scrollDistance, true); + } +#endif + if (!noscroll) { /* diff --git a/tiberiandawn/startup.cpp b/tiberiandawn/startup.cpp index df595266..ffffc3b2 100644 --- a/tiberiandawn/startup.cpp +++ b/tiberiandawn/startup.cpp @@ -48,6 +48,16 @@ void Print_Error_Exit(char* string); #define vc_chdir(x) _wchdir(UTF8To16(x)) extern void Create_Main_Window(HANDLE instance, int width, int height); HINSTANCE ProgramInstance; +#elif VITA +int _newlib_heap_size_user = 192 * 1024 * 1024; +#include +#include + +#define vc_chdir(x) chdir_vita(x) + +void chdir_vita(const char *path) +{ +} #else #include #define vc_chdir(x) chdir(x) @@ -130,7 +140,7 @@ int PASCAL WinMain(HINSTANCE instance, HINSTANCE, char* command_line, int comman printf("Zuwenig Hauptspeicher verf?gbar.\n"); #else #ifdef FRENCH - printf("M‚moire vive (RAM) insuffisante.\n"); + printf("M�moire vive (RAM) insuffisante.\n"); #else printf("Insufficient RAM available.\n"); #endif @@ -201,6 +211,10 @@ int PASCAL WinMain(HINSTANCE instance, HINSTANCE, char* command_line, int comman int main(int argc, char** argv) { +#ifdef VITA + scePowerSetArmClockFrequency(444); +#endif + CCDebugString("C&C95 - Starting up.\n"); #ifdef JAPANESE @@ -210,7 +224,11 @@ int main(int argc, char** argv) /* ** Remember the current working directory and drive. */ +#ifdef VITA + Paths.Init("vanillatd", "CONQUER.INI", "CONQUER.MIX", "ux0:data/VanillaTD"); +#else Paths.Init("vanillatd", "CONQUER.INI", "CONQUER.MIX", argv[0]); +#endif vc_chdir(Paths.Program_Path()); CDFileClass::Refresh_Search_Drives(); @@ -487,6 +505,10 @@ int main(int argc, char** argv) chdir(oldpath); #endif // NOT_FOR_WIN95 +#ifdef VITA + sceKernelExitProcess(0); +#endif + return (EXIT_SUCCESS); } diff --git a/tiberiandawn/teamtype.cpp b/tiberiandawn/teamtype.cpp index 1e65ba4a..1009f5da 100644 --- a/tiberiandawn/teamtype.cpp +++ b/tiberiandawn/teamtype.cpp @@ -358,7 +358,7 @@ void TeamTypeClass::Fill_In(const char* name, const char* entry) p1 = strtok(NULL, ",:"); p2 = strtok(NULL, ",:"); mission.Mission = Mission_From_Name(p1); - mission.Argument = atoi(p2); + mission.Argument = p2 ? atoi(p2) : 0; MissionList[i] = mission; } diff --git a/tiberiandawn/techno.cpp b/tiberiandawn/techno.cpp index 44dcbf49..fd6fd480 100644 --- a/tiberiandawn/techno.cpp +++ b/tiberiandawn/techno.cpp @@ -2464,6 +2464,8 @@ BulletClass* TechnoClass::Fire_At(TARGET target, int which) COORDINATE source, dest; source = Fire_Coord(which); dest = As_Coord(target); + //obelisk laser is not cleared and is causing slowdowns after shooting +#ifndef VITA if (SpecialDialog == SDLG_NONE) { Map.Coord_To_Pixel(source, x, y); Map.Coord_To_Pixel(dest, x1, y1); @@ -2491,6 +2493,7 @@ BulletClass* TechnoClass::Fire_At(TARGET target, int which) LineMaxFrames = 5; Map.Flag_To_Redraw(true); } +#endif new SmudgeClass(Random_Pick(SMUDGE_SCORCH1, SMUDGE_SCORCH6), As_Coord(target)); } diff --git a/vita/sce_sys/icon_ra.png b/vita/sce_sys/icon_ra.png new file mode 100644 index 0000000000000000000000000000000000000000..b52db85e548107664d559aa4743959e80db775d6 GIT binary patch literal 21330 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%0DFq;QvRl@X9-y{W1Il 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 literal 0 HcmV?d00001 diff --git a/vita/sce_sys/icon_td.png b/vita/sce_sys/icon_td.png new file mode 100644 index 0000000000000000000000000000000000000000..a5dae5393c003241b64e355ccb8fac4e9b385a91 GIT binary patch literal 3421 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 literal 0 HcmV?d00001 diff --git a/vita/sce_sys/livearea/contents/bg.png b/vita/sce_sys/livearea/contents/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e270a54e90d6c0b2e4eacfc1cd45e2ee0e91d0b7 GIT binary patch literal 135173 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