Merge pull request #82 from Clownacy/master
Cleanup, bugfixes, accuracy, build overhaul
29
.gitignore
vendored
|
@ -4,35 +4,14 @@
|
||||||
# Exclude converted resource files
|
# Exclude converted resource files
|
||||||
src/Resource
|
src/Resource
|
||||||
|
|
||||||
# Exclude .dat and .rec files in build directories (avoid Config.dat, 290.rec and others)
|
# Exclude build output directory
|
||||||
build_en/*.dat
|
/game
|
||||||
build_en/*.rec
|
|
||||||
build_jp/*.dat
|
|
||||||
build_jp/*.rec
|
|
||||||
|
|
||||||
# Exclude devilution-comparer assembly output
|
Exclude devilution-comparer assembly output
|
||||||
msvc2003/devilution/orig.asm
|
msvc2003/devilution/orig.asm
|
||||||
msvc2003/devilution/compare.asm
|
msvc2003/devilution/compare.asm
|
||||||
|
|
||||||
# Exclude build output on Linux (exclude normally produced executable files and out files)
|
Exclude the (recommended) CMake build directory
|
||||||
build_en/CSE2
|
|
||||||
build_en/CSE2_debug
|
|
||||||
build_en/DoConfig
|
|
||||||
build_en/DoConfig_debug
|
|
||||||
build_jp/CSE2
|
|
||||||
build_jp/CSE2_debug
|
|
||||||
build_jp/DoConfig
|
|
||||||
build_jp/DoConfig_debug
|
|
||||||
build_en/*.out
|
|
||||||
build_jp/*.out
|
|
||||||
|
|
||||||
# Exclude PE executables in the build folder (and .exe.manifest files)
|
|
||||||
build_en/*.exe
|
|
||||||
build_en/*.exe.manifest
|
|
||||||
build_jp/*.exe
|
|
||||||
build_jp/*.exe.manifest
|
|
||||||
|
|
||||||
# Exclude the (recommended) CMake build directory
|
|
||||||
build/*
|
build/*
|
||||||
|
|
||||||
# Exclude MSVC IntelliSense database
|
# Exclude MSVC IntelliSense database
|
||||||
|
|
|
@ -4,6 +4,9 @@ if((${CMAKE_VERSION} VERSION_EQUAL 3.9) OR (${CMAKE_VERSION} VERSION_GREATER 3.9
|
||||||
cmake_policy(SET CMP0069 NEW)
|
cmake_policy(SET CMP0069 NEW)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(BUILD_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/game")
|
||||||
|
set(ASSETS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/assets")
|
||||||
|
|
||||||
option(JAPANESE "Enable the Japanese-language build" OFF)
|
option(JAPANESE "Enable the Japanese-language build" OFF)
|
||||||
option(FIX_BUGS "Fix certain bugs (see src/Bug Fixes.txt)" OFF)
|
option(FIX_BUGS "Fix certain bugs (see src/Bug Fixes.txt)" OFF)
|
||||||
option(NONPORTABLE "Enable bits of code that aren't portable, but are what the original game used" OFF)
|
option(NONPORTABLE "Enable bits of code that aren't portable, but are what the original game used" OFF)
|
||||||
|
@ -221,11 +224,11 @@ set(RESOURCES
|
||||||
|
|
||||||
# Handle options
|
# Handle options
|
||||||
if(JAPANESE)
|
if(JAPANESE)
|
||||||
set(BUILD_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build_jp")
|
set(DATA_DIRECTORY "${ASSETS_DIRECTORY}/data_jp")
|
||||||
list(APPEND RESOURCES "BITMAP/pixel_jp.bmp")
|
list(APPEND RESOURCES "BITMAP/pixel_jp.bmp")
|
||||||
target_compile_definitions(CSE2 PRIVATE JAPANESE)
|
target_compile_definitions(CSE2 PRIVATE JAPANESE)
|
||||||
else()
|
else()
|
||||||
set(BUILD_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build_en")
|
set(DATA_DIRECTORY "${ASSETS_DIRECTORY}/data_en")
|
||||||
list(APPEND RESOURCES "BITMAP/pixel.bmp")
|
list(APPEND RESOURCES "BITMAP/pixel.bmp")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -243,7 +246,7 @@ endif()
|
||||||
|
|
||||||
# Make some tweaks if we're targetting Windows
|
# Make some tweaks if we're targetting Windows
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_sources(CSE2 PRIVATE "res/ICON/ICON.rc")
|
target_sources(CSE2 PRIVATE "${ASSETS_DIRECTORY}/resources/ICON/ICON.rc")
|
||||||
target_compile_definitions(CSE2 PRIVATE WINDOWS)
|
target_compile_definitions(CSE2 PRIVATE WINDOWS)
|
||||||
set_target_properties(CSE2 PROPERTIES WIN32_EXECUTABLE YES) # Disable the console window
|
set_target_properties(CSE2 PROPERTIES WIN32_EXECUTABLE YES) # Disable the console window
|
||||||
else()
|
else()
|
||||||
|
@ -262,17 +265,37 @@ elseif(NOT WIN32)
|
||||||
list(APPEND RESOURCES "FONT/cour.ttf")
|
list(APPEND RESOURCES "FONT/cour.ttf")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Magic to convert resources to header files
|
# Build bin2h externally, so it isn't cross-compiled when CSE2 is (Emscripten)
|
||||||
add_subdirectory("bin2h")
|
include(ExternalProject)
|
||||||
|
|
||||||
|
ExternalProject_Add(bin2h
|
||||||
|
SOURCE_DIR "${CMAKE_SOURCE_DIR}/bin2h"
|
||||||
|
DOWNLOAD_COMMAND ""
|
||||||
|
UPDATE_COMMAND ""
|
||||||
|
BUILD_BYPRODUCTS "<INSTALL_DIR>/bin/bin2h"
|
||||||
|
CMAKE_ARGS
|
||||||
|
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
INSTALL_COMMAND
|
||||||
|
${CMAKE_COMMAND} --build . --config Release --target install
|
||||||
|
)
|
||||||
|
|
||||||
|
ExternalProject_Get_Property(bin2h INSTALL_DIR)
|
||||||
|
|
||||||
|
add_executable(bin2h_tool IMPORTED)
|
||||||
|
add_dependencies(bin2h_tool bin2h)
|
||||||
|
set_target_properties(bin2h_tool PROPERTIES IMPORTED_LOCATION "${INSTALL_DIR}/bin/bin2h")
|
||||||
|
|
||||||
|
# Convert resources to header files
|
||||||
foreach(FILENAME IN LISTS RESOURCES)
|
foreach(FILENAME IN LISTS RESOURCES)
|
||||||
set(IN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/res")
|
set(IN_DIR "${ASSETS_DIRECTORY}/resources")
|
||||||
set(OUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/Resource")
|
set(OUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/Resource")
|
||||||
get_filename_component(DIRECTORY "${FILENAME}" DIRECTORY)
|
get_filename_component(DIRECTORY "${FILENAME}" DIRECTORY)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT "${OUT_DIR}/${FILENAME}.h"
|
OUTPUT "${OUT_DIR}/${FILENAME}.h"
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${OUT_DIR}/${DIRECTORY}"
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${OUT_DIR}/${DIRECTORY}"
|
||||||
COMMAND bin2h "${IN_DIR}/${FILENAME}" "${OUT_DIR}/${FILENAME}.h"
|
COMMAND bin2h_tool "${IN_DIR}/${FILENAME}" "${OUT_DIR}/${FILENAME}.h"
|
||||||
DEPENDS bin2h "${IN_DIR}/${FILENAME}"
|
DEPENDS bin2h_tool "${IN_DIR}/${FILENAME}"
|
||||||
)
|
)
|
||||||
target_sources(CSE2 PRIVATE "${OUT_DIR}/${FILENAME}.h")
|
target_sources(CSE2 PRIVATE "${OUT_DIR}/${FILENAME}.h")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -303,6 +326,12 @@ set_target_properties(CSE2 PROPERTIES
|
||||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BUILD_DIRECTORY}
|
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BUILD_DIRECTORY}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Copy data folder to build directory
|
||||||
|
add_custom_command(TARGET CSE2 POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E remove_directory "${BUILD_DIRECTORY}/data"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${DATA_DIRECTORY}" "${BUILD_DIRECTORY}/data"
|
||||||
|
)
|
||||||
|
|
||||||
# Enable link-time optimisation if available
|
# Enable link-time optimisation if available
|
||||||
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
if((${CMAKE_VERSION} VERSION_EQUAL 3.9) OR (${CMAKE_VERSION} VERSION_GREATER 3.9))
|
if((${CMAKE_VERSION} VERSION_EQUAL 3.9) OR (${CMAKE_VERSION} VERSION_GREATER 3.9))
|
||||||
|
@ -361,6 +390,7 @@ else()
|
||||||
target_link_libraries(CSE2 freetype)
|
target_link_libraries(CSE2 freetype)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# DoConfig
|
# DoConfig
|
||||||
##
|
##
|
||||||
|
|
|
@ -5,14 +5,17 @@
|
||||||
* http://sam.zoy.org/wtfpl/COPYING for more details. */
|
* http://sam.zoy.org/wtfpl/COPYING for more details. */
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <cstring>
|
|
||||||
#include "FL/Fl.H"
|
#include "FL/Fl.H"
|
||||||
#include "FL/Fl_Window.H"
|
#include "FL/Fl_Window.H"
|
||||||
#include "FL/Fl_Radio_Round_Button.H"
|
#include "FL/Fl_Radio_Round_Button.H"
|
||||||
#include "FL/Fl_Choice.H"
|
#include "FL/Fl_Choice.H"
|
||||||
#include "FL/Fl_Check_Button.H"
|
#include "FL/Fl_Check_Button.H"
|
||||||
|
#include <FL/Fl_Button.H>
|
||||||
|
#include <FL/Fl_Group.H>
|
||||||
|
#include <FL/Fl_Menu_Item.H>
|
||||||
|
#include <FL/Fl_Round_Button.H>
|
||||||
|
#include <FL/Enumerations.H>
|
||||||
|
|
||||||
#define MAGIC "DOUKUTSU20041206"
|
#define MAGIC "DOUKUTSU20041206"
|
||||||
#define FONT "Courier New"
|
#define FONT "Courier New"
|
||||||
|
|
41
Makefile
|
@ -1,3 +1,9 @@
|
||||||
|
NATIVECC = cc
|
||||||
|
NATIVECXX = c++
|
||||||
|
|
||||||
|
BUILD_DIRECTORY = game
|
||||||
|
ASSETS_DIRECTORY = assets
|
||||||
|
|
||||||
ifeq ($(RELEASE), 1)
|
ifeq ($(RELEASE), 1)
|
||||||
CXXFLAGS = -O3 -flto
|
CXXFLAGS = -O3 -flto
|
||||||
LDFLAGS = -s
|
LDFLAGS = -s
|
||||||
|
@ -8,11 +14,11 @@ else
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(JAPANESE), 1)
|
ifeq ($(JAPANESE), 1)
|
||||||
BUILD_DIR = build_jp
|
DATA_DIRECTORY = $(ASSETS_DIRECTORY)/data_jp
|
||||||
|
|
||||||
CXXFLAGS += -DJAPANESE
|
CXXFLAGS += -DJAPANESE
|
||||||
else
|
else
|
||||||
BUILD_DIR = build_en
|
DATA_DIRECTORY = $(ASSETS_DIRECTORY)/data_en
|
||||||
endif
|
endif
|
||||||
|
|
||||||
FILENAME ?= $(FILENAME_DEF)
|
FILENAME ?= $(FILENAME_DEF)
|
||||||
|
@ -179,7 +185,7 @@ RESOURCES = \
|
||||||
ORG/White.org \
|
ORG/White.org \
|
||||||
ORG/XXXX.org \
|
ORG/XXXX.org \
|
||||||
ORG/Zonbie.org \
|
ORG/Zonbie.org \
|
||||||
WAVE/Wave.dat \
|
WAVE/Wave.dat
|
||||||
|
|
||||||
ifeq ($(JAPANESE), 1)
|
ifeq ($(JAPANESE), 1)
|
||||||
RESOURCES += BITMAP/pixel_jp.bmp
|
RESOURCES += BITMAP/pixel_jp.bmp
|
||||||
|
@ -196,32 +202,37 @@ ifneq ($(WINDOWS), 1)
|
||||||
RESOURCES += ICON/ICON_MINI.bmp
|
RESOURCES += ICON/ICON_MINI.bmp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
OBJECTS = $(addprefix obj/$(BUILD_DIR)/$(FILENAME)/, $(addsuffix .o, $(SOURCES)))
|
OBJECTS = $(addprefix obj/$(FILENAME)/, $(addsuffix .o, $(SOURCES)))
|
||||||
DEPENDENCIES = $(addprefix obj/$(BUILD_DIR)/$(FILENAME)/, $(addsuffix .o.d, $(SOURCES)))
|
DEPENDENCIES = $(addprefix obj/$(FILENAME)/, $(addsuffix .o.d, $(SOURCES)))
|
||||||
|
|
||||||
ifeq ($(WINDOWS), 1)
|
ifeq ($(WINDOWS), 1)
|
||||||
OBJECTS += obj/$(BUILD_DIR)/$(FILENAME)/win_icon.o
|
OBJECTS += obj/$(FILENAME)/win_icon.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: $(BUILD_DIR)/$(FILENAME)
|
all: $(BUILD_DIRECTORY)/$(FILENAME) $(BUILD_DIRECTORY)/data
|
||||||
|
@echo Finished
|
||||||
|
|
||||||
$(BUILD_DIR)/$(FILENAME): $(OBJECTS)
|
$(BUILD_DIRECTORY)/data: $(DATA_DIRECTORY)
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@echo Linking
|
@rm -rf $(BUILD_DIRECTORY)/data
|
||||||
|
@cp -r $(DATA_DIRECTORY) $(BUILD_DIRECTORY)/data
|
||||||
|
|
||||||
|
$(BUILD_DIRECTORY)/$(FILENAME): $(OBJECTS)
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
@echo Linking $@
|
||||||
@$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
|
@$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
|
||||||
@echo Finished compiling: $@
|
|
||||||
|
|
||||||
obj/$(BUILD_DIR)/$(FILENAME)/%.o: src/%.cpp
|
obj/$(FILENAME)/%.o: src/%.cpp
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@echo Compiling $<
|
@echo Compiling $<
|
||||||
@$(CXX) $(CXXFLAGS) $< -o $@ -c
|
@$(CXX) $(CXXFLAGS) $< -o $@ -c
|
||||||
|
|
||||||
obj/$(BUILD_DIR)/$(FILENAME)/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES)))
|
obj/$(FILENAME)/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES)))
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@echo Compiling $<
|
@echo Compiling $<
|
||||||
@$(CXX) $(CXXFLAGS) $< -o $@ -c
|
@$(CXX) $(CXXFLAGS) $< -o $@ -c
|
||||||
|
|
||||||
src/Resource/%.h: res/% obj/bin2h
|
src/Resource/%.h: $(ASSETS_DIRECTORY)/resources/% obj/bin2h
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@echo Converting $<
|
@echo Converting $<
|
||||||
@obj/bin2h $< $@
|
@obj/bin2h $< $@
|
||||||
|
@ -229,11 +240,11 @@ src/Resource/%.h: res/% obj/bin2h
|
||||||
obj/bin2h: bin2h/bin2h.c
|
obj/bin2h: bin2h/bin2h.c
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@echo Compiling $^
|
@echo Compiling $^
|
||||||
@$(CC) -O3 -s -std=c90 -Wall -Wextra -pedantic $^ -o $@
|
@$(NATIVECC) -O3 -s -std=c90 -Wall -Wextra -pedantic $^ -o $@
|
||||||
|
|
||||||
include $(wildcard $(DEPENDENCIES))
|
include $(wildcard $(DEPENDENCIES))
|
||||||
|
|
||||||
obj/$(BUILD_DIR)/$(FILENAME)/win_icon.o: res/ICON/ICON.rc res/ICON/0.ico res/ICON/ICON_MINI.ico
|
obj/$(FILENAME)/win_icon.o: $(ASSETS_DIRECTORY)/resources/ICON/ICON.rc $(ASSETS_DIRECTORY)/resources/ICON/0.ico $(ASSETS_DIRECTORY)/resources/ICON/ICON_MINI.ico
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@windres $< $@
|
@windres $< $@
|
||||||
|
|
||||||
|
|
10
README.md
|
@ -6,7 +6,7 @@ Cave Story Engine 2 is a decompilation of Cave Story, ported from DirectX to SDL
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
*Note: if these are not found, they will be built locally (CMake only)*
|
*Note: with CMake, if these are not found, they will be built locally*
|
||||||
|
|
||||||
* SDL2
|
* SDL2
|
||||||
* FreeType
|
* FreeType
|
||||||
|
@ -18,7 +18,7 @@ Cave Story Engine 2 is a decompilation of Cave Story, ported from DirectX to SDL
|
||||||
|
|
||||||
This project primarily uses CMake, allowing it to be built with a range of compilers.
|
This project primarily uses CMake, allowing it to be built with a range of compilers.
|
||||||
|
|
||||||
In this directory, create a directory called 'build', then switch to the command-line (Visual Studio users should open the [Developer Command Prompt](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs)) and `cd` into it. After that, generate the files for your build system with:
|
In this folder, create another folder called 'build', then switch to the command-line (Visual Studio users should open the [Developer Command Prompt](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs)) and `cd` into it. After that, generate the files for your build system with:
|
||||||
|
|
||||||
```
|
```
|
||||||
cmake .. -DCMAKE_BUILD_TYPE=Release
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||||
|
@ -38,13 +38,13 @@ cmake --build . --config Release
|
||||||
|
|
||||||
If you're a Visual Studio user, you can open the generated `CSE2.sln` file instead.
|
If you're a Visual Studio user, you can open the generated `CSE2.sln` file instead.
|
||||||
|
|
||||||
Once built, the executables can be found in `build_en` or `build_jp`, depending on the selected language.
|
Once built, the executables and assets can be found in the newly-generated `game` folder.
|
||||||
|
|
||||||
### Makefile (deprecated)
|
### Makefile (deprecated)
|
||||||
|
|
||||||
*Note: this requires pkg-config*
|
*Note: this requires pkg-config*
|
||||||
|
|
||||||
Run 'make' in the base directory, preferably with some of the following settings:
|
Run 'make' in this folder, preferably with some of the following settings:
|
||||||
|
|
||||||
* `RELEASE=1` - Compile a release build (optimised, stripped, etc.)
|
* `RELEASE=1` - Compile a release build (optimised, stripped, etc.)
|
||||||
* `STATIC=1` - Produce a statically-linked executable (good for Windows builds, so you don't need to bundle DLL files)
|
* `STATIC=1` - Produce a statically-linked executable (good for Windows builds, so you don't need to bundle DLL files)
|
||||||
|
@ -56,7 +56,7 @@ Run 'make' in the base directory, preferably with some of the following settings
|
||||||
|
|
||||||
### Visual Studio .NET 2003
|
### Visual Studio .NET 2003
|
||||||
|
|
||||||
Project files for Visual Studio .NET 2003 are available in the 'msvc2003' directory.
|
Project files for Visual Studio .NET 2003 are available in the 'msvc2003' folder.
|
||||||
|
|
||||||
Visual Studio .NET 2003 was used by Pixel to create the original `Doukutsu.exe`, so these project files allow us to check the accuracy of the decompilation by comparing the generated assembly code to that of the original executable.
|
Visual Studio .NET 2003 was used by Pixel to create the original `Doukutsu.exe`, so these project files allow us to check the accuracy of the decompilation by comparing the generated assembly code to that of the original executable.
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 134 B After Width: | Height: | Size: 134 B |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 638 B After Width: | Height: | Size: 638 B |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |