From 356788fb9eaf0696faba8eaf8d9712878efd5811 Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Mon, 6 Feb 2017 16:25:58 -1000 Subject: [PATCH] Another bitstream fix --- Runtime/IOStreams.cpp | 16 ++++++++-------- Runtime/MP1/CSaveUI.cpp | 2 +- kabufuda | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Runtime/IOStreams.cpp b/Runtime/IOStreams.cpp index 19c6d6a1e..9417647b8 100644 --- a/Runtime/IOStreams.cpp +++ b/Runtime/IOStreams.cpp @@ -34,8 +34,8 @@ s32 CBitStreamReader::ReadEncoded(u32 bitCount) if (shiftAmt < 0) { /* OR in remaining bits of cached value */ - u32 mask = (1 << bitCount) - 1; - ret |= (x1c_val << -shiftAmt) & mask; + u32 mask = bitCount == 32 ? 0xffffffff : ((1 << bitCount) - 1); + ret |= (x1c_val << u32(-shiftAmt)) & mask; /* Load in exact number of bytes remaining */ auto loadDiv = std::div(-shiftAmt, 8); @@ -47,14 +47,14 @@ s32 CBitStreamReader::ReadEncoded(u32 bitCount) x20_bitOffset = loadDiv.quot * 8 + shiftAmt; /* OR in next bits */ - mask = (1 << -shiftAmt) - 1; + mask = (1 << u32(-shiftAmt)) - 1; ret |= (x1c_val >> x20_bitOffset) & mask; } else { /* OR in bits of cached value */ - u32 mask = (1 << bitCount) - 1; - ret |= (x1c_val >> shiftAmt) & mask; + u32 mask = bitCount == 32 ? 0xffffffff : ((1 << bitCount) - 1); + ret |= (x1c_val >> u32(shiftAmt)) & mask; /* New bit offset */ x20_bitOffset -= bitCount; @@ -83,7 +83,7 @@ void CBitStreamWriter::WriteEncoded(u32 val, u32 bitCount) { /* OR remaining bits to cached value */ u32 mask = (1 << x18_bitOffset) - 1; - x14_val |= (val >> -shiftAmt) & mask; + x14_val |= (val >> u32(-shiftAmt)) & mask; /* Write out 32-bits */ x14_val = hecl::SBig(x14_val); @@ -96,8 +96,8 @@ void CBitStreamWriter::WriteEncoded(u32 val, u32 bitCount) else { /* OR bits to cached value */ - u32 mask = (1 << bitCount) - 1; - x14_val |= (val & mask) << shiftAmt; + u32 mask = bitCount == 32 ? 0xffffffff : ((1 << bitCount) - 1); + x14_val |= (val & mask) << u32(shiftAmt); /* New bit offset */ x18_bitOffset -= bitCount; diff --git a/Runtime/MP1/CSaveUI.cpp b/Runtime/MP1/CSaveUI.cpp index d59e24a01..61cd6e92b 100644 --- a/Runtime/MP1/CSaveUI.cpp +++ b/Runtime/MP1/CSaveUI.cpp @@ -625,7 +625,7 @@ void CSaveUI::StartGame(int idx) const CGameState::GameFileStateInfo* info = x6c_cardDriver->GetGameFileStateInfo(idx); x6c_cardDriver->ExportPersistentOptions(); x6c_cardDriver->BuildNewFileSlot(idx); - if (info) + if (!info) x6c_cardDriver->StartFileCreateTransactional(); else x80_iowRet = CIOWin::EMessageReturn::Exit; diff --git a/kabufuda b/kabufuda index bb972f8f3..03f16f7f4 160000 --- a/kabufuda +++ b/kabufuda @@ -1 +1 @@ -Subproject commit bb972f8f36cfd6b8b65b3e53352880b039a78393 +Subproject commit 03f16f7f48d1f9316eefcb8118496def40da47db