36 Commits
Author SHA1 Message Date
6a49df36cc revert perf + fix: windows performance optimizations + x360 fixes + ps3 hdd corruption fix (#27)
revert perf + fix: windows performance optimizations + x360 fixes + ps3 hdd corruption fix (#27)

windows optimizations include:

- adding WPO/LTCG
- fixing potential memory leaks
- reducing unneeded busy waits

xbox 360 fixes include:

- all item names displaying as black
- adding newer dlcs crashing game

ps3 fix was that, when holding the ps button, it'd corrupt the hdd. NEEDS TESTING! just a guess fix since I don't have a PS3.

---------

Co-authored-by: pieeebot <piebot00@gmail.com>
Co-authored-by: piebot <piebot00@gmail.com>
Co-authored-by: str1k3r <115313679+S1l3ntStr1ke87@users.noreply.github.com>
Co-authored-by: str1k3r <1+str1k3r@noreply.localhost>
Co-authored-by: pieeebot <10+pieeebot@noreply.neolegacy.dev>
Co-authored-by: qloak <53+qloak@noreply.neolegacy.dev>
Reviewed-on: #27
Co-authored-by: qloak <realminecart@gmail.com>
2026-08-14 10:48:38 +00:00
bad3a41225 perf + fix: windows performance optimizations + x360 fixes + ps3 hdd corruption fix (#27)
title

windows optimizations include:

- adding WPO/LTCG
- fixing potential memory leaks
- reducing unneeded busy waits

xbox 360 fixes include:

- all item names displaying as black
- adding newer dlcs crashing game

ps3 fix was that, when holding the ps button, it'd corrupt the hdd. NEEDS TESTING! just a guess fix since I don't have a PS3.

---------

Co-authored-by: pieeebot <piebot00@gmail.com>
Co-authored-by: piebot <piebot00@gmail.com>
Co-authored-by: str1k3r <115313679+S1l3ntStr1ke87@users.noreply.github.com>
Co-authored-by: str1k3r <1+str1k3r@noreply.localhost>
Co-authored-by: pieeebot <10+pieeebot@noreply.neolegacy.dev>
Co-authored-by: qloak <53+qloak@noreply.neolegacy.dev>
Reviewed-on: #27
Co-authored-by: qloak <realminecart@gmail.com>
2026-08-14 05:09:20 +00:00
str1k3r 46caf4727c fix: g_bResolutionSetByCMD causing windows64 to not compile sometimes 2026-08-13 19:09:39 -04:00
str1k3r 47ea98fc86 fix: widescreen check only working if res was not cmd set 2026-08-13 00:21:01 -04:00
str1k3r d0362d2458 fix: res set over cmd not applying 2026-08-12 21:36:08 -04:00
str1k3r 82783c0812 feat(Windows64): safely exit game & get monitors size that has the game window instead of primary 2026-08-12 18:18:41 -04:00
str1k3r bd0cc59a54 chore: update .gitignore 2026-08-11 21:25:56 -04:00
str1k3r 81d41a6a04 feat(Windows64): use screen size instead of window size, fix exit game, fix oprhaned saves on exit without saving 2026-08-11 20:27:34 -04:00
str1k3r 0031cae3e3 fix: m_fScreen Width & Height missing .0f for 8th gen consoles 2026-08-11 18:45:04 -04:00
str1k3r 251cd8e304 feat(Windows64): fetch screen size instead of hardcoding & cleanup project filter 2026-08-11 18:36:29 -04:00
str1k3r df2a4d85ef fix: save space indicator & windows64 image scaling 2026-08-11 15:29:53 -04:00
str1k3r b737c3eccb feat(Windows64): ReloadSkin on another thread & improved screen height to swf 2026-08-10 00:28:30 -04:00
str1k3r 77a4ee39b5 fix: postbuilds 2026-08-09 23:43:30 -04:00
str1k3r 7fb2db5ed7 fix: SD3 lib being copied & update paths 2026-08-09 22:45:13 -04:00
str1k3r 90a2391e92 fix: SDL3 dll not being copied 2026-08-09 10:58:07 -04:00
str1k3r 36afa4a59f feat: SDL3 4JLibs 2026-08-09 00:34:21 -04:00
str1k3r eb317d8fbd chore: Bump 4JLibs 2026-08-08 21:08:50 -04:00
str1k3r af2040a849 fix: 4JLibs building, windows64 files not copying & add buildsteps to solution filter 2026-08-08 20:56:23 -04:00
str1k3r 9cba342973 feat: update submodule, more proper 4JLibs checks 2026-08-08 19:58:37 -04:00
str1k3r 8055f4dfc7 fix: world thumbnails 2026-08-08 15:09:57 -04:00
str1k3r 3ea3c08372 update submodule
SDL was being a bitch
2026-08-08 15:00:18 -04:00
str1k3r 9a729de7c3 fix: submodule tracking unneeded files 2026-08-08 14:19:49 -04:00
str1k3r 274f2ddc61 fix: submodule 2026-08-08 14:11:30 -04:00
str1k3r 831ec7292d fix: save space indicator
Credits to smartcmd for the base of this
2026-08-08 14:08:00 -04:00
str1k3r 13285fbffa feat: 4JLibs submodule 2026-08-08 14:06:08 -04:00
str1k3r 3866e525f1 fix(Windows64): 720p crash, Update README & .gitignore 2026-08-03 21:55:05 -04:00
str1k3r 9254fbcdb3 fix: ps3 zip not ignoring .self, stop tracking .vcxproj.user 2026-08-03 18:28:00 -04:00
str1k3r e8d19516e6 fix: windows64 release build
Release is actually a "Debug without extra shit" so we dont use _FINAL_BUILD
2026-08-03 16:32:30 -04:00
str1k3r 8bae3cfbc1 fix: ps3 zip 2026-08-03 15:27:43 -04:00
str1k3r 7f4227d902 fix: my mistake on workflow 2026-08-03 15:14:31 -04:00
str1k3r d9327ff1f5 fix: dangling build on workflow 2026-08-03 15:11:57 -04:00
str1k3r d770e58992 fix: workflows throwing GHES error 2026-08-03 15:03:16 -04:00
str1k3r 0889edf3bd chore: make the SPU Tasks SLN use $(Configuration) & $(Platform) 2026-08-03 14:40:28 -04:00
str1k3r 6e13d5d4c0 fix: PS3 & Windows64 ContentPackage, Exclude PSVita libs & OldSDK from other plats 2026-08-03 14:27:03 -04:00
str1k3r cffdcb1971 fix: release workflow notes 2026-08-03 10:31:04 +00:00
str1k3r eb80f3e52b fix(PS3): SPU Tasks not being built 2026-08-02 20:47:50 -04:00
308 changed files with 1528 additions and 6093 deletions
+1
View File
@@ -39,3 +39,4 @@
*.opensdf *.opensdf
*.v11.suo *.v11.suo
*.vcxproj.user *.vcxproj.user
*.aps
+5 -3
View File
@@ -1,3 +1,5 @@
[submodule "Minecraft.Server"] [submodule "Minecraft.Client/Windows64/4JLibs"]
path = Minecraft.Server path = Minecraft.Client/Windows64/4JLibs
url = https://gitea.str1k3r.xyz/cafeberry/Cafeberry-Server.git url = https://gitea.str1k3r.xyz/pieeebot/Cafeberry-4JLibs
ignore = untracked
branch = main
+2 -4
View File
@@ -402,7 +402,6 @@ void Chunk::rebuild()
} }
Tile *tile = Tile::tiles[tileId]; Tile *tile = Tile::tiles[tileId];
if (!tile) continue;
if (currentLayer == 0 && tile->isEntityTile()) if (currentLayer == 0 && tile->isEntityTile())
{ {
shared_ptr<TileEntity> et = region->getTileEntity(x, y, z); shared_ptr<TileEntity> et = region->getTileEntity(x, y, z);
@@ -740,9 +739,9 @@ void Chunk::rebuild_SPU()
{ {
// 4J - get tile from those copied into our local array in earlier optimisation // 4J - get tile from those copied into our local array in earlier optimisation
unsigned char tileId = pOutData->getTile(x,y,z); unsigned char tileId = pOutData->getTile(x,y,z);
if (tileId > 0 && tileId != 0xff) if (tileId > 0)
{ {
if (currentLayer == 0 && Tile::tiles[tileId] && Tile::tiles[tileId]->isEntityTile()) if (currentLayer == 0 && Tile::tiles[tileId]->isEntityTile())
{ {
shared_ptr<TileEntity> et = region.getTileEntity(x, y, z); shared_ptr<TileEntity> et = region.getTileEntity(x, y, z);
if (TileEntityRenderDispatcher::instance->hasRenderer(et)) if (TileEntityRenderDispatcher::instance->hasRenderer(et))
@@ -755,7 +754,6 @@ void Chunk::rebuild_SPU()
{ {
Tile *tile = Tile::tiles[tileId]; Tile *tile = Tile::tiles[tileId];
if (!tile) continue;
int renderLayer = tile->getRenderLayer(); int renderLayer = tile->getRenderLayer();
if (renderLayer != currentLayer) if (renderLayer != currentLayer)
+3 -55
View File
@@ -50,16 +50,11 @@
#else #else
#include "Common\UI\UI.h" #include "Common\UI\UI.h"
#endif #endif
#if defined __PS3__ && !defined DISABLE_PSN #ifdef __PS3__
#include "PS3/Network/SonyVoiceChat.h" #include "PS3/Network/SonyVoiceChat.h"
#endif #endif
#include "DLCTexturePack.h" #include "DLCTexturePack.h"
#if defined _WINDOWS64 || defined DISABLE_PSN || defined _DISABLE_XBLIVE
#include "Xbox\Network\NetworkPlayerXbox.h"
#include "Common\Network\PlatformNetworkManager.h"
#endif
#ifdef _DURANGO #ifdef _DURANGO
#include "..\Minecraft.World\DurangoStats.h" #include "..\Minecraft.World\DurangoStats.h"
#include "..\Minecraft.World\GenericStats.h" #include "..\Minecraft.World\GenericStats.h"
@@ -776,7 +771,6 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
player->yRotp = packet->yRot; player->yRotp = packet->yRot;
player->yHeadRot = packet->yHeadRot * 360 / 256.0f; player->yHeadRot = packet->yHeadRot * 360 / 256.0f;
player->setXuid(packet->xuid); player->setXuid(packet->xuid);
player->setOnlineXuid(packet->OnlineXuid);
#ifdef _DURANGO #ifdef _DURANGO
// On Durango request player display name from network manager // On Durango request player display name from network manager
@@ -787,32 +781,6 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
player->m_displayName = player->name; player->m_displayName = player->name;
#endif #endif
#if defined _WINDOWS64 || defined DISABLE_PSN || defined _DISABLE_XBLIVE
{
PlayerUID netXuid = packet->OnlineXuid;
const PlayerUID WIN64_XUID_BASE = (PlayerUID)0xe000d45248242f2e;
if (netXuid >= WIN64_XUID_BASE && netXuid < WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS)
{
BYTE smallId = (BYTE)(netXuid - WIN64_XUID_BASE);
INetworkPlayer *np = g_NetworkManager.GetPlayerBySmallId(smallId);
if (np != NULL)
{
NetworkPlayerXbox *npx = (NetworkPlayerXbox *)np;
IQNetPlayer *qp = npx->GetQNetPlayer();
if (qp != NULL)
{
wcsncpy(qp->m_gamertag, packet->name.c_str(), 31);
qp->m_gamertag[31] = L'\0';
if (g_NetworkManager.IsHost())
{
g_NetworkManager.UpdateAndSetGameSessionData();
}
}
}
}
}
#endif
// printf("\t\t\t\t%d: Add player\n",packet->id,packet->yRot); // printf("\t\t\t\t%d: Add player\n",packet->id,packet->yRot);
int item = packet->carriedItem; int item = packet->carriedItem;
@@ -1036,7 +1004,6 @@ void ClientConnection::handleChunkVisibility(shared_ptr<ChunkVisibilityPacket> p
void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket> packet) void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket> packet)
{ {
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1106,7 +1073,6 @@ void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket>
void ClientConnection::handleBlockRegionUpdate(shared_ptr<BlockRegionUpdatePacket> packet) void ClientConnection::handleBlockRegionUpdate(shared_ptr<BlockRegionUpdatePacket> packet)
{ {
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1164,8 +1130,6 @@ void ClientConnection::handleTileUpdate(shared_ptr<TileUpdatePacket> packet)
destroyTilePacket = true; destroyTilePacket = true;
} }
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1805,7 +1769,6 @@ void ClientConnection::handleEntityActionAtPosition(shared_ptr<EntityActionAtPos
void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet) void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
{ {
app.DebugPrintf("ClientConnection::handlePreLogin ENTER (user %d)\n", m_userIndex);
// printf("Client: handlePreLogin\n"); // printf("Client: handlePreLogin\n");
#if 1 #if 1
// 4J - Check that we can play with all the players already in the game who have Friends-Only UGC set // 4J - Check that we can play with all the players already in the game who have Friends-Only UGC set
@@ -1828,7 +1791,6 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
} }
#ifdef _XBOX #ifdef _XBOX
#if !defined(_DISABLE_XBLIVE)
if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends)) if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends))
{ {
if(m_userIndex == ProfileManager.GetPrimaryPad() ) if(m_userIndex == ProfileManager.GetPrimaryPad() )
@@ -1972,16 +1934,6 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
} }
} }
} }
#else
// Offline/system-link games have no Xbox Live friend list, so grant all
// pre-login permissions (the Xbox Live-only checks above would otherwise
// fail and reject the client's own pre-login before Login is ever sent).
canPlay = TRUE;
canPlayLocal = TRUE;
isAtLeastOneFriend = TRUE;
isFriendsWithHost = TRUE;
cantPlayContentRestricted = FALSE;
#endif // _DISABLE_XBLIVE
#else #else
// TODO - handle this kind of things for non-360 platforms // TODO - handle this kind of things for non-360 platforms
canPlay = TRUE; canPlay = TRUE;
@@ -1989,7 +1941,7 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
isAtLeastOneFriend = TRUE; isAtLeastOneFriend = TRUE;
cantPlayContentRestricted= FALSE; cantPlayContentRestricted= FALSE;
#if !defined DISABLE_PSN && ( defined __PS3__ || defined __ORBIS__ || defined __PSVITA__) #if ( defined __PS3__ || defined __ORBIS__ || defined __PSVITA__)
if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends)) if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends))
{ {
@@ -2271,7 +2223,6 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
} }
BOOL allAllowed, friendsAllowed; BOOL allAllowed, friendsAllowed;
ProfileManager.AllowedPlayerCreatedContent(m_userIndex,true,&allAllowed,&friendsAllowed); ProfileManager.AllowedPlayerCreatedContent(m_userIndex,true,&allAllowed,&friendsAllowed);
app.DebugPrintf("ClientConnection::handlePreLogin SENDING LoginPacket (user %d)\n", m_userIndex);
send( shared_ptr<LoginPacket>( new LoginPacket(minecraft->user->name, SharedConstants::NETWORK_PROTOCOL_VERSION, offlineXUID, onlineXUID, (allAllowed!=TRUE && friendsAllowed==TRUE), send( shared_ptr<LoginPacket>( new LoginPacket(minecraft->user->name, SharedConstants::NETWORK_PROTOCOL_VERSION, offlineXUID, onlineXUID, (allAllowed!=TRUE && friendsAllowed==TRUE),
packet->m_ugcPlayersVersion, app.GetPlayerSkinId(m_userIndex), app.GetPlayerCapeId(m_userIndex), ProfileManager.IsGuest( m_userIndex )))); packet->m_ugcPlayersVersion, app.GetPlayerSkinId(m_userIndex), app.GetPlayerCapeId(m_userIndex), ProfileManager.IsGuest( m_userIndex ))));
@@ -2322,7 +2273,6 @@ void ClientConnection::handleAddMob(shared_ptr<AddMobPacket> packet)
float xRot = packet->xRot * 360 / 256.0f; float xRot = packet->xRot * 360 / 256.0f;
shared_ptr<LivingEntity> mob = dynamic_pointer_cast<LivingEntity>(EntityIO::newById(packet->type, level)); shared_ptr<LivingEntity> mob = dynamic_pointer_cast<LivingEntity>(EntityIO::newById(packet->type, level));
if (mob == NULL) return;
mob->xp = packet->x; mob->xp = packet->x;
mob->yp = packet->y; mob->yp = packet->y;
mob->zp = packet->z; mob->zp = packet->z;
@@ -3566,12 +3516,10 @@ void ClientConnection::handleCustomPayload(shared_ptr<CustomPayloadPacket> custo
} }
#else #else
UIScene *scene = ui.GetTopScene(m_userIndex, eUILayer_Scene); UIScene *scene = ui.GetTopScene(m_userIndex, eUILayer_Scene);
UIScene_TradingMenu *screen = dynamic_cast<UIScene_TradingMenu *>(scene); UIScene_TradingMenu *screen = (UIScene_TradingMenu *)scene;
if (screen != NULL)
trader = screen->getMerchant(); trader = screen->getMerchant();
#endif #endif
if (trader == NULL) return;
MerchantRecipeList *recipeList = MerchantRecipeList::createFromStream(&input); MerchantRecipeList *recipeList = MerchantRecipeList::createFromStream(&input);
trader->overrideOffers(recipeList); trader->overrideOffers(recipeList);
} }
+1 -1
View File
@@ -162,7 +162,7 @@ MOJANG_DATA;
typedef struct typedef struct
{ {
eDLCContentType eDLCType; eDLCContentType eDLCType;
#if !defined(DISABLE_PSN) && (defined( __PS3__) || defined(__ORBIS__) || defined (__PSVITA__)) #if defined( __PS3__) || defined(__ORBIS__) || defined (__PSVITA__)
char chImageURL[256];//SCE_NP_COMMERCE2_URL_LEN char chImageURL[256];//SCE_NP_COMMERCE2_URL_LEN
#else #else
@@ -0,0 +1,80 @@
param(
[string]$ProjectDir,
[string]$Platform,
[string]$Configuration
)
if ($ProjectDir -match "Minecraft.World") {
$BaseDir = "$ProjectDir..\Minecraft.Client\"
} elseif ($ProjectDir -match "Minecraft.Client") {
$BaseDir = $ProjectDir
} else {
Write-Host "4JLibs: Unknown project directory: '$ProjectDir'"
exit 1
}
switch ($Platform) {
"x64" { $LibsDir = Join-Path $BaseDir "Windows64\4JLibs\"; $ExpectedCount = 4; $PlatformName = "Windows64" }
"Durango" { $LibsDir = Join-Path $BaseDir "Durango\4JLibs\"; $ExpectedCount = 4; $PlatformName = "Durango" }
"Xbox 360" { $LibsDir = Join-Path $BaseDir "Xbox\4JLibs\"; $ExpectedCount = 5; $PlatformName = "Xbox" }
"PS3" { $LibsDir = Join-Path $BaseDir "PS3\4JLibs\"; $ExpectedCount = 4; $PlatformName = "PS3" }
"Orbis" { $LibsDir = Join-Path $BaseDir "Orbis\4JLibs\"; $ExpectedCount = 4; $PlatformName = "Orbis" }
"PSVita" { $LibsDir = Join-Path $BaseDir "PSVita\4JLibs\"; $ExpectedCount = 4; $PlatformName = "PSVita" }
default { Write-Host "4JLibs: Unknown platform: '$Platform'"; exit 1 }
}
if ($Configuration -match "ContentPackage" -or $Configuration -match "Release") {
$BuildConfig = "Release"
} elseif ($Configuration -match "Debug") {
$BuildConfig = "Debug"
} else {
Write-Host "4JLibs: Configuration did not match any known patterns, defaulting to Debug"
$BuildConfig = "Debug"
}
if (-not (Test-Path $LibsDir)) {
Write-Host "4JLibs: $PlatformName 4JLibs directory not found"
exit 1
} elseif (-not (Test-Path "$LibsDir\Headers\$PlatformName")) {
Write-Host "4JLibs: $PlatformName 4JLibs Headers directory not found"
exit 1
} elseif (-not (Test-Path "$LibsDir\Headers")) {
Write-Host "4JLibs: Headers directory not found"
exit 1
}
$incPath = Join-Path $LibsDir "inc"
$libsPath = Join-Path $LibsDir "libs"
$incCount = (Get-ChildItem -Path $incPath -Filter "*.h" -ErrorAction SilentlyContinue).Count
if ($BuildConfig -eq "Release") {
$libCount = (Get-ChildItem -Path $libsPath -Filter "*_r.lib" -ErrorAction SilentlyContinue).Count
} else {
$libCount = (Get-ChildItem -Path $libsPath -Filter "*_d.lib" -ErrorAction SilentlyContinue).Count
}
if ($incCount -lt $ExpectedCount) {
Write-Host "4JLibs: Copying header files for $PlatformName"
xcopy "$LibsDir\Headers\$PlatformName\*" "$incPath" /E /I /Y
} else {
Write-Host "4JLibs: inc files already present, skipping copy."
}
if ($libCount -lt $ExpectedCount) {
Write-Host "4JLibs: Building 4JLibs for $PlatformName in $BuildConfig"
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" `
(Join-Path $LibsDir "4JLibs.sln") `
/p:Configuration=$BuildConfig `
/p:Platform=$PlatformName `
/v:minimal `
/m
if ($LASTEXITCODE -ne 0) {
Write-Host "4JLibs: Build failed with exit code: $LASTEXITCODE"
exit $LASTEXITCODE
}
} else {
Write-Host "4JLibs: libs already present, skipping build."
}

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Before

Width:  |  Height:  |  Size: 308 KiB

After

Width:  |  Height:  |  Size: 308 KiB

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Some files were not shown because too many files have changed in this diff Show More