diff options
Diffstat (limited to 'misc')
135 files changed, 6191 insertions, 0 deletions
diff --git a/misc/3ds/Makefile b/misc/3ds/Makefile new file mode 100644 index 0000000..f3aaf3a --- /dev/null +++ b/misc/3ds/Makefile @@ -0,0 +1,136 @@ +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITARM)),) +$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITARM)/3ds_rules + +#--------------------------------------------------------------------------------- +# configurable options +#--------------------------------------------------------------------------------- +APP_ICON := $(TOPDIR)/misc/3ds/icon.png +APP_TITLE := ClassiCube +APP_DESCRIPTION := Simple block building sandbox +APP_AUTHOR := UnknownShadow200 +TARGET := ClassiCube-3ds + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing header files +#--------------------------------------------------------------------------------- +BUILD := build-3ds +SOURCES := src misc/3ds third_party/bearssl/src +INCLUDES := third_party/bearssl/inc + +CIA_BANNER_BIN := $(TOPDIR)/misc/3ds/banner.bin +CIA_ICON_BIN := $(TOPDIR)/misc/3ds/icon.bin +CIA_SPEC_RSF := $(TOPDIR)/misc/3ds/spec.rsf + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft + +CFLAGS := -g -Wall -O2 -mword-relocations \ + -ffunction-sections \ + $(ARCH) + +CFLAGS += $(INCLUDE) -D__3DS__ + +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) + +LIBS := -lctru -lm + + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) + +export LD := $(CC) + +export OFILES_SOURCES := $(CFILES:.c=.o) $(SFILES:.s=.o) + +export OFILES_BIN := $(PICAFILES:.v.pica=.shbin.o) + +export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(CTRULIB),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(CTRULIB),-L$(dir)/lib) + +export _3DSXFLAGS = --smdh=$(CURDIR)/$(TARGET).smdh + +.PHONY: all clean + +#--------------------------------------------------------------------------------- +all: $(BUILD) + $(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/3ds/Makefile + +$(BUILD): + mkdir -p $@ + +#--------------------------------------------------------------------------------- +clean: + echo clean ... + rm -fr $(BUILD) $(TARGET).cia $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf + +#--------------------------------------------------------------------------------- +else + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).cia : $(OUTPUT).3dsx makerom + ./makerom -f cia -o "$(OUTPUT).cia" -elf "$(OUTPUT).elf" -rsf "$(CIA_SPEC_RSF)" -icon "$(CIA_ICON_BIN)" -banner "$(CIA_BANNER_BIN)" -exefslogo -target t + +makerom: + wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-ubuntu_x86_64.zip + unzip makerom-v0.18.3-ubuntu_x86_64.zip + chmod +x makerom + +$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh + +$(OUTPUT).elf : $(OFILES) + +#--------------------------------------------------------------------------------- +.PRECIOUS : %.shbin +#--------------------------------------------------------------------------------- + +%.shbin.o : %.v.pica + $(eval CUR_SRC := $<) + $(eval CUR_FILE := $(notdir $(CUR_SRC))) + $(eval CUR_BIN := $(CURDIR)/$(subst .v.pica,.shbin,$(CUR_FILE))) + picasso -o $(CUR_BIN) $(CUR_SRC) + bin2s $(CUR_BIN) | $(AS) -o $(CUR_BIN).o + + +-include $(DEPSDIR)/*.d + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- diff --git a/misc/3ds/audio.wav b/misc/3ds/audio.wav new file mode 100644 index 0000000..02f3d15 --- /dev/null +++ b/misc/3ds/audio.wav Binary files differdiff --git a/misc/3ds/banner.bin b/misc/3ds/banner.bin new file mode 100644 index 0000000..d93f930 --- /dev/null +++ b/misc/3ds/banner.bin Binary files differdiff --git a/misc/3ds/banner.png b/misc/3ds/banner.png new file mode 100644 index 0000000..8f9c566 --- /dev/null +++ b/misc/3ds/banner.png Binary files differdiff --git a/misc/3ds/coloured.v.pica b/misc/3ds/coloured.v.pica new file mode 100644 index 0000000..7954ed9 --- /dev/null +++ b/misc/3ds/coloured.v.pica @@ -0,0 +1,33 @@ +; Vertex shader for rendering coloured vertices for PICA200 GPU on the Nintendo 3DS +; ================================================================================== + +; Uniforms +.fvec MVP[4]; + +; Constants +.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627) + +; Outputs +.out out_pos position +.out out_col color + +; Inputs (defined as aliases for convenience) +.alias in_pos v0 +.alias in_col v1 + +.proc main + ; r0 = in_pos + mov r0, in_pos + + ; out_pos = MVP * r0 + dp4 out_pos.x, MVP[0], r0 + dp4 out_pos.y, MVP[1], r0 + dp4 out_pos.z, MVP[2], r0 + dp4 out_pos.w, MVP[3], r0 + + ; out_col = in_col * ONE_DIV_255 + mul out_col, ONE_DIV_255, in_col + + end +.end + diff --git a/misc/3ds/icon.bin b/misc/3ds/icon.bin new file mode 100644 index 0000000..09941bc --- /dev/null +++ b/misc/3ds/icon.bin Binary files differdiff --git a/misc/3ds/icon.png b/misc/3ds/icon.png new file mode 100644 index 0000000..7d7a53c --- /dev/null +++ b/misc/3ds/icon.png Binary files differdiff --git a/misc/3ds/offset.v.pica b/misc/3ds/offset.v.pica new file mode 100644 index 0000000..9a462db --- /dev/null +++ b/misc/3ds/offset.v.pica @@ -0,0 +1,38 @@ +; Vertex shader for rendering textured vertices with an offset for PICA200 GPU on the Nintendo 3DS +; ================================================================================== + +; Uniforms +.fvec MVP[4]; +.fvec tex_offset; + +; Constants +.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627) + +; Outputs +.out out_pos position +.out out_col color +.out out_tex texcoord0 + +; Inputs (defined as aliases for convenience) +.alias in_pos v0 +.alias in_col v1 +.alias in_tex v2 + +.proc main + ; r0 = in_pos + mov r0, in_pos + + ; out_pos = MVP * r0 + dp4 out_pos.x, MVP[0], r0 + dp4 out_pos.y, MVP[1], r0 + dp4 out_pos.z, MVP[2], r0 + dp4 out_pos.w, MVP[3], r0 + + ; out_col = in_col * ONE_DIV_255 + mul out_col, ONE_DIV_255, in_col + ; out_tex = in_tex + tex_offset + add out_tex, tex_offset, in_tex + + end +.end + diff --git a/misc/3ds/readme.md b/misc/3ds/readme.md new file mode 100644 index 0000000..8590a8d --- /dev/null +++ b/misc/3ds/readme.md @@ -0,0 +1,5 @@ +Commands used to generate the .bin files: + +`bannertool makebanner -i banner.png -a audio.wav -o banner.bin` + +`bannertool makesmdh -s ClassiCube -l ClassiCube -p UnknownShadow200 -i icon.png -o icon.bin` \ No newline at end of file diff --git a/misc/3ds/spec.rsf b/misc/3ds/spec.rsf new file mode 100644 index 0000000..9299a63 --- /dev/null +++ b/misc/3ds/spec.rsf @@ -0,0 +1,204 @@ +# https://github.com/msikma/3ds-tpl +# https://gist.github.com/jakcron/9f9f02ffd94d98a72632 + +BasicInfo: + Title : ClassiCube + CompanyCode : "00" + ProductCode : CCBE + ContentType : Application + Logo : Nintendo + +TitleInfo: + UniqueId : 0x00CCBE + Category : Application + +CardInfo: + MediaSize : 128MB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB + MediaType : Card1 # Card1 / Card2 + CardDevice : NorFlash # NorFlash(Pick this if you use savedata) / None + + +Option: + UseOnSD : true # true if App is to be installed to SD + FreeProductCode : true # Removes limitations on ProductCode + MediaFootPadding : false # If true CCI files are created with padding + EnableCrypt : false # Enables encryption for NCCH and CIA + EnableCompress : true # Compresses exefs code + +AccessControlInfo: + #UseExtSaveData : true + #ExtSaveDataId: 0xff3ff + #UseExtendedSaveDataAccessControl: true + #AccessibleSaveDataIds: [0x101, 0x202, 0x303, 0x404, 0x505, 0x606] + +SystemControlInfo: + SaveDataSize: 128KB + RemasterVersion: 0 + StackSize: 0x40000 + +AccessControlInfo: + FileSystemAccess: + - Debug + - DirectSdmc + - DirectSdmcWrite + + IdealProcessor : 0 + AffinityMask : 1 + + Priority : 16 + + MaxCpu : 0x9E # Default + DisableDebug : false + EnableForceDebug : false + CanWriteSharedPage : false + CanUsePrivilegedPriority : false + CanUseNonAlphabetAndNumber : false + PermitMainFunctionArgument : false + CanShareDeviceMemory : false + RunnableOnSleep : false + SpecialMemoryArrange : false + CoreVersion : 2 + DescVersion : 2 + + ReleaseKernelMajor : "02" + ReleaseKernelMinor : "33" + MemoryType : Application + HandleTableSize: 512 + + # New3DS Exclusive Process Settings + SystemModeExt : 124MB # Legacy(Default)/124MB/178MB Legacy:Use Old3DS SystemMode + CpuSpeed : 804MHz # 268MHz(Default)/804MHz + EnableL2Cache : true # false(default)/true + CanAccessCore2 : true + + # Virtual Address Mappings + IORegisterMapping: + - 1ff50000-1ff57fff # DSP memory + - 1ff70000-1ff77fff + MemoryMapping: + - 1f000000-1f5fffff:r # VRAM + + SystemCallAccess: + ArbitrateAddress: 34 + Break: 60 + CancelTimer: 28 + ClearEvent: 25 + ClearTimer: 29 + CloseHandle: 35 + ConnectToPort: 45 + ControlMemory: 1 + CreateAddressArbiter: 33 + CreateEvent: 23 + CreateMemoryBlock: 30 + CreateMutex: 19 + CreateSemaphore: 21 + CreateThread: 8 + CreateTimer: 26 + DuplicateHandle: 39 + ExitProcess: 3 + ExitThread: 9 + GetCurrentProcessorNumber: 17 + GetHandleInfo: 41 + GetProcessId: 53 + GetProcessIdOfThread: 54 + GetProcessIdealProcessor: 6 + GetProcessInfo: 43 + GetResourceLimit: 56 + GetResourceLimitCurrentValues: 58 + GetResourceLimitLimitValues: 57 + GetSystemInfo: 42 + GetSystemTick: 40 + GetThreadContext: 59 + GetThreadId: 55 + GetThreadIdealProcessor: 15 + GetThreadInfo: 44 + GetThreadPriority: 11 + MapMemoryBlock: 31 + OutputDebugString: 61 + QueryMemory: 2 + ReleaseMutex: 20 + ReleaseSemaphore: 22 + SendSyncRequest1: 46 + SendSyncRequest2: 47 + SendSyncRequest3: 48 + SendSyncRequest4: 49 + SendSyncRequest: 50 + SetThreadPriority: 12 + SetTimer: 27 + SignalEvent: 24 + SleepThread: 10 + UnmapMemoryBlock: 32 + WaitSynchronization1: 36 + WaitSynchronizationN: 37 + InterruptNumbers: + + # Service List + # Maximum 34 services (32 if firmware is prior to 9.3.0) + ServiceAccessControl: + - APT:U + - $hioFIO + - $hostio0 + - $hostio1 + - ac:u + - boss:U + - cam:u + - cecd:u + - cfg:u + - dlp:FKCL + - dlp:SRVR + - dsp::DSP + - frd:u + - fs:USER + - gsp::Gpu + - hid:USER + - mic:u + - ndm:u + - news:s + - nwm::UDS + - ptm:u + - pxi:dev + - soc:U + - gsp::Lcd + - y2r:u + - ldr:ro + - ir:USER + - ir:u + - csnd:SND + - am:u + - ns:s + +SystemControlInfo: + # Modules that run services listed above should be included below + # Maximum 48 dependencies + # If a module is listed that isn't present on the 3DS, the title will get stuck at the logo (3ds waves) + # So act, nfc and qtm are commented for 4.x support. Uncomment if you need these. + # <module name>:<module titleid> + Dependency: + ac: 0x0004013000002402L + am: 0x0004013000001502L + boss: 0x0004013000003402L + camera: 0x0004013000001602L + cecd: 0x0004013000002602L + cfg: 0x0004013000001702L + codec: 0x0004013000001802L + csnd: 0x0004013000002702L + dlp: 0x0004013000002802L + dsp: 0x0004013000001a02L + friends: 0x0004013000003202L + gpio: 0x0004013000001b02L + gsp: 0x0004013000001c02L + hid: 0x0004013000001d02L + i2c: 0x0004013000001e02L + ir: 0x0004013000003302L + mcu: 0x0004013000001f02L + mic: 0x0004013000002002L + ndm: 0x0004013000002b02L + news: 0x0004013000003502L + nim: 0x0004013000002c02L + nwm: 0x0004013000002d02L + pdn: 0x0004013000002102L + ps: 0x0004013000003102L + ptm: 0x0004013000002202L + ro: 0x0004013000003702L + socket: 0x0004013000002e02L + spi: 0x0004013000002302L \ No newline at end of file diff --git a/misc/3ds/textured.v.pica b/misc/3ds/textured.v.pica new file mode 100644 index 0000000..f97d88e --- /dev/null +++ b/misc/3ds/textured.v.pica @@ -0,0 +1,37 @@ +; Vertex shader for rendering textured vertices for PICA200 GPU on the Nintendo 3DS +; ================================================================================== + +; Uniforms +.fvec MVP[4]; + +; Constants +.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627) + +; Outputs +.out out_pos position +.out out_col color +.out out_tex texcoord0 + +; Inputs (defined as aliases for convenience) +.alias in_pos v0 +.alias in_col v1 +.alias in_tex v2 + +.proc main + ; r0 = in_pos + mov r0, in_pos + + ; out_pos = MVP * r0 + dp4 out_pos.x, MVP[0], r0 + dp4 out_pos.y, MVP[1], r0 + dp4 out_pos.z, MVP[2], r0 + dp4 out_pos.w, MVP[3], r0 + + ; out_col = in_col * ONE_DIV_255 + mul out_col, ONE_DIV_255, in_col + ; out_tex = in_tex + mov out_tex, in_tex + + end +.end + diff --git a/misc/CCicon.ico b/misc/CCicon.ico new file mode 100644 index 0000000..c4d2991 --- /dev/null +++ b/misc/CCicon.ico Binary files differdiff --git a/misc/CCicon.png b/misc/CCicon.png new file mode 100644 index 0000000..4c38053 --- /dev/null +++ b/misc/CCicon.png Binary files differdiff --git a/misc/bitmap_font_gen.cs b/misc/bitmap_font_gen.cs new file mode 100644 index 0000000..13b0713 --- /dev/null +++ b/misc/bitmap_font_gen.cs @@ -0,0 +1,41 @@ +void Main() +{ + Console.WriteLine("static cc_uint8 font_bitmap[][8] = {"); + using (Bitmap bmp = new Bitmap(@"C:\classicube-dev\default.png")) + { + for (int CY = 0; CY < 16; CY++) + for (int CX = 0; CX < 16; CX++) + DecodeTile(bmp, CX, CY); + } + Console.WriteLine("}"); +} + +static void DecodeTile(Bitmap bmp, int cx, int cy) { + int c = (cy << 4) | cx; + if (c <= 32 || c >= 127) return; + + int X = cx * 8, Y = cy * 8; + + Console.Write("\t{ "); + + for (int y = Y; y < Y + 8; y++) { + uint mask = 0; + int shift = 0; + + for (int x = X; x < X + 8; x++, shift++) { + Color P = bmp.GetPixel(x, y); + + if (P.A == 0) { + mask |= 0u << shift; + } else if (P.R == 255 && P.G == 255 && P.B == 255 && P.A == 255) { + mask |= 1u << shift; + } else { + throw new InvalidOperationException("unsupported colour" + P); + } + } + + string suffix = y == Y + 7 ? " " : ","; + Console.Write("0x" + mask.ToString("X2") + suffix); + } + Console.WriteLine("}, /* " + (char)c + " */"); +} diff --git a/misc/build_scripts/build_server.py b/misc/build_scripts/build_server.py new file mode 100644 index 0000000..d3ea564 --- /dev/null +++ b/misc/build_scripts/build_server.py @@ -0,0 +1,64 @@ +from http.server import HTTPServer, SimpleHTTPRequestHandler +import os +import subprocess + +build_files = { + '/ClassiCube.exe' : 'cc-w32-d3d.exe', '/ClassiCube.opengl.exe' : 'cc-w32-ogl.exe', + '/ClassiCube.64.exe' : 'cc-w64-d3d.exe', '/ClassiCube.64-opengl.exe' : 'cc-w64-ogl.exe', + '/ClassiCube.32' : 'cc-nix32', '/ClassiCube' : 'cc-nix64', + '/ClassiCube.osx' : 'cc-osx32', '/ClassiCube.64.osx' : 'cc-osx64', + '/ClassiCube.js' : 'cc.js', '/ClassiCube.apk' : 'cc.apk', + '/ClassiCube.rpi' : 'cc-rpi', + '/cc-nix32-gl2' : 'cc-nix32-gl2', '/cc-nix64-gl2' : 'cc-nix64-gl2', + '/cc-osx32-gl2' : 'cc-osx32-gl2', '/cc-osx64-gl2' : 'cc-osx64-gl2', +} + +release_files = { + '/win32' : 'win32/ClassiCube.exe', '/win64' : 'win64/ClassiCube.exe', + '/osx32' : 'osx32/ClassiCube.tar.gz', '/osx64' : 'osx64/ClassiCube.tar.gz', + '/mac32' : 'mac32/ClassiCube.tar.gz', '/mac64' : 'mac64/ClassiCube.tar.gz', + '/nix32' : 'nix32/ClassiCube.tar.gz', '/nix64' : 'nix64/ClassiCube.tar.gz', + '/rpi32' : 'rpi32/ClassiCube.tar.gz', +} + +def run_script(file): + args = ["sh", file] + su = subprocess.Popen(args) + return su.wait() + +class Handler(SimpleHTTPRequestHandler): + + def serve_script(self, file, msg): + ret = run_script(file) + self.send_response(200) + self.end_headers() + self.wfile.write(msg % ret) + + def do_GET(self): + if self.path in build_files: + self.serve_exe('client/src/' + build_files[self.path]) + elif self.path in release_files: + self.serve_exe('client/release/' + release_files[self.path]) + elif self.path == '/rebuild': + self.serve_script('build.sh', 'Rebuild client (%s)') + elif self.path == '/release': + self.serve_script('build_release.sh', 'Package release (%s)') + else: + self.send_error(404, "Unknown action") + return + + def serve_exe(self, path): + try: + f = open(path, 'rb') + fs = os.fstat(f.fileno()) + self.send_response(200) + self.send_header("Content-type", "application/octet-stream") + self.send_header("Content-Length", str(fs[6])) + self.end_headers() + self.copyfile(f, self.wfile) + f.close() + except IOError: + self.send_error(404, "File not found") + +httpd = HTTPServer(('', 80), Handler) +httpd.serve_forever() diff --git a/misc/build_scripts/buildbot_plugin.sh b/misc/build_scripts/buildbot_plugin.sh new file mode 100644 index 0000000..8ddd47a --- /dev/null +++ b/misc/build_scripts/buildbot_plugin.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# This is similar to buildbot.sh but builds plugins for the game instead +# Some variables must be set before invoking this script. See buildtestplugin.sh +cd $ROOT +echo $(pwd) +FILES=$(find . -type f -name "*.c" | tr '\n' ' ') +FLAGS="-shared -fPIC -O1 -s -std=c99" +echo $FILES + +# ----------------------------- compile linux +NIX32_CC="gcc -m32" +NIX64_CC="gcc -m64" +NIX_FLAGS="-nostartfiles -Wl,--entry=0" + +echo "Compiling linux32.." +$NIX32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_nix32.so $FLAGS $NIX_FLAGS + +echo "Compiling linux64.." +$NIX64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_nix64.so $FLAGS $NIX_FLAGS + +# ----------------------------- compile macOS +MAC32_CC=~/osx/target/bin/o32-clang +MAC64_CC=~/osx/target/bin/o64-clang +MAC_FLAGS="-undefined dynamic_lookup" + +echo "Compiling mac32.." +$MAC32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_mac32.dylib $FLAGS $MAC_FLAGS + +echo "Compiling mac64.." +$MAC64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_mac64.dylib $FLAGS $MAC_FLAGS + +# ----------------------------- compile Windows +WIN32_CC=i686-w64-mingw32-gcc +WIN64_CC=x86_64-w64-mingw32-gcc +# TODO: Figure out why we sometimes need this with mingw +# If we don't include nostart files for some plugins, get a +# ertr000001.o:(.rdata+0x0): undefined reference to `_pei386_runtime_relocator' +# Seems to happen if you use exported variables from the game +if [ -z "$LITE_MODE" ]; then + WIN_FLAGS="" +else + WIN_FLAGS="-nostartfiles -Wl,--entry=0" +fi +# NOTE: You also need to install 'mingw-w64-tools' package for gendef + +echo "Compiling win32" +rm ClassiCube.exe ClassiCube.def +cp ~/client/src/cc-w32-d3d.exe ClassiCube.exe +gendef ClassiCube.exe +i686-w64-mingw32-dlltool -d ClassiCube.def -l libClassiCube.a -D ClassiCube.exe +$WIN32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_win32.dll $FLAGS $WIN_FLAGS -L . -lClassiCube + +echo "Compiling win64" +rm ClassiCube.exe ClassiCube.def +cp ~/client/src/cc-w64-d3d.exe ClassiCube.exe +gendef ClassiCube.exe +x86_64-w64-mingw32-dlltool -d ClassiCube.def -l libClassiCube.a -D ClassiCube.exe +$WIN64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_win64.dll $FLAGS $WIN_FLAGS -L . -lClassiCube + +# ----------------------------- compile raspberry pi +RPI_CC=~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3 +RPI_FLAGS="-nostartfiles -Wl,--entry=0" + +echo "Compiling rpi" +$RPI_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_rpi.so $FLAGS $RPI_FLAGS \ No newline at end of file diff --git a/misc/build_scripts/buildtestplugin.sh b/misc/build_scripts/buildtestplugin.sh new file mode 100644 index 0000000..096b372 --- /dev/null +++ b/misc/build_scripts/buildtestplugin.sh @@ -0,0 +1,4 @@ +#!/bin/bash +ROOT=~/plugins/test/ +PLUGIN=test +source ./buildbot_plugin.sh \ No newline at end of file diff --git a/misc/build_scripts/makerelease.sh b/misc/build_scripts/makerelease.sh new file mode 100644 index 0000000..0c51535 --- /dev/null +++ b/misc/build_scripts/makerelease.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# paths, change these as needed +SOURCE_DIR=~/client/src +MISC_DIR=~/client/misc +BUILDS_DIR=~/client/release + +# ./ClassiCube +make_nix_tar() { + cp $SOURCE_DIR/$1 ClassiCube + chmod +x ClassiCube + tar -zcvf ClassiCube.tar.gz ClassiCube + rm ClassiCube +} + +# ./ClassiCube.app/Info.plist +# ./ClassiCube.app/Contents/MacOS/ClassiCube +# ./ClassiCube.app/Resources/ClassiCube.icns +make_mac_tar() { + mkdir ClassiCube.app + mkdir ClassiCube.app/Contents + mkdir ClassiCube.app/Contents/MacOS + mkdir ClassiCube.app/Contents/Resources + + cp $SOURCE_DIR/$1 ClassiCube.app/Contents/MacOS/ClassiCube + chmod +x ClassiCube.app/Contents/MacOS/ClassiCube + + cp $MISC_DIR/info.plist ClassiCube.app/Contents/Info.plist + cp $MISC_DIR/CCIcon.icns ClassiCube.app/Contents/Resources/ClassiCube.icns + tar -zcvf ClassiCube.tar.gz ClassiCube.app + rm -rf ClassiCube.app +} + + +mkdir -p $BUILDS_DIR +mkdir -p $BUILDS_DIR/win32 $BUILDS_DIR/win64 $BUILDS_DIR/osx32 $BUILDS_DIR/osx64 +mkdir -p $BUILDS_DIR/nix32 $BUILDS_DIR/nix64 $BUILDS_DIR/mac32 $BUILDS_DIR/mac64 +mkdir -p $BUILDS_DIR/rpi32 + +# edge doesn't respect download attribute, and having ClassiCube.64.exe breaks plugins +cp $SOURCE_DIR/cc-w32-d3d.exe $BUILDS_DIR/win32/ClassiCube.exe +cp $SOURCE_DIR/cc-w64-d3d.exe $BUILDS_DIR/win64/ClassiCube.exe + +# use tar to preserve chmod +x, so users don't have to manually do it +cd $BUILDS_DIR/osx32/ +make_nix_tar cc-osx32 +cd $BUILDS_DIR/osx64/ +make_nix_tar cc-osx64 +cd $BUILDS_DIR/nix32/ +make_nix_tar cc-nix32 +cd $BUILDS_DIR/nix64/ +make_nix_tar cc-nix64 +cd $BUILDS_DIR/rpi32/ +make_nix_tar cc-rpi + +# generate ClassiCube.app for mac users +cd $BUILDS_DIR/mac32/ +make_mac_tar cc-osx32 +cd $BUILDS_DIR/mac64/ +make_mac_tar cc-osx64 diff --git a/misc/build_scripts/notify.py b/misc/build_scripts/notify.py new file mode 100644 index 0000000..94e659a --- /dev/null +++ b/misc/build_scripts/notify.py @@ -0,0 +1,34 @@ +import requests, re, datetime, json, time, os +# Any resemblence to any discord bots written by 123DMWM is purely coincidental. I swear. + +# The URL of the discord channel webhook to notify +# You can generate a webhook by right clicking channel -> Edit Channel -> Webhooks +WEBHOOK_URL = '' +# The ID of the user you want to ping on a build failure +# You can get this by right clicking user -> Copy ID +# You may have to go to settings -> Appearance -> Check Developer Mode to see this option +TARGET_USER = '' + +def notify_webhook(body): + try: + webhook_data = { + "username": "CC BuildBot", + "avatar_url": "https://static.classicube.net/img/cc-cube-small.png", + "content" : body + } + + r = requests.post(WEBHOOK_URL, json=webhook_data) + print("BuildNotify response: " + r.text) + except Exception as e: + print("BuildNotify failed: %s" % (e)) + +cc_errors = None +try: + with open(sys.argv[1], 'r') as file: + cc_errors = file.read() +except FileNotFoundError: + # nothing to as no compile errors + pass + +if cc_errors: + notify_webhook('**Houston, we have a problem** <@%s>\n\n%s' % (TARGET_USER, cc_errors)) \ No newline at end of file diff --git a/misc/build_scripts/readme.md b/misc/build_scripts/readme.md new file mode 100644 index 0000000..0ff1d43 --- /dev/null +++ b/misc/build_scripts/readme.md @@ -0,0 +1,9 @@ +This folder contains build scripts for automatically compiling ClassiCube + +|File|Description| +|--------|-------| +|buildbot.sh | Compiles the game to optimised executables (with icons) | +|buildbot_plugin.sh | Compiles specified plugin for various platforms | +|buildtestplugin.sh | Example script for how to use buildbot_plugin.sh | +|makerelease.sh | Packages the executables to produce files for a release | +|notify.py | Notifies a user on Discord if buildbot fails | \ No newline at end of file diff --git a/misc/build_scripts/upload_build.sh b/misc/build_scripts/upload_build.sh new file mode 100644 index 0000000..a3960d3 --- /dev/null +++ b/misc/build_scripts/upload_build.sh @@ -0,0 +1,13 @@ +# upload_build.sh [TARGET NAME] [SOURCE FILE] +# e.g. ~/upload_build.sh latest/ClassiCube.ipa cc.ipa +API_URL= +API_KEY= + +if [ -s $2 ]; then + curl $API_URL \ + --header "X-Build-Key:$API_KEY" \ + --header "X-Build-Name:$1" \ + --data-binary @$2 +else + echo "Missing or empty file: $2" +fi diff --git a/misc/certs.h b/misc/certs.h new file mode 100644 index 0000000..3157fc2 --- /dev/null +++ b/misc/certs.h @@ -0,0 +1,348 @@ +// This file includes the following root certificates: +// - DigiCert Global Root (dropbox.com) +// - DigiCert Global Root G2 (resources.download.minecraft.net) +// - ISRG Root X1 (catbox.moe) +// - ISRG Root X2 (123dmwm.com, garbage.loan) +// - Baltimore CyberTrust Root (classicube.net) +// - USERTrust RSA (imgur.com) +// Generated using "brssl -ta [cert 1] [cert 2].." from BearSSL + +static const unsigned char TA0_DN[] = { + 0x30, 0x61, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41 +}; + +static const unsigned char TA0_RSA_N[] = { + 0xE2, 0x3B, 0xE1, 0x11, 0x72, 0xDE, 0xA8, 0xA4, 0xD3, 0xA3, 0x57, 0xAA, + 0x50, 0xA2, 0x8F, 0x0B, 0x77, 0x90, 0xC9, 0xA2, 0xA5, 0xEE, 0x12, 0xCE, + 0x96, 0x5B, 0x01, 0x09, 0x20, 0xCC, 0x01, 0x93, 0xA7, 0x4E, 0x30, 0xB7, + 0x53, 0xF7, 0x43, 0xC4, 0x69, 0x00, 0x57, 0x9D, 0xE2, 0x8D, 0x22, 0xDD, + 0x87, 0x06, 0x40, 0x00, 0x81, 0x09, 0xCE, 0xCE, 0x1B, 0x83, 0xBF, 0xDF, + 0xCD, 0x3B, 0x71, 0x46, 0xE2, 0xD6, 0x66, 0xC7, 0x05, 0xB3, 0x76, 0x27, + 0x16, 0x8F, 0x7B, 0x9E, 0x1E, 0x95, 0x7D, 0xEE, 0xB7, 0x48, 0xA3, 0x08, + 0xDA, 0xD6, 0xAF, 0x7A, 0x0C, 0x39, 0x06, 0x65, 0x7F, 0x4A, 0x5D, 0x1F, + 0xBC, 0x17, 0xF8, 0xAB, 0xBE, 0xEE, 0x28, 0xD7, 0x74, 0x7F, 0x7A, 0x78, + 0x99, 0x59, 0x85, 0x68, 0x6E, 0x5C, 0x23, 0x32, 0x4B, 0xBF, 0x4E, 0xC0, + 0xE8, 0x5A, 0x6D, 0xE3, 0x70, 0xBF, 0x77, 0x10, 0xBF, 0xFC, 0x01, 0xF6, + 0x85, 0xD9, 0xA8, 0x44, 0x10, 0x58, 0x32, 0xA9, 0x75, 0x18, 0xD5, 0xD1, + 0xA2, 0xBE, 0x47, 0xE2, 0x27, 0x6A, 0xF4, 0x9A, 0x33, 0xF8, 0x49, 0x08, + 0x60, 0x8B, 0xD4, 0x5F, 0xB4, 0x3A, 0x84, 0xBF, 0xA1, 0xAA, 0x4A, 0x4C, + 0x7D, 0x3E, 0xCF, 0x4F, 0x5F, 0x6C, 0x76, 0x5E, 0xA0, 0x4B, 0x37, 0x91, + 0x9E, 0xDC, 0x22, 0xE6, 0x6D, 0xCE, 0x14, 0x1A, 0x8E, 0x6A, 0xCB, 0xFE, + 0xCD, 0xB3, 0x14, 0x64, 0x17, 0xC7, 0x5B, 0x29, 0x9E, 0x32, 0xBF, 0xF2, + 0xEE, 0xFA, 0xD3, 0x0B, 0x42, 0xD4, 0xAB, 0xB7, 0x41, 0x32, 0xDA, 0x0C, + 0xD4, 0xEF, 0xF8, 0x81, 0xD5, 0xBB, 0x8D, 0x58, 0x3F, 0xB5, 0x1B, 0xE8, + 0x49, 0x28, 0xA2, 0x70, 0xDA, 0x31, 0x04, 0xDD, 0xF7, 0xB2, 0x16, 0xF2, + 0x4C, 0x0A, 0x4E, 0x07, 0xA8, 0xED, 0x4A, 0x3D, 0x5E, 0xB5, 0x7F, 0xA3, + 0x90, 0xC3, 0xAF, 0x27 +}; + +static const unsigned char TA0_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA1_DN[] = { + 0x30, 0x61, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x47, 0x32 +}; + +static const unsigned char TA1_RSA_N[] = { + 0xBB, 0x37, 0xCD, 0x34, 0xDC, 0x7B, 0x6B, 0xC9, 0xB2, 0x68, 0x90, 0xAD, + 0x4A, 0x75, 0xFF, 0x46, 0xBA, 0x21, 0x0A, 0x08, 0x8D, 0xF5, 0x19, 0x54, + 0xC9, 0xFB, 0x88, 0xDB, 0xF3, 0xAE, 0xF2, 0x3A, 0x89, 0x91, 0x3C, 0x7A, + 0xE6, 0xAB, 0x06, 0x1A, 0x6B, 0xCF, 0xAC, 0x2D, 0xE8, 0x5E, 0x09, 0x24, + 0x44, 0xBA, 0x62, 0x9A, 0x7E, 0xD6, 0xA3, 0xA8, 0x7E, 0xE0, 0x54, 0x75, + 0x20, 0x05, 0xAC, 0x50, 0xB7, 0x9C, 0x63, 0x1A, 0x6C, 0x30, 0xDC, 0xDA, + 0x1F, 0x19, 0xB1, 0xD7, 0x1E, 0xDE, 0xFD, 0xD7, 0xE0, 0xCB, 0x94, 0x83, + 0x37, 0xAE, 0xEC, 0x1F, 0x43, 0x4E, 0xDD, 0x7B, 0x2C, 0xD2, 0xBD, 0x2E, + 0xA5, 0x2F, 0xE4, 0xA9, 0xB8, 0xAD, 0x3A, 0xD4, 0x99, 0xA4, 0xB6, 0x25, + 0xE9, 0x9B, 0x6B, 0x00, 0x60, 0x92, 0x60, 0xFF, 0x4F, 0x21, 0x49, 0x18, + 0xF7, 0x67, 0x90, 0xAB, 0x61, 0x06, 0x9C, 0x8F, 0xF2, 0xBA, 0xE9, 0xB4, + 0xE9, 0x92, 0x32, 0x6B, 0xB5, 0xF3, 0x57, 0xE8, 0x5D, 0x1B, 0xCD, 0x8C, + 0x1D, 0xAB, 0x95, 0x04, 0x95, 0x49, 0xF3, 0x35, 0x2D, 0x96, 0xE3, 0x49, + 0x6D, 0xDD, 0x77, 0xE3, 0xFB, 0x49, 0x4B, 0xB4, 0xAC, 0x55, 0x07, 0xA9, + 0x8F, 0x95, 0xB3, 0xB4, 0x23, 0xBB, 0x4C, 0x6D, 0x45, 0xF0, 0xF6, 0xA9, + 0xB2, 0x95, 0x30, 0xB4, 0xFD, 0x4C, 0x55, 0x8C, 0x27, 0x4A, 0x57, 0x14, + 0x7C, 0x82, 0x9D, 0xCD, 0x73, 0x92, 0xD3, 0x16, 0x4A, 0x06, 0x0C, 0x8C, + 0x50, 0xD1, 0x8F, 0x1E, 0x09, 0xBE, 0x17, 0xA1, 0xE6, 0x21, 0xCA, 0xFD, + 0x83, 0xE5, 0x10, 0xBC, 0x83, 0xA5, 0x0A, 0xC4, 0x67, 0x28, 0xF6, 0x73, + 0x14, 0x14, 0x3D, 0x46, 0x76, 0xC3, 0x87, 0x14, 0x89, 0x21, 0x34, 0x4D, + 0xAF, 0x0F, 0x45, 0x0C, 0xA6, 0x49, 0xA1, 0xBA, 0xBB, 0x9C, 0xC5, 0xB1, + 0x33, 0x83, 0x29, 0x85 +}; + +static const unsigned char TA1_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA2_DN[] = { + 0x30, 0x4F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x52, 0x65, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x31, 0x15, + 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0C, 0x49, 0x53, 0x52, + 0x47, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x58, 0x31 +}; + +static const unsigned char TA2_RSA_N[] = { + 0xAD, 0xE8, 0x24, 0x73, 0xF4, 0x14, 0x37, 0xF3, 0x9B, 0x9E, 0x2B, 0x57, + 0x28, 0x1C, 0x87, 0xBE, 0xDC, 0xB7, 0xDF, 0x38, 0x90, 0x8C, 0x6E, 0x3C, + 0xE6, 0x57, 0xA0, 0x78, 0xF7, 0x75, 0xC2, 0xA2, 0xFE, 0xF5, 0x6A, 0x6E, + 0xF6, 0x00, 0x4F, 0x28, 0xDB, 0xDE, 0x68, 0x86, 0x6C, 0x44, 0x93, 0xB6, + 0xB1, 0x63, 0xFD, 0x14, 0x12, 0x6B, 0xBF, 0x1F, 0xD2, 0xEA, 0x31, 0x9B, + 0x21, 0x7E, 0xD1, 0x33, 0x3C, 0xBA, 0x48, 0xF5, 0xDD, 0x79, 0xDF, 0xB3, + 0xB8, 0xFF, 0x12, 0xF1, 0x21, 0x9A, 0x4B, 0xC1, 0x8A, 0x86, 0x71, 0x69, + 0x4A, 0x66, 0x66, 0x6C, 0x8F, 0x7E, 0x3C, 0x70, 0xBF, 0xAD, 0x29, 0x22, + 0x06, 0xF3, 0xE4, 0xC0, 0xE6, 0x80, 0xAE, 0xE2, 0x4B, 0x8F, 0xB7, 0x99, + 0x7E, 0x94, 0x03, 0x9F, 0xD3, 0x47, 0x97, 0x7C, 0x99, 0x48, 0x23, 0x53, + 0xE8, 0x38, 0xAE, 0x4F, 0x0A, 0x6F, 0x83, 0x2E, 0xD1, 0x49, 0x57, 0x8C, + 0x80, 0x74, 0xB6, 0xDA, 0x2F, 0xD0, 0x38, 0x8D, 0x7B, 0x03, 0x70, 0x21, + 0x1B, 0x75, 0xF2, 0x30, 0x3C, 0xFA, 0x8F, 0xAE, 0xDD, 0xDA, 0x63, 0xAB, + 0xEB, 0x16, 0x4F, 0xC2, 0x8E, 0x11, 0x4B, 0x7E, 0xCF, 0x0B, 0xE8, 0xFF, + 0xB5, 0x77, 0x2E, 0xF4, 0xB2, 0x7B, 0x4A, 0xE0, 0x4C, 0x12, 0x25, 0x0C, + 0x70, 0x8D, 0x03, 0x29, 0xA0, 0xE1, 0x53, 0x24, 0xEC, 0x13, 0xD9, 0xEE, + 0x19, 0xBF, 0x10, 0xB3, 0x4A, 0x8C, 0x3F, 0x89, 0xA3, 0x61, 0x51, 0xDE, + 0xAC, 0x87, 0x07, 0x94, 0xF4, 0x63, 0x71, 0xEC, 0x2E, 0xE2, 0x6F, 0x5B, + 0x98, 0x81, 0xE1, 0x89, 0x5C, 0x34, 0x79, 0x6C, 0x76, 0xEF, 0x3B, 0x90, + 0x62, 0x79, 0xE6, 0xDB, 0xA4, 0x9A, 0x2F, 0x26, 0xC5, 0xD0, 0x10, 0xE1, + 0x0E, 0xDE, 0xD9, 0x10, 0x8E, 0x16, 0xFB, 0xB7, 0xF7, 0xA8, 0xF7, 0xC7, + 0xE5, 0x02, 0x07, 0x98, 0x8F, 0x36, 0x08, 0x95, 0xE7, 0xE2, 0x37, 0x96, + 0x0D, 0x36, 0x75, 0x9E, 0xFB, 0x0E, 0x72, 0xB1, 0x1D, 0x9B, 0xBC, 0x03, + 0xF9, 0x49, 0x05, 0xD8, 0x81, 0xDD, 0x05, 0xB4, 0x2A, 0xD6, 0x41, 0xE9, + 0xAC, 0x01, 0x76, 0x95, 0x0A, 0x0F, 0xD8, 0xDF, 0xD5, 0xBD, 0x12, 0x1F, + 0x35, 0x2F, 0x28, 0x17, 0x6C, 0xD2, 0x98, 0xC1, 0xA8, 0x09, 0x64, 0x77, + 0x6E, 0x47, 0x37, 0xBA, 0xCE, 0xAC, 0x59, 0x5E, 0x68, 0x9D, 0x7F, 0x72, + 0xD6, 0x89, 0xC5, 0x06, 0x41, 0x29, 0x3E, 0x59, 0x3E, 0xDD, 0x26, 0xF5, + 0x24, 0xC9, 0x11, 0xA7, 0x5A, 0xA3, 0x4C, 0x40, 0x1F, 0x46, 0xA1, 0x99, + 0xB5, 0xA7, 0x3A, 0x51, 0x6E, 0x86, 0x3B, 0x9E, 0x7D, 0x72, 0xA7, 0x12, + 0x05, 0x78, 0x59, 0xED, 0x3E, 0x51, 0x78, 0x15, 0x0B, 0x03, 0x8F, 0x8D, + 0xD0, 0x2F, 0x05, 0xB2, 0x3E, 0x7B, 0x4A, 0x1C, 0x4B, 0x73, 0x05, 0x12, + 0xFC, 0xC6, 0xEA, 0xE0, 0x50, 0x13, 0x7C, 0x43, 0x93, 0x74, 0xB3, 0xCA, + 0x74, 0xE7, 0x8E, 0x1F, 0x01, 0x08, 0xD0, 0x30, 0xD4, 0x5B, 0x71, 0x36, + 0xB4, 0x07, 0xBA, 0xC1, 0x30, 0x30, 0x5C, 0x48, 0xB7, 0x82, 0x3B, 0x98, + 0xA6, 0x7D, 0x60, 0x8A, 0xA2, 0xA3, 0x29, 0x82, 0xCC, 0xBA, 0xBD, 0x83, + 0x04, 0x1B, 0xA2, 0x83, 0x03, 0x41, 0xA1, 0xD6, 0x05, 0xF1, 0x1B, 0xC2, + 0xB6, 0xF0, 0xA8, 0x7C, 0x86, 0x3B, 0x46, 0xA8, 0x48, 0x2A, 0x88, 0xDC, + 0x76, 0x9A, 0x76, 0xBF, 0x1F, 0x6A, 0xA5, 0x3D, 0x19, 0x8F, 0xEB, 0x38, + 0xF3, 0x64, 0xDE, 0xC8, 0x2B, 0x0D, 0x0A, 0x28, 0xFF, 0xF7, 0xDB, 0xE2, + 0x15, 0x42, 0xD4, 0x22, 0xD0, 0x27, 0x5D, 0xE1, 0x79, 0xFE, 0x18, 0xE7, + 0x70, 0x88, 0xAD, 0x4E, 0xE6, 0xD9, 0x8B, 0x3A, 0xC6, 0xDD, 0x27, 0x51, + 0x6E, 0xFF, 0xBC, 0x64, 0xF5, 0x33, 0x43, 0x4F +}; + +static const unsigned char TA2_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA3_DN[] = { + 0x30, 0x4F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x52, 0x65, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x31, 0x15, + 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0C, 0x49, 0x53, 0x52, + 0x47, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x58, 0x32 +}; + +static const unsigned char TA3_EC_Q[] = { + 0x04, 0xCD, 0x9B, 0xD5, 0x9F, 0x80, 0x83, 0x0A, 0xEC, 0x09, 0x4A, 0xF3, + 0x16, 0x4A, 0x3E, 0x5C, 0xCF, 0x77, 0xAC, 0xDE, 0x67, 0x05, 0x0D, 0x1D, + 0x07, 0xB6, 0xDC, 0x16, 0xFB, 0x5A, 0x8B, 0x14, 0xDB, 0xE2, 0x71, 0x60, + 0xC4, 0xBA, 0x45, 0x95, 0x11, 0x89, 0x8E, 0xEA, 0x06, 0xDF, 0xF7, 0x2A, + 0x16, 0x1C, 0xA4, 0xB9, 0xC5, 0xC5, 0x32, 0xE0, 0x03, 0xE0, 0x1E, 0x82, + 0x18, 0x38, 0x8B, 0xD7, 0x45, 0xD8, 0x0A, 0x6A, 0x6E, 0xE6, 0x00, 0x77, + 0xFB, 0x02, 0x51, 0x7D, 0x22, 0xD8, 0x0A, 0x6E, 0x9A, 0x5B, 0x77, 0xDF, + 0xF0, 0xFA, 0x41, 0xEC, 0x39, 0xDC, 0x75, 0xCA, 0x68, 0x07, 0x0C, 0x1F, + 0xEA +}; + +static const unsigned char TA4_DN[] = { + 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x09, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x31, + 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0A, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6C, 0x74, 0x69, + 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74 +}; + +static const unsigned char TA4_RSA_N[] = { + 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A, + 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, + 0x5B, 0x8E, 0x2B, 0x29, 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, + 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2, 0x62, 0xFE, 0xB4, 0x88, + 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52, + 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, + 0x09, 0xE7, 0x73, 0xE8, 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, + 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8, 0x50, 0xC3, 0x28, 0xEA, + 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F, + 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, + 0xF0, 0x8F, 0xC0, 0x12, 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, + 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68, 0x44, 0x42, 0x48, 0x13, + 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC, + 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, + 0x63, 0xE0, 0x90, 0x0C, 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, + 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F, 0xFF, 0x15, 0xED, 0x69, + 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9, + 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, + 0x21, 0x5C, 0x07, 0x99, 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, + 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68, 0x18, 0x31, 0xF0, 0x78, + 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90, + 0xDC, 0x27, 0x1A, 0x39 +}; + +static const unsigned char TA4_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA5_DN[] = { + 0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20, 0x4A, 0x65, 0x72, 0x73, 0x65, + 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0B, + 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, + 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x54, 0x68, + 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, + 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x2E, 0x30, 0x2C, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA5_RSA_N[] = { + 0x80, 0x12, 0x65, 0x17, 0x36, 0x0E, 0xC3, 0xDB, 0x08, 0xB3, 0xD0, 0xAC, + 0x57, 0x0D, 0x76, 0xED, 0xCD, 0x27, 0xD3, 0x4C, 0xAD, 0x50, 0x83, 0x61, + 0xE2, 0xAA, 0x20, 0x4D, 0x09, 0x2D, 0x64, 0x09, 0xDC, 0xCE, 0x89, 0x9F, + 0xCC, 0x3D, 0xA9, 0xEC, 0xF6, 0xCF, 0xC1, 0xDC, 0xF1, 0xD3, 0xB1, 0xD6, + 0x7B, 0x37, 0x28, 0x11, 0x2B, 0x47, 0xDA, 0x39, 0xC6, 0xBC, 0x3A, 0x19, + 0xB4, 0x5F, 0xA6, 0xBD, 0x7D, 0x9D, 0xA3, 0x63, 0x42, 0xB6, 0x76, 0xF2, + 0xA9, 0x3B, 0x2B, 0x91, 0xF8, 0xE2, 0x6F, 0xD0, 0xEC, 0x16, 0x20, 0x90, + 0x09, 0x3E, 0xE2, 0xE8, 0x74, 0xC9, 0x18, 0xB4, 0x91, 0xD4, 0x62, 0x64, + 0xDB, 0x7F, 0xA3, 0x06, 0xF1, 0x88, 0x18, 0x6A, 0x90, 0x22, 0x3C, 0xBC, + 0xFE, 0x13, 0xF0, 0x87, 0x14, 0x7B, 0xF6, 0xE4, 0x1F, 0x8E, 0xD4, 0xE4, + 0x51, 0xC6, 0x11, 0x67, 0x46, 0x08, 0x51, 0xCB, 0x86, 0x14, 0x54, 0x3F, + 0xBC, 0x33, 0xFE, 0x7E, 0x6C, 0x9C, 0xFF, 0x16, 0x9D, 0x18, 0xBD, 0x51, + 0x8E, 0x35, 0xA6, 0xA7, 0x66, 0xC8, 0x72, 0x67, 0xDB, 0x21, 0x66, 0xB1, + 0xD4, 0x9B, 0x78, 0x03, 0xC0, 0x50, 0x3A, 0xE8, 0xCC, 0xF0, 0xDC, 0xBC, + 0x9E, 0x4C, 0xFE, 0xAF, 0x05, 0x96, 0x35, 0x1F, 0x57, 0x5A, 0xB7, 0xFF, + 0xCE, 0xF9, 0x3D, 0xB7, 0x2C, 0xB6, 0xF6, 0x54, 0xDD, 0xC8, 0xE7, 0x12, + 0x3A, 0x4D, 0xAE, 0x4C, 0x8A, 0xB7, 0x5C, 0x9A, 0xB4, 0xB7, 0x20, 0x3D, + 0xCA, 0x7F, 0x22, 0x34, 0xAE, 0x7E, 0x3B, 0x68, 0x66, 0x01, 0x44, 0xE7, + 0x01, 0x4E, 0x46, 0x53, 0x9B, 0x33, 0x60, 0xF7, 0x94, 0xBE, 0x53, 0x37, + 0x90, 0x73, 0x43, 0xF3, 0x32, 0xC3, 0x53, 0xEF, 0xDB, 0xAA, 0xFE, 0x74, + 0x4E, 0x69, 0xC7, 0x6B, 0x8C, 0x60, 0x93, 0xDE, 0xC4, 0xC7, 0x0C, 0xDF, + 0xE1, 0x32, 0xAE, 0xCC, 0x93, 0x3B, 0x51, 0x78, 0x95, 0x67, 0x8B, 0xEE, + 0x3D, 0x56, 0xFE, 0x0C, 0xD0, 0x69, 0x0F, 0x1B, 0x0F, 0xF3, 0x25, 0x26, + 0x6B, 0x33, 0x6D, 0xF7, 0x6E, 0x47, 0xFA, 0x73, 0x43, 0xE5, 0x7E, 0x0E, + 0xA5, 0x66, 0xB1, 0x29, 0x7C, 0x32, 0x84, 0x63, 0x55, 0x89, 0xC4, 0x0D, + 0xC1, 0x93, 0x54, 0x30, 0x19, 0x13, 0xAC, 0xD3, 0x7D, 0x37, 0xA7, 0xEB, + 0x5D, 0x3A, 0x6C, 0x35, 0x5C, 0xDB, 0x41, 0xD7, 0x12, 0xDA, 0xA9, 0x49, + 0x0B, 0xDF, 0xD8, 0x80, 0x8A, 0x09, 0x93, 0x62, 0x8E, 0xB5, 0x66, 0xCF, + 0x25, 0x88, 0xCD, 0x84, 0xB8, 0xB1, 0x3F, 0xA4, 0x39, 0x0F, 0xD9, 0x02, + 0x9E, 0xEB, 0x12, 0x4C, 0x95, 0x7C, 0xF3, 0x6B, 0x05, 0xA9, 0x5E, 0x16, + 0x83, 0xCC, 0xB8, 0x67, 0xE2, 0xE8, 0x13, 0x9D, 0xCC, 0x5B, 0x82, 0xD3, + 0x4C, 0xB3, 0xED, 0x5B, 0xFF, 0xDE, 0xE5, 0x73, 0xAC, 0x23, 0x3B, 0x2D, + 0x00, 0xBF, 0x35, 0x55, 0x74, 0x09, 0x49, 0xD8, 0x49, 0x58, 0x1A, 0x7F, + 0x92, 0x36, 0xE6, 0x51, 0x92, 0x0E, 0xF3, 0x26, 0x7D, 0x1C, 0x4D, 0x17, + 0xBC, 0xC9, 0xEC, 0x43, 0x26, 0xD0, 0xBF, 0x41, 0x5F, 0x40, 0xA9, 0x44, + 0x44, 0xF4, 0x99, 0xE7, 0x57, 0x87, 0x9E, 0x50, 0x1F, 0x57, 0x54, 0xA8, + 0x3E, 0xFD, 0x74, 0x63, 0x2F, 0xB1, 0x50, 0x65, 0x09, 0xE6, 0x58, 0x42, + 0x2E, 0x43, 0x1A, 0x4C, 0xB4, 0xF0, 0x25, 0x47, 0x59, 0xFA, 0x04, 0x1E, + 0x93, 0xD4, 0x26, 0x46, 0x4A, 0x50, 0x81, 0xB2, 0xDE, 0xBE, 0x78, 0xB7, + 0xFC, 0x67, 0x15, 0xE1, 0xC9, 0x57, 0x84, 0x1E, 0x0F, 0x63, 0xD6, 0xE9, + 0x62, 0xBA, 0xD6, 0x5F, 0x55, 0x2E, 0xEA, 0x5C, 0xC6, 0x28, 0x08, 0x04, + 0x25, 0x39, 0xB8, 0x0E, 0x2B, 0xA9, 0xF2, 0x4C, 0x97, 0x1C, 0x07, 0x3F, + 0x0D, 0x52, 0xF5, 0xED, 0xEF, 0x2F, 0x82, 0x0F +}; + +static const unsigned char TA5_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const br_x509_trust_anchor TAs[6] = { + { + { (unsigned char *)TA0_DN, sizeof TA0_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA0_RSA_N, sizeof TA0_RSA_N, + (unsigned char *)TA0_RSA_E, sizeof TA0_RSA_E, + } } + } + }, + { + { (unsigned char *)TA1_DN, sizeof TA1_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA1_RSA_N, sizeof TA1_RSA_N, + (unsigned char *)TA1_RSA_E, sizeof TA1_RSA_E, + } } + } + }, + { + { (unsigned char *)TA2_DN, sizeof TA2_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA2_RSA_N, sizeof TA2_RSA_N, + (unsigned char *)TA2_RSA_E, sizeof TA2_RSA_E, + } } + } + }, + { + { (unsigned char *)TA3_DN, sizeof TA3_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA3_EC_Q, sizeof TA3_EC_Q, + } } + } + }, + { + { (unsigned char *)TA4_DN, sizeof TA4_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA4_RSA_N, sizeof TA4_RSA_N, + (unsigned char *)TA4_RSA_E, sizeof TA4_RSA_E, + } } + } + }, + { + { (unsigned char *)TA5_DN, sizeof TA5_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA5_RSA_N, sizeof TA5_RSA_N, + (unsigned char *)TA5_RSA_E, sizeof TA5_RSA_E, + } } + } + } +}; + +#define TAs_NUM 6 \ No newline at end of file diff --git a/misc/dreamcast/DrawColouredQuads.S b/misc/dreamcast/DrawColouredQuads.S new file mode 100644 index 0000000..074605a --- /dev/null +++ b/misc/dreamcast/DrawColouredQuads.S @@ -0,0 +1,65 @@ +#include "ViewportTransform.S" +.global _DrawColouredQuads +.align 4 +.type _DrawColouredQuads,%function + +_DrawColouredQuads: +! Setup + fldi0 fr1 ! U = 0 + fldi0 fr2 ! V = 0 + mov r4,r3 ! r3 = src + add #-32, r5 ! r5 -= sizeof(VERTEX) + ViewportTransformSetup _VP_COL_HWIDTH + +.TRANSFORM_QUAD: + mov.l CMD_COL_VERT, r1 ! r1 = GPU VERT command + + LoadColouredVertex + ProcessVertex1 + + LoadColouredVertex + ProcessVertex2 + + LoadColouredVertex + ProcessVertex3 + + LoadColouredVertex + ProcessVertex4 CMD_COL_EOS + +! CLIPFLAGS TESTING + cmp/eq #0,r0 ! T = r0 == 0 (all points invisible) + bt/s .NO_POINTS_VISIBLE ! if T goto NO_POINTS_VISIBLE + nop + bra .SOME_POINTS_VISIBLE + nop + +.NO_POINTS_VISIBLE: + bra .LOOP_END ! jump to loop end after executing instruction in delay slot + add #-128, r5 ! r5 -= 4 * sizeof(VERTEX), move back to 1 vertex before start of quad + +.SOME_POINTS_VISIBLE: + +.LOOP_END: + dt r6 ! r6--; T = r6 == 0 + bf .TRANSFORM_QUAD ! if !T then goto TRANSFORM_QUAD + nop + + add #32, r5 ! r5 += sizeof(VERTEX) + rts ! return after executing instruction in delay slot + mov r5,r0 ! r0 = r5 + +.align 2 +CMD_COL_VERT: .long 0xe0000000 +CMD_COL_EOS: .long 0xf0000000 + +.global _VP_COL_HWIDTH +_VP_COL_HWIDTH: .long 0 + +.global _VP_COL_HHEIGHT +_VP_COL_HHEIGHT: .long 0 + +.global _VP_COL_X_PLUS_HWIDTH +_VP_COL_X_PLUS_HWIDTH: .long 0 + +.global _VP_COL_Y_PLUS_HHEIGHT +_VP_COL_Y_PLUS_HHEIGHT: .long 0 diff --git a/misc/dreamcast/DrawTexturedQuads.S b/misc/dreamcast/DrawTexturedQuads.S new file mode 100644 index 0000000..5ce16bd --- /dev/null +++ b/misc/dreamcast/DrawTexturedQuads.S @@ -0,0 +1,63 @@ +#include "ViewportTransform.S" +.global _DrawTexturedQuads +.align 4 +.type _DrawTexturedQuads,%function + +_DrawTexturedQuads: +! Setup + mov r4,r3 ! r3 = src + add #-32, r5 ! r5 -= sizeof(VERTEX) + ViewportTransformSetup _VP_TEX_HWIDTH + +.TRANSFORM_QUAD: + mov.l CMD_TEX_VERT, r1 ! r1 = GPU VERT command + + LoadTexturedVertex + ProcessVertex1 + + LoadTexturedVertex + ProcessVertex2 + + LoadTexturedVertex + ProcessVertex3 + + LoadTexturedVertex + ProcessVertex4 CMD_TEX_EOS + +! CLIPFLAGS TESTING + cmp/eq #0,r0 ! T = r0 == 0 (all points invisible) + bt/s .NO_POINTS_VISIBLE ! if T goto NO_POINTS_VISIBLE + nop + bra .SOME_POINTS_VISIBLE + nop + +.NO_POINTS_VISIBLE: + bra .LOOP_END ! jump to loop end after executing instruction in delay slot + add #-128, r5 ! r5 -= 4 * sizeof(VERTEX), move back to prior quad, so that this invisible quad gets overwritten in next iteration + +.SOME_POINTS_VISIBLE: + +.LOOP_END: + dt r6 ! r6--; T = r6 == 0 + bf .TRANSFORM_QUAD ! if !T then goto TRANSFORM_QUAD + nop + + add #32, r5 ! r5 += sizeof(VERTEX) + rts ! return after executing instruction in delay slot + mov r5,r0 ! r0 = r5 + +.align 2 +CMD_TEX_VERT: .long 0xe0000000 +CMD_TEX_EOS: .long 0xf0000000 + +.global _VP_TEX_HWIDTH +_VP_TEX_HWIDTH: .long 0 + +.global _VP_TEX_HHEIGHT +_VP_TEX_HHEIGHT: .long 0 + +.global _VP_TEX_X_PLUS_HWIDTH +_VP_TEX_X_PLUS_HWIDTH: .long 0 + +.global _VP_TEX_Y_PLUS_HHEIGHT +_VP_TEX_Y_PLUS_HHEIGHT: .long 0 diff --git a/misc/dreamcast/Makefile b/misc/dreamcast/Makefile new file mode 100644 index 0000000..5362a41 --- /dev/null +++ b/misc/dreamcast/Makefile @@ -0,0 +1,66 @@ +BUILD_DIR := build-dc +SOURCE_DIRS := src third_party/bearssl/src misc/dreamcast + +S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S)) +C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c)) +OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o))) +CFLAGS :=-g -O1 -pipe -fno-math-errno -Ithird_party/bearssl/inc + +GLDC_LIB=third_party/gldc/libGLdc.a +LDFLAGS=-g +LIBS=-lm $(GLDC_LIB) -lppp -lkosfat + +TARGET := ClassiCube-dc +CC_TEXTURES = misc/dreamcast/classicube.zip + +ifeq ($(strip $(KOS_BASE)),) +$(error "Please set KOS variables in your environment.") +endif + +default: $(CC_TEXTURES) $(GLDC_LIB) $(BUILD_DIR) $(TARGET).cdi + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(GLDC_LIB): FORCE + $(MAKE) -C third_party/gldc +FORCE: ; + +# TODO add textures to misc folder ? +$(CC_TEXTURES): + curl http://www.classicube.net/static/default.zip -o $@ + +$(BUILD_DIR)/%.o: src/%.c + kos-cc $(CFLAGS) -c $< -o $@ + +$(BUILD_DIR)/%.o: misc/dreamcast/%.S + kos-cc -c $< -o $@ + +$(BUILD_DIR)/%.o: third_party/bearssl/src/%.c + kos-cc $(CFLAGS) -c $< -o $@ + + +$(TARGET).elf: $(OBJS) + kos-cc $(LDFLAGS) $^ -o $@ $(LIBS) + +$(TARGET).bin: $(TARGET).elf + sh-elf-objcopy -R .stack -O binary $(TARGET).elf $(TARGET).bin + +# https://dcemulation.org/phpBB/viewtopic.php?t=105269 +$(TARGET)-scr.bin: $(TARGET).bin + $(KOS_BASE)/utils/scramble/scramble $(TARGET).bin $(TARGET)-scr.bin + +$(TARGET).iso: $(TARGET)-scr.bin + mkdir -p ISO_FILES + cp $(TARGET)-scr.bin ISO_FILES/1ST_READ.BIN + mkdir -p ISO_FILES/audio + mkdir -p ISO_FILES/maps + mkdir -p ISO_FILES/texpacks + mkdir -p ISO_FILES/texturecache + cp $(CC_TEXTURES) ISO_FILES/texpacks/default.zip + cp misc/dreamcast/IP.BIN IP.BIN + mkisofs -G IP.BIN -C 0,11702 -J -l -r -o $(TARGET).iso ISO_FILES + # genisoimage -V ClassiCube -G IP.BIN -joliet -rock -l -o $(TARGET).iso ISO_FILES + +$(TARGET).cdi: $(TARGET).iso + cdi4dc $(TARGET).iso $(TARGET).cdi diff --git a/misc/dreamcast/ViewportTransform.S b/misc/dreamcast/ViewportTransform.S new file mode 100644 index 0000000..19d3052 --- /dev/null +++ b/misc/dreamcast/ViewportTransform.S @@ -0,0 +1,218 @@ +! ========================================================= +! ======================== PROCESSOR INFO ================= +! ========================================================= +! The SH4 can dual issue (i.e. parallel execution) two instructions +! as long as the groups of the two instructions are different: +! * LS - most APU and FPU register load/stores +! * EX - most APU arithmetic instructions +! * MT - TST, CMP, NOP, MOV Rm,Rn +! * FE - most FPU arithmetic instructions +! * CO - other instructions (NOTE: Cannot be exeucted in parallel) + +! Thee following general aspects of instructions are important to note per the SH4 manual: +! * Issue rate: Interval between the issue of an instruction and that of the next instruction +! * Latency: Interval between the issue of an instruction and the generation of its result (completion) +! * Latency is also the interval between the execution of two instructions with an interdependent relationship. +! (although different cases may either increase or decrease Latency) +! + + +! ========================================================= +! ======================== REGISTER USAGES ================ +! ========================================================= +! SH4 C ABI: +! - R0 to R3 are return values (can be overwritten) +! - R4 to R7 are input arguments (can be overwritten) +! - R8 to R13 are non-volatile (must be restored at end) +! - R14 is the frame pointer (must be restored at end) +! - R15 is the stack pointer (must be restored at end) +! - FR0 to FR3 are return values (can be overwritten) +! - FR4 to FR11 are input arguments (can be overwritten) +! - FR12 to FR13 are non-volatile (must be restored at end) + +!r0 = clip flags +!r1 = GPU command +!r2 = temp +!r3 = prefetch address +!r4 = src pointer ARG +!r5 = dst pointer ARG +!r6 = quads count ARG +!r7 = ? + +!fr0 = temp +!fr1 = u +!fr2 = v +!fr3 = c +!fr4 = x +!fr5 = y +!fr6 = z +!fr7 = w +!fr8 = VIEWPORT_HWIDTH +!fr9 = VIEWPORT_HHEIGHT +!fr10 = VIEWPORT_X_PLUS_HWIDTH +!fr11 = VIEWPORT_Y_PLUS_HHEIGHT + +!fv4 = XYZW + + +! ========================================================= +! ========================= VERTEX LOADING ================ +! ========================================================= +.macro LoadColouredVertex +! LOAD XYZ + fmov @r4+, fr4 ! LS, X = src->x + fmov @r4+, fr5 ! LS, Y = src->y + fmov @r4+, fr6 ! LS, Z = src->z + fldi1 fr7 ! LS, W = 1.0 +! PREPARE NEXT VERTEX + add #16, r3 ! EX, r3 += VERTEX_STRIDE + pref @r3 ! LS, PREFETCH r3 (next vertex) + add #64, r5 ! EX, r5 += 2 * sizeof(VERTEX) +! TRANSFORM VERTEX + ftrv xmtrx, fv4 ! FE, TRANSFORM(XYZW) +! LOAD ATTRIBUTES + fmov @r4+,fr3 ! LS, C = src->color +.endm + +.macro LoadTexturedVertex +! LOAD XYZ + fmov @r4+, fr4 ! LS, X = src->x + fmov @r4+, fr5 ! LS, Y = src->y + fmov @r4+, fr6 ! LS, Z = src->z + fldi1 fr7 ! LS, W = 1.0 +! PREPARE NEXT VERTEX + add #24, r3 ! EX, r3 += VERTEX_STRIDE + pref @r3 ! LS, PREFETCH r3 (next vertex) + add #64, r5 ! EX, r5 += 2 * sizeof(VERTEX) +! TRANSFORM VERTEX + ftrv xmtrx, fv4 ! FE, TRANSFORM(XYZW) +! LOAD ATTRIBUTES + fmov @r4+,fr3 ! LS, C = src->color + fmov @r4+,fr1 ! LS, U = src->u + fmov @r4+,fr2 ! LS, V = src->v +.endm + +! ========================================================= +! ========================= VERTEX OUTPUT ================= +! ========================================================= +! To take advantage of SH4 dual instruction processing, +! clipflag calculation and vertex output are interleaved +.macro ProcessVertex1 + fmov.s fr7,@-r5 ! LS, dst->w = W + fmov.s fr3,@-r5 ! LS, dst->c = C + fneg fr7 ! LS, W = -W + fmov.s fr2,@-r5 ! LS, dst->v = V + fcmp/gt fr7,fr6 ! FE, T = Z > W (i.e. Z > -W) + fmov.s fr1,@-r5 ! LS, dst->u = U + movt r0 ! EX, CLIPFLAGS = T + fmov.s fr6,@-r5 ! LS, dst->z = Z + fmov.s fr5,@-r5 ! LS, dst->y = Y + fmov.s fr4,@-r5 ! LS, dst->x = X + mov.l r1,@-r5 ! LS, dst->flags = CMD_VERT +.endm + +.macro ProcessVertex2 + fmov.s fr7,@-r5 ! LS, dst->w = W + fmov.s fr3,@-r5 ! LS, dst->c = C + fneg fr7 ! LS, W = -W + fmov.s fr2,@-r5 ! LS, dst->v = V + fcmp/gt fr7,fr6 ! FE, T = Z > W (i.e. Z > -W) + fmov.s fr1,@-r5 ! LS, dst->u = U + movt r2 ! EX, tmp = T + fmov.s fr6,@-r5 ! LS, dst->z = Z + add r2,r2 ! EX, tmp = tmp + tmp + fmov.s fr5,@-r5 ! LS, dst->y = Y + or r2,r0 ! EX, CLIPFLAGS |= tmp (T << 1) + fmov.s fr4,@-r5 ! LS, dst->x = X + mov.l r1,@-r5 ! LS, dst->flags = CMD_VERT +.endm + +.macro ProcessVertex3 + fmov.s fr7,@-r5 ! LS, dst->w = W + fmov.s fr3,@-r5 ! LS, dst->c = C + fneg fr7 ! LS, W = -W + fmov.s fr2,@-r5 ! LS, dst->v = V + fcmp/gt fr7,fr6 ! FE, T = Z > W (i.e. Z > -W) + fmov.s fr1,@-r5 ! LS, dst->u = U + movt r2 ! EX, tmp = T + fmov.s fr6,@-r5 ! LS, dst->z = Z + fmov.s fr5,@-r5 ! LS, dst->y = Y + shll2 r2 ! EX, tmp = tmp << 2 + fmov.s fr4,@-r5 ! LS, dst->x = X + or r2,r0 ! EX, CLIPFLAGS |= tmp (T << 2) + mov.l r1,@-r5 ! LS, dst->flags = CMD_VERT +.endm + +.macro ProcessVertex4 eos_addr + fmov.s fr7,@-r5 ! LS, dst->w = W + fmov.s fr3,@-r5 ! LS, dst->c = C + fneg fr7 ! LS, W = -W + fmov.s fr2,@-r5 ! LS, dst->v = V + fcmp/gt fr7,fr6 ! FE, T = Z > W (i.e. Z > -W) + fmov.s fr1,@-r5 ! LS, dst->u = U + movt r2 ! EX, tmp = T + fmov.s fr6,@-r5 ! LS, dst->z = Z + shll2 r2 ! EX, tmp = tmp << 2 + fmov.s fr5,@-r5 ! LS, dst->y = Y + add r2,r2 ! EX, tmp = (tmp << 2) + (tmp << 2) + fmov.s fr4,@-r5 ! LS, dst->x = X + mov.l \eos_addr, r1 ! LS, r1 = GPU EOS command + or r2,r0 ! EX, CLIPFLAGS |= tmp (T << 3) + or r0,r1 ! EX, r1 |= CLIPFLAGS + mov.l r1,@-r5 ! LS, dst->flags = GPU EOS | CLIPFLAGS +.endm + + +! ========================================================= +! ====================== VIEWPORT TRANSFORM =============== +! ========================================================= +!r2 = return addr +!r0 = temp +!r5 = dst pointer + +!fr0 = temp +!fr4 = temp +!fr5 = temp +!fr5 = temp +!fr8 = VIEWPORT_HWIDTH +!fr9 = VIEWPORT_HHEIGHT +!fr10 = VIEWPORT_X_PLUS_HWIDTH +!fr11 = VIEWPORT_Y_PLUS_HHEIGHT + +.macro ViewportTransformSetup vp_addr + mova \vp_addr, r0 ! EX, r0 = &VIEWPORT + fmov.s @r0+,fr8 ! LS, fr8 = VIEWPORT_HWIDTH + fmov.s @r0+,fr9 ! LS, fr9 = VIEWPORT_HHEIGHT + fmov.s @r0+,fr10 ! LS, fr10 = VIEWPORT_X_PLUS_HWIDTH + fmov.s @r0+,fr11 ! LS, fr11 = VIEWPORT_Y_PLUS_HHEIGHT + nop ! MT (align to even instructions boundary) +.endm + +.macro ViewportTransformVertex +! INVERSE W CALCULATION + add #28, r5 ! EX, r5 = &vertex->w + fmov.s @r5,fr0 ! LS, fr0 = vertex->w + fmul fr0,fr0 ! FE, fr0 = fr0 * fr0 + add #-24, r5 ! EX, r5 = &vertex->x + fsrra fr0 ! FE, fr0 = 1 / sqrt(fr0) -> 1 / vertex->w + +! TRANSFORM X + fmov.s @r5,fr4 ! LS, fr4 = vertex->x + fmov fr10,fr5 ! LS, fr5 = VIEWPORT_X_PLUS_HWIDTH + fmul fr8,fr4 ! FE, fr4 = VIEWPORT_HWIDTH * vertex->x + fmac fr0,fr4,fr5 ! FE, fr5 = fr0 * fr4 + fr5 -- (X * F * hwidth) + x_plus_hwidth + fmov.s fr5,@r5 ! LS, vertex->x = fr5 + add #4, r5 ! EX, r5 = &vertex->y + +! TRANSFORM Y + fmov.s @r5,fr4 ! LS, fr4 = vertex->y + fmov fr11,fr5 ! LS, fr5 = VIEWPORT_Y_PLUS_HHEIGHT + fmul fr9,fr4 ! FE, fr4 = VIEWPORT_HHEIGHT * vertex->y + fmac fr0,fr4,fr5 ! FE, fr5 = fr0 * fr4 + fr5 -- (Y * F * hheight) + y_plus_hheight + fmov.s fr5,@r5 ! LS, vertex->y = fr5 + add #4, r5 ! EX, r5 = &vertex->z + +! ASSIGN Z + fmov.s fr0,@r5 ! LS, vertex->z = fr0 + add #20, r5 ! EX, r5 += 20 (points to start of next vertex) +.endm diff --git a/misc/dreamcast/boot_logo.png b/misc/dreamcast/boot_logo.png new file mode 100644 index 0000000..eb243c8 --- /dev/null +++ b/misc/dreamcast/boot_logo.png Binary files differdiff --git a/misc/dreamcast/ip.txt b/misc/dreamcast/ip.txt new file mode 100644 index 0000000..e69910a --- /dev/null +++ b/misc/dreamcast/ip.txt @@ -0,0 +1,3 @@ +Version : V1.360 +SW Maker Name : UnknownShadow200 +Game Title : ClassiCube Dreamcast \ No newline at end of file diff --git a/misc/dreamcast/readme.txt b/misc/dreamcast/readme.txt new file mode 100644 index 0000000..a354b6e --- /dev/null +++ b/misc/dreamcast/readme.txt @@ -0,0 +1,9 @@ +The dreamcast build requires an initial bootstrap program (Initial Program) named IP.bin + +To generate a custom IP.bin, compile https://github.com/Dreamcast-Projects/makeip + +Then run: makeip ip.txt IP.BIN -l boot_logo.png + +--- + +For more details about IP.bin, see https://mc.pp.se/dc/ip.bin.html \ No newline at end of file diff --git a/misc/ds/Makefile b/misc/ds/Makefile new file mode 100644 index 0000000..57c887a --- /dev/null +++ b/misc/ds/Makefile @@ -0,0 +1,164 @@ +# SPDX-License-Identifier: CC0-1.0 +# +# SPDX-FileContributor: Antonio Niño DÃaz, 2023 +export BLOCKSDS ?= /opt/blocksds/core +export BLOCKSDSEXT ?= /opt/blocksds/external + +NAME := ClassiCube +GAME_TITLE := ClassiCube +GAME_SUBTITLE := Built with BlocksDS +GAME_AUTHOR := UnknownShadow200 +GAME_ICON := misc/ds/icon.bmp + +SOURCEDIRS := src +INCLUDEDIRS := +DEFINES := -DPLAT_NDS +LIBS := -ldswifi9 -lnds9 -lc +LIBDIRS := $(BLOCKSDS)/libs/dswifi $(BLOCKSDS)/libs/libnds + + +export WONDERFUL_TOOLCHAIN ?= /opt/wonderful +ARM_NONE_EABI_PATH ?= $(WONDERFUL_TOOLCHAIN)/toolchain/gcc-arm-none-eabi/bin/ + +# DLDI and internal SD slot of DSi +# -------------------------------- + +# Root folder of the SD image +SDROOT := sdroot +# Name of the generated image it "DSi-1.sd" for no$gba in DSi mode +SDIMAGE := image.bin + +# Build artifacts +# --------------- + +BUILDDIR := build-nds +ELF := build-nds/$(NAME).elf +DUMP := build-nds/$(NAME).dump +MAP := build-nds/$(NAME).map +ROM := $(NAME).nds + +# Tools +# ----- + +PREFIX := $(ARM_NONE_EABI_PATH)arm-none-eabi- +CC := $(PREFIX)gcc +CXX := $(PREFIX)g++ +LD := $(PREFIX)gcc +OBJDUMP := $(PREFIX)objdump +MKDIR := mkdir +RM := rm -rf + +# Verbose flag +# ------------ + +ifeq ($(VERBOSE),1) +V := +else +V := @ +endif + +# Source files +# ------------ + +SOURCES_S := $(foreach dir,$(SOURCEDIRS),$(wildcard $(dir)/*.s)) +SOURCES_C := $(foreach dir,$(SOURCEDIRS),$(wildcard $(dir)/*.c)) + +# Compiler and linker flags +# ------------------------- + +ARCH := -mthumb -mcpu=arm946e-s+nofp + +SPECS := $(BLOCKSDS)/sys/crts/ds_arm9.specs + +WARNFLAGS := -Wall + +INCLUDEFLAGS := $(foreach path,$(INCLUDEDIRS),-I$(path)) \ + $(foreach path,$(LIBDIRS),-I$(path)/include) + +LIBDIRSFLAGS := $(foreach path,$(LIBDIRS),-L$(path)/lib) + +ASFLAGS += -x assembler-with-cpp $(DEFINES) $(INCLUDEFLAGS) \ + $(ARCH) -ffunction-sections -fdata-sections \ + -specs=$(SPECS) + +CFLAGS += -std=gnu17 $(WARNFLAGS) $(DEFINES) $(INCLUDEFLAGS) \ + $(ARCH) -O2 -ffunction-sections -fdata-sections \ + -specs=$(SPECS) + +LDFLAGS := $(ARCH) $(LIBDIRSFLAGS) -Wl,-Map,$(MAP) $(DEFINES) \ + -Wl,--start-group $(LIBS) -Wl,--end-group -specs=$(SPECS) + +# Intermediate build files +# ------------------------ +OBJS := $(addsuffix .o,$(addprefix $(BUILDDIR)/,$(SOURCES_S))) \ + $(addsuffix .o,$(addprefix $(BUILDDIR)/,$(SOURCES_C))) + +DEPS := $(OBJS:.o=.d) + +# Targets +# ------- + +.PHONY: all clean dump dldipatch sdimage + +all: $(ROM) + +# Combine the title strings +ifeq ($(strip $(GAME_SUBTITLE)),) + GAME_FULL_TITLE := $(GAME_TITLE);$(GAME_AUTHOR) +else + GAME_FULL_TITLE := $(GAME_TITLE);$(GAME_SUBTITLE);$(GAME_AUTHOR) +endif + +$(ROM): $(ELF) + @echo " NDSTOOL $@" + $(V)$(BLOCKSDS)/tools/ndstool/ndstool -c $@ \ + -7 $(BLOCKSDS)/sys/default_arm7/arm7.elf -9 $(ELF) \ + -b $(GAME_ICON) "$(GAME_FULL_TITLE)" \ + $(NDSTOOL_ARGS) + +$(ELF): $(OBJS) + @echo " LD $@" + $(V)$(LD) -o $@ $(OBJS) $(LDFLAGS) + +$(DUMP): $(ELF) + @echo " OBJDUMP $@" + $(V)$(OBJDUMP) -h -C -S $< > $@ + +dump: $(DUMP) + +clean: + @echo " CLEAN" + $(V)$(RM) $(ROM) $(DUMP) build $(SDIMAGE) + +sdimage: + @echo " MKFATIMG $(SDIMAGE) $(SDROOT)" + $(V)$(BLOCKSDS)/tools/mkfatimg/mkfatimg -t $(SDROOT) $(SDIMAGE) + +dldipatch: $(ROM) + @echo " DLDIPATCH $(ROM)" + $(V)$(BLOCKSDS)/tools/dldipatch/dldipatch patch \ + $(BLOCKSDS)/sys/dldi_r4/r4tf.dldi $(ROM) + +# Rules +# ----- + +$(BUILDDIR)/%.s.o : %.s + @echo " AS $<" + @$(MKDIR) -p $(@D) + $(V)$(CC) $(ASFLAGS) -MMD -MP -c -o $@ $< + +$(BUILDDIR)/%.c.o : %.c + @echo " CC $<" + @$(MKDIR) -p $(@D) + $(V)$(CC) $(CFLAGS) -MMD -MP -c -o $@ $< + +$(BUILDDIR)/%.arm.c.o : %.arm.c + @echo " CC $<" + @$(MKDIR) -p $(@D) + $(V)$(CC) $(CFLAGS) -MMD -MP -marm -mlong-calls -c -o $@ $< + +# Include dependency files if they exist +# -------------------------------------- + +-include $(DEPS) + diff --git a/misc/ds/icon.bmp b/misc/ds/icon.bmp new file mode 100644 index 0000000..c5a571c --- /dev/null +++ b/misc/ds/icon.bmp Binary files differdiff --git a/misc/gc/Makefile b/misc/gc/Makefile new file mode 100644 index 0000000..70e7fe5 --- /dev/null +++ b/misc/gc/Makefile @@ -0,0 +1,103 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +.SECONDARY: + +ifeq ($(strip $(DEVKITPPC)),) +$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC") +endif + +include $(DEVKITPPC)/gamecube_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := ClassiCube-gc +BUILD := build-gc +SOURCES := src third_party/bearssl/src +INCLUDES := third_party/bearssl/inc + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) +CXXFLAGS = $(CFLAGS) + +LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lasnd -lbba -lfat -logc -lm + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) + + +export DEPSDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) + +export LD := $(CC) + +export OFILES := $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + -I$(CURDIR)/$(BUILD) \ + -I$(LIBOGC_INC) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := -L$(LIBOGC_LIB) + +export OUTPUT := $(CURDIR)/$(TARGET) +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +all: $(BUILD) + $(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/gc/Makefile + +$(BUILD): + mkdir -p $@ + +#--------------------------------------------------------------------------------- +clean: + echo clean ... + rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol + +#--------------------------------------------------------------------------------- +else + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).dol: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +-include $(DEPSDIR)/*.d + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/misc/linux/CCIcon_X11.h b/misc/linux/CCIcon_X11.h new file mode 100644 index 0000000..1f49962 --- /dev/null +++ b/misc/linux/CCIcon_X11.h @@ -0,0 +1,120 @@ +/* Generated using misc/linux_icon_gen.cs */ + +static const unsigned long CCIcon_Data[] = { +64,64, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFD6D6D6,0xFFEBEBEB,0xFFF6F6F6,0xFFF5F5F5,0xFFEAEAEA,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFEDEDED,0xFFE4E4E4,0xFFE7E7E7,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFF7F7F7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFE1E1E1,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFEFEFEF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE0E0E0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD6D6D6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEAEAEA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFE8E8E8,0xFFF2F2F2,0xFFFAFAFA,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFEDEDED,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD9D9D9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFE0E0E0,0xFFE0E0E0,0xFFCDCDCD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFF8F8F8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCDCDCD,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD3D3D3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC5C5C5,0xFFF5F5F5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDFDFDF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD7D7D7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE1E1E1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDDDDDD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD5D5D5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDCDCDC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFF3F3F3,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD1D1D1,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD1D1D1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEBEBEB,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFD3D3D3,0xFFD6D6D6,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD4D4D4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC7C7C7,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFD3D3D3,0xFFCCCCCC,0xFFBEBEBE,0xFFE2E2E2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDDDDDD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE8E8E8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFDCDCDC,0xFFE1E1E1,0xFFDCDCDC,0xFFCFCFCF,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFBFBFB,0xFFE4E4E4,0xFFD0D0D0,0xFFC4C4C4,0xFFC3C3C3,0xFFCFCFCF,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +32,32, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000, +0x00000000,0x55000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0x57000000,0x00000000, +0x00000000,0x60000000,0xFF040404,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFF030303,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFC4C4C4,0xFFD7D7D7,0xFFD6D6D6,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDADADA,0xFFD1D1D1,0xFFDDDDDD,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBEBEBE,0xFFDEDEDE,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBDBDBD,0xFFBEBEBE,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFCFCFC,0xFFE0E0E0,0xFFD5D5D5,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFD3D3D3,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFEFEFEF,0xFFDCDCDC,0xFFBEBEBE,0xFFBFBFBF,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFDFDFD,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFCBCBCB,0xFFBDBDBD,0xFFC0C0C0,0xFFFBFBFB,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBFBFBF,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFCACACA,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFCFCFCF,0xFFBDBDBD,0xFFCFCFCF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFF7F7F7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFCBCBCB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFEFEFEF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC0C0C0,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC0C0C0,0xFFBDBDBD,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFF1F1F1,0xFFFEFEFE,0xFFF4F4F4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF5F5F5,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFCBCBCB,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFCACACA,0xFFBDBDBD,0xFFC2C2C2,0xFFEFEFEF,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000, +0x00000000,0x60000000,0xFF040404,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFC3C3C3,0xFFBDBDBD,0xFFD3D3D3,0xFFFAFAFA,0xFFFEFEFE,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFE9E9E9,0xFFFAFAFA,0xFFFEFEFE,0xFFF2F2F2,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF030303,0x60000000,0x00000000, +0x00000000,0x55000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBFBFBF,0xFFBDBDBD,0xFFC0C0C0,0xFFC6C6C6,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFCFCFCF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC4C4C4,0xFFBDBDBD,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0x57000000,0x00000000, +0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFECECEC,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFE5E5E5,0xFFC1C1C1,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFF7F7F7,0xFFD8D8D8,0xFFC4C4C4,0xFFC3C3C3,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFCECECE,0xFFC2C2C2,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF8A8A8A,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF8A8A8A,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFBDBDBD,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +16,16, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFC5C5C5,0xFFC5C5C5,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC5C5C5,0xFF2F2F2F,0xFF2F2F2F,0x00000000,0x00000000,0x00000000, +0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC5C5C5,0xFF2F2F2F,0x7F4E4E4E,0x00000000, +0x00000000,0xFF2F2F2F,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFE4E4E4,0xFF2F2F2F,0x00000000, +0x00000000,0xFF2F2F2F,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFF2F2F2F,0x00000000, +0x00000000,0xFF2F2F2F,0xFFFDFDFD,0xFFD6D6D6,0xFFCACACA,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFE4E4E4,0xFFBDBDBD,0xFFF6F6F6,0xFFFCFCFC,0xFFC4C4C4,0xFF2F2F2F,0x00000000, +0x00000000,0xFF2F2F2F,0xFFEDEDED,0xFFBDBDBD,0xFFCFCFCF,0xFFC5C5C5,0xFFE4E4E4,0xFFFEFEFE,0xFFC2C2C2,0xFFC0C0C0,0xFFF6F6F6,0xFFDADADA,0xFFC8C8C8,0xFFBDBDBD,0xFF2F2F2F,0x00000000, +0x00000000,0xFF2F2F2F,0xFFE4E4E4,0xFFC2C2C2,0xFFFDFDFD,0xFFF8F8F8,0xFFE7E7E7,0xFFFEFEFE,0xFFBDBDBD,0xFFDBDBDB,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF2F2F2F,0x00000000, +0x00000000,0xFF2F2F2F,0xFFE9E9E9,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFEEEEEE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF2F2F2F,0x00000000, +0x00000000,0xFF2F2F2F,0xFFF7F7F7,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFF7F7F7,0xFFD7D7D7,0xFFBDBDBD,0xFFCDCDCD,0xFFC1C1C1,0xFF2F2F2F,0x00000000, +0x00000000,0xFF2F2F2F,0xFFFEFEFE,0xFFD4D4D4,0xFFD6D6D6,0xFFFDFDFD,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFF3F3F3,0xFFEFEFEF,0xFFD8D8D8,0xFFF7F7F7,0xFFC6C6C6,0xFF2F2F2F,0x00000000, +0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFFE8E8E8,0xFFCACACA,0xFFC0C0C0,0xFFDADADA,0xFFFEFEFE,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFF7F7F7,0xFFC1C1C1,0xFF2F2F2F,0x7F4E4E4E,0x00000000, +0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFD4D4D4,0xFFE9E9E9,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFB7B7B7,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFC5C5C5,0xFFB0B0B0,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +}; +static const int CCIcon_Size = sizeof(CCIcon_Data) / sizeof(unsigned long); diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.desktop b/misc/linux/flatpak/net.classicube.flatpak.client.desktop new file mode 100644 index 0000000..11f416d --- /dev/null +++ b/misc/linux/flatpak/net.classicube.flatpak.client.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=ClassiCube +Exec=ClassiCubeLauncher +Comment=Sandbox building-block game +Type=Application +Icon=net.classicube.flatpak.client +Categories=Game;ActionGame; +Terminal=false +MimeType=x-scheme-handler/mc; +StartupWMClass=net.classicube.flatpak.client \ No newline at end of file diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml b/misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml new file mode 100644 index 0000000..7810cb3 --- /dev/null +++ b/misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml @@ -0,0 +1,133 @@ +<?xml version='1.0' encoding='utf-8'?> +<component type="desktop-application"> + <id>net.classicube.flatpak.client</id> + <name>ClassiCube</name> + <summary>Sandbox building-block game</summary> + <developer id="net.classicube"> + <name>The ClassiCube Project</name> + </developer> + <metadata_license>CC0-1.0</metadata_license> + <project_license>BSD-3-Clause</project_license> + <description> + <p>ClassiCube brings you back to the days of 2009 where one block game ruled them all, it includes such features as:</p> + <ul> + <li>Loads of blocks and items to choose from</li> + <li>Chatting with other players</li> + <li>An extremely simple network protocol to tinker with</li> + <li>Hundreds of creative and inventive worlds to explore online</li> + <li>A growing community</li> + <li>Hundreds of hours of entertainment</li> + </ul> + </description> + <screenshots> + <screenshot type="default"> + <caption>Classic mode features faithful classic gameplay</caption> + <image type="source">https://github.com/ClassiCube/ClassiCube/assets/6509348/eedee53f-f53e-456f-b51c-92c62079eee0</image> + </screenshot> + <screenshot> + <caption>Enhanced mode allows hacks like flying and noclipping, it also allows servers to provide many custom features</caption> + <image type="source">https://github.com/ClassiCube/ClassiCube/assets/6509348/b2fe0e2b-5d76-41ab-909f-048d0ad15f37</image> + </screenshot> + </screenshots> + <releases> + <release version="1.3.6" date="2023-08-28" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.6</url> + </release> + <release version="1.3.5" date="2023-01-06" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.5</url> + </release> + <release version="1.3.4" date="2022-11-01" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.4</url> + </release> + <release version="1.3.3" date="2022-10-08" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.3</url> + </release> + <release version="1.3.2" date="2022-05-26" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.2</url> + </release> + <release version="1.3.1" date="2022-01-11" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.1</url> + </release> + <release version="1.3.0" date="2022-01-04" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.0</url> + </release> + <release version="1.2.9" date="2021-10-18" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.9</url> + </release> + <release version="1.2.8" date="2021-09-18" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.8</url> + </release> + <release version="1.2.7" date="2021-07-22" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.7</url> + </release> + <release version="1.2.6" date="2021-07-02" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.6</url> + </release> + <release version="1.2.5" date="2021-04-02" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.5</url> + </release> + <release version="1.2.4" date="2021-01-23" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.4</url> + </release> + <release version="1.2.3" date="2020-12-12" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.3</url> + </release> + <release version="1.2.2" date="2020-12-11" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.2</url> + </release> + <release version="1.2.1" date="2020-11-28" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.1</url> + </release> + <release version="1.2.0" date="2020-10-01" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.0</url> + </release> + <release version="1.1.9" date="2020-08-16" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.9</url> + </release> + <release version="1.1.8" date="2020-08-05" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.8</url> + </release> + <release version="1.1.7" date="2020-06-13" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.7</url> + </release> + <release version="1.1.6" date="2020-05-07" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.6</url> + </release> + <release version="1.1.5" date="2020-05-01" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.5</url> + </release> + <release version="1.1.4" date="2020-04-21" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.4</url> + </release> + <release version="1.1.3" date="2020-03-08" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.3</url> + </release> + <release version="1.1.2" date="2020-01-26" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.2</url> + </release> + <release version="1.1.1" date="2019-12-16" type="stable"> + <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.1</url> + </release> + </releases> + <url type="homepage">https://www.classicube.net/</url> + <url type="bugtracker">https://github.com/ClassiCube/ClassiCube/issues</url> + <url type="donation">https://www.patreon.com/ClassiCube</url> + <url type="vcs-browser">https://github.com/ClassiCube/ClassiCube</url> + <categories> + <category>Game</category> + <category>AdventureGame</category> + <category>ActionGame</category> + </categories> + <recommends> + <control>pointing</control> + <control>keyboard</control> + </recommends> + <content_rating type="oars-1.1"> + <content_attribute id="violence-cartoon">moderate</content_attribute> + <content_attribute id="social-chat">intense</content_attribute> + </content_rating> + <launchable type="desktop-id">net.classicube.flatpak.client.desktop</launchable> + <provides> + <binary>ClassiCube</binary> + </provides> +</component> diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.svg b/misc/linux/flatpak/net.classicube.flatpak.client.svg new file mode 100644 index 0000000..4432415 --- /dev/null +++ b/misc/linux/flatpak/net.classicube.flatpak.client.svg @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="128" + height="127.99999" + viewBox="0 0 33.866667 33.866664" + version="1.1" + id="svg8" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs + id="defs2" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + transform="translate(5.8338447,-13.20144)"> + <g + id="g4741" + transform="matrix(0.12177585,0,0,0.12056875,-1.6325083,12.971524)"> + <path + id="path4737" + d="M -5.8338447,207.40561 V 78.28894 L 106.61407,13.20144 218.79741,78.28894 V 207.40561 L 106.61407,272.4931 Z" + style="fill:#f6f6f6;stroke:#000000;stroke-width:8.0626;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path179" + d="m 104.07502,141.52929 110.68965,-60.9215 1.62598,125.47985 -109.78346,61.73499 z m 20.61272,94.64566 c 8.561,-1.36503 22.58979,-6.90566 34.77207,-13.73314 8.44846,-4.73489 17.45957,-10.82064 25.81752,-17.43613 8.72093,-6.90281 17.22731,-15.21726 18.55921,-18.14047 0.26981,-0.59217 0.24879,-0.77358 -0.13391,-1.15568 -0.36305,-0.36248 -0.91552,-0.44887 -2.7589,-0.43139 -3.71393,0.0352 -9.27509,1.35366 -16.28846,3.86168 -2.01562,0.7208 -3.69686,1.27297 -3.73608,1.22704 -0.16881,-0.19764 3.44601,-29.37179 6.84564,-55.24912 1.21398,-9.24057 2.15592,-16.89033 2.09321,-16.99948 -0.19747,-0.34365 -6.05941,-0.21541 -8.74964,0.19141 -11.67357,1.7653 -26.1385,9.31897 -38.83406,20.27938 -3.00232,2.59198 -8.66363,8.37481 -10.38554,10.60847 l -1.13332,1.47013 1.06078,5.78494 c 1.66864,9.09991 3.21014,18.62874 5.55847,34.35994 1.6265,10.89577 2.70193,17.7159 2.81167,17.83099 0.23021,0.24143 9.15704,-3.22834 13.96159,-5.42672 4.01374,-1.83655 7.38001,-3.77497 13.6069,-7.83534 5.39432,-3.51748 6.57616,-4.09382 7.18285,-3.50281 1.32604,1.29178 -3.92898,6.46583 -11.75312,11.57204 -5.59387,3.65069 -11.90727,6.67998 -18.54423,8.8979 -3.61228,1.20714 -3.99351,1.40207 -6.48521,3.316 -7.13359,5.47947 -15.77323,13.5129 -18.33378,17.04736 -1.39429,1.92461 -1.60126,3.07547 -0.62376,3.46838 0.81553,0.3278 3.41645,0.32525 5.4901,-0.005 z" + style="fill:#cbcbcb;fill-opacity:1;stroke-width:0.264583" /> + </g> + </g> +</svg> diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.yml b/misc/linux/flatpak/net.classicube.flatpak.client.yml new file mode 100644 index 0000000..760e8b9 --- /dev/null +++ b/misc/linux/flatpak/net.classicube.flatpak.client.yml @@ -0,0 +1,29 @@ +id: net.classicube.flatpak.client +runtime: org.freedesktop.Platform +runtime-version: '23.08' +sdk: org.freedesktop.Sdk +command: ClassiCubeLauncher +finish-args: + - --socket=x11 + - --device=dri + - --share=network + - --share=ipc + - --socket=pulseaudio +modules: + - name: ClassiCube + buildsystem: simple + build-commands: + - gcc -fno-math-errno src/*.c -o src/ClassiCube -O1 -DCC_BUILD_FLATPAK -DCC_BUILD_GLMODERN -rdynamic -lm -lpthread -lX11 -lXi -lGL -ldl + - install -Dm755 src/ClassiCube -t ${FLATPAK_DEST}/bin + - install -Dm755 ClassiCubeLauncher -t ${FLATPAK_DEST}/bin + - install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/net.classicube.flatpak.client.svg + - install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.desktop ${FLATPAK_DEST}/share/applications/net.classicube.flatpak.client.desktop + - install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml ${FLATPAK_DEST}/share/metainfo/net.classicube.flatpak.client.metainfo.xml + sources: + - type: dir + path: ../../../ + - type: script + dest-filename: ClassiCubeLauncher + commands: + - mkdir -p ${XDG_DATA_HOME}/ClassiCube + - cd ${XDG_DATA_HOME}/ClassiCube && exec /app/bin/ClassiCube "$@" diff --git a/misc/linux/install-desktop-entry.sh b/misc/linux/install-desktop-entry.sh new file mode 100644 index 0000000..a3c3ab7 --- /dev/null +++ b/misc/linux/install-desktop-entry.sh @@ -0,0 +1,34 @@ +DESKTOP_FILE=ClassiCube.desktop +GAME_DIR=`pwd` + +# remove existing ClassiCube desktop entry file +rm $DESKTOP_FILE + +# download ClassiCube icon from github if necessary +if [ -f "CCicon.png" ] +then + echo "CCicon.png exists already. Skipping download." +else + echo "CCicon.png doesn't exist. Attempting to download it.." + wget "https://raw.githubusercontent.com/ClassiCube/classicube/master/misc/CCicon.png" +fi + +# create ClassiCube desktop entry +echo 'Creating ClassiCube.desktop..' +cat >> $DESKTOP_FILE << EOF +[Desktop Entry] +Type=Application +Comment=Minecraft Classic inspired sandbox game +Name=ClassiCube +Exec=$GAME_DIR/ClassiCube +Icon=$GAME_DIR/CCicon.png +Path=$GAME_DIR +Terminal=false +Categories=Game +EOF +chmod +x $DESKTOP_FILE + +echo 'Installing ClassiCube.desktop..' +# install ClassiCube desktop entry into the system +sudo desktop-file-install --dir=/usr/share/applications ClassiCube.desktop +sudo update-desktop-database /usr/share/applications diff --git a/misc/linux/linux_icon_gen.cs b/misc/linux/linux_icon_gen.cs new file mode 100644 index 0000000..a48344d --- /dev/null +++ b/misc/linux/linux_icon_gen.cs @@ -0,0 +1,42 @@ +using System.Drawing.Imaging; +using System.Drawing; +using System.IO; + +namespace test +{ + public static class Program + { + const string src = "CCicon.ico"; + const string dst = "_CCIcon_X11.h"; + + static void DumpIcon(StreamWriter sw, int width, int height) { + sw.WriteLine(width + "," + height + ","); + + using (Icon icon = new Icon(src, width, height)) { + using (Bitmap bmp = icon.ToBitmap()) { + for (int y = 0; y < bmp.Height; y++) { + for (int x = 0; x < bmp.Width; x++) { + Color c = bmp.GetPixel(x, y); + int p = (c.A << 24) | (c.R << 16) | (c.G << 8) | c.B; + sw.Write("0x" + ((uint)p).ToString("X8") + ","); + } + sw.WriteLine(); + } + } + } + } + + public static void Main(string[] args) { + using (StreamWriter sw = new StreamWriter(dst)) { + sw.WriteLine("/* Generated using misc/linux_icon_gen.cs */"); + sw.WriteLine(""); + sw.WriteLine("static const unsigned long CCIcon_Data[] = {"); + DumpIcon(sw, 64, 64); + DumpIcon(sw, 32, 32); + DumpIcon(sw, 16, 16); + sw.WriteLine("};"); + sw.WriteLine("static const int CCIcon_Size = sizeof(CCIcon_Data) / sizeof(unsigned long);"); + } + } + } +} diff --git a/misc/macOS/CCIcon.icns b/misc/macOS/CCIcon.icns new file mode 100644 index 0000000..d52d05f --- /dev/null +++ b/misc/macOS/CCIcon.icns Binary files differdiff --git a/misc/macOS/CCIcon_mac.h b/misc/macOS/CCIcon_mac.h new file mode 100644 index 0000000..73b354b --- /dev/null +++ b/misc/macOS/CCIcon_mac.h @@ -0,0 +1,70 @@ +/* Generated using misc/macOS/mac_icon_gen.cs */ + +static const unsigned int CCIcon_Data[] = { +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFD6D6D6,0xFFEBEBEB,0xFFF6F6F6,0xFFF5F5F5,0xFFEAEAEA,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFEDEDED,0xFFE4E4E4,0xFFE7E7E7,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFF7F7F7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFE1E1E1,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFEFEFEF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE0E0E0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD6D6D6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEAEAEA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFE8E8E8,0xFFF2F2F2,0xFFFAFAFA,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFEDEDED,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD9D9D9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFE0E0E0,0xFFE0E0E0,0xFFCDCDCD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFF8F8F8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCDCDCD,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD3D3D3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC5C5C5,0xFFF5F5F5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDFDFDF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD7D7D7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE1E1E1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDDDDDD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD5D5D5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDCDCDC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFF3F3F3,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD1D1D1,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD1D1D1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEBEBEB,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFD3D3D3,0xFFD6D6D6,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD4D4D4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC7C7C7,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFD3D3D3,0xFFCCCCCC,0xFFBEBEBE,0xFFE2E2E2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDDDDDD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE8E8E8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFDCDCDC,0xFFE1E1E1,0xFFDCDCDC,0xFFCFCFCF,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFBFBFB,0xFFE4E4E4,0xFFD0D0D0,0xFFC4C4C4,0xFFC3C3C3,0xFFCFCFCF,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +}; +static const int CCIcon_Width = 64; +static const int CCIcon_Height = 64; diff --git a/misc/macOS/CCMAC.xcodeproj/project.pbxproj b/misc/macOS/CCMAC.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ba25f32 --- /dev/null +++ b/misc/macOS/CCMAC.xcodeproj/project.pbxproj @@ -0,0 +1,785 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 9A6C7C8D2C073E0C00676D27 /* Vectors.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BE92C073DEC00676D27 /* Vectors.c */; }; + 9A6C7C8E2C073E0C00676D27 /* _ftglyph.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BEB2C073DEC00676D27 /* _ftglyph.c */; }; + 9A6C7C8F2C073E0C00676D27 /* Input.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF02C073DED00676D27 /* Input.c */; }; + 9A6C7C902C073E0C00676D27 /* Options.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF12C073DED00676D27 /* Options.c */; }; + 9A6C7C912C073E0C00676D27 /* _ftbitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF22C073DED00676D27 /* _ftbitmap.c */; }; + 9A6C7C922C073E0C00676D27 /* _autofit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF52C073DED00676D27 /* _autofit.c */; }; + 9A6C7C932C073E0C00676D27 /* Menus.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF82C073DED00676D27 /* Menus.c */; }; + 9A6C7C942C073E0C00676D27 /* LWeb.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFA2C073DEE00676D27 /* LWeb.c */; }; + 9A6C7C952C073E0C00676D27 /* Generator.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFB2C073DEE00676D27 /* Generator.c */; }; + 9A6C7C962C073E0C00676D27 /* Screens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFD2C073DEE00676D27 /* Screens.c */; }; + 9A6C7C972C073E0C00676D27 /* SSL.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFE2C073DEE00676D27 /* SSL.c */; }; + 9A6C7C982C073E0C00676D27 /* LBackend_Android.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFF2C073DEE00676D27 /* LBackend_Android.c */; }; + 9A6C7C992C073E0C00676D27 /* Window_SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C002C073DEE00676D27 /* Window_SDL.c */; }; + 9A6C7C9A2C073E0C00676D27 /* Graphics_GL2.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C012C073DEE00676D27 /* Graphics_GL2.c */; }; + 9A6C7C9B2C073E0C00676D27 /* Lighting.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C022C073DEE00676D27 /* Lighting.c */; }; + 9A6C7C9C2C073E0C00676D27 /* EntityComponents.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C042C073DEF00676D27 /* EntityComponents.c */; }; + 9A6C7C9D2C073E0C00676D27 /* Game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C052C073DEF00676D27 /* Game.c */; }; + 9A6C7C9E2C073E0C00676D27 /* Platform_Posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C072C073DEF00676D27 /* Platform_Posix.c */; }; + 9A6C7C9F2C073E0C00676D27 /* Utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C082C073DEF00676D27 /* Utils.c */; }; + 9A6C7CA02C073E0C00676D27 /* Resources.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C092C073DEF00676D27 /* Resources.c */; }; + 9A6C7CA12C073E0C00676D27 /* AudioBackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C0A2C073DF000676D27 /* AudioBackend.c */; }; + 9A6C7CA22C073E0C00676D27 /* Queue.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C0B2C073DF000676D27 /* Queue.c */; }; + 9A6C7CA32C073E0C00676D27 /* _smooth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C0E2C073DF100676D27 /* _smooth.c */; }; + 9A6C7CA42C073E0C00676D27 /* _pshinter.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C102C073DF100676D27 /* _pshinter.c */; }; + 9A6C7CA52C073E0C00676D27 /* Drawer2D.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C112C073DF100676D27 /* Drawer2D.c */; }; + 9A6C7CA62C073E0C00676D27 /* World.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C132C073DF200676D27 /* World.c */; }; + 9A6C7CA72C073E0C00676D27 /* _psaux.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C152C073DF200676D27 /* _psaux.c */; }; + 9A6C7CA82C073E0C00676D27 /* Window_SDL3.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C162C073DF200676D27 /* Window_SDL3.c */; }; + 9A6C7CA92C073E0C00676D27 /* TexturePack.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1A2C073DF300676D27 /* TexturePack.c */; }; + 9A6C7CAA2C073E0C00676D27 /* Block.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1C2C073DF300676D27 /* Block.c */; }; + 9A6C7CAB2C073E0C00676D27 /* _ftbase.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1E2C073DF300676D27 /* _ftbase.c */; }; + 9A6C7CAC2C073E0C00676D27 /* LWidgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1F2C073DF400676D27 /* LWidgets.c */; }; + 9A6C7CAD2C073E0C00676D27 /* PackedCol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C202C073DF400676D27 /* PackedCol.c */; }; + 9A6C7CAE2C073E0C00676D27 /* Physics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C212C073DF400676D27 /* Physics.c */; }; + 9A6C7CAF2C073E0C00676D27 /* GameVersion.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C242C073DF500676D27 /* GameVersion.c */; }; + 9A6C7CB02C073E0C00676D27 /* Particle.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C252C073DF500676D27 /* Particle.c */; }; + 9A6C7CB12C073E0C00676D27 /* Graphics_SoftGPU.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C282C073DF500676D27 /* Graphics_SoftGPU.c */; }; + 9A6C7CB22C073E0C00676D27 /* MapRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C292C073DF500676D27 /* MapRenderer.c */; }; + 9A6C7CB32C073E0C00676D27 /* SelectionBox.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2A2C073DF500676D27 /* SelectionBox.c */; }; + 9A6C7CB42C073E0C00676D27 /* Stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2C2C073DF600676D27 /* Stream.c */; }; + 9A6C7CB52C073E0C00676D27 /* Formats.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2D2C073DF600676D27 /* Formats.c */; }; + 9A6C7CB62C073E0C00676D27 /* Chat.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2E2C073DF600676D27 /* Chat.c */; }; + 9A6C7CB72C073E0C00676D27 /* Graphics_GL1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2F2C073DF600676D27 /* Graphics_GL1.c */; }; + 9A6C7CB82C073E0C00676D27 /* Window_Terminal.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C302C073DF600676D27 /* Window_Terminal.c */; }; + 9A6C7CB92C073E0C00676D27 /* AxisLinesRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C342C073DF700676D27 /* AxisLinesRenderer.c */; }; + 9A6C7CBA2C073E0C00676D27 /* EnvRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C352C073DF700676D27 /* EnvRenderer.c */; }; + 9A6C7CBB2C073E0C00676D27 /* _ftsynth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C382C073DF800676D27 /* _ftsynth.c */; }; + 9A6C7CBC2C073E0C00676D27 /* Logger.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C3C2C073DF800676D27 /* Logger.c */; }; + 9A6C7CBD2C073E0C00676D27 /* String.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C3E2C073DF900676D27 /* String.c */; }; + 9A6C7CBE2C073E0C00676D27 /* Protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C3F2C073DF900676D27 /* Protocol.c */; }; + 9A6C7CBF2C073E0C00676D27 /* TouchUI.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C402C073DF900676D27 /* TouchUI.c */; }; + 9A6C7CC02C073E0C00676D27 /* _type1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C412C073DF900676D27 /* _type1.c */; }; + 9A6C7CC12C073E0C00676D27 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C452C073DFB00676D27 /* Event.c */; }; + 9A6C7CC22C073E0C00676D27 /* Launcher.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C462C073DFC00676D27 /* Launcher.c */; }; + 9A6C7CC32C073E0C00676D27 /* _sfnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C4A2C073DFD00676D27 /* _sfnt.c */; }; + 9A6C7CC42C073E0C00676D27 /* LScreens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C4F2C073DFE00676D27 /* LScreens.c */; }; + 9A6C7CC52C073E0C00676D27 /* Commands.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C522C073DFF00676D27 /* Commands.c */; }; + 9A6C7CC62C073E0C00676D27 /* IsometricDrawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C552C073E0000676D27 /* IsometricDrawer.c */; }; + 9A6C7CC72C073E0C00676D27 /* HeldBlockRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C572C073E0000676D27 /* HeldBlockRenderer.c */; }; + 9A6C7CC82C073E0C00676D27 /* _psmodule.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C582C073E0100676D27 /* _psmodule.c */; }; + 9A6C7CC92C073E0C00676D27 /* Gui.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5A2C073E0100676D27 /* Gui.c */; }; + 9A6C7CCA2C073E0C00676D27 /* _truetype.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5B2C073E0200676D27 /* _truetype.c */; }; + 9A6C7CCB2C073E0C00676D27 /* Window_cocoa.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5E2C073E0200676D27 /* Window_cocoa.m */; }; + 9A6C7CCC2C073E0C00676D27 /* Vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5F2C073E0200676D27 /* Vorbis.c */; }; + 9A6C7CCD2C073E0C00676D27 /* Inventory.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C602C073E0300676D27 /* Inventory.c */; }; + 9A6C7CCE2C073E0C00676D27 /* Animations.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C622C073E0300676D27 /* Animations.c */; }; + 9A6C7CCF2C073E0C00676D27 /* FancyLighting.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C632C073E0300676D27 /* FancyLighting.c */; }; + 9A6C7CD02C073E0C00676D27 /* Widgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C662C073E0400676D27 /* Widgets.c */; }; + 9A6C7CD12C073E0C00676D27 /* Picking.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C672C073E0400676D27 /* Picking.c */; }; + 9A6C7CD22C073E0C00676D27 /* _ftinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C682C073E0400676D27 /* _ftinit.c */; }; + 9A6C7CD32C073E0C00676D27 /* Http_Worker.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C6B2C073E0500676D27 /* Http_Worker.c */; }; + 9A6C7CD42C073E0C00676D27 /* ExtMath.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C6D2C073E0500676D27 /* ExtMath.c */; }; + 9A6C7CD52C073E0C00676D27 /* _cff.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C6F2C073E0600676D27 /* _cff.c */; }; + 9A6C7CD62C073E0C00676D27 /* Camera.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C702C073E0600676D27 /* Camera.c */; }; + 9A6C7CD72C073E0C00676D27 /* Drawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C712C073E0600676D27 /* Drawer.c */; }; + 9A6C7CD82C073E0C00676D27 /* Entity.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C722C073E0600676D27 /* Entity.c */; }; + 9A6C7CD92C073E0C00676D27 /* SystemFonts.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C742C073E0700676D27 /* SystemFonts.c */; }; + 9A6C7CDA2C073E0C00676D27 /* BlockPhysics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C762C073E0700676D27 /* BlockPhysics.c */; }; + 9A6C7CDB2C073E0C00676D27 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C772C073E0700676D27 /* main.c */; }; + 9A6C7CDC2C073E0C00676D27 /* Model.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C792C073E0800676D27 /* Model.c */; }; + 9A6C7CDD2C073E0C00676D27 /* Graphics_Metal.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C7A2C073E0800676D27 /* Graphics_Metal.m */; }; + 9A6C7CDE2C073E0C00676D27 /* SelOutlineRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C7D2C073E0800676D27 /* SelOutlineRenderer.c */; }; + 9A6C7CDF2C073E0C00676D27 /* EntityRenderers.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C7E2C073E0900676D27 /* EntityRenderers.c */; }; + 9A6C7CE02C073E0C00676D27 /* LBackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C802C073E0900676D27 /* LBackend.c */; }; + 9A6C7CE12C073E0C00676D27 /* Builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C812C073E0900676D27 /* Builder.c */; }; + 9A6C7CE22C073E0C00676D27 /* Server.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C832C073E0A00676D27 /* Server.c */; }; + 9A6C7CE32C073E0C00676D27 /* Audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C842C073E0A00676D27 /* Audio.c */; }; + 9A6C7CE42C073E0C00676D27 /* Deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C852C073E0A00676D27 /* Deflate.c */; }; + 9A6C7CE52C073E0C00676D27 /* Bitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C892C073E0B00676D27 /* Bitmap.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9A6C796F2C073BFF00676D27 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 9A6C79712C073BFF00676D27 /* ClassiCube */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ClassiCube; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A6C7BE92C073DEC00676D27 /* Vectors.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Vectors.c; path = "../../../../../../ClassiCube-master/src/Vectors.c"; sourceTree = "<group>"; }; + 9A6C7BEA2C073DEC00676D27 /* TexturePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TexturePack.h; path = "../../../../../../ClassiCube-master/src/TexturePack.h"; sourceTree = "<group>"; }; + 9A6C7BEB2C073DEC00676D27 /* _ftglyph.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftglyph.c; path = "../../../../../../ClassiCube-master/src/_ftglyph.c"; sourceTree = "<group>"; }; + 9A6C7BEC2C073DED00676D27 /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Constants.h; path = "../../../../../../ClassiCube-master/src/Constants.h"; sourceTree = "<group>"; }; + 9A6C7BED2C073DED00676D27 /* Stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Stream.h; path = "../../../../../../ClassiCube-master/src/Stream.h"; sourceTree = "<group>"; }; + 9A6C7BEE2C073DED00676D27 /* VirtualKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VirtualKeyboard.h; path = "../../../../../../ClassiCube-master/src/VirtualKeyboard.h"; sourceTree = "<group>"; }; + 9A6C7BEF2C073DED00676D27 /* Commands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Commands.h; path = "../../../../../../ClassiCube-master/src/Commands.h"; sourceTree = "<group>"; }; + 9A6C7BF02C073DED00676D27 /* Input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Input.c; path = "../../../../../../ClassiCube-master/src/Input.c"; sourceTree = "<group>"; }; + 9A6C7BF12C073DED00676D27 /* Options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Options.c; path = "../../../../../../ClassiCube-master/src/Options.c"; sourceTree = "<group>"; }; + 9A6C7BF22C073DED00676D27 /* _ftbitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftbitmap.c; path = "../../../../../../ClassiCube-master/src/_ftbitmap.c"; sourceTree = "<group>"; }; + 9A6C7BF32C073DED00676D27 /* EntityComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntityComponents.h; path = "../../../../../../ClassiCube-master/src/EntityComponents.h"; sourceTree = "<group>"; }; + 9A6C7BF42C073DED00676D27 /* LWeb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LWeb.h; path = "../../../../../../ClassiCube-master/src/LWeb.h"; sourceTree = "<group>"; }; + 9A6C7BF52C073DED00676D27 /* _autofit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _autofit.c; path = "../../../../../../ClassiCube-master/src/_autofit.c"; sourceTree = "<group>"; }; + 9A6C7BF62C073DED00676D27 /* _PlatformConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _PlatformConsole.h; path = "../../../../../../ClassiCube-master/src/_PlatformConsole.h"; sourceTree = "<group>"; }; + 9A6C7BF72C073DED00676D27 /* Physics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Physics.h; path = "../../../../../../ClassiCube-master/src/Physics.h"; sourceTree = "<group>"; }; + 9A6C7BF82C073DED00676D27 /* Menus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Menus.c; path = "../../../../../../ClassiCube-master/src/Menus.c"; sourceTree = "<group>"; }; + 9A6C7BF92C073DED00676D27 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Platform.h; path = "../../../../../../ClassiCube-master/src/Platform.h"; sourceTree = "<group>"; }; + 9A6C7BFA2C073DEE00676D27 /* LWeb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LWeb.c; path = "../../../../../../ClassiCube-master/src/LWeb.c"; sourceTree = "<group>"; }; + 9A6C7BFB2C073DEE00676D27 /* Generator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Generator.c; path = "../../../../../../ClassiCube-master/src/Generator.c"; sourceTree = "<group>"; }; + 9A6C7BFC2C073DEE00676D27 /* Particle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Particle.h; path = "../../../../../../ClassiCube-master/src/Particle.h"; sourceTree = "<group>"; }; + 9A6C7BFD2C073DEE00676D27 /* Screens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Screens.c; path = "../../../../../../ClassiCube-master/src/Screens.c"; sourceTree = "<group>"; }; + 9A6C7BFE2C073DEE00676D27 /* SSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SSL.c; path = "../../../../../../ClassiCube-master/src/SSL.c"; sourceTree = "<group>"; }; + 9A6C7BFF2C073DEE00676D27 /* LBackend_Android.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LBackend_Android.c; path = "../../../../../../ClassiCube-master/src/LBackend_Android.c"; sourceTree = "<group>"; }; + 9A6C7C002C073DEE00676D27 /* Window_SDL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Window_SDL.c; path = "../../../../../../ClassiCube-master/src/Window_SDL.c"; sourceTree = "<group>"; }; + 9A6C7C012C073DEE00676D27 /* Graphics_GL2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Graphics_GL2.c; path = "../../../../../../ClassiCube-master/src/Graphics_GL2.c"; sourceTree = "<group>"; }; + 9A6C7C022C073DEE00676D27 /* Lighting.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Lighting.c; path = "../../../../../../ClassiCube-master/src/Lighting.c"; sourceTree = "<group>"; }; + 9A6C7C032C073DEF00676D27 /* Http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Http.h; path = "../../../../../../ClassiCube-master/src/Http.h"; sourceTree = "<group>"; }; + 9A6C7C042C073DEF00676D27 /* EntityComponents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EntityComponents.c; path = "../../../../../../ClassiCube-master/src/EntityComponents.c"; sourceTree = "<group>"; }; + 9A6C7C052C073DEF00676D27 /* Game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Game.c; path = "../../../../../../ClassiCube-master/src/Game.c"; sourceTree = "<group>"; }; + 9A6C7C062C073DEF00676D27 /* Funcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Funcs.h; path = "../../../../../../ClassiCube-master/src/Funcs.h"; sourceTree = "<group>"; }; + 9A6C7C072C073DEF00676D27 /* Platform_Posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Platform_Posix.c; path = "../../../../../../ClassiCube-master/src/Platform_Posix.c"; sourceTree = "<group>"; }; + 9A6C7C082C073DEF00676D27 /* Utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Utils.c; path = "../../../../../../ClassiCube-master/src/Utils.c"; sourceTree = "<group>"; }; + 9A6C7C092C073DEF00676D27 /* Resources.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Resources.c; path = "../../../../../../ClassiCube-master/src/Resources.c"; sourceTree = "<group>"; }; + 9A6C7C0A2C073DF000676D27 /* AudioBackend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AudioBackend.c; path = "../../../../../../ClassiCube-master/src/AudioBackend.c"; sourceTree = "<group>"; }; + 9A6C7C0B2C073DF000676D27 /* Queue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Queue.c; path = "../../../../../../ClassiCube-master/src/Queue.c"; sourceTree = "<group>"; }; + 9A6C7C0C2C073DF000676D27 /* PackedCol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PackedCol.h; path = "../../../../../../ClassiCube-master/src/PackedCol.h"; sourceTree = "<group>"; }; + 9A6C7C0D2C073DF000676D27 /* Vectors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vectors.h; path = "../../../../../../ClassiCube-master/src/Vectors.h"; sourceTree = "<group>"; }; + 9A6C7C0E2C073DF100676D27 /* _smooth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _smooth.c; path = "../../../../../../ClassiCube-master/src/_smooth.c"; sourceTree = "<group>"; }; + 9A6C7C0F2C073DF100676D27 /* Vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vorbis.h; path = "../../../../../../ClassiCube-master/src/Vorbis.h"; sourceTree = "<group>"; }; + 9A6C7C102C073DF100676D27 /* _pshinter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _pshinter.c; path = "../../../../../../ClassiCube-master/src/_pshinter.c"; sourceTree = "<group>"; }; + 9A6C7C112C073DF100676D27 /* Drawer2D.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Drawer2D.c; path = "../../../../../../ClassiCube-master/src/Drawer2D.c"; sourceTree = "<group>"; }; + 9A6C7C122C073DF100676D27 /* Widgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Widgets.h; path = "../../../../../../ClassiCube-master/src/Widgets.h"; sourceTree = "<group>"; }; + 9A6C7C132C073DF200676D27 /* World.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = World.c; path = "../../../../../../ClassiCube-master/src/World.c"; sourceTree = "<group>"; }; + 9A6C7C142C073DF200676D27 /* Menus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Menus.h; path = "../../../../../../ClassiCube-master/src/Menus.h"; sourceTree = "<group>"; }; + 9A6C7C152C073DF200676D27 /* _psaux.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _psaux.c; path = "../../../../../../ClassiCube-master/src/_psaux.c"; sourceTree = "<group>"; }; + 9A6C7C162C073DF200676D27 /* Window_SDL3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Window_SDL3.c; path = "../../../../../../ClassiCube-master/src/Window_SDL3.c"; sourceTree = "<group>"; }; + 9A6C7C172C073DF200676D27 /* Lighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Lighting.h; path = "../../../../../../ClassiCube-master/src/Lighting.h"; sourceTree = "<group>"; }; + 9A6C7C182C073DF300676D27 /* Errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Errors.h; path = "../../../../../../ClassiCube-master/src/Errors.h"; sourceTree = "<group>"; }; + 9A6C7C192C073DF300676D27 /* SystemFonts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SystemFonts.h; path = "../../../../../../ClassiCube-master/src/SystemFonts.h"; sourceTree = "<group>"; }; + 9A6C7C1A2C073DF300676D27 /* TexturePack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TexturePack.c; path = "../../../../../../ClassiCube-master/src/TexturePack.c"; sourceTree = "<group>"; }; + 9A6C7C1B2C073DF300676D27 /* Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Model.h; path = "../../../../../../ClassiCube-master/src/Model.h"; sourceTree = "<group>"; }; + 9A6C7C1C2C073DF300676D27 /* Block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Block.c; path = "../../../../../../ClassiCube-master/src/Block.c"; sourceTree = "<group>"; }; + 9A6C7C1D2C073DF300676D27 /* Bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bitmap.h; path = "../../../../../../ClassiCube-master/src/Bitmap.h"; sourceTree = "<group>"; }; + 9A6C7C1E2C073DF300676D27 /* _ftbase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftbase.c; path = "../../../../../../ClassiCube-master/src/_ftbase.c"; sourceTree = "<group>"; }; + 9A6C7C1F2C073DF400676D27 /* LWidgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LWidgets.c; path = "../../../../../../ClassiCube-master/src/LWidgets.c"; sourceTree = "<group>"; }; + 9A6C7C202C073DF400676D27 /* PackedCol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PackedCol.c; path = "../../../../../../ClassiCube-master/src/PackedCol.c"; sourceTree = "<group>"; }; + 9A6C7C212C073DF400676D27 /* Physics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Physics.c; path = "../../../../../../ClassiCube-master/src/Physics.c"; sourceTree = "<group>"; }; + 9A6C7C222C073DF400676D27 /* Animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animations.h; path = "../../../../../../ClassiCube-master/src/Animations.h"; sourceTree = "<group>"; }; + 9A6C7C232C073DF400676D27 /* Protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Protocol.h; path = "../../../../../../ClassiCube-master/src/Protocol.h"; sourceTree = "<group>"; }; + 9A6C7C242C073DF500676D27 /* GameVersion.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = GameVersion.c; path = "../../../../../../ClassiCube-master/src/GameVersion.c"; sourceTree = "<group>"; }; + 9A6C7C252C073DF500676D27 /* Particle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Particle.c; path = "../../../../../../ClassiCube-master/src/Particle.c"; sourceTree = "<group>"; }; + 9A6C7C262C073DF500676D27 /* EntityRenderers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntityRenderers.h; path = "../../../../../../ClassiCube-master/src/EntityRenderers.h"; sourceTree = "<group>"; }; + 9A6C7C272C073DF500676D27 /* SelOutlineRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SelOutlineRenderer.h; path = "../../../../../../ClassiCube-master/src/SelOutlineRenderer.h"; sourceTree = "<group>"; }; + 9A6C7C282C073DF500676D27 /* Graphics_SoftGPU.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Graphics_SoftGPU.c; path = "../../../../../../ClassiCube-master/src/Graphics_SoftGPU.c"; sourceTree = "<group>"; }; + 9A6C7C292C073DF500676D27 /* MapRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MapRenderer.c; path = "../../../../../../ClassiCube-master/src/MapRenderer.c"; sourceTree = "<group>"; }; + 9A6C7C2A2C073DF500676D27 /* SelectionBox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SelectionBox.c; path = "../../../../../../ClassiCube-master/src/SelectionBox.c"; sourceTree = "<group>"; }; + 9A6C7C2B2C073DF500676D27 /* Launcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Launcher.h; path = "../../../../../../ClassiCube-master/src/Launcher.h"; sourceTree = "<group>"; }; + 9A6C7C2C2C073DF600676D27 /* Stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Stream.c; path = "../../../../../../ClassiCube-master/src/Stream.c"; sourceTree = "<group>"; }; + 9A6C7C2D2C073DF600676D27 /* Formats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Formats.c; path = "../../../../../../ClassiCube-master/src/Formats.c"; sourceTree = "<group>"; }; + 9A6C7C2E2C073DF600676D27 /* Chat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Chat.c; path = "../../../../../../ClassiCube-master/src/Chat.c"; sourceTree = "<group>"; }; + 9A6C7C2F2C073DF600676D27 /* Graphics_GL1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Graphics_GL1.c; path = "../../../../../../ClassiCube-master/src/Graphics_GL1.c"; sourceTree = "<group>"; }; + 9A6C7C302C073DF600676D27 /* Window_Terminal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Window_Terminal.c; path = "../../../../../../ClassiCube-master/src/Window_Terminal.c"; sourceTree = "<group>"; }; + 9A6C7C312C073DF700676D27 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../../../../../../ClassiCube-master/src/Event.h"; sourceTree = "<group>"; }; + 9A6C7C322C073DF700676D27 /* String.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = String.h; path = "../../../../../../ClassiCube-master/src/String.h"; sourceTree = "<group>"; }; + 9A6C7C332C073DF700676D27 /* LScreens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LScreens.h; path = "../../../../../../ClassiCube-master/src/LScreens.h"; sourceTree = "<group>"; }; + 9A6C7C342C073DF700676D27 /* AxisLinesRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AxisLinesRenderer.c; path = "../../../../../../ClassiCube-master/src/AxisLinesRenderer.c"; sourceTree = "<group>"; }; + 9A6C7C352C073DF700676D27 /* EnvRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EnvRenderer.c; path = "../../../../../../ClassiCube-master/src/EnvRenderer.c"; sourceTree = "<group>"; }; + 9A6C7C362C073DF700676D27 /* _WindowBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _WindowBase.h; path = "../../../../../../ClassiCube-master/src/_WindowBase.h"; sourceTree = "<group>"; }; + 9A6C7C372C073DF700676D27 /* Input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Input.h; path = "../../../../../../ClassiCube-master/src/Input.h"; sourceTree = "<group>"; }; + 9A6C7C382C073DF800676D27 /* _ftsynth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftsynth.c; path = "../../../../../../ClassiCube-master/src/_ftsynth.c"; sourceTree = "<group>"; }; + 9A6C7C392C073DF800676D27 /* IsometricDrawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IsometricDrawer.h; path = "../../../../../../ClassiCube-master/src/IsometricDrawer.h"; sourceTree = "<group>"; }; + 9A6C7C3A2C073DF800676D27 /* Formats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Formats.h; path = "../../../../../../ClassiCube-master/src/Formats.h"; sourceTree = "<group>"; }; + 9A6C7C3B2C073DF800676D27 /* Deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Deflate.h; path = "../../../../../../ClassiCube-master/src/Deflate.h"; sourceTree = "<group>"; }; + 9A6C7C3C2C073DF800676D27 /* Logger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Logger.c; path = "../../../../../../ClassiCube-master/src/Logger.c"; sourceTree = "<group>"; }; + 9A6C7C3D2C073DF900676D27 /* Resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Resources.h; path = "../../../../../../ClassiCube-master/src/Resources.h"; sourceTree = "<group>"; }; + 9A6C7C3E2C073DF900676D27 /* String.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = String.c; path = "../../../../../../ClassiCube-master/src/String.c"; sourceTree = "<group>"; }; + 9A6C7C3F2C073DF900676D27 /* Protocol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Protocol.c; path = "../../../../../../ClassiCube-master/src/Protocol.c"; sourceTree = "<group>"; }; + 9A6C7C402C073DF900676D27 /* TouchUI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TouchUI.c; path = "../../../../../../ClassiCube-master/src/TouchUI.c"; sourceTree = "<group>"; }; + 9A6C7C412C073DF900676D27 /* _type1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _type1.c; path = "../../../../../../ClassiCube-master/src/_type1.c"; sourceTree = "<group>"; }; + 9A6C7C422C073DFA00676D27 /* BlockID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlockID.h; path = "../../../../../../ClassiCube-master/src/BlockID.h"; sourceTree = "<group>"; }; + 9A6C7C432C073DFA00676D27 /* Gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Gui.h; path = "../../../../../../ClassiCube-master/src/Gui.h"; sourceTree = "<group>"; }; + 9A6C7C442C073DFB00676D27 /* Picking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Picking.h; path = "../../../../../../ClassiCube-master/src/Picking.h"; sourceTree = "<group>"; }; + 9A6C7C452C073DFB00676D27 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../../../../../ClassiCube-master/src/Event.c"; sourceTree = "<group>"; }; + 9A6C7C462C073DFC00676D27 /* Launcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Launcher.c; path = "../../../../../../ClassiCube-master/src/Launcher.c"; sourceTree = "<group>"; }; + 9A6C7C472C073DFC00676D27 /* Camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Camera.h; path = "../../../../../../ClassiCube-master/src/Camera.h"; sourceTree = "<group>"; }; + 9A6C7C482C073DFC00676D27 /* Queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Queue.h; path = "../../../../../../ClassiCube-master/src/Queue.h"; sourceTree = "<group>"; }; + 9A6C7C492C073DFC00676D27 /* Screens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Screens.h; path = "../../../../../../ClassiCube-master/src/Screens.h"; sourceTree = "<group>"; }; + 9A6C7C4A2C073DFD00676D27 /* _sfnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _sfnt.c; path = "../../../../../../ClassiCube-master/src/_sfnt.c"; sourceTree = "<group>"; }; + 9A6C7C4B2C073DFD00676D27 /* ExtMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtMath.h; path = "../../../../../../ClassiCube-master/src/ExtMath.h"; sourceTree = "<group>"; }; + 9A6C7C4C2C073DFD00676D27 /* Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Options.h; path = "../../../../../../ClassiCube-master/src/Options.h"; sourceTree = "<group>"; }; + 9A6C7C4D2C073DFE00676D27 /* Entity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Entity.h; path = "../../../../../../ClassiCube-master/src/Entity.h"; sourceTree = "<group>"; }; + 9A6C7C4E2C073DFE00676D27 /* Drawer2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Drawer2D.h; path = "../../../../../../ClassiCube-master/src/Drawer2D.h"; sourceTree = "<group>"; }; + 9A6C7C4F2C073DFE00676D27 /* LScreens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LScreens.c; path = "../../../../../../ClassiCube-master/src/LScreens.c"; sourceTree = "<group>"; }; + 9A6C7C502C073DFE00676D27 /* Server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Server.h; path = "../../../../../../ClassiCube-master/src/Server.h"; sourceTree = "<group>"; }; + 9A6C7C512C073DFF00676D27 /* _HttpBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _HttpBase.h; path = "../../../../../../ClassiCube-master/src/_HttpBase.h"; sourceTree = "<group>"; }; + 9A6C7C522C073DFF00676D27 /* Commands.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Commands.c; path = "../../../../../../ClassiCube-master/src/Commands.c"; sourceTree = "<group>"; }; + 9A6C7C532C073DFF00676D27 /* Core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Core.h; path = "../../../../../../ClassiCube-master/src/Core.h"; sourceTree = "<group>"; }; + 9A6C7C542C073DFF00676D27 /* EnvRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvRenderer.h; path = "../../../../../../ClassiCube-master/src/EnvRenderer.h"; sourceTree = "<group>"; }; + 9A6C7C552C073E0000676D27 /* IsometricDrawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IsometricDrawer.c; path = "../../../../../../ClassiCube-master/src/IsometricDrawer.c"; sourceTree = "<group>"; }; + 9A6C7C562C073E0000676D27 /* _GLShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _GLShared.h; path = "../../../../../../ClassiCube-master/src/_GLShared.h"; sourceTree = "<group>"; }; + 9A6C7C572C073E0000676D27 /* HeldBlockRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = HeldBlockRenderer.c; path = "../../../../../../ClassiCube-master/src/HeldBlockRenderer.c"; sourceTree = "<group>"; }; + 9A6C7C582C073E0100676D27 /* _psmodule.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _psmodule.c; path = "../../../../../../ClassiCube-master/src/_psmodule.c"; sourceTree = "<group>"; }; + 9A6C7C592C073E0100676D27 /* World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = World.h; path = "../../../../../../ClassiCube-master/src/World.h"; sourceTree = "<group>"; }; + 9A6C7C5A2C073E0100676D27 /* Gui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Gui.c; path = "../../../../../../ClassiCube-master/src/Gui.c"; sourceTree = "<group>"; }; + 9A6C7C5B2C073E0200676D27 /* _truetype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _truetype.c; path = "../../../../../../ClassiCube-master/src/_truetype.c"; sourceTree = "<group>"; }; + 9A6C7C5C2C073E0200676D27 /* Generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Generator.h; path = "../../../../../../ClassiCube-master/src/Generator.h"; sourceTree = "<group>"; }; + 9A6C7C5D2C073E0200676D27 /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Game.h; path = "../../../../../../ClassiCube-master/src/Game.h"; sourceTree = "<group>"; }; + 9A6C7C5E2C073E0200676D27 /* Window_cocoa.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Window_cocoa.m; path = "../../../../../../ClassiCube-master/src/Window_cocoa.m"; sourceTree = "<group>"; }; + 9A6C7C5F2C073E0200676D27 /* Vorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Vorbis.c; path = "../../../../../../ClassiCube-master/src/Vorbis.c"; sourceTree = "<group>"; }; + 9A6C7C602C073E0300676D27 /* Inventory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Inventory.c; path = "../../../../../../ClassiCube-master/src/Inventory.c"; sourceTree = "<group>"; }; + 9A6C7C612C073E0300676D27 /* _PlatformBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _PlatformBase.h; path = "../../../../../../ClassiCube-master/src/_PlatformBase.h"; sourceTree = "<group>"; }; + 9A6C7C622C073E0300676D27 /* Animations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animations.c; path = "../../../../../../ClassiCube-master/src/Animations.c"; sourceTree = "<group>"; }; + 9A6C7C632C073E0300676D27 /* FancyLighting.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = FancyLighting.c; path = "../../../../../../ClassiCube-master/src/FancyLighting.c"; sourceTree = "<group>"; }; + 9A6C7C642C073E0400676D27 /* Inventory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Inventory.h; path = "../../../../../../ClassiCube-master/src/Inventory.h"; sourceTree = "<group>"; }; + 9A6C7C652C073E0400676D27 /* SSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SSL.h; path = "../../../../../../ClassiCube-master/src/SSL.h"; sourceTree = "<group>"; }; + 9A6C7C662C073E0400676D27 /* Widgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Widgets.c; path = "../../../../../../ClassiCube-master/src/Widgets.c"; sourceTree = "<group>"; }; + 9A6C7C672C073E0400676D27 /* Picking.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Picking.c; path = "../../../../../../ClassiCube-master/src/Picking.c"; sourceTree = "<group>"; }; + 9A6C7C682C073E0400676D27 /* _ftinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftinit.c; path = "../../../../../../ClassiCube-master/src/_ftinit.c"; sourceTree = "<group>"; }; + 9A6C7C692C073E0400676D27 /* Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Window.h; path = "../../../../../../ClassiCube-master/src/Window.h"; sourceTree = "<group>"; }; + 9A6C7C6A2C073E0500676D27 /* LBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LBackend.h; path = "../../../../../../ClassiCube-master/src/LBackend.h"; sourceTree = "<group>"; }; + 9A6C7C6B2C073E0500676D27 /* Http_Worker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Http_Worker.c; path = "../../../../../../ClassiCube-master/src/Http_Worker.c"; sourceTree = "<group>"; }; + 9A6C7C6C2C073E0500676D27 /* AxisLinesRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AxisLinesRenderer.h; path = "../../../../../../ClassiCube-master/src/AxisLinesRenderer.h"; sourceTree = "<group>"; }; + 9A6C7C6D2C073E0500676D27 /* ExtMath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ExtMath.c; path = "../../../../../../ClassiCube-master/src/ExtMath.c"; sourceTree = "<group>"; }; + 9A6C7C6E2C073E0600676D27 /* Block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Block.h; path = "../../../../../../ClassiCube-master/src/Block.h"; sourceTree = "<group>"; }; + 9A6C7C6F2C073E0600676D27 /* _cff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _cff.c; path = "../../../../../../ClassiCube-master/src/_cff.c"; sourceTree = "<group>"; }; + 9A6C7C702C073E0600676D27 /* Camera.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Camera.c; path = "../../../../../../ClassiCube-master/src/Camera.c"; sourceTree = "<group>"; }; + 9A6C7C712C073E0600676D27 /* Drawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Drawer.c; path = "../../../../../../ClassiCube-master/src/Drawer.c"; sourceTree = "<group>"; }; + 9A6C7C722C073E0600676D27 /* Entity.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Entity.c; path = "../../../../../../ClassiCube-master/src/Entity.c"; sourceTree = "<group>"; }; + 9A6C7C732C073E0700676D27 /* Audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Audio.h; path = "../../../../../../ClassiCube-master/src/Audio.h"; sourceTree = "<group>"; }; + 9A6C7C742C073E0700676D27 /* SystemFonts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SystemFonts.c; path = "../../../../../../ClassiCube-master/src/SystemFonts.c"; sourceTree = "<group>"; }; + 9A6C7C752C073E0700676D27 /* _GraphicsBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _GraphicsBase.h; path = "../../../../../../ClassiCube-master/src/_GraphicsBase.h"; sourceTree = "<group>"; }; + 9A6C7C762C073E0700676D27 /* BlockPhysics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BlockPhysics.c; path = "../../../../../../ClassiCube-master/src/BlockPhysics.c"; sourceTree = "<group>"; }; + 9A6C7C772C073E0700676D27 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = main.c; path = "../../../../../../ClassiCube-master/src/main.c"; sourceTree = "<group>"; }; + 9A6C7C782C073E0800676D27 /* Builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Builder.h; path = "../../../../../../ClassiCube-master/src/Builder.h"; sourceTree = "<group>"; }; + 9A6C7C792C073E0800676D27 /* Model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Model.c; path = "../../../../../../ClassiCube-master/src/Model.c"; sourceTree = "<group>"; }; + 9A6C7C7A2C073E0800676D27 /* Graphics_Metal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Graphics_Metal.m; path = "../../../../../../ClassiCube-master/src/Graphics_Metal.m"; sourceTree = "<group>"; }; + 9A6C7C7B2C073E0800676D27 /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logger.h; path = "../../../../../../ClassiCube-master/src/Logger.h"; sourceTree = "<group>"; }; + 9A6C7C7C2C073E0800676D27 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = "../../../../../../ClassiCube-master/src/Utils.h"; sourceTree = "<group>"; }; + 9A6C7C7D2C073E0800676D27 /* SelOutlineRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SelOutlineRenderer.c; path = "../../../../../../ClassiCube-master/src/SelOutlineRenderer.c"; sourceTree = "<group>"; }; + 9A6C7C7E2C073E0900676D27 /* EntityRenderers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EntityRenderers.c; path = "../../../../../../ClassiCube-master/src/EntityRenderers.c"; sourceTree = "<group>"; }; + 9A6C7C7F2C073E0900676D27 /* Graphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Graphics.h; path = "../../../../../../ClassiCube-master/src/Graphics.h"; sourceTree = "<group>"; }; + 9A6C7C802C073E0900676D27 /* LBackend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LBackend.c; path = "../../../../../../ClassiCube-master/src/LBackend.c"; sourceTree = "<group>"; }; + 9A6C7C812C073E0900676D27 /* Builder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Builder.c; path = "../../../../../../ClassiCube-master/src/Builder.c"; sourceTree = "<group>"; }; + 9A6C7C822C073E0900676D27 /* MapRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MapRenderer.h; path = "../../../../../../ClassiCube-master/src/MapRenderer.h"; sourceTree = "<group>"; }; + 9A6C7C832C073E0A00676D27 /* Server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Server.c; path = "../../../../../../ClassiCube-master/src/Server.c"; sourceTree = "<group>"; }; + 9A6C7C842C073E0A00676D27 /* Audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Audio.c; path = "../../../../../../ClassiCube-master/src/Audio.c"; sourceTree = "<group>"; }; + 9A6C7C852C073E0A00676D27 /* Deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Deflate.c; path = "../../../../../../ClassiCube-master/src/Deflate.c"; sourceTree = "<group>"; }; + 9A6C7C862C073E0A00676D27 /* Drawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Drawer.h; path = "../../../../../../ClassiCube-master/src/Drawer.h"; sourceTree = "<group>"; }; + 9A6C7C872C073E0B00676D27 /* Chat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Chat.h; path = "../../../../../../ClassiCube-master/src/Chat.h"; sourceTree = "<group>"; }; + 9A6C7C882C073E0B00676D27 /* BlockPhysics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlockPhysics.h; path = "../../../../../../ClassiCube-master/src/BlockPhysics.h"; sourceTree = "<group>"; }; + 9A6C7C892C073E0B00676D27 /* Bitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bitmap.c; path = "../../../../../../ClassiCube-master/src/Bitmap.c"; sourceTree = "<group>"; }; + 9A6C7C8A2C073E0B00676D27 /* LWidgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LWidgets.h; path = "../../../../../../ClassiCube-master/src/LWidgets.h"; sourceTree = "<group>"; }; + 9A6C7C8B2C073E0C00676D27 /* HeldBlockRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HeldBlockRenderer.h; path = "../../../../../../ClassiCube-master/src/HeldBlockRenderer.h"; sourceTree = "<group>"; }; + 9A6C7C8C2C073E0C00676D27 /* SelectionBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SelectionBox.h; path = "../../../../../../ClassiCube-master/src/SelectionBox.h"; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A6C796E2C073BFF00676D27 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A6C79682C073BFF00676D27 = { + isa = PBXGroup; + children = ( + 9A6C79732C073BFF00676D27 /* ClassiCube */, + 9A6C79722C073BFF00676D27 /* Products */, + ); + sourceTree = "<group>"; + }; + 9A6C79722C073BFF00676D27 /* Products */ = { + isa = PBXGroup; + children = ( + 9A6C79712C073BFF00676D27 /* ClassiCube */, + ); + name = Products; + sourceTree = "<group>"; + }; + 9A6C79732C073BFF00676D27 /* ClassiCube */ = { + isa = PBXGroup; + children = ( + 9A6C7BF52C073DED00676D27 /* _autofit.c */, + 9A6C7C6F2C073E0600676D27 /* _cff.c */, + 9A6C7C1E2C073DF300676D27 /* _ftbase.c */, + 9A6C7BF22C073DED00676D27 /* _ftbitmap.c */, + 9A6C7BEB2C073DEC00676D27 /* _ftglyph.c */, + 9A6C7C682C073E0400676D27 /* _ftinit.c */, + 9A6C7C382C073DF800676D27 /* _ftsynth.c */, + 9A6C7C562C073E0000676D27 /* _GLShared.h */, + 9A6C7C752C073E0700676D27 /* _GraphicsBase.h */, + 9A6C7C512C073DFF00676D27 /* _HttpBase.h */, + 9A6C7C612C073E0300676D27 /* _PlatformBase.h */, + 9A6C7BF62C073DED00676D27 /* _PlatformConsole.h */, + 9A6C7C152C073DF200676D27 /* _psaux.c */, + 9A6C7C102C073DF100676D27 /* _pshinter.c */, + 9A6C7C582C073E0100676D27 /* _psmodule.c */, + 9A6C7C4A2C073DFD00676D27 /* _sfnt.c */, + 9A6C7C0E2C073DF100676D27 /* _smooth.c */, + 9A6C7C5B2C073E0200676D27 /* _truetype.c */, + 9A6C7C412C073DF900676D27 /* _type1.c */, + 9A6C7C362C073DF700676D27 /* _WindowBase.h */, + 9A6C7C622C073E0300676D27 /* Animations.c */, + 9A6C7C222C073DF400676D27 /* Animations.h */, + 9A6C7C842C073E0A00676D27 /* Audio.c */, + 9A6C7C732C073E0700676D27 /* Audio.h */, + 9A6C7C0A2C073DF000676D27 /* AudioBackend.c */, + 9A6C7C342C073DF700676D27 /* AxisLinesRenderer.c */, + 9A6C7C6C2C073E0500676D27 /* AxisLinesRenderer.h */, + 9A6C7C892C073E0B00676D27 /* Bitmap.c */, + 9A6C7C1D2C073DF300676D27 /* Bitmap.h */, + 9A6C7C1C2C073DF300676D27 /* Block.c */, + 9A6C7C6E2C073E0600676D27 /* Block.h */, + 9A6C7C422C073DFA00676D27 /* BlockID.h */, + 9A6C7C762C073E0700676D27 /* BlockPhysics.c */, + 9A6C7C882C073E0B00676D27 /* BlockPhysics.h */, + 9A6C7C812C073E0900676D27 /* Builder.c */, + 9A6C7C782C073E0800676D27 /* Builder.h */, + 9A6C7C702C073E0600676D27 /* Camera.c */, + 9A6C7C472C073DFC00676D27 /* Camera.h */, + 9A6C7C2E2C073DF600676D27 /* Chat.c */, + 9A6C7C872C073E0B00676D27 /* Chat.h */, + 9A6C7C522C073DFF00676D27 /* Commands.c */, + 9A6C7BEF2C073DED00676D27 /* Commands.h */, + 9A6C7BEC2C073DED00676D27 /* Constants.h */, + 9A6C7C532C073DFF00676D27 /* Core.h */, + 9A6C7C852C073E0A00676D27 /* Deflate.c */, + 9A6C7C3B2C073DF800676D27 /* Deflate.h */, + 9A6C7C712C073E0600676D27 /* Drawer.c */, + 9A6C7C862C073E0A00676D27 /* Drawer.h */, + 9A6C7C112C073DF100676D27 /* Drawer2D.c */, + 9A6C7C4E2C073DFE00676D27 /* Drawer2D.h */, + 9A6C7C722C073E0600676D27 /* Entity.c */, + 9A6C7C4D2C073DFE00676D27 /* Entity.h */, + 9A6C7C042C073DEF00676D27 /* EntityComponents.c */, + 9A6C7BF32C073DED00676D27 /* EntityComponents.h */, + 9A6C7C7E2C073E0900676D27 /* EntityRenderers.c */, + 9A6C7C262C073DF500676D27 /* EntityRenderers.h */, + 9A6C7C352C073DF700676D27 /* EnvRenderer.c */, + 9A6C7C542C073DFF00676D27 /* EnvRenderer.h */, + 9A6C7C182C073DF300676D27 /* Errors.h */, + 9A6C7C452C073DFB00676D27 /* Event.c */, + 9A6C7C312C073DF700676D27 /* Event.h */, + 9A6C7C6D2C073E0500676D27 /* ExtMath.c */, + 9A6C7C4B2C073DFD00676D27 /* ExtMath.h */, + 9A6C7C632C073E0300676D27 /* FancyLighting.c */, + 9A6C7C2D2C073DF600676D27 /* Formats.c */, + 9A6C7C3A2C073DF800676D27 /* Formats.h */, + 9A6C7C062C073DEF00676D27 /* Funcs.h */, + 9A6C7C052C073DEF00676D27 /* Game.c */, + 9A6C7C5D2C073E0200676D27 /* Game.h */, + 9A6C7C242C073DF500676D27 /* GameVersion.c */, + 9A6C7BFB2C073DEE00676D27 /* Generator.c */, + 9A6C7C5C2C073E0200676D27 /* Generator.h */, + 9A6C7C2F2C073DF600676D27 /* Graphics_GL1.c */, + 9A6C7C012C073DEE00676D27 /* Graphics_GL2.c */, + 9A6C7C7A2C073E0800676D27 /* Graphics_Metal.m */, + 9A6C7C282C073DF500676D27 /* Graphics_SoftGPU.c */, + 9A6C7C7F2C073E0900676D27 /* Graphics.h */, + 9A6C7C5A2C073E0100676D27 /* Gui.c */, + 9A6C7C432C073DFA00676D27 /* Gui.h */, + 9A6C7C572C073E0000676D27 /* HeldBlockRenderer.c */, + 9A6C7C8B2C073E0C00676D27 /* HeldBlockRenderer.h */, + 9A6C7C6B2C073E0500676D27 /* Http_Worker.c */, + 9A6C7C032C073DEF00676D27 /* Http.h */, + 9A6C7BF02C073DED00676D27 /* Input.c */, + 9A6C7C372C073DF700676D27 /* Input.h */, + 9A6C7C5E2C073E0200676D27 /* Window_cocoa.m */, + 9A6C7C602C073E0300676D27 /* Inventory.c */, + 9A6C7C642C073E0400676D27 /* Inventory.h */, + 9A6C7C552C073E0000676D27 /* IsometricDrawer.c */, + 9A6C7C392C073DF800676D27 /* IsometricDrawer.h */, + 9A6C7C462C073DFC00676D27 /* Launcher.c */, + 9A6C7C2B2C073DF500676D27 /* Launcher.h */, + 9A6C7BFF2C073DEE00676D27 /* LBackend_Android.c */, + 9A6C7C802C073E0900676D27 /* LBackend.c */, + 9A6C7C6A2C073E0500676D27 /* LBackend.h */, + 9A6C7C022C073DEE00676D27 /* Lighting.c */, + 9A6C7C172C073DF200676D27 /* Lighting.h */, + 9A6C7C3C2C073DF800676D27 /* Logger.c */, + 9A6C7C7B2C073E0800676D27 /* Logger.h */, + 9A6C7C4F2C073DFE00676D27 /* LScreens.c */, + 9A6C7C332C073DF700676D27 /* LScreens.h */, + 9A6C7BFA2C073DEE00676D27 /* LWeb.c */, + 9A6C7BF42C073DED00676D27 /* LWeb.h */, + 9A6C7C1F2C073DF400676D27 /* LWidgets.c */, + 9A6C7C8A2C073E0B00676D27 /* LWidgets.h */, + 9A6C7C772C073E0700676D27 /* main.c */, + 9A6C7C292C073DF500676D27 /* MapRenderer.c */, + 9A6C7C822C073E0900676D27 /* MapRenderer.h */, + 9A6C7BF82C073DED00676D27 /* Menus.c */, + 9A6C7C142C073DF200676D27 /* Menus.h */, + 9A6C7C792C073E0800676D27 /* Model.c */, + 9A6C7C1B2C073DF300676D27 /* Model.h */, + 9A6C7BF12C073DED00676D27 /* Options.c */, + 9A6C7C4C2C073DFD00676D27 /* Options.h */, + 9A6C7C202C073DF400676D27 /* PackedCol.c */, + 9A6C7C0C2C073DF000676D27 /* PackedCol.h */, + 9A6C7C252C073DF500676D27 /* Particle.c */, + 9A6C7BFC2C073DEE00676D27 /* Particle.h */, + 9A6C7C212C073DF400676D27 /* Physics.c */, + 9A6C7BF72C073DED00676D27 /* Physics.h */, + 9A6C7C672C073E0400676D27 /* Picking.c */, + 9A6C7C442C073DFB00676D27 /* Picking.h */, + 9A6C7C072C073DEF00676D27 /* Platform_Posix.c */, + 9A6C7BF92C073DED00676D27 /* Platform.h */, + 9A6C7C3F2C073DF900676D27 /* Protocol.c */, + 9A6C7C232C073DF400676D27 /* Protocol.h */, + 9A6C7C0B2C073DF000676D27 /* Queue.c */, + 9A6C7C482C073DFC00676D27 /* Queue.h */, + 9A6C7C092C073DEF00676D27 /* Resources.c */, + 9A6C7C3D2C073DF900676D27 /* Resources.h */, + 9A6C7BFD2C073DEE00676D27 /* Screens.c */, + 9A6C7C492C073DFC00676D27 /* Screens.h */, + 9A6C7C2A2C073DF500676D27 /* SelectionBox.c */, + 9A6C7C8C2C073E0C00676D27 /* SelectionBox.h */, + 9A6C7C7D2C073E0800676D27 /* SelOutlineRenderer.c */, + 9A6C7C272C073DF500676D27 /* SelOutlineRenderer.h */, + 9A6C7C832C073E0A00676D27 /* Server.c */, + 9A6C7C502C073DFE00676D27 /* Server.h */, + 9A6C7BFE2C073DEE00676D27 /* SSL.c */, + 9A6C7C652C073E0400676D27 /* SSL.h */, + 9A6C7C2C2C073DF600676D27 /* Stream.c */, + 9A6C7BED2C073DED00676D27 /* Stream.h */, + 9A6C7C3E2C073DF900676D27 /* String.c */, + 9A6C7C322C073DF700676D27 /* String.h */, + 9A6C7C742C073E0700676D27 /* SystemFonts.c */, + 9A6C7C192C073DF300676D27 /* SystemFonts.h */, + 9A6C7C1A2C073DF300676D27 /* TexturePack.c */, + 9A6C7BEA2C073DEC00676D27 /* TexturePack.h */, + 9A6C7C402C073DF900676D27 /* TouchUI.c */, + 9A6C7C082C073DEF00676D27 /* Utils.c */, + 9A6C7C7C2C073E0800676D27 /* Utils.h */, + 9A6C7BE92C073DEC00676D27 /* Vectors.c */, + 9A6C7C0D2C073DF000676D27 /* Vectors.h */, + 9A6C7BEE2C073DED00676D27 /* VirtualKeyboard.h */, + 9A6C7C5F2C073E0200676D27 /* Vorbis.c */, + 9A6C7C0F2C073DF100676D27 /* Vorbis.h */, + 9A6C7C662C073E0400676D27 /* Widgets.c */, + 9A6C7C122C073DF100676D27 /* Widgets.h */, + 9A6C7C002C073DEE00676D27 /* Window_SDL.c */, + 9A6C7C162C073DF200676D27 /* Window_SDL3.c */, + 9A6C7C302C073DF600676D27 /* Window_Terminal.c */, + 9A6C7C692C073E0400676D27 /* Window.h */, + 9A6C7C132C073DF200676D27 /* World.c */, + 9A6C7C592C073E0100676D27 /* World.h */, + ); + path = ClassiCube; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A6C79702C073BFF00676D27 /* ClassiCube */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A6C79782C073BFF00676D27 /* Build configuration list for PBXNativeTarget "ClassiCube" */; + buildPhases = ( + 9A6C796D2C073BFF00676D27 /* Sources */, + 9A6C796E2C073BFF00676D27 /* Frameworks */, + 9A6C796F2C073BFF00676D27 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ClassiCube; + productName = ClassiCube; + productReference = 9A6C79712C073BFF00676D27 /* ClassiCube */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A6C79692C073BFF00676D27 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = ClassiCube; + TargetAttributes = { + 9A6C79702C073BFF00676D27 = { + CreatedOnToolsVersion = 10.1; + }; + }; + }; + buildConfigurationList = 9A6C796C2C073BFF00676D27 /* Build configuration list for PBXProject "ClassiCube" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 9A6C79682C073BFF00676D27; + productRefGroup = 9A6C79722C073BFF00676D27 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A6C79702C073BFF00676D27 /* ClassiCube */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A6C796D2C073BFF00676D27 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A6C7CB92C073E0C00676D27 /* AxisLinesRenderer.c in Sources */, + 9A6C7CAF2C073E0C00676D27 /* GameVersion.c in Sources */, + 9A6C7C9E2C073E0C00676D27 /* Platform_Posix.c in Sources */, + 9A6C7C9A2C073E0C00676D27 /* Graphics_GL2.c in Sources */, + 9A6C7C972C073E0C00676D27 /* SSL.c in Sources */, + 9A6C7CD42C073E0C00676D27 /* ExtMath.c in Sources */, + 9A6C7CD52C073E0C00676D27 /* _cff.c in Sources */, + 9A6C7CAA2C073E0C00676D27 /* Block.c in Sources */, + 9A6C7CC12C073E0C00676D27 /* Event.c in Sources */, + 9A6C7CDC2C073E0C00676D27 /* Model.c in Sources */, + 9A6C7CC72C073E0C00676D27 /* HeldBlockRenderer.c in Sources */, + 9A6C7CDB2C073E0C00676D27 /* main.c in Sources */, + 9A6C7CDE2C073E0C00676D27 /* SelOutlineRenderer.c in Sources */, + 9A6C7CB42C073E0C00676D27 /* Stream.c in Sources */, + 9A6C7CE22C073E0C00676D27 /* Server.c in Sources */, + 9A6C7C912C073E0C00676D27 /* _ftbitmap.c in Sources */, + 9A6C7CC52C073E0C00676D27 /* Commands.c in Sources */, + 9A6C7CD22C073E0C00676D27 /* _ftinit.c in Sources */, + 9A6C7CD72C073E0C00676D27 /* Drawer.c in Sources */, + 9A6C7CE12C073E0C00676D27 /* Builder.c in Sources */, + 9A6C7CA92C073E0C00676D27 /* TexturePack.c in Sources */, + 9A6C7C962C073E0C00676D27 /* Screens.c in Sources */, + 9A6C7CB32C073E0C00676D27 /* SelectionBox.c in Sources */, + 9A6C7CCC2C073E0C00676D27 /* Vorbis.c in Sources */, + 9A6C7CDF2C073E0C00676D27 /* EntityRenderers.c in Sources */, + 9A6C7CE02C073E0C00676D27 /* LBackend.c in Sources */, + 9A6C7CDA2C073E0C00676D27 /* BlockPhysics.c in Sources */, + 9A6C7CC92C073E0C00676D27 /* Gui.c in Sources */, + 9A6C7CAB2C073E0C00676D27 /* _ftbase.c in Sources */, + 9A6C7CB22C073E0C00676D27 /* MapRenderer.c in Sources */, + 9A6C7C9B2C073E0C00676D27 /* Lighting.c in Sources */, + 9A6C7C992C073E0C00676D27 /* Window_SDL.c in Sources */, + 9A6C7CBF2C073E0C00676D27 /* TouchUI.c in Sources */, + 9A6C7CD32C073E0C00676D27 /* Http_Worker.c in Sources */, + 9A6C7CD82C073E0C00676D27 /* Entity.c in Sources */, + 9A6C7CA02C073E0C00676D27 /* Resources.c in Sources */, + 9A6C7CA72C073E0C00676D27 /* _psaux.c in Sources */, + 9A6C7CCB2C073E0C00676D27 /* Window_cocoa.m in Sources */, + 9A6C7C9C2C073E0C00676D27 /* EntityComponents.c in Sources */, + 9A6C7C982C073E0C00676D27 /* LBackend_Android.c in Sources */, + 9A6C7CB02C073E0C00676D27 /* Particle.c in Sources */, + 9A6C7C942C073E0C00676D27 /* LWeb.c in Sources */, + 9A6C7C952C073E0C00676D27 /* Generator.c in Sources */, + 9A6C7C932C073E0C00676D27 /* Menus.c in Sources */, + 9A6C7CA22C073E0C00676D27 /* Queue.c in Sources */, + 9A6C7CC42C073E0C00676D27 /* LScreens.c in Sources */, + 9A6C7CD92C073E0C00676D27 /* SystemFonts.c in Sources */, + 9A6C7CA82C073E0C00676D27 /* Window_SDL3.c in Sources */, + 9A6C7CBE2C073E0C00676D27 /* Protocol.c in Sources */, + 9A6C7CC02C073E0C00676D27 /* _type1.c in Sources */, + 9A6C7CA12C073E0C00676D27 /* AudioBackend.c in Sources */, + 9A6C7CDD2C073E0C00676D27 /* Graphics_Metal.m in Sources */, + 9A6C7CBD2C073E0C00676D27 /* String.c in Sources */, + 9A6C7C8F2C073E0C00676D27 /* Input.c in Sources */, + 9A6C7CB52C073E0C00676D27 /* Formats.c in Sources */, + 9A6C7CB72C073E0C00676D27 /* Graphics_GL1.c in Sources */, + 9A6C7CA42C073E0C00676D27 /* _pshinter.c in Sources */, + 9A6C7CBA2C073E0C00676D27 /* EnvRenderer.c in Sources */, + 9A6C7C9F2C073E0C00676D27 /* Utils.c in Sources */, + 9A6C7C922C073E0C00676D27 /* _autofit.c in Sources */, + 9A6C7CCD2C073E0C00676D27 /* Inventory.c in Sources */, + 9A6C7CB12C073E0C00676D27 /* Graphics_SoftGPU.c in Sources */, + 9A6C7C9D2C073E0C00676D27 /* Game.c in Sources */, + 9A6C7CC62C073E0C00676D27 /* IsometricDrawer.c in Sources */, + 9A6C7CD12C073E0C00676D27 /* Picking.c in Sources */, + 9A6C7CAE2C073E0C00676D27 /* Physics.c in Sources */, + 9A6C7CA32C073E0C00676D27 /* _smooth.c in Sources */, + 9A6C7C8E2C073E0C00676D27 /* _ftglyph.c in Sources */, + 9A6C7CE52C073E0C00676D27 /* Bitmap.c in Sources */, + 9A6C7CD62C073E0C00676D27 /* Camera.c in Sources */, + 9A6C7CB62C073E0C00676D27 /* Chat.c in Sources */, + 9A6C7CCE2C073E0C00676D27 /* Animations.c in Sources */, + 9A6C7CE42C073E0C00676D27 /* Deflate.c in Sources */, + 9A6C7CC82C073E0C00676D27 /* _psmodule.c in Sources */, + 9A6C7CA62C073E0C00676D27 /* World.c in Sources */, + 9A6C7CAD2C073E0C00676D27 /* PackedCol.c in Sources */, + 9A6C7CBC2C073E0C00676D27 /* Logger.c in Sources */, + 9A6C7C902C073E0C00676D27 /* Options.c in Sources */, + 9A6C7CC32C073E0C00676D27 /* _sfnt.c in Sources */, + 9A6C7CBB2C073E0C00676D27 /* _ftsynth.c in Sources */, + 9A6C7C8D2C073E0C00676D27 /* Vectors.c in Sources */, + 9A6C7CD02C073E0C00676D27 /* Widgets.c in Sources */, + 9A6C7CB82C073E0C00676D27 /* Window_Terminal.c in Sources */, + 9A6C7CE32C073E0C00676D27 /* Audio.c in Sources */, + 9A6C7CAC2C073E0C00676D27 /* LWidgets.c in Sources */, + 9A6C7CCF2C073E0C00676D27 /* FancyLighting.c in Sources */, + 9A6C7CCA2C073E0C00676D27 /* _truetype.c in Sources */, + 9A6C7CA52C073E0C00676D27 /* Drawer2D.c in Sources */, + 9A6C7CC22C073E0C00676D27 /* Launcher.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 9A6C79762C073BFF00676D27 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 9A6C79772C073BFF00676D27 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + }; + name = Release; + }; + 9A6C79792C073BFF00676D27 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = NO; + CODE_SIGN_STYLE = Automatic; + MACOSX_DEPLOYMENT_TARGET = 10.13; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 9A6C797A2C073BFF00676D27 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = NO; + CODE_SIGN_STYLE = Automatic; + MACOSX_DEPLOYMENT_TARGET = 10.13; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A6C796C2C073BFF00676D27 /* Build configuration list for PBXProject "ClassiCube" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A6C79762C073BFF00676D27 /* Debug */, + 9A6C79772C073BFF00676D27 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A6C79782C073BFF00676D27 /* Build configuration list for PBXNativeTarget "ClassiCube" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A6C79792C073BFF00676D27 /* Debug */, + 9A6C797A2C073BFF00676D27 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A6C79692C073BFF00676D27 /* Project object */; +} diff --git a/misc/macOS/info.plist b/misc/macOS/info.plist new file mode 100644 index 0000000..404e331 --- /dev/null +++ b/misc/macOS/info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleExecutable</key> + <string>ClassiCube</string> + <key>CFBundleIconFile</key> + <string>ClassiCube</string> + <key>CFBundleIdentifier</key> + <string>com.classicube.client.mac</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>ClassiCube</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleDisplayName</key> + <string>ClassiCube</string> +</dict> +</plist> \ No newline at end of file diff --git a/misc/macOS/mac_icon_gen.cs b/misc/macOS/mac_icon_gen.cs new file mode 100644 index 0000000..a53e24d --- /dev/null +++ b/misc/macOS/mac_icon_gen.cs @@ -0,0 +1,43 @@ +using System.Drawing.Imaging; +using System.Drawing; +using System.IO; + +namespace test +{ + public static class Program + { + const string src = "CCicon.ico"; + const string dst = "_CCIcon_mac.h"; + + static void DumpIcon(StreamWriter sw, int width, int height) { + using (Icon icon = new Icon(src, width, height)) { + using (Bitmap bmp = icon.ToBitmap()) { + for (int y = 0; y < bmp.Height; y++) { + for (int x = 0; x < bmp.Width; x++) { + Color c = bmp.GetPixel(x, y); + + int r = c.R * c.A / 255; + int g = c.G * c.A / 255; + int b = c.B * c.A / 255; + int p = (r << 24) | (g << 16) | (b << 8) | c.A; + sw.Write("0x" + ((uint)p).ToString("X8") + ","); + } + sw.WriteLine(); + } + } + } + } + + public static void Main(string[] args) { + using (StreamWriter sw = new StreamWriter(dst)) { + sw.WriteLine("/* Generated using misc/macOS/mac_icon_gen.cs */"); + sw.WriteLine(""); + sw.WriteLine("static const unsigned int CCIcon_Data[] = {"); + DumpIcon(sw, 64, 64); + sw.WriteLine("};"); + sw.WriteLine("static const int CCIcon_Width = 64;"); + sw.WriteLine("static const int CCIcon_Height = 64;"); + } + } + } +} \ No newline at end of file diff --git a/misc/macclassic/68APPL.r b/misc/macclassic/68APPL.r new file mode 100644 index 0000000..5a71403 --- /dev/null +++ b/misc/macclassic/68APPL.r @@ -0,0 +1,23 @@ +#include "Processes.r" +#include "Retro68.r" + +resource 'SIZE' (-1) { + reserved, + ignoreSuspendResumeEvents, + reserved, + cannotBackground, + needsActivateOnFGSwitch, + backgroundAndForeground, + dontGetFrontClicks, + ignoreChildDiedEvents, + is32BitCompatible, + notHighLevelEventAware, + onlyLocalHLEvents, + notStationeryAware, + dontUseTextEditServices, + reserved, + reserved, + reserved, + 8192 * 1024, // preferred (maximum) memory size + 3584 * 1024, // minimum memory size (enough to load launcher) +}; diff --git a/misc/macclassic/Makefile_68k b/misc/macclassic/Makefile_68k new file mode 100644 index 0000000..17aa6ef --- /dev/null +++ b/misc/macclassic/Makefile_68k @@ -0,0 +1,36 @@ +# path to RETRO68 +RETRO68=../Retro68-build/toolchain + +PREFIX=$(RETRO68)/m68k-apple-macos +CC=$(RETRO68)/bin/m68k-apple-macos-gcc +CXX=$(RETRO68)/bin/m68k-apple-macos-g++ +CFLAGS=-O1 -fno-math-errno + +REZ=$(RETRO68)/bin/Rez + +LDFLAGS=-lm +RINCLUDES=$(PREFIX)/RIncludes +REZFLAGS=-I$(RINCLUDES) + +TARGET := ClassiCube-68k +BUILD_DIR := build-68k +SOURCE_DIR := src +C_SOURCES := $(wildcard $(SOURCE_DIR)/*.c) +C_OBJECTS := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(C_SOURCES)) + +$(TARGET).bin $(TARGET).APPL $(TARGET).dsk: $(BUILD_DIR) $(TARGET).code.bin + $(REZ) $(REZFLAGS) \ + --copy "$(TARGET).code.bin" \ + "misc/macclassic/68APPL.r" \ + -t "APPL" -c "????" \ + -o $(TARGET).bin --cc $(TARGET).APPL --cc $(TARGET).dsk + + +$(TARGET).code.bin: $(C_OBJECTS) + $(CC) $(C_OBJECTS) -o $@ $(LDFLAGS) + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c + $(CC) $(CFLAGS) -c $< -o $@ diff --git a/misc/macclassic/Makefile_ppc b/misc/macclassic/Makefile_ppc new file mode 100644 index 0000000..1f33063 --- /dev/null +++ b/misc/macclassic/Makefile_ppc @@ -0,0 +1,39 @@ +# path to RETRO68 +RETRO68=../Retro68-build/toolchain + +PREFIX=$(RETRO68)/powerpc-apple-macos +CC=$(RETRO68)/bin/powerpc-apple-macos-gcc +CXX=$(RETRO68)/bin/powerpc-apple-macos-g++ +CFLAGS=-O1 -fno-math-errno + +REZ=$(RETRO68)/bin/Rez +MakePEF=$(RETRO68)/bin/MakePEF + +LDFLAGS=-lm +RINCLUDES=$(PREFIX)/RIncludes +REZFLAGS=-I$(RINCLUDES) + +TARGET := ClassiCube-ppc +BUILD_DIR := build-ppc +SOURCE_DIR := src +C_SOURCES := $(wildcard $(SOURCE_DIR)/*.c) +C_OBJECTS := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(C_SOURCES)) + +$(TARGET).bin $(TARGET).APPL $(TARGET).dsk: $(BUILD_DIR) $(TARGET).pef + $(REZ) $(REZFLAGS) \ + "misc/macclassic/ppcAPPL.r" \ + -t "APPL" -c "????" \ + --data $(TARGET).pef \ + -o $(TARGET).bin --cc $(TARGET).APPL --cc $(TARGET).dsk + +$(TARGET).elf: $(C_OBJECTS) + $(CC) $(C_OBJECTS) -o $@ $(LDFLAGS) + +$(TARGET).pef: $(TARGET).elf + $(MakePEF) $(TARGET).elf -o $(TARGET).pef + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c + $(CC) $(CFLAGS) -c $< -o $@ diff --git a/misc/macclassic/ppcAPPL.r b/misc/macclassic/ppcAPPL.r new file mode 100644 index 0000000..9bea619 --- /dev/null +++ b/misc/macclassic/ppcAPPL.r @@ -0,0 +1,32 @@ +#include "Processes.r" +#include "CodeFragments.r" + +resource 'cfrg' (0) { + { + kPowerPCCFragArch, kIsCompleteCFrag, kNoVersionNum, kNoVersionNum, + kDefaultStackSize, kNoAppSubFolder, + kApplicationCFrag, kDataForkCFragLocator, kZeroOffset, kCFragGoesToEOF, + "ClassiCube" + } +}; + +resource 'SIZE' (-1) { + reserved, + ignoreSuspendResumeEvents, + reserved, + cannotBackground, + needsActivateOnFGSwitch, + backgroundAndForeground, + dontGetFrontClicks, + ignoreChildDiedEvents, + is32BitCompatible, + notHighLevelEventAware, + onlyLocalHLEvents, + notStationeryAware, + dontUseTextEditServices, + reserved, + reserved, + reserved, + 8192 * 1024, // preferred (maximum) memory size + 8192 * 1024 // minimum memory size +}; diff --git a/misc/n64/Makefile b/misc/n64/Makefile new file mode 100644 index 0000000..e14986c --- /dev/null +++ b/misc/n64/Makefile @@ -0,0 +1,26 @@ +all: ClassiCube-n64.z64 + +BUILD_DIR = build-n64 +SOURCE_DIR = src +N64_ROM_TITLE = "ClassiCube" +N64_ROM_RTC = true + +CFILES := $(notdir $(wildcard src/*.c)) +OFILES := $(CFILES:.c=.o) +OBJS := $(addprefix $(BUILD_DIR)/,$(OFILES)) +CFLAGS := -Wno-error=missing-braces -Wno-error=strict-aliasing -Wno-error=incompatible-pointer-types -Wno-error=maybe-uninitialized + +include $(N64_INST)/include/n64.mk + +ClassiCube-n64.z64: N64_ROM_TITLE = "ClassiCube" +ClassiCube-n64.z64: $(BUILD_DIR)/filesystem.dfs + +$(BUILD_DIR)/filesystem.dfs: misc/n64/default.zip + +$(BUILD_DIR)/ClassiCube-n64.elf: $(OBJS) + +clean: + rm -rf $(BUILD_DIR) *.z64 +.PHONY: clean + +-include $(wildcard $(BUILD_DIR)/*.d) diff --git a/misc/n64/default.zip b/misc/n64/default.zip new file mode 100644 index 0000000..73447f6 --- /dev/null +++ b/misc/n64/default.zip Binary files differdiff --git a/misc/opengl/GL1Funcs.h b/misc/opengl/GL1Funcs.h new file mode 100644 index 0000000..663fdf9 --- /dev/null +++ b/misc/opengl/GL1Funcs.h @@ -0,0 +1,63 @@ +/* Raster state functions */ +GL_FUNC(void, glAlphaFunc)(GLenum func, GLfloat ref); +GL_FUNC(void, glBlendFunc)(GLenum sfactor, GLenum dfactor); +GL_FUNC(void, glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_FUNC(void, glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_FUNC(void, glDepthFunc)(GLenum func); +GL_FUNC(void, glDepthMask)(GLboolean flag); +GL_FUNC(void, glDisable)(GLenum cap); +GL_FUNC(void, glDisableClientState)(GLenum array); +GL_FUNC(void, glEnable)(GLenum cap); +GL_FUNC(void, glEnableClientState)(GLenum array); + +/* Fog functions */ +GL_FUNC(void, glFogf)(GLenum pname, GLfloat param); +GL_FUNC(void, glFogfv)(GLenum pname, const GLfloat* params); +GL_FUNC(void, glFogi)(GLenum pname, GLint param); +GL_FUNC(void, glFogiv)(GLenum pname, const GLint* params); + +/* Transform functions */ +GL_FUNC(void, glLoadIdentity)(void); +GL_FUNC(void, glLoadMatrixf)(const GLfloat* m); +GL_FUNC(void, glMatrixMode)(GLenum mode); +GL_FUNC(void, glViewport)(GLint x, GLint y, GLsizei width, GLsizei height); + +/* Draw functions */ +GL_FUNC(void, glDrawArrays)(GLenum mode, GLint first, GLsizei count); +GL_FUNC(void, glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); +GL_FUNC(void, glColorPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer); +GL_FUNC(void, glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer); +GL_FUNC(void, glVertexPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer); + +/* Misc functions */ +GL_FUNC(void, glClear)(GLuint mask); +GL_FUNC(void, glHint)(GLenum target, GLenum mode); +GL_FUNC(void, glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); + +/* Texture functions */ +GL_FUNC(void, glBindTexture)(GLenum target, GLuint texture); +GL_FUNC(void, glDeleteTextures)(GLsizei n, const GLuint* textures); +GL_FUNC(void, glGenTextures)(GLsizei n, GLuint* textures); +GL_FUNC(void, glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_FUNC(void, glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); +GL_FUNC(void, glTexParameteri)(GLenum target, GLenum pname, GLint param); + +/* State get functions */ +GL_FUNC(GLenum, glGetError)(void); +GL_FUNC(void, glGetFloatv)(GLenum pname, GLfloat* params); +GL_FUNC(void, glGetIntegerv)(GLenum pname, GLint* params); +GL_FUNC(const GLubyte*, glGetString)(GLenum name); + +/* Legacy display list functions */ +GL_FUNC(void, glCallList)(GLuint list); +GL_FUNC(void, glDeleteLists)(GLuint list, GLsizei range); +GL_FUNC(GLuint, glGenLists)(GLsizei range); +GL_FUNC(void, glNewList)(GLuint list, GLenum mode); +GL_FUNC(void, glEndList)(void); + +/* Legacy vertex draw functions */ +GL_FUNC(void, glBegin)(GLenum mode); +GL_FUNC(void, glEnd)(void); +GL_FUNC(void, glColor4ub)(GLubyte r, GLubyte g, GLubyte b, GLubyte a); +GL_FUNC(void, glTexCoord2f)(float u, float v); +GL_FUNC(void, glVertex3f)(float x, float y, float z); \ No newline at end of file diff --git a/misc/opengl/GL2Funcs.h b/misc/opengl/GL2Funcs.h new file mode 100644 index 0000000..da12075 --- /dev/null +++ b/misc/opengl/GL2Funcs.h @@ -0,0 +1,36 @@ +/* Buffer functions */ +GL_FUNC(void, glBindBuffer)(GLenum target, GLuint buffer); +GL_FUNC(void, glDeleteBuffers)(GLsizei n, const GLuint* buffers); +GL_FUNC(void, glGenBuffers)(GLsizei n, GLuint *buffers); +GL_FUNC(void, glBufferData)(GLenum target, cc_uintptr size, const GLvoid* data, GLenum usage); +GL_FUNC(void, glBufferSubData)(GLenum target, cc_uintptr offset, cc_uintptr size, const GLvoid* data); + +/* Shader functions */ +GL_FUNC(GLuint, glCreateShader)(GLenum type); +GL_FUNC(void, glDeleteShader)(GLuint shader); +GL_FUNC(void, glGetShaderiv)(GLuint shader, GLenum pname, GLint* params); +GL_FUNC(void, glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei* length, char* infoLog); +GL_FUNC(void, glShaderSource)(GLuint shader, GLsizei count, const char* const* string, const GLint* length); + +GL_FUNC(void, glAttachShader)(GLuint program, GLuint shader); +GL_FUNC(void, glBindAttribLocation)(GLuint program, GLuint index, const char* name); +GL_FUNC(void, glCompileShader)(GLuint shader); +GL_FUNC(void, glDetachShader)(GLuint program, GLuint shader); +GL_FUNC(void, glLinkProgram)(GLuint program); + +/* Program functions */ +GL_FUNC(GLuint, glCreateProgram)(void); +GL_FUNC(void, glDeleteProgram)(GLuint program); +GL_FUNC(void, glGetProgramiv)(GLuint program, GLenum pname, GLint* params); +GL_FUNC(void, glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei* length, char* infoLog); +GL_FUNC(void, glUseProgram)(GLuint program); + +GL_FUNC(void, glDisableVertexAttribArray)(GLuint index); +GL_FUNC(void, glEnableVertexAttribArray)(GLuint index); +GL_FUNC(void, glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); + +GL_FUNC(GLint, glGetUniformLocation)(GLuint program, const char* name); +GL_FUNC(void, glUniform1f)(GLint location, GLfloat v0); +GL_FUNC(void, glUniform2f)(GLint location, GLfloat v0, GLfloat v1); +GL_FUNC(void, glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_FUNC(void, glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); \ No newline at end of file diff --git a/misc/opengl/GLCommon.h b/misc/opengl/GLCommon.h new file mode 100644 index 0000000..8b56922 --- /dev/null +++ b/misc/opengl/GLCommon.h @@ -0,0 +1,102 @@ +#if defined CC_BUILD_WIN + /* Avoid pointless includes */ + #define WIN32_LEAN_AND_MEAN + #define NOSERVICE + #define NOMCX + #define NOIME + #include <windows.h> + #define GLAPI WINGDIAPI +#else + #define GLAPI extern + #define APIENTRY +#endif + +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef signed char GLbyte; +typedef int GLint; +typedef int GLsizei; +typedef unsigned char GLubyte; +typedef unsigned int GLuint; +typedef float GLfloat; +typedef void GLvoid; + +/* NOTE: With the OpenGL 1.1 backend "pointer" arguments are actual pointers, */ +/* but with VBOs they are just offsets instead */ +#ifdef CC_BUILD_GL11 +typedef const void* GLpointer; +#else +typedef cc_uintptr GLpointer; +#endif + +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 + +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +#define GL_LINES 0x0001 +#define GL_TRIANGLES 0x0004 +#define GL_QUADS 0x0007 + +#define GL_BLEND 0x0BE2 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 + +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_RGBA 0x1908 + +#define GL_FOG 0x0B60 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 +#define GL_LINEAR 0x2601 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 + +#define GL_CULL_FACE 0x0B44 +#define GL_DEPTH_TEST 0x0B71 +#define GL_MATRIX_MODE 0x0BA0 +#define GL_VIEWPORT 0x0BA2 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_DEPTH_BITS 0x0D56 + +#define GL_FOG_HINT 0x0C54 +#define GL_NICEST 0x1102 +#define GL_COMPILE 0x1300 + +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 + +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +#define GL_TEXTURE_2D 0x0DE1 +#define GL_NEAREST 0x2600 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 + +#define GL_VERTEX_ARRAY 0x8074 +#define GL_COLOR_ARRAY 0x8076 +#define GL_TEXTURE_COORD_ARRAY 0x8078 + +/* Not present in gl.h on Windows (only up to OpenGL 1.1) */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_INFO_LOG_LENGTH 0x8B84 \ No newline at end of file diff --git a/misc/os2/Makefile b/misc/os2/Makefile new file mode 100644 index 0000000..8e1c1d3 --- /dev/null +++ b/misc/os2/Makefile @@ -0,0 +1,59 @@ +#-------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# +# NO_ICON: if set to anything, do not use icon. +# NO_NACP: if set to anything, no .nacp file is generated. +# APP_TITLE is the name of the app stored in the .nacp file (Optional) +# APP_AUTHOR is the author of the app stored in the .nacp file (Optional) +# APP_VERSION is the version of the app stored in the .nacp file (Optional) +# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional) +# ICON is the filename of the icon (.jpg), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - <Project name>.jpg +# - icon.jpg +# - <libnx folder>/default_icon.jpg +# +# CONFIG_JSON is the filename of the NPDM config file (.json), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - <Project name>.json +# - config.json +# If a JSON file is provided or autodetected, an ExeFS PFS0 (.nsp) is built instead +# of a homebrew executable (.nro). This is intended to be used for sysmodules. +# NACP building is skipped as well. +#--------------------------------------------------------------------------------- +TARGET := ClassiCube +BUILD_DIR := build +SOURCE_DIR:= src +DATA := data +C_SOURCES := $(wildcard $(SOURCE_DIR)/*.c) +C_OBJECTS := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(C_SOURCES)) + +OBJECTS := $(C_OBJECTS) $(BUILD_DIR)/$(TARGET).res misc/os2/classicube.def +ENAME = ClassiCube +DEL = rm -f +APP_TITLE := ClassiCube +APP_AUTHOR := UnknownShadow200 + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +CC := gcc +CFLAGS := -pipe -fno-math-errno -O3 -g -mtune=pentium4 -msse2 -march=i686 -idirafter /@unixroot/usr/include/os2tk45 -DOS2 +LDFLAGS := -Zhigh-mem -Zomf -Zargs-wild -Zargs-resp -Zlinker DISABLE -Zlinker 1121 +LIBS := -lcx -lmmpm2 -lpthread -lSDL2 + +$(TARGET).exe: $(BUILD_DIR) $(OBJECTS) + $(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS) + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c + $(CC) $(CFLAGS) -c $< -o $@ + +$(BUILD_DIR)/$(TARGET).res: misc/os2/$(TARGET).rc misc/os2/$(TARGET).ico + wrc -r misc/os2/$(TARGET).rc -fo=$@ + diff --git a/misc/ps1/CMakeLists.txt b/misc/ps1/CMakeLists.txt new file mode 100644 index 0000000..1f78b62 --- /dev/null +++ b/misc/ps1/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.21) + +project( + ClassiCube + LANGUAGES C ASM + VERSION 1.0.0 + DESCRIPTION "ClassiCube PS1 port" + HOMEPAGE_URL "https://classicube.net" +) + +add_definitions(-DPLAT_PS1) +file(GLOB _sources ../../src/*.c) + +psn00bsdk_add_executable(template GPREL ${_sources}) + +psn00bsdk_add_cd_image( + iso # Target name + template # Output file name (= template.bin + template.cue) + iso.xml # Path to config file + DEPENDS template system.cnf +) diff --git a/misc/ps1/CMakePresets.json b/misc/ps1/CMakePresets.json new file mode 100644 index 0000000..97d8428 --- /dev/null +++ b/misc/ps1/CMakePresets.json @@ -0,0 +1,26 @@ +{ + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 21, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "Default configuration", + "description": "Use this preset to build the project using PSn00bSDK.", + "generator": "Ninja", + "toolchainFile": "$env{PSN00BSDK_LIBS}/cmake/sdk.cmake", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug", + "PSN00BSDK_TC": "", + "PSN00BSDK_TARGET": "mipsel-none-elf" + }, + "warnings": { + "dev": false + } + } + ] +} diff --git a/misc/ps1/iso.xml b/misc/ps1/iso.xml new file mode 100644 index 0000000..220f726 --- /dev/null +++ b/misc/ps1/iso.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + This file is processed by CMake and used by mkpsxiso to build the CD image. + + NOTE: all paths are relative to the build directory; if you want to include + a file from the source tree, you'll have to prepend its path with + ${PROJECT_SOURCE_DIR}. +--> +<iso_project> + <track type="data"> + <!-- + The "volume", "volume_set", "publisher", "data_preparer" and + "copyright" strings below can be freely modified. The ISO9660 + specification, however, imposes the following limitations: + + - "volume" and "volume_set" must be 32 characters or less, and can + only contain uppercase letters, digits and underscores. + - "publisher" and "data_preparer" can be up to 128 characters long + and can additionally contain spaces and some special characters. + - "copyright" should be a path to a file on the disc, even one that + does not exist (but in practice it can be set to anything). + + "system" and "application" must always be set to "PLAYSTATION" in + order for the disc to be recognized as valid. + --> + <identifiers + system ="PLAYSTATION" + volume ="PSN00BSDK_TEMPLATE" + volume_set ="PSN00BSDK_TEMPLATE" + publisher ="MEIDOTEK" + data_preparer ="PSN00BSDK ${PSN00BSDK_VERSION}" + application ="PLAYSTATION" + copyright ="README.TXT;1" + /> + + <!-- + You may optionally include a license file using the <license> tag. + Some consoles, particularly Japanese or PAL models with a modchip, + require the disc to contain valid license data and will refuse to + boot if it is missing. License files are usually not required on + US consoles or when booting via softmods or cheat cartridges. + + License files are region-specific and are not distributed with + PSn00bSDK for obvious reasons, but can be dumped from an official + game using dumpsxiso or extracted from the Sony SDK. + --> + <!--<license file="${PROJECT_SOURCE_DIR}/license.dat" />--> + + <!-- + Files and directories can be added to the disc by placing <file> + and <dir> tags below. All file names are case-insensitive and must + be in 8.3 format, i.e. no more than 8 characters for the name and 3 + for the optional extension. Directories cannot have extensions. + + A boot configuration file (SYSTEM.CNF) or executable (PSX.EXE) must + be present in the root directory. Due to BIOS limitations the root + directory cannot hold more than 30 files or directories, and the + entire disc must contain 45 directories or less. Subdirectories can + contain any number of files. + --> + <directory_tree> + <file name="SYSTEM.CNF" type="data" source="${PROJECT_SOURCE_DIR}/system.cnf" /> + <file name="TEMPLATE.EXE" type="data" source="template.exe" /> + <!-- + This file is only required if you are using dynamic linking + (see the system/dynlink example). It contains the executable's + symbol map and can be used to obtain the address of a function + or global variable by its name. + --> + <!--<file name="TEMPLATE.MAP" type="data" source="template.map" />--> + + <dir name="texpacks"> + <file name="default.zip" type="data" source="../classicube.zip" /> + </dir> + <dummy sectors="1024"/> + </directory_tree> + </track> + + <!-- + CD-DA tracks can be added to the CD image by using one or more <track> + tags. The source attribute must be a path to an audio file in WAV, FLAC + or MP3 format (using WAV or FLAC is highly recommended to preserve + audio quality if you have a lossless copy of the source track). + --> + <!--<track type="audio" source="${PROJECT_SOURCE_DIR}/track2.wav" />--> +</iso_project> diff --git a/misc/ps1/system.cnf b/misc/ps1/system.cnf new file mode 100644 index 0000000..e221726 --- /dev/null +++ b/misc/ps1/system.cnf @@ -0,0 +1,4 @@ +BOOT=cdrom:\template.exe;1 +TCB=4 +EVENT=10 +STACK=801FFFF0 diff --git a/misc/ps2/Makefile b/misc/ps2/Makefile new file mode 100644 index 0000000..897ea19 --- /dev/null +++ b/misc/ps2/Makefile @@ -0,0 +1,55 @@ +ifeq ($(strip $(PS2SDK)),) +$(error "PS2SDK must be set in your environment") +endif +BUILD_DIR = build-ps2 + +CFILES := $(wildcard src/*.c) +OBJS :=$(patsubst %.c, %.o, $(CFILES)) +IOP_MODS:= DEV9_irx.o NETMAN_irx.o SMAP_irx.o USBD_irx.o BDM_irx.o BDMFS_FATFS_irx.o USBMASS_BD_irx.o USBHDFSD_irx.o USBMOUSE_irx.o + +EE_BIN = ClassiCube-ps2.elf +EE_OBJS = $(OBJS) $(patsubst %.o, $(BUILD_DIR)/%.o, $(IOP_MODS)) +EE_LIBS = -lpatches -lpad -lpacket -ldma -lgraph -ldraw -lc -lps2ip -lnetman -lmc -lmouse +EE_CFLAGS = -DPLAT_PS2 + +all: $(BUILD_DIR) $(EE_BIN) + +clean: + rm -f $(EE_BIN) $(EE_OBJS) + +$(BUILD_DIR): + mkdir -p $@ + +# Networking IRX modules +$(BUILD_DIR)/DEV9_irx.c: $(PS2SDK)/iop/irx/ps2dev9.irx + bin2c $< $@ DEV9_irx + +$(BUILD_DIR)/NETMAN_irx.c: $(PS2SDK)/iop/irx/netman.irx + bin2c $< $@ NETMAN_irx + +$(BUILD_DIR)/SMAP_irx.c: $(PS2SDK)/iop/irx/smap.irx + bin2c $< $@ SMAP_irx + +# USB storage IRX modules +$(BUILD_DIR)/USBD_irx.c: $(PS2SDK)/iop/irx/usbd.irx + bin2c $< $@ USBD_irx + +$(BUILD_DIR)/BDM_irx.c: $(PS2SDK)/iop/irx/bdm.irx + bin2c $< $@ BDM_irx + +$(BUILD_DIR)/BDMFS_FATFS_irx.c: $(PS2SDK)/iop/irx/bdmfs_fatfs.irx + bin2c $< $@ BDMFS_FATFS_irx + +$(BUILD_DIR)/USBMASS_BD_irx.c: $(PS2SDK)/iop/irx/usbmass_bd.irx + bin2c $< $@ USBMASS_BD_irx + +$(BUILD_DIR)/USBHDFSD_irx.c: $(PS2SDK)/iop/irx/usbhdfsd.irx + bin2c $< $@ USBHDFSD_irx + +# USB input IRX modules +$(BUILD_DIR)/USBMOUSE_irx.c: $(PS2SDK)/iop/irx/ps2mouse.irx + bin2c $< $@ USBMOUSE_irx + + +include $(PS2SDK)/samples/Makefile.pref +include $(PS2SDK)/samples/Makefile.eeglobal diff --git a/misc/ps3/ICON0.png b/misc/ps3/ICON0.png new file mode 100644 index 0000000..f6446f9 --- /dev/null +++ b/misc/ps3/ICON0.png Binary files differdiff --git a/misc/ps3/Makefile b/misc/ps3/Makefile new file mode 100644 index 0000000..1ab8320 --- /dev/null +++ b/misc/ps3/Makefile @@ -0,0 +1,144 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- +ifeq ($(strip $(PS3DEV)),) +$(error "Please set PS3DEV in your environment. export PS3DEV=<path>") +endif +ifeq ($(strip $(PSL1GHT)),) +$(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>") +endif + +include $(PS3DEV)/ppu_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := ClassiCube-PS3 +BUILD := build-ps3 +SOURCES := src third_party/bearssl/src +INCLUDES := third_party/bearssl/inc +SHADERS := misc/ps3 + +TITLE := ClassiCube +APPID := CUBE00200 +CONTENTID := UP0001-$(APPID)_00-0000000000000000 +ICON0 := ../misc/ps3/ICON0.png +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -O2 -DPLAT_PS3 -Wall -mcpu=cell -fno-math-errno $(MACHDEP) $(INCLUDE) +CXXFLAGS = $(CFLAGS) + +LDFLAGS = $(MACHDEP) -Wl,-Map,$(notdir $@).map -fno-use-linker-plugin + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lrsx -lgcm_sys -lio -lsysutil -lrt -llv2 -lm -lnet -lsysmodule + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(SHADERS),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +export BUILDDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) +VCGFILES := $(notdir $(wildcard misc/ps3/*.vcg)) +FCGFILES := $(notdir $(wildcard misc/ps3/*.fcg)) + +VPOFILES := $(VCGFILES:.vcg=.vpo) +FPOFILES := $(FCGFILES:.fcg=.fpo) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +export LD := $(CC) +export OFILES := $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o) \ + $(addsuffix .o,$(VPOFILES)) \ + $(addsuffix .o,$(FPOFILES)) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES), -I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + $(LIBPSL1GHT_INC) \ + -I$(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \ + $(LIBPSL1GHT_LIB) + +export OUTPUT := $(CURDIR)/$(TARGET) +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/ps3/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).self + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).pkg: $(OUTPUT).self +$(OUTPUT).self: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +#--------------------------------------------------------------------------------- +# This rule links in binary data with the .bin extension +%.bin.o : %.bin + @echo $(notdir $<) + @$(bin2o) + +%.vpo.o : %.vpo + @echo $(notdir $<) + @$(bin2o) + +%.fpo.o : %.fpo + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/misc/ps3/ps_coloured.fcg b/misc/ps3/ps_coloured.fcg new file mode 100644 index 0000000..928ade4 --- /dev/null +++ b/misc/ps3/ps_coloured.fcg @@ -0,0 +1,7 @@ +float4 main +( + float4 in_color : COLOR +) : COLOR +{ + return in_color; +} \ No newline at end of file diff --git a/misc/ps3/ps_textured.fcg b/misc/ps3/ps_textured.fcg new file mode 100644 index 0000000..d800712 --- /dev/null +++ b/misc/ps3/ps_textured.fcg @@ -0,0 +1,9 @@ +float4 main +( + float4 in_color : COLOR, + float2 in_tex0 : TEXCOORD0, + uniform sampler2D tex +) : COLOR +{ + return tex2D(tex, in_tex0) * in_color; +} \ No newline at end of file diff --git a/misc/ps3/vs_coloured.vcg b/misc/ps3/vs_coloured.vcg new file mode 100644 index 0000000..b41f690 --- /dev/null +++ b/misc/ps3/vs_coloured.vcg @@ -0,0 +1,11 @@ +void main( + float4 in_position : POSITION, + float4 in_color : DIFFUSE, + uniform float4x4 mvp, + out float4 out_pos : POSITION, + out float4 out_color : COLOR) +{ + float4 pos = float4(in_position.xyz, 1.0f); + out_pos = mul(pos, mvp); + out_color = in_color; +} \ No newline at end of file diff --git a/misc/ps3/vs_offset.vcg b/misc/ps3/vs_offset.vcg new file mode 100644 index 0000000..000e16e --- /dev/null +++ b/misc/ps3/vs_offset.vcg @@ -0,0 +1,15 @@ +void main( + float4 in_position : POSITION, + float4 in_color : DIFFUSE, + float4 in_tex : TEXCOORD, + uniform float4x4 mvp, + uniform float4 uv_offset, + out float4 out_pos : POSITION, + out float4 out_color : COLOR, + out float2 out_tex : TEXCOORD0) +{ + float4 pos = float4(in_position.xyz, 1.0f); + out_pos = mul(pos, mvp); + out_color = in_color; + out_tex = in_tex + uv_offset; +} \ No newline at end of file diff --git a/misc/ps3/vs_textured.vcg b/misc/ps3/vs_textured.vcg new file mode 100644 index 0000000..f0edbfa --- /dev/null +++ b/misc/ps3/vs_textured.vcg @@ -0,0 +1,14 @@ +void main( + float4 in_position : POSITION, + float4 in_color : DIFFUSE, + float4 in_tex : TEXCOORD, + uniform float4x4 mvp, + out float4 out_pos : POSITION, + out float4 out_color : COLOR, + out float2 out_tex : TEXCOORD0) +{ + float4 pos = float4(in_position.xyz, 1.0f); + out_pos = mul(pos, mvp); + out_color = in_color; + out_tex = in_tex; +} \ No newline at end of file diff --git a/misc/psp/Makefile b/misc/psp/Makefile new file mode 100644 index 0000000..45dde84 --- /dev/null +++ b/misc/psp/Makefile @@ -0,0 +1,19 @@ +TARGET = ClassiCube-psp +SOURCES = $(wildcard src/*.c) $(wildcard third_party/bearssl/src/*.c) +OBJS = $(patsubst %.c, %.o, $(SOURCES)) + +INCDIR = third_party/bearssl/inc +CFLAGS = -g -O1 -fno-math-errno +ASFLAGS = $(CFLAGS) + +LIBDIR = +LDFLAGS = +LIBS = -lm -lpspgum -lpspgu -lpspge -lpspdisplay -lpspctrl + +BUILD_PRX = 1 + +EXTRA_TARGETS = EBOOT.PBP +PSP_EBOOT_TITLE = ClassiCube + +PSPSDK=$(shell psp-config --pspsdk-path) +include $(PSPSDK)/lib/build.mak diff --git a/misc/readme.md b/misc/readme.md new file mode 100644 index 0000000..56f5358 --- /dev/null +++ b/misc/readme.md @@ -0,0 +1,19 @@ +This folder contains additional files and resources for ClassiCube + +## Icons + +CCicon.ico is the basis icon for the other icon files + +Generating icons that can be embedded in the executable is operating system and compiler specific - see the relevant operating system folder for more details + +TODO: Explain how to compile your own icon for all the platforms + +## Folder meanings + +|File|Description| +|--------|-------| +|windows | Contains icons | +|macOS | Contains icons, Info.plist for generating macOS Application Bundle | +|linux | Contains icons, script for generating a Desktop Entry | +|xbox | Contains Xbox shaders | +|build_scripts | Contains scripts for compiling plugins and optimised ClassiCube executables| \ No newline at end of file diff --git a/misc/saturn/Makefile b/misc/saturn/Makefile new file mode 100644 index 0000000..3bf455c --- /dev/null +++ b/misc/saturn/Makefile @@ -0,0 +1,28 @@ +ifeq ($(strip $(YAUL_INSTALL_ROOT)),) + $(error Undefined YAUL_INSTALL_ROOT (install root directory)) +endif + +SH_BUILD_DIR := build-saturn + +include $(YAUL_INSTALL_ROOT)/share/build.pre.mk + +# Each asset follows the format: <path>;<symbol>. Duplicates are removed +BUILTIN_ASSETS= + +SH_PROGRAM := ClassiCube-saturn +SH_SRCS := $(wildcard src/*.c) + +SH_CFLAGS+= -Os -I. -DPLAT_SATURN -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers +SH_LDFLAGS+= + +IP_VERSION:= V1.000 +IP_RELEASE_DATE:= 20230101 +IP_AREAS:= JTUBKAEL +IP_PERIPHERALS:= JAMKST +IP_TITLE:= ClassiCube +IP_MASTER_STACK_ADDR:= 0x06004000 +IP_SLAVE_STACK_ADDR:= 0x06001E00 +IP_1ST_READ_ADDR:= 0x06004000 +IP_1ST_READ_SIZE:= 0 + +include $(YAUL_INSTALL_ROOT)/share/build.post.iso-cue.mk diff --git a/misc/sdl/CCIcon_SDL.h b/misc/sdl/CCIcon_SDL.h new file mode 100644 index 0000000..aaf79e1 --- /dev/null +++ b/misc/sdl/CCIcon_SDL.h @@ -0,0 +1,71 @@ +/* Generated using misc/linux_icon_gen.cs */ + +static const unsigned CCIcon_Data[] = { +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFD6D6D6,0xFFEBEBEB,0xFFF6F6F6,0xFFF5F5F5,0xFFEAEAEA,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFEDEDED,0xFFE4E4E4,0xFFE7E7E7,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFF7F7F7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFE1E1E1,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFEFEFEF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE0E0E0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD6D6D6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEAEAEA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFE8E8E8,0xFFF2F2F2,0xFFFAFAFA,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFEDEDED,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD9D9D9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFE0E0E0,0xFFE0E0E0,0xFFCDCDCD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFF8F8F8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCDCDCD,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD3D3D3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC5C5C5,0xFFF5F5F5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDFDFDF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD7D7D7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE1E1E1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDDDDDD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD5D5D5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDCDCDC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFF3F3F3,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD1D1D1,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD1D1D1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEBEBEB,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFD3D3D3,0xFFD6D6D6,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD4D4D4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC7C7C7,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFD3D3D3,0xFFCCCCCC,0xFFBEBEBE,0xFFE2E2E2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDDDDDD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE8E8E8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFDCDCDC,0xFFE1E1E1,0xFFDCDCDC,0xFFCFCFCF,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFBFBFB,0xFFE4E4E4,0xFFD0D0D0,0xFFC4C4C4,0xFFC3C3C3,0xFFCFCFCF,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +}; +static const int CCIcon_Width = 64; +static const int CCIcon_Height = 64; +static const int CCIcon_Pitch = 256; diff --git a/misc/sdl/sdl_icon_gen.cs b/misc/sdl/sdl_icon_gen.cs new file mode 100644 index 0000000..90d0e5f --- /dev/null +++ b/misc/sdl/sdl_icon_gen.cs @@ -0,0 +1,40 @@ +using System.Drawing.Imaging; +using System.Drawing; +using System.IO; + +namespace test +{ + public static class Program + { + const string src = "CCicon.ico"; + const string dst = "CCIcon_SDL.h"; + + static void DumpIcon(StreamWriter sw, int width, int height) { + using (Icon icon = new Icon(src, width, height)) { + using (Bitmap bmp = icon.ToBitmap()) { + for (int y = 0; y < bmp.Height; y++) { + for (int x = 0; x < bmp.Width; x++) { + Color c = bmp.GetPixel(x, y); + int p = (c.A << 24) | (c.R << 16) | (c.G << 8) | c.B; + sw.Write("0x" + ((uint)p).ToString("X8") + ","); + } + sw.WriteLine(); + } + } + } + sw.WriteLine("static const int CCIcon_Width = {0};", width); + sw.WriteLine("static const int CCIcon_Height = {0};", height); + sw.WriteLine("static const int CCIcon_Pitch = {0};", width * 4); + } + + public static void Main(string[] args) { + using (StreamWriter sw = new StreamWriter(dst)) { + sw.WriteLine("/* Generated using misc/sdl/sdl_icon_gen.cs */"); + sw.WriteLine(""); + sw.WriteLine("static const unsigned CCIcon_Data[] = {"); + DumpIcon(sw, 64, 64); + sw.WriteLine("};"); + } + } + } +} diff --git a/misc/switch/Makefile b/misc/switch/Makefile new file mode 100644 index 0000000..9d1b3a8 --- /dev/null +++ b/misc/switch/Makefile @@ -0,0 +1,212 @@ +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITPRO)),) +$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITPRO)/libnx/switch_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# INCLUDES is a list of directories containing header files +# ROMFS is the directory containing data to be added to RomFS, relative to the Makefile (Optional) +# +# NO_ICON: if set to anything, do not use icon. +# NO_NACP: if set to anything, no .nacp file is generated. +# APP_TITLE is the name of the app stored in the .nacp file (Optional) +# APP_AUTHOR is the author of the app stored in the .nacp file (Optional) +# APP_VERSION is the version of the app stored in the .nacp file (Optional) +# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional) +# ICON is the filename of the icon (.jpg), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - <Project name>.jpg +# - icon.jpg +# - <libnx folder>/default_icon.jpg +# +# CONFIG_JSON is the filename of the NPDM config file (.json), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - <Project name>.json +# - config.json +# If a JSON file is provided or autodetected, an ExeFS PFS0 (.nsp) is built instead +# of a homebrew executable (.nro). This is intended to be used for sysmodules. +# NACP building is skipped as well. +#--------------------------------------------------------------------------------- +TARGET := ClassiCube-switch +BUILD := build-switch +SOURCES := src misc/switch third_party/bearssl/src +DATA := data +INCLUDES := third_party/bearssl/inc +#ROMFS := romfs + +APP_TITLE := ClassiCube +APP_AUTHOR := UnknownShadow200 +ICON := misc/switch/icon.jpg + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE + +CFLAGS := -g -Wall -O2 -ffunction-sections \ + $(ARCH) $(DEFINES) + +CFLAGS += $(INCLUDE) -D__SWITCH__ + +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) + +LIBS := -lGLESv2 -lEGL -lglapi -ldrm_nouveau -lnx -lm + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := $(PORTLIBS) $(LIBNX) + + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) +export LD := $(CXX) + +export OFILES_BIN := $(addsuffix .o,$(BINFILES)) +export OFILES_SRC := $(CFILES:.c=.o) $(SFILES:.s=.o) +export OFILES := $(OFILES_BIN) $(OFILES_SRC) +export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES))) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +ifeq ($(strip $(CONFIG_JSON)),) + jsons := $(wildcard *.json) + ifneq (,$(findstring $(TARGET).json,$(jsons))) + export APP_JSON := $(TOPDIR)/$(TARGET).json + else + ifneq (,$(findstring config.json,$(jsons))) + export APP_JSON := $(TOPDIR)/config.json + endif + endif +else + export APP_JSON := $(TOPDIR)/$(CONFIG_JSON) +endif + +ifeq ($(strip $(ICON)),) + icons := $(wildcard *.jpg) + ifneq (,$(findstring $(TARGET).jpg,$(icons))) + export APP_ICON := $(TOPDIR)/$(TARGET).jpg + else + ifneq (,$(findstring icon.jpg,$(icons))) + export APP_ICON := $(TOPDIR)/icon.jpg + endif + endif +else + export APP_ICON := $(TOPDIR)/$(ICON) +endif + +ifeq ($(strip $(NO_ICON)),) + export NROFLAGS += --icon=$(APP_ICON) +endif + +ifeq ($(strip $(NO_NACP)),) + export NROFLAGS += --nacp=$(CURDIR)/$(TARGET).nacp +endif + +ifneq ($(APP_TITLEID),) + export NACPFLAGS += --titleid=$(APP_TITLEID) +endif + +ifneq ($(ROMFS),) + export NROFLAGS += --romfsdir=$(CURDIR)/$(ROMFS) +endif + +.PHONY: $(BUILD) clean all + +#--------------------------------------------------------------------------------- +all: $(BUILD) + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/switch/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... +ifeq ($(strip $(APP_JSON)),) + @rm -fr $(BUILD) $(TARGET).nro $(TARGET).nacp $(TARGET).elf +else + @rm -fr $(BUILD) $(TARGET).nsp $(TARGET).nso $(TARGET).npdm $(TARGET).elf +endif + + +#--------------------------------------------------------------------------------- +else +.PHONY: all + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +ifeq ($(strip $(APP_JSON)),) + +all : $(OUTPUT).nro + +ifeq ($(strip $(NO_NACP)),) +$(OUTPUT).nro : $(OUTPUT).elf $(OUTPUT).nacp +else +$(OUTPUT).nro : $(OUTPUT).elf +endif + +else + +all : $(OUTPUT).nsp + +$(OUTPUT).nsp : $(OUTPUT).nso $(OUTPUT).npdm + +$(OUTPUT).nso : $(OUTPUT).elf + +endif + +$(OUTPUT).elf : $(OFILES) + +$(OFILES_SRC) : $(HFILES_BIN) + +#--------------------------------------------------------------------------------- +# you need a rule like this for each extension you use as binary data +#--------------------------------------------------------------------------------- +%.bin.o %_bin.h : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- diff --git a/misc/switch/icon.jpg b/misc/switch/icon.jpg new file mode 100644 index 0000000..a8a2b59 --- /dev/null +++ b/misc/switch/icon.jpg Binary files differdiff --git a/misc/vita/Makefile b/misc/vita/Makefile new file mode 100644 index 0000000..702723f --- /dev/null +++ b/misc/vita/Makefile @@ -0,0 +1,48 @@ +PROJECT_TITLE := ClassiCube +PROJECT_TITLEID := CUBE00200 +TARGET := ClassiCube-vita + +BUILD_DIR := build-vita +SOURCE_DIRS := src third_party/bearssl/src + +CFLAGS += -Wl,-q -Ithird_party/bearssl/inc -O1 +C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c)) +OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o))) + +LIBS += -lm -lSceDisplay_stub -lSceCtrl_stub -lSceTouch_stub -lSceGxm_stub -lSceCommonDialog_stub + + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +default: $(BUILD_DIR) $(TARGET).vpk + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(TARGET).vpk: eboot.bin param.sfo + vita-pack-vpk -s param.sfo -b eboot.bin -a misc/vita/sce_sys/ICON0.png=sce_sys/ICON0.png $(TARGET).vpk + +eboot.bin: $(TARGET).velf + vita-make-fself $(TARGET).velf eboot.bin + +param.sfo: + vita-mksfoex -s TITLE_ID="$(PROJECT_TITLEID)" "$(PROJECT_TITLE)" param.sfo + +$(TARGET).velf: $(TARGET).elf + arm-vita-eabi-strip -g $< + vita-elf-create $< $@ + +$(TARGET).elf: $(OBJS) + arm-vita-eabi-gcc $(CFLAGS) $^ $(LIBS) -o $@ + +$(BUILD_DIR)/%.o : src/%.c + arm-vita-eabi-gcc -c $(CFLAGS) -o $@ $< + +$(BUILD_DIR)/%.o : third_party/bearssl/src/%.c + arm-vita-eabi-gcc -c $(CFLAGS) -o $@ $< + +# TODO: There's gotta be a better way of .o to .c than this + +clean: + rm $(TARGET).velf $(TARGET).elf $(TARGET).vpk param.sfo eboot.bin $(OBJS) diff --git a/misc/vita/colored_alpha_f.cg b/misc/vita/colored_alpha_f.cg new file mode 100644 index 0000000..8bae2c1 --- /dev/null +++ b/misc/vita/colored_alpha_f.cg @@ -0,0 +1,9 @@ +float4 main +( + float4 out_color: COLOR +) : COLOR +{ + if (out_color.a < 0.5) discard; + + return out_color; +} \ No newline at end of file diff --git a/misc/vita/colored_alpha_f.gxp b/misc/vita/colored_alpha_f.gxp new file mode 100644 index 0000000..00a87e8 --- /dev/null +++ b/misc/vita/colored_alpha_f.gxp Binary files differdiff --git a/misc/vita/colored_alpha_f.h b/misc/vita/colored_alpha_f.h new file mode 100644 index 0000000..25f508d --- /dev/null +++ b/misc/vita/colored_alpha_f.h @@ -0,0 +1,21 @@ +const char colored_alpha_f[304] = { + 0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0f, 0xa0, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0xfa, + 0x8c, 0x80, 0x03, 0x90, 0x91, 0xc6, 0x89, 0x48, 0x00, 0x01, 0x00, 0xe0, 0x00, 0x10, 0x81, 0x91, + 0x80, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x81, 0x55, 0x01, 0x00, 0x0a, 0x30, 0x85, 0x01, 0x88, 0x48, + 0x00, 0x00, 0x00, 0xf0, 0x06, 0x04, 0x30, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x04, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x02, 0x80, 0x19, 0xa0, 0x7e, 0x0d, 0x80, 0x40, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00 +}; \ No newline at end of file diff --git a/misc/vita/colored_f.cg b/misc/vita/colored_f.cg new file mode 100644 index 0000000..2d95ff7 --- /dev/null +++ b/misc/vita/colored_f.cg @@ -0,0 +1,7 @@ +float4 main +( + float4 out_color : COLOR +) : COLOR +{ + return out_color; +} \ No newline at end of file diff --git a/misc/vita/colored_f.gxp b/misc/vita/colored_f.gxp new file mode 100644 index 0000000..f626c95 --- /dev/null +++ b/misc/vita/colored_f.gxp Binary files differdiff --git a/misc/vita/colored_f.h b/misc/vita/colored_f.h new file mode 100644 index 0000000..234ce86 --- /dev/null +++ b/misc/vita/colored_f.h @@ -0,0 +1,16 @@ +const char colored_f[212] = { + 0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0f, 0xa0, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x02, 0x80, 0x19, 0xa0, + 0x7e, 0x0d, 0x80, 0x40 +}; \ No newline at end of file diff --git a/misc/vita/colored_v.cg b/misc/vita/colored_v.cg new file mode 100644 index 0000000..dc132a1 --- /dev/null +++ b/misc/vita/colored_v.cg @@ -0,0 +1,10 @@ +void main( + float3 in_position, + float4 in_color, + uniform float4x4 mvp_matrix, + out float4 out_position: POSITION, + out float4 out_color: COLOR) +{ + out_position = mul(mvp_matrix, float4(in_position, 1.0f)); + out_color = in_color; +} \ No newline at end of file diff --git a/misc/vita/colored_v.gxp b/misc/vita/colored_v.gxp new file mode 100644 index 0000000..113ce7e --- /dev/null +++ b/misc/vita/colored_v.gxp Binary files differdiff --git a/misc/vita/colored_v.h b/misc/vita/colored_v.h new file mode 100644 index 0000000..9274ed8 --- /dev/null +++ b/misc/vita/colored_v.h @@ -0,0 +1,22 @@ +const char colored_v[320] = { + 0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x80, 0x00, 0x08, 0x83, 0x21, 0x1d, 0x80, 0x38, + 0x02, 0x80, 0x81, 0xaf, 0x9c, 0x0d, 0x80, 0x40, 0x00, 0xa2, 0x3d, 0xc0, 0x81, 0x30, 0x90, 0x18, + 0x00, 0x00, 0x20, 0xa0, 0x00, 0x50, 0x27, 0xfb, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x01, 0xe4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x69, 0x6e, 0x5f, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x6d, 0x76, 0x70, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00 +}; \ No newline at end of file diff --git a/misc/vita/gxp_to_c.c b/misc/vita/gxp_to_c.c new file mode 100644 index 0000000..2fe8422 --- /dev/null +++ b/misc/vita/gxp_to_c.c @@ -0,0 +1,60 @@ +#include <dirent.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +// Inspired by the public domain bin2c https://github.com/gwilymk/bin2c +// TODO: log errors +void convert_gxp(const char* src) { + char* copy = strdup(src); + char* name = strtok(copy, "."); + char dst[256]; + sprintf(dst, "%s.h", name); + printf(" %s --> %s\n", src, dst); + + FILE* file_in = fopen(src, "r"); + if (!file_in) return; + + FILE* file_out = fopen(dst, "w"); + if (!file_out) return; + + fseek(file_in, 0, SEEK_END); + int file_size = ftell(file_in); + fseek(file_in, 0, SEEK_SET); + + char* data = malloc(file_size); + fread(data, file_size, 1, file_in); + fclose(file_in); + + int comma = 0; + fprintf(file_out, "const char %s[%i] = {", name, file_size); + + for (int i = 0; i < file_size; i++) + { + if (comma) fprintf(file_out, ", "); + if ((i % 16) == 0) fprintf(file_out, "\n\t"); + + fprintf(file_out, "0x%.2x", data[i] & 0xFF); + comma = 1; + } + + fprintf(file_out, "\n};"); + fclose(file_out); +} + +int main(void) { + struct dirent* e; + DIR* d = opendir("."); + if (!d) return 0; + + while ((e = readdir(d))) { + printf("checking %s\n", e->d_name); + + if (strstr(e->d_name, ".gxp")) { + convert_gxp(e->d_name); + } + } + + closedir(d); + return 0; +} diff --git a/misc/vita/readme.txt b/misc/vita/readme.txt new file mode 100644 index 0000000..3dd61a5 --- /dev/null +++ b/misc/vita/readme.txt @@ -0,0 +1,9 @@ +Shaders on the PS Vita use the proprietary .gxp binary format + +To compile CG shaders to .gxp you need to use +1) Extract libshacccg.suprx - see https://cimmerian.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx +2) Use vitaShaRK to compile the CG shader (see sample 3 in https://github.com/Rinnegatamante/vitaShaRK for some reference) + +You can then use compiled gxp_to_c to convert all the .gxp shaders into .h files, which src/Graphics_PSVita.c can then include + +Note that you only need to perform these steps if you want to compile modified shaders - you don't need libshacccg.suprx to run ClassiCube \ No newline at end of file diff --git a/misc/vita/sce_sys/ICON0.png b/misc/vita/sce_sys/ICON0.png new file mode 100644 index 0000000..190549b --- /dev/null +++ b/misc/vita/sce_sys/ICON0.png Binary files differdiff --git a/misc/vita/textured_alpha_f.cg b/misc/vita/textured_alpha_f.cg new file mode 100644 index 0000000..cc04854 --- /dev/null +++ b/misc/vita/textured_alpha_f.cg @@ -0,0 +1,12 @@ +float4 main +( + uniform sampler2D tex, + float4 out_color : COLOR, + float2 out_texcoord : TEXCOORD0 +) : COLOR +{ + float4 color = tex2D(tex, out_texcoord) * out_color; + + if (color.a < 0.5) discard; + return color; +} \ No newline at end of file diff --git a/misc/vita/textured_alpha_f.gxp b/misc/vita/textured_alpha_f.gxp new file mode 100644 index 0000000..cec48c1 --- /dev/null +++ b/misc/vita/textured_alpha_f.gxp Binary files differdiff --git a/misc/vita/textured_alpha_f.h b/misc/vita/textured_alpha_f.h new file mode 100644 index 0000000..e07981e --- /dev/null +++ b/misc/vita/textured_alpha_f.h @@ -0,0 +1,26 @@ +const char textured_alpha_f[372] = { + 0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0xa9, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0xfa, + 0x02, 0x00, 0x84, 0xa0, 0x86, 0x41, 0xa4, 0x08, 0x43, 0x00, 0xc4, 0xa0, 0x8a, 0x41, 0xc0, 0x08, + 0x8c, 0x81, 0x03, 0x90, 0x91, 0xc6, 0x89, 0x48, 0x00, 0x01, 0x00, 0xe0, 0x02, 0x10, 0x81, 0x91, + 0x80, 0x00, 0x00, 0xe0, 0x0a, 0x00, 0x81, 0x55, 0x01, 0x00, 0x0a, 0xb0, 0x85, 0x01, 0x88, 0x48, + 0x00, 0x00, 0x00, 0xf0, 0x06, 0x04, 0x30, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x04, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x06, 0x82, 0x19, 0xa0, 0x7e, 0x0d, 0x80, 0x40, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x02, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x65, 0x78, 0x00 +}; \ No newline at end of file diff --git a/misc/vita/textured_f.cg b/misc/vita/textured_f.cg new file mode 100644 index 0000000..a59b804 --- /dev/null +++ b/misc/vita/textured_f.cg @@ -0,0 +1,9 @@ +float4 main +( + uniform sampler2D tex, + float4 out_color : COLOR, + float2 out_texcoord : TEXCOORD0 +) : COLOR +{ + return tex2D(tex, out_texcoord) * out_color; +} \ No newline at end of file diff --git a/misc/vita/textured_f.gxp b/misc/vita/textured_f.gxp new file mode 100644 index 0000000..83df3e5 --- /dev/null +++ b/misc/vita/textured_f.gxp Binary files differdiff --git a/misc/vita/textured_f.h b/misc/vita/textured_f.h new file mode 100644 index 0000000..033305b --- /dev/null +++ b/misc/vita/textured_f.h @@ -0,0 +1,20 @@ +const char textured_f[288] = { + 0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0xa9, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x09, 0x00, 0xf8, 0x02, 0x80, 0x99, 0xaf, 0xbc, 0x0d, 0xc0, 0x40, 0x06, 0x82, 0xb9, 0xaf, + 0xbc, 0x0d, 0x80, 0x40, 0x7c, 0x0f, 0x04, 0x00, 0x86, 0x47, 0xa4, 0x10, 0x30, 0x00, 0x00, 0x00, + 0x02, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x00 +}; \ No newline at end of file diff --git a/misc/vita/textured_v.cg b/misc/vita/textured_v.cg new file mode 100644 index 0000000..7952b91 --- /dev/null +++ b/misc/vita/textured_v.cg @@ -0,0 +1,13 @@ +void main( + float3 in_position, + float4 in_color, + float2 in_texcoord, + uniform float4x4 mvp_matrix, + out float4 out_position : POSITION, + out float4 out_color : COLOR, + out float2 out_texcoord: TEXCOORD0) +{ + out_position = mul(mvp_matrix, float4(in_position, 1.0f)); + out_color = in_color; + out_texcoord = in_texcoord; +} \ No newline at end of file diff --git a/misc/vita/textured_v.gxp b/misc/vita/textured_v.gxp new file mode 100644 index 0000000..46577ec --- /dev/null +++ b/misc/vita/textured_v.gxp Binary files differdiff --git a/misc/vita/textured_v.h b/misc/vita/textured_v.h new file mode 100644 index 0000000..e8b212f --- /dev/null +++ b/misc/vita/textured_v.h @@ -0,0 +1,24 @@ +const char textured_v[348] = { + 0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x80, 0x00, 0x08, 0x83, 0x21, 0x2d, 0x80, 0x38, + 0x02, 0x80, 0x81, 0xaf, 0x9c, 0x0d, 0x80, 0x40, 0x00, 0xa2, 0x3d, 0xc0, 0x81, 0x30, 0x90, 0x18, + 0x00, 0x00, 0x20, 0xa0, 0x00, 0x50, 0x27, 0xfb, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x01, 0xe4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x69, 0x6e, 0x5f, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x69, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, + 0x00, 0x6d, 0x76, 0x70, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00 +}; \ No newline at end of file diff --git a/misc/wii/Makefile b/misc/wii/Makefile new file mode 100644 index 0000000..b685a30 --- /dev/null +++ b/misc/wii/Makefile @@ -0,0 +1,103 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +.SECONDARY: + +ifeq ($(strip $(DEVKITPPC)),) +$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC") +endif + +include $(DEVKITPPC)/wii_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := ClassiCube-wii +BUILD := build-wii +SOURCES := src third_party/bearssl/src +INCLUDES := third_party/bearssl/inc + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) +CXXFLAGS = $(CFLAGS) + +LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lasnd -lwiikeyboard -lwiiuse -lbte -lfat -logc -lm + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) + + +export DEPSDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) + +export LD := $(CC) + +export OFILES := $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + -I$(CURDIR)/$(BUILD) \ + -I$(LIBOGC_INC) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := -L$(LIBOGC_LIB) + +export OUTPUT := $(CURDIR)/$(TARGET) +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +all: $(BUILD) + $(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/wii/Makefile + +$(BUILD): + mkdir -p $@ + +#--------------------------------------------------------------------------------- +clean: + echo clean ... + rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol + +#--------------------------------------------------------------------------------- +else + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).dol: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +-include $(DEPSDIR)/*.d + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/misc/wii/icon.png b/misc/wii/icon.png new file mode 100644 index 0000000..681f066 --- /dev/null +++ b/misc/wii/icon.png Binary files differdiff --git a/misc/wii/meta.xml b/misc/wii/meta.xml new file mode 100644 index 0000000..5c0f6c3 --- /dev/null +++ b/misc/wii/meta.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<app version="1.2"> +<name>ClassiCube</name> +<version>1.3.5</version> +<coder>Unknownshadow200</coder> +<short_description>Play ClassiCube</short_description> +<long_description>yeet the blocks + +place the blocks</long_description> +</app> diff --git a/misc/wiiu/Makefile b/misc/wiiu/Makefile new file mode 100644 index 0000000..47bad6d --- /dev/null +++ b/misc/wiiu/Makefile @@ -0,0 +1,174 @@ +#------------------------------------------------------------------------------- +.SUFFIXES: +#------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITPRO)),) +$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro") +endif + +TOPDIR ?= $(CURDIR) + +#------------------------------------------------------------------------------- +# APP_NAME sets the long name of the application +# APP_SHORTNAME sets the short name of the application +# APP_AUTHOR sets the author of the application +#------------------------------------------------------------------------------- +#APP_NAME := Application Name +#APP_SHORTNAME := App Name +#APP_AUTHOR := Built with devkitPPC & wut + +include $(DEVKITPRO)/wut/share/wut_rules + +#------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# INCLUDES is a list of directories containing header files +# CONTENT is the path to the bundled folder that will be mounted as /vol/content/ +# ICON is the game icon, leave blank to use default rule +# TV_SPLASH is the image displayed during bootup on the TV, leave blank to use default rule +# DRC_SPLASH is the image displayed during bootup on the DRC, leave blank to use default rule +#------------------------------------------------------------------------------- +TARGET := ClassiCube-wiiu +BUILD := build-wiiu +SOURCES := src third_party/bearssl/src +SHADERS := misc/wiiu +DATA := data +INCLUDES := third_party/bearssl/inc +CONTENT := +ICON := +TV_SPLASH := +DRC_SPLASH := + +#------------------------------------------------------------------------------- +# options for code generation +#------------------------------------------------------------------------------- +CFLAGS := -g -Wall -O2 -ffunction-sections -fno-math-errno \ + $(MACHDEP) + +CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ + +CXXFLAGS := $(CFLAGS) + +ASFLAGS := -g $(ARCH) +LDFLAGS = -g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map) + +LIBS := -lwut -lm + +#------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level +# containing include and lib +#------------------------------------------------------------------------------- +LIBDIRS := $(PORTLIBS) $(WUT_ROOT) + +#------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) \ + $(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.gsh))) + +export LD := $(CXX) + +export OFILES_BIN := $(addsuffix .o,$(BINFILES)) +export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) +export OFILES := $(OFILES_BIN) $(OFILES_SRC) +export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES))) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +ifneq (,$(strip $(CONTENT))) + export APP_CONTENT := $(TOPDIR)/$(CONTENT) +endif + +ifneq (,$(strip $(ICON))) + export APP_ICON := $(TOPDIR)/$(ICON) +else ifneq (,$(wildcard $(TOPDIR)/$(TARGET).png)) + export APP_ICON := $(TOPDIR)/$(TARGET).png +else ifneq (,$(wildcard $(TOPDIR)/icon.png)) + export APP_ICON := $(TOPDIR)/icon.png +endif + +ifneq (,$(strip $(TV_SPLASH))) + export APP_TV_SPLASH := $(TOPDIR)/$(TV_SPLASH) +else ifneq (,$(wildcard $(TOPDIR)/tv-splash.png)) + export APP_TV_SPLASH := $(TOPDIR)/tv-splash.png +else ifneq (,$(wildcard $(TOPDIR)/splash.png)) + export APP_TV_SPLASH := $(TOPDIR)/splash.png +endif + +ifneq (,$(strip $(DRC_SPLASH))) + export APP_DRC_SPLASH := $(TOPDIR)/$(DRC_SPLASH) +else ifneq (,$(wildcard $(TOPDIR)/drc-splash.png)) + export APP_DRC_SPLASH := $(TOPDIR)/drc-splash.png +else ifneq (,$(wildcard $(TOPDIR)/splash.png)) + export APP_DRC_SPLASH := $(TOPDIR)/splash.png +endif + +.PHONY: $(BUILD) clean all + +#------------------------------------------------------------------------------- +all: $(BUILD) + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/wiiu/Makefile + +#------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(TARGET).wuhb $(TARGET).rpx $(TARGET).elf + +#------------------------------------------------------------------------------- +else +.PHONY: all + +DEPENDS := $(OFILES:.o=.d) + +#------------------------------------------------------------------------------- +# main targets +#------------------------------------------------------------------------------- +all : $(OUTPUT).wuhb + +$(OUTPUT).wuhb : $(OUTPUT).rpx +$(OUTPUT).rpx : $(OUTPUT).elf +$(OUTPUT).elf : $(OFILES) + +$(OFILES_SRC) : $(HFILES_BIN) + +# you need a rule like this for each extension you use as binary data +#------------------------------------------------------------------------------- +%.bin.o %_bin.h : %.bin +#------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) +#------------------------------------------------------------------------------- +%.gsh.o %_gsh.h : ../misc/wiiu/%.gsh +#------------------------------------------------------------------------------- + echo $(notdir $<) + $(bin2o) + +-include $(DEPENDS) + +#------------------------------------------------------------------------------- +endif +#------------------------------------------------------------------------------- diff --git a/misc/wiiu/coloured.gsh b/misc/wiiu/coloured.gsh new file mode 100644 index 0000000..22a1131 --- /dev/null +++ b/misc/wiiu/coloured.gsh Binary files differdiff --git a/misc/wiiu/coloured.psh b/misc/wiiu/coloured.psh new file mode 100644 index 0000000..3248826 --- /dev/null +++ b/misc/wiiu/coloured.psh @@ -0,0 +1,8 @@ +; $NUM_SPI_PS_INPUT_CNTL = 1 +; $SPI_PS_INPUT_CNTL[0].SEMANTIC = 0 +; $SPI_PS_INPUT_CNTL[0].DEFAULT_VAL = 1 +; $SQ_PGM_RESOURCES_PS.STACK_SIZE = 0 + +; -------- Disassembly -------------------- +00 EXP_DONE: PIX0, R0 +END_OF_PROGRAM diff --git a/misc/wiiu/coloured.psh.glsl b/misc/wiiu/coloured.psh.glsl new file mode 100644 index 0000000..fae46dd --- /dev/null +++ b/misc/wiiu/coloured.psh.glsl @@ -0,0 +1,6 @@ +varying vec4 out_col; + +void main() { + vec4 col = out_col; + gl_FragColor = col; +} \ No newline at end of file diff --git a/misc/wiiu/coloured.vsh b/misc/wiiu/coloured.vsh new file mode 100644 index 0000000..1f57c2b --- /dev/null +++ b/misc/wiiu/coloured.vsh @@ -0,0 +1,46 @@ +; $MODE = "UniformRegister" + +; $SPI_VS_OUT_CONFIG.VS_EXPORT_COUNT = 0 +; $NUM_SPI_VS_OUT_ID = 1 +; out_colour +; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0 + +; C0 +; $UNIFORM_VARS[0].name = "mvp" +; $UNIFORM_VARS[0].type = "mat4" +; $UNIFORM_VARS[0].count = 1 +; $UNIFORM_VARS[0].block = -1 +; $UNIFORM_VARS[0].offset = 0 + +; R1 +; $ATTRIB_VARS[0].name = "in_pos" +; $ATTRIB_VARS[0].type = "vec3" +; $ATTRIB_VARS[0].location = 0 +; R2 +; $ATTRIB_VARS[1].name = "in_col" +; $ATTRIB_VARS[1].type = "vec4" +; $ATTRIB_VARS[1].location = 1 + +; -------- Disassembly -------------------- +00 CALL_FS NO_BARRIER +01 ALU: ADDR(32) CNT(18) + 0 x: MUL ____, C3.w, 1.0f + y: MUL ____, C3.z, 1.0f + z: MUL ____, C3.y, 1.0f + w: MUL ____, C3.x, 1.0f + 1 x: MULADD R127.x, R1.z, C2.w, PV0.x + y: MULADD R127.y, R1.z, C2.z, PV0.y + z: MULADD R127.z, R1.z, C2.y, PV0.z + w: MULADD R127.w, R1.z, C2.x, PV0.w + 2 x: MULADD R127.x, R1.y, C1.w, PV1.x + y: MULADD R127.y, R1.y, C1.z, PV1.y + z: MULADD R127.z, R1.y, C1.y, PV1.z + w: MULADD R127.w, R1.y, C1.x, PV1.w + 3 x: MULADD R1.x, R1.x, C0.x, PV2.w + y: MULADD R1.y, R1.x, C0.y, PV2.z + z: MULADD R1.z, R1.x, C0.z, PV2.y + w: MULADD R1.w, R1.x, C0.w, PV2.x +02 EXP_DONE: POS0, R1 +03 EXP_DONE: PARAM0, R2 NO_BARRIER +END_OF_PROGRAM + diff --git a/misc/wiiu/coloured.vsh.glsl b/misc/wiiu/coloured.vsh.glsl new file mode 100644 index 0000000..a160758 --- /dev/null +++ b/misc/wiiu/coloured.vsh.glsl @@ -0,0 +1,9 @@ +attribute vec3 in_pos; +attribute vec4 in_col; +varying vec4 out_col; +uniform mat4 mvp; + +void main() { + gl_Position = mvp * vec4(in_pos, 1.0); + out_col = in_col; +} diff --git a/misc/wiiu/shaders.txt b/misc/wiiu/shaders.txt new file mode 100644 index 0000000..cca3c2b --- /dev/null +++ b/misc/wiiu/shaders.txt @@ -0,0 +1,14 @@ +Shader samples +https://github.com/decaf-emu/wiiu-tests/blob/master/content/shaders/pos_colour.vsh +https://github.com/GaryOderNichts/wiiu-shaders/blob/master/shaders.md +https://github.com/luRaichu/recsbr/blob/163fa441712f6b25e780e914617941c2385b330e/src/Backends/Rendering/WiiUShaders/shader%20sources/plain.vsh#L6 +https://github.com/GaryOderNichts/MultiDRCSpaceDemo/blob/30a6337a47dabafd6d601ce0555b326866f63247/shaders/textureShader.vsh#L6 +https://github.com/luRaichu/recsbr/blob/163fa441712f6b25e780e914617941c2385b330e/src/Backends/Rendering/WiiUShaders/shader%20sources/texture.vsh#L9 +https://github.com/rw-r-r-0644/gx2-texture/blob/83d7707e8d4b33ec7ba63d5c7dfe62c359b2b50a/shaders/texture_shader.vsh#L9 +https://github.com/yawut/ntrview-wiiu/blob/45b1c7f05cfd9917b8b171f3db08dc63293fc5c5/gfx/gx2_shaders/main.psh +https://github.com/Hydr8gon/NooDS/blob/b41cb3b9b889481c998e7e83db1ab3ef9d97b838/src/console/shaders/shader_wiiu.vsh +https://github.com/luRaichu/recsbr/blob/163fa441712f6b25e780e914617941c2385b330e/src/Backends/Rendering/WiiUShaders/shader%20sources/wtf%20is%20this.txt + +To generate shader assembly +1) Get AMD ShaderAnalyzer +2) Select Radeon HD 4670 (RV370) Assembly as the output format \ No newline at end of file diff --git a/misc/wiiu/textured.gsh b/misc/wiiu/textured.gsh new file mode 100644 index 0000000..cd3fb3b --- /dev/null +++ b/misc/wiiu/textured.gsh Binary files differdiff --git a/misc/wiiu/textured.psh b/misc/wiiu/textured.psh new file mode 100644 index 0000000..9305d3e --- /dev/null +++ b/misc/wiiu/textured.psh @@ -0,0 +1,21 @@ +; $MODE = "UniformRegister" +; $SAMPLER_VARS[0].name= "texImage" +; $SAMPLER_VARS[0].type= "sampler2D" +; $SAMPLER_VARS[0].location = 0 + +; $NUM_SPI_PS_INPUT_CNTL = 2 +; $SPI_PS_INPUT_CNTL[0].semantic = 0 +; $SPI_PS_INPUT_CNTL[0].default_val = 1 +; $SPI_PS_INPUT_CNTL[1].semantic = 1 +; $SPI_PS_INPUT_CNTL[1].default_val = 1 + +; -------- Disassembly -------------------- +00 TEX: ADDR(48) CNT(1) VALID_PIX + 0 SAMPLE R1, R1.xy0x, t0, s0 +01 ALU: ADDR(32) CNT(4) + 1 x: MUL R0.x, R0.x, R1.x + y: MUL R0.y, R0.y, R1.y + z: MUL R0.z, R0.z, R1.z + w: MUL R0.w, R0.w, R1.w +02 EXP_DONE: PIX0, R0 +END_OF_PROGRAM \ No newline at end of file diff --git a/misc/wiiu/textured.psh.glsl b/misc/wiiu/textured.psh.glsl new file mode 100644 index 0000000..71ef45b --- /dev/null +++ b/misc/wiiu/textured.psh.glsl @@ -0,0 +1,9 @@ +varying vec4 out_col; +varying vec2 out_uv; +uniform sampler2D texImage; + +void main() { + vec4 col = texture(texImage, out_uv) * out_col; + gl_FragColor = col; +} + diff --git a/misc/wiiu/textured.vsh b/misc/wiiu/textured.vsh new file mode 100644 index 0000000..dc021e5 --- /dev/null +++ b/misc/wiiu/textured.vsh @@ -0,0 +1,55 @@ +; $MODE = "UniformRegister" + +; $SPI_VS_OUT_CONFIG.VS_EXPORT_COUNT = 1 +; $NUM_SPI_VS_OUT_ID = 1 +; out_colour +; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0 +; out_uv +; $SPI_VS_OUT_ID[0].SEMANTIC_1 = 1 + +; C0 +; $UNIFORM_VARS[0].name = "mvp" +; $UNIFORM_VARS[0].type = "mat4" +; $UNIFORM_VARS[0].count = 1 +; $UNIFORM_VARS[0].block = -1 +; $UNIFORM_VARS[0].offset = 0 + +; R1 +; $ATTRIB_VARS[0].name = "in_pos" +; $ATTRIB_VARS[0].type = "vec3" +; $ATTRIB_VARS[0].location = 0 +; R2 +; $ATTRIB_VARS[1].name = "in_col" +; $ATTRIB_VARS[1].type = "vec4" +; $ATTRIB_VARS[1].location = 1 +; R3 +; $ATTRIB_VARS[2].name = "in_uv" +; $ATTRIB_VARS[2].type = "vec2" +; $ATTRIB_VARS[2].location = 2 + +; -------- Disassembly -------------------- +00 CALL_FS NO_BARRIER +01 ALU: ADDR(32) CNT(20) + 0 x: MUL ____, C3.y, 1.0f + y: MUL ____, C3.x, 1.0f + z: MUL ____, C3.w, 1.0f + w: MUL ____, C3.z, 1.0f + t: MOV R0.x, R3.x + 1 x: MULADD R127.x, R1.z, C2.y, PV0.x + y: MULADD R127.y, R1.z, C2.x, PV0.y + z: MULADD R127.z, R1.z, C2.w, PV0.z + w: MULADD R127.w, R1.z, C2.z, PV0.w + t: MOV R0.y, R3.y + 2 x: MULADD R127.x, R1.y, C1.y, PV1.x + y: MULADD R127.y, R1.y, C1.x, PV1.y + z: MULADD R127.z, R1.y, C1.w, PV1.z + w: MULADD R127.w, R1.y, C1.z, PV1.w + 3 x: MULADD R1.x, R1.x, C0.x, PV2.y + y: MULADD R1.y, R1.x, C0.y, PV2.x + z: MULADD R1.z, R1.x, C0.z, PV2.w + w: MULADD R1.w, R1.x, C0.w, PV2.z +02 EXP_DONE: POS0, R1 +03 EXP: PARAM0, R2 NO_BARRIER +04 EXP_DONE: PARAM1, R0.xyzz NO_BARRIER +END_OF_PROGRAM + diff --git a/misc/wiiu/textured.vsh.glsl b/misc/wiiu/textured.vsh.glsl new file mode 100644 index 0000000..d7a805d --- /dev/null +++ b/misc/wiiu/textured.vsh.glsl @@ -0,0 +1,12 @@ +attribute vec3 in_pos; +attribute vec4 in_col; +attribute vec2 in_uv; +varying vec4 out_col; +varying vec2 out_uv; +uniform mat4 mvp; + +void main() { + gl_Position = mvp * vec4(in_pos, 1.0); + out_col = in_col; + out_uv = in_uv; +} diff --git a/misc/wiiu/textured_offset.vsh b/misc/wiiu/textured_offset.vsh new file mode 100644 index 0000000..e750be6 --- /dev/null +++ b/misc/wiiu/textured_offset.vsh @@ -0,0 +1,64 @@ +; $MODE = "UniformRegister" + +; $SPI_VS_OUT_CONFIG.VS_EXPORT_COUNT = 1 +; $NUM_SPI_VS_OUT_ID = 1 +; out_colour +; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0 +; out_uv +; $SPI_VS_OUT_ID[0].SEMANTIC_1 = 1 + +; C0 +; $UNIFORM_VARS[0].name = "mvp" +; $UNIFORM_VARS[0].type = "mat4" +; $UNIFORM_VARS[0].count = 1 +; $UNIFORM_VARS[0].block = -1 +; $UNIFORM_VARS[0].offset = 0 +; C4 (MIGHT BE WRONG AND SHOULD BE [3] instead??? ) +; $UNIFORM_VARS[1].name = "texOffset" +; $UNIFORM_VARS[1].type = "vec2" +; $UNIFORM_VARS[1].count = 1 +; $UNIFORM_VARS[1].block = -1 +; $UNIFORM_VARS[1].offset = 0 + +; R1 +; $ATTRIB_VARS[0].name = "in_pos" +; $ATTRIB_VARS[0].type = "vec3" +; $ATTRIB_VARS[0].location = 0 +; R2 +; $ATTRIB_VARS[1].name = "in_col" +; $ATTRIB_VARS[1].type = "vec4" +; $ATTRIB_VARS[1].location = 1 +; R3 +; $ATTRIB_VARS[2].name = "in_uv" +; $ATTRIB_VARS[2].type = "vec2" +; $ATTRIB_VARS[2].location = 2 + +; -------- Disassembly -------------------- +00 CALL_FS NO_BARRIER +01 ALU: ADDR(32) CNT(18) + 0 x: MUL ____, C3.y, 1.0f + y: MUL ____, C3.x, 1.0f + z: MUL ____, C3.w, 1.0f + w: MUL ____, C3.z, 1.0f + 1 x: MULADD R127.x, R2.z, C2.y, PV0.x + y: MULADD R127.y, R2.z, C2.x, PV0.y + z: MULADD R127.z, R2.z, C2.w, PV0.z + w: MULADD R127.w, R2.z, C2.z, PV0.w + 2 x: MULADD R127.x, R2.y, C1.y, PV1.x + y: MULADD R127.y, R2.y, C1.x, PV1.y + z: MULADD R127.z, R2.y, C1.w, PV1.z + w: MULADD R127.w, R2.y, C1.z, PV1.w + 3 x: MULADD R2.x, R2.x, C0.x, PV2.y + y: MULADD R2.y, R2.x, C0.y, PV2.x + z: MULADD R2.z, R2.x, C0.z, PV2.w + w: MULADD R2.w, R2.x, C0.w, PV2.z + 4 x: ADD R3.x, R3.x, C4.x + y: ADD R3.y, R3.y, C4.y +02 EXP_DONE: POS0, R2 +03 EXP: PARAM0, R1 NO_BARRIER +04 EXP_DONE: PARAM1, R3.xyzz NO_BARRIER +05 ALU: ADDR(50) CNT(1) + 5 x: NOP ____ +06 NOP NO_BARRIER +END_OF_PROGRAM + diff --git a/misc/wiiu/textured_offset.vsh.glsl b/misc/wiiu/textured_offset.vsh.glsl new file mode 100644 index 0000000..7248768 --- /dev/null +++ b/misc/wiiu/textured_offset.vsh.glsl @@ -0,0 +1,13 @@ +attribute vec3 in_pos; +attribute vec4 in_col; +attribute vec2 in_uv; +varying vec4 out_col; +varying vec2 out_uv; +uniform mat4 mvp; +uniform vec2 texOffset; + +void main() { + gl_Position = mvp * vec4(in_pos, 1.0); + out_col = in_col; + out_uv = in_uv + texOffset; +} \ No newline at end of file diff --git a/misc/windows/CCicon.rc b/misc/windows/CCicon.rc new file mode 100644 index 0000000..6c0d8cd --- /dev/null +++ b/misc/windows/CCicon.rc @@ -0,0 +1 @@ +1 ICON "../CCicon.ico" diff --git a/misc/windows/CCicon_32.res b/misc/windows/CCicon_32.res new file mode 100644 index 0000000..7a25402 --- /dev/null +++ b/misc/windows/CCicon_32.res Binary files differdiff --git a/misc/windows/CCicon_64.res b/misc/windows/CCicon_64.res new file mode 100644 index 0000000..fb3cf5f --- /dev/null +++ b/misc/windows/CCicon_64.res Binary files differdiff --git a/misc/windows/D3D11ShaderGen.c b/misc/windows/D3D11ShaderGen.c new file mode 100644 index 0000000..8617f34 --- /dev/null +++ b/misc/windows/D3D11ShaderGen.c @@ -0,0 +1,186 @@ +#define _WIN32_WINNT 0x600 +#define COBJMACROS +#include <stdio.h> +#include <d3dcompiler.h> + +#define GetBlobPointer ID3D10Blob_GetBufferPointer +#define GetBlobSize ID3D10Blob_GetBufferSize +#pragma comment(lib,"d3dcompiler.lib") + +static const char VS_SOURCE[] = +"float4x4 mvpMatrix; \n" \ +"#ifdef VS_TEXTURE_OFFSET \n" \ +"float2 texOffset; \n" \ +"#endif \n" \ +" \n" \ +"struct INPUT_VERTEX { \n" \ +" float3 position : POSITION; \n" \ +" float4 color : COLOR0; \n" \ +"#ifndef VS_COLOR_ONLY \n" \ +" float2 coords : TEXCOORD0; \n" \ +"#endif \n" \ +"}; \n" \ +"struct OUTPUT_VERTEX { \n" \ +"#ifndef VS_COLOR_ONLY \n" \ +" float2 coords : TEXCOORD0; \n" \ +"#endif \n" \ +" float4 color : COLOR0; \n" \ +" float4 position : VPOS; \n" \ +"}; \n" \ +" \n" \ +"OUTPUT_VERTEX main(INPUT_VERTEX input) { \n" \ +" OUTPUT_VERTEX output; \n" \ +" // https://stackoverflow.com/questions/16578765/hlsl-mul-variables-clarification \n" \ +" output.position = mul(mvpMatrix, float4(input.position, 1.0f)); \n" \ +"#ifndef VS_COLOR_ONLY \n" \ +" output.coords = input.coords; \n" \ +"#endif \n" \ +"#ifdef VS_TEXTURE_OFFSET \n" \ +" output.coords += texOffset; \n" \ +"#endif \n" \ +" output.color = input.color; \n" \ +" return output; \n" \ +"}"; + +static const char PS_SOURCE[] = +"#ifndef PS_COLOR_ONLY \n" \ +"Texture2D texValue; \n" \ +"SamplerState texState; \n" \ +"#endif \n" \ +"#ifdef PS_FOG_LINEAR \n" \ +"float fogEnd; \n" \ +"float3 fogColor; \n" \ +"#endif \n" \ +"#ifdef PS_FOG_DENSITY \n" \ +"float fogDensity; \n" \ +"float3 fogColor; \n" \ +"#endif \n" \ +" \n" \ +"struct INPUT_VERTEX { \n" \ +"#ifndef PS_COLOR_ONLY \n" \ +" float2 coords : TEXCOORD0; \n" \ +"#endif \n" \ +" float4 color : COLOR0; \n" \ +"#ifdef PS_FOG_LINEAR \n" \ +" float4 position : VPOS; \n" \ +"#endif \n" \ +"#ifdef PS_FOG_DENSITY \n" \ +" float4 position : VPOS; \n" \ +"#endif \n" \ +"}; \n" \ +" \n" \ +"//float4 main(float2 coords : TEXCOORD0, float4 color : COLOR0) : SV_TARGET {\n" \ +"float4 main(INPUT_VERTEX input) : SV_TARGET{ \n" \ +" float4 color; \n" \ +"#ifdef PS_COLOR_ONLY \n" \ +" color = input.color; \n" \ +"#else \n" \ +" float4 texColor = texValue.Sample(texState, input.coords); \n" \ +" color = texColor * input.color; \n" \ +"#endif \n" \ +" \n" \ +"#ifdef PS_ALPHA_TEST \n" \ +" // https://jbrd.github.io/2008/02/14/hlsl-discard-doesnt-return.html \n" \ +" if (color.a < 0.5) { discard; return color; } \n" \ +"#endif \n" \ +"#ifdef PS_FOG_LINEAR \n" \ +" float depth = input.position.w; \n" \ +" float fog = saturate((fogEnd - depth) / fogEnd); \n" \ +" color.rgb = lerp(fogColor, color.rgb, fog); \n" \ +"#endif \n" \ +"#ifdef PS_FOG_DENSITY \n" \ +" float depth = input.position.w; \n" \ +" float fog = saturate(exp(fogDensity * depth)); \n" \ +" color.rgb = lerp(fogColor, color.rgb, fog); \n" \ +"#endif \n" \ +" return color; \n" \ +"}"; + +static void CompileShader(LPCSTR src, LPCSTR name, LPCSTR profile, const D3D_SHADER_MACRO* defines) { + UINT flags = D3DCOMPILE_ENABLE_STRICTNESS | D3DCOMPILE_OPTIMIZATION_LEVEL1;// | D3DCOMPILE_DEBUG; + ID3DBlob* shaderBlob = NULL; + ID3DBlob* errorBlob = NULL; + HRESULT hr = D3DCompile(src, strlen(src), name, defines, D3D_COMPILE_STANDARD_FILE_INCLUDE, + "main", profile, flags, 0, &shaderBlob, &errorBlob ); + + if (hr && errorBlob) { + char* errText = (char*)GetBlobPointer(errorBlob); + OutputDebugStringA(errText); + printf("// Compiling %s failed\n", name); + printf("// %s\n", errText); + } + if (hr) { + printf("// Compiling %s failed - %08X\n", name, hr); + return; + } + + unsigned char* data = GetBlobPointer(shaderBlob); + SIZE_T size = GetBlobSize(shaderBlob); + printf("static const unsigned char %s[%i] = {\n", name, size); + + for (int i = 0; i < size; ) + { + int count = min(size - i, 32); + printf("\t"); + for (int j = 0; j < count; j++) + { + printf("0x%02x,", data[i + j]); + } + printf("\n"); + i += count; + } + printf("};\n"); +} + +#define CompileVertexShader(name, defines) CompileShader(VS_SOURCE, name, "vs_4_0_level_9_1", defines) +#define CompilePixelShader( name, defines) CompileShader(PS_SOURCE, name, "ps_4_0_level_9_1", defines) +int main() { + const D3D_SHADER_MACRO vs_colored[] = { "VS_COLOR_ONLY","1", NULL,NULL }; + const D3D_SHADER_MACRO vs_textured[] = { NULL,NULL }; + const D3D_SHADER_MACRO vs_offset[] = { "VS_TEXTURE_OFFSET","1", NULL,NULL }; + + const D3D_SHADER_MACRO ps_colored[] = { "PS_COLOR_ONLY","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_textured[] = { NULL,NULL }; + const D3D_SHADER_MACRO ps_colored_test[] = { "PS_COLOR_ONLY","1", "PS_ALPHA_TEST","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_textured_test[] = { "PS_ALPHA_TEST","1", NULL,NULL }; + + const D3D_SHADER_MACRO ps_colored_linear[] = { "PS_FOG_LINEAR","1", "PS_COLOR_ONLY","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_textured_linear[] = { "PS_FOG_LINEAR","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_colored_test_linear[] = { "PS_FOG_LINEAR","1", "PS_COLOR_ONLY","1", "PS_ALPHA_TEST","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_textured_test_linear[] = { "PS_FOG_LINEAR","1", "PS_ALPHA_TEST","1", NULL,NULL }; + + const D3D_SHADER_MACRO ps_colored_density[] = { "PS_FOG_DENSITY","1", "PS_COLOR_ONLY","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_textured_density[] = { "PS_FOG_DENSITY","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_colored_test_density[] = { "PS_FOG_DENSITY","1", "PS_COLOR_ONLY","1", "PS_ALPHA_TEST","1", NULL,NULL }; + const D3D_SHADER_MACRO ps_textured_test_density[] = { "PS_FOG_DENSITY","1", "PS_ALPHA_TEST","1", NULL,NULL }; + + printf("// Generated using misc/D3D11ShaderGen.c\n\n"); + printf("//########################################################################################################################\n"); + printf("//------------------------------------------------------Vertex shaders----------------------------------------------------\n"); + printf("//########################################################################################################################\n"); + CompileVertexShader("vs_colored", vs_colored); + CompileVertexShader("vs_textured", vs_textured); + CompileVertexShader("vs_textured_offset", vs_offset); + + printf("\n\n"); + printf("//########################################################################################################################\n"); + printf("//------------------------------------------------------Pixel shaders-----------------------------------------------------\n"); + printf("//########################################################################################################################\n"); + CompilePixelShader("ps_colored", ps_colored); + CompilePixelShader("ps_textured", ps_textured); + CompilePixelShader("ps_colored_test", ps_colored_test); + CompilePixelShader("ps_textured_test", ps_textured_test); + + CompilePixelShader("ps_colored_linear", ps_colored_linear); + CompilePixelShader("ps_textured_linear", ps_textured_linear); + CompilePixelShader("ps_colored_test_linear", ps_colored_test_linear); + CompilePixelShader("ps_textured_test_linear", ps_textured_test_linear); + + CompilePixelShader("ps_colored_density", ps_colored_density); + CompilePixelShader("ps_textured_density", ps_textured_density); + CompilePixelShader("ps_colored_test_density", ps_colored_test_density); + CompilePixelShader("ps_textured_test_density", ps_textured_test_density); + + //Sleep(5000); + return 0; +} diff --git a/misc/windows/D3D11Shaders.h b/misc/windows/D3D11Shaders.h new file mode 100644 index 0000000..838384e --- /dev/null +++ b/misc/windows/D3D11Shaders.h @@ -0,0 +1,449 @@ +// Generated using misc/D3D11ShaderGen.c + +//######################################################################################################################## +//------------------------------------------------------Vertex shaders---------------------------------------------------- +//######################################################################################################################## +static const unsigned char vs_colored[804] = { + 0x44,0x58,0x42,0x43,0x1a,0x76,0x9d,0x56,0x98,0x2d,0x30,0x9a,0x2f,0x00,0xd8,0xb0,0x6d,0xda,0x7a,0x6b,0x01,0x00,0x00,0x00,0x24,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x50,0x01,0x00,0x00,0xa4,0x01,0x00,0x00,0xa8,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,0x00,0x09,0x00,0x00,0x94,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x4d,0x61,0x74,0x72,0x69,0x78,0x00,0xab,0xab, + 0x03,0x00,0x03,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c, + 0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00, + 0x49,0x53,0x47,0x4e,0x48,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00, + 0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0x4f,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f, + 0x4e,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xfc,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x3f,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x72,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03, + 0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00, + 0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, +}; +static const unsigned char vs_textured[912] = { + 0x44,0x58,0x42,0x43,0x05,0x38,0x0a,0xc5,0x5e,0x15,0x86,0xef,0xa6,0xbc,0xb1,0x6a,0x8b,0x6c,0xf4,0x1e,0x01,0x00,0x00,0x00,0x90,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x70,0x01,0x00,0x00,0xe4,0x01,0x00,0x00,0x14,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,0x00,0x09,0x00,0x00,0x94,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x4d,0x61,0x74,0x72,0x69,0x78,0x00,0xab,0xab, + 0x03,0x00,0x03,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c, + 0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00, + 0x49,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00, + 0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e, + 0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0x4f,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49, + 0x4f,0x4e,0x00,0xab,0x53,0x48,0x44,0x52,0x28,0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x4a,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x72,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03, + 0x32,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00, + 0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x32,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00, + 0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char vs_textured_offset[976] = { + 0x44,0x58,0x42,0x43,0x5c,0x17,0x5e,0xed,0xce,0x9c,0xa2,0x40,0x5c,0x3e,0x7c,0x93,0xb5,0xed,0x14,0x40,0x01,0x00,0x00,0x00,0xd0,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0xa4,0x01,0x00,0x00,0x18,0x02,0x00,0x00,0x54,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xf8,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,0x00,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xac,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x4d,0x61,0x74,0x72,0x69,0x78,0x00,0xab,0xab,0x03,0x00,0x03,0x00,0x04,0x00,0x04,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x4f,0x66,0x66,0x73,0x65,0x74,0x00,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f, + 0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x59,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x54,0x45,0x58,0x43,0x4f, + 0x4f,0x52,0x44,0x00,0x4f,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x53,0x48,0x44,0x52,0x34,0x01,0x00,0x00, + 0x40,0x00,0x01,0x00,0x4d,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x72,0x10,0x10,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03, + 0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x02,0x00,0x00,0x00, + 0x46,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00, + 0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; + + +//######################################################################################################################## +//------------------------------------------------------Pixel shaders----------------------------------------------------- +//######################################################################################################################## +static const unsigned char ps_colored[424] = { + 0x44,0x58,0x42,0x43,0x16,0x20,0x1a,0xbf,0xc8,0x73,0x21,0xb1,0xcb,0xa1,0x3a,0x9c,0xc5,0xa5,0x36,0x55,0x01,0x00,0x00,0x00,0xa8,0x01,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xec,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x1c,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66, + 0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e, + 0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x38,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_textured[632] = { + 0x44,0x58,0x42,0x43,0x6b,0x07,0x3a,0x46,0xe7,0x48,0xcd,0xc6,0x61,0xf4,0x31,0x00,0x4d,0xa2,0x88,0x52,0x01,0x00,0x00,0x00,0x78,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xdc,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x60,0x01,0x00,0x00,0xfc,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x6e,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65, + 0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61, + 0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0xab,0xab,0x49,0x53,0x47,0x4e, + 0x48,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x03,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab, + 0x53,0x48,0x44,0x52,0x94,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04, + 0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07, + 0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54, + 0x74,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_colored_test[512] = { + 0x44,0x58,0x42,0x43,0x96,0x8a,0x87,0x09,0x0b,0x87,0x03,0xec,0x5f,0xc8,0x2e,0xe4,0x75,0xae,0x39,0xc8,0x01,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xec,0x00,0x00,0x00,0x84,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x1c,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66, + 0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e, + 0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x90,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07, + 0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_textured_test[732] = { + 0x44,0x58,0x42,0x43,0x79,0x06,0x95,0x54,0x09,0x72,0xe5,0xe5,0x96,0x93,0xa5,0x15,0x18,0x9d,0xd3,0x7e,0x01,0x00,0x00,0x00,0xdc,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xdc,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x60,0x01,0x00,0x00,0x60,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x6e,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65, + 0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61, + 0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0xab,0xab,0x49,0x53,0x47,0x4e, + 0x48,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x03,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab, + 0x53,0x48,0x44,0x52,0xf8,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04, + 0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x12,0x00,0x10,0x00, + 0x01,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00,0x01,0x00,0x00,0x00, + 0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_colored_linear[812] = { + 0x44,0x58,0x42,0x43,0x4d,0x07,0xb0,0xb7,0x92,0xe8,0xd5,0x3f,0x71,0x68,0x19,0x03,0x90,0x20,0xa6,0x6d,0x01,0x00,0x00,0x00,0x2c,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x84,0x01,0x00,0x00,0xb8,0x01,0x00,0x00,0xb0,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xf4,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc4,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0xb4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45,0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c, + 0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f, + 0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xf0,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80,0x41,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00, + 0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_textured_linear[1036] = { + 0x44,0x58,0x42,0x43,0xea,0x4f,0xef,0xd5,0x7f,0x41,0x2e,0x1b,0xb7,0x39,0xd9,0x13,0x36,0xaf,0xbb,0x5a,0x01,0x00,0x00,0x00,0x0c,0x04,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0xf4,0x01,0x00,0x00,0x28,0x02,0x00,0x00,0x90,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0x44,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x14,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65, + 0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xe8,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45, + 0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab, + 0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c, + 0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00, + 0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00, + 0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44, + 0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54, + 0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x60,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00, + 0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x64,0x20,0x00,0x04, + 0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x09,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80,0x41,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0b,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x09,0x10,0x00,0x01,0x00,0x00,0x00,0x06,0x19,0x10,0x00, + 0x01,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x01,0x00,0x00,0x00, + 0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00, + 0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00, + 0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_colored_test_linear[892] = { + 0x44,0x58,0x42,0x43,0x8a,0xcb,0x96,0x93,0x3f,0x48,0x28,0x07,0x96,0x55,0xae,0xf3,0xd3,0x7b,0xa5,0x81,0x01,0x00,0x00,0x00,0x7c,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x84,0x01,0x00,0x00,0xb8,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xf4,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc4,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0xb4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45,0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c, + 0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f, + 0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x40,0x01,0x00,0x00, + 0x40,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00, + 0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05, + 0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x00,0x00,0x00,0x09,0x12,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80,0x41,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08, + 0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09, + 0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_textured_test_linear[1116] = { + 0x44,0x58,0x42,0x43,0x1d,0x79,0x4f,0x31,0xfb,0x7d,0xd0,0xf9,0x3d,0xad,0x4f,0xc0,0xb9,0xbe,0x19,0x8b,0x01,0x00,0x00,0x00,0x5c,0x04,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0xf4,0x01,0x00,0x00,0x28,0x02,0x00,0x00,0xe0,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0x44,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x14,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65, + 0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xe8,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45, + 0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab, + 0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c, + 0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00, + 0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00, + 0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44, + 0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54, + 0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xb0,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x6c,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00, + 0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x64,0x20,0x00,0x04, + 0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x02,0x00,0x00,0x00, + 0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00, + 0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00, + 0x31,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03, + 0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x0e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x00,0x00,0x00,0x09,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80, + 0x41,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0b,0x72,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x12,0x10,0x00,0x01,0x00,0x00,0x00,0x96,0x87,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0xf6,0x0f,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_colored_density[856] = { + 0x44,0x58,0x42,0x43,0x9c,0xb3,0xe5,0x3c,0x3d,0x38,0xc9,0xc6,0x6e,0x98,0xfc,0xe6,0x28,0x0a,0xcd,0x79,0x01,0x00,0x00,0x00,0x58,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0xbc,0x01,0x00,0x00,0xdc,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xf8,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xac,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f, + 0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53, + 0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52, + 0x18,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00, + 0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f,0x19,0x00,0x00,0x05,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07, + 0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x09,0xe2,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a, + 0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54, + 0x74,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_textured_density[1080] = { + 0x44,0x58,0x42,0x43,0xc0,0x13,0x86,0xc6,0xba,0x6d,0x77,0x79,0x76,0x05,0x6f,0x20,0x79,0xb9,0x5d,0x48,0x01,0x00,0x00,0x00,0x38,0x04,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x84,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x2c,0x02,0x00,0x00,0xbc,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0x48,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x18,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65, + 0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xec,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44, + 0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72, + 0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52, + 0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31, + 0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x88,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x62,0x00,0x00,0x00,0x59,0x00,0x00,0x04, + 0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00, + 0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00, + 0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02, + 0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f, + 0x19,0x00,0x00,0x05,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x10,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0b,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x06,0x09,0x10,0x00,0x01,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x01,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05, + 0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54, + 0x74,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_colored_test_density[936] = { + 0x44,0x58,0x42,0x43,0x8b,0xbd,0x84,0x52,0xb8,0xfa,0xa4,0x23,0x37,0x6a,0xff,0xe0,0x97,0x76,0x5b,0xe3,0x01,0x00,0x00,0x00,0xa8,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0xbc,0x01,0x00,0x00,0x2c,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xf8,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xac,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f, + 0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53, + 0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52, + 0x68,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x5a,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff, + 0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x38,0x00,0x00,0x08, + 0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07, + 0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f,0x19,0x00,0x00,0x05,0x12,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x09,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x8e,0x20,0x80, + 0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const unsigned char ps_textured_test_density[1160] = { + 0x44,0x58,0x42,0x43,0xbd,0x21,0xa2,0x31,0xd8,0x5a,0x9a,0x36,0xba,0x5b,0x4d,0xde,0x22,0x7e,0xc8,0x19,0x01,0x00,0x00,0x00,0x88,0x04,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x84,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x2c,0x02,0x00,0x00,0x0c,0x04,0x00,0x00,0x52,0x44,0x45,0x46,0x48,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x18,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65, + 0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xec,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44, + 0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72, + 0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52, + 0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31, + 0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xd8,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x76,0x00,0x00,0x00,0x59,0x00,0x00,0x04, + 0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00, + 0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00, + 0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02, + 0x02,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00, + 0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f, + 0x1f,0x00,0x04,0x03,0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x38,0x00,0x00,0x08,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x3a,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f,0x19,0x00,0x00,0x05,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f, + 0x32,0x00,0x00,0x0b,0x72,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x12,0x10,0x00,0x01,0x00,0x00,0x00,0x96,0x87,0x20,0x80, + 0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0xf6,0x0f,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; diff --git a/misc/xbox/Makefile b/misc/xbox/Makefile new file mode 100644 index 0000000..f3a7985 --- /dev/null +++ b/misc/xbox/Makefile @@ -0,0 +1,13 @@ +ifeq ($(strip $(NXDK_DIR)),) +$(error "Please set NXDK_DIR in your environment") +endif + +XBE_TITLE = ClassiCube +GEN_XISO = ClassiCube-xbox.iso +SRCS = $(wildcard src/*.c) $(wildcard third_party/bearssl/src/*.c) +SHADER_OBJS = misc/xbox/vs_coloured.inl misc/xbox/vs_textured.inl misc/xbox/ps_coloured.inl misc/xbox/ps_textured.inl +NXDK_NET = y +NXDK_CFLAGS = -Ithird_party/bearssl/inc -O1 +NXDK_LDFLAGS = -stack:196608 + +include $(NXDK_DIR)/Makefile \ No newline at end of file diff --git a/misc/xbox/ps_coloured.ps.cg b/misc/xbox/ps_coloured.ps.cg new file mode 100644 index 0000000..aec8b40 --- /dev/null +++ b/misc/xbox/ps_coloured.ps.cg @@ -0,0 +1,10 @@ +struct vOut { + float4 color : COLOR; +}; + +float4 main( + vOut input + ) : COLOR +{ + return input.color; +} diff --git a/misc/xbox/ps_textured.ps.cg b/misc/xbox/ps_textured.ps.cg new file mode 100644 index 0000000..19d4f9e --- /dev/null +++ b/misc/xbox/ps_textured.ps.cg @@ -0,0 +1,12 @@ +struct vOut { + float4 color : COLOR; + float2 tex0 : TEXCOORD0; +}; + +float4 main( + vOut input, + uniform sampler2D tex + ) : COLOR +{ + return tex2D(tex, input.tex0.xy) * input.color; +} diff --git a/misc/xbox/vs_coloured.vs.cg b/misc/xbox/vs_coloured.vs.cg new file mode 100644 index 0000000..f006be4 --- /dev/null +++ b/misc/xbox/vs_coloured.vs.cg @@ -0,0 +1,33 @@ +struct vIn { + float4 color : DIFFUSE; + float4 position : POSITION; +}; + +struct vOut { + float4 col : COLOR; + float4 pos : POSITION; +}; + +vOut main( + vIn input, + uniform float4x4 mvp, + uniform float4 vp_scale, + uniform float4 vp_offset + ) +{ + vOut result; + float4 position; + + position = float4(input.position.xyz, 1.0f); + position = mul(position, mvp); + position.xyz = position.xyz / position.w; + + position.x = position.x * vp_scale.x + vp_offset.x; + position.y = position.y * vp_scale.y + vp_offset.y; + position.z = position.z * vp_scale.z + vp_offset.z; + //position.w = 1.0 / half_viewport.w; + + result.pos = position; + result.col = input.color; + return result; +} diff --git a/misc/xbox/vs_textured.vs.cg b/misc/xbox/vs_textured.vs.cg new file mode 100644 index 0000000..2e3b39b --- /dev/null +++ b/misc/xbox/vs_textured.vs.cg @@ -0,0 +1,36 @@ +struct vIn { + float4 tex : TEXCOORD; + float4 color : DIFFUSE; + float4 position : POSITION; +}; + +struct vOut { + float4 pos : POSITION; + float4 col : COLOR; + float4 tex : TEXCOORD0; +}; + +vOut main( + vIn input, + uniform float4x4 mvp, + uniform float4 vp_scale, + uniform float4 vp_offset + ) +{ + vOut result; + float4 position; + + position = float4(input.position.xyz, 1.0f); + position = mul(position, mvp); + position.xyz = position.xyz / position.w; + + position.x = position.x * vp_scale.x + vp_offset.x; + position.y = position.y * vp_scale.y + vp_offset.y; + position.z = position.z * vp_scale.z + vp_offset.z; + //position.w = 1.0 / half_viewport.w; + + result.pos = position; + result.col = input.color; + result.tex = input.tex; + return result; +} diff --git a/misc/xbox360/Makefile b/misc/xbox360/Makefile new file mode 100644 index 0000000..1438c4d --- /dev/null +++ b/misc/xbox360/Makefile @@ -0,0 +1,117 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: + +#--------------------------------------------------------------------------------- +ifeq ($(strip $(DEVKITXENON)),) +$(error "Please set DEVKITXENON in your environment. export DEVKITXENON=<path to>devkitPPC") +endif + +#--------------------------------------------------------------------------------- +export LIBXENON_INC := $(DEVKITXENON)/usr/include +export LIBXENON_LIB := $(DEVKITXENON)/usr/lib +LDSCRIPT := $(DEVKITXENON)/app.lds + +MACHDEP = -DXENON -m32 -maltivec -fno-pic -mpowerpc64 -mhard-float -L$(DEVKITXENON)/xenon/lib/32 + +export AS := xenon-as +export CC := xenon-gcc +export CXX := xenon-g++ +export AR := xenon-ar + + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := ClassiCube-xbox360 +BUILD := build-360 +SOURCES := src + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) +CXXFLAGS= $(CFLAGS) + +LDFLAGS = -g $(MACHDEP) -Wl,--gc-sections -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lxenon -lm + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) + +export LD := $(CC) +export OFILES := $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := -I$(LIBXENON_INC) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := -L$(LIBXENON_LIB) + +export OUTPUT := $(CURDIR)/$(TARGET) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).elf32: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +default: $(BUILD) $(OUTPUT).elf32 + cp $(OUTPUT).elf32 /tftpboot/xenon + xenon-strip /tftpboot/xenon + + +#--------------------------------------------------------------------------------- +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).elf32 + +#--------------------------------------------------------------------------------- +%.o: %.c + @$(CC) $(CFLAGS) -c $< -o $@ + +%.o: %.s + @$(CC) -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ + +%.o: %.S + @$(CC) -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ + +%.elf: + @echo linking ... $(notdir $@) + @$(LD) $^ $(LDFLAGS) $(LIBPATHS) $(LIBS) -n -T $(LDSCRIPT) -o $@ + +%.elf32: %.elf + @echo converting and stripping ... $(notdir $@) + @xenon-objcopy -O elf32-powerpc --adjust-vma 0x80000000 $< $@ + @xenon-strip $@ diff --git a/misc/xbox360/ps_coloured.bin b/misc/xbox360/ps_coloured.bin new file mode 100644 index 0000000..5495b5d --- /dev/null +++ b/misc/xbox360/ps_coloured.bin Binary files differdiff --git a/misc/xbox360/ps_coloured.h b/misc/xbox360/ps_coloured.h new file mode 100644 index 0000000..a48a75c --- /dev/null +++ b/misc/xbox360/ps_coloured.h @@ -0,0 +1,19 @@ +const char ps_coloured[160] = { + 0x10, 0x2a, 0x11, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x23, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x32, 0x2e, + 0x30, 0x2e, 0x34, 0x33, 0x31, 0x34, 0x2e, 0x30, 0x00, 0xab, 0xab, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0xf0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xc4, 0x00, + 0x22, 0x00, 0x00, 0x00, 0xc8, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const int ps_coloured_length = 160; diff --git a/misc/xbox360/ps_coloured.hlsl b/misc/xbox360/ps_coloured.hlsl new file mode 100644 index 0000000..19a5568 --- /dev/null +++ b/misc/xbox360/ps_coloured.hlsl @@ -0,0 +1,7 @@ +struct INPUT_VERTEX { + float4 col : COLOR0; +}; + +float4 main(INPUT_VERTEX input) : COLOR0 { + return input.col; +} \ No newline at end of file diff --git a/misc/xbox360/ps_textured.bin b/misc/xbox360/ps_textured.bin new file mode 100644 index 0000000..20e28f0 --- /dev/null +++ b/misc/xbox360/ps_textured.bin Binary files differdiff --git a/misc/xbox360/ps_textured.h b/misc/xbox360/ps_textured.h new file mode 100644 index 0000000..17a0131 --- /dev/null +++ b/misc/xbox360/ps_textured.h @@ -0,0 +1,25 @@ +const char ps_textured[228] = { + 0x10, 0x2a, 0x11, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x00, 0xab, 0xab, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, + 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x32, 0x2e, 0x30, 0x2e, 0x34, 0x33, + 0x31, 0x34, 0x2e, 0x30, 0x00, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x42, 0x00, 0x01, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x30, 0x50, 0x00, + 0x00, 0xf1, 0xa0, 0x00, 0x01, 0x10, 0x02, 0x00, 0x00, 0x12, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x1f, 0x1f, + 0xf6, 0x88, 0x00, 0x00, 0x40, 0x00, 0xc8, 0x0f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const int ps_textured_length = 228; diff --git a/misc/xbox360/ps_textured.hlsl b/misc/xbox360/ps_textured.hlsl new file mode 100644 index 0000000..e3f0b22 --- /dev/null +++ b/misc/xbox360/ps_textured.hlsl @@ -0,0 +1,10 @@ +sampler s; + +struct INPUT_VERTEX { + float4 col : COLOR0; + float2 uv : TEXCOORD0; +}; + +float4 main(INPUT_VERTEX input) : COLOR0 { + return tex2D(s, input.uv) * input.col; +} \ No newline at end of file diff --git a/misc/xbox360/vs_coloured.bin b/misc/xbox360/vs_coloured.bin new file mode 100644 index 0000000..8373dfb --- /dev/null +++ b/misc/xbox360/vs_coloured.bin Binary files differdiff --git a/misc/xbox360/vs_coloured.h b/misc/xbox360/vs_coloured.h new file mode 100644 index 0000000..3157423 --- /dev/null +++ b/misc/xbox360/vs_coloured.h @@ -0,0 +1,34 @@ +const char vs_coloured[324] = { + 0x10, 0x2a, 0x11, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x53, 0xff, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x76, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00, 0xab, + 0xab, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, + 0x30, 0x00, 0x32, 0x2e, 0x30, 0x2e, 0x34, 0x33, 0x31, 0x34, 0x2e, + 0x30, 0x00, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x90, + 0x00, 0x10, 0x00, 0x03, 0x00, 0x30, 0xa0, 0x04, 0x00, 0x00, 0xf0, + 0x50, 0x00, 0x00, 0x10, 0x09, 0x30, 0x05, 0x20, 0x03, 0x00, 0x00, + 0x12, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, + 0x00, 0x12, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf8, 0x20, + 0x00, 0x00, 0x00, 0x0e, 0x88, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x88, 0x00, 0x00, 0x00, 0x00, 0xc8, + 0x0f, 0x00, 0x01, 0x00, 0xb1, 0x77, 0x00, 0x81, 0x02, 0x01, 0x00, + 0xc8, 0x0f, 0x00, 0x01, 0x00, 0x6c, 0x94, 0xe3, 0xab, 0x02, 0x00, + 0x01, 0xc8, 0x0f, 0x00, 0x01, 0x00, 0xc6, 0x25, 0xe3, 0xab, 0x02, + 0x02, 0x01, 0xc8, 0x0f, 0x80, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x80, + 0x01, 0x03, 0x00, 0xc8, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const int vs_coloured_length = 324; diff --git a/misc/xbox360/vs_coloured.hlsl b/misc/xbox360/vs_coloured.hlsl new file mode 100644 index 0000000..7404109 --- /dev/null +++ b/misc/xbox360/vs_coloured.hlsl @@ -0,0 +1,20 @@ +struct INPUT_VERTEX +{ + float3 pos : POSITION; + float4 col : COLOR0; +}; + +struct OUTPUT_VERTEX +{ + float4 pos : POSITION; + float4 col : TEXCOORD0; +}; + +float4x4 mvpMatrix: register(c0); + +OUTPUT_VERTEX main(INPUT_VERTEX input) { + OUTPUT_VERTEX output; + output.pos = mul(mvpMatrix, float4(input.pos, 1.0f)); + output.col = input.col; + return output; +} \ No newline at end of file diff --git a/misc/xbox360/vs_textured.bin b/misc/xbox360/vs_textured.bin new file mode 100644 index 0000000..ba0ce7c --- /dev/null +++ b/misc/xbox360/vs_textured.bin Binary files differdiff --git a/misc/xbox360/vs_textured.h b/misc/xbox360/vs_textured.h new file mode 100644 index 0000000..ca65c47 --- /dev/null +++ b/misc/xbox360/vs_textured.h @@ -0,0 +1,37 @@ +const char vs_textured[360] = { + 0x10, 0x2a, 0x11, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x53, 0xff, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x76, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00, 0xab, + 0xab, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, + 0x30, 0x00, 0x32, 0x2e, 0x30, 0x2e, 0x34, 0x33, 0x31, 0x34, 0x2e, + 0x30, 0x00, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x11, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x90, + 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x30, 0x50, + 0x05, 0x00, 0x00, 0x30, 0x50, 0x00, 0x01, 0xf1, 0xa0, 0x00, 0x00, + 0x10, 0x0a, 0x00, 0x00, 0x10, 0x0b, 0x70, 0x15, 0x30, 0x03, 0x00, + 0x00, 0x12, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x06, + 0x00, 0x00, 0x12, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x0a, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf8, + 0x30, 0x00, 0x00, 0x00, 0x0e, 0x88, 0x00, 0x00, 0x00, 0x00, 0x05, + 0xf8, 0x10, 0x00, 0x00, 0x00, 0x06, 0x88, 0x00, 0x00, 0x00, 0x00, + 0x05, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x00, 0x00, 0x00, + 0x00, 0xc8, 0x0f, 0x00, 0x02, 0x00, 0xb1, 0x77, 0x00, 0x81, 0x03, + 0x01, 0x00, 0xc8, 0x0f, 0x00, 0x02, 0x00, 0x6c, 0x94, 0xe3, 0xab, + 0x03, 0x00, 0x02, 0xc8, 0x0f, 0x00, 0x02, 0x00, 0xc6, 0x25, 0xe3, + 0xab, 0x03, 0x02, 0x02, 0xc8, 0x0f, 0x80, 0x3e, 0x00, 0x3e, 0x00, + 0x00, 0x80, 0x02, 0x03, 0x00, 0xc8, 0x03, 0x80, 0x00, 0x00, 0xb0, + 0xb0, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xc8, 0x0f, 0x80, 0x01, 0x00, + 0x00, 0x00, 0x00, 0xc2, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const int vs_textured_length = 360; diff --git a/misc/xbox360/vs_textured.hlsl b/misc/xbox360/vs_textured.hlsl new file mode 100644 index 0000000..e271988 --- /dev/null +++ b/misc/xbox360/vs_textured.hlsl @@ -0,0 +1,23 @@ +struct INPUT_VERTEX +{ + float3 pos : POSITION; + float4 col : COLOR0; + float2 uv : TEXCOORD0; +}; + +struct OUTPUT_VERTEX +{ + float4 pos : POSITION; + float4 col : COLOR0; + float2 uv : TEXCOORD0; +}; + +float4x4 mvpMatrix: register(c0); + +OUTPUT_VERTEX main(INPUT_VERTEX input) { + OUTPUT_VERTEX output; + output.pos = mul(mvpMatrix, float4(input.pos, 1.0f)); + output.col = input.col; + output.uv = input.uv; + return output; +} \ No newline at end of file |