Skip to content

Commit

Permalink
Merge branch 'main' into fix-small-memory-issue
Browse files Browse the repository at this point in the history
  • Loading branch information
coco875 committed Jan 9, 2025
2 parents 08abd2c + 3e46fe7 commit 65253fc
Show file tree
Hide file tree
Showing 135 changed files with 2,557 additions and 828 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/tidy-format-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) clang-tidy clang-format-12
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) clang-tidy clang-format-14
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-ccache
- name: Run clang-format
run: |
find src include -name "*.cpp" -o -name "*.h" | sed 's| |\\ |g' | xargs clang-format-12 -i
find src include -name "*.cpp" -o -name "*.h" | sed 's| |\\ |g' | xargs clang-format-14 -i
git diff --exit-code
- name: Install latest SDL
run: |
Expand Down
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ Our CI system will automatically check your PR to ensure that it fits [formattin
If the tidy-format-validation check fails, then you need to run clang-format. Below is a command that can be used on Linux. Most modern IDEs have a clang-format plugin that can be used. The [.clang-format file can be found here](https://github.com/Kenix3/libultraship/blob/main/.clang-format)
##### Running clang-format
###### From within the LUS directory.
Ensure clang-format-12 is installed and available through your system path.
Ensure clang-format-14 is installed and available through your system path.

Bash:
```
find src include -name "*.cpp" -o -name "*.h" | sed 's| |\\ |g' | xargs clang-format-12 -i
find src include -name "*.cpp" -o -name "*.h" | sed 's| |\\ |g' | xargs clang-format-14 -i
```

Powershell:
```
Get-ChildItem -Recurse -Path .\src -Include *.cpp, *.h -File | ForEach-Object { clang-format-12.exe -i $_.FullName }
Get-ChildItem -Recurse -Path .\src -Include *.cpp, *.h -File | ForEach-Object { clang-format-14.exe -i $_.FullName }
```
41 changes: 40 additions & 1 deletion cmake/cvars.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,26 @@ set(CVAR_GAME_OVERLAY_FONT "gOverlayFont" CACHE STRING "")
set(CVAR_MENU_BAR_OPEN "gOpenMenuBar" CACHE STRING "")
set(CVAR_PREFIX_CONTROLLERS "gControllers" CACHE STRING "")
set(CVAR_PREFIX_ADVANCED_RESOLUTION "gAdvancedResolution" CACHE STRING "")

set(LUS_DEFAULT_KB_MAPPING_A KbScancode::LUS_KB_X CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_B KbScancode::LUS_KB_C CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_L KbScancode::LUS_KB_E CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_R KbScancode::LUS_KB_R CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_Z KbScancode::LUS_KB_Z CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_START KbScancode::LUS_KB_SPACE CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_STICKUP KbScancode::LUS_KB_W CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_STICKDOWN KbScancode::LUS_KB_S CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_STICKLEFT KbScancode::LUS_KB_A CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_STICKRIGHT KbScancode::LUS_KB_D CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_CUP KbScancode::LUS_KB_ARROWKEY_UP CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_CDOWN KbScancode::LUS_KB_ARROWKEY_DOWN CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_CLEFT KbScancode::LUS_KB_ARROWKEY_LEFT CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_CRIGHT KbScancode::LUS_KB_ARROWKEY_RIGHT CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_DUP KbScancode::LUS_KB_T CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_DDOWN KbScancode::LUS_KB_G CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_DLEFT KbScancode::LUS_KB_F CACHE STRING "")
set(LUS_DEFAULT_KB_MAPPING_DRIGHT KbScancode::LUS_KB_H CACHE STRING "")

add_compile_definitions(
CVAR_VSYNC_ENABLED="${CVAR_VSYNC_ENABLED}"
CVAR_Z_FIGHTING_MODE="${CVAR_Z_FIGHTING_MODE}"
Expand All @@ -43,4 +63,23 @@ add_compile_definitions(
CVAR_MENU_BAR_OPEN="${CVAR_MENU_BAR_OPEN}"
CVAR_PREFIX_CONTROLLERS="${CVAR_PREFIX_CONTROLLERS}"
CVAR_PREFIX_ADVANCED_RESOLUTION="${CVAR_PREFIX_ADVANCED_RESOLUTION}"
)

LUS_DEFAULT_KB_MAPPING_A=${LUS_DEFAULT_KB_MAPPING_A}
LUS_DEFAULT_KB_MAPPING_B=${LUS_DEFAULT_KB_MAPPING_B}
LUS_DEFAULT_KB_MAPPING_L=${LUS_DEFAULT_KB_MAPPING_L}
LUS_DEFAULT_KB_MAPPING_R=${LUS_DEFAULT_KB_MAPPING_R}
LUS_DEFAULT_KB_MAPPING_Z=${LUS_DEFAULT_KB_MAPPING_Z}
LUS_DEFAULT_KB_MAPPING_START=${LUS_DEFAULT_KB_MAPPING_START}
LUS_DEFAULT_KB_MAPPING_STICKUP=${LUS_DEFAULT_KB_MAPPING_STICKUP}
LUS_DEFAULT_KB_MAPPING_STICKDOWN=${LUS_DEFAULT_KB_MAPPING_STICKDOWN}
LUS_DEFAULT_KB_MAPPING_STICKLEFT=${LUS_DEFAULT_KB_MAPPING_STICKLEFT}
LUS_DEFAULT_KB_MAPPING_STICKRIGHT=${LUS_DEFAULT_KB_MAPPING_STICKRIGHT}
LUS_DEFAULT_KB_MAPPING_CUP=${LUS_DEFAULT_KB_MAPPING_CUP}
LUS_DEFAULT_KB_MAPPING_CDOWN=${LUS_DEFAULT_KB_MAPPING_CDOWN}
LUS_DEFAULT_KB_MAPPING_CLEFT=${LUS_DEFAULT_KB_MAPPING_CLEFT}
LUS_DEFAULT_KB_MAPPING_CRIGHT=${LUS_DEFAULT_KB_MAPPING_CRIGHT}
LUS_DEFAULT_KB_MAPPING_DUP=${LUS_DEFAULT_KB_MAPPING_DUP}
LUS_DEFAULT_KB_MAPPING_DDOWN=${LUS_DEFAULT_KB_MAPPING_DDOWN}
LUS_DEFAULT_KB_MAPPING_DLEFT=${LUS_DEFAULT_KB_MAPPING_DLEFT}
LUS_DEFAULT_KB_MAPPING_DRIGHT=${LUS_DEFAULT_KB_MAPPING_DRIGHT}
)
75 changes: 67 additions & 8 deletions include/libultraship/libultra/gbi.h
Original file line number Diff line number Diff line change
Expand Up @@ -1643,19 +1643,40 @@ typedef struct {
unsigned long w3;
} TexRect;

#ifdef USE_GBI_TRACE
/*
* Trace structure
*/
typedef struct {
const char* file;
int idx;
bool valid;
} Trace;

#define MakeTrace() \
, { \
__FILE__, __LINE__, true \
}
#else
#define MakeTrace()
#endif
/*
* Generic Gfx Packet
*/
typedef struct {
uintptr_t w0;
uintptr_t w1;

// unsigned long long w0;
// unsigned long long w1;
#ifdef USE_GBI_TRACE
Trace trace;
#endif
} Gwords;

#ifdef __cplusplus
static_assert(sizeof(Gwords) == 2 * sizeof(void*), "Display list size is bad");
#ifdef USE_GBI_TRACE
static_assert((sizeof(Gwords) == 2 * sizeof(void*) + sizeof(Trace)), "Display list size is bad");
#else
static_assert((sizeof(Gwords) == 2 * sizeof(void*)), "Display list size is bad");
#endif
#endif

/*
Expand Down Expand Up @@ -1711,28 +1732,54 @@ typedef union Gfx {
#define gsDma0p(c, s, l) \
{ _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (uintptr_t)(s) }

#ifdef USE_GBI_TRACE
#define gDma1p(pkt, c, s, l, p) \
_DW({ \
Gfx* _g = (Gfx*)(pkt); \
\
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)); \
_g->words.w1 = (uintptr_t)(s); \
_g->words.trace.file = __FILE__; \
_g->words.trace.idx = __LINE__; \
_g->words.trace.valid = true; \
})

#else
#define gDma1p(pkt, c, s, l, p) \
_DW({ \
Gfx* _g = (Gfx*)(pkt); \
\
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)); \
_g->words.w1 = (uintptr_t)(s); \
})
#endif
#define gsDma1p(c, s, l, p) \
{ (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)), (uintptr_t)(s) }
{ (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)), (uintptr_t)(s)MakeTrace() }

#ifdef USE_GBI_TRACE
#define gDma2p(pkt, c, adrs, len, idx, ofs) \
_DW({ \
Gfx* _g = (Gfx*)(pkt); \
_g->words.w0 = \
(_SHIFTL((c), 24, 8) | _SHIFTL(((len)-1) / 8, 19, 5) | _SHIFTL((ofs) / 8, 8, 8) | _SHIFTL((idx), 0, 8)); \
_g->words.w1 = (uintptr_t)(adrs); \
_g->words.trace.file = __FILE__; \
_g->words.trace.idx = __LINE__; \
_g->words.trace.valid = true; \
})
#else
#define gDma2p(pkt, c, adrs, len, idx, ofs) \
_DW({ \
Gfx* _g = (Gfx*)(pkt); \
_g->words.w0 = \
(_SHIFTL((c), 24, 8) | _SHIFTL(((len)-1) / 8, 19, 5) | _SHIFTL((ofs) / 8, 8, 8) | _SHIFTL((idx), 0, 8)); \
_g->words.w1 = (uintptr_t)(adrs); \
})
#endif

#define gsDma2p(c, adrs, len, idx, ofs) \
{ \
(_SHIFTL((c), 24, 8) | _SHIFTL(((len)-1) / 8, 19, 5) | _SHIFTL((ofs) / 8, 8, 8) | _SHIFTL((idx), 0, 8)), \
(uintptr_t)(adrs) \
(uintptr_t)(adrs)MakeTrace() \
}

#define gSPNoOp(pkt) gDma0p(pkt, G_SPNOOP, 0, 0)
Expand All @@ -1756,14 +1803,26 @@ typedef union Gfx {
* | |seg| address |
* +-+---+-----------------------------+
*/
#ifdef USE_GBI_TRACE
#define __gSPVertex(pkt, v, n, v0) \
_DW({ \
Gfx* _g = (Gfx*)(pkt); \
_g->words.w0 = _SHIFTL(G_VTX, 24, 8) | _SHIFTL((n), 12, 8) | _SHIFTL((v0) + (n), 1, 7); \
_g->words.w1 = (uintptr_t)(v); \
_g->words.trace.file = __FILE__; \
_g->words.trace.idx = __LINE__; \
_g->words.trace.valid = true; \
})
#else
#define __gSPVertex(pkt, v, n, v0) \
_DW({ \
Gfx* _g = (Gfx*)(pkt); \
_g->words.w0 = _SHIFTL(G_VTX, 24, 8) | _SHIFTL((n), 12, 8) | _SHIFTL((v0) + (n), 1, 7); \
_g->words.w1 = (uintptr_t)(v); \
})
#endif
#define gsSPVertex(v, n, v0) \
{ (_SHIFTL(G_VTX, 24, 8) | _SHIFTL((n), 12, 8) | _SHIFTL((v0) + (n), 1, 7)), (uintptr_t)(v) }
{ (_SHIFTL(G_VTX, 24, 8) | _SHIFTL((n), 12, 8) | _SHIFTL((v0) + (n), 1, 7)), (uintptr_t)(v)MakeTrace() }

#elif (defined(F3DEX_GBI) || defined(F3DLP_GBI))
/*
Expand Down
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ target_include_directories(libultraship

#=================== Linking ===================
if(NOT EXCLUDE_MPQ_SUPPORT)
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS")
target_link_libraries(libultraship PUBLIC "$<LINK_LIBRARY:WHOLE_ARCHIVE,storm>")
else()
target_link_libraries(libultraship PUBLIC storm)
Expand Down
Loading

0 comments on commit 65253fc

Please sign in to comment.