mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-21 05:43:42 -07:00
Wii U support (#1097)
* Wii U support * [WiiU] Combined Dockerfile * [WiiU] Combined Dockerfile * [WiiU] Combined Dockerfile * Add Jenkins support * wiiu: fix scissor clamp * wiiu: improve button remapping * wiiu: fix scaling issues * Update Dockerfile after merge * Pull assets before build * Only stop container once * Adjust logging sinks * wiiu: Change button mapping to match PC version * wiiu: Implement controller changes * wiiu: Update BUILDING.md Co-authored-by: qurious-pixel <62252937+qurious-pixel@users.noreply.github.com> Co-authored-by: David Chavez <david@dcvz.io>
This commit is contained in:
parent
b989ef4f7f
commit
68e7f2e6c1
57 changed files with 5460 additions and 73 deletions
|
@ -34,7 +34,12 @@
|
|||
// Local functions - platform-specific functions
|
||||
|
||||
#ifndef STORMLIB_WINDOWS
|
||||
|
||||
#ifndef STORMLIB_WIIU // WIIU doesn't support thread_local
|
||||
static thread_local DWORD dwLastError = ERROR_SUCCESS;
|
||||
#else
|
||||
static DWORD dwLastError = ERROR_SUCCESS;
|
||||
#endif
|
||||
|
||||
DWORD GetLastError()
|
||||
{
|
||||
|
|
|
@ -2005,7 +2005,7 @@ void ConvertTMPQHeader(void *header, uint16_t version)
|
|||
TMPQHeader * theHeader = (TMPQHeader *)header;
|
||||
|
||||
// Swap header part version 1
|
||||
if(version == MPQ_FORMAT_VERSION_1)
|
||||
if(version >= MPQ_FORMAT_VERSION_1)
|
||||
{
|
||||
theHeader->dwID = SwapUInt32(theHeader->dwID);
|
||||
theHeader->dwHeaderSize = SwapUInt32(theHeader->dwHeaderSize);
|
||||
|
@ -2018,21 +2018,21 @@ void ConvertTMPQHeader(void *header, uint16_t version)
|
|||
theHeader->dwBlockTableSize = SwapUInt32(theHeader->dwBlockTableSize);
|
||||
}
|
||||
|
||||
if(version == MPQ_FORMAT_VERSION_2)
|
||||
if(version >= MPQ_FORMAT_VERSION_2)
|
||||
{
|
||||
theHeader->HiBlockTablePos64 = SwapUInt64(theHeader->HiBlockTablePos64);
|
||||
theHeader->wHashTablePosHi = SwapUInt16(theHeader->wHashTablePosHi);
|
||||
theHeader->wBlockTablePosHi = SwapUInt16(theHeader->wBlockTablePosHi);
|
||||
}
|
||||
|
||||
if(version == MPQ_FORMAT_VERSION_3)
|
||||
if(version >= MPQ_FORMAT_VERSION_3)
|
||||
{
|
||||
theHeader->ArchiveSize64 = SwapUInt64(theHeader->ArchiveSize64);
|
||||
theHeader->BetTablePos64 = SwapUInt64(theHeader->BetTablePos64);
|
||||
theHeader->HetTablePos64 = SwapUInt64(theHeader->HetTablePos64);
|
||||
}
|
||||
|
||||
if(version == MPQ_FORMAT_VERSION_4)
|
||||
if(version >= MPQ_FORMAT_VERSION_4)
|
||||
{
|
||||
theHeader->HashTableSize64 = SwapUInt64(theHeader->HashTableSize64);
|
||||
theHeader->BlockTableSize64 = SwapUInt64(theHeader->BlockTableSize64);
|
||||
|
|
|
@ -180,7 +180,7 @@ static DWORD LoadAttributesFile(TMPQArchive * ha, LPBYTE pbAttrFile, DWORD cbAtt
|
|||
if((pbAttrPtr + cbArraySize) > pbAttrFileEnd)
|
||||
return ERROR_FILE_CORRUPT;
|
||||
|
||||
BSWAP_ARRAY32_UNSIGNED(ArrayCRC32, cbCRC32Size);
|
||||
BSWAP_ARRAY32_UNSIGNED(ArrayCRC32, cbArraySize);
|
||||
for(i = 0; i < dwAttributesEntries; i++)
|
||||
ha->pFileTable[i].dwCrc32 = ArrayCRC32[i];
|
||||
pbAttrPtr += cbArraySize;
|
||||
|
@ -196,7 +196,7 @@ static DWORD LoadAttributesFile(TMPQArchive * ha, LPBYTE pbAttrFile, DWORD cbAtt
|
|||
if((pbAttrPtr + cbArraySize) > pbAttrFileEnd)
|
||||
return ERROR_FILE_CORRUPT;
|
||||
|
||||
BSWAP_ARRAY64_UNSIGNED(ArrayFileTime, cbFileTimeSize);
|
||||
BSWAP_ARRAY64_UNSIGNED(ArrayFileTime, cbArraySize);
|
||||
for(i = 0; i < dwAttributesEntries; i++)
|
||||
ha->pFileTable[i].FileTime = ArrayFileTime[i];
|
||||
pbAttrPtr += cbArraySize;
|
||||
|
|
|
@ -480,7 +480,7 @@ static bool IsMatchingPatchFile(
|
|||
{
|
||||
// Load the patch header
|
||||
SFileReadFile(hFile, &PatchHeader, sizeof(MPQ_PATCH_HEADER), &dwTransferred, NULL);
|
||||
BSWAP_ARRAY32_UNSIGNED(pPatchHeader, sizeof(DWORD) * 6);
|
||||
BSWAP_ARRAY32_UNSIGNED(&PatchHeader, sizeof(DWORD) * 6);
|
||||
|
||||
// If the file contains an incremental patch,
|
||||
// compare the "MD5 before patching" with the base file MD5
|
||||
|
|
|
@ -631,8 +631,8 @@ typedef struct _TMPQHash
|
|||
|
||||
#else
|
||||
|
||||
BYTE Platform;
|
||||
BYTE Reserved;
|
||||
BYTE Platform;
|
||||
USHORT lcLocale;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -254,6 +254,34 @@
|
|||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Defines for Wii U platform
|
||||
|
||||
#if !defined(STORMLIB_PLATFORM_DEFINED) && defined(__WIIU__)
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <ctype.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#undef STORMLIB_LITTLE_ENDIAN // Wii U is always big endian
|
||||
|
||||
#define STORMLIB_MAC // Use Mac compatible code
|
||||
#define STORMLIB_WIIU
|
||||
#define STORMLIB_PLATFORM_DEFINED
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Assumption: If the platform is not defined, assume a Linux-like platform
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue