Import accurate branch
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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()
|
|
@ -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.
|
|
@ -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
|
|
@ -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.
|
|
@ -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.
|
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
|
@ -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
|
||||
|
After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 318 B |
|
@ -0,0 +1,3 @@
|
|||
// Quick-and-dirty shim to make CSE2.rc work in newer versions of Visual Studio
|
||||
|
||||
#include "windows.h"
|
|
@ -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
|
|
@ -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.
|
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 1.1 KiB |
|
@ -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
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 134 B |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 638 B |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 18 KiB |