オリジナルに対する修正箇所
ソースコード中に "Kobarin" の文字列を含めているので検索
ファイルによっては修正前のファイル名を残してある(aaa.cpp => aaa.cpp.original)
他にも修正したかもしれないが忘れた

///////////////////////////////////////////////////////////////////

プロジェクト全般

プリプロセッサの定義に _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR を追加
VS2022 17.10 以降、64bit版で std::mutex::lock を呼び出すと落ちる
プラグインがあった為(kbmdx.kpi/kbmod.kpi)

本プラグインで落ちることは確認出来ないが std::mutex を使用する箇所
はあるようなので念の為

///////////////////////////////////////////////////////////////////

PathUtils.cpp

//return boost::filesystem::wpath(userPathString, boost::filesystem::native);
=> return boost::filesystem::wpath(userPathString);
boost 1.80 => 1.84 時にビルドエラー

///////////////////////////////////////////////////////////////////

PsfPlayer/viopsf2 他

プリプロセッサの定義に HAVE_STDINT_H; を追加

ZLIB の呼び出し規約を WINAPI にしていたのを _cdecl に変更
最新版取り込み時、プリプロセッサから ZLIB_WINAPI を外す
実際に ZLIB が使われることがあるのかどうかは未確認

///////////////////////////////////////////////////////////////////

Jitter_CodeGen_AArch32.cpp

先頭に 

#include <stdexcept>

を追加
///////////////////////////////////////////////////////////////////

drvimpl.cpp

//by Kobarin
extern "C" int xsf_gen_f(void *pbuffer, unsigned samples, double scale)
{//64bit float 化(ついでに音量制御)
    const double k = scale / 0x8000;
    double *dst = (double*)pbuffer;
    while (samples > 0)
    {
        uint32_t remain = PSF2SoundHandler.buffil - PSF2SoundHandler.bufcur;
        while (remain == 0)
        {
            PSF2SoundHandler.bufcur = 0;
            PSF2SoundHandler.buffil = 0;
            subSystem.Update(false, &PSF2SoundHandler);

            remain = PSF2SoundHandler.buffil - PSF2SoundHandler.bufcur;
        }
        uint32_t len = remain / 2;
        if (len > samples * 2)
        {
            len = samples * 2;
        }
        short *src = (short*)(PSF2SoundHandler.buf + PSF2SoundHandler.bufcur);
        for(uint32_t i = 0; i < len; i++){
            dst[i] = src[i] * k;
        }
        samples -= len / 2;
        dst += len;
        PSF2SoundHandler.bufcur += len*2;
    }
    return 0;
}
void xsf_term(void)
{
    subSystem.Reset();  //release bios
    extern void Free_Jitter(void);
    Free_Jitter();//by Kobarin  メモリリーク対策(BasicBlock.cpp)
}

///////////////////////////////////////////////////////////////////

BasicBlock.cpp

//by Kobarin
//メモリリーク対策
//終了時に Free_Jitter を呼ぶ
static CMipsJitter *g_jitter = NULL;
void Free_Jitter(void)
{
    delete g_jitter;g_jitter = NULL;
}//ここまで
void CBasicBlock::Compile()
{
#ifndef AOT_USE_CACHE

    Framework::CMemStream stream;
    {
        //static //by Kobarin(コメントアウト)(Free_Jitter を終了時に1度しか呼ばないなら static でも問題なし)
#ifdef AOT_BUILD_CACHE
        __declspec(thread)
#endif
        CMipsJitter* jitter = g_jitter;//nullptr;// by Kobarin(nullptr => g_jitter)
        if(jitter == nullptr)
        {
            Jitter::CCodeGen* codeGen = Jitter::CreateCodeGen();
            jitter = new CMipsJitter(codeGen);

            for(unsigned int i = 0; i < 4; i++)
            {
                jitter->SetVariableAsConstant(
                    offsetof(CMIPS, m_State.nGPR[CMIPS::R0].nV[i]),
                    0
                    );
            }
            g_jitter = jitter;//by Kobarin
        }

///////////////////////////////////////////////////////////////////

ZipArchiveWriter.cpp(修正前はZipArchiveWriter.cpp.original)
ZipDeflateStream.cpp(修正前はZipDeflateStream.cpp.original)

ZLIB の不要な関数への依存をなくす
(kbzlib.dll がエクスポートする関数を最小限に抑えてサイズを小さくするため)

///////////////////////////////////////////////////////////////////

Mixer.cpp::static s32 __forceinline GetNoiseValues()

x64 でビルド出来るように修正

#ifdef _WIN32
#ifndef _WIN64
    __asm {
        MOV eax, Seed
        ROR eax, 5
        XOR eax, 0x9a
        MOV ebx, eax
        ROL eax, 2
        ADD eax, ebx
        XOR eax, ebx
        ROR eax, 3
        MOV Seed, eax
    }
#else
    s32 x = _rotr(Seed, 0x5);
    x ^= 0x9a;
    s32 y = _rotl(x, 0x2);
    y += x;
    y ^= x;
    Seed = _rotr(y, 0x3);
#endif
#else
	__asm__ (
		".intel_syntax\n"
		"MOV %%eax,%1\n"
		"ROR %%eax,5\n"
		"XOR %%eax,0x9a\n"
		"MOV %%esi,%%eax\n"
		"ROL %%eax,2\n"
		"ADD %%eax,%%esi\n"
		"XOR %%eax,%%esi\n"
		"ROR %%eax,3\n"
		"MOV %0,%%eax\n"
		".att_syntax\n" : "=r"(Seed) :"r"(Seed)
		: "%eax", "%esi"
		);
#endif
