Import accurate branch

This commit is contained in:
Phantop 2020-12-04 14:40:16 -05:00
commit 9053e2b1a7
1008 changed files with 64542 additions and 0 deletions

13
.gitattributes vendored Normal file
View File

@ -0,0 +1,13 @@
# Automatically normalize line endings.
* text=auto
# MSVC files have to be CRLF
*.vcproj text eol=crlf
*.sln text eol=crlf
# Do not change external files
external/** -text
DoConfig/fltk/** -text
# TSC files are not text, but 'git diff' likes to think they are
*.tsc binary

105
.gitignore vendored Normal file
View File

@ -0,0 +1,105 @@
# Exclude obj directory (object files for Makefile build)
/obj
# Exclude the (recommended) CMake build directory
/build*
# Exclude executables
/game_english/CSE2_debug.exe
/game_english/DoConfig_debug.exe
/game_english/CSE2.exe
/game_english/DoConfig.exe
/game_english/CSE2_debug
/game_english/DoConfig_debug
/game_english/CSE2
/game_english/DoConfig
/game_english/CSE2_debug.rpx
/game_english/CSE2.rpx
/game_english/CSE2.3dsx
/game_english/\!CSE2
/game_japanese/CSE2_debug.exe
/game_japanese/DoConfig_debug.exe
/game_japanese/CSE2.exe
/game_japanese/DoConfig.exe
/game_japanese/CSE2_debug
/game_japanese/DoConfig_debug
/game_japanese/CSE2
/game_japanese/DoConfig
/game_japanese/CSE2_debug.rpx
/game_japanese/CSE2.rpx
/game_japanese/CSE2.3dsx
/game_japanese/\!CSE2
# Exclude MSVC debug data
/game_english/CSE2_debug.ilk
/game_english/CSE2_debug.pdb
/game_english/DoConfig_debug.ilk
/game_english/DoConfig_debug.pdb
/game_english/CSE2.ilk
/game_english/CSE2.pdb
/game_english/DoConfig.ilk
/game_english/DoConfig.pdb
/game_japanese/CSE2_debug.ilk
/game_japanese/CSE2_debug.pdb
/game_japanese/DoConfig_debug.ilk
/game_japanese/DoConfig_debug.pdb
/game_japanese/CSE2.ilk
/game_japanese/CSE2.pdb
/game_japanese/DoConfig.ilk
/game_japanese/DoConfig.pdb
# Exclude misc. MSVC junk
/.vs
/out
/CMakeSettings.json
# Exclude save data
/game_english/Config.dat
/game_english/Profile.dat
/game_english/290.rec
/game_english/window.rect
/game_japanese/Config.dat
/game_japanese/Profile.dat
/game_japanese/290.rec
/game_japanese/window.rect
# Exclude configuration files
/game_english/fps
/game_english/mute
/game_english/save
/game_english/s_reverse
/game_japanese/fps
/game_japanese/mute
/game_japanese/save
/game_japanese/s_reverse
# Exclude error logs
/game_english/error.log
/game_japanese/error.log
###################
# Accurate branch #
###################
# Exclude devilution-comparer assembly output
/devilution/orig.asm
/devilution/compare.asm
# Exclude MSVC IntelliSense database
/vs2003/CSE2.ncb
# Exclude MSVC Solution User Options file
/vs2003/CSE2.suo
# Exclude MSVC build folders
/vs2003/Debug
/vs2003/Release
/vs2003/Debug (Japanese)
/vs2003/Release (Japanese)
###################
# Portable branch #
###################
# Exclude converted resource files
/src/Resource

133
.travis.yml Normal file
View File

@ -0,0 +1,133 @@
# Optimize git clone
git:
depth: 5
# Bionic is the most recent version of Ubuntu I can get to work properly
dist: bionic
# Enable C++ language support
language: cpp
compiler:
- gcc
os:
- linux
# - windows
addons:
apt:
sources:
- sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- sourceline: 'ppa:ubuntu-toolchain-r/test'
packages:
- make
- mingw-w64
env:
- SIXTY_FOUR_BIT=false FIX_BUGS=0 JAPANESE=0
- SIXTY_FOUR_BIT=false FIX_BUGS=0 JAPANESE=1
- SIXTY_FOUR_BIT=false FIX_BUGS=1 JAPANESE=0
- SIXTY_FOUR_BIT=false FIX_BUGS=1 JAPANESE=1
- SIXTY_FOUR_BIT=true FIX_BUGS=0 JAPANESE=0
- SIXTY_FOUR_BIT=true FIX_BUGS=0 JAPANESE=1
- SIXTY_FOUR_BIT=true FIX_BUGS=1 JAPANESE=0
- SIXTY_FOUR_BIT=true FIX_BUGS=1 JAPANESE=1
before_install:
# Setup MSYS2
- |
if [ "$TRAVIS_OS_NAME" == "windows" ]; then
[[ ! -f C:/tools/msys64/msys2_shell.cmd ]] && rm -rf C:/tools/msys64
choco uninstall -y mingw
choco upgrade --no-progress -y msys2
export msys2='cmd //C RefreshEnv.cmd '
export msys2+='& set MSYS=winsymlinks:nativestrict '
export msys2+='& C:\\tools\\msys64\\msys2_shell.cmd -defterm -no-start'
if [ "$SIXTY_FOUR_BIT" == "true" ]; then
export mingw="$msys2 -mingw64 -full-path -here -c "\"\$@"\" --"
else
export mingw="$msys2 -mingw32 -full-path -here -c "\"\$@"\" --"
fi
export msys2+=" -msys2 -c "\"\$@"\" --"
if [ "$SIXTY_FOUR_BIT" == "true" ]; then
$msys2 pacman --sync --noconfirm --needed make mingw-w64-x86_64-toolchain
else
$msys2 pacman --sync --noconfirm --needed make mingw-w64-i686-toolchain
fi
taskkill //IM gpg-agent.exe //F # https://travis-ci.community/t/4967
export PATH=/C/tools/msys64/mingw64/bin:$PATH
export MAKE=mingw32-make # so that Autotools can find it
fi
# Set URL for Discord send script
- DISCORD_SEND_SCRIPT_URL=https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
- DISCORD_SEND_SCRIPT_FILENAME=discordSendNotification.sh
# Display available disk space
- df -h
# Display Travis OS name
- echo $TRAVIS_OS_NAME
# Define CC and CXX
- |
if [ "$SIXTY_FOUR_BIT" == "true" ]; then
export CC="x86_64-w64-mingw32-gcc"
export CXX="x86_64-w64-mingw32-g++"
else
export CC="i686-w64-mingw32-gcc"
export CXX="i686-w64-mingw32-g++"
fi
# Define WINDRES
- |
if [ "$TRAVIS_OS_NAME" == "windows" ]; then
export WINDRES="windres"
else
if [ "$SIXTY_FOUR_BIT" == "true" ]; then
export WINDRES="x86_64-w64-mingw32-windres"
else
export WINDRES="i686-w64-mingw32-windres"
fi
fi
# Display compilers name/version
- $mingw echo ${CC}
- $mingw echo ${CXX}
- $mingw ${CC} --version
- $mingw ${CXX} --version
before_cache:
- |
if [ "$TRAVIS_OS_NAME" == "windows" ]; then
# https://unix.stackexchange.com/a/137322/107554
$msys2 pacman --sync --clean --noconfirm
fi
cache:
directories:
- $HOME/AppData/Local/Temp/chocolatey
- /C/tools/msys64
install:
# Get number of cores (or 2 by default if somehow none of these are available somehow)
- JOBS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)
- echo $JOBS
script:
# Build
- $mingw make -j ${JOBS} FIX_BUGS=${FIX_BUGS} JAPANESE=${JAPANESE} RELEASE=1 WINDOWS=1 STATIC=1 CXXFLAGS="-Wall -Wextra -pedantic"
after_success:
# Send success notification to Discord through DISCORD_WEBHOOK_URL
- travis_retry wget ${DISCORD_SEND_SCRIPT_URL} -O ${DISCORD_SEND_SCRIPT_FILENAME}
- chmod +x ${DISCORD_SEND_SCRIPT_FILENAME}
- ./${DISCORD_SEND_SCRIPT_FILENAME} success $DISCORD_WEBHOOK_URL
after_failure:
# Send failure notification to Discord through DISCORD_WEBHOOK_URL
- travis_retry wget ${DISCORD_SEND_SCRIPT_URL} -O ${DISCORD_SEND_SCRIPT_FILENAME}
- chmod +x ${DISCORD_SEND_SCRIPT_FILENAME}
- ./${DISCORD_SEND_SCRIPT_FILENAME} failure $DISCORD_WEBHOOK_URL

260
CMakeLists.txt Normal file
View File

@ -0,0 +1,260 @@
cmake_minimum_required(VERSION 3.5.1)
#############
# Constants #
#############
set(ASSETS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/assets")
###########
# Options #
###########
option(JAPANESE "Enable the Japanese-language build (instead of the unofficial Aeon Genesis English translation)" OFF)
option(FIX_BUGS "Fix various bugs in the game" OFF)
option(FIX_MAJOR_BUGS "Fix bugs that invoke undefined behaviour or cause memory leaks" OFF)
option(DEBUG_SAVE "Re-enable the dummied-out 'Debug Save' option, and the ability to drag-and-drop save files onto the window" OFF)
option(LTO "Enable link-time optimisation" OFF)
option(MSVC_LINK_STATIC_RUNTIME "Link the static MSVC runtime library" OFF)
#########
# Setup #
#########
project(CSE2 LANGUAGES C CXX)
add_executable(CSE2 WIN32
"${ASSETS_DIRECTORY}/resources/CSE2.rc"
"src/ArmsItem.cpp"
"src/ArmsItem.h"
"src/Back.cpp"
"src/Back.h"
"src/Boss.cpp"
"src/Boss.h"
"src/BossAlmo1.cpp"
"src/BossAlmo1.h"
"src/BossAlmo2.cpp"
"src/BossAlmo2.h"
"src/BossBallos.cpp"
"src/BossBallos.h"
"src/BossFrog.cpp"
"src/BossFrog.h"
"src/BossIronH.cpp"
"src/BossIronH.h"
"src/BossLife.cpp"
"src/BossLife.h"
"src/BossOhm.cpp"
"src/BossOhm.h"
"src/BossPress.cpp"
"src/BossPress.h"
"src/BossTwinD.cpp"
"src/BossTwinD.h"
"src/BossX.cpp"
"src/BossX.h"
"src/BulHit.cpp"
"src/BulHit.h"
"src/Bullet.cpp"
"src/Bullet.h"
"src/Caret.cpp"
"src/Caret.h"
"src/CommonDefines.h"
"src/Config.cpp"
"src/Config.h"
"src/Dialog.cpp"
"src/Dialog.h"
"src/Draw.cpp"
"src/Draw.h"
"src/Ending.cpp"
"src/Ending.h"
"src/Escape.cpp"
"src/Escape.h"
"src/Fade.cpp"
"src/Fade.h"
"src/Flags.cpp"
"src/Flags.h"
"src/Flash.cpp"
"src/Flash.h"
"src/Frame.cpp"
"src/Frame.h"
"src/Game.cpp"
"src/Game.h"
"src/Generic.cpp"
"src/Generic.h"
"src/GenericLoad.cpp"
"src/GenericLoad.h"
"src/Input.cpp"
"src/Input.h"
"src/KeyControl.cpp"
"src/KeyControl.h"
"src/Main.cpp"
"src/Main.h"
"src/Map.cpp"
"src/Map.h"
"src/MapName.cpp"
"src/MapName.h"
"src/MiniMap.cpp"
"src/MiniMap.h"
"src/MyChar.cpp"
"src/MyChar.h"
"src/MycHit.cpp"
"src/MycHit.h"
"src/MycParam.cpp"
"src/MycParam.h"
"src/NpcAct.h"
"src/NpcAct000.cpp"
"src/NpcAct020.cpp"
"src/NpcAct040.cpp"
"src/NpcAct060.cpp"
"src/NpcAct080.cpp"
"src/NpcAct100.cpp"
"src/NpcAct120.cpp"
"src/NpcAct140.cpp"
"src/NpcAct160.cpp"
"src/NpcAct180.cpp"
"src/NpcAct200.cpp"
"src/NpcAct220.cpp"
"src/NpcAct240.cpp"
"src/NpcAct260.cpp"
"src/NpcAct280.cpp"
"src/NpcAct300.cpp"
"src/NpcAct320.cpp"
"src/NpcAct340.cpp"
"src/NpChar.cpp"
"src/NpChar.h"
"src/NpcHit.cpp"
"src/NpcHit.h"
"src/NpcTbl.cpp"
"src/NpcTbl.h"
"src/Organya.cpp"
"src/Organya.h"
"src/PixTone.cpp"
"src/PixTone.h"
"src/Profile.cpp"
"src/Profile.h"
"src/SelStage.cpp"
"src/SelStage.h"
"src/Shoot.cpp"
"src/Shoot.h"
"src/Sound.cpp"
"src/Sound.h"
"src/Stage.cpp"
"src/Stage.h"
"src/Star.cpp"
"src/Star.h"
"src/TextScr.cpp"
"src/TextScr.h"
"src/Triangle.cpp"
"src/Triangle.h"
"src/ValueView.cpp"
"src/ValueView.h"
"src/WindowsWrapper.h"
)
###################
# Option handling #
###################
if(JAPANESE)
set(BUILD_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/game_japanese")
target_compile_definitions(CSE2 PRIVATE JAPANESE)
else()
set(BUILD_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/game_english")
endif()
if(FIX_BUGS)
target_compile_definitions(CSE2 PRIVATE FIX_BUGS)
endif()
if(FIX_BUGS OR FIX_MAJOR_BUGS)
target_compile_definitions(CSE2 PRIVATE FIX_MAJOR_BUGS)
endif()
if(DEBUG_SAVE)
target_compile_definitions(CSE2 PRIVATE DEBUG_SAVE)
endif()
if(LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT result)
if(result)
set_target_properties(CSE2 PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()
endif()
# This is messy as hell, and has been replaced by CMAKE_MSVC_RUNTIME_LIBRARY,
# but that's a very recent CMake addition, so we're still doing it this way for now
if(MSVC AND MSVC_LINK_STATIC_RUNTIME)
# Statically-link the CRT (vcpkg static libs do this)
foreach(flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
if(${flag_var} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
endif()
endforeach()
endif()
##########
# Tweaks #
##########
# Make some tweaks if we're using MSVC
if(MSVC)
# Disable warnings that normally fire up on MSVC when using "unsafe" functions instead of using MSVC's "safe" _s functions
target_compile_definitions(CSE2 PRIVATE _CRT_SECURE_NO_WARNINGS)
# Make it so source files are recognized as UTF-8 by MSVC
target_compile_options(CSE2 PRIVATE "/utf-8")
endif()
##################
# Misc. settings #
##################
# Force strict C90
set_target_properties(CSE2 PROPERTIES
C_STANDARD 90
C_STANDARD_REQUIRED ON
C_EXTENSIONS OFF
)
# Force strict C++98
set_target_properties(CSE2 PROPERTIES
CXX_STANDARD 98
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
# Name debug builds "CSE2_debug", to distinguish them
set_target_properties(CSE2 PROPERTIES DEBUG_OUTPUT_NAME "CSE2_debug")
# Send executable to the build_en/build_jp directory
set_target_properties(CSE2 PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BUILD_DIRECTORY}
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${BUILD_DIRECTORY}
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${BUILD_DIRECTORY}
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${BUILD_DIRECTORY}
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BUILD_DIRECTORY}
)
################
# Dependencies #
################
# Link libraries
target_link_libraries(CSE2 PRIVATE ddraw dsound version shlwapi imm32 winmm dxguid gdi32)
# Newer MSVC is missing `dinput.lib`
if(MSVC AND NOT (MSVC_VERSION LESS 1500))
target_link_libraries(CSE2 PRIVATE dinput8)
else()
target_link_libraries(CSE2 PRIVATE dinput)
endif()

31
LICENCE.txt Normal file
View File

@ -0,0 +1,31 @@
THIS PROJECT CONTAINS PROPRIETARY CODE AND ASSETS.
THIS IS NOT FREE/LIBRE SOFTWARE OR OPEN-SOURCE SOFTWARE.
USE AT YOUR OWN RISK.
The original code and assets belongs to Daisuke "Pixel" Amaya.
Modifications and custom code are under the following licence:
MIT License
Copyright (c) 2019 Regan "cuckydev" Green
Copyright (c) 2019-2020 Clownacy
Copyright (c) 2019-2020 Gabriel Ravier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

213
Makefile Normal file
View File

@ -0,0 +1,213 @@
WINDRES ?= windres
ASSETS_DIRECTORY = assets
ALL_CXXFLAGS = $(CXXFLAGS)
ALL_LDFLAGS = $(LDFLAGS)
ALL_LIBS = $(LIBS)
ifeq ($(RELEASE), 1)
ALL_CXXFLAGS += -O3 -DNDEBUG
ALL_LDFLAGS += -s
FILENAME_DEF = CSE2.exe
else
ALL_CXXFLAGS += -Og -ggdb3
FILENAME_DEF = CSE2_debug.exe
endif
ifeq ($(JAPANESE), 1)
BUILD_DIRECTORY = game_japanese
ALL_CXXFLAGS += -DJAPANESE
else
BUILD_DIRECTORY = game_english
endif
FILENAME ?= $(FILENAME_DEF)
ifeq ($(FIX_BUGS), 1)
ALL_CXXFLAGS += -DFIX_BUGS -DFIX_MAJOR_BUGS
else
ifeq ($(FIX_MAJOR_BUGS), 1)
ALL_CXXFLAGS += -DFIX_MAJOR_BUGS
endif
endif
ifeq ($(DEBUG_SAVE), 1)
ALL_CXXFLAGS += -DDEBUG_SAVE
endif
ALL_CXXFLAGS += -std=c++98 -MMD -MP -MF $@.d
ALL_LIBS += -lkernel32 -lgdi32 -lddraw -ldinput -ldsound -lversion -lshlwapi -limm32 -lwinmm -ldxguid
ALL_LDFLAGS += -mwindows
ifeq ($(STATIC), 1)
ALL_LDFLAGS += -static
endif
SOURCES = \
src/ArmsItem.cpp \
src/Back.cpp \
src/Boss.cpp \
src/BossAlmo1.cpp \
src/BossAlmo2.cpp \
src/BossBallos.cpp \
src/BossFrog.cpp \
src/BossIronH.cpp \
src/BossLife.cpp \
src/BossOhm.cpp \
src/BossPress.cpp \
src/BossTwinD.cpp \
src/BossX.cpp \
src/BulHit.cpp \
src/Bullet.cpp \
src/Caret.cpp \
src/Config.cpp \
src/Dialog.cpp \
src/Draw.cpp \
src/Ending.cpp \
src/Escape.cpp \
src/Fade.cpp \
src/Flags.cpp \
src/Flash.cpp \
src/Frame.cpp \
src/Game.cpp \
src/Generic.cpp \
src/GenericLoad.cpp \
src/Input.cpp \
src/KeyControl.cpp \
src/Main.cpp \
src/Map.cpp \
src/MapName.cpp \
src/MiniMap.cpp \
src/MyChar.cpp \
src/MycHit.cpp \
src/MycParam.cpp \
src/NpcAct000.cpp \
src/NpcAct020.cpp \
src/NpcAct040.cpp \
src/NpcAct060.cpp \
src/NpcAct080.cpp \
src/NpcAct100.cpp \
src/NpcAct120.cpp \
src/NpcAct140.cpp \
src/NpcAct160.cpp \
src/NpcAct180.cpp \
src/NpcAct200.cpp \
src/NpcAct220.cpp \
src/NpcAct240.cpp \
src/NpcAct260.cpp \
src/NpcAct280.cpp \
src/NpcAct300.cpp \
src/NpcAct320.cpp \
src/NpcAct340.cpp \
src/NpChar.cpp \
src/NpcHit.cpp \
src/NpcTbl.cpp \
src/Organya.cpp \
src/PixTone.cpp \
src/Profile.cpp \
src/SelStage.cpp \
src/Shoot.cpp \
src/Sound.cpp \
src/Stage.cpp \
src/Star.cpp \
src/TextScr.cpp \
src/Triangle.cpp \
src/ValueView.cpp
RESOURCES = \
BITMAP/Credit01.bmp \
BITMAP/Credit02.bmp \
BITMAP/Credit03.bmp \
BITMAP/Credit04.bmp \
BITMAP/Credit05.bmp \
BITMAP/Credit06.bmp \
BITMAP/Credit07.bmp \
BITMAP/Credit08.bmp \
BITMAP/Credit09.bmp \
BITMAP/Credit10.bmp \
BITMAP/Credit11.bmp \
BITMAP/Credit12.bmp \
BITMAP/Credit14.bmp \
BITMAP/Credit15.bmp \
BITMAP/Credit16.bmp \
BITMAP/Credit17.bmp \
BITMAP/Credit18.bmp \
BITMAP/pixel.bmp \
CURSOR/CURSOR_IKA.cur \
CURSOR/CURSOR_NORMAL.cur \
ICON/0.ico \
ICON/ICON_MINI.ico \
ORG/Access.org \
ORG/Anzen.org \
ORG/Balcony.org \
ORG/Ballos.org \
ORG/BreakDown.org \
ORG/Cemetery.org \
ORG/Curly.org \
ORG/Dr.org \
ORG/Ending.org \
ORG/Escape.org \
ORG/Fanfale1.org \
ORG/Fanfale2.org \
ORG/Fanfale3.org \
ORG/FireEye.org \
ORG/Gameover.org \
ORG/Ginsuke.org \
ORG/Grand.org \
ORG/Gravity.org \
ORG/Hell.org \
ORG/ironH.org \
ORG/Jenka.org \
ORG/Jenka2.org \
ORG/Kodou.org \
ORG/LastBtl3.org \
ORG/LastBtl.org \
ORG/LastCave.org \
ORG/Marine.org \
ORG/Maze.org \
ORG/MDown2.org \
ORG/Mura.org \
ORG/Oside.org \
ORG/Plant.org \
ORG/quiet.org \
ORG/Requiem.org \
ORG/Toroko.org \
ORG/Vivi.org \
ORG/Wanpak2.org \
ORG/Wanpaku.org \
ORG/Weed.org \
ORG/White.org \
ORG/XXXX.org \
ORG/Zonbie.org \
WAVE/Wave.dat
OBJECTS = $(addprefix obj/$(FILENAME)/, $(addsuffix .o, $(SOURCES)))
DEPENDENCIES = $(addprefix obj/$(FILENAME)/, $(addsuffix .o.d, $(SOURCES)))
OBJECTS += obj/$(FILENAME)/windows_resources.o
all: $(BUILD_DIRECTORY)/$(FILENAME)
$(info Finished)
$(BUILD_DIRECTORY)/$(FILENAME): $(OBJECTS)
@mkdir -p $(@D)
$(info Linking $@)
@$(CXX) $(ALL_CXXFLAGS) $(ALL_LDFLAGS) $^ -o $@ $(ALL_LIBS)
obj/$(FILENAME)/%.cpp.o: %.cpp
@mkdir -p $(@D)
$(info Compiling $<)
@$(CXX) $(ALL_CXXFLAGS) $< -o $@ -c
include $(wildcard $(DEPENDENCIES))
obj/$(FILENAME)/windows_resources.o: $(ASSETS_DIRECTORY)/resources/CSE2.rc $(ASSETS_DIRECTORY)/resources/resource1.h $(ASSETS_DIRECTORY)/resources/afxres.h $(addprefix $(ASSETS_DIRECTORY)/resources/, $(RESOURCES))
@mkdir -p $(@D)
$(info Compiling Windows resource file $<)
@$(WINDRES) $< $@
# TODO
clean:
@rm -rf obj

68
PHILOSOPHY.md Normal file
View File

@ -0,0 +1,68 @@
# `accurate` branch
Being a pure, plain decompilation of the original `Doukutsu.exe` file (v1.0.0.6),
there should not be much to say about this branch's philosophies:
## Goal
The end-goal is for the project to be able to produce an `.exe` file that is
identical to the original. This means that there should be no custom code,
decompiled code should ideally be made to produce the same assembly code as the
original, bugs should be left intact, etc.
Another goal of the project is to document Cave Story's inner-working, so code
should be reasonably-annotated. Likewise, bugs should be documented, and fixes
provided wrapped in `#ifdef FIX_BUGS` conditions.
## Accuracy to the original source code
Personally, I do aim to make the decompiled code _functionally_-accurate to the
original, down to generating the same assembly code, but I do not aim for
_visually_-accurate code.
Despite this, I do try to preserve the original function/variable names,
variable-declaration locations, and source file naming.
Part of the reason why I do not aim for visually-accurate source code is that we
know from the [Organya source code release](https://github.com/shbow/organya/)
what Pixel's code-style looked like, and I find it **extremely** hard to read.
## Language
Cave Story's developer (Pixel) primarily speaks Japanese, but his code's
variable/function names are mostly written in English (with a few rare instances
of Romanised Japanese).
The Organya source code release indicates that Pixel wrote his comments in
Japanese, however, in this project, I prefer them to be written in English.
The English employed in this project is a mix of American English, Canadian
English, and British English.
# `portable` branch
This branch takes a different direction to the `accurate` branch, but they still
share many core philosophies:
## Goal
While accurately-reproducing Cave Story's original code is still a priority, the
main focus of this branch is to port the game to other platforms, while also
preserving the game the way it was experienced back in 2004.
Essentially, this branch exists to provide a purist Cave Story experience
without requiring an old Windows XP computer.
Notably, this means that bugs should still be left intact. However, bugs and
other coding errors that affect portability should be fixed.
For comparison, I believe this branch shares many parallels with the
Chocolate Doom project. Follow the link below to see that project's list of
philosophies, which may be applicable here:
https://github.com/chocolate-doom/chocolate-doom/blob/master/PHILOSOPHY.md
## Custom code
Cave Story's original source code was written in C++, but stylised like C89
(with a number of exceptions). Custom code added to the project should follow
suit, but the C-style doesn't have to be C89 - personally, I prefer to write in
the subset of C99 that C++98 allows.
I prefer compiler-specific code to be avoided, since more-portable code benefits
all compilers, and keeps the codebase free of clutter.

128
README.md Normal file
View File

@ -0,0 +1,128 @@
[![Build Status](https://travis-ci.com/Clownacy/CSE2.svg?branch=accurate)](https://travis-ci.com/Clownacy/CSE2)
## Table of Contents
This repo has two main branches:
Branch | Description
--------|--------
[accurate](https://www.github.com/Clownacy/CSE2/tree/accurate) | The main decompilation branch. The code is intended to be as close to the original as possible, down to all the bugs and platform-dependencies.
[portable](https://www.github.com/Clownacy/CSE2/tree/portable) | This branch ports the engine away from WinAPI and DirectX, and addresses numerous portability issues, allowing it to run on other platforms.
# CSE2
CSE2 is a decompilation of Cave Story.
![Screenshot](screenshot.png)
## Background
When Pixel made Cave Story, he compiled the original Windows EXE with no
optimisations. This left the generated assembly code extremely verbose and easy
to read. It also made the code very decompiler-friendly, since the assembly
could be mapped directly back to the original C++ code.
Technically, this alone made a decompilation feasible, as was the case for [the
Super Mario 64 decompilation project](https://github.com/n64decomp/sm64) -
however, there was more to be found...
In 2007, a Linux port of Cave Story was made by Simon Parzer and Peter Mackay.
Details about it can be found on [Peter's old blog](https://web.archive.org/web/20070911202919/http://aaiiee.wordpress.com:80/).
This port received an update in 2011, including two shiny new executables. What
they didn't realise was that they left huge amounts of debugging information in
these executables, including the names of every C++ source file, as well as the
variables, functions, and structs they contained.
This was a goldmine of information about not just the game's inner-workings, but
its _source code._ This is the same lucky-break [the Diablo decompilation project](https://github.com/diasurgical/devilution)
had. With it, much of the game's code was pre-documented and explained, saving
us the effort of doing it ourselves. In fact, the combination of
easy-to-decompile code, and a near-full set of function/variable names, reduced
much of the decompilation process to mere copy-paste.
To top it all off, some of Cave Story's original source code would eventually
see the light of day:
In early 2018, the Organya music engine was [released on GitHub](https://github.com/shbow/organya)
by an old friend of Pixel's. On top of providing an insight into Pixel's coding
style, this helped with figuring out one of the most complex parts of Cave
Story's codebase.
And... that's it! It's not often that a game this decompilable comes along, so
I'm glad that Cave Story was one of them. [Patching a dusty old executable from 2005 sucks](https://github.com/Clownacy/Cave-Story-Mod-Loader/blob/master/src/mods/graphics_enhancement/widescreen/patch_camera.c).
## Building
### Visual Studio .NET 2003
Project files for Visual Studio .NET 2003 are available, and can be found in the
'vs2003' folder.
As proven by the original `Doukutsu.exe`'s [Rich Header](http://bytepointer.com/articles/the_microsoft_rich_header.htm),
Pixel used Visual Studio .NET 2003 to compile Cave Story. This means these
project files allow us to check the accuracy of the decompilation by comparing
the generated assembly code to that of the original executable. The tool for
this can be found in the 'devilution' folder.
### CMake (Visual Studio & MinGW-w64)
Switch to the terminal (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 this folder. After that, generate the files for your build system
with:
```
cmake -B build -DCMAKE_BUILD_TYPE=Release
```
MSYS2 users should append `-G"MSYS Makefiles"` to this command, also.
You can also add the following flags:
Name | Function
--------|--------
`-DJAPANESE=ON` | Enable the Japanese-language build (instead of the unofficial Aeon Genesis English translation)
`-DFIX_BUGS=ON` | Fix various bugs in the game
`-DFIX_MAJOR_BUGS=ON` | Fix bugs that invoke undefined behaviour or cause memory leaks
`-DDEBUG_SAVE=ON` | Re-enable [the dummied-out 'Debug Save' option](https://tcrf.net/Cave_Story#Debug_Save), and the ability to drag-and-drop save files onto the window
`-DLTO=ON` | Enable link-time optimisation
`-DMSVC_LINK_STATIC_RUNTIME=ON` | Link the static MSVC runtime library, to reduce the number of required DLL files (Visual Studio only)
You can pass your own compiler flags with `-DCMAKE_C_FLAGS` and `-DCMAKE_CXX_FLAGS`.
You can then compile CSE2 with this command:
```
cmake --build build --config Release
```
If you're a Visual Studio user, you can open the generated `CSE2.sln` file
instead, which can be found in the `build` folder.
Once built, the executable can be found in the `game_english`/`game_japanese`
folder, depending on the selected language.
### Makefile (MinGW-w64) \[deprecated - use CMake instead\]
Run 'make' in this folder, preferably with some of the following settings:
Name | Function
--------|--------
`JAPANESE=1` | Enable the Japanese-language build (instead of the unofficial Aeon Genesis English translation)
`FIX_BUGS=1` | Fix various bugs in the game
`FIX_MAJOR_BUGS=1` | Fix bugs that invoke undefined behaviour or cause memory leaks
`DEBUG_SAVE=1` | Re-enable [the dummied-out 'Debug Save' option](https://tcrf.net/Cave_Story#Debug_Save), and the ability to drag-and-drop save files onto the window
`RELEASE=1` | Compile a release build (optimised, stripped, etc.)
`STATIC=1` | Produce a statically-linked executable (so you don't need to bundle DLL files)
You can pass your own compiler flags by defining `CXXFLAGS`.
Once built, the executable can be found in the `game_english`/`game_japanese`
folder, depending on the selected language.
## Licensing
Being a decompilation, the majority of the code in this project is proprietary
and belongs to Daisuke "Pixel" Amaya.
Modifications and custom code are made available under the MIT licence. See
`LICENCE.txt` for details.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

284
assets/resources/CSE2.rc Normal file
View File

@ -0,0 +1,284 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource1.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Japanese resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
#pragma code_page(932)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,6
PRODUCTVERSION 1,0,0,6
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041104b0"
BEGIN
VALUE "FileDescription", "Doukutsu"
VALUE "FileVersion", "1, 0, 0, 6"
VALUE "InternalName", "Doukutsu Monogatari"
VALUE "LegalCopyright", "I can't get MSVC2003 to understand Japanese so here's a placeholder"
VALUE "OriginalFilename", "Doukutsu.exe"
VALUE "ProductName", "I can't get MSVC2003 to understand Japanese so here's a placeholder"
VALUE "ProductVersion", "1, 0, 0, 6"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x411, 1200
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
CREDIT01 BITMAP "BITMAP/Credit01.bmp"
CREDIT02 BITMAP "BITMAP/Credit02.bmp"
CREDIT03 BITMAP "BITMAP/Credit03.bmp"
CREDIT04 BITMAP "BITMAP/Credit04.bmp"
CREDIT05 BITMAP "BITMAP/Credit05.bmp"
CREDIT06 BITMAP "BITMAP/Credit06.bmp"
CREDIT07 BITMAP "BITMAP/Credit07.bmp"
CREDIT08 BITMAP "BITMAP/Credit08.bmp"
CREDIT09 BITMAP "BITMAP/Credit09.bmp"
CREDIT10 BITMAP "BITMAP/Credit10.bmp"
CREDIT11 BITMAP "BITMAP/Credit11.bmp"
CREDIT12 BITMAP "BITMAP/Credit12.bmp"
CREDIT14 BITMAP "BITMAP/Credit14.bmp"
CREDIT15 BITMAP "BITMAP/Credit15.bmp"
CREDIT16 BITMAP "BITMAP/Credit16.bmp"
CREDIT17 BITMAP "BITMAP/Credit17.bmp"
CREDIT18 BITMAP "BITMAP/Credit18.bmp"
PIXEL BITMAP "BITMAP/pixel.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// ORG
//
ACCESS ORG "ORG/Access.org"
ANZEN ORG "ORG/Anzen.org"
BALCONY ORG "ORG/Balcony.org"
BALLOS ORG "ORG/Ballos.org"
BDOWN ORG "ORG/BreakDown.org"
CEMETERY ORG "ORG/Cemetery.org"
CURLY ORG "ORG/Curly.org"
DR ORG "ORG/Dr.org"
ENDING ORG "ORG/Ending.org"
ESCAPE ORG "ORG/Escape.org"
FANFALE1 ORG "ORG/Fanfale1.org"
FANFALE2 ORG "ORG/Fanfale2.org"
FANFALE3 ORG "ORG/Fanfale3.org"
FIREEYE ORG "ORG/FireEye.org"
GAMEOVER ORG "ORG/Gameover.org"
GINSUKE ORG "ORG/Ginsuke.org"
GRAND ORG "ORG/Grand.org"
GRAVITY ORG "ORG/Gravity.org"
HELL ORG "ORG/Hell.org"
IRONH ORG "ORG/ironH.org"
JENKA ORG "ORG/Jenka.org"
JENKA2 ORG "ORG/Jenka2.org"
KODOU ORG "ORG/Kodou.org"
LASTBTL ORG "ORG/LastBtl.org"
LASTBT3 ORG "ORG/LastBtl3.org"
LASTCAVE ORG "ORG/LastCave.org"
MARINE ORG "ORG/Marine.org"
MAZE ORG "ORG/Maze.org"
MDOWN2 ORG "ORG/MDown2.org"
OSIDE ORG "ORG/Oside.org"
MURA ORG "ORG/Mura.org"
PLANT ORG "ORG/Plant.org"
QUIET ORG "ORG/quiet.org"
REQUIEM ORG "ORG/Requiem.org"
TOROKO ORG "ORG/Toroko.org"
VIVI ORG "ORG/Vivi.org"
WANPAK2 ORG "ORG/Wanpak2.org"
WANPAKU ORG "ORG/Wanpaku.org"
WEED ORG "ORG/Weed.org"
WHITE ORG "ORG/White.org"
XXXX ORG "ORG/XXXX.org"
ZONBIE ORG "ORG/Zonbie.org"
/////////////////////////////////////////////////////////////////////////////
//
// WAVE
//
WAVE100 WAVE "WAVE/Wave.dat"
/////////////////////////////////////////////////////////////////////////////
//
// Cursor
//
CURSOR_IKA CURSOR "CURSOR/CURSOR_IKA.cur"
CURSOR_NORMAL CURSOR "CURSOR/CURSOR_NORMAL.cur"
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
0 ICON "ICON/0.ico"
ICON_MINI ICON "ICON/ICON_MINI.ico"
#endif // Japanese resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource1.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
MENU_MAIN MENU
BEGIN
MENUITEM "Quit", 40001
MENUITEM "Volume", 40004
MENUITEM "Version", 40002
MENUITEM "Debug Save", 40005
MENUITEM "Mute", 40007
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
DLG_ABOUT DIALOGEX 0, 0, 123, 75
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 9, "Arial", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",1,37,54,50,14,BS_FLAT
CTEXT "---",1011,7,14,109,35
END
DLG_MUTE DIALOGEX 0, 0, 118, 111
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Mute"
FONT 9, "Arial", 400, 0, 0x80
BEGIN
DEFPUSHBUTTON "OK",1,7,90,50,14
PUSHBUTTON "Cancel",2,61,90,50,14
CONTROL "0",1010,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,7,7,20,10
CONTROL "1",1018,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,17,15,20,10
CONTROL "2",1019,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,26,24,20,10
CONTROL "3",1020,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,35,33,20,10
CONTROL "4",1021,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,45,41,20,10
CONTROL "5",1022,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,54,50,20,10
CONTROL "6",1023,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,63,58,20,10
CONTROL "7",1024,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT |
WS_TABSTOP,73,67,20,10
END
DLG_SAVE DIALOGEX 0, 0, 118, 47
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Save"
FONT 9, "Arial", 0, 0, 0x1
BEGIN
EDITTEXT 1008,36,8,72,12,ES_AUTOHSCROLL
DEFPUSHBUTTON "OK",1,8,28,48,12
PUSHBUTTON "Cancel",2,60,28,48,12
LTEXT "Name",-1,8,8,20,12,SS_CENTERIMAGE
END
DLG_YESNO DIALOGEX 0, 0, 119, 49
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
FONT 9, "Arial", 400, 0, 0x80
BEGIN
PUSHBUTTON "Yes",1,7,28,50,14,BS_FLAT
PUSHBUTTON "No",2,62,28,50,14,BS_FLAT
CTEXT "---",1009,7,8,105,15,SS_CENTERIMAGE
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
assets/resources/ICON/0.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/resources/ORG/Dr.org Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
// Quick-and-dirty shim to make CSE2.rc work in newer versions of Visual Studio
#include "windows.h"

View File

@ -0,0 +1,16 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by CSE2.rc
//
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 172
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

BIN
devilution/Doukutsu.exe Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

21
devilution/cvdump-LICENSE Normal file
View File

@ -0,0 +1,21 @@
Copyright (c) 2015 Microsoft Corporation. All rights reserved.
This code is licensed under the MIT License (MIT).
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

BIN
devilution/cvdump.exe Normal file

Binary file not shown.

Binary file not shown.

BIN
game_english/data/Arms.pbm Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
game_english/data/Caret.pbm Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because one or more lines are too long

BIN
game_english/data/Face.pbm Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
game_english/data/Fade.pbm Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1 @@
gttttQN<EFBFBD><EFBFBD>㇋NQNgtttuQN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>探蜇r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㇋NQNgttuzQN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>哌N<EFBFBD>d蔔鉅誑硫d董d極漫<EFBFBD><EFBFBD>𤢂ttt<EFBFBD><EFBFBD>otxwu<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>弗妻極漫禿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㇋NQNgttu{QN<51><4E><EFBFBD><EFBFBD>𤢂vtu~ttu|QN<51><4E>outtt<74><74>脌tvt<76><74>o<EFBFBD><6F>哌N玌弘葫d隆狎偽岳r<E5B2B3><72><EFBFBD><EFBFBD>㇋Ngttu|QN<51><4E>䕭N<E495AD><4E>outtt<74><74>脌tvt<76><74>o<EFBFBD><6F>哌N玌弘葫d必牡戚毽降弧d隆狎偽岳r<E5B2B3><72><EFBFBD><EFBFBD>㇋NQNgttu}QN<51><4E><EFBFBD><EFBFBD>哌N<E5938C>d蔔鉅誑硫d董d隆溢<E99A86><E6BAA2>𤢂ttt<74><74>懀ttx<74><78>脌ttt<74><74>㦉tvt<76><74>嫾rrrr<72><72><EFBFBD><EFBFBD>𡥼N<F0A1A5BC><4E>㦉tytQN<51><4E>outtt<74><74>脌tvt<76><74>ōttv<74><76>哌N玌弘葫d隆溢雀岳r<E5B2B3><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㦉ttx<74><78>㇋NQNgttwtQN<51><4E><EFBFBD><EFBFBD>𤢂vtv~ttwv<77><76>𤢂vtu~ttwu<77><75>otvtu<74><75>勇tty<74><79>ottty~ttutQN<51><4E>脌tut箲粱葫妻<E891AB>風楹骨d𨯫僕妞弦<E5A69E><E5BCA6><EFBFBD>㦉uzt<7A><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洸d麢毽降妻𨯫僕妞弦d風d卡斑貍隍僭QN貍打陴pd此粱飛搞弗掖d風d鬼戚萱禿<E890B1><E7A6BF>㇋N𧨾鉅坏淄隆敦府風查蔔僎d溢釦秩降咋N賒葫d飛店搞邑陷援牡汗d府店酋斟<E9858B><E6969F><EFBFBD><EFBFBD>DQNgttwuQN<51><4E><EFBFBD><EFBFBD>ottty~ttty<74><79>哌N<E5938C><4E>勇ttz𡤻寮戚毽降弧d革孜岩楨牡汗d<E6B197><64>𩾷ttte<74><65><EFBFBD><EFBFBD>㇋NgttwvQN<51><4E><EFBFBD><EFBFBD>ottut~ttty<74><79>哌N<E5938C><4E>勇tuu𡤻寮戚毽降弧d革孜岩楨牡汗d<E6B197><64>𩾷ttte<74><65><EFBFBD><EFBFBD>㇋NQNgttxtQN<51><4E><EFBFBD><EFBFBD>脌ttt<74><74>㦉txt<78><74><EFBFBD><EFBFBD>㦉txt<78><74>脌ttwQN<51><4E>哌N𧨾鉅洛漫d身岳r<E5B2B3><72><EFBFBD><EFBFBD><EFBFBD>必粱董d隆葆<E99A86><E89186><EFBFBD>𤢂tx}<7D><>𡥼N<F0A1A5BC><4E>懀ttu<74><75>㦉tyt<79><74>𤢂xwu~ttx|<7C><><EFBFBD><EFBFBD>㇋NQNgttxuQN<51><4E><EFBFBD><EFBFBD>脌ttt<74><74><EFBFBD><EFBFBD>㦉txt<78><74><EFBFBD><EFBFBD>㦉txt<78><74>脌ttwQN<51><4E>哌N𧨾鉅洛漫d邑頂痔禿<E79794><E7A6BF><EFBFBD><EFBFBD><EFBFBD>必粱董d隆葆<E99A86><E89186><EFBFBD>𤢂tx}<7D><>𡥼N<F0A1A5BC><4E>懀ttu<74><75>㦉tyt<79><74>𤢂xwu~ttx|<7C><><EFBFBD><EFBFBD>㇋NQNgttxvQN<51><4E><EFBFBD><EFBFBD>脌ttt<74><74>㦉txt<78><74><EFBFBD><EFBFBD>㦉txt<78><74>脌ttwQN<51><4E><EFBFBD><EFBFBD>𣘗N𧨾鉅貍隆d痔漫辜楨府d市平猛rr<72><72><EFBFBD><EFBFBD><EFBFBD>必粱董d隆葆<E99A86><E89186><EFBFBD>𤢂tx}<7D><>𡥼N<F0A1A5BC><4E>懀ttu<74><75>㦉tyt<79><74>𤢂xwu~ttx|<7C><><EFBFBD><EFBFBD>㇋NQNgttx|QN<51><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㇋NQNgttx}QN<51><4E><EFBFBD><EFBFBD>懀ttx<74><78>𣘗NQNQN<51>~d洸巨r虞吳ddxtttdqdxt}}QNxttt~<7E>掖疏埩<E7968F>3QN

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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