* Fix remaining <string> -> <cstring> for GCC compilation (#3114 follow-up)
MWerks' <string> header transitively includes C string functions
(memcpy, strlen, strcmp, etc.), but GCC/Clang's <string> is the C++
std::string header. These files all use C string functions and should
include <cstring> instead.
* Use std::isnan instead of isnan for GCC compilation
GCC's <cmath> places isnan in the std namespace. Using the unqualified
isnan fails to compile with GCC/Clang.
* Fix cCcD_Src types: s32 -> u32 for bitmask fields
cCcD_SrcObjCommonBase::mSPrm, cCcD_SrcObjTg::mType, and
cCcD_SrcObjAt::mType are used as bitmasks (SetType/SetSPrm take u32,
MskType/MskSPrm use u32, values like 0xFFFFFFFF are common in
aggregate inits). Change from s32 to u32 to match usage.
Also fix AT_TYPE_WOLF_ATTACK/AT_TYPE_UNK to use unsigned literals,
and remove now-unnecessary (s32) casts on hex literals in collision
source data.
* Mark dummy() functions as static to avoid multiple definition errors
These decomp artifact functions have the same name and signature across
TUs, causing linker errors when building as a single binary.
Removes spurious mDoAud_zelAudio_c::onInitFlag call in m_do_main that was added in the port, it breaks audio engine init.
Re-introduced g_mDoAud_audioHeap initialization.
Needed because we're using true OS threading, so we can't do the normal JSystem heap changing on thread change.
Requires encapsulating it (removing the public static field)
There are a few places where JASGlobalInstance have their sInstance storage implemented via template specialization. The problem is that these have no initializer, which means that they are not proper definitions (only declarations) in standards-compliant C++. MSVC and (evidently) MWCC accept this, but modern Clang and GCC do not and won't emit symbols.
I've added a macro that properly initializes these outside MWCC.
Also, JASGlobalInstance<JAUSectionHeap> was only being declared in each actor file that used it, which sounds incorrect? Not sure about this but I added it to m_Do_main too, again behind MWERKS check.
Stubbing out all OS* functions to stubs.cpp, these will likely have to
be replaced with the operating system's primitives for
locking/heaps/threads/etc.
Moved some generic globals into globals.cpp, not sure where they're
actually to be used.
Stub DSP functions
Stub JSUMemoryOutputStream, JORServer, Z2Audio
mDoExt stubs
add memcpy
add some more stubs, add extras c++ mangled functions
add extras.cpp
AR/AQ stubbing
stub DVD
stub CARD
more stubs, more extras
add missing mtx functions to dusk file
finish mtx
stub GX
KPAD and LC, also do pragma marks for better visualization
finish mtx, add a few more stubs
gf/wpad/vi
translate some matrix math from ppc to C
jorserver/debugpad/fap/dmsgobject
add m_Do_ext functions from debug block to separate file
make small janges to JSystem, does this need upstreaming
reorg DVD stubs
reorganize stubs by mark