D489-D502: settings persistence, collision, A/B harnesses, D441 census

F10 pad slider persistence (D489), glass collision hull (D490), A/B input
harnesses (1964 virtual pad, GE_INPUTSCRIPT, live one-pad launcher), adjacent
global struct reads (D491), vibration percent, D441 complete pointer-width
census with high-arena tier-1 build, fix batches 1-5 and an ABI warning
ratchet, playtest verification of D493-D502.

Refs: D489 D490 D491 D492-D502 D441
This commit is contained in:
James Dansereau committed 2026-10-06 18:35:42 -04:00
1 parent 4b38c2566e
commit daa2522511
63 files changed
+2693 -1419

No files matched your search

+12
View File
@@ -5741,7 +5741,11 @@ s32 objTick(struct PropRecord *prop)
#endif
temp_s0_6 = render_pad2F4->model;
#ifdef PORT
if (temp_s0_6->anim == (ModelAnimation *)(uintptr_t)(u32)(animation_table_ptrs2[1])) /* D32/D33 */ /* D441: zero-extend s32-held DRAM ptr */
#else
if (temp_s0_6->anim == (ModelAnimation *)animation_table_ptrs2[1]) /* D32/D33 */
#endif
{
modelSetAnimTranslationScale(temp_s0_6, 10.438f);
setsubroty(render_pad2F4->model, M_PI_F);
@@ -10436,6 +10440,14 @@ void generate_language_specific_text_for_weapon(u8 *finalstring, ITEM_IDS itemty
morethan2players = FALSE;
#ifdef AVOID_UB
/* D496: with 3+ players the non-JP path below never writes finalstring
* before strcat'ing onto it, and the caller's buffer is an uninitialised
* stack array, so leftover stack bytes were drawn as the pickup message
* (garbled, oversized weapon-pickup text in 3P/4P split-screen). */
finalstring[0] = '\0';
#endif
if (j_text_trigger != 0)
{
strcpy(finalstring,"");