mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
KenBuild.
DONT_BUILD. git-svn-id: https://svn.eduke32.com/eduke32@4555 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
4e5788a32d
commit
4f67f8f969
53 changed files with 17635 additions and 170 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -29,3 +29,4 @@
|
||||||
/polymer/eduke32/build/obj
|
/polymer/eduke32/build/obj
|
||||||
/polymer/eduke32/source/jaudiolib/obj
|
/polymer/eduke32/source/jaudiolib/obj
|
||||||
/polymer/eduke32/source/enet/obj
|
/polymer/eduke32/source/enet/obj
|
||||||
|
/polymer/eduke32/source/testgame/obj
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
include Makefile.common
|
include Makefile.common
|
||||||
|
|
||||||
|
|
||||||
DUKE3D_SRC=source
|
DUKE3D_SRC=source
|
||||||
DUKE3D_INC=$(DUKE3D_SRC)
|
DUKE3D_INC=$(DUKE3D_SRC)
|
||||||
DUKE3D_RSRC=rsrc
|
DUKE3D_RSRC=rsrc
|
||||||
|
@ -15,6 +14,19 @@ o=o
|
||||||
asm=nasm
|
asm=nasm
|
||||||
obj=obj
|
obj=obj
|
||||||
|
|
||||||
|
COMPILERFLAGS += -I$(ENGINE_INC) -I$(DUKE3D_SRC)/jmact -I$(AUDIOLIB_ROOT)/include -I$(ENET_ROOT)/include
|
||||||
|
|
||||||
|
|
||||||
|
# EBacktrace
|
||||||
|
|
||||||
|
ifndef EBACKTRACEDLL
|
||||||
|
EBACKTRACEDLL = ebacktrace1.dll
|
||||||
|
ifeq ($(findstring x86_64,$(COMPILERTARGET)),x86_64)
|
||||||
|
EBACKTRACEDLL = ebacktrace1-64.dll
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
EBACKTRACEDLL_TARGET:=$(EBACKTRACEDLL)
|
||||||
|
|
||||||
|
|
||||||
# BUILD Engine
|
# BUILD Engine
|
||||||
|
|
||||||
|
@ -23,8 +35,7 @@ UTIL_LIBS= -lm # -lpthread
|
||||||
|
|
||||||
ENGINE_OBJ=$(ENGINE_ROOT)/$(obj)
|
ENGINE_OBJ=$(ENGINE_ROOT)/$(obj)
|
||||||
|
|
||||||
|
ENGINE_OBJS=baselayer cache1d compat crc32 defs engine polymost texcache dxtfilter hightile textfont smalltextfont kplib lz4 osd pragmas scriptfile mmulti_null mutex xxhash
|
||||||
ENGINE_OBJS=baselayer cache1d compat crc32 defs engine polymost texcache dxtfilter hightile textfont smalltextfont kplib lz4 osd pragmas scriptfile mutex xxhash
|
|
||||||
ENGINE_EDITOR_OBJS=build config defs
|
ENGINE_EDITOR_OBJS=build config defs
|
||||||
ifeq (0,$(NOASM))
|
ifeq (0,$(NOASM))
|
||||||
ENGINE_OBJS+= a
|
ENGINE_OBJS+= a
|
||||||
|
@ -75,6 +86,11 @@ ENGINE_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(ENGINE_OBJS)))
|
||||||
ENGINE_EDITOR_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(ENGINE_EDITOR_OBJS)))
|
ENGINE_EDITOR_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(ENGINE_EDITOR_OBJS)))
|
||||||
|
|
||||||
|
|
||||||
|
# MACT
|
||||||
|
|
||||||
|
MACT_OBJ=file_lib control keyboard mouse joystick mathutil scriplib animlib
|
||||||
|
|
||||||
|
|
||||||
# AudioLib
|
# AudioLib
|
||||||
|
|
||||||
AUDIOLIB_OBJS=drivers fx_man multivoc mix mixst pitch formats vorbis flac xa driver_nosound
|
AUDIOLIB_OBJS=drivers fx_man multivoc mix mixst pitch formats vorbis flac xa driver_nosound
|
||||||
|
@ -131,6 +147,12 @@ endif
|
||||||
|
|
||||||
ENET_OBJS_EXP:=$(addprefix $(ENET_OBJ)/,$(addsuffix .$o,$(ENET_OBJS)))
|
ENET_OBJS_EXP:=$(addprefix $(ENET_OBJ)/,$(addsuffix .$o,$(ENET_OBJS)))
|
||||||
|
|
||||||
|
ifeq ($(NETCODE),0)
|
||||||
|
ENET_TARGET=
|
||||||
|
else
|
||||||
|
ENET_TARGET=$(ENET_OBJS_EXP)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
# Tools
|
# Tools
|
||||||
|
|
||||||
|
@ -143,58 +165,62 @@ SDLUTILS=makesdlkeytrans
|
||||||
UTIL_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(UTIL_OBJS)))
|
UTIL_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(UTIL_OBJS)))
|
||||||
|
|
||||||
|
|
||||||
# Duke Nukem 3D
|
# KenBuild (Test Game)
|
||||||
|
|
||||||
ifneq (0,$(RELEASE))
|
TESTGAME_ROOT=$(DUKE3D_SRC)/testgame
|
||||||
# Debugging disabled
|
TESTGAME_SRC=$(TESTGAME_ROOT)/src
|
||||||
COMMONFLAGS += $(F_NO_STACK_PROTECTOR)
|
TESTGAME_RSRC=$(TESTGAME_ROOT)/rsrc
|
||||||
else
|
TESTGAME_OBJ=$(TESTGAME_ROOT)/$(obj)
|
||||||
# Debugging enabled
|
|
||||||
ifneq (0,$(KRANDDEBUG))
|
TEST_CFLAGS=-I$(TESTGAME_SRC)
|
||||||
COMMONFLAGS += -fno-inline -fno-inline-functions -fno-inline-functions-called-once
|
|
||||||
endif
|
TESTGAME ?= testgame$(EXESUFFIX)
|
||||||
ifeq (1,$(SDL_TARGET))
|
TESTEDITOR ?= testeditor$(EXESUFFIX)
|
||||||
COMPILERFLAGS += -DNOSDLPARACHUTE
|
|
||||||
|
TESTGAME_TARGET:=$(TESTGAME)
|
||||||
|
TESTEDITOR_TARGET:=$(TESTEDITOR)
|
||||||
|
|
||||||
|
TESTGAME_OBJS=game sound_stub common config
|
||||||
|
TESTEDITOR_OBJS=bstub common
|
||||||
|
|
||||||
|
ifeq ($(RENDERTYPE),SDL)
|
||||||
|
ifeq (1,$(HAVE_GTK2))
|
||||||
|
TESTGAME_OBJS+= game_banner startgtk.game
|
||||||
|
TESTEDITOR_OBJS+= editor_banner
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
TESTGAME_OBJS+= game_icon
|
||||||
|
TESTEDITOR_OBJS+= build_icon
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM),WINDOWS)
|
||||||
|
TESTGAME_OBJS+= gameres startwin.game
|
||||||
|
TESTEDITOR_OBJS+= buildres
|
||||||
endif
|
endif
|
||||||
|
|
||||||
COMPILERFLAGS += -I$(DUKE3D_INC) -I$(ENGINE_INC) -I$(DUKE3D_SRC)/jmact -I$(AUDIOLIB_ROOT)/include -I$(ENET_ROOT)/include
|
TESTGAME_OBJS_EXP:=$(addprefix $(TESTGAME_OBJ)/,$(addsuffix .$o,$(TESTGAME_OBJS)))
|
||||||
|
TESTEDITOR_OBJS_EXP:=$(addprefix $(TESTGAME_OBJ)/,$(addsuffix .$o,$(TESTEDITOR_OBJS)))
|
||||||
|
|
||||||
|
|
||||||
|
# Duke Nukem 3D
|
||||||
|
|
||||||
|
DUKE3D_CFLAGS=-I$(DUKE3D_INC)
|
||||||
|
|
||||||
# Game/editor-specific linker options
|
|
||||||
DUKE3D_LINKERFLAGS=
|
DUKE3D_LINKERFLAGS=
|
||||||
DUKE3D_EDITOR_LINKERFLAGS=
|
DUKE3D_EDITOR_LINKERFLAGS=
|
||||||
|
|
||||||
DUKE3D_OBJ=$(DUKE3D_SRC)/$(obj)
|
DUKE3D_OBJ=$(DUKE3D_SRC)/$(obj)
|
||||||
|
|
||||||
ifeq ($(NETCODE),0)
|
|
||||||
ENET_TARGET=
|
|
||||||
else
|
|
||||||
ENET_TARGET=$(ENET_OBJS_EXP)
|
|
||||||
endif
|
|
||||||
|
|
||||||
EDUKE32 ?= eduke32$(EXESUFFIX)
|
EDUKE32 ?= eduke32$(EXESUFFIX)
|
||||||
MAPSTER32 ?= mapster32$(EXESUFFIX)
|
MAPSTER32 ?= mapster32$(EXESUFFIX)
|
||||||
|
|
||||||
EDUKE32_TARGET:=$(EDUKE32)
|
EDUKE32_TARGET:=$(EDUKE32)
|
||||||
MAPSTER32_TARGET:=$(MAPSTER32)
|
MAPSTER32_TARGET:=$(MAPSTER32)
|
||||||
|
|
||||||
ifndef EBACKTRACEDLL
|
COMMON_OBJS=common rev
|
||||||
EBACKTRACEDLL = ebacktrace1.dll
|
COMMON_EDITOR_OBJS=common m32def m32exec m32vars mathutil rev
|
||||||
ifeq ($(findstring x86_64,$(COMPILERTARGET)),x86_64)
|
|
||||||
EBACKTRACEDLL = ebacktrace1-64.dll
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
EBACKTRACEDLL_TARGET:=$(EBACKTRACEDLL)
|
|
||||||
|
|
||||||
ifeq ($(SUBPLATFORM),LINUX)
|
DUKE3D_OBJS=game actors anim config demo gamedef gameexec gamevars global input menus namesdyn net player premap savegame sector rts osdfuncs osdcmds grpscan sounds soundsdyn $(MACT_OBJ)
|
||||||
LIBS+= -lrt
|
DUKE3D_EDITOR_OBJS=astub sounds_mapster32
|
||||||
endif
|
|
||||||
|
|
||||||
MACT_OBJ=file_lib control keyboard mouse joystick mathutil scriplib animlib
|
|
||||||
|
|
||||||
DUKE3D_OBJS=game actors anim common rev config demo gamedef gameexec gamevars global input menus namesdyn net player premap savegame sector rts osdfuncs osdcmds grpscan sounds soundsdyn $(MACT_OBJ)
|
|
||||||
|
|
||||||
DUKE3D_EDITOR_OBJS=astub common rev m32def m32exec m32vars mathutil sounds_mapster32
|
|
||||||
|
|
||||||
ifneq ($(USE_LIBVPX),0)
|
ifneq ($(USE_LIBVPX),0)
|
||||||
DUKE3D_OBJS+= animvpx
|
DUKE3D_OBJS+= animvpx
|
||||||
|
@ -259,18 +285,11 @@ ifneq (0,$(LUNATIC))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
# PLATFORM SPECIFIC SETTINGS
|
|
||||||
|
|
||||||
ifeq ($(SUBPLATFORM),LINUX)
|
ifeq ($(SUBPLATFORM),LINUX)
|
||||||
ifeq (0,$(CLANG))
|
|
||||||
COMMONFLAGS += -fno-pic
|
|
||||||
endif
|
|
||||||
LIBS += -lFLAC -lvorbisfile -lvorbis -logg
|
LIBS += -lFLAC -lvorbisfile -lvorbis -logg
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),DARWIN)
|
ifeq ($(PLATFORM),DARWIN)
|
||||||
COMMONFLAGS += -fno-pic
|
|
||||||
LIBDIRS += -L$(AUDIOLIB_ROOT)/third-party/Apple/lib
|
LIBDIRS += -L$(AUDIOLIB_ROOT)/third-party/Apple/lib
|
||||||
|
|
||||||
LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lm \
|
LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lm \
|
||||||
|
@ -287,7 +306,6 @@ ifeq ($(PLATFORM),DARWIN)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),WINDOWS)
|
ifeq ($(PLATFORM),WINDOWS)
|
||||||
COMMONFLAGS += -fno-pic
|
|
||||||
LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lcompat-from-mingw-w64
|
LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lcompat-from-mingw-w64
|
||||||
LIBDIRS += -L$(AUDIOLIB_ROOT)/third-party/Windows/lib$(WINLIB)
|
LIBDIRS += -L$(AUDIOLIB_ROOT)/third-party/Windows/lib$(WINLIB)
|
||||||
DUKE3D_OBJS+= gameres winbits startwin.game
|
DUKE3D_OBJS+= gameres winbits startwin.game
|
||||||
|
@ -316,6 +334,9 @@ ifeq ($(MIXERTYPE),SDL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
COMMON_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(COMMON_OBJS)))
|
||||||
|
COMMON_EDITOR_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(COMMON_EDITOR_OBJS)))
|
||||||
|
|
||||||
DUKE3D_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_OBJS)))
|
DUKE3D_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_OBJS)))
|
||||||
DUKE3D_EDITOR_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_EDITOR_OBJS)))
|
DUKE3D_EDITOR_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_EDITOR_OBJS)))
|
||||||
|
|
||||||
|
@ -325,7 +346,7 @@ DUKE3D_EDITOR_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_EDIT
|
||||||
ifeq ($(PRETTY_OUTPUT),1)
|
ifeq ($(PRETTY_OUTPUT),1)
|
||||||
.SILENT:
|
.SILENT:
|
||||||
endif
|
endif
|
||||||
.PHONY: veryclean clean all cleanutils utils dxutils sdlutils printutils printsdlutils printdxutils rev rev_clean
|
.PHONY: veryclean clean all test cleanutils utils dxutils sdlutils printutils printsdlutils printdxutils rev rev_clean
|
||||||
|
|
||||||
# TARGETS
|
# TARGETS
|
||||||
|
|
||||||
|
@ -337,6 +358,14 @@ ifneq (,$(MAPSTER32_TARGET))
|
||||||
@ls -l $(MAPSTER32)
|
@ls -l $(MAPSTER32)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
test: start $(TESTGAME_TARGET) $(TESTEDITOR_TARGET) finish
|
||||||
|
ifneq (,$(TESTGAME_TARGET))
|
||||||
|
@ls -l $(TESTGAME)
|
||||||
|
endif
|
||||||
|
ifneq (,$(TESTEDITOR_TARGET))
|
||||||
|
@ls -l $(TESTEDITOR)
|
||||||
|
endif
|
||||||
|
|
||||||
ebacktrace: start $(EBACKTRACEDLL_TARGET) finish
|
ebacktrace: start $(EBACKTRACEDLL_TARGET) finish
|
||||||
ifneq (,$(EBACKTRACEDLL_TARGET))
|
ifneq (,$(EBACKTRACEDLL_TARGET))
|
||||||
@ls -l $(EBACKTRACEDLL)
|
@ls -l $(EBACKTRACEDLL)
|
||||||
|
@ -357,7 +386,21 @@ dxutils: $(addsuffix $(EXESUFFIX),$(DXUTILS))
|
||||||
sdlutils: $(addsuffix $(EXESUFFIX),$(SDLUTILS))
|
sdlutils: $(addsuffix $(EXESUFFIX),$(SDLUTILS))
|
||||||
@ls -l $^
|
@ls -l $^
|
||||||
|
|
||||||
$(EDUKE32): $(DUKE3D_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(ENET_TARGET) $(DUKE3D_MISCDEPS)
|
$(TESTGAME): $(TESTGAME_OBJS_EXP) $(COMMON_OBJS_EXP) $(ENGINE_OBJS_EXP)
|
||||||
|
$(LINK_STATUS)
|
||||||
|
$(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK)
|
||||||
|
ifneq ($(STRIP),)
|
||||||
|
$(STRIP) $(TESTGAME)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(TESTEDITOR): $(TESTEDITOR_OBJS_EXP) $(COMMON_EDITOR_OBJS_EXP) $(ENGINE_EDITOR_OBJS_EXP) $(ENGINE_OBJS_EXP)
|
||||||
|
$(LINK_STATUS)
|
||||||
|
$(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK)
|
||||||
|
ifneq ($(STRIP),)
|
||||||
|
$(STRIP) $(TESTEDITOR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(EDUKE32): $(DUKE3D_OBJS_EXP) $(COMMON_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(ENET_TARGET) $(DUKE3D_MISCDEPS)
|
||||||
$(LINK_STATUS)
|
$(LINK_STATUS)
|
||||||
$(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(DUKE3D_LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK)
|
$(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(DUKE3D_LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK)
|
||||||
ifneq ($(STRIP),)
|
ifneq ($(STRIP),)
|
||||||
|
@ -369,7 +412,7 @@ ifeq ($(PLATFORM),DARWIN)
|
||||||
cp -f "$(EDUKE32)" "EDuke32.app/Contents/MacOS/"
|
cp -f "$(EDUKE32)" "EDuke32.app/Contents/MacOS/"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(MAPSTER32): $(DUKE3D_EDITOR_OBJS_EXP) $(ENGINE_EDITOR_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(DUKE3D_EDITOR_MISCDEPS)
|
$(MAPSTER32): $(DUKE3D_EDITOR_OBJS_EXP) $(COMMON_EDITOR_OBJS_EXP) $(ENGINE_EDITOR_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(DUKE3D_EDITOR_MISCDEPS)
|
||||||
$(LINK_STATUS)
|
$(LINK_STATUS)
|
||||||
$(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(DUKE3D_EDITOR_LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK)
|
$(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(DUKE3D_EDITOR_LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK)
|
||||||
ifneq ($(STRIP),)
|
ifneq ($(STRIP),)
|
||||||
|
@ -381,6 +424,7 @@ ifeq ($(PLATFORM),DARWIN)
|
||||||
cp -f "$(MAPSTER32)" "Mapster32.app/Contents/MacOS/"
|
cp -f "$(MAPSTER32)" "Mapster32.app/Contents/MacOS/"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
include Makefile.deps
|
include Makefile.deps
|
||||||
include $(ENGINE_ROOT)/Makefile.deps
|
include $(ENGINE_ROOT)/Makefile.deps
|
||||||
|
|
||||||
|
@ -415,10 +459,6 @@ arttool$(EXESUFFIX): $(ENGINE_OBJ)/arttool.$o
|
||||||
$(ONESTEP_STATUS)
|
$(ONESTEP_STATUS)
|
||||||
$(RECIPE_IF) $(L_CXX) $(CPPONLYFLAGS) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(STDCPPLIB) $(UTIL_LIBS) $(RECIPE_RESULT_ONESTEP)
|
$(RECIPE_IF) $(L_CXX) $(CPPONLYFLAGS) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(STDCPPLIB) $(UTIL_LIBS) $(RECIPE_RESULT_ONESTEP)
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.c | $(DUKE3D_OBJ)
|
|
||||||
$(COMPILE_STATUS)
|
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
|
||||||
|
|
||||||
#### Lunatic
|
#### Lunatic
|
||||||
|
|
||||||
# Create object files directly with luajit
|
# Create object files directly with luajit
|
||||||
|
@ -435,7 +475,7 @@ $(DUKE3D_OBJ)/luaJIT_BC_%.$o: source/lunatic/%.ilua
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/lunatic/%.c
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/lunatic/%.c
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
# TODO: _m32
|
# TODO: _m32
|
||||||
# List of exported symbols, OS X
|
# List of exported symbols, OS X
|
||||||
|
@ -473,10 +513,6 @@ $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.c | $(ENGINE_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/util/%.c | $(DUKE3D_OBJ)
|
|
||||||
$(COMPILE_STATUS)
|
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
|
||||||
|
|
||||||
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.m | $(ENGINE_OBJ)
|
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.m | $(ENGINE_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
@ -489,10 +525,6 @@ $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/misc/%.c | $(ENGINE_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/misc/%.rc | $(ENGINE_OBJ)
|
|
||||||
$(COMPILE_STATUS)
|
|
||||||
$(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(ENGINE_SRC) $(RECIPE_RESULT_COMPILE)
|
|
||||||
|
|
||||||
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.c | $(ENGINE_OBJ)
|
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.c | $(ENGINE_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
@ -517,25 +549,45 @@ $(ENET_OBJ)/%.o: $(ENET_SRC)/%.c $(ENET_INC)/enet/*.h | $(ENET_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENET_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENET_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
|
$(TESTGAME_OBJ)/%.$o: $(TESTGAME_SRC)/%.c | $(TESTGAME_OBJ)
|
||||||
|
$(COMPILE_STATUS)
|
||||||
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(TESTGAME_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
|
$(TESTGAME_OBJ)/%.$o: $(TESTGAME_RSRC)/%.rc | $(TESTGAME_OBJ)
|
||||||
|
$(COMPILE_STATUS)
|
||||||
|
$(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(TESTGAME_SRC) --include-dir=$(TESTGAME_RSRC) $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
|
$(TESTGAME_OBJ)/%.$o: $(TESTGAME_RSRC)/%.c | $(TESTGAME_OBJ)
|
||||||
|
$(COMPILE_STATUS)
|
||||||
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(TESTGAME_CFLAGS) -Wno-pointer-sign -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.c | $(DUKE3D_OBJ)
|
||||||
|
$(COMPILE_STATUS)
|
||||||
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/util/%.c | $(DUKE3D_OBJ)
|
||||||
|
$(COMPILE_STATUS)
|
||||||
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.m | $(DUKE3D_OBJ)
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.m | $(DUKE3D_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.cpp | $(DUKE3D_OBJ)
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.cpp | $(DUKE3D_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/jmact/%.c | $(DUKE3D_OBJ)
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/jmact/%.c | $(DUKE3D_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/misc/%.rc | $(DUKE3D_OBJ)
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/misc/%.rc | $(DUKE3D_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(DUKE3D_SRC) -DPOLYMER=$(POLYMER) $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(DUKE3D_SRC) --include-dir=$(DUKE3D_RSRC) -DPOLYMER=$(POLYMER) $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_RSRC)/%.c | $(DUKE3D_OBJ)
|
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_RSRC)/%.c | $(DUKE3D_OBJ)
|
||||||
$(COMPILE_STATUS)
|
$(COMPILE_STATUS)
|
||||||
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -Wno-pointer-sign -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
$(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -Wno-pointer-sign -c $< -o $@ $(RECIPE_RESULT_COMPILE)
|
||||||
|
|
||||||
$(DUKE3D_RSRC)/game_banner.c: $(DUKE3D_RSRC)/game.bmp
|
$(DUKE3D_RSRC)/game_banner.c: $(DUKE3D_RSRC)/game.bmp
|
||||||
echo "#include <gdk-pixbuf/gdk-pixdata.h>" > $@
|
echo "#include <gdk-pixbuf/gdk-pixdata.h>" > $@
|
||||||
|
@ -546,17 +598,20 @@ $(DUKE3D_RSRC)/editor_banner.c: $(DUKE3D_RSRC)/build.bmp
|
||||||
echo "extern const GdkPixdata startbanner_pixdata;" >> $@
|
echo "extern const GdkPixdata startbanner_pixdata;" >> $@
|
||||||
gdk-pixbuf-csource --extern --struct --raw --name=startbanner_pixdata $^ | sed 's/load_inc//' >> $@
|
gdk-pixbuf-csource --extern --struct --raw --name=startbanner_pixdata $^ | sed 's/load_inc//' >> $@
|
||||||
|
|
||||||
$(ENGINE_OBJ) $(AUDIOLIB_OBJ) $(ENET_OBJ) $(DUKE3D_OBJ):
|
$(ENGINE_OBJ) $(AUDIOLIB_OBJ) $(ENET_OBJ) $(DUKE3D_OBJ) $(TESTGAME_OBJ):
|
||||||
mkdir $@
|
mkdir $@
|
||||||
|
|
||||||
# PHONIES
|
# PHONIES
|
||||||
|
|
||||||
clean: $(UNDO_REV)
|
clean: $(UNDO_REV)
|
||||||
-rm -f $(EDUKE32) $(MAPSTER32) $(DUKE3D_OBJS_EXP) $(DUKE3D_EDITOR_OBJS_EXP) $(DUKE3D_MISCDEPS) $(DUKE3D_EDITOR_MISCDEPS) core*
|
-rm -f $(EDUKE32) $(MAPSTER32) $(COMMON_OBJS_EXP) $(DUKE3D_OBJS_EXP) $(COMMON_EDITOR_OBJS_EXP) $(DUKE3D_EDITOR_OBJS_EXP) $(DUKE3D_MISCDEPS) $(DUKE3D_EDITOR_MISCDEPS) core*
|
||||||
ifeq ($(PLATFORM),DARWIN)
|
ifeq ($(PLATFORM),DARWIN)
|
||||||
-rm -rf EDuke32.app Mapster32.app
|
-rm -rf EDuke32.app Mapster32.app
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
cleantest:
|
||||||
|
-rm -f $(TESTGAME) $(TESTEDITOR) $(TESTGAME_OBJS_EXP) $(TESTEDITOR_OBJS_EXP)
|
||||||
|
|
||||||
cleanutils:
|
cleanutils:
|
||||||
-rm -f $(addsuffix $(EXESUFFIX),$(UTILS) $(GAMEUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(UTILS))) $(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(GAMEUTILS))) $(addsuffix $(EXESUFFIX),$(DXUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(DXUTILS))) $(addsuffix $(EXESUFFIX),$(SDLUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(SDLUTILS))) $(UTIL_OBJS_EXP)
|
-rm -f $(addsuffix $(EXESUFFIX),$(UTILS) $(GAMEUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(UTILS))) $(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(GAMEUTILS))) $(addsuffix $(EXESUFFIX),$(DXUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(DXUTILS))) $(addsuffix $(EXESUFFIX),$(SDLUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(SDLUTILS))) $(UTIL_OBJS_EXP)
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,10 @@ ifeq ($(findstring clang,$(CC)),clang)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (0,$(CLANG))
|
ifneq (0,$(CLANG))
|
||||||
CC=clang -x c
|
override CC=clang -x c
|
||||||
CXX=clang -x c++
|
override CXX=clang -x c++
|
||||||
L_CC=clang
|
override L_CC=clang
|
||||||
L_CXX=clang
|
override L_CXX=clang
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CCFULLPATH=$(CC)
|
CCFULLPATH=$(CC)
|
||||||
|
@ -341,6 +341,19 @@ ifeq ($(PLATFORM),DARWIN)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
ifneq (0,$(RELEASE))
|
||||||
|
# Debugging disabled
|
||||||
|
COMMONFLAGS += $(F_NO_STACK_PROTECTOR)
|
||||||
|
else
|
||||||
|
# Debugging enabled
|
||||||
|
ifneq (0,$(KRANDDEBUG))
|
||||||
|
COMMONFLAGS += -fno-inline -fno-inline-functions -fno-inline-functions-called-once
|
||||||
|
endif
|
||||||
|
ifeq (1,$(SDL_TARGET))
|
||||||
|
COMPILERFLAGS += -DNOSDLPARACHUTE
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifndef OPTOPT
|
ifndef OPTOPT
|
||||||
ifeq ($(PLATFORM), WII)
|
ifeq ($(PLATFORM), WII)
|
||||||
OPTOPT=
|
OPTOPT=
|
||||||
|
@ -641,6 +654,11 @@ ifeq ($(SUBPLATFORM),LINUX)
|
||||||
override NOASM=1
|
override NOASM=1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
LIBS+= -lrt
|
||||||
|
ifeq (0,$(CLANG))
|
||||||
|
COMMONFLAGS += -fno-pic
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),DARWIN)
|
ifeq ($(PLATFORM),DARWIN)
|
||||||
COMPILERFLAGS+= -DUNDERSCORES
|
COMPILERFLAGS+= -DUNDERSCORES
|
||||||
|
@ -685,6 +703,8 @@ ifeq ($(PLATFORM),DARWIN)
|
||||||
LINKERFLAGS += -read_only_relocs suppress
|
LINKERFLAGS += -read_only_relocs suppress
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
COMMONFLAGS += -fno-pic
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),WINDOWS)
|
ifeq ($(PLATFORM),WINDOWS)
|
||||||
COMPILERFLAGS+= -DUNDERSCORES -DHAVE_INTTYPES -Iplatform/Windows/include
|
COMPILERFLAGS+= -DUNDERSCORES -DHAVE_INTTYPES -Iplatform/Windows/include
|
||||||
|
@ -723,6 +743,8 @@ ifeq ($(PLATFORM),WINDOWS)
|
||||||
override NOASM=1
|
override NOASM=1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
COMMONFLAGS += -fno-pic
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),BSD)
|
ifeq ($(PLATFORM),BSD)
|
||||||
COMPILERFLAGS+= -I/usr/X11R6/include
|
COMPILERFLAGS+= -I/usr/X11R6/include
|
||||||
|
|
|
@ -117,7 +117,10 @@ void uninitsystem(void);
|
||||||
void system_getcvars(void);
|
void system_getcvars(void);
|
||||||
|
|
||||||
extern int32_t flushlogwindow;
|
extern int32_t flushlogwindow;
|
||||||
|
void initputs(const char *);
|
||||||
|
#define buildputs initputs
|
||||||
void initprintf(const char *, ...) ATTRIBUTE((format(printf,1,2)));
|
void initprintf(const char *, ...) ATTRIBUTE((format(printf,1,2)));
|
||||||
|
#define buildprintf initprintf
|
||||||
void debugprintf(const char *,...) ATTRIBUTE((format(printf,1,2)));
|
void debugprintf(const char *,...) ATTRIBUTE((format(printf,1,2)));
|
||||||
|
|
||||||
int32_t handleevents(void);
|
int32_t handleevents(void);
|
||||||
|
|
|
@ -1078,7 +1078,7 @@ void E_MapArt_Setup(const char *filename);
|
||||||
void loadtile(int16_t tilenume);
|
void loadtile(int16_t tilenume);
|
||||||
int32_t qloadkvx(int32_t voxindex, const char *filename);
|
int32_t qloadkvx(int32_t voxindex, const char *filename);
|
||||||
intptr_t allocatepermanenttile(int16_t tilenume, int32_t xsiz, int32_t ysiz);
|
intptr_t allocatepermanenttile(int16_t tilenume, int32_t xsiz, int32_t ysiz);
|
||||||
//void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, int32_t ysiz, int32_t tilenume2, int32_t sx2, int32_t sy2);
|
void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, int32_t ysiz, int32_t tilenume2, int32_t sx2, int32_t sy2);
|
||||||
void makepalookup(int32_t palnum, const char *remapbuf, int8_t r, int8_t g, int8_t b, char dastat);
|
void makepalookup(int32_t palnum, const char *remapbuf, int8_t r, int8_t g, int8_t b, char dastat);
|
||||||
//void setvgapalette(void);
|
//void setvgapalette(void);
|
||||||
void setbasepaltable(uint8_t **basepaltable, uint8_t basepalcount);
|
void setbasepaltable(uint8_t **basepaltable, uint8_t basepalcount);
|
||||||
|
|
|
@ -47,6 +47,9 @@ enum
|
||||||
//// EXTERN DECLS
|
//// EXTERN DECLS
|
||||||
extern struct strllist *CommandPaths, *CommandGrps;
|
extern struct strllist *CommandPaths, *CommandGrps;
|
||||||
|
|
||||||
|
extern const char *s_buildRev;
|
||||||
|
extern const char *s_buildTimestamp;
|
||||||
|
extern const char *s_buildInfo;
|
||||||
|
|
||||||
//// FUNCTIONS
|
//// FUNCTIONS
|
||||||
void G_AddGroup(const char *buffer);
|
void G_AddGroup(const char *buffer);
|
||||||
|
@ -77,6 +80,8 @@ int32_t dist(const spritetype *s1, const spritetype *s2);
|
||||||
|
|
||||||
void COMMON_clearbackground(int32_t numcols, int32_t numrows);
|
void COMMON_clearbackground(int32_t numcols, int32_t numrows);
|
||||||
|
|
||||||
|
extern void G_ExtPreInit(void);
|
||||||
|
|
||||||
// timer defs for profiling function chunks the simple way
|
// timer defs for profiling function chunks the simple way
|
||||||
#define EDUKE32_TMRDEF int32_t t[20], ti=0; const char *tmrstr=__func__; fprintf(stderr,"%s\n",tmrstr); t[ti++]=getticks();
|
#define EDUKE32_TMRDEF int32_t t[20], ti=0; const char *tmrstr=__func__; fprintf(stderr,"%s\n",tmrstr); t[ti++]=getticks();
|
||||||
#define EDUKE32_TMRTIC t[ti++]=getticks()
|
#define EDUKE32_TMRTIC t[ti++]=getticks()
|
||||||
|
|
|
@ -158,6 +158,7 @@ extern void SetFirstWall(int32_t sectnum, int32_t wallnum, int32_t alsoynw);
|
||||||
extern int32_t fixspritesectors(void);
|
extern int32_t fixspritesectors(void);
|
||||||
extern void clearkeys(void);
|
extern void clearkeys(void);
|
||||||
|
|
||||||
|
extern const char *ExtGetVer(void);
|
||||||
extern int32_t ExtInit(void);
|
extern int32_t ExtInit(void);
|
||||||
extern int32_t ExtPreInit(int32_t argc,const char **argv);
|
extern int32_t ExtPreInit(int32_t argc,const char **argv);
|
||||||
extern void ExtUnInit(void);
|
extern void ExtUnInit(void);
|
||||||
|
|
29
polymer/eduke32/build/include/mmulti.h
Normal file
29
polymer/eduke32/build/include/mmulti.h
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
// mmulti.h
|
||||||
|
|
||||||
|
#ifndef __mmulti_h__
|
||||||
|
#define __mmulti_h__
|
||||||
|
|
||||||
|
#define MAXMULTIPLAYERS 16
|
||||||
|
|
||||||
|
extern int myconnectindex, numplayers;
|
||||||
|
extern int connecthead, connectpoint2[MAXMULTIPLAYERS];
|
||||||
|
extern unsigned char syncstate;
|
||||||
|
|
||||||
|
int initmultiplayersparms(int argc, char const * const argv[]);
|
||||||
|
int initmultiplayerscycle(void);
|
||||||
|
|
||||||
|
void initmultiplayers(int argc, char const * const argv[], unsigned char damultioption, unsigned char dacomrateoption, unsigned char dapriority);
|
||||||
|
void setpackettimeout(int datimeoutcount, int daresendagaincount);
|
||||||
|
void uninitmultiplayers(void);
|
||||||
|
void sendlogon(void);
|
||||||
|
void sendlogoff(void);
|
||||||
|
int getoutputcirclesize(void);
|
||||||
|
void setsocket(int newsocket);
|
||||||
|
void sendpacket(int other, unsigned char *bufptr, int messleng);
|
||||||
|
int getpacket(int *other, unsigned char *bufptr);
|
||||||
|
void flushpackets(void);
|
||||||
|
void genericmultifunction(int other, unsigned char *bufptr, int messleng, int command);
|
||||||
|
int isvalidipaddress(const char *st);
|
||||||
|
|
||||||
|
#endif // __mmulti_h__
|
||||||
|
|
|
@ -254,6 +254,9 @@ void OSD_Draw(void);
|
||||||
// just like printf
|
// just like printf
|
||||||
void OSD_Printf(const char *fmt, ...) ATTRIBUTE((format(printf,1,2)));
|
void OSD_Printf(const char *fmt, ...) ATTRIBUTE((format(printf,1,2)));
|
||||||
|
|
||||||
|
// just like puts
|
||||||
|
void OSD_Puts(const char *str);
|
||||||
|
|
||||||
// executes buffered commands
|
// executes buffered commands
|
||||||
void OSD_DispatchQueued(void);
|
void OSD_DispatchQueued(void);
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,28 @@
|
||||||
static int32_t crctable[256];
|
static int32_t crctable[256];
|
||||||
static char kensig[64];
|
static char kensig[64];
|
||||||
|
|
||||||
extern const char *ExtGetVer(void);
|
static const char *CallExtGetVer(void);
|
||||||
|
static int32_t CallExtInit(void);
|
||||||
|
static int32_t CallExtPreInit(int32_t argc,const char **argv);
|
||||||
|
static void CallExtUnInit(void);
|
||||||
|
static void CallExtPreCheckKeys(void);
|
||||||
|
static void CallExtAnalyzeSprites(int32_t, int32_t, int32_t, int32_t);
|
||||||
|
static void CallExtCheckKeys(void);
|
||||||
|
static void CallExtPreLoadMap(void);
|
||||||
|
static void CallExtSetupMapFilename(const char *mapname);
|
||||||
|
static void CallExtLoadMap(const char *mapname);
|
||||||
|
static int32_t CallExtPreSaveMap(void);
|
||||||
|
static void CallExtSaveMap(const char *mapname);
|
||||||
|
static const char *CallExtGetSectorCaption(int16_t sectnum);
|
||||||
|
static const char *CallExtGetWallCaption(int16_t wallnum);
|
||||||
|
static const char *CallExtGetSpriteCaption(int16_t spritenum);
|
||||||
|
static void CallExtShowSectorData(int16_t sectnum);
|
||||||
|
static void CallExtShowWallData(int16_t wallnum);
|
||||||
|
static void CallExtShowSpriteData(int16_t spritenum);
|
||||||
|
static void CallExtEditSectorData(int16_t sectnum);
|
||||||
|
static void CallExtEditWallData(int16_t wallnum);
|
||||||
|
static void CallExtEditSpriteData(int16_t spritenum);
|
||||||
|
// static const char *CallExtGetSectorType(int32_t lotag);
|
||||||
|
|
||||||
int8_t m32_clipping=2;
|
int8_t m32_clipping=2;
|
||||||
static int32_t m32_rotateang = 0;
|
static int32_t m32_rotateang = 0;
|
||||||
|
@ -472,9 +493,9 @@ void M32_DrawRoomsAndMasks(void)
|
||||||
|
|
||||||
yax_preparedrawrooms();
|
yax_preparedrawrooms();
|
||||||
drawrooms(pos.x,pos.y,pos.z,ang,horiz,cursectnum);
|
drawrooms(pos.x,pos.y,pos.z,ang,horiz,cursectnum);
|
||||||
yax_drawrooms(ExtAnalyzeSprites, cursectnum, 0, 0);
|
yax_drawrooms(CallExtAnalyzeSprites, cursectnum, 0, 0);
|
||||||
|
|
||||||
ExtAnalyzeSprites(0,0,0,0);
|
CallExtAnalyzeSprites(0,0,0,0);
|
||||||
drawmasks();
|
drawmasks();
|
||||||
M32_ResetFakeRORTiles();
|
M32_ResetFakeRORTiles();
|
||||||
|
|
||||||
|
@ -483,7 +504,7 @@ void M32_DrawRoomsAndMasks(void)
|
||||||
{
|
{
|
||||||
polymer_editorpick();
|
polymer_editorpick();
|
||||||
drawrooms(pos.x,pos.y,pos.z,ang,horiz,cursectnum);
|
drawrooms(pos.x,pos.y,pos.z,ang,horiz,cursectnum);
|
||||||
ExtAnalyzeSprites(0,0,0,0);
|
CallExtAnalyzeSprites(0,0,0,0);
|
||||||
drawmasks();
|
drawmasks();
|
||||||
M32_ResetFakeRORTiles();
|
M32_ResetFakeRORTiles();
|
||||||
}
|
}
|
||||||
|
@ -521,7 +542,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
editstatus = 1;
|
editstatus = 1;
|
||||||
newaspect_enable = 1;
|
newaspect_enable = 1;
|
||||||
|
|
||||||
if ((i = ExtPreInit(argc,argv)) < 0) return -1;
|
if ((i = CallExtPreInit(argc,argv)) < 0) return -1;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
backgroundidle = 1;
|
backgroundidle = 1;
|
||||||
|
@ -564,7 +585,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
Bstrcat(boardfilename, ".map");
|
Bstrcat(boardfilename, ".map");
|
||||||
//Bcanonicalisefilename(boardfilename,0);
|
//Bcanonicalisefilename(boardfilename,0);
|
||||||
|
|
||||||
if ((i = ExtInit()) < 0) return -1;
|
if ((i = CallExtInit()) < 0) return -1;
|
||||||
#ifdef STARTUP_SETUP_WINDOW
|
#ifdef STARTUP_SETUP_WINDOW
|
||||||
if (i || forcesetup || cmdsetup)
|
if (i || forcesetup || cmdsetup)
|
||||||
{
|
{
|
||||||
|
@ -677,7 +698,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
setbrightness(0,0,0);
|
setbrightness(0,0,0);
|
||||||
if (setgamemode(fullscreen, xdim2d, ydim2d, 8) < 0)
|
if (setgamemode(fullscreen, xdim2d, ydim2d, 8) < 0)
|
||||||
{
|
{
|
||||||
ExtUnInit();
|
CallExtUnInit();
|
||||||
uninitengine();
|
uninitengine();
|
||||||
Bprintf("%d * %d not supported in this graphics mode\n",xdim2d,ydim2d);
|
Bprintf("%d * %d not supported in this graphics mode\n",xdim2d,ydim2d);
|
||||||
Bexit(0);
|
Bexit(0);
|
||||||
|
@ -703,7 +724,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
{
|
{
|
||||||
if (setgamemode(fullscreen, xdimgame, ydimgame, bppgame) < 0)
|
if (setgamemode(fullscreen, xdimgame, ydimgame, bppgame) < 0)
|
||||||
{
|
{
|
||||||
ExtUnInit();
|
CallExtUnInit();
|
||||||
uninitengine();
|
uninitengine();
|
||||||
Bprintf("%d * %d not supported in this graphics mode\n",xdim,ydim);
|
Bprintf("%d * %d not supported in this graphics mode\n",xdim,ydim);
|
||||||
Bexit(0);
|
Bexit(0);
|
||||||
|
@ -736,7 +757,7 @@ CANCEL:
|
||||||
synctics = totalclock-lockclock;
|
synctics = totalclock-lockclock;
|
||||||
lockclock += synctics;
|
lockclock += synctics;
|
||||||
|
|
||||||
ExtPreCheckKeys();
|
CallExtPreCheckKeys();
|
||||||
|
|
||||||
M32_DrawRoomsAndMasks();
|
M32_DrawRoomsAndMasks();
|
||||||
|
|
||||||
|
@ -752,7 +773,7 @@ CANCEL:
|
||||||
|
|
||||||
M32_drawdebug();
|
M32_drawdebug();
|
||||||
#endif
|
#endif
|
||||||
ExtCheckKeys();
|
CallExtCheckKeys();
|
||||||
|
|
||||||
|
|
||||||
if (keystatus[1])
|
if (keystatus[1])
|
||||||
|
@ -823,7 +844,7 @@ CANCEL:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ExtUnInit();
|
CallExtUnInit();
|
||||||
// clearfilenames();
|
// clearfilenames();
|
||||||
uninitengine();
|
uninitengine();
|
||||||
|
|
||||||
|
@ -1295,12 +1316,12 @@ void editinput(void)
|
||||||
{
|
{
|
||||||
case SEARCH_CEILING:
|
case SEARCH_CEILING:
|
||||||
case SEARCH_FLOOR:
|
case SEARCH_FLOOR:
|
||||||
ExtShowSectorData(searchsector); break;
|
CallExtShowSectorData(searchsector); break;
|
||||||
case SEARCH_WALL:
|
case SEARCH_WALL:
|
||||||
case SEARCH_MASKWALL:
|
case SEARCH_MASKWALL:
|
||||||
ExtShowWallData(searchwall); break;
|
CallExtShowWallData(searchwall); break;
|
||||||
case SEARCH_SPRITE:
|
case SEARCH_SPRITE:
|
||||||
ExtShowSpriteData(searchwall); break;
|
CallExtShowSpriteData(searchwall); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
keystatus[0x3f] = keystatus[0x40] = 0;
|
keystatus[0x3f] = keystatus[0x40] = 0;
|
||||||
|
@ -1311,12 +1332,12 @@ void editinput(void)
|
||||||
{
|
{
|
||||||
case SEARCH_CEILING:
|
case SEARCH_CEILING:
|
||||||
case SEARCH_FLOOR:
|
case SEARCH_FLOOR:
|
||||||
ExtEditSectorData(searchsector); break;
|
CallExtEditSectorData(searchsector); break;
|
||||||
case SEARCH_WALL:
|
case SEARCH_WALL:
|
||||||
case SEARCH_MASKWALL:
|
case SEARCH_MASKWALL:
|
||||||
ExtEditWallData(searchwall); break;
|
CallExtEditWallData(searchwall); break;
|
||||||
case SEARCH_SPRITE:
|
case SEARCH_SPRITE:
|
||||||
ExtEditSpriteData(searchwall); break;
|
CallExtEditSpriteData(searchwall); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
keystatus[0x41] = keystatus[0x42] = 0;
|
keystatus[0x41] = keystatus[0x42] = 0;
|
||||||
|
@ -3285,7 +3306,7 @@ void overheadeditor(void)
|
||||||
|
|
||||||
draw2dgrid(pos.x,pos.y,pos.z,cursectnum,ang,zoom,grid);
|
draw2dgrid(pos.x,pos.y,pos.z,cursectnum,ang,zoom,grid);
|
||||||
|
|
||||||
ExtPreCheckKeys();
|
CallExtPreCheckKeys();
|
||||||
|
|
||||||
{
|
{
|
||||||
int32_t cx, cy;
|
int32_t cx, cy;
|
||||||
|
@ -3342,7 +3363,7 @@ void overheadeditor(void)
|
||||||
|
|
||||||
YAX_SKIPSECTOR(i);
|
YAX_SKIPSECTOR(i);
|
||||||
|
|
||||||
dabuffer = ExtGetSectorCaption(i);
|
dabuffer = CallExtGetSectorCaption(i);
|
||||||
if (dabuffer[0] == 0)
|
if (dabuffer[0] == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -3383,7 +3404,7 @@ void overheadeditor(void)
|
||||||
//Get average point of wall
|
//Get average point of wall
|
||||||
// if ((dax > x3) && (dax < x4) && (day > y3) && (day < y4))
|
// if ((dax > x3) && (dax < x4) && (day > y3) && (day < y4))
|
||||||
{
|
{
|
||||||
dabuffer = ExtGetWallCaption(i);
|
dabuffer = CallExtGetWallCaption(i);
|
||||||
if (dabuffer[0] == 0)
|
if (dabuffer[0] == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -3414,7 +3435,7 @@ void overheadeditor(void)
|
||||||
if ((!m32_sideview || !alwaysshowgray) && sprite[i].sectnum >= 0)
|
if ((!m32_sideview || !alwaysshowgray) && sprite[i].sectnum >= 0)
|
||||||
YAX_SKIPSECTOR(sprite[i].sectnum);
|
YAX_SKIPSECTOR(sprite[i].sectnum);
|
||||||
|
|
||||||
dabuffer = ExtGetSpriteCaption(i);
|
dabuffer = CallExtGetSpriteCaption(i);
|
||||||
if (dabuffer[0] != 0)
|
if (dabuffer[0] != 0)
|
||||||
{
|
{
|
||||||
int32_t blocking = (sprite[i].cstat&1);
|
int32_t blocking = (sprite[i].cstat&1);
|
||||||
|
@ -3701,7 +3722,7 @@ void overheadeditor(void)
|
||||||
inputchecked = 1;
|
inputchecked = 1;
|
||||||
|
|
||||||
VM_OnEvent(EVENT_PREKEYS2D, -1);
|
VM_OnEvent(EVENT_PREKEYS2D, -1);
|
||||||
ExtCheckKeys(); // TX 20050101, it makes more sense to have this here so keys can be overwritten with new functions in bstub.c
|
CallExtCheckKeys(); // TX 20050101, it makes more sense to have this here so keys can be overwritten with new functions in bstub.c
|
||||||
|
|
||||||
// Flip/mirror sector Ed Coolidge
|
// Flip/mirror sector Ed Coolidge
|
||||||
if (keystatus[0x2d] || keystatus[0x15]) // X or Y (2D)
|
if (keystatus[0x2d] || keystatus[0x15]) // X or Y (2D)
|
||||||
|
@ -3862,7 +3883,7 @@ void overheadeditor(void)
|
||||||
keystatus[88] = 0;
|
keystatus[88] = 0;
|
||||||
//__clearscreen_beforecapture__
|
//__clearscreen_beforecapture__
|
||||||
|
|
||||||
Bsprintf(tempbuf, "Mapster32 %s", ExtGetVer());
|
Bsprintf(tempbuf, "Mapster32 %s", CallExtGetVer());
|
||||||
screencapture("captxxxx.tga", eitherSHIFT, tempbuf);
|
screencapture("captxxxx.tga", eitherSHIFT, tempbuf);
|
||||||
|
|
||||||
showframe(1);
|
showframe(1);
|
||||||
|
@ -4011,16 +4032,16 @@ rotate_hlsect_out:
|
||||||
#if 1
|
#if 1
|
||||||
if (keystatus[0x3f]) //F5
|
if (keystatus[0x3f]) //F5
|
||||||
{
|
{
|
||||||
ExtShowSectorData(0);
|
CallExtShowSectorData(0);
|
||||||
}
|
}
|
||||||
if (keystatus[0x40]) //F6
|
if (keystatus[0x40]) //F6
|
||||||
{
|
{
|
||||||
if (pointhighlight >= 16384)
|
if (pointhighlight >= 16384)
|
||||||
ExtShowSpriteData(pointhighlight-16384);
|
CallExtShowSpriteData(pointhighlight-16384);
|
||||||
else if (linehighlight >= 0)
|
else if (linehighlight >= 0)
|
||||||
ExtShowWallData(linehighlight);
|
CallExtShowWallData(linehighlight);
|
||||||
else
|
else
|
||||||
ExtShowWallData(0);
|
CallExtShowWallData(0);
|
||||||
}
|
}
|
||||||
if (keystatus[0x41]) //F7
|
if (keystatus[0x41]) //F7
|
||||||
{
|
{
|
||||||
|
@ -4031,7 +4052,7 @@ rotate_hlsect_out:
|
||||||
{
|
{
|
||||||
YAX_SKIPSECTOR(i);
|
YAX_SKIPSECTOR(i);
|
||||||
|
|
||||||
ExtEditSectorData(i);
|
CallExtEditSectorData(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4040,9 +4061,9 @@ rotate_hlsect_out:
|
||||||
keystatus[0x42] = 0;
|
keystatus[0x42] = 0;
|
||||||
|
|
||||||
if (pointhighlight >= 16384)
|
if (pointhighlight >= 16384)
|
||||||
ExtEditSpriteData(pointhighlight-16384);
|
CallExtEditSpriteData(pointhighlight-16384);
|
||||||
else if (linehighlight >= 0)
|
else if (linehighlight >= 0)
|
||||||
ExtEditWallData(linehighlight);
|
CallExtEditWallData(linehighlight);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5543,11 +5564,11 @@ end_point_dragging:
|
||||||
if (cursectornum < numsectors)
|
if (cursectornum < numsectors)
|
||||||
{
|
{
|
||||||
if (pointhighlight >= 16384)
|
if (pointhighlight >= 16384)
|
||||||
ExtEditSpriteData(pointhighlight-16384);
|
CallExtEditSpriteData(pointhighlight-16384);
|
||||||
else if ((linehighlight >= 0) && ((bstatus&1) || sectorofwall(linehighlight) == cursectornum))
|
else if ((linehighlight >= 0) && ((bstatus&1) || sectorofwall(linehighlight) == cursectornum))
|
||||||
ExtEditWallData(linehighlight);
|
CallExtEditWallData(linehighlight);
|
||||||
else if (cursectornum >= 0)
|
else if (cursectornum >= 0)
|
||||||
ExtEditSectorData(cursectornum);
|
CallExtEditSectorData(cursectornum);
|
||||||
}
|
}
|
||||||
|
|
||||||
bstatus &= ~6;
|
bstatus &= ~6;
|
||||||
|
@ -7678,7 +7699,7 @@ CANCEL:
|
||||||
reset_default_mapstate();
|
reset_default_mapstate();
|
||||||
|
|
||||||
Bstrcpy(boardfilename,"newboard.map");
|
Bstrcpy(boardfilename,"newboard.map");
|
||||||
ExtLoadMap(boardfilename);
|
CallExtLoadMap(boardfilename);
|
||||||
#if M32_UNDO
|
#if M32_UNDO
|
||||||
map_undoredo_free();
|
map_undoredo_free();
|
||||||
#endif
|
#endif
|
||||||
|
@ -7820,7 +7841,7 @@ CANCEL:
|
||||||
SaveBoardAndPrintMessage(selectedboardfilename);
|
SaveBoardAndPrintMessage(selectedboardfilename);
|
||||||
|
|
||||||
Bstrcpy(boardfilename, selectedboardfilename);
|
Bstrcpy(boardfilename, selectedboardfilename);
|
||||||
ExtSetupMapFilename(boardfilename);
|
CallExtSetupMapFilename(boardfilename);
|
||||||
}
|
}
|
||||||
bad = 0;
|
bad = 0;
|
||||||
}
|
}
|
||||||
|
@ -7880,7 +7901,7 @@ CANCEL:
|
||||||
goto CANCEL;
|
goto CANCEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtUnInit();
|
CallExtUnInit();
|
||||||
// clearfilenames();
|
// clearfilenames();
|
||||||
uninitengine();
|
uninitengine();
|
||||||
|
|
||||||
|
@ -7916,7 +7937,7 @@ CANCEL:
|
||||||
if (setgamemode(fullscreen,xdimgame,ydimgame,bppgame) < 0)
|
if (setgamemode(fullscreen,xdimgame,ydimgame,bppgame) < 0)
|
||||||
{
|
{
|
||||||
initprintf("%d * %d not supported in this graphics mode\n",xdim,ydim);
|
initprintf("%d * %d not supported in this graphics mode\n",xdim,ydim);
|
||||||
ExtUnInit();
|
CallExtUnInit();
|
||||||
// clearfilenames();
|
// clearfilenames();
|
||||||
uninitengine();
|
uninitengine();
|
||||||
Bexit(1);
|
Bexit(1);
|
||||||
|
@ -8087,12 +8108,12 @@ const char *SaveBoard(const char *fn, uint32_t flags)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
saveboard_savedtags = 0;
|
saveboard_savedtags = 0;
|
||||||
saveboard_fixedsprites = ExtPreSaveMap();
|
saveboard_fixedsprites = CallExtPreSaveMap();
|
||||||
|
|
||||||
ret = saveboard(f, &startpos, startang, startsectnum);
|
ret = saveboard(f, &startpos, startang, startsectnum);
|
||||||
if ((flags&M32_SB_NOEXT)==0)
|
if ((flags&M32_SB_NOEXT)==0)
|
||||||
{
|
{
|
||||||
ExtSaveMap(f);
|
CallExtSaveMap(f);
|
||||||
saveboard_savedtags = !taglab_save(f);
|
saveboard_savedtags = !taglab_save(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8115,7 +8136,7 @@ int32_t LoadBoard(const char *filename, uint32_t flags)
|
||||||
editorzrange[0] = INT32_MIN;
|
editorzrange[0] = INT32_MIN;
|
||||||
editorzrange[1] = INT32_MAX;
|
editorzrange[1] = INT32_MAX;
|
||||||
|
|
||||||
ExtPreLoadMap();
|
CallExtPreLoadMap();
|
||||||
i = loadboard(filename, (flags&4)|loadingflags, &pos, &ang, &cursectnum);
|
i = loadboard(filename, (flags&4)|loadingflags, &pos, &ang, &cursectnum);
|
||||||
if (i == -2)
|
if (i == -2)
|
||||||
i = loadoldboard(filename,loadingflags, &pos, &ang, &cursectnum);
|
i = loadoldboard(filename,loadingflags, &pos, &ang, &cursectnum);
|
||||||
|
@ -8140,7 +8161,7 @@ int32_t LoadBoard(const char *filename, uint32_t flags)
|
||||||
loadmhk(0);
|
loadmhk(0);
|
||||||
|
|
||||||
tagstat = taglab_load(boardfilename, loadingflags);
|
tagstat = taglab_load(boardfilename, loadingflags);
|
||||||
ExtLoadMap(boardfilename);
|
CallExtLoadMap(boardfilename);
|
||||||
|
|
||||||
{
|
{
|
||||||
char msgtail[64];
|
char msgtail[64];
|
||||||
|
@ -8773,7 +8794,7 @@ static void clearministatbar16(void)
|
||||||
|
|
||||||
if (xdim >= 800)
|
if (xdim >= 800)
|
||||||
{
|
{
|
||||||
Bsprintf(tempbuf, "Mapster32 %s", ExtGetVer());
|
Bsprintf(tempbuf, "Mapster32 %s", CallExtGetVer());
|
||||||
printext16(xdim2d-(Bstrlen(tempbuf)<<3)-3, ydim2d-STATUS2DSIZ2+10, editorcolors[4],-1, tempbuf, 0);
|
printext16(xdim2d-(Bstrlen(tempbuf)<<3)-3, ydim2d-STATUS2DSIZ2+10, editorcolors[4],-1, tempbuf, 0);
|
||||||
printext16(xdim2d-(Bstrlen(tempbuf)<<3)-2, ydim2d-STATUS2DSIZ2+9, editorcolors[12],-1, tempbuf, 0);
|
printext16(xdim2d-(Bstrlen(tempbuf)<<3)-2, ydim2d-STATUS2DSIZ2+9, editorcolors[12],-1, tempbuf, 0);
|
||||||
}
|
}
|
||||||
|
@ -9045,7 +9066,7 @@ int32_t _getnumber256(const char *namestart, int32_t num, int32_t maxnumber, cha
|
||||||
inputchecked = 1;
|
inputchecked = 1;
|
||||||
|
|
||||||
if ((flags&8)==0)
|
if ((flags&8)==0)
|
||||||
ExtCheckKeys();
|
CallExtCheckKeys();
|
||||||
|
|
||||||
getnumber_clearline();
|
getnumber_clearline();
|
||||||
|
|
||||||
|
@ -10117,7 +10138,7 @@ void showsectordata(int16_t sectnum, int16_t small)
|
||||||
|
|
||||||
if (small)
|
if (small)
|
||||||
{
|
{
|
||||||
_printmessage16("^10Sector %d %s ^O(F7 to edit)", sectnum, ExtGetSectorCaption(sectnum));
|
_printmessage16("^10Sector %d %s ^O(F7 to edit)", sectnum, CallExtGetSectorCaption(sectnum));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10187,7 +10208,7 @@ void showwalldata(int16_t wallnum, int16_t small)
|
||||||
if (small)
|
if (small)
|
||||||
{
|
{
|
||||||
_printmessage16("^10Wall %d %s ^O(F8 to edit)", wallnum,
|
_printmessage16("^10Wall %d %s ^O(F8 to edit)", wallnum,
|
||||||
ExtGetWallCaption(wallnum));
|
CallExtGetWallCaption(wallnum));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10236,7 +10257,7 @@ void showspritedata(int16_t spritenum, int16_t small)
|
||||||
|
|
||||||
if (small)
|
if (small)
|
||||||
{
|
{
|
||||||
_printmessage16("^10Sprite %d %s ^O(F8 to edit)",spritenum, ExtGetSpriteCaption(spritenum));
|
_printmessage16("^10Sprite %d %s ^O(F8 to edit)",spritenum, CallExtGetSpriteCaption(spritenum));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10688,7 +10709,7 @@ void test_map(int32_t mode)
|
||||||
}
|
}
|
||||||
Bstrcat(fullparam, param);
|
Bstrcat(fullparam, param);
|
||||||
|
|
||||||
ExtPreSaveMap();
|
CallExtPreSaveMap();
|
||||||
if (mode)
|
if (mode)
|
||||||
saveboard(PLAYTEST_MAPNAME, &startpos, startang, startsectnum);
|
saveboard(PLAYTEST_MAPNAME, &startpos, startang, startsectnum);
|
||||||
else
|
else
|
||||||
|
@ -10731,3 +10752,100 @@ void test_map(int32_t mode)
|
||||||
else
|
else
|
||||||
printmessage16("Position must be in valid player space to test map!");
|
printmessage16("Position must be in valid player space to test map!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// These will be more useful in the future...
|
||||||
|
static const char *CallExtGetVer(void)
|
||||||
|
{
|
||||||
|
return ExtGetVer();
|
||||||
|
}
|
||||||
|
static int32_t CallExtInit(void)
|
||||||
|
{
|
||||||
|
return ExtInit();
|
||||||
|
}
|
||||||
|
static int32_t CallExtPreInit(int32_t argc,const char **argv)
|
||||||
|
{
|
||||||
|
return ExtPreInit(argc, argv);
|
||||||
|
}
|
||||||
|
static void CallExtUnInit(void)
|
||||||
|
{
|
||||||
|
ExtUnInit();
|
||||||
|
}
|
||||||
|
static void CallExtPreCheckKeys(void)
|
||||||
|
{
|
||||||
|
ExtPreCheckKeys();
|
||||||
|
}
|
||||||
|
static void CallExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr)
|
||||||
|
{
|
||||||
|
ExtAnalyzeSprites(ourx, oury, oura, smoothr);
|
||||||
|
VM_OnEvent(EVENT_ANALYZESPRITES, -1);
|
||||||
|
}
|
||||||
|
static void CallExtCheckKeys(void)
|
||||||
|
{
|
||||||
|
ExtCheckKeys();
|
||||||
|
}
|
||||||
|
static void CallExtPreLoadMap(void)
|
||||||
|
{
|
||||||
|
VM_OnEvent(EVENT_PRELOADMAP, -1);
|
||||||
|
ExtPreLoadMap();
|
||||||
|
}
|
||||||
|
static void CallExtSetupMapFilename(const char *mapname)
|
||||||
|
{
|
||||||
|
ExtSetupMapFilename(mapname);
|
||||||
|
}
|
||||||
|
static void CallExtLoadMap(const char *mapname)
|
||||||
|
{
|
||||||
|
ExtLoadMap(mapname);
|
||||||
|
VM_OnEvent(EVENT_LOADMAP, -1);
|
||||||
|
}
|
||||||
|
static int32_t CallExtPreSaveMap(void)
|
||||||
|
{
|
||||||
|
VM_OnEvent(EVENT_PRESAVEMAP, -1);
|
||||||
|
return ExtPreSaveMap();
|
||||||
|
}
|
||||||
|
static void CallExtSaveMap(const char *mapname)
|
||||||
|
{
|
||||||
|
ExtSaveMap(mapname);
|
||||||
|
VM_OnEvent(EVENT_SAVEMAP, -1);
|
||||||
|
}
|
||||||
|
static const char *CallExtGetSectorCaption(int16_t sectnum)
|
||||||
|
{
|
||||||
|
return ExtGetSectorCaption(sectnum);
|
||||||
|
}
|
||||||
|
static const char *CallExtGetWallCaption(int16_t wallnum)
|
||||||
|
{
|
||||||
|
return ExtGetWallCaption(wallnum);
|
||||||
|
}
|
||||||
|
static const char *CallExtGetSpriteCaption(int16_t spritenum)
|
||||||
|
{
|
||||||
|
return ExtGetSpriteCaption(spritenum);
|
||||||
|
}
|
||||||
|
static void CallExtShowSectorData(int16_t sectnum)
|
||||||
|
{
|
||||||
|
ExtShowSectorData(sectnum);
|
||||||
|
}
|
||||||
|
static void CallExtShowWallData(int16_t wallnum)
|
||||||
|
{
|
||||||
|
ExtShowWallData(wallnum);
|
||||||
|
}
|
||||||
|
static void CallExtShowSpriteData(int16_t spritenum)
|
||||||
|
{
|
||||||
|
ExtShowSpriteData(spritenum);
|
||||||
|
}
|
||||||
|
static void CallExtEditSectorData(int16_t sectnum)
|
||||||
|
{
|
||||||
|
ExtEditSectorData(sectnum);
|
||||||
|
}
|
||||||
|
static void CallExtEditWallData(int16_t wallnum)
|
||||||
|
{
|
||||||
|
ExtEditWallData(wallnum);
|
||||||
|
}
|
||||||
|
static void CallExtEditSpriteData(int16_t spritenum)
|
||||||
|
{
|
||||||
|
ExtEditSpriteData(spritenum);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
static const char *CallExtGetSectorType(int32_t lotag)
|
||||||
|
{
|
||||||
|
return ExtGetSectorType(lotag);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -136,7 +136,7 @@ int32_t editorgridextent = 131072;
|
||||||
#define MAXYSIZ 256
|
#define MAXYSIZ 256
|
||||||
#define MAXZSIZ 255
|
#define MAXZSIZ 255
|
||||||
#define MAXVOXMIPS 5
|
#define MAXVOXMIPS 5
|
||||||
static intptr_t voxoff[MAXVOXELS][MAXVOXMIPS];
|
intptr_t voxoff[MAXVOXELS][MAXVOXMIPS]; // used in KenBuild
|
||||||
static char voxlock[MAXVOXELS][MAXVOXMIPS];
|
static char voxlock[MAXVOXELS][MAXVOXMIPS];
|
||||||
int32_t voxscale[MAXVOXELS];
|
int32_t voxscale[MAXVOXELS];
|
||||||
|
|
||||||
|
@ -11736,7 +11736,6 @@ intptr_t allocatepermanenttile(int16_t tilenume, int32_t xsiz, int32_t ysiz)
|
||||||
return waloff[tilenume];
|
return waloff[tilenume];
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
//
|
//
|
||||||
// copytilepiece
|
// copytilepiece
|
||||||
//
|
//
|
||||||
|
@ -11776,7 +11775,6 @@ void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// qloadkvx
|
// qloadkvx
|
||||||
|
|
101
polymer/eduke32/build/src/mmulti_null.c
Normal file
101
polymer/eduke32/build/src/mmulti_null.c
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
// "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman
|
||||||
|
// Ken Silverman's official web site: "http://www.advsys.net/ken"
|
||||||
|
// See the included license file "BUILDLIC.TXT" for license info.
|
||||||
|
//
|
||||||
|
// This file has been modified from Ken Silverman's original release
|
||||||
|
// by Jonathon Fowler (jf@jonof.id.au)
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "mmulti.h"
|
||||||
|
|
||||||
|
|
||||||
|
int myconnectindex, numplayers;
|
||||||
|
int connecthead, connectpoint2[MAXMULTIPLAYERS] = { -1 };
|
||||||
|
unsigned char syncstate = 0;
|
||||||
|
|
||||||
|
int isvalidipaddress (const char *st)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(st);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int initmultiplayersparms(int argc, char const * const argv[])
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(argc);
|
||||||
|
UNREFERENCED_PARAMETER(argv);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int initmultiplayerscycle(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void initmultiplayers(int argc, char const * const argv[], unsigned char damultioption, unsigned char dacomrateoption, unsigned char dapriority)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(argc);
|
||||||
|
UNREFERENCED_PARAMETER(argv);
|
||||||
|
UNREFERENCED_PARAMETER(damultioption);
|
||||||
|
UNREFERENCED_PARAMETER(dacomrateoption);
|
||||||
|
UNREFERENCED_PARAMETER(dapriority);
|
||||||
|
|
||||||
|
numplayers = 1; myconnectindex = 0;
|
||||||
|
connecthead = 0; connectpoint2[0] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setpackettimeout(int datimeoutcount, int daresendagaincount)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(datimeoutcount);
|
||||||
|
UNREFERENCED_PARAMETER(daresendagaincount);
|
||||||
|
}
|
||||||
|
|
||||||
|
void uninitmultiplayers(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendlogon(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendlogoff(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int getoutputcirclesize(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setsocket(int newsocket)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(newsocket);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendpacket(int other, unsigned char *bufptr, int messleng)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(other);
|
||||||
|
UNREFERENCED_PARAMETER(bufptr);
|
||||||
|
UNREFERENCED_PARAMETER(messleng);
|
||||||
|
}
|
||||||
|
|
||||||
|
int getpacket (int *other, unsigned char *bufptr)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(other);
|
||||||
|
UNREFERENCED_PARAMETER(bufptr);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void flushpackets(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void genericmultifunction(int other, unsigned char *bufptr, int messleng, int command)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(other);
|
||||||
|
UNREFERENCED_PARAMETER(bufptr);
|
||||||
|
UNREFERENCED_PARAMETER(messleng);
|
||||||
|
UNREFERENCED_PARAMETER(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1531,7 +1531,25 @@ void OSD_Draw(void)
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// OSD_Printf() -- Print a string to the onscreen display
|
// OSD_Printf() -- Print a formatted string to the onscreen display
|
||||||
|
// and write it to the log file
|
||||||
|
//
|
||||||
|
|
||||||
|
void OSD_Printf(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
static char tmpstr[8192];
|
||||||
|
va_list va;
|
||||||
|
|
||||||
|
va_start(va, fmt);
|
||||||
|
Bvsnprintf(tmpstr, sizeof(tmpstr), fmt, va);
|
||||||
|
va_end(va);
|
||||||
|
|
||||||
|
OSD_Puts(tmpstr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// OSD_Puts() -- Print a string to the onscreen display
|
||||||
// and write it to the log file
|
// and write it to the log file
|
||||||
//
|
//
|
||||||
|
|
||||||
|
@ -1543,19 +1561,16 @@ static inline void OSD_LineFeed(void)
|
||||||
Bmemset(osd->text.fmt, osd->draw.textpal, osd->draw.cols);
|
Bmemset(osd->text.fmt, osd->draw.textpal, osd->draw.cols);
|
||||||
if (osd->text.lines < osd->text.maxlines) osd->text.lines++;
|
if (osd->text.lines < osd->text.maxlines) osd->text.lines++;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_ERRORS 4096
|
#define MAX_ERRORS 4096
|
||||||
void OSD_Printf(const char *fmt, ...)
|
|
||||||
|
void OSD_Puts(const char *tmpstr)
|
||||||
{
|
{
|
||||||
static char tmpstr[8192];
|
const char *chp;
|
||||||
char *chp, p=osd->draw.textpal, s=osd->draw.textshade;
|
char p=osd->draw.textpal, s=osd->draw.textshade;
|
||||||
va_list va;
|
|
||||||
|
|
||||||
mutex_lock(&osd->mutex);
|
mutex_lock(&osd->mutex);
|
||||||
|
|
||||||
va_start(va, fmt);
|
|
||||||
Bvsnprintf(tmpstr, 8192, fmt, va);
|
|
||||||
va_end(va);
|
|
||||||
|
|
||||||
if (tmpstr[0]==0)
|
if (tmpstr[0]==0)
|
||||||
{
|
{
|
||||||
mutex_unlock(&osd->mutex);
|
mutex_unlock(&osd->mutex);
|
||||||
|
@ -1565,7 +1580,7 @@ void OSD_Printf(const char *fmt, ...)
|
||||||
if (tmpstr[0]=='^' && tmpstr[1]=='1' && tmpstr[2]=='0' && ++osd->log.errors > MAX_ERRORS)
|
if (tmpstr[0]=='^' && tmpstr[1]=='1' && tmpstr[2]=='0' && ++osd->log.errors > MAX_ERRORS)
|
||||||
{
|
{
|
||||||
if (osd->log.errors == MAX_ERRORS + 1)
|
if (osd->log.errors == MAX_ERRORS + 1)
|
||||||
Bstrcpy(tmpstr, OSD_ERROR "\nToo many errors. Logging errors stopped.\n");
|
tmpstr = "\nToo many errors. Logging errors stopped.\n";
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
osd->log.errors = MAX_ERRORS + 2;
|
osd->log.errors = MAX_ERRORS + 2;
|
||||||
|
@ -1578,15 +1593,15 @@ void OSD_Printf(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
if (osdlog && (!osd->log.cutoff || osd->log.lines < osd->log.cutoff))
|
if (osdlog && (!osd->log.cutoff || osd->log.lines < osd->log.cutoff))
|
||||||
{
|
{
|
||||||
chp = Xstrdup(tmpstr);
|
char *chp2 = Xstrdup(tmpstr);
|
||||||
Bfputs(OSD_StripColors(chp, tmpstr), osdlog);
|
Bfputs(OSD_StripColors(chp2, tmpstr), osdlog);
|
||||||
Bprintf("%s", chp);
|
Bprintf("%s", chp2);
|
||||||
Bfree(chp);
|
Bfree(chp2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (osd->log.lines == osd->log.cutoff)
|
else if (osd->log.lines == osd->log.cutoff)
|
||||||
{
|
{
|
||||||
Bfputs("\nMaximal log size reached. Logging stopped.\nSet the \"osd->log.cutoff\" console variable to a higher value if you need a longer log.\n", osdlog);
|
Bfputs("\nMaximal log size reached. Logging stopped.\nSet the \"osdlogcutoff\" console variable to a higher value if you need a longer log.\n", osdlog);
|
||||||
osd->log.lines = osd->log.cutoff + 1;
|
osd->log.lines = osd->log.cutoff + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -562,22 +562,32 @@ void system_getcvars(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// initprintf() -- prints a string to the intitialization window
|
// initprintf() -- prints a formatted string to the intitialization window
|
||||||
//
|
//
|
||||||
void initprintf(const char *f, ...)
|
void initprintf(const char *f, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
static char dabuf[2048];
|
|
||||||
|
|
||||||
va_start(va, f);
|
va_start(va, f);
|
||||||
Bvsnprintf(buf, sizeof(buf), f, va);
|
Bvsnprintf(buf, sizeof(buf), f, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
|
||||||
|
initputs(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// initputs() -- prints a string to the intitialization window
|
||||||
|
//
|
||||||
|
void initputs(const char *buf)
|
||||||
|
{
|
||||||
|
static char dabuf[2048];
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
__android_log_print(ANDROID_LOG_INFO,"DUKE", "%s",buf);
|
__android_log_print(ANDROID_LOG_INFO,"DUKE", "%s",buf);
|
||||||
#endif
|
#endif
|
||||||
OSD_Printf("%s", buf);
|
OSD_Puts(buf);
|
||||||
// Bprintf("%s", buf);
|
// Bprintf("%s", buf);
|
||||||
|
|
||||||
mutex_lock(&m_initprintf);
|
mutex_lock(&m_initprintf);
|
||||||
|
@ -603,7 +613,7 @@ void initprintf(const char *f, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// debugprintf() -- prints a debug string to stderr
|
// debugprintf() -- prints a formatted debug string to stderr
|
||||||
//
|
//
|
||||||
void debugprintf(const char *f, ...)
|
void debugprintf(const char *f, ...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -609,20 +609,29 @@ void system_getcvars(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// initprintf() -- prints a string to the intitialization window
|
// initprintf() -- prints a formatted string to the intitialization window
|
||||||
//
|
//
|
||||||
void initprintf(const char *f, ...)
|
void initprintf(const char *f, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
static char dabuf[2048];
|
|
||||||
|
|
||||||
va_start(va, f);
|
va_start(va, f);
|
||||||
Bvsnprintf(buf, sizeof(buf), f, va);
|
Bvsnprintf(buf, sizeof(buf), f, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
|
||||||
OSD_Printf("%s",buf);
|
initputs(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// initputs() -- prints a string to the intitialization window
|
||||||
|
//
|
||||||
|
void initputs(const char *buf)
|
||||||
|
{
|
||||||
|
OSD_Puts(buf);
|
||||||
|
|
||||||
mutex_lock(&m_initprintf);
|
mutex_lock(&m_initprintf);
|
||||||
if ((Bstrlen(dabuf) + Bstrlen(buf) + 2) > sizeof(dabuf))
|
if ((Bstrlen(dabuf) + Bstrlen(buf) + 2) > sizeof(dabuf))
|
||||||
|
@ -644,7 +653,7 @@ void initprintf(const char *f, ...)
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// debugprintf() -- sends a debug string to the debugger
|
// debugprintf() -- sends a formatted debug string to the debugger
|
||||||
//
|
//
|
||||||
void debugprintf(const char *f, ...)
|
void debugprintf(const char *f, ...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -729,16 +729,12 @@ void ExtLoadMap(const char *mapname)
|
||||||
#if M32_UNDO
|
#if M32_UNDO
|
||||||
map_undoredo_free();
|
map_undoredo_free();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VM_OnEvent(EVENT_LOADMAP, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtSaveMap(const char *mapname)
|
void ExtSaveMap(const char *mapname)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(mapname);
|
UNREFERENCED_PARAMETER(mapname);
|
||||||
saveboard("backup.map", &pos, ang, cursectnum);
|
saveboard("backup.map", &pos, ang, cursectnum);
|
||||||
|
|
||||||
VM_OnEvent(EVENT_SAVEMAP, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -8456,8 +8452,6 @@ int32_t ExtPreSaveMap(void)
|
||||||
{
|
{
|
||||||
int32_t numfixedsprites;
|
int32_t numfixedsprites;
|
||||||
|
|
||||||
VM_OnEvent(EVENT_PRESAVEMAP, -1);
|
|
||||||
|
|
||||||
numfixedsprites = fixspritesectors(); //Do this before saving!
|
numfixedsprites = fixspritesectors(); //Do this before saving!
|
||||||
updatesectorz(startpos.x,startpos.y,startpos.z,&startsectnum);
|
updatesectorz(startpos.x,startpos.y,startpos.z,&startsectnum);
|
||||||
if (startsectnum < 0)
|
if (startsectnum < 0)
|
||||||
|
@ -10345,7 +10339,6 @@ static int32_t loadconsounds(const char *fn)
|
||||||
|
|
||||||
void ExtPreLoadMap(void)
|
void ExtPreLoadMap(void)
|
||||||
{
|
{
|
||||||
VM_OnEvent(EVENT_PRELOADMAP, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ^^^
|
/// ^^^
|
||||||
|
@ -11125,8 +11118,6 @@ void ExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VM_OnEvent(EVENT_ANALYZESPRITES, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MESSAGEX 3 // (xdimgame>>1)
|
#define MESSAGEX 3 // (xdimgame>>1)
|
||||||
|
|
|
@ -69,8 +69,6 @@ extern void G_SetupGlobalPsky(void);
|
||||||
|
|
||||||
//////////
|
//////////
|
||||||
|
|
||||||
extern void G_ExtPreInit(void);
|
|
||||||
|
|
||||||
extern void G_AddSearchPaths(void);
|
extern void G_AddSearchPaths(void);
|
||||||
extern void G_CleanupSearchPaths(void);
|
extern void G_CleanupSearchPaths(void);
|
||||||
|
|
||||||
|
|
|
@ -129,10 +129,7 @@ G_EXTERN int32_t g_screenCapture;
|
||||||
G_EXTERN int32_t g_noEnemies;
|
G_EXTERN int32_t g_noEnemies;
|
||||||
|
|
||||||
#ifndef __global_c__
|
#ifndef __global_c__
|
||||||
G_EXTERN const char *s_buildRev;
|
|
||||||
G_EXTERN const char *s_buildDate;
|
G_EXTERN const char *s_buildDate;
|
||||||
G_EXTERN const char *s_buildTimestamp;
|
|
||||||
G_EXTERN const char *s_buildInfo;
|
|
||||||
G_EXTERN int32_t g_spriteGravity;
|
G_EXTERN int32_t g_spriteGravity;
|
||||||
G_EXTERN int16_t g_spriteDeleteQueueSize;
|
G_EXTERN int16_t g_spriteDeleteQueueSize;
|
||||||
G_EXTERN char EpisodeNames[MAXVOLUMES][33];
|
G_EXTERN char EpisodeNames[MAXVOLUMES][33];
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include "startwin.editor.h"
|
#include "startwin.editor.h"
|
||||||
|
|
||||||
RSRC_ICON ICON "rsrc/build_icon.ico"
|
RSRC_ICON ICON "build_icon.ico"
|
||||||
RSRC_BMP BITMAP "rsrc/build.bmp"
|
RSRC_BMP BITMAP "build.bmp"
|
||||||
|
|
||||||
WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200
|
WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200
|
||||||
STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU
|
STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU
|
||||||
|
@ -70,7 +70,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
|
|
||||||
#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
|
#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
|
||||||
1 24 "rsrc/64/manifest.build.xml"
|
1 24 "64/manifest.build.xml"
|
||||||
#else
|
#else
|
||||||
1 24 "rsrc/32/manifest.build.xml"
|
1 24 "32/manifest.build.xml"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include "startwin.game.h"
|
#include "startwin.game.h"
|
||||||
|
|
||||||
RSRC_ICON ICON "rsrc/game_icon.ico"
|
RSRC_ICON ICON "game_icon.ico"
|
||||||
RSRC_BMP BITMAP "rsrc/game.bmp"
|
RSRC_BMP BITMAP "game.bmp"
|
||||||
|
|
||||||
WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200
|
WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200
|
||||||
STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU
|
STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU
|
||||||
|
@ -78,7 +78,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
|
|
||||||
#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
|
#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
|
||||||
1 24 "rsrc/64/manifest.game.xml"
|
1 24 "64/manifest.game.xml"
|
||||||
#else
|
#else
|
||||||
1 24 "rsrc/32/manifest.game.xml"
|
1 24 "32/manifest.game.xml"
|
||||||
#endif
|
#endif
|
||||||
|
|
39
polymer/eduke32/source/testgame/rsrc/32/manifest.build.xml
Normal file
39
polymer/eduke32/source/testgame/rsrc/32/manifest.build.xml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<asmv3:application>
|
||||||
|
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||||
|
<dpiAware>true</dpiAware>
|
||||||
|
</asmv3:windowsSettings>
|
||||||
|
</asmv3:application>
|
||||||
|
<assemblyIdentity
|
||||||
|
version="1.0.0.0"
|
||||||
|
processorArchitecture="X86"
|
||||||
|
name="EDuke32.KenBuild.Editor"
|
||||||
|
type="win32"
|
||||||
|
/>
|
||||||
|
<description>BUILD by Ken Silverman</description>
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="X86"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</assembly>
|
39
polymer/eduke32/source/testgame/rsrc/32/manifest.game.xml
Normal file
39
polymer/eduke32/source/testgame/rsrc/32/manifest.game.xml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<asmv3:application>
|
||||||
|
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||||
|
<dpiAware>true</dpiAware>
|
||||||
|
</asmv3:windowsSettings>
|
||||||
|
</asmv3:application>
|
||||||
|
<assemblyIdentity
|
||||||
|
version="1.0.0.0"
|
||||||
|
processorArchitecture="X86"
|
||||||
|
name="EDuke32.KenBuild.Game"
|
||||||
|
type="win32"
|
||||||
|
/>
|
||||||
|
<description>KenBuild</description>
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="X86"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</assembly>
|
39
polymer/eduke32/source/testgame/rsrc/64/manifest.build.xml
Normal file
39
polymer/eduke32/source/testgame/rsrc/64/manifest.build.xml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<asmv3:application>
|
||||||
|
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||||
|
<dpiAware>true</dpiAware>
|
||||||
|
</asmv3:windowsSettings>
|
||||||
|
</asmv3:application>
|
||||||
|
<assemblyIdentity
|
||||||
|
version="1.0.0.0"
|
||||||
|
processorArchitecture="amd64"
|
||||||
|
name="EDuke32.KenBuild.Editor"
|
||||||
|
type="win32"
|
||||||
|
/>
|
||||||
|
<description>BUILD by Ken Silverman</description>
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="amd64"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</assembly>
|
39
polymer/eduke32/source/testgame/rsrc/64/manifest.game.xml
Normal file
39
polymer/eduke32/source/testgame/rsrc/64/manifest.game.xml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<asmv3:application>
|
||||||
|
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||||
|
<dpiAware>true</dpiAware>
|
||||||
|
</asmv3:windowsSettings>
|
||||||
|
</asmv3:application>
|
||||||
|
<assemblyIdentity
|
||||||
|
version="1.0.0.0"
|
||||||
|
processorArchitecture="amd64"
|
||||||
|
name="EDuke32.KenBuild.Game"
|
||||||
|
type="win32"
|
||||||
|
/>
|
||||||
|
<description>KenBuild</description>
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="amd64"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</assembly>
|
BIN
polymer/eduke32/source/testgame/rsrc/build.bmp
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/build.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
polymer/eduke32/source/testgame/rsrc/build.xcf
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/build.xcf
Normal file
Binary file not shown.
2350
polymer/eduke32/source/testgame/rsrc/build_icon.c
Normal file
2350
polymer/eduke32/source/testgame/rsrc/build_icon.c
Normal file
File diff suppressed because it is too large
Load diff
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.icns
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.icns
Normal file
Binary file not shown.
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.ico
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 69 KiB |
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.png
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.xcf
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/build_icon.xcf
Normal file
Binary file not shown.
38
polymer/eduke32/source/testgame/rsrc/buildres.rc
Normal file
38
polymer/eduke32/source/testgame/rsrc/buildres.rc
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
#include <windows.h>
|
||||||
|
#include <commctrl.h>
|
||||||
|
#include "startwin.editor.h"
|
||||||
|
|
||||||
|
RSRC_ICON ICON "build_icon.ico"
|
||||||
|
RSRC_BMP BITMAP "build.bmp"
|
||||||
|
|
||||||
|
WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200
|
||||||
|
STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU
|
||||||
|
CAPTION "Startup"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "", WIN_STARTWIN_BITMAP, "STATIC", SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 32, 32
|
||||||
|
CONTROL "", WIN_STARTWIN_TABCTL, WC_TABCONTROL, WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 5, 250, 170
|
||||||
|
CONTROL "&Start", WIN_STARTWIN_START, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 154, 180, 48, 14
|
||||||
|
CONTROL "&Cancel", WIN_STARTWIN_CANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 207, 180, 48, 14
|
||||||
|
|
||||||
|
CONTROL "", WIN_STARTWIN_MESSAGES, "EDIT", ES_MULTILINE | ES_READONLY | WS_CHILD | WS_VSCROLL, 0, 0, 32, 32
|
||||||
|
END
|
||||||
|
|
||||||
|
WIN_STARTWINPAGE_CONFIG DIALOGEX DISCARDABLE 20, 40, 279, 168
|
||||||
|
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
|
CAPTION "Dialog"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "&2D Video mode:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 8, 50, 8
|
||||||
|
CONTROL "", IDC2DVMODE, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 60, 6, 80, 56
|
||||||
|
CONTROL "&Fullscreen", IDCFULLSCREEN, "BUTTON", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 148, 8, 49, 10
|
||||||
|
CONTROL "&3D Video mode:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 24, 50, 8
|
||||||
|
CONTROL "", IDC3DVMODE, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 60, 22, 80, 56
|
||||||
|
CONTROL "&Always show configuration on start", IDCALWAYSSHOW, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 118, 116, 140, 8
|
||||||
|
END
|
||||||
|
|
||||||
|
#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
|
||||||
|
1 24 "64/manifest.build.xml"
|
||||||
|
#else
|
||||||
|
1 24 "32/manifest.build.xml"
|
||||||
|
#endif
|
2267
polymer/eduke32/source/testgame/rsrc/editor_banner.c
Normal file
2267
polymer/eduke32/source/testgame/rsrc/editor_banner.c
Normal file
File diff suppressed because it is too large
Load diff
BIN
polymer/eduke32/source/testgame/rsrc/game.bmp
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/game.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
polymer/eduke32/source/testgame/rsrc/game.xcf
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/game.xcf
Normal file
Binary file not shown.
167
polymer/eduke32/source/testgame/rsrc/game32_icon.c
Normal file
167
polymer/eduke32/source/testgame/rsrc/game32_icon.c
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
/* GIMP RGBA C-Source image dump (game_icon.c) */
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "sdlappicon.h"
|
||||||
|
|
||||||
|
static uint8_t sdlappicon_pixels[] = {
|
||||||
|
"z_A\377\\J6\377\\J6\377\206t`\377\214zf\377\214zf\377\214zf\377\214zf\377"
|
||||||
|
"\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214"
|
||||||
|
"zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf"
|
||||||
|
"\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\206t`\377\\J6\377"
|
||||||
|
"\\J6\377z_A\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377fM3\377fM3\377t"
|
||||||
|
"tt\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377ttt\377fM3\377fM3\377\\J6\377\\J6\377fM3\377"
|
||||||
|
"fM3\377ttt\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377ttt\377fM3\377fM3\377\\J6\377\\J6\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\\\\\\\377@@@\377\200\200\200\377ddd\377hhh\377"
|
||||||
|
"hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh"
|
||||||
|
"h\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377ddd\377|||\377@@@\377\\\\"
|
||||||
|
"\\\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377"
|
||||||
|
"lll\377hhh\377\200\200\200\377hhh\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377lll\377jjj\377rrr\377lll\377lll\377vvv\377bbb\377lll\377\200"
|
||||||
|
"\200\200\377lll\377hhh\377ttt\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377ppp\377xxx\377hhh\377lll\377\40\40\40\377\40\40\40\377\\J6\377\\"
|
||||||
|
"J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377h"
|
||||||
|
"hh\377\200\200\200\377\200\200\200\377\200\200\200\377lll\377jjj\377rrr\377"
|
||||||
|
"jjj\377jjj\377\200\200\200\377lll\377lll\377\200\200\200\377lll\377|||\377"
|
||||||
|
"lll\377\200\200\200\377\200\200\200\377\200\200\200\377ppp\377xxx\377\200"
|
||||||
|
"\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377"
|
||||||
|
"\40\40\40\377ttt\377\200\200\200\377\200\200\200\377hhh\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377vvv\377lll\377|||\377ppp\377ppp\377vvv\377"
|
||||||
|
"lll\377vvv\377lll\377vvv\377lll\377~~~\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377"
|
||||||
|
"\200\200\200\377ddd\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377"
|
||||||
|
"hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh"
|
||||||
|
"h\377ddd\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6"
|
||||||
|
"\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200"
|
||||||
|
"\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\"
|
||||||
|
"J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200"
|
||||||
|
"\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\"
|
||||||
|
"J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200"
|
||||||
|
"\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\"
|
||||||
|
"J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200"
|
||||||
|
"\377ddd\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377"
|
||||||
|
"hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377ddd\377xx"
|
||||||
|
"x\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40"
|
||||||
|
"\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377hhh\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377ppp\377"
|
||||||
|
"xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377"
|
||||||
|
"\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377hhh\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\"
|
||||||
|
"J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377h"
|
||||||
|
"hh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377"
|
||||||
|
"\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377"
|
||||||
|
"lll\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh"
|
||||||
|
"h\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377xxx\377"
|
||||||
|
"\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40"
|
||||||
|
"\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377ttt\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377fff\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377fff\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377\40"
|
||||||
|
"\40\40\377<<<\377fff\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377"
|
||||||
|
"ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377tt"
|
||||||
|
"t\377ttt\377ttt\377ttt\377ttt\377fff\377<<<\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\\J6\377\\J6\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377$$0\377>>>\377HHH\377DDD\377DDD\377"
|
||||||
|
"FFF\377LLL\377HHH\377HHH\377JJJ\377LLL\377LLL\377LLL\377LLL\377JJJ\377@@"
|
||||||
|
"@\377444\377444\377444\377444\377,,,\377\40\40\40\377\40\40\40\377\\J6\377"
|
||||||
|
"\\J6\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377<<<\377rrr\377ppp\377VVV\377PPP\377RRR\377jjj\377"
|
||||||
|
"xxx\377vvv\377ttt\377zzz\377|||\377xxx\377xxx\377zzz\377rrr\377PPP\377HH"
|
||||||
|
"H\377HHH\377HHH\377FFF\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377DDD\377lll\377lll\377000\377\40\40\40\377\40\40\40\377TTT\377"
|
||||||
|
"xxx\377ttt\377ttt\377xxx\377|||\377\200\200\200\377\200\200\200\377zzz\377"
|
||||||
|
"ttt\377PPP\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\\J6"
|
||||||
|
"\377\\J6\377(((\377```\377hhh\377ttt\377NNN\377VVV\377\40\40\40\377DDD\377"
|
||||||
|
"hhh\377lll\377000\377\40\40\40\377\40\40\40\377TTT\377vvv\377vvv\377vvv\377"
|
||||||
|
"|||\377xxx\377|||\377|||\377~~~\377vvv\377PPP\377HHH\377HHH\377HHH\377HH"
|
||||||
|
"H\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377```\377\250\250\250\377~~"
|
||||||
|
"~\377\250\250\250\377lll\377|||\377\40\40\40\377DDD\377jjj\377lll\377000"
|
||||||
|
"\377\40\40\40\377\40\40\40\377TTT\377ttt\377xxx\377xxx\377~~~\377|||\377"
|
||||||
|
"xxx\377xxx\377\202\202\202\377|||\377PPP\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\\J6\377\\J6\377|||\377\200\200\200\377@@@\377"
|
||||||
|
"\250\250\250\377\240\240\240\377|||\377\40\40\40\377FFF\377vvv\377rrr\377"
|
||||||
|
"000\377\40\40\40\377\40\40\40\377TTT\377vvv\377zzz\377xxx\377~~~\377|||\377"
|
||||||
|
"xxx\377|||\377\214\214\214\377~~~\377PPP\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"\"\"\"\377:0%\377\\J6\377\\J6\377```\377\250\250\250\377~~~\377\250\250\250"
|
||||||
|
"\377lll\377|||\377\40\40\40\377HHH\377xxx\377rrr\377000\377\40\40\40\377"
|
||||||
|
"\40\40\40\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377\210"
|
||||||
|
"\210\210\377\206\206\206\377~~~\377zzz\377\204\204\204\377ttt\377PPP\377"
|
||||||
|
"HHH\377HHH\377HHH\377HHH\3770+%\377T@*\377hQ8\377tX:\3770,(\377```\377hh"
|
||||||
|
"h\377ttt\377NNN\377VVV\377\40\40\40\377HHH\377xxx\377ppp\377000\377\40\40"
|
||||||
|
"\40\377\40\40\40\377XXX\377|||\377zzz\377xxx\377\202\202\202\377\200\200"
|
||||||
|
"\200\377\200\200\200\377|||\377\202\202\202\377ttt\377PPP\377HHH\377HHH\377"
|
||||||
|
"HHH\377HHH\377$$$\377L9&\377\\J6\377\230tL\377fM3\377($\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377($\40\377`VL\377ttt\377ppp\377XXX"
|
||||||
|
"\377XXX\377\\\\\\\377ttt\377|||\377ppp\377xxx\377|||\377xxx\377|||\377\206"
|
||||||
|
"\206\206\377\202\202\202\377xxx\377PPP\377HHH\377HHH\377HHH\377FFF\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\\J6\377\230tL\377\230tL\377tX:\377\\J6\377\\J6\377"
|
||||||
|
"\\J6\377\\J6\377tX:\377\216sU\377\200nZ\377\204r^\377\204r^\377\212xd\377"
|
||||||
|
"\216|h\377\222\200l\377\214zf\377\210vb\377\210vb\377\210vb\377\210vb\377"
|
||||||
|
"\212xd\377\220~j\377\214zf\377\210vb\377tbN\377p^J\377p^J\377p^J\377jXD\377"
|
||||||
|
"\\J6\377\\J6\377z_A\377",
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sdlappicon sdlappicon = {
|
||||||
|
32, 32,
|
||||||
|
sdlappicon_pixels
|
||||||
|
};
|
2691
polymer/eduke32/source/testgame/rsrc/game_banner.c
Normal file
2691
polymer/eduke32/source/testgame/rsrc/game_banner.c
Normal file
File diff suppressed because it is too large
Load diff
687
polymer/eduke32/source/testgame/rsrc/game_icon.c
Normal file
687
polymer/eduke32/source/testgame/rsrc/game_icon.c
Normal file
|
@ -0,0 +1,687 @@
|
||||||
|
/* GIMP RGBA C-Source image dump (game_icon.c) */
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "sdlappicon.h"
|
||||||
|
|
||||||
|
static uint8_t sdlappicon_pixels[] = {
|
||||||
|
"\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t"
|
||||||
|
"L\0\40\40\40\377@0\40\377`H0\377`H0\377@0\40\377hhh\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377@0\40"
|
||||||
|
"\377`H0\377`H0\377@0\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377`H0"
|
||||||
|
"\377\230tL\0\230tL\0`H0\377hhh\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377hhh\377`H0\377\230tL\0\230tL\0`H"
|
||||||
|
"0\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377`H0\377\230tL\0\230tL\0`H"
|
||||||
|
"0\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377hhh\377`H0\377\230tL\0\230tL\0`H0\377\40\40\40\377\230"
|
||||||
|
"tL\0\230tL\0\40\40\40\377@0\40\377`H0\377`H0\377@0\40\377hhh\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"hhh\377@0\40\377`H0\377`H0\377@0\40\377\40\40\40\377\230tL\0\230tL\0\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377```\377"
|
||||||
|
"@@@\377```\377\200\200\200\377\200\200\200\377```\377```\377```\377```\377"
|
||||||
|
"```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``"
|
||||||
|
"`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377"
|
||||||
|
"```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``"
|
||||||
|
"`\377```\377```\377```\377```\377\200\200\200\377\200\200\200\377```\377"
|
||||||
|
"@@@\377```\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377hhh\377@@@\377\40\40\40\377@@@\377\200\200\200\377\200"
|
||||||
|
"\200\200\377```\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377"
|
||||||
|
"ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp"
|
||||||
|
"p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377"
|
||||||
|
"ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377```\377pp"
|
||||||
|
"p\377\200\200\200\377@@@\377\40\40\40\377@@@\377hhh\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377```\377@@@\377"
|
||||||
|
"```\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377XXX\377XXX\377XXX\377ppp\377\200\200\200\377XXX\377\200"
|
||||||
|
"\200\200\377\200\200\200\377XXX\377\200\200\200\377XXX\377XXX\377XXX\377"
|
||||||
|
"\200\200\200\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377X"
|
||||||
|
"XX\377XXX\377XXX\377xxx\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377```\377ppp\377\200\200\200\377```\377@@@\377```\377hhh\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t"
|
||||||
|
"L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377XXX\377\200\200"
|
||||||
|
"\200\377xxx\377XXX\377\200\200\200\377XXX\377\200\200\200\377\200\200\200"
|
||||||
|
"\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377\200\200"
|
||||||
|
"\200\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377XXX\377\200"
|
||||||
|
"\200\200\377ppp\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377XXX\377XXX\377XXX\377ppp\377\200\200\200\377XXX\377\200\200\200"
|
||||||
|
"\377\200\200\200\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200"
|
||||||
|
"\200\377\200\200\200\377XXX\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377xxx\377XXX\377"
|
||||||
|
"\200\200\200\377XXX\377xxx\377xxx\377XXX\377\200\200\200\377\200\200\200"
|
||||||
|
"\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377XXX\377\200\200\200\377ppp\377XXX\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377p"
|
||||||
|
"pp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377XXX\377XXX\377XXX\377ppp\377"
|
||||||
|
"\200\200\200\377hhh\377XXX\377XXX\377hhh\377\200\200\200\377XXX\377XXX\377"
|
||||||
|
"XXX\377\200\200\200\377XXX\377XXX\377XXX\377\200\200\200\377XXX\377XXX\377"
|
||||||
|
"XXX\377xxx\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377"
|
||||||
|
"ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377h"
|
||||||
|
"hh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230"
|
||||||
|
"tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377`"
|
||||||
|
"``\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```"
|
||||||
|
"\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377"
|
||||||
|
"```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``"
|
||||||
|
"`\377```\377```\377```\377```\377```\377```\377```\377ppp\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"```\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp"
|
||||||
|
"p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377"
|
||||||
|
"ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp"
|
||||||
|
"p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377```\377ppp\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t"
|
||||||
|
"L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377"
|
||||||
|
"ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377h"
|
||||||
|
"hh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230"
|
||||||
|
"tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377p"
|
||||||
|
"pp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377```\377```\377```\377```\377```\377```\377``"
|
||||||
|
"`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377"
|
||||||
|
"```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``"
|
||||||
|
"`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377"
|
||||||
|
"```\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377```\377ppp\377ppp\377ppp\377ppp\377ppp\377"
|
||||||
|
"ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp"
|
||||||
|
"p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377"
|
||||||
|
"ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp"
|
||||||
|
"p\377ppp\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230"
|
||||||
|
"tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377p"
|
||||||
|
"pp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t"
|
||||||
|
"L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377```\377"
|
||||||
|
"```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``"
|
||||||
|
"`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377"
|
||||||
|
"```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``"
|
||||||
|
"`\377```\377```\377```\377```\377```\377```\377ppp\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377p"
|
||||||
|
"pp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp"
|
||||||
|
"\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377"
|
||||||
|
"ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t"
|
||||||
|
"L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377```\377xxx\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377xxx\377```\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377PPP\377ppp\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377ppp\377PPP\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377888\377```\377ppp\377xxx\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377xxx\377ppp\377```\377888\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0"
|
||||||
|
"\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377888\377PPP\377```\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh"
|
||||||
|
"\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377"
|
||||||
|
"hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh"
|
||||||
|
"h\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377"
|
||||||
|
"hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377```\377PPP\377888\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0"
|
||||||
|
"\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\37700`"
|
||||||
|
"\377PPP\377hhh\377ppp\377ppp\377hhh\377hhh\377hhh\377hhh\377hhh\377ppp\377"
|
||||||
|
"xxx\377xxx\377ppp\377ppp\377ppp\377ppp\377ppp\377xxx\377xxx\377xxx\377xx"
|
||||||
|
"x\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377ppp\377hhh\377XXX\377HHH\377"
|
||||||
|
"HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377@@@\377000\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377PPP\377hhh"
|
||||||
|
"\377xxx\377xxx\377ppp\377hhh\377```\377```\377```\377```\377hhh\377ppp\377"
|
||||||
|
"xxx\377xxx\377xxx\377xxx\377xxx\377ppp\377xxx\377xxx\377xxx\377xxx\377xx"
|
||||||
|
"x\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377xxx\377hhh\377XX"
|
||||||
|
"X\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377@@@\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t"
|
||||||
|
"L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377```\377"
|
||||||
|
"ppp\377xxx\377ppp\377hhh\377PPP\377@@@\377@@@\377@@@\377@@@\377@@@\377PP"
|
||||||
|
"P\377ppp\377xxx\377xxx\377xxx\377ppp\377ppp\377xxx\377xxx\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377xxx\377xxx\377xxx\377xxx\377xxx\377x"
|
||||||
|
"xx\377xxx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH"
|
||||||
|
"\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377hhh\377ppp\377ppp\377ppp\377hhh\377@@@\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377xxx\377xxx\377"
|
||||||
|
"xxx\377ppp\377ppp\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377xxx\377x"
|
||||||
|
"xx\377xxx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH"
|
||||||
|
"\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377xxx\377xxx\377"
|
||||||
|
"xxx\377ppp\377ppp\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377xxx\377x"
|
||||||
|
"xx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH"
|
||||||
|
"\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377@@@\377@@@\377"
|
||||||
|
"@@@\377@@@\377@@@\377@@@\377\40\40\40\377@@@\377@@@\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377"
|
||||||
|
"hhh\377xxx\377xxx\377xxx\377ppp\377ppp\377xxx\377xxx\377xxx\377xxx\377xx"
|
||||||
|
"x\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"
|
||||||
|
"\200\200\377xxx\377xxx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"HHH\377HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377@@@\377hhh"
|
||||||
|
"\377\230\230\230\377\230\230\230\377\210\210\210\377\270\270\270\377\230"
|
||||||
|
"\230\230\377@@@\377\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40"
|
||||||
|
"\40\40\377\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377pp"
|
||||||
|
"p\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377"
|
||||||
|
"xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\230tL\0\230tL\0\40\40\40\377@@@\377hhh\377\230\230\230\377"
|
||||||
|
"\270\270\270\377\270\270\270\377\230\230\230\377\270\270\270\377\230\230"
|
||||||
|
"\230\377@@@\377\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377ppp\377"
|
||||||
|
"xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377\200\200"
|
||||||
|
"\200\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\230tL\0\230tL\0\40\40\40\377@@@\377\230\230\230\377\270\270"
|
||||||
|
"\270\377\230\230\230\377hhh\377@@@\377\270\270\270\377\230\230\230\377@@"
|
||||||
|
"@\377\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40\40\40\377\40"
|
||||||
|
"\40\40\377hhh\377hhh\377ppp\377ppp\377hhh\377@@@\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377ppp\377xxx\377x"
|
||||||
|
"xx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377xxx\377"
|
||||||
|
"xxx\377xxx\377xxx\377xxx\377\200\200\200\377\210\210\210\377\210\210\210"
|
||||||
|
"\377xxx\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\230tL\0\230tL\0\40\40\40\377@@@\377\270\270\270\377\230\230\230\377hhh\377"
|
||||||
|
"@@@\377@@@\377\270\270\270\377\230\230\230\377\250\250\250\377\230\230\230"
|
||||||
|
"\377\270\270\270\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377"
|
||||||
|
"ppp\377xxx\377xxx\377hhh\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377@@@\377hhh\377ppp\377xxx\377xxx\377xxx\377xxx\377"
|
||||||
|
"xxx\377xxx\377\200\200\200\377\200\200\200\377xxx\377xxx\377xxx\377xxx\377"
|
||||||
|
"\200\200\200\377\210\210\210\377\220\220\220\377\210\210\210\377xxx\377X"
|
||||||
|
"XX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230"
|
||||||
|
"tL\0\40\40\40\377@@@\377\270\270\270\377\230\230\230\377hhh\377@@@\377@@"
|
||||||
|
"@\377\270\270\270\377\230\230\230\377\250\250\250\377\230\230\230\377\270"
|
||||||
|
"\270\270\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377"
|
||||||
|
"xxx\377xxx\377ppp\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377@@@\377hhh\377xxx\377xxx\377xxx\377\200\200\200\377x"
|
||||||
|
"xx\377xxx\377\200\200\200\377\200\200\200\377\200\200\200\377xxx\377xxx\377"
|
||||||
|
"xxx\377xxx\377\200\200\200\377\210\210\210\377\220\220\220\377\210\210\210"
|
||||||
|
"\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"HHH\377\40\40\40\377(((\377XD,\377P<(\377\40\40\40\377\230tL\0\230tL\0\40"
|
||||||
|
"\40\40\377@@@\377\230\230\230\377\270\270\270\377\230\230\230\377hhh\377"
|
||||||
|
"@@@\377\270\270\270\377\230\230\230\377@@@\377\230\230\230\377\270\270\270"
|
||||||
|
"\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377xxx\377x"
|
||||||
|
"xx\377ppp\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377@@@\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\200\200\200\377\200\200\200\377\200\200\200\377\210\210\210\377\210\210"
|
||||||
|
"\210\377\210\210\210\377\200\200\200\377\200\200\200\377xxx\377xxx\377\200"
|
||||||
|
"\200\200\377\210\210\210\377\210\210\210\377\200\200\200\377ppp\377XXX\377"
|
||||||
|
"HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40\40\40"
|
||||||
|
"\377(((\377XD,\377P<(\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377@@@\377"
|
||||||
|
"hhh\377\230\230\230\377\270\270\270\377\270\270\270\377\230\230\230\377\270"
|
||||||
|
"\270\270\377\230\230\230\377@@@\377\230\230\230\377\270\270\270\377@@@\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377xxx\377xxx\377hhh\377"
|
||||||
|
"@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"@@@\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\210\210\210\377\210\210\210\377\210"
|
||||||
|
"\210\210\377\210\210\210\377\200\200\200\377\200\200\200\377xxx\377xxx\377"
|
||||||
|
"\200\200\200\377\200\200\200\377xxx\377hhh\377XXX\377HHH\377HHH\377HHH\377"
|
||||||
|
"HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377XD,\377XD,\377P<("
|
||||||
|
"\377P<(\377\230tL\0\230tL\0@0\40\377\40\40\40\377@@@\377hhh\377\230\230\230"
|
||||||
|
"\377\230\230\230\377\210\210\210\377\270\270\270\377\230\230\230\377@@@\377"
|
||||||
|
"\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377ppp\377xxx\377xxx\377xxx\377hhh\377@@@\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377@@@\377ppp\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\200\200\200\377xxx\377xxx\377xxx\377\200\200\200\377\210\210"
|
||||||
|
"\210\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377"
|
||||||
|
"xxx\377xxx\377\200\200\200\377\200\200\200\377xxx\377hhh\377XXX\377HHH\377"
|
||||||
|
"HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377000"
|
||||||
|
"\377XD,\377P<(\377\40\40\40\377\230tL\0\230tL\0`H0\377@0\40\377\40\40\40"
|
||||||
|
"\377@@@\377@@@\377@@@\377@@@\377@@@\377@@@\377\40\40\40\377@@@\377@@@\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377xxx\377"
|
||||||
|
"xxx\377hhh\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377@@@\377ppp\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377\200"
|
||||||
|
"\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377\200\200\200\377\210\210\210\377\200"
|
||||||
|
"\200\200\377\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HH"
|
||||||
|
"H\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377H4$\377@0\40\377"
|
||||||
|
"\40\40\40\377\230tL\0\230tL\0\230tL\0`H0\377@0\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@0\40\377"
|
||||||
|
"ppp\377xxx\377xxx\377xxx\377hhh\377PPP\377@@@\377@@@\377@@@\377@@@\377@@"
|
||||||
|
"@\377PPP\377xxx\377\200\200\200\377xxx\377ppp\377ppp\377xxx\377xxx\377\200"
|
||||||
|
"\200\200\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377"
|
||||||
|
"\210\210\210\377\210\210\210\377\200\200\200\377\200\200\200\377ppp\377X"
|
||||||
|
"XX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40"
|
||||||
|
"\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0`H0\377@0\40\377\40\40\40\377\40\40\40\377\40\40\40\377"
|
||||||
|
"\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40"
|
||||||
|
"\377\40\40\40\377@0\40\377`H0\377ppp\377ppp\377ppp\377ppp\377ppp\377hhh\377"
|
||||||
|
"hhh\377ppp\377ppp\377xxx\377xxx\377\200\200\200\377\210\210\210\377\200\200"
|
||||||
|
"\200\377xxx\377ppp\377ppp\377xxx\377xxx\377\200\200\200\377xxx\377xxx\377"
|
||||||
|
"xxx\377xxx\377\200\200\200\377\210\210\210\377\210\210\210\377\200\200\200"
|
||||||
|
"\377\200\200\200\377\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377H"
|
||||||
|
"HH\377HHH\377HHH\377HHH\377HHH\377@@@\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0"
|
||||||
|
"`H0\377@0\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\40\40\40\377\40\40\40\377@0\40\377`H0\377\230tL\0pp"
|
||||||
|
"p\377hhh\377hhh\377ppp\377ppp\377ppp\377ppp\377xxx\377\200\200\200\377\200"
|
||||||
|
"\200\200\377\210\210\210\377\210\210\210\377\220\220\220\377\210\210\210"
|
||||||
|
"\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377"
|
||||||
|
"\200\200\200\377\210\210\210\377\210\210\210\377\200\200\200\377\200\200"
|
||||||
|
"\200\377\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377"
|
||||||
|
"HHH\377HHH\377HHH\377000\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40"
|
||||||
|
"\40\377\40\40\40\377\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230"
|
||||||
|
"tL\0\230tL\0\230tL\0\230tL\0\230tL\0",
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sdlappicon sdlappicon = {
|
||||||
|
64, 64,
|
||||||
|
sdlappicon_pixels
|
||||||
|
};
|
BIN
polymer/eduke32/source/testgame/rsrc/game_icon.ico
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/game_icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 KiB |
BIN
polymer/eduke32/source/testgame/rsrc/game_icon.png
Normal file
BIN
polymer/eduke32/source/testgame/rsrc/game_icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
36
polymer/eduke32/source/testgame/rsrc/gameres.rc
Normal file
36
polymer/eduke32/source/testgame/rsrc/gameres.rc
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
#include <windows.h>
|
||||||
|
#include <commctrl.h>
|
||||||
|
#include "startwin.game.h"
|
||||||
|
|
||||||
|
RSRC_ICON ICON "game_icon.ico"
|
||||||
|
RSRC_BMP BITMAP "game.bmp"
|
||||||
|
|
||||||
|
WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200
|
||||||
|
STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU
|
||||||
|
CAPTION "Startup"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "", WIN_STARTWIN_BITMAP, "STATIC", SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 32, 32
|
||||||
|
CONTROL "", WIN_STARTWIN_TABCTL, WC_TABCONTROL, WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 5, 250, 170
|
||||||
|
CONTROL "&Start", WIN_STARTWIN_START, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 154, 180, 48, 14
|
||||||
|
CONTROL "&Cancel", WIN_STARTWIN_CANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 207, 180, 48, 14
|
||||||
|
|
||||||
|
CONTROL "", WIN_STARTWIN_MESSAGES, "EDIT", ES_MULTILINE | ES_READONLY | WS_CHILD | WS_VSCROLL, 0, 0, 32, 32
|
||||||
|
END
|
||||||
|
|
||||||
|
WIN_STARTWINPAGE_CONFIG DIALOGEX DISCARDABLE 20, 40, 279, 168
|
||||||
|
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
|
||||||
|
CAPTION "Dialog"
|
||||||
|
FONT 8, "MS Shell Dlg"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "&Video mode:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 8, 50, 8
|
||||||
|
CONTROL "", IDC3DVMODE, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 60, 6, 80, 56
|
||||||
|
CONTROL "&Fullscreen", IDCFULLSCREEN, "BUTTON", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 148, 8, 49, 10
|
||||||
|
CONTROL "&Always show configuration on start", IDCALWAYSSHOW, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 118, 116, 140, 8
|
||||||
|
END
|
||||||
|
|
||||||
|
#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
|
||||||
|
1 24 "64/manifest.game.xml"
|
||||||
|
#else
|
||||||
|
1 24 "32/manifest.game.xml"
|
||||||
|
#endif
|
285
polymer/eduke32/source/testgame/src/StartupWinController.game.m
Normal file
285
polymer/eduke32/source/testgame/src/StartupWinController.game.m
Normal file
|
@ -0,0 +1,285 @@
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "baselayer.h"
|
||||||
|
#include "build.h"
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
int fullscreen;
|
||||||
|
int xdim3d, ydim3d, bpp3d;
|
||||||
|
int forcesetup;
|
||||||
|
} settings;
|
||||||
|
|
||||||
|
@interface StartupWinController : NSWindowController
|
||||||
|
{
|
||||||
|
NSMutableArray *modeslist3d;
|
||||||
|
|
||||||
|
IBOutlet NSButton *alwaysShowButton;
|
||||||
|
IBOutlet NSButton *fullscreenButton;
|
||||||
|
IBOutlet NSTextView *messagesView;
|
||||||
|
IBOutlet NSTabView *tabView;
|
||||||
|
IBOutlet NSPopUpButton *videoMode3DPUButton;
|
||||||
|
|
||||||
|
IBOutlet NSButton *cancelButton;
|
||||||
|
IBOutlet NSButton *startButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)dealloc;
|
||||||
|
- (void)populateVideoModes:(BOOL)firstTime;
|
||||||
|
|
||||||
|
- (IBAction)alwaysShowClicked:(id)sender;
|
||||||
|
- (IBAction)fullscreenClicked:(id)sender;
|
||||||
|
|
||||||
|
- (IBAction)cancel:(id)sender;
|
||||||
|
- (IBAction)start:(id)sender;
|
||||||
|
|
||||||
|
- (void)setupRunMode;
|
||||||
|
- (void)setupMessagesMode;
|
||||||
|
- (void)putsMessage:(NSString *)str;
|
||||||
|
- (void)setTitle:(NSString *)str;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation StartupWinController
|
||||||
|
|
||||||
|
- (void)dealloc
|
||||||
|
{
|
||||||
|
[modeslist3d release];
|
||||||
|
[super dealloc];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)populateVideoModes:(BOOL)firstTime
|
||||||
|
{
|
||||||
|
int i, mode3d, fullscreen = ([fullscreenButton state] == NSOnState);
|
||||||
|
int idx3d = -1;
|
||||||
|
int xdim, ydim, bpp;
|
||||||
|
|
||||||
|
if (firstTime) {
|
||||||
|
xdim = settings.xdim3d;
|
||||||
|
ydim = settings.ydim3d;
|
||||||
|
bpp = settings.bpp3d;
|
||||||
|
} else {
|
||||||
|
mode3d = [[modeslist3d objectAtIndex:[videoMode3DPUButton indexOfSelectedItem]] intValue];
|
||||||
|
if (mode3d >= 0) {
|
||||||
|
xdim = validmode[mode3d].xdim;
|
||||||
|
ydim = validmode[mode3d].ydim;
|
||||||
|
bpp = validmode[mode3d].bpp;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
mode3d = checkvideomode(&xdim, &ydim, bpp, fullscreen, 1);
|
||||||
|
if (mode3d < 0) {
|
||||||
|
int i, cd[] = { 32, 24, 16, 15, 8, 0 };
|
||||||
|
for (i=0; cd[i]; ) { if (cd[i] >= bpp) i++; else break; }
|
||||||
|
for ( ; cd[i]; i++) {
|
||||||
|
mode3d = checkvideomode(&xdim, &ydim, cd[i], fullscreen, 1);
|
||||||
|
if (mode3d < 0) continue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[modeslist3d release];
|
||||||
|
[videoMode3DPUButton removeAllItems];
|
||||||
|
|
||||||
|
modeslist3d = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
for (i = 0; i < validmodecnt; i++) {
|
||||||
|
if (fullscreen == validmode[i].fs) {
|
||||||
|
if (i == mode3d) idx3d = [modeslist3d count];
|
||||||
|
[modeslist3d addObject:[NSNumber numberWithInt:i]];
|
||||||
|
[videoMode3DPUButton addItemWithTitle:[NSString stringWithFormat:@"%d %C %d %d-bpp",
|
||||||
|
validmode[i].xdim, 0xd7, validmode[i].ydim, validmode[i].bpp]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (idx3d >= 0) [videoMode3DPUButton selectItemAtIndex:idx3d];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)alwaysShowClicked:(id)sender
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)fullscreenClicked:(id)sender
|
||||||
|
{
|
||||||
|
[self populateVideoModes:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)cancel:(id)sender
|
||||||
|
{
|
||||||
|
[NSApp abortModal];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)start:(id)sender
|
||||||
|
{
|
||||||
|
int mode = [[modeslist3d objectAtIndex:[videoMode3DPUButton indexOfSelectedItem]] intValue];
|
||||||
|
if (mode >= 0) {
|
||||||
|
settings.xdim3d = validmode[mode].xdim;
|
||||||
|
settings.ydim3d = validmode[mode].ydim;
|
||||||
|
settings.bpp3d = validmode[mode].bpp;
|
||||||
|
settings.fullscreen = validmode[mode].fs;
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.forcesetup = [alwaysShowButton state] == NSOnState;
|
||||||
|
|
||||||
|
[NSApp stopModal];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setupRunMode
|
||||||
|
{
|
||||||
|
getvalidmodes();
|
||||||
|
|
||||||
|
[fullscreenButton setState: (settings.fullscreen ? NSOnState : NSOffState)];
|
||||||
|
[alwaysShowButton setState: (settings.forcesetup ? NSOnState : NSOffState)];
|
||||||
|
[self populateVideoModes:YES];
|
||||||
|
|
||||||
|
// enable all the controls on the Configuration page
|
||||||
|
NSEnumerator *enumerator = [[[[tabView tabViewItemAtIndex:0] view] subviews] objectEnumerator];
|
||||||
|
NSControl *control;
|
||||||
|
while (control = [enumerator nextObject]) [control setEnabled:true];
|
||||||
|
|
||||||
|
[cancelButton setEnabled:true];
|
||||||
|
[startButton setEnabled:true];
|
||||||
|
|
||||||
|
[tabView selectTabViewItemAtIndex:0];
|
||||||
|
[NSCursor unhide]; // Why should I need to do this?
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setupMessagesMode
|
||||||
|
{
|
||||||
|
[tabView selectTabViewItemAtIndex:1];
|
||||||
|
|
||||||
|
// disable all the controls on the Configuration page except "always show", so the
|
||||||
|
// user can enable it if they want to while waiting for something else to happen
|
||||||
|
NSEnumerator *enumerator = [[[[tabView tabViewItemAtIndex:0] view] subviews] objectEnumerator];
|
||||||
|
NSControl *control;
|
||||||
|
while (control = [enumerator nextObject]) {
|
||||||
|
if (control == alwaysShowButton) continue;
|
||||||
|
[control setEnabled:false];
|
||||||
|
}
|
||||||
|
|
||||||
|
[cancelButton setEnabled:false];
|
||||||
|
[startButton setEnabled:false];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)putsMessage:(NSString *)str
|
||||||
|
{
|
||||||
|
NSRange end;
|
||||||
|
NSTextStorage *text = [messagesView textStorage];
|
||||||
|
BOOL shouldAutoScroll;
|
||||||
|
|
||||||
|
shouldAutoScroll = ((int)NSMaxY([messagesView bounds]) == (int)NSMaxY([messagesView visibleRect]));
|
||||||
|
|
||||||
|
end.location = [text length];
|
||||||
|
end.length = 0;
|
||||||
|
|
||||||
|
[text beginEditing];
|
||||||
|
[messagesView replaceCharactersInRange:end withString:str];
|
||||||
|
[text endEditing];
|
||||||
|
|
||||||
|
if (shouldAutoScroll) {
|
||||||
|
end.location = [text length];
|
||||||
|
end.length = 0;
|
||||||
|
[messagesView scrollRangeToVisible:end];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setTitle:(NSString *)str
|
||||||
|
{
|
||||||
|
[[self window] setTitle:str];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
static StartupWinController *startwin = nil;
|
||||||
|
|
||||||
|
int startwin_open(void)
|
||||||
|
{
|
||||||
|
if (startwin != nil) return 1;
|
||||||
|
|
||||||
|
startwin = [[StartupWinController alloc] initWithWindowNibName:@"startwin.game"];
|
||||||
|
if (startwin == nil) return -1;
|
||||||
|
|
||||||
|
[startwin setupMessagesMode];
|
||||||
|
[startwin showWindow:nil];
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_close(void)
|
||||||
|
{
|
||||||
|
if (startwin == nil) return 1;
|
||||||
|
|
||||||
|
[startwin close];
|
||||||
|
[startwin release];
|
||||||
|
startwin = nil;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_puts(const char *s)
|
||||||
|
{
|
||||||
|
NSString *ns;
|
||||||
|
|
||||||
|
if (!s) return -1;
|
||||||
|
if (startwin == nil) return 1;
|
||||||
|
|
||||||
|
ns = [[NSString alloc] initWithCString:s];
|
||||||
|
[startwin putsMessage:ns];
|
||||||
|
[ns release];
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_settitle(const char *s)
|
||||||
|
{
|
||||||
|
NSString *ns;
|
||||||
|
|
||||||
|
if (!s) return -1;
|
||||||
|
if (startwin == nil) return 1;
|
||||||
|
|
||||||
|
ns = [[NSString alloc] initWithCString:s];
|
||||||
|
[startwin setTitle:ns];
|
||||||
|
[ns release];
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_idle(void *v)
|
||||||
|
{
|
||||||
|
if (startwin) [[startwin window] displayIfNeeded];
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern int xdimgame, ydimgame, bppgame, forcesetup;
|
||||||
|
|
||||||
|
int startwin_run(void)
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
if (startwin == nil) return 0;
|
||||||
|
|
||||||
|
settings.fullscreen = fullscreen;
|
||||||
|
settings.xdim3d = xdimgame;
|
||||||
|
settings.ydim3d = ydimgame;
|
||||||
|
settings.bpp3d = bppgame;
|
||||||
|
settings.forcesetup = forcesetup;
|
||||||
|
|
||||||
|
[startwin setupRunMode];
|
||||||
|
|
||||||
|
switch ([NSApp runModalForWindow:[startwin window]]) {
|
||||||
|
case NSRunStoppedResponse: retval = 1; break;
|
||||||
|
case NSRunAbortedResponse: retval = 0; break;
|
||||||
|
default: retval = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
[startwin setupMessagesMode];
|
||||||
|
|
||||||
|
if (retval) {
|
||||||
|
fullscreen = settings.fullscreen;
|
||||||
|
xdimgame = settings.xdim3d;
|
||||||
|
ydimgame = settings.ydim3d;
|
||||||
|
bppgame = settings.bpp3d;
|
||||||
|
forcesetup = settings.forcesetup;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
613
polymer/eduke32/source/testgame/src/bstub.c
Normal file
613
polymer/eduke32/source/testgame/src/bstub.c
Normal file
|
@ -0,0 +1,613 @@
|
||||||
|
// "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman
|
||||||
|
// Ken Silverman's official web site: "http://www.advsys.net/ken"
|
||||||
|
// See the included license file "BUILDLIC.TXT" for license info.
|
||||||
|
//
|
||||||
|
// This file has been modified from Ken Silverman's original release
|
||||||
|
// by Jonathon Fowler (jf@jonof.id.au)
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "build.h"
|
||||||
|
#include "editor.h"
|
||||||
|
#include "pragmas.h"
|
||||||
|
#include "baselayer.h"
|
||||||
|
#include "names.h"
|
||||||
|
#include "osd.h"
|
||||||
|
#include "cache1d.h"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include "common_game.h"
|
||||||
|
|
||||||
|
const char* AppProperName = "Build Editor";
|
||||||
|
const char* AppTechnicalName = "testeditor";
|
||||||
|
|
||||||
|
static char tempbuf[256];
|
||||||
|
|
||||||
|
#define NUMOPTIONS 9
|
||||||
|
char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0,0};
|
||||||
|
unsigned char keys[NUMBUILDKEYS] =
|
||||||
|
{
|
||||||
|
0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39,
|
||||||
|
0x1e,0x2c,0xd1,0xc9,0x33,0x34,
|
||||||
|
0x9c,0x1c,0xd,0xc,0xf,0x45
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static char levelname[BMAX_PATH] = "";
|
||||||
|
|
||||||
|
|
||||||
|
//static int hang = 0;
|
||||||
|
//static int rollangle = 0;
|
||||||
|
|
||||||
|
//Detecting 2D / 3D mode:
|
||||||
|
// qsetmode is 200 in 3D mode
|
||||||
|
// qsetmode is 350/480 in 2D mode
|
||||||
|
//
|
||||||
|
//You can read these variables when F5-F8 is pressed in 3D mode only:
|
||||||
|
//
|
||||||
|
// If (searchstat == 0) WALL searchsector=sector, searchwall=wall
|
||||||
|
// If (searchstat == 1) CEILING searchsector=sector
|
||||||
|
// If (searchstat == 2) FLOOR searchsector=sector
|
||||||
|
// If (searchstat == 3) SPRITE searchsector=sector, searchwall=sprite
|
||||||
|
// If (searchstat == 4) MASKED WALL searchsector=sector, searchwall=wall
|
||||||
|
//
|
||||||
|
// searchsector is the sector of the selected item for all 5 searchstat's
|
||||||
|
//
|
||||||
|
// searchwall is undefined if searchstat is 1 or 2
|
||||||
|
// searchwall is the wall if searchstat = 0 or 4
|
||||||
|
// searchwall is the sprite if searchstat = 3 (Yeah, I know - it says wall,
|
||||||
|
// but trust me, it's the sprite number)
|
||||||
|
|
||||||
|
int averagefps;
|
||||||
|
#define AVERAGEFRAMES 32
|
||||||
|
static unsigned int frameval[AVERAGEFRAMES];
|
||||||
|
static int framecnt = 0;
|
||||||
|
|
||||||
|
const char *defsfilename = "kenbuild.def";
|
||||||
|
const char *startwin_labeltext = "Starting Build Editor...";
|
||||||
|
int nextvoxid = 0;
|
||||||
|
|
||||||
|
|
||||||
|
int32_t ExtPreInit(int32_t argc,const char **argv)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(argc);
|
||||||
|
UNREFERENCED_PARAMETER(argv);
|
||||||
|
|
||||||
|
wm_setapptitle("BUILD by Ken Silverman");
|
||||||
|
|
||||||
|
G_ExtPreInit();
|
||||||
|
|
||||||
|
OSD_SetLogFile("testeditor.log");
|
||||||
|
initprintf("KenBuild Editor %s %s\n", s_buildRev, s_buildInfo);
|
||||||
|
initprintf("Compiled %s\n", s_buildTimestamp);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ExtInit(void)
|
||||||
|
{
|
||||||
|
int i, rv = 0;
|
||||||
|
|
||||||
|
/*printf("------------------------------------------------------------------------------\n");
|
||||||
|
printf(" BUILD.EXE copyright(c) 1996 by Ken Silverman. You are granted the\n");
|
||||||
|
printf(" right to use this software for your personal use only. This is a\n");
|
||||||
|
printf(" special version to be used with \"Happy Fun KenBuild\" and may not work\n");
|
||||||
|
printf(" properly with other Build engine games. Please refer to license.doc\n");
|
||||||
|
printf(" for distribution rights\n");
|
||||||
|
printf("------------------------------------------------------------------------------\n");
|
||||||
|
getch();
|
||||||
|
*/
|
||||||
|
|
||||||
|
initgroupfile("stuff.dat");
|
||||||
|
bpp = 8;
|
||||||
|
if (loadsetup("build.cfg") < 0) buildputs("Configuration file not found, using defaults.\n"), rv = 1;
|
||||||
|
Bmemcpy((void *)buildkeys,(void *)keys,NUMBUILDKEYS); //Trick to make build use setup.dat keys
|
||||||
|
if (option[4] > 0) option[4] = 0;
|
||||||
|
if (initengine()) {
|
||||||
|
wm_msgbox("Build Engine Initialisation Error",
|
||||||
|
"There was a problem initialising the Build engine: %s", engineerrstr);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
initinput();
|
||||||
|
initmouse();
|
||||||
|
|
||||||
|
//You can load your own palette lookup tables here if you just
|
||||||
|
//copy the right code!
|
||||||
|
for(i=0;i<256;i++)
|
||||||
|
tempbuf[i] = ((i+32)&255); //remap colors for screwy palette sectors
|
||||||
|
makepalookup(16,tempbuf,0,0,0,1);
|
||||||
|
|
||||||
|
kensplayerheight = 32;
|
||||||
|
zmode = 0;
|
||||||
|
|
||||||
|
setbasepaltable(basepaltable, 1);
|
||||||
|
|
||||||
|
G_InitMultiPsky();
|
||||||
|
|
||||||
|
tiletovox[PLAYER] = nextvoxid++;
|
||||||
|
tiletovox[BROWNMONSTER] = nextvoxid++;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
// allowtaskswitching(0);
|
||||||
|
#endif
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtUnInit(void)
|
||||||
|
{
|
||||||
|
uninitgroupfile();
|
||||||
|
writesetup("build.cfg");
|
||||||
|
}
|
||||||
|
|
||||||
|
//static int daviewingrange, daaspect, horizval1, horizval2;
|
||||||
|
void ExtPreCheckKeys(void)
|
||||||
|
{
|
||||||
|
int /*cosang, sinang, dx, dy, mindx,*/ i, j, k;
|
||||||
|
|
||||||
|
if (keystatus[0x3e]) //F4 - screen re-size
|
||||||
|
{
|
||||||
|
keystatus[0x3e] = 0;
|
||||||
|
|
||||||
|
//cycle through all vesa modes, then screen-buffer mode
|
||||||
|
if (keystatus[0x2a]|keystatus[0x36]) {
|
||||||
|
setgamemode(!fullscreen, xdim, ydim, bpp);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
//cycle through all modes
|
||||||
|
j=-1;
|
||||||
|
|
||||||
|
// work out a mask to select the mode
|
||||||
|
for (i=0; i<validmodecnt; i++)
|
||||||
|
if ((validmode[i].xdim == xdim) &&
|
||||||
|
(validmode[i].ydim == ydim) &&
|
||||||
|
(validmode[i].fs == fullscreen) &&
|
||||||
|
(validmode[i].bpp == bpp))
|
||||||
|
{ j=i; break; }
|
||||||
|
|
||||||
|
for (k=0; k<validmodecnt; k++)
|
||||||
|
if (validmode[k].fs == fullscreen && validmode[k].bpp == bpp) break;
|
||||||
|
|
||||||
|
if (j==-1) j=k;
|
||||||
|
else {
|
||||||
|
j++;
|
||||||
|
if (j==validmodecnt) j=k;
|
||||||
|
}
|
||||||
|
setgamemode(fullscreen,validmode[j].xdim,validmode[j].ydim,bpp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
if (keystatus[0x2a]|keystatus[0x36])
|
||||||
|
{
|
||||||
|
if (keystatus[0xcf]) hang = max(hang-1,-182);
|
||||||
|
if (keystatus[0xc7]) hang = min(hang+1,182);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (keystatus[0xcf]) hang = max(hang-8,-182);
|
||||||
|
if (keystatus[0xc7]) hang = min(hang+8,182);
|
||||||
|
}
|
||||||
|
if (keystatus[0x4c]) { hang = 0; horiz = 100; }
|
||||||
|
if (hang != 0)
|
||||||
|
{
|
||||||
|
walock[4094] = 255;
|
||||||
|
|
||||||
|
// JBF 20031117: scale each dimension by a factor of 1.2, and work out
|
||||||
|
// the aspect of the screen. Anywhere you see 'i' below was the value
|
||||||
|
// '200' before I changed it. NOTE: This whole trick crashes in resolutions
|
||||||
|
// above 800x600. I'm not sure why, and fixing it is not something I intend
|
||||||
|
// to do in a real big hurry.
|
||||||
|
dx = (xdim + (xdim >> 3) + (xdim >> 4) + (xdim >> 6)) & (~7);
|
||||||
|
dy = (ydim + (ydim >> 3) + (ydim >> 4) + (ydim >> 6)) & (~7);
|
||||||
|
i = scale(320,ydim,xdim);
|
||||||
|
|
||||||
|
if (waloff[4094] == 0) allocache(&waloff[4094],/*240L*384L*/dx*dy,&walock[4094]);
|
||||||
|
setviewtotile(4094,/*240L,384L*/dy,dx);
|
||||||
|
|
||||||
|
cosang = sintable[(hang+512)&2047];
|
||||||
|
sinang = sintable[hang&2047];
|
||||||
|
|
||||||
|
dx = dmulscale1(320,cosang,i,sinang); mindx = dx;
|
||||||
|
dy = dmulscale1(-i,cosang,320,sinang);
|
||||||
|
horizval1 = dy*(320>>1)/dx-1;
|
||||||
|
|
||||||
|
dx = dmulscale1(320,cosang,-i,sinang); mindx = min(dx,mindx);
|
||||||
|
dy = dmulscale1(i,cosang,320,sinang);
|
||||||
|
horizval2 = dy*(320>>1)/dx+1;
|
||||||
|
|
||||||
|
daviewingrange = scale(65536,16384*(xdim>>1),mindx-16);
|
||||||
|
daaspect = scale(daviewingrange,scale(320,tilesizx[4094],tilesizy[4094]),horizval2+6-horizval1);
|
||||||
|
setaspect(daviewingrange,scale(daaspect,ydim*320,xdim*i));
|
||||||
|
horiz = 100-divscale15(horizval1+horizval2,daviewingrange);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MAXVOXMIPS 5
|
||||||
|
extern intptr_t voxoff[][MAXVOXMIPS];
|
||||||
|
void ExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr)
|
||||||
|
{
|
||||||
|
int i, *longptr;
|
||||||
|
spritetype *tspr;
|
||||||
|
|
||||||
|
UNREFERENCED_PARAMETER(ourx);
|
||||||
|
UNREFERENCED_PARAMETER(oury);
|
||||||
|
UNREFERENCED_PARAMETER(oura);
|
||||||
|
UNREFERENCED_PARAMETER(smoothr);
|
||||||
|
|
||||||
|
for(i=0,tspr=&tsprite[0];i<spritesortcnt;i++,tspr++)
|
||||||
|
{
|
||||||
|
if (usevoxels && tiletovox[tspr->picnum] >= 0)
|
||||||
|
{
|
||||||
|
switch(tspr->picnum)
|
||||||
|
{
|
||||||
|
case PLAYER:
|
||||||
|
if (!voxoff[ tiletovox[PLAYER] ][0]) {
|
||||||
|
if (qloadkvx(tiletovox[PLAYER],"voxel000.kvx")) {
|
||||||
|
tiletovox[PLAYER] = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//tspr->cstat |= 48; tspr->picnum = tiletovox[tspr->picnum];
|
||||||
|
longptr = (int *)voxoff[ tiletovox[PLAYER] ][0];
|
||||||
|
tspr->xrepeat = scale(tspr->xrepeat,56,longptr[2]);
|
||||||
|
tspr->yrepeat = scale(tspr->yrepeat,56,longptr[2]);
|
||||||
|
tspr->shade -= 6;
|
||||||
|
break;
|
||||||
|
case BROWNMONSTER:
|
||||||
|
if (!voxoff[ tiletovox[BROWNMONSTER] ][0]) {
|
||||||
|
if (qloadkvx(tiletovox[BROWNMONSTER],"voxel001.kvx")) {
|
||||||
|
tiletovox[BROWNMONSTER] = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//tspr->cstat |= 48; tspr->picnum = tiletovox[tspr->picnum];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tspr->shade += 6;
|
||||||
|
if (sector[tspr->sectnum].ceilingstat&1)
|
||||||
|
tspr->shade += sector[tspr->sectnum].ceilingshade;
|
||||||
|
else
|
||||||
|
tspr->shade += sector[tspr->sectnum].floorshade;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtCheckKeys(void)
|
||||||
|
{
|
||||||
|
int i;//, p, y, dx, dy, cosang, sinang, bufplc, tsizy, tsizyup15;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
if (qsetmode == 200) //In 3D mode
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
if (hang != 0)
|
||||||
|
{
|
||||||
|
bufplc = waloff[4094]+(mulscale16(horiz-100,xdimenscale)+(tilesizx[4094]>>1))*tilesizy[4094];
|
||||||
|
setviewback();
|
||||||
|
cosang = sintable[(hang+512)&2047];
|
||||||
|
sinang = sintable[hang&2047];
|
||||||
|
dx = dmulscale1(xdim,cosang,ydim,sinang);
|
||||||
|
dy = dmulscale1(-ydim,cosang,xdim,sinang);
|
||||||
|
|
||||||
|
begindrawing();
|
||||||
|
tsizy = tilesizy[4094];
|
||||||
|
tsizyup15 = (tsizy<<15);
|
||||||
|
dx = mulscale14(dx,daviewingrange);
|
||||||
|
dy = mulscale14(dy,daaspect);
|
||||||
|
sinang = mulscale14(sinang,daviewingrange);
|
||||||
|
cosang = mulscale14(cosang,daaspect);
|
||||||
|
p = ylookup[windowy1]+frameplace+windowx2+1;
|
||||||
|
for(y=windowy1;y<=windowy2;y++)
|
||||||
|
{
|
||||||
|
i = divscale16(tsizyup15,dx);
|
||||||
|
stretchhline(0,(xdim>>1)*i+tsizyup15,xdim>>2,i,mulscale32(i,dy)*tsizy+bufplc,p);
|
||||||
|
dx -= sinang; dy += cosang; p += ylookup[1];
|
||||||
|
}
|
||||||
|
walock[4094] = 1;
|
||||||
|
|
||||||
|
Bsprintf(tempbuf,"%d",(hang*180)>>10);
|
||||||
|
printext256(0L,8L,31,-1,tempbuf,1);
|
||||||
|
enddrawing();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (keystatus[0xa]) setaspect(viewingrange+(viewingrange>>8),yxaspect+(yxaspect>>8));
|
||||||
|
if (keystatus[0xb]) setaspect(viewingrange-(viewingrange>>8),yxaspect-(yxaspect>>8));
|
||||||
|
if (keystatus[0xc]) setaspect(viewingrange,yxaspect-(yxaspect>>8));
|
||||||
|
if (keystatus[0xd]) setaspect(viewingrange,yxaspect+(yxaspect>>8));
|
||||||
|
//if (keystatus[0x38]) setrollangle(rollangle+=((keystatus[0x2a]|keystatus[0x36])*6+2));
|
||||||
|
//if (keystatus[0xb8]) setrollangle(rollangle-=((keystatus[0x2a]|keystatus[0x36])*6+2));
|
||||||
|
//if (keystatus[0x1d]|keystatus[0x9d]) setrollangle(rollangle=0);
|
||||||
|
|
||||||
|
begindrawing();
|
||||||
|
|
||||||
|
i = frameval[framecnt&(AVERAGEFRAMES-1)];
|
||||||
|
j = frameval[framecnt&(AVERAGEFRAMES-1)] = getticks(); framecnt++;
|
||||||
|
if (i != j) averagefps = ((mul3(averagefps)+((AVERAGEFRAMES*1000)/(j-i)) )>>2);
|
||||||
|
Bsprintf((char *)tempbuf,"%d",averagefps);
|
||||||
|
printext256(0L,0L,31,-1,(char *)tempbuf,1);
|
||||||
|
|
||||||
|
enddrawing();
|
||||||
|
editinput();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtCleanUp(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtPreLoadMap(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ExtSetupMapFilename(const char *mapname)
|
||||||
|
{
|
||||||
|
char title[256];
|
||||||
|
|
||||||
|
Bstrncpy(levelname, mapname, sizeof(levelname));
|
||||||
|
|
||||||
|
Bsnprintf(title, 256, "BUILD by Ken Silverman - %s", mapname);
|
||||||
|
wm_setapptitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtLoadMap(const char *mapname)
|
||||||
|
{
|
||||||
|
ExtSetupMapFilename(mapname);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t ExtPreSaveMap(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtSaveMap(const char *mapname)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(mapname);
|
||||||
|
saveboard("backup.map", &pos, ang, cursectnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *ExtGetSectorCaption(short sectnum)
|
||||||
|
{
|
||||||
|
if ((sector[sectnum].lotag|sector[sectnum].hitag) == 0)
|
||||||
|
{
|
||||||
|
tempbuf[0] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Bsprintf((char *)tempbuf,"%hu,%hu",(unsigned short)sector[sectnum].hitag,
|
||||||
|
(unsigned short)sector[sectnum].lotag);
|
||||||
|
}
|
||||||
|
return((char *)tempbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *ExtGetWallCaption(short wallnum)
|
||||||
|
{
|
||||||
|
if ((wall[wallnum].lotag|wall[wallnum].hitag) == 0)
|
||||||
|
{
|
||||||
|
tempbuf[0] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Bsprintf((char *)tempbuf,"%hu,%hu",(unsigned short)wall[wallnum].hitag,
|
||||||
|
(unsigned short)wall[wallnum].lotag);
|
||||||
|
}
|
||||||
|
return((char *)tempbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *ExtGetSpriteCaption(short spritenum)
|
||||||
|
{
|
||||||
|
if ((sprite[spritenum].lotag|sprite[spritenum].hitag) == 0)
|
||||||
|
{
|
||||||
|
tempbuf[0] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Bsprintf((char *)tempbuf,"%hu,%hu",(unsigned short)sprite[spritenum].hitag,
|
||||||
|
(unsigned short)sprite[spritenum].lotag);
|
||||||
|
}
|
||||||
|
return((char *)tempbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
//printext16 parameters:
|
||||||
|
//printext16(int xpos, int ypos, short col, short backcol,
|
||||||
|
// char name[82], char fontsize)
|
||||||
|
// xpos 0-639 (top left)
|
||||||
|
// ypos 0-479 (top left)
|
||||||
|
// col 0-15
|
||||||
|
// backcol 0-15, -1 is transparent background
|
||||||
|
// name
|
||||||
|
// fontsize 0=8*8, 1=3*5
|
||||||
|
|
||||||
|
//drawline16 parameters:
|
||||||
|
// drawline16(int x1, int y1, int x2, int y2, char col)
|
||||||
|
// x1, x2 0-639
|
||||||
|
// y1, y2 0-143 (status bar is 144 high, origin is top-left of STATUS BAR)
|
||||||
|
// col 0-15
|
||||||
|
|
||||||
|
void ExtShowSectorData(short sectnum) //F5
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
if (qsetmode == 200) //In 3D mode
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
begindrawing();
|
||||||
|
clearmidstatbar16(); //Clear middle of status bar
|
||||||
|
|
||||||
|
Bsprintf((char *)tempbuf,"Sector %d",sectnum);
|
||||||
|
printext16(8,ydim16+32,11,-1,(char *)tempbuf,0);
|
||||||
|
|
||||||
|
printext16(8,ydim16+48,11,-1,"8*8 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789",0);
|
||||||
|
printext16(8,ydim16+56,11,-1,"3*5 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789",1);
|
||||||
|
|
||||||
|
i=ydim16; ydim16=ydim;
|
||||||
|
drawline16(320,i+68,344,i+80,4); //Draw house
|
||||||
|
drawline16(344,i+80,344,i+116,4);
|
||||||
|
drawline16(344,i+116,296,i+116,4);
|
||||||
|
drawline16(296,i+116,296,i+80,4);
|
||||||
|
drawline16(296,i+80,320,i+68,4);
|
||||||
|
ydim16=i;
|
||||||
|
enddrawing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtShowWallData(short wallnum) //F6
|
||||||
|
{
|
||||||
|
if (qsetmode == 200) //In 3D mode
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
begindrawing();
|
||||||
|
clearmidstatbar16(); //Clear middle of status bar
|
||||||
|
|
||||||
|
Bsprintf((char *)tempbuf,"Wall %d",wallnum);
|
||||||
|
printext16(8,ydim16+32,11,-1,(char *)tempbuf,0);
|
||||||
|
enddrawing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtShowSpriteData(short spritenum) //F6
|
||||||
|
{
|
||||||
|
if (qsetmode == 200) //In 3D mode
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
begindrawing();
|
||||||
|
clearmidstatbar16(); //Clear middle of status bar
|
||||||
|
|
||||||
|
Bsprintf((char *)tempbuf,"Sprite %d",spritenum);
|
||||||
|
printext16(8,ydim16+32,11,-1,(char *)tempbuf,0);
|
||||||
|
enddrawing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtEditSectorData(short sectnum) //F7
|
||||||
|
{
|
||||||
|
short nickdata;
|
||||||
|
|
||||||
|
if (qsetmode == 200) //In 3D mode
|
||||||
|
{
|
||||||
|
//Ceiling
|
||||||
|
if (searchstat == 1)
|
||||||
|
sector[searchsector].ceilingpicnum++; //Just a stupid example
|
||||||
|
|
||||||
|
//Floor
|
||||||
|
if (searchstat == 2)
|
||||||
|
sector[searchsector].floorshade++; //Just a stupid example
|
||||||
|
}
|
||||||
|
else //In 2D mode
|
||||||
|
{
|
||||||
|
Bsprintf((char *)tempbuf,"Sector (%d) Nick's variable: ",sectnum);
|
||||||
|
nickdata = 0;
|
||||||
|
nickdata = getnumber16((char *)tempbuf,nickdata,65536L,0);
|
||||||
|
|
||||||
|
printmessage16(" "); //Clear message box (top right of status bar)
|
||||||
|
ExtShowSectorData(sectnum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtEditWallData(short wallnum) //F8
|
||||||
|
{
|
||||||
|
short nickdata;
|
||||||
|
|
||||||
|
if (qsetmode == 200) //In 3D mode
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Bsprintf((char *)tempbuf,"Wall (%d) Nick's variable: ",wallnum);
|
||||||
|
nickdata = 0;
|
||||||
|
nickdata = getnumber16((char *)tempbuf,nickdata,65536L,0);
|
||||||
|
|
||||||
|
printmessage16(" "); //Clear message box (top right of status bar)
|
||||||
|
ExtShowWallData(wallnum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtEditSpriteData(short spritenum) //F8
|
||||||
|
{
|
||||||
|
short nickdata;
|
||||||
|
|
||||||
|
if (qsetmode == 200) //In 3D mode
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Bsprintf((char *)tempbuf,"Sprite (%d) Nick's variable: ",spritenum);
|
||||||
|
nickdata = 0;
|
||||||
|
nickdata = getnumber16((char *)tempbuf,nickdata,65536L,0);
|
||||||
|
printmessage16(" ");
|
||||||
|
|
||||||
|
printmessage16(" "); //Clear message box (top right of status bar)
|
||||||
|
ExtShowSpriteData(spritenum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void faketimerhandler(void)
|
||||||
|
{
|
||||||
|
sampletimer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void M32RunScript(const char *s) { UNREFERENCED_PARAMETER(s); }
|
||||||
|
void G_Polymer_UnInit(void) { }
|
||||||
|
|
||||||
|
void app_crashhandler(void)
|
||||||
|
{
|
||||||
|
if (levelname[0])
|
||||||
|
{
|
||||||
|
append_ext_UNSAFE(levelname, "_crash.map");
|
||||||
|
SaveBoard(levelname, M32_SB_NOEXT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Just thought you might want my getnumber16 code
|
||||||
|
/*
|
||||||
|
getnumber16(char namestart[80], short num, int maxnumber)
|
||||||
|
{
|
||||||
|
char buffer[80];
|
||||||
|
int j, k, n, danum, oldnum;
|
||||||
|
|
||||||
|
danum = (int)num;
|
||||||
|
oldnum = danum;
|
||||||
|
while ((keystatus[0x1c] != 2) && (keystatus[0x1] == 0)) //Enter, ESC
|
||||||
|
{
|
||||||
|
sprintf(&buffer,"%s%ld_ ",namestart,danum);
|
||||||
|
printmessage16(buffer);
|
||||||
|
|
||||||
|
for(j=2;j<=11;j++) //Scan numbers 0-9
|
||||||
|
if (keystatus[j] > 0)
|
||||||
|
{
|
||||||
|
keystatus[j] = 0;
|
||||||
|
k = j-1;
|
||||||
|
if (k == 10) k = 0;
|
||||||
|
n = (danum*10)+k;
|
||||||
|
if (n < maxnumber) danum = n;
|
||||||
|
}
|
||||||
|
if (keystatus[0xe] > 0) // backspace
|
||||||
|
{
|
||||||
|
danum /= 10;
|
||||||
|
keystatus[0xe] = 0;
|
||||||
|
}
|
||||||
|
if (keystatus[0x1c] == 1) //L. enter
|
||||||
|
{
|
||||||
|
oldnum = danum;
|
||||||
|
keystatus[0x1c] = 2;
|
||||||
|
asksave = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keystatus[0x1c] = 0;
|
||||||
|
keystatus[0x1] = 0;
|
||||||
|
return((short)oldnum);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vim:ts=4:
|
||||||
|
*/
|
54
polymer/eduke32/source/testgame/src/common.c
Normal file
54
polymer/eduke32/source/testgame/src/common.c
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "build.h"
|
||||||
|
|
||||||
|
#include "names.h"
|
||||||
|
#include "common_game.h"
|
||||||
|
|
||||||
|
uint8_t *basepaltable[1] = {
|
||||||
|
palette
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NUMPSKYMULTIS 2
|
||||||
|
EDUKE32_STATIC_ASSERT(NUMPSKYMULTIS <= MAXPSKYMULTIS);
|
||||||
|
EDUKE32_STATIC_ASSERT(PSKYOFF_MAX <= MAXPSKYTILES);
|
||||||
|
|
||||||
|
// Set up new-style multi-psky handling.
|
||||||
|
void Ken_InitMultiPsky(void)
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
|
static int32_t inited;
|
||||||
|
if (inited)
|
||||||
|
return;
|
||||||
|
inited = 1;
|
||||||
|
|
||||||
|
multipskytile[0] = -1;
|
||||||
|
multipskytile[1] = DAYSKY;
|
||||||
|
multipskytile[2] = NIGHTSKY;
|
||||||
|
|
||||||
|
pskynummultis = NUMPSKYMULTIS;
|
||||||
|
|
||||||
|
// When adding other multi-skies, take care that the tileofs[] values are
|
||||||
|
// <= PSKYOFF_MAX. (It can be increased up to MAXPSKYTILES, but should be
|
||||||
|
// set as tight as possible.)
|
||||||
|
|
||||||
|
// The default sky properties (all others are implicitly zero):
|
||||||
|
multipsky[0].lognumtiles = 1;
|
||||||
|
multipsky[0].horizfrac = 65536;
|
||||||
|
|
||||||
|
// DAYSKY
|
||||||
|
multipsky[1].lognumtiles = 1;
|
||||||
|
multipsky[1].horizfrac = 65536;
|
||||||
|
|
||||||
|
// DAYSKY
|
||||||
|
multipsky[2].lognumtiles = 3;
|
||||||
|
multipsky[2].horizfrac = 65536;
|
||||||
|
|
||||||
|
for (i=0; i<pskynummultis; ++i)
|
||||||
|
{
|
||||||
|
int32_t j;
|
||||||
|
for (j=0; j<(1<<multipsky[i].lognumtiles); ++j)
|
||||||
|
Bassert(multipsky[i].tileofs[j] <= PSKYOFF_MAX);
|
||||||
|
}
|
||||||
|
}
|
6
polymer/eduke32/source/testgame/src/common_game.h
Normal file
6
polymer/eduke32/source/testgame/src/common_game.h
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
|
||||||
|
extern uint8_t *basepaltable[1];
|
||||||
|
|
||||||
|
extern void Ken_InitMultiPsky(void);
|
286
polymer/eduke32/source/testgame/src/config.c
Normal file
286
polymer/eduke32/source/testgame/src/config.c
Normal file
|
@ -0,0 +1,286 @@
|
||||||
|
// Evil and Nasty Configuration File Reader for KenBuild
|
||||||
|
// by Jonathon Fowler
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "build.h"
|
||||||
|
#include "editor.h"
|
||||||
|
#include "osd.h"
|
||||||
|
|
||||||
|
#ifdef RENDERTYPEWIN
|
||||||
|
#include "winlayer.h"
|
||||||
|
#endif
|
||||||
|
#include "baselayer.h"
|
||||||
|
|
||||||
|
static int vesares[13][2] = {{320,200},{360,200},{320,240},{360,240},{320,400},
|
||||||
|
{360,400},{640,350},{640,400},{640,480},{800,600},
|
||||||
|
{1024,768},{1280,1024},{1600,1200}};
|
||||||
|
|
||||||
|
static int readconfig(BFILE *fp, const char *key, char *value, unsigned len)
|
||||||
|
{
|
||||||
|
char buf[1000], *k, *v, *eq;
|
||||||
|
int x=0;
|
||||||
|
|
||||||
|
if (len < 1) return 0;
|
||||||
|
|
||||||
|
Brewind(fp);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if (!Bfgets(buf, 1000, fp)) return 0;
|
||||||
|
|
||||||
|
if (buf[0] == ';') continue;
|
||||||
|
|
||||||
|
eq = Bstrchr(buf, '=');
|
||||||
|
if (!eq) continue;
|
||||||
|
|
||||||
|
k = buf;
|
||||||
|
v = eq+1;
|
||||||
|
|
||||||
|
while (*k == ' ' || *k == '\t') k++;
|
||||||
|
*(eq--) = 0;
|
||||||
|
while ((*eq == ' ' || *eq == '\t') && eq>=k) *(eq--) = 0;
|
||||||
|
|
||||||
|
if (Bstrcasecmp(k, key)) continue;
|
||||||
|
|
||||||
|
while (*v == ' ' || *k == '\t') v++;
|
||||||
|
eq = v + Bstrlen(v)-1;
|
||||||
|
|
||||||
|
while ((*eq == ' ' || *eq == '\t' || *eq == '\r' || *eq == '\n') && eq>=v) *(eq--) = 0;
|
||||||
|
|
||||||
|
value[--len] = 0;
|
||||||
|
do value[x] = v[x]; while (v[x++] != 0 && len-- > 0);
|
||||||
|
|
||||||
|
return x-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern short brightness;
|
||||||
|
extern int fullscreen;
|
||||||
|
extern unsigned char option[8];
|
||||||
|
extern unsigned char keys[NUMBUILDKEYS];
|
||||||
|
extern double msens;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SETUP.DAT
|
||||||
|
* 0 = video mode (0:chained 1:vesa 2:screen buffered 3/4/5:tseng/paradise/s3 6:red-blue)
|
||||||
|
* 1 = sound (0:none)
|
||||||
|
* 2 = music (0:none)
|
||||||
|
* 3 = input (0:keyboard 1:+mouse)
|
||||||
|
* 4 = multiplayer (0:single 1-4:com 5-11:ipx)
|
||||||
|
* 5&0xf0 = com speed
|
||||||
|
* 5&0x0f = com irq
|
||||||
|
* 6&0xf0 = chained y-res
|
||||||
|
* 6&0x0f = chained x-res or vesa mode
|
||||||
|
* 7&0xf0 = sound samplerate
|
||||||
|
* 7&0x01 = sound quality
|
||||||
|
* 7&0x02 = 8/16 bit
|
||||||
|
* 7&0x04 = mono/stereo
|
||||||
|
*
|
||||||
|
* bytes 8 to 26 are key settings:
|
||||||
|
* 0 = Forward (0xc8)
|
||||||
|
* 1 = Backward (0xd0)
|
||||||
|
* 2 = Turn left (0xcb)
|
||||||
|
* 3 = Turn right (0xcd)
|
||||||
|
* 4 = Run (0x2a)
|
||||||
|
* 5 = Strafe (0x9d)
|
||||||
|
* 6 = Fire (0x1d)
|
||||||
|
* 7 = Use (0x39)
|
||||||
|
* 8 = Stand high (0x1e)
|
||||||
|
* 9 = Stand low (0x2c)
|
||||||
|
* 10 = Look up (0xd1)
|
||||||
|
* 11 = Look down (0xc9)
|
||||||
|
* 12 = Strafe left (0x33)
|
||||||
|
* 13 = Strafe right (0x34)
|
||||||
|
* 14 = 2D/3D switch (0x9c)
|
||||||
|
* 15 = View cycle (0x1c)
|
||||||
|
* 16 = 2D Zoom in (0xd)
|
||||||
|
* 17 = 2D Zoom out (0xc)
|
||||||
|
* 18 = Chat (0xf)
|
||||||
|
*/
|
||||||
|
|
||||||
|
int loadsetup(const char *fn)
|
||||||
|
{
|
||||||
|
BFILE *fp;
|
||||||
|
#define VL 32
|
||||||
|
char val[VL];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if ((fp = Bfopen(fn, "rt")) == NULL) return -1;
|
||||||
|
|
||||||
|
if (readconfig(fp, "forcesetup", val, VL) > 0) { if (Batoi(val) != 0) forcesetup = 1; else forcesetup = 0; }
|
||||||
|
if (readconfig(fp, "fullscreen", val, VL) > 0) { if (Batoi(val) != 0) fullscreen = 1; else fullscreen = 0; }
|
||||||
|
if (readconfig(fp, "resolution", val, VL) > 0) {
|
||||||
|
i = Batoi(val) & 0x0f;
|
||||||
|
if ((unsigned)i<13) { xdimgame = xdim2d = vesares[i][0]; ydimgame = ydim2d = vesares[i][1]; }
|
||||||
|
}
|
||||||
|
if (readconfig(fp, "xdim", val, VL) > 0) xdimgame = xdim2d = Batoi(val);
|
||||||
|
if (readconfig(fp, "ydim", val, VL) > 0) ydimgame = xdim2d = Batoi(val);
|
||||||
|
if (readconfig(fp, "samplerate", val, VL) > 0) option[7] = (Batoi(val) & 0x0f) << 4;
|
||||||
|
if (readconfig(fp, "music", val, VL) > 0) { if (Batoi(val) != 0) option[2] = 1; else option[2] = 0; }
|
||||||
|
if (readconfig(fp, "mouse", val, VL) > 0) { if (Batoi(val) != 0) option[3] = 1; else option[3] = 0; }
|
||||||
|
if (readconfig(fp, "bpp", val, VL) > 0) bppgame = Batoi(val);
|
||||||
|
if (readconfig(fp, "renderer", val, VL) > 0) { i = Batoi(val); setrendermode(i); }
|
||||||
|
if (readconfig(fp, "brightness", val, VL) > 0) brightness = min(max(Batoi(val),0),15);
|
||||||
|
|
||||||
|
#ifdef RENDERTYPEWIN
|
||||||
|
if (readconfig(fp, "maxrefreshfreq", val, VL) > 0) maxrefreshfreq = Batoi(val);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
option[0] = 1; // vesa all the way...
|
||||||
|
option[1] = 1; // sound all the way...
|
||||||
|
option[4] = 0; // no multiplayer
|
||||||
|
option[5] = 0;
|
||||||
|
|
||||||
|
if (readconfig(fp, "keyforward", val, VL) > 0) keys[0] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keybackward", val, VL) > 0) keys[1] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keyturnleft", val, VL) > 0) keys[2] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keyturnright", val, VL) > 0) keys[3] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keyrun", val, VL) > 0) keys[4] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keystrafe", val, VL) > 0) keys[5] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keyfire", val, VL) > 0) keys[6] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keyuse", val, VL) > 0) keys[7] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keystandhigh", val, VL) > 0) keys[8] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keystandlow", val, VL) > 0) keys[9] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keylookup", val, VL) > 0) keys[10] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keylookdown", val, VL) > 0) keys[11] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keystrafeleft", val, VL) > 0) keys[12] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keystraferight", val, VL) > 0) keys[13] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "key2dmode", val, VL) > 0) keys[14] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keyviewcycle", val, VL) > 0) keys[15] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "key2dzoomin", val, VL) > 0) keys[16] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "key2dzoomout", val, VL) > 0) keys[17] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keychat", val, VL) > 0) keys[18] = Bstrtol(val, NULL, 16);
|
||||||
|
if (readconfig(fp, "keyconsole", val, VL) > 0) { keys[19] = Bstrtol(val, NULL, 16); OSD_CaptureKey(keys[19]); }
|
||||||
|
|
||||||
|
if (readconfig(fp, "mousesensitivity", val, VL) > 0) msens = Bstrtod(val, NULL);
|
||||||
|
|
||||||
|
Bfclose(fp);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int writesetup(const char *fn)
|
||||||
|
{
|
||||||
|
BFILE *fp;
|
||||||
|
|
||||||
|
fp = Bfopen(fn,"wt");
|
||||||
|
if (!fp) return -1;
|
||||||
|
|
||||||
|
Bfprintf(fp,
|
||||||
|
"; Always show configuration options on startup\n"
|
||||||
|
"; 0 - No\n"
|
||||||
|
"; 1 - Yes\n"
|
||||||
|
"forcesetup = %d\n"
|
||||||
|
"\n"
|
||||||
|
"; Video mode selection\n"
|
||||||
|
"; 0 - Windowed\n"
|
||||||
|
"; 1 - Fullscreen\n"
|
||||||
|
"fullscreen = %d\n"
|
||||||
|
"\n"
|
||||||
|
"; Video resolution\n"
|
||||||
|
"xdim = %d\n"
|
||||||
|
"ydim = %d\n"
|
||||||
|
"\n"
|
||||||
|
"; 3D-mode colour depth\n"
|
||||||
|
"bpp = %d\n"
|
||||||
|
"\n"
|
||||||
|
#ifdef USE_OPENGL
|
||||||
|
"; OpenGL mode options\n"
|
||||||
|
"glusetexcache = %d\n"
|
||||||
|
"\n"
|
||||||
|
#endif
|
||||||
|
#ifdef RENDERTYPEWIN
|
||||||
|
"; Maximum OpenGL mode refresh rate (Windows only, in Hertz)\n"
|
||||||
|
"maxrefreshfreq = %d\n"
|
||||||
|
"\n"
|
||||||
|
#endif
|
||||||
|
"; 3D mode brightness setting\n"
|
||||||
|
"; 0 - lowest\n"
|
||||||
|
"; 15 - highest\n"
|
||||||
|
"brightness = %d\n"
|
||||||
|
"\n"
|
||||||
|
"; Sound sample frequency\n"
|
||||||
|
"; 0 - 6 KHz\n"
|
||||||
|
"; 1 - 8 KHz\n"
|
||||||
|
"; 2 - 11.025 KHz\n"
|
||||||
|
"; 3 - 16 KHz\n"
|
||||||
|
"; 4 - 22.05 KHz\n"
|
||||||
|
"; 5 - 32 KHz\n"
|
||||||
|
"; 6 - 44.1 KHz\n"
|
||||||
|
"samplerate = %d\n"
|
||||||
|
"\n"
|
||||||
|
"; Music playback\n"
|
||||||
|
"; 0 - Off\n"
|
||||||
|
"; 1 - On\n"
|
||||||
|
"music = %d\n"
|
||||||
|
"\n"
|
||||||
|
"; Enable mouse\n"
|
||||||
|
"; 0 - No\n"
|
||||||
|
"; 1 - Yes\n"
|
||||||
|
"mouse = %d\n"
|
||||||
|
"\n"
|
||||||
|
"; Mouse sensitivity\n"
|
||||||
|
"mousesensitivity = %g\n"
|
||||||
|
"\n"
|
||||||
|
"; Key Settings\n"
|
||||||
|
"; Here's a map of all the keyboard scan codes: NOTE: values are listed in hex!\n"
|
||||||
|
"; +---------------------------------------------------------------------------------------------+\n"
|
||||||
|
"; | 01 3B 3C 3D 3E 3F 40 41 42 43 44 57 58 46 |\n"
|
||||||
|
"; |ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 SCROLL |\n"
|
||||||
|
"; | |\n"
|
||||||
|
"; |29 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E D2 C7 C9 45 B5 37 4A |\n"
|
||||||
|
"; | ` '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' - = BACK INS HOME PGUP NUMLK KP/ KP* KP- |\n"
|
||||||
|
"; | |\n"
|
||||||
|
"; | 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 2B D3 CF D1 47 48 49 4E |\n"
|
||||||
|
"; |TAB Q W E R T Y U I O P [ ] \\ DEL END PGDN KP7 KP8 KP9 KP+ |\n"
|
||||||
|
"; | |\n"
|
||||||
|
"; | 3A 1E 1F 20 21 22 23 24 25 26 27 28 1C 4B 4C 4D |\n"
|
||||||
|
"; |CAPS A S D F G H J K L ; ' ENTER KP4 KP5 KP6 9C |\n"
|
||||||
|
"; | KPENTER|\n"
|
||||||
|
"; | 2A 2C 2D 2E 2F 30 31 32 33 34 35 36 C8 4F 50 51 |\n"
|
||||||
|
"; |LSHIFT Z X C V B N M , . / RSHIFT UP KP1 KP2 KP3 |\n"
|
||||||
|
"; | |\n"
|
||||||
|
"; | 1D 38 39 B8 9D CB D0 CD 52 53 |\n"
|
||||||
|
"; |LCTRL LALT SPACE RALT RCTRL LEFT DOWN RIGHT KP0 KP. |\n"
|
||||||
|
"; +---------------------------------------------------------------------------------------------+\n"
|
||||||
|
"\n"
|
||||||
|
"keyforward = %X\n"
|
||||||
|
"keybackward = %X\n"
|
||||||
|
"keyturnleft = %X\n"
|
||||||
|
"keyturnright = %X\n"
|
||||||
|
"keyrun = %X\n"
|
||||||
|
"keystrafe = %X\n"
|
||||||
|
"keyfire = %X\n"
|
||||||
|
"keyuse = %X\n"
|
||||||
|
"keystandhigh = %X\n"
|
||||||
|
"keystandlow = %X\n"
|
||||||
|
"keylookup = %X\n"
|
||||||
|
"keylookdown = %X\n"
|
||||||
|
"keystrafeleft = %X\n"
|
||||||
|
"keystraferight = %X\n"
|
||||||
|
"key2dmode = %X\n"
|
||||||
|
"keyviewcycle = %X\n"
|
||||||
|
"key2dzoomin = %X\n"
|
||||||
|
"key2dzoomout = %X\n"
|
||||||
|
"keychat = %X\n"
|
||||||
|
"keyconsole = %X\n"
|
||||||
|
"\n",
|
||||||
|
|
||||||
|
forcesetup, fullscreen, xdimgame, ydimgame, bppgame,
|
||||||
|
#ifdef USE_OPENGL
|
||||||
|
glusetexcache,
|
||||||
|
#endif
|
||||||
|
#ifdef RENDERTYPEWIN
|
||||||
|
maxrefreshfreq,
|
||||||
|
#endif
|
||||||
|
brightness, option[7]>>4, option[2],
|
||||||
|
option[3], msens,
|
||||||
|
keys[0], keys[1], keys[2], keys[3], keys[4], keys[5],
|
||||||
|
keys[6], keys[7], keys[8], keys[9], keys[10], keys[11],
|
||||||
|
keys[12], keys[13], keys[14], keys[15], keys[16], keys[17],
|
||||||
|
keys[18], keys[19]
|
||||||
|
);
|
||||||
|
|
||||||
|
Bfclose(fp);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
6323
polymer/eduke32/source/testgame/src/game.c
Normal file
6323
polymer/eduke32/source/testgame/src/game.c
Normal file
File diff suppressed because it is too large
Load diff
55
polymer/eduke32/source/testgame/src/game.h
Normal file
55
polymer/eduke32/source/testgame/src/game.h
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
// game.h
|
||||||
|
|
||||||
|
void operatesector(short dasector);
|
||||||
|
void operatesprite(short dasprite);
|
||||||
|
int changehealth(short snum, short deltahealth);
|
||||||
|
void changenumbombs(short snum, short deltanumbombs);
|
||||||
|
void changenummissiles(short snum, short deltanummissiles);
|
||||||
|
void changenumgrabbers(short snum, short deltanumgrabbers);
|
||||||
|
void drawstatusflytime(short snum);
|
||||||
|
void drawstatusbar(short snum);
|
||||||
|
void prepareboard(char *daboardfilename);
|
||||||
|
void checktouchsprite(short snum, short sectnum);
|
||||||
|
void checkgrabbertouchsprite(short snum, short sectnum);
|
||||||
|
void shootgun(short snum, const vec3_t *vector, short daang, int dahoriz, short dasectnum, char guntype);
|
||||||
|
void analyzesprites(int dax, int day);
|
||||||
|
void tagcode(void);
|
||||||
|
void statuslistcode(void);
|
||||||
|
void activatehitag(short dahitag);
|
||||||
|
void bombexplode(int i);
|
||||||
|
void processinput(short snum);
|
||||||
|
void view(short snum, vec3_t *v, short *vsectnum, short ang, int horiz);
|
||||||
|
void drawscreen(short snum, int dasmoothratio);
|
||||||
|
void movethings(void);
|
||||||
|
void fakedomovethings(void);
|
||||||
|
void fakedomovethingscorrect(void);
|
||||||
|
void domovethings(void);
|
||||||
|
void getinput(void);
|
||||||
|
void initplayersprite(short snum);
|
||||||
|
void playback(void);
|
||||||
|
void setup3dscreen(void);
|
||||||
|
void findrandomspot(int *x, int *y, short *sectnum);
|
||||||
|
void warp(int *x, int *y, int *z, short *daang, short *dasector);
|
||||||
|
void warpsprite(short spritenum);
|
||||||
|
void initlava(void);
|
||||||
|
void movelava(char *dapic);
|
||||||
|
void doanimations(void);
|
||||||
|
int getanimationgoal(int *animptr);
|
||||||
|
int setanimation(int *animptr, int thegoal, int thevel, int theacc);
|
||||||
|
void checkmasterslaveswitch(void);
|
||||||
|
int testneighborsectors(short sect1, short sect2);
|
||||||
|
int loadgame(void);
|
||||||
|
int savegame(void);
|
||||||
|
void faketimerhandler(void);
|
||||||
|
void getpackets(void);
|
||||||
|
void drawoverheadmap(int cposx, int cposy, int czoom, short cang);
|
||||||
|
int movesprite(short spritenum, int dx, int dy, int dz, int ceildist, int flordist, int clipmask);
|
||||||
|
void waitforeverybody(void);
|
||||||
|
void searchmap(short startsector);
|
||||||
|
void setinterpolation(int *posptr);
|
||||||
|
void stopinterpolation(int *posptr);
|
||||||
|
void updateinterpolations(void);
|
||||||
|
void dointerpolations(void);
|
||||||
|
void restoreinterpolations(void);
|
||||||
|
void printext(int x, int y, char *buffer, short tilenum /*, char invisiblecol*/);
|
||||||
|
void drawtilebackground (/*int thex, int they,*/ short tilenum, signed char shade, int cx1, int cy1, int cx2, int cy2, char dapalnum);
|
49
polymer/eduke32/source/testgame/src/names.h
Normal file
49
polymer/eduke32/source/testgame/src/names.h
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
//Be careful when changing this file - it is parsed by Editart and Build.
|
||||||
|
#define SWITCH1ON 15
|
||||||
|
#define SLIME 34
|
||||||
|
#define BACKGROUND 37
|
||||||
|
#define KENPICTURE 48
|
||||||
|
#define BUILDDISK 49
|
||||||
|
#define SWITCH2ON 66
|
||||||
|
#define SWITCH2OFF 69
|
||||||
|
#define ALPHABET 73
|
||||||
|
#define NO 74
|
||||||
|
#define DEMOSIGN 75
|
||||||
|
#define COIN 76
|
||||||
|
#define COINSTACK 77
|
||||||
|
#define GIFTBOX 78
|
||||||
|
#define DIAMONDS 79
|
||||||
|
#define EVILALGRAVE 83
|
||||||
|
#define STATUSBAR 87
|
||||||
|
#define DAYSKY 89
|
||||||
|
#define WATERFOUNTAIN 90
|
||||||
|
#define USEWATERFOUNTAIN 91
|
||||||
|
#define NIGHTSKY 93
|
||||||
|
#define BULLET 98
|
||||||
|
#define BOMB 100
|
||||||
|
#define CANNON 101
|
||||||
|
#define GUNONBOTTOM 102
|
||||||
|
#define BOMBEMITTER 103
|
||||||
|
#define EXPLOSION 105
|
||||||
|
#define SPLASH 106
|
||||||
|
#define BROWNMONSTER 110
|
||||||
|
#define SKELETON 113
|
||||||
|
#define AL 114
|
||||||
|
#define EVILAL 115
|
||||||
|
#define PLAYER 120
|
||||||
|
#define SWITCH3OFF 146
|
||||||
|
#define SWITCH3ON 147
|
||||||
|
#define AIRPLANE 148
|
||||||
|
#define SPIRAL 149
|
||||||
|
#define COMPASS 150
|
||||||
|
#define FOOTPRINT 156
|
||||||
|
#define STATUSBARFILL8 160
|
||||||
|
#define STATUSBARFILL4 161
|
||||||
|
#define BOUNCYMAT 162
|
||||||
|
#define MIRROR 165
|
||||||
|
#define FLOORMIRROR 166
|
||||||
|
#define GRABBER 167
|
||||||
|
#define GRABCANNON 168
|
||||||
|
#define MISSILE 169
|
||||||
|
#define LAUNCHER 171
|
||||||
|
#define MIRRORLABEL 4000
|
64
polymer/eduke32/source/testgame/src/sound_stub.c
Normal file
64
polymer/eduke32/source/testgame/src/sound_stub.c
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
|
||||||
|
void initsb(char dadigistat, char damusistat, int dasamplerate, char danumspeakers, char dabytespersample, char daintspersec, char daquality)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(dadigistat);
|
||||||
|
UNREFERENCED_PARAMETER(damusistat);
|
||||||
|
UNREFERENCED_PARAMETER(dasamplerate);
|
||||||
|
UNREFERENCED_PARAMETER(danumspeakers);
|
||||||
|
UNREFERENCED_PARAMETER(dabytespersample);
|
||||||
|
UNREFERENCED_PARAMETER(daintspersec);
|
||||||
|
UNREFERENCED_PARAMETER(daquality);
|
||||||
|
}
|
||||||
|
|
||||||
|
void uninitsb(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void setears(int daposx, int daposy, int daxvect, int dayvect)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(daposx);
|
||||||
|
UNREFERENCED_PARAMETER(daposy);
|
||||||
|
UNREFERENCED_PARAMETER(daxvect);
|
||||||
|
UNREFERENCED_PARAMETER(dayvect);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wsayfollow(char *dafilename, int dafreq, int davol, int *daxplc, int *dayplc, char followstat)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(dafilename);
|
||||||
|
UNREFERENCED_PARAMETER(dafreq);
|
||||||
|
UNREFERENCED_PARAMETER(davol);
|
||||||
|
UNREFERENCED_PARAMETER(daxplc);
|
||||||
|
UNREFERENCED_PARAMETER(dayplc);
|
||||||
|
UNREFERENCED_PARAMETER(followstat);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wsay(char *dafilename, int dafreq, int volume1, int volume2)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(dafilename);
|
||||||
|
UNREFERENCED_PARAMETER(dafreq);
|
||||||
|
UNREFERENCED_PARAMETER(volume1);
|
||||||
|
UNREFERENCED_PARAMETER(volume2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loadwaves(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void loadsong(char *filename)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
void musicon(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void musicoff(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void refreshaudio(void)
|
||||||
|
{
|
||||||
|
}
|
544
polymer/eduke32/source/testgame/src/startgtk.game.c
Normal file
544
polymer/eduke32/source/testgame/src/startgtk.game.c
Normal file
|
@ -0,0 +1,544 @@
|
||||||
|
/* NOTE: Glade will generate code for a dialogue box which you should
|
||||||
|
* then patch into this file whenever you make a change to the Glade
|
||||||
|
* template.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <gdk-pixbuf/gdk-pixdata.h>
|
||||||
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
#ifndef LINKED_GTK
|
||||||
|
# include "dynamicgtk.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "baselayer.h"
|
||||||
|
#include "compat.h"
|
||||||
|
#include "build.h"
|
||||||
|
|
||||||
|
#define TAB_CONFIG 0
|
||||||
|
#define TAB_MESSAGES 1
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
int fullscreen;
|
||||||
|
int xdim3d, ydim3d, bpp3d;
|
||||||
|
int forcesetup;
|
||||||
|
} settings;
|
||||||
|
|
||||||
|
extern int gtkenabled;
|
||||||
|
|
||||||
|
static GtkWidget *startwin = NULL;
|
||||||
|
static int retval = -1, mode = TAB_MESSAGES;
|
||||||
|
|
||||||
|
// -- SUPPORT FUNCTIONS -------------------------------------------------------
|
||||||
|
|
||||||
|
#define GLADE_HOOKUP_OBJECT(component,widget,name) \
|
||||||
|
g_object_set_data_full (G_OBJECT (component), name, \
|
||||||
|
gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
|
||||||
|
|
||||||
|
#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
|
||||||
|
g_object_set_data (G_OBJECT (component), name, widget)
|
||||||
|
|
||||||
|
#define lookup_widget(x,w) \
|
||||||
|
(GtkWidget*) g_object_get_data(G_OBJECT(x), w)
|
||||||
|
|
||||||
|
static GdkPixbuf *load_banner(void)
|
||||||
|
{
|
||||||
|
extern const GdkPixdata startbanner_pixdata;
|
||||||
|
return gdk_pixbuf_from_pixdata(&startbanner_pixdata, FALSE, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetPage(int n)
|
||||||
|
{
|
||||||
|
if (!gtkenabled || !startwin) return;
|
||||||
|
mode = n;
|
||||||
|
gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(startwin,"tabs")), n);
|
||||||
|
|
||||||
|
// each control in the config page vertical layout plus the start button should be made (in)sensitive
|
||||||
|
if (n == TAB_CONFIG) n = TRUE; else n = FALSE;
|
||||||
|
gtk_widget_set_sensitive(lookup_widget(startwin,"startbutton"), n);
|
||||||
|
gtk_container_foreach(GTK_CONTAINER(lookup_widget(startwin,"configvlayout")),
|
||||||
|
(GtkCallback)gtk_widget_set_sensitive, (gpointer)n);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void on_vmode3dcombo_changed(GtkComboBox *, gpointer);
|
||||||
|
static void PopulateForm(void)
|
||||||
|
{
|
||||||
|
int mode3d, i;
|
||||||
|
GtkListStore *modes3d;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GtkComboBox *box3d;
|
||||||
|
char buf[64];
|
||||||
|
|
||||||
|
mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1);
|
||||||
|
if (mode3d < 0) {
|
||||||
|
int i, cd[] = { 32, 24, 16, 15, 8, 0 };
|
||||||
|
for (i=0; cd[i]; ) { if (cd[i] >= settings.bpp3d) i++; else break; }
|
||||||
|
for ( ; cd[i]; i++) {
|
||||||
|
mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1);
|
||||||
|
if (mode3d < 0) continue;
|
||||||
|
settings.bpp3d = cd[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"fullscreencheck")), settings.fullscreen);
|
||||||
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"alwaysshowcheck")), settings.forcesetup);
|
||||||
|
|
||||||
|
box3d = GTK_COMBO_BOX(lookup_widget(startwin,"vmode3dcombo"));
|
||||||
|
modes3d = GTK_LIST_STORE(gtk_combo_box_get_model(box3d));
|
||||||
|
gtk_list_store_clear(modes3d);
|
||||||
|
|
||||||
|
for (i=0; i<validmodecnt; i++) {
|
||||||
|
if (validmode[i].fs != settings.fullscreen) continue;
|
||||||
|
|
||||||
|
// all modes get added to the 3D mode list
|
||||||
|
Bsprintf(buf, "%ld x %ld %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp);
|
||||||
|
gtk_list_store_append(modes3d, &iter);
|
||||||
|
gtk_list_store_set(modes3d, &iter, 0,buf, 1,i, -1);
|
||||||
|
if (i == mode3d) {
|
||||||
|
g_signal_handlers_block_by_func(box3d, on_vmode3dcombo_changed, NULL);
|
||||||
|
gtk_combo_box_set_active_iter(box3d, &iter);
|
||||||
|
g_signal_handlers_unblock_by_func(box3d, on_vmode3dcombo_changed, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- EVENT CALLBACKS AND CREATION STUFF --------------------------------------
|
||||||
|
|
||||||
|
static void on_vmode3dcombo_changed(GtkComboBox *combobox, gpointer user_data)
|
||||||
|
{
|
||||||
|
GtkTreeModel *data;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
int val;
|
||||||
|
if (!gtk_combo_box_get_active_iter(combobox, &iter)) return;
|
||||||
|
if (!(data = gtk_combo_box_get_model(combobox))) return;
|
||||||
|
gtk_tree_model_get(data, &iter, 1, &val, -1);
|
||||||
|
settings.xdim3d = validmode[val].xdim;
|
||||||
|
settings.ydim3d = validmode[val].ydim;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void on_fullscreencheck_toggled(GtkToggleButton *togglebutton, gpointer user_data)
|
||||||
|
{
|
||||||
|
settings.fullscreen = (gtk_toggle_button_get_active(togglebutton) == TRUE);
|
||||||
|
PopulateForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void on_alwaysshowcheck_toggled(GtkToggleButton *togglebutton, gpointer user_data)
|
||||||
|
{
|
||||||
|
settings.forcesetup = (gtk_toggle_button_get_active(togglebutton) == TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void on_cancelbutton_clicked(GtkButton *button, gpointer user_data)
|
||||||
|
{
|
||||||
|
if (mode == TAB_CONFIG) { retval = 0; gtk_main_quit(); }
|
||||||
|
else quitevent++;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void on_startbutton_clicked(GtkButton *button, gpointer user_data)
|
||||||
|
{
|
||||||
|
retval = 1;
|
||||||
|
gtk_main_quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean on_startwin_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data)
|
||||||
|
{
|
||||||
|
if (mode == TAB_CONFIG) { retval = 0; gtk_main_quit(); }
|
||||||
|
else quitevent++;
|
||||||
|
return TRUE; // FALSE would let the event go through. we want the game to decide when to close
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static GtkWidget *create_window(void)
|
||||||
|
{
|
||||||
|
GtkWidget *startwin;
|
||||||
|
GtkWidget *hlayout;
|
||||||
|
GtkWidget *banner;
|
||||||
|
GtkWidget *vlayout;
|
||||||
|
GtkWidget *tabs;
|
||||||
|
GtkWidget *configvlayout;
|
||||||
|
GtkWidget *configlayout;
|
||||||
|
GtkWidget *vmode3dlabel;
|
||||||
|
GtkWidget *vmode3dcombo;
|
||||||
|
GtkWidget *fullscreencheck;
|
||||||
|
GtkWidget *alwaysshowcheck;
|
||||||
|
GtkWidget *configtab;
|
||||||
|
GtkWidget *messagesscroll;
|
||||||
|
GtkWidget *messagestext;
|
||||||
|
GtkWidget *messagestab;
|
||||||
|
GtkWidget *buttons;
|
||||||
|
GtkWidget *cancelbutton;
|
||||||
|
GtkWidget *cancelbuttonalign;
|
||||||
|
GtkWidget *cancelbuttonlayout;
|
||||||
|
GtkWidget *cancelbuttonicon;
|
||||||
|
GtkWidget *cancelbuttonlabel;
|
||||||
|
GtkWidget *startbutton;
|
||||||
|
GtkWidget *startbuttonalign;
|
||||||
|
GtkWidget *startbuttonlayout;
|
||||||
|
GtkWidget *startbuttonicon;
|
||||||
|
GtkWidget *startbuttonlabel;
|
||||||
|
GtkAccelGroup *accel_group;
|
||||||
|
|
||||||
|
accel_group = gtk_accel_group_new ();
|
||||||
|
|
||||||
|
// Basic window
|
||||||
|
startwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
gtk_window_set_title (GTK_WINDOW (startwin), apptitle); // NOTE: use global app title
|
||||||
|
gtk_window_set_position (GTK_WINDOW (startwin), GTK_WIN_POS_CENTER);
|
||||||
|
gtk_window_set_resizable (GTK_WINDOW (startwin), FALSE);
|
||||||
|
gtk_window_set_type_hint (GTK_WINDOW (startwin), GDK_WINDOW_TYPE_HINT_DIALOG);
|
||||||
|
|
||||||
|
// Horizontal layout of banner and controls
|
||||||
|
hlayout = gtk_hbox_new (FALSE, 0);
|
||||||
|
gtk_widget_show (hlayout);
|
||||||
|
gtk_container_add (GTK_CONTAINER (startwin), hlayout);
|
||||||
|
|
||||||
|
// Banner
|
||||||
|
{
|
||||||
|
GdkPixbuf *pixbuf = load_banner();
|
||||||
|
banner = gtk_image_new_from_pixbuf(pixbuf);
|
||||||
|
g_object_unref((gpointer)pixbuf);
|
||||||
|
}
|
||||||
|
gtk_widget_show (banner);
|
||||||
|
gtk_box_pack_start (GTK_BOX (hlayout), banner, FALSE, FALSE, 0);
|
||||||
|
gtk_misc_set_alignment (GTK_MISC (banner), 0.5, 0);
|
||||||
|
|
||||||
|
// Vertical layout of tab control and start+cancel buttons
|
||||||
|
vlayout = gtk_vbox_new (FALSE, 0);
|
||||||
|
gtk_widget_show (vlayout);
|
||||||
|
gtk_box_pack_start (GTK_BOX (hlayout), vlayout, TRUE, TRUE, 0);
|
||||||
|
|
||||||
|
// Tab control
|
||||||
|
tabs = gtk_notebook_new ();
|
||||||
|
gtk_widget_show (tabs);
|
||||||
|
gtk_box_pack_start (GTK_BOX (vlayout), tabs, TRUE, TRUE, 0);
|
||||||
|
gtk_container_set_border_width (GTK_CONTAINER (tabs), 4);
|
||||||
|
|
||||||
|
// Vertical layout of config page main body
|
||||||
|
configvlayout = gtk_vbox_new (FALSE, 0);
|
||||||
|
gtk_widget_show (configvlayout);
|
||||||
|
gtk_container_add (GTK_CONTAINER (tabs), configvlayout);
|
||||||
|
|
||||||
|
// Fixed-position layout of config page controls
|
||||||
|
configlayout = gtk_fixed_new ();
|
||||||
|
gtk_widget_show (configlayout);
|
||||||
|
gtk_box_pack_start (GTK_BOX (configvlayout), configlayout, TRUE, TRUE, 0);
|
||||||
|
gtk_container_set_border_width (GTK_CONTAINER (configlayout), 6);
|
||||||
|
|
||||||
|
// 3D video mode label
|
||||||
|
vmode3dlabel = gtk_label_new_with_mnemonic ("_Video mode:");
|
||||||
|
gtk_widget_show (vmode3dlabel);
|
||||||
|
gtk_fixed_put (GTK_FIXED (configlayout), vmode3dlabel, 0, 0);
|
||||||
|
gtk_widget_set_size_request (vmode3dlabel, 88, 29);
|
||||||
|
gtk_misc_set_alignment (GTK_MISC (vmode3dlabel), 0, 0.5);
|
||||||
|
|
||||||
|
// 3D video mode combo
|
||||||
|
{
|
||||||
|
GtkListStore *list = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT);
|
||||||
|
GtkCellRenderer *cell;
|
||||||
|
|
||||||
|
vmode3dcombo = gtk_combo_box_new_with_model (GTK_TREE_MODEL(list));
|
||||||
|
g_object_unref(G_OBJECT(list));
|
||||||
|
|
||||||
|
cell = gtk_cell_renderer_text_new();
|
||||||
|
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(vmode3dcombo), cell, FALSE);
|
||||||
|
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(vmode3dcombo), cell, "text", 0, NULL);
|
||||||
|
}
|
||||||
|
gtk_widget_show (vmode3dcombo);
|
||||||
|
gtk_fixed_put (GTK_FIXED (configlayout), vmode3dcombo, 88, 0);
|
||||||
|
gtk_widget_set_size_request (vmode3dcombo, 150, 29);
|
||||||
|
gtk_widget_add_accelerator (vmode3dcombo, "grab_focus", accel_group,
|
||||||
|
GDK_V, GDK_MOD1_MASK,
|
||||||
|
GTK_ACCEL_VISIBLE);
|
||||||
|
|
||||||
|
// Fullscreen checkbox
|
||||||
|
fullscreencheck = gtk_check_button_new_with_mnemonic ("_Fullscreen");
|
||||||
|
gtk_widget_show (fullscreencheck);
|
||||||
|
gtk_fixed_put (GTK_FIXED (configlayout), fullscreencheck, 248, 0);
|
||||||
|
gtk_widget_set_size_request (fullscreencheck, 85, 29);
|
||||||
|
gtk_widget_add_accelerator (fullscreencheck, "grab_focus", accel_group,
|
||||||
|
GDK_F, GDK_MOD1_MASK,
|
||||||
|
GTK_ACCEL_VISIBLE);
|
||||||
|
|
||||||
|
// Always show config checkbox
|
||||||
|
alwaysshowcheck = gtk_check_button_new_with_mnemonic ("_Always show configuration on start");
|
||||||
|
gtk_widget_show (alwaysshowcheck);
|
||||||
|
gtk_box_pack_start (GTK_BOX (configvlayout), alwaysshowcheck, FALSE, FALSE, 0);
|
||||||
|
gtk_widget_add_accelerator (alwaysshowcheck, "grab_focus", accel_group,
|
||||||
|
GDK_A, GDK_MOD1_MASK,
|
||||||
|
GTK_ACCEL_VISIBLE);
|
||||||
|
|
||||||
|
// Configuration tab
|
||||||
|
configtab = gtk_label_new ("Configuration");
|
||||||
|
gtk_widget_show (configtab);
|
||||||
|
gtk_notebook_set_tab_label (GTK_NOTEBOOK (tabs), gtk_notebook_get_nth_page (GTK_NOTEBOOK (tabs), 0), configtab);
|
||||||
|
|
||||||
|
// Messages scrollable area
|
||||||
|
messagesscroll = gtk_scrolled_window_new (NULL, NULL);
|
||||||
|
gtk_widget_show (messagesscroll);
|
||||||
|
gtk_container_add (GTK_CONTAINER (tabs), messagesscroll);
|
||||||
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (messagesscroll), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
|
||||||
|
|
||||||
|
// Messages text area
|
||||||
|
messagestext = gtk_text_view_new ();
|
||||||
|
gtk_widget_show (messagestext);
|
||||||
|
gtk_container_add (GTK_CONTAINER (messagesscroll), messagestext);
|
||||||
|
gtk_text_view_set_editable (GTK_TEXT_VIEW (messagestext), FALSE);
|
||||||
|
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (messagestext), GTK_WRAP_WORD);
|
||||||
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (messagestext), FALSE);
|
||||||
|
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (messagestext), 2);
|
||||||
|
gtk_text_view_set_right_margin (GTK_TEXT_VIEW (messagestext), 2);
|
||||||
|
|
||||||
|
// Messages tab
|
||||||
|
messagestab = gtk_label_new ("Messages");
|
||||||
|
gtk_widget_show (messagestab);
|
||||||
|
gtk_notebook_set_tab_label (GTK_NOTEBOOK (tabs), gtk_notebook_get_nth_page (GTK_NOTEBOOK (tabs), 1), messagestab);
|
||||||
|
|
||||||
|
// Dialogue box buttons layout
|
||||||
|
buttons = gtk_hbutton_box_new ();
|
||||||
|
gtk_widget_show (buttons);
|
||||||
|
gtk_box_pack_start (GTK_BOX (vlayout), buttons, FALSE, TRUE, 0);
|
||||||
|
gtk_container_set_border_width (GTK_CONTAINER (buttons), 3);
|
||||||
|
gtk_button_box_set_layout (GTK_BUTTON_BOX (buttons), GTK_BUTTONBOX_END);
|
||||||
|
|
||||||
|
// Cancel button
|
||||||
|
cancelbutton = gtk_button_new ();
|
||||||
|
gtk_widget_show (cancelbutton);
|
||||||
|
gtk_container_add (GTK_CONTAINER (buttons), cancelbutton);
|
||||||
|
GTK_WIDGET_SET_FLAGS (cancelbutton, GTK_CAN_DEFAULT);
|
||||||
|
gtk_widget_add_accelerator (cancelbutton, "grab_focus", accel_group,
|
||||||
|
GDK_C, GDK_MOD1_MASK,
|
||||||
|
GTK_ACCEL_VISIBLE);
|
||||||
|
gtk_widget_add_accelerator (cancelbutton, "clicked", accel_group,
|
||||||
|
GDK_Escape, 0,
|
||||||
|
GTK_ACCEL_VISIBLE);
|
||||||
|
|
||||||
|
cancelbuttonalign = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||||
|
gtk_widget_show (cancelbuttonalign);
|
||||||
|
gtk_container_add (GTK_CONTAINER (cancelbutton), cancelbuttonalign);
|
||||||
|
|
||||||
|
cancelbuttonlayout = gtk_hbox_new (FALSE, 2);
|
||||||
|
gtk_widget_show (cancelbuttonlayout);
|
||||||
|
gtk_container_add (GTK_CONTAINER (cancelbuttonalign), cancelbuttonlayout);
|
||||||
|
|
||||||
|
cancelbuttonicon = gtk_image_new_from_stock ("gtk-cancel", GTK_ICON_SIZE_BUTTON);
|
||||||
|
gtk_widget_show (cancelbuttonicon);
|
||||||
|
gtk_box_pack_start (GTK_BOX (cancelbuttonlayout), cancelbuttonicon, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
cancelbuttonlabel = gtk_label_new_with_mnemonic ("_Cancel");
|
||||||
|
gtk_widget_show (cancelbuttonlabel);
|
||||||
|
gtk_box_pack_start (GTK_BOX (cancelbuttonlayout), cancelbuttonlabel, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
// Start button
|
||||||
|
startbutton = gtk_button_new ();
|
||||||
|
gtk_widget_show (startbutton);
|
||||||
|
gtk_container_add (GTK_CONTAINER (buttons), startbutton);
|
||||||
|
GTK_WIDGET_SET_FLAGS (startbutton, GTK_CAN_DEFAULT);
|
||||||
|
gtk_widget_add_accelerator (startbutton, "grab_focus", accel_group,
|
||||||
|
GDK_S, GDK_MOD1_MASK,
|
||||||
|
GTK_ACCEL_VISIBLE);
|
||||||
|
gtk_widget_add_accelerator (startbutton, "clicked", accel_group,
|
||||||
|
GDK_Return, 0,
|
||||||
|
GTK_ACCEL_VISIBLE);
|
||||||
|
|
||||||
|
startbuttonalign = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||||
|
gtk_widget_show (startbuttonalign);
|
||||||
|
gtk_container_add (GTK_CONTAINER (startbutton), startbuttonalign);
|
||||||
|
|
||||||
|
startbuttonlayout = gtk_hbox_new (FALSE, 2);
|
||||||
|
gtk_widget_show (startbuttonlayout);
|
||||||
|
gtk_container_add (GTK_CONTAINER (startbuttonalign), startbuttonlayout);
|
||||||
|
|
||||||
|
startbuttonicon = gtk_image_new_from_stock ("gtk-execute", GTK_ICON_SIZE_BUTTON);
|
||||||
|
gtk_widget_show (startbuttonicon);
|
||||||
|
gtk_box_pack_start (GTK_BOX (startbuttonlayout), startbuttonicon, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
startbuttonlabel = gtk_label_new_with_mnemonic ("_Start");
|
||||||
|
gtk_widget_show (startbuttonlabel);
|
||||||
|
gtk_box_pack_start (GTK_BOX (startbuttonlayout), startbuttonlabel, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
// Wire up the signals
|
||||||
|
g_signal_connect ((gpointer) startwin, "delete_event",
|
||||||
|
G_CALLBACK (on_startwin_delete_event),
|
||||||
|
NULL);
|
||||||
|
g_signal_connect ((gpointer) vmode3dcombo, "changed",
|
||||||
|
G_CALLBACK (on_vmode3dcombo_changed),
|
||||||
|
NULL);
|
||||||
|
g_signal_connect ((gpointer) fullscreencheck, "toggled",
|
||||||
|
G_CALLBACK (on_fullscreencheck_toggled),
|
||||||
|
NULL);
|
||||||
|
g_signal_connect ((gpointer) alwaysshowcheck, "toggled",
|
||||||
|
G_CALLBACK (on_alwaysshowcheck_toggled),
|
||||||
|
NULL);
|
||||||
|
g_signal_connect ((gpointer) cancelbutton, "clicked",
|
||||||
|
G_CALLBACK (on_cancelbutton_clicked),
|
||||||
|
NULL);
|
||||||
|
g_signal_connect ((gpointer) startbutton, "clicked",
|
||||||
|
G_CALLBACK (on_startbutton_clicked),
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
// Associate labels with their controls
|
||||||
|
gtk_label_set_mnemonic_widget (GTK_LABEL (vmode3dlabel), vmode3dcombo);
|
||||||
|
|
||||||
|
/* Store pointers to all widgets, for use by lookup_widget(). */
|
||||||
|
GLADE_HOOKUP_OBJECT_NO_REF (startwin, startwin, "startwin");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, hlayout, "hlayout");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, banner, "banner");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, vlayout, "vlayout");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, tabs, "tabs");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, configvlayout, "configvlayout");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, configlayout, "configlayout");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, vmode3dlabel, "vmode3dlabel");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, vmode3dcombo, "vmode3dcombo");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, fullscreencheck, "fullscreencheck");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, alwaysshowcheck, "alwaysshowcheck");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, configtab, "configtab");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, messagesscroll, "messagesscroll");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, messagestext, "messagestext");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, messagestab, "messagestab");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, buttons, "buttons");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, cancelbutton, "cancelbutton");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, cancelbuttonalign, "cancelbuttonalign");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, cancelbuttonlayout, "cancelbuttonlayout");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, cancelbuttonicon, "cancelbuttonicon");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, cancelbuttonlabel, "cancelbuttonlabel");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, startbutton, "startbutton");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, startbuttonalign, "startbuttonalign");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, startbuttonlayout, "startbuttonlayout");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, startbuttonicon, "startbuttonicon");
|
||||||
|
GLADE_HOOKUP_OBJECT (startwin, startbuttonlabel, "startbuttonlabel");
|
||||||
|
|
||||||
|
gtk_window_add_accel_group (GTK_WINDOW (startwin), accel_group);
|
||||||
|
|
||||||
|
return startwin;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- BUILD ENTRY POINTS ------------------------------------------------------
|
||||||
|
|
||||||
|
int startwin_open(void)
|
||||||
|
{
|
||||||
|
if (!gtkenabled) return 0;
|
||||||
|
if (startwin) return 1;
|
||||||
|
|
||||||
|
startwin = create_window();
|
||||||
|
if (startwin) {
|
||||||
|
SetPage(TAB_MESSAGES);
|
||||||
|
gtk_widget_show(startwin);
|
||||||
|
gtk_main_iteration_do(FALSE);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_close(void)
|
||||||
|
{
|
||||||
|
if (!gtkenabled) return 0;
|
||||||
|
if (!startwin) return 1;
|
||||||
|
gtk_widget_destroy (startwin);
|
||||||
|
startwin = NULL;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_puts(const char *str)
|
||||||
|
{
|
||||||
|
GtkWidget *textview;
|
||||||
|
GtkTextBuffer *textbuffer;
|
||||||
|
GtkTextIter enditer;
|
||||||
|
GtkTextMark *mark;
|
||||||
|
const char *aptr, *bptr;
|
||||||
|
|
||||||
|
if (!gtkenabled || !str) return 0;
|
||||||
|
if (!startwin) return 1;
|
||||||
|
if (!(textview = lookup_widget(startwin, "messagestext"))) return -1;
|
||||||
|
textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
|
||||||
|
|
||||||
|
gtk_text_buffer_get_end_iter(textbuffer, &enditer);
|
||||||
|
for (aptr = bptr = str; *aptr != 0; ) {
|
||||||
|
switch (*bptr) {
|
||||||
|
case '\b':
|
||||||
|
if (bptr > aptr)
|
||||||
|
gtk_text_buffer_insert(textbuffer, &enditer, (const gchar *)aptr, (gint)(bptr-aptr)-1);
|
||||||
|
#if GTK_CHECK_VERSION(2,6,0)
|
||||||
|
gtk_text_buffer_backspace(textbuffer, &enditer, FALSE, TRUE);
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
GtkTextIter iter2 = enditer;
|
||||||
|
gtk_text_iter_backward_cursor_position(&iter2);
|
||||||
|
//FIXME: this seems be deleting one too many chars somewhere!
|
||||||
|
if (!gtk_text_iter_equal(&iter2, &enditer))
|
||||||
|
gtk_text_buffer_delete_interactive(textbuffer, &iter2, &enditer, TRUE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
aptr = ++bptr;
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
if (bptr > aptr)
|
||||||
|
gtk_text_buffer_insert(textbuffer, &enditer, (const gchar *)aptr, (gint)(bptr-aptr));
|
||||||
|
aptr = bptr;
|
||||||
|
break;
|
||||||
|
case '\r': // FIXME
|
||||||
|
default:
|
||||||
|
bptr++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mark = gtk_text_buffer_create_mark(textbuffer, NULL, &enditer, 1);
|
||||||
|
gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(textview), mark, 0.0, FALSE, 0.0, 1.0);
|
||||||
|
gtk_text_buffer_delete_mark(textbuffer, mark);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_settitle(const char *title)
|
||||||
|
{
|
||||||
|
if (!gtkenabled) return 0;
|
||||||
|
if (!startwin) return 1;
|
||||||
|
gtk_window_set_title (GTK_WINDOW (startwin), title);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_idle(void *s)
|
||||||
|
{
|
||||||
|
if (!gtkenabled) return 0;
|
||||||
|
//if (!startwin) return 1;
|
||||||
|
gtk_main_iteration_do (FALSE);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern int xdimgame, ydimgame, bppgame, forcesetup;
|
||||||
|
|
||||||
|
int startwin_run(void)
|
||||||
|
{
|
||||||
|
if (!gtkenabled) return 0;
|
||||||
|
if (!startwin) return 1;
|
||||||
|
|
||||||
|
SetPage(TAB_CONFIG);
|
||||||
|
|
||||||
|
settings.fullscreen = fullscreen;
|
||||||
|
settings.xdim3d = xdimgame;
|
||||||
|
settings.ydim3d = ydimgame;
|
||||||
|
settings.bpp3d = bppgame;
|
||||||
|
settings.forcesetup = forcesetup;
|
||||||
|
PopulateForm();
|
||||||
|
|
||||||
|
gtk_main();
|
||||||
|
|
||||||
|
SetPage(TAB_MESSAGES);
|
||||||
|
if (retval) {
|
||||||
|
fullscreen = settings.fullscreen;
|
||||||
|
xdimgame = settings.xdim3d;
|
||||||
|
ydimgame = settings.ydim3d;
|
||||||
|
bppgame = settings.bpp3d;
|
||||||
|
forcesetup = settings.forcesetup;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
421
polymer/eduke32/source/testgame/src/startwin.game.c
Normal file
421
polymer/eduke32/source/testgame/src/startwin.game.c
Normal file
|
@ -0,0 +1,421 @@
|
||||||
|
#ifndef _WIN32
|
||||||
|
#error Only for Windows
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
#include "build.h"
|
||||||
|
#include "winlayer.h"
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
#include <windowsx.h>
|
||||||
|
#define _WIN32_IE 0x0600
|
||||||
|
#include <commctrl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "startwin.game.h"
|
||||||
|
|
||||||
|
#define TAB_CONFIG 0
|
||||||
|
#define TAB_MESSAGES 1
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
int fullscreen;
|
||||||
|
int xdim3d, ydim3d, bpp3d;
|
||||||
|
int forcesetup;
|
||||||
|
} settings;
|
||||||
|
|
||||||
|
static HWND startupdlg = NULL;
|
||||||
|
static HWND pages[2] = { NULL, NULL};
|
||||||
|
static int done = -1, mode = TAB_CONFIG;
|
||||||
|
|
||||||
|
static void PopulateForm(void)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
char buf[64];
|
||||||
|
int mode3d;
|
||||||
|
HWND hwnd3d;
|
||||||
|
|
||||||
|
hwnd3d = GetDlgItem(pages[TAB_CONFIG], IDC3DVMODE);
|
||||||
|
|
||||||
|
mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1);
|
||||||
|
if (mode3d < 0) {
|
||||||
|
int cd[] = { 32, 24, 16, 15, 8, 0 };
|
||||||
|
for (i=0; cd[i]; ) { if (cd[i] >= settings.bpp3d) i++; else break; }
|
||||||
|
for ( ; cd[i]; i++) {
|
||||||
|
mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1);
|
||||||
|
if (mode3d < 0) continue;
|
||||||
|
settings.bpp3d = cd[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCFULLSCREEN), (settings.fullscreen ? BST_CHECKED : BST_UNCHECKED));
|
||||||
|
Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCALWAYSSHOW), (settings.forcesetup ? BST_CHECKED : BST_UNCHECKED));
|
||||||
|
|
||||||
|
ComboBox_ResetContent(hwnd3d);
|
||||||
|
for (i=0; i<validmodecnt; i++) {
|
||||||
|
if (validmode[i].fs != settings.fullscreen) continue;
|
||||||
|
|
||||||
|
// all modes get added to the 3D mode list
|
||||||
|
Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp);
|
||||||
|
j = ComboBox_AddString(hwnd3d, buf);
|
||||||
|
ComboBox_SetItemData(hwnd3d, j, i);
|
||||||
|
if (i == mode3d) ComboBox_SetCurSel(hwnd3d, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static INT_PTR CALLBACK ConfigPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
switch (uMsg) {
|
||||||
|
case WM_COMMAND:
|
||||||
|
switch (LOWORD(wParam)) {
|
||||||
|
case IDCFULLSCREEN:
|
||||||
|
settings.fullscreen = !settings.fullscreen;
|
||||||
|
PopulateForm();
|
||||||
|
return TRUE;
|
||||||
|
case IDC3DVMODE:
|
||||||
|
if (HIWORD(wParam) == CBN_SELCHANGE) {
|
||||||
|
int i;
|
||||||
|
i = ComboBox_GetCurSel((HWND)lParam);
|
||||||
|
if (i != CB_ERR) i = ComboBox_GetItemData((HWND)lParam, i);
|
||||||
|
if (i != CB_ERR) {
|
||||||
|
settings.xdim3d = validmode[i].xdim;
|
||||||
|
settings.ydim3d = validmode[i].ydim;
|
||||||
|
settings.bpp3d = validmode[i].bpp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
case IDCALWAYSSHOW:
|
||||||
|
settings.forcesetup = IsDlgButtonChecked(hwndDlg, IDCALWAYSSHOW) == BST_CHECKED;
|
||||||
|
return TRUE;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void SetPage(int n)
|
||||||
|
{
|
||||||
|
HWND tab;
|
||||||
|
int cur;
|
||||||
|
tab = GetDlgItem(startupdlg, WIN_STARTWIN_TABCTL);
|
||||||
|
cur = (int)SendMessage(tab, TCM_GETCURSEL,0,0);
|
||||||
|
ShowWindow(pages[cur],SW_HIDE);
|
||||||
|
SendMessage(tab, TCM_SETCURSEL, n, 0);
|
||||||
|
ShowWindow(pages[n],SW_SHOW);
|
||||||
|
mode = n;
|
||||||
|
|
||||||
|
SetFocus(GetDlgItem(startupdlg, WIN_STARTWIN_TABCTL));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void EnableConfig(int n)
|
||||||
|
{
|
||||||
|
//EnableWindow(GetDlgItem(startupdlg, WIN_STARTWIN_CANCEL), n);
|
||||||
|
EnableWindow(GetDlgItem(startupdlg, WIN_STARTWIN_START), n);
|
||||||
|
EnableWindow(GetDlgItem(pages[TAB_CONFIG], IDCFULLSCREEN), n);
|
||||||
|
EnableWindow(GetDlgItem(pages[TAB_CONFIG], IDC3DVMODE), n);
|
||||||
|
}
|
||||||
|
|
||||||
|
static INT_PTR CALLBACK startup_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
static HBITMAP hbmp = NULL;
|
||||||
|
HDC hdc;
|
||||||
|
|
||||||
|
switch (uMsg) {
|
||||||
|
case WM_INITDIALOG: {
|
||||||
|
HWND hwnd;
|
||||||
|
RECT r, rdlg, chrome, rtab, rcancel, rstart;
|
||||||
|
int xoffset = 0, yoffset = 0;
|
||||||
|
|
||||||
|
// Fetch the positions (in screen coordinates) of all the windows we need to tweak
|
||||||
|
ZeroMemory(&chrome, sizeof(chrome));
|
||||||
|
AdjustWindowRect(&chrome, GetWindowLong(hwndDlg, GWL_STYLE), FALSE);
|
||||||
|
GetWindowRect(hwndDlg, &rdlg);
|
||||||
|
GetWindowRect(GetDlgItem(hwndDlg, WIN_STARTWIN_TABCTL), &rtab);
|
||||||
|
GetWindowRect(GetDlgItem(hwndDlg, WIN_STARTWIN_CANCEL), &rcancel);
|
||||||
|
GetWindowRect(GetDlgItem(hwndDlg, WIN_STARTWIN_START), &rstart);
|
||||||
|
|
||||||
|
// Knock off the non-client area of the main dialogue to give just the client area
|
||||||
|
rdlg.left -= chrome.left; rdlg.top -= chrome.top;
|
||||||
|
rdlg.right -= chrome.right; rdlg.bottom -= chrome.bottom;
|
||||||
|
|
||||||
|
// Translate them to client-relative coordinates wrt the main dialogue window
|
||||||
|
rtab.right -= rtab.left - 1; rtab.bottom -= rtab.top - 1;
|
||||||
|
rtab.left -= rdlg.left; rtab.top -= rdlg.top;
|
||||||
|
|
||||||
|
rcancel.right -= rcancel.left - 1; rcancel.bottom -= rcancel.top - 1;
|
||||||
|
rcancel.left -= rdlg.left; rcancel.top -= rdlg.top;
|
||||||
|
|
||||||
|
rstart.right -= rstart.left - 1; rstart.bottom -= rstart.top - 1;
|
||||||
|
rstart.left -= rdlg.left; rstart.top -= rdlg.top;
|
||||||
|
|
||||||
|
// And then convert the main dialogue coordinates to just width/length
|
||||||
|
rdlg.right -= rdlg.left - 1; rdlg.bottom -= rdlg.top - 1;
|
||||||
|
rdlg.left = 0; rdlg.top = 0;
|
||||||
|
|
||||||
|
// Load the bitmap into the bitmap control and fetch its dimensions
|
||||||
|
hbmp = LoadBitmap((HINSTANCE)win_gethinstance(), MAKEINTRESOURCE(RSRC_BMP));
|
||||||
|
hwnd = GetDlgItem(hwndDlg,WIN_STARTWIN_BITMAP);
|
||||||
|
SendMessage(hwnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp);
|
||||||
|
GetClientRect(hwnd, &r);
|
||||||
|
xoffset = r.right;
|
||||||
|
yoffset = r.bottom - rdlg.bottom;
|
||||||
|
|
||||||
|
// Shift and resize the controls that require it
|
||||||
|
rtab.left += xoffset; rtab.bottom += yoffset;
|
||||||
|
rcancel.left += xoffset; rcancel.top += yoffset;
|
||||||
|
rstart.left += xoffset; rstart.top += yoffset;
|
||||||
|
rdlg.right += xoffset;
|
||||||
|
rdlg.bottom += yoffset;
|
||||||
|
|
||||||
|
// Move the controls to their new positions
|
||||||
|
MoveWindow(GetDlgItem(hwndDlg, WIN_STARTWIN_TABCTL), rtab.left, rtab.top, rtab.right, rtab.bottom, FALSE);
|
||||||
|
MoveWindow(GetDlgItem(hwndDlg, WIN_STARTWIN_CANCEL), rcancel.left, rcancel.top, rcancel.right, rcancel.bottom, FALSE);
|
||||||
|
MoveWindow(GetDlgItem(hwndDlg, WIN_STARTWIN_START), rstart.left, rstart.top, rstart.right, rstart.bottom, FALSE);
|
||||||
|
|
||||||
|
// Move the main dialogue to the centre of the screen
|
||||||
|
hdc = GetDC(NULL);
|
||||||
|
rdlg.left = (GetDeviceCaps(hdc, HORZRES) - rdlg.right) / 2;
|
||||||
|
rdlg.top = (GetDeviceCaps(hdc, VERTRES) - rdlg.bottom) / 2;
|
||||||
|
ReleaseDC(NULL, hdc);
|
||||||
|
MoveWindow(hwndDlg, rdlg.left + chrome.left, rdlg.top + chrome.left,
|
||||||
|
rdlg.right + (-chrome.left+chrome.right), rdlg.bottom + (-chrome.top+chrome.bottom), TRUE);
|
||||||
|
|
||||||
|
// Add tabs to the tab control
|
||||||
|
{
|
||||||
|
TCITEM tab;
|
||||||
|
|
||||||
|
hwnd = GetDlgItem(hwndDlg, WIN_STARTWIN_TABCTL);
|
||||||
|
|
||||||
|
ZeroMemory(&tab, sizeof(tab));
|
||||||
|
tab.mask = TCIF_TEXT;
|
||||||
|
tab.pszText = TEXT("Configuration");
|
||||||
|
SendMessage(hwnd, TCM_INSERTITEM, (WPARAM)0, (LPARAM)&tab);
|
||||||
|
tab.mask = TCIF_TEXT;
|
||||||
|
tab.pszText = TEXT("Messages");
|
||||||
|
SendMessage(hwnd, TCM_INSERTITEM, (WPARAM)1, (LPARAM)&tab);
|
||||||
|
|
||||||
|
// Work out the position and size of the area inside the tab control for the pages
|
||||||
|
ZeroMemory(&r, sizeof(r));
|
||||||
|
GetClientRect(hwnd, &r);
|
||||||
|
SendMessage(hwnd, TCM_ADJUSTRECT, FALSE, (LPARAM)&r);
|
||||||
|
r.right -= r.left-1;
|
||||||
|
r.bottom -= r.top-1;
|
||||||
|
r.top += rtab.top;
|
||||||
|
r.left += rtab.left;
|
||||||
|
|
||||||
|
// Create the pages and position them in the tab control, but hide them
|
||||||
|
pages[TAB_CONFIG] = CreateDialog((HINSTANCE)win_gethinstance(),
|
||||||
|
MAKEINTRESOURCE(WIN_STARTWINPAGE_CONFIG), hwndDlg, ConfigPageProc);
|
||||||
|
pages[TAB_MESSAGES] = GetDlgItem(hwndDlg, WIN_STARTWIN_MESSAGES);
|
||||||
|
SetWindowPos(pages[TAB_CONFIG], hwnd,r.left,r.top,r.right,r.bottom,SWP_HIDEWINDOW);
|
||||||
|
SetWindowPos(pages[TAB_MESSAGES], hwnd,r.left,r.top,r.right,r.bottom,SWP_HIDEWINDOW);
|
||||||
|
|
||||||
|
// Tell the editfield acting as the console to exclude the width of the scrollbar
|
||||||
|
GetClientRect(pages[TAB_MESSAGES],&r);
|
||||||
|
r.right -= GetSystemMetrics(SM_CXVSCROLL)+4;
|
||||||
|
r.left = r.top = 0;
|
||||||
|
SendMessage(pages[TAB_MESSAGES], EM_SETRECTNP,0,(LPARAM)&r);
|
||||||
|
|
||||||
|
SetFocus(GetDlgItem(hwndDlg, WIN_STARTWIN_START));
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_NOTIFY: {
|
||||||
|
LPNMHDR nmhdr = (LPNMHDR)lParam;
|
||||||
|
int cur;
|
||||||
|
if (nmhdr->idFrom != WIN_STARTWIN_TABCTL) break;
|
||||||
|
cur = (int)SendMessage(nmhdr->hwndFrom, TCM_GETCURSEL,0,0);
|
||||||
|
switch (nmhdr->code) {
|
||||||
|
case TCN_SELCHANGING: {
|
||||||
|
if (cur < 0 || !pages[cur]) break;
|
||||||
|
ShowWindow(pages[cur],SW_HIDE);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
case TCN_SELCHANGE: {
|
||||||
|
if (cur < 0 || !pages[cur]) break;
|
||||||
|
ShowWindow(pages[cur],SW_SHOW);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_CLOSE:
|
||||||
|
if (mode == TAB_CONFIG) done = 0;
|
||||||
|
else quitevent++;
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case WM_DESTROY:
|
||||||
|
if (hbmp) {
|
||||||
|
DeleteObject(hbmp);
|
||||||
|
hbmp = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pages[TAB_CONFIG]) {
|
||||||
|
DestroyWindow(pages[TAB_CONFIG]);
|
||||||
|
pages[TAB_CONFIG] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
startupdlg = NULL;
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case WM_COMMAND:
|
||||||
|
switch (LOWORD(wParam)) {
|
||||||
|
case WIN_STARTWIN_CANCEL:
|
||||||
|
if (mode == TAB_CONFIG) done = 0;
|
||||||
|
else quitevent++;
|
||||||
|
return TRUE;
|
||||||
|
case WIN_STARTWIN_START: done = 1; return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
case WM_CTLCOLORSTATIC:
|
||||||
|
if ((HWND)lParam == pages[TAB_MESSAGES])
|
||||||
|
return (BOOL)GetSysColorBrush(COLOR_WINDOW);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int startwin_open(void)
|
||||||
|
{
|
||||||
|
INITCOMMONCONTROLSEX icc;
|
||||||
|
if (startupdlg) return 1;
|
||||||
|
icc.dwSize = sizeof(icc);
|
||||||
|
icc.dwICC = ICC_TAB_CLASSES;
|
||||||
|
InitCommonControlsEx(&icc);
|
||||||
|
startupdlg = CreateDialog((HINSTANCE)win_gethinstance(), MAKEINTRESOURCE(WIN_STARTWIN), NULL, startup_dlgproc);
|
||||||
|
if (startupdlg) {
|
||||||
|
SetPage(TAB_MESSAGES);
|
||||||
|
EnableConfig(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_close(void)
|
||||||
|
{
|
||||||
|
if (!startupdlg) return 1;
|
||||||
|
DestroyWindow(startupdlg);
|
||||||
|
startupdlg = NULL;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_puts(const char *buf)
|
||||||
|
{
|
||||||
|
const char *p = NULL, *q = NULL;
|
||||||
|
char workbuf[1024];
|
||||||
|
static int newline = 0;
|
||||||
|
int curlen, linesbefore, linesafter;
|
||||||
|
HWND edctl;
|
||||||
|
int vis;
|
||||||
|
|
||||||
|
if (!startupdlg) return 1;
|
||||||
|
|
||||||
|
edctl = pages[TAB_MESSAGES];
|
||||||
|
if (!edctl) return -1;
|
||||||
|
|
||||||
|
vis = ((int)SendMessage(GetDlgItem(startupdlg, WIN_STARTWIN_TABCTL), TCM_GETCURSEL,0,0) == TAB_MESSAGES);
|
||||||
|
|
||||||
|
if (vis) SendMessage(edctl, WM_SETREDRAW, FALSE,0);
|
||||||
|
curlen = SendMessage(edctl, WM_GETTEXTLENGTH, 0,0);
|
||||||
|
SendMessage(edctl, EM_SETSEL, (WPARAM)curlen, (LPARAM)curlen);
|
||||||
|
linesbefore = SendMessage(edctl, EM_GETLINECOUNT, 0,0);
|
||||||
|
p = buf;
|
||||||
|
while (*p) {
|
||||||
|
if (newline) {
|
||||||
|
SendMessage(edctl, EM_REPLACESEL, 0, (LPARAM)"\r\n");
|
||||||
|
newline = 0;
|
||||||
|
}
|
||||||
|
q = p;
|
||||||
|
while (*q && *q != '\n') q++;
|
||||||
|
memcpy(workbuf, p, q-p);
|
||||||
|
if (*q == '\n') {
|
||||||
|
if (!q[1]) {
|
||||||
|
newline = 1;
|
||||||
|
workbuf[q-p] = 0;
|
||||||
|
} else {
|
||||||
|
workbuf[q-p] = '\r';
|
||||||
|
workbuf[q-p+1] = '\n';
|
||||||
|
workbuf[q-p+2] = 0;
|
||||||
|
}
|
||||||
|
p = q+1;
|
||||||
|
} else {
|
||||||
|
workbuf[q-p] = 0;
|
||||||
|
p = q;
|
||||||
|
}
|
||||||
|
SendMessage(edctl, EM_REPLACESEL, 0, (LPARAM)workbuf);
|
||||||
|
}
|
||||||
|
linesafter = SendMessage(edctl, EM_GETLINECOUNT, 0,0);
|
||||||
|
SendMessage(edctl, EM_LINESCROLL, 0, linesafter-linesbefore);
|
||||||
|
if (vis) SendMessage(edctl, WM_SETREDRAW, TRUE,0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_settitle(const char *str)
|
||||||
|
{
|
||||||
|
if (!startupdlg) return 1;
|
||||||
|
SetWindowText(startupdlg, str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int startwin_idle(void *v)
|
||||||
|
{
|
||||||
|
if (!startupdlg || !IsWindow(startupdlg)) return 0;
|
||||||
|
if (IsDialogMessage(startupdlg, (MSG*)v)) return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern int xdimgame, ydimgame, bppgame, forcesetup;
|
||||||
|
|
||||||
|
int startwin_run(void)
|
||||||
|
{
|
||||||
|
MSG msg;
|
||||||
|
if (!startupdlg) return 1;
|
||||||
|
|
||||||
|
done = -1;
|
||||||
|
|
||||||
|
SetPage(TAB_CONFIG);
|
||||||
|
EnableConfig(1);
|
||||||
|
|
||||||
|
settings.fullscreen = fullscreen;
|
||||||
|
settings.xdim3d = xdimgame;
|
||||||
|
settings.ydim3d = ydimgame;
|
||||||
|
settings.bpp3d = bppgame;
|
||||||
|
settings.forcesetup = forcesetup;
|
||||||
|
PopulateForm();
|
||||||
|
|
||||||
|
while (done < 0) {
|
||||||
|
switch (GetMessage(&msg, NULL, 0,0)) {
|
||||||
|
case 0: done = 1; break;
|
||||||
|
case -1: return -1;
|
||||||
|
default:
|
||||||
|
if (IsWindow(startupdlg) && IsDialogMessage(startupdlg, &msg)) break;
|
||||||
|
TranslateMessage(&msg);
|
||||||
|
DispatchMessage(&msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SetPage(TAB_MESSAGES);
|
||||||
|
EnableConfig(0);
|
||||||
|
if (done) {
|
||||||
|
fullscreen = settings.fullscreen;
|
||||||
|
xdimgame = settings.xdim3d;
|
||||||
|
ydimgame = settings.ydim3d;
|
||||||
|
bppgame = settings.bpp3d;
|
||||||
|
forcesetup = settings.forcesetup;
|
||||||
|
}
|
||||||
|
|
||||||
|
return done;
|
||||||
|
}
|
17
polymer/eduke32/source/testgame/src/startwin.game.h
Normal file
17
polymer/eduke32/source/testgame/src/startwin.game.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// resource ids
|
||||||
|
#define WIN_STARTWIN 1000
|
||||||
|
#define WIN_STARTWINPAGE_CONFIG 2000
|
||||||
|
#define WIN_STARTWIN_BITMAP 100 // banner bitmap
|
||||||
|
#define WIN_STARTWIN_TABCTL 101
|
||||||
|
#define WIN_STARTWIN_CANCEL IDCANCEL
|
||||||
|
#define WIN_STARTWIN_START IDOK
|
||||||
|
|
||||||
|
#define WIN_STARTWIN_MESSAGES 104 // output list box
|
||||||
|
|
||||||
|
#define RSRC_ICON 100
|
||||||
|
#define RSRC_BMP 200
|
||||||
|
|
||||||
|
// config page
|
||||||
|
#define IDCFULLSCREEN 100
|
||||||
|
#define IDC3DVMODE 101
|
||||||
|
#define IDCALWAYSSHOW 102
|
Loading…
Reference in a new issue