From 0fb3e3e5682841f4f12ffaa3f26e84499b76ddd0 Mon Sep 17 00:00:00 2001 From: Ronald Kinard Date: Wed, 19 Mar 2014 18:24:23 -0500 Subject: [PATCH] sdl2: remove unsupported platform-specific folders --- src/sdl2/SRB2CE/Makefile.cfg | 12 - src/sdl2/SRB2CE/SRB2CE.zip | Bin 34234 -> 0 bytes src/sdl2/SRB2CE/cehelp.c | 447 -------------------- src/sdl2/SRB2CE/cehelp.h | 63 --- src/sdl2/SRB2DC/.gitignore | 1 - src/sdl2/SRB2DC/IP.BIN | Bin 32768 -> 0 bytes src/sdl2/SRB2DC/Makefile.cfg | 53 --- src/sdl2/SRB2DC/SELFBOOT.BIN | Bin 1408808 -> 0 bytes src/sdl2/SRB2DC/VMU.xbm | 19 - src/sdl2/SRB2DC/dchelp.c | 134 ------ src/sdl2/SRB2DC/dchelp.h | 51 --- src/sdl2/SRB2DC/i_udp.c | 455 --------------------- src/sdl2/SRB2DC/scramble.c | 259 ------------ src/sdl2/SRB2PS3/ICON0.png | Bin 3678 -> 0 bytes src/sdl2/SRB2PS3/Makefile.cfg | 139 ------- src/sdl2/SRB2PS3/sfo.xml | 39 -- src/sdl2/SRB2PSP/ICON0.png | Bin 3678 -> 0 bytes src/sdl2/SRB2PSP/Makefile.cfg | 126 ------ src/sdl2/SRB2PSP/PIC1.png | Bin 20300 -> 0 bytes src/sdl2/SRB2PSP/psp-prxsign/.gitignore | 2 - src/sdl2/SRB2PSP/psp-prxsign/Makefile | 22 - src/sdl2/SRB2PSP/psp-prxsign/cmac.c | 130 ------ src/sdl2/SRB2PSP/psp-prxsign/cmac.h | 38 -- src/sdl2/SRB2PSP/psp-prxsign/kirk_header.h | 25 -- src/sdl2/SRB2PSP/psp-prxsign/main.c | 190 --------- src/sdl2/SRB2PSP/psp-prxsign/psp_header.h | 29 -- src/sdl2/SRB2WII/Makefile.cfg | 124 ------ src/sdl2/SRB2WII/icon.png | Bin 11247 -> 0 bytes src/sdl2/SRB2WII/meta.xml | 18 - src/sdl2/SRB2XBOX/Makefile.cfg | 44 -- src/sdl2/SRB2XBOX/xboxhelp.c | 91 ----- src/sdl2/SRB2XBOX/xboxhelp.h | 6 - 32 files changed, 2517 deletions(-) delete mode 100644 src/sdl2/SRB2CE/Makefile.cfg delete mode 100644 src/sdl2/SRB2CE/SRB2CE.zip delete mode 100644 src/sdl2/SRB2CE/cehelp.c delete mode 100644 src/sdl2/SRB2CE/cehelp.h delete mode 100644 src/sdl2/SRB2DC/.gitignore delete mode 100644 src/sdl2/SRB2DC/IP.BIN delete mode 100644 src/sdl2/SRB2DC/Makefile.cfg delete mode 100644 src/sdl2/SRB2DC/SELFBOOT.BIN delete mode 100644 src/sdl2/SRB2DC/VMU.xbm delete mode 100644 src/sdl2/SRB2DC/dchelp.c delete mode 100644 src/sdl2/SRB2DC/dchelp.h delete mode 100644 src/sdl2/SRB2DC/i_udp.c delete mode 100644 src/sdl2/SRB2DC/scramble.c delete mode 100644 src/sdl2/SRB2PS3/ICON0.png delete mode 100644 src/sdl2/SRB2PS3/Makefile.cfg delete mode 100644 src/sdl2/SRB2PS3/sfo.xml delete mode 100644 src/sdl2/SRB2PSP/ICON0.png delete mode 100644 src/sdl2/SRB2PSP/Makefile.cfg delete mode 100644 src/sdl2/SRB2PSP/PIC1.png delete mode 100644 src/sdl2/SRB2PSP/psp-prxsign/.gitignore delete mode 100644 src/sdl2/SRB2PSP/psp-prxsign/Makefile delete mode 100644 src/sdl2/SRB2PSP/psp-prxsign/cmac.c delete mode 100644 src/sdl2/SRB2PSP/psp-prxsign/cmac.h delete mode 100644 src/sdl2/SRB2PSP/psp-prxsign/kirk_header.h delete mode 100644 src/sdl2/SRB2PSP/psp-prxsign/main.c delete mode 100644 src/sdl2/SRB2PSP/psp-prxsign/psp_header.h delete mode 100644 src/sdl2/SRB2WII/Makefile.cfg delete mode 100644 src/sdl2/SRB2WII/icon.png delete mode 100644 src/sdl2/SRB2WII/meta.xml delete mode 100644 src/sdl2/SRB2XBOX/Makefile.cfg delete mode 100644 src/sdl2/SRB2XBOX/xboxhelp.c delete mode 100644 src/sdl2/SRB2XBOX/xboxhelp.h diff --git a/src/sdl2/SRB2CE/Makefile.cfg b/src/sdl2/SRB2CE/Makefile.cfg deleted file mode 100644 index 8d4ae3e48..000000000 --- a/src/sdl2/SRB2CE/Makefile.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# -# Makefile.cfg for WinCE with GCC -# - -OPTS+=-D_WIN32_WCE -D_UNICODE -SDL_CFLAGS?= -SDL_LDFLAGS?= -NOHS=1 -NOHW=1 -NONET=1 -NOMIXER=1 -NOPNG=1 diff --git a/src/sdl2/SRB2CE/SRB2CE.zip b/src/sdl2/SRB2CE/SRB2CE.zip deleted file mode 100644 index 3ac8530dcb124cbda512a7d469da933c3fc974bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34234 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 HAkhB;OHxy? diff --git a/src/sdl2/SRB2CE/cehelp.c b/src/sdl2/SRB2CE/cehelp.c deleted file mode 100644 index b9fafd040..000000000 --- a/src/sdl2/SRB2CE/cehelp.c +++ /dev/null @@ -1,447 +0,0 @@ -// Emacs style mode select -*- C++ -*- -//----------------------------------------------------------------------------- -// -// Copyright (C) 2004 by Sonic Team Jr. -// -// This program 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 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// DESCRIPTION: -// stub and replacement "ANSI" C functions for use under Windows CE -// -//----------------------------------------------------------------------------- - -#include "../../doomdef.h" -#include "cehelp.h" - -#define _SEC_IN_MINUTE 60 -#define _SEC_IN_HOUR 3600 -#define _SEC_IN_DAY 86400 - -static const int DAYS_IN_MONTH[12] = -{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; - -#define _DAYS_IN_MONTH(x) ((x == 1) ? days_in_feb : DAYS_IN_MONTH[x]) - -static const int _DAYS_BEFORE_MONTH[12] = -{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; - -#define _ISLEAP(y) (((y) % 4) == 0 && (((y) % 100) != 0 || (((y)+1900) % 400) == 0)) -#define _DAYS_IN_YEAR(year) (_ISLEAP(year) ? 366 : 365) - -char *strerror(int ecode) -{ - static char buff[1024 + 1]; - DWORD dwMsgLen = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, NULL, - ecode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &buff[0], 1024, NULL); - return buff; -} - -int unlink( const char *filename ) -{ - return remove(filename); -} - -int remove( const char *path ) -{ - return DeleteFileA(path)-1; -} - -int rename( const char *oldname, const char *newname ) -{ - return MoveFileA(oldname, newname)!=0; -} - -static inline void STToTM(const SYSTEMTIME *st, struct tm *tm) -{ - if (!st || !tm) return; - tm->tm_sec = st->wSecond; - tm->tm_min = st->wMinute; - tm->tm_hour = st->wHour; - tm->tm_mday = st->wDay; - tm->tm_mon = st->wMonth - 1; - tm->tm_year = st->wYear - 1900; - tm->tm_wday = st->wDayOfWeek; - tm->tm_yday = 0; - tm->tm_isdst = 0; -} - -time_t time(time_t *T) -{ - time_t returntime; - SYSTEMTIME st; - struct tm stft; - GetSystemTime(&st); - STToTM(&st,&stft); - returntime = mktime(&stft); - if (T) *T = returntime; - return returntime; -} - -static inline UINT64 TTtoFT(const time_t wt, FILETIME *ft) -{ - UINT64 temptime = wt; // FILETIME: 1/(10^7) secs since January 1, 1601 - temptime *= 10000000; // time_t : 1 secs since January 1, 1970 - // 369 years * 365 days * 24 hours * 60 mins * 60 secs * 10 - // 123 leaps days * 24 hours * 60 mins * 60 secs * 10 - temptime += 116444736000000000; - if (ft) CopyMemory(ft,&temptime,sizeof (ULARGE_INTEGER)); - return temptime; -} - -static struct tm cehelptm; - -struct tm * localtime(const time_t *CLOCK) -{ - SYSTEMTIME st; - FILETIME stft; - UINT64 ftli = 0; - if (CLOCK) ftli = TTtoFT(*CLOCK, &stft); - if (ftli) - FileTimeToSystemTime(&stft,&st); - else - GetSystemTime(&st); - STToTM(&st,&cehelptm); - if (st.wYear >= 1970) - return &cehelptm; - else - return NULL; -} - -static void validate_structure (struct tm *tim_p) // from newlib -{ - div_t res; - int days_in_feb = 28; - - /* calculate time & date to account for out of range values */ - if (tim_p->tm_sec < 0 || tim_p->tm_sec > 59) - { - res = div (tim_p->tm_sec, 60); - tim_p->tm_min += res.quot; - if ((tim_p->tm_sec = res.rem) < 0) - { - tim_p->tm_sec += 60; - --tim_p->tm_min; - } - } - - if (tim_p->tm_min < 0 || tim_p->tm_min > 59) - { - res = div (tim_p->tm_min, 60); - tim_p->tm_hour += res.quot; - if ((tim_p->tm_min = res.rem) < 0) - { - tim_p->tm_min += 60; - --tim_p->tm_hour; - } - } - - if (tim_p->tm_hour < 0 || tim_p->tm_hour > 23) - { - res = div (tim_p->tm_hour, 24); - tim_p->tm_mday += res.quot; - if ((tim_p->tm_hour = res.rem) < 0) - { - tim_p->tm_hour += 24; - --tim_p->tm_mday; - } - } - - if (tim_p->tm_mon > 11) - { - res = div (tim_p->tm_mon, 12); - tim_p->tm_year += res.quot; - if ((tim_p->tm_mon = res.rem) < 0) - { - tim_p->tm_mon += 12; - --tim_p->tm_year; - } - } - - if (_DAYS_IN_YEAR (tim_p->tm_year) == 366) - days_in_feb = 29; - - if (tim_p->tm_mday <= 0) - { - while (tim_p->tm_mday <= 0) - { - if (--tim_p->tm_mon == -1) - { - tim_p->tm_year--; - tim_p->tm_mon = 11; - days_in_feb = - ((_DAYS_IN_YEAR (tim_p->tm_year) == 366) ? - 29 : 28); - } - tim_p->tm_mday += _DAYS_IN_MONTH (tim_p->tm_mon); - } - } - else - { - while (tim_p->tm_mday > _DAYS_IN_MONTH (tim_p->tm_mon)) - { - tim_p->tm_mday -= _DAYS_IN_MONTH (tim_p->tm_mon); - if (++tim_p->tm_mon == 12) - { - tim_p->tm_year++; - tim_p->tm_mon = 0; - days_in_feb = - ((_DAYS_IN_YEAR (tim_p->tm_year) == 366) ? - 29 : 28); - } - } - } -} - -time_t mktime (struct tm *tim_p) // from newlib -{ - time_t tim = 0; - long days = 0; - int year; - - /* validate structure */ - validate_structure (tim_p); - - /* compute hours, minutes, seconds */ - tim += tim_p->tm_sec + (tim_p->tm_min * _SEC_IN_MINUTE) + - (tim_p->tm_hour * _SEC_IN_HOUR); - - /* compute days in year */ - days += tim_p->tm_mday - 1; - days += _DAYS_BEFORE_MONTH[tim_p->tm_mon]; - if (tim_p->tm_mon > 1 && _DAYS_IN_YEAR (tim_p->tm_year) == 366) - days++; - - /* compute day of the year */ - tim_p->tm_yday = days; - - if (tim_p->tm_year > 10000 - || tim_p->tm_year < -10000) - { - return (time_t) -1; - } - - /* compute days in other years */ - if (tim_p->tm_year > 70) - { - for (year = 70; year < tim_p->tm_year; year++) - days += _DAYS_IN_YEAR (year); - } - else if (tim_p->tm_year < 70) - { - for (year = 69; year > tim_p->tm_year; year--) - days -= _DAYS_IN_YEAR (year); - days -= _DAYS_IN_YEAR (year); - } - - /* compute day of the week */ - if ((tim_p->tm_wday = (days + 4) % 7) < 0) - tim_p->tm_wday += 7; - - /* compute total seconds */ - tim += (days * _SEC_IN_DAY); - - return tim; -} - -#undef WINAPI -#define WINAPI __stdcall //__delcspec(dllexport) - -#ifdef _MSC_VER -//#pragma warning(disable : 4273) -#endif - - -static __forceinline int STRtoWSTR(LPCSTR lpMultiByteStr, int cchMultiByte, - LPWSTR lpWideCharStr, int cchWideChar) -{ - return MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,lpMultiByteStr, - cchMultiByte,lpWideCharStr,cchWideChar); -} - -static __forceinline int WSTRtoSTR(LPCWSTR lpWideCharStr, int cchWideChar, - LPSTR lpMultiByteStr, int cbMultiByte) -{ - return WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK|WC_SEPCHARS, - lpWideCharStr,cchWideChar,lpMultiByteStr,cbMultiByte,NULL,NULL); -} - -DWORD WINAPI FormatMessageA( - DWORD dwFlags, - LPCVOID lpSource, - DWORD dwMessageId, - DWORD dwLanguageId, - LPSTR lpBuffer, - DWORD nSize, - va_list *Arguments) -{ - const int nSizeW = STRtoWSTR(lpBuffer,nSize,NULL,0); - int nSizeF = 0; - LPWSTR lpBufferW = alloca(sizeof (wchar_t)*nSizeW); - LPWSTR lpSourceW = NULL; - - if (!lpBufferW) - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - ZeroMemory(lpBuffer,nSize); - return nSizeF; - } - - if (dwFlags & FORMAT_MESSAGE_FROM_STRING) - { - const int sLen = STRtoWSTR(lpSource, -1, NULL, 0); - lpSourceW = alloca(sizeof (wchar_t)*sLen); - - if (lpSourceW) - STRtoWSTR(lpSource, -1, lpSourceW, sLen); - else - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return nSizeF; - } - } - - if (lpSourceW) - nSizeF = FormatMessageW(dwFlags, lpSourceW, dwMessageId, dwLanguageId, - lpBufferW, nSizeW, Arguments); - else - nSizeF = FormatMessageW(dwFlags, lpSource, dwMessageId, dwLanguageId, - lpBufferW, nSizeW, Arguments); - - return WSTRtoSTR(lpBufferW, nSizeF, lpBuffer, nSize); -} - -BOOL WINAPI DeleteFileA( - LPCSTR lpFileName) -{ - const int sLen = STRtoWSTR(lpFileName, -1, NULL, 0); - LPWSTR lpFileNameW = alloca(sizeof (wchar_t)*sLen); - - if (lpFileNameW) - STRtoWSTR(lpFileName, -1, lpFileNameW, sLen); - else - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return 0; - } - - return DeleteFileW(lpFileNameW); -} - -BOOL WINAPI MoveFileA( - LPCSTR lpExistingFileName, - LPCSTR lpNewFileName -) -{ - const int sLen1 = STRtoWSTR(lpExistingFileName, -1, NULL, 0); - LPWSTR lpExistingFileNameW = alloca(sizeof (wchar_t)*sLen1); - - const int sLen2 = STRtoWSTR(lpNewFileName, -1, NULL, 0); - LPWSTR lpNewFileNameW = alloca(sizeof (wchar_t)*sLen2); - - - if (!lpExistingFileNameW || !lpNewFileNameW) - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return 0; - } - - STRtoWSTR(lpExistingFileName, -1, lpExistingFileNameW, sLen1); - STRtoWSTR(lpNewFileName, -1, lpNewFileNameW, sLen2); - - return MoveFileW(lpExistingFileNameW, lpNewFileNameW); -} - - -HANDLE WINAPI CreateFileA( - LPCSTR lpFileName, - DWORD dwDesiredAccess, - DWORD dwShareMode, - LPSECURITY_ATTRIBUTES lpSecurityAttributes, - DWORD dwCreationDisposition, - DWORD dwFlagsAndAttributes, - HANDLE hTemplateFile) -{ - const int sLen = STRtoWSTR(lpFileName, -1, NULL, 0); - LPWSTR lpFileNameW = alloca(sizeof (wchar_t)*sLen); - - if (lpFileNameW) - STRtoWSTR(lpFileName, -1, lpFileNameW, sLen); - else - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return INVALID_HANDLE_VALUE; - } - - return CreateFileW(lpFileNameW, dwDesiredAccess, dwShareMode, - lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, - hTemplateFile); -} - -BOOL WINAPI CreateDirectoryA( - LPCSTR lpPathName, - LPSECURITY_ATTRIBUTES lpSecurityAttributes) -{ - const int sLen = STRtoWSTR(lpPathName, -1, NULL, 0); - LPWSTR lpPathNameW = alloca(sizeof (wchar_t)*sLen); - - if (lpPathNameW) - STRtoWSTR(lpPathName, -1, lpPathNameW, sLen); - else - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return 0; - } - - return CreateDirectoryW(lpPathNameW, lpSecurityAttributes); -} - -int WINAPI MessageBoxA( - HWND hWnd , - LPCSTR lpText, - LPCSTR lpCaption, - UINT uType) -{ - const int sLen1 = STRtoWSTR(lpText, -1, NULL, 0); - LPWSTR lpTextW = alloca(sizeof (wchar_t)*sLen1); - - const int sLen2 = STRtoWSTR(lpCaption, -1, NULL, 0); - LPWSTR lpCaptionW = alloca(sizeof (wchar_t)*sLen2); - - - if (!lpTextW || !lpCaptionW) - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return 0; - } - - STRtoWSTR(lpText, -1, lpTextW, sLen1); - STRtoWSTR(lpCaption, -1, lpCaptionW, sLen2); - - return MessageBoxW(hWnd, lpTextW, lpCaptionW, uType); -} - -VOID WINAPI OutputDebugStringA( - LPCSTR lpOutputString) -{ - const int sLen = STRtoWSTR(lpOutputString, -1, NULL, 0); - LPWSTR lpOutputStringW = alloca(sizeof (wchar_t)*sLen); - - if (lpOutputStringW) - STRtoWSTR(lpOutputString, -1, lpOutputStringW, sLen); - else - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return; - } - - OutputDebugStringW(lpOutputStringW); -} - diff --git a/src/sdl2/SRB2CE/cehelp.h b/src/sdl2/SRB2CE/cehelp.h deleted file mode 100644 index bc265b058..000000000 --- a/src/sdl2/SRB2CE/cehelp.h +++ /dev/null @@ -1,63 +0,0 @@ -// Emacs style mode select -*- C++ -*- -//----------------------------------------------------------------------------- -// -// Copyright (C) 2004 by Sonic Team Jr. -// -// This program 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 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// DESCRIPTION: -// stub and replacement "ANSI" C functions for use under Windows CE -// -//----------------------------------------------------------------------------- - -#ifndef __I_WINCE__ -#define __I_WINCE__ - -#ifdef USEASMCE -#define USEASM // Remline if NASM doesn't work on x86 targets -#endif - -char *strerror(int ecode); -int access(const char *path, int amode); -int unlink( const char *filename ); -int remove( const char *path ); -int rename( const char *oldname, const char *newname ); -//CreateDirectoryEx( const char *currectpath, const char *path,SECURITY_ATTRIBUTES) - -#ifndef _TIME_T_DEFINED -typedef long time_t; /* time value */ -#define _TIME_T_DEFINED /* avoid multiple def's of time_t */ -#endif - -time_t time(time_t *T); - -#ifndef __GNUC__ -#ifndef _TM_DEFINED -struct tm { - int tm_sec; /* seconds after the minute - [0,59] */ - int tm_min; /* minutes after the hour - [0,59] */ - int tm_hour; /* hours since midnight - [0,23] */ - int tm_mday; /* day of the month - [1,31] */ - int tm_mon; /* months since January - [0,11] */ - int tm_year; /* years since 1900 */ - int tm_wday; /* days since Sunday - [0,6] */ - int tm_yday; /* days since January 1 - [0,365] */ - int tm_isdst; /* daylight savings time flag */ - }; -#define _TM_DEFINED -#endif - -struct tm * localtime(const time_t *CLOCK); - -time_t mktime (struct tm *tim_p); -#endif - -#endif diff --git a/src/sdl2/SRB2DC/.gitignore b/src/sdl2/SRB2DC/.gitignore deleted file mode 100644 index a966585d4..000000000 --- a/src/sdl2/SRB2DC/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/scramble diff --git a/src/sdl2/SRB2DC/IP.BIN b/src/sdl2/SRB2DC/IP.BIN deleted file mode 100644 index c3366213bde1c6b5dc03db4cfdab85c1c74ef5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeHvdw5&bmG3?ey)4;!I1k5hbEG5Nabgo$QXWn)_@Nk*lEkuPDDB4#vg8DqOTmdl zX}>!cD^46NXq%(5|xXh)N3@LZMxf3}C!tK}6NJ< zwxGwm+-LW#zADhZ-tBVR?O(sK%}zgU_4W1Fx$Etn$m?0nP3|Qqdg|+!yFKoutO^%* zu=CbHTg&Ptt!p>Xy4Jhz-nx3r#;$Mosyza2{&g+Bw)L3OzSf`brMCUQxRS!>KQ#in zQGH^rMRT0yi(6`&4J7FEHPknF-3CG|CWng>#-wS?_*>^jeOukK zvNqBtCT?*zx~~gq9hU1qi5m$z<72?TC{IX=!_5mKF7_YYveeLaa}^)6w0*i~Qzh-G zDB3a4fO)?`*1XdiD%xjo)H-aH&Jb-gkUA1oNL|l}GED@z-S7fNKA|0xo!W%4#Xzdt zX|Jh1ag^_}N~RG5Idsh*hNi%0!{cNq9Uv3+ayr0maY#Z^j-)$0?$dF7AEjwTyWIX> z-|R7?&p>!$Xf`yP-{f69u@A4bpL(mL*^)H2f&(cNGQX*B);IG)>HbB|tL-Jt=ltTJ z5I3Btk*t{UoSz%yW9R(Bpgyigoep(o<@Xr>=7-6UcDziwbaYQ{^r_A=HuKEreAVzu zxfY{Ob=p`9_r8^JU}bkYiA=a9a>6MUvwN*HdE?nmBP(m9Go1!j64A@UxH2n>vUM*R zY8)U#L&$C4CqorTl}MQmZnI6AKb#48JyY>?kn43zv-hVvoNg}8O?V}J@^pvn=407l zgY)&67RZtJDM~ecD&CfbBj)Ii1tdktVYz*(uSJ^wZn|?mTd7NI=*q1g}4M%lt>Gu^)d-7+L~jr!btM@T34F8Koy zIg{`z>EMnYJxWF%AVUuW<3mUzNVmty&^jc!{r7#@h^@E9nGIXEbjT4Y+o>YROXmjC z+olFM7e%rPQp$Fu{S~Anv~I98p7wJ+wA?vZ9G5=KZp?P`TjztrbdU!+CFrdvp+jVd z(P-6nBW-8el?kRhyzXQ1Svij7_BZ<0OSeebuxm?5&UT5L4M}}Um60noP3(hQtQcc{ z8gzGQHd~zyIXXpY##)|vj0`oU3{q91OsX35xX5_9G#kA$VSA)80(#!=<>D4v6Y=aY zg{A@~PmPr65;ogh=ON8i(z(ESNb|!uL7!~I((9F`0y`=BnK4hvfxt}OWTN-ngX31t0s41H5P3-oEZb5I+X zQrT!0sC(H?I@6JbjA#v|(}PZx1D!wJA#BDB!TNA^2l1SZrvr3#>4?eecBR8SW;-3s zLN2ey(~%3kZkIO%t;`{v&*k>_`-+ovS1pxn`yDRp-t;z-IvpjcGtqCIG(Jcrt>3C+ ztEJawSO40ze0w#?xHxn4_o4uW+yA91ru(U1LN>Bh=Dt}}tTd^ukw zo$=?9$>&YV8eqK+x<4Adb>#PbtEJN9>7d=06%ZcFO;?yf- zgJ%MC_A?#UmcNf-M-B+#si1ejESHl^Q1Ctz&s$hU`4{+(nn!^-?3`+21Fp;_?Yr7{ zR9(#5#(YkW+6Za>!_b}ZeW&_-Qb6jGij%S{6P&fL!Ce~Gx74}yE%YC0$@=x~qW$zf z6RGfeT1HEEy`YoH~;xX#qsD@aF^L(^ z#~+7HpfXc&pgSddTgkoIO~v2IZZzF#JI&TDxX!r9JQCNRe2i>M24ElCRC{ z-WFFTkPR;K(fBJHoQFIU&IapcRnHVfZXfNtLHd?N_d3;pN@&0*K~JCtyP0~7^@C!3 zirMqPpb)FiS>7pFuo}tP?L>^Al|Bhh!mCXM^}P*}w|m}9ou{MDJsW#aWc9_l`ssn? z+wyh7Ox=o^x^qC6jyXNhFjM!(nYxv^I&z{?qMmoEb6jonpAPDMoPRPAqH1CPYFavsvnuS|lH}JFr;rWta=A=xkj2 z(ceQ#(Gtv&hJ1EkFCTR zsSHVt-DLEXyJktWzs)8k?O1b7v;M6G3Ep9v_}Zw)e#UP=TsD7fe$o@FweyU#S!15A zvSf3rnj`N&1+2>VJ0&yXfo!0z)D|gCmhP<dJ=oGlX9Hk~iC*%a>0_dP*Lh1D9VjPZ(k{$X%y~@M;;A6UPH4t8%xCi*k z5no~p%gOlNEN@QS$?~Se9W1{#v5Dmki3rQDPJ~##3KCK_*R-r0H8^fh(UDf4 zU5(N@R;on1Ki4j!+?gxe(c>1@gT_RaTpd@#)pL!AZ@anGoP`@D?~s2Z@8PVcViT=4 z5%Q6NG@pcak`f~D7M$xLC?+pOCn8_jWFV`NuS4=9bt2u2)PU5CRD)E9v=pfksUC^0 zYCT&OH@=nevpDhBEZ2>eC4IN^J)>UOHxTk`uO3*J z(bJSDMs0Dj827W2a>)M{FBd0Du$DQaMd&$utQc!qgq~)F@<-K&kT!v0*(TgasNU%L z8bWpFn}Ug_`qMO=7N`ypa)WS#u#4%}twIlfCtpXJesoMH@|C3NpO5JR`|2={f4CMi zY#7dTG&t^vElMs<*yP2dd3&6XDk~AidF)k5oU!Gq1X@D|qW76*qE2ZP7TOu=Eaj)G_9<%aAIqLD@l4jxpZpNZ7)TvC6&6 zc}P5x4y@qI1%r?CEr1Td&qOL9#}%YppuVsi*y5Q4R#KiUPsom!j$MlF34TGlG9H8qQc1xvW>A=;p1JPmteQ52xeOCCMeC_q9HKNvxTK!CIBWkJV zHRXKrEZ)l5=$QyAny<_I?!SBub9es|-tQzzc`u&NX^cD7mpdbFn=@7)Iup$f=jz6??mQa1UseBPA9_Bz)>$0G611K)+tMf}(0s#ZR(b2@yY zcOA~Wligp2_Xc$p6W6(fZi@M8=*OQf3319Vkd8Fgt9iBSN_w)~r5U?cnC_|dErEXX z`LdwLvnc~v5;R+{@?UGM3l>{z{f*YeL8En%f0eZ+Xs|ByH(0BKI%}1GxwSH=u{!-r zt#VMXI{Y519O0}Us*e#70_kdA$^E+0_oq8{uSvMQWEKHr2m2R z&q#86u#3m3$rn=31zRy5H$pz(?pYmaaDK7}Hira5in81V>?efom6h|HH#i%dWig?9 zR>&7Yc;PIG%?go0ceIG*o~V}P-YAd!#!+p^5@$;4*VMOfVM)WTQSp8x6R;-657a$B2|`{V!oSSD(dUejh;aGhzv^(D@=f_|N`LYlK;z3r+ECC+wpwcoTLQ0xd6J35OUHx@g- zX|7gC=++T}=a*}f^lw6I-)RnAc#~A}6W1r)j_b#i4+2ipmVn$G;@&b6QmLeT@PbCt zP#+9YiLI%Z+q*w#8uN7-eZkPRV?tN{SsJ}xl@uaqX$^+-&DHIy?>Cah`tA?|$#CdG-zOK+bdkx}9u6jKDJ=w8D8f$e* z$yOO7zIAg|(H?SD`GN7s8s~IO9dkVLJ*RsKp3{CCx_*}){s=QU%X*KWaCa?&{#%{O zh1I-rikMmKNZwOKBny%r$%I6oBhcpw6)3NJ0)Kab?4Lps$*3|5b!A9b=f++2&hd$s z@JiWHdHenrjBl-6kytTi3)MDzx;^Og3Fclp)90pKA9uo?>r|JD`%vX&qW3h{4tW^#;yC_Q4j(6+!bpWMPZ*f&s`@2Gm zfYqtUno8@Q`h{gl#A0#}Mkfo)4|Ijs$kQ=8B3Wn|?xK8G8{yIQ?=)|0rnQxZF%>7P z(@6Z4%7rz&S)n*lj3^#?ENW1G2ACX1A}IF&CyLMdjW<_WVpN+r#3(f92lXr$21S;O zgCxek?|Rq2$xmmjnwq%kx0}Jq4YFgQk%X!i&9u}c6+9!kp?e`DPFt#yN=nt%zX-|g z1d#-XBp`{Hqi6&+VnqLeZp8jU-9Z{hEI!ELT63^0+5I8a+eqjeWX@PQXY@rvvvRsj z>#Ez!q5F-{{l9=!xOCLHv3VGw45QA$sN6yNjE3+;A0-qIih&)e5-G1UWo*tl2aUNo zgQ45-%!1At4C!X}&uuevwmyduF|)+2CHfYME!%vK8d1ACRF}keG4$Gr6n})Y7vdK7WZc2g!s)&(Ji{ zD7UPvj4WEThy(%w5{X1eZ*MQzv114R+%`lG9XdpwefC*$lP6D- zvuDqOnvj@4wA+OpWV=9OW+H4i7xfd}b~D+o6Z*~Db+ks;Pp>>g zt_D4c-Yi~H(=V6}dJtaHM{CxLW^!qb-rUb$UPH{hS-7kZ;rq?n%WE)C5v$Sn>vj-> z4!YV87W;MNzpW4amOWb_gJJSy@(VKqEzUKTaGIR0*k;$p4sD@Tho2)Wp%}W$_V? z|GudC5v}2eIR2NS<^fLoOYvb&Ga_oAq!oOe<6jjuF;4rc_zv|F_Hj=8 zkoYtYGR?3k{Deo31ETN@{~*T?iNbbH+t0??C2Ah$g#9AluYG~j?ggOQzu`12Kg#VA zF%`c<)bw*25FJt*UgCH#@e6PwX#asW@MzviJE8w$++I;Lz-fPi`F5iNCin07W>C~}TCnmc z9UR>RNPZ{nhF%apW?&Tjvm*3>amEkkI0OEG1!Fu%N!Zdf&r=f2h-&E00Zw47#qz8@ z%t6H{33Lc+V&iFFpfr?mRzFNzl20(3*y3ZK}RV-{PQoG1G|qQ1tBmI(*7uYN&g&AyYoC9 zP$_m%wVqiA=6{l(S;}tlN$hErGw7$v8KuMOG2LMb7hOHd&#)TC%1i8u&U zCjiQ@0E}Z?UScZ-Qc!jkuVIxpfIY--*Jxo&)QKRqL%e2ah7^VswBn1&sC>XDETYQoe$Y{^d6L@8FQHR` zg#Eyr7-D};kDkKD-v7mPyYp-w$gzpOi~;^f)Z%{Oe6X!5p9k`M!aTDDYoEr9dvcV* z=YiRs1N2~?Q>JWKtmem}c6W~MC!fP}SDsNg1XjcX*@owT%xpXZ^h#toJ|DbEc`Np`sD(@T0y3rqR00pra0yFBO{+$LB)*I=$0yucUhYs>7|HFL zA^srsH@P`KqoD_RFgldO^pT6)Vt?@312E3ezZj!^g~GQ{PJ0M@oURuJ7HUS(*(1(S zUM_m=uxbzBmsNHT<=Dk$c$#?}*qr;!gVGcph zSVs&aK!LC?(X#W)r$&sI*75qf&qkB41FveaY1eYH0Bf@r%M3yGmiEPIDm5Gm$37q z1V#|rZr8-=_WR5*sCfJ`H=^CC!3b;v+z-T202>IO^1^tLaRFgo!VBf=q8G!y!YbGZ zpi^huEvnHYRi`VC0H*Vf6A&^SawDkg!Pdk2VH0B9(^psq0K3dv3p;72+z4zHPved< z6QhyDlbcqGT-AcyEk zU2R@pF4FaLITjIM=CRd0qHYgLcyXW5ArQXNh!3pKP^mmZoS@3hazBTDGy9X_mLsGc zexR;l$BZ^;9?da&KlcJP;*cpU1GvH5GeIe^%n`z3s*J*RaiC=!-p@Tx18wRScT#o1 zM3+UtBkH8vXVh6kNpt+}y<0a?jF;7WzWX z|7Gz#*uepd$xBrgtQ|9;{1`=tTA!c7=j@=wa5+~zP*7*Vlpop$8Wv)LJjeF{_l%~W zdLIGa=K<=Z>CI0sImbK(BG6w9X)*gDP*Vh7gdKphgI{LHBzRn$Rnhk%x=(^h96&V) z$l&)cKXu{UhQ446Xo0OK8L&IJBQzkHImrnJ#K-8ynTe<&yC>Lo+rhmi3VSXd2`^3x zJ$zQA&3kjlNt`ujreTf1`&XhCF_(G>eVvK|LSbzX-ZA;mxD24!sk>~GltP(4!rIzK3s^m+8dIUIqs zmS+cX?a|z*tWiU^o^}Kg5cd0CPV;xUVOb*&b?3EDp%J?SM;jccsbInF{q$hQ9To*% z3p+?36d?YE9A2hw18B4MpF;L8vS$p4#rw4{QBm*KP+RwcMthz+iZ4@4k-sMQlB=T) zsfwP8ijoqua=-FA>5X0;H6PWn=NGt`m6OUV($V{bQ_{BM)5=+4%1m#Xl;hL6F48IG z~A3{om{G)r;QM2YsLq-nDvTo^z8%DpF7o_qVgCTY*>1f|JMK>)?-IqT1`ot4^?vtjPQp&aq!c@MKbgD0nuc3cTrnxEMlrCjHDn*;fz1(kf zdoGx#@)Ik+xsbY`OWlY6X6295IqdR?T#C6_Ijc0R{PoAWo+bz&N8dD|yawr#9^t5Y zy6Kc~w1nIzOkJbAo);a^`ZX$hglGjx=|}@NbCVlkMv~GcV!d>PlsR?H(cWKAyuN+6 z?ls*h-BGG26;PEPKz2004*Khc>+arS|9XqRWkX$O%i3=s^RHREZmoaqhPL36eEW^T z7JJuS-F6>-B)7U{$;?mF^6hOm2HO2?7whvKXnVeVrTkCbt{tsyrhiAf(m(rqe_qdz z^D-;s1q2ER6c8vNP(Yx7KmmaQ0tEyL2ow+~AW%S{fItC(0s;jD3J4SsC?HTkpnyOD zfdT>r1PTZg5GWu}K%juYe+&WbC>b~68v>fqi&ruCoq?MFMTS1YcLaKnI+50HSli(C z)UWvbcL_K~K~nTL!rDAK&D{Gb+;0f2 z9G_cH;^%sdWVC0oEVnmz`|wUhZ7hv<4{+mUc5c^VnL9y$aqPrzi^YU6W((JQ7U9=> zln?v*wd*RQbl#$|;&+U`Yq#p{#<-rn+evTN#&u)vkUWU*c7lWIcJ+75&w+QZ!MZM5tz+V!krlM6HCEPYmFX{auAPqJ8m2`CCSI|DrjNv0w<>9s&~BHYhbpKq7?ikQV&uE?6(o-_?8qo zoa1EIr5qXI+ZQ+EtxBPiW-?wHE{&A_m(n{+zim98xqC@F-dGpJY;MZy6H?$ zVNCoseCROCxuKVkpTf(bUZeM?$r1PTZg5GWu}K%js?0f7Pn1q2ER6c8vNP(a}SGX(xG`gzN< diff --git a/src/sdl2/SRB2DC/Makefile.cfg b/src/sdl2/SRB2DC/Makefile.cfg deleted file mode 100644 index 3edaf8a16..000000000 --- a/src/sdl2/SRB2DC/Makefile.cfg +++ /dev/null @@ -1,53 +0,0 @@ -# -# Makefile.cfg for SRB2/Dreamcast -# - -#include $(KOS_BASE)/Makefile.rules - -# -#hmmm, the Dreamcast -# - - HOSTCC:=$(CC) - CC=$(KOS_CC) - PREFIX=$(KOS_CC_BASE)/bin/$(KOS_CC_PREFIX) - OBJDUMP=$(PREFIX)-objdump - OBJCOPY=$(PREFIX)-objcopy - - #NOHW=1 #No working MiniGL right now - NOHS=1 #No HWSound right now -ifndef LWIP - NONET=1 #No LWIP -endif - #i_net_o=$(OBJDIR)/i_udp.o #use KOS's UDP - #NOMIXER=1 #Basic sound only - NOIPX=1 #No IPX network code - NOPNG=1 #No Screenshot - - OPTS=$(KOS_CFLAGS) -DUNIXCOMMON -DDC -ifndef NOHW - OPTS+=-DSTATIC_OPENGL -DMINI_GL_COMPATIBILITY -DKOS_GL_COMPATIBILITY -endif - SDL_CFLAGS?=-I$(KOS_BASE)/addons/include/SDL - SDL_LDFLAGS?=-lSDL - LDFLAGS=$(KOS_LDFLAGS) - LIBS:=$(KOS_LIBS) -lconio -lm -ifndef NOMIXER - LIBS:=-loggvorbisplay -lSDL $(LIBS) -endif - -ifdef LWIP - OPTS+=-I$(KOS_BASE)/../kos-ports/lwip/kos/include -I$(KOS_BASE)/../kos-ports/lwip/lwip/src/include/ipv4 -I$(KOS_BASE)/../kos-ports/lwip/lwip/src/include -DIPv4 - LIBS:=-llwip4 -lkosutils $(LIBS) - OPTS+=-DHAVE_LWIP -endif -ifndef NOHW - LIBS+=-lgl -endif - - i_system_o+=$(OBJDIR)/dchelp.o - i_main_o=$(KOS_START) $(OBJDIR)/i_main.o $(OBJEXTRA) - - # name of the exefile - EXENAME?=SRB2.elf - BINNAME?=SRB2.BIN diff --git a/src/sdl2/SRB2DC/SELFBOOT.BIN b/src/sdl2/SRB2DC/SELFBOOT.BIN deleted file mode 100644 index a87ee386927e4dd72d947aa08faecd1b94677c93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408808 zcmeI(dz8)f;{WlzhnPZ5E=4r988PHeQ=)PyQDSn>rDn{GjK7;T_7fLkr9a_#g`;Xt+Ykk-H{qx3A zcq2f7009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5;&|4RZ1ZIiO+CNy1DI;+Z(gxhMx<;@Ac8d@Gos5)%b+=N5bs}@ZvzP!>8 zRez{@WsSJ&67KmRsh~{J^67)xeO*2&uUP3#55$z+T(V}BY6VS#+iqx_K4Q-0yUOgl zVrPSdQ0|ZhzfHU}5dKe0kx=v8{sVGDDfI&}g^XvC>s-KWlhY?FCo3;A)O={d(e{aZ z`UJ~ASvKpMl~YS*#qCKb^FwSxrDlnFwQrxDJ!sH?+zVe?D>fJm7JhN7+Vzt|%^!R) zH}k@y3*V(vR{zWkpERP>)uqmVQc8nR$H5sHnK_~0&JuwZRW1#LRt6`9|7?GpLLKwc z`e)^&UHJ03gX0Q+%Hg-)lQt}Ld*-mb%-pQsNBk}I_wkJ;PwjWdv-8tx)!$n`W=dk8 z-F+4%SKC?jlM>AnGn%E9ukyo`__X5B+*H3zYM|L=^|5$3Z z_P=D62>jA_{leg+z|#NRHT9t#!QX!m1lkVB8TKXvqPP7(+UTY^I#}+=YZ^t3op*Ra&Ta?`lqMF=EgQF zS+8lm5`kdKrNP42XVAd3!W#uTrVTm&$F=O6nN|ptHz1VPH#5}bp3WJ?r_G)eGcxgx z#G|$H0tu5=uB(&SbX7t@r|NmdCMU&ZCrnFEsC8Xl>hcHrmQBbGWn7Zb?(wCSM%`ozII&QmVIZ`{e9SD zg)1vIIiY>g{UzG`aXK^c{A-#pZA@bPuw|jDTbpF2_nS3;V%17FYzr2ido~SDtn^T& z1)ZzxD$!zP#?*&ix^HHU5))STEjn!1O^Fkp&8)byMDvvynT_wfKCfxie3uY9}KAO=iyXc6=7G#VlnVpgMVn*Mjt?heuPAJ=J>$BNKtF^6CxWeG8 z!KNc(5^5#o-IG!5@!3_g2P6!xQ8M9!Ce>;+?O)`{#FLu_7rr2SD<%Xp3g3TPF`;O% zaN!w+|6F(t`{oW9dSUqW0vBGvfB&s-TR6T!7d~`mK;DJ-$=_TZNH6>z|NfMYDWL{A z8KIUXCzPEKH=%4^!)eJ0?SG6NUvgbAVO+lnaT$SPOUrL5zqMKUxZ=T1SCkICS$$fW zkuSt0ygIZ>>6B&(+35)x?GySJUTpBZ@zdswh{*_kb$oor%ePOSTr4i(mir#;6zo6m z&Q9Iur?>1=kg};^ks;+;CQf-Jw#bpI8Wx+}Fmr0}bGf0kiixZ0j9hr<QIf z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 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 E52|=-G5`Po diff --git a/src/sdl2/SRB2DC/VMU.xbm b/src/sdl2/SRB2DC/VMU.xbm deleted file mode 100644 index 0d56985f3..000000000 --- a/src/sdl2/SRB2DC/VMU.xbm +++ /dev/null @@ -1,19 +0,0 @@ -#define VMU_width 48 -#define VMU_height 32 -static unsigned char VMU_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x58, 0x75, 0x00, 0x00, 0x00, 0x00, 0xee, 0xaa, 0x00, 0x00, - 0x00, 0x86, 0x55, 0x55, 0x01, 0x00, 0x00, 0xda, 0xc8, 0xaf, 0x00, 0x00, - 0x00, 0x62, 0x55, 0x54, 0x00, 0x00, 0x00, 0x32, 0xa2, 0x6c, 0x00, 0x00, - 0x00, 0x5c, 0x55, 0xfd, 0x01, 0x00, 0x00, 0xac, 0x88, 0xaa, 0x02, 0x00, - 0x00, 0x54, 0x75, 0x55, 0x05, 0x00, 0x00, 0xac, 0xbf, 0xaa, 0x0a, 0x00, - 0x00, 0xd6, 0x61, 0x55, 0x15, 0x00, 0x00, 0xe9, 0xc0, 0xaa, 0x2a, 0x00, - 0x00, 0x39, 0x40, 0x55, 0x55, 0x00, 0x00, 0x6d, 0xc0, 0xaa, 0xbe, 0x00, - 0x00, 0x6d, 0x40, 0xd5, 0xc3, 0x00, 0x00, 0x6d, 0xc0, 0xea, 0x00, 0x00, - 0x00, 0x29, 0x60, 0xf5, 0x00, 0x00, 0x00, 0x26, 0xe0, 0xfa, 0x00, 0x00, - 0x00, 0x58, 0xb8, 0xbd, 0x00, 0x00, 0x00, 0x84, 0x07, 0xdf, 0x00, 0x00, - 0x00, 0x08, 0x20, 0xae, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x5f, 0x01, 0x00, - 0x00, 0xc0, 0x3f, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/src/sdl2/SRB2DC/dchelp.c b/src/sdl2/SRB2DC/dchelp.c deleted file mode 100644 index 5fdf04bc2..000000000 --- a/src/sdl2/SRB2DC/dchelp.c +++ /dev/null @@ -1,134 +0,0 @@ -// Emacs style mode select -*- C++ -*- -//----------------------------------------------------------------------------- -// -// Copyright (C) 2006 by Sonic Team Jr. -// -// This program 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 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// DESCRIPTION: -// stub and replacement "ANSI" C functions for use on Dreamcast/KOS -// -//----------------------------------------------------------------------------- -#include -#include -#ifndef HAVE_LWIP -#include -#endif -#include "../../doomdef.h" -#include "dchelp.h" - -int access(const char *path, int amode) -{ - file_t handle = FILEHND_INVALID; - - if (amode == F_OK || amode == R_OK) - handle=fs_open(path,O_RDONLY); - else if (amode == (R_OK|W_OK)) - handle=fs_open(path,O_RDWR); - else if (amode == W_OK) - handle=fs_open(path,O_WRONLY); - - if (handle != FILEHND_INVALID) - { - fs_close(handle); - return 0; - } - - return -1; -} - -double hypot(double x, double y) -{ - double ax, yx, yx2, yx1; - if (abs(y) > abs(x)) // |y|>|x| - { - ax = abs(y); // |y| => ax - yx = (x/y); - } - else // |x|>|y| - { - ax = abs(x); // |x| => ax - yx = (x/y); - } - yx2 = yx*yx; // (x/y)^2 - yx1 = sqrt(1+yx2); // (1 + (x/y)^2)^1/2 - return ax*yx1; // |x|*((1 + (x/y)^2)^1/2) -} - -#if !(defined (NONET) || defined (NOMD5)) -#ifdef HAVE_LWIP - -#include - -static uint8 ip[4]; -static char *h_addr_listtmp[2] = {ip, NULL}; -static struct hostent hostenttmp = {NULL, NULL, 0, 1, h_addr_listtmp}; - -struct hostent *gethostbyname(const char *name) -{ - struct sockaddr_in dnssrv; - dnssrv.sin_family = AF_INET; - dnssrv.sin_port = htons(53); - dnssrv.sin_addr.s_addr = htonl(0x0a030202); ///< what? - if (lwip_gethostbyname(&dnssrv, name, ip) < 0) - return NULL; - else - return &hostenttmp; -} -#else - -struct hostent *gethostbyname(const char *name) -{ - (void)name; - return NULL; -} - -int ioctl(int s, long cmd, void *argp) -{ - return fs_ioctl(s, argp, cmd); //FIONBIO? -} - -int select(int maxfdp1, void *readset, void *writeset, void *exceptset, - void *timeout) -{ - (void)maxfdp1; - (void)readset; - (void)writeset; - (void)exceptset; - (void)timeout; - errno = EAFNOSUPPORT; - return -1; -} - -int getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen) -{ - (void)s; - (void)level; //SOL_SOCKET - (void)optname; //SO_RCVBUF, SO_ERROR - (void)optval; - (void)optlen; - errno = EAFNOSUPPORT; - return -1; -} - -int setsockopt (int s, int level, int optname, void *optval, socklen_t optlen) -{ - (void)s; - (void)level; //SOL_SOCKET - (void)optname; //SO_REUSEADDR, SO_BROADCAST, SO_RCVBUF - (void)optval; - (void)optlen; - errno = EAFNOSUPPORT; - return -1; -} - -#endif -#endif diff --git a/src/sdl2/SRB2DC/dchelp.h b/src/sdl2/SRB2DC/dchelp.h deleted file mode 100644 index 236f31110..000000000 --- a/src/sdl2/SRB2DC/dchelp.h +++ /dev/null @@ -1,51 +0,0 @@ -// Emacs style mode select -*- C++ -*- -//----------------------------------------------------------------------------- -// -// Copyright (C) 2006 by Sonic Team Jr. -// -// This program 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 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// DESCRIPTION: -// stub and replacement "ANSI" C functions for use on Dreamcast/KOS -// -//----------------------------------------------------------------------------- - -#ifndef __I_DREAMCAST__ -#define __I_DREAMCAST__ - -struct hostent -{ - char *h_name; /* Official name of host. */ - char **h_aliases; /* Alias list. */ - int h_addrtype; /* Host address type. */ - int h_length; /* Length of address. */ - char **h_addr_list; /* List of addresses from name server. */ -#define h_addr h_addr_list[0] /* Address, for backward compatibility. */ -}; - -struct hostent *gethostbyname(const char *name); - -#ifndef HAVE_LWIP -#define INADDR_NONE ((uint32) 0xffffffff) -#define INADDR_LOOPBACK ((uint32) 0x7f000001) -#define SOCK_STREAM 1 -#define FIONBIO 0 -#define SOL_SOCKET 0 -#define SO_ERROR 0 -#define SO_REUSEADDR 0 -#define SO_BROADCAST 0 -#define SO_RCVBUF 0 -int ioctl(int s, long cmd, void *argp); -int select(int maxfdp1, void *readset, void *writeset, void *exceptset, void *timeout); -int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); -int setsockopt(int s, int level, int optname, void *optval, socklen_t optlen); -#endif -#endif diff --git a/src/sdl2/SRB2DC/i_udp.c b/src/sdl2/SRB2DC/i_udp.c deleted file mode 100644 index ec5e305fc..000000000 --- a/src/sdl2/SRB2DC/i_udp.c +++ /dev/null @@ -1,455 +0,0 @@ -// Emacs style mode select -*- C++ -*- -//----------------------------------------------------------------------------- -// Copyright (C) 1993-1996 by id Software, Inc. -// Portions Copyright (C) 2005 by Sonic Team Jr. -// -// This program 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 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -//----------------------------------------------------------------------------- -/// \file -/// \brief KOS UDP network interface - -#include "../../doomdef.h" - -#include "../../i_system.h" -#include "../../d_event.h" -#include "../../d_net.h" -#include "../../m_argv.h" - -#include "../../doomstat.h" - -#include "../../i_net.h" - -#include "../../z_zone.h" - -#include "../../i_tcp.h" - -#include -//#include -#define NET_NONE 0x00000000 -#define NET_LOCAL 0x0100007F -#define NET_ANY 0xFFFFFFFF - -#define MAXBANS 20 - -typedef struct -{ - uint32 host; - uint16 port; -} IPaddress; - -static IPaddress clientaddress[MAXNETNODES+1]; -static boolean nodeconnected[MAXNETNODES+1]; - -static int mysocket = 0; -static boolean init_KOSUDP_driver = false; - -static size_t numbans = 0; -static IPaddress banned[MAXBANS]; -static boolean KOSUDP_bannednode[MAXNETNODES+1]; /// \note do we really need the +1? - -static inline int net_udp_sendto(int sock, const uint8 *data, int size, uint16 rem_port, uint32 rem_addr) -{ - uint8 dst_ip[4] = {((uint8*)(&(rem_addr)))[0], - ((uint8*)(&(rem_addr)))[1], - ((uint8*)(&(rem_addr)))[2], - ((uint8*)(&(rem_addr)))[3]}; - return net_udp_send_raw(net_default_dev, clientaddress[0].port, rem_port, dst_ip, data, size); - (void)sock; -} - -static inline int net_udp_recvfrom(int sock, uint8 *buf, int size, uint16 *rem_port, uint32 *rem_addr) -{ - return net_udp_recv(sock, buf, size); - (void)rem_port; - (void)rem_addr; -} - -static const char *KOSUDP_AddrToStr(IPaddress* sk) -{ - static char s[22]; // 255.255.255.255:65535 - sprintf(s,"%d.%d.%d.%d:%d", - ((uint8*)(&(sk->host)))[3], - ((uint8*)(&(sk->host)))[2], - ((uint8*)(&(sk->host)))[1], - ((uint8*)(&(sk->host)))[0], - net_ntohs(sk->port)); - return s; -} - -static const char *KOSUDP_GetNodeAddress(int node) -{ - if (!nodeconnected[node]) - return NULL; - return KOSUDP_AddrToStr(&clientaddress[node]); -} - -static const char *KOSUDP_GetBanAddress(size_t ban) -{ - if (ban > numbans) - return NULL; - return KOSUDP_AddrToStr(&banned[ban]); -} - -static boolean KOSUDP_cmpaddr(IPaddress* a, IPaddress* b) -{ - return (a->host == b->host && (b->port == 0 || a->port == b->port)); -} - -static SINT8 getfreenode(void) -{ - SINT8 j; - - for (j = 0; j < MAXNETNODES; j++) - if (!nodeconnected[j]) - { - nodeconnected[j] = true; - return j; - } - return -1; -} - -static void KOSUDP_Get(void) -{ - int size; - size_t i; - SINT8 j; - IPaddress temp = {clientaddress[BROADCASTADDR].host,clientaddress[BROADCASTADDR].port}; - - size = net_udp_recvfrom(mysocket,(char *)&doomcom->data, MAXPACKETLENGTH, &temp.port, &temp.host); - if (size == 0) - { - doomcom->remotenode = -1; // no packet - return; - } - - // find remote node number - for (i = 0; i < MAXNETNODES; i++) - if (KOSUDP_cmpaddr(&temp, &(clientaddress[i]))) - { - doomcom->remotenode = (INT16)i; // good packet from a game player - doomcom->datalength = (INT16)size; - return; - } - - // not found - - // find a free slot - j = getfreenode(); - if (j > 0) - { - M_Memcpy(&clientaddress[j], &temp, sizeof (temp)); - DEBFILE(va("New node detected: node:%d address:%s\n", j, - KOSUDP_GetNodeAddress(j))); - doomcom->remotenode = (INT16)j; // good packet from a game player - doomcom->datalength = (INT16)size; - // check if it's a banned dude so we can send a refusal later - for (i = 0; i < numbans; i++) - if (KOSUDP_cmpaddr(&temp, &banned[i])) - { - KOSUDP_bannednode[j] = true; - DEBFILE("This dude has been banned\n"); - break; - } - if (i == numbans) - KOSUDP_bannednode[j] = false; - return; - } - - DEBFILE("New node detected: No more free slots\n"); - doomcom->remotenode = -1; // no packet -} - -#if 0 -static boolean KOSUDP_CanSend(void) -{ - return true; -} -#endif - -static void KOSUDP_Send(void) -{ - const IPaddress *nodeinfo; - - if (!doomcom->remotenode || !nodeconnected[doomcom->remotenode]) - return; - - nodeinfo = clientaddress + doomcom->remotenode; - - if (net_udp_sendto(mysocket, (char *)&doomcom->data, doomcom->datalength, nodeinfo->port, nodeinfo->host) == -1) - { - CONS_Printf("KOSUDP: error sending data\n"); - } -} - -static void KOSUDP_FreeNodenum(int numnode) -{ - // can't disconnect from self :) - if (!numnode) - return; - - DEBFILE(va("Free node %d (%s)\n", numnode, KOSUDP_GetNodeAddress(numnode))); - - nodeconnected[numnode] = false; - - memset(&clientaddress[numnode], 0, sizeof (IPaddress)); -} - -static int KOSUDP_Socket(void) -{ - int temp = 0; - uint16 portnum = 0; - const uint32 hostip = net_default_dev?net_ntohl(net_ipv4_address(net_default_dev->ip_addr)):NET_LOCAL; - //Hurdler: I'd like to put a server and a client on the same computer - //Logan: Me too - //BP: in fact for client we can use any free port we want i have read - // in some doc that connect in udp can do it for us... - //Alam: where? - if (M_CheckParm("-clientport")) - { - if (!M_IsNextParm()) - I_Error("syntax: -clientport "); - portnum = net_ntohs(atoi(M_GetNextParm())); - } - else - portnum = net_ntohs(sock_port); - - temp = net_udp_sock_open(portnum, hostip, portnum, NET_NONE); - if (temp) - { - int btemp = net_udp_sock_open(portnum, hostip, portnum, NET_ANY); - clientaddress[0].port = portnum; - clientaddress[0].host = NET_NONE; - if (btemp) - { - clientaddress[BROADCASTADDR].port = net_ntohs(sock_port); - clientaddress[BROADCASTADDR].host = NET_ANY; - } - else - { - CONS_Printf("KOSUDP: can't setup broadcast sock\n"); - net_udp_sock_close(temp); - return 0; - } - } - else - { - CONS_Printf("KOSUDP: can't setup main sock\n"); - return 0; - } - - doomcom->extratics = 1; // internet is very high ping - - return temp; -} - -static void I_ShutdownKOSUDPDriver(void) -{ - //net_shutdown(); - init_KOSUDP_driver = false; -} - -static void I_InitKOSUDPDriver(void) -{ - if (init_KOSUDP_driver) - I_ShutdownKOSUDPDriver(); - else - net_init(); - D_SetDoomcom(); - memset(&clientaddress,0,sizeof (clientaddress)); - init_KOSUDP_driver = true; -} - -static void KOSUDP_CloseSocket(void) -{ - if (mysocket) - net_udp_sock_close(mysocket); - mysocket = 0; -} - -static SINT8 KOSUDP_NetMakeNodewPort(const char *hostname, const char* port) -{ - SINT8 newnode; - uint16 portnum = net_ntohs(sock_port); - - if (port && !port[0]) - portnum = net_ntohs((UINT16)atoi(port)); - - newnode = getfreenode(); - if (newnode == -1) - return -1; - // find ip of the server - clientaddress[newnode].port = portnum; - clientaddress[newnode].host = inet_addr(hostname); - - if (clientaddress[newnode].host == NET_NONE) - { - free(hostname); - return -1; - } - return newnode; -} - -static boolean KOSUDP_OpenSocket(void) -{ - size_t i; - - memset(clientaddress, 0, sizeof (clientaddress)); - - for (i = 0; i < MAXNETNODES; i++) - nodeconnected[i] = false; - - //CONS_Printf("KOSUDP Code starting up\n"); - - nodeconnected[0] = true; // always connected to self - nodeconnected[BROADCASTADDR] = true; - I_NetSend = KOSUDP_Send; - I_NetGet = KOSUDP_Get; - I_NetCloseSocket = KOSUDP_CloseSocket; - I_NetFreeNodenum = KOSUDP_FreeNodenum; - I_NetMakeNodewPort = KOSUDP_NetMakeNodewPort; - - //I_NetCanSend = KOSUDP_CanSend; - - // build the socket but close it first - KOSUDP_CloseSocket(); - mysocket = KOSUDP_Socket(); - - if (mysocket) - { -#if 0 - // for select - myset = SDLNet_AllocSocketSet(1); - if (!myset) - { - CONS_Printf("SDL_Net: %s",SDLNet_GetError()); - return false; - } - if (SDLNet_UDP_AddSocket(myset,mysocket) == -1) - { - CONS_Printf("SDL_Net: %s",SDLNet_GetError()); - return false; - } -#endif - return true; - } - return false; -} - -static boolean KOSUDP_Ban(int node) -{ - if (numbans == MAXBANS) - return false; - - M_Memcpy(&banned[numbans], &clientaddress[node], sizeof (IPaddress)); - banned[numbans].port = 0' - numbans++; - return true; -} - -static void KOSUDP_ClearBans(void) -{ - numbans = 0; -} - -// -// I_InitNetwork -// Only required for DOS, so this is more a dummy -// -boolean I_InitNetwork(void) -{ - char serverhostname[255]; - boolean ret = false; - //if (!M_CheckParm ("-kosnet")) - // return false; - // initilize the driver - I_InitKOSUDPDriver(); - I_AddExitFunc(I_ShutdownKOSUDPDriver); - if (!init_KOSUDP_driver) - return false; - - if (M_CheckParm("-udpport")) - { - if (M_IsNextParm()) - sock_port = (UINT16)atoi(M_GetNextParm()); - else - sock_port = 0; - } - - // parse network game options, - if (M_CheckParm("-server") || dedicated) - { - server = true; - - // If a number of clients (i.e. nodes) is specified, the server will wait for the clients - // to connect before starting. - // If no number is specified here, the server starts with 1 client, and others can join - // in-game. - // Since Boris has implemented join in-game, there is no actual need for specifying a - // particular number here. - // FIXME: for dedicated server, numnodes needs to be set to 0 upon start -/* if (M_IsNextParm()) - doomcom->numnodes = (INT16)atoi(M_GetNextParm()); - else */if (dedicated) - doomcom->numnodes = 0; - else - doomcom->numnodes = 1; - - if (doomcom->numnodes < 0) - doomcom->numnodes = 0; - if (doomcom->numnodes > MAXNETNODES) - doomcom->numnodes = MAXNETNODES; - - // server - servernode = 0; - // FIXME: - // ??? and now ? - // server on a big modem ??? 4*isdn - net_bandwidth = 16000; - hardware_MAXPACKETLENGTH = INETPACKETLENGTH; - - ret = true; - } - else if (M_CheckParm("-connect")) - { - if (M_IsNextParm()) - strcpy(serverhostname, M_GetNextParm()); - else - serverhostname[0] = 0; // assuming server in the LAN, use broadcast to detect it - - // server address only in ip - if (serverhostname[0]) - { - COM_BufAddText("connect \""); - COM_BufAddText(serverhostname); - COM_BufAddText("\"\n"); - - // probably modem - hardware_MAXPACKETLENGTH = INETPACKETLENGTH; - } - else - { - // so we're on a LAN - COM_BufAddText("connect any\n"); - - net_bandwidth = 800000; - hardware_MAXPACKETLENGTH = MAXPACKETLENGTH; - } - } - - I_NetOpenSocket = KOSUDP_OpenSocket; - I_Ban = KOSUDP_Ban; - I_ClearBans = KOSUDP_ClearBans; - I_GetNodeAddress = KOSUDP_GetNodeAddress; - I_GetBanAddress = KOSUDP_GetBanAddress; - bannednode = KOSUDP_bannednode; - - return ret; -} diff --git a/src/sdl2/SRB2DC/scramble.c b/src/sdl2/SRB2DC/scramble.c deleted file mode 100644 index a3483b00d..000000000 --- a/src/sdl2/SRB2DC/scramble.c +++ /dev/null @@ -1,259 +0,0 @@ -#include -#include - -#define MAXCHUNK (2048*1024) - -static unsigned int seed; - -void my_srand(unsigned int n) -{ - seed = n & 0xffff; -} - -unsigned int my_rand() -{ - seed = (seed * 2109 + 9273) & 0x7fff; - return (seed + 0xc000) & 0xffff; -} - -void load(FILE *fh, unsigned char *ptr, unsigned long sz) -{ - if (fread(ptr, 1, sz, fh) != sz) - { - fprintf(stderr, "Read error!\n"); - exit(1); - } -} - -void load_chunk(FILE *fh, unsigned char *ptr, unsigned long sz) -{ - static int idx[MAXCHUNK/32]; - int i; - - /* Convert chunk size to number of slices */ - sz /= 32; - - /* Initialize index table with unity, - so that each slice gets loaded exactly once */ - for (i = 0; i < sz; i++) - idx[i] = i; - - for (i = sz-1; i >= 0; --i) - { - /* Select a replacement index */ - int x = (my_rand() * i) >> 16; - - /* Swap */ - int tmp = idx[i]; - idx[i] = idx[x]; - idx[x] = tmp; - - /* Load resulting slice */ - load(fh, ptr+32*idx[i], 32); - } -} - -void load_file(FILE *fh, unsigned char *ptr, unsigned long filesz) -{ - unsigned long chunksz; - - my_srand(filesz); - - /* Descramble 2 meg blocks for as long as possible, then - gradually reduce the window down to 32 bytes (1 slice) */ - for (chunksz = MAXCHUNK; chunksz >= 32; chunksz >>= 1) - while (filesz >= chunksz) - { - load_chunk(fh, ptr, chunksz); - filesz -= chunksz; - ptr += chunksz; - } - - /* Load final incomplete slice */ - if (filesz) - load(fh, ptr, filesz); -} - -void read_file(char *filename, unsigned char **ptr, unsigned long *sz) -{ - FILE *fh = fopen(filename, "rb"); - if (fh == NULL) - { - fprintf(stderr, "Can't open \"%s\".\n", filename); - exit(1); - } - if (fseek(fh, 0, SEEK_END)<0) - { - fprintf(stderr, "Seek error.\n"); - exit(1); - } - *sz = ftell(fh); - *ptr = malloc(*sz); - if ( *ptr == NULL ) - { - fprintf(stderr, "Out of memory.\n"); - exit(1); - } - if (fseek(fh, 0, SEEK_SET)<0) - { - fprintf(stderr, "Seek error.\n"); - exit(1); - } - load_file(fh, *ptr, *sz); - fclose(fh); -} - -void save(FILE *fh, unsigned char *ptr, unsigned long sz) -{ - if (fwrite(ptr, 1, sz, fh) != sz) - { - fprintf(stderr, "Write error!\n"); - exit(1); - } -} - -void save_chunk(FILE *fh, unsigned char *ptr, unsigned long sz) -{ - static int idx[MAXCHUNK/32]; - int i; - - /* Convert chunk size to number of slices */ - sz /= 32; - - /* Initialize index table with unity, - so that each slice gets saved exactly once */ - for (i = 0; i < sz; i++) - idx[i] = i; - - for (i = sz-1; i >= 0; --i) - { - /* Select a replacement index */ - int x = (my_rand() * i) >> 16; - - /* Swap */ - int tmp = idx[i]; - idx[i] = idx[x]; - idx[x] = tmp; - - /* Save resulting slice */ - save(fh, ptr+32*idx[i], 32); - } -} - -void save_file(FILE *fh, unsigned char *ptr, unsigned long filesz) -{ - unsigned long chunksz; - - my_srand(filesz); - - /* Descramble 2 meg blocks for as long as possible, then - gradually reduce the window down to 32 bytes (1 slice) */ - for (chunksz = MAXCHUNK; chunksz >= 32; chunksz >>= 1) - while (filesz >= chunksz) - { - save_chunk(fh, ptr, chunksz); - filesz -= chunksz; - ptr += chunksz; - } - - /* Save final incomplete slice */ - if (filesz) - save(fh, ptr, filesz); -} - -void write_file(char *filename, unsigned char *ptr, unsigned long sz) -{ - FILE *fh = fopen(filename, "wb"); - if (fh == NULL) - { - fprintf(stderr, "Can't open \"%s\".\n", filename); - exit(1); - } - save_file(fh, ptr, sz); - fclose(fh); -} - -void descramble(char *src, char *dst) -{ - unsigned char *ptr = NULL; - unsigned long sz = 0; - FILE *fh; - - read_file(src, &ptr, &sz); - - fh = fopen(dst, "wb"); - if (fh == NULL) - { - fprintf(stderr, "Can't open \"%s\".\n", dst); - exit(1); - } - if ( fwrite(ptr, 1, sz, fh) != sz ) - { - fprintf(stderr, "Write error.\n"); - exit(1); - } - fclose(fh); - free(ptr); -} - -void scramble(char *src, char *dst) -{ - unsigned char *ptr = NULL; - unsigned long sz = 0; - FILE *fh; - - fh = fopen(src, "rb"); - if (fh == NULL) - { - fprintf(stderr, "Can't open \"%s\".\n", src); - exit(1); - } - if (fseek(fh, 0, SEEK_END)<0) - { - fprintf(stderr, "Seek error.\n"); - exit(1); - } - sz = ftell(fh); - ptr = malloc(sz); - if ( ptr == NULL ) - { - fprintf(stderr, "Out of memory.\n"); - exit(1); - } - if (fseek(fh, 0, SEEK_SET)<0) - { - fprintf(stderr, "Seek error.\n"); - exit(1); - } - if ( fread(ptr, 1, sz, fh) != sz ) - { - fprintf(stderr, "Read error.\n"); - exit(1); - } - fclose(fh); - - write_file(dst, ptr, sz); - - free(ptr); -} - -int main(int argc, char *argv[]) -{ - int opt = 0; - - if (argc > 1 && !strcmp(argv[1], "-d")) - opt ++; - - if (argc != 3+opt) - { - fprintf(stderr, "Usage: %s [-d] from to\n", argv[0]); - exit(1); - } - - if (opt) - descramble(argv[2], argv[3]); - else - scramble(argv[1], argv[2]); - - return 0; -} diff --git a/src/sdl2/SRB2PS3/ICON0.png b/src/sdl2/SRB2PS3/ICON0.png deleted file mode 100644 index 140230c1e17bcf341498374ede7feea16ac5b54c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3678 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 diff --git a/src/sdl2/SRB2PS3/Makefile.cfg b/src/sdl2/SRB2PS3/Makefile.cfg deleted file mode 100644 index a4a01714a..000000000 --- a/src/sdl2/SRB2PS3/Makefile.cfg +++ /dev/null @@ -1,139 +0,0 @@ -# -# Makefile.cfg for SRB2 for the PlayStation 3 using PSL1GHT -# - -# Check if PS3DEV and PSL1GHT is set in the environment. If so, continue with compilation. -.SUFFIXES: - -ifeq ($(strip $(PS3DEV)),) -$(error "Please set PS3DEV in your environment. export PS3DEV=ps3dev-toolchain") -endif - -ifeq ($(strip $(PSL1GHT)),) -$(error "Please set PSL1GHT in your environment. export PSL1GHT=PSL1GHT") -endif - -# Set compiler flags - -# Disable same warning flags -WFLAGS+=-Wno-shadow -Wno-char-subscripts -Wno-format - -ifdef JAILBREAK -EXENAME?=SRB2PS3-jb.elf -PKGNAME?=SRB2PS3-jb.pkg -else -EXENAME?=SRB2PS3.elf -PKGNAME?=SRB2PS3.pkg -endif -DGBNAME?=$(EXENAME).debug - -SRB2PS3DIR=sdl/SRB2PS3 -ICON0?=$(SRB2PS3DIR)/ICON0.png -SFOXML?=sfo.xml -SRB2TTF?=sdl/srb2.ttf - -TITLE=Sonic Robo Blast 2 v2.0.6 -APPID=SRB2-PS3 -CONTENTID=UP0001-$(APPID)_00-0000000000000000 - -FSELF=$(PS3DEV)/bin/fself.py -MAKE_SELF_NPDRM=$(PS3DEV)/ps3publictools/make_self_npdrm -FINALIZE=$(PS3DEV)/ps3publictools/package_finalize -SFO=$(PS3DEV)/bin/sfo.py -PKG=$(PS3DEV)/bin/pkg.py -PS3LOADEXE=$(PS3DEV)/ps3tools/ps3load -SED=sed -MV=mv -XARGS=xargs -FOR=for -SHXARGS:=$(XARGS) -SHSED:=$(SED) -SPRXLINKER=$(PS3DEV)/bin/sprxlinker - -ifdef JAILBREAK -PKGDIR=$(BIN)/pkg-jb -else -PKGDIR=$(BIN)/pkg -endif -USRDIR=$(PKGDIR)/USRDIR -ETCDIR=$(USRDIR)/etc -WGET=wget -P $(ETCDIR) -c -nc - -ifndef ECHO - FSELF:=@$(FSELF) - MAKE_SELF_NPDRM:=@$(MAKE_SELF_NPDRM) - FINALIZE:=@$(FINALIZE) - SFO:=@$(SFO) - PKG:=@$(PKG) - PS3LOADEXE:=@$(PS3LOADEXE) - SED:=@$(SED) - MV:=@$(MV) - SPRXLINKER:=@$(SPRXLINKER) - XARGS:=@$(XARGS) - FOR:=@(FOR) -endif - -# SRB2PS3 needs SDL_ttf to display any console text -SDL_TTF=1 - -# newlib has no support for networking -#NONET=1 - -# use absolute paths because changing PATH variable breaks distcc -PREFIX := $(PS3DEV)/ppu/bin/$(PREFIX) - -# PS3DEV toolchain libdir and includedir -PS3DEV_INC := $(PS3DEV)/ppu/include -PS3DEV_LIB := $(PS3DEV)/ppu/lib - -# PSL1GHT libdir and includedir -PSL1GHT_INC := $(PSL1GHT)/ppu/include -PSL1GHT_LIB := $(PSL1GHT)/ppu/lib - -PS3PORTS := $(PS3DEV)/portlibs -PS3PORTS_BIN := $(PS3PORTS)/ppu/bin -PS3PORTS_INC := $(PS3PORTS)/ppu/include - -PNG_CONFIG := $(PS3PORTS_BIN)/libpng-config -# static compilation -PNG_STATIC=1 - -SDL_CONFIG := $(PS3PORTS_BIN)/sdl-config - -INCLUDE := -I$(PSL1GHT_INC) -I$(PS3DEV_INC) -I$(PS3PORTS_INC) - -OPTS+=-D_PS3 -DUNIXCOMMON -CFLAGS+= -g $(INCLUDE) -L$(PSL1GHT_LIB) -L$(PS3DEV_LIB) -L$(PS3DEV)/lib -CXXFLAGS+=$(CFLAGS) -LDFLAGS+= -B$(PSL1GHT_LIB) -B$(PS3DEV_LIB) -B$(PS3DEV)/lib -LIBS+=-lrsx -ifndef NONET -LIBS+=-lnet -lsysmodule -endif - -$(BIN)/$(PKGNAME): $(OBJS) $(BIN)/$(EXENAME) - @echo Linking $(PKGNAME)... - -$(MKDIR) $(ETCDIR) - $(CP) $(ICON0) $(PKGDIR) - $(CP) $(SRB2TTF) $(ETCDIR) -ifdef WITHDATA - $(FOR) datafile in $(shell echo $(D_FILES) | $(SHSED) 's/\.srb/\.wad/' | $(SHXARGS) -n 1 basename); do \ - $(WGET) http://alam.srb2.org/SRB2/2.0.6-Final/Resources/$$datafile; \ - done -endif - $(SPRXLINKER) $(BIN)/$(EXENAME) -ifdef JAILBREAK - $(SED) 's/@@PS3_SYSTEM_VER@@/3.41/' $(SRB2PS3DIR)/$(SFOXML) > $(BIN)/$(SFOXML) - $(FSELF) -n $(BIN)/$(EXENAME) $(USRDIR)/EBOOT.BIN -else - $(SED) 's/@@PS3_SYSTEM_VER@@/3.55/' $(SRB2PS3DIR)/$(SFOXML) > $(BIN)/$(SFOXML) - $(MAKE_SELF_NPDRM) $(BIN)/$(EXENAME) $(USRDIR)/EBOOT.BIN $(CONTENTID) -endif - $(SFO) --title "$(TITLE)" --appid "$(APPID)" -f $(BIN)/$(SFOXML) $(PKGDIR)/PARAM.SFO - $(PKG) --contentid $(CONTENTID) $(PKGDIR)/ $(BIN)/$(PKGNAME) -ifndef JAILBREAK - $(FINALIZE) $(BIN)/$(PKGNAME) -endif - -run: $(BIN)/$(EXENAME) - $(PS3LOADEXE) $(USRDIR)/EBOOT.BIN diff --git a/src/sdl2/SRB2PS3/sfo.xml b/src/sdl2/SRB2PS3/sfo.xml deleted file mode 100644 index d7719b540..000000000 --- a/src/sdl2/SRB2PS3/sfo.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - 02.06 - - - 0 - - - 1 - - - HG - - - This application was created with the official non-official SDK called PSL1GHT, for more information visit http://www.psl1ght.com/ . This is in no way associated with Sony Computer Entertainment Inc., please do not contact them for help, they will not be able to provide it. - - - 0 - - - 0@@PS3_SYSTEM_VER@@00 - - - 63 - - - 279 - - - Sonic Robo Blast 2 - - - SRB200000 - - - 02.06 - - diff --git a/src/sdl2/SRB2PSP/ICON0.png b/src/sdl2/SRB2PSP/ICON0.png deleted file mode 100644 index 140230c1e17bcf341498374ede7feea16ac5b54c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3678 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 diff --git a/src/sdl2/SRB2PSP/Makefile.cfg b/src/sdl2/SRB2PSP/Makefile.cfg deleted file mode 100644 index f9ec6416b..000000000 --- a/src/sdl2/SRB2PSP/Makefile.cfg +++ /dev/null @@ -1,126 +0,0 @@ -# -# Makefile.cfg for SRB2/PSP -# - -# -#hmmm, the PSP -# - - PSPSDK=$(shell psp-config -p) - PSPDEV=$(shell psp-config -d) - PSPPREFIX=$(shell psp-config -P) - STRIP=psp-strip - MKSFO?=mksfoex -d MEMSIZE=1 - #MKSFO=mksfo - PACK_PBP=pack-pbp - FIXUP=psp-fixup-imports - HOSTCC:=$(CC) - CC=$(PSPDEV)/bin/psp-gcc - OBJCOPY=psp-objcopy - OBJDUMP=psp-objdump -ifdef FIXEDPRX - PRXGEN=psp-prxgen -else - PRXGEN=$(OBJCOPY) -endif -ifndef PRXSIGN - SIGNER:=$(PSPDEV)/bin/$(OBJCOPY) -endif - -ifndef ECHO - MKSFO:=@$(MKSFO) - PACK_PBP:=@$(PACK_PBP) - FIXUP:=@$(FIXUP) - PRXGEN:=@$(PRXGEN) -endif - - PSP_EBOOT_TITLE=SRB2-PSP vME - PSP_EBOOT_SFO=$(BIN)/PARAM.SFO - PSP_EBOOT_ICON=sdl/SRB2PSP/ICON0.png - PSP_EBOOT_ICON1=NULL - PSP_EBOOT_UNKPNG=NULL - PSP_EBOOT_PIC1=sdl/SRB2PSP/PIC1.png - PSP_EBOOT_SND0=NULL - PSP_EBOOT_PSAR=NULL - - SIGNER?=sdl/SRB2PSP/psp-prxsign/psp-prxsign - - SDL=1 - PREFIX=psp - NONX86=1 - #NOHW=1 - NOHS=1 - NOMD5=1 - NONET=1 #No TCPIP code - NOPNG=1 #No Screenshot - - OPTS=-I$(PSPPREFIX)/include -I$(PSPSDK)/include - OPTS+=-DUNIXCOMMON -DFORCESDLMAIN -G0 - WFLAGS+=-Wno-undef - WFLAGS+=-O1 - LIBS=-lm - SDL_CONFIG?=$(PSPPREFIX)/bin/sdl-config - #SDL_CFLAGS?=-I$(PSPDEV)/psp/include/SDL - #SDL_LDFLAGS?=-lSDLmain -lSDL -lglut -lGLU -lGL -lpspgu -lpspaudiolib -lpspaudio -lpsphprm -lpspvfpu -lpsprtc -ifndef NOMIXER - LIBS:=-liberty -lvorbisfile -lvorbis -logg -lSDL $(LIBS) -endif -ifndef NOHW - OPTS+=-DSTATIC_OPENGL -DMINI_GL_COMPATIBILITY - LIBS+=-lGLU -lGL -lm -endif - #PSPSDK_LIBS=-L$(PSPSDK)/lib -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk - #LIBS+=$(PSPSDK_LIBS) -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -ifdef FIXEDPRX - LDFLAGS := -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS) - LIBS+=$(PSPSDK)/lib/prxexports.o -endif - -ifeq ($(PSP_FW_VERSION),) -PSP_FW_VERSION=150 -endif - - CPPFLAGS:=-D_PSP_FW_VERSION=$(PSP_FW_VERSION) $(CPPFLAGS) - - - # name of the exefile - EXENAME?=SRB2PSP.elf - PRXNAME?=SRB2PSP.prx - DBGNAME?=SRB2PSP.debug - -post-build: $(BIN)/EBOOT.PBP - -kxploit: $(BIN)/$(EXENAME) $(PSP_EBOOT_SFO) - -$(MKDIR) "$(BIN)/kxploit/srb2" - @echo emitting kxploit/srb2/ - $(STRIP) $(BIN)/$(EXENAME) -o $(BIN)/kxploit/srb2/EBOOT.PBP - @echo emitting kxploit/srb2% - -$(MKDIR) "$(BIN)/kxploit/srb2%/" - $(PACK_PBP) "$(BIN)/kxploit/srb2%/EBOOT.PBP" $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ - $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ - $(PSP_EBOOT_SND0) NULL $(PSP_EBOOT_PSAR) - -sdl/SRB2PSP/psp-prxsign/psp-prxsign: - -$(MAKE) -C sdl/SRB2PSP/psp-prxsign CFLAGS=-pipe CC="$(HOSTCC)" - -fix-up: $(BIN)/$(EXENAME) - @echo Running psp-fixup-imports on $(EXENAME) - $(FIXUP) $(BIN)/$(EXENAME) - -$(BIN)/$(PRXNAME): $(BIN)/$(EXENAME) fix-up - @echo Building $(PRXNAME) out of $(EXENAME) - $(PRXGEN) $(BIN)/$(EXENAME) $@ - -$(BIN)/EBOOT.PBP: $(BIN)/$(PRXNAME) $(SIGNER) $(PSP_EBOOT_SFO) - @echo Signing and running pack-pbp to make PBP - $(SIGNER) $(BIN)/$(PRXNAME) $(BIN)/$(PRXNAME).sign - $(PACK_PBP) $@ $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ - $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ - $(PSP_EBOOT_SND0) $(BIN)/$(PRXNAME).sign $(PSP_EBOOT_PSAR) - $(REMOVE) $(BIN)/$(PRXNAME).sign - -$(PSP_EBOOT_SFO): - -$(MKDIR) $(BIN) - $(MKSFO) '$(PSP_EBOOT_TITLE)' $@ - -#include $(PSPSDK)/lib/build.mak diff --git a/src/sdl2/SRB2PSP/PIC1.png b/src/sdl2/SRB2PSP/PIC1.png deleted file mode 100644 index 0722a96bc78ce4c82edaed348bc6f86826e5690a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20300 zcmYgXV{m0bx4k#EZQHgpvF%K3b0&5soEQ_{*tYG7ZQJIX?|b#C-l}!}bk{kJQ{8*_ z?!6+F6{Qg2@ZbOd0HTbvgem|4-2V5Vz<~cNF-p_w0sz1P%JS-xtgI~T>}=dzth_wj ze7u6Zyjr}xrlO*fqM~A=qM{-qBI07=-z24_B*o;v@v14XXef!RD66QeYv^ce>+9;6 z87etgsGFObSXw&T*}1s5xO;kd|NQ9}5D*v|8vZLXG9kh*H`D|as8Q%Em*gf9?#ANp zLlEGH<>`j)YK7@9j_?}~q6QaY1q=KQ3HS*Q{6YnO;edUTLVwUgf3U)S@W6eFB7Mpu ze`=t98lrw!Vt(3Ue>!1*df+|%z#h*)t*Jz4Yl9mcgjraC+S-CVJOn>G1HZcidwm6d zd;mT_0bgJL;l~Tq^$hJ!p4wKH+E%9OUb@OkvdVOl#$cMsXrBFavCDFW>sFQPagFmu zqx*I1kL&J$hyIY~;jov{i1+bd9}`iZlTn`&(O>^K8T~c&k1=0=W4{*izP7u*_6NU? z$G^@NKCkyaUmiZ+UO(R7KmLo)|HIe+!~d53tABrge|vj-dHKiJr>B>PhsV3S``g>c ztE=1d^T*TEi=(6S{r$(CoyXnXqphv&wYBx-<<-T-^SQZ?$;pqw!H>?)_lAb&va%-- z=&_{aYIt~gW@dJBa&ly3WN2t;U|^uTySufuwXw0Wrlz*6tgNW02m}J<>&M@K(~ggpBAJh-{tIXGNdTc4YmotT;)o0y!Lm>ijy92gjE>gXJ5 zXdI}htSTrR%gF3YNSp`@U-0u^aB^O-uw2p8-;$Gml97FqlKwAWNlC9sNRIIEj!{t$ zF)()si55u6hDgZUaEZ%sNel5v^JwTZI5>aN(g%}}`XC_(0)fH*We^ycFC?TZ42%sT zq9HoE3J$IUA&~|-xdJ7HAPo&0EiD}l4GkqFCFy@aMoL0LN$JK}jWa`_}U>C=$L%r(-e>L%DQ0iJN5-$r9==>~aT&8AbpwNsn zuY`xBptJhlyt~KWe7mpS5;U7A!UytyOY;yQF*5g}LHHv{kS18GFyNS= zipG!cXF{e=?(0s{2bF0EVjX~fAuB;v*c~X#+1XLpOz*6e#0D+Xb93Mc*@g&VWO@PI zQA~%n8ls5=NK6n#Cm=y=CjIAQkTBY~6v= z{H5y0Xhr65_AM;K45l=Pb^73~4vbB(4i&WQ({9+&2l`YI6jU;UsGy?s&3d>NT0ti8 z1)erYFL8#3Vr(d%yLzSSfVLE(*KcC*n={$MRSHb^)16V7j1_)t0A|E3`H>jg)E^yk z+HkegWWE|jyp!s|-`$N}N&UzG!$r^u0giqid$*FWVi1*`K$I)uC<<(*Xhmr9TE?C; zKA7y&_Q(YM9DO`QiXcOrf3>v41_TdGj(C>u5&$G`2b2AJCFVHAepW}024#s01-J+= z+B!(D4GJC~bn2z*SSS&&ok7)Y$p)SpUZ^1@i0#20A%Puy;wOd>>`p=Ak6MY_8Ohfo zv=lwGhOtta$pd{S-gBR(A%$N1w$Q95i$M8c% zTM!j~K3xbqT`MO(VTpO6kj-4-8U(-kK~Vl7ZNX;pe?NJ^NBN5?V2r~i@d5|&(s%6h zZ!mb*P~$pg6A}gtXxYUaT!cJs&m$_@XaSBJc;{z?*U^3rSPPI@mxEE*)%xwud-XhW zVm(em2le>eRR&#NwU*?BHy|V)tbLm`h60!|Ht2Eu%ts&m>mg^VNQ@BIR+ zu0Xa4ZWO&OWc-iczcW|%hZ@U4o62_Z*L37&MOCdjr$|)n<98Z}KamN9WD&f~Y}{uS zq_9z|f9~uiD+zT5_7L8B9h-}9$7SziuKa5pJlog}{<@5;6gsx)@X&%Wzi(#x%YMD{ zYg*+GhgX8nFjEzsMHqtX-$6O8DuZwYS7xiD&W6)h!r@cVgNp}*jS1S1?3l7AuK^%* zC?Uy~1tvFwHM9BBX1~w;y(DN<~*#>M*0Y*g-iK){eCOtEjf?s`oVNU(Y!I`0V=onKu^_VZz2k`IpKdUHG?^fVQcLyxnTuXiZ2JOfMycxLHBT3L158ci${S2-T z|MmdsVt6DE#{tBPk$E-#L^mU!&zF_H>1j*R`Tgw&#|)+k&XiA{{8^=`LJic z?A^(Y5mTfbiXa`+gMY&WDB_EQ5XxNyLpxwQiTG@czQ7J(KgK5r{5Wu@F!!NlB922q zL^37`44jX!w6g;cQ_px%9CrbCea|L!tsn%FX#a{zv`kCWV*wYern1J`IV-+0r-k66Q=6OfUug zAwL66f6rjL@zUxiHR+Pd==k8)qV6PD3+`;8Unt&^9UV9CoM!QAiDxDpQ^3gpgJ*oE z19Z*h1}UhwlXL(BOhr|s*uUwnHV!crr$Mv$$dQf+rY^gLdzU>Y9wf*IJaP9~M|}3? z<$W>~H8cw|`F2`m3UEe$WC0n{wYxxaPi%sHSiQPD6onG>OdGFO-=@hApsj z^+*Ie-YMtXDPp(Eg4neQ(E&IK~u zARTNdG2?AQ4baNJGtpqLmDV$JY0Wn%ZEPFVr;5SQh7nsM!bo)E*srH1D#qYMMNW9s zKol#5soF5%@?4m4ro#SJ@9!G&cE1Th3bZE$9Yk#a=i^hVgZK%f=BF1~pSo490z4IYYUYi-r6=5-5n+ zj#n-%&iyvzrP)Z}BUh?=mHz~y1{{-x51MftbJ(~S%NDBBY2*eF_FC0N?Ll?^4Tev6 zJE2DDaVvx}?bqo6 z|HQY>Z>8~#vW3TJ}u@S=mLbe%uahx}nC*2BUR`e5UtBHZqhc9`{ydTX^ zhX1Qfw0R;yyJ4(p;%dHVHZ!Y7nmI6$uq+U|pL+W&I9nsS=52_e7mdWH-iVF&z$KH=U0%A8DKD=XSky{zIG%>v!8{jSQK81WMysU5EJ3A&x%cwh#$1h}Wl29?C+THd zJHo=&k*RG&U02RCD*&EF`je7}6)Hb=f}1EpYqurA^Aw-7N9ysCOpQLFFAcYgcc8z~ zEGqO8c%ISm3Q~2%ihDpkpo<-z)Bb0B%4I_yV-LTB3V&EwU9h`LW?UmDQj{IeMySK; zI?#OeK&F{(?e>R#-2540vb-fS-TMSdi9QsvsQS=bZ3b?t@Nc4cx{PvZ*k&tnEd$9A zJ2hM{CFH7Nj%fs8w~Kd3t6&X7G?G`bxj)-KyE{ z_4fb7qjlcG$F3{(3`ktOFf(|3>@aGWW5`3_XMOD~HY|GTZ4+o{i;NZ(W%7;3OP8cY zrZF5c(cInbZ;X;e+Qt)sF8^53Q5LZG+^Po8PEo zVoFa>-b;9!^oS1m>id9D+~#TTBigrD=Adp?QG6mXA>uN<_k>PW$^qIjg9XD)P z)^;<>{c^N{7oznIWi>rH1+bL%51cFfxI9NBV5O~(S=5l~x7>nGAVv2W)(&1c70TPDv^oamC7Ci~AkrVF zW+C*lOwz9MHe$rU*FOTy=ydg@WcTDUPp*jPsy}LFp#{kY|LDYa^{#`|24v+m2Vav2?{EP9LTm+e*d$iRx_*=7tG{^tIP$ z^;L3u0}*YYDq!7TXb)c1rL>J7lpJx@Y#Gbe0oHTDA8zD}ujvwEdOKGX^|NnmB{X(< zZ;prs)#7-2EASUPgx^>TAu?~1tn5`e2yTI7a<%gSQa*!Lp35f2e}L(Q2J2 zP*HIr)-?ME#EgoM6Jol$V#xLWO*sXKX|0`!%6l5=e%uFyo1ZbTAgQdpG$_-Sp)bMl z2wag*3I!bb!2gX$=@8;pYQkRQ>(w1+rBx>Wrgk}H`!)kBEworEg5z+Y4!y2 z*%$ZPxWe-&U+j}LP0-=#n#juA#<}h1hXqSLU1F41q9rMyNXt_twwCLWZ6}Nzcwq~; zxK4ydCa1Z&`nd$Cdhszyih7Al%GMZM?; z4t#e8Q`aZ^@#C6`&@|Q{_p>ewK{ds$Y<<0u`iI)+g?zi?0IX403W)#<6$|$Mq24`{ zBA~dV7RSdbF>W-qMSp!7D$`0Ns&wpl{`kTK$(l7SfFLHok#4cdIz+wm>G<;-cS#4- zcUk@d_XE48wK6Sw-Hf#g%w=_~{u^?3kvKHI#5A+#EsBuKwDujKRweuS8zk{rsI{6eI6ybq zuB(+d0Sv-!VtM%;a10tXI8j{n<{u~GBPPesHo&__ctD(CeEEu$t(27iMSK@b5QmeI zQ^@A+Q2%XnHlgIs4!RGYKvL>GHU;6}@>-TsC<;p(DX7yWh4Pe(2HtXgw)3oKrnB+- zK0_YCI&JnG3$C3J$B~Y75AcL^Gb1h!lt#8%1lyONb7P~nMnZG2+@#`jo`CMqerG$5 zNM95fUQtc%Wh!6{B^z;w%7Y{Z2l&Qpl=UBUnr)2N#t>13mM$_dH9?jQ*YH!4m2fQ% z@3+N-EreLCm5vZx>6^I$qdy;Bj;EOa^~BQ(&M^wIr36UMX#nI8c~S zSH;FPvvlOrG>gt}Ck3B8wuo<=6)GE7X}Vb{P9sfjn};_M{HKzE?&>>miTDIZrT{#GVQk^Xb&gVwlu`tj4#S?4CAC3vy{ z)k4WmyN3d$hOm$w4aKNu*{+a|F!O6YB}Y!Ca?2TLrR5BX9lIaX7ve6vUqCQe6(M8d>!%4L#Cl`AU^zx zjLNJRNYr{#n?E6d+*h3H@wbi*0{DX%r0OT5BskwWALLdKcfJ{FNVDjG`kH z2o)GN8H)9pagQfym=}RXBc`G0teQL>`@1mxaB1OkgHoj_3jGdBpZ>;|iq5aeAMQY& zv&Qcf(;Zm?Hygb4nLur8LI%3R;y?xOCpZy{@AGI0`y|6?Rsvt`nt5;v4;{SpxpnJ! zW^oxCR$0xMTu-yX?EHYEV~R)Qu1YfCimXtU6S$o&ieM~=IjfWfPV?zO^D&rRBeMKOJ8%VmT5c`zYQ9Gp6;qT6XCd!?swU_0(H2pabahvqTD_)4*Gh+j&shbQCxRM>#$$SqGunj z;nSRNaa@CUn6iFk--}E=RtTyb$|Y%JhTL_ruvktsuQ19ARF%SjiRZYwhT}oNHS-_< zJoollE_R*YH6M`Aj~Z zXE}_58Qy^l77uz4bll48P!tw!TG6Ugp3OTv82an6k4vZ31J$kH)V6f^66Lusv&D|9 zjb<97+(uKa{b*#Slk=uJv3>BSiM!^HMdIMpsjN`RWT;*mL?NBZT(2%puCQrmY#^Bb zW!2r=Sq+GQvA*UZFGn;)I4@Jnw!j=Jx263HyOW9@Yaizqx=rJ9UNRjte&c9@YIBh| zscoX?qDI6zSyescfw(g#|9q*TTN&Dv*~<&=&+OkpX-=~QD?xGvF_kmk*i}w!jZN3UfGgja1G~2W9yCET`STRY}D1gOnse{`)}32UO(7N z!qmnWzC+ufJu0r!?zAzaFy)D?ZEl8*itj8@vA)j%iASZ#<^Ykk28$InKrjP~r95UO z0G4TmQl@FeHRL9Dl^+b=NguhjwG?*!vH1*TSrpQ5ic`*?CZ1|O-P)oq)~#ady(Z2# zl*4e`@X#%P&Y6#Xot-}G=lr8?ZL!asJchg0%2 zgCyK%ew)YI$9Oa1a(B5-^@d55W~q<6dhlOolsH|lQ!p532zOaW$lJTU9Uhj5nbPa$ ztggsd>CWqiT!8~Ul9mjvg+gI=#)%CH*|D{krYC7eSyKx6lF0EMo!b{VOlCEx9-oD3 z#$)V$f!v%csnDx3K$E@Bznt;pk)8p8?c=$c_;&g*eWaA!$ zitie%k&94IhhcsnXgHRbXc5wr0{+%h-Siu!|6D@xBDJ-y(}>kB`c|F(z;A&X#hPao z1SJ@&X7i^H7m>Y*MX?twuJ0`Z&?EHQIav=cK7J4ze{$42KMv+B6&=fWR_7LQrX>Hq zP~gy9xJwLbgZKCMiwA?JWfj807!kQ1X5Rg#o9x(SmZjr0hH;LkIGwFx+Ek6mRBcBm zvMTw#T;TyM=!tJ>L2FkjpE;g%K-#jYo5Pvs=<)Ja{(!3+-jCFESS?bbGX$K2FL%0{ zd-Qqt_3A~|%h!uQh4(K7ylYa+X=r8(tJfte$oe>_QeXfi7GpI4i;I{2e=25RY5-ju z7^zH=0mDZwJYad_CUv!tEzT?p!crnFLS4w$>3f`L?+p=EvE#|cP}Qn}-$NGolLSs~ z7q73kjl+ERh1)&6EBNEg+3caXm#~?3Ug{+w31GwfzOP$M&q$9zOLN?cEkWqi9+eRA zO^-Nh%hT4ntw{WFDE}7$kvVlUp=0_*rTTrWm1l=ralw^=2fR$VbYFXL7Xh{QjJPWl z6@`s-@2}8HNNPEj%BJ;RVrn0yU}{NPKtD!y{4k`|O)zghjbJvkeppaS8$HFd!s`?F zubF^JF4k=}+j{D)t6oJ5|wy+6D6dS51W*`Q8p^VmJ$<~zPu z&vjlSI7GCgK0c>ewNQiWVbF3QsyZbhoWmmK=Zxer#WYuP9{lQN*1Hp|yP-G-0hx2w z>-+FfR^!jPsbNxBJDDyI)^N+EQVqD4B{!G36l^x>f-KllX!GG(EtMndj)x7cChDgk z61u>1FgCkfcBd%mFlTCJQa!H-c0CJ))QHvy*2(Fhf&*v-hpbH8&4K{z3fSSrvUxmt z&2|aEa~@*%jxYt9Aq}?sfgYOivOCMgI|f_msHd(x*1tHI>8}bK$xIGj!ZauxiVkw; zk?kmEfv?q*ddIHN-%CpKaO?{~WBP8$81%*T7FXMq2y6lY-MH<1aC@6)0Ad?XmI;r@ zKG!w*HpO%?g3Su5j8GNWW8+wlV$9#jiN> zR6V=D2=I8zibo)mF?3&<2sM}mk;lrbyF3op@p;;6&~i41$n;0)=ip0{IUm+eZM)UE z!ul7v-Oe;OBLoxfQ6X)aLH8q-{EVZuj841#A!TZI;~0>b}%^0$(B3y$#;kA9f06lDa2lviNHMqN&MgqBI_5Ma zxa=_qoy-qHJ)jEluSXUbAPzmAAZF_M{OO&GQm4d zqT8{@Q@p&j1D8l!8>NoyPgXigK{xv1Tz%)Qv`)3kh0Hd|^IvdOnbem}xUTZ`v@e5M zH_RSX^k`=IaOpHjP34GKdd+i;y%K+3>3pIa>2$P-Hnbgo?E*0e=55- zGE<5t@a!HaI;gNaa35QqyxVLejM+8wMUy+mNzE|7$R9DX486#~ zPnsw&B_jo6=xMc#Rz=p!Zc=^@IFycEF1yc>T2uL)U-};x`oY@>v0ec>A{)W^$FF+% zD+MF{joAfBP+r`iAZ48Wu|3D!lMa3HJ~S#vVLhB}*EJg(TN|5Zkj588Ckf;?$vM-< zcR4zP!6Uu=lfGlNnkI8u>*7c*l?b3#k{a#W4BzYF$&d4hw6G6>W}m0~leuEUO--E` zxDusg%TE9mL%119k)sIrw z(Dscn`-O+mE5XTQ1$^*03JUriKatcWBL;2&W%>j2N{D~jc@j4Ab+5tvuZa-f#^Pz( zQCI4+nY}_6I_u$b$c&Tbsrkij=Q^&H#cfyS|H}n%-7GnmQoxAy5=obZeHIp*h);$J z?|VVOk21P3wCOQs>3lVp9sM=APolJ?Ftz-L3Dgp*M@>UzC8e=L+v9RP-3#7c9;$D#k_K&CC)x+z`j^(O8Em|e?u^EI#sHzF66#A2IMc2&fVFUd}emR|)^bvQHyTzZyp+YdGWMx8E z!L@ygYIpX;Dp(M(dQ9+>ui<#0P<2Zcdt?~6#;138@P$)sX~nbUWYLE_AeJS z^I=;YOy9zk1od4PxYAEb9A_p*q4vsGh$8$B=hx7z&4yoyC^yoSq}yJLL6YI}57#{; zg03v3&VR#9C?S9T0t{xe9J$4^=yJ*-R4lfk0@IbV&-fb z`hxlP<69d3{M0U_CPFtwt{4Yv(J4Dc12>-L`QAe<11Ro=$e>9PQBLjcK^UQ4e|&IKUw$G|3 zUol9Q657_rY$Wr0YkJ}b3xS^ZJy2Y-9vIeBG4^xTt}y_WF|@)7Z6?#QNhLuRq0Kt& z8lJi1#~}gh-rmBRvUM%@-!7vUd?|Q7@(qw`teC*AgrX zhJ9!Xj{A_$gSJ*ZUym{iqV>sLb+$Jl=SO^+asH&&=)*8tXhZQ7N_6z!{OfG+8?h&% z@-VQX-c7rJxN|J@Vhg={F<`F?1&|iUFg47Gx#wDy18%F-(Le(ui`zKjTCN7yk1_H} z-RCus?*bQxRO3P#ORoF%w3I!aPG~C28wr{5H;g1`KWREtGDkyExNA{zE=YiolHvgil%jEv9v~Bn;(~XL9o(qR zA!jwqVx~&7%RNMF2@)+j7kDHaL+SQ7owr?31MdVE?>BYh!Y?VUC>tiFN-=#%-bD4m zM1pgo)9|*ktWvPh<1j#r6?VwjN&KB64bVDHfsvk(LU&4{m9h!q=Yaapz0HYU$P%rj z7TFF-@R=$$i-DJw7BC+o-UACHzek1pwVK|SV z(gufIC<~6fXp!@%fkRQTf>KeDTMWmP00>;Om=&WYryal~Up4)h=vY!KMo{wYZl32}f%>a;kXVfexP8?{C6SlAG`_oA8kly@$H^Q7BK)7-z-F59=> zHlH?qk1ot!79(F*GqNIxy48(b;gDL&&(1tGXJ${(7>Mr+&L@b3RODy!*;-rYp@pcV zwmozaZTk9o5R(2)skmJ7fKFJaJze9JohLjG0R4P*x{9uh;>hEDwLmZwOfe=^1Two) z;PZ9u%7>ZhDwi!Wm%pkCLcvvo@_@&#>n~C9vjs5(3_OQOUpjz0ayG^8xJ_Rm_Yb3+ z4q}F)`B2y~O3JKQsuux)LDD`=XJS)B)2JDqT(ew{IZ&QUiY9?abaCNlJ$Bd8QN-_? z+1j$P)U6*!8xUJpol%5$**`zL9_)HD)4)D2VbKujS{^5-ro3(jHPe*aJn0&h7Cu{!^^BN zL(z-W#bR5sUBD)>p>eWB%N~#x|0rsIbK*h*sq-Xbud<&ob*i1^db{f;r1ug7A zgolC!j#w`od14gLU((ypg67jJM!-dPEY%xm7B0icZKLYYVp~27O*PiGeDDXc?eo&Q7rPfzAJNAHRfs`5@LYMC3&RSzH{e!D`u3 znsbRaP4xPCHKeonC?r;eP)CpA(q64^YMS3cdCIm}Zap~2??^lAV&1!oeg{Wt|H zUbEx}VN%(OMfpz})kP95mF4;SYO-el9xM}Gc&1gAh21~bI|ln2z$%iZuFpk1TJ(=g z{x1=ppAD6_6sP`cGSP0~L`%CN_?HhHgfa`R6-BRWihcrA@21~>fu@l*4a5JMbNv5RpWZ3zL}5T&v!>d)m2T)XI%XJdfF6TBptkQz6y6!Iye25oG5Jgx=!4d8;9?DyZxebNuUR zeVuNqQEhDRQB)GEs=>)Q&)-1L3n%p4P#F&c>KD_aelR%7sIZEd$@=Q^H(eloPa-wP z93AWMT;aWYpZXzhzj%Tt%j@jxJJ&T-8d$5I*6m-M7k?}(23Ktas-`xcmVeVp@iDE8 zJ@u7Z5(0(bZX5zSKzQ|PJ(KWxw+X7%%~Hw%cPIN(Qkq0sJ;oK7C^)zJ zP7&3oJU>dxws|r%ed+vrm^BE8OWs;9LcV3JJK^x1L35gZH1Hd>Q)sN<L5$((1h+y(F|% z7mB7^3P4!HvQ{en3wfhJjGP7Gio$mcoBTT>DDrX~L+?AcG5H+tJRy5=U-L*X;87bAse&~i4kE#k6k*i7RLLYssKKjsM z(^A*DQFH_b*#{aTF8c#ln%o@pVuKbIBw(<2lLEi7kF=!G2|D)+QzwPUQZ4^8YP zQOr9)wONek?Ky*$w^Dg#DCxWh?kRk59xTJ4MQ(}w=~~DgN#dpasSdkkWmkZ(stpA; z49^P0i<@@pwXf)#Rg%N4|SHRjUm;gcbg8R>gx zXabY=KWM1fB&1Qv`FVwKGO0}ccD3?J9*<*PeQ^9Z^XTa}*~>_dV18gp*eD$(lklY8 zh{$O>{nR6IL_b#3OUX2=F3>b4!nZ42F?21tuE?2%FIC)7R@F*0N*j6B!HSUi_~|j= zSVBDzzbo5ItEGVuA!9;u3+&T9YV&~jaI@>=?5k6=vtktgFcL1RlAJixG zcdEp#1*@p~ag*TG2vJ}{LAiNwp+U&jcC~XB?o1)Xu07vl1)K%KRV&%~2MCJ3c3h^F z_H>f#I5e!#_mErYoi@AwsONkSeJaIc^~q4sv&4=wXK$ycZKO6DK5B9bD77Ycb&8h2 zF=?c0U*0cdaZ}#d6=zd2;kL>ZUoF@*K4*pQU^6O~mAjJmA_x%8ciF%)pl)hy;5?yT z$HcHyDf>InY|0ZwxVtD8#bh=T1TL3Vq+@}$%~dJ*MAu*w6O`R5ede%@BO_kJGE7s% z7$yc!L1lDacdUjqA_6CTDda`TCRJlBLwCi&MzAD%G+>9ynHazX#lh}OPg(I~zfruY{)c#$H#&eSYEAlIs#4AaRgK%h-rPL_xC zEDZ?({dBcaZ@KkJ{u95ErV|nzUMQ6wg}?G&u2wP@ZxQ}X-{LE(6 zzx**ibm>70^h>@LeTJrD=i`HH_2cI33QxMgj;3#(MHG&rX(eA}mo_%|Edx)c>*VAF*GLl63TEBiLr18w2!{c^{DzJY2+Tsll&h%`_7%f!PgnlG!4<>`b0l zaf!6gd%wp@3#@Avu7<8!U9Ua|I6B3IH?S&ujym`@q z@=*FZabCC2b(xH}%Ka3h-cF~`H#}@R$1->i5iM0GEmN|ux!Xk=>&y14=u8XceXUCj)`kFFA6{de@0>zn$cfx-svdHZ=J;o@l$7RIDO)Gh8bmvz&_ zKurYR*v^wOVK6on9_Bz7wYXg&d%0W-vY@)Tz6l^UjQ2A$!n{em{MqiBMj^=Fz&d&y zlVKMz1>ey6yqdP>Df}gX{e4J2%<%dp3sxlOmCfO>a}?9$C;oC4Abj-O3Q*S9_hZTi zZ;W$2Cj^;dtJ{{W|7|^UtPM%m0-_Ipej1-E6T@K2c{93Cq0JxKr8s_lkbY|8hUfdx z#DL&3yOO-3Vu0x4hk8!SQDZLDcdV+OlpO@vQk{~MX*@`>#0{xD<&jMpVVvp>snKV< z{yY#ge$h4I<)xtV_OqjG?&z!rF8-jWcriRKmv>4qf|uHp$kjJfmlq!-5%QnKLo-RD zZ*r3BSI-95Ttz*wNTqg)kpL2Wrcm|b<&y`3VBe<835H`(S5OC8gy^yirj^(R2?B<`HF)opGv1rJEdfYd| z)ib-W3;tGJNoW&npv?7K_3vBKH<~Tr>D33Vh>4A(%!sf}ySI6bb+?wqQ2UEVmO_uK z?af{hS7nGLS2_hpmk48Wn+U&84s)tWL8HyrWqSMZNLlm|7rEn7K8O3=@!r#TTLhn- z6gE4Cfj8N|ptkQNLTzN&fn}?_&7g4pe)ua+I&72{eAQu;saU^IK3d1fXfqkk zWQkpx<)n9F?Dh~LJJ7sI$kuzsC&?E+?vVMfZ^g3`dA*T$`B&VokGtsL7)3rHdws|J zUF74ovMy~>%3ujVeSPk^qSDDwi80o!E9t`F-KW?n#zdcbhIPxPi$5st?hfHeC%{@{ah<9Ob4YF`^FXC!4xN|FIJ(+%r45akuOAecyme1;? za`5p{`qe9TEFpqZ+JJa%N{V8qp(Bf!lPGJHcZuUK@F7@hfnKdY2M2x=*oC`8n*5X< zGd|ozEXNV4)*Hw2zL_Ckd;X&g!big|TsQvN7hG0pm1d-qmCo+FTE`ixCLXnRC0iB2 zz`btASHpE7`1;QExEJ?d`{buSzhfLX6aYA42+OJ-s}LPIg|Pl~BF{uC{V&!jYo7GAZGo5+sTO(herjAbP!kL=WAP zL@HTYNMXe>rN2=S`9^=fwy7iGg}<}MTep9-Pkr%Z`t*RcM-u@V8W(oRd0AXyqq5+Q zyJ4XwUSKcZPhU!~&FQJ8HM&1~%{;AoLnxjXB zk&T{d{aw&Jdc!kAgg<1sc>i8X13ii>iEQG)x!S)nbHYEUP{DAhS+?5~kLm^MWAQy- z7`dkO&0IOoEr1A>=6QULgp890?@#_2D4P;4SYG+^&%H{*fS%stjmTdc;g1X1U)Gwu zf7K{}%@OVBVQK`;=x~D4OD3-1pOLVeZ)sZ?VgV~xdtJz2K9+wHFMgX43HZ;hTAMS5 zbIa8`5cN#=%3_jbHt9ux3B+d9q~}I?IdMHt@f4Oue)+ZeI1we~kP7D<%XkP*}b}pcrF)wv+Zebx3rcejtl@e-&RvdDncFiCk2V+n zb`u&R;42w$&2tpopy+Pc1Ga33b=85=^p}vUN|<0n!oIB(AYLEw{p-bFVf2OVo?tf1 zOkoP*%&7J@FyfGW4ky|LD)<|EFt*>QIx1k16+NImO*3j`pG+wT?;Utp{)}S04ZaR8 z(&O1_@~-yxPTL*J*RptMbpLd1wb!4>j_hJ1`kxts&(F!*7idS&uuD#Y-TBMnk}bqL zr;RHNihrE5V0|DU^_bGSYXmra{<+aSP zpo4%^#f-CJchPzR7!LB0C;vPZK+aW)-Rcf6T}XSUjQzKn-(CvFjEI5|@Ir`diU4x! z0|8kRcNL?sQ`NWNJ~^R#<0;2xH!pCY5Gg$*N4}0slxx|D82hW7kJHrdPsX^*ERoi| zpPNQ`2dTN`U3>O?Ka4$-<8%#G6c2;3SJ38JWP+d>f&rN;=SCktek8=a)ESWm_=lpS zuqZD0k0!VcD8XXYkMufGG}YBX^2Gg9j$HXkQgnlqC{eeHO@+X6jo&`2z@_2{?8@?$ zttp7ygyj}1L{*bjo23JvdZ*y(TdU5uM6!X4-G$&qd&F0rZ>>+01(z;%Z zY3k~9%`k0)E%!vHc^V+=q!48(IX0lWrJbJ5x zTD!otRtxI8r)}SETGQ`2!-2rPoXgIimUymP)hk0t^jrL`II)#>CMzNTlq4kJJ6o}e zq#?sn{xN6(T*fWS9(q*dtI~`YLAMv=fc^;yS#AXZ4U>F2Lk$p%$BGW%{jB@zqnfoZ z4ETjdz1i+r8{iEV)x-bKO;fdkcghRA7dYeYrb^n0?sCiyh1` zl3~XG3*V#_aCZGnb2>}hF{&GN6B!wK(~d6V(rxZBsFghUl%EJ5tGQpH^`wUT{Aqy! z75(M(<9(Ckb@i$k9ksV}bW+|+?cb-uIt07F81tgVk}>z(=9A&o(n#lzo;v-dH)8De z*GZd(eVLJ2qJZWdq=(cU(6MOzbm9lSts{Of=Se<>3G+^z66 zVM^?pgX1SEDV3a=o!2(aW*k`18URgs$v%l`*6l zfX#zv81(0Y&}#B&{#a6d-0*($<9!pXtx`%2bNtE4=c}{$al7|l<~p}w>omB`dq4dC zhJuo>I?lEnS>%t)qdmF%`Ov7;?QtXltXe-ue#TxF7H$xHVg57O zHY9au8KO^-a-hU*@w`rmV^C`D7gV2Kz}*3U1`%PV1Tzv5apxb5*UmS&-z2Af2jg1b zh6S=~XXsOJTne!^aiJliI}z+(*F}`NiU0F2PkqcN>mpuKvS(^bX_o`a;i|)wxV@hS zK>@-;Fc8m9YAeGMVBkdkMxn8?kqj38#}@bf1qvfeZ!-BB|Ma3!e6kZ=?1&zg{t`1tn4 zT66d`c1PmKuRxYZAu?RwS7kJoM|7O)na+b?i0)9pkdZ+EKq|F!NobU8$-$9NxC0jW zKLNK6Nb!$-noY(6OOg1Eo=>yO?W)AtRUlyOM+o4KEdvN(&`5jw)5J4*_w)Nx_^SxumB`ZA z^=vZa-2$9bg{KDlGs%z_Rks)kP7P$dvwx&&&*2o{5kkO6_Erw11D+qhlMygT*pvC0 z{ex4X=oaAB6CUznw#1KyriL=yIpCRYKy41&F!CR0NdP{2sEPg`c=0SQ-Mc@9zq*)s zFi1FKw;I}Xd^hJfIJ`JA@E_?iFfxy8zgTF&Lv-h#h9{ST^S-L4{RiXY;9GyfNF4Ct zgL|un|Ado~U}$`N3V$^T80=P)!~a1f1D=J=SD&>xQgPptfDcxoxV{UX81 zk@Pz~@STzHGP$v7&)$PaK)~2rX7(ICd|>bHrd^fulepjh&p!tvOA}N0t0}lNxdNE^RIeh2j zpCQV_f4)DtxP-Yg7L9~Miw`HU67bK5!V&ns@FMQB>EKFiaUOSZ5(60QIU#hv8U{Pn zR^j_9AcupCkSqstEeeT+L&4>xCFsblw9oz;`OAO(*Zf0R=KtUS3&RpcTML{-2(E<* zyhA9sxHLI20d}cPT=~AK0mJGUS<7i*kuU!1e?ao}Zy@q@@aKnrDdO9~9b&6&mbmdl z!P3g24}HYY!?7m`a3rRG<8S}~3-3upK~%<e6?JD^=<&U0r5fj^hwy8k4olVo>2W zf^PZFx1Y-{-}!#d9p?*>R;5O((`h;t#9u1Yb#nq6gLp##hy5Z$Voyh9mm?u|)G3wi zHUU8P`KW*p*})ZaTWUXGLmivun=*f#h1qxq}inSC@f2BGl2XDz2T)y zkh;kUzif+%MUKD5+#IJ};+w^ZJH9V?oo@qHK&(69Xo&1a@5rjFm_v)t27cIPW}+@V z06^+G2KF|v^`&ZoA9acBL~jrM{cnFOH{nx1zykJRoPkS;Eb-6bM3OvNhr1Yg+z+RWF0-weebI4%=NNjhA%F*%YiuC}9(X`juHr7QoHTof6V|d*XEl91HTbSl5>TOaf>y zRllTF&I@2$C{QO&04A|$f%t7U9FI9BI&90sMuUXUyq6C60h7;ypYfoMnFhGkh3033 zHnl@81gHSBf<{v|8ywx;-4aBrDH8DKZqxz83I{d(I0KFa({=@o1E!gkIyU?hPiaZC zVZi4@ex&N-fT>2MmIeRB*CfpNgIV7!+&3P$rDz-d%{=6}@4S}=cvh=WBG2Gdqybj( zk$y%?=w_Q6c~y~037xnoZEk4=MUT90g%0`;x<|KJXpzSla2QBCEGZ7ST-U7RB92YP zi<6@XoDLBc(bss3F|>)>c&@kt`#2K28-P0k6ScK?%c*bXMfe>l9G3liZ!4)|laMp`gRvcfXY%;UA;}?&wB-A~4Zr#H4f~mYShUnrP76P?-W#Zoo=r z_^|~XW~V1N;(#e`0R^_RB%6_f=&uP@2P^E&fG(uP$cfviHbjyA5;zm0g8xTypuYIM z=kfyl%~LHnzj6n}&CAPdn~zY2-9NH%CsYE-bmu;c{XY+Hytu7HEC=1hQ-O(c+8 zV5ELGlFhKgjm@;$g!$hfQbPI_!?=m7LHI!@b)Q*ECSnt zv{-;CE1HyO|O*1GuxqjxzSb~_*WZPpfG;$c!e!^a1Gs)~tkMz%5uSm`3ibzOqL%V)%X_4mL1jr`<0 zSiqfXHIH*9SI93lce_$e9x@MiQ`) z&wQ>{HC~-WxWhmH&uicKdS3EvtPkce<0&miyr+>UurM5sxW|Ac@xCe+dWHhokZTKY zdZME{kW^v0i;SL4B0JjflMMmBvRP^X&^hZ_LE1T&?|usb_>Jejed?We-Z}H!H;Dm% z^ZP_mv`>t)$Ue6Sb{T*H%1UaHyPeGz8fp{}-;Zkxa5~_4ZkY<%+4k-f&j(CLdovdB z0}2eY#mG$&_KDID8vVg@2;SG;MZ%~beCIi0!0)634wSn)n{j}}@$e6Z*nuc6PwGtm zT7V{2Hb2RLLj-^|0yZQ9jlv24z=1cDl$rT)Gffg0J4!X~3IwsAWmgiE z{k#V8ef4|E35EB*Luj7jg>yQsS2?0l*B*3joL|U8W$PY+ale9zEE#Pp44qXT4Hdy4z2?Dv=D&}%{ZX>=Z z3z6@A{p-)Y`<@i9)9Fqad1iY`6mZg9(T)*0^8a|jkPNvI{Jl0g@^R`NT97*xEn9#~ zD(`*!EVgK)`3y1O_tx>Ho)o}RrNP$iEV2A|7w*C~Vkhh>m|u4bO(@TnQh`~hY=_(>&{>3X!q#c)_LZQ&mmwzHB;Vb4gVu}T8MrGqVOrmb}Y z0sr-xuWdBoW)%;x6Z2)1#9x(Wm=sy&5)qb4*jVFj^{=mi&cOF?OB!SGuub8pAew=Y z*-EtJp+w{0$dZVNu#t-eYzwR_->+ui`?XRIOv4=PjDv&MM$j@AT8S1dl`7E@@kcWogMWS&=!3BJJ;xyLf7JgyCA;41B-# zOi2MV(GjQI&Pq3JEqb72D~C&$s*EhS(zjnwIQUjoOUfq)*Db#K;>#KNeznAj%2chV zTqhBxdtj-76)M@|OPGre&$`n)YpYcxa#_{L6s?@UUWtzA7hnBaW(EFBNgursKNz#k zXqO1wn)F>f46I=EQ3SjaVj2h{X_e6~;tB1LV^VR}DeeB3XR`49+JBYy;X$YZL}qmJ z1a7O2D90gLEMYU0QiG}1Ho|;Ii%e;#W4rZoefhco{_7Xdel?3c`$cIV9}>5ytOBlG zEpH>Fuc*~ z3(6NIe}^DPk)tJ~T4wOk8V85{j@Dd!Roq~-JmH7M$5bxjQ zQ6cQgzUyYIzC84(0FKOwGxL?ol^O?+6fE_YZ(n@*E4k%w)`c&GI2xK~ zxQ(41tr{B0S>XSm{i|VD7-G&jW53ZH#ub;0xYZ^N5a8}q;i0rp?Sz9IK8w4 zMR$>G5?!xdz;Xlr@)zsO7qQjZo99tVRc@^01pMq5D^G$v#(@97tn$p0!S_i8{OlKh zS=j>o*aH6YGhblkFI#{gFTl^@<%=!AkDCw165j&61$YbaW&`}c^Or5aTY$F!Zvox{ zyajj*@D|`L!1)6HU-`=x;4Q#gfVTi|0p0?<1-OWS|7ZTP1$Yba7T_(wTY$F!ZvieI g;AaYv#~1Mb4-oXuw*NU@ga7~l07*qoM6N<$f+i_U&j0`b diff --git a/src/sdl2/SRB2PSP/psp-prxsign/.gitignore b/src/sdl2/SRB2PSP/psp-prxsign/.gitignore deleted file mode 100644 index 6a07f1a5a..000000000 --- a/src/sdl2/SRB2PSP/psp-prxsign/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/psp-prxsign -/psp-prxsign.exe diff --git a/src/sdl2/SRB2PSP/psp-prxsign/Makefile b/src/sdl2/SRB2PSP/psp-prxsign/Makefile deleted file mode 100644 index 4a9b7da0f..000000000 --- a/src/sdl2/SRB2PSP/psp-prxsign/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -EXE=psp-prxsign -SRC=main.c cmac.c -OBJ=$(SRC:.c=.o)# replaces the .c from SRC with .o - -OPENSSL_PKGCONFIG?=openssl -OPENSSL_CFLAGS?=$(shell pkg-config $(OPENSSL_PKGCONFIG) --cflags) -OPENSSL_LDFLAGS?=$(shell pkg-config $(OPENSSL_PKGCONFIG) --libs) - -CFLAGS+=$(OPENSSL_CFLAGS) -LDFLAGS+=$(OPENSSL_LDFLAGS) - -.PHONY : all # .PHONY ignores files named all - -all: $(EXE) # all is dependent on $(BIN) to be complete - - -$(EXE): $(OBJ) # $(EXE) is dependent on all of the files in $(OBJ) to exist - $(CC) $^ $(LDFLAGS) -o $@ - -.PHONY : clean # .PHONY ignores files named clean -clean: - -$(RM) $(OBJ) $(EXE) diff --git a/src/sdl2/SRB2PSP/psp-prxsign/cmac.c b/src/sdl2/SRB2PSP/psp-prxsign/cmac.c deleted file mode 100644 index f527f7a71..000000000 --- a/src/sdl2/SRB2PSP/psp-prxsign/cmac.c +++ /dev/null @@ -1,130 +0,0 @@ -#include "cmac.h" - -#define AES_128 0 -unsigned char const_Rb[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 -}; -unsigned char const_Zero[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -void xor_128(unsigned char *a, unsigned char *b, unsigned char *out) -{ - int i; - for (i=0;i<16; i++) - { - out[i] = a[i] ^ b[i]; - } -} - -/* AES-CMAC Generation Function */ - -static inline void leftshift_onebit(unsigned char *input,unsigned char *output) -{ - int i; - unsigned char overflow = 0; - - for ( i=15; i>=0; i-- ) - { - output[i] = input[i] << 1; - output[i] |= overflow; - overflow = (input[i] & 0x80)?1:0; - } -} - -void generate_subkey(unsigned char *key, unsigned char *K1, unsigned char *K2) -{ - unsigned char L[16]; - unsigned char Z[16]; - unsigned char tmp[16]; - int i; - - for ( i=0; i<16; i++ ) Z[i] = 0; - - AES_KEY aes; - AES_set_encrypt_key(key, 128, &aes); - - AES_encrypt(Z, L, &aes); - - if ( (L[0] & 0x80) == 0 ) /* If MSB(L) = 0, then K1 = L << 1 */ - { - leftshift_onebit(L,K1); - } else { /* Else K1 = ( L << 1 ) (+) Rb */ - leftshift_onebit(L,tmp); - xor_128(tmp,const_Rb,K1); - } - - if ( (K1[0] & 0x80) == 0 ) - { - leftshift_onebit(K1,K2); - } else { - leftshift_onebit(K1,tmp); - xor_128(tmp,const_Rb,K2); - } -} - -static inline void padding ( unsigned char *lastb, unsigned char *pad, int length ) -{ - int j; - - /* original last block */ - for ( j=0; j<16; j++ ) - { - if ( j < length ) - { - pad[j] = lastb[j]; - } else if ( j == length ) { - pad[j] = 0x80; - } else { - pad[j] = 0x00; - } - } -} - -void AES_CMAC ( unsigned char *key, unsigned char *input, int length, unsigned char *mac ) -{ - unsigned char X[16],Y[16], M_last[16], padded[16]; - unsigned char K1[16], K2[16]; - int n, i, flag; - generate_subkey(key,K1,K2); - - n = (length+15) / 16; /* n is number of rounds */ - - if ( n == 0 ) - { - n = 1; - flag = 0; - } else { - if ( (length%16) == 0 ) { /* last block is a complete block */ - flag = 1; - } else { /* last block is not complete block */ - flag = 0; - } - - } - - if ( flag ) { /* last block is complete block */ - xor_128(&input[16*(n-1)],K1,M_last); - } else { - padding(&input[16*(n-1)],padded,length%16); - xor_128(padded,K2,M_last); - } - AES_KEY aes; - AES_set_encrypt_key(key, 128, &aes); - - for ( i=0; i<16; i++ ) X[i] = 0; - for ( i=0; i -#include - -void xor_128(unsigned char *a, unsigned char *b, unsigned char *out); -void generate_subkey(unsigned char *key, unsigned char *K1, unsigned char *K2); -void AES_CMAC(unsigned char *key, unsigned char *input, int length, unsigned char *mac); - -#endif diff --git a/src/sdl2/SRB2PSP/psp-prxsign/kirk_header.h b/src/sdl2/SRB2PSP/psp-prxsign/kirk_header.h deleted file mode 100644 index 76c921ef0..000000000 --- a/src/sdl2/SRB2PSP/psp-prxsign/kirk_header.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __kirk_header__ -#define __kirk_header__ - -static unsigned int size_kirk_header = 272; -static unsigned char kirk_header[] __attribute__((aligned(16))) = { - 0x2a, 0x4f, 0x3c, 0x49, 0x8a, 0x73, 0x4e, 0xd1, 0xf4, 0x55, 0x93, 0x0b, 0x9b, 0x69, 0xdc, 0x65, - 0x73, 0x22, 0x69, 0xd3, 0x73, 0x96, 0x7a, 0x60, 0x66, 0x8c, 0x88, 0xcf, 0x2f, 0x83, 0x58, 0xbc, - 0xb2, 0x00, 0x0a, 0x11, 0x72, 0x43, 0xc5, 0xde, 0xef, 0xbb, 0x2c, 0xbf, 0x97, 0x79, 0x6b, 0x9c, - 0x10, 0x1e, 0x7c, 0x57, 0x0e, 0xdb, 0x1d, 0x61, 0x6e, 0xb5, 0xf9, 0x3d, 0x35, 0xe9, 0x5c, 0xd8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x33, 0x55, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7e, 0x50, 0x53, 0x50, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x22, 0x74, 0x69, 0x66, 0x70, 0x73, - 0x70, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x33, 0x55, 0x00, 0x50, 0x34, 0x55, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x67, 0x3d, 0x00, 0x50, 0x55, 0x0a, 0x01, 0x10, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x6b, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0x6b, 0x3d, 0x00, 0xcc, 0xbb, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, -}; - -#endif diff --git a/src/sdl2/SRB2PSP/psp-prxsign/main.c b/src/sdl2/SRB2PSP/psp-prxsign/main.c deleted file mode 100644 index a970ae6c1..000000000 --- a/src/sdl2/SRB2PSP/psp-prxsign/main.c +++ /dev/null @@ -1,190 +0,0 @@ -#include -#include -#include -#include -#include -#include "cmac.h" -#include "kirk_header.h" -#include "psp_header.h" - -typedef unsigned char byte; - -typedef struct { - byte key[16]; - byte ckey[16]; - byte head_hash[16]; - byte data_hash[16]; - byte unused[32]; - int unk1; // 1 - int unk2; // 0 - int unk3[2]; - int datasize; - int dataoffset; - int unk4[6]; -} kirk1head_t; - -// secret kirk command 1 key -byte kirk_key[] = { - 0x98, 0xc9, 0x40, 0x97, 0x5c, 0x1d, 0x10, 0xe8, 0x7f, 0xe6, 0x0e, 0xa3, 0xfd, 0x03, 0xa8, 0xba -}; - -int main(int argc, char **argv) -{ - int i, relrem, size, fullsize, blocks, datasize; - size_t j; - kirk1head_t kirk; - byte iv[16]; - byte cmac[32]; - byte subk[32]; - byte psph[0x150]; - byte *datablob; - byte *filebuff; - FILE *f; - AES_KEY aesKey; - Elf32_Ehdr *ehdr; - Elf32_Shdr *shdr; - Elf32_Rel *relo; - - if(argc < 3) { - printf("Usage: %s unsigned.prx signed.prx\n", argv[0]); - return 1; - } - - // clean kirk header, use modified PRXdecrypter to get it - /*f = fopen(argv[1], "rb"); - if(!f) { - printf("failed to open %s\n", argv[1]); - return 1; - } - fread(&kirk, 1, sizeof(kirk1head_t), f); - fclose(f);*/ - //memcpy(&kirk, kirk_header, size_kirk_header); - memcpy(&kirk, kirk_header, sizeof(kirk1head_t)); - - datasize = kirk.datasize; - if(datasize % 16) datasize += 16 - (datasize % 16); - - // original ~PSP header - /*f = fopen(argv[2], "rb"); - if(!f) { - free(datablob); - printf("failed to open %s\n", argv[2]); - return 1; - } - fread(psph, 1, 0x150, f); - fclose(f);*/ - memcpy(&psph, psp_header, size_psp_header); - - // file to encrypt - f = fopen(argv[1], "rb"); - if(!f) { - printf("psp-prxsign: Unable to open PRX\n"); - return 1; - } - fseek(f, 0, SEEK_END); - size = ftell(f); - if(size > datasize - 16) { - fclose(f); - printf("psp-prxsign: PRX is too large\n"); - return 1; - } - printf("%s : %i\n", argv[1], size); - fseek(f, 0, SEEK_SET); - - fullsize = datasize + 0x30 + kirk.dataoffset; - - // datablob holds everything needed to calculate data HASH - datablob = malloc(fullsize); - if(!datablob) { - fclose(f); - printf("psp-prxsign: Failed to allocate memory for blob\n"); - return 1; - } - memset(datablob, 0, fullsize); - memcpy(datablob, &kirk.unk1, 0x30); - memcpy(datablob + 0x30, psph, kirk.dataoffset); - filebuff = datablob + 0x30 + kirk.dataoffset; - - int whocares = fread(filebuff, 1, size, f); - (void)whocares; - fclose(f); - - // remove relocations type 7 - relrem = 0; - ehdr = (void *)filebuff; - if(!memcmp(ehdr->e_ident, ELFMAG, 4) && ehdr->e_shnum) { - shdr = (void *)(filebuff + ehdr->e_shoff); - for(i = 0; i < ehdr->e_shnum; i++) { - if(shdr[i].sh_type == 0x700000A0) { - relo = (void *)(filebuff + shdr[i].sh_offset); - for(j = 0; j < shdr[i].sh_size / sizeof(Elf32_Rel); j++) { - if((relo[j].r_info & 0xFF) == 7) { - relo[j].r_info = 0; - relrem++; - } - } - } - } - } - //printf("%i relocations type 7 removed\ncalculating ...\n", relrem); - - // get AES/CMAC key - AES_set_decrypt_key(kirk_key, 128, &aesKey); - memset(iv, 0, 16); - AES_cbc_encrypt(kirk.key, kirk.key, 32, &aesKey, iv, AES_DECRYPT); - - // check header hash, optional - // if you take correct kirk header, hash is always correct -/* AES_CMAC(kirk.ckey, datablob, 0x30, cmac); - if(memcmp(cmac, kirk.head_hash, 16)) { - free(datablob); - printf("header hash invalid\n"); - return 1; - } -*/ - - // encrypt input file - AES_set_encrypt_key(kirk.key, 128, &aesKey); - memset(iv, 0, 16); - AES_cbc_encrypt(filebuff, filebuff, datasize, &aesKey, iv, AES_ENCRYPT); - - // make CMAC correct - generate_subkey(kirk.ckey, subk, subk + 16); - AES_set_encrypt_key(kirk.ckey, 128, &aesKey); - blocks = fullsize / 16; - memset(cmac, 0, 16); - for(i = 0; i < blocks - 1; i++) { - xor_128(cmac, &datablob[16 * i], cmac + 16); - AES_encrypt(cmac + 16, cmac, &aesKey); - } - - AES_set_decrypt_key(kirk.ckey, 128, &aesKey); - AES_decrypt(kirk.data_hash, iv, &aesKey); - xor_128(cmac, iv, iv); - xor_128(iv, subk, &datablob[16 * (blocks-1)]); - // check it, optional - // it works, this is only if you want to change something -/* AES_CMAC(kirk.ckey, datablob, fullsize, cmac); - if(memcmp(cmac, kirk.data_hash, 16)) { - fclose(f); - free(datablob); - printf("data hash calculation error\n"); - return 1; - } -*/ - f = fopen(argv[2], "wb"); - if(!f) { - free(datablob); - printf("psp-prxsign: Failed to write signed PRX\n"); - return 1; - } - //printf("saving ...\n"); - // save ~PSP header - fwrite(psph, 1, 0x150, f); - // save encrypted file - fwrite(filebuff, 1, fullsize - 0x30 - kirk.dataoffset, f); - fclose(f); - free(datablob); - //printf("everything done\n"); - return 0; -} diff --git a/src/sdl2/SRB2PSP/psp-prxsign/psp_header.h b/src/sdl2/SRB2PSP/psp-prxsign/psp_header.h deleted file mode 100644 index 7faef832c..000000000 --- a/src/sdl2/SRB2PSP/psp-prxsign/psp_header.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __psp_header__ -#define __psp_header__ - -static unsigned int size_psp_header = 336; -static unsigned char psp_header[] __attribute__((aligned(16))) = { - 0x7e, 0x50, 0x53, 0x50, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x22, 0x74, 0x69, 0x66, 0x70, 0x73, - 0x70, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x33, 0x55, 0x00, 0x50, 0x34, 0x55, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x67, 0x3d, 0x00, 0x50, 0x55, 0x0a, 0x01, 0x10, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x6b, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0x6b, 0x3d, 0x00, 0xcc, 0xbb, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x90, 0x82, 0x4c, 0x48, 0xa3, 0x53, 0xb2, 0x1b, 0x13, 0x95, 0x2f, 0xf1, 0x0b, 0x90, 0x9c, 0x11, - 0x61, 0x40, 0x20, 0x67, 0xf8, 0xdb, 0xfc, 0x95, 0x5c, 0xbe, 0x8c, 0x80, 0xf3, 0x92, 0x03, 0x01, - 0xb0, 0xbe, 0xf5, 0xf8, 0xa1, 0xaf, 0xaf, 0xa8, 0x38, 0x26, 0x63, 0x09, 0x26, 0x0e, 0xb7, 0xd5, - 0x00, 0x33, 0x55, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5c, 0x3e, 0x03, 0x22, 0xe5, 0x7d, 0xb9, 0xd1, 0x13, 0x67, 0x97, 0xa3, 0x5b, 0xd8, 0x77, 0x1f, - 0xf0, 0x05, 0xf3, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x4a, 0xd7, 0x37, - 0xc2, 0x8f, 0x15, 0x43, 0x33, 0x93, 0x4d, 0x5b, 0xc0, 0x6e, 0xe4, 0x00, 0xc6, 0x0a, 0x71, 0x11, - 0x98, 0xb6, 0xc3, 0xb7, 0x59, 0x66, 0x21, 0xa8, 0x65, 0xf6, 0x53, 0xa9, 0x7a, 0x48, 0x17, 0xb6, -}; - -#endif diff --git a/src/sdl2/SRB2WII/Makefile.cfg b/src/sdl2/SRB2WII/Makefile.cfg deleted file mode 100644 index 1b1863042..000000000 --- a/src/sdl2/SRB2WII/Makefile.cfg +++ /dev/null @@ -1,124 +0,0 @@ -# -# Makefile.cfg for SRB2Wii native using libogc -# - -# Check if DEVKITPPC is set in the environment. If so, continue with compilation. -.SUFFIXES: - -ifeq ($(strip $(DEVKITPPC)),) -$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=devkitPPC") -endif - -# Set compiler flags - -SRB2NAME?=srb2wii -EXENAME?=$(SRB2NAME).elf -DBGNAME?=$(SRB2NAME).elf.debug -DOLNAME?=$(SRB2NAME).dol - -ICONPNG?=sdl/SRB2WII/icon.png -METAXML?=sdl/SRB2WII/meta.xml - -APPDIR=apps/$(SRB2NAME) -ZIPNAME=$(SRB2NAME).zip - -ELF2DOL=$(DEVKITPPC)/bin/elf2dol -WIILOADEXE=$(DEVKITPPC)/bin/wiiload -ZIP=zip -r -9 -WGET=wget -P srb2wii -c -nc -SED=sed -XARGS=xargs -SHXARGS:=$(XARGS) -SHSED:=$(SED) -FOR=for - -ifndef ECHO - ELF2DOL:=@$(ELF2DOL) - WIILOADEXE:=@$(WIILOADEXE) - ZIP:=@$(ZIP) - SED:=@$(SED) - XARGS:=@$(XARGS) - FOR:=@$(FOR) -endif - -# Disable same warning flags -WFLAGS+=-Wno-shadow -Wno-char-subscripts -Wno-old-style-definition -Wno-unsuffixed-float-constants - -# newlib has no support for networking -NONET=1 - -# use pkgconfig for PKG -PNG_PKGCONFIG=libpng - -# use absolute paths because changing PATH variable breaks distcc -PREFIX := $(DEVKITPPC)/bin/$(PREFIX) - -# FIXME: DevkitPPC and ready-compiled SDL Wii require these things to be in a silly order -# libogc/DevkitPro required stuff -LIBOGC := $(DEVKITPRO)/libogc -LIBOGC_INC := $(LIBOGC)/include -LIBOGC_LIB := $(LIBOGC)/lib - -PORTLIBS := $(DEVKITPRO)/portlibs/ppc -PORTLIBS_INC := $(PORTLIBS)/include -PORTLIBS_LIB := $(PORTLIBS)/lib - -SDL_CPPFLAGS := -I$(LIBOGC_INC)/SDL -SDL_LIB := $(DEVKITPRO)/libogc/lib/wii -INCLUDE := -I$(LIBOGC_INC) $(SDL_CPPFLAGS) -I$(PORTLIBS_INC) - -PKG_CONFIG_PATH := $(PORTLIBS)/lib/pkgconfig -PKG_BROKEN_SWTICH := --static --define-variable=DEVKITPRO=$(DEVKITPRO) -PNG_PKGCONFIG := $(PKG_CONFIG_PATH)/libpng.pc $(PKG_BROKEN_SWTICH) -ZLIB_PKGCONFIG := $(PKG_CONFIG_PATH)/zlib.pc $(PKG_BROKEN_SWTICH) - -ZLIB_CFLAGS?=$(shell $(PKG_CONFIG) $(ZLIB_PKGCONFIG) --cflags) -ZLIB_LDFLAGS?=$(shell $(PKG_CONFIG) $(ZLIB_PKGCONFIG) --libs) - -ifdef RDB - LIBS+=-ldb - OPTS+=-DREMOTE_DEBUGGING=$(RDB) -endif - -LIBS+= -L$(SDL_LIB) -ifndef NOMIXER - LD=$(CXX) - LIBS+=-lSDL_mixer -lvorbisidec -lsmpeg -endif -LIBS+=-lSDL - -LIBS+=$(ZLIB_LDFLAGS) -lfat -lwiiuse -lbte -logc -lm -lwiikeyboard -L$(LIBOGC_LIB) - -MACHDEP = -DGEKKO -mrvl -mcpu=750 -meabi -mhard-float -OPTS+=-DWII -D_WII -DUNIXCOMMON -CFLAGS+=-D__BIG_ENDIAN__ -g -O3 -fsigned-char $(MACHDEP) $(INCLUDE) -CXXFLAGS+=$(CFLAGS) -LDFLAGS+=-g $(MACHDEP) -Wl,-Map,$(notdir $@).map - -SDL_CONFIG=/bin/true -SDL_CFLAGS= -SDL_LDFLAGS= - -$(BIN)/$(DOLNAME): $(BIN)/$(EXENAME) - @echo Linking $(DOLNAME)... - $(ELF2DOL) $(BIN)/$(EXENAME) $(BIN)/$(DOLNAME) - @echo Creating /apps/$(SRB2NAME)... - $(MKDIR) $(APPDIR) - $(CP) $(BIN)/$(DOLNAME) $(APPDIR)/boot.dol - $(CP) $(ICONPNG) $(APPDIR) - $(CP) $(METAXML) $(APPDIR) -ifdef WITHDATA - $(MKDIR) srb2wii - $(FOR) datafile in $(shell echo $(D_FILES) | $(SHSED) -e 's/\.srb/\.wad/' -e 's/music.dta//' | $(SHXARGS) -n 1 basename); do \ - $(WGET) http://alam.srb2.org/SRB2/2.0.6-Final/Resources/$$datafile; \ - done - # downsampled music.dta specially for SRB2Wii - $(WGET) http://repos.srb2.org/srb2ports/music.dta - $(ZIP) $(BIN)/$(ZIPNAME) $(APPDIR) srb2wii -else - $(ZIP) $(BIN)/$(ZIPNAME) $(APPDIR) -endif - $(REMOVE) -r $(APPDIR) - -run: $(BIN)/$(EXENAME) - $(WIILOADEXE) $(BIN)/$(DBGNAME) diff --git a/src/sdl2/SRB2WII/icon.png b/src/sdl2/SRB2WII/icon.png deleted file mode 100644 index d22324bc6a9e51dac5c2e82cb2d78ca73d277c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11247 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 Z{vWl3$A6Dk3OWD)002ovPDHLkV1k2@h&uoP diff --git a/src/sdl2/SRB2WII/meta.xml b/src/sdl2/SRB2WII/meta.xml deleted file mode 100644 index 843176d3a..000000000 --- a/src/sdl2/SRB2WII/meta.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - SRB2Wii - Callum - 2.0.6 - 20101207 - A 3D Sonic fangame - Sonic Robo Blast 2 is a 3D fangame by a small group called -Sonic Team Junior, using the Doom engine as a base. -The game has been worked on for almost 11 years so far, and -it is still being very much developed today, with a huge -fanbase developing custom content, including characters, -levels, and even large-scale modifications that play out -a brand new adventure. -Based on the Doom II engine, SRB2's system requirements -are very low, even the oldest computers can play it at a -decent speed. - diff --git a/src/sdl2/SRB2XBOX/Makefile.cfg b/src/sdl2/SRB2XBOX/Makefile.cfg deleted file mode 100644 index 56966d438..000000000 --- a/src/sdl2/SRB2XBOX/Makefile.cfg +++ /dev/null @@ -1,44 +0,0 @@ -# -# Makefile.cfg for SRB2/XBOX -# - -# -#hmmm, the XBOX -# - - NOHW=1 #No working OpenGL right now - NOHS=1 #No HWSound right now - NOASM=1 #No Fast code - NONET=1 #No network code - NOMD5=1 #No Slow MD5 - NOPNG=1 #No Screenshot - #SDLMAIN=1 #SDLMain! - -ifndef OPENXDK - OPENXDK=/usr/local/openxdk -endif - - CXBE=$(OPENXDK)/bin/cxbe - -ifdef ECHO - CXBE:=@$(CXBE) -endif - -ifndef NOHW - OPTS+=-DMINI_GL_COMPATIBILITY -endif - - BUILTLM=-fno-builtin - CFLAGS+=-D_XBOX -std=gnu99 -ffreestanding $(BUILTLM) -fno-exceptions - CFLAGS+=-I$(OPENXDK)/i386-pc-xbox/include -I$(OPENXDK)/include - OPTS+=-nostdlib -mno-cygwin -march=i386 - LDFLAGS+=-nostdlib -Wl,--file-alignment,0x20 -Wl,--section-alignment,0x20 -shared -Wl,--entry,_WinMainCRTStartup -Wl,--strip-all -L$(OPENXDK)/i386-pc-xbox/lib -L$(OPENXDK)/lib - LIBS=-lg -lc -lm - SDL_CFLAGS?=-I$(OPENXDK)/include/SDL - SDL_LDFLAGS?=-lSDL -lopenxdk -lhal -lc -lhal -lusb -lhal -lc -lxboxkrnl - - i_system_o+=$(OBJDIR)/xboxhelp.o - - # name of the exefile - EXENAME?=SRB2XBOX.EXE - BINNAME?=default.xbe diff --git a/src/sdl2/SRB2XBOX/xboxhelp.c b/src/sdl2/SRB2XBOX/xboxhelp.c deleted file mode 100644 index 9de01712f..000000000 --- a/src/sdl2/SRB2XBOX/xboxhelp.c +++ /dev/null @@ -1,91 +0,0 @@ -// Emacs style mode select -*- C++ -*- -//----------------------------------------------------------------------------- -// -// Copyright (C) 2004 by Sonic Team Jr. -// -// This program 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 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// DESCRIPTION: -// stub and replacement "ANSI" C functions for use under OpenXDK -// -//----------------------------------------------------------------------------- - -#include "../../doomdef.h" -#include "xboxhelp.h" -#ifdef __GNUC__ -#include -#else -#include -#endif - -char *getcwd(char *_buf, size_t _size ) -{ - (void)_buf; - (void)_size; - return _buf; -} - -#ifdef _MSC_VER -int mkdir(const char *path) -{ - (void)path; - return 0; -} -#elif 0 //__GNUC__? -int mkdir(const char *path, mode_t _mode) -{ - (void)path; - (void)_mode; - return 0; -} -#endif - -int chdir (const char *__path ) -{ - (void)__path; - return 0; -} - -time_t time(time_t *T) -{ - long returntime = 0; - (void)T; -/* - SYSTEMTIME st; - FILETIME stft; - INT64 ftli; - if (!T) return returntime; - GetSystemTime(&st); - SystemTimeToFileTime(&st,&stft); - CopyMemory(&ftli,&stft,sizeof (LARGE_INTEGER)); - returntime = (long)ftli; - *T = returntime; -*/ - return returntime; -} - -#ifdef _MSC_VER -#include -void __cdecl _RTC_Initialize(void) -{ -} -char *getenv(const char *__env) -{ - __env = NULL; - return NULL; -} - -int putenv(const char *__env) -{ - __env = NULL; - return 0; -} -#endif diff --git a/src/sdl2/SRB2XBOX/xboxhelp.h b/src/sdl2/SRB2XBOX/xboxhelp.h deleted file mode 100644 index 97ef0a3be..000000000 --- a/src/sdl2/SRB2XBOX/xboxhelp.h +++ /dev/null @@ -1,6 +0,0 @@ -#if defined (_MSC_VER) -int access(const char *path, int amode); -char *getcwd(char *_buf, size_t _size ); -int mkdir(const char *path); -int chdir (const char *__path ); -#endif