From bed24c285205e0d4aaaebdd4853ff580346d4006 Mon Sep 17 00:00:00 2001 From: Akiko Date: Wed, 10 Jun 2015 10:29:35 +0200 Subject: [PATCH] - file renaming and includes done - removed some more Visual Studio junk - Genesis3D now compiles static and shared - GBSPLib now compiles static and shared ! some ASM instructions must be converted --- CMakeLists.txt | 8 +- G3D/{Engine/Logo/A_CORONA.c => ACorona.c} | 0 G3D/{Engine/Logo/A_STREAK.c => AStreak.c} | 0 G3D/{Actor/actor.c => Actor.c} | 7 +- G3D/Actor.h | 2 +- G3D/Actor/actor.h | 478 --------- G3D/Actor/body.h | 136 --- G3D/Actor/motion.h | 180 ---- G3D/Actor/path.h | 153 --- G3D/{Engine/Drivers/Bmp.c => BMP.c} | 0 G3D/{Bitmap/bitmap.__h => Bitmap.__h} | 4 +- G3D/{Bitmap/bitmap._h => Bitmap._h} | 4 +- G3D/{Bitmap/bitmap.c => Bitmap.c} | 29 +- G3D/Bitmap/PixelFormat.h | 152 --- G3D/Bitmap/bitmap.h | 627 ------------ G3D/{Bitmap/bitmap_blitdata.c => BitmapBlitData.c} | 88 +- G3D/{Bitmap/bitmap_blitdata.h => BitmapBlitData.h} | 0 G3D/{Bitmap/bitmap_gamma.c => BitmapGamma.c} | 11 +- G3D/{Bitmap/bitmap_gamma.h => BitmapGamma.h} | 0 G3D/{Engine => }/BitmapList.c | 12 +- G3D/{Engine => }/BitmapList.h | 6 +- G3D/{Actor/body._h => Body._h} | 12 +- G3D/{Actor/body.c => Body.c} | 12 +- G3D/{Actor/bodyinst.c => BodyInst.c} | 10 +- G3D/{Actor/bodyinst.h => BodyInst.h} | 10 +- G3D/CMakeLists.txt | 18 +- G3D/Camera.c | 2 +- G3D/{Engine/Logo/CORONA.c => Corona.c} | 0 G3D/{Engine/Drivers => }/DCommon.h | 0 G3D/DirTree.c | 9 +- G3D/DirTree.h | 2 +- G3D/DirTreeCommon.c | 6 +- G3D/DirTreeCommon.h | 4 +- G3D/{Engine => }/Drivers/D3D7xDrv/D3D_ERR.CPP | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3D_ERR.H | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3d_fx.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3d_fx.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3d_main.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3d_main.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3dcache.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3dcache.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3ddrv7x.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/D3ddrv7x.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/DDMemMgr.c | 0 G3D/{Engine => }/Drivers/D3D7xDrv/DDMemMgr.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/GSPAN.H | 0 G3D/{Engine => }/Drivers/D3D7xDrv/Gspan.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/Pcache.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/Pcache.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/RENDER.H | 0 G3D/{Engine => }/Drivers/D3D7xDrv/Render.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/SCENE.H | 0 G3D/{Engine => }/Drivers/D3D7xDrv/Scene.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/THandle.cpp | 0 G3D/{Engine => }/Drivers/D3D7xDrv/THandle.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/TPage.h | 0 G3D/{Engine => }/Drivers/D3D7xDrv/tpage.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3DDRV.H | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3D_ERR.CPP | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3D_ERR.H | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3D_FX.H | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3d_fx.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3d_main.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3d_main.h | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3dcache.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3dcache.h | 0 G3D/{Engine => }/Drivers/D3D8Drv/D3ddrv.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/DDMemMgr.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/DDMemMgr.h | 0 G3D/{Engine => }/Drivers/D3D8Drv/GSPAN.CPP | 0 G3D/{Engine => }/Drivers/D3D8Drv/GSPAN.H | 0 G3D/{Engine => }/Drivers/D3D8Drv/Pcache.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/Pcache.h | 0 G3D/{Engine => }/Drivers/D3D8Drv/RENDER.H | 0 G3D/{Engine => }/Drivers/D3D8Drv/Render.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/SCENE.H | 0 G3D/{Engine => }/Drivers/D3D8Drv/Scene.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/THandle.cpp | 0 G3D/{Engine => }/Drivers/D3D8Drv/THandle.h | 0 G3D/{Engine => }/Drivers/D3D8Drv/TPage.h | 0 G3D/{Engine => }/Drivers/D3D8Drv/tpage.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/D3DDRV.H | 0 G3D/{Engine => }/Drivers/D3DDrv/D3D_ERR.CPP | 0 G3D/{Engine => }/Drivers/D3DDrv/D3D_ERR.H | 0 G3D/{Engine => }/Drivers/D3DDrv/D3d_fx.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/D3d_fx.h | 0 G3D/{Engine => }/Drivers/D3DDrv/D3d_main.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/D3d_main.h | 0 G3D/{Engine => }/Drivers/D3DDrv/D3dcache.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/D3dcache.h | 0 G3D/{Engine => }/Drivers/D3DDrv/D3ddrv.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/DDMemMgr.c | 0 G3D/{Engine => }/Drivers/D3DDrv/DDMemMgr.h | 0 G3D/{Engine => }/Drivers/D3DDrv/GSPAN.CPP | 0 G3D/{Engine => }/Drivers/D3DDrv/GSPAN.H | 0 G3D/{Engine => }/Drivers/D3DDrv/Pcache.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/Pcache.h | 0 G3D/{Engine => }/Drivers/D3DDrv/README.NOW | 0 G3D/{Engine => }/Drivers/D3DDrv/RENDER.H | 0 G3D/{Engine => }/Drivers/D3DDrv/Render.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/SCENE.H | 0 G3D/{Engine => }/Drivers/D3DDrv/Scene.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/THandle.cpp | 0 G3D/{Engine => }/Drivers/D3DDrv/THandle.h | 0 G3D/{Engine => }/Drivers/D3DDrv/TPage.h | 0 G3D/{Engine => }/Drivers/D3DDrv/tpage.cpp | 0 G3D/{Engine => }/Drivers/GlideDrv/GCache.c | 0 G3D/{Engine => }/Drivers/GlideDrv/GCache.h | 0 G3D/{Engine => }/Drivers/GlideDrv/GLIDEDRV.H | 0 G3D/{Engine => }/Drivers/GlideDrv/GMain.c | 0 G3D/{Engine => }/Drivers/GlideDrv/GMain.h | 0 G3D/{Engine => }/Drivers/GlideDrv/GMemMgr.c | 0 G3D/{Engine => }/Drivers/GlideDrv/GMemMgr.h | 0 G3D/{Engine => }/Drivers/GlideDrv/GSpan.cpp | 0 G3D/{Engine => }/Drivers/GlideDrv/GSpan.h | 0 G3D/{Engine => }/Drivers/GlideDrv/GTHandle.h | 0 G3D/{Engine => }/Drivers/GlideDrv/GThandle.c | 0 G3D/{Engine => }/Drivers/GlideDrv/GlideDrv.c | 0 G3D/{Engine => }/Drivers/GlideDrv/Render.c | 0 G3D/{Engine => }/Drivers/GlideDrv/Render.h | 0 G3D/{Engine => }/Drivers/OpenGl/OGLDrv.c | 0 G3D/{Engine => }/Drivers/OpenGl/OGLDrv.h | 0 G3D/{Engine => }/Drivers/OpenGl/OglMisc.c | 0 G3D/{Engine => }/Drivers/OpenGl/OglMisc.h | 0 G3D/{Engine => }/Drivers/OpenGl/Render.c | 0 G3D/{Engine => }/Drivers/OpenGl/Render.h | 0 G3D/{Engine => }/Drivers/OpenGl/THandle.c | 0 G3D/{Engine => }/Drivers/OpenGl/THandle.h | 0 G3D/{Engine => }/Drivers/OpenGl/Win32.c | 0 G3D/{Engine => }/Drivers/OpenGl/Win32.h | 0 G3D/{Engine => }/Drivers/OpenGl/glext.h | 0 G3D/{Engine => }/Drivers/SoftDrv/3dnowspan.h | 0 G3D/{Engine => }/Drivers/SoftDrv/REGISTER.H | 0 G3D/{Engine => }/Drivers/SoftDrv/RENDER.H | 0 G3D/{Engine => }/Drivers/SoftDrv/SAL.H | 0 G3D/{Engine => }/Drivers/SoftDrv/SCENE.H | 0 G3D/{Engine => }/Drivers/SoftDrv/SOFTDRV.H | 0 G3D/{Engine => }/Drivers/SoftDrv/SPAN.H | 0 G3D/{Engine => }/Drivers/SoftDrv/SYSTEM.H | 0 G3D/{Engine => }/Drivers/SoftDrv/W32SAL.CPP | 0 G3D/{Engine => }/Drivers/SoftDrv/amdspan.asm | 0 G3D/{Engine => }/Drivers/SoftDrv/dmodes.c | 0 G3D/{Engine => }/Drivers/SoftDrv/dmodes.h | 0 G3D/{Engine => }/Drivers/SoftDrv/drawspan.c | 0 G3D/{Engine => }/Drivers/SoftDrv/drawspan.h | 0 G3D/{Engine => }/Drivers/SoftDrv/register.c | 0 G3D/{Engine => }/Drivers/SoftDrv/render.c | 0 G3D/{Engine => }/Drivers/SoftDrv/scene.c | 0 G3D/{Engine => }/Drivers/SoftDrv/softdrv.c | 0 G3D/{Engine => }/Drivers/SoftDrv/span.c | 0 G3D/{Engine => }/Drivers/SoftDrv/system.c | 0 G3D/{Engine => }/Drivers/SoftDrv/x86span555.c | 0 G3D/{Engine => }/Drivers/SoftDrv/x86span555.h | 0 G3D/{Engine => }/Drivers/SoftDrv/x86span565.c | 0 G3D/{Engine => }/Drivers/SoftDrv/x86span565.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/CPUInfo.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/CPUInfo.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/DDRAWDisplay.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/DDRAWDisplay.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/DIBDisplay.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/DIBDisplay.h | 0 .../Drivers/SoftDrv2/DisplayModeInfo.c | 0 .../Drivers/SoftDrv2/DisplayModeInfo.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/DrawDecal.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/DrawDecal.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/SWTHandle.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/SWTHandle.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/Softdrv.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/Span.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/SpanBuffer.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/SpanBuffer.h | 0 .../Drivers/SoftDrv2/SpanEdges_Factory.h | 0 .../Drivers/SoftDrv2/Span_AffineLoop.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/Span_Factory.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/TRaster.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/Triangle.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/display.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/display.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/rop.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/softdrv.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/span.c | 0 G3D/{Engine => }/Drivers/SoftDrv2/traster.h | 0 G3D/{Engine => }/Drivers/SoftDrv2/triangle.h | 0 G3D/{Engine => }/Drivers/WireFrame/D3d_err.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/D3d_err.h | 0 G3D/{Engine => }/Drivers/WireFrame/D3d_fx.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/D3d_fx.h | 0 G3D/{Engine => }/Drivers/WireFrame/D3d_main.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/D3d_main.h | 0 G3D/{Engine => }/Drivers/WireFrame/D3dcache.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/D3dcache.h | 0 G3D/{Engine => }/Drivers/WireFrame/D3ddrv.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/D3ddrv.h | 0 G3D/{Engine => }/Drivers/WireFrame/DDMemMgr.c | 0 G3D/{Engine => }/Drivers/WireFrame/DDMemMgr.h | 0 G3D/{Engine => }/Drivers/WireFrame/Gspan.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/Gspan.h | 0 G3D/{Engine => }/Drivers/WireFrame/Pcache.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/Pcache.h | 0 G3D/{Engine => }/Drivers/WireFrame/Readme.now | 0 G3D/{Engine => }/Drivers/WireFrame/Render.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/Render.h | 0 G3D/{Engine => }/Drivers/WireFrame/Scene.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/Scene.h | 0 G3D/{Engine => }/Drivers/WireFrame/THandle.cpp | 0 G3D/{Engine => }/Drivers/WireFrame/THandle.h | 0 G3D/{Engine => }/Drivers/WireFrame/TPage.h | 0 G3D/{Engine => }/Drivers/WireFrame/tpage.cpp | 0 G3D/{Engine/Logo/electric.c => Electric.c} | 5 +- G3D/{Engine/Logo/electric.h => Electric.h} | 0 G3D/{Engine => }/Engine.c | 12 +- G3D/{Engine => }/Engine.h | 6 +- G3D/Engine/Drivers/D3D7xDrv/D3DDrv.mak | 284 ------ G3D/Engine/Drivers/D3D7xDrv/D3DDrv.ncb | Bin 214016 -> 0 bytes G3D/Engine/Drivers/D3D7xDrv/D3DDrv.opt | Bin 51712 -> 0 bytes G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsp | 206 ---- G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsw | 29 - G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.ncb | Bin 230400 -> 0 bytes G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.opt | Bin 50688 -> 0 bytes G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.plg | 44 - G3D/Engine/Drivers/D3D7xDrv/mssccprj.scc | 4 - G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsp | 199 ---- G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsw | 29 - G3D/Engine/Drivers/D3D8Drv/D3DDriver.ncb | Bin 115712 -> 0 bytes G3D/Engine/Drivers/D3D8Drv/D3DDriver.opt | Bin 49664 -> 0 bytes G3D/Engine/Drivers/D3D8Drv/D3DDriver.plg | 44 - G3D/Engine/Drivers/D3DDrv/D3DDrv.dsp | 207 ---- G3D/Engine/Drivers/D3DDrv/D3DDrv.dsw | 29 - G3D/Engine/Drivers/D3DDrv/D3DDrv.mak | 284 ------ G3D/Engine/Drivers/D3DDrv/D3DDrv.ncb | Bin 345088 -> 0 bytes G3D/Engine/Drivers/D3DDrv/D3DDrv.opt | Bin 50688 -> 0 bytes G3D/Engine/Drivers/D3DDrv/D3DDrv.plg | 44 - G3D/Engine/Drivers/D3DDrv/mssccprj.scc | 4 - G3D/Engine/Drivers/GlideDrv/GlideDrv.dsp | 229 ----- G3D/Engine/Drivers/GlideDrv/GlideDrv.dsw | 29 - G3D/Engine/Drivers/GlideDrv/GlideDrv.mak | 245 ----- G3D/Engine/Drivers/GlideDrv/GlideDrv.ncb | Bin 107520 -> 0 bytes G3D/Engine/Drivers/GlideDrv/GlideDrv.opt | Bin 49664 -> 0 bytes G3D/Engine/Drivers/GlideDrv/mssccprj.scc | 4 - G3D/Engine/Drivers/OpenGl/OglDrv.dsp | 209 ---- G3D/Engine/Drivers/OpenGl/OglDrv.dsw | 29 - G3D/Engine/Drivers/SoftDrv/SoftDrv.dsp | 304 ------ G3D/Engine/Drivers/SoftDrv/SoftDrv.mak | 319 ------ G3D/Engine/Drivers/SoftDrv/mssccprj.scc | 4 - G3D/Engine/Drivers/SoftDrv2/SoftDrv2.dsp | 297 ------ G3D/Engine/Drivers/SoftDrv2/SoftDrv2.mak | 292 ------ G3D/Engine/Drivers/SoftDrv2/mssccprj.scc | 4 - G3D/Engine/Drivers/WireFrame/D3DDrv.dsp | 207 ---- G3D/Engine/Drivers/WireFrame/D3DDrv.dsw | 29 - G3D/Engine/Drivers/WireFrame/D3DDrv.mak | 284 ------ G3D/Engine/Drivers/WireFrame/D3DDrv.ncb | Bin 377856 -> 0 bytes G3D/Engine/Drivers/WireFrame/D3DDrv.opt | Bin 48640 -> 0 bytes G3D/Engine/Drivers/WireFrame/D3DDrv.plg | 44 - G3D/Engine/Drivers/WireFrame/mssccprj.scc | 4 - G3D/Engine/Sound.c | 1068 -------------------- G3D/Entities.h | 2 +- G3D/Fog.c | 4 +- G3D/{Engine => }/FontBmp.c | 0 G3D/Frustum.c | 7 +- G3D/FsDos.c | 13 +- G3D/FsMemory.c | 13 +- G3D/FsVfs.c | 7 +- G3D/FsVfs.h | 2 +- G3D/GBSPFile.c | 3 +- G3D/GBSPFile.h | 4 +- G3D/Ge.c | 2 +- G3D/{Engine => }/Genesis3d.c | 0 G3D/Light.c | 7 +- G3D/Light.h | 8 +- G3D/List.c | 16 +- G3D/Log.h | 2 +- G3D/{Engine/Logo/logo.c => Logo.c} | 16 +- G3D/{Engine/Logo => }/LogoActor.c | 0 G3D/{Actor/motion.c => Motion.c} | 10 +- G3D/NetPlay.c | 7 +- .../Compression/palcreate.c => PALCreate.c} | 24 +- .../Compression/palcreate.h => PALCreate.h} | 4 +- .../Compression/paloptimize.c => PALOptimize.c} | 15 +- .../Compression/paloptimize.h => PALOptimize.h} | 4 +- .../Compression/palettize.c => Palettize.c} | 8 +- .../Compression/palettize.h => Palettize.h} | 4 +- G3D/{Actor/path.c => Path.c} | 14 +- G3D/Physics/PhysicsJoint.h | 68 -- G3D/Physics/PhysicsObject.h | 137 --- G3D/Physics/PhysicsSystem.h | 54 - G3D/{Physics => }/PhysicsJoint.c | 11 +- G3D/{Physics => }/PhysicsObject.c | 10 +- G3D/PhysicsObject.h | 2 +- G3D/{Physics => }/PhysicsSystem.c | 11 +- G3D/{Bitmap => }/PixelFormat.c | 2 +- G3D/Plane.c | 6 +- G3D/{Actor/pose.c => Pose.c} | 4 +- G3D/{Actor/pose.h => Pose.h} | 0 G3D/{Engine/Logo/poweredby.c => PoweredBy.c} | 0 G3D/{Actor/puppet.c => Puppet.c} | 26 +- G3D/{Actor/puppet.h => Puppet.h} | 2 +- G3D/{Actor => }/QKFrame.c | 6 +- G3D/{Actor => }/QKFrame.h | 10 +- G3D/Quaternion.c | 5 +- G3D/Ram.c | 2 +- G3D/Sound.c | 33 +- G3D/Sound3d.c | 6 +- G3D/Sprite.c | 9 +- G3D/Sprite.h | 2 +- G3D/{Actor/strblock.c => StrBlock.c} | 6 +- G3D/{Actor/strblock.h => StrBlock.h} | 6 +- G3D/{Engine/Logo/streak.c => Streak.c} | 0 G3D/Surface.c | 8 +- G3D/Surface.h | 8 +- G3D/{Engine => }/System.c | 14 +- G3D/{Engine => }/System.h | 9 +- G3D/TClip.c | 12 +- G3D/TClip.h | 8 +- G3D/{Actor/tkarray.c => TKArray.c} | 2 +- G3D/{Actor/tkarray.h => TKArray.h} | 4 +- G3D/{Actor/tkevents.c => TKEvents.c} | 4 +- G3D/{Actor/tkevents.h => TKEvents.h} | 6 +- G3D/Timer.c | 5 +- G3D/Timer.h | 3 +- G3D/Trace.c | 4 +- G3D/User.c | 6 +- G3D/User.h | 13 +- G3D/{Bitmap/Compression/utility.h => Utility.h} | 6 +- G3D/VFile._h | 4 +- G3D/VFile.c | 17 +- G3D/{Actor/vkframe.c => VKFrame.c} | 8 +- G3D/{Actor/vkframe.h => VKFrame.h} | 12 +- G3D/Vec3d.c | 3 +- G3D/Vis.c | 5 +- G3D/WBitmap.c | 8 +- G3D/{Engine/Logo => }/WebUrl.c | 0 G3D/WgClip.c | 9 +- G3D/World.c | 12 +- G3D/World.h | 14 +- G3D/{Actor => }/XFArray.c | 0 G3D/{Actor/xfarray.h => XFArray.h} | 2 +- G3D/XForm3d.c | 5 +- G3D/{Bitmap/Compression/yuv.c => YUV.c} | 7 +- G3D/{Bitmap/Compression/yuv.h => YUV.h} | 2 +- GBSPLib/CMakeLists.txt | 11 +- GBSPLib/Portals.cpp | 6 +- 341 files changed, 402 insertions(+), 7462 deletions(-) rename G3D/{Engine/Logo/A_CORONA.c => ACorona.c} (100%) rename G3D/{Engine/Logo/A_STREAK.c => AStreak.c} (100%) rename G3D/{Actor/actor.c => Actor.c} (96%) delete mode 100644 G3D/Actor/actor.h delete mode 100644 G3D/Actor/body.h delete mode 100644 G3D/Actor/motion.h delete mode 100644 G3D/Actor/path.h rename G3D/{Engine/Drivers/Bmp.c => BMP.c} (100%) rename G3D/{Bitmap/bitmap.__h => Bitmap.__h} (97%) rename G3D/{Bitmap/bitmap._h => Bitmap._h} (96%) rename G3D/{Bitmap/bitmap.c => Bitmap.c} (95%) delete mode 100644 G3D/Bitmap/PixelFormat.h delete mode 100644 G3D/Bitmap/bitmap.h rename G3D/{Bitmap/bitmap_blitdata.c => BitmapBlitData.c} (92%) rename G3D/{Bitmap/bitmap_blitdata.h => BitmapBlitData.h} (100%) rename G3D/{Bitmap/bitmap_gamma.c => BitmapGamma.c} (94%) rename G3D/{Bitmap/bitmap_gamma.h => BitmapGamma.h} (100%) rename G3D/{Engine => }/BitmapList.c (95%) rename G3D/{Engine => }/BitmapList.h (95%) rename G3D/{Actor/body._h => Body._h} (92%) rename G3D/{Actor/body.c => Body.c} (96%) rename G3D/{Actor/bodyinst.c => BodyInst.c} (95%) rename G3D/{Actor/bodyinst.h => BodyInst.h} (95%) rename G3D/{Engine/Logo/CORONA.c => Corona.c} (100%) rename G3D/{Engine/Drivers => }/DCommon.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3D_ERR.CPP (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3D_ERR.H (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3d_fx.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3d_fx.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3d_main.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3d_main.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3dcache.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3dcache.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3ddrv7x.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/D3ddrv7x.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/DDMemMgr.c (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/DDMemMgr.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/GSPAN.H (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/Gspan.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/Pcache.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/Pcache.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/RENDER.H (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/Render.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/SCENE.H (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/Scene.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/THandle.cpp (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/THandle.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/TPage.h (100%) rename G3D/{Engine => }/Drivers/D3D7xDrv/tpage.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3DDRV.H (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3D_ERR.CPP (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3D_ERR.H (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3D_FX.H (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3d_fx.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3d_main.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3d_main.h (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3dcache.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3dcache.h (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/D3ddrv.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/DDMemMgr.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/DDMemMgr.h (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/GSPAN.CPP (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/GSPAN.H (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/Pcache.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/Pcache.h (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/RENDER.H (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/Render.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/SCENE.H (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/Scene.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/THandle.cpp (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/THandle.h (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/TPage.h (100%) rename G3D/{Engine => }/Drivers/D3D8Drv/tpage.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3DDRV.H (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3D_ERR.CPP (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3D_ERR.H (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3d_fx.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3d_fx.h (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3d_main.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3d_main.h (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3dcache.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3dcache.h (100%) rename G3D/{Engine => }/Drivers/D3DDrv/D3ddrv.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/DDMemMgr.c (100%) rename G3D/{Engine => }/Drivers/D3DDrv/DDMemMgr.h (100%) rename G3D/{Engine => }/Drivers/D3DDrv/GSPAN.CPP (100%) rename G3D/{Engine => }/Drivers/D3DDrv/GSPAN.H (100%) rename G3D/{Engine => }/Drivers/D3DDrv/Pcache.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/Pcache.h (100%) rename G3D/{Engine => }/Drivers/D3DDrv/README.NOW (100%) rename G3D/{Engine => }/Drivers/D3DDrv/RENDER.H (100%) rename G3D/{Engine => }/Drivers/D3DDrv/Render.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/SCENE.H (100%) rename G3D/{Engine => }/Drivers/D3DDrv/Scene.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/THandle.cpp (100%) rename G3D/{Engine => }/Drivers/D3DDrv/THandle.h (100%) rename G3D/{Engine => }/Drivers/D3DDrv/TPage.h (100%) rename G3D/{Engine => }/Drivers/D3DDrv/tpage.cpp (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GCache.c (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GCache.h (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GLIDEDRV.H (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GMain.c (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GMain.h (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GMemMgr.c (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GMemMgr.h (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GSpan.cpp (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GSpan.h (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GTHandle.h (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GThandle.c (100%) rename G3D/{Engine => }/Drivers/GlideDrv/GlideDrv.c (100%) rename G3D/{Engine => }/Drivers/GlideDrv/Render.c (100%) rename G3D/{Engine => }/Drivers/GlideDrv/Render.h (100%) rename G3D/{Engine => }/Drivers/OpenGl/OGLDrv.c (100%) rename G3D/{Engine => }/Drivers/OpenGl/OGLDrv.h (100%) rename G3D/{Engine => }/Drivers/OpenGl/OglMisc.c (100%) rename G3D/{Engine => }/Drivers/OpenGl/OglMisc.h (100%) rename G3D/{Engine => }/Drivers/OpenGl/Render.c (100%) rename G3D/{Engine => }/Drivers/OpenGl/Render.h (100%) rename G3D/{Engine => }/Drivers/OpenGl/THandle.c (100%) rename G3D/{Engine => }/Drivers/OpenGl/THandle.h (100%) rename G3D/{Engine => }/Drivers/OpenGl/Win32.c (100%) rename G3D/{Engine => }/Drivers/OpenGl/Win32.h (100%) rename G3D/{Engine => }/Drivers/OpenGl/glext.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv/3dnowspan.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv/REGISTER.H (100%) rename G3D/{Engine => }/Drivers/SoftDrv/RENDER.H (100%) rename G3D/{Engine => }/Drivers/SoftDrv/SAL.H (100%) rename G3D/{Engine => }/Drivers/SoftDrv/SCENE.H (100%) rename G3D/{Engine => }/Drivers/SoftDrv/SOFTDRV.H (100%) rename G3D/{Engine => }/Drivers/SoftDrv/SPAN.H (100%) rename G3D/{Engine => }/Drivers/SoftDrv/SYSTEM.H (100%) rename G3D/{Engine => }/Drivers/SoftDrv/W32SAL.CPP (100%) rename G3D/{Engine => }/Drivers/SoftDrv/amdspan.asm (100%) rename G3D/{Engine => }/Drivers/SoftDrv/dmodes.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/dmodes.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv/drawspan.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/drawspan.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv/register.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/render.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/scene.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/softdrv.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/span.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/system.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/x86span555.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/x86span555.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv/x86span565.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv/x86span565.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/CPUInfo.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/CPUInfo.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DDRAWDisplay.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DDRAWDisplay.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DIBDisplay.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DIBDisplay.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DisplayModeInfo.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DisplayModeInfo.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DrawDecal.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/DrawDecal.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/SWTHandle.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/SWTHandle.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/Softdrv.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/Span.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/SpanBuffer.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/SpanBuffer.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/SpanEdges_Factory.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/Span_AffineLoop.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/Span_Factory.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/TRaster.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/Triangle.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/display.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/display.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/rop.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/softdrv.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/span.c (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/traster.h (100%) rename G3D/{Engine => }/Drivers/SoftDrv2/triangle.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3d_err.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3d_err.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3d_fx.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3d_fx.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3d_main.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3d_main.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3dcache.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3dcache.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3ddrv.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/D3ddrv.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/DDMemMgr.c (100%) rename G3D/{Engine => }/Drivers/WireFrame/DDMemMgr.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/Gspan.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/Gspan.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/Pcache.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/Pcache.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/Readme.now (100%) rename G3D/{Engine => }/Drivers/WireFrame/Render.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/Render.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/Scene.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/Scene.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/THandle.cpp (100%) rename G3D/{Engine => }/Drivers/WireFrame/THandle.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/TPage.h (100%) rename G3D/{Engine => }/Drivers/WireFrame/tpage.cpp (100%) rename G3D/{Engine/Logo/electric.c => Electric.c} (95%) rename G3D/{Engine/Logo/electric.h => Electric.h} (100%) rename G3D/{Engine => }/Engine.c (96%) rename G3D/{Engine => }/Engine.h (96%) delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv.mak delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv.ncb delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv.opt delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsp delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsw delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.ncb delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.opt delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.plg delete mode 100644 G3D/Engine/Drivers/D3D7xDrv/mssccprj.scc delete mode 100644 G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsp delete mode 100644 G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsw delete mode 100644 G3D/Engine/Drivers/D3D8Drv/D3DDriver.ncb delete mode 100644 G3D/Engine/Drivers/D3D8Drv/D3DDriver.opt delete mode 100644 G3D/Engine/Drivers/D3D8Drv/D3DDriver.plg delete mode 100644 G3D/Engine/Drivers/D3DDrv/D3DDrv.dsp delete mode 100644 G3D/Engine/Drivers/D3DDrv/D3DDrv.dsw delete mode 100644 G3D/Engine/Drivers/D3DDrv/D3DDrv.mak delete mode 100644 G3D/Engine/Drivers/D3DDrv/D3DDrv.ncb delete mode 100644 G3D/Engine/Drivers/D3DDrv/D3DDrv.opt delete mode 100644 G3D/Engine/Drivers/D3DDrv/D3DDrv.plg delete mode 100644 G3D/Engine/Drivers/D3DDrv/mssccprj.scc delete mode 100644 G3D/Engine/Drivers/GlideDrv/GlideDrv.dsp delete mode 100644 G3D/Engine/Drivers/GlideDrv/GlideDrv.dsw delete mode 100644 G3D/Engine/Drivers/GlideDrv/GlideDrv.mak delete mode 100644 G3D/Engine/Drivers/GlideDrv/GlideDrv.ncb delete mode 100644 G3D/Engine/Drivers/GlideDrv/GlideDrv.opt delete mode 100644 G3D/Engine/Drivers/GlideDrv/mssccprj.scc delete mode 100644 G3D/Engine/Drivers/OpenGl/OglDrv.dsp delete mode 100644 G3D/Engine/Drivers/OpenGl/OglDrv.dsw delete mode 100644 G3D/Engine/Drivers/SoftDrv/SoftDrv.dsp delete mode 100644 G3D/Engine/Drivers/SoftDrv/SoftDrv.mak delete mode 100644 G3D/Engine/Drivers/SoftDrv/mssccprj.scc delete mode 100644 G3D/Engine/Drivers/SoftDrv2/SoftDrv2.dsp delete mode 100644 G3D/Engine/Drivers/SoftDrv2/SoftDrv2.mak delete mode 100644 G3D/Engine/Drivers/SoftDrv2/mssccprj.scc delete mode 100644 G3D/Engine/Drivers/WireFrame/D3DDrv.dsp delete mode 100644 G3D/Engine/Drivers/WireFrame/D3DDrv.dsw delete mode 100644 G3D/Engine/Drivers/WireFrame/D3DDrv.mak delete mode 100644 G3D/Engine/Drivers/WireFrame/D3DDrv.ncb delete mode 100644 G3D/Engine/Drivers/WireFrame/D3DDrv.opt delete mode 100644 G3D/Engine/Drivers/WireFrame/D3DDrv.plg delete mode 100644 G3D/Engine/Drivers/WireFrame/mssccprj.scc delete mode 100644 G3D/Engine/Sound.c rename G3D/{Engine => }/FontBmp.c (100%) rename G3D/{Engine => }/Genesis3d.c (100%) rename G3D/{Engine/Logo/logo.c => Logo.c} (95%) rename G3D/{Engine/Logo => }/LogoActor.c (100%) rename G3D/{Actor/motion.c => Motion.c} (95%) rename G3D/{Bitmap/Compression/palcreate.c => PALCreate.c} (93%) rename G3D/{Bitmap/Compression/palcreate.h => PALCreate.h} (96%) rename G3D/{Bitmap/Compression/paloptimize.c => PALOptimize.c} (94%) rename G3D/{Bitmap/Compression/paloptimize.h => PALOptimize.h} (96%) rename G3D/{Bitmap/Compression/palettize.c => Palettize.c} (95%) rename G3D/{Bitmap/Compression/palettize.h => Palettize.h} (96%) rename G3D/{Actor/path.c => Path.c} (95%) delete mode 100644 G3D/Physics/PhysicsJoint.h delete mode 100644 G3D/Physics/PhysicsObject.h delete mode 100644 G3D/Physics/PhysicsSystem.h rename G3D/{Physics => }/PhysicsJoint.c (95%) rename G3D/{Physics => }/PhysicsObject.c (96%) rename G3D/{Physics => }/PhysicsSystem.c (96%) rename G3D/{Bitmap => }/PixelFormat.c (96%) rename G3D/{Actor/pose.c => Pose.c} (96%) rename G3D/{Actor/pose.h => Pose.h} (100%) rename G3D/{Engine/Logo/poweredby.c => PoweredBy.c} (100%) rename G3D/{Actor/puppet.c => Puppet.c} (95%) rename G3D/{Actor/puppet.h => Puppet.h} (97%) rename G3D/{Actor => }/QKFrame.c (96%) rename G3D/{Actor => }/QKFrame.h (94%) rename G3D/{Actor/strblock.c => StrBlock.c} (95%) rename G3D/{Actor/strblock.h => StrBlock.h} (96%) rename G3D/{Engine/Logo/streak.c => Streak.c} (100%) rename G3D/{Engine => }/System.c (95%) rename G3D/{Engine => }/System.h (95%) rename G3D/{Actor/tkarray.c => TKArray.c} (96%) rename G3D/{Actor/tkarray.h => TKArray.h} (96%) rename G3D/{Actor/tkevents.c => TKEvents.c} (96%) rename G3D/{Actor/tkevents.h => TKEvents.h} (96%) rename G3D/{Bitmap/Compression/utility.h => Utility.h} (95%) rename G3D/{Actor/vkframe.c => VKFrame.c} (96%) rename G3D/{Actor/vkframe.h => VKFrame.h} (92%) rename G3D/{Engine/Logo => }/WebUrl.c (100%) rename G3D/{Actor => }/XFArray.c (100%) rename G3D/{Actor/xfarray.h => XFArray.h} (97%) rename G3D/{Bitmap/Compression/yuv.c => YUV.c} (95%) rename G3D/{Bitmap/Compression/yuv.h => YUV.h} (97%) diff --git a/CMakeLists.txt b/CMakeLists.txt index efa50ca..43997fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,12 +18,12 @@ MESSAGE ("C-COMPILER: ${CMAKE_C_COMPILER}") MESSAGE ("CXX-COMPILER: ${CMAKE_CXX_COMPILER}") IF (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") MESSAGE ("Unix-like system: ${CMAKE_SYSTEM_NAME}") -SET (CMAKE_CXX_FLAGS "-m32 -std=c++1y -fno-builtin -fdiagnostics-color=always -W -Wall -Wextra -Os") -SET (CMAKE_C_FLAGS "-m32 -std=c11 -fno-builtin -fdiagnostics-color=always -W -Wall -Wextra -Os") +SET (CMAKE_CXX_FLAGS "-m32 -std=c++1y -fPIC -fno-builtin -fdiagnostics-color=always -DNDEBUG -W -Wall -Wextra -Os") +SET (CMAKE_C_FLAGS "-m32 -std=c11 -fPIC -fno-builtin -fdiagnostics-color=always -DNDEBUG -W -Wall -Wextra -Os") ELSEIF (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") MESSAGE ("Windows-like system: ${CMAKE_SYSTEM_NAME}") -SET (CMAKE_CXX_FLAGS "-std=c++1y -W -Wall -Wextra -Os") -SET (CMAKE_C_FLAGS "-std=c11 -W -Wall -Wextra -Os") +SET (CMAKE_CXX_FLAGS "-m32 -std=c++1y -fPIC -fno-builtin -W -Wall -Wextra -Os") +SET (CMAKE_C_FLAGS "-m32 -std=c11 -fPIC -fno-builtin -W -Wall -Wextra -Os") ELSE () MESSAGE (FATAL_ERROR "unsupported system: ${CMAKE_SYSTEM_NAME}") ENDIF () diff --git a/G3D/Engine/Logo/A_CORONA.c b/G3D/ACorona.c similarity index 100% rename from G3D/Engine/Logo/A_CORONA.c rename to G3D/ACorona.c diff --git a/G3D/Engine/Logo/A_STREAK.c b/G3D/AStreak.c similarity index 100% rename from G3D/Engine/Logo/A_STREAK.c rename to G3D/AStreak.c diff --git a/G3D/Actor/actor.c b/G3D/Actor.c similarity index 96% rename from G3D/Actor/actor.c rename to G3D/Actor.c index 5d128f3..c740f75 100644 --- a/G3D/Actor/actor.c +++ b/G3D/Actor.c @@ -34,7 +34,7 @@ #include // fabs() #include //sscanf -#include "world.h" // to expose _Render apis in actor.h +#include "World.h" // to expose _Render apis in actor.h #include "Actor.h" #include "Ram.h" @@ -42,7 +42,7 @@ #include "Body.h" #include "Motion.h" #include "ErrorLog.h" -#include "strblock.h" +#include "StrBlock.h" #ifdef _DEBUG #include #endif @@ -417,7 +417,8 @@ GENESISAPI geBoolean GENESISCC geActor_DestroyDirect(geActor **pA) gePose_Destroy( &( CurrentActor->Pose ) ); geMotion_Destroy(&(CurrentActor->CueMotion)); - assert( _CrtIsValidPointer( &CurrentActor->ActorDefinition, sizeof(CurrentActor->ActorDefinition), FALSE ) ); + // FIXME: _CrtIsValidHeapPointer ? + //assert( _CrtIsValidPointer( &CurrentActor->ActorDefinition, sizeof(CurrentActor->ActorDefinition), FALSE ) ); if(geActor_DefIsValid(CurrentActor->ActorDefinition)==GE_TRUE ) { diff --git a/G3D/Actor.h b/G3D/Actor.h index e840384..7e947e6 100644 --- a/G3D/Actor.h +++ b/G3D/Actor.h @@ -91,7 +91,7 @@ #include "Motion.h" #ifdef GE_WORLD_H -#include "camera.h" +#include "Camera.h" #include "Frustum.h" #endif diff --git a/G3D/Actor/actor.h b/G3D/Actor/actor.h deleted file mode 100644 index 82cf213..0000000 --- a/G3D/Actor/actor.h +++ /dev/null @@ -1,478 +0,0 @@ -/****************************************************************************************/ -/* ACTOR.H */ -/* */ -/* Author: Mike Sandige */ -/* Description: Actor interface */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ -/* Actor - - This object is designed to support character animation. - There are two basic objects to deal with. - - Actor Definition (geActor_Def) - A geActor_Def embodies the geometry (polygon, and bone information), - and a library of motions that can be applied to that geometry. - - Actor - A geActor is an instance of an actor definition. The definition is used for - the geometry, but all additional settings, such as the bone pose, lighting information, - and cuing information is unique for a geActor. -// GENESIS_PRIVATE_API - An Actor Definition is created either from an existing Actor Definition file, or from scratch by - first creating a geBody and geMotions and selecting these into an Actor. If the Actor Definition - is constructed from scratch, the objects selected into it (via SetBody and AddMotion) are - then 'owned' by the actor and will be destroyed along with the Actor when it is destroyed. - Of course, when the Actor is loaded from a file, the Body and Motion it creates as it is - loaded are cleaned up when the Actor is destroyed. - - Once an Actor is created, prepare it for rendering and animating by calling - Actor_RenderPrep(). This must be called (and it must succeed) before any render or - pose setting functions can be called. -// GENESIS_PUBLIC_API - - There are two ways to use an Actor. - Direct Control - One method is to directly control the skeleton configuration. Use _SetPose() to set its - skeleton using a geMotion animation. The pose is positioned in world space relative to the - transform given in SetPose(). Whenever a new skeleton pose is required, call _SetPose() - to reposition the skeleton for a new point in time. - - More complex positioning can be achieved by blending more than one animation. Use - _BlendPose() after a _SetPose() to blend the second geMotion into the first. Additional - blends can be applied by additional _BlendPose() calls. Each blend is performed on the - the existing skeleton (the results of any previous blends). - Cuing - Another method is to 'cue' up motions that are applied with parameterized blending over time. - A cued motion takes effect 'now' in time. The Actor advances in time and repositions itself - according to its currently cued motions with a call to _AnimationStep(). AnimationStep() - redefines what the actor thinks 'now' is. This causes historical cues to be forgotten, and - motions that are no longer valid are cleaned up. AnimationTestStep() can be used to position - the actor for potential queries with its currently cued motions at some arbitrary future time - - relative to the last AnimationTestStep() call. AnimationNudge() applies a given transform - 'instantly' to the current actor's cue list. This is usefull for moving the actor as a - result of a collision with another object. - - If a motion contains joint information that does not exactly match the Actor's skeleton - joints, only the joints that match by name are applied. So a geMotion can be applied to - a portion of the Actor, or a geMotion that has more joint information than the skeleton can - be applied and the extra joint information is ignored. - - Examples of this: If the Actor is a biped and has no tail, but the motion is for a - biped with a tail, the geMotion can be applied, but the tail information will be ignored. - Also if there is a geMotion for only a left arm, it can be applied and it will only affect - the left arm of the Actor, and consequently its left hand and fingers, but no other - bones that are not children of the affected bones will be changed. - - -*/ -#ifndef GE_ACTOR_H -#define GE_ACTOR_H - -#include "genesis.h" -#include "basetype.h" -#include "extbox.h" -#include "bitmap.h" - -#include "Motion.h" - -#ifdef GE_WORLD_H -#include "camera.h" -#include "Frustum.h" -#endif - -#include "Body.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// GENESIS_PUBLIC_APIS - -#ifndef GE_ACTOR_ENUMS -#define GE_ACTOR_ENUMS -typedef enum -{ - GE_ACTOR_BLEND_LINEAR, // Treats the blending amount as a linear value - GE_ACTOR_BLEND_HERMITE // Applies a parametric smoothing curve to the blending amount - // so that a linear change in BlendAmount parameters will - // result in a smooth (non-linear) change in blending. -} geActor_BlendingType; - -#endif - -typedef struct geActor geActor; // an instance of an actor -typedef struct geActor_Def geActor_Def; // the deinition of an actor's geometry/bone structure - - -// GENESIS_PRIVATE_APIS - -//--------------------------------------------------------------------------------- -// Creation/Destruction functions -//--------------------------------------------------------------------------------- - // Create an 'empty' Actor Definition. -GENESISAPI geActor_Def *GENESISCC geActor_DefCreate(void); - - // Create an Actor Definition from a file image. -GENESISAPI geActor_Def *GENESISCC geActor_DefCreateFromFile(geVFile *pFile); - - // Create an additional reference (owner) for the Actor_Definition -GENESISAPI void GENESISCC geActor_DefCreateRef(geActor_Def *pActorDefinition); - - // Destroy a geActor_Def (its geBody and its geMotions) Actors that rely on this definition become invalid. - // can fail if there are actors still referencing this definition. -GENESISAPI geBoolean GENESISCC geActor_DefDestroy(geActor_Def **pActorDefinition); - - // Create an Actor instance associated with the given Actor Definition -GENESISAPI geActor *GENESISCC geActor_Create(geActor_Def *ActorDefinition); - - // Create an additional reference (owner) for the Actor -GENESISAPI void GENESISCC geActor_CreateRef(geActor *Actor); - - // Give the Actor Definition a Body. geActor becomes responsible for its destruction. - // sets up default materials as referenced by the Body. -GENESISAPI geBoolean GENESISCC geActor_SetBody( geActor_Def *ActorDefinition, geBody *geBodyGeometry); - - // Adds a geMotion to the Actor Definition's library. The ActorDefinition becomes responsible for its destruction. - // returns the library index to the new geMotion. -GENESISAPI geBoolean GENESISCC geActor_AddMotion(geActor_Def *ActorDefinition, geMotion *M, int *Index); - - // Destroy an Actor. -GENESISAPI geBoolean GENESISCC geActor_Destroy(geActor **pA); - -GENESISAPI geBoolean GENESISCC geActor_DestroyDirect(geActor **pA); - -GENESISAPI geBoolean GENESISCC geActor_DefIsValid(const geActor_Def *A); -GENESISAPI geBoolean GENESISCC geActor_IsValid(const geActor *A); - -// GENESIS_PUBLIC_APIS -//--------------------------------------------------------------------------------- -// Queries -//--------------------------------------------------------------------------------- -// GENESIS_PRIVATE_APIS - - // In general: Objects retuned from Get functions should not not be destroyed. - // if ownership is desired, call the objects _CreateRef() function to create another owner. - // (An 'owner' has access to the object regardless of the number of other owners, and - // an owner must call the object's _Destroy() function to relinquish ownership ) - - // Returns the Actor Definition associated with Actor A -GENESISAPI geActor_Def *GENESISCC geActor_GetActorDef(const geActor *A); - - // Writes an existing geActor to a file image. Returns GE_TRUE on success, GE_FALSE on failure. -GENESISAPI geBoolean GENESISCC geActor_DefWriteToFile(const geActor_Def *A, geVFile *pFile); - - // Returns a geBody pointer from the geActor -GENESISAPI geBody *GENESISCC geActor_GetBody(const geActor_Def *ActorDefinition); - - // Returns GE_TRUE if the actor definition has a bone named 'Name' -GENESISAPI geBoolean GENESISCC geActor_DefHasBoneNamed(const geActor_Def *Ad, const char *Name ); - - // Selects a blending type. BlendingType only affects the meaning of the - // BlendAmount parameter for the blend functions. Can be changed anytime. -GENESISAPI void GENESISCC geActor_SetBlendingType( geActor *A, geActor_BlendingType BlendingType ); - -// GENESIS_PUBLIC_APIS - - // Returns the number of geMotions in the geActors geMotion library. -GENESISAPI int GENESISCC geActor_GetMotionCount(const geActor_Def *ActorDefinition); - - // Returns a geMotion pointer from the geActors geMotion library - // This is an aliased pointer - Not a copy. Changes to this motion will be reflected - // in the actor. Destroying this return motion will confuse the actor. - // Index must be in range [0..geActor_GetMotionCount-1] -GENESISAPI geMotion *GENESISCC geActor_GetMotionByIndex(const geActor_Def *ActorDefinition, int Index ); - - // Returns a geMotion pointer from the geActors geMotion library - // This is an aliased pointer - Not a copy. Changes to this motion will be reflected - // in the actor. Destroying this return motion will confuse the actor. - // if there is no motion that matches the given name, the return value will be NULL -GENESISAPI geMotion *GENESISCC geActor_GetMotionByName(const geActor_Def *ActorDefinition, const char *Name ); - - // Returns a motion name given an ActorDef and a motion index. -GENESISAPI const char *GENESISCC geActor_GetMotionName(const geActor_Def *ActorDefinition, int Index ); - - // Returns the number of materials for an instance of an actor. -GENESISAPI int GENESISCC geActor_GetMaterialCount(const geActor *A); - - // Returns the current material for an instance of an actor -GENESISAPI geBoolean GENESISCC geActor_GetMaterial(const geActor *Actor, int MaterialIndex, - geBitmap **Bitmap, geFloat *Red, geFloat *Green, geFloat *Blue); - - // Allows a material to be overriden in an actor instance -GENESISAPI geBoolean GENESISCC geActor_SetMaterial(geActor *Actor, int MaterialIndex, - geBitmap *Bitmap, geFloat Red, geFloat Green, geFloat Blue); - - - - // Gets the current transform for a single bone in A. (actor space->world space transform) - // with a NULL BoneName, this returns the current 'root' transform -GENESISAPI geBoolean GENESISCC geActor_GetBoneTransform(const geActor *A, const char *BoneName, geXForm3d *Transform); - - // Gets the extent box (axial-aligned bounding box) for a given bone (for the current pose) - // if BoneName is NULL, gets the a general bounding box from the body of the actor if it has been set. -GENESISAPI geBoolean GENESISCC geActor_GetBoneExtBox(const geActor *A, - const char *BoneName,geExtBox *ExtBox); - - // Gets the non-axial-aligned bounding box for a given bone (for the current pose) - // The box is specified by a corner, and - // a non-normalized orientation transform. Add DX,DY,DZ components - // of the orientation to get other corners of the box - // if BoneName is NULL, gets the a general bounding box from the body of the actor if it has been set. -GENESISAPI geBoolean GENESISCC geActor_GetBoneBoundingBox(const geActor *A, - const char *BoneName, - geVec3d *Corner, - geVec3d *DX, - geVec3d *DY, - geVec3d *DZ); - - // Gets the current axial-aligned bounding box for an actor's bone configuration - // takes all bones into account -GENESISAPI geBoolean GENESISCC geActor_GetDynamicExtBox( const geActor *A, geExtBox *ExtBox); - - // Gets an assigned general non changing bounding box from the actor -GENESISAPI geBoolean GENESISCC geActor_GetExtBox(const geActor *A, geExtBox *ExtBox); - - // Sets an assigned general non changing bounding box from the actor -GENESISAPI geBoolean GENESISCC geActor_SetExtBox(geActor *A, const geExtBox *ExtBox, - const char *CenterBoxOnThisNamedBone); // NULL uses root position of actor - - // Gets the rendering hint bounding box from the actor - // if the RenderHintExtBox is disabled, Enabled is GE_FALSE, and the box returned has zero dimensions, - // centered at the root position of the actor. If the RenderHintExtBox is enabled, Enabled is - // GE_TRUE, and the box returned is the one set with _SetRenderHintExtBox, offset by the - // bone position of the bone named in _SetRenderHintExtBox(). -GENESISAPI geBoolean GENESISCC geActor_GetRenderHintExtBox(const geActor *A, geExtBox *Box, geBoolean *Enabled); - - // Sets a rendering hint bounding box from the actor. Increases performance by - // enabling the rendering of the actor to occur only if the box is visible. - // If the box is not visible, a detailed analysis of the actor's current geometry is avoided. - // This does allow errors to occur: - // If the actor has a bit of geometry that extends outside this box for some - // animation, that extended geometry may not be drawn, if the box if off-screen. - // If the render hint box is not set, the engine will make no conservative assumptions - // about the visibility of an actor - it will always be drawn if any portion of it is - // visible. - // To attach the box to the 'root' bone, pass NULL for CenterBoxOnThisNamedBone - // For disabling the hint box: (disabled is default) pass Box with zero mins and maxs -GENESISAPI geBoolean GENESISCC geActor_SetRenderHintExtBox(geActor *A, const geExtBox *Box, - const char *CenterBoxOnThisNamedBone ); - - - // Returns the pointer which was set with geActor_SetUserData. NULL if not set. -GENESISAPI void *GENESISCC geActor_GetUserData(const geActor *A); - - // Sets the actors user data pointer to the given value. For clients only. -GENESISAPI void GENESISCC geActor_SetUserData(geActor *A, void *UserData); - - -//-------------------------------------------------------------------------------- -// Posing and Rendering -//-------------------------------------------------------------------------------- - -// GENESIS_PRIVATE_APIS - -#ifdef GE_WORLD_H - // Prepares the geActor for rendering and posing. Call Once once the actor is fully created. - // Must be called prior to render/pose/setworldtransform -geBoolean GENESISCC geActor_RenderPrep( geActor *A, geWorld *World); - - // Draws the geActor. (RenderPrep must be called first) -geBoolean GENESISCC geActor_RenderThroughFrustum(const geActor *A, geEngine *Engine, geWorld *World, geCamera *Camera, Frustum_Info *FInfo); -geBoolean GENESISCC geActor_Render(const geActor *A, geEngine *Engine, geWorld *World, geCamera *Camera); -#endif - -// GENESIS_PUBLIC_APIS - - // Poses the actor in its default pose - // Transform is where to position the root for this pose. - // if Transform is NULL, the root for the pose is assumed to be the root of the actor. -GENESISAPI void GENESISCC geActor_ClearPose(geActor *A, const geXForm3d *Transform); - - // Poses the actor using given motion M at a time offset of Time - // Transform is where to position the root for this pose. - // if Transform is NULL, the root for the pose is assumed to be the root of the actor. -GENESISAPI void GENESISCC geActor_SetPose(geActor *A, const geMotion *Motion, geFloat Time, const geXForm3d *Transform); - - // Blends the current pose of the geActor with - // a new pose using motion M at a time offset of Time - // A BlendAmount of 0 will result in the existing pose, A BlendAmount of 1 will - // result in the new pose from M. The BlendingType set by _SetBlendingType() determines - // the blending function between 0 and 1 - // Transform is where to position the root for this pose. - // if Transform is NULL, the root for the pose is assumed to be the root of the actor. -GENESISAPI void GENESISCC geActor_BlendPose(geActor *A, const geMotion *Motion, geFloat Time, - const geXForm3d *Transform, geFloat BlendAmount); - - -GENESISAPI geBoolean GENESISCC geActor_GetBoneAttachment(const geActor *A, const char *BoneName, geXForm3d *Transform); -GENESISAPI geBoolean GENESISCC geActor_SetBoneAttachment(geActor *A, const char *BoneName, geXForm3d *Transform); - -// GENESIS_PRIVATE_APIS - -GENESISAPI geBoolean GENESISCC geActor_Attach( geActor *Slave, const char *SlaveBoneName, - const geActor *Master, const char *MasterBoneName, - const geXForm3d *Attachment); - -GENESISAPI void GENESISCC geActor_Detach(geActor *Slave); - -//Environmental mapping... -GENESISAPI void GENESISCC geActor_SetEnvironOptions( geActor *A, geEnvironmentOptions *opts ); - -GENESISAPI geEnvironmentOptions GENESISCC geActor_GetEnvironOptions( geActor *A ); - -// GENESIS_PUBLIC_APIS -GENESISAPI geBoolean GENESISCC geActor_SetLightingOptions(geActor *A, - geBoolean UseFillLight, // GE_TRUE or GE_FALSE - const geVec3d *FillLightNormal, // normalized vector - geFloat FillLightRed, // 0 .. 255 - geFloat FillLightGreen, // 0 .. 255 - geFloat FillLightBlue, // 0 .. 255 - geFloat AmbientLightRed, // 0 .. 255 - geFloat AmbientLightGreen, // 0 .. 255 - geFloat AmbientLightBlue, // 0 .. 255 - geBoolean AmbientLightFromFloor, // GE_TRUE or GE_FALSE - int MaximumDynamicLightsToUse, // 0 for none - const char *LightReferenceBoneName, //NULL for root - geBoolean PerBoneLighting); - // if GE_TRUE, then dynamic lighting attenuation and direction is computed - // for each bone. if GE_FALSE, then the computations are relative to the - // single bone named by the LightReferenceBoneName - -GENESISAPI geBoolean GENESISCC geActor_GetLightingOptions(const geActor *A, - geBoolean *UseFillLight, // GE_TRUE or GE_FALSE - geVec3d *FillLightNormal, // normalized vector - geFloat *FillLightRed, // 0 .. 255 - geFloat *FillLightGreen, // 0 .. 255 - geFloat *FillLightBlue, // 0 .. 255 - geFloat *AmbientLightRed, // 0 .. 255 - geFloat *AmbientLightGreen, // 0 .. 255 - geFloat *AmbientLightBlue, // 0 .. 255 - geBoolean *UseAmbientLightFromFloor,// GE_TRUE or GE_FALSE - int *MaximumDynamicLightsToUse, - const char **LightReferenceBoneName, - geBoolean *PerBoneLighting); // NULL for root - - -GENESISAPI void GENESISCC geActor_SetScale(geActor *A, geFloat ScaleX,geFloat ScaleY,geFloat ScaleZ); - -// LWM_ACTOR_RENDERING: -GENESISAPI geFloat GENESISCC geActor_GetAlpha(const geActor *A) ; -// LWM_ACTOR_RENDERING: -GENESISAPI void GENESISCC geActor_SetAlpha(geActor *A, geFloat Alpha) ; - -GENESISAPI geBoolean GENESISCC geActor_GetStaticLightingOptions(const geActor *Actor, geBoolean *UseAmbientLightFromStaticLights, geBoolean *TestRayCollision, int *MaxStaticLightsToUse ); -GENESISAPI geBoolean GENESISCC geActor_SetStaticLightingOptions(geActor *A, - geBoolean AmbientLightFromStaticLights, - geBoolean TestRayCollision, - int MaxStaticLightsToUse - ); - -GENESISAPI geBoolean GENESISCC geActor_SetShadow(geActor *A, - geBoolean DoShadow, - geFloat Radius, - const geBitmap *ShadowMap, - const char * BoneName); - -// Animation Cuing API: -// high level Actor animation: The principle is that motions can be applied to an actor -// and the actor will keep track of which motions are currently appropriate. Call -// _AnimationStep() to compute a new pose for an elapsed time interval. The new pose -// will take into account all motions that are 'currently' cued up to be set or blended. - - - // cue up a new motion. The motion begins at the current time. The motion can be - // blended in or out over time and time scaled. If the return value is GE_FALSE, the - // animation was not cued up (failure implies Actor is incompletely initialized). -GENESISAPI geBoolean GENESISCC geActor_AnimationCue( - geActor *A, // actor to apply animation to - geMotion *Motion, // motion to Cue - geFloat TimeScaleFactor, // time scale to apply to cued motion - geFloat TimeIntoMotion, // time offset to begin motion with (Not TimeScaled) - geFloat BlendTime, // time to apply a blend. - geFloat BlendFromAmount, // blend value at current time - geFloat BlendToAmount, // blend value after BlendTime time has elapsed - const geXForm3d *MotionTransform); // local transform to adjust motion by (NULL implies NO transform) - - // removes the last animation cue that was cued up. Can be called repeatedly to successively - // remove older and older cues. Returns GE_TRUE when a cue was removed, GE_FALSE if there - // are no cues to remove. -GENESISAPI geBoolean GENESISCC geActor_AnimationRemoveLastCue( geActor *A ); - - // applies a time step to actor A. re-poses the actor according to all currently applicable - // Animation Cues. (failure implies Actor is incompletely initialized) -GENESISAPI geBoolean GENESISCC geActor_AnimationStep(geActor *A, geFloat DeltaTime ); - - // applies a 'temporary' time step to actor A. re-poses the actor according to all - // currently appliciable cues. (failure implies Actor is incompletely initialized) - // DeltaTime is always relative to the the last AnimationStep() -GENESISAPI geBoolean GENESISCC geActor_AnimationTestStep(geActor *A, geFloat DeltaTime); - - // optimized version of geActor_AnimationStep. Limits calculations to the bone named BoneName, and it's - // parents. BoneName will be correctly computed, but the other bones will be wrong. This is usefull for - // moving and animating an actor that is not actually visible. Rendering and queries will be 'optimized' - // until the actor is given any pose or animation that doesn't go through geActor_AnimationStepBoneOptimized() or - // geActor_AnimationTestStepBoneOptimized(). BoneName can be NULL to compute only 'root' bone. -GENESISAPI geBoolean GENESISCC geActor_AnimationStepBoneOptimized(geActor *A, geFloat DeltaTime, const char *BoneName ); - - // optimized version of geActor_AnimationTestStep. Limits calculations to the bone named BoneName, and it's - // parents. BoneName will be correctly computed, but the other bones will be wrong. This is usefull for - // moving and animating an actor that is not actually visible. Rendering and queries will be 'optimized' - // until the actor is given any pose or animation that doesn't go through geActor_AnimationStepBoneOptimized() or - // geActor_AnimationTestStepBoneOptimized(). BoneName can be NULL to compute only 'root' bone. -GENESISAPI geBoolean GENESISCC geActor_AnimationTestStepBoneOptimized(geActor *A, geFloat DeltaTime, const char *BoneName); - - - // applies an 'immediate' offset to the animated actor -GENESISAPI geBoolean GENESISCC geActor_AnimationNudge(geActor *A, geXForm3d *Offset); - - -GENESISAPI geBoolean GENESISCC geActor_GetAnimationEvent(geActor *A, - const char **ppEventString); // Return data, if return value is GE_TRUE - - // returns number of actors that are currently created. -GENESISAPI int GENESISCC geActor_GetCount(void); - -// eaa3 07/21/2000 Mods for detailed collision detection - -GENESISAPI geBoolean GENESISCC geActor_GetBoneExtBoxByIndex( - const geActor *A, - int BoneIndex, - geExtBox *ExtBox); - -GENESISAPI geBoolean GENESISCC geActor_GetBoneTransformByIndex(const geActor *A, int BoneIndex, geXForm3d *Transform); - -GENESISAPI int geActor_GetBoneCount(const geActor *A); - -//MRB BEGIN -// Unlike geActor_GetExtBox, this gets the bounding box in non-world coordinates. -// Whatever you put in with geActor_SetExtBox, you get out with this function. -GENESISAPI void GENESISCC geActor_GetNonWorldExtBox(const geActor *A, geExtBox *ExtBox); -GENESISAPI void GENESISCC geActor_GetPosition(const geActor *A, geVec3d *Pos); -//MRB END - -// GENESIS_PRIVATE_APIS - // call setscale and setshadow after preparing the actor for rendering (renderprep) - - -#ifdef __cplusplus -} -#endif - - -#endif - diff --git a/G3D/Actor/body.h b/G3D/Actor/body.h deleted file mode 100644 index 186e3fc..0000000 --- a/G3D/Actor/body.h +++ /dev/null @@ -1,136 +0,0 @@ -/****************************************************************************************/ -/* BODY.H */ -/* */ -/* Author: Mike Sandige */ -/* Description: Actor body interface. */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ -#ifndef GE_BODY_H -#define GE_BODY_H - -/* This object is for managing the data associated with a skeletal-based mesh, - a 'body'. - This object holds the geometry for the body and the list of materials needed. -*/ - -#include "basetype.h" -#include "xform3d.h" -#include "vfile.h" -#include "bitmap.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define GE_BODY_NUMBER_OF_LOD (4) // 0 is highest detail -#define GE_BODY_NO_PARENT_BONE (-1) -#define GE_BODY_HIGHEST_LOD (0) - -#define GE_BODY_ROOT (-1) // for specifying 'root' bounding box. - -typedef struct geBody geBody; - - - -geBody *GENESISCC geBody_Create(void); - -void GENESISCC geBody_Destroy(geBody **B); - -geBoolean GENESISCC geBody_IsValid(const geBody *B); - - -geBoolean GENESISCC geBody_GetGeometryStats(const geBody *B, int lod, int *Vertices, int *Faces, int *Normals); - -geBoolean GENESISCC geBody_AddFace( geBody *B, - const geVec3d *Vertex1, const geVec3d *Normal1, - geFloat U1, geFloat V1, int BoneIndex1, - const geVec3d *Vertex2, const geVec3d *Normal2, - geFloat U2, geFloat V2, int BoneIndex2, - const geVec3d *Vertex3, const geVec3d *Normal3, - geFloat U3, geFloat V3, int BoneIndex3, - int MaterialIndex); - - // Bitmap is added to body. It's reference count is increased. Caller still owns a pointer - // to the bitmap, and is responsible for destroying it. -geBoolean GENESISCC geBody_AddMaterial( geBody *B, - const char *MaterialName, - geBitmap *Bitmap, - geFloat Red, - geFloat Green, - geFloat Blue, - int *MaterialIndex); - - // returned bitmap is a pointer to the bitmap in the body's list. It may not be destroyed. - // if caller would like to 'own' a copy of that bitmap pointer, it should call geBitmap_CreateRef() -geBoolean GENESISCC geBody_GetMaterial(const geBody *Body, int MaterialIndex, - const char **MaterialName, - geBitmap **Bitmap, geFloat *Red, geFloat *Green, geFloat *Blue); - - // Bitmap is set into the body. It's reference count is increased. Caller still owns a pointer - // to the bitmap, and is responsible for destroying it. -geBoolean GENESISCC geBody_SetMaterial(geBody *Body, int MaterialIndex, - geBitmap *Bitmap, geFloat Red, geFloat Green, geFloat Blue); - -int GENESISCC geBody_GetMaterialCount(const geBody *B); - -geBoolean GENESISCC geBody_AddBone( geBody *B, - int ParentBoneIndex, - const char *BoneName, - const geXForm3d *AttachmentMatrix, - int *BoneIndex); - -geBoolean GENESISCC geBody_ComputeLevelsOfDetail( geBody *B ,int Levels); - -int GENESISCC geBody_GetBoneCount(const geBody *B); - -void GENESISCC geBody_GetBone( const geBody *B, - int BoneIndex, - const char **BoneName, - geXForm3d *Attachment, - int *ParentBoneIndex); - -int32 GENESISCC geBody_GetBoneNameChecksum(const geBody *B); - -void GENESISCC geBody_SetBoundingBox( geBody *B, - int BoneIndex, // GE_BODY_ROOT for specifing 'root' bounding box. - const geVec3d *MinimumBoxCorner, - const geVec3d *MaximumBoxCorner); - - -geBoolean GENESISCC geBody_GetBoundingBox( const geBody *B, - int BoneIndex, // GE_BODY_ROOT for specifing 'root' bounding box. - geVec3d *MinimumBoxCorner, - geVec3d *MaximumBoxCorner); - -geBoolean GENESISCC geBody_GetBoneByName(const geBody* B, - const char* BoneName, - int* pBoneIndex, - geXForm3d* Attachment, - int* pParentBoneIndex); - -geBoolean GENESISCC geBody_WriteToFile(const geBody *B, geVFile *pFile); -geBody *GENESISCC geBody_CreateFromFile(geVFile *pFile); - - - - -#ifdef __cplusplus -} -#endif - -#endif - \ No newline at end of file diff --git a/G3D/Actor/motion.h b/G3D/Actor/motion.h deleted file mode 100644 index de4fbea..0000000 --- a/G3D/Actor/motion.h +++ /dev/null @@ -1,180 +0,0 @@ -/****************************************************************************************/ -/* MOTION.H */ -/* */ -/* Author: Mike Sandige */ -/* Description: Motion interface. */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ -#ifndef GE_MOTION_H -#define GE_MOTION_H - -/* motion - - This object is a list of named Path objects - -*/ - -#include -#include "basetype.h" -#include "path.h" -#include "vfile.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// GENESIS_PUBLIC_APIS -typedef struct geMotion geMotion; - -GENESISAPI geMotion *GENESISCC geMotion_Create(geBoolean ManageNames); - -GENESISAPI void GENESISCC geMotion_Destroy(geMotion **PM); - -// GENESIS_PRIVATE_APIS - -GENESISAPI geBoolean GENESISCC geMotion_IsValid(const geMotion *M); - - // AddPath adds a reference of P to the motion M. Ownership is shared - The caller must destroy P. -GENESISAPI geBoolean GENESISCC geMotion_AddPath(geMotion *M, gePath *P,const char *Name,int *Index); - -GENESISAPI geBoolean GENESISCC geMotion_HasNames(const geMotion *M); -GENESISAPI int32 GENESISCC geMotion_GetNameChecksum(const geMotion *M); - -GENESISAPI geBoolean GENESISCC geMotion_RemoveNames(geMotion *M); - -GENESISAPI void GENESISCC geMotion_SampleChannels(const geMotion *M, int PathIndex, geFloat Time, geQuaternion *Rotation, geVec3d *Translation); -GENESISAPI geBoolean GENESISCC geMotion_SampleChannelsNamed(const geMotion *M, const char *PathName, geFloat Time, geQuaternion *Rotation, geVec3d *Translation); - -GENESISAPI void GENESISCC geMotion_Sample(const geMotion *M, int PathIndex, geFloat Time, geXForm3d *Transform); -GENESISAPI geBoolean GENESISCC geMotion_SampleNamed(const geMotion *M, const char *PathName, geFloat Time, geXForm3d *Transform); - - // the returned Paths from _Get functions should not be destroyed. - // if ownership is desired, call gePath_CreateRef() to create another owner. - // an 'owner' has access to the object regardless of the number of other owners, and - // an owner must call the object's destroy method to relinquish ownership -GENESISAPI gePath *GENESISCC geMotion_GetPathNamed(const geMotion *M,const char *Name); -GENESISAPI const char *GENESISCC geMotion_GetNameOfPath(const geMotion *M, int Index); - -// GENESIS_PUBLIC_APIS -GENESISAPI gePath *GENESISCC geMotion_GetPath(const geMotion *M,int Index); -GENESISAPI int GENESISCC geMotion_GetPathCount(const geMotion *M); - - -GENESISAPI geBoolean GENESISCC geMotion_SetName(geMotion *M, const char * Name); -GENESISAPI const char *GENESISCC geMotion_GetName(const geMotion *M); - -// GENESIS_PRIVATE_APIS - - // support for compound motions. A motion can either have sub-motions, or be single motion. - // these functions support motions that have sub-motions. -GENESISAPI int GENESISCC geMotion_GetSubMotionCount(const geMotion*M); - - // the returned motions from these _Get functions should not be destroyed. - // if ownership is desired, call geMotion_CreateRef() to create another owner. - // an 'owner' has access to the object regardless of the number of other owners, and - // an owner must call the object's destroy method to relinquish ownership -GENESISAPI geMotion *GENESISCC geMotion_GetSubMotion(const geMotion *M,int Index); -GENESISAPI geMotion *GENESISCC geMotion_GetSubMotionNamed(const geMotion *M,const char *Name); -GENESISAPI geBoolean GENESISCC geMotion_AddSubMotion( - geMotion *ParentMotion, - geFloat TimeScale, // Scale factor for this submotion - geFloat TimeOffset, // Time in parent motion when submotion should start - geMotion *SubMotion, - geFloat StartTime, // Blend start time (relative to submotion) - geFloat StartMagnitude, // Blend start magnitude (0..1) - geFloat EndTime, // Blend ending time (relative to submotion) - geFloat EndMagnitude, // Blend ending magnitude (0..1) - const geXForm3d *Transform, // Base transform to apply to this submotion - int *Index); // returned motion index - -GENESISAPI geMotion *GENESISCC geMotion_RemoveSubMotion(geMotion *ParentMotion, int SubMotionIndex); - -// Get/Set submotion time offset. The time offset is the offset into the -// compound (parent) motion at which the submotion should start. -GENESISAPI geFloat GENESISCC geMotion_GetTimeOffset( const geMotion *M,int SubMotionIndex ); -GENESISAPI geBoolean GENESISCC geMotion_SetTimeOffset( geMotion *M,int SubMotionIndex,geFloat TimeOffset ); - -// Get/Set submotion time scale. Time scaling is applied to the submotion after the TimeOffset -// is applied. The formula is: (CurrentTime - TimeOffset) * TimeScale -GENESISAPI geFloat GENESISCC geMotion_GetTimeScale( const geMotion *M,int SubMotionIndex ); -GENESISAPI geBoolean GENESISCC geMotion_SetTimeScale( geMotion *M,int SubMotionIndex,geFloat TimeScale ); - -// Get blending amount for a particular submotion. The Time parameter is parent-relative. -GENESISAPI geFloat GENESISCC geMotion_GetBlendAmount( const geMotion *M, int SubMotionIndex, geFloat Time); - -// Get/Set blending path. The keyframe times in the blend path are relative to the submotion. -GENESISAPI gePath *GENESISCC geMotion_GetBlendPath( const geMotion *M,int SubMotionIndex ); -GENESISAPI geBoolean GENESISCC geMotion_SetBlendPath( geMotion *M,int SubMotionIndex, gePath *Blend ); - -GENESISAPI const geXForm3d *GENESISCC geMotion_GetBaseTransform( const geMotion *M,int SubMotionIndex ); -GENESISAPI geBoolean GENESISCC geMotion_SetBaseTransform( geMotion *M,int SubMotionIndex, geXForm3d *BaseTransform ); -GENESISAPI geBoolean GENESISCC geMotion_GetTransform(const geMotion *M, geFloat Time, geXForm3d *Transform); -// GENESIS_PUBLIC_APIS - - // gets time of first key and time of last key (as if motion did not loop) - // if there are no paths in the motion: returns GE_FALSE and times are not set - // otherwise returns GE_TRUE - // - // For a compound motion, GetTimeExtents will return the extents of the scaled submotions. - // For a single motion, no scaling is applied. -GENESISAPI geBoolean GENESISCC geMotion_GetTimeExtents(const geMotion *M,geFloat *StartTime,geFloat *EndTime); - -// Only one event is allowed per time key. - -GENESISAPI geBoolean GENESISCC geMotion_InsertEvent(geMotion *M, geFloat tKey, const char* String); - // Inserts the new event and corresponding string. - -GENESISAPI geBoolean GENESISCC geMotion_DeleteEvent(geMotion *M, geFloat tKey); - // Deletes the event - -GENESISAPI void GENESISCC geMotion_SetupEventIterator( - geMotion *M, - geFloat StartTime, // Inclusive search start - geFloat EndTime); // Non-inclusive search stop - // For searching or querying the array for events between two times - // times are compaired [StartTime,EndTime), '[' is inclusive, ')' is - // non-inclusive. This prepares the geMotion_GetNextEvent() function. - -GENESISAPI geBoolean GENESISCC geMotion_GetNextEvent( - geMotion *M, // Event list to iterate - geFloat *pTime, // Return time, if found - const char **ppEventString); // Return data, if found - // Iterates from StartTime to EndTime as setup in geMotion_SetupEventIterator() - // and for each event between these times [StartTime,EndTime) - // this function will return Time and EventString returned for that event - // and the iterator will be positioned for the next search. When there - // are no more events in the range, this function will return GE_FALSE (Time - // will be 0 and ppEventString will be empty). - -GENESISAPI geBoolean GENESISCC geMotion_GetEventExtents(const geMotion *M, - geFloat *FirstEventTime, - geFloat *LastEventTime); - // returns the time associated with the first and last events - // returns GE_FALSE if there are no events (and Times are not set) - - -// GENESIS_PRIVATE_APIS -GENESISAPI geMotion *GENESISCC geMotion_CreateFromFile(geVFile *f); -GENESISAPI geBoolean GENESISCC geMotion_WriteToFile(const geMotion *M, geVFile *f); -GENESISAPI geBoolean GENESISCC geMotion_WriteToBinaryFile(const geMotion *M,geVFile *pFile); - -#ifdef __cplusplus -} -#endif - - -#endif diff --git a/G3D/Actor/path.h b/G3D/Actor/path.h deleted file mode 100644 index 6052947..0000000 --- a/G3D/Actor/path.h +++ /dev/null @@ -1,153 +0,0 @@ -/****************************************************************************************/ -/* PATH.H */ -/* */ -/* Author: Mike Sandige */ -/* Description: Time-indexed keyframe creation, maintenance, and sampling. */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ -#ifndef GE_PATH_H -#define GE_PATH_H - -#include "basetype.h" -#include "xform3d.h" -#include "quatern.h" -#include "vfile.h" - -#ifdef __cplusplus - extern "C" { -#endif - - -// GENESIS_PUBLIC_APIS -typedef struct _gePath gePath; - -#define GE_PATH_ROTATION_CHANNEL 1 -#define GE_PATH_TRANSLATION_CHANNEL 2 - -#define GE_PATH_ALL_CHANNELS (GE_PATH_ROTATION_CHANNEL | GE_PATH_TRANSLATION_CHANNEL) - -#ifndef GE_PATH_ENUMS - #define GE_PATH_ENUMS - typedef enum - { - GE_PATH_INTERPOLATE_LINEAR = 0, // linear blend for translation or rotation channel - GE_PATH_INTERPOLATE_HERMITE, // hermite cubic spline for translation channel - GE_PATH_INTERPOLATE_SLERP, // spherical-linear blend for rotation channel - GE_PATH_INTERPOLATE_SQUAD, // higher order blend for rotation channel 'G1' continuity - //GE_PATH_INTEROPLATE_TRIPOD, // not supported yet. - GE_PATH_INTERPOLATE_HERMITE_ZERO_DERIV = 7 // hermite cubic with zero derivative at keyframes ('easing' curve) - }gePath_Interpolator; -#endif - -GENESISAPI void GENESISCC gePath_CreateRef( gePath *P ); - -GENESISAPI gePath *GENESISCC gePath_Create( - gePath_Interpolator TranslationInterpolation, // type of interpolation for translation channel - gePath_Interpolator RotationInterpolation, // type of interpolation for rotation channel - geBoolean Looped); // True if end of path is connected to head - // creates new gePath - // A looping path should have the same first & last point. The path - // generator will choose arbitrarily between these points for a - // sample exactly at the end of the loop. - -GENESISAPI gePath *GENESISCC gePath_CreateCopy( const gePath *P ); - -GENESISAPI void GENESISCC gePath_Destroy(gePath **PP); - // destroys path *PP - -//------------------ time based keyframe operations -GENESISAPI geBoolean GENESISCC gePath_InsertKeyframe( - gePath *P, - int ChannelMask, - geFloat Time, - const geXForm3d *Matrix); - // inserts a keyframe at a specific time. - -GENESISAPI geBoolean GENESISCC gePath_DeleteKeyframe( - gePath *P, - int Index, - int ChannelMask); - // deletes the nth keyframe - -GENESISAPI geBoolean GENESISCC gePath_GetTimeExtents( - const gePath *P, - geFloat *StartTime, - geFloat *EndTime); - // gets the time for the first and last keys in the path (ignoring looping) - // if there are no keys, return GE_FALSE and times are not set. - // returns GE_TRUE if there are keys. - -//----------------- index based keyframe operations -GENESISAPI void GENESISCC gePath_GetKeyframe( - const gePath *P, - int Index, // gets keyframe[index] - int Channel, // for this channel - geFloat *Time, // returns the time of the keyframe - geXForm3d *Matrix); // returns the matrix of the keyframe - // retrieves keyframe[index], and it's time - -GENESISAPI int GENESISCC gePath_GetKeyframeCount(const gePath *P,int Channel); - // retrieves count of keyframes for a specific channel - -GENESISAPI int GENESISCC gePath_GetKeyframeIndex(const gePath *P, int Channel, geFloat Time); - // retrieves the index of the keyframe at a specific time for a specific channel - -//----------------- sampling a path (time based) -GENESISAPI void GENESISCC gePath_Sample(const gePath *P, geFloat Time,geXForm3d *Matrix); - // returns a transform matrix sampled at 'Time'. - // p is not const because information is cached in p for next sample - -// GENESIS_PRIVATE_APIS -void GENESISCC gePath_SampleChannels( - const gePath *P, - geFloat Time, - geQuaternion *Rotation, - geVec3d *Translation); - // returns a rotation and a translation for the path at 'Time' - // p is not const because information is cached in p for next sample - -GENESISAPI geBoolean GENESISCC gePath_OffsetTimes(gePath *P, - int StartingIndex, int ChannelMask, geFloat TimeOffset ); - // slides all samples in path starting with StartingIndex down by TimeOffset - -GENESISAPI geBoolean GENESISCC gePath_ModifyKeyframe( - gePath *P, - int Index, - int ChannelMask, - const geXForm3d *Matrix); - - -// GENESIS_PUBLIC_APIS - -//------------------ saving/loading a path -GENESISAPI gePath* GENESISCC gePath_CreateFromFile(geVFile *F); - // loads a file (binary or ascii) - -GENESISAPI geBoolean GENESISCC gePath_WriteToFile(const gePath *P, geVFile *F); - // dumps formatted ascii to the file. - -GENESISAPI geBoolean GENESISCC gePath_WriteToBinaryFile(const gePath *P, geVFile *F); - // dumps a minimal binary image for fastest reading - - - -#ifdef __cplusplus - } -#endif - - -#endif diff --git a/G3D/Engine/Drivers/Bmp.c b/G3D/BMP.c similarity index 100% rename from G3D/Engine/Drivers/Bmp.c rename to G3D/BMP.c diff --git a/G3D/Bitmap/bitmap.__h b/G3D/Bitmap.__h similarity index 97% rename from G3D/Bitmap/bitmap.__h rename to G3D/Bitmap.__h index 8d754ef..5b54987 100644 --- a/G3D/Bitmap/bitmap.__h +++ b/G3D/Bitmap.__h @@ -22,8 +22,8 @@ /* */ /****************************************************************************************/ -#include "bitmap.h" -#include "bitmap._h" +#include "Bitmap.h" +#include "Bitmap._h" // Hey ! // this is bitmap.__h : for inclusion by bitmap friends ONLY! diff --git a/G3D/Bitmap/bitmap._h b/G3D/Bitmap._h similarity index 96% rename from G3D/Bitmap/bitmap._h rename to G3D/Bitmap._h index f1f5625..e733358 100644 --- a/G3D/Bitmap/bitmap._h +++ b/G3D/Bitmap._h @@ -24,8 +24,8 @@ /****************************************************************************************/ -#include "bitmap.h" -#include "dcommon.h" +#include "Bitmap.h" +#include "DCommon.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Bitmap/bitmap.c b/G3D/Bitmap.c similarity index 95% rename from G3D/Bitmap/bitmap.c rename to G3D/Bitmap.c index 9fc6cd0..868dfb5 100644 --- a/G3D/Bitmap/bitmap.c +++ b/G3D/Bitmap.c @@ -56,26 +56,23 @@ see {} for notes/long-term-todos #include #include -#include "basetype.h" -#include "getypes.h" -#include "ram.h" - -#include "vfile.h" +#include "BaseType.h" +#include "GeTypes.h" +#include "Ram.h" +#include "VFile.h" #include "ErrorLog.h" #include "Log.h" -#include "mempool.h" - -#include "bitmap.h" -#include "bitmap._h" -#include "bitmap.__h" -#include "bitmap_blitdata.h" -#include "bitmap_gamma.h" - -#include "palcreate.h" -#include "palettize.h" +#include "MemPool.h" +#include "Bitmap.h" +#include "Bitmap._h" +#include "Bitmap.__h" +#include "BitmapBlitData.h" +#include "BitmapGamma.h" +#include "PALCreate.h" +#include "Palettize.h" #ifdef DO_TIMER -#include "timer.h" +#include "Timer.h" #endif #define allocate(ptr) ptr = geRam_Allocate(sizeof(*ptr)) diff --git a/G3D/Bitmap/PixelFormat.h b/G3D/Bitmap/PixelFormat.h deleted file mode 100644 index d8bf5ad..0000000 --- a/G3D/Bitmap/PixelFormat.h +++ /dev/null @@ -1,152 +0,0 @@ -#ifndef PIXELFORMAT_H -#define PIXELFORMAT_H - -/****************************************************************************************/ -/* PixelFormat.h */ -/* */ -/* Author: Charles Bloom */ -/* Description: The abstract Pixel primitives */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ - -#include "basetype.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum // all supported formats (including shifts) -{ - GE_PIXELFORMAT_NO_DATA = 0, - GE_PIXELFORMAT_8BIT, // PAL - GE_PIXELFORMAT_8BIT_GRAY, // no palette (intensity from bit value) - GE_PIXELFORMAT_16BIT_555_RGB, - GE_PIXELFORMAT_16BIT_555_BGR, - GE_PIXELFORMAT_16BIT_565_RGB, // #5 - GE_PIXELFORMAT_16BIT_565_BGR, - GE_PIXELFORMAT_16BIT_4444_ARGB, // #7 - GE_PIXELFORMAT_16BIT_1555_ARGB, - GE_PIXELFORMAT_24BIT_RGB, // #9 - GE_PIXELFORMAT_24BIT_BGR, - GE_PIXELFORMAT_24BIT_YUV, // * see note below - GE_PIXELFORMAT_32BIT_RGBX, - GE_PIXELFORMAT_32BIT_XRGB, - GE_PIXELFORMAT_32BIT_BGRX, - GE_PIXELFORMAT_32BIT_XBGR, - GE_PIXELFORMAT_32BIT_RGBA, - GE_PIXELFORMAT_32BIT_ARGB, // #17 - GE_PIXELFORMAT_32BIT_BGRA, - GE_PIXELFORMAT_32BIT_ABGR, - - GE_PIXELFORMAT_WAVELET, // #20 , Wavelet Compression - - GE_PIXELFORMAT_COUNT -} gePixelFormat; - -/****** - -there's something wacked out about these format names : - - for 16 bit & 32 bit , the _RGB or _BGR refers to their order - *in the word or dword* ; since we're on intel, this means - the bytes in the data file have the *opposite* order !! - (for example the 32 bit _ARGB is actually B,G,R,A in raw bytes) - for 24 bit , the _RGB or _BGR refers to their order in the - actual bytes, so that windows bitmaps actually have - _RGB order in a dword !! - -* YUV : the pixelformat ops here are identical to those of 24bit_RGB ; - this is just a place-keeper to notify you that you should to a YUV_to_RGB conversion - -*********/ - -#define GE_PIXELFORMAT_8BIT_PAL GE_PIXELFORMAT_8BIT - -typedef uint32 (*gePixelFormat_Composer )(int R,int G,int B,int A); -typedef void (*gePixelFormat_Decomposer )(uint32 Pixel,int *R,int *G,int *B,int *A); - -typedef void (*gePixelFormat_ColorGetter)(uint8 **ppData,int *R,int *G,int *B,int *A); -typedef void (*gePixelFormat_ColorPutter)(uint8 **ppData,int R,int G,int B,int A); - -typedef uint32 (*gePixelFormat_PixelGetter)(uint8 **ppData); -typedef void (*gePixelFormat_PixelPutter)(uint8 **ppData,uint32 Pixel); - -typedef struct gePixelFormat_Operations -{ - uint32 RMask; - uint32 GMask; - uint32 BMask; - uint32 AMask; - - int RShift; - int GShift; - int BShift; - int AShift; - - int RAdd; - int GAdd; - int BAdd; - int AAdd; - - int BytesPerPel; - geBoolean HasPalette; - char * Description; - - gePixelFormat_Composer ComposePixel; - gePixelFormat_Decomposer DecomposePixel; - - gePixelFormat_ColorGetter GetColor; - gePixelFormat_ColorPutter PutColor; - - gePixelFormat_PixelGetter GetPixel; - gePixelFormat_PixelPutter PutPixel; -} gePixelFormat_Operations; - - // the Masks double as boolean "HaveAlpha" .. etc.. - -GENESISAPI const gePixelFormat_Operations * GENESISCC gePixelFormat_GetOperations( gePixelFormat Format ); - - // quick accessors to _GetOps -GENESISAPI geBoolean GENESISCC gePixelFormat_IsValid( gePixelFormat Format); -GENESISAPI unsigned int GENESISCC gePixelFormat_BytesPerPel( gePixelFormat Format ); -GENESISAPI geBoolean GENESISCC gePixelFormat_HasPalette( gePixelFormat Format ); -GENESISAPI geBoolean GENESISCC gePixelFormat_HasAlpha( gePixelFormat Format ); -GENESISAPI geBoolean GENESISCC gePixelFormat_HasGoodAlpha( gePixelFormat Format ); // more than 1 bit of alpha -GENESISAPI const char * GENESISCC gePixelFormat_Description( gePixelFormat Format ); -GENESISAPI geBoolean GENESISCC gePixelFormat_IsRaw( gePixelFormat Format ); - // 'Raw' means pixels can be made with the Compose operations - -GENESISAPI uint32 GENESISCC gePixelFormat_ComposePixel( gePixelFormat Format,int R,int G,int B,int A); -GENESISAPI void GENESISCC gePixelFormat_DecomposePixel( gePixelFormat Format,uint32 Pixel,int *R,int *G,int *B,int *A); - - // these four functions move ppData to the next pixel - -GENESISAPI void GENESISCC gePixelFormat_GetColor(gePixelFormat Format,uint8 **ppData,int *R,int *G,int *B,int *A); -GENESISAPI void GENESISCC gePixelFormat_PutColor(gePixelFormat Format,uint8 **ppData,int R,int G,int B,int A); - -GENESISAPI uint32 GENESISCC gePixelFormat_GetPixel(gePixelFormat Format,uint8 **ppData); -GENESISAPI void GENESISCC gePixelFormat_PutPixel(gePixelFormat Format,uint8 **ppData,uint32 Pixel); - -GENESISAPI uint32 GENESISCC gePixelFormat_ConvertPixel(gePixelFormat Format,uint32 Pixel,gePixelFormat ToFormat); - - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/G3D/Bitmap/bitmap.h b/G3D/Bitmap/bitmap.h deleted file mode 100644 index 9263a42..0000000 --- a/G3D/Bitmap/bitmap.h +++ /dev/null @@ -1,627 +0,0 @@ -#ifndef BITMAP_H -#define BITMAP_H - -/****************************************************************************************/ -/* Bitmap.h */ -/* */ -/* Author: Charles Bloom */ -/* Description: Abstract Bitmap system */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ - -#include "basetype.h" -#include "pixelformat.h" -#include "vfile.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/***********************************************************************************/ - -typedef struct geBitmap geBitmap; -typedef struct geBitmap_Palette geBitmap_Palette; - -typedef struct geBitmap_Info -{ - int Width; - int Height; - int Stride; // stride is in *pixels* ; it is the step to the next line : Stride >= Width - gePixelFormat Format; - int MinimumMip; //*including* minimumMip == 0 often - int MaximumMip; //*including* maximumMip == nummips-1 - geBoolean HasColorKey; - uint32 ColorKey; // meaningless unless HasColorKey ; the ColorKey is a Pixel in Format - geBitmap_Palette * Palette; -} geBitmap_Info; - -/***********************************************************************************/ -// Bitmap methods - -// see a big comment at the end of this file - -/************************************************************************/ - -GENESISAPI geBitmap * GENESISCC geBitmap_Create(int Width, int Height, int MipCount, gePixelFormat Format ); -GENESISAPI void GENESISCC geBitmap_CreateRef(geBitmap *Bmp); - -GENESISAPI geBitmap * GENESISCC geBitmap_CreateFromInfo(const geBitmap_Info * pInfo); - -GENESISAPI geBitmap * GENESISCC geBitmap_CreateFromFile( geVFile *F ); -GENESISAPI geBitmap * GENESISCC geBitmap_CreateFromFileName(const geVFile *BaseFS,const char *Name); -GENESISAPI geBoolean GENESISCC geBitmap_WriteToFile( const geBitmap *Bmp, geVFile *F ); -GENESISAPI geBoolean GENESISCC geBitmap_WriteToFileName(const geBitmap * Bmp,const geVFile *BaseFS,const char *Name); - // BaseFS is not really const if it is a virtual file; - // it *is* const if it is a dos directory - -GENESISAPI geBoolean GENESISCC geBitmap_Destroy(geBitmap **Bmp); - // returns whether Bmp was actually destroyed : not success/failure - -GENESISAPI geBoolean GENESISCC geBitmap_GetInfo(const geBitmap *Bmp, geBitmap_Info *Info, geBitmap_Info *SecondaryInfo); - //LockForWrite returns data in Info's format - -GENESISAPI geBoolean GENESISCC geBitmap_Blit(const geBitmap *Src, int SrcPositionX, int SrcPositionY, - geBitmap *Dst, int DstPositionX, int DstPositionY, - int SizeX, int SizeY ); - -GENESISAPI geBoolean GENESISCC geBitmap_BlitMip(const geBitmap * Src, int SrcMip, geBitmap * Dst, int DstMip ); - // don't use this with Src == Dst, use UpdateMips instead ! - -GENESISAPI geBoolean GENESISCC geBitmap_BlitBitmap(const geBitmap * Src, geBitmap * Dst); - -GENESISAPI geBoolean GENESISCC geBitmap_BlitBestMip(const geBitmap * Src, geBitmap * Dst); - // blits the largest mip from Src that fits in Dst - -GENESISAPI geBoolean GENESISCC geBitmap_LockForRead( // a non-exclusive lock - const geBitmap * Bmp, - geBitmap ** Target, - int MinimumMip, - int MaximumMip, - gePixelFormat Format, - geBoolean RespectColorKey, - uint32 ColorKey); - // not really const, stores lock-count, but *data* is const - // will do a format conversion! - -GENESISAPI geBoolean GENESISCC geBitmap_LockForReadNative( - const geBitmap * Bmp, - geBitmap ** Target, - int MinimumMip, - int MaximumMip); - // lock for read in a format that gaurantee no conversions - // then do GetInfo on the locks to see what you have! - -GENESISAPI geBoolean GENESISCC geBitmap_LockForWrite( // an exclusive lock - geBitmap * Bmp, - geBitmap ** Target, - int MinimumMip, - int MaximumMip); - -GENESISAPI geBoolean GENESISCC geBitmap_LockForWriteFormat( - geBitmap * Bmp, - geBitmap ** Target, - int MinimumMip, - int MaximumMip, - gePixelFormat Format); - // Format must be one of the two returned in GetInfo !! - -GENESISAPI geBoolean GENESISCC geBitmap_UnLock(geBitmap *Bmp); // must be done on All locked mips -GENESISAPI geBoolean GENESISCC geBitmap_UnLockArray(geBitmap **Locks,int Size); - -GENESISAPI geBoolean GENESISCC geBitmap_SetFormat(geBitmap *Bmp, - gePixelFormat NewFormat, - geBoolean RespectColorKey, uint32 ColorKey, - const geBitmap_Palette * Palette); - // _SetFormat may cause you to lose color information! - // SetFormat does a conversion! - // if NewFormat is palettized and Palette is NULL, we create a palette for the bitmap! - -GENESISAPI geBoolean GENESISCC geBitmap_SetFormatMin(geBitmap *Bmp,gePixelFormat NewFormat); - // the Min version keeps colorkey & palette from the old format - -GENESISAPI geBoolean GENESISCC geBitmap_SetColorKey(geBitmap *Bmp, geBoolean HasColorKey, uint32 ColorKey, geBoolean Smart); - // SetColorKey discards old colorkey information! - // does not do a conversion (changes the colorkey in the current data - // if 'Smart' is on, we don't set HasColorKey to true unless it is actually used! - -GENESISAPI geBoolean GENESISCC geBitmap_GetAverageColor(const geBitmap *Bmp,int *pR,int *pG,int *pB); - // tells you the average color; computes it and caches it out - -GENESISAPI geBitmap_Palette * GENESISCC geBitmap_GetPalette(const geBitmap *Bmp); -GENESISAPI geBoolean GENESISCC geBitmap_SetPalette(geBitmap *Bmp, const geBitmap_Palette *Palette); - // _SetPal tries to _CreateRef your Palette, so no copy occurs & palettes may be shared - // you may _Destroy() palette after using it to set (though its bits may not be freed) - // (hence Palette is *not* const) - // Warning : SetPalette on any mip changes the palette of ALL mips ! - // see Palette note at _UnLock - // _SetPal destroys the bitmap's original palette and refs the new one, - // so if you setpal with the bitmap's palette, there is no net change in ref counts (good!) - -GENESISAPI geBoolean GENESISCC geBitmap_HasAlpha(const geBitmap * Bmp); - // returns true if bitmap has *any* type of alpha - -GENESISAPI geBitmap * GENESISCC geBitmap_GetAlpha(const geBitmap *Bmp); -GENESISAPI geBoolean GENESISCC geBitmap_SetAlpha(geBitmap *Bmp, const geBitmap *AlphaBmp); - // we Ref the AlphaBmp, so you may destroy it after calling Set() - // it may be NULL - // there's only one Alpha per bitmap (for the top Mip) right now - -GENESISAPI geBoolean GENESISCC geBitmap_SetGammaCorrection(geBitmap *Bmp,geFloat Gamma,geBoolean Apply); - // this Gamma does not change the *original* (system/secondary) bits - // it only affects the appearance when drawn - // note : if you write to the gamma corrected bits, you must gamma correct manually if you - // wish to fit in smoothly with the previous data - // warning : if you use this function with many different gammas, performance will suffer! - // use one global gamma for all bitmaps! try to let the engine manage gamma for you, - // via geEngine_SetGamma ! - -GENESISAPI geBoolean GENESISCC geBitmap_SetPreferredFormat(geBitmap *Bmp,gePixelFormat Format); -GENESISAPI gePixelFormat GENESISCC geBitmap_GetPreferredFormat(const geBitmap *Bmp); - -GENESISAPI void * GENESISCC geBitmap_GetBits(geBitmap *Bmp); // works only on a Lock() - -GENESISAPI geBoolean GENESISCC geBitmap_RefreshMips(geBitmap *Bmp); // rebuilds mips; *tries* to be smart & not overwrite manually-fixed mips - // RefreshMips does *not* build mips that don't exist -GENESISAPI geBoolean GENESISCC geBitmap_UpdateMips(geBitmap *Bmp,int SourceMip,int TargetMip); - // will create the target if it doesn't exist; - // will overwrite manually-fixed mips! -GENESISAPI geBoolean GENESISCC geBitmap_SetMipCount(geBitmap *Bmp,int Count); - // creates or destroys to match the new count - -GENESISAPI geBoolean GENESISCC geBitmap_ClearMips(geBitmap *Bmp); // Destroy all mips (except the first) ! - // use with care! this is not polite! - -// Shortcuts -GENESISAPI int GENESISCC geBitmap_Width(const geBitmap *Bitmap); -GENESISAPI int GENESISCC geBitmap_Height(const geBitmap *Bitmap); -GENESISAPI uint32 GENESISCC geBitmap_MipBytes(const geBitmap * Bitmap,int mip); - -/** -* -* if Bitmap is a lock for read, functions that modify it return failure -* if Bitmap is a lock for write, functions that modify it attempt to -* modify the owner of the lock -* -* warning : if you lock multiple mips for write, and then modify one of the mips -* (such as via SetPalette) it may affect the owner and all sibling mips! -* doing different SetPalettes with different palettes on different locked mips -* has undefined behavior! -* -**/ - -#ifdef _DEBUG - -GENESISAPI uint32 GENESISCC geBitmap_Debug_GetCount(void); - -GENESISAPI uint32 GENESISCC geBitmap_Debug_GetRefs(void); - // assert this is zero before you shutdown ! - -#endif - -/***********************************************************************************/ - -typedef enum -{ - GE_BITMAP_STREAMING_ERROR=0, - GE_BITMAP_STREAMING_NOT, - GE_BITMAP_STREAMING_STARTED, - GE_BITMAP_STREAMING_IDLE, - GE_BITMAP_STREAMING_CHANGED, - GE_BITMAP_STREAMING_DATADONE, - GE_BITMAP_STREAMING_DONE, -} geBitmap_StreamingStatus; - -GENESISAPI geBitmap_StreamingStatus GENESISCC geBitmap_GetStreamingStatus(const geBitmap *Bmp); - - /** on a file which is streaming, the sequence of returns looks like : - - GE_BITMAP_STREAMING_IDLE - GE_BITMAP_STREAMING_CHANGED - GE_BITMAP_STREAMING_IDLE - GE_BITMAP_STREAMING_IDLE - GE_BITMAP_STREAMING_CHANGED - ... - GE_BITMAP_STREAMING_DONE - GE_BITMAP_STREAMING_NOT - GE_BITMAP_STREAMING_NOT - GE_BITMAP_STREAMING_NOT - ... - - Status >= GE_BITMAP_STREAMING_STARTED means streaming has started & is in progress - - the user should never see _STARTED or _DATADONE - - ***/ - -/***********************************************************************************/ - -// palette methods : - -GENESISAPI geBitmap_Palette * GENESISCC geBitmap_Palette_Create(gePixelFormat Format,int Size); - -GENESISAPI geBitmap_Palette * GENESISCC geBitmap_Palette_CreateCopy(const geBitmap_Palette *Palette); - -GENESISAPI geBitmap_Palette * GENESISCC geBitmap_Palette_CreateFromFile(geVFile *F); - -GENESISAPI geBitmap_Palette * GENESISCC geBitmap_Palette_CreateFromBitmap(geBitmap * Bmp,geBoolean Slow); - // does GetPalette, and if NULL, then - // it create an optimal palette for a - // non-palettized bitmap - // (this is a create, you must destroy later!) - // put Slow == TRUE for higher quality & slower - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_SortColors(geBitmap_Palette * P,geBoolean Slower); - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_CreateRef(geBitmap_Palette *Palette); - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_Destroy(geBitmap_Palette ** ppPalette); - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_WriteToFile(const geBitmap_Palette *Palette,geVFile *F); - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_SetFormat(geBitmap_Palette * Palette,gePixelFormat Format); - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_Copy(const geBitmap_Palette * Src,geBitmap_Palette * Target); - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_GetInfo(const geBitmap_Palette *P,geBitmap_Info *Into); - // get the info as if it were a bitmap; Into->Height == 1 - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_Lock(geBitmap_Palette *Palette, void **pBits, gePixelFormat *pFormat,int *pSize); - // pFormat & pSize are optional - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_UnLock(geBitmap_Palette *Palette); - // palette unlock does NOT notify the bitmap that the palette has changed. - // call Bitmap_SetPalette() with the same palette pointer - // to tell the bitmap that it must to some processing - // (don't worry, it won't duplicate it or copy it onto itself) - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_GetData(const geBitmap_Palette *P, void *Into,gePixelFormat Format,int Colors); -GENESISAPI geBoolean GENESISCC geBitmap_Palette_SetData( geBitmap_Palette *P,const void *From,gePixelFormat Format,int Colors); - // does Lock/UnLock for you - // From and Into are arrays of Colors*gePixelFormat_BytesPerPel bytes - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_SetEntryColor( geBitmap_Palette *P,int Color,int R,int G,int B,int A); -GENESISAPI geBoolean GENESISCC geBitmap_Palette_GetEntryColor(const geBitmap_Palette *P,int Color,int *R,int *G,int *B,int *A); - // Set/Get does Lock/Unlock for you ; these are slow! do not use these to work on all the colors! - -GENESISAPI geBoolean GENESISCC geBitmap_Palette_SetEntry( geBitmap_Palette *P,int Color,uint32 Pixel); -GENESISAPI geBoolean GENESISCC geBitmap_Palette_GetEntry(const geBitmap_Palette *P,int Color,uint32 *Pixel); - -/***********************************************************************************/ - -/************************************************************************ - -A brief tutorial on the Bitmap system, by Charles Bloom, cbloom@wildtangent.com - -The Bitmap is a smart wrapper for complex functionality. You give it hints to -the opaque Bitmap object, and it tries its best to follow those hints, but it -may not always do so. The Bitmap is the owner of its bits; you must Lock the -bitmap to get permission to touch those bits, and UnLock to tell the bitmap -you are done. The format may change between two Locks. Bitmaps can also be -multiply owned, so you should account for the fact that others may touch your -bitmap between your uses. - -The Bitmap contains one or two pixel-sets representing an image. The "primary" is -a fast-blitting version of the image, and the "secondary" is a storage version -(eventually wavelet compressed) which can be used to rebuild the primary if it is -freed or damaged. Both cary a generalized format. - -Let's do an example. I want to load a bitmap, set it up for drawing with the -genesis Engine, and then blit some interactive stuff into it. - -************************************************************************/ - -#if 0 -// { -//----------------------------------------------------------------------------- - -void Init(geEngine * Engine); -void Shutdown(void); -void Draw(void); -void DrawPolite(void); - -static geBitmap * myBM = NULL; -static geEngine * myEngine = NULL; - -void Init(geEngine * Engine) -{ -geBoolean success; -geBitmap_Info Info; - - myEngine = Engine; // this is not looked well upon; for ease of demonstration only! - assert(Engine); - - myBM = geBitmap_CreateFromFileName(NULL,"mybitmap.bmp"); - - // CreateFromFile can load windows BMP files, or custom GeBm files. - - assert(myBM); - - // get the main info; I don't care about the secondary, so leave it NULL - - success = geBitmap_GetInfo(myBM,&Info,NULL); - assert(success); - - // make sure I loaded a bitmap in the format I understand ! - - if ( Info.Format == GE_PIXELFORMAT_8BIT_PAL ) - { - // I want palette index 255 to act as transparency, so I must use SetColorKey - - success = geBitmap_SetColorKey(myBM,GE_TRUE,255); - assert(success); - - // just for fun, let's modify the palette: - if (1) - { - geBitmap_Palette * Pal; - - // get the palette ; I don't care if its primary or secondary, so - /// I don't use the Info.Palette field - - Pal = geBitmap_GetPalette(myBM); - assert(Pal); - - // I'm only fiddling one entry, so don't bother with a full Lock() UnLock() - // sequence on the palette - - // make palette index zero bright red; we use alpha = 255 for opaque - - success = geBitmap_Palette_SetEntryColor(Pal,0,255,0,0,255); - assert(success); - - // tell the bitmap system you've changed the palette; this function - // is smart enough to not do unecessary copies or whatever. - - success = geBitmap_SetPalette(myBM,Pal); - assert(success); - } - - } - else - { - // otherwise, treat black as transparent, in whatever format I have - - success = geBitmap_SetColorKey(myBM,GE_TRUE,gePixelFormat_ComposePixel(Info.Format,0,0,0,0)); - assert(success); - } - - // note that I did NOT use SetFormat. SetFormat may do a conversion, and since the original - // bitmap was created without colorkey, it would have been converted to a new format but - // kept its property of having no colorkey! - // (SetFormat will fiddle the bits and whatever way necessary to keep bitmaps as visually similar - // as possible) - - // I want to fiddle the fast format in 565 later, so cue the bitmap to try to give me that format. - - success = geBitmap_SetPreferredFormat(myBM,GE_PIXELFORMAT_16BIT_565_RGB); - assert(success); - - // Add it to the engine so it can be used for drawing. - - success = geEngine_AddBitmap(myEngine,myBM); - assert(success); -} - -void Shutdown(void) -{ -geBoolean WasDestroyed; - - assert(myBM); - - // clean up - - geEngine_RemoveBitmap(myEngine,myBM); - - WasDestroyed = geBitmap_Destroy(&myBM); - - // someone else might have done _CreateRef on our bitmap, - // so we can't be sure it's actually destroyed. - // this code is still ready to be run again with a new call to Init() - - //assert(WasDestroyed); - - myBM = NULL; - myEngine = NULL; -} - -void Draw(void) -{ -geBitmap * Lock; -geBoolean success; -geBitmap_Info Info; -uint16 *bits,*bptr; -int x,y; - - // lets fiddle the bits. - // we need to lock the bitmap for write. - // LockForWrite is an exclusive lock, unlike LockForRead which is non-blocking - // request our favorite format, and only lock Mip 0 (the full size bitmap) - - success = geBitmap_LockForWriteFormat(myBM,&Lock,0,0,GE_PIXELFORMAT_16BIT_565_RGB); - if ( ! success ) - { - // well, we tried to be nice; if we were very polite, we would do a LockForWrite - // here, and try to fiddle the bits in whatever format we got; However, we aren't - // that polite, so we just do a _SetFormat - // - // note that we are destroying the original bitmap by changing its format - // we should only do this if we are going to draw into the bitmap - - success = geBitmap_SetFormat(myBM,GE_PIXELFORMAT_16BIT_565_RGB,GE_TRUE,0,NULL); - assert(success); - - // now we should be able to get the bits we want, *but* they may not be the - // primary (fast) format; oh well, it's the best we can do... - // (if you must have the fastest bits, then use only _LockForWrite, never LockForWriteFormat, - // which might have to do a conversion) - - success = geBitmap_LockForWriteFormat(myBM,&Lock,0,0,GE_PIXELFORMAT_16BIT_565_RGB); - assert(success); - } - - // now Lock is our bitmap in 565 - // we do a GetInfo because the Lock's info could be different than - // the original bitmap's (particularly the Palette & the Stride) - - success = geBitmap_GetInfo(Lock,&Info,NULL); - assert(success); - - // you can only call _GetBits on a locked bitmap - - bits = geBitmap_GetBits(Lock); - assert( bits ); - - bptr = bits; - for(y=0; y < Info.Height; y++) - { - for(x=0; x < Info.Width; x++) - { - uint16 R,G,B; - // make a silly 565 gradient - R = x & 0x1F; - G = x & 0x3F; - B = y & 0x1F; - - *bptr++ = (R<<11) + (G<<5) + B; - } - - // note that bptr is a word pointer, and Stride is in pixels : - - bptr += Info.Stride - Info.Width; - } - bits = bptr = NULL; - - // you call Unlock on all the mips you locked - not on the original bitmap! - - success = geBitmap_UnLock(Lock); - assert(success); - - // now, we only fiddled the full-size Mip, and there might be more, - // so lets percolate the changes into the smaller mips: - - success = geBitmap_RefreshMips(myBM); - assert(success); - - // a null rect means use the whole bitmap; - // Engine_DrawBitmap blits a 2d decal to the framebuffer (fast) - - success = geEngine_DrawBitmap(myEngine,myBM,NULL,0,0); - assert(success); - -} - -void DrawPolite(void) -{ -geBitmap * Lock; -geBoolean success; -geBitmap_Info Info; -void *bits; -int x,y; - - // this function does the same thing as Draw() , but is more polite - // lock in the fastest format (whatever it is) - // because we did SetPreferred, this should be 565_RGB, but might not be - - success = geBitmap_LockForWrite(myBM,&Lock,0,0); - assert(success); - - success = geBitmap_GetInfo(Lock,&Info,NULL); - assert(success); - - bits = geBitmap_GetBits(Lock); - assert( bits ); - - if ( Info.Format == GE_PIXELFORMAT_16BIT_565_RGB ) - { - uint16 *wptr; - - // our favorite format - - wptr = bits; - for(y=0; y < Info.Height; y++) - { - for(x=0; x < Info.Width; x++) - { - uint16 R,G,B; - // make a silly 565 gradient - R = x & 0x1F; - G = x & 0x3F; - B = y & 0x1F; - - *wptr++ = (R<<11) + (G<<5) + B; - } - wptr += Info.Stride - Info.Width; - } - } - else - { - uint8 * bptr; - - // oh well, do our best - // bitmaps must have had a good reason to not give us the format we preferred, - - bptr = bits; - for(y=0; y < Info.Height; y++) - { - for(x=0; x < Info.Width; x++) - { - uint32 R,G,B; - - // put a color in any format - - R = (x & 0x1F)<<3; - G = (x & 0x3F)<<2; - B = (y & 0x1F)<<3; - - // we use alpha of 255 for opaque - - gePixelFormat_PutColor(Info.Format,&bptr,R,G,B,255); - } - - bptr += (Info.Stride - Info.Width) * gePixelFormat_BytesPerPel(Info.Format); - } - } - bits = NULL; - - // same as before: - - success = geBitmap_UnLock(Lock); - assert(success); - - success = geBitmap_RefreshMips(myBM); - assert(success); - - success = geEngine_DrawBitmap(myEngine,myBM,NULL,0,0); - assert(success); - -} - -// end tutorial on the Bitmap system -//----------------------------------------------------------------------------- -// } - -/***********************************************************************************/ - -#endif -#ifdef __cplusplus -} -#endif - - -#endif - - diff --git a/G3D/Bitmap/bitmap_blitdata.c b/G3D/BitmapBlitData.c similarity index 92% rename from G3D/Bitmap/bitmap_blitdata.c rename to G3D/BitmapBlitData.c index 314c337..7ab07cc 100644 --- a/G3D/Bitmap/bitmap_blitdata.c +++ b/G3D/BitmapBlitData.c @@ -30,22 +30,18 @@ #include #include -#include "basetype.h" -#include "getypes.h" -#include "ram.h" - -#include "bitmap.h" -#include "bitmap._h" -#include "bitmap.__h" -#include "bitmap_blitdata.h" - -#include "vfile.h" +#include "BaseType.h" +#include "GeTypes.h" +#include "Ram.h" +#include "Bitmap.h" +#include "Bitmap._h" +#include "Bitmap.__h" +#include "BitmapBlitData.h" +#include "VFile.h" #include "ErrorLog.h" - -#include "palcreate.h" -#include "palettize.h" - -#include "tsc.h" +#include "PALCreate.h" +#include "Palettize.h" +#include "TSC.h" #ifdef DO_TIMER #include "timer.h" @@ -1456,7 +1452,8 @@ geBoolean BlitData_DePalettize(void) for(y=SizeY;y--;) { - #ifdef DONT_USE_ASM + // FIXME: asm code + //#ifdef DONT_USE_ASM for(x=SizeX;x--;) { @@ -1464,7 +1461,7 @@ geBoolean BlitData_DePalettize(void) *DstPtr++ = PalData[pal]; } - #else + /*#else #pragma message("Bitmap_Blitdata :using assembly DePalettize code") // {} is this minimal push safe in _fastcall ? aparently so! @@ -1499,7 +1496,7 @@ geBoolean BlitData_DePalettize(void) SrcPtr += SizeX; DstPtr += SizeX; - #endif + #endif*/ SrcPtr += SrcXtra; DstPtr += DstXtra; @@ -1525,7 +1522,8 @@ geBoolean BlitData_DePalettize(void) for(y=SizeY;y--;) { - #ifdef DONT_USE_ASM + // FIXME: asm code + //#ifdef DONT_USE_ASM for(x=SizeX;x--;) { @@ -1533,7 +1531,7 @@ geBoolean BlitData_DePalettize(void) *DstPtr++ = PalData[pal]; } - #else + /*#else #if 1 // { if ( (SizeX&1) == 0 ) @@ -1579,40 +1577,6 @@ geBoolean BlitData_DePalettize(void) sub ecx,2 jnz moredata2_z -#if 0 //{ - // the old bad way: - // 0.000710 secs - moredata2_z: - - //xor edx,edx //xor edx,0 ; sneaky trick? - - //mov al, BYTE PTR [esi] - movzx eax, BYTE PTR [esi] - inc esi - - movzx edx, WORD PTR [ebp + eax*2] - //mov dx, WORD PTR [ebp + eax*2] - - movzx eax, BYTE PTR [esi] - inc esi - - // make room fo a new dx - //shl edx,16 - //mov dx, WORD PTR [ebp + eax*2] // !! STALL !! ; movzx eax, [] instead? - // byte order is wrong; fix with rol; 1 clock - //rol edx,16 - - movzx eax, WORD PTR [ebp + eax*2] // can I do this? - shl eax,16 - xor edx,eax - - mov DWORD PTR [edi], edx - add edi,4 - - sub ecx,2 - jnz moredata2_z -#endif //} - pop ebp //popa } @@ -1659,7 +1623,7 @@ geBoolean BlitData_DePalettize(void) SrcPtr += SizeX; DstPtr += SizeX; - #endif + #endif */ SrcPtr += SrcXtra; DstPtr += DstXtra; @@ -1704,7 +1668,8 @@ geBoolean BlitData_DePalettize(void) for(y=SizeY;y--;) { - #ifdef DONT_USE_ASM + // FIXME: asm code + //#ifdef DONT_USE_ASM { uint8 *PalPtr; @@ -1718,7 +1683,7 @@ geBoolean BlitData_DePalettize(void) } } - #else + /*#else __asm { @@ -1758,7 +1723,7 @@ geBoolean BlitData_DePalettize(void) SrcPtr += SizeX; DstPtr += SizeX*3; - #endif + #endif */ SrcPtr += SrcXtra; DstPtr += DstXtra; @@ -1775,7 +1740,8 @@ geBoolean BlitData_DePalettize(void) DstPtr = (uint32 *)DstData; for(y=SizeY;y--;) { - #ifdef DONT_USE_ASM + // FIXME: asm code + //#ifdef DONT_USE_ASM for(x=SizeX;x--;) { @@ -1783,7 +1749,7 @@ geBoolean BlitData_DePalettize(void) *DstPtr++ = PalData[pal]; } - #else + /*#else assert( (((uint32)PalData)&3) == 0); assert( (((uint32)DstPtr)&3) == 0); @@ -1817,7 +1783,7 @@ geBoolean BlitData_DePalettize(void) SrcPtr += SizeX; DstPtr += SizeX; - #endif + #endif*/ SrcPtr += SrcXtra; DstPtr += DstXtra; diff --git a/G3D/Bitmap/bitmap_blitdata.h b/G3D/BitmapBlitData.h similarity index 100% rename from G3D/Bitmap/bitmap_blitdata.h rename to G3D/BitmapBlitData.h diff --git a/G3D/Bitmap/bitmap_gamma.c b/G3D/BitmapGamma.c similarity index 94% rename from G3D/Bitmap/bitmap_gamma.c rename to G3D/BitmapGamma.c index fe17bdb..60fbb81 100644 --- a/G3D/Bitmap/bitmap_gamma.c +++ b/G3D/BitmapGamma.c @@ -21,14 +21,13 @@ /* */ /****************************************************************************************/ - -#include "bitmap._h" -#include "bitmap.__h" -#include "bitmap_gamma.h" -#include "pixelformat.h" -#include "errorlog.h" #include #include +#include "Bitmap._h" +#include "Bitmap.__h" +#include "BitmapGamma.h" +#include "PixelFormat.h" +#include "ErrorLog.h" /*}{*******************************************************/ diff --git a/G3D/Bitmap/bitmap_gamma.h b/G3D/BitmapGamma.h similarity index 100% rename from G3D/Bitmap/bitmap_gamma.h rename to G3D/BitmapGamma.h diff --git a/G3D/Engine/BitmapList.c b/G3D/BitmapList.c similarity index 95% rename from G3D/Engine/BitmapList.c rename to G3D/BitmapList.c index 9e05bb6..6b573de 100644 --- a/G3D/Engine/BitmapList.c +++ b/G3D/BitmapList.c @@ -19,12 +19,10 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include - +#include #ifdef _DEBUG #include #endif - #include #include @@ -33,10 +31,10 @@ #include "DCommon.h" #include "Bitmap.h" #include "Bitmap._h" -#include "list.h" -#include "mempool.h" -#include "errorlog.h" -#include "ram.h" +#include "List.h" +#include "MemPool.h" +#include "ErrorLog.h" +#include "Ram.h" //#include "tsc.h" struct BitmapList diff --git a/G3D/Engine/BitmapList.h b/G3D/BitmapList.h similarity index 95% rename from G3D/Engine/BitmapList.h rename to G3D/BitmapList.h index f84c329..dcf09d2 100644 --- a/G3D/Engine/BitmapList.h +++ b/G3D/BitmapList.h @@ -22,9 +22,9 @@ #ifndef BITMAPLIST_H #define BITMAPLIST_H -#include "G3D/GeTypes.h" -#include "G3D/Engine/Drivers/DCommon.h" -#include "G3D/Bitmap.h" +#include "GeTypes.h" +#include "DCommon.h" +#include "Bitmap.h" typedef struct BitmapList BitmapList; diff --git a/G3D/Actor/body._h b/G3D/Body._h similarity index 92% rename from G3D/Actor/body._h rename to G3D/Body._h index 06f7db2..9ccf476 100644 --- a/G3D/Actor/body._h +++ b/G3D/Body._h @@ -22,11 +22,11 @@ #ifndef GE_BODY__H #define GE_BODY__H -#include "basetype.h" -#include "xform3d.h" -#include "body.h" -#include "strblock.h" -#include "bitmap.h" +#include "BaseType.h" +#include "XForm3d.h" +#include "Body.h" +#include "StrBlock.h" +#include "Bitmap.h" #ifdef __cplusplus @@ -112,7 +112,7 @@ typedef struct geBody } geBody; #if defined(DEBUG) || !defined(NDEBUG) -geBoolean GENESISCC geBody_SanityCheck(const geBody *B); +static geBoolean GENESISCC geBody_SanityCheck(const geBody *B); #endif diff --git a/G3D/Actor/body.c b/G3D/Body.c similarity index 96% rename from G3D/Actor/body.c rename to G3D/Body.c index a002942..df40233 100644 --- a/G3D/Actor/body.c +++ b/G3D/Body.c @@ -21,13 +21,13 @@ /****************************************************************************************/ #include //assert() #include //strlen(), strcpy() -#include //fabs() +#include //fabs() #include //sscanf -#include "body.h" -#include "body._h" -#include "ram.h" -#include "errorlog.h" +#include "Body.h" +#include "Body._h" +#include "Ram.h" +#include "ErrorLog.h" #define MAX(aa,bb) ( (aa)>(bb)?(aa):(bb) ) @@ -37,7 +37,7 @@ #if defined(DEBUG) || !defined(NDEBUG) -static geBoolean GENESISCC geBody_SanityCheck(const geBody *B) +geBoolean GENESISCC geBody_SanityCheck(const geBody *B) { int i,j,k; int Lod,FaceCount,VertexCount,NormalCount,BoneCount; diff --git a/G3D/Actor/bodyinst.c b/G3D/BodyInst.c similarity index 95% rename from G3D/Actor/bodyinst.c rename to G3D/BodyInst.c index 48bf919..c659b5b 100644 --- a/G3D/Actor/bodyinst.c +++ b/G3D/BodyInst.c @@ -21,11 +21,11 @@ /****************************************************************************************/ #include //assert() -#include "body._h" -#include "bodyinst.h" -#include "ram.h" -#include "errorlog.h" -#include "strblock.h" +#include "Body._h" +#include "BodyInst.h" +#include "Ram.h" +#include "ErrorLog.h" +#include "StrBlock.h" diff --git a/G3D/Actor/bodyinst.h b/G3D/BodyInst.h similarity index 95% rename from G3D/Actor/bodyinst.h rename to G3D/BodyInst.h index f079679..0119cd6 100644 --- a/G3D/Actor/bodyinst.h +++ b/G3D/BodyInst.h @@ -32,11 +32,11 @@ */ -#include "basetype.h" -#include "xform3d.h" -#include "body.h" +#include "BaseType.h" +#include "XForm3d.h" +#include "Body.h" #include "XFArray.h" -#include "camera.h" +#include "Camera.h" #ifdef __cplusplus @@ -125,4 +125,4 @@ const geBodyInst_Geometry *GENESISCC geBodyInst_GetGeometry( #endif #endif - \ No newline at end of file + diff --git a/G3D/CMakeLists.txt b/G3D/CMakeLists.txt index f4881ce..8be8d20 100644 --- a/G3D/CMakeLists.txt +++ b/G3D/CMakeLists.txt @@ -1,2 +1,16 @@ -ADD_LIBRARY (Genesis3D STATIC Box.c CRC32.c CSNetMgr.c Camera.c Entities.c ErrorLog.c ExtBox.c Font.c Ge.c - GeAssert.c Log.c Matrix33.c MemPool.c NetPlay.c) +SET (GENESIS3D_SOURCE ACorona.c AStreak.c Actor.c BMP.c Bitmap.c BitmapBlitData.c BitmapGamma.c + BitmapList.c Body.c BodyInst.c Box.c CRC32.c CSNetMgr.c Camera.c Corona.c + DirTree.c DirTreeCommon.c Electric.c Engine.c Entities.c ErrorLog.c + ExtBox.c Fog.c Font.c FontBmp.c Frustum.c FsDos.c FsMemory.c FsVfs.c + GBSPFile.c Ge.c GeAssert.c Genesis3d.c Light.c List.c Log.c Logo.c LogoActor.c + Matrix33.c MemPool.c Motion.c NetPlay.c PALCreate.c PALOptimize.c Palettize.c + Path.c PhysicsJoint.c PhysicsObject.c PhysicsSystem.c PixelFormat.c Plane.c + Pose.c PoweredBy.c Puppet.c QKFrame.c Quaternion.c Ram.c RamDLL.c Sound.c + Sound3d.c Sprite.c StrBlock.c Streak.c Surface.c System.c TClip.c TKArray.c + TKEvents.c TSC.c Timer.c Trace.c User.c VFile.c VKFrame.c Vec3d.c Vis.c + WBitmap.c WebUrl.c WgClip.c World.c XFArray.c XForm3d.c YUV.c) + +ADD_LIBRARY (G3D STATIC ${GENESIS3D_SOURCE}) + +ADD_LIBRARY (Genesis3D SHARED ${GENESIS3D_SOURCE}) +TARGET_LINK_LIBRARIES (Genesis3D dplay dplayx gdi32 msvcrt ole32 winmm) diff --git a/G3D/Camera.c b/G3D/Camera.c index 5a86985..48f73a7 100644 --- a/G3D/Camera.c +++ b/G3D/Camera.c @@ -26,7 +26,7 @@ #include "Camera.h" #include "Ram.h" #include "ErrorLog.h" -#include "G3D/Engine/Drivers/DCommon.h" +#include "DCommon.h" typedef struct geCamera { diff --git a/G3D/Engine/Logo/CORONA.c b/G3D/Corona.c similarity index 100% rename from G3D/Engine/Logo/CORONA.c rename to G3D/Corona.c diff --git a/G3D/Engine/Drivers/DCommon.h b/G3D/DCommon.h similarity index 100% rename from G3D/Engine/Drivers/DCommon.h rename to G3D/DCommon.h diff --git a/G3D/DirTree.c b/G3D/DirTree.c index 6d7764a..5d3acfb 100644 --- a/G3D/DirTree.c +++ b/G3D/DirTree.c @@ -25,11 +25,10 @@ #include #include -#include "basetype.h" -#include "ram.h" - -#include "dirtree.h" -#include "dirtree-common.h" +#include "BaseType.h" +#include "Ram.h" +#include "DirTree.h" +#include "DirTreeCommon.h" #define DIRTREE_FILE_SIGNATURE MAKEFOURCC('D', 'T', '0', '1') static int DirTree_SignatureBase=0x696C6345; diff --git a/G3D/DirTree.h b/G3D/DirTree.h index 2610be5..6f88e5a 100644 --- a/G3D/DirTree.h +++ b/G3D/DirTree.h @@ -22,7 +22,7 @@ #ifndef DIRTREE_H #define DIRTREE_H -#include "vfile.h" +#include "VFile.h" typedef struct DirTree DirTree; typedef struct DirTree_Finder DirTree_Finder; diff --git a/G3D/DirTreeCommon.c b/G3D/DirTreeCommon.c index 8137354..2d2b318 100644 --- a/G3D/DirTreeCommon.c +++ b/G3D/DirTreeCommon.c @@ -23,8 +23,8 @@ #include #include -#include "ram.h" -#include "dirtree-common.h" +#include "Ram.h" +#include "DirTreeCommon.h" char * DuplicateString(const char *String) { @@ -103,4 +103,4 @@ void indent(int i) while (i--) printf(" "); } -#endif \ No newline at end of file +#endif diff --git a/G3D/DirTreeCommon.h b/G3D/DirTreeCommon.h index 46da5ae..4972c81 100644 --- a/G3D/DirTreeCommon.h +++ b/G3D/DirTreeCommon.h @@ -23,7 +23,7 @@ #define DIRTREE_COMMON_H -#include "vfile.h" +#include "VFile.h" typedef struct DirTree_Header { @@ -50,4 +50,4 @@ geBoolean PathHasDir(const char *Path); static void indent(int i); #endif -#endif \ No newline at end of file +#endif diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3D_ERR.CPP b/G3D/Drivers/D3D7xDrv/D3D_ERR.CPP similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3D_ERR.CPP rename to G3D/Drivers/D3D7xDrv/D3D_ERR.CPP diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3D_ERR.H b/G3D/Drivers/D3D7xDrv/D3D_ERR.H similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3D_ERR.H rename to G3D/Drivers/D3D7xDrv/D3D_ERR.H diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3d_fx.cpp b/G3D/Drivers/D3D7xDrv/D3d_fx.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3d_fx.cpp rename to G3D/Drivers/D3D7xDrv/D3d_fx.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3d_fx.h b/G3D/Drivers/D3D7xDrv/D3d_fx.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3d_fx.h rename to G3D/Drivers/D3D7xDrv/D3d_fx.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3d_main.cpp b/G3D/Drivers/D3D7xDrv/D3d_main.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3d_main.cpp rename to G3D/Drivers/D3D7xDrv/D3d_main.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3d_main.h b/G3D/Drivers/D3D7xDrv/D3d_main.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3d_main.h rename to G3D/Drivers/D3D7xDrv/D3d_main.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3dcache.cpp b/G3D/Drivers/D3D7xDrv/D3dcache.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3dcache.cpp rename to G3D/Drivers/D3D7xDrv/D3dcache.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3dcache.h b/G3D/Drivers/D3D7xDrv/D3dcache.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3dcache.h rename to G3D/Drivers/D3D7xDrv/D3dcache.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3ddrv7x.cpp b/G3D/Drivers/D3D7xDrv/D3ddrv7x.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3ddrv7x.cpp rename to G3D/Drivers/D3D7xDrv/D3ddrv7x.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3ddrv7x.h b/G3D/Drivers/D3D7xDrv/D3ddrv7x.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/D3ddrv7x.h rename to G3D/Drivers/D3D7xDrv/D3ddrv7x.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/DDMemMgr.c b/G3D/Drivers/D3D7xDrv/DDMemMgr.c similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/DDMemMgr.c rename to G3D/Drivers/D3D7xDrv/DDMemMgr.c diff --git a/G3D/Engine/Drivers/D3D7xDrv/DDMemMgr.h b/G3D/Drivers/D3D7xDrv/DDMemMgr.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/DDMemMgr.h rename to G3D/Drivers/D3D7xDrv/DDMemMgr.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/GSPAN.H b/G3D/Drivers/D3D7xDrv/GSPAN.H similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/GSPAN.H rename to G3D/Drivers/D3D7xDrv/GSPAN.H diff --git a/G3D/Engine/Drivers/D3D7xDrv/Gspan.cpp b/G3D/Drivers/D3D7xDrv/Gspan.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/Gspan.cpp rename to G3D/Drivers/D3D7xDrv/Gspan.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/Pcache.cpp b/G3D/Drivers/D3D7xDrv/Pcache.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/Pcache.cpp rename to G3D/Drivers/D3D7xDrv/Pcache.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/Pcache.h b/G3D/Drivers/D3D7xDrv/Pcache.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/Pcache.h rename to G3D/Drivers/D3D7xDrv/Pcache.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/RENDER.H b/G3D/Drivers/D3D7xDrv/RENDER.H similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/RENDER.H rename to G3D/Drivers/D3D7xDrv/RENDER.H diff --git a/G3D/Engine/Drivers/D3D7xDrv/Render.cpp b/G3D/Drivers/D3D7xDrv/Render.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/Render.cpp rename to G3D/Drivers/D3D7xDrv/Render.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/SCENE.H b/G3D/Drivers/D3D7xDrv/SCENE.H similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/SCENE.H rename to G3D/Drivers/D3D7xDrv/SCENE.H diff --git a/G3D/Engine/Drivers/D3D7xDrv/Scene.cpp b/G3D/Drivers/D3D7xDrv/Scene.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/Scene.cpp rename to G3D/Drivers/D3D7xDrv/Scene.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/THandle.cpp b/G3D/Drivers/D3D7xDrv/THandle.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/THandle.cpp rename to G3D/Drivers/D3D7xDrv/THandle.cpp diff --git a/G3D/Engine/Drivers/D3D7xDrv/THandle.h b/G3D/Drivers/D3D7xDrv/THandle.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/THandle.h rename to G3D/Drivers/D3D7xDrv/THandle.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/TPage.h b/G3D/Drivers/D3D7xDrv/TPage.h similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/TPage.h rename to G3D/Drivers/D3D7xDrv/TPage.h diff --git a/G3D/Engine/Drivers/D3D7xDrv/tpage.cpp b/G3D/Drivers/D3D7xDrv/tpage.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D7xDrv/tpage.cpp rename to G3D/Drivers/D3D7xDrv/tpage.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/D3DDRV.H b/G3D/Drivers/D3D8Drv/D3DDRV.H similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3DDRV.H rename to G3D/Drivers/D3D8Drv/D3DDRV.H diff --git a/G3D/Engine/Drivers/D3D8Drv/D3D_ERR.CPP b/G3D/Drivers/D3D8Drv/D3D_ERR.CPP similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3D_ERR.CPP rename to G3D/Drivers/D3D8Drv/D3D_ERR.CPP diff --git a/G3D/Engine/Drivers/D3D8Drv/D3D_ERR.H b/G3D/Drivers/D3D8Drv/D3D_ERR.H similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3D_ERR.H rename to G3D/Drivers/D3D8Drv/D3D_ERR.H diff --git a/G3D/Engine/Drivers/D3D8Drv/D3D_FX.H b/G3D/Drivers/D3D8Drv/D3D_FX.H similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3D_FX.H rename to G3D/Drivers/D3D8Drv/D3D_FX.H diff --git a/G3D/Engine/Drivers/D3D8Drv/D3d_fx.cpp b/G3D/Drivers/D3D8Drv/D3d_fx.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3d_fx.cpp rename to G3D/Drivers/D3D8Drv/D3d_fx.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/D3d_main.cpp b/G3D/Drivers/D3D8Drv/D3d_main.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3d_main.cpp rename to G3D/Drivers/D3D8Drv/D3d_main.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/D3d_main.h b/G3D/Drivers/D3D8Drv/D3d_main.h similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3d_main.h rename to G3D/Drivers/D3D8Drv/D3d_main.h diff --git a/G3D/Engine/Drivers/D3D8Drv/D3dcache.cpp b/G3D/Drivers/D3D8Drv/D3dcache.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3dcache.cpp rename to G3D/Drivers/D3D8Drv/D3dcache.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/D3dcache.h b/G3D/Drivers/D3D8Drv/D3dcache.h similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3dcache.h rename to G3D/Drivers/D3D8Drv/D3dcache.h diff --git a/G3D/Engine/Drivers/D3D8Drv/D3ddrv.cpp b/G3D/Drivers/D3D8Drv/D3ddrv.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/D3ddrv.cpp rename to G3D/Drivers/D3D8Drv/D3ddrv.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/DDMemMgr.cpp b/G3D/Drivers/D3D8Drv/DDMemMgr.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/DDMemMgr.cpp rename to G3D/Drivers/D3D8Drv/DDMemMgr.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/DDMemMgr.h b/G3D/Drivers/D3D8Drv/DDMemMgr.h similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/DDMemMgr.h rename to G3D/Drivers/D3D8Drv/DDMemMgr.h diff --git a/G3D/Engine/Drivers/D3D8Drv/GSPAN.CPP b/G3D/Drivers/D3D8Drv/GSPAN.CPP similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/GSPAN.CPP rename to G3D/Drivers/D3D8Drv/GSPAN.CPP diff --git a/G3D/Engine/Drivers/D3D8Drv/GSPAN.H b/G3D/Drivers/D3D8Drv/GSPAN.H similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/GSPAN.H rename to G3D/Drivers/D3D8Drv/GSPAN.H diff --git a/G3D/Engine/Drivers/D3D8Drv/Pcache.cpp b/G3D/Drivers/D3D8Drv/Pcache.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/Pcache.cpp rename to G3D/Drivers/D3D8Drv/Pcache.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/Pcache.h b/G3D/Drivers/D3D8Drv/Pcache.h similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/Pcache.h rename to G3D/Drivers/D3D8Drv/Pcache.h diff --git a/G3D/Engine/Drivers/D3D8Drv/RENDER.H b/G3D/Drivers/D3D8Drv/RENDER.H similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/RENDER.H rename to G3D/Drivers/D3D8Drv/RENDER.H diff --git a/G3D/Engine/Drivers/D3D8Drv/Render.cpp b/G3D/Drivers/D3D8Drv/Render.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/Render.cpp rename to G3D/Drivers/D3D8Drv/Render.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/SCENE.H b/G3D/Drivers/D3D8Drv/SCENE.H similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/SCENE.H rename to G3D/Drivers/D3D8Drv/SCENE.H diff --git a/G3D/Engine/Drivers/D3D8Drv/Scene.cpp b/G3D/Drivers/D3D8Drv/Scene.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/Scene.cpp rename to G3D/Drivers/D3D8Drv/Scene.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/THandle.cpp b/G3D/Drivers/D3D8Drv/THandle.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/THandle.cpp rename to G3D/Drivers/D3D8Drv/THandle.cpp diff --git a/G3D/Engine/Drivers/D3D8Drv/THandle.h b/G3D/Drivers/D3D8Drv/THandle.h similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/THandle.h rename to G3D/Drivers/D3D8Drv/THandle.h diff --git a/G3D/Engine/Drivers/D3D8Drv/TPage.h b/G3D/Drivers/D3D8Drv/TPage.h similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/TPage.h rename to G3D/Drivers/D3D8Drv/TPage.h diff --git a/G3D/Engine/Drivers/D3D8Drv/tpage.cpp b/G3D/Drivers/D3D8Drv/tpage.cpp similarity index 100% rename from G3D/Engine/Drivers/D3D8Drv/tpage.cpp rename to G3D/Drivers/D3D8Drv/tpage.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/D3DDRV.H b/G3D/Drivers/D3DDrv/D3DDRV.H similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3DDRV.H rename to G3D/Drivers/D3DDrv/D3DDRV.H diff --git a/G3D/Engine/Drivers/D3DDrv/D3D_ERR.CPP b/G3D/Drivers/D3DDrv/D3D_ERR.CPP similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3D_ERR.CPP rename to G3D/Drivers/D3DDrv/D3D_ERR.CPP diff --git a/G3D/Engine/Drivers/D3DDrv/D3D_ERR.H b/G3D/Drivers/D3DDrv/D3D_ERR.H similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3D_ERR.H rename to G3D/Drivers/D3DDrv/D3D_ERR.H diff --git a/G3D/Engine/Drivers/D3DDrv/D3d_fx.cpp b/G3D/Drivers/D3DDrv/D3d_fx.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3d_fx.cpp rename to G3D/Drivers/D3DDrv/D3d_fx.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/D3d_fx.h b/G3D/Drivers/D3DDrv/D3d_fx.h similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3d_fx.h rename to G3D/Drivers/D3DDrv/D3d_fx.h diff --git a/G3D/Engine/Drivers/D3DDrv/D3d_main.cpp b/G3D/Drivers/D3DDrv/D3d_main.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3d_main.cpp rename to G3D/Drivers/D3DDrv/D3d_main.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/D3d_main.h b/G3D/Drivers/D3DDrv/D3d_main.h similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3d_main.h rename to G3D/Drivers/D3DDrv/D3d_main.h diff --git a/G3D/Engine/Drivers/D3DDrv/D3dcache.cpp b/G3D/Drivers/D3DDrv/D3dcache.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3dcache.cpp rename to G3D/Drivers/D3DDrv/D3dcache.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/D3dcache.h b/G3D/Drivers/D3DDrv/D3dcache.h similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3dcache.h rename to G3D/Drivers/D3DDrv/D3dcache.h diff --git a/G3D/Engine/Drivers/D3DDrv/D3ddrv.cpp b/G3D/Drivers/D3DDrv/D3ddrv.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/D3ddrv.cpp rename to G3D/Drivers/D3DDrv/D3ddrv.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/DDMemMgr.c b/G3D/Drivers/D3DDrv/DDMemMgr.c similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/DDMemMgr.c rename to G3D/Drivers/D3DDrv/DDMemMgr.c diff --git a/G3D/Engine/Drivers/D3DDrv/DDMemMgr.h b/G3D/Drivers/D3DDrv/DDMemMgr.h similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/DDMemMgr.h rename to G3D/Drivers/D3DDrv/DDMemMgr.h diff --git a/G3D/Engine/Drivers/D3DDrv/GSPAN.CPP b/G3D/Drivers/D3DDrv/GSPAN.CPP similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/GSPAN.CPP rename to G3D/Drivers/D3DDrv/GSPAN.CPP diff --git a/G3D/Engine/Drivers/D3DDrv/GSPAN.H b/G3D/Drivers/D3DDrv/GSPAN.H similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/GSPAN.H rename to G3D/Drivers/D3DDrv/GSPAN.H diff --git a/G3D/Engine/Drivers/D3DDrv/Pcache.cpp b/G3D/Drivers/D3DDrv/Pcache.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/Pcache.cpp rename to G3D/Drivers/D3DDrv/Pcache.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/Pcache.h b/G3D/Drivers/D3DDrv/Pcache.h similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/Pcache.h rename to G3D/Drivers/D3DDrv/Pcache.h diff --git a/G3D/Engine/Drivers/D3DDrv/README.NOW b/G3D/Drivers/D3DDrv/README.NOW similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/README.NOW rename to G3D/Drivers/D3DDrv/README.NOW diff --git a/G3D/Engine/Drivers/D3DDrv/RENDER.H b/G3D/Drivers/D3DDrv/RENDER.H similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/RENDER.H rename to G3D/Drivers/D3DDrv/RENDER.H diff --git a/G3D/Engine/Drivers/D3DDrv/Render.cpp b/G3D/Drivers/D3DDrv/Render.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/Render.cpp rename to G3D/Drivers/D3DDrv/Render.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/SCENE.H b/G3D/Drivers/D3DDrv/SCENE.H similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/SCENE.H rename to G3D/Drivers/D3DDrv/SCENE.H diff --git a/G3D/Engine/Drivers/D3DDrv/Scene.cpp b/G3D/Drivers/D3DDrv/Scene.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/Scene.cpp rename to G3D/Drivers/D3DDrv/Scene.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/THandle.cpp b/G3D/Drivers/D3DDrv/THandle.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/THandle.cpp rename to G3D/Drivers/D3DDrv/THandle.cpp diff --git a/G3D/Engine/Drivers/D3DDrv/THandle.h b/G3D/Drivers/D3DDrv/THandle.h similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/THandle.h rename to G3D/Drivers/D3DDrv/THandle.h diff --git a/G3D/Engine/Drivers/D3DDrv/TPage.h b/G3D/Drivers/D3DDrv/TPage.h similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/TPage.h rename to G3D/Drivers/D3DDrv/TPage.h diff --git a/G3D/Engine/Drivers/D3DDrv/tpage.cpp b/G3D/Drivers/D3DDrv/tpage.cpp similarity index 100% rename from G3D/Engine/Drivers/D3DDrv/tpage.cpp rename to G3D/Drivers/D3DDrv/tpage.cpp diff --git a/G3D/Engine/Drivers/GlideDrv/GCache.c b/G3D/Drivers/GlideDrv/GCache.c similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GCache.c rename to G3D/Drivers/GlideDrv/GCache.c diff --git a/G3D/Engine/Drivers/GlideDrv/GCache.h b/G3D/Drivers/GlideDrv/GCache.h similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GCache.h rename to G3D/Drivers/GlideDrv/GCache.h diff --git a/G3D/Engine/Drivers/GlideDrv/GLIDEDRV.H b/G3D/Drivers/GlideDrv/GLIDEDRV.H similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GLIDEDRV.H rename to G3D/Drivers/GlideDrv/GLIDEDRV.H diff --git a/G3D/Engine/Drivers/GlideDrv/GMain.c b/G3D/Drivers/GlideDrv/GMain.c similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GMain.c rename to G3D/Drivers/GlideDrv/GMain.c diff --git a/G3D/Engine/Drivers/GlideDrv/GMain.h b/G3D/Drivers/GlideDrv/GMain.h similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GMain.h rename to G3D/Drivers/GlideDrv/GMain.h diff --git a/G3D/Engine/Drivers/GlideDrv/GMemMgr.c b/G3D/Drivers/GlideDrv/GMemMgr.c similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GMemMgr.c rename to G3D/Drivers/GlideDrv/GMemMgr.c diff --git a/G3D/Engine/Drivers/GlideDrv/GMemMgr.h b/G3D/Drivers/GlideDrv/GMemMgr.h similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GMemMgr.h rename to G3D/Drivers/GlideDrv/GMemMgr.h diff --git a/G3D/Engine/Drivers/GlideDrv/GSpan.cpp b/G3D/Drivers/GlideDrv/GSpan.cpp similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GSpan.cpp rename to G3D/Drivers/GlideDrv/GSpan.cpp diff --git a/G3D/Engine/Drivers/GlideDrv/GSpan.h b/G3D/Drivers/GlideDrv/GSpan.h similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GSpan.h rename to G3D/Drivers/GlideDrv/GSpan.h diff --git a/G3D/Engine/Drivers/GlideDrv/GTHandle.h b/G3D/Drivers/GlideDrv/GTHandle.h similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GTHandle.h rename to G3D/Drivers/GlideDrv/GTHandle.h diff --git a/G3D/Engine/Drivers/GlideDrv/GThandle.c b/G3D/Drivers/GlideDrv/GThandle.c similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GThandle.c rename to G3D/Drivers/GlideDrv/GThandle.c diff --git a/G3D/Engine/Drivers/GlideDrv/GlideDrv.c b/G3D/Drivers/GlideDrv/GlideDrv.c similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/GlideDrv.c rename to G3D/Drivers/GlideDrv/GlideDrv.c diff --git a/G3D/Engine/Drivers/GlideDrv/Render.c b/G3D/Drivers/GlideDrv/Render.c similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/Render.c rename to G3D/Drivers/GlideDrv/Render.c diff --git a/G3D/Engine/Drivers/GlideDrv/Render.h b/G3D/Drivers/GlideDrv/Render.h similarity index 100% rename from G3D/Engine/Drivers/GlideDrv/Render.h rename to G3D/Drivers/GlideDrv/Render.h diff --git a/G3D/Engine/Drivers/OpenGl/OGLDrv.c b/G3D/Drivers/OpenGl/OGLDrv.c similarity index 100% rename from G3D/Engine/Drivers/OpenGl/OGLDrv.c rename to G3D/Drivers/OpenGl/OGLDrv.c diff --git a/G3D/Engine/Drivers/OpenGl/OGLDrv.h b/G3D/Drivers/OpenGl/OGLDrv.h similarity index 100% rename from G3D/Engine/Drivers/OpenGl/OGLDrv.h rename to G3D/Drivers/OpenGl/OGLDrv.h diff --git a/G3D/Engine/Drivers/OpenGl/OglMisc.c b/G3D/Drivers/OpenGl/OglMisc.c similarity index 100% rename from G3D/Engine/Drivers/OpenGl/OglMisc.c rename to G3D/Drivers/OpenGl/OglMisc.c diff --git a/G3D/Engine/Drivers/OpenGl/OglMisc.h b/G3D/Drivers/OpenGl/OglMisc.h similarity index 100% rename from G3D/Engine/Drivers/OpenGl/OglMisc.h rename to G3D/Drivers/OpenGl/OglMisc.h diff --git a/G3D/Engine/Drivers/OpenGl/Render.c b/G3D/Drivers/OpenGl/Render.c similarity index 100% rename from G3D/Engine/Drivers/OpenGl/Render.c rename to G3D/Drivers/OpenGl/Render.c diff --git a/G3D/Engine/Drivers/OpenGl/Render.h b/G3D/Drivers/OpenGl/Render.h similarity index 100% rename from G3D/Engine/Drivers/OpenGl/Render.h rename to G3D/Drivers/OpenGl/Render.h diff --git a/G3D/Engine/Drivers/OpenGl/THandle.c b/G3D/Drivers/OpenGl/THandle.c similarity index 100% rename from G3D/Engine/Drivers/OpenGl/THandle.c rename to G3D/Drivers/OpenGl/THandle.c diff --git a/G3D/Engine/Drivers/OpenGl/THandle.h b/G3D/Drivers/OpenGl/THandle.h similarity index 100% rename from G3D/Engine/Drivers/OpenGl/THandle.h rename to G3D/Drivers/OpenGl/THandle.h diff --git a/G3D/Engine/Drivers/OpenGl/Win32.c b/G3D/Drivers/OpenGl/Win32.c similarity index 100% rename from G3D/Engine/Drivers/OpenGl/Win32.c rename to G3D/Drivers/OpenGl/Win32.c diff --git a/G3D/Engine/Drivers/OpenGl/Win32.h b/G3D/Drivers/OpenGl/Win32.h similarity index 100% rename from G3D/Engine/Drivers/OpenGl/Win32.h rename to G3D/Drivers/OpenGl/Win32.h diff --git a/G3D/Engine/Drivers/OpenGl/glext.h b/G3D/Drivers/OpenGl/glext.h similarity index 100% rename from G3D/Engine/Drivers/OpenGl/glext.h rename to G3D/Drivers/OpenGl/glext.h diff --git a/G3D/Engine/Drivers/SoftDrv/3dnowspan.h b/G3D/Drivers/SoftDrv/3dnowspan.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/3dnowspan.h rename to G3D/Drivers/SoftDrv/3dnowspan.h diff --git a/G3D/Engine/Drivers/SoftDrv/REGISTER.H b/G3D/Drivers/SoftDrv/REGISTER.H similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/REGISTER.H rename to G3D/Drivers/SoftDrv/REGISTER.H diff --git a/G3D/Engine/Drivers/SoftDrv/RENDER.H b/G3D/Drivers/SoftDrv/RENDER.H similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/RENDER.H rename to G3D/Drivers/SoftDrv/RENDER.H diff --git a/G3D/Engine/Drivers/SoftDrv/SAL.H b/G3D/Drivers/SoftDrv/SAL.H similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/SAL.H rename to G3D/Drivers/SoftDrv/SAL.H diff --git a/G3D/Engine/Drivers/SoftDrv/SCENE.H b/G3D/Drivers/SoftDrv/SCENE.H similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/SCENE.H rename to G3D/Drivers/SoftDrv/SCENE.H diff --git a/G3D/Engine/Drivers/SoftDrv/SOFTDRV.H b/G3D/Drivers/SoftDrv/SOFTDRV.H similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/SOFTDRV.H rename to G3D/Drivers/SoftDrv/SOFTDRV.H diff --git a/G3D/Engine/Drivers/SoftDrv/SPAN.H b/G3D/Drivers/SoftDrv/SPAN.H similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/SPAN.H rename to G3D/Drivers/SoftDrv/SPAN.H diff --git a/G3D/Engine/Drivers/SoftDrv/SYSTEM.H b/G3D/Drivers/SoftDrv/SYSTEM.H similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/SYSTEM.H rename to G3D/Drivers/SoftDrv/SYSTEM.H diff --git a/G3D/Engine/Drivers/SoftDrv/W32SAL.CPP b/G3D/Drivers/SoftDrv/W32SAL.CPP similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/W32SAL.CPP rename to G3D/Drivers/SoftDrv/W32SAL.CPP diff --git a/G3D/Engine/Drivers/SoftDrv/amdspan.asm b/G3D/Drivers/SoftDrv/amdspan.asm similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/amdspan.asm rename to G3D/Drivers/SoftDrv/amdspan.asm diff --git a/G3D/Engine/Drivers/SoftDrv/dmodes.c b/G3D/Drivers/SoftDrv/dmodes.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/dmodes.c rename to G3D/Drivers/SoftDrv/dmodes.c diff --git a/G3D/Engine/Drivers/SoftDrv/dmodes.h b/G3D/Drivers/SoftDrv/dmodes.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/dmodes.h rename to G3D/Drivers/SoftDrv/dmodes.h diff --git a/G3D/Engine/Drivers/SoftDrv/drawspan.c b/G3D/Drivers/SoftDrv/drawspan.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/drawspan.c rename to G3D/Drivers/SoftDrv/drawspan.c diff --git a/G3D/Engine/Drivers/SoftDrv/drawspan.h b/G3D/Drivers/SoftDrv/drawspan.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/drawspan.h rename to G3D/Drivers/SoftDrv/drawspan.h diff --git a/G3D/Engine/Drivers/SoftDrv/register.c b/G3D/Drivers/SoftDrv/register.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/register.c rename to G3D/Drivers/SoftDrv/register.c diff --git a/G3D/Engine/Drivers/SoftDrv/render.c b/G3D/Drivers/SoftDrv/render.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/render.c rename to G3D/Drivers/SoftDrv/render.c diff --git a/G3D/Engine/Drivers/SoftDrv/scene.c b/G3D/Drivers/SoftDrv/scene.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/scene.c rename to G3D/Drivers/SoftDrv/scene.c diff --git a/G3D/Engine/Drivers/SoftDrv/softdrv.c b/G3D/Drivers/SoftDrv/softdrv.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/softdrv.c rename to G3D/Drivers/SoftDrv/softdrv.c diff --git a/G3D/Engine/Drivers/SoftDrv/span.c b/G3D/Drivers/SoftDrv/span.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/span.c rename to G3D/Drivers/SoftDrv/span.c diff --git a/G3D/Engine/Drivers/SoftDrv/system.c b/G3D/Drivers/SoftDrv/system.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/system.c rename to G3D/Drivers/SoftDrv/system.c diff --git a/G3D/Engine/Drivers/SoftDrv/x86span555.c b/G3D/Drivers/SoftDrv/x86span555.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/x86span555.c rename to G3D/Drivers/SoftDrv/x86span555.c diff --git a/G3D/Engine/Drivers/SoftDrv/x86span555.h b/G3D/Drivers/SoftDrv/x86span555.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/x86span555.h rename to G3D/Drivers/SoftDrv/x86span555.h diff --git a/G3D/Engine/Drivers/SoftDrv/x86span565.c b/G3D/Drivers/SoftDrv/x86span565.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/x86span565.c rename to G3D/Drivers/SoftDrv/x86span565.c diff --git a/G3D/Engine/Drivers/SoftDrv/x86span565.h b/G3D/Drivers/SoftDrv/x86span565.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv/x86span565.h rename to G3D/Drivers/SoftDrv/x86span565.h diff --git a/G3D/Engine/Drivers/SoftDrv2/CPUInfo.c b/G3D/Drivers/SoftDrv2/CPUInfo.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/CPUInfo.c rename to G3D/Drivers/SoftDrv2/CPUInfo.c diff --git a/G3D/Engine/Drivers/SoftDrv2/CPUInfo.h b/G3D/Drivers/SoftDrv2/CPUInfo.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/CPUInfo.h rename to G3D/Drivers/SoftDrv2/CPUInfo.h diff --git a/G3D/Engine/Drivers/SoftDrv2/DDRAWDisplay.c b/G3D/Drivers/SoftDrv2/DDRAWDisplay.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DDRAWDisplay.c rename to G3D/Drivers/SoftDrv2/DDRAWDisplay.c diff --git a/G3D/Engine/Drivers/SoftDrv2/DDRAWDisplay.h b/G3D/Drivers/SoftDrv2/DDRAWDisplay.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DDRAWDisplay.h rename to G3D/Drivers/SoftDrv2/DDRAWDisplay.h diff --git a/G3D/Engine/Drivers/SoftDrv2/DIBDisplay.c b/G3D/Drivers/SoftDrv2/DIBDisplay.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DIBDisplay.c rename to G3D/Drivers/SoftDrv2/DIBDisplay.c diff --git a/G3D/Engine/Drivers/SoftDrv2/DIBDisplay.h b/G3D/Drivers/SoftDrv2/DIBDisplay.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DIBDisplay.h rename to G3D/Drivers/SoftDrv2/DIBDisplay.h diff --git a/G3D/Engine/Drivers/SoftDrv2/DisplayModeInfo.c b/G3D/Drivers/SoftDrv2/DisplayModeInfo.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DisplayModeInfo.c rename to G3D/Drivers/SoftDrv2/DisplayModeInfo.c diff --git a/G3D/Engine/Drivers/SoftDrv2/DisplayModeInfo.h b/G3D/Drivers/SoftDrv2/DisplayModeInfo.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DisplayModeInfo.h rename to G3D/Drivers/SoftDrv2/DisplayModeInfo.h diff --git a/G3D/Engine/Drivers/SoftDrv2/DrawDecal.c b/G3D/Drivers/SoftDrv2/DrawDecal.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DrawDecal.c rename to G3D/Drivers/SoftDrv2/DrawDecal.c diff --git a/G3D/Engine/Drivers/SoftDrv2/DrawDecal.h b/G3D/Drivers/SoftDrv2/DrawDecal.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/DrawDecal.h rename to G3D/Drivers/SoftDrv2/DrawDecal.h diff --git a/G3D/Engine/Drivers/SoftDrv2/SWTHandle.c b/G3D/Drivers/SoftDrv2/SWTHandle.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/SWTHandle.c rename to G3D/Drivers/SoftDrv2/SWTHandle.c diff --git a/G3D/Engine/Drivers/SoftDrv2/SWTHandle.h b/G3D/Drivers/SoftDrv2/SWTHandle.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/SWTHandle.h rename to G3D/Drivers/SoftDrv2/SWTHandle.h diff --git a/G3D/Engine/Drivers/SoftDrv2/Softdrv.h b/G3D/Drivers/SoftDrv2/Softdrv.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/Softdrv.h rename to G3D/Drivers/SoftDrv2/Softdrv.h diff --git a/G3D/Engine/Drivers/SoftDrv2/Span.h b/G3D/Drivers/SoftDrv2/Span.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/Span.h rename to G3D/Drivers/SoftDrv2/Span.h diff --git a/G3D/Engine/Drivers/SoftDrv2/SpanBuffer.c b/G3D/Drivers/SoftDrv2/SpanBuffer.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/SpanBuffer.c rename to G3D/Drivers/SoftDrv2/SpanBuffer.c diff --git a/G3D/Engine/Drivers/SoftDrv2/SpanBuffer.h b/G3D/Drivers/SoftDrv2/SpanBuffer.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/SpanBuffer.h rename to G3D/Drivers/SoftDrv2/SpanBuffer.h diff --git a/G3D/Engine/Drivers/SoftDrv2/SpanEdges_Factory.h b/G3D/Drivers/SoftDrv2/SpanEdges_Factory.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/SpanEdges_Factory.h rename to G3D/Drivers/SoftDrv2/SpanEdges_Factory.h diff --git a/G3D/Engine/Drivers/SoftDrv2/Span_AffineLoop.h b/G3D/Drivers/SoftDrv2/Span_AffineLoop.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/Span_AffineLoop.h rename to G3D/Drivers/SoftDrv2/Span_AffineLoop.h diff --git a/G3D/Engine/Drivers/SoftDrv2/Span_Factory.h b/G3D/Drivers/SoftDrv2/Span_Factory.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/Span_Factory.h rename to G3D/Drivers/SoftDrv2/Span_Factory.h diff --git a/G3D/Engine/Drivers/SoftDrv2/TRaster.c b/G3D/Drivers/SoftDrv2/TRaster.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/TRaster.c rename to G3D/Drivers/SoftDrv2/TRaster.c diff --git a/G3D/Engine/Drivers/SoftDrv2/Triangle.c b/G3D/Drivers/SoftDrv2/Triangle.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/Triangle.c rename to G3D/Drivers/SoftDrv2/Triangle.c diff --git a/G3D/Engine/Drivers/SoftDrv2/display.c b/G3D/Drivers/SoftDrv2/display.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/display.c rename to G3D/Drivers/SoftDrv2/display.c diff --git a/G3D/Engine/Drivers/SoftDrv2/display.h b/G3D/Drivers/SoftDrv2/display.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/display.h rename to G3D/Drivers/SoftDrv2/display.h diff --git a/G3D/Engine/Drivers/SoftDrv2/rop.h b/G3D/Drivers/SoftDrv2/rop.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/rop.h rename to G3D/Drivers/SoftDrv2/rop.h diff --git a/G3D/Engine/Drivers/SoftDrv2/softdrv.c b/G3D/Drivers/SoftDrv2/softdrv.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/softdrv.c rename to G3D/Drivers/SoftDrv2/softdrv.c diff --git a/G3D/Engine/Drivers/SoftDrv2/span.c b/G3D/Drivers/SoftDrv2/span.c similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/span.c rename to G3D/Drivers/SoftDrv2/span.c diff --git a/G3D/Engine/Drivers/SoftDrv2/traster.h b/G3D/Drivers/SoftDrv2/traster.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/traster.h rename to G3D/Drivers/SoftDrv2/traster.h diff --git a/G3D/Engine/Drivers/SoftDrv2/triangle.h b/G3D/Drivers/SoftDrv2/triangle.h similarity index 100% rename from G3D/Engine/Drivers/SoftDrv2/triangle.h rename to G3D/Drivers/SoftDrv2/triangle.h diff --git a/G3D/Engine/Drivers/WireFrame/D3d_err.cpp b/G3D/Drivers/WireFrame/D3d_err.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3d_err.cpp rename to G3D/Drivers/WireFrame/D3d_err.cpp diff --git a/G3D/Engine/Drivers/WireFrame/D3d_err.h b/G3D/Drivers/WireFrame/D3d_err.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3d_err.h rename to G3D/Drivers/WireFrame/D3d_err.h diff --git a/G3D/Engine/Drivers/WireFrame/D3d_fx.cpp b/G3D/Drivers/WireFrame/D3d_fx.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3d_fx.cpp rename to G3D/Drivers/WireFrame/D3d_fx.cpp diff --git a/G3D/Engine/Drivers/WireFrame/D3d_fx.h b/G3D/Drivers/WireFrame/D3d_fx.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3d_fx.h rename to G3D/Drivers/WireFrame/D3d_fx.h diff --git a/G3D/Engine/Drivers/WireFrame/D3d_main.cpp b/G3D/Drivers/WireFrame/D3d_main.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3d_main.cpp rename to G3D/Drivers/WireFrame/D3d_main.cpp diff --git a/G3D/Engine/Drivers/WireFrame/D3d_main.h b/G3D/Drivers/WireFrame/D3d_main.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3d_main.h rename to G3D/Drivers/WireFrame/D3d_main.h diff --git a/G3D/Engine/Drivers/WireFrame/D3dcache.cpp b/G3D/Drivers/WireFrame/D3dcache.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3dcache.cpp rename to G3D/Drivers/WireFrame/D3dcache.cpp diff --git a/G3D/Engine/Drivers/WireFrame/D3dcache.h b/G3D/Drivers/WireFrame/D3dcache.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3dcache.h rename to G3D/Drivers/WireFrame/D3dcache.h diff --git a/G3D/Engine/Drivers/WireFrame/D3ddrv.cpp b/G3D/Drivers/WireFrame/D3ddrv.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3ddrv.cpp rename to G3D/Drivers/WireFrame/D3ddrv.cpp diff --git a/G3D/Engine/Drivers/WireFrame/D3ddrv.h b/G3D/Drivers/WireFrame/D3ddrv.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/D3ddrv.h rename to G3D/Drivers/WireFrame/D3ddrv.h diff --git a/G3D/Engine/Drivers/WireFrame/DDMemMgr.c b/G3D/Drivers/WireFrame/DDMemMgr.c similarity index 100% rename from G3D/Engine/Drivers/WireFrame/DDMemMgr.c rename to G3D/Drivers/WireFrame/DDMemMgr.c diff --git a/G3D/Engine/Drivers/WireFrame/DDMemMgr.h b/G3D/Drivers/WireFrame/DDMemMgr.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/DDMemMgr.h rename to G3D/Drivers/WireFrame/DDMemMgr.h diff --git a/G3D/Engine/Drivers/WireFrame/Gspan.cpp b/G3D/Drivers/WireFrame/Gspan.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Gspan.cpp rename to G3D/Drivers/WireFrame/Gspan.cpp diff --git a/G3D/Engine/Drivers/WireFrame/Gspan.h b/G3D/Drivers/WireFrame/Gspan.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Gspan.h rename to G3D/Drivers/WireFrame/Gspan.h diff --git a/G3D/Engine/Drivers/WireFrame/Pcache.cpp b/G3D/Drivers/WireFrame/Pcache.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Pcache.cpp rename to G3D/Drivers/WireFrame/Pcache.cpp diff --git a/G3D/Engine/Drivers/WireFrame/Pcache.h b/G3D/Drivers/WireFrame/Pcache.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Pcache.h rename to G3D/Drivers/WireFrame/Pcache.h diff --git a/G3D/Engine/Drivers/WireFrame/Readme.now b/G3D/Drivers/WireFrame/Readme.now similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Readme.now rename to G3D/Drivers/WireFrame/Readme.now diff --git a/G3D/Engine/Drivers/WireFrame/Render.cpp b/G3D/Drivers/WireFrame/Render.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Render.cpp rename to G3D/Drivers/WireFrame/Render.cpp diff --git a/G3D/Engine/Drivers/WireFrame/Render.h b/G3D/Drivers/WireFrame/Render.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Render.h rename to G3D/Drivers/WireFrame/Render.h diff --git a/G3D/Engine/Drivers/WireFrame/Scene.cpp b/G3D/Drivers/WireFrame/Scene.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Scene.cpp rename to G3D/Drivers/WireFrame/Scene.cpp diff --git a/G3D/Engine/Drivers/WireFrame/Scene.h b/G3D/Drivers/WireFrame/Scene.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/Scene.h rename to G3D/Drivers/WireFrame/Scene.h diff --git a/G3D/Engine/Drivers/WireFrame/THandle.cpp b/G3D/Drivers/WireFrame/THandle.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/THandle.cpp rename to G3D/Drivers/WireFrame/THandle.cpp diff --git a/G3D/Engine/Drivers/WireFrame/THandle.h b/G3D/Drivers/WireFrame/THandle.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/THandle.h rename to G3D/Drivers/WireFrame/THandle.h diff --git a/G3D/Engine/Drivers/WireFrame/TPage.h b/G3D/Drivers/WireFrame/TPage.h similarity index 100% rename from G3D/Engine/Drivers/WireFrame/TPage.h rename to G3D/Drivers/WireFrame/TPage.h diff --git a/G3D/Engine/Drivers/WireFrame/tpage.cpp b/G3D/Drivers/WireFrame/tpage.cpp similarity index 100% rename from G3D/Engine/Drivers/WireFrame/tpage.cpp rename to G3D/Drivers/WireFrame/tpage.cpp diff --git a/G3D/Engine/Logo/electric.c b/G3D/Electric.c similarity index 95% rename from G3D/Engine/Logo/electric.c rename to G3D/Electric.c index 6dca954..88a24e7 100644 --- a/G3D/Engine/Logo/electric.c +++ b/G3D/Electric.c @@ -23,11 +23,10 @@ #include #include -#include "genesis.h" +#include "Genesis.h" #include "ErrorLog.h" - #include "Electric.h" -#include "ram.h" +#include "Ram.h" static int logBase2(int n) { diff --git a/G3D/Engine/Logo/electric.h b/G3D/Electric.h similarity index 100% rename from G3D/Engine/Logo/electric.h rename to G3D/Electric.h diff --git a/G3D/Engine/Engine.c b/G3D/Engine.c similarity index 96% rename from G3D/Engine/Engine.c rename to G3D/Engine.c index 77d2cb5..835f63e 100644 --- a/G3D/Engine/Engine.c +++ b/G3D/Engine.c @@ -29,15 +29,14 @@ #include // _MAX_PATH #include // getcwd -#include "engine.h" - -#include "Errorlog.h" +#include "Engine.h" +#include "ErrorLog.h" #include "DCommon.h" #include "BitmapList.h" #include "Bitmap.h" #include "Bitmap._h" #include "World.h" -#include "log.h" +#include "Log.h" //#define DO_ADDREMOVE_MESSAGES #ifndef _DEBUG @@ -1984,7 +1983,8 @@ static void Engine_DrawFontBuffer(geEngine *Engine) static void SubLarge(LARGE_INTEGER *start, LARGE_INTEGER *end, LARGE_INTEGER *delta) { - _asm { + // FIXME: replace this by gcc acm code or real C + /*_asm { mov ebx,dword ptr [start] mov esi,dword ptr [end] @@ -1997,7 +1997,7 @@ static void SubLarge(LARGE_INTEGER *start, LARGE_INTEGER *end, LARGE_INTEGER *de mov ebx,dword ptr [delta] mov dword ptr [ebx+0],eax mov dword ptr [ebx+4],edx - } + }*/ } diff --git a/G3D/Engine/Engine.h b/G3D/Engine.h similarity index 96% rename from G3D/Engine/Engine.h rename to G3D/Engine.h index 77d8fd5..ebf052a 100644 --- a/G3D/Engine/Engine.h +++ b/G3D/Engine.h @@ -23,10 +23,10 @@ #ifndef GE_ENGINE_H #define GE_ENGINE_H -#include "include/Genesis.h" +#include "Genesis.h" #include "System.h" -#include "G3D/World/World.h" -#include "include/Bitmap.h" +#include "World.h" +#include "Bitmap.h" #include "BitmapList.h" #ifdef __cplusplus diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv.mak b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv.mak deleted file mode 100644 index 454edfc..0000000 --- a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv.mak +++ /dev/null @@ -1,284 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Based on D3DDrv.dsp -!IF "$(CFG)" == "" -CFG=D3DDrv - Win32 Debug -!MESSAGE No configuration specified. Defaulting to D3DDrv - Win32 Debug. -!ENDIF - -!IF "$(CFG)" != "D3DDrv - Win32 Release" && "$(CFG)" != "D3DDrv - Win32 Debug" -!MESSAGE Invalid configuration "$(CFG)" specified. -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv.mak" CFG="D3DDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "D3DDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "D3DDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE -!ERROR An invalid configuration is specified. -!ENDIF - -!IF "$(OS)" == "Windows_NT" -NULL= -!ELSE -NULL=nul -!ENDIF - -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "D3DDrv - Win32 Release" - -OUTDIR=.\Release -INTDIR=.\Release -# Begin Custom Macros -OutDir=.\Release -# End Custom Macros - -ALL : "$(OUTDIR)\D3DDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\D3d_err.obj" - -@erase "$(INTDIR)\D3d_fx.obj" - -@erase "$(INTDIR)\D3d_main.obj" - -@erase "$(INTDIR)\D3dcache.obj" - -@erase "$(INTDIR)\D3ddrv.obj" - -@erase "$(INTDIR)\DDMemMgr.obj" - -@erase "$(INTDIR)\Gspan.obj" - -@erase "$(INTDIR)\Pcache.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\Scene.obj" - -@erase "$(INTDIR)\THandle.obj" - -@erase "$(INTDIR)\tpage.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(OUTDIR)\D3DDrv.dll" - -@erase "$(OUTDIR)\D3DDrv.exp" - -@erase "$(OUTDIR)\D3DDrv.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MT /W3 /GX /O2 /X /I "..\..\.." /I "..\..\..\..\SdkDx6Sdk\Include" /I "..\\" /I "..\..\..\..\Sdk\Dx6Sdk\Include" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\Math" /I "..\..\..\Bitmap" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fp"$(INTDIR)\D3DDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c -MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\D3DDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:no /pdb:"$(OUTDIR)\D3DDrv.pdb" /machine:I386 /nodefaultlib /out:"$(OUTDIR)\D3DDrv.dll" /implib:"$(OUTDIR)\D3DDrv.lib" -LINK32_OBJS= \ - "$(INTDIR)\D3d_err.obj" \ - "$(INTDIR)\D3d_fx.obj" \ - "$(INTDIR)\D3d_main.obj" \ - "$(INTDIR)\D3dcache.obj" \ - "$(INTDIR)\D3ddrv.obj" \ - "$(INTDIR)\DDMemMgr.obj" \ - "$(INTDIR)\Gspan.obj" \ - "$(INTDIR)\Pcache.obj" \ - "$(INTDIR)\Render.obj" \ - "$(INTDIR)\Scene.obj" \ - "$(INTDIR)\THandle.obj" \ - "$(INTDIR)\tpage.obj" \ - "..\..\..\..\MSDev60\lib\Wininet.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmt.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\ddraw.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\d3dim.lib" - -"$(OUTDIR)\D3DDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ELSEIF "$(CFG)" == "D3DDrv - Win32 Debug" - -OUTDIR=.\Debug -INTDIR=.\Debug -# Begin Custom Macros -OutDir=.\Debug -# End Custom Macros - -ALL : "$(OUTDIR)\D3DDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\D3d_err.obj" - -@erase "$(INTDIR)\D3d_fx.obj" - -@erase "$(INTDIR)\D3d_main.obj" - -@erase "$(INTDIR)\D3dcache.obj" - -@erase "$(INTDIR)\D3ddrv.obj" - -@erase "$(INTDIR)\DDMemMgr.obj" - -@erase "$(INTDIR)\Gspan.obj" - -@erase "$(INTDIR)\Pcache.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\Scene.obj" - -@erase "$(INTDIR)\THandle.obj" - -@erase "$(INTDIR)\tpage.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\vc60.pdb" - -@erase "$(OUTDIR)\D3DDrv.dll" - -@erase "$(OUTDIR)\D3DDrv.exp" - -@erase "$(OUTDIR)\D3DDrv.ilk" - -@erase "$(OUTDIR)\D3DDrv.lib" - -@erase "$(OUTDIR)\D3DDrv.pdb" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MTd /W3 /GX /Zi /Od /X /I "..\..\.." /I "..\..\..\Math" /I "..\\" /I "..\..\..\..\Sdk\Dx6Sdk\Include" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\Bitmap" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fp"$(INTDIR)\D3DDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c -MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\D3DDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:yes /pdb:"$(OUTDIR)\D3DDrv.pdb" /debug /machine:I386 /nodefaultlib /out:"$(OUTDIR)\D3DDrv.dll" /implib:"$(OUTDIR)\D3DDrv.lib" /pdbtype:sept -LINK32_OBJS= \ - "$(INTDIR)\D3d_err.obj" \ - "$(INTDIR)\D3d_fx.obj" \ - "$(INTDIR)\D3d_main.obj" \ - "$(INTDIR)\D3dcache.obj" \ - "$(INTDIR)\D3ddrv.obj" \ - "$(INTDIR)\DDMemMgr.obj" \ - "$(INTDIR)\Gspan.obj" \ - "$(INTDIR)\Pcache.obj" \ - "$(INTDIR)\Render.obj" \ - "$(INTDIR)\Scene.obj" \ - "$(INTDIR)\THandle.obj" \ - "$(INTDIR)\tpage.obj" \ - "..\..\..\..\MSDev60\lib\Wininet.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmtd.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\ddraw.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\d3dim.lib" - -"$(OUTDIR)\D3DDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ENDIF - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - - -!IF "$(NO_EXTERNAL_DEPS)" != "1" -!IF EXISTS("D3DDrv.dep") -!INCLUDE "D3DDrv.dep" -!ELSE -!MESSAGE Warning: cannot find "D3DDrv.dep" -!ENDIF -!ENDIF - - -!IF "$(CFG)" == "D3DDrv - Win32 Release" || "$(CFG)" == "D3DDrv - Win32 Debug" -SOURCE=.\D3d_err.cpp - -"$(INTDIR)\D3d_err.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3d_fx.cpp - -"$(INTDIR)\D3d_fx.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3d_main.cpp - -"$(INTDIR)\D3d_main.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3dcache.cpp - -"$(INTDIR)\D3dcache.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3ddrv.cpp - -"$(INTDIR)\D3ddrv.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\DDMemMgr.c - -"$(INTDIR)\DDMemMgr.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Gspan.cpp - -"$(INTDIR)\Gspan.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Pcache.cpp - -"$(INTDIR)\Pcache.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Render.cpp - -"$(INTDIR)\Render.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Scene.cpp - -"$(INTDIR)\Scene.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\THandle.cpp - -"$(INTDIR)\THandle.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\tpage.cpp - -"$(INTDIR)\tpage.obj" : $(SOURCE) "$(INTDIR)" - - - -!ENDIF - diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv.ncb b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv.ncb deleted file mode 100644 index c9427db7239d057c1dfaeb71973217c8f15bf2af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214016 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 z 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 WXj-6Yfu;qT7HC?aX@S2(3;ZAMt4X5( diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv.opt b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv.opt deleted file mode 100644 index d3ac452c1a93dc9dbb0ea43853a341b169d9b96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51712 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 diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsp b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsp deleted file mode 100644 index b7bd355..0000000 --- a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsp +++ /dev/null @@ -1,206 +0,0 @@ -# Microsoft Developer Studio Project File - Name="D3DDrv7x" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=D3DDrv7x - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv7x.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv7x.mak" CFG="D3DDrv7x - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "D3DDrv7x - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "D3DDrv7x - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/Genesis10/Source/Engine/Drivers/D3DDrv7x", DVPBAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "D3DDrv7x - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV7x_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /YX /FD /c -# SUBTRACT CPP /X -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -# SUBTRACT RSC /x -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 Wininet.lib comdlg32.lib gdi32.lib kernel32.lib libcmt.lib libcmtd.lib oldnames.lib shell32.lib user32.lib uuid.lib advapi32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /machine:I386 -# SUBTRACT LINK32 /nodefaultlib - -!ELSEIF "$(CFG)" == "D3DDrv7x - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV7x_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /Zi /Od /X /I "..\..\.." /I "..\..\..\Math" /I "..\\" /I "e:\mssdk7a\include" /I "..\D3DDrv7x" /I "..\..\..\Support" /I "e:\program files\microsoft visual studio\vc98\include" /I "..\..\..\Bitmap" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV7x_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /x /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /debug /machine:I386 /nodefaultlib /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "D3DDrv7x - Win32 Release" -# Name "D3DDrv7x - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\D3d_err.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_err.h -# End Source File -# Begin Source File - -SOURCE=.\D3d_fx.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_fx.h -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.h -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.h -# End Source File -# Begin Source File - -SOURCE=.\D3ddrv7x.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3ddrv7x.h -# End Source File -# Begin Source File - -SOURCE=..\Dcommon.h -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.c -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.h -# End Source File -# Begin Source File - -SOURCE=.\Gspan.cpp -# End Source File -# Begin Source File - -SOURCE=.\Gspan.h -# End Source File -# Begin Source File - -SOURCE=.\Pcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\Pcache.h -# End Source File -# Begin Source File - -SOURCE=.\Render.cpp -# End Source File -# Begin Source File - -SOURCE=.\Render.h -# End Source File -# Begin Source File - -SOURCE=.\Scene.cpp -# End Source File -# Begin Source File - -SOURCE=.\Scene.h -# End Source File -# Begin Source File - -SOURCE=.\THandle.cpp -# End Source File -# Begin Source File - -SOURCE=.\THandle.h -# End Source File -# Begin Source File - -SOURCE=.\tpage.cpp -# End Source File -# Begin Source File - -SOURCE=.\TPage.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Group "Libraries" - -# PROP Default_Filter "" -# End Group -# End Target -# End Project diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsw b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsw deleted file mode 100644 index f94560c..0000000 --- a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "D3DDrv7x"=".\D3DDrv7x.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.ncb b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.ncb deleted file mode 100644 index e6d0618fddd74c393b1c20ed64e3442a90e834d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230400 zcmeEP2Vhl2);@FdUJ^n}=$%K$&MAHI2r7b76p$if z7Zeo{#k$sA3*xG~y6W22)zx)%E&Hqg_szX`-c0}%SGK-f4s*ZhcixmUXU@!ImlRf( zSC!AH4y5);?a?DpQCU8>vS5CosGz!Fc0pAz(7$)zzV%~TjUFi?J`p8vN_>P!lK*S< zIIO~d;Sva!z<+WHv_s~jWT}Gje-&usUw-!;-@jA;_g(leTms<|2$w*(1i~c{E`e|f zgi9b?0^t$}mq54#!X*$cfp7_gOCVeV;Sva!K)3|LB@ixwa0!GLlW&{N>f>@YfnI@0C1nZy18Kq8 z3+CD#+wr{Q1xtfCq^(BpmzFr)v7SCMA#M86{L|pY;GmAnKb>Iknq_|ifseueoLK0e zoboaGmlH_)82rhP4}I+3^F+h{)NemF|M25eKNf%R1EG&O{{KLjgfyp)x+8GS@%=%trhFS+~=ck?w#`BE9^<@~I z0|qycp?H=Nw`2Yq%0N8H#ywVg;+bS{ob<<2YH%Y-z;m6!jb#X)cKJMGmHBBdz1)DZY{sCHd~+Idu;!0<&gELb%ycZUiMiBtoDfCcJCm&tedSU6MrXp z&3el^Y~t%GPg=jWKB4~{rhkeYwqCY&82>#bM_s6HH@LT4qApiooAmligw@m9Y48BK zQr)GN89Ye(TWQvpOi!2h5P3&^tzu37P`2tRb%4K*{=H9=NqBy3ey`y&1k3e0X zA(xu`q{v~MP21e0mm%|IgS=?)DA_FgWwG%;M&6aLWro2y@|`5BhNe8n$^G&xv4+(X zOEm!17Yo0!CDEWdpt_(KP*YGdP;*cdP#mZQ{5J+Q5-a``nDL+jVA{nu^Suav#1M>S0%835xpOghZu3!59O>5h}FY;b$iDbiMScZEJKlUM*5hzz; z`uCa)>-wWv*~$*X_nX_=`Rax|%xQ1iGe2&=y!Lxx&$Q@HGX^H(pkMc$dFFS1($Kc= zfOopRjy{8NC4#1d82%l{bp7zV`Of??PQEj(Yh*+hb}!N0+uZtxsg>tE~t%HX-O z*}vJp(%@oQ?_cllZE%TP;lINFmcjGn8vix^Dud6EtNd5_;|wm9HU2gJrwyJjSNpH_ zud2`XWd)i@r5uUrRQJz*o~A0mRdPC>b5I8CPnt-zOvf|R-~}=b&t>>FbeV8pC_Q6( z#w4I4w&Ocn=30NV9&X^`bLBntjfz0zC@%QFK>Edui&=;CY`j7)k9jWU8^mwpRWdQ= zl9>6%|K-xzH`n(q>XjY;S~(bD`R+6LD!ItF$rq3O*zOypXT;!$BPKuB$WH%T{-+S1 z{e7EdwSTpLocW$DvdX{8pK9<{jk_6qt;SjUdzk<2(jn^HsEc*_#5-hPJL=Rrl*vLyiRf4-1kB7GaU31%7J~xA`I@wBZi@yYw~>u$7A%zFr+1(tBDhB+#G${8e*|= zGxT$M{9b6|rs(@_gS*o17Px^1>JacRL9_dK<^RYa`bzCnK17ejziuGZB$TJ1KehkR z5@Zkv8P#t1F_8xmh7bRROCVeVKX(b}_U^QA^5fq2&i=sV*O_h$JfHooSh1Bp@kKG3 zy~x|ZTswRjnD$@7B=6b`qh1sA58=OX34}}F-?s$x`0uoTGyXgHxZ}UWADHofJNbc{ z<9`!;GUvnl(MynjARd6{J#-Q-9)z*J1%`MRbAG+iw-e)yBQ4Z1-7y2gAJ?ILe@WYVy}yeiMCZ9S6g`g`9!sTd-C( zKipDg<8d&)ua$JPhFCM~_~E~eRN!$i+}p{py64pWGgvV@e0!OP$H8z9$hPPgqBHIJ z1j2U$cUvS5hI>~@i`XBLV7mi%lPz^VspDYy?~eKUe3=NA&@R7IWNn=dbsP-$cqzrx z!SM4vqzsRP5noUFyv~<(cANNn$+uRM2nQp4Zz;rcyZ%1@o_)k`wYK8*??K#8-j4bt zs>0y@5*fKKGFqoc_XLTI>KOG$oj>AJIOr9*T@w1bgez7*qe+b5a-<+=Hvkw^g&J3&%OpqH4o+;z;ylC(& zNIoV?1jGP#_yW1kf1Up>BTt(xTm4)8(+w_^P5w>(SQEYo@~54Cul#R|e@hMd-$wt& z8uGs#{v9>sf0PG$<$shPdgXuH{o8BE|0oai%Ks=o^veIX`M1@O|GghG=pT~*CB)#d z$7hu9*)q@is)qdU0}PBI`QLIG7Bk%=|63_rWB%Zg|E-pSm`xt}-x}%Wo9B`Lt&>9$ zevkZby{zNuP*BkNj`5+~|MbBmdi?<*gz4-&QS84axtm)i@;o+oo|y{OTH%L8SJCFSDMv3xI^T_{hlaKr=G9>@o zTTA}8Pks}rqC)b&yK2e*?ye>OyGK$YQX(t``JaOPPeJ|{5BXm)X5{kk z^dFCBrzd<5>0$VDx_88*xnKuP8`7VC&Y(;0j^?B0YCQ`q=`26 z%Qxazzl2QF#?kVDd?Du;Tvr~IKVS{ab+0eIRA1H2;D(r;43|8E8$qf&K^{Y7c6?2x zj%uU+&&1b4ejyv>Bjdj{xT(c5#JC4!i##ZQF}S02S3T5=#(!t&q`In=26vTqs)H(n zf6AjNAN>kX6EOca?vC}UccrVrr^q{aS{wiIdVaIr;2z)@Q_)7;@I56;MJcYed;@BP zbosu?F%Ki$TOit90&~6dzRz(V?3lA)a?OeUj)2|-@f|;h)OEsm-_v224VnNdaNONA zUvuIirYyQG@=EHC_gg@;3(5a?*OLF=P)q)QV=ejrZMEe8N4Ni)^8X)h|3?15-Xs6t zfc77Y_8)=vkM(E^bHp0*|2mHRf4w9BUyt^`{@-PLRL4EV^{|+|%zh%1{{@-yo z@zJ>zHl*ZqUzzZ2$&x_=1T@pqQa_I%%QXMeIB;W$5Mc&#s> zLYVpmr;S4UTtIg}T6>miP27vP4rX{~%ctny5Cph^yd|GYFS?H-Zi@E%hTMhuTTzn8 zNZ7k|m3Gmzh8uO*P#q! zhAtb%!aomfn&WU4da@>Rx9~3y_V^1VC28{*|E*a&N<~8|f`v4nBt^$|jz+b>S9JE# zQgQ=JV|~6@AEeH4(dWl55BQQ}tt*x;T^?8}alYt|DY8_OmIl(IeMliXHceElFBuuZ zU&`lv1oOO@k~%z^~%Z&Kci+%3oi|$um24xgxD&$EM3Vr};X>*4chl z=TS+%xFp}2QJq&_7hjSYJ!V|T&S}eI<5FVn9N7td+lA$2sny8Sn^=Dzf{wH~WCHm0 zYv*KnZHu3Zx&DZM0W@2bz>Cr!%WcHTz@xEtx!l26en)#6C66?--C0t3m;t=%gr5Zb z8+k)28{6*FfTzezBTpa>;BnU*h$(N-<3F5;*`E1fZ12Qu?~eQ}cA6+X-Z8(Z!f>~c z+ZSaRJac`08p`T&JP#V|lTCQO#1e$jAHb;)**((#vK!A-27O zch&OH2?lr5^2`qm?vDPdN(Pwlr^q5a&l~r6Ew9~b%AKt;f`|Q&-M*91`{c@WVB0-e%iqTsoTBvw=NX);^#z9- zoCf|qOZQ)PeCg=DM#(M4Jp;W1G>IoVI>I7;BY6uzt8Vm}6I)EC0T7uewT7lYtT7#fh z2#&zkC!&rK=MY#8OMdTSv|H*X@tt~pUV4Z8Pa$=$B=eB;-zkt>xcH# zwX9A3VMjg5?)auXF!^nJLDXBMJ&FC2Hy*x|H{!RtdH*f2`+h9*S;uc0+9-)($xpd{ znJ>04H%_L{a<~$Hyad)L{1+~PpQQv!+u8g&ni+buY&ifOU{t#Rnk~lDSu(VZjZwAH zvn9%Rn6OY^keKp1cm18%$O{mjnDVG6Gm!G1lSeqgY@AK(syqx5*W5%Vmi^H*1%P>EJ{ zYZu3Ye_XETVJe3CZv<{=jl7Ed+5V}qdO-eW{I>=-{D#y=dD-r5WvW`O@{yiu$MBuy zZHZR-C|}#XD^_#2O1??IH}w5CTW`YM{@y<5vGb)n^9z0W<{00oKm3Go?}wgyoP2F? zfAscKuouA%pMa5Isth%FfF55zGx;ARZ&~kIolJgDmA_ekw_fM>=-)RHnwo#H9x&fG zOnz-0wg#H;!)1gu%9=r3m*1BxFI%r!Yt8qi$)nbj)^L-*bj`nNN9vO_d$iAuHOH&veOD6VwN&-}di2 zORi9d)T_pSq4bRy7%|-V4~mM2iRfqWT#1e75n*)&pV6|eSQ+FCz=N~~FK}y&SWy`N z!Q5Gc$qRrl*bly-4fuzy;5Ax;?->eyrXhHa0C*dVyaxFp@IsN`M+SlC=+jk?!Htoh zji?hxK&K;Zj<2qM{&&dxt#E$?M7LrP_4HT6ya_~E5&bX>&CMt)nyny}=?c09c$S6z z2QW{>564o*GaBLCxVZn|LJ;F)I^-k1!f)k{$K1z2JBFd1*Q6UU^FWjNrs?i=;5+v^ z@EhGR-D@&ErsdjkT>idqW&BGJAH&dOx@{4+TLujgUuO{GbH9&yPj%9#UHC6t0{@B< z$O>RQZY%iTmd8yY78`RsPb1dya$6p!$8$$sZ{+`Fw*RpH4@)up7cPPSoDy*PdFGhw zaatb${0=eOzjwW#>vLZHK=Svl{x1DQ6XdaP@iV-W89Q_dERy z^^Ns{1&9iZ_6&YlfS0z`&{oQ*6xvz?v0THaIxK^ zAO)Ewo9JG~6{Kj*Uuvwsw+`kz`O=Z`>;5f9ueZn2zmC7Y6v&k_57?*uH^6)-UcP4h z8plE(c$*xiyG}n&^Rq*Ub@)b_-+bTT##+Ah8nA+XFV`cfpX^}7+8ncmy6P_`|1D)b z)-!%dtmAJ3?SM!%6XBa9&wF4V0&%TyIZUouy3`NueD45zt|3z1KpX)~o+Jb2XHFRM zd~|b7t__mEc?s#h1q%QDca?y*J)8CxWPMb6{mp4_z?49?7Pr3rca=i;Yr-Y)zgYtB z^tI)CoPz#JUKNNywET}62ivgTdqWo+V;I2rwpEWcln)LCUak(S(;W9y;CiZ=;#foX zk-(`cQw??E&jEf58hN|>+3w?jAC|}D8YlczV84n{7ddza@Q3nO-QO_2`M@{IgObq8 z4u3vy3pGfs8lrJ5G4+f7W{209uDpjS*Lwa2Q zx(xaXrK(hYZrpuRrpnagh|hNSYx(4NCca3$U*jSZK1$20W(;)wN6YEzbal@l7uS&) zYKDq4;bY`1b(Z4qZO301zxJy#1-}R7ahE~XM16{S2GF&f8i6v zXNQl~`Une*dz>7>v(Df~@(P}I1~-=H@vy$x`Dvo{3sQmY_?l|{fd&RQgS-_w!v;6k z`UZ;)Zh;d5u9ukxx77LutiN{rtx$Wn%39;z8v2=AbbYqn+sI+m=hseg({C$xs5?}* zco(;meQKW?XWZM%ZR$3)!Qg=GQF~NX57&POd00KHzBS=H%Khqod0aiNR-5>G$_wfR)vTKvUoW{zU8M?5_};Qgtx`)2?t{6&YSqTzzH*VeNKG{H z_tWzG4hHv^Ly(6KGdMvWR1c~%&G!$$Tw}j_+TejW59WZn*5E;Muew)FH2E7W8`K81 z$;5Z6JgOd5+l~7W*`zipFyT&pN|Yznlj;HEf2jOY{Zh>^?!)9+^{nb|!k;GV)q3@W z!NX;<+N?e^c!X?GThv$G-T0IA{=AOn_ez$V)y-O{@NE6jW{lU18g`7Q3eQ9tm`oTsj&iEfE zja6ec+~7QEs+y_>roYRVv1+V(ez4m<$4j=#R+k$*L2^~Dy5F?liO}xMQjePcY?9=w zd=+QBlkIz&$o8Nb;q^opw*x+fBp)%AL22YofYNTq4@x|_cPM1+? zl!`Lx&w#%35%sZ2Z>CIC6ZQCJr#B0u+Xr%+=?@DqAAMh@8ax}b)wiY8;6km>c8a=LtR^dt z$9DeDz-Wxe^v|VQKk0zM^EJNR;4+QNO?u^6@0zM|O#BtHR4r9?P#^91&y-1OlHz!8 z<4TFacz@W`k1FWb*HMocT&?k)1~1Tfr@;#~zQEu`m@h}Gbp|iiIN#tUTK~P!;IlNY zGWcwb$$!}SI|tmyU!|@o?_bDY@N_cxT=^8wA58f3q*KX#KTC1~1q8Z66wZq1NAf)0F>3T0d@}alaTR+T1By4PJrO$pcbo z@JeXj-YqX1e2LcIt84HooRG6e+8MkWyPNNjRR&**{jT@QSc5Nwfvl zd%!@rK;4Q48BU{tNALB=!Rb} z<*HmgW9r`qt*_-X{x`~8HCI)e_PR;VQ|GBMroCJ(MXE@VpS1IHjSK=m`J!q6o24uE zXB;$mi*!+4)ajNp(#o(RN zR<%_n249E$AnnxE2Jgc9V+VD!!PiSi)ln@mc(=4y?bQ&2Z;;liwaPa5Mrnif%r^|a z3HwpHt8WdyS$bf9N-LA!Td+T-m-^Va-zul5Q&c_Uew*}EJyj2bZf9_gd{ zsQ1n9vsd%y)U~n8`wlHXyUw(aJ7t!drM8;iYoA`f#geY$|1L?wbCvOr^O*45VEo^s z_33(=`m|r`^HC?rP7ie#&s8Qr2V|kbW5$#FWU*ST-ot#s_J0tv$VF-*+PjVK*ZQFu zrayZ?>yMsm(mSO0dw*^6_n@4k&QV#${UJGDov)gi`uDKRQFGKdlmAELTy?GrnEX8| zg{n|}W5PcMEwKS|!0`LOloC~<)|v2+>-}xdVm!0+`-Il-Tx-HVsr5UXnfyN`)HkFK zmF@p&Xm=#ac2nNZNP#L)FPQxNO6wz1Z^`!mYiQ18=rv9oKdbc(Ip4DJb6TJCDPVg% zeO~L6ZZh}ae}74?z%$FZ{|5RLSBc-? zmt`%Ur;PtspuMq1QtH3v335aqeuNg>ikiU zF934&0I}YVnr`d=Vg3C~>ic1R9;IXJ+fnZ>1(XV+E+O>@PXkf+ko$+mfS|v}GsD_J zpAQE@+UJH*uMhfsT7QrFeAMNG9v>!97Bnkt9l}KThpuBg>Jn1V5jv01im~+sGhssS zkoy)DbRFBJgP@Pt4*G*=7Z%!*y?1FSOzI3Kfo8&e7Kplmg&;>S5IY6zGtA0hmczXQ z=9$pLJR9ah&?3-c&=SxBq<0qFF2MWwpk<)TK$k;LVGYdHpi4okK$n14f>wa81YHGM z3tETp*TcL9vmh=v=g)yvp+7G%HbP##I2j&6L zeR#hE=3dYt(8HhyL63kQ0zC@%$3Xk=ekbT|yx)cVyodL9L4OAQ3G@-@k4XCim>+^Z z0euSk3+Q7hLO(;Af%-&~`)@3?P11a{>BrHI+rXal^HPkNY{%?t*nSo8O3?FgqaEkW zu5Nb7tzcIKS_Ql3L77PB2;z+B2Hg*spTW;g z*mVPDT8EGviSI65j_@CW?gJIW-yVdy2WCrzJB;_mFh>Ia0The*OEaW19P}{Whk`x= zT?Gn)E`=XAUdoboVf-L=P47F$j&|su-b5d|74$6pA3>RQLD^C6#4__zEZo0@8)Z<8 zhkd!5);7GeJZaYxagk5v??Qf4fZr6@ZC=%z753n zP#@sVHo~^h?e2e&q2h?@q+Ip#?SG_{VwtjUP2bbf8i1cm%#Uw!08a= zH-vm30)D!HBmW)RDsd!mTktkn0m!!_Y|Qn+Da4CxO#L5M|Cj#F`JhgCo)5MJ@sr<* z6op+8-DQ=*c3`Tr*{IOb}@IvDrr{#^Uf$jM5Rm!Kz4Q_(< zsdg%r;dS~=!R>UC9SpDY+YH){ou#XZues(Qz5kYcSD}GM{eLg@c@@J>lP|r`s5w~OdvAX|>H|}v-|GAyPjWnKXFmKd3 zMFttn6LGs@PEZ#m#d$$PPy?}sHx=u&CU|cSYJ~U3uxnPMA7LL-2l24)VEGV}_}j71 zA-R1D=LIw1*Y(49%38vI;Syj8@H|g<{yzmfM0q|ZF-Y$4KkVmyHpFqjvmpQH`BB78 zfN%Bh@$3BqI1h}N>qk3aHgd2z|J%Xl{BH-F^S>Qz&i{6>IseSc$2$MJ)l{2bU<>8`+t7L7K79MVp7X$?pnst(eg60Fcppt2 zxxenap7X%#>howq=YcnnKh^!la~^mcR!^3A&I8AZ(>Q;!1KKnCW}M&L6lW7Y=AH)* z+)ST$6FMKfx!mt-=MS9+-a;DJdD3$pcuReLjraWT;noBzbUt`%y`C9554^2D|0Z-E zczan~cfWfcIKD3+zl&~ACv-k|2doI4={f(qv&@QkF(Pz6csIR%>OKFP=ih|R2R{XO z;q;90p8w7BctYoc_mE%LIb5d$Dx(6w$@9Pa#SDmXFv_EsK0haP9(ZqQ717so9(W(U zo*Oz3ysvby27Ar}?=Mz#gXqwC;0e+h=aYuc10Nurqmn%5fe(=fp@9`T4}6%stlo3a z14sT&lXcO*i4L6)K3tzS<(vnO{3hx1q(bL|r%2=I#OTm@;HlW3e%Ny!cp6T(+w7kI zjqvGMd0XgWq?aLyF~y$qz(>iRsAoOrf#=AG=*v9kfsfbcTYXvI=9imb4f4gPZ=#N% zy@ORneAA)t_lVjCdAyBJm)%h}M}^J<=51^p2g2zU=ew^PC4< zCJ*=@@SF!+C7tV5+UEi5{-zqeXOZVVum$=&`p|t~3sC~IJ@zXBCp1@M~~wEUYE+2m?NI^fUl5L-$kDDfUlI_ zMs)C;2fRUc`SyFx1HM|uL`?LY2fRfd_eVyC?gQH@doUh^&I7(yZuj5rxesic#-a0o zw`&|a4|pfeFx=re5BNHHIr0WY=Kcy9@#!>py}W5#%Vfv5;`CF9rYybLepFEgc zo6iDq{eHYy3&)97l!NnrpeHb7GQvW}JY+7+IdBi^GkUmY_OHBCjPu-C7^midYQGb^ z^IzAbotM5shfo_wM2GgyGh7>dV^>gZf5Z$=dAZk(d)l(mx4G_a{&?@&9iZdcGhBVR zw*z$r^#%k&84^!#5uQNy1=Kl^h^M41M`M-nB{NKUHo&P)TX8!MB zGyiw+ap(Vz`?2Q#q51v~-~V+%-CI2K{iE;y+FSP#&wT&qzyIr%=*vCx{eS%auiFt^CkCZE;?)1#}v!zpXrDwix z-~Z*^|IhQbwR}H(p3nbA=O6yc|M?Qo^7~B?-r|qzQC@w30IanA4UqW64QQ~_PwDsw$6KC!Q$c zH;EhQ^+}%B2;lCXZ-5bNDg8Nuq)PrUyJ;U^*daqs_u`!u)*@LUZO za&C>y{Xbo7O#Nd$zJp(&|Kr~OqvQJ-@BcZJg!I1W{vYk`x&KGw@clpkw)g+&-{*Vo z|IzNA`+qe4p8J2|SU)`X|7idJ!T0~@{M+~c+@FK?kNZ2pZi2f{l;zpBeh-$npph`n z-v0xBpP2f=dcJ_BOicYd%|C!&Am({lJw~H_WB(2@`32pc9sg|KkHQ`NaBKrnT0dYQ z@oV(Y8%B!d6r^vvM_{M(MCp_TJevM}!t?Bz->CQK->>zJ-UW_(HwidWp9kM}EbwUJ zD6NmEh~Fc&`T1WN|GXctk2E*_W3+za5tF~VI4^XvG&AYf)A!+w9pmP&zFyB=kNi@f zp@B5e_x&to{2DjZ`^%rCyP|unUO#SY+~f3l6$1=zgcaUQ`NqW8Sg#)!822W6fBGLx zd`KC>EwE{KO>uTH&%QMkO zqD)xMJoB8og5Go2Uq|`S&u+NWZ4*rLgnS?C*j?b+lZk2&{`)sB0q=a@-2baMKgAj= zo*#ApujAj$=iju$Q(mCw^JxE!kMnmu{jJ=?|-{cL0M`(SsOY?2{ zOJnrDhviLap6lWa==W@p7Y!Z-ZMprj*!UkK@5R?2k+F|hL(F<=xZ0EU!BkX6#eXbabk@@zuFgi+wGvg4Zgu@8xOOG z?kg$N*^D$u>^FILMMkV`Qh#Iv^7{_@U;1O;N^HE#l z<6}tQZ>H9V3hDdJ(&KqZ->*Qf$NFMO-*2{T^KbL$`xVMH{%bt?enqm&zssZV7nE!L z*Lw8*=E&9lt3CRDbLBe!bsl}cV#v(4di4EDWRriBN8fLr?DX&S==+@^Tl`x*`hKOd z(ZA87?>Ap|_;+~p{VL^ym{V>yUK&OYo?k2YBY(dJW}~q-_TJA$ch1Md zf8i1cm%x8d3F!NOwLIV?-v8T}@)OVfzZP-${$J`d{a4)otLu;F{$Gtf_y1~qlJ5U4 zPQp2IIJ+*YuUM1&Ko7nb2)sA@7^U43?oW3B=?6ZdA9q0B1JA)zXg7>as&FP5u_IL-ckAuxD z3w%H2EkVo&EX)zW|LgmIRZp0MK%GGC#2SS;Mdtx{9}EfrcYsOR4P`WK#Tp6ujH2v@ zavRJmMq!?zz)vXX|JNA}yDY>%12h(x{K!lmYpV382$K z(?Q@_&Y2DW1t`N=VwGbbK}3;Q@pZa~}SGl}wDe#KZqzE}eaIJ^cS#IT&Gi`2VZqBHtzt|G!as zMhy1w|2W&o|CWdU-z=;Bt3CYx7Fh*;J=M&2wrU*W|F6|J#Q$%X4pHZN`2QWUFY*}= z|G!J7`Y-VC|JO^Y?>rCxzgz0~T6_5a8^q_I;NkyomG}IA_dEN0pkKE~pN|^a?{lX- zANlvl5dXhV%V$ITcka^i*U)|)oHrXW!sh?GvQI$2(G~5j9PO?b+MwQ_^F92(#kPtz zsnGru+8Flg{5$af`u^XUJg@2m?*HAz`(ADNzI#3hG3O6jzUR18ey8UX4mS7yme}FV z`~vHJ4A1oeegE$+3)pl2@604%&;7p|M__#-Ngis4`L)KL`+qg|-2bbw=l)-fJ@^0O z`Y2%ftK5{dwG*M}8nQ{%@-_{_m(Y{_m_c{$F2f z{NG(`{J){r_jvTbziqzWF^oZ$?514Lcl`skzi z&ON{@;P*xl!w|QuA9{ZY{{94_{czCl$J=W?f5iUjvk;#0d!DoG64!xv$0yq`$<;x2 zG0h1GHybn$R0(1{wD-1o@B4ps`>zXGKo0nSKiWU#|C7=F-TnD~hyVAZ{pUcA&;#v1 zf%9+7*SViRigR-C|B>MTPRdSZJb8vg$b8wD-({$TC9(XGBdtCh?V(tfU^$&=7 zKHv_R)CVBuem%Y4z`@*~&;l8C-MQbu-5)^z)aTLX`#Ao2U(Iq)eAG8^^$F;o=lxxh z!S!Mb=|#vKU$xKK4-IUePxcYY1Mac$&@bTqISz(18EYhfV(4%O|RbHO1hL zxbJF~dJ^&bbpAWZZFu;5qKPBE&iFNNk&9Do{x}|GeG{I|26x4I#y88y@Xz(hc*w(c z;c08!yW@1@>m|?NQ}q3OtRHs#@u(f!<&Va_2X0>2B99u}6Q?0xBS#GGh4uH%@~y$W zacjd?X_V@w-$%CL*=yYUVlH{LJdgCaJ{k{Rf3qkkW|CrGb| z#Su}u{D=qO{+%54i7qeVA@Yle*CXPMdlGJh=&SB9I2r4^+x@KX_V=ZrwojJM2yd59 zs$TE*8Jwoqx0@K8uGhcWKJ4%r`uwBM)7y$ufH{?3ae-QYQLF`h1|Zh6j?bMZ_xxLD4^ zbD6;lehE z-{%~8FJiXO!T3Fw>HEQ~d5|&3cMvNH@@gOEkKaLN9glfqd>4#OUB#-`S**dBOU7ef z84uZc5@pl57$ zpzI4{Vm#!{)sR6$b5hHuV<4;UfH5%{@@dMXzk}Qw^^jvE&-o}r-8l!u`%YYbgnBXL zS*}FAX^(I9zLS4ThW!N4ZiL$hdI)qpd&YSLe%(0Ugj|d`lo@QA`tsR z+A~kCJKw2C*&T7;0&??BGug>o5zJkn+IHu`j^E|Fu`gnL?tL8WTikc{8`K*hruhQe zh3iI>aewNhL6dy`EGtxQuOTkl?Q~4KF<%2l+U3DAVcR6R-$wJ)RLuDt`YX))Kx{K^ zIb=BR#NPby-7OoYI~?ief@XqBLC3O_qyAj*_>P=t;V1>Jyq=FNSvw#k=kHs`L`eC_SKHs-DEoEg9C%FaC| zbiV7R-+w&mw;$jB`wx%&{-Zxnyfr>QDRz0{+Srx_|My;BX3fqQR?d(o-uKW9Jpk`d zaPutzH;EH7(F{-cZ)x@C&yzRgU&YsUc@-c}SpoNVghLX@`&YYcyly|sds2;9+~4s| zFVc_-*)+Nx|1J2=6+uW#b53HzSRHK z`+XgE^50(lVDA5Q`FVz?KJjvxZu-G}k_pGZX>IqyKe@n`>kyeLk#eG(FI>(@Hui{)$Ar>2sm z7VG3&oYYJ(2iUCP{Tph7Pa50hm5)5J-W{*m{b2q7K@Z-xUJBTyZ>aQ)7RC z*&nFex2=!p>?eYMrT5#67^7Pda1{EAE7h0CAHEp4K5pbYMcrm_W87C-sXoba-J8gK z>wGI3;eFbFQ%Gz^i{784aWj1%c|Gj6vEyql7h9KFD^2(om~E_+4@~?m!H=IMrEqkfiljTYn^WV50S=J zZ>xogFA?`o|4FVf{)ghUgEu6{_#Z9_R)*#5r^5G+fJA(hy`M_wKM7hj>Ei6Cf_pNC z)g;Xal7D7D+X}V1E9jP1xK|GGo~S)}O6t}#963VQq&@dA@!q9x@IAyY;XC?)_)h-6 zcG|Sx3%{=Y<9L4qGz*;&{TCs>OoM)0OkR2p;`HKq_zwDW(_uLJbN5xvK={=yamOKA z@DQ}v=9o3I?$-L_u=un5eVcy{axXFk^U4f1OJps-UX@)f(|n@wnXLu^n{s% z$gmAfnjwD1c>tdAbITy)3v3f)6_gv`cSoT9FuTI+1M_`^?+tT5zN;C`^AHYK8w&R| z^n$q>@eYK^KX{Q}BYyl`avS2s@%vJN@9GXS9mIky!+)J%Zbbb3U`|CKOogN;(nk=v z0`8q*K7n{S_lQS2Jz!3Se^guf5b?#s#OH&+ydriWUxC- z_D83}91r_ZFayAoVUl+#hRJ?mG0ZFR-78?S58nuL4?f@qn2divOt!Hn9P?$E{I2&M z_b*}cyP})g-_-)qfa_|;z1ZCGSEXeMQ=R}Hwu)ZH*Sp)t1WuZe(2dx#V7<#C2$u!@2&(|dZQtU z%)*LX4&?7=;tqr=NGWrn1-k_D_Ek6o>Qcx=E(hOv1#X^R3=ZyWtYiHGlI7$7x&7+S zQU7`T|2wD@4RMS)+xD;IRXwOT%##3yBm7qQeY)7|cNk9aD{j?yOJm#$a16dsy{LF+ zGjS?#ebrp?9%kZ^z-el<;@!&)M@t|F_$~QB->=*-Ac1kf56ffvPUVKX^fBtV|EsRz z-O0o=;Qk>bR5Lr+@y!RmQ6ALy8#gSJ!1=%})nK&>gEP{LC8m7gZ+3W%IUl(IjiTWw z2`q>EMW~y+Ke%CE30wkv8R};&!&gY)GT=-eJ30up2fm=POC%M3L`-Gffc#&u+-nyKO#KEU*1s!Rb>5?7G~_j+j2FG@XPtOs5OZtOWceGP7aR{w&e8r%?lz+w3W@x=w` zKUSW_v%t8=p?^3c>xlE|-U$7~D}w9kC2k^dWAr)C>-uKrrwMA?Zb`-O6PHQ%rsyNC zlLo{(Kh4l@?2v8-H%BkBQx+TCLa$fOG`OW+&t(0z<8Ou9yH(a2_ttv7l6R#;wH@iT zkrz>)UpvK3udUpv?o{34fp;-K?c^?Xml|i>+sp0hcC~?c4BZ2=SM60*VBX^95OkNzq8zp`Q1XsmqXk|_NYDTph>T*+@bDJy?eUx zb(3GIU#UY~fydE*cez4cq249d>763$)H=1+;CNZ1)~Meze`)mJ1NyE{sMRLEo^lxX zi!|#7_Y%7IlJ#o6Dm3AHV{X4%Eit%{T&gZrZHQCpzb|e-xmZnP{JK8$lZVyAssnKr z-TTXf>OnP(Sm!T69#RjfGx`16{{XpH-K(B9c%a;;?o-zi7cl%FJ^!A_{8bSThAeTT z+GOH8Ro{oRo$fmRA#%04T5&QE*OUGetJKE=i=j{bH2#z_;^L=7j_-j!^V%`5vka239y5F?liIT0d)uX0AoFwDH3B{TIZnEU7d_Dfy-#bM{ zWBj?<)bFX1p)%BAgQv+zHBx;+tn)ivMyXM%X)oX+e*fu`sWMd*)7SZ#Aup+y)W=Lu z=Xa(|Qj_%fW~Vm`quU2^8~a0Do(1wgo~Z`UhP>o$DJ9nRp-|qzbB=K@(s;GOL7Y$U zt~_Ay9Qh-jbmGy>-&`GEfaRrs-(q_RnW9{!)1q&jDinJ@Ylb-QY5f%guO&vozH-m1BP23R$L>sXC~S zcKm0`WHnh`V}8#{sf+RcFzbizAF3oq#i&P2eXG{^PJ<0^yC)|mW%Xxew1GgO_Xlpbrhc zP!8dF)0F>3khk3`1C9H|dVPPZ!7Jndo6J`OqD6FTiW5*<9vz=^$hD@D$93+ zK2OPK{BM+ERjjJnUUmE3g!SO1Y7E;;IsIQPK^0U9Xzx+rPcH*^I~e@ri){b;`!-8A z)lD5Vc#CvZUDfIA@5b_bx5@xDK#ey2-?fsU64d#``g^y@AT>yp5vS1qcIYDwR4W;u zE`R7hs}5=ku^!KMN;}*~TVm3?PTH&X>T2VEmvmGe)y>BJdg-J(sU^fZz1EeDqq2?v8>OvktKKm9CP>3iQQsPTv-DIw6}AsJ-+v3_3I) zP>5y!-gik7o~w+1?8m}$1N~3n?{^R8k3*%WsZaYc^E*wSonnVa-Nkd2$x<$g>#F?DBmABg9-;Yr;RN^@W--|GGUq1&(I86vqMU@#1N4NQttY z<(lc(`+u@(p`{y{{vhj0Tzw0SryFEQGEAeb1 z&P_u6FKB%)&c|&3htYyJNGId}MaU7>Nvgp|AXT_h-ZT9BOPHZwA+wD8Zy<5FO8ms7 zjQ?fK-`C1h^sn3NE11)-krezsc79%k1RzIR5bO5yTgU~*NCI&+!~YH(P_}e6{$JDU zE!Gm~M_JIH@s zg3i>%(9!A#9W2xh>ul&_b?Jw9=xI@B3ysI#hd})+=wX3}w)Z=agb6)nv@lzDnL5nS z=R$c{XhZg%g(T>Q%@phFS;%t%@>~e}BIFr*%a8`?GfWzm;oHjLUIBb2@^Uu5e#@Dj16uf$nOD-h;N z_`eE%)*`NT2!B0v&8`971^?SX+Yx3n%$@MJ6=kpq<+lTP3uq(gI?%PCtHo+~Km0s^ zu=|nTy|6oou=l_`0J=}CXYWARy?8$adKmN|=n>FEphrQEf%bv!MA_esvcC)Qy$5<1 z-~VUOpAh#)aQ`Fd1JH-a>nEU3VgDE8|6?gaKSP><`b3lZ_ZHeFX+GNY<7mfiVE+#K zn^KIKY{%?t*nSo8N)XqtXvc*YuTGZx&bjVxxN%PVIp!fFFn213c^haY<~>b7tzcIK zS_Ql3L77PB2;z+BhWlJ$eg;1~Vb=|qX&pjxB)+?JIl_Mgx(`$ge|r$-9+)i=?l9gL z!yF0x2T&~LFU^q7aL~he9}4;ibQLHFx)grgcqvQTh4F*fHNEc~JKCXtdJ}!o7OhGvpi|n6LFDG=I=s&m}TzLxv<|j&2}U2 zTEzDsAo7q$`9a*|{oLP``S=WJ(e&E6`KxWmZ;wD6Zap$4@-hkeU*?$PXVO7WftUxr zyX4jrnr{C1?z+2n$1*=bIpm<8?nV9Gi85uK*o^nv@jd|Gt7s2D7b1_JqYo~FJ>y;m zw@C18Ghp_FdnxinGXmfJG~(L;f7A=)`H^fB{Kh@_jbDKu64y>SrqItpm>e(oPGbCY zqe&v~;3Z`7hyD~K>K{B?aaMhLT(4GZy}g8N$kE4A-p7*|nt|(xrt?z%_apxTKhod# zcnbugXG!$$uO2F&I(jeDkf+=8xn3Co>Df5sOaJ-4ClWg8%xgc^5BU5cXOx!yE8hF} z^S&F={{No6NSD_khP@i1>vvDf$@=KWytP){28mweC9YGa->4 z+RXOT3jXaok-5(6bI%{dDn@g8#7S!<;^8^34BHCzjXWgZkHB8{|9F2L@6?62(`_it zoxHJz@{S4GH$$x;|H}90;XljCLmT9QeHZgN3;7)2d`o}WMX=iG=WmY<)$|Izz@E{J&h*!zEUeMy#^{CECy_W#u7_j>mK==A@I z`+xNBS!4eX>R+Cg=e%j^-+0;LyT<>s?ElgAwLs4GUHaqp|LFYv6Zil4`Fs3~`+s!) zPhkI#_V3yMqp@fIkH#mo{|CS4Ia(eVkN#ch`n60xiYWG3D+6LBcMyyFf0EmYmC;_T z2QXKS=mI;;Uz0n-#N1Y4{|^?|tPIR6lQ5Tj0CUGA%qt%_4Sq0hO&S3c^UY+;J+nDy z#60!^?Ei_tyfq2)$YkvQNyfY~oAXZ2KQXU8G#z&1;hqn33TP_aCyBLmvRJoHz!?|Q zFbB*Nt027phx>Q_*Z2Q$uPS+&_TZ;3gfb!D>*M(V`bT`{ng5@Rv)|i*pQ7xM_K$)0 z;W`}OC*XZ$jQyU2k$RmIPhG^rwQ>4s2R~dl=6f%^ztPg>m6C2>s`sPP{uJbavR=OL zgP(7mJj5UmAHYBD2jYE)6Mr1yzt%~24AOP8sDcQPVUu+!h2HQa%u0x*$#2?OlA5R1wUM`=6eFdaxX65 zyCSXSFq?vMQ6)U>}Fe$c%2dmZGTvOwCu346Vd0`CnVJ#%!R!ND|@R~y=86}x7s zeBQ+N-xGW#*V!4i55lg2i7d&3Lzc^1@K5_W@H5cKvqGM^kC^tIkvGcF`FV89|HSi zCl5{G5{Ckz{UGG+ZKoV!P!8O)O#5!g+ifuU4xUfma`Ki7^sVzw&mW{ko21@%s!#~%1`92Hp)LodGURE%>G$?5aY2$;7s~1!Ti*n0L zm&n-CqDhqn6*SW_7L*mzLrPXUPCkH5zP3qEoSs`*KDV-9ejuZyG*~r#WUwq)RZ^9Z z*0106u@%9x{PG2rg~92LkzO{pq%1f+t+Hfcu(E18;!CSsICwE$ie}DP+`CwQ#`xwJ zl$7-@tf-J-$yHUs%Ie<5!(~`@L3J@-IwEPEBIW}{2}Okkg~h?%#Q?BRHDLUxg0iAg z+acFjXCva7sinb!%9Mh_Gg21JnG>v(l(A#80@~8^I#sflr(PsMGQ?C#L76rV3(9 z=pV2PQwoaC%kiCMI&XHef%po?b!4zQe?jG(v|v@CjLJ*T zpO7_PvU1bX@+ahFB&Vh$&D8#Z(h69(zTldfm!3L4EiZYJ<7MDlNPIC(qrL$41Sdz8NYOpCQeCP3t8jd<&*;8h+O0oXAg^^#ppt`7h zQ5mqY%PcF&3fTH?=n}L(+Y}F`zFQix2>z#RqLuE;8+EdAOUzk0jx=g#;}+25{5k&0 z^uEibklBdt^T7%o^DkBuyWxM@pR4ED1sy2IUUb{|>nTeko*Q#VLJy1p|B}C?Z;LM0 za=1Py4eA1eML6c)50)3k5Bwp9pXV=T=rWzJ^N=r|yIF;?s0pMT{L8ab2_z+Hc#Qwn ztR1DI!7phxCMi0$bF|WGs-1nbl-$75Sf4M}hbj;keSYlnfG;`Lx?<_l<$*4chl=TS+%xFp}2QJq&_7hjSYJ!V|T&S}eI<5FVn95GpuZ@aL( zEcMUa|5MHWU=;e?KruRCDJ(Cmstz1Ap4g+!q>`d)=uqpCXH>9cZgI8UU+S(?vjkbW zy2nI^xuB#d)M085?3gM`DymD$%WAne{U&mfmOe4l9zM|Djhf{2u}3+iXK9z&=)bDd z%F8tO;`aE}<(0wY(o&~utrBObLeCf)Rcj4Y@kK>dMW$19#sg0`nN>d5$#H&lrS$II z+xSJ~sih^svg%1CW$0YT&Y8mz$2*+rZ?j7^G~fo}^{|WY(zy<0(H)x>mIN226;u~6 zp^2I4lXA!AjUQ}MolsGP;o448%s?G5yg_RD{EC9gpynI+b2-1NJ^TktgY%K$e#f%x z&m=;ONKKTOm^U-OxMYsQ#ng5j={kC2NK8yQwsrEct@CD*0XjPBW7(!0({J)IZS!W@ zb+^XnB_@tMwsp#}t&<(=(BPVwSQ+B)*l5J-Hn#?v?P0hQ6LS_gj8>K1o@zKAgY${k zWn%xrp4Y_0%&OeVlKBOdOKRBa=BJq!ez6@4iIO$cZQIL8&CE&8PCwn@M`k-|qb9g4 zBwri`GIc>^CF)LA-UL~oy8$MutFT?=r#cLAP1}j6%(>;2)%?=HBK?1{2?!pIEjF#B zs-m=D39GElu%#9U3(rUku`0PGfHsfj#!k-9wz9b?Cv~R{8Ez^qEjM#=dRE5RyzJ!h zU}1}jD&~mh(d>70B_){k=mMz8BAO`3+Ik}?)sg7_#7@n8PJXaDxv&~D98bGklv{u~ zlJRm>@1P4XzqovnXG&rB6($4jC)+a*J?jXuxw;%e;QYd}hF?)dVww3IYmS!QD%=gFeCs_2;vkPP#Ja%@O)+lI?E9ZEcg9t?eD~FM&VV8nmJY?bYI<><( z)<=bR>}$rM)8-IeI~L<`R6O?hI@uZ1L)o$IryON(V#*5^Rtx94o^OET$Vpi<^T$ug z!Z~qSV{=A&99iel_B=LeX}b7BiR$001_XcNw(Nwo!Je?C6`01CRXbg=>&G+iuIbs+ z>3HM!)NNg-S!KZLR8&CT;f*sjD>FAYJ(LJQJ~RWne|MvI z*};9g60eZ6;8tp@Q z^mKnAOYj#q`xmkbVZH@y79cq{*On2T?n%_coP>fqi~+g{y9+eER+nk8O3uugsbw>U z-GF>16xeB#b{rmi`xnnF0#i{krvz0i&6xsZrlseM&&@#P!>Jdx|pb!2&Yk<$P? zvD27y~ zm%X60y2SZlk6VZ}2>FMdJ@D7C;`m>~!rMI{h_~+pO!0ayEtp&7HVe!+96l4jVgG@H zP7gVZ485j=UX$J08T$2)wnVOAML86t}H04 z;zYKr5VMY z|1na8=lqiSXjlbh!SV&)S86Di2~`k8|7?pZ_WFii49Tx9DkR`2ReouCb!OGXf>KC++^A;KG7!)I|DU}#fzPVA z{{Lql5)$^X2SI$;7ZC!uAZ`zYK#%}|0D>DJ1i`XI2ndQ2TdSz8#ibRkwYaskZqc@u z;sSN0+A6Ku(w*8?sjU^QZL!~~|MzER?#+EdP^r*gU#~w;xZKZ~IdkUB+_`gSJ2TmC zGvzo}R}yK2gk@+B8kE*)a1*@r~cRk<5U@ln=G z0JQWW_qZ&RAH<~dlr?N|1oipDPqY&eVIRF&Qf?zU)w>ac>pHHhj2KaqoBtQU9rW z{=G_!cg}icywl!_ja{sH*u7(nm2F7R>>(>9azt@yiEC*3L8~a;p+j3o*1akXy-0~j z(X`(ClgO7ud3R5SmSj=~ug#Phu@(U%n^OP4NL8om@B`-u&QHIxslZyu9B ziFR_jzb7th1%wOqp3eqO4@fl#;|3xL02W z1DDUKPS<5+SUZyLKVaWp{hWA-98o-lMIBiZDulOmXd-YXN|Dy16rTdxkkhT7%Hbczd z!t!9Jmd`93JEl}wO+R2x?;k0z*`ms{fG zXScGR!0_Q>RtGy#XS;l9fGtr0B)CHjUynboqQ_1cOF7Tdudaqp}yaib^>8bSS>K9;wF`s-l^p7g9XAL=wXQ)joKm)&a}7 zrc9nV<0H7smT1Y+#Nu%?r<9JEFsiI%A5y0-cAQfud< zdZr$Wm&A)k|2s(HOIcP?j}49VHp1j2HN@fvHODZpK6|-ef|~W^t0&NNyHvX6s)6@3 z_YG-~cl?57b3z9u86tdk>IE6KboK?KD(5h5Q1=O}$3myjN3Ug@zT)uT2kOV*RZ+zN zR@Rfj$7}9a*=BpX&XFrhdiP_hUc8BRTm^4)$pmWZiS=s|O1W>s>g^dbV*L2}r95u% zssQ6s!S`07O}<{(b?b1dfa0cE;(oR zLYFgR^ndWqj#S;Y#TCn|)E*w~Mv-X`xXiE5SH858RlAHTR(d|Au0D?{>ZL0x=MHXA zLgdQ=(K@a48JshfudZubdLQRDEy5JP@e39&n_iEek)Zv!h?6>eIQ(Hqq|U*uz)4DQ z4zY-0*T_YQ(AbSc7nd(t5#i~@Ot&!C5`@mkCZ|_W>?>o>EXwz}&j08F-rtqsHhsg~wp{$-tT}O!F?W!s_Ru;Nf#|$1q2c;g5=ii633tc~i zYNfsS<=7y17`3VwYcyV#jsg72Q zJsBTsjmm-q_vqyH>4}=1?>hQZe}0q+=qt z0vqpy7hFdt1TqOUW~8esoD_(3e`bUH!w(@w&(st9nNv zJj@10IsmeaDGI!wtp+9x9l5jA7P?-H7&Vw9@j z>-^x-BDCN%e7G+G&ecDBKj09SYltm!2(q~_Fes?G_69vz!L)?WMT35$7cO@#Evb?&F-k{Z0w2dP2V=!M*eXL!u}@TE7#T8@UJBXgE4T(Wdr<*I%8 z`!{GGq7xmkMEH+%9X>ppC7X&~{DkZ9;a-ibwjwbGLzmFWk80B}qVgf*4SJrTj)Ym1 ztA4<4BqD_L-D_U5?5PvFpY=vn1CA%+etZQ~i1tr4u|J=)6zlvr`fDmC+kjC+p$zwGe zpkzfuh5Odw!-ftMx$j0Uvb0PL=P3Gmre1OW$9@6~K_$z2LPRtYR9>x|rzB9SrFr@2yI-#zAo$N+O z?<6z%ZuwrlJCjV6tbPx!!-rQdsj4HEI&+BF@0=yo)k_uy;Xa}`!BjLct{VajL#GTw zYPc;PlVzaMIk^8R?8(8C{mOvwgfw=kXOuOxWD-5eETPGnYX2nMaKZtb!-=MaSfCQk zcSqCZfhNg*sd>6$!G&%Sik}t_BWW?0pDnKw6VH9slUFyN-T*JX48M3g)+QFi$Afur zVrekglqJ=(7dGq}52giGWA7p5x{g? zaQ879wbATPShHABrp~I%3lHUA#w^$}Q&B!*0#860FUaSAg6jU_lCfnoM^9#2C#>{v zUs*Gu@`50sY;1)FY`jc2M&vlslb2ku%xG|GSu{vwqM;=BeI>>@vlp`lZN8~+GV0%Yp ztA;p@r!82vfaU$BV*CQ80am)KnK^#!1oEbV96CVdz&|xIgUnCHn8dtN3zqT#-2?Ip z(OmU*EY6W$`QQi)@%b8k2WI-`m313FoD>@G1SY8wX1acEO!$^&xO6))Ri!%rZHl7Bbd(H$Y-V-8BOxX zBdn}!)2OrWz(gYbqK=ryeOT(+&zhMG=1pmeohR#>jB%Gd*{_Y;(*ZbWj=r8hLMrWNdKyc!^!rfTWu1(J&xcF@=s`rQ@viiTBNX?{$Q0`%N6o! zW}wskBaa|r>NMEhv-FAZ1FfVY@mU|WYVqtv3+DJI?%4RssMe_~1L2(=KenRSji^(- z)a48VM~tyXBiM1d(RhZc!hHquxs-TF^&^?d&IVKJ#YAQ&R13<+g(;4kZ>e8SQI~|M zx0m3F24u3BR6DqQPcSwVfzqrVZsIkFvMurCeHOSzQj~F70g^eF2o|#LV}%=%t-`*t zwN6%)uUU$?vc}gYQS!p`_=te<6Uh=6xzRD|AK6XIT~xo zc3M_dIcNDo%rCR#E?*JR?yU&Pi`M2>Oc^moU+WOWu?!!+ydJ$G@v0|aU3sf}hz!xV zu@|+jLyeUc!q-?y{xJT!mlJ1jxw=**pO;PJ@l*G9%I1p8c2>}=GV8^;&!H>uNzVEY z$`y}9b_6=k(LlR#ALGi9OS_7<6YE~uk*g9fr61$;4l+;d~ysf;eO6iqTP~q$LWJ7r_2vf_W0zm_|lKhFVh0d10*_pSEHgc zcjoBnDmdMzlwz_D%0`L zvUGNiJd`1-?z zF;Ru@du}4^h!I9{Mzef6EB9g{G?(4Kyc)99NCZr0 zF^#IMrbs7(VdSJrK7^p+3`40&YbC!gS!lgARPit~@7_Y+>QXnsnaL%zpk9a{jXY;Y zubzKi)N*o_^;4`%R*Ffhyap#z<~79-s80E;F#a>((^vOx@S)-=!0U)NBX0F_f_``O zMe#APN+Gg3a;$N2bBWJ(ibBN2Nb0jwj*5CnEq#gTQPIgsxR^DydHt3SZ=4&(hwzh5(Mceuj9CI9sw= z8<3^&Y@?7+F_9;cu-MEfi>)rdBECd!ji|0y$~_M+M?=C$XG6{nya?fwdt5py%gLNf zB!y?BuiHfS!D3ZZGGp=aub@jzNI8yP>ysyrnLJ{Adi2<` zl8Q6Ok1d`&v0~!rDd}lrE2fSpOIJ*pI%@31Gm9sVA3t%znd2+4Fg||RnIp$eIP-!9 zi-!&wxOmPvt{M8DN}0pPou5?3qIq*>S1)v8lJ!>nxb!0EkmSi@9-$*2hFaaFUI8%o3U-VPQ?g6>QWcBDv24~P9AmM*}IV>xazhENix^ji-#Pq+jS%k zTNg6gMGz_!9)0GhNI-&1%t(zcJ_J zj5C{ENcrcP>Fn}&ll&cjKBoazL^L}}Hes*oL8f~wzp2srs|B&V7G}22wTI4e@>?36 zU-&P{cXRt+q8mZ$+@#Um-w9#na~6*LqI+da_Mf)K{FE49;fjAXF^WKHgW0q0mh!c?eD(gj z)=$2!=h*&t-O%&MsXf2*&ELLx+ArU{|F?g6`L}QUb=tlCD>4O_4Zp6S)9io0R)lEd z_f<`q{+tt4exmlZPO&3r7ndc9WEe+X6O_MtUqHacma+;|__ zOg*uwdh`J&vm=c5q5T$m>3wbM;_GN?LcA2FkNtD+vn#LcTN=G@C#gJIx8JXO-@1!V zaUxA;cZQkD+oqWuQk4D6bRVSsOO07@vN7j!K2ae#)|4Gz<@W#Pmou?o)0$AejHyN^ z<=0H=g8rPxTa!{w<(myj{q`sG_BT;*fn|978W|NPsVAKcU;^R=Nqzlzam*yt#m zlFICF1fQHggNUenU5{QTmAc9a*Y+IiwbDg!V0L+Sq8j)wBe%LU%S4@^|2UJaNc;90 zOcjm$4(;o;`^ZQ5kqkb*kNba=Uw5F_ys;|x`n4p#_BfQxuk3_5?@#z&M&Yx?+O2MD z>gau3ica6>^7WU>S6v3QbXy*;wo|w(Ki6{?M+>eE=IcghO17G4(tHN^zTN7+HEf%l z)+4#hzUa=E7hMe9ob%oFt!XvJq$xV4nDf(h_M-eJK)=G-m^xokG{<&u(&kg{Tr$z8 zL+9G2_HxAseKz!8IDcE;H_?lrzhSl-oo^`m)6j*SuY5Jt5Ojg)Bl-J>!WVm5-)Ef< zD1NmwF6UG?oz2iHZPHgk>&)l^A3l8z^jKO1@1VchAELYR_qyoUJgxT7Z$wvmx(nZ^ zoF343d0OouojH-`XzR|W)>#dCPF~8LZ#|j#Jl)7FvX5wJl{^V5ASm2*QfU|O7E@iToNz8GbhD<#g%8D-(Ad$ zl;>afBfOEk!_9;CLEDGMKeMIy~ z`S&&t*az&u0nkprKIVt^hjvSEXm{RvU$f4xv#*LiO8ouIb(TNTF24Te3-$~4x6*H} z{Esxx*k^1f%6TWg^qncohm*!5NJlqx?SVeMh_eqTj`ZU_I+C{RQDz`5W{cfoPZaI+8EUrLt@eDS-}xU+Ut^Pf zPP7YujM;2ATb;G&`HwZ`&b^H2=9rEEvn7i%W_73^G^QT9eyX;-IyXYe6Q%t*KgWVp}qs&IT z(XJ5f;x93G+B@y3qMiKF<~DnqtycU46@CnTt@ZY(IR8t{74`~ys_0YYKh~_ZYhC@E z=jxABO$X{{osZ+?jWaE6ORMu>JY8m5*;aO2OpiAOw!roo6!}ju?QA>y``CY?X>D8E zJuzKw+SoR>b<97>w6$&R$uT|Iw72bT%ecO)Fca-W`(w_o_4-XQeKNgt3K#z*^|2#9@PX7e&|6=nbe@kNdOU&u^bUPuI zUu9}+jcr1C^!anXInADCbq=Ygmzt)0?_Z3|$1>BzHnBPr)tAR=N9#ORPcL`$9WlMa z(VvOw3+ONB+v{U`rK2lidX>qud3H`rU+Cy%F@2Gv)&B7Mt)}(yH`6T6?~Bb_{Pl?G zOU&E+{XP!AhVzyFYW^A1HRetJcE#W8OU(>B!}Zs_{7;*${5>#)^tt!_Gn_>Ju(?3= z0+qkZ+93k0c8Jy4 zWuD$(j*ff1ggsugd)^yOXWQA17k#eef5UXKUF^=7|C^?-?Q7N6FXXz0 zXLF=I(jFG;dyhHF9%bK*`R_ITY(LvP_P@^zumkLoF@3)oXa`!I!ROOkYX;dtc31p- z9&qh*on!9v`$1Y2{mq^6`|&L^%g(YozuWtNoAdN&+{VxIJ0`>57i0d1%qjeB6o0kK z(|746o?r&VVfl;O#}Av8jJLf;e<5$O;J4dnZNnUAJ<=bjuz5zcjlkx|Dl;}XWO5|`uvC! zK2J2GI>GP0x6hl={55YJg@3_};!pi8AOCiGTUVK9p<7pF(C^3QO8#yV?aJp*%v%1` zAM^5Fq&Ie>=@I+CWUlA0I1c|ZqpvrZ*VMi*m%N`+qg-od$$ygQpP4W6mn+)6zdNX5 zu5)MKwO%6spL2HAIx~{z5+sUtW)HO2X?pe5vX?DVXzD8|fTY&TySK8axJEg8MOqHiR(lT*F-M zeiXog_`d?q*~-bp+YO8^0u0s{KCb({W$g8j4IAZC(f74sP*vQ{LRXW@YPi{ZajEi+K=lqW5lnE zsc|z_hW>|h*pL5KT*T+}lm0TPK0d!jF;-Z>)yPRqdAYQI{=2{YXksBA*Z&easU7_{ zzJ%A9UuUUP6H)01=w85FNsQ=CM1;O{c-5r2E;j8-AP^<5eK zEhCA2&DAlTVqCGGnHSTI7;EffRujL@t8Z*_8EZV*%?I1G=sa3XrRGoYd;cbk*vv9- z!tdobW$f|@(=?XXj8<9N^p5G~jB9o?&&T0g(Hnl;JQ2s&hSu?CO>yksj@IisGn6@2 zsuAMvKo98w(_Zu$q6^Ii#+%=Z`46M@`DJrQEUybKINEKm~Z-=VdU=QB<_+W_ekck%*1L= z7H3k@($vuI7j8#BuN~#_aAry#o#0!5nMZ2OLgE$AiL7YQxQFod$hp0P$LA6DG2)PW zchlHRqaiQc5B_U|{L%2-8~7K1)t?d1FOYLni1&En{SooXy%pMR3jFio*Z8sAN5emv zI!L%Rt=B~%uCs}2Lx`&we$8`<$C9$Q(jFhi+=%9(RD~6ht}8;i<`Y)qQ{ulI`I<`+ z?gG|0oA5>8--I-FBaKg>o8+XCf)*9}4bvB+0{OLBgToO?ogPau`A zhV(Wky&6Lo&nS2_J}x{4tiGr4Pr#3aG>##SFNgd&2dwc$@vMO7@gV<1iT7#Bp8F1xZ|XzK{YB(-oak`@`Jk~-xv#`s%izBv#MO_uG~X(jJ<;KW79O8OKI=Ot_m=3aIYHqQ;h7$E z8;+c?R*wA7H!FgkZoOZ4|24mza}vcky#M;1y858pq!Gv4U%1zLy*J?3_gJgm7Ml0X z80ehx6tuqIgG@`&&cCr+|JI4ML7u-EGl}P!vlZUSZ_aAA*7mWOzl9qg{6kE)bnS)f zW4e`VPaKClFTa4<%HHO)v43kf-q;!1$ES?Qu}fmQ9rIINZE+mFJ*}M{=Jq&z2lBY5 z=`EV|4_c3>_QSi-d4wt88qW(j8Cq-TBKKawZy@(`@%v%$7mwE6>8@|Gt_$%S2jAV? zi?~?vXI>2TOd9Iy@O-C`w@-%W)tqvrIe3DjZBy625^l_Me=?Mr$>e=)C`(f*OPVtl z&k68%=;QGS@E=0CI*QOYhqyWu*UKTU-o&N$n!@HGe=+(CccS!a-GFc!IT~XZz7M=L zl(!b>@Kn&@40KRGNIcC*Aau|?toSD(b9IQfCGl$QnckfY z@6PK%Pqi~&4{1N0c(sO8VOtZ|7UYY+2>vFAd-wjN_vb;k$;7KQ3*zrZTzi7dmdMoH zu-waW*Ep;2ufQG4Jw6KkpUZgM2|3$>{+-Z&aL_YNytSbVR)xDQ^!#U_r^dP^^9RVx zALnsv;(asdHVv7ZL)hVj)!euE$H9Lad7^X`Aiq~g*8tL`@o@3{5T3Wfvp9*kv<^e= zy>b6t#^Vg~H&Oo7-j}SyDc_FZ9=wr!I%+<^y^k(@V>jL{{k(skd;i{o zR(oIHN!3sPis>dM&7btobNV$!`y%tJ*uR;pkA4u-%~{PbFnZt7r-hquaPRwFN>5AH z4-YZL=;z~W<@zU+L^HnJlp0(8nf|eVYsybA(>12sI9hFP&)?S7U&qG&?Oc78`a?6u zhxtPPo)*V&O8Bhy(E8f&1w6TpNqx1gNuAUos~%Au(gZoGJCr}7bt&ztb96;@iuwg- z!yEAkf3cTw^N1=BUpBNEPW0uWEpO+gp=|di{(pz}4h`JAg7|+8zvj?|mw;!C_P8@; zsX2v4?p@*6JfQGh@bquuaS_jaRVe?{dEQ!EA)d+bXkJA4XW({0&SA)z)7HE9g#Wrw z&U;bLL%)o6Y%^2V(({~){42tH)P?s*bK{b^8ku*5boC-#n)8(V2Hck-UuA#i<{HyG z#M>DctqTxO6+9OP9eSZdX-G>);<`D+)s?ukZdv?I(MNNr!nZ-)64F~i*sDTb73jSV zX|bebOVI5wbh|Rd)f@ivL%NP5F0DI}%nD?#8sT-`j?P+-Cik|uYwd#Y`QU9qerM!s z&QtF9C$9hWcWC|Ze~@$a*8jH2{hS-WEFN=c{cl}vW(4`_C4RI)^c(n3 zjoTku|Lb!j`adI(onQO0{x_2H-?`Vgx;7fW{1Ia{{l;s&NWT$gD?Mj^HGFnH?l1ju z8TY|QY1;kz3so1=ax<*=^Y7zObW(r+aI|ene?Q~1w`LzQ8gfoI2&@qlmFYB zPcUz{_45g5pws;ohE_=<>ibFP<$ip%KJ-^tHuRzUBtLyb^qc>{|E>Aplq3HA!sYIL z+=5P{($PEz{+WnT%>RvFIxCVWzY1skZ_R7}`!ITZWX(AAx*3i4Rn9fvo|T}3Oq|_* z@G$AM8oe|gaDg z|7rex{0({?bGpVWa~Su1#O$Q)M@w>CyNjQ0^0Qk%_~5>i-o5%~dHYcMKs(cyFE8}v z>tu9V*2yp))0mYc=Md8r#rDb4UqpXzZ1-N*j_TgM{iQue<#a1(a@!YsmS%EVXL8n+ z_Pp}W{tL$DkDJuJ=cvmHT8}J97T~TUeSTG;*Y7A?$5Zk-E>HtY_2sOMYJar|6~kkw?q#;LK|$?SD1@=Eeg@8*;<&UmA;x zy755ucQuY5jSp(P&DjsS@jcA}b@$_k86RH#;iP@A>~q%Jy6_rrOWFr(yv^AM2YH$w zRDp=%I}AGoXCEB=WsfNPG<%!k%fL~FSf!7}9@nGIxtv{3d+sM(_h;RY&Wv3!M7S?gLfE;4)%rZ~{|WxJ zLH}0pYh9h(-^5)u0K%2v+7MS4;+h%coQ9kq2KjA}zdFQw6mn!ArLY|dD_a@iSBnvkCp$WPfPi02%5enH(Ld@T9)`5?0`{8~dO_t)Y1O^COE7=93R)4a9nCGoT& z?CPNBH1w4HmD~>_>_b6^%@x6bHxVR(+`qtA0ehcq%-2kQ8bKnK}{DQsuLeg*y2)T?TF znbG=pxnG0(BSD`6!oCx9&|E|-W77HX{D@guEeI6d0y?(;gJvjVFZ;jG+LyBI|616N z-u`c{xBnYuPxbbHtv{aqUt`BLj_PB=a|9C|{jlLRB{0w=j^r#+*?f;;! zf{yL~nws=A(Dm*A{$c-No&6vD@)zyw{}Oag50#lZe`o*aXzSLqC++{Vo;_**r}ga4 z{_g{Y&vEP7o&BE+pRoVyBL5Gu|8xBL&fd@2|1qB;`@flXrnmod{!PtA_M(qx|FVVoKVkp3S^9p6{U774*YF<1_J58}*#9{?VgKjo{jmRY`P0R`M0s}h zfBh8S;m$r!@2$pfW&bDpJZJycRP+(fKF`_zIsde?&vW*FGv(jSJYk>k_J7X5yLrq$ z=I#HS{2tDp(Aobv|DNU{`;fQ)b966fPw4FbPLsUe&K}X(|1A^U$Nb3t$lL#YAiA%) z)?VxF|6KTf=6ZX*xBqi=e`g=)?Ef79k!G9SW@UGtGn$8ItQ*hQ`#+dBrWy4`E!V|d zmvA-0?HH~cd@M7FIh03c_^C-cI;sVJ^0l}%=Go?wYZe-d4DRg--+_yY%=M+)GM~g- z2~Q4xdHCny-js07ac_dV<_GjmZ^mVz`f@dfF9*In_?p4j7`}Y*4Puv|L5r5mUB0k# z&;i;7Y1GiUGb@)aWgn!2Bz&Gfx%}WsKWLgSn!UiEm2i-Bck&OG_H*KW@(+&oUjD(- zer|l?{ejZ{bIfzJo~-&~fU|$r{IIvLILg_-YORZ}{{}jHU#&Iq^dR$j`}r*UU)i5J z`(Ibz40iU<-Hwd-hd6s*XaDQ$Er&Y$;Pd19^=N0`>+FAB_+!k&_F-@T>*!;hJ+S6L zef-Bc``4uX?^E_EZ~r@1={erqY;X4Vzs}xyxOvt->+OG?yc3-Lv$Ox5BmNVali%*` zf1UqH&c4{$|2q0)XYcFme;s{_xz*n4?SEZ;o-yCF-}Lss&fa%~xyRn)?SCErNb@!O zHE;jx=wfHj>+F9WJ<8b+JNsWpmpFUjr2X&h_I7Xo>+0_@&c0b|xO{$;I(uJd|Lek! zHCNgzv+RF6(mr$czb^bZXYcFmf742TnX~sz+W*SF*V+GC`A=~6yGi?B+50B#e`W8R zwEva8aMJ!)_Qy&4U)lF2?SCiO3Euv<*bv`TGs#ZMvj3HRu(SWIl>cdFik*^W|0{c7 z&AaCr`Oh$?(*AVzzs`RDbZ77D?0+47hO_r|_P;%pzB8S@ue1Mk_DW|t`{AVh?@#Sd zv+RFm&#HBWKE8zgulrsfK>OcYrC-AS*X<{eu>W=GP1yei`ZfE8xBqqY0`mrR(*9TW zsM?Ri>;EZsFLLz#F`cmgb@G>(Gwd1O{@1l|LflOkGB7neYDow`TYL0*~*`@|8?(c!v5FM3H#q}dj1LfU+15& z|8?|-*#A2Jg#E9h6ZXH3PT2oCI${6o=nt{~b^ae>|Lgn{_P?&Y>}~(M)Gp1k|E;#w zS@yq+?cyx^-zr<>?SGxTz3qSJ+xg!9*ZJRsJxEQK{cokM%(DMIj{aoQ{_Pj~^ zU)lR6?SFgN9$EIkX`A-;zm*EV(b@Yt`(Ky;-*EQD&i;3X{J-h!dEY-OdOz-V_Pj~^ zU)l2}?SK2*{#o|FvJZClzb?J^J9}Se|Lf}4T2o|;y#24s|Btr+mAz?$_P@mjeLuwh z*U8@x`(MYu+1d9x``>Po|FBtQS9$wiEBX;<5A5uJ9sh^e|GM#mz3qQ5wikQ*UsoS~ z-+ab?#@qiod5=5$bZ7tT=qH?gdYbWsJjef}vrli({@3w8ZO*gjdHY{SC+vUAr2l@{ z|GMyd+y9WPnYi$2J z9s6I}7^zIc{&(nqX#aaT_P<5J{`U&(e+LKq-;1#S?G@~QnI+Z=JZJxFu>WOr%h~^8 zNs*#g?(Bc*(Whk7Y$kG@!Zm^G1g>(f3~8BZQpK~-c{cPMuDK>Pw37QdT=PuojK$oS z;9tf4e3LroB9nS!1@r~bE4fy|znuGpCiTo`Olr}m@w?QdetwNf-TejdI{ZGz^?CTN zHmNyRnbeXiq1T$!nj5%(5uWR~UvE;Ee2ukmUxvO5dIQ&Ogt>+L9bC6^-Gu%0?cBe@ zwVvxvuCH?4j2-r)+#e(CChp(kdW5jw<-VEgVXg-W`vCVXT#s{Y<$8ka`&>_QJ;n8H zu5X#to2(PHmO_R#{Dha-ZXO=N7i*V zjdd+L#+YYVx7h`EjmIvejr9WkGTBL7hrflslIzF#$xUN4(R#k*U3;~C z9Y3v+{X6pmr_i^W&;35GE9r-|<2nqtxm;J{_G7NG#Pc#T8}%{fUheO}a|dpHpcU5^ zqSGZDU0)#l8(a@_&4;g+FyH0giEuB1S8^W%{d=y0zSw6F&&gbmgHPakgX@c2m0X{P zCz5*-`rkFs)6rdi5!T)jU57D;$a=P0xn6+(W%8^Sd8c;2@+^53;J*hywb3OCZUNs9KAQAexx@2Wbo)DF?u&7k>`U=$Je+dReE|Mv;I4Zk()}FrZWP_zuSwNA zp)}T#-#>>(*UL?e8^agRBgoZ$5yHA8U*r2xy3}?^UKPbUo}lzJw+BDFe{=9r$+WS> zB^(&-eM-ulS1H?*ude$mrA};_&yQTl>3g2I~J*UbOd_)~d^v?W;{$Z-rhbbfx^Er=I($)9Q!v z^ze|s+6z#>m#x3M{~JMf@bpj9)N!NTc($9*%{htpnE1waV%>6zcbqbKY)jU$=lVKD z^I=*)ejI+X}`qlRbf34-jbW@AJ082U_+7k^Qms z(R%)y6@Ty_%uL3*1TA|2_FJ>5cga6bH!+Vkd$n1h3)(S*v64T(o?PKunm;#t zubHENmBPO@t*2GNrbPbj%&Z^ojpm*3OOYV=a0KqIe@+dpZj_lNFlI9uHW8hQQ9 z&zlTr>TQY@e}A)#zd+-Eqdg-|D~!w80(-dK9Z$ZV5Kp3SWW^@QR4Wf3z9ibbixdBM4n;YV%&m`?AV|dtMXF zDf!prJK8<3DYWF5m_2&luDqXNUdnqfFW8?F{!GUIpRgO^^qpnCo_BYi>JO>}{LglO zk3nm^tsT2;pUL0Gn4ZO2G-Sr~Y;1eaa`lZ5e~x*a`sO>-KR)~%^GNO^xo5`oT=U)B z@8%Z7;VaGebHAUf?}+E0XCBUdIJYFG&ovL_K9u`zOwTu4bGPPR8Pf~Q=G@J>17rF; z^PSx94oNdx!=oe9n*`*fHjm{#mV32-Ur7Hl)3e#q zW~x7Z`l_it=eqBO*LOKRsyS{=jHg%7t2)PA!}Ip_%LQgh(B~)n-8}x+n&O1b+JI#*9yBq6U?bG*lb4l*kb8F-G zVWYV^=hmE`igxAo8>Vm0@SF=={ww|8%;CidTCrtp`J>F+sOYjtw?Ubdresr}LV z#QqOsyHjDV;{EaRA2DY)I=fM7BmMD4B_@?ipL|J$N#)V^&K=L4K06!HrKYQIP9ObB z`tL31^RJj>Qgi92FBoT1U!QJL%}?WgE_eFlxs@hE`qXCDK8x2=R)l}f^;a(KA<=;= zd2ht?RGUL?5k3}tGS^SZOSQ9Qx4N%OVdNLxBfeRLn-{_+vHT7+b*kZWJ=3fBVvu3Wvj26CwlIg(3Z zbpgko{!EAkv_VH!Bfl?(YjBCK8Nc(uBBX(BlpuOzv@>dvC6P$-F01#4g-0w zt_N$p{ut7zpKPf0`}GL=leDq*+g;}G-w8aPs{3F2WnM`iM7EO}D?gdAGt%@U=u^n1 zUiOkdo9g#kxd)j~k+w~R`0)~78DvM&&aPlgfj)(PN00IM=zq1l`i+k$>@#VrYj5`I zKD7Va`*qQ>JLymS`px97wy@?GI@2$Fk@Ty)e;r+-pXL(u)11J*el3xsag`@WQcg=) z!$#jhznuPznT%z>0G=fhjNkwN?s)(I3iMMyU;DM|o2c=e_vz2bzJ6{7ck)GTxz*j! z4>#GhHcq5j^~MbP7@8kQ{-%*5N6}IHQYC-i9!**3!I%NhLUq8!lsDPl z_Z!E0So$%RG->=^`$60@ku(jf3#~m>>i;wrrL~vZBVO-;#-+BPzsly7#35Vd%Lvpz z7Rr`_5CI6zI#}XD_I|bHrrc`;cG9@O)~C^SMmK zMZAgkMy~3kXpa>Au0wzQG;X$zxHWF3Hm%yt>WgSTUwf9^f?Un@Ydx~YqqLWY#-i@9 zJO}cqE#*o34ryP9Vr05~j?qcujItSD#rtr@Y1AuR`Q(Ax#dm;jB+d<7T32^J_cO^C z{j`sBWM4Z6tagTevX9qK^J-c5-7IsI3Ev$7(5_0ayGA0zkqScY7S?5+>(|GDpM z`~Tbde<~V<`_7Ji`W)K-W1m^GZ;wO!f9yMNVxNojU&&S}wavTu{5GZ{xV@ZY-YN^QOj(@F`J$uH=c&$3L)dCwd< zn(}l_K~7FV4qIikKGgniApiE;X`lNf9NPbXzw+|X{{M&0|K6_x^U=(iESBgybRhQs z&l0>J#G&^8eq>g}dZ_&$<-~{FGxE!B&mL<3?_YlHNBjRn1Rn&i8rQps>aRol|9w~% zAKL%#!*VCvFP%jm+W#*rI}Q|)+1$bJFW2-8=1G~W_fy7Uyg+@j|LTuVgzrO|X#c_! z(d&QdT&s3(ta1B2ZakCj>WMn1L??PMaUJwF>HjRlivELO$#Ly<9sGWezd)}tbcm<^ zGxY@TJrq=r;ggct5k}9k`B{E^g{f?Q9Zik9Q|7|`VBQ*P*NzaZ7g16O}$S1A%6U|0Pb4+dvf1| zP%T(ni`>rK{{=sb+RRAqhjZuVW-)$j4 z8{IPAJGno}y2@{JS4r86^c8wB_6ixXY$zJNIu>8j85D<*8wLe_-An+27eXzUr`imxbNaAuaiIS8@NmNTJC$eZ{>cAN-=kp+@0K~;J%xC8rrNj?c1>qu%XBt2PqWNyta#>N=~KxL3FoqR;u=$9E;XMvpP}wLm9v}5I2UvRJ1|US zmxW1K)U9N9go`+%=CkZidIdWlTuG@e#FFwb-slrdhWF?QlP2f8^XBzrmx-${)d!J@~aTH$d z16Q8}ezhl@eQ%)ky^rj9d9^6nUEMjBQTPFr=bLeF)0qO#uM25VM@^Mh_&jWRZ?Nt>H%GTHyV>#RKKT89;BC!7_M4J@h|Lv$JF_VD>6Ff4 z%ehQ+d*0Sl-MN!qeh0VzVDs^+3FY6>T#@>GN;V*#F62$WK01>Q|4!5i7dl%7?|&G( zl6=G2fKbig-`UxReVXu|?!sF<(%F)G`f%RqVrLuR^*e(7{vNVDV*WHWNtr+I>Rid| zX8td=ypcQC(d9>P^xb8{8CCcnWv)xTnsR4nI{!iJ2iGcfcdY+l^XJq*QqDfZ>358o zlsY%%&a-s<$D6jPfvG~}?>xmf-2B1(+3gwN({}=`ot^$nO~-$-8JZfM(piEzmEu2z zx~SB2i1p7N*#6gf&$P_ae1dsvTS`+aBlKDqiK&^jN~)erEi zRi^sFz3-=bI)0x6zuF6z!Ph4E>-}}_>z$^crLoRFSm(OtIR2EG&!23hDF663;`=(y zgz^rZ!*}*{cRn?(L*max+u_dkME0dE8CjFPf6+v5Z`zXgU;78xnD*^?oipwEbw0o# zx2J=roATW}&YgXUKE&6IZ~OG9yh1nUi$B$uSLfft*>lP^rS+YPzomPBYb4*%t@z4M zaC^*qy1?0w9v=I*rVTL0939hb_)?EG@5S=ky82;u?B9;I!#KAuyqDMBy+5*N@pK1Q zU!>-=GO3*ACN-v|Nu63?QunrCU!`^?mD>e3Mj*>N6;7pfTbAa1=6w~NeBVW@K5+YS1b@BnJLzt=Y3}*; zJ$LoN7*D(YJM#7ZwWU57&);WbTDy`>G;|{m)F>R zzemS(o_qha?}_)%ckh!s4fzGLDeT?*LL2LR%cP>V2E4n4E z^Ap^jI<1RDYk%}(%!oLA0j-$<=Cqh@?Zy)p#&jFn>qFgnAU?jfuDO-2 zlsg;JDcdE|eD`F3h^O15?0zZ++p z-<=9)M!?^LJ#k)1x$}mdyx!&qspnJSTnqgBnHN(#Qn$zY4B&K?&sv>7=H(4ESJ^LE z*)e*WQ^`^TQg_7hA8l@6zx+#M`dBk0H7e!K{&n#kZ~kciWeZ~c$XoVj-W)%lljvQY zX0%6=&!3a&Y0WS@WBL@g--K)pef%RiPyToQY+fgSG}iq$nwMhzO4%)AlUW(_k29~D ze;L{A`tTFX2WEtA73b$9^C%}`q~=hU=1`Yrs7HCmshoV18s7xmjH@a8ytU_|Uj2gV zQ|j5A*7&PlZOhfhq-OQQzdzxRbakc1bZ#LIU8*Bhr>c#jyV@8xqOa^b#izPeR~dd0 zulRmO9WD1FbYDpOV?1|-RXDXRws3DmzKRxq@~*HEpYBVk;}u3&Hp$Yf4?4_aI7aT$ zC(#b^|EzHTMIu97(fX3-(M#tB7P$D^b6o98hcvTv@O~MIRyV8ecY=pe ze$k+H<0&-h8vJ>E8}#yyAIb0`VH@y@@~a5Fw3npMpO)m;9><-`uk3_1AZ)*#G76C` zHmqxn*5k}ZFYV33G!8$NuLGO`PVUF~&#!BZ@@pM>X&kGc3p&F5zdqOcp~L;T)=!|9 z#>f6w&b4k+bg4Vv_Z{^5Upm*i%U}Gt*1cvLqxO+6Up&mrf4dGN^29I7uPNx29?q01 zJ>zT4uM-@`)I?M|0=gHlCM-#VYwFP~9@t>^th=Rr?JZy3Py3w-d0J06H@%m{Lk|D* zIdB$5T6q2Pl$NFX5w9l&ckkWpt zcagR}T$8!}P5f_ge~L6857xe1FF|Xsv|k`w`-^H{z{_|}Pq2hW`&Dc2Z>=x>6Zlu) z=ea+@y_ow@+}m?$f9pGN)A^v9!_?k$Y6EHhcV2 zwC}0*`qX~@ovbE+%=Vbp58QR-#377V=kIqlHgs`{crhV#uO&r=MPv_XAk@Z%Z_moR} z(>+0YUqlz}^RE5M-ovdCIv1nMVDd`)1&%~_?LV*m7keX9`=$0Eoc4y(T(Rbdui(c>H72fcaE*Oy zyjx@3YJX@fTjSRnv(`AZ#-?itqcP@=xM?g|wY(x!d$=C|fK zkVyvDWBU@G5&6)CG;5F9Kl45xmh0Pyr(FKec7J*1wGCIyJ!((x;fG)G z{;~)1-hcak`@!JNySuho{hPP{+~=Na&#c;gWbunbuN?Ev3x7W4wIj~>+n5jj_(A9Y zd-ty=zW?YqyN|izsV9%y*yw`~ChmSX{}1Cje)IjF?>)QcgAdxBwYy{AKW@o6?5{mv z{LI-`%J^3< zvf8^}cs*F>EH(nK-E^r{y&(6sQ&(HfFA47%eUICdPdr7lS6IEfa^LpmYTI(C4_k=4 zzG-sbfxF6v!ykOheft!)ymEytY3ki~;jX>;?ozpH)2TaMymCF5b>-tlAPzK3H|7 zlMmK@<-*&+T6-kC6Rf&MxZq!_t@dgaPJ?ycoaFBq_)WK0r|`C)-0QxT!lkV)vHBK@ zzX*P<-);$>|H?|MdQR>c+_kT|a5;DqFSEjKKXJKzd8Bt=|MqHo8E*Z#cD4ML+pAMN z>la*X^<7ffjqs>$llvyHz7=xc4py5&c(-ltH&xzebmpnT*5Ix-t?+uVzTM)l1+R$mgU+zY|41l{_Awb!cL*SGqXYj5x=HXEro^qrOaM%>jV72X6^8(erBSZ!G0 z9bnBN3-1E!TkZ1j>eaSQv3K8tyV~h;-+{Zn-QwRZ9x_MRd~UVX9;3nq;Ag|L*nYtS z=7A`0!8*@ea?HvHjOMDvpN3!UGPxJxu6Co`i@?2t4n=G3cI{F<_Y7G3&WdL`SbYbD zoe$Rj{c^7Xt1T|P4yL-b3 z7+8H0;Zm^Lm%`J*YIg~*>+*ofJ=)9P0G?Lt-8X^n3~_A(YcFW=?*LB?Y1suQx)Yj0WMQn1?V!n43?*NT57SbOseuLWxzlkj@*&>(*! zSbO8jeJgl#&~rOj`~1s&C%8vQSK+6s?b@J!5qM;flL6~oVCgU&tTjstTLso$wZb)E zt+fzd2i6%!!W+Qqe=2M(So>BBZv$(OW%29;UsLSyZm`ZQ7LQq2ZPlh1Pa*j8L1tfY zanN}fSZzh|l!Jc|bejcM|5EN%V4d?LTmx1gSMt|^9|}5b1gkA6o=sr&jhvofoq;U8 z6MSdTVGp=ZNK5`A^bF584c=Jnlw)4@8oLwG(|eM8}uVD%dmb}d+a3E>T3 zotvZjwubt4PLRI|_umEGwu7~{O>%aECxo=`2CGj-6efSrrB;0b>Dd>ow!8QbE=H!0LlJ-N5QU%6$V^XZ*^&7OeA0-(8BA$>X$nC;G4oTss*dR=j4Oc2U5H{!0VAu^=sC)TJFv)miunp zwH{FX`QLlc^}B=%!LLVU6|6H;N^Wh2hT`*oy#Xa==#obpAS~QOL!%? zZ_s}&SZ8?2eLYxXQ^Fg;8bcA@1b#L=qitaIUzLYD!5Tjh&mOSGC*+=A{-7IQl6xBb zt)PDqSp8SImx8;5^iBtVH9VL3V2yXET-AUJM|u7Y;1i-e2Wu=za<+oirxe}}ej>!R z6RfqLa^C}Xd%}bBCq3x;n$j~39vI{g18W@5=?2!Ah46H+`u5_VFZZBB4On9`(sS6) z9xz8oX#s0*e}$b7elh5?60C6-xvv9jOip+MSYvj=wP5v?g|~t=Mku@;+&{?NDfghm zZm{+umkwsf1MVC+@u$JRkMbO>F-N(Vf}acdJRPhtBc-bfTodwYEm-3ka$gVDSe?Sw zf^|lL@K&(Kn8dRkd|uFJ7g+n$i)Rm5;{w9@KYzfDdx^ggd`8IgB5-k#nF0SZ=v)rg zc!I*t2WxM3;nIK9y75Ed>EQE%ocUnw(J%LvV2vRtuC?IJY45%PtaIYTQwwfZ|7WdvKjdK{SoZAVF9O#D`5Caz4wQR2SmP@>;8|de zVak0axJS@oE%^4J!v?U%TE$Zf);Ou~RV2uL`&jN1mzDW~uxy2Wy;Kcs{r!q_+nAn~=u!V2#5ne>Q?O7ArYh!T(BoydA8uV7c!EYn(_j zcZ2VV(tB;KTgxtlt!@5KvdWo@achP9r*DeeEYAhQ7cM)WMeIs-!b3!#JOOK5R6H5*pF%#A zgEb~A_gP?#j|x|TH4h+M1O8l;Kj6Pd`2$`S(y|Gx@pJKS2Wxy@cqh13M~`=diy}RL zL7OM&RshzRuF6ASu#A@!HUrKr@wgnEKGow{V9k$+rwXibP31!kSaT+FUk}!Nh44nO z<_&~5fi>PQykXE9dn7WIpS9psL7(kljXg@AUErr+7QZQ4W7`GY3czE7{4`i&^paBq zzA5BMIaqT;k~1Hy@pj3n0qcAX>AViCv2F2e1gArKw}Le%BL3}QjnND51iu;d-wn>o z1lTv$A_z-NZERDpFKr^`>U<{iYd9;~x9 zg*SpRg>ZNiSmVcX-v;iQ@o6dg)7|d86}j)gUGp=-rMT-H5y_tpK0k^Vd}7Gk8nDKw z#lH^RKjZNR@R=drTCnC`l;>N)H%0jao*eYt4L&dMo7eAl=Y2|M0eE-FlQdZKOL89u z*7-$FPwKl;=B+I5%UJ2LD(Fyz`;$S>47fJRbMU~B zZ?nK1`gna-f;F!zIkGMIL(pvyc@up7ZXo4Jem)YdoAud16X+dPpYlvvV=E+ zX9PVrfi?H0v~LG%-bZp)AZKgHpIx{=6+I)c=4B-(|HW#n`5ECt@PiqT`+_wWEB9gG zAt5cLV9o2weHK`An|jx(z?vJB`#P}ZWu(LT=%BN5a&g12OR+1?7)dB}3# z0seW=a~F7dNaG%`=DNjG@KUusJLGd3ta&4)eHgf7x#uYdKZktr&jM>sT(}CXd06RO z1J=B|+&6$_gfCnR*4(3HZUyI$^X@yqZ$`R-H4iQRjW1N&X(4|$fi<_NcXm6tS4h_` zu;vOSa}W5f@LUSEqkl+a8vMJAmpKev7~(AjYaUv0O$Xi`b>Oa%Zs5%!Y%REFkiQMAwFlzg0X`+@unT-rNaG%` z=B356>4%iJXMuITm3UTyHP^d>J*Kc#;0uEeYr$IoBA)eN&2I~D z1ZzEq@FsBAAb%V9mMH(hSB1RV4c2-W@tfzUqk?V);44F1X|UF!h^GkrPROeaSZfBP z^K|fUx(7YMIy+4|uLW-l@;89BUPA7*V6B&s%xz$ucP6|8d`!@J7x?uc(@>tZHbXpx zV4b7r_@Az}np+p%1=d<3;XUB0kU#m)pmTR0Zz1@e5LXdc>kGu60qYEO;c~FnZZrnZ z0#6M3)PS}AMm+1mIX%40jbNPxsdQ}xckk=*4)D){p1Z-C(^putt=fJ+=uiOG+84!@ z25TLG(?>Yc2ds18B!3oIXH5#P1Z(|>_}788hC=Qez*@(l=duax&XNaj2W!oc_;-S} z4n%l2ct((ED63kZAooJB*6m1UU$D-l6W;Yiwbfc0@t7wWpYQ5%0a)u&gZLo@W?X>q^953Vt)_HXW>WC32q+J|XC{60CDHl_zV# zTJI&E4d4|ay|rN3k;;7=xNSR+cYq&=@)NAJ9pW*R+na;T0xfjhc8eVA;wx z2N(6Y&#jjd&xUrFSgn;2&nB?eleu`ovTYUK0e&)y7p(I?71p%B#A>~Xa3NS{-K+c* zfyajYDFw?0R&u6;40tcy@xz!*kpX{!7qv*h8zW);@}-9IW$Y z6?PU_=fpZ4z*?&$ycVqWapGAIUKaAX7OcHa^nCYpzt63$R32`{U2ERNzXQB3=(8KV zGkT8SU2SzPx#Smuwcbm(FIemIRL=|pe>&vCTeddpO+Px%~t1G((wc_f_ zP6kc6dTVw&J!Gx1PxFiTqY*+6tTSd+@slzkBfOhm3y6cm=mtaC-%}C;q?o z&IGQm>e~OCF*i2@H!~R^H(Ww)2uW@*F=%3X6NV7YfMg;jCSV`|n*b7`Xsu$M&|1Zz z7GGOSj8>{961A3EtvFLhY#XJHShYo4mHOKEu>Gt5?>gr!ASqVR5-(7oJ zd+mMp+4tPN)&f5Qegr%NJOexfJe2Z7Det0v7ww-<+WDlNPueotJ&|_TKwATC4Ky$9 zdTDnC+|Hoy$+VSBTMv=vA@V##o{Pa3gD(a@4t^Z`ICv-Zl~P|k9LFQC7}|`X%?Z>w zfjXy?cRG2ellNru=92eOXpcgB6xs~hnn7FhXnP(tOtyONrxy83;!H*~VKN%<;|Kxs z7-b)$>|>N&3tkIe3tmaxtEhVjrG`*0p0s$<;z^qco(Y}_9z=c7)HR4Yqp5E??M;X8 zd&qMSdF~;Pn-n+c^N8mWkD$&G)OiwZET;_*ee=*aKlS*jV=8q_1>H@lyQ$-D>PP{n zfK$Lf0sjR26YwVLIF&lWtY4sp5wl1$JHlu|>`Az&OKjYT)i6%>5vM?(1>Fx$ra$8d z0W88qGL~^nYd671NF}#O-f!I_Qez~&j6xdW%!UZ07{*JrXnw5|`xS#paq-E;UxX#I zQRI)H#5mGKLwf{$jHL7!N}|8bXby(2NJha!yMy7vg=`|3IWBmOV&;Y;g$Ou^z|vM2 zqdElMhroL@_Cf~1b2xTJBAETd;Zg3Ad-;Dayx$A&gW+K?W#54I2DCSz4Tp!}A%LYu?LKZtsxXmhaD-gw3^nlM=^A&*#g2%`C zV`;CIvaRH3rHrf+V)Jq=w6V~}LW`lE80smay&~FMK`kq3|9$ejPoDS5lMl`Z=Y!{h z=Yr>g$60>?a~rhVpxp*-DD@4czU9=q+>%oy>qI2-io-fioC(rSkapyhWh`Z4DRUy} zCy|y2?}_kUKw1H51*DB3Z7gYn=h+N3f#M-;1a*&~?ybX`#=4zxMY3c-coLh#qYUk863Tmb*4!G96)HsaCnG8$g~LY}{n=P%@$O4A3!St7lDhwlc;wRwXCOX9%V;T*GTG` zNx7MnlPB^x@{S|#eDHkmeDGY-=aRmX+E*fn(?~mww9`mCmcAcL-$#*W6nWky?OoE| zCCx)k9_k-!{mr&k&XMF@NBiq(e*$?YkavRBUKDM`vkHzQ1WW~K6{J;=whg=uybU~( zc1Ds!Iq;VQe}5+J&!qjCw28Dmkv^Y6o4aY#OL;HlC)3Vk+L=h+ ziR7I~Ub$=238JNzLAa8%D@nVOG!NxGRykSWCYwz1WsxV3cmwe>i@KfNY zz=K&8hr%7!I#|a?@D~Y}vJy-L%QIjK=_yeBq$iuJNV$r#S5a1;2vcZtJbf5XAJRxm zBQ1@z;o!Fk!}_9)=$i?Vq;0m^*sTtS&D zC?l)wINFyxZ5-)y$T^3$vnacia@pj~CT})*<>^0|eDb7nQGYabM^o=$%DJdlY;z5_ zWGz;FWFNu?nN`F(!%nT=p|0;x*LSFEJnf999eHAfQ_pdCcimhRh zw(M|+Qhq4qV<;U%d92hBCSniAP4E#?v285&jeUev_IZ)auQ+o(wCkZ=4^5;zf;KOQ zb~&`mp}DBnMZL$-&T+JJB55a*b|Ptm!B-Oo^Z9DRU}#qpmchX?=GFwtOrT66Z6(r{ zjQnhPzKk-Lk^eICPC%9updN&F5ZXa#uYq3!zXm>$x=y4n*&T($$5{F|mi|3Yp6AK) zJb5P3&LrA#LA#XTf_^DMtixSOklC6_y6hImP)7}UYDlkvx)I(s!JF(vhaj&J)IWmy zQ>+;pU~L*jNa3CsPMAgxndLIpvJ;cl$4BfVP9;v|8689Lo9jrs4*GS_hEvCI>R1MC z8MI~48o&+U2C!Il9fJ&>h4w78XQ54luj%kLj*{c}bUSIclXg34vG5QJ53`785hsu% z0lA(|p3}*5I(bfjj}zcyB;`j^{=1}om$dJaCQl+C`NvUScI-*Cl|);MD6@z%!tE%^ zv{R;?ob8m6SumWrJB>2aD02;I*N}D%XW-n_V)7J|CyP8;&ZH=~M7Kyy#% z<1ZsO8{5Wif{!5kt0+P|&o4K@N05DRB(yl@vwS;CWS+`5x{2Uug7kY7VFV>&h~=B8 zd?!rC&X=3uBgmd$EMYcQl-&d$LDnlb!AD3Xx9rCKW-;wArv0(-I~IQBX`ce!OIu#r zI-4?QQ|4^S9821gnF?{Edw=aHTnFI38c_Q_QjXZg~At{q7;l@Im{Pz+2 zh*OE>osOH}Bc#%16l+ivaXhiizexHW$3D(Y@DU`Be4CQ*b$(($b0CJ`XRi~9pZ$CkLH4}zW@#eUa@_7^3Gs3+{%m)Ti5a}d@^f~ zo8TkJcQ<)MG==Z3F$6zrY7`-!C-E49tb8%ZUv}nxVtFScZ&&305sPgT+1t1YK7y>J z(S*tH8AXuwV+=vsl@-Cy^CgPFi$KbV1P$dT6VMDLmiZ`eKBn+pI)>m!hEarg)}Ls? zWLk9-#FDqHyOHo8$Gsv?^hEA2H^E0pWt|iIrt++oz3UWmjUmk9dG03o2=d*`P4E#? z+5g56`~O_)rLGRu4f*;hsp;wcwH@N>t>E;*6X zGAaT3FFVaR*1RY}Jbb$eK7zcjaua+6k)7;zeFS+Q7EO>*lbJe&?;0@#KUm%l$sR}c zP>JldT!bm4jv+|@B6$}V$5=!WME-7qk05hm2qBUEehk6S8WKf_H*Mr;BTpN70<;^T zUAaT#Ta1_gUMOp*cP;e}rJbR)BePxnOUSpEXzG=3%DL2+OMPppe=YSdAkPAFEFjNf z@M7>{@Jw>gqz!qCBsQ~>s56N=2T{);t55RAMT}Ux2|hw9{1?khN8IH}bwm-rTy0<>~ArmcGmWK>lVij!}eo z#!+^}vX6{m-x)*fC-$=@MiVB}-xz|Q`@~J~5u^>-{mkNfoSWbyq?%X2uYg|x&xFsJ zv^Jiy<0(6yS|`9~6nSRHO{b}+%O`fO8a{_grK;22ulAt9)3sPn= z`QajkJ`Ua+3!>K`;-;CtE1p2iFT7{SFC1^ zqK;R|^D22>B~KZ+3|t1DNZk{uTXxm)pj$}0g|u5p3sCd&LSJW_K>%Ox$Bv=_lI zf?ouS#p4N-m8WSU`KBU^smNj^yo`jhoqCF?XA-iRglx{G?75UZm$Fmgb1E&>L#u~Y z4^7^ZZnyr&6AM@J&2b|0-c9fkq+Aq1o^_GzapYT={5ms>9770+W)J`OkarJxSCe-& zsUG_3p|4@^7Y2V5C_RC;lSr3e2If=Oan!Y%va2b(nzFJxnL`Mt+#JFv(ngUsinKGp zXMoQD%QxhS)OjbgJE7ePEtYcfOF#nkCs6+nNc#b4KOk)+cqDivSXOG8HEYPX#_EN< zot3c@|L$?LD{my?m^1SB-A9m_CU1!2*`LG^WX*^sOtyO8NWLNDYa|RIZzEwZw7q=Z z3tmKhU!%U!&_+WW4ebH&1K%r^6>%r@2XC3WSQ06SkB=cE*ZTKd6&Le!2eCH9q zN#64aiS#%T-sKzjB>1_JJU5blBWb?`{}TL5@C5jt0N=lZ_B&|5gBAg89w7qyJc6IL zWM(d*?R456kCetEnI_6KQKpG9b7&7M<$MQl6MTeJ`~RA!U9@nIBT-RMJi*Et57fX~RqGC6*ogMCy`X z9^|dw&nWXV%KVHn^0q3T{~MrffVKged`lJYM`NjPEU9&*)sa?5+EVIVN}cyXyARrZ z(2Bvu;9{`6)f!71@{3Lw97gh4R#EwODxZd0ElPSK=~GFQyCs0#X*a<~ko`^!!4Hb$ zIS@zbafE=mnLIa>=VnrV0saN}7vML+Z-UFAq<>Nuz%H+eVOc*W|_Na^Df%Fi#FGR*MZl8 ze+2#!_($Lr%BN5^+G;Dw+VQyHVF>gg(1n9x$SRl5tNHvKWuK$$bCi7&{3Q5Eu>Cet ze(#d^S@P?$iy-f&L&OI@_TC(A)a>RyU{4>m6b*0 zD0{gWu>77OJ6d^3>VHx63BJP7SUXb(bLMV&d+ zRYqJ+97dX-5JtM}BErZcvnG~yV`(Q6eg?shya|)HdGf7Qb{HtZA5K75z zt9I>v%Pvhg9JS}|H;>J+f7fsMaYDG9{}X!aEeYXz{?GMRLb#s)E8lX!vV|gf@)n}Q z!w?B>Olh=inppH7$;CiQ#WJa%h52IseBHU^J`I$oW4h+XO#){?9+}fQjU*yU?qVp`8B{oPAqDcmhkB zMQ1MQ`M-RTxpOYfpLW1JwurF4iClfAm{(2{yf^! z^M4)8d9TBdi~B;)|CzJzGgkHsdzef75=l`;Y z-f86gpXAA-em(!!3ZHuZuNr>z{GXY8xA85v^OqwlJ^$zD-k0-#QcnkR>puU-x+>@Y zgkDd7vre{gG41O4znZE>Bj^7lk4t!1YU3u>QaS%8^jP{R=l=v(BY!>rmyI0s{9oOf zjn?@;${lK4te*eNg9kbPC;3}wSI++l_S2S}{}bH6{L%A&+1%H9 z{;wJN==r}Y>XA$BmY%x-8*sF3pWH|>)e)^H-F3_i`C|H2T*3GYF174~?uReYCzmIA zUzf*(S+{v#X%p=$dc`?75epgbF3M-IAvErc)c@&7({aYw&r+d*&G#93nWIpqDA zyk$_njduXu?Uj{Vallt~<=>u{Z$xs{jum^o*t>+UJ>bsb{)r| zr`q#gzJbd7iE1nUpP6D!TaI&D>yCnIZ~O%K5_<`;tY7jbs(T!}v;I$k$W@-E^Shth zI~;j!F>;FL0&G3Y&FC`qz1NAOd4GoN|Mz3ygOZ0utJk%_#v%Lvy=2l2gMto~SIGW< zw{$)SaOZcv`&{`s)&?tN|Nrx)W#uS7@Q?F9{o3S^{r_9)a<55TmVC=~i8IzF{`9uj zKUn|r2Y0^y=Yy}m_x`$l$*Y5&i;lm>Grr*e{V^bq7`6W|+l7ul?z8Na%l^L$toA=W z9s7*h|MY@uN#_Y_(!jrWzT?({)&6HaSnYo{g1^O26%pib2CMzgHt>HylSf+zSnYoX z-r2|R9=1MI5Uln;tH5givlguOKO4Ym|Fa3aIM?3Qwu06EXFK?<6Kr}XSnYqBclYs| zzD@Ulf6ogwk%Jek_CEt)u{SPn*3G^9EIZqhCkS2bf98PI{%1Z|?SGbo*E{@FgVp|L zEm-Y;Hh|UsXA@ZMf3`{;J-U zwmiFqUPD>6|6fb~M&~zydhiqcZX|L+2KI%Qo+ z`@8M`$AS~4+x!Q>YX85hbzisr|2*hw|GyZl_W!HF?YvKyJ#8IW?f*A|)&74oSndC} zfz|$h2UzX@cY)RZf8b;IbYv2X+|>TRAFTHO)4-=XGRX#4IdaPfi?1A!e-&8m|L44o z?mzE~heNN2KH1qfwu9CFe>uJbPIlyA{MZt7#w!+l5#{6^p&wl8wA%(&`~RKbJx;r3 z`hLq-jLf%Ku-gCkgVp|j8d&%LIbhxY=Yw_sUj^3ve=At`|LtJi|967FAFD|K9{%_y4V6-T!xhb^qT5*8RVS`&ak>Ua;=}19D$G zatng@(~ig?2i(2?{{wlP?=|Jnb^jmR)U*GuhOYbnTCnc_>%qGJZv^Z9zZtCi|5mW> z|2x3C|L+3p{@;^A9%ujW1?&F5?)jeme-QcsN49xjwf|oZR{Q@oV732W2Uh$4jbOF^ z-wYPNRC15h9?ywFr`-o%pkLt3 z=VI_5bqxWh(w5u{wcz@ zXCL@oOL$HLtNs6Mu-gC61FQZ2VzAo(uLi6A|5~ux|E~wHb^6i> zR{Q_WV733>3Qk{Sx7z_$`~O{Fwg2y7O;G#)ez4mA&+DQrKUWIR)jVs|{(nAs)c$`t zSndDUfYttg9a!!Ed*A0-IoFn36Lhuz-wIay|LtJ4|K9~x`~M#95w-tc|F``{?f(a$ ztNs5VSndDkfFoI;WQ>ZzYX83)toHwF!D|1%9<28No4{)SzXhD`@Z1J|%^B-Xu-gAO zf81~VRw?rFfYttg4$lj<{~v&^_W!fNYX3hEJZP%JCs^(OSA%bM#&cbvmN~A3VXb|z-s@$^RKLjsGka-u^qI#+Qxpc+W$`jtNs5R@aowPZ(z0m zUkz6K|FvMX|L^$(+4AB->d)qWQTzYR&xWq{|MS3V|GyZl_W!HEYX83mtoHwd%yYH> z-w3^q7iDb2O!2yX=0b;`7U*#+ZP~Vi2Q9O4Cs^(On?G?j%HcWfBhGL+bH)pOFLlZb z^70q=8MXhP27RPcPc}HiYp=<9;A@?B%fV{@zXq)K|LeeN|G(?g{oVHeo1ibJ9(kU& zfaf|qn?Ex~PFo&u1y=k2uJ<@!2@lqN0ap9}ez4mA4}#VHfAhh8-S+>Bp^JY> zDO(M`+mTx>ID+5*gx&z230C|6 zo(~vPr;lFnZybIC;0VsLNZHQ+WUng{jhX%0P z|8D|kX4v(#f!}o6?EtI&f7fHY`*r4jELiRT2f)>itg^vs|343`_W!-CnQH&P8oHbl zu=WgKwg2A$K3T^Ue3P@5wtydSWZni=`~RKbbVpW(aa8;N9r6TLFOD3l!Q!`6*8f`YrOvqI{9}K&{r_g@YX83toaywp6Rh_CUBBAbZT~+OtoHu{ zV0ot~V;uym{r_V6rS|{xp{xD>D)1ki{?>ri{(l`4Lo|CbdO?J^k|TQW;`?>zqamAiLlRFs@qRMCs}PlWW{6%|FL zl{THS8JX*rrDrb7$XvN*S=O@5+*FfZu(h~o&DrHerhN5|vPzSXaZE-=#hLTZnN^%% z3U=)(s;D%pD=SJ0i_H3x!pdT^CcB`ta0l6!lvL(aR+#eKqOFxCw`kYy9pv0yu`Q!$ z*H#M@Y%Ma`MJ3ydD@|rqWkrE0UsJSGitRGXcUPL_IntEHP)6qJ^!eT$<=N}4!hNM= zF1M1hSFBpOY|W}%Z}Co(QBpzERr5`HSt)X;^j4OcjN>=u7VRi1*j2P?=`k6bGE29Y zlooAr)Bt;Jml;Sag-p?b%GNIP zxvgw1+qtu>lu_7Tl(nO*pptk=Ss8Px)H~Jh(5ClA^d=upcFLtVr9Lm7E(4QOQMSFJ zV5c{$WJl4iO)E;aR+Q~3+g9maSCYnBp#DFy!Rr4b4;;42Ucbu0>i?q}to}dh!0P{_ z0j&N%T7I*y+y6%^boKwy4p#pkonZCI8?f=6IR{tMqVDVD&c4Xpk@%E9XYqZ<56 z=lNF)R{tLjVDi;7ae5o^^{b2R~kp@=(A71W3_5YC%UHyNQgVp~>4Oo8rmHAKyR{tLjVD8juOgq5p|D&9Ju=@XS@ow=VR7yo|vEaQ9p8>G?{|JKB|3@BJ{eKjL(;Ycifz|&< z4S4e~NB+z=_5aZTUHyMFfl;@!_Vle__5aZUR{tM{ci-y&!vj|TA6~Hf{|JE9|3?t4 z{y%cS>i;7je3rvcJ?}o$|3@|Sz#N;0TCn>6XaKAKk0!AC{}4aE>i?q+to}bb!Rr6R zFplc~!vp@d({3&I{-e$s5`doWv>OEX<^LlO`lF1CjCC^FMjrM5(E(QfA6;Pe|KZ~Oi~9fYg8TCSkp}%SXTD{F z)&EBxSp9z#gYR1e#+@fBe=!sOLh|P zHQ+(MtF%H_{~xYt`%PG^!`ln{jQaoZfYtwpAFTdA(!lEf!_~<{D#AG9a#N;G=SCrM-wi;7Tto}cW!J_{w?;xtc z>i?q_topwVVAcO^0;~Uz7O?97b}}E-|3?S(R;SJ`u-w+#-TJ?=VAcQigU@jK)yVq`_5YC# zy<7hmto}c$z+-0G?bd=-|F;3G{y&<)s{h*xR{h_0u=@Y#1grlK7te0h|Mh}Z|2F_u z{of$?GKbIn|JS4c+rayD_5V>$9@YP?0jvIR9a!~$8^EIfD{E#GSp9#rfmQ!Ehj%5S z|0}XJ{2nIyzk*}IqW>#609O6qY_RJ8rqM6e|1E~D{y(a~s{dOj*jY;(z@q;vbvA)l zIBm6pyY+v;qW>#-y1=Uc>*2k>>i_z|-TJ@0UsnC!Z0Mr@D`oS*s{dOKR{tN>VDGf!)&KQ^RsS~tR{tMCu-c7Rp?w+s9M>$$A$F5c^@ z{%i<@OyY+v;>i?q-topx=VDi>3v)&Ga#ds!ssY2<$Kfd9y5K;+iR_ss~m{Y(r(SN|V*VDEvkutN)K?u=@XK1*`v$cCh;Y@USNTR_8gthpGP$FIfG51i;;o*Dly|i*K_JQt2=3k}% z4;MC$`ttoT93HoEPi!OoNc;ad-1mq01L=?dkHdX`h-LCE$Z-pD+=3j(fW>O#7;wn{ zN67z2$p1&k|Hskr|8cnQ5Ag?b6>HB`tUXt;_JsU@96kRZy?uX(FOVycd&vLCM0WRL zy<2QH+rB@<5@^W(N67z2$p1&k|3}FGN67z2$p1&k|3}FGN67z2$p1&k|3}FGN67z2 z$p1&k|3}FGhwc9(66@86`~DE0AV=E&hxq;wA0Ypi{D1r_-yh-|xr_J73R=9gd(d^8_bv2e2l@{$P*>z0D zoH?6Tl^2z+F56wPwP=$Q{j(}k@5+nKQK&knM;GVl)qYes&n+q~EV9+JjsoXS?MH?4 z)mxbbmip5XXPl!wMk+rld^>7=M~CyOO zwHv=o`7he^; zD(_?dAKBWE8s~l9KSz*vM?3iF3~Jx^-;v|Kulw`J)&9@-?~$GIcKt_m=5%X5AC2+M zSW&cd#dh{|y%(q>wTaHq+K;F_Li>OD{_3`|I_a6f-|3&-W z_x_>(t@pJ*_?*&xKL0?4(FC?wL-_P~4X}jC4?(6y0&!YMOIsExFz~W!1&wW2%`rC5v_eak6>O!nkZQG>p ziwifEly2RzyAV57-FG0SHOyv$=m-8|@juR5;7j}Tlhx-A=A+qwAxSUs-?8zBDO>Y5 zs7b_sK-mlv9{7qkco)OO2A?Moj~ZsFqM2xv+D7v^n@UF#UycHvhjUr8HRP8Q ztxG5@Z{+Xbh2wPMRAQ-fSCr_oVZ$=a_6CWG3QNB&8a+(ZtX$n2BQqv_%(3vbkoaBr96|g7g;1q5 zNyM{>J19SkxQTvYa?YGjIq?W5_E1sJGgnaWJYu;-pYK`fN9EG&r(R6)nsWMu`lHDt zh+s?k=OeD8{yD^_PzaN#CWZDXVy-4Vkyva!97~)`J2Qw+AwMQz%%7<*nOI~`Q>Fnq zk0O@544D~4`2^y11hSfYAx;E=hcUzDCFIe?| zJ?D<>_W#=sUG;zc)T8>p!6>>#^cenrFD(I^J>%F2!|F=DGN4NfO19?>c zw+XEJzqP*`*X{qe4Z7<8)<(Fy{r`4BSN&hthJD@ozb%pQu+-Matp4GFZvEd*5Z{oi7+>i@dN-`%bMTmAJry7hmX$)ozetzgyvZM(cj|F`wkahCsIk!?PG zQT^Z8KaC7m|G$3x0jU0O8W{7HCYb__f%m9hjyeL=M$e-#k?k#`PM|d zoEx!)Snk_);vLHvOJcbnyra6p@`wY(GJk`__007g;v7Eb6N^8Ba^icKyVb-sOzc`G zy`DHg{zhV%zsroo<8tB=?UOwj$ zH}SccSk{Fq;_K*l4RJp0)e$$+fd*o!zlm7xu@)z8BbI)3IO$!)(l6H-yI--y&Gf4( z&hA$lpQT^fPI?}(^sAUy`c*|N{i-3Be$`7l^hRRoS2MBntCd*#)lMw^>LiwanXz`i zJjBv3FR}D1KrH#ZtgR`z*q7E=9lI{(`+7Mb&h3ap1^9o zzyw+2CmSy-SOTkNA}fCqPYFLyjAT~D6jtC_tkO$Ny2(JxFq4(|Se_DDtk7dvtrwaL z`JI0}&zng+YtA>-_`*!%DYS@LzSyib#iqn8Gbfsp%yP5BtTg533{zotnN=pooNUfE zXQ5?rh53%T63w4lbG5k!&(7zVZ0ROw_|B9aPXXyYR zE&X57_dQ$(xIg;8qVIdS4sb~ScN}+gfECnD@DWnk(~cm7^nXM8zajl!56@PQ^=uU@ z2a|dJNAm2CW4{u~jwQ}K!+rA%_suihH&20|0zU;F%&It)Z%uAioFUv#Bgh}apPQY6 z==&b7102%-or$DpA*I=bqo@BXI={VjfJ6GfWB6Wd>;H<*Z*Lvokp6E-|2L%n8`A#` z>HmiGe?$7eA^qQw{%=VCH>Cd?(*F(V|AzE`L;AlV{oj!OudV+py1sqs03T`nU(x*) z9pL{<`oE&%`>%9>zbgG-(e>?12l%Vf{}o-|zI1^3`8{-nB=Bz~0XZ`kxm)vD!QD~ZBON_LHBkd`Oa=wQ_ewktr#y#H@kM3htPf z^QEAbks41~Ur|z7lv!GE8g8L2z8y?jPT7vLx0jW!z<0GU1Ha2xtjfsrDq+bEEPeE3 zKP78-=~l^@z9J`U?aFkoes-EGl=@cfD756|P0lIBm$c0)?yz&pfE*FrQFutN98uXF zmb%xK6rELGhF@#DWR(-2?ZjtUZm#XLV%vQ+Ra%T%y^|_3ipndCa|=otsBPjS*n7@O zhDUK0(B{GtQJ?agx-soksmZEWd%0wJ=1L~Op&v8!0L+Ccqmpj!i|pZR-f{S2%`zx&Xm-P6woRHLV#*?Vj846sPQ`_QAU z)87^x4V}Wz)yg>m4ViMhsGiNij~yF(b|Gb=9>TRZ$Bq|~r}rhE2LILdEZP*kuNy^0 z#JN7nHkJoK@tWC5I}c|V^G(!x#4GQ)9!`^^dK1T~@m9755vZP=i|Wis=;D2OHuP6e zb*Z7uW>jHzEG7*NfD3Z9c4G=Q8}n-)S}~BC$h(*JzQ5c~zn;_V@#NP_yo!oPMDeD2 zZLd1UqY=~lnu~UVT;f^w@asVc;;~OWm)=jlAMv$DyaI}rM<#qmB(k|#Z_JIS9$pfy zAV%J#Yy^uW9<(wc+qsqLhFaHl>UgfH1QxQnia2d(%v%_tsJy&e4P5f zWfpuOufNmx`J{xD5c-hWfVk~dEmlBKDbMb_EBjqoku4%~VT(p72 z!{2y#mrJ}^Z(_d4WqAZ7-zBIgWh5ALUC<(%m&X~i4;8MD=||lfG>~YwU=#A-)c*!F zF7n~$YsqLwW!m}0>$7-Oy>PCvJak?$5p5~2ohJW3L0d<>O^av6X~;-C-fe@QZSW@= zIC6=mN%3?vzGzo2(J<*`{I5kLrUrGV3pPTe4e?kkT0!3uRSGWgRvlPv7<1-c zWcye8Hv#@OGGG3Kw#fz+X z$X(Ca4?}jnFY$Km&FrC!C!bum!t(*qQ}3d`VaV=w=EM0xV?HG4bsv2b4ZFiH z(G2|0bhIspqTPrrQ|7}nvgv(^C*ha5Z@zadW6c!x(8UAfFOkos@GM@wZ>G;(#6Ms>)=>9OZ2&#_?~=vAvYJXa)0^I$!N|zi6EjzswwdntabwrhO*s3H99&&UzSzoEXRVSYz%A zGOmn)c$)up2G4WaJ(c;q06E;clJ%Q={`GWZN;~nZjX4iloOIYcKIqIgC+S1)>;CD+Jji(Vz7{Z6--8~HtVQ#35##bSe2Z7@zd=8lARf-e zqwc&Rj4R_knKAKEcM@gZoW|TkrVl1@uQRV^Nj;2-cu5wI?C*_boG2rnK1D0>x9}z2 zG#?ByR*TsKFo!-y#;aEH3?ziXpLn!?mp*;C6dux;L&JEk!Dl>UAYQJQGmm;-o1w`i zp2M#gZ%p$@?xE#8*QoCRX%7&K=h?FulXlWir%myyzHlA)UN-A3<5x_-=TPP#{SeRa z;+6Pv8S~B5L;u7R?NjrZ8_bpSd7j-$ed4A4W5#zReY%Npt0iwTbF5_+8n?`c4aie8 zVK0!mKtFC}PQSxA4W`UC>Jx9lKIX)m^uLgM@jUpbq)qWg|1Rr~cyKOU!kQinjrnj& z3|hg+@>BXy#(c?Q&R)#g@xm!q_q+dzm-Pj-U+>6Cypi_4o^a$PH1R?@-@`MGeu<}N z@i;mKKE)gKldO??Jw^KIjOBk#<=!2_c)+(@;*nLnsb1yGN1NL7e=}`=O#aK^^{?Cm z^Bi8EL@siP7h}C@$u|i(Tua+g%&(`CHHCW@xrk@`eTE~c*2D8J)W`o`GHb%41yjWP#=)<-iH9_4y%KU6K%PHv=;y%4B<9mc z&bVma`$MkoWzm*gQ<>9xy~{k4D?VsN|MYK}Q^%)_ znOy7WTLSCFW%R9sF%hrMbsM?oPO{VG|98kU8#(sA&YQ|Q!5EEa4v7b0@ornnJ#Y>5 zGGruP*=s2)!KFFMShOv_CuiVRvXkV`1bFb_`J{OK=pOwY)!O1g? z_KTt2M7;sl8M)3HX2QD-`H>1@XT6~?L^c}K0|nMgb0{db-t zg8=o(^(u4jyW?!!$vl(mr@drtQ|$l8QC_?TKd{JH9={h+c7vBS9UhVvu=LRGi^$}A zw0j42J{HC^B$hPh{AEtvTHj{oR*9WNkI?C+KV|`i8nvTq-Ir2G)@+XgAo--HTWvuk_Q07Ybn#{U* ziX*Rij87wNJ{8nlwA<^x5$Y%KzQ9>yuYrHLvf#Ovwx6T#-yhENpL*XXjN#tcAE58l z``@HBQdjixJU`)mk7ez z3=T3M_kzDioArd(MHa-Hkc(VrQNE6Ra%}~Rhj6*xVvfo60ep2Kk0+@o2|0YkJ+_{? zoW7K`igB(X|A=_@;PCec`u2Usx&eMSWHDdhRXotk^&tI{>uh+JYcXwZ8DirU%AD%R zyM}!4j$_Z`r5@Dvlh3+37=wCez7?b$nk%0E=yk(LMeySEy_K<9NZ;;bZmbQm zX0q1LLWajMZsJM)Ez)=7_LQ6F;3w$cN8C&AG9G!5W!r(gL&G>d|ffjnBDNuN}W4cYnIV&#(3W8kmh9$+zc;wAeYmT%lDD% zj-lM!(`k!)Y0zrcTx76qgcJxn5#SuZ7nZ=Gn)zmrL90m>Ut~d5`|C z*<$A#29JkdvD7g-lKZb$T4#Xoq44w$ymqZRyadlo*3MGoE!Qt7Cl*tBUuPgIxgLYx zzOGcpsQ2|IlS`8DQc7P7gF`(`+DhizI_lX&{Q4T6A;{|-=E4NZZ$|E|$mv%rSTpFOUN0fv-dAP>V@Ie%u0vA! z4kL1APAwVE-hn>7P1%-d)W2KGRdeIL2p%s4y(Pk;AX+01e9()-E{XFo;1dtblz zvQ{zP^~?>qh9b*{SU3KJyieqQXh7DzuZNM@C&}EK^wpC~3i-Z09ex<^w;AKL@B-WB z4&oy6-osdbfGowT&Pv9)3K`}yhbxiGN5q>`pwX{1WL!ae2i7yT$awBbyVZsCbrxe% zxREiWtX#45x%Va3ho-^P<@EPj+P!}!a)GBef{X)WxRtP)ki)oKOMD?=5NW5;?p|;s za@4C7KI9t7{T9b~oa=lR+TG;6p8k4$>~pf2H2hGUOo^g0?2HuEB?17cn;) z((O+R#x%qQgdD7;4?vuQc(E9qP43P~U&fv-{mYX4sz&>{Q(J??oz_W%1d z7A<1w(|+y|JZII1ecdBh`__W3#YfGp3(~RcKhz@Vk>kE^`@KiH{v*nLxAoDZU;w=P zyw0Kafsd3t^!(5fl}E__f5`s-K;60ZoS-@iH<6yUIto?yKACkCt3N9DXU~bRqrrJ^ z`^}%_+$-e&Yx`k)koi@dj%JT$c~3fY)cbiX?=$x=11}j zftDXo-}`+2_qRoT0w4N(A86?T@vA3qdrtQDzW@8#bjbd{?as8H;_CbPHlV^^XpBGW z`P9#rwfGlmyYJ^qe_QVT{0Q0q=iNof{{Ls&|NkoAFNNCv_m%)ZnwZhN^=}`($Flz) zJav!!*kbaM>^PfP?EhyM?Fr+>y-DM<*#ECBdcZnp;pem1|8Jq3ywLBQy2rAU-%iYr zV5XJ0o?i!=iFxU78j0m(R6ViS|F0z$JNea4dVpB$$v5rR|odn|kP%`^8}cJhs+ zLvKsmW7)|M5_iFIfLQG0dx_;;riWPU2CStLZ-#{!U;_HaT zPJRus)L%t>EOD_D=Mm@eIonB3BbI*oiKSn$#Le`}MJ)a5O0fIYK`iNQ#L}-SV(C{g zvDo3SLVjZZKTp!7eq#BRE{$0F8>mz6XzZ#4GYX3igzm-&eOgvKd{}Ep33P~U&fsh3L7fIm% E17rricmMzZ diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.opt b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.opt deleted file mode 100644 index f2d62788d42716b03a5d5ade4f124f3941d3eb12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50688 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 Hh6wy0bC0a+ diff --git a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.plg b/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.plg deleted file mode 100644 index a6cfd82..0000000 --- a/G3D/Engine/Drivers/D3D7xDrv/D3DDrv7x.plg +++ /dev/null @@ -1,44 +0,0 @@ - - -
-

Build Log

-

---------------------Configuration: D3DDrv7x - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP1D.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fp"Release/D3DDrv7x.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c -"D:\Release\G3D\Engine\Drivers\D3D7xDrv\D3d_main.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP1D.tmp" -Creating temporary file "C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP1E.tmp" with contents -[ -Wininet.lib comdlg32.lib gdi32.lib kernel32.lib libcmt.lib libcmtd.lib oldnames.lib shell32.lib user32.lib uuid.lib advapi32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /incremental:no /pdb:"Release/D3DDrv7x.pdb" /machine:I386 /out:"Release/D3DDrv7x.dll" /implib:"Release/D3DDrv7x.lib" -.\Release\D3d_err.obj -.\Release\D3d_fx.obj -.\Release\D3d_main.obj -.\Release\D3dcache.obj -.\Release\D3ddrv7x.obj -.\Release\DDMemMgr.obj -.\Release\Gspan.obj -.\Release\Pcache.obj -.\Release\Render.obj -.\Release\Scene.obj -.\Release\THandle.obj -.\Release\tpage.obj -] -Creating command line "link.exe @C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP1E.tmp" -

Output Window

-Compiling... -D3d_main.cpp -Linking... - Creating library Release/D3DDrv7x.lib and object Release/D3DDrv7x.exp - - - -

Results

-D3DDrv7x.dll - 0 error(s), 0 warning(s) -
- - diff --git a/G3D/Engine/Drivers/D3D7xDrv/mssccprj.scc b/G3D/Engine/Drivers/D3D7xDrv/mssccprj.scc deleted file mode 100644 index 848e217..0000000 --- a/G3D/Engine/Drivers/D3D7xDrv/mssccprj.scc +++ /dev/null @@ -1,4 +0,0 @@ -SCC = This is a Source Code Control file - -[D3DDrv.mak] -SCC_Project_Name = "$/Genesis10/Source/Engine/Drivers/D3DDrv", LQQBAAAA diff --git a/G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsp b/G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsp deleted file mode 100644 index 48953e3..0000000 --- a/G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsp +++ /dev/null @@ -1,199 +0,0 @@ -# Microsoft Developer Studio Project File - Name="D3DDriver" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=D3DDriver - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "D3DDriver.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "D3DDriver.mak" CFG="D3DDriver - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "D3DDriver - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "D3DDriver - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "D3DDriver - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRIVER_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRIVER_EXPORTS" /D "STRICT" /D "D3DDRV_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dxguid.lib ddraw.lib d3d8.lib /nologo /dll /machine:I386 /out:"..\Release\D3DDrv.dll" /libpath:"..\geGlobals\Lib" - -!ELSEIF "$(CFG)" == "D3DDriver - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRIVER_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\geGlobals\Include" /I "..\geGlobals\GenesisInclude" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRIVER_EXPORTS" /D "STRICT" /D "D3DDRV_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dxguid.lib ddraw.lib /nologo /dll /debug /machine:I386 /out:"..\Binaries\Debug\D3DDrv.dll" /pdbtype:sept /libpath:"..\geGlobals\Lib" - -!ENDIF - -# Begin Target - -# Name "D3DDriver - Win32 Release" -# Name "D3DDriver - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\D3D_ERR.CPP -# End Source File -# Begin Source File - -SOURCE=.\D3d_fx.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3ddrv.cpp -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.cpp -# End Source File -# Begin Source File - -SOURCE=.\GSPAN.CPP -# End Source File -# Begin Source File - -SOURCE=.\Pcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\Render.cpp -# End Source File -# Begin Source File - -SOURCE=.\Scene.cpp -# End Source File -# Begin Source File - -SOURCE=.\THandle.cpp -# End Source File -# Begin Source File - -SOURCE=.\tpage.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\D3D_ERR.H -# End Source File -# Begin Source File - -SOURCE=.\D3D_FX.H -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.h -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.h -# End Source File -# Begin Source File - -SOURCE=.\D3DDRV.H -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.h -# End Source File -# Begin Source File - -SOURCE=.\GSPAN.H -# End Source File -# Begin Source File - -SOURCE=.\Pcache.h -# End Source File -# Begin Source File - -SOURCE=.\RENDER.H -# End Source File -# Begin Source File - -SOURCE=.\SCENE.H -# End Source File -# Begin Source File - -SOURCE=.\THandle.h -# End Source File -# Begin Source File - -SOURCE=.\TPage.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsw b/G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsw deleted file mode 100644 index 6109fe3..0000000 --- a/G3D/Engine/Drivers/D3D8Drv/D3DDriver.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "D3DDriver"=.\D3DDriver.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/G3D/Engine/Drivers/D3D8Drv/D3DDriver.ncb b/G3D/Engine/Drivers/D3D8Drv/D3DDriver.ncb deleted file mode 100644 index e9fea99ce7f282247a958ff5068cf216308cedb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115712 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 diff --git a/G3D/Engine/Drivers/D3D8Drv/D3DDriver.plg b/G3D/Engine/Drivers/D3D8Drv/D3DDriver.plg deleted file mode 100644 index e4e67e9..0000000 --- a/G3D/Engine/Drivers/D3D8Drv/D3DDriver.plg +++ /dev/null @@ -1,44 +0,0 @@ - - -
-

Build Log

-

---------------------Configuration: D3DDriver - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP35.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRIVER_EXPORTS" /D "STRICT" /D "D3DDRV_EXPORTS" /Fp"Release/D3DDriver.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c -"D:\Release\G3D\Engine\Drivers\D3D8Drv\D3d_main.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP35.tmp" -Creating temporary file "C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP36.tmp" with contents -[ -kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dxguid.lib ddraw.lib d3d8.lib /nologo /dll /incremental:no /pdb:"Release/D3DDrv.pdb" /machine:I386 /out:"..\Release\D3DDrv.dll" /implib:"Release/D3DDrv.lib" /libpath:"..\geGlobals\Lib" -.\Release\D3D_ERR.OBJ -.\Release\D3d_fx.obj -.\Release\D3d_main.obj -.\Release\D3dcache.obj -.\Release\D3ddrv.obj -.\Release\DDMemMgr.obj -.\Release\GSPAN.OBJ -.\Release\Pcache.obj -.\Release\Render.obj -.\Release\Scene.obj -.\Release\THandle.obj -.\Release\tpage.obj -] -Creating command line "link.exe @C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP36.tmp" -

Output Window

-Compiling... -D3d_main.cpp -Linking... - Creating library Release/D3DDrv.lib and object Release/D3DDrv.exp - - - -

Results

-D3DDrv.dll - 0 error(s), 0 warning(s) -
- - diff --git a/G3D/Engine/Drivers/D3DDrv/D3DDrv.dsp b/G3D/Engine/Drivers/D3DDrv/D3DDrv.dsp deleted file mode 100644 index 931f9f9..0000000 --- a/G3D/Engine/Drivers/D3DDrv/D3DDrv.dsp +++ /dev/null @@ -1,207 +0,0 @@ -# Microsoft Developer Studio Project File - Name="D3DDrv" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=D3DDrv - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv.mak" CFG="D3DDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "D3DDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "D3DDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/Genesis10/Source/Engine/Drivers/D3DDrv", DVPBAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "D3DDrv - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /YX /FD /c -# ADD CPP /nologo /G5 /MT /W3 /GX /Ox /Ot /Ow /Og /Oi /Op /Ob2 /I "..\..\.." /I "..\\" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\Math" /I "..\..\..\Bitmap" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /FD /c -# SUBTRACT CPP /X /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /x /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib vfw32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /machine:I386 -# SUBTRACT LINK32 /nodefaultlib - -!ELSEIF "$(CFG)" == "D3DDrv - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /G5 /MTd /W3 /GX /Zi /Od /I "..\..\.." /I "..\..\..\Math" /I "..\\" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\Bitmap" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /YX /FD /GZ /c -# SUBTRACT CPP /X -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /x /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib vfw32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# SUBTRACT LINK32 /nodefaultlib - -!ENDIF - -# Begin Target - -# Name "D3DDrv - Win32 Release" -# Name "D3DDrv - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\D3d_err.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_err.h -# End Source File -# Begin Source File - -SOURCE=.\D3d_fx.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_fx.h -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.h -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.h -# End Source File -# Begin Source File - -SOURCE=.\D3ddrv.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3ddrv.h -# End Source File -# Begin Source File - -SOURCE=..\Dcommon.h -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.c -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.h -# End Source File -# Begin Source File - -SOURCE=.\Gspan.cpp -# End Source File -# Begin Source File - -SOURCE=.\Gspan.h -# End Source File -# Begin Source File - -SOURCE=.\Pcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\Pcache.h -# End Source File -# Begin Source File - -SOURCE=.\Render.cpp -# End Source File -# Begin Source File - -SOURCE=.\Render.h -# End Source File -# Begin Source File - -SOURCE=.\Scene.cpp -# End Source File -# Begin Source File - -SOURCE=.\Scene.h -# End Source File -# Begin Source File - -SOURCE=.\THandle.cpp -# End Source File -# Begin Source File - -SOURCE=.\THandle.h -# End Source File -# Begin Source File - -SOURCE=.\tpage.cpp -# End Source File -# Begin Source File - -SOURCE=.\TPage.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Group "Libraries" - -# PROP Default_Filter "" -# End Group -# End Target -# End Project diff --git a/G3D/Engine/Drivers/D3DDrv/D3DDrv.dsw b/G3D/Engine/Drivers/D3DDrv/D3DDrv.dsw deleted file mode 100644 index 262da56..0000000 --- a/G3D/Engine/Drivers/D3DDrv/D3DDrv.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "D3DDrv"=.\D3DDrv.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/G3D/Engine/Drivers/D3DDrv/D3DDrv.mak b/G3D/Engine/Drivers/D3DDrv/D3DDrv.mak deleted file mode 100644 index 454edfc..0000000 --- a/G3D/Engine/Drivers/D3DDrv/D3DDrv.mak +++ /dev/null @@ -1,284 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Based on D3DDrv.dsp -!IF "$(CFG)" == "" -CFG=D3DDrv - Win32 Debug -!MESSAGE No configuration specified. Defaulting to D3DDrv - Win32 Debug. -!ENDIF - -!IF "$(CFG)" != "D3DDrv - Win32 Release" && "$(CFG)" != "D3DDrv - Win32 Debug" -!MESSAGE Invalid configuration "$(CFG)" specified. -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv.mak" CFG="D3DDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "D3DDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "D3DDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE -!ERROR An invalid configuration is specified. -!ENDIF - -!IF "$(OS)" == "Windows_NT" -NULL= -!ELSE -NULL=nul -!ENDIF - -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "D3DDrv - Win32 Release" - -OUTDIR=.\Release -INTDIR=.\Release -# Begin Custom Macros -OutDir=.\Release -# End Custom Macros - -ALL : "$(OUTDIR)\D3DDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\D3d_err.obj" - -@erase "$(INTDIR)\D3d_fx.obj" - -@erase "$(INTDIR)\D3d_main.obj" - -@erase "$(INTDIR)\D3dcache.obj" - -@erase "$(INTDIR)\D3ddrv.obj" - -@erase "$(INTDIR)\DDMemMgr.obj" - -@erase "$(INTDIR)\Gspan.obj" - -@erase "$(INTDIR)\Pcache.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\Scene.obj" - -@erase "$(INTDIR)\THandle.obj" - -@erase "$(INTDIR)\tpage.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(OUTDIR)\D3DDrv.dll" - -@erase "$(OUTDIR)\D3DDrv.exp" - -@erase "$(OUTDIR)\D3DDrv.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MT /W3 /GX /O2 /X /I "..\..\.." /I "..\..\..\..\SdkDx6Sdk\Include" /I "..\\" /I "..\..\..\..\Sdk\Dx6Sdk\Include" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\Math" /I "..\..\..\Bitmap" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fp"$(INTDIR)\D3DDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c -MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\D3DDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:no /pdb:"$(OUTDIR)\D3DDrv.pdb" /machine:I386 /nodefaultlib /out:"$(OUTDIR)\D3DDrv.dll" /implib:"$(OUTDIR)\D3DDrv.lib" -LINK32_OBJS= \ - "$(INTDIR)\D3d_err.obj" \ - "$(INTDIR)\D3d_fx.obj" \ - "$(INTDIR)\D3d_main.obj" \ - "$(INTDIR)\D3dcache.obj" \ - "$(INTDIR)\D3ddrv.obj" \ - "$(INTDIR)\DDMemMgr.obj" \ - "$(INTDIR)\Gspan.obj" \ - "$(INTDIR)\Pcache.obj" \ - "$(INTDIR)\Render.obj" \ - "$(INTDIR)\Scene.obj" \ - "$(INTDIR)\THandle.obj" \ - "$(INTDIR)\tpage.obj" \ - "..\..\..\..\MSDev60\lib\Wininet.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmt.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\ddraw.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\d3dim.lib" - -"$(OUTDIR)\D3DDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ELSEIF "$(CFG)" == "D3DDrv - Win32 Debug" - -OUTDIR=.\Debug -INTDIR=.\Debug -# Begin Custom Macros -OutDir=.\Debug -# End Custom Macros - -ALL : "$(OUTDIR)\D3DDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\D3d_err.obj" - -@erase "$(INTDIR)\D3d_fx.obj" - -@erase "$(INTDIR)\D3d_main.obj" - -@erase "$(INTDIR)\D3dcache.obj" - -@erase "$(INTDIR)\D3ddrv.obj" - -@erase "$(INTDIR)\DDMemMgr.obj" - -@erase "$(INTDIR)\Gspan.obj" - -@erase "$(INTDIR)\Pcache.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\Scene.obj" - -@erase "$(INTDIR)\THandle.obj" - -@erase "$(INTDIR)\tpage.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\vc60.pdb" - -@erase "$(OUTDIR)\D3DDrv.dll" - -@erase "$(OUTDIR)\D3DDrv.exp" - -@erase "$(OUTDIR)\D3DDrv.ilk" - -@erase "$(OUTDIR)\D3DDrv.lib" - -@erase "$(OUTDIR)\D3DDrv.pdb" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MTd /W3 /GX /Zi /Od /X /I "..\..\.." /I "..\..\..\Math" /I "..\\" /I "..\..\..\..\Sdk\Dx6Sdk\Include" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\Bitmap" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fp"$(INTDIR)\D3DDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c -MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\D3DDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:yes /pdb:"$(OUTDIR)\D3DDrv.pdb" /debug /machine:I386 /nodefaultlib /out:"$(OUTDIR)\D3DDrv.dll" /implib:"$(OUTDIR)\D3DDrv.lib" /pdbtype:sept -LINK32_OBJS= \ - "$(INTDIR)\D3d_err.obj" \ - "$(INTDIR)\D3d_fx.obj" \ - "$(INTDIR)\D3d_main.obj" \ - "$(INTDIR)\D3dcache.obj" \ - "$(INTDIR)\D3ddrv.obj" \ - "$(INTDIR)\DDMemMgr.obj" \ - "$(INTDIR)\Gspan.obj" \ - "$(INTDIR)\Pcache.obj" \ - "$(INTDIR)\Render.obj" \ - "$(INTDIR)\Scene.obj" \ - "$(INTDIR)\THandle.obj" \ - "$(INTDIR)\tpage.obj" \ - "..\..\..\..\MSDev60\lib\Wininet.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmtd.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\ddraw.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\d3dim.lib" - -"$(OUTDIR)\D3DDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ENDIF - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - - -!IF "$(NO_EXTERNAL_DEPS)" != "1" -!IF EXISTS("D3DDrv.dep") -!INCLUDE "D3DDrv.dep" -!ELSE -!MESSAGE Warning: cannot find "D3DDrv.dep" -!ENDIF -!ENDIF - - -!IF "$(CFG)" == "D3DDrv - Win32 Release" || "$(CFG)" == "D3DDrv - Win32 Debug" -SOURCE=.\D3d_err.cpp - -"$(INTDIR)\D3d_err.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3d_fx.cpp - -"$(INTDIR)\D3d_fx.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3d_main.cpp - -"$(INTDIR)\D3d_main.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3dcache.cpp - -"$(INTDIR)\D3dcache.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3ddrv.cpp - -"$(INTDIR)\D3ddrv.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\DDMemMgr.c - -"$(INTDIR)\DDMemMgr.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Gspan.cpp - -"$(INTDIR)\Gspan.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Pcache.cpp - -"$(INTDIR)\Pcache.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Render.cpp - -"$(INTDIR)\Render.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Scene.cpp - -"$(INTDIR)\Scene.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\THandle.cpp - -"$(INTDIR)\THandle.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\tpage.cpp - -"$(INTDIR)\tpage.obj" : $(SOURCE) "$(INTDIR)" - - - -!ENDIF - diff --git a/G3D/Engine/Drivers/D3DDrv/D3DDrv.ncb b/G3D/Engine/Drivers/D3DDrv/D3DDrv.ncb deleted file mode 100644 index 3ba92d06519085ceec183ad89c9fd09f22c08978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345088 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%0AwTrL6 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 diff --git a/G3D/Engine/Drivers/D3DDrv/D3DDrv.plg b/G3D/Engine/Drivers/D3DDrv/D3DDrv.plg deleted file mode 100644 index 08d3bef..0000000 --- a/G3D/Engine/Drivers/D3DDrv/D3DDrv.plg +++ /dev/null @@ -1,44 +0,0 @@ - - -
-

Build Log

-

---------------------Configuration: D3DDrv - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP7C.tmp" with contents -[ -/nologo /G5 /MT /W3 /GX /Ox /Ot /Ow /Og /Oi /Op /Ob2 /I "..\..\.." /I "..\\" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\Math" /I "..\..\..\Bitmap" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fo"Release/" /Fd"Release/" /FD /c -"D:\Release\G3D\Engine\Drivers\D3DDrv\D3d_main.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP7C.tmp" -Creating temporary file "C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP7D.tmp" with contents -[ -kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib vfw32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /incremental:no /pdb:"Release/D3DDrv.pdb" /machine:I386 /out:"Release/D3DDrv.dll" /implib:"Release/D3DDrv.lib" -.\Release\D3d_err.obj -.\Release\D3d_fx.obj -.\Release\D3d_main.obj -.\Release\D3dcache.obj -.\Release\D3ddrv.obj -.\Release\DDMemMgr.obj -.\Release\Gspan.obj -.\Release\Pcache.obj -.\Release\Render.obj -.\Release\Scene.obj -.\Release\THandle.obj -.\Release\tpage.obj -] -Creating command line "link.exe @C:\DOCUME~1\RALPHD~1\LOCALS~1\Temp\RSP7D.tmp" -

Output Window

-Compiling... -D3d_main.cpp -Linking... - Creating library Release/D3DDrv.lib and object Release/D3DDrv.exp - - - -

Results

-D3DDrv.dll - 0 error(s), 0 warning(s) -
- - diff --git a/G3D/Engine/Drivers/D3DDrv/mssccprj.scc b/G3D/Engine/Drivers/D3DDrv/mssccprj.scc deleted file mode 100644 index 848e217..0000000 --- a/G3D/Engine/Drivers/D3DDrv/mssccprj.scc +++ /dev/null @@ -1,4 +0,0 @@ -SCC = This is a Source Code Control file - -[D3DDrv.mak] -SCC_Project_Name = "$/Genesis10/Source/Engine/Drivers/D3DDrv", LQQBAAAA diff --git a/G3D/Engine/Drivers/GlideDrv/GlideDrv.dsp b/G3D/Engine/Drivers/GlideDrv/GlideDrv.dsp deleted file mode 100644 index cc4ff6e..0000000 --- a/G3D/Engine/Drivers/GlideDrv/GlideDrv.dsp +++ /dev/null @@ -1,229 +0,0 @@ -# Microsoft Developer Studio Project File - Name="GlideDrv" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=GlideDrv - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "GlideDrv.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "GlideDrv.mak" CFG="GlideDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "GlideDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "GlideDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/Genesis10/Source/Engine/Drivers/GlideDrv", CVPBAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "GlideDrv - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLIDEDRV_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /X /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Glide\Include" /I "..\..\..\\" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLIDEDRV_EXPORTS" /D "__MSC__" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /machine:I386 /nodefaultlib - -!ELSEIF "$(CFG)" == "GlideDrv - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLIDEDRV_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /X /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Glide\Include" /I "..\..\..\\" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLIDEDRV_EXPORTS" /D "__MSC__" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /debug /machine:I386 /nodefaultlib /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "GlideDrv - Win32 Release" -# Name "GlideDrv - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\Bmp.c -# End Source File -# Begin Source File - -SOURCE=..\Dcommon.h -# End Source File -# Begin Source File - -SOURCE=.\GCache.c -# End Source File -# Begin Source File - -SOURCE=.\GCache.h -# End Source File -# Begin Source File - -SOURCE=.\GlideDrv.c -# End Source File -# Begin Source File - -SOURCE=.\Glidedrv.h -# End Source File -# Begin Source File - -SOURCE=.\GMain.c -# End Source File -# Begin Source File - -SOURCE=.\GMain.h -# End Source File -# Begin Source File - -SOURCE=.\GMemMgr.c -# End Source File -# Begin Source File - -SOURCE=.\GMemMgr.h -# End Source File -# Begin Source File - -SOURCE=.\GSpan.cpp -# End Source File -# Begin Source File - -SOURCE=.\GSpan.h -# End Source File -# Begin Source File - -SOURCE=.\GThandle.c -# End Source File -# Begin Source File - -SOURCE=.\GTHandle.h -# End Source File -# Begin Source File - -SOURCE=.\Render.c -# End Source File -# Begin Source File - -SOURCE=.\Render.h -# End Source File -# End Group -# Begin Group "Libraries" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\..\Sdk\Glide\Lib\glide2x.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmt.lib - -!IF "$(CFG)" == "GlideDrv - Win32 Release" - -!ELSEIF "$(CFG)" == "GlideDrv - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmtd.lib - -!IF "$(CFG)" == "GlideDrv - Win32 Release" - -# PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "GlideDrv - Win32 Debug" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Winspool.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Uuid.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Comdlg32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Gdi32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Kernel32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Oldnames.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Shell32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\User32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Advapi32.lib -# End Source File -# End Group -# End Target -# End Project diff --git a/G3D/Engine/Drivers/GlideDrv/GlideDrv.dsw b/G3D/Engine/Drivers/GlideDrv/GlideDrv.dsw deleted file mode 100644 index 5b1db9a..0000000 --- a/G3D/Engine/Drivers/GlideDrv/GlideDrv.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "GlideDrv"=.\GlideDrv.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/G3D/Engine/Drivers/GlideDrv/GlideDrv.mak b/G3D/Engine/Drivers/GlideDrv/GlideDrv.mak deleted file mode 100644 index d7eb271..0000000 --- a/G3D/Engine/Drivers/GlideDrv/GlideDrv.mak +++ /dev/null @@ -1,245 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Based on GlideDrv.dsp -!IF "$(CFG)" == "" -CFG=GlideDrv - Win32 Debug -!MESSAGE No configuration specified. Defaulting to GlideDrv - Win32 Debug. -!ENDIF - -!IF "$(CFG)" != "GlideDrv - Win32 Release" && "$(CFG)" != "GlideDrv - Win32 Debug" -!MESSAGE Invalid configuration "$(CFG)" specified. -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "GlideDrv.mak" CFG="GlideDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "GlideDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "GlideDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE -!ERROR An invalid configuration is specified. -!ENDIF - -!IF "$(OS)" == "Windows_NT" -NULL= -!ELSE -NULL=nul -!ENDIF - -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "GlideDrv - Win32 Release" - -OUTDIR=.\Release -INTDIR=.\Release -# Begin Custom Macros -OutDir=.\Release -# End Custom Macros - -ALL : "$(OUTDIR)\GlideDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\Bmp.obj" - -@erase "$(INTDIR)\GCache.obj" - -@erase "$(INTDIR)\GlideDrv.obj" - -@erase "$(INTDIR)\GMain.obj" - -@erase "$(INTDIR)\GMemMgr.obj" - -@erase "$(INTDIR)\GSpan.obj" - -@erase "$(INTDIR)\GThandle.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(OUTDIR)\GlideDrv.dll" - -@erase "$(OUTDIR)\GlideDrv.exp" - -@erase "$(OUTDIR)\GlideDrv.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MT /W3 /GX /O2 /X /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Glide\Include" /I "..\..\..\\" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLIDEDRV_EXPORTS" /D "__MSC__" /Fp"$(INTDIR)\GlideDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c -MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\GlideDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:no /pdb:"$(OUTDIR)\GlideDrv.pdb" /machine:I386 /nodefaultlib /out:"$(OUTDIR)\GlideDrv.dll" /implib:"$(OUTDIR)\GlideDrv.lib" -LINK32_OBJS= \ - "$(INTDIR)\Bmp.obj" \ - "$(INTDIR)\GCache.obj" \ - "$(INTDIR)\GlideDrv.obj" \ - "$(INTDIR)\GMain.obj" \ - "$(INTDIR)\GMemMgr.obj" \ - "$(INTDIR)\GSpan.obj" \ - "$(INTDIR)\GThandle.obj" \ - "$(INTDIR)\Render.obj" \ - "..\..\..\..\Sdk\Glide\Lib\glide2x.lib" \ - "..\..\..\..\MSDev60\lib\Libcmt.lib" \ - "..\..\..\..\MSDev60\lib\Winspool.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" - -"$(OUTDIR)\GlideDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ELSEIF "$(CFG)" == "GlideDrv - Win32 Debug" - -OUTDIR=.\Debug -INTDIR=.\Debug -# Begin Custom Macros -OutDir=.\Debug -# End Custom Macros - -ALL : "$(OUTDIR)\GlideDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\Bmp.obj" - -@erase "$(INTDIR)\GCache.obj" - -@erase "$(INTDIR)\GlideDrv.obj" - -@erase "$(INTDIR)\GMain.obj" - -@erase "$(INTDIR)\GMemMgr.obj" - -@erase "$(INTDIR)\GSpan.obj" - -@erase "$(INTDIR)\GThandle.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\vc60.pdb" - -@erase "$(OUTDIR)\GlideDrv.dll" - -@erase "$(OUTDIR)\GlideDrv.exp" - -@erase "$(OUTDIR)\GlideDrv.ilk" - -@erase "$(OUTDIR)\GlideDrv.lib" - -@erase "$(OUTDIR)\GlideDrv.pdb" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /X /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Glide\Include" /I "..\..\..\\" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLIDEDRV_EXPORTS" /D "__MSC__" /Fp"$(INTDIR)\GlideDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c -MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\GlideDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:yes /pdb:"$(OUTDIR)\GlideDrv.pdb" /debug /machine:I386 /nodefaultlib /out:"$(OUTDIR)\GlideDrv.dll" /implib:"$(OUTDIR)\GlideDrv.lib" /pdbtype:sept -LINK32_OBJS= \ - "$(INTDIR)\Bmp.obj" \ - "$(INTDIR)\GCache.obj" \ - "$(INTDIR)\GlideDrv.obj" \ - "$(INTDIR)\GMain.obj" \ - "$(INTDIR)\GMemMgr.obj" \ - "$(INTDIR)\GSpan.obj" \ - "$(INTDIR)\GThandle.obj" \ - "$(INTDIR)\Render.obj" \ - "..\..\..\..\Sdk\Glide\Lib\glide2x.lib" \ - "..\..\..\..\MSDev60\lib\Libcmtd.lib" \ - "..\..\..\..\MSDev60\lib\Winspool.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" - -"$(OUTDIR)\GlideDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ENDIF - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - - -!IF "$(NO_EXTERNAL_DEPS)" != "1" -!IF EXISTS("GlideDrv.dep") -!INCLUDE "GlideDrv.dep" -!ELSE -!MESSAGE Warning: cannot find "GlideDrv.dep" -!ENDIF -!ENDIF - - -!IF "$(CFG)" == "GlideDrv - Win32 Release" || "$(CFG)" == "GlideDrv - Win32 Debug" -SOURCE=..\Bmp.c - -"$(INTDIR)\Bmp.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=.\GCache.c - -"$(INTDIR)\GCache.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\GlideDrv.c - -"$(INTDIR)\GlideDrv.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\GMain.c - -"$(INTDIR)\GMain.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\GMemMgr.c - -"$(INTDIR)\GMemMgr.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\GSpan.cpp - -"$(INTDIR)\GSpan.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\GThandle.c - -"$(INTDIR)\GThandle.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Render.c - -"$(INTDIR)\Render.obj" : $(SOURCE) "$(INTDIR)" - - - -!ENDIF - diff --git a/G3D/Engine/Drivers/GlideDrv/GlideDrv.ncb b/G3D/Engine/Drivers/GlideDrv/GlideDrv.ncb deleted file mode 100644 index 44d5199feff33793929a766182d3e6bb47fdbf58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107520 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
-

Build Log

-

---------------------Configuration: D3DDrv - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\WINDOWS\TEMP\RSP2390.TMP" with contents -[ -/nologo /G5 /MT /W3 /GX /Ox /Ot /Ow /Og /Oi /Op /Ob2 /I "..\..\.." /I "..\\" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\Math" /I "..\..\..\Bitmap" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fo"Release/" /Fd"Release/" /FD /c -"D:\Release\G3D\Engine\Drivers\WireFrame\D3d_main.cpp" -] -Creating command line "cl.exe @C:\WINDOWS\TEMP\RSP2390.TMP" -Creating temporary file "C:\WINDOWS\TEMP\RSP2391.TMP" with contents -[ -kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib vfw32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /incremental:no /pdb:"Release/WireDrv.pdb" /machine:I386 /out:"Release/WireDrv.dll" /implib:"Release/WireDrv.lib" -.\Release\D3d_err.obj -.\Release\D3d_fx.obj -.\Release\D3d_main.obj -.\Release\D3dcache.obj -.\Release\D3ddrv.obj -.\Release\DDMemMgr.obj -.\Release\Gspan.obj -.\Release\Pcache.obj -.\Release\Render.obj -.\Release\Scene.obj -.\Release\THandle.obj -.\Release\tpage.obj -] -Creating command line "link.exe @C:\WINDOWS\TEMP\RSP2391.TMP" -

Output Window

-Compiling... -D3d_main.cpp -Linking... - Creating library Release/WireDrv.lib and object Release/WireDrv.exp - - - -

Results

-WireDrv.dll - 0 error(s), 0 warning(s) -
- - diff --git a/G3D/Engine/Drivers/WireFrame/mssccprj.scc b/G3D/Engine/Drivers/WireFrame/mssccprj.scc deleted file mode 100644 index 848e217..0000000 --- a/G3D/Engine/Drivers/WireFrame/mssccprj.scc +++ /dev/null @@ -1,4 +0,0 @@ -SCC = This is a Source Code Control file - -[D3DDrv.mak] -SCC_Project_Name = "$/Genesis10/Source/Engine/Drivers/D3DDrv", LQQBAAAA diff --git a/G3D/Engine/Sound.c b/G3D/Engine/Sound.c deleted file mode 100644 index 5f54ed7..0000000 --- a/G3D/Engine/Sound.c +++ /dev/null @@ -1,1068 +0,0 @@ -/****************************************************************************************/ -/* Sound.c */ -/* */ -/* Author: Brian Adelberg */ -/* Description: DirectSound wrapper */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Copyright (C) 1996-1999 Eclipse Entertainment, L.L.C. All Rights Reserved */ -/* */ -/****************************************************************************************/ -#include -#include -#include -#include - -#include "BaseType.h" -#include "ErrorLog.h" -#include "VFile.h" -#include "Sound.h" -#include "Ram.h" - -typedef struct SoundManager SoundManager; -typedef struct Channel Channel; - - -typedef struct geSound_System -{ - geBoolean Active; - SoundManager *SoundM; - geFloat GlobalVolume; -} geSound_System; - -typedef struct geSound_Cfg -{ - geFloat Volume; - geFloat Pan; - geFloat Frequency; -} geSound_Cfg; - - -/* - The interfaces here allow an application to write sound data to - abstract channels which are then to be mixed. The interfaces here - require two things. First, that the application create only one - sound manager per instance, and second that the type of sound data - being passed into the sound channels remains constant. That is, - the format of the binary information is all one format from - one sound to another; the application cannot combine RIFF and WAV - formats in a single channel. -*/ -/* - Call these ones only once per application: -*/ - -static SoundManager * CreateSoundManager(HWND hWnd); -static void DestroySoundManager(SoundManager *sm); - -//static BOOL FillSoundChannel(SoundManager *sm, char* Dir, char *Name, unsigned int* Handle ); -static BOOL FillSoundChannel(SoundManager *sm, geVFile *File, unsigned int* Handle ); -//static BOOL FillSoundChannelMemory(SoundManager *sm, const void *Buffer, unsigned int* Handle ); -static BOOL StartSoundChannel( SoundManager *sm, unsigned int Handle, geSound_Cfg *cfg, int loop, unsigned int* sfx); -static BOOL StopSoundChannel(Channel *channel); -static BOOL FreeAllChannels(SoundManager *sm); -static BOOL FreeChannel(SoundManager *sm, Channel *channel); -static BOOL ModifyChannel( Channel *channel, geSound_Cfg *cfg ); -static int ChannelPlaying( Channel *channel ); -static Channel* GetChannel( SoundManager *sm, unsigned int ID ); - - -typedef struct Channel -{ -// char* name; - LPDIRECTSOUNDBUFFER buffer; - unsigned int ID; - int BaseFreq; - geSound_Cfg cfg; - void * Data; - struct Channel *next; - struct Channel *nextDup; -} Channel; - -typedef struct SoundManager -{ - int smChannelCount; - unsigned int smNextChannelID; - - LPDIRECTSOUNDBUFFER smPrimaryChannel; - Channel* smChannels; - //LPDIRECTSOUNDNOTIFY * smNotify; -} SoundManager; - -static LPDIRECTSOUND lpDirectSound = NULL; -// This isn't really safe as a global. But it's consistent with the global lpDirectSound. -static HMODULE hmodDirectSound = NULL; - -// Added 11/08/1999 Ed Averill to expose DSound object for external code -GENESISAPI void *geSound_GetDSound() -{ - return (void *)lpDirectSound; -} -// End 11/08/1999 addition - -//===================================================================================== -// geSound_SystemCreate -//===================================================================================== -GENESISAPI geSound_System *geSound_CreateSoundSystem(HWND hWnd) -{ - geSound_System *SoundSystem; - - SoundSystem = GE_RAM_ALLOCATE_STRUCT(geSound_System); - - if (!SoundSystem) - { - geErrorLog_Add(GE_ERR_OUT_OF_MEMORY, NULL); - return NULL; - } - - memset(SoundSystem, 0, sizeof(geSound_System)); - - // Initialize the sound system - SoundSystem->SoundM = CreateSoundManager(hWnd); - - if (!SoundSystem->SoundM) - { - geRam_Free(SoundSystem); - geErrorLog_Add(GE_ERR_CREATE_SOUND_MANAGER_FAILED, NULL); - return NULL; - } - SoundSystem->GlobalVolume = 1.0f; - - return SoundSystem; -} - -//===================================================================================== -// geSound_SystemFree -//===================================================================================== -GENESISAPI void geSound_DestroySoundSystem(geSound_System *Sound) -{ - assert(Sound != NULL); - - // Shutdown the sound system - DestroySoundManager(Sound->SoundM); - - Sound->SoundM = NULL; - - geRam_Free(Sound); -} - -//===================================================================================== -// Sound_LoadSound -//===================================================================================== -//GENESISAPI geSound_Def *geSound_LoadSoundDef(geSound_System *SoundS, const char *Path, const char *FileName) -GENESISAPI geSound_Def *geSound_LoadSoundDef(geSound_System *SoundS, geVFile *File) -{ - unsigned int SoundDef = 0; - - assert(SoundS != NULL); - -// if (!FillSoundChannel(SoundS->SoundM, (char*)Path, (char*)FileName, &SoundDef)) - if (!FillSoundChannel(SoundS->SoundM, File, &SoundDef)) - return 0; - - return (geSound_Def *)SoundDef; -} - -#if 0 -//===================================================================================== -// Sound_LoadSound -//===================================================================================== -GENESISAPI geSound_Def *geSound_LoadSoundDefFromMemory( - geSound_System *SoundS, - const void *Buffer) -{ - unsigned int SoundDef = 0; - - assert(SoundS != NULL); - assert(Buffer != NULL); - - if (!FillSoundChannelMemory(SoundS->SoundM, Buffer, &SoundDef)) - return 0; - - return (geSound_Def *)SoundDef; -} -#endif - -//===================================================================================== -// Sound_FreeSound -//===================================================================================== -GENESISAPI void geSound_FreeSoundDef(geSound_System *SoundS, geSound_Def *SoundDef) -{ - Channel* Channel; - - assert(SoundS != NULL); - assert(SoundDef != 0); - - Channel = GetChannel(SoundS->SoundM, (unsigned int)SoundDef); - - if (!Channel) - return; - - FreeChannel(SoundS->SoundM, Channel); -} - -//===================================================================================== -// Sound_SetGlobalVolume -//===================================================================================== -GENESISAPI geBoolean geSound_SetMasterVolume( geSound_System *SoundS, geFloat Volume ) -{ - if( !SoundS ) - return( GE_FALSE ); - SoundS->GlobalVolume = Volume; - return( GE_TRUE ); -} - -//===================================================================================== -// Sound_PlaySound -//===================================================================================== -GENESISAPI geSound *geSound_PlaySoundDef(geSound_System *SoundS, - geSound_Def *SoundDef, - geFloat Volume, - geFloat Pan, - geFloat Frequency, - geBoolean Loop) -{ - unsigned int Sound; - geSound_Cfg LocalCfg; - - LocalCfg.Volume = Volume; - LocalCfg.Pan = Pan; - LocalCfg.Frequency = Frequency; - - LocalCfg.Volume *= SoundS->GlobalVolume; - if (!StartSoundChannel(SoundS->SoundM, (unsigned int)SoundDef, &LocalCfg, (BOOL)Loop, &Sound)) - { - return 0; - } - - return (geSound *)Sound; -} - -//===================================================================================== -// Sound_StopSound -//===================================================================================== -GENESISAPI geBoolean geSound_StopSound(geSound_System *SoundS, geSound *Sound) -{ - Channel* Channel; - - assert(SoundS != NULL); - assert(Sound != NULL); - - Channel = GetChannel(SoundS->SoundM, (unsigned int)Sound); - - if (!Channel) - return GE_FALSE; - - return StopSoundChannel(Channel); -} - -//===================================================================================== -// Sound_ModifySound -//===================================================================================== -GENESISAPI geBoolean geSound_ModifySound(geSound_System *SoundS, - geSound *Sound,geFloat Volume, - geFloat Pan, - geFloat Frequency) -{ - Channel* Channel; - geSound_Cfg LocalCfg; - - assert(SoundS != NULL); - assert(Sound != NULL); - - Channel = GetChannel(SoundS->SoundM, (unsigned int)Sound); - - if (!Channel) - return GE_FALSE; - LocalCfg.Volume = Volume; - LocalCfg.Pan = Pan; - LocalCfg.Frequency = Frequency; - LocalCfg.Volume *= SoundS->GlobalVolume; - return ModifyChannel(Channel, &LocalCfg); -} - -//===================================================================================== -// Sound_SoundIsPlaying -//===================================================================================== -GENESISAPI geBoolean geSound_SoundIsPlaying(geSound_System *SoundS, geSound *Sound) -{ - Channel* Channel; - - assert(SoundS != NULL); - assert(Sound != NULL); - - Channel = GetChannel(SoundS->SoundM, (unsigned int)Sound); - - if (!Channel) - return GE_FALSE; - - return ChannelPlaying(Channel); -} - - -//===================================================================================== -//===================================================================================== - -static BOOL DSParseWaveResource(const void *pvRes, WAVEFORMATEX **ppWaveHeader, - BYTE **ppbWaveData,DWORD *pcbWaveSize) -{ - DWORD *pdw; - DWORD *pdwEnd; - DWORD dwRiff; - DWORD dwType; - DWORD dwLength; - - if (ppWaveHeader) - *ppWaveHeader = NULL; - - if (ppbWaveData) - *ppbWaveData = NULL; - - if (pcbWaveSize) - *pcbWaveSize = 0; - - pdw = (DWORD *)pvRes; - dwRiff = *pdw++; - dwLength = *pdw++; - dwType = *pdw++; - - if (dwRiff != mmioFOURCC('R', 'I', 'F', 'F')) - goto exit; // not even RIFF - - if (dwType != mmioFOURCC('W', 'A', 'V', 'E')) - goto exit; // not a WAV - - pdwEnd = (DWORD *)((BYTE *)pdw + dwLength-4); - - while (pdw < pdwEnd) - { - dwType = *pdw++; - dwLength = *pdw++; - - switch (dwType) - { - case mmioFOURCC('f', 'm', 't', ' '): - if (ppWaveHeader && !*ppWaveHeader) - { - if (dwLength < sizeof(WAVEFORMAT)) - goto exit; // not a WAV - - *ppWaveHeader = (WAVEFORMATEX *)pdw; - - if ((!ppbWaveData || *ppbWaveData) && - (!pcbWaveSize || *pcbWaveSize)) - { - return TRUE; - } - } - break; - - case mmioFOURCC('d', 'a', 't', 'a'): - if ((ppbWaveData && !*ppbWaveData) || - (pcbWaveSize && !*pcbWaveSize)) - { - if (ppbWaveData) - *ppbWaveData = (LPBYTE)pdw; - - if (pcbWaveSize) - *pcbWaveSize = dwLength; - - if (!ppWaveHeader || *ppWaveHeader) - return TRUE; - } - break; - } - - pdw = (DWORD *)((BYTE *)pdw + ((dwLength+1)&~1)); - } - -exit: - return FALSE; -} - -static BOOL DSFillSoundBuffer(IDirectSoundBuffer *pDSB, BYTE *pbWaveData, DWORD cbWaveSize) -{ - - if (pDSB && pbWaveData && cbWaveSize) - { - LPVOID pMem1, pMem2; - DWORD dwSize1, dwSize2; - - if (SUCCEEDED(IDirectSoundBuffer_Lock(pDSB, 0, cbWaveSize, - &pMem1, &dwSize1, &pMem2, &dwSize2, 0))) - { - ZeroMemory(pMem1, dwSize1); - CopyMemory(pMem1, pbWaveData, dwSize1); - - if ( 0 != dwSize2 ) - CopyMemory(pMem2, pbWaveData+dwSize1, dwSize2); - - IDirectSoundBuffer_Unlock(pDSB, pMem1, dwSize1, pMem2, dwSize2); - return TRUE; - } - } - return FALSE; -} - - -DSCAPS dsCaps; -static SoundManager * CreateSoundManager(HWND hWnd ) -{ - typedef HRESULT (WINAPI *DS_CREATE_FUNC)(LPGUID, LPDIRECTSOUND *, LPUNKNOWN); - PCMWAVEFORMAT pcmwf; - DSBUFFERDESC dsbdesc; - HRESULT hres; - SoundManager * sm; - DS_CREATE_FUNC pDirectSoundCreate; - - // load the DirectSound DLL - hmodDirectSound = LoadLibrary ("DSOUND.DLL"); - if (hmodDirectSound == NULL) - { - // Couldn't load DSOUND.DLL - return NULL; - } - - pDirectSoundCreate = (DS_CREATE_FUNC)GetProcAddress (hmodDirectSound, "DirectSoundCreate"); - if (pDirectSoundCreate == NULL) - { - // couldn't find the DirectSoundCreate function - FreeLibrary (hmodDirectSound); - return NULL; - } - - hres = pDirectSoundCreate(NULL, &lpDirectSound, NULL); - if (hres != DS_OK) - { - // failed somehow - FreeLibrary (hmodDirectSound); - return NULL; - } - -// sm = malloc(sizeof(*sm)); - sm = geRam_Allocate(sizeof(*sm)); - if (!sm) - { - IDirectSound_Release(lpDirectSound); - FreeLibrary (hmodDirectSound); - return NULL; - } - sm->smChannelCount = 0; - sm->smNextChannelID = 1; - sm->smChannels = NULL; - - memset(&pcmwf, 0, sizeof(PCMWAVEFORMAT)); - pcmwf.wf.wFormatTag = WAVE_FORMAT_PCM; - - //pcmwf.wf.nChannels = 1; - //pcmwf.wf.nSamplesPerSec = 44050; - //pcmwf.wf.nBlockAlign = 2; -#if 1 - pcmwf.wf.nChannels = 2; - pcmwf.wf.nSamplesPerSec = 44100; - pcmwf.wf.nBlockAlign = 4; - pcmwf.wBitsPerSample = 16; - pcmwf.wf.nAvgBytesPerSec = pcmwf.wf.nSamplesPerSec * pcmwf.wf.nBlockAlign; -#else - pcmwf.wf.nChannels = 1; - pcmwf.wf.nSamplesPerSec = 22050; - pcmwf.wf.nBlockAlign = 1; - pcmwf.wBitsPerSample = 8; - pcmwf.wf.nAvgBytesPerSec = pcmwf.wf.nSamplesPerSec * 2; -#endif - - memset(&dsbdesc, 0, sizeof(DSBUFFERDESC)); - dsbdesc.dwSize = sizeof(DSBUFFERDESC); - dsbdesc.dwFlags = DSBCAPS_PRIMARYBUFFER;// | DSBCAPS_CTRLDEFAULT;// | DSBCAPS_CTRL3D; - dsbdesc.dwBufferBytes = 0; //dwBufferBytes and lpwfxFormat must be set this way. - dsbdesc.lpwfxFormat = NULL; - -#if 1 - if (DS_OK== IDirectSound_SetCooperativeLevel(lpDirectSound, hWnd,DSSCL_NORMAL)) -#else - if (DS_OK== IDirectSound_SetCooperativeLevel(lpDirectSound, hWnd,DSSCL_EXCLUSIVE)) -#endif - { - if (DS_OK== IDirectSound_CreateSoundBuffer(lpDirectSound, &dsbdesc, &sm->smPrimaryChannel, NULL)) - { - return sm; - } - IDirectSound_Release(lpDirectSound); - FreeLibrary (hmodDirectSound); - } -// free( sm ); - geRam_Free(sm); - return NULL; -} - -//static BOOL CreateChannel( char* Name, DSBUFFERDESC* dsBD, Channel** chanelPtr) -static BOOL CreateChannel(DSBUFFERDESC* dsBD, Channel** chanelPtr) -{ - Channel* channel; - -// channel = malloc( sizeof( Channel ) ); - channel = geRam_Allocate( sizeof( Channel ) ); - if ( channel == NULL ) - { - geErrorLog_Add(GE_ERR_OUT_OF_MEMORY, NULL); - return( FALSE ); - } - if(DS_OK != IDirectSound_CreateSoundBuffer(lpDirectSound, dsBD, &channel->buffer, NULL)) - { - geErrorLog_Add(GE_ERR_CREATE_SOUND_BUFFER_FAILED, NULL); - return FALSE; - } - if(DS_OK != IDirectSoundBuffer_GetFrequency(channel->buffer, &channel->BaseFreq) ) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - channel->next = NULL; - channel->nextDup = NULL; - channel->ID = 0; - channel->cfg.Volume = 1.0f; - channel->cfg.Pan = 0.0f; - channel->cfg.Frequency = 0.0f; -// channel->name = Name; - - *chanelPtr = channel; - return( TRUE ); -} - -//static BOOL GetSoundData( char* Name, unsigned char** dataPtr) -static BOOL GetSoundData( geVFile *File, unsigned char** dataPtr) -{ -// FILE * f; - int32 Size; - uint8 *data; -// int32 CurPos; - -#if 0 - f = fopen(Name, "rb"); - - if (!f) - { - geErrorLog_Add(GE_ERR_FILE_OPEN_ERROR, NULL); - return FALSE; - } -#endif - -#if 0 - CurPos = ftell (f); // Save the startinf pos into this function - fseek (f, 0, SEEK_END); // Seek to end - Size = ftell (f); // Get End (this will be the size) - fseek (f, CurPos, SEEK_SET); // Restore file position -#endif - - if (geVFile_Size(File, &Size) == GE_FALSE) - return FALSE; - - data = geRam_Allocate(Size); - - if (!data) - { - geErrorLog_Add(GE_ERR_OUT_OF_MEMORY, NULL); - return FALSE; - } - - if (geVFile_Read(File, data, Size) == GE_FALSE) - { - geRam_Free(data); - return FALSE; - } - -// fread(data, Size, 1, f); - -// fclose(f); - *dataPtr = data; - return( TRUE ); -} - -static BOOL ParseData( const uint8* data, DSBUFFERDESC* dsBD, BYTE ** pbWaveData ) -{ - - //Parse the Data - memset(dsBD, 0, sizeof(DSBUFFERDESC)); - - dsBD->dwSize = sizeof(DSBUFFERDESC); - dsBD->dwFlags = DSBCAPS_STATIC | DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLPAN | - DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLVOLUME; - if (!DSParseWaveResource(data, &dsBD->lpwfxFormat, pbWaveData, &dsBD->dwBufferBytes)) - { - geErrorLog_Add(GE_ERR_INVALID_WAV, NULL); - return FALSE; - } - return( TRUE ); - -} - -//static BOOL FillSoundChannel(SoundManager *sm, char* Dir, char *Name, unsigned int* Handle ) -static BOOL FillSoundChannel(SoundManager *sm, geVFile *File, unsigned int* Handle ) -{ - DSBUFFERDESC dsBD; - INT NumBytes; - uint8 *data = NULL; - BYTE * pbWaveData; -// char* Name2; - Channel* channel; - - *Handle = 0; - if (!sm) - return TRUE; - -#if 0 - //Open the file - if (Dir) - { - Name2 = malloc( strlen( Name ) + strlen( Dir ) + 3); // 2 for the "//" and 1 for terminator - if( !Name2 ) - return( 0 ); - sprintf(Name2, "%s\\%s", Dir, Name); - } - else - { - Name2 = malloc( strlen( Name ) + 3); // 2 for the "//" and 1 for terminator - if( !Name2 ) - return( 0 ); - - sprintf(Name2, "%s", Name); - } -#endif - if(!GetSoundData( File, &data )) - return( FALSE ); - - if( !ParseData( data, &dsBD, &pbWaveData ) ) - { - geRam_Free(data); - return( FALSE ); - } - - NumBytes = dsBD.dwBufferBytes; - - //Create the channel -// if( !CreateChannel( Name2, &dsBD, &channel ) ) - if (!CreateChannel(&dsBD, &channel)) - { - geRam_Free(data); - return FALSE; - } - channel->next = sm->smChannels; - channel->ID = sm->smNextChannelID++; - channel->Data = data; - - sm->smChannels = channel; - sm->smChannelCount++; - - //Fill the channel - if (!DSFillSoundBuffer(channel->buffer, pbWaveData, NumBytes)) - return FALSE; - -// free( data ); -// geRam_Free(data); - - *Handle = channel->ID; - return TRUE; -} - -#if 0 -static BOOL FillSoundChannelMemory(SoundManager *sm, const void *Buffer, unsigned int* Handle ) -{ - DSBUFFERDESC dsBD; - INT NumBytes; - BYTE * pbWaveData; - char * Name; - Channel * channel; - - *Handle = 0; - if (!sm) - return TRUE; - - if (!ParseData(Buffer, &dsBD, &pbWaveData)) - return FALSE; - - NumBytes = dsBD.dwBufferBytes; - - Name = malloc(11); - if (Name == NULL) - return FALSE; - sprintf(Name, "0x%8x", Buffer); - - //Create the channel -// if (!CreateChannel(Name, &dsBD, &channel)) - if (!CreateChannel(&dsBD, &channel)) - return FALSE; - - channel->next = sm->smChannels; - channel->ID = sm->smNextChannelID++; - - sm->smChannels = channel; - sm->smChannelCount++; - - //Fill the channel - if (!DSFillSoundBuffer(channel->buffer, pbWaveData, NumBytes)) - return FALSE; - - *Handle = channel->ID; - return TRUE; -} -#endif - -static void StopDupBuffers( Channel* channel ) -{ - Channel* dupChannel, *prevChannel; - - assert( channel ); - - dupChannel = channel->nextDup; - prevChannel = channel; - while( dupChannel ) - { - IDirectSoundBuffer_Stop(dupChannel->buffer); - dupChannel = dupChannel->nextDup; - } -} - -static void ClearDupBuffers( Channel* channel ) -{ - Channel* dupChannel, *prevChannel; - - if( channel == NULL) - return; - - dupChannel = channel->nextDup; - prevChannel = channel; - while( dupChannel ) - { - if( !ChannelPlaying( dupChannel ) ) - { - prevChannel->nextDup = dupChannel->nextDup; - IDirectSound_Release(dupChannel->buffer); -// free( dupChannel ); - geRam_Free(dupChannel); - dupChannel = prevChannel->nextDup; - } - else - { - prevChannel = dupChannel; - dupChannel = dupChannel->nextDup; - } - } -} - -static BOOL FreeAllChannels(SoundManager *sm) -{ - int Error; - - Channel* channel, *nextChannel; - - channel = sm->smChannels; - while( channel ) - { - nextChannel = channel->next; - StopDupBuffers( channel ); - ClearDupBuffers( channel ); - Error = IDirectSoundBuffer_Stop(channel->buffer); - if (Error != DS_OK) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - Error = IDirectSound_Release(channel->buffer); - if (Error != DS_OK) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - -// if( channel->name ) -// geRam_Free(channel->name); -// free( channel->name ); - if (channel->Data) - geRam_Free(channel->Data); - geRam_Free(channel); -// free( channel ); - channel = nextChannel; - } - sm->smChannels = NULL; - sm->smChannelCount = 0; - - return TRUE; -} - - -static BOOL FreeChannel(SoundManager *sm, Channel* channel) -{ - int Error; - Channel*prevChannel = NULL, *curChannel; - if ( channel ) - { - StopDupBuffers( channel ); - ClearDupBuffers( channel ); - Error = IDirectSoundBuffer_Stop(channel->buffer); - if (Error != DS_OK) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - Error = IDirectSound_Release(channel->buffer); - if (Error != DS_OK) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } -// if( channel->name ) -// geRam_Free(channel->name); -// free( channel->name ); - - if( channel->Data ) - geRam_Free(channel->Data); - - curChannel = sm->smChannels; - while( curChannel && curChannel != channel ) - { - prevChannel = curChannel; - curChannel = curChannel->next; - } - if( curChannel ) - { - if( prevChannel ) - prevChannel->next = curChannel->next; - else - sm->smChannels = curChannel->next; - geRam_Free(curChannel); -// free( curChannel ); - } - } - - return TRUE; -} - -static Channel* ReloadData(void *Data) -{ - DSBUFFERDESC dsBD; - BYTE * pbWaveData; - INT NumBytes; -// uint8 *data = NULL; - Channel* channel; - -// if( !Name ) -// return( NULL ); -// if( !GetSoundData( Data, &data ) ) -// return( NULL ); - - if( !ParseData( Data, &dsBD, &pbWaveData ) ) - return( NULL ); - - NumBytes = dsBD.dwBufferBytes; - - //Create the channel -// if( !CreateChannel( Name, &dsBD, &channel ) ) - if( !CreateChannel(&dsBD, &channel ) ) - return NULL; - - //Fill the channel - if ( !DSFillSoundBuffer(channel->buffer, pbWaveData, NumBytes)) - return NULL; - -// geRam_Free(data); -// free( data ); - return( channel ); -} - -static BOOL DupChannel( SoundManager *sm, Channel* channel, Channel** dupChannelPtr ) -{ - Channel* dupChannel; - HRESULT Error; - - *dupChannelPtr = NULL; -// dupChannel = malloc( sizeof(Channel ) ); - dupChannel = geRam_Allocate( sizeof(Channel ) ); - if( dupChannel == NULL ) - { - geErrorLog_Add(GE_ERR_OUT_OF_MEMORY, NULL ); - return FALSE; - } - Error = IDirectSound_DuplicateSoundBuffer( lpDirectSound, channel->buffer, &dupChannel->buffer ); - if( Error != DS_OK ) - { - geRam_Free(dupChannel); -// free( dupChannel ); - dupChannel = ReloadData( channel->Data ); - if( dupChannel == NULL ) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - } - dupChannel->ID = sm->smNextChannelID++; - dupChannel->next = NULL; - dupChannel->nextDup = channel->nextDup; - dupChannel->cfg = channel->cfg; -// dupChannel->name = NULL; - dupChannel->Data = channel->Data; - channel->nextDup = dupChannel; - *dupChannelPtr = dupChannel; - return( TRUE ); -} - -static BOOL StartSoundChannel( SoundManager *sm, unsigned int Handle, geSound_Cfg *cfg, int loop, unsigned int* sfx) -{ - HRESULT hres; - Channel* channel, *dupChannel; - - if( Handle == 0 ) - return( FALSE ); - channel = GetChannel( sm, Handle ); - //Clear all non-playing duplicate buffers. - ClearDupBuffers(channel); - //If the main buffer is playing and all non-playing dups have been cleared - //we need a new duplicate. - if( ChannelPlaying( channel ) ) - { - if(!DupChannel( sm,channel, &dupChannel ) ) - return( FALSE ); - channel = dupChannel; - } - if( !ModifyChannel( channel, cfg ) ) - return( FALSE ); - IDirectSoundBuffer_SetCurrentPosition(channel->buffer, 0); - hres = IDirectSoundBuffer_Play( channel->buffer, - 0, - 0, - loop ? DSBPLAY_LOOPING : 0); - - if (hres == DS_OK) - { - if( sfx ) - *sfx = channel->ID; - return TRUE; - } - - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; -} - -static BOOL StopSoundChannel(Channel* channel) -{ - HRESULT hres; - - assert(channel); - - hres = IDirectSoundBuffer_Stop(channel->buffer); - - if (hres == DS_OK) - return TRUE; - - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; -} - -static void DestroySoundManager(SoundManager *sm) -{ - if (!sm) return; - - FreeAllChannels( sm ); - if (sm->smPrimaryChannel != NULL) - sm->smPrimaryChannel->lpVtbl->Release(sm->smPrimaryChannel); - if (lpDirectSound != NULL) - IDirectSound_Release(lpDirectSound); - if (hmodDirectSound != NULL) - FreeLibrary (hmodDirectSound); - geRam_Free(sm); -// free(sm); -} - -static BOOL ModifyChannel( Channel *channel, geSound_Cfg *cfg ) -{ - int Error, Vol, Pan, Freq; - assert(channel); - - if( !cfg ) - return( TRUE ); - ClearDupBuffers(channel); - if( cfg->Volume != channel->cfg.Volume ) - { - Vol = (DWORD)((1.0 - cfg->Volume ) * DSBVOLUME_MIN); - Error = IDirectSoundBuffer_SetVolume(channel->buffer, Vol); - if (Error != DS_OK) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - channel->cfg.Volume = cfg->Volume; - } - - if( cfg->Pan != channel->cfg.Pan ) - { - Pan = (int)(cfg->Pan * DSBPAN_RIGHT); - Error = IDirectSoundBuffer_SetPan(channel->buffer, Pan); - if (Error != DS_OK) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - channel->cfg.Pan = cfg->Pan; - } - - - if( cfg->Frequency != channel->cfg.Frequency ) - { - - Freq = (DWORD)(channel->BaseFreq * cfg->Frequency); - Error = IDirectSoundBuffer_SetFrequency(channel->buffer, Freq); - if (Error != DS_OK) - { - geErrorLog_Add(GE_ERR_DS_ERROR, NULL); - return FALSE; - } - channel->cfg.Frequency = cfg->Frequency; - } - - return TRUE; -} - -static int ChannelPlaying( Channel *channel ) -{ - DWORD status, Error; - - if(!channel) - return( 0 ); - - Error = IDirectSoundBuffer_GetStatus( channel->buffer, &status); - if( Error != DS_OK) - return 0; - return( status & DSBSTATUS_PLAYING ); -} - -static Channel* GetChannel( SoundManager *sm, unsigned int ID ) -{ - Channel* dupChannel; - Channel* channel = sm->smChannels; - - while( channel ) - { - if( channel->ID == ID ) - break; - dupChannel = channel->nextDup; - while( dupChannel ) - { - if( dupChannel->ID == ID ) - break; - dupChannel = dupChannel->nextDup; - } - if( dupChannel ) - return( dupChannel ); - channel = channel->next; - } - return( channel ); -} diff --git a/G3D/Entities.h b/G3D/Entities.h index 20fc6f0..41856a3 100644 --- a/G3D/Entities.h +++ b/G3D/Entities.h @@ -28,7 +28,7 @@ #include "BaseType.h" #include "ErrorLog.h" #include "Vec3d.h" -#include "G3D/Engine/System.h" +#include "System.h" #include "World.h" #include "Ram.h" diff --git a/G3D/Fog.c b/G3D/Fog.c index 84bd28a..cb336f3 100644 --- a/G3D/Fog.c +++ b/G3D/Fog.c @@ -19,8 +19,8 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include -#include +#include +#include #include "Fog.h" diff --git a/G3D/Engine/FontBmp.c b/G3D/FontBmp.c similarity index 100% rename from G3D/Engine/FontBmp.c rename to G3D/FontBmp.c diff --git a/G3D/Frustum.c b/G3D/Frustum.c index 8a83251..2a6ec3b 100644 --- a/G3D/Frustum.c +++ b/G3D/Frustum.c @@ -19,14 +19,13 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include -#include -#include +#include +#include +#include #include "Camera.h" #include "Frustum.h" #include "Surface.h" - #include "Vec3d.h" //#define RIGHT_HANDED diff --git a/G3D/FsDos.c b/G3D/FsDos.c index 6157e8a..cf826c9 100644 --- a/G3D/FsDos.c +++ b/G3D/FsDos.c @@ -21,19 +21,16 @@ /****************************************************************************************/ #define WIN32_LEAN_AND_MEAN #include - #include #include #include #include -#include "basetype.h" -#include "ram.h" - -#include "vfile.h" -#include "vfile._h" - -#include "fsdos.h" +#include "BaseType.h" +#include "Ram.h" +#include "VFile.h" +#include "VFile._h" +#include "FsDos.h" // "DF01" #define DOSFILE_SIGNATURE 0x31304644 diff --git a/G3D/FsMemory.c b/G3D/FsMemory.c index ce5ac4e..a5f24bd 100644 --- a/G3D/FsMemory.c +++ b/G3D/FsMemory.c @@ -22,19 +22,16 @@ /****************************************************************************************/ #define WIN32_LEAN_AND_MEAN #include - #include #include #include #include -#include "basetype.h" -#include "ram.h" - -#include "vfile.h" -#include "vfile._h" - -#include "fsmemory.h" +#include "BaseType.h" +#include "Ram.h" +#include "VFile.h" +#include "VFile._h" +#include "FsMemory.h" // "MF01" #define MEMORYFILE_SIGNATURE 0x3130464D diff --git a/G3D/FsVfs.c b/G3D/FsVfs.c index ed7a368..2f8cade 100644 --- a/G3D/FsVfs.c +++ b/G3D/FsVfs.c @@ -24,10 +24,9 @@ #include #include -#include "ram.h" - -#include "fsvfs.h" -#include "dirtree.h" +#include "Ram.h" +#include "FsVfs.h" +#include "DirTree.h" // "VF00" #define VFSFILEHEADER_SIGNATURE 0x30304656 diff --git a/G3D/FsVfs.h b/G3D/FsVfs.h index ed70d2f..e5828f2 100644 --- a/G3D/FsVfs.h +++ b/G3D/FsVfs.h @@ -22,7 +22,7 @@ #ifndef FSVFS_H #define FSVFS_H -#include "vfile._h" +#include "VFile._h" const geVFile_SystemAPIs * GENESISCC FSVFS_GetAPIs(void); diff --git a/G3D/GBSPFile.c b/G3D/GBSPFile.c index 78e20b0..9ac55cd 100644 --- a/G3D/GBSPFile.c +++ b/G3D/GBSPFile.c @@ -19,14 +19,13 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include +#include #include #include "GBSPFile.h" #include "Vec3d.h" #include "Ram.h" #include "System.h" - #include "ErrorLog.h" #include "VFile.h" diff --git a/G3D/GBSPFile.h b/G3D/GBSPFile.h index c402f86..570b49e 100644 --- a/G3D/GBSPFile.h +++ b/G3D/GBSPFile.h @@ -23,11 +23,11 @@ #define GE_GBSPFILE_H #include +#include #include "G3D/BaseType.h" #include "G3D/Vec3d.h" -#include -#include "G3D/Engine/Drivers/DCommon.h" +#include "DCommon.h" #include "G3D/VFile.h" #include "G3D/Motion.h" diff --git a/G3D/Ge.c b/G3D/Ge.c index 1f4b5ca..0f33bc4 100644 --- a/G3D/Ge.c +++ b/G3D/Ge.c @@ -25,7 +25,7 @@ #include #include "Genesis.h" -#include "G3D/Engine/System.h" +#include "System.h" #include "Ram.h" //#include "Sound.h" diff --git a/G3D/Engine/Genesis3d.c b/G3D/Genesis3d.c similarity index 100% rename from G3D/Engine/Genesis3d.c rename to G3D/Genesis3d.c diff --git a/G3D/Light.c b/G3D/Light.c index 905ba13..2783ae7 100644 --- a/G3D/Light.c +++ b/G3D/Light.c @@ -19,9 +19,9 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include -#include -#include +#include +#include +#include #include "BaseType.h" #include "Ram.h" @@ -32,7 +32,6 @@ #include "GBSPFile.h" #include "Plane.h" #include "World.h" - #include "Trace.h" #define LIGHT_FRACT 8 diff --git a/G3D/Light.h b/G3D/Light.h index e13d199..a4fdd5e 100644 --- a/G3D/Light.h +++ b/G3D/Light.h @@ -25,10 +25,10 @@ #include //#include -#include "G3D/Genesis.h" -#include "G3D/BaseType.h" -#include "G3D/Engine/System.h" -#include "G3D/Engine/Drivers/DCommon.h" +#include "Genesis.h" +#include "BaseType.h" +#include "System.h" +#include "DCommon.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/List.c b/G3D/List.c index 5b52e17..822ec63 100644 --- a/G3D/List.c +++ b/G3D/List.c @@ -114,9 +114,12 @@ LinkNode *pNode; int Len=0; if ( ! pList ) return 0; - LN_Walk(pNode,pList) { - Len++; - } + // FIXME: damn macros + //#define zLN_Walk(Node,List) for( Node = (List)->Next; (Node) != (List) ; Node = (Node)->Next ) + //LN_Walk(pNode,pList) { + for (pNode = pList->Next; pNode != pList; pNode = pNode->Next) + Len++; + //} return Len; } @@ -1125,12 +1128,15 @@ void Hash_Destroy(Hash *pHash) Debug(pHash->Members += 2) // count Head & Tail pList = pHash->NodeList; - LN_Walk_Editting(pNode,pList,pNext) { + // FIXME: damn macros + // #define zLN_Walk_Editting(Node,List,Holder) for( Node = (List)->Next; (Node) != (List) && ((Holder) = (Node)->Next) != NULL ; Node = Holder ) + //LN_Walk_Editting(pNode,pList,pNext) { + /*for (pNode = (pList)->Next; (pNode != pList) && ((pNext = pNode->Next) != NULL); pNode = pNext) { MemPool_FreeHunk(HashNodePool_g,pNode); // FIXME: where does this member variable come from?!? //assert(pHash->Members > 1); Debug(pHash->Members --) - } + }*/ // FIXME: where does this member variable come from?!? //assert(pHash->Members == 1); MemPool_FreeHunk(HashNodePool_g,pList); diff --git a/G3D/Log.h b/G3D/Log.h index b112ce2..1b1ec2c 100644 --- a/G3D/Log.h +++ b/G3D/Log.h @@ -35,7 +35,7 @@ void Log_Printf(const char * string, ...); #else // _LOG -static _inline void Log_Printf(const char * str, ...) { } +static inline void Log_Printf(const char * str, ...) { } #define Log_Puts(string) #endif // _LOG diff --git a/G3D/Engine/Logo/logo.c b/G3D/Logo.c similarity index 95% rename from G3D/Engine/Logo/logo.c rename to G3D/Logo.c index 17f7632..2d42211 100644 --- a/G3D/Engine/Logo/logo.c +++ b/G3D/Logo.c @@ -24,15 +24,14 @@ #include #include //timeGetTime #pragma warning(default : 4201 4214 4115) - #include -#include "genesis.h" -#include "engine.h" -#include "bitmap.h" +#include "Genesis.h" +#include "Engine.h" +#include "Bitmap.h" #include "PixelFormat.h" -#include "errorlog.h" -#include "electric.h" +#include "ErrorLog.h" +#include "Electric.h" extern unsigned char LogoActor_act[]; extern int LogoActor_act_Length; @@ -51,7 +50,8 @@ extern int A_Streak_bmp_Length; static void SubLarge(LARGE_INTEGER *start, LARGE_INTEGER *end, LARGE_INTEGER *delta) { - _asm { + // FIXME: asm code + /*_asm { mov ebx,dword ptr [start] mov esi,dword ptr [end] @@ -64,7 +64,7 @@ static void SubLarge(LARGE_INTEGER *start, LARGE_INTEGER *end, LARGE_INTEGER *de mov ebx,dword ptr [delta] mov dword ptr [ebx+0],eax mov dword ptr [ebx+4],edx - } + }*/ } static geBoolean GetBonePosition(geActor *Actor, const char *BoneName, geVec3d *Pos) diff --git a/G3D/Engine/Logo/LogoActor.c b/G3D/LogoActor.c similarity index 100% rename from G3D/Engine/Logo/LogoActor.c rename to G3D/LogoActor.c diff --git a/G3D/Actor/motion.c b/G3D/Motion.c similarity index 95% rename from G3D/Actor/motion.c rename to G3D/Motion.c index db825c8..647d9d4 100644 --- a/G3D/Actor/motion.c +++ b/G3D/Motion.c @@ -29,11 +29,11 @@ #include #include // strcmp, strnicmp -#include "basetype.h" -#include "ram.h" -#include "errorlog.h" -#include "motion.h" -#include "tkevents.h" +#include "BaseType.h" +#include "Ram.h" +#include "ErrorLog.h" +#include "Motion.h" +#include "TKEvents.h" #include "StrBlock.h" #pragma warning(disable : 4201) // we're using nameless structures diff --git a/G3D/NetPlay.c b/G3D/NetPlay.c index da5387f..a5d1a76 100644 --- a/G3D/NetPlay.c +++ b/G3D/NetPlay.c @@ -118,7 +118,7 @@ BOOL InitNetPlay(LPGUID lpGuid) //==================================================================================================== BOOL NetPlayEnumSession(LPSTR IPAdress, SESSION_DESC **SessionList, DWORD *SessionNum) { - HRESULT hr; + HRESULT hr = NULL; #if 1 char tempBuf[1024]; @@ -132,8 +132,9 @@ BOOL NetPlayEnumSession(LPSTR IPAdress, SESSION_DESC **SessionList, DWORD *Sessi lpConnectionBuffer = NULL; } - hr = CoCreateInstance( &CLSID_DirectPlayLobby, NULL, CLSCTX_INPROC_SERVER, - &IID_IDirectPlayLobby3A, (LPVOID *) &lpDPL ); + // FIXME: IID_IDirectPlayLobby3A cant be linked to in a shared object? hmm + //hr = CoCreateInstance( &CLSID_DirectPlayLobby, NULL, CLSCTX_INPROC_SERVER, + // &IID_IDirectPlayLobby3A, (LPVOID *) &lpDPL ); if (hr != DP_OK) { diff --git a/G3D/Bitmap/Compression/palcreate.c b/G3D/PALCreate.c similarity index 93% rename from G3D/Bitmap/Compression/palcreate.c rename to G3D/PALCreate.c index f86a0f2..a75929d 100644 --- a/G3D/Bitmap/Compression/palcreate.c +++ b/G3D/PALCreate.c @@ -81,15 +81,15 @@ why this isn't exactly optimal: ***********/ /*}{*************************************************/ -#include "palcreate.h" -#include "tsc.h" -#include "paloptimize.h" -#include "ram.h" -#include "yuv.h" -#include "mempool.h" -#include "utility.h" // delete macro #include #include +#include "PALCreate.h" +#include "TSC.h" +#include "PALOptimize.h" +#include "Ram.h" +#include "YUV.h" +#include "MemPool.h" +#include "Utility.h" // delete macro /*******/ @@ -193,11 +193,11 @@ struct octNode int createOctTree(octNode * root,const geBitmap_Info * Info,const void * Bits,geBoolean doYUV); geBitmap_Palette * createPaletteGoodSub(const geBitmap_Info * Info,const void * Bits); -void addOctNode(octNode *root,int R,int G,int B,int *nLeavesPtr); -void gatherLeaves(octNode *node,octNode *** leavesPtrPtr,int minCount); -void gatherLeavesCutting(octNode *node,octNode *** leavesPtrPtr); -int leafCompareCount(const void *a,const void *b); -int leafCompareCost(const void *a,const void *b); +static void addOctNode(octNode *root,int R,int G,int B,int *nLeavesPtr); +static void gatherLeaves(octNode *node,octNode *** leavesPtrPtr,int minCount); +static void gatherLeavesCutting(octNode *node,octNode *** leavesPtrPtr); +static int leafCompareCount(const void *a,const void *b); +static int leafCompareCost(const void *a,const void *b); int findClosest(int R,int G,int B,uint8 *palette,int palEntries,int *foundPalPtr); void computeOctRGBs(octNode *node); void computeCutCosts(octNode *node); diff --git a/G3D/Bitmap/Compression/palcreate.h b/G3D/PALCreate.h similarity index 96% rename from G3D/Bitmap/Compression/palcreate.h rename to G3D/PALCreate.h index 3591a63..038ba5f 100644 --- a/G3D/Bitmap/Compression/palcreate.h +++ b/G3D/PALCreate.h @@ -1,8 +1,8 @@ #ifndef GE_BRANDO_PALCREATE_H #define GE_BRANDO_PALCREATE_H -#include "basetype.h" -#include "bitmap.h" +#include "BaseType.h" +#include "Bitmap.h" /****************************************************************************************/ /* PalCreate */ diff --git a/G3D/Bitmap/Compression/paloptimize.c b/G3D/PALOptimize.c similarity index 94% rename from G3D/Bitmap/Compression/paloptimize.c rename to G3D/PALOptimize.c index 47f765c..a60e160 100644 --- a/G3D/Bitmap/Compression/paloptimize.c +++ b/G3D/PALOptimize.c @@ -73,14 +73,13 @@ The problems : **********/ -#include "yuv.h" -#include "palettize.h" -#include "utility.h" -#include "tsc.h" -#include "log.h" - -#include "bitmap.h" -#include "pixelformat.h" +#include "YUV.h" +#include "Palettize.h" +#include "Utility.h" +#include "TSC.h" +#include "Log.h" +#include "Bitmap.h" +#include "PixelFormat.h" /*******/ diff --git a/G3D/Bitmap/Compression/paloptimize.h b/G3D/PALOptimize.h similarity index 96% rename from G3D/Bitmap/Compression/paloptimize.h rename to G3D/PALOptimize.h index deed9e1..47b9dcd 100644 --- a/G3D/Bitmap/Compression/paloptimize.h +++ b/G3D/PALOptimize.h @@ -23,8 +23,8 @@ /* */ /****************************************************************************************/ -#include "basetype.h" -#include "bitmap.h" +#include "BaseType.h" +#include "Bitmap.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Bitmap/Compression/palettize.c b/G3D/Palettize.c similarity index 95% rename from G3D/Bitmap/Compression/palettize.c rename to G3D/Palettize.c index 269393e..4b25551 100644 --- a/G3D/Bitmap/Compression/palettize.c +++ b/G3D/Palettize.c @@ -36,15 +36,15 @@ we palettize ("inverse colormap") using an octree lookup system **********/ -#include "palettize.h" #include #include -#include "ram.h" -#include "mempool.h" +#include "Palettize.h" +#include "Ram.h" +#include "MemPool.h" #ifdef _TSC #pragma message("palettize using TSC") -#include "tsc.h" +#include "TSC.h" #endif /*******/ diff --git a/G3D/Bitmap/Compression/palettize.h b/G3D/Palettize.h similarity index 96% rename from G3D/Bitmap/Compression/palettize.h rename to G3D/Palettize.h index ab3152b..e6a4928 100644 --- a/G3D/Bitmap/Compression/palettize.h +++ b/G3D/Palettize.h @@ -23,8 +23,8 @@ /* */ /****************************************************************************************/ -#include "basetype.h" -#include "bitmap.h" +#include "BaseType.h" +#include "Bitmap.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Actor/path.c b/G3D/Path.c similarity index 95% rename from G3D/Actor/path.c rename to G3D/Path.c index 2cf105e..b32f35e 100644 --- a/G3D/Actor/path.c +++ b/G3D/Path.c @@ -24,14 +24,14 @@ #include #include //sscanf -#include "path.h" -#include "Quatern.h" -#include "errorlog.h" -#include "ram.h" -#include "tkarray.h" +#include "Path.h" +#include "Quaternion.h" +#include "ErrorLog.h" +#include "Ram.h" +#include "TKArray.h" #include "VKFrame.h" #include "QKFrame.h" -#include "vec3d.h" +#include "Vec3d.h" #define min(aa,bb) (( (aa)>(bb) ) ? (bb) : (aa) ) #define max(aa,bb) (( (aa)>(bb) ) ? (aa) : (bb) ) @@ -1654,4 +1654,4 @@ static gePath * GENESISCC gePath_CreateFromBinaryFile(geVFile *F,uint32 Header) P->Dirty = FLAG_DIRTY; return P; } - \ No newline at end of file + diff --git a/G3D/Physics/PhysicsJoint.h b/G3D/Physics/PhysicsJoint.h deleted file mode 100644 index 776c274..0000000 --- a/G3D/Physics/PhysicsJoint.h +++ /dev/null @@ -1,68 +0,0 @@ -/****************************************************************************************/ -/* PHYSICSJOINT.H */ -/* */ -/* Author: Jason Wood */ -/* Description: Rigid body joint interface */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ -#ifndef PHYSICSJOINT_H -#define PHYSICSJOINT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum -{ - JT_WORLD = 0, - JT_SPHERICAL, - JT_PTTOPATH, - JT_PTTOSURFACE -} gePhysicsJoint_Kind; - -typedef struct gePhysicsJoint gePhysicsJoint; - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// ctor / dtor - -//gePhysicsJoint* gePhysicsJoint_Create(ItemJoint* pItemJoint); -GENESISAPI gePhysicsJoint * GENESISCC gePhysicsJoint_Create(gePhysicsJoint_Kind Kind, const geVec3d *Location, - geFloat assemblyRate, gePhysicsObject *PS1, gePhysicsObject *PS2, geFloat physicsScale); -GENESISAPI geBoolean GENESISCC gePhysicsJoint_Destroy(gePhysicsJoint** ppPhysjnt); - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -// functions - -GENESISAPI gePhysicsJoint_Kind GENESISCC gePhysicsJoint_GetType(const gePhysicsJoint* pPhysjnt); -GENESISAPI void GENESISCC gePhysicsJoint_GetLocationA(const gePhysicsJoint* pPhysjnt, geVec3d* pLoc); -GENESISAPI void GENESISCC gePhysicsJoint_GetLocationB(const gePhysicsJoint* pPhysjnt, geVec3d* pLoc); -GENESISAPI void GENESISCC gePhysicsJoint_SetLocationA(gePhysicsJoint* pPhysjnt, const geVec3d* pLoc); -GENESISAPI void GENESISCC gePhysicsJoint_SetLocationB(gePhysicsJoint* pPhysjnt, const geVec3d* pLoc); -GENESISAPI void GENESISCC gePhysicsJoint_GetLocationAInWorldSpace(const gePhysicsJoint* pPhysjnt, geVec3d* pLoc); -GENESISAPI void GENESISCC gePhysicsJoint_GetLocationBInWorldSpace(const gePhysicsJoint* pPhysjnt, geVec3d* pLoc); -GENESISAPI void GENESISCC gePhysicsJoint_SetLocationAInWorldSpace(gePhysicsJoint* pPhysjnt, const geVec3d* pLoc); -GENESISAPI void GENESISCC gePhysicsJoint_SetLocationBInWorldSpace(gePhysicsJoint* pPhysjnt, const geVec3d* pLoc); -GENESISAPI gePhysicsObject* GENESISCC gePhysicsJoint_GetObject1(const gePhysicsJoint* pPhysjnt); -GENESISAPI gePhysicsObject* GENESISCC gePhysicsJoint_GetObject2(const gePhysicsJoint* pPhysjnt); -GENESISAPI geFloat GENESISCC gePhysicsJoint_GetAssemblyRate(const gePhysicsJoint* pPhysjnt); -GENESISAPI void GENESISCC gePhysicsJoint_SetAssemblyRate(gePhysicsJoint* pPhysjnt, geFloat assemblyRate); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/G3D/Physics/PhysicsObject.h b/G3D/Physics/PhysicsObject.h deleted file mode 100644 index 691bb76..0000000 --- a/G3D/Physics/PhysicsObject.h +++ /dev/null @@ -1,137 +0,0 @@ -/****************************************************************************************/ -/* PHYSICSOBJECT.H */ -/* */ -/* Author: Jason Wood */ -/* Description: Constrained rigid body interface */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ -#ifndef PHYSICSOBJECT_H -#define PHYSICSOBJECT_H - -#include "matrix33.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define PHYSICSOBJECT_GRAVITY (-3.9f) - -typedef struct gePhysicsObject gePhysicsObject; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -// ctor/dtor - -GENESISAPI gePhysicsObject * GENESISCC gePhysicsObject_Create( - const geVec3d *StartLocation, - geFloat mass, - geBoolean IsAffectedByGravity, - geBoolean RespondsToForces, - geFloat linearDamping, - geFloat angularDamping, - const geVec3d * Mins, - const geVec3d * Maxs, - geFloat physicsScale); -GENESISAPI geBoolean GENESISCC gePhysicsObject_Destroy(gePhysicsObject** pPhysob); - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -// functions - -GENESISAPI geBoolean GENESISCC gePhysicsObject_ApplyGlobalFrameForce(gePhysicsObject* pod, geVec3d* force, geVec3d* radiusVector, geBoolean isAppliedForce, - int configIndex); -GENESISAPI geBoolean GENESISCC gePhysicsObject_ApplyGlobalFrameImpulse(gePhysicsObject* pPhysob, geVec3d* pImpulse, geVec3d* pRadVec, int configIndex); -GENESISAPI geBoolean GENESISCC gePhysicsObject_ComputeForces(gePhysicsObject* pod, int configIndex); -GENESISAPI geBoolean GENESISCC gePhysicsObject_Integrate(gePhysicsObject* pod, geFloat deltaTime, int SourceConfigIndex); - -GENESISAPI geFloat GENESISCC gePhysicsObject_GetMass(const gePhysicsObject* po); -GENESISAPI void GENESISCC gePhysicsObject_SetMass(gePhysicsObject* po, geFloat mass); - -GENESISAPI geFloat GENESISCC gePhysicsObject_GetOneOverMass(const gePhysicsObject* po); - -GENESISAPI void GENESISCC gePhysicsObject_GetXForm(const gePhysicsObject* po, geXForm3d* xform, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetXForm(gePhysicsObject* po, const geXForm3d* xform, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetXFormInEditorSpace(const gePhysicsObject* po, geXForm3d* xform, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetOriginalLocation(const gePhysicsObject* po, geVec3d* loc); -GENESISAPI void GENESISCC gePhysicsObject_SetOriginalLocation(gePhysicsObject* po, const geVec3d* loc); - -GENESISAPI void GENESISCC gePhysicsObject_GetLocation(const gePhysicsObject *po, geVec3d *Location, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_GetLocationInEditorSpace(const gePhysicsObject* po, geVec3d* loc, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetLinearVelocity(const gePhysicsObject* po, geVec3d* vel, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetLinearVelocity(gePhysicsObject* po, const geVec3d* vel, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetAngularVelocity(const gePhysicsObject* po, geVec3d* vel, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetAngularVelocity(gePhysicsObject* po, const geVec3d* vel, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetForce(const gePhysicsObject* po, geVec3d* force, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetForce(gePhysicsObject* po, const geVec3d* force, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetTorque(const gePhysicsObject* po, geVec3d* torque, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetTorque(gePhysicsObject* po, const geVec3d* torque, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetAppliedForce(const gePhysicsObject* po, geVec3d* force, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetAppliedForce(gePhysicsObject* po, const geVec3d* force, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetAppliedTorque(const gePhysicsObject* po, geVec3d* torque, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetAppliedTorque(gePhysicsObject* po, const geVec3d* torque, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_ClearForce(gePhysicsObject* po, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_ClearTorque(gePhysicsObject* po, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_ClearAppliedForce(gePhysicsObject* po, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_ClearAppliedTorque(gePhysicsObject* po, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_IncForce(gePhysicsObject* po, const geVec3d* forceInc, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_IncTorque(gePhysicsObject* po, const geVec3d* torqueInc, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_IncAppliedForce(gePhysicsObject* po, const geVec3d* forceInc, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_IncAppliedTorque(gePhysicsObject* po, const geVec3d* torqueInc, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetOrientation(const gePhysicsObject* po, geQuaternion* orient, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_SetOrientation(gePhysicsObject* po, const geQuaternion* orient, int configIndex); - -GENESISAPI void GENESISCC gePhysicsObject_GetInertiaTensor(const gePhysicsObject* po, Matrix33* iTensor); -GENESISAPI void GENESISCC gePhysicsObject_GetInertiaTensorInverse(const gePhysicsObject* po, Matrix33* iTensorInv); - -GENESISAPI void GENESISCC gePhysicsObject_GetInertiaTensorInPhysicsSpace(const gePhysicsObject* pPhysob, Matrix33* pITensor, int configIndex); -GENESISAPI void GENESISCC gePhysicsObject_GetInertiaTensorInverseInPhysicsSpace(const gePhysicsObject* pPhysob, Matrix33* pITensorInv, int configIndex); - -GENESISAPI geBoolean GENESISCC gePhysicsObject_IsAffectedByGravity(const gePhysicsObject* po); -GENESISAPI void GENESISCC gePhysicsObject_SetIsAffectedByGravity(gePhysicsObject* po, geBoolean flag); - -GENESISAPI geBoolean GENESISCC gePhysicsObject_RespondsToForces(const gePhysicsObject* po); -GENESISAPI void GENESISCC gePhysicsObject_SetRespondsToForces(gePhysicsObject* po, geBoolean flag); - -GENESISAPI geFloat GENESISCC gePhysicsObject_GetLinearDamping(const gePhysicsObject* po); -GENESISAPI void GENESISCC gePhysicsObject_SetLinearDamping(gePhysicsObject* po, geFloat linearDamping); - -GENESISAPI geFloat GENESISCC gePhysicsObject_GetAngularDamping(const gePhysicsObject* po); -GENESISAPI void GENESISCC gePhysicsObject_SetAngularDamping(gePhysicsObject* po, geFloat angularDamping); - -GENESISAPI void GENESISCC gePhysicsObject_SetActiveConfig(gePhysicsObject* pPhysob, int configIndex); -GENESISAPI int GENESISCC gePhysicsObject_GetActiveConfig(gePhysicsObject* pPhysob); - -GENESISAPI void GENESISCC gePhysicsObject_SetPhysicsScale(gePhysicsObject* pPhysob, geFloat scale); -GENESISAPI geFloat GENESISCC gePhysicsObject_GetPhysicsScale(gePhysicsObject* pPhysob); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/G3D/Physics/PhysicsSystem.h b/G3D/Physics/PhysicsSystem.h deleted file mode 100644 index 176fb81..0000000 --- a/G3D/Physics/PhysicsSystem.h +++ /dev/null @@ -1,54 +0,0 @@ -/****************************************************************************************/ -/* PHYSICSSYSTEM.H */ -/* */ -/* Author: Jason Wood */ -/* Description: Rigid body, constraint based physics system interface */ -/* */ -/* The contents of this file are subject to the Genesis3D Public License */ -/* Version 1.01 (the "License"); you may not use this file except in */ -/* compliance with the License. You may obtain a copy of the License at */ -/* http://www.genesis3d.com */ -/* */ -/* Software distributed under the License is distributed on an "AS IS" */ -/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ -/* the License for the specific language governing rights and limitations */ -/* under the License. */ -/* */ -/* The Original Code is Genesis3D, released March 25, 1999. */ -/* Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ -/* */ -/****************************************************************************************/ -#if !defined (PHYSICSSYSTEM_H) -#define PHYSICSSYSTEM_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct gePhysicsSystem gePhysicsSystem; - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// ctor / dtor - -GENESISAPI gePhysicsSystem *GENESISCC gePhysicsSystem_Create(void); -GENESISAPI geBoolean GENESISCC gePhysicsSystem_Destroy(gePhysicsSystem** ppSys); - -GENESISAPI geBoolean GENESISCC gePhysicsSystem_Iterate(gePhysicsSystem* psPtr, geFloat Time); - -GENESISAPI geBoolean GENESISCC gePhysicsSystem_AddJoint(gePhysicsSystem *psPtr, gePhysicsJoint *Joint); -GENESISAPI geBoolean GENESISCC gePhysicsSystem_AddObject(gePhysicsSystem *psPtr, gePhysicsObject *Object); - -GENESISAPI int GENESISCC gePhysicsSystem_GetSourceConfigIndex(const gePhysicsSystem* pSys); -GENESISAPI gePhysicsObject** GENESISCC gePhysicsSystem_GetPhysobs(const gePhysicsSystem* pSys); -GENESISAPI gePhysicsJoint** GENESISCC gePhysicsSystem_GetPhysjnts(const gePhysicsSystem* pSys); -GENESISAPI int GENESISCC gePhysicsSystem_GetNumPhysobs(const gePhysicsSystem* pSys); -GENESISAPI int GENESISCC gePhysicsSystem_GetNumPhysjnts(const gePhysicsSystem* pSys); -GENESISAPI int GENESISCC gePhysicsSystem_GetSumOfConstraintDimensions(const gePhysicsSystem* pSys); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/G3D/Physics/PhysicsJoint.c b/G3D/PhysicsJoint.c similarity index 95% rename from G3D/Physics/PhysicsJoint.c rename to G3D/PhysicsJoint.c index a29e6f3..c2af980 100644 --- a/G3D/Physics/PhysicsJoint.c +++ b/G3D/PhysicsJoint.c @@ -22,12 +22,11 @@ #include #include -#include "vec3d.h" -#include "xform3d.h" -#include "ram.h" -#include "matrix33.h" -#include "quatern.h" - +#include "Vec3d.h" +#include "XForm3d.h" +#include "Ram.h" +#include "Matrix33.h" +#include "Quaternion.h" #include "PhysicsObject.h" #include "PhysicsJoint.h" diff --git a/G3D/Physics/PhysicsObject.c b/G3D/PhysicsObject.c similarity index 96% rename from G3D/Physics/PhysicsObject.c rename to G3D/PhysicsObject.c index a2fe0dc..f9ce31d 100644 --- a/G3D/Physics/PhysicsObject.c +++ b/G3D/PhysicsObject.c @@ -23,12 +23,10 @@ #include #include -#include "genesis.h" -#include "ram.h" -#include "matrix33.h" -#include "quatern.h" - - +#include "Genesis.h" +#include "Ram.h" +#include "Matrix33.h" +#include "Quaternion.h" #include "PhysicsObject.h" //////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/G3D/PhysicsObject.h b/G3D/PhysicsObject.h index 691bb76..9114a4b 100644 --- a/G3D/PhysicsObject.h +++ b/G3D/PhysicsObject.h @@ -22,7 +22,7 @@ #ifndef PHYSICSOBJECT_H #define PHYSICSOBJECT_H -#include "matrix33.h" +#include "Matrix33.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Physics/PhysicsSystem.c b/G3D/PhysicsSystem.c similarity index 96% rename from G3D/Physics/PhysicsSystem.c rename to G3D/PhysicsSystem.c index 460ea81..10235c6 100644 --- a/G3D/Physics/PhysicsSystem.c +++ b/G3D/PhysicsSystem.c @@ -25,12 +25,11 @@ #include #include -#include "vec3d.h" -#include "xform3d.h" -#include "ram.h" -#include "matrix33.h" -#include "quatern.h" - +#include "Vec3d.h" +#include "XForm3d.h" +#include "Ram.h" +#include "Matrix33.h" +#include "Quaternion.h" #include "PhysicsObject.h" #include "PhysicsJoint.h" #include "PhysicsSystem.h" diff --git a/G3D/Bitmap/PixelFormat.c b/G3D/PixelFormat.c similarity index 96% rename from G3D/Bitmap/PixelFormat.c rename to G3D/PixelFormat.c index 4a8ec0d..591536f 100644 --- a/G3D/Bitmap/PixelFormat.c +++ b/G3D/PixelFormat.c @@ -36,7 +36,7 @@ this code only work on Intel-Endian CPU's #include #include -#include "pixelformat.h" +#include "PixelFormat.h" #define isinrange(x,lo,hi) ( (x)>=(lo) && (x)<=(hi) ) diff --git a/G3D/Plane.c b/G3D/Plane.c index 2f1bf92..7bc6675 100644 --- a/G3D/Plane.c +++ b/G3D/Plane.c @@ -19,9 +19,9 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include -#include -#include +#include +#include +#include #include "BaseType.h" #include "System.h" diff --git a/G3D/Actor/pose.c b/G3D/Pose.c similarity index 96% rename from G3D/Actor/pose.c rename to G3D/Pose.c index d7a1d1b..3ad63e1 100644 --- a/G3D/Actor/pose.c +++ b/G3D/Pose.c @@ -24,8 +24,8 @@ #include #include -#include "ram.h" -#include "errorlog.h" +#include "Ram.h" +#include "ErrorLog.h" #include "Pose.h" #include "StrBlock.h" diff --git a/G3D/Actor/pose.h b/G3D/Pose.h similarity index 100% rename from G3D/Actor/pose.h rename to G3D/Pose.h diff --git a/G3D/Engine/Logo/poweredby.c b/G3D/PoweredBy.c similarity index 100% rename from G3D/Engine/Logo/poweredby.c rename to G3D/PoweredBy.c diff --git a/G3D/Actor/puppet.c b/G3D/Puppet.c similarity index 95% rename from G3D/Actor/puppet.c rename to G3D/Puppet.c index 25d3f8e..990a899 100644 --- a/G3D/Actor/puppet.c +++ b/G3D/Puppet.c @@ -26,28 +26,26 @@ #include //fabs() #include -#include "light.h" -#include "world.h" -#include "trace.h" //Trace_WorldCollisionExact2() -#include "surface.h" // Surf_InSurfBoundingBox() - -#include "xfarray.h" -#include "puppet.h" -#include "pose.h" +#include "Light.h" +#include "World.h" +#include "Trace.h" //Trace_WorldCollisionExact2() +#include "Surface.h" // Surf_InSurfBoundingBox() +#include "XFArray.h" +#include "Puppet.h" +#include "Pose.h" #include "ErrorLog.h" -#include "ram.h" -#include "tclip.h" - +#include "Ram.h" +#include "TClip.h" #include "Frustum.h" #include "ExtBox.h" -#include "bodyinst.h" +#include "BodyInst.h" #ifdef PROFILE #include "rdtsc.h" #endif -#include "bitmap.h" -#include "bitmap._h" +#include "Bitmap.h" +#include "Bitmap._h" #define PUPPET_DEFAULT_MAX_DYNAMIC_LIGHTS 3 diff --git a/G3D/Actor/puppet.h b/G3D/Puppet.h similarity index 97% rename from G3D/Actor/puppet.h rename to G3D/Puppet.h index 37531ef..f063c6f 100644 --- a/G3D/Actor/puppet.h +++ b/G3D/Puppet.h @@ -29,7 +29,7 @@ #include "ExtBox.h" // geExtBox for gePuppet_RenderThroughFrustum #include "Frustum.h" -#include "vfile.h" +#include "VFile.h" #ifdef __cplusplus diff --git a/G3D/Actor/QKFrame.c b/G3D/QKFrame.c similarity index 96% rename from G3D/Actor/QKFrame.c rename to G3D/QKFrame.c index 5ce7aa1..f7cc97b 100644 --- a/G3D/Actor/QKFrame.c +++ b/G3D/QKFrame.c @@ -44,10 +44,10 @@ #include #include -#include "vec3d.h" +#include "Vec3d.h" #include "QKFrame.h" -#include "errorlog.h" -#include "ram.h" +#include "ErrorLog.h" +#include "Ram.h" #define LINEAR_BLEND(a,b,t) ( (t)*((b)-(a)) + (a) ) // linear blend of a and b 0a and t=1 ->b diff --git a/G3D/Actor/QKFrame.h b/G3D/QKFrame.h similarity index 94% rename from G3D/Actor/QKFrame.h rename to G3D/QKFrame.h index 45ab0bb..089caf6 100644 --- a/G3D/Actor/QKFrame.h +++ b/G3D/QKFrame.h @@ -45,8 +45,8 @@ #include "TKArray.h" -#include "Quatern.h" -#include "vfile.h" +#include "Quaternion.h" +#include "VFile.h" #ifdef __cplusplus extern "C" { @@ -134,9 +134,9 @@ geBoolean GENESISCC geQKFrame_LinearRead(geVFile* pFile, void* geQKFrame); geBoolean GENESISCC geQKFrame_SlerpRead(geVFile* pFile, void* geQKFrame); geBoolean GENESISCC geQKFrame_SquadRead(geVFile* pFile, void* geQKFrame); -geBoolean GENESISCC geQKFrame_WriteToFile(geVFile *pFile, void *geQKFrame, +geBoolean GENESISCC geQKFrame_WriteToFile(geVFile *pFile, geTKArray *KeyList, geQKFrame_InterpolationType InterpolationType, int Looping); -geTKArray *GENESISCC geQKFrame_CreateFromFile(geVFile *pFile, geQKFrame_InterpolationType *InterpolationType, int *Looping); +geTKArray *GENESISCC geQKFrame_CreateFromFile(geVFile *pFile, int *InterpolationType, int *Looping); geTKArray *GENESISCC geQKFrame_CreateFromBinaryFile(geVFile *pFile, int *InterpolationType, int *Looping); geBoolean GENESISCC geQKFrame_WriteToBinaryFile(geVFile *pFile, geTKArray *KeyList, geQKFrame_InterpolationType InterpolationType, int Looping); @@ -148,4 +148,4 @@ geBoolean GENESISCC geQKFrame_WriteToBinaryFile(geVFile *pFile, geTKArray *KeyLi #endif -#endif \ No newline at end of file +#endif diff --git a/G3D/Quaternion.c b/G3D/Quaternion.c index f0ea616..727fbb3 100644 --- a/G3D/Quaternion.c +++ b/G3D/Quaternion.c @@ -21,8 +21,9 @@ /****************************************************************************************/ #include #include -#include "basetype.h" -#include "quatern.h" + +#include "BaseType.h" +#include "Quaternion.h" #ifndef NDEBUG diff --git a/G3D/Ram.c b/G3D/Ram.c index 43e41c3..313920b 100644 --- a/G3D/Ram.c +++ b/G3D/Ram.c @@ -28,7 +28,7 @@ #include #endif -#include "ram.h" +#include "Ram.h" /* This controls the MINIMAL_CONFIG flag. Basically, all overflow, underflow, diff --git a/G3D/Sound.c b/G3D/Sound.c index 040b4ae..5f54ed7 100644 --- a/G3D/Sound.c +++ b/G3D/Sound.c @@ -15,8 +15,7 @@ /* under the License. */ /* */ /* The Original Code is Genesis3D, released March 25, 1999. */ -/*Genesis3D Version 1.1 released November 15, 1999 */ -/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ +/* Copyright (C) 1996-1999 Eclipse Entertainment, L.L.C. All Rights Reserved */ /* */ /****************************************************************************************/ #include @@ -24,11 +23,11 @@ #include #include -#include "include/BaseType.h" -#include "include/ErrorLog.h" -#include "include/VFile.h" +#include "BaseType.h" +#include "ErrorLog.h" +#include "VFile.h" #include "Sound.h" -#include "include/Ram.h" +#include "Ram.h" typedef struct SoundManager SoundManager; typedef struct Channel Channel; @@ -100,7 +99,7 @@ typedef struct SoundManager //LPDIRECTSOUNDNOTIFY * smNotify; } SoundManager; -static LPDIRECTSOUND lpDirectSound; +static LPDIRECTSOUND lpDirectSound = NULL; // This isn't really safe as a global. But it's consistent with the global lpDirectSound. static HMODULE hmodDirectSound = NULL; @@ -212,16 +211,6 @@ GENESISAPI void geSound_FreeSoundDef(geSound_System *SoundS, geSound_Def *SoundD FreeChannel(SoundS->SoundM, Channel); } -//===================================================================================== -// Sound_FreeAllChannels -//===================================================================================== -GENESISAPI void geSound_FreeAllChannels(geSound_System *SoundS) -{ - if (!SoundS) return; - - FreeAllChannels( SoundS->SoundM ); -} - //===================================================================================== // Sound_SetGlobalVolume //===================================================================================== @@ -310,8 +299,7 @@ GENESISAPI geBoolean geSound_SoundIsPlaying(geSound_System *SoundS, geSound *Sou Channel* Channel; assert(SoundS != NULL); - if(Sound == NULL) - return GE_FALSE; // eaa3 05/29/2000 don't assert if NULL handle! + assert(Sound != NULL); Channel = GetChannel(SoundS->SoundM, (unsigned int)Sound); @@ -607,7 +595,8 @@ static BOOL ParseData( const uint8* data, DSBUFFERDESC* dsBD, BYTE ** pbWaveData memset(dsBD, 0, sizeof(DSBUFFERDESC)); dsBD->dwSize = sizeof(DSBUFFERDESC); - dsBD->dwFlags = DSBCAPS_STATIC | DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY; + dsBD->dwFlags = DSBCAPS_STATIC | DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLPAN | + DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLVOLUME; if (!DSParseWaveResource(data, &dsBD->lpwfxFormat, pbWaveData, &dsBD->dwBufferBytes)) { geErrorLog_Add(GE_ERR_INVALID_WAV, NULL); @@ -1030,10 +1019,6 @@ static BOOL ModifyChannel( Channel *channel, geSound_Cfg *cfg ) { Freq = (DWORD)(channel->BaseFreq * cfg->Frequency); - - if(Freq < 0) - Freq = 0; - Error = IDirectSoundBuffer_SetFrequency(channel->buffer, Freq); if (Error != DS_OK) { diff --git a/G3D/Sound3d.c b/G3D/Sound3d.c index bae9ca9..61e16e7 100644 --- a/G3D/Sound3d.c +++ b/G3D/Sound3d.c @@ -21,9 +21,9 @@ /****************************************************************************************/ #include -#include "G3D/World/Trace.h" -#include "incldue/Vec3d.h" -#include "include/XForm3d.h" +#include "Trace.h" +#include "Vec3d.h" +#include "XForm3d.h" #include "Camera.h" #include "Sound3d.h" diff --git a/G3D/Sprite.c b/G3D/Sprite.c index 7876333..703abf4 100644 --- a/G3D/Sprite.c +++ b/G3D/Sprite.c @@ -19,14 +19,11 @@ #include #include -#include "world.h" -#include "trace.h" - -#include "sprite.h" - +#include "World.h" +#include "Trace.h" +#include "Sprite.h" #include "ErrorLog.h" - #define BIG_DISTANCE 30000.0f extern geBoolean geBitmap_IsValid(const geBitmap *Bmp); diff --git a/G3D/Sprite.h b/G3D/Sprite.h index 5e54066..660e25c 100644 --- a/G3D/Sprite.h +++ b/G3D/Sprite.h @@ -26,7 +26,7 @@ #include "Bitmap.h" #ifdef GE_WORLD_H -#include "camera.h" +#include "Camera.h" #include "Frustum.h" #endif diff --git a/G3D/Actor/strblock.c b/G3D/StrBlock.c similarity index 95% rename from G3D/Actor/strblock.c rename to G3D/StrBlock.c index 392b90e..7fa0a4c 100644 --- a/G3D/Actor/strblock.c +++ b/G3D/StrBlock.c @@ -29,9 +29,9 @@ #include #include -#include "strblock.h" -#include "ram.h" -#include "errorlog.h" +#include "StrBlock.h" +#include "Ram.h" +#include "ErrorLog.h" #define STRBLOCK_MAX_STRINGLEN 255 diff --git a/G3D/Actor/strblock.h b/G3D/StrBlock.h similarity index 96% rename from G3D/Actor/strblock.h rename to G3D/StrBlock.h index 50c02bd..f3f329d 100644 --- a/G3D/Actor/strblock.h +++ b/G3D/StrBlock.h @@ -23,8 +23,8 @@ #ifndef GE_STRBLOCK_H #define GE_STRBLOCK_H -#include "basetype.h" // geBoolean -#include "vfile.h" +#include "BaseType.h" // geBoolean +#include "VFile.h" #ifdef __cplusplus extern "C" { @@ -58,4 +58,4 @@ geBoolean GENESISCC geStrBlock_WriteToBinaryFile(const geStrBlock *SB,geVFile *p } #endif -#endif \ No newline at end of file +#endif diff --git a/G3D/Engine/Logo/streak.c b/G3D/Streak.c similarity index 100% rename from G3D/Engine/Logo/streak.c rename to G3D/Streak.c diff --git a/G3D/Surface.c b/G3D/Surface.c index 1f9f7c5..283b582 100644 --- a/G3D/Surface.c +++ b/G3D/Surface.c @@ -19,10 +19,9 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include -#include -#include - +#include +#include +#include #include "BaseType.h" #include "System.h" @@ -32,7 +31,6 @@ #include "WBitmap.h" #include "Vec3d.h" #include "Vis.h" - #include "Light.h" //================================================================================ diff --git a/G3D/Surface.h b/G3D/Surface.h index eb4c5f3..eb93156 100644 --- a/G3D/Surface.h +++ b/G3D/Surface.h @@ -25,10 +25,10 @@ #include #include -#include "G3D/BaseType.h" -#include "G3D/PtrTypes.h" -#include "G3D/Vec3d.h" -#include "G3D/Engine/Drivers/DCommon.h" +#include "BaseType.h" +#include "PtrTypes.h" +#include "Vec3d.h" +#include "DCommon.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Engine/System.c b/G3D/System.c similarity index 95% rename from G3D/Engine/System.c rename to G3D/System.c index 90a53ae..87bb67a 100644 --- a/G3D/Engine/System.c +++ b/G3D/System.c @@ -19,16 +19,15 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include +#include #include "BaseType.h" #include "System.h" #include "Genesis.h" #include "ErrorLog.h" #include "Ram.h" -#include "engine.h" - -#include "list.h" +#include "Engine.h" +#include "List.h" #include "Surface.h" #include "World.h" #include "Plane.h" @@ -38,11 +37,8 @@ #include "Sound.h" #include "Entities.h" #include "User.h" - -#include "dcommon.h" - -#include "geassert.h" - +#include "DCommon.h" +#include "GeAssert.h" #include "BitmapList.h" //#define SKY_HACK //extern BOOL GlobalReset; diff --git a/G3D/Engine/System.h b/G3D/System.h similarity index 95% rename from G3D/Engine/System.h rename to G3D/System.h index 10bea8b..06a4a85 100644 --- a/G3D/Engine/System.h +++ b/G3D/System.h @@ -24,11 +24,12 @@ //#define OLD_FONT -#include "G3D/ErrorLog.h" -#include "G3D/Genesis.h" #include -#include "G3D/Engine/Drivers/DCommon.h" -#include "G3D/Camera.h" + +#include "ErrorLog.h" +#include "Genesis.h" +#include "DCommon.h" +#include "Camera.h" #include "PtrTypes.h" #define VectorToSUB(a, b) ( *(((geFloat*)&a) + b) ) diff --git a/G3D/TClip.c b/G3D/TClip.c index c9eff9f..0b3dcf8 100644 --- a/G3D/TClip.c +++ b/G3D/TClip.c @@ -68,13 +68,11 @@ TClip_Rasterize : 0.006183 : 1.$ % #include #include "TClip.h" -#include "G3D/Engine/Engine.h" -#include "bitmap._h" - -#include "list.h" -#include "ram.h" - -#include "timer.h" +#include "Engine.h" +#include "Bitmap._h" +#include "List.h" +#include "Ram.h" +#include "Timer.h" TIMER_VARS(TClip_Triangle); diff --git a/G3D/TClip.h b/G3D/TClip.h index 5fa8819..7166821 100644 --- a/G3D/TClip.h +++ b/G3D/TClip.h @@ -22,10 +22,10 @@ #ifndef GE_TCLIP_H #define GE_TCLIP_H -#include "include/BaseType.h" -#include "include/GeTypes.h" -#include "include/Bitmap.h" -#include "G3D/Engine/Engine.h" +#include "BaseType.h" +#include "GeTypes.h" +#include "Bitmap.h" +#include "Engine.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Actor/tkarray.c b/G3D/TKArray.c similarity index 96% rename from G3D/Actor/tkarray.c rename to G3D/TKArray.c index 4c4cd7a..a9781e5 100644 --- a/G3D/Actor/tkarray.c +++ b/G3D/TKArray.c @@ -37,7 +37,7 @@ #include "TKArray.h" #include "ErrorLog.h" -#include "ram.h" +#include "Ram.h" typedef struct geTKArray { diff --git a/G3D/Actor/tkarray.h b/G3D/TKArray.h similarity index 96% rename from G3D/Actor/tkarray.h rename to G3D/TKArray.h index 7155441..7c51212 100644 --- a/G3D/Actor/tkarray.h +++ b/G3D/TKArray.h @@ -34,8 +34,8 @@ Error conditions are reported to errorlog */ -#include "basetype.h" -#include "vfile.h" +#include "BaseType.h" +#include "VFile.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Actor/tkevents.c b/G3D/TKEvents.c similarity index 96% rename from G3D/Actor/tkevents.c rename to G3D/TKEvents.c index 04d1a1a..3e6fc2e 100644 --- a/G3D/Actor/tkevents.c +++ b/G3D/TKEvents.c @@ -29,12 +29,12 @@ */ #include #include +#include #include "TKEvents.h" #include "TKArray.h" #include "ErrorLog.h" -#include "ram.h" -#include "string.h" +#include "Ram.h" typedef struct { diff --git a/G3D/Actor/tkevents.h b/G3D/TKEvents.h similarity index 96% rename from G3D/Actor/tkevents.h rename to G3D/TKEvents.h index 15b8b0a..f1f59d4 100644 --- a/G3D/Actor/tkevents.h +++ b/G3D/TKEvents.h @@ -31,8 +31,8 @@ Error conditions are reported to errorlog */ -#include "basetype.h" -#include "vfile.h" +#include "BaseType.h" +#include "VFile.h" #ifdef __cplusplus extern "C" { @@ -99,4 +99,4 @@ GENESISAPI geBoolean GENESISCC geTKEvents_GetExtents( -#endif // __TKEVENTS_H__ \ No newline at end of file +#endif // __TKEVENTS_H__ diff --git a/G3D/Timer.c b/G3D/Timer.c index 0e71a72..01b6816 100644 --- a/G3D/Timer.c +++ b/G3D/Timer.c @@ -20,9 +20,10 @@ /* */ /****************************************************************************************/ -#include "timer.h" +#include "Timer.h" -FILE * timerFP = stdout; +// FIXME: wtf? +//FILE * timerFP = stdout; int timerCount = 0; diff --git a/G3D/Timer.h b/G3D/Timer.h index 153e1c0..e732f83 100644 --- a/G3D/Timer.h +++ b/G3D/Timer.h @@ -24,7 +24,8 @@ /****************************************************************************************/ #include -#include "tsc.h" + +#include "TSC.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Trace.c b/G3D/Trace.c index 4271aa2..753beca 100644 --- a/G3D/Trace.c +++ b/G3D/Trace.c @@ -19,7 +19,7 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include +#include #include "XForm3d.h" #include "BaseType.h" @@ -2356,4 +2356,4 @@ geBoolean Trace_GetTexureName(geWorld *World, const geVec3d *Pos, const geVec3d return GE_FALSE; } -// end change texture name \ No newline at end of file +// end change texture name diff --git a/G3D/User.c b/G3D/User.c index 4b174dc..b4c30f7 100644 --- a/G3D/User.c +++ b/G3D/User.c @@ -19,8 +19,8 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include -#include +#include +#include #include "User.h" #include "World.h" @@ -32,9 +32,7 @@ #include "Camera.h" #include "Frustum.h" #include "Plane.h" - #include "DCommon.h" - #include "Bitmap._h" extern int32 MirrorRecursion; // GLOBAL!!! in World.c diff --git a/G3D/User.h b/G3D/User.h index f89fef6..ac7f2c2 100644 --- a/G3D/User.h +++ b/G3D/User.h @@ -25,15 +25,14 @@ #include #include -#include "G3D/BaseType.h" -#include "G3D/Vec3d.h" -#include "G3D/XForm3d.h" -#include "G3D/Camera.h" -#include "G3D/Genesis.h" +#include "BaseType.h" +#include "Vec3d.h" +#include "XForm3d.h" +#include "Camera.h" +#include "Genesis.h" #include "World.h" #include "Surface.h" - -#include "G3D/Engine/Drivers/DCommon.h" +#include "DCommon.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/Bitmap/Compression/utility.h b/G3D/Utility.h similarity index 95% rename from G3D/Bitmap/Compression/utility.h rename to G3D/Utility.h index e3872c9..a9c5353 100644 --- a/G3D/Bitmap/Compression/utility.h +++ b/G3D/Utility.h @@ -23,12 +23,12 @@ /* */ /****************************************************************************************/ -#include "basetype.h" -#include "ram.h" -#include "errorlog.h" #include #include #include // for memcpy,memset +#include "BaseType.h" +#include "Ram.h" +#include "ErrorLog.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/VFile._h b/G3D/VFile._h index 04f1771..1022a7e 100644 --- a/G3D/VFile._h +++ b/G3D/VFile._h @@ -22,8 +22,8 @@ #ifndef VFILE__H #define VFILE__H -#include "basetype.h" -#include "vfile.h" +#include "BaseType.h" +#include "VFile.h" typedef void * (GENESISCC *geVFile_FinderCreateFN)(geVFile *FileSystem, void *Handle, const char *FileSpec); typedef geBoolean (GENESISCC *geVFile_FinderGetNextFileFN)(void *Handle); diff --git a/G3D/VFile.c b/G3D/VFile.c index 78b685c..27913f3 100644 --- a/G3D/VFile.c +++ b/G3D/VFile.c @@ -21,21 +21,18 @@ /****************************************************************************************/ #define WIN32_LEAN_AND_MEAN #include - #include #include #include #include -#include "basetype.h" -#include "ram.h" - -#include "vfile.h" -#include "vfile._h" - -#include "fsdos.h" -#include "fsmemory.h" -#include "fsvfs.h" +#include "BaseType.h" +#include "Ram.h" +#include "VFile.h" +#include "VFile._h" +#include "FsDos.h" +#include "FsMemory.h" +#include "FsVfs.h" // // add include files for file types here diff --git a/G3D/Actor/vkframe.c b/G3D/VKFrame.c similarity index 96% rename from G3D/Actor/vkframe.c rename to G3D/VKFrame.c index 8f24c8c..200fd9c 100644 --- a/G3D/Actor/vkframe.c +++ b/G3D/VKFrame.c @@ -40,10 +40,10 @@ #include #include -#include "vec3d.h" -#include "vkframe.h" -#include "errorlog.h" -#include "ram.h" +#include "Vec3d.h" +#include "VKFrame.h" +#include "ErrorLog.h" +#include "Ram.h" #define LINEAR_BLEND(a,b,t) ( (t)*((b)-(a)) + (a) ) // linear blend of a and b 0a and t=1 ->b diff --git a/G3D/Actor/vkframe.h b/G3D/VKFrame.h similarity index 92% rename from G3D/Actor/vkframe.h rename to G3D/VKFrame.h index ab637a6..87e79f8 100644 --- a/G3D/Actor/vkframe.h +++ b/G3D/VKFrame.h @@ -40,7 +40,7 @@ #define GE_VKFRAME_H #include "TKArray.h" -#include "vfile.h" +#include "VFile.h" #ifdef __cplusplus extern "C" { @@ -112,15 +112,15 @@ void GENESISCC geVKFrame_HermiteRecompute( geBoolean GENESISCC geVKFrame_LinearRead(geVFile* pFile, void* geVKFrame); geBoolean GENESISCC geVKFrame_HermiteRead(geVFile* pFile, void* geVKFrame); -geBoolean GENESISCC geVKFrame_WriteToFile(geVFile *pFile, void *geVKFrame, +geBoolean GENESISCC geVKFrame_WriteToFile(geVFile *pFile, geTKArray *KeyList, geVKFrame_InterpolationType InterpolationType,int Looping); -geTKArray *GENESISCC geVKFrame_CreateFromFile(geVFile *pFile, geVKFrame_InterpolationType *InterpolationType, int *Looping); -geBoolean GENESISCC geVKFrame_WriteToBinaryFile(geVFile *pFile, void *geVKFrame, +geTKArray *GENESISCC geVKFrame_CreateFromFile(geVFile *pFile, int *InterpolationType, int *Looping); +geBoolean GENESISCC geVKFrame_WriteToBinaryFile(geVFile *pFile, geTKArray *KeyList, geVKFrame_InterpolationType InterpolationType, int Looping); -geTKArray *GENESISCC geVKFrame_CreateFromBinaryFile(geVFile *pFile, geVKFrame_InterpolationType *InterpolationType, int *Looping); +geTKArray *GENESISCC geVKFrame_CreateFromBinaryFile(geVFile *pFile, int *InterpolationType, int *Looping); #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/G3D/Vec3d.c b/G3D/Vec3d.c index 219d5e1..29e908a 100644 --- a/G3D/Vec3d.c +++ b/G3D/Vec3d.c @@ -19,8 +19,9 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include +#include #include + #include "Vec3d.h" #define VCOMPARE_EPSILON (geFloat)0.0005 diff --git a/G3D/Vis.c b/G3D/Vis.c index 69a9894..79c1a97 100644 --- a/G3D/Vis.c +++ b/G3D/Vis.c @@ -19,7 +19,7 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include +#include #include "BaseType.h" #include "World.h" @@ -31,11 +31,10 @@ #include "Camera.h" #include "Frustum.h" #include "System.h" - #include "Fog.h" #ifdef _TSC -#include "tsc.h" +#include "TSC.h" #endif //#define SUPER_VIS1 diff --git a/G3D/WBitmap.c b/G3D/WBitmap.c index f5ece18..429cff1 100644 --- a/G3D/WBitmap.c +++ b/G3D/WBitmap.c @@ -19,15 +19,13 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include +#include -//===================================================================================== -//===================================================================================== #include "WBitmap.h" #include "GBSPFile.h" #include "Ram.h" #include "Bitmap.h" -#include "Errorlog.h" +#include "ErrorLog.h" #include "Bitmap._h" // NOTES - @@ -567,4 +565,4 @@ char *geWBitmap_Pool_GetWNameByBitmap(geWBitmap_Pool *Pool, const geBitmap *Bitm return NULL; } -// end change texture name \ No newline at end of file +// end change texture name diff --git a/G3D/Engine/Logo/WebUrl.c b/G3D/WebUrl.c similarity index 100% rename from G3D/Engine/Logo/WebUrl.c rename to G3D/WebUrl.c diff --git a/G3D/WgClip.c b/G3D/WgClip.c index 08209a3..0d2f9a0 100644 --- a/G3D/WgClip.c +++ b/G3D/WgClip.c @@ -28,11 +28,10 @@ #include #include -#include "genesis.h" -#include "basetype.h" -#include "extbox.h" - -#include "wgClip.h" +#include "Genesis.h" +#include "BaseType.h" +#include "ExtBox.h" +#include "WgClip.h" #pragma warning (disable:4514) // unreferenced inline function (caused by Windows) diff --git a/G3D/World.c b/G3D/World.c index a7314f4..698c5cb 100644 --- a/G3D/World.c +++ b/G3D/World.c @@ -19,9 +19,9 @@ /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ /* */ /****************************************************************************************/ -#include -#include - +#include +#include + #include "World.h" #include "System.h" #include "Ram.h" @@ -40,14 +40,10 @@ #include "Vis.h" #include "User.h" #include "VFile.h" - #include "Trace.h" - -#include "list.h" - +#include "List.h" #include "Bitmap.h" #include "Bitmap._h" - #include "Puppet.h" #include "Body.h" #include "Motion.h" diff --git a/G3D/World.h b/G3D/World.h index 0f80f76..34c5eda 100644 --- a/G3D/World.h +++ b/G3D/World.h @@ -22,20 +22,18 @@ #ifndef GE_WORLD_H #define GE_WORLD_H -#include "G3D/ErrorLog.h" -#include "G3D/PtrTypes.h" -#include "G3D/Genesis.h" +#include "ErrorLog.h" +#include "PtrTypes.h" +#include "Genesis.h" #include "GBSPFile.h" -#include "G3D/Motion.h" +#include "Motion.h" #include "Surface.h" #include "Fog.h" #include "WBitmap.h" #include "User.h" #include "Light.h" - -#include "G3D/Engine/BitmapList.h" - -#include "G3D/Actor.h" +#include "BitmapList.h" +#include "Actor.h" //MRB BEGIN //geSprite diff --git a/G3D/Actor/XFArray.c b/G3D/XFArray.c similarity index 100% rename from G3D/Actor/XFArray.c rename to G3D/XFArray.c diff --git a/G3D/Actor/xfarray.h b/G3D/XFArray.h similarity index 97% rename from G3D/Actor/xfarray.h rename to G3D/XFArray.h index 21c0db5..575c4dd 100644 --- a/G3D/Actor/xfarray.h +++ b/G3D/XFArray.h @@ -33,7 +33,7 @@ ...In the name of optimal access to the array. */ -#include "xform3d.h" +#include "XForm3d.h" #ifdef __cplusplus extern "C" { diff --git a/G3D/XForm3d.c b/G3D/XForm3d.c index f1adcca..fa44d4f 100644 --- a/G3D/XForm3d.c +++ b/G3D/XForm3d.c @@ -395,7 +395,8 @@ GENESISAPI void GENESISCC geXForm3d_TransformArray(const geXForm3d *XForm, const if (Count <= 0) // Early out if possible return; - _asm + // FIXME: asm code + /*_asm { mov ecx,Count // get item count mov esi,Source // get source array pointer @@ -454,7 +455,7 @@ Again: cmp ecx, 0 jne Again - } + }*/ // 34 cycles predicted (per loop) // 39 cycles measured diff --git a/G3D/Bitmap/Compression/yuv.c b/G3D/YUV.c similarity index 95% rename from G3D/Bitmap/Compression/yuv.c rename to G3D/YUV.c index 91e0256..ece3aa1 100644 --- a/G3D/Bitmap/Compression/yuv.c +++ b/G3D/YUV.c @@ -1,6 +1,7 @@ -#include "yuv.h" -#include "utility.h" -#include +#include + +#include "YUV.h" +#include "Utility.h" /****************************************************************************************/ /* Yuv */ diff --git a/G3D/Bitmap/Compression/yuv.h b/G3D/YUV.h similarity index 97% rename from G3D/Bitmap/Compression/yuv.h rename to G3D/YUV.h index 275755a..4a39abe 100644 --- a/G3D/Bitmap/Compression/yuv.h +++ b/G3D/YUV.h @@ -23,7 +23,7 @@ /* */ /****************************************************************************************/ -#include "basetype.h" +#include "BaseType.h" #ifdef __cplusplus extern "C" { diff --git a/GBSPLib/CMakeLists.txt b/GBSPLib/CMakeLists.txt index 9c8ef48..54d7611 100644 --- a/GBSPLib/CMakeLists.txt +++ b/GBSPLib/CMakeLists.txt @@ -1,3 +1,8 @@ -ADD_LIBRARY (GBSPLib STATIC BSP.cpp BSP2.cpp Brush2.cpp Fill.cpp GBSPFile.cpp GBSPLib.cpp GBSPPrep.cpp - Leaf.cpp Light.cpp Map.cpp MathLib.cpp Poly.cpp PortFile.cpp Portals.cpp Rad.cpp - TJunct.cpp Texture.cpp Utils.cpp Vis.cpp VisFlood.cpp) +SET (GBSPLIB_SOURCE BSP.cpp BSP2.cpp Brush2.cpp Fill.cpp GBSPFile.cpp GBSPLib.cpp GBSPPrep.cpp + Leaf.cpp Light.cpp Map.cpp MathLib.cpp Poly.cpp PortFile.cpp Portals.cpp Rad.cpp + TJunct.cpp Texture.cpp Utils.cpp Vis.cpp VisFlood.cpp) + +ADD_LIBRARY (GBSP STATIC ${GBSPLIB_SOURCE}) + +ADD_LIBRARY (GBSPLib SHARED ${GBSPLIB_SOURCE}) +TARGET_LINK_LIBRARIES (GBSPLib G3D msvcrt) diff --git a/GBSPLib/Portals.cpp b/GBSPLib/Portals.cpp index 295fd76..6ab061a 100644 --- a/GBSPLib/Portals.cpp +++ b/GBSPLib/Portals.cpp @@ -35,7 +35,7 @@ GBSP_Node *OutsideNode; geVec3d NodeMins, NodeMaxs; -geBoolean VisPortals; +geBoolean VPortals; geBoolean CreateAllOutsidePortals(GBSP_Node *Node); void GetNodeMinsMaxs(GBSP_Node *Node); @@ -89,7 +89,7 @@ geBoolean CreatePortals(GBSP_Node *RootNode, GBSP_Model *Model, geBoolean Vis) if (Verbose) GHook.Printf(" --- Create Portals --- \n"); - VisPortals = Vis; + VPortals = Vis; OutsideNode = &Model->OutsideNode; @@ -308,7 +308,7 @@ geBoolean PartitionPortals_r(GBSP_Node *Node) if (Node->PlaneNum == PLANENUM_LEAF) return GE_TRUE; - if (VisPortals && Node->Detail) // We can stop at detail seperators for the vis tree + if (VPortals && Node->Detail) // We can stop at detail seperators for the vis tree return GE_TRUE; //if (!InitializeNodePortal(Node)) -- 2.15.1

=tom?pm4<>w<@LIxO2~Q<_l<-c%F9}a0 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 diff --git a/G3D/Engine/Drivers/GlideDrv/GlideDrv.opt b/G3D/Engine/Drivers/GlideDrv/GlideDrv.opt deleted file mode 100644 index a0ccc2c2fe481a47126870b135455f6ae97b34fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49664 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 diff --git a/G3D/Engine/Drivers/GlideDrv/mssccprj.scc b/G3D/Engine/Drivers/GlideDrv/mssccprj.scc deleted file mode 100644 index 05edfc0..0000000 --- a/G3D/Engine/Drivers/GlideDrv/mssccprj.scc +++ /dev/null @@ -1,4 +0,0 @@ -SCC = This is a Source Code Control file - -[GlideDrv.mak] -SCC_Project_Name = "$/Genesis10/Source/Engine/Drivers/GlideDrv", MQQBAAAA diff --git a/G3D/Engine/Drivers/OpenGl/OglDrv.dsp b/G3D/Engine/Drivers/OpenGl/OglDrv.dsp deleted file mode 100644 index 9b47e37..0000000 --- a/G3D/Engine/Drivers/OpenGl/OglDrv.dsp +++ /dev/null @@ -1,209 +0,0 @@ -# Microsoft Developer Studio Project File - Name="OglDrv" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=OglDrv - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "OglDrv.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "OglDrv.mak" CFG="OglDrv - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "OglDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "OglDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/Genesis10/Source/Engine/Drivers/OglDrv", CVPBAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "OglDrv - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OglDrv_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /X /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\\" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OglDrv_EXPORTS" /D "__MSC__" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib /nologo /dll /machine:I386 /nodefaultlib - -!ELSEIF "$(CFG)" == "OglDrv - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OglDrv_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /X /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\\" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OglDrv_EXPORTS" /D "__MSC__" /FR /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib /nologo /dll /debug /machine:I386 /nodefaultlib /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "OglDrv - Win32 Release" -# Name "OglDrv - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\Dcommon.h -# End Source File -# Begin Source File - -SOURCE=.\glext.h -# End Source File -# Begin Source File - -SOURCE=.\OglDrv.c -# End Source File -# Begin Source File - -SOURCE=.\OglDrv.h -# End Source File -# Begin Source File - -SOURCE=.\OglMisc.c -# End Source File -# Begin Source File - -SOURCE=.\OglMisc.h -# End Source File -# Begin Source File - -SOURCE=.\Render.c -# End Source File -# Begin Source File - -SOURCE=.\Render.h -# End Source File -# Begin Source File - -SOURCE=.\THandle.c -# End Source File -# Begin Source File - -SOURCE=.\THandle.h -# End Source File -# Begin Source File - -SOURCE=.\Win32.c -# End Source File -# Begin Source File - -SOURCE=.\Win32.h -# End Source File -# End Group -# Begin Group "Libraries" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmt.lib - -!IF "$(CFG)" == "OglDrv - Win32 Release" - -!ELSEIF "$(CFG)" == "OglDrv - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmtd.lib - -!IF "$(CFG)" == "OglDrv - Win32 Release" - -# PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "OglDrv - Win32 Debug" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Winspool.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Uuid.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Comdlg32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Gdi32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Kernel32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Oldnames.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Shell32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\User32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Advapi32.lib -# End Source File -# End Group -# End Target -# End Project diff --git a/G3D/Engine/Drivers/OpenGl/OglDrv.dsw b/G3D/Engine/Drivers/OpenGl/OglDrv.dsw deleted file mode 100644 index 21f82aa..0000000 --- a/G3D/Engine/Drivers/OpenGl/OglDrv.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "OglDrv"=.\OglDrv.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/G3D/Engine/Drivers/SoftDrv/SoftDrv.dsp b/G3D/Engine/Drivers/SoftDrv/SoftDrv.dsp deleted file mode 100644 index e7e030a..0000000 --- a/G3D/Engine/Drivers/SoftDrv/SoftDrv.dsp +++ /dev/null @@ -1,304 +0,0 @@ -# Microsoft Developer Studio Project File - Name="SoftDrv" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=SoftDrv - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "SoftDrv.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "SoftDrv.mak" CFG="SoftDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "SoftDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "SoftDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/Genesis10/Source/Engine/Drivers/SoftDrv", EVPBAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "SoftDrv - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /X /I "..\..\.." /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Dx6SDK\Include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /machine:I386 /nodefaultlib - -!ELSEIF "$(CFG)" == "SoftDrv - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /X /I "..\..\.." /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Dx6SDK\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /debug /machine:I386 /nodefaultlib /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "SoftDrv - Win32 Release" -# Name "SoftDrv - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\3dnowspan.h -# End Source File -# Begin Source File - -SOURCE=.\amdspan.asm - -!IF "$(CFG)" == "SoftDrv - Win32 Release" - -# Begin Custom Build -InputPath=.\amdspan.asm - -".\amdspan.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - ..\..\..\..\masm\bin\ml -c -I ..\..\..\..\masm\include -coff amdspan.asm - -# End Custom Build - -!ELSEIF "$(CFG)" == "SoftDrv - Win32 Debug" - -# Begin Custom Build -InputPath=.\amdspan.asm - -".\amdspan.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - ..\..\..\..\masm\bin\ml -c -I ..\..\..\..\masm\include -coff amdspan.asm - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\dmodes.c -# End Source File -# Begin Source File - -SOURCE=.\dmodes.h -# End Source File -# Begin Source File - -SOURCE=.\drawspan.c -# End Source File -# Begin Source File - -SOURCE=.\drawspan.h -# End Source File -# Begin Source File - -SOURCE=.\register.c -# End Source File -# Begin Source File - -SOURCE=.\Register.h -# End Source File -# Begin Source File - -SOURCE=.\render.c -# End Source File -# Begin Source File - -SOURCE=.\Render.h -# End Source File -# Begin Source File - -SOURCE=.\Sal.h -# End Source File -# Begin Source File - -SOURCE=.\scene.c -# End Source File -# Begin Source File - -SOURCE=.\Scene.h -# End Source File -# Begin Source File - -SOURCE=.\softdrv.c -# End Source File -# Begin Source File - -SOURCE=.\Softdrv.h -# End Source File -# Begin Source File - -SOURCE=.\span.c -# End Source File -# Begin Source File - -SOURCE=.\Span.h -# End Source File -# Begin Source File - -SOURCE=.\system.c -# End Source File -# Begin Source File - -SOURCE=.\System.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\Math\Vec3d.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\Math\Vec3d.h -# End Source File -# Begin Source File - -SOURCE=.\W32sal.cpp -# End Source File -# Begin Source File - -SOURCE=.\x86span555.c -# End Source File -# Begin Source File - -SOURCE=.\x86span555.h -# End Source File -# Begin Source File - -SOURCE=.\x86span565.c -# End Source File -# Begin Source File - -SOURCE=.\x86span565.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\Math\Xform3d.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\Math\Xform3d.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Group "Libraries" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Winspool.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Comdlg32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Gdi32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Kernel32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmt.lib - -!IF "$(CFG)" == "SoftDrv - Win32 Release" - -!ELSEIF "$(CFG)" == "SoftDrv - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmtd.lib - -!IF "$(CFG)" == "SoftDrv - Win32 Release" - -# PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "SoftDrv - Win32 Debug" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Oldnames.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Shell32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\User32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Uuid.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Advapi32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Winmm.lib -# End Source File -# End Group -# End Target -# End Project diff --git a/G3D/Engine/Drivers/SoftDrv/SoftDrv.mak b/G3D/Engine/Drivers/SoftDrv/SoftDrv.mak deleted file mode 100644 index f706f17..0000000 --- a/G3D/Engine/Drivers/SoftDrv/SoftDrv.mak +++ /dev/null @@ -1,319 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Based on SoftDrv.dsp -!IF "$(CFG)" == "" -CFG=SoftDrv - Win32 Debug -!MESSAGE No configuration specified. Defaulting to SoftDrv - Win32 Debug. -!ENDIF - -!IF "$(CFG)" != "SoftDrv - Win32 Release" && "$(CFG)" != "SoftDrv - Win32 Debug" -!MESSAGE Invalid configuration "$(CFG)" specified. -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "SoftDrv.mak" CFG="SoftDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "SoftDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "SoftDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE -!ERROR An invalid configuration is specified. -!ENDIF - -!IF "$(OS)" == "Windows_NT" -NULL= -!ELSE -NULL=nul -!ENDIF - -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "SoftDrv - Win32 Release" - -OUTDIR=.\Release -INTDIR=.\Release -# Begin Custom Macros -OutDir=.\Release -# End Custom Macros - -ALL : "$(OUTDIR)\SoftDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\dmodes.obj" - -@erase "$(INTDIR)\drawspan.obj" - -@erase "$(INTDIR)\register.obj" - -@erase "$(INTDIR)\render.obj" - -@erase "$(INTDIR)\scene.obj" - -@erase "$(INTDIR)\softdrv.obj" - -@erase "$(INTDIR)\span.obj" - -@erase "$(INTDIR)\system.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\Vec3d.obj" - -@erase "$(INTDIR)\W32sal.obj" - -@erase "$(INTDIR)\x86span555.obj" - -@erase "$(INTDIR)\x86span565.obj" - -@erase "$(INTDIR)\Xform3d.obj" - -@erase "$(OUTDIR)\SoftDrv.dll" - -@erase "$(OUTDIR)\SoftDrv.exp" - -@erase "$(OUTDIR)\SoftDrv.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MT /W3 /GX /O2 /X /I "..\..\.." /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Dx6SDK\Include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV_EXPORTS" /Fp"$(INTDIR)\SoftDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c -MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\SoftDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:no /pdb:"$(OUTDIR)\SoftDrv.pdb" /machine:I386 /nodefaultlib /out:"$(OUTDIR)\SoftDrv.dll" /implib:"$(OUTDIR)\SoftDrv.lib" -LINK32_OBJS= \ - "$(INTDIR)\dmodes.obj" \ - "$(INTDIR)\drawspan.obj" \ - "$(INTDIR)\register.obj" \ - "$(INTDIR)\render.obj" \ - "$(INTDIR)\scene.obj" \ - "$(INTDIR)\softdrv.obj" \ - "$(INTDIR)\span.obj" \ - "$(INTDIR)\system.obj" \ - "$(INTDIR)\Vec3d.obj" \ - "$(INTDIR)\W32sal.obj" \ - "$(INTDIR)\x86span555.obj" \ - "$(INTDIR)\x86span565.obj" \ - "$(INTDIR)\Xform3d.obj" \ - "..\..\..\..\MSDev60\lib\Winspool.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmt.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\MSDev60\lib\Winmm.lib" \ - ".\amdspan.obj" - -"$(OUTDIR)\SoftDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ELSEIF "$(CFG)" == "SoftDrv - Win32 Debug" - -OUTDIR=.\Debug -INTDIR=.\Debug -# Begin Custom Macros -OutDir=.\Debug -# End Custom Macros - -ALL : "$(OUTDIR)\SoftDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\dmodes.obj" - -@erase "$(INTDIR)\drawspan.obj" - -@erase "$(INTDIR)\register.obj" - -@erase "$(INTDIR)\render.obj" - -@erase "$(INTDIR)\scene.obj" - -@erase "$(INTDIR)\softdrv.obj" - -@erase "$(INTDIR)\span.obj" - -@erase "$(INTDIR)\system.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\vc60.pdb" - -@erase "$(INTDIR)\Vec3d.obj" - -@erase "$(INTDIR)\W32sal.obj" - -@erase "$(INTDIR)\x86span555.obj" - -@erase "$(INTDIR)\x86span565.obj" - -@erase "$(INTDIR)\Xform3d.obj" - -@erase "$(OUTDIR)\SoftDrv.dll" - -@erase "$(OUTDIR)\SoftDrv.exp" - -@erase "$(OUTDIR)\SoftDrv.ilk" - -@erase "$(OUTDIR)\SoftDrv.lib" - -@erase "$(OUTDIR)\SoftDrv.pdb" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /X /I "..\..\.." /I "..\..\..\Support" /I "..\\" /I "..\..\..\Math" /I "..\..\..\Bitmap" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\..\Sdk\Dx6SDK\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV_EXPORTS" /Fp"$(INTDIR)\SoftDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c -MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\SoftDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:yes /pdb:"$(OUTDIR)\SoftDrv.pdb" /debug /machine:I386 /nodefaultlib /out:"$(OUTDIR)\SoftDrv.dll" /implib:"$(OUTDIR)\SoftDrv.lib" /pdbtype:sept -LINK32_OBJS= \ - "$(INTDIR)\dmodes.obj" \ - "$(INTDIR)\drawspan.obj" \ - "$(INTDIR)\register.obj" \ - "$(INTDIR)\render.obj" \ - "$(INTDIR)\scene.obj" \ - "$(INTDIR)\softdrv.obj" \ - "$(INTDIR)\span.obj" \ - "$(INTDIR)\system.obj" \ - "$(INTDIR)\Vec3d.obj" \ - "$(INTDIR)\W32sal.obj" \ - "$(INTDIR)\x86span555.obj" \ - "$(INTDIR)\x86span565.obj" \ - "$(INTDIR)\Xform3d.obj" \ - "..\..\..\..\MSDev60\lib\Winspool.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmtd.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\MSDev60\lib\Winmm.lib" \ - ".\amdspan.obj" - -"$(OUTDIR)\SoftDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ENDIF - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - - -!IF "$(NO_EXTERNAL_DEPS)" != "1" -!IF EXISTS("SoftDrv.dep") -!INCLUDE "SoftDrv.dep" -!ELSE -!MESSAGE Warning: cannot find "SoftDrv.dep" -!ENDIF -!ENDIF - - -!IF "$(CFG)" == "SoftDrv - Win32 Release" || "$(CFG)" == "SoftDrv - Win32 Debug" -SOURCE=.\amdspan.asm - -!IF "$(CFG)" == "SoftDrv - Win32 Release" - -InputPath=.\amdspan.asm - -".\amdspan.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - < -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=SoftDrv2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "SoftDrv2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "SoftDrv2.mak" CFG="SoftDrv2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "SoftDrv2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "SoftDrv2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/Genesis10/Source/Engine/Drivers/SoftDrv2", QADCAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "SoftDrv2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV2_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /X /I "..\\" /I "..\..\..\\" /I "..\..\..\support" /I "..\..\..\math" /I "..\..\..\bitmap" /I "..\..\..\..\msdev60\include" /I "..\..\..\..\sdk\dx6sdk\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV2_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /x /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /machine:I386 /nodefaultlib /out:".\Release\Softdrv.dll" - -!ELSEIF "$(CFG)" == "SoftDrv2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV2_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /X /I "..\\" /I "..\..\..\\" /I "..\..\..\support" /I "..\..\..\math" /I "..\..\..\bitmap" /I "..\..\..\..\msdev60\include" /I "..\..\..\..\sdk\dx6sdk\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV2_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /x /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /debug /machine:I386 /nodefaultlib /out:".\Debug\Softdrv.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "SoftDrv2 - Win32 Release" -# Name "SoftDrv2 - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\CPUInfo.c -# End Source File -# Begin Source File - -SOURCE=.\DDRAWDisplay.c -# End Source File -# Begin Source File - -SOURCE=.\DIBDisplay.c -# End Source File -# Begin Source File - -SOURCE=.\display.c -# End Source File -# Begin Source File - -SOURCE=.\DisplayModeInfo.c -# End Source File -# Begin Source File - -SOURCE=.\DrawDecal.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\Support\Ram.c -# End Source File -# Begin Source File - -SOURCE=.\softdrv.c -# End Source File -# Begin Source File - -SOURCE=.\span.c -# End Source File -# Begin Source File - -SOURCE=.\SpanBuffer.c -# End Source File -# Begin Source File - -SOURCE=.\SWTHandle.c -# End Source File -# Begin Source File - -SOURCE=.\TRaster.c -# End Source File -# Begin Source File - -SOURCE=.\Triangle.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\CPUInfo.h -# End Source File -# Begin Source File - -SOURCE=.\DDRAWDisplay.h -# End Source File -# Begin Source File - -SOURCE=.\DIBDisplay.h -# End Source File -# Begin Source File - -SOURCE=.\display.h -# End Source File -# Begin Source File - -SOURCE=.\DisplayModeInfo.h -# End Source File -# Begin Source File - -SOURCE=.\DrawDecal.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\Support\Ram.h -# End Source File -# Begin Source File - -SOURCE=.\rop.h -# End Source File -# Begin Source File - -SOURCE=.\Softdrv.h -# End Source File -# Begin Source File - -SOURCE=.\Span.h -# End Source File -# Begin Source File - -SOURCE=.\Span_AffineLoop.h -# End Source File -# Begin Source File - -SOURCE=.\Span_Factory.h -# End Source File -# Begin Source File - -SOURCE=.\SpanBuffer.h -# End Source File -# Begin Source File - -SOURCE=.\SpanEdges_Factory.h -# End Source File -# Begin Source File - -SOURCE=.\SWTHandle.h -# End Source File -# Begin Source File - -SOURCE=.\traster.h -# End Source File -# Begin Source File - -SOURCE=.\triangle.h -# End Source File -# End Group -# Begin Group "Libraries" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Winmm.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Comdlg32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Gdi32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Kernel32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmt.lib - -!IF "$(CFG)" == "SoftDrv2 - Win32 Release" - -!ELSEIF "$(CFG)" == "SoftDrv2 - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Libcmtd.lib - -!IF "$(CFG)" == "SoftDrv2 - Win32 Release" - -# PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "SoftDrv2 - Win32 Debug" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Oldnames.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Shell32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\User32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Uuid.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Advapi32.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\MSDev60\lib\Winspool.lib -# End Source File -# Begin Source File - -SOURCE=..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib -# End Source File -# End Group -# Begin Source File - -SOURCE=.\SoftDrv2.mak -# End Source File -# End Target -# End Project diff --git a/G3D/Engine/Drivers/SoftDrv2/SoftDrv2.mak b/G3D/Engine/Drivers/SoftDrv2/SoftDrv2.mak deleted file mode 100644 index 6de566c..0000000 --- a/G3D/Engine/Drivers/SoftDrv2/SoftDrv2.mak +++ /dev/null @@ -1,292 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Based on SoftDrv2.dsp -!IF "$(CFG)" == "" -CFG=SoftDrv2 - Win32 Debug -!MESSAGE No configuration specified. Defaulting to SoftDrv2 - Win32 Debug. -!ENDIF - -!IF "$(CFG)" != "SoftDrv2 - Win32 Release" && "$(CFG)" != "SoftDrv2 - Win32 Debug" -!MESSAGE Invalid configuration "$(CFG)" specified. -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "SoftDrv2.mak" CFG="SoftDrv2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "SoftDrv2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "SoftDrv2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE -!ERROR An invalid configuration is specified. -!ENDIF - -!IF "$(OS)" == "Windows_NT" -NULL= -!ELSE -NULL=nul -!ENDIF - -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "SoftDrv2 - Win32 Release" - -OUTDIR=.\Release -INTDIR=.\Release -# Begin Custom Macros -OutDir=.\Release -# End Custom Macros - -ALL : "$(OUTDIR)\Softdrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\CPUInfo.obj" - -@erase "$(INTDIR)\DDRAWDisplay.obj" - -@erase "$(INTDIR)\DIBDisplay.obj" - -@erase "$(INTDIR)\display.obj" - -@erase "$(INTDIR)\DisplayModeInfo.obj" - -@erase "$(INTDIR)\DrawDecal.obj" - -@erase "$(INTDIR)\Ram.obj" - -@erase "$(INTDIR)\softdrv.obj" - -@erase "$(INTDIR)\span.obj" - -@erase "$(INTDIR)\SpanBuffer.obj" - -@erase "$(INTDIR)\SWTHandle.obj" - -@erase "$(INTDIR)\TRaster.obj" - -@erase "$(INTDIR)\Triangle.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(OUTDIR)\Softdrv.dll" - -@erase "$(OUTDIR)\Softdrv.exp" - -@erase "$(OUTDIR)\Softdrv.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MT /W3 /GX /O2 /X /I "..\\" /I "..\..\..\\" /I "..\..\..\support" /I "..\..\..\math" /I "..\..\..\bitmap" /I "..\..\..\..\msdev60\include" /I "..\..\..\..\sdk\dx6sdk\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV2_EXPORTS" /Fp"$(INTDIR)\SoftDrv2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c -MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\SoftDrv2.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\Softdrv.pdb" /machine:I386 /nodefaultlib /out:"$(OUTDIR)\Softdrv.dll" /implib:"$(OUTDIR)\Softdrv.lib" -LINK32_OBJS= \ - "$(INTDIR)\CPUInfo.obj" \ - "$(INTDIR)\DDRAWDisplay.obj" \ - "$(INTDIR)\DIBDisplay.obj" \ - "$(INTDIR)\display.obj" \ - "$(INTDIR)\DisplayModeInfo.obj" \ - "$(INTDIR)\DrawDecal.obj" \ - "$(INTDIR)\Ram.obj" \ - "$(INTDIR)\softdrv.obj" \ - "$(INTDIR)\span.obj" \ - "$(INTDIR)\SpanBuffer.obj" \ - "$(INTDIR)\SWTHandle.obj" \ - "$(INTDIR)\TRaster.obj" \ - "$(INTDIR)\Triangle.obj" \ - "..\..\..\..\MSDev60\lib\Winmm.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmt.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\MSDev60\lib\Winspool.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" - -"$(OUTDIR)\Softdrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ELSEIF "$(CFG)" == "SoftDrv2 - Win32 Debug" - -OUTDIR=. -INTDIR=.\Debug -# Begin Custom Macros -OutDir=. -# End Custom Macros - -ALL : "$(OUTDIR)\Debug\Softdrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\CPUInfo.obj" - -@erase "$(INTDIR)\DDRAWDisplay.obj" - -@erase "$(INTDIR)\DIBDisplay.obj" - -@erase "$(INTDIR)\display.obj" - -@erase "$(INTDIR)\DisplayModeInfo.obj" - -@erase "$(INTDIR)\DrawDecal.obj" - -@erase "$(INTDIR)\Ram.obj" - -@erase "$(INTDIR)\softdrv.obj" - -@erase "$(INTDIR)\span.obj" - -@erase "$(INTDIR)\SpanBuffer.obj" - -@erase "$(INTDIR)\SWTHandle.obj" - -@erase "$(INTDIR)\TRaster.obj" - -@erase "$(INTDIR)\Triangle.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\vc60.pdb" - -@erase "$(OUTDIR)\Debug\Softdrv.dll" - -@erase "$(OUTDIR)\Debug\Softdrv.ilk" - -@erase "$(OUTDIR)\Softdrv.exp" - -@erase "$(OUTDIR)\Softdrv.lib" - -@erase "$(OUTDIR)\Softdrv.pdb" - -"$(INTDIR)" : - if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" - -CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /X /I "..\\" /I "..\..\..\\" /I "..\..\..\support" /I "..\..\..\math" /I "..\..\..\bitmap" /I "..\..\..\..\msdev60\include" /I "..\..\..\..\sdk\dx6sdk\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SOFTDRV2_EXPORTS" /Fp"$(INTDIR)\SoftDrv2.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c -MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\SoftDrv2.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\Softdrv.pdb" /debug /machine:I386 /nodefaultlib /out:"$(OUTDIR)\Debug\Softdrv.dll" /implib:"$(OUTDIR)\Softdrv.lib" /pdbtype:sept -LINK32_OBJS= \ - "$(INTDIR)\CPUInfo.obj" \ - "$(INTDIR)\DDRAWDisplay.obj" \ - "$(INTDIR)\DIBDisplay.obj" \ - "$(INTDIR)\display.obj" \ - "$(INTDIR)\DisplayModeInfo.obj" \ - "$(INTDIR)\DrawDecal.obj" \ - "$(INTDIR)\Ram.obj" \ - "$(INTDIR)\softdrv.obj" \ - "$(INTDIR)\span.obj" \ - "$(INTDIR)\SpanBuffer.obj" \ - "$(INTDIR)\SWTHandle.obj" \ - "$(INTDIR)\TRaster.obj" \ - "$(INTDIR)\Triangle.obj" \ - "..\..\..\..\MSDev60\lib\Winmm.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmtd.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\MSDev60\lib\Winspool.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" - -"$(OUTDIR)\Debug\Softdrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ENDIF - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - - -!IF "$(NO_EXTERNAL_DEPS)" != "1" -!IF EXISTS("SoftDrv2.dep") -!INCLUDE "SoftDrv2.dep" -!ELSE -!MESSAGE Warning: cannot find "SoftDrv2.dep" -!ENDIF -!ENDIF - - -!IF "$(CFG)" == "SoftDrv2 - Win32 Release" || "$(CFG)" == "SoftDrv2 - Win32 Debug" -SOURCE=.\CPUInfo.c - -"$(INTDIR)\CPUInfo.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\DDRAWDisplay.c - -"$(INTDIR)\DDRAWDisplay.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\DIBDisplay.c - -"$(INTDIR)\DIBDisplay.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\display.c - -"$(INTDIR)\display.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\DisplayModeInfo.c - -"$(INTDIR)\DisplayModeInfo.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\DrawDecal.c - -"$(INTDIR)\DrawDecal.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=..\..\..\Support\Ram.c - -"$(INTDIR)\Ram.obj" : $(SOURCE) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -SOURCE=.\softdrv.c - -"$(INTDIR)\softdrv.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\span.c - -"$(INTDIR)\span.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\SpanBuffer.c - -"$(INTDIR)\SpanBuffer.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\SWTHandle.c - -"$(INTDIR)\SWTHandle.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\TRaster.c - -"$(INTDIR)\TRaster.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Triangle.c - -"$(INTDIR)\Triangle.obj" : $(SOURCE) "$(INTDIR)" - - - -!ENDIF - diff --git a/G3D/Engine/Drivers/SoftDrv2/mssccprj.scc b/G3D/Engine/Drivers/SoftDrv2/mssccprj.scc deleted file mode 100644 index 39a8f66..0000000 --- a/G3D/Engine/Drivers/SoftDrv2/mssccprj.scc +++ /dev/null @@ -1,4 +0,0 @@ -SCC = This is a Source Code Control file - -[SoftDrv2.mak] -SCC_Project_Name = "$/Genesis10/Source/Engine/Drivers/SoftDrv2", HBDCAAAA diff --git a/G3D/Engine/Drivers/WireFrame/D3DDrv.dsp b/G3D/Engine/Drivers/WireFrame/D3DDrv.dsp deleted file mode 100644 index 591621a..0000000 --- a/G3D/Engine/Drivers/WireFrame/D3DDrv.dsp +++ /dev/null @@ -1,207 +0,0 @@ -# Microsoft Developer Studio Project File - Name="D3DDrv" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=D3DDrv - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv.mak" CFG="D3DDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "D3DDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "D3DDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName ""$/Genesis10/Source/Engine/Drivers/D3DDrv", DVPBAAAA" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "D3DDrv - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /YX /FD /c -# ADD CPP /nologo /G5 /MT /W3 /GX /Ox /Ot /Ow /Og /Oi /Op /Ob2 /I "..\..\.." /I "..\\" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\Math" /I "..\..\..\Bitmap" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /FD /c -# SUBTRACT CPP /X /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /x /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib vfw32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /machine:I386 /out:"Release/WireDrv.dll" -# SUBTRACT LINK32 /nodefaultlib - -!ELSEIF "$(CFG)" == "D3DDrv - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /G5 /MTd /W3 /GX /Zi /Od /I "..\..\.." /I "..\..\..\Math" /I "..\\" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\Bitmap" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /YX /FD /GZ /c -# SUBTRACT CPP /X -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /x /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib vfw32.lib dxguid.lib ddraw.lib d3dim.lib /nologo /dll /debug /machine:I386 /out:"Debug/WireDrv.dll" /pdbtype:sept -# SUBTRACT LINK32 /nodefaultlib - -!ENDIF - -# Begin Target - -# Name "D3DDrv - Win32 Release" -# Name "D3DDrv - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\D3d_err.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_err.h -# End Source File -# Begin Source File - -SOURCE=.\D3d_fx.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_fx.h -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3d_main.h -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3dcache.h -# End Source File -# Begin Source File - -SOURCE=.\D3ddrv.cpp -# End Source File -# Begin Source File - -SOURCE=.\D3ddrv.h -# End Source File -# Begin Source File - -SOURCE=..\Dcommon.h -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.c -# End Source File -# Begin Source File - -SOURCE=.\DDMemMgr.h -# End Source File -# Begin Source File - -SOURCE=.\Gspan.cpp -# End Source File -# Begin Source File - -SOURCE=.\Gspan.h -# End Source File -# Begin Source File - -SOURCE=.\Pcache.cpp -# End Source File -# Begin Source File - -SOURCE=.\Pcache.h -# End Source File -# Begin Source File - -SOURCE=.\Render.cpp -# End Source File -# Begin Source File - -SOURCE=.\Render.h -# End Source File -# Begin Source File - -SOURCE=.\Scene.cpp -# End Source File -# Begin Source File - -SOURCE=.\Scene.h -# End Source File -# Begin Source File - -SOURCE=.\THandle.cpp -# End Source File -# Begin Source File - -SOURCE=.\THandle.h -# End Source File -# Begin Source File - -SOURCE=.\tpage.cpp -# End Source File -# Begin Source File - -SOURCE=.\TPage.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Group "Libraries" - -# PROP Default_Filter "" -# End Group -# End Target -# End Project diff --git a/G3D/Engine/Drivers/WireFrame/D3DDrv.dsw b/G3D/Engine/Drivers/WireFrame/D3DDrv.dsw deleted file mode 100644 index 262da56..0000000 --- a/G3D/Engine/Drivers/WireFrame/D3DDrv.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "D3DDrv"=.\D3DDrv.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/G3D/Engine/Drivers/WireFrame/D3DDrv.mak b/G3D/Engine/Drivers/WireFrame/D3DDrv.mak deleted file mode 100644 index 454edfc..0000000 --- a/G3D/Engine/Drivers/WireFrame/D3DDrv.mak +++ /dev/null @@ -1,284 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Based on D3DDrv.dsp -!IF "$(CFG)" == "" -CFG=D3DDrv - Win32 Debug -!MESSAGE No configuration specified. Defaulting to D3DDrv - Win32 Debug. -!ENDIF - -!IF "$(CFG)" != "D3DDrv - Win32 Release" && "$(CFG)" != "D3DDrv - Win32 Debug" -!MESSAGE Invalid configuration "$(CFG)" specified. -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "D3DDrv.mak" CFG="D3DDrv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "D3DDrv - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "D3DDrv - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE -!ERROR An invalid configuration is specified. -!ENDIF - -!IF "$(OS)" == "Windows_NT" -NULL= -!ELSE -NULL=nul -!ENDIF - -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "D3DDrv - Win32 Release" - -OUTDIR=.\Release -INTDIR=.\Release -# Begin Custom Macros -OutDir=.\Release -# End Custom Macros - -ALL : "$(OUTDIR)\D3DDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\D3d_err.obj" - -@erase "$(INTDIR)\D3d_fx.obj" - -@erase "$(INTDIR)\D3d_main.obj" - -@erase "$(INTDIR)\D3dcache.obj" - -@erase "$(INTDIR)\D3ddrv.obj" - -@erase "$(INTDIR)\DDMemMgr.obj" - -@erase "$(INTDIR)\Gspan.obj" - -@erase "$(INTDIR)\Pcache.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\Scene.obj" - -@erase "$(INTDIR)\THandle.obj" - -@erase "$(INTDIR)\tpage.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(OUTDIR)\D3DDrv.dll" - -@erase "$(OUTDIR)\D3DDrv.exp" - -@erase "$(OUTDIR)\D3DDrv.lib" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MT /W3 /GX /O2 /X /I "..\..\.." /I "..\..\..\..\SdkDx6Sdk\Include" /I "..\\" /I "..\..\..\..\Sdk\Dx6Sdk\Include" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\Math" /I "..\..\..\Bitmap" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fp"$(INTDIR)\D3DDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c -MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\D3DDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:no /pdb:"$(OUTDIR)\D3DDrv.pdb" /machine:I386 /nodefaultlib /out:"$(OUTDIR)\D3DDrv.dll" /implib:"$(OUTDIR)\D3DDrv.lib" -LINK32_OBJS= \ - "$(INTDIR)\D3d_err.obj" \ - "$(INTDIR)\D3d_fx.obj" \ - "$(INTDIR)\D3d_main.obj" \ - "$(INTDIR)\D3dcache.obj" \ - "$(INTDIR)\D3ddrv.obj" \ - "$(INTDIR)\DDMemMgr.obj" \ - "$(INTDIR)\Gspan.obj" \ - "$(INTDIR)\Pcache.obj" \ - "$(INTDIR)\Render.obj" \ - "$(INTDIR)\Scene.obj" \ - "$(INTDIR)\THandle.obj" \ - "$(INTDIR)\tpage.obj" \ - "..\..\..\..\MSDev60\lib\Wininet.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmt.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\ddraw.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\d3dim.lib" - -"$(OUTDIR)\D3DDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ELSEIF "$(CFG)" == "D3DDrv - Win32 Debug" - -OUTDIR=.\Debug -INTDIR=.\Debug -# Begin Custom Macros -OutDir=.\Debug -# End Custom Macros - -ALL : "$(OUTDIR)\D3DDrv.dll" - - -CLEAN : - -@erase "$(INTDIR)\D3d_err.obj" - -@erase "$(INTDIR)\D3d_fx.obj" - -@erase "$(INTDIR)\D3d_main.obj" - -@erase "$(INTDIR)\D3dcache.obj" - -@erase "$(INTDIR)\D3ddrv.obj" - -@erase "$(INTDIR)\DDMemMgr.obj" - -@erase "$(INTDIR)\Gspan.obj" - -@erase "$(INTDIR)\Pcache.obj" - -@erase "$(INTDIR)\Render.obj" - -@erase "$(INTDIR)\Scene.obj" - -@erase "$(INTDIR)\THandle.obj" - -@erase "$(INTDIR)\tpage.obj" - -@erase "$(INTDIR)\vc60.idb" - -@erase "$(INTDIR)\vc60.pdb" - -@erase "$(OUTDIR)\D3DDrv.dll" - -@erase "$(OUTDIR)\D3DDrv.exp" - -@erase "$(OUTDIR)\D3DDrv.ilk" - -@erase "$(OUTDIR)\D3DDrv.lib" - -@erase "$(OUTDIR)\D3DDrv.pdb" - -"$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - -CPP_PROJ=/nologo /MTd /W3 /GX /Zi /Od /X /I "..\..\.." /I "..\..\..\Math" /I "..\\" /I "..\..\..\..\Sdk\Dx6Sdk\Include" /I "..\D3DDrv" /I "..\..\..\Support" /I "..\..\..\..\MsDev60\Include" /I "..\..\..\Bitmap" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "D3DDRV_EXPORTS" /Fp"$(INTDIR)\D3DDrv.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c -MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 -BSC32=bscmake.exe -BSC32_FLAGS=/nologo /o"$(OUTDIR)\D3DDrv.bsc" -BSC32_SBRS= \ - -LINK32=link.exe -LINK32_FLAGS=/nologo /dll /incremental:yes /pdb:"$(OUTDIR)\D3DDrv.pdb" /debug /machine:I386 /nodefaultlib /out:"$(OUTDIR)\D3DDrv.dll" /implib:"$(OUTDIR)\D3DDrv.lib" /pdbtype:sept -LINK32_OBJS= \ - "$(INTDIR)\D3d_err.obj" \ - "$(INTDIR)\D3d_fx.obj" \ - "$(INTDIR)\D3d_main.obj" \ - "$(INTDIR)\D3dcache.obj" \ - "$(INTDIR)\D3ddrv.obj" \ - "$(INTDIR)\DDMemMgr.obj" \ - "$(INTDIR)\Gspan.obj" \ - "$(INTDIR)\Pcache.obj" \ - "$(INTDIR)\Render.obj" \ - "$(INTDIR)\Scene.obj" \ - "$(INTDIR)\THandle.obj" \ - "$(INTDIR)\tpage.obj" \ - "..\..\..\..\MSDev60\lib\Wininet.lib" \ - "..\..\..\..\MSDev60\lib\Comdlg32.lib" \ - "..\..\..\..\MSDev60\lib\Gdi32.lib" \ - "..\..\..\..\MSDev60\lib\Kernel32.lib" \ - "..\..\..\..\MSDev60\lib\Libcmtd.lib" \ - "..\..\..\..\MSDev60\lib\Oldnames.lib" \ - "..\..\..\..\MSDev60\lib\Shell32.lib" \ - "..\..\..\..\MSDev60\lib\User32.lib" \ - "..\..\..\..\MSDev60\lib\Uuid.lib" \ - "..\..\..\..\MSDev60\lib\Advapi32.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\dxguid.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\ddraw.lib" \ - "..\..\..\..\Sdk\Dx6sdk\Lib\d3dim.lib" - -"$(OUTDIR)\D3DDrv.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) - $(LINK32) @<< - $(LINK32_FLAGS) $(LINK32_OBJS) -<< - -!ENDIF - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - - -!IF "$(NO_EXTERNAL_DEPS)" != "1" -!IF EXISTS("D3DDrv.dep") -!INCLUDE "D3DDrv.dep" -!ELSE -!MESSAGE Warning: cannot find "D3DDrv.dep" -!ENDIF -!ENDIF - - -!IF "$(CFG)" == "D3DDrv - Win32 Release" || "$(CFG)" == "D3DDrv - Win32 Debug" -SOURCE=.\D3d_err.cpp - -"$(INTDIR)\D3d_err.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3d_fx.cpp - -"$(INTDIR)\D3d_fx.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3d_main.cpp - -"$(INTDIR)\D3d_main.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3dcache.cpp - -"$(INTDIR)\D3dcache.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\D3ddrv.cpp - -"$(INTDIR)\D3ddrv.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\DDMemMgr.c - -"$(INTDIR)\DDMemMgr.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Gspan.cpp - -"$(INTDIR)\Gspan.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Pcache.cpp - -"$(INTDIR)\Pcache.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Render.cpp - -"$(INTDIR)\Render.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\Scene.cpp - -"$(INTDIR)\Scene.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\THandle.cpp - -"$(INTDIR)\THandle.obj" : $(SOURCE) "$(INTDIR)" - - -SOURCE=.\tpage.cpp - -"$(INTDIR)\tpage.obj" : $(SOURCE) "$(INTDIR)" - - - -!ENDIF - diff --git a/G3D/Engine/Drivers/WireFrame/D3DDrv.ncb b/G3D/Engine/Drivers/WireFrame/D3DDrv.ncb deleted file mode 100644 index 38431d254581ee0b63039b4f270efbbe23b7520b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377856 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�Vm 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 Q6k4Fr0)-a%AGN@L0SGP%#sB~S diff --git a/G3D/Engine/Drivers/WireFrame/D3DDrv.opt b/G3D/Engine/Drivers/WireFrame/D3DDrv.opt deleted file mode 100644 index c952d50c6f892e6a9a02701b88e6a8aea902f56e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48640 zcmeHQTXWmS6$UL!k!V|yEm=;SrbX4pPGXC?Fm__qbwd&qOBJkACpm-<|xM)RittebUGGhNOXx@)+_2KaEJJzju%F(Vg-r;`A6X z@DchdJ@D<>zzze`B;56_e@DlJcK(=Rbp9B)X6fh0U0JA_6cm*K4 z^SHkXyarqV=76sO7lE$>mjJSR9rqNF1~PyGWPy1g2V4foj&K$E1)u;d0!5$%yaAMf z3P5((a9;vyz;)mTa1(eFr~_{SWcUA)%94#gPm(cm3wKA_Ko57H#_`5PV>$4EX7VlL zy}zV?AEWU{rZq%&q}!4!wIo&2B!Qk(&<_<5k` z>idA6)OBZVR++1pg(*~5)N@Itp0yf=CF+V}tO>`h*9=F@J8BapNkwti61v->)@?`i z4BMKMgJOA7t{GNxRt{ZF_DJ!IQ>)2K@r$@*>}FH7ba?@x+@Lt)2zay_vL~7?+fkhj zdBre=Jdv5J*Yb->u~w;9vxQQ^UvcEgsZ za_8i!LRFrs(Px4aGr$Zm1Iz$3zzi@0%m6dM3@`)C05h=f80a67e)Im{za_1&8~bAH z5HLu$Xz9xn@>EmRR-rk}<&&?Sm#6HuH#ZR~7E`2j_yUJ%!q8~8Ok?@}S`<#m@x-QN zq9pZO!f_Jz^4nddE9*T9o2p^mU#y{5;{IZ&Gu?$sK{N}E?r=G`rFOe5^>SJkmM*$m zS2SUDN3ULnJY#m3dM&jPlzlc{-ik{~;&Qz5#zOT*DO(A$*D^&VOWE>La7~r+K_*jN ztW<-nl17UlTgX>3L9S9QUkkI<;?4p4FzjxJC<|-BV9l|YNTqF<3m9x1-rc~O@2c`b#P)i;1 z4V6?m7i5&|JTk7Qi*-%3JTz3Y*E6NSvyv|cR{0`&5o8zgX+Kl&uf=jI7r3NOQjP0D zOlvN;SKx}usyBSYa(*!vuk?}nH{i?uIz9k|>(EEvMd`7Q55iee`H)Cz?6&hO!b@aF za%^PxPxu?{(uN)Q`xR_RI*sh2xS=cm_CBs;N8ul2M-3>+YF$2s1Gr$Zm z1Iz$3zzi@0%m6dM3@`&vHUq5xvHrJ3tYrOfU+I5?kl+dnR~8ORu?r)Z{FiHac0JW< z-GMT#{VV+T#imbY=js)^?P$WS({w%CsuxB%I!=Ytt z)aki;Vl{>xc{@CkfEqe`YE5X#9WCO%myMR#$<2|Lu`bLN+i9xaPIg1U zb9eF+aNl{QN5_d7UGiHDpUPr;sp%Tilv;7?%p#l5Cu53&E@6$%pW|EOS>Ne%Ivh;B(9_CefR8pHmR zgJ{wZ^qRKV%UhKS!}z`G_gc2s{U`V8|3UVjCVt#Mf}0{d2lPv^*N12|vSXW*87ie! z+k+@Q5|yTLnE36e28*@7e_T;Lm6r3$1;bTMqhU3LTZ^)ZLPEA4^e+SR~^9U1)O z6N9`Z)>X}uu@<~-ZjSC<7@P<^drEou@B|I3tuC9O)jvhP zgY;7{8jX6Z7;ejUjn4l50`=p0%M%UZ$VyLMehHJ2$fSEvIIjKfc*#LSJUyZJdU_wh zWH=acck6R8yb{X7g1l&Z@;p7-XmDxNJWDls3;hMx-}c`nd0s`JO{;gL=G~Ekt+z4s z`&@hvm800gKofe~=~0gl$=%_In#*`oOcA~5n%n%~M8VJ;+qG9bIdkUB{mhar9d$KO zQ$1~UCd$l4nPilCg)AlM&;F|(f%qY{7sri}o - -