summaryrefslogtreecommitdiffstats
path: root/src/old
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2012-04-28 17:53:17 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2012-04-28 17:53:17 +0200
commit449cc186d5b8117d74ba22d6173497d00939f5f1 (patch)
tree39f38530dab2c9c8b33f5d8e42a81242bd48704b /src/old
parenteeb69b34d2467e51ff84b3235f94506ce6bb9283 (diff)
downloadcolobot-449cc186d5b8117d74ba22d6173497d00939f5f1.tar.gz
colobot-449cc186d5b8117d74ba22d6173497d00939f5f1.tar.bz2
colobot-449cc186d5b8117d74ba22d6173497d00939f5f1.zip
Source files split into modules
Diffstat (limited to 'src/old')
-rw-r--r--src/old/DirectX.icobin0 -> 1078 bytes
-rw-r--r--src/old/README.txt3
-rw-r--r--src/old/accents.txt5
-rw-r--r--src/old/bug.txt94
-rw-r--r--src/old/bug1.txt68
-rw-r--r--src/old/ceebot.ini66
-rw-r--r--src/old/colobot.ini75
-rw-r--r--src/old/cur00001.curbin0 -> 326 bytes
-rw-r--r--src/old/cur00002.curbin0 -> 326 bytes
-rw-r--r--src/old/cur00003.curbin0 -> 326 bytes
-rw-r--r--src/old/cursor1.curbin0 -> 326 bytes
-rw-r--r--src/old/cursorha.curbin0 -> 326 bytes
-rw-r--r--src/old/cursorsc.curbin0 -> 326 bytes
-rw-r--r--src/old/d3dres.h59
-rw-r--r--src/old/micent2.txt13
-rw-r--r--src/old/mixer.txt486
-rw-r--r--src/old/patch16.txt10
-rw-r--r--src/old/readme.txt872
-rw-r--r--src/old/resource.h55
-rw-r--r--src/old/t.txt11
-rw-r--r--src/old/tracks.txt17
-rw-r--r--src/old/traduc.txt151
-rw-r--r--src/old/version.txt108
-rw-r--r--src/old/winmain.apsbin0 -> 40696 bytes
-rw-r--r--src/old/winmain.rc265
25 files changed, 2358 insertions, 0 deletions
diff --git a/src/old/DirectX.ico b/src/old/DirectX.ico
new file mode 100644
index 0000000..9752f54
--- /dev/null
+++ b/src/old/DirectX.ico
Binary files differ
diff --git a/src/old/README.txt b/src/old/README.txt
new file mode 100644
index 0000000..ec0443c
--- /dev/null
+++ b/src/old/README.txt
@@ -0,0 +1,3 @@
+Contains files that are to be removed.
+
+The resources (cursors, etc.) cannot be included using windows rc files - they must be moved to .dat files.
diff --git a/src/old/accents.txt b/src/old/accents.txt
new file mode 100644
index 0000000..9473b1b
--- /dev/null
+++ b/src/old/accents.txt
@@ -0,0 +1,5 @@
+!"#$%&'()*+,-./0123456789:;<=>?
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^
+_abcdefghijklmnopqrstuvwxyz{|}~
+ÁÀÂÄÃÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜ
+áàâäãçéèêëíìîïñóòôöõúùûü
diff --git a/src/old/bug.txt b/src/old/bug.txt
new file mode 100644
index 0000000..b598ad0
--- /dev/null
+++ b/src/old/bug.txt
@@ -0,0 +1,94 @@
+void CD3DApplication::StepSimul(float rTime)
+{
+ Event event;
+
+ if ( m_pRobotMain == 0 ) return;
+
+ if ( rTime > 0.5f ) rTime = 0.5f; // jamais plus de 0.5s !
+
+ ZeroMemory(&event, sizeof(Event));
+ event.event = EVENT_FRAME;
+ event.rTime = rTime;
+ event.axeX = AxeLimit(m_axeKey.x + m_axeJoy.x);
+ event.axeY = AxeLimit(m_axeKey.y + m_axeJoy.y);
+ event.axeZ = AxeLimit(m_axeKey.z + m_axeJoy.z);
+ event.keyState = m_keyState;
+
+//?char s[100];
+//?sprintf(s, "StepSimul %.3f\n", event.rTime);
+//?OutputDebugString(s);
+ m_pRobotMain->EventProcess(event);
+}
+
+
+
+1347: void CD3DApplication::StepSimul(float rTime)
+1348: {
+0041E950 sub esp,24h
+0041E953 push esi
+0041E954 mov esi,ecx
+1349: Event event;
+1350:
+1351: if ( m_pRobotMain == 0 ) return;
+0041E956 mov eax,dword ptr [esi+0ECh]
+0041E95C test eax,eax
+0041E95E je CD3DApplication::StepSimul(0x0041ea08)+0B8h
+1352:
+1353: if ( rTime > 0.5f ) rTime = 0.5f; // jamais plus de 0.5s !
+0041E964 fld dword ptr [esp+2Ch]
+0041E968 fcomp dword ptr [??_7CControl@@6B@(0x004b9ed4)+94h]
+0041E96E push edi
+0041E96F fnstsw ax
+0041E971 test ah,41h
+0041E974 jne CD3DApplication::StepSimul(0x0041e97e)+2Eh
+0041E976 mov dword ptr [esp+30h],3F000000h
+1354:
+1355: ZeroMemory(&event, sizeof(Event));
+1356: event.event = EVENT_FRAME;
+1357: event.rTime = rTime;
+1358: event.axeX = AxeLimit(m_axeKey.x + m_axeJoy.x);
+0041E97E fld dword ptr [esi+0F8h]
+0041E984 fadd dword ptr [esi+104h]
+0041E98A mov eax,dword ptr [esp+30h]
+0041E98E mov ecx,9
+0041E993 mov dword ptr [esp+28h],eax
+0041E997 push ecx
+0041E998 xor eax,eax
+0041E99A lea edi,dword ptr [esp+0Ch]
+0041E99E fstp dword ptr [esp]
+0041E9A1 rep stos dword ptr es:[edi]
+0041E9A3 mov dword ptr [esp+0Ch],2
+0041E9AB call AxeLimit(0x0041cae0)
+1359: event.axeY = AxeLimit(m_axeKey.y + m_axeJoy.y);
+0041E9B0 fld dword ptr [esi+0FCh]
+0041E9B6 fadd dword ptr [esi+108h]
+0041E9BC fxch st(1)
+0041E9BE fstp dword ptr [esp+1Ch]
+0041E9C2 fstp dword ptr [esp]
+0041E9C5 call AxeLimit(0x0041cae0)
+1360: event.axeZ = AxeLimit(m_axeKey.z + m_axeJoy.z);
+0041E9CA fld dword ptr [esi+100h]
+0041E9D0 fadd dword ptr [esi+10Ch]
+0041E9D6 fxch st(1)
+0041E9D8 fstp dword ptr [esp+20h]
+0041E9DC fstp dword ptr [esp]
+0041E9DF call AxeLimit(0x0041cae0)
+1361: event.keyState = m_keyState;
+1362:
+1363: //?char s[100];
+1364: //?sprintf(s, "StepSimul %.3f\n", event.rTime);
+1365: //?OutputDebugString(s);
+1366: m_pRobotMain->EventProcess(event);
+0041E9E4 mov dx,word ptr [esi+0F4h]
+0041E9EB mov ecx,dword ptr [esi+0ECh]
+0041E9F1 fstp dword ptr [esp+24h]
+0041E9F5 add esp,4
+0041E9F8 lea eax,dword ptr [esp+8]
+0041E9FC mov word ptr [esp+24h],dx
+0041EA01 push eax
+0041EA02 call CRobotMain::EventProcess(0x0047fba0)
+0041EA07 pop edi
+1367: }
+0041EA08 pop esi
+0041EA09 add esp,24h
+0041EA0C ret 4
diff --git a/src/old/bug1.txt b/src/old/bug1.txt
new file mode 100644
index 0000000..59b0ca4
--- /dev/null
+++ b/src/old/bug1.txt
@@ -0,0 +1,68 @@
+extern void object::Solution( )
+{
+ while ( true )
+ {
+ object left, right;
+
+ left = Radar(TypeMarkPath, -45, 120, 100);
+ right = Radar(TypeMarkPath, 45, 120, 100);
+
+ if ( left == null && right == null )
+ {
+ }
+ }
+}
+
+CBotString::CBotString(const CBotString &)
+CBotVar::GivName()
+CBotStack::FindVar(CBotToken * &, int, int)
+CBotStack::FindVar(CBotToken &, int, int)
+CBotStack::CopyVar(CBotToken &, int)
+CBotExpression::Execute(CBotStack * &)
+CBotListInstr::Execute(CBotStack * &)
+CBotWhile::Execute(CBotStack * &)
+CBotListInstr::Execute(CBotStack * &)
+CBotFunction::Execute(CBotVar * *, CBotStack * &)
+CBotProgram::Run(void *)
+CScript::Continue(const Event &)
+
+
+
+CBotString::CBotString(const CBotString &) :
+ m_token = 0xdddddddd
+
+CBotVar::GivName() :
+ return m_token->GivString();
+
+CBotStack::FindVar(CBotToken * &, int, int) :
+ CBotStack* p = this;
+ CBotString name = pToken->GivString();
+
+ while (p != NULL)
+ {
+ CBotVar* pp = p->m_listVar;
+ while ( pp != NULL)
+ {
+ if (pp->GivName() == name) <- paf
+
+ avec :
+ pp->__vfprt = 0xdddddddd
+ pp->m_token = 0xdddddddd
+ pp->m_next = 0xdddddddd
+ pp->m_type = -572662307
+ pp->m_binit = -572662307
+ pp->m_pMyThis = 0xdddddddd
+ pp->m_pUserPtr = 0xdddddddd
+ pp->m_InitExpr = 0xdddddddd
+
+CBotStack::FindVar(CBotToken &, int, int) :
+ CBotToken* pt = &Token;
+ pt->m_next = 0
+ pt->m_prev = 0
+ pt->m_type = 4
+ pt->m_IdKeyWord = -1
+ pt->m_Text = "right"
+ pt->m_Sep = " "
+ pt->m_start = 124
+ pt->m_end = 129
+
diff --git a/src/old/ceebot.ini b/src/old/ceebot.ini
new file mode 100644
index 0000000..0de7a32
--- /dev/null
+++ b/src/old/ceebot.ini
@@ -0,0 +1,66 @@
+[Directory]
+scene=scene
+savegame=savegame
+public=program
+user=user
+files=files
+[Setup]
+TotoMode=1
+Tooltips=1
+InterfaceGlint=1
+NiceMouse=0
+Movies=1
+NiceReset=1
+HimselfDamage=1
+CameraScroll=0
+CameraInvertX=0
+InterfaceEffect=1
+GroundShadow=1
+GroundSpot=1
+ObjectDirty=1
+FogMode=1
+LensMode=1
+SkyMode=1
+PlanetMode=1
+LightMode=1
+UseJoystick=0
+ParticuleDensity=1.00
+ClippingDistance=1.00
+ObjectDetail=2.00
+GadgetQuantity=1.00
+TextureQuality=1
+AudioVolume=4
+MidiVolume=15
+Sound3D=0
+EditIndentMode=1
+EditIndentValue=4
+KeyMap=37+0 39+0 38+0 40+0 16+0 17+0 32+258 96+262 13+257 107+261 109+260 9+259 36+263 27+0 112+0 113+0 110+0 115+0 116+0 117+0
+DeleteGamer=1
+Soluce4=1
+[Engine]
+AlphaMode=1
+StateColor=-1
+BlackSrcBlend=0
+BlackDestBlend=0
+WhiteSrcBlend=0
+WhiteDestBlend=0
+DiffuseSrcBlend=0
+DiffuseDestBlend=0
+AlphaSrcBlend=0
+AlphaDestBlend=0
+[Gamer]
+LastName=Linda
+[Edit]
+FontSize=9.00
+WindowPos.x=0.09
+WindowPos.y=0.08
+WindowDim.x=0.69
+WindowDim.y=0.84
+IOPos.x=0.36
+IOPos.y=0.15
+IODim.x=0.50
+IODim.y=0.55
+[Device]
+Name=Direct3D HAL
+Mode=1600 x 1200 x 32
+FullScreen=0
diff --git a/src/old/colobot.ini b/src/old/colobot.ini
new file mode 100644
index 0000000..de547ec
--- /dev/null
+++ b/src/old/colobot.ini
@@ -0,0 +1,75 @@
+[Gamer]
+LastName=Joueur
+
+[Setup]
+TotoMode=1
+Tooltips=1
+InterfaceGlint=1
+NiceMouse=0
+Movies=1
+NiceReset=1
+HimselfDamage=1
+CameraScroll=1
+CameraInvertX=0
+InterfaceEffect=1
+GroundShadow=1
+GroundSpot=1
+ObjectDirty=1
+FogMode=1
+LensMode=1
+SkyMode=1
+PlanetMode=1
+LightMode=1
+UseJoystick=0
+ParticuleDensity=1.00
+ClippingDistance=1.00
+ObjectDetail=2.00
+GadgetQuantity=1.00
+TextureQuality=1
+AudioVolume=15
+MidiVolume=20
+Sound3D=0
+EditIndentMode=1
+EditIndentValue=4
+KeyMap=37+0 39+0 38+0 40+0 16+0 17+0 32+258 96+262 13+257 107+261 109+260 9+259 36+263 27+0 112+0 113+0 110+0 115+0 116+0 117+0
+FullScreenActivateEnable=0
+AccessMission=1
+AccessUser=1
+DeleteGamer=1
+Soluce4=1
+
+[Engine]
+StateColor=-1
+BlackSrcBlend=0
+BlackDestBlend=0
+WhiteSrcBlend=0
+WhiteDestBlend=0
+DiffuseSrcBlend=0
+DiffuseDestBlend=0
+AlphaSrcBlend=0
+AlphaDestBlend=0
+AlphaMode=1
+
+[Device]
+Name=Direct3D HAL
+Mode=1600 x 1200 x 32
+FullScreen=0
+
+[Edit]
+WindowPos.x=0.19
+WindowPos.y=0.15
+WindowDim.x=0.66
+WindowDim.y=0.69
+FontSize=9.00
+IOPos.x=0.29
+IOPos.y=0.34
+IODim.x=0.50
+IODim.y=0.55
+IOPublic=0
+
+[Directory]
+scene=scene
+savegame=savegame
+public=program
+user=user
+files=files
diff --git a/src/old/cur00001.cur b/src/old/cur00001.cur
new file mode 100644
index 0000000..e19873e
--- /dev/null
+++ b/src/old/cur00001.cur
Binary files differ
diff --git a/src/old/cur00002.cur b/src/old/cur00002.cur
new file mode 100644
index 0000000..2376e8e
--- /dev/null
+++ b/src/old/cur00002.cur
Binary files differ
diff --git a/src/old/cur00003.cur b/src/old/cur00003.cur
new file mode 100644
index 0000000..8a4745a
--- /dev/null
+++ b/src/old/cur00003.cur
Binary files differ
diff --git a/src/old/cursor1.cur b/src/old/cursor1.cur
new file mode 100644
index 0000000..1f51251
--- /dev/null
+++ b/src/old/cursor1.cur
Binary files differ
diff --git a/src/old/cursorha.cur b/src/old/cursorha.cur
new file mode 100644
index 0000000..7b80435
--- /dev/null
+++ b/src/old/cursorha.cur
Binary files differ
diff --git a/src/old/cursorsc.cur b/src/old/cursorsc.cur
new file mode 100644
index 0000000..52004ac
--- /dev/null
+++ b/src/old/cursorsc.cur
Binary files differ
diff --git a/src/old/d3dres.h b/src/old/d3dres.h
new file mode 100644
index 0000000..d3f8ba8
--- /dev/null
+++ b/src/old/d3dres.h
@@ -0,0 +1,59 @@
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
+// *
+// * This program is free software: you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+//-----------------------------------------------------------------------------
+// File: D3DRes.h
+//
+// Desc: Resource definitions required by the CD3DApplication class.
+// Any application using the CD3DApplication class must include resources
+// with the following identifiers.
+//
+// Copyright (c) 1999 Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#ifndef D3DRES_H
+#define D3DRES_H
+
+
+#define IDI_MAIN_ICON 101 // Application icon
+#define IDR_MAIN_ACCEL 113 // Keyboard accelerator
+#define IDR_MENU 141 // Application menu
+#define IDR_POPUP 142 // Popup menu
+#define IDD_ABOUT 143 // About dialog box
+#define IDD_CHANGEDEVICE 144 // "Change Device" dialog box
+#define IDC_CURSORHAND 149
+#define IDC_CURSORSCROLLL 150
+#define IDC_CURSORSCROLLR 151
+#define IDC_CURSORSCROLLU 152
+#define IDC_CURSORSCROLLD 153
+#define IDC_CURSORTARGET 154
+
+#define IDC_DEVICE_COMBO 1000 // Device combobox for "Change Device" dlg
+#define IDC_MODE_COMBO 1001 // Mode combobox for "Change Device" dlg
+#define IDC_WINDOWED_CHECKBOX 1012 // Checkbox for windowed-mode
+#define IDC_STEREO_CHECKBOX 1013 // Checkbox for stereo modes
+#define IDC_FULLSCREEN_TEXT 1014 // Group box text label
+
+#define IDM_ABOUT 40001 // Command to invoke About dlg
+#define IDM_CHANGEDEVICE 40002 // Command to invoke "Change Device" dlg
+#define IDM_TOGGLEFULLSCREEN 40003 // Command to toggle fullscreen mode
+#define IDM_TOGGLESTART 40004 // Command to toggle frame animation
+#define IDM_SINGLESTEP 40005 // Command to single step frame animation
+#define IDM_EXIT 40006 // Command to exit the application
+
+
+
+
+#endif // D3DRES_H
diff --git a/src/old/micent2.txt b/src/old/micent2.txt
new file mode 100644
index 0000000..c77d91b
--- /dev/null
+++ b/src/old/micent2.txt
@@ -0,0 +1,13 @@
+\b;Rapport du satellite
+\c;
+\s;-> SURFACE\c;
+\tab;Température: 25.4 degrés
+\tab;Atmosphère: oxygène, azote, ammoniaque
+\tab;Vent: 0.7 m/s
+\tab;Minerai titanium: aucun
+\tab;Minerai uranium: aucun
+
+\s;-> SOUS-SOL\c;
+\tab;Energie: aucune
+\tab;Minerai titanium: aucun
+\tab;Minerai uranium: aucun
diff --git a/src/old/mixer.txt b/src/old/mixer.txt
new file mode 100644
index 0000000..2009c2a
--- /dev/null
+++ b/src/old/mixer.txt
@@ -0,0 +1,486 @@
+Several people have asked me for the sample code I use to program
+the mixer in Windows. Since it's a fairly short sample and there's
+clearly some interest, I thought I'd post it directly to the newsgroup.
+Here it is ... enjoy! (?)
+
+Julian
+
+// Example routine that manipulates the mixer controls for Win32
+// This code is not a stand-alone application ...
+//
+// It's also not very pretty ...
+//
+// But then, neither is the API ...
+//
+// Julian Bunn, 1998, julianb@altavista.net
+
+
+#include <windows.h>
+#include <mmsystem.h>
+
+
+MIXERCONTROLDETAILS mixDetailsMic,mixDetailsSpk,mixDetailsLin;
+LONG
+lMaximumSpk,lMaximumMic,lMaximumLin,lMinimumMic,lMinimumSpk,lMinimumLin;
+
+int nMixerDevs;
+int nMicMixID;
+
+LPHMIXER hMixer;
+UINT IdMixer;
+
+
+/****************************************************************************
+
+ Function: ProgramInitMixer()
+
+ PURPOSE : Initialises the mixer
+*****************************************************************************/
+
+LONG WINAPI ProgramInitMixer()
+{
+ UINT iS,iD,iDC,iC, itype;
+ UINT volume;
+ MMRESULT mmres;
+ MIXERCAPS mixCaps;
+ MIXERLINE mixLine;
+ MIXERLINECONTROLS mixControls;
+ MIXERCONTROL mixClist[50];
+ MIXERCONTROLDETAILS mixDetails;
+ MIXERCONTROLDETAILS_UNSIGNED mixValue;
+ MIXERCONTROLDETAILS_BOOLEAN mixMute;
+ MIXERCONTROLDETAILS_BOOLEAN mixBoolean[50];
+ MIXERCONTROLDETAILS_LISTTEXT mixList[50];
+ BOOL bDoneMike = FALSE;
+ BOOL bDoneSpkr = FALSE;
+ UINT LineID = 0;
+
+ if(!bMixerOpened) {
+// check first if we have a mixer
+ if((nMixerDevs = mixerGetNumDevs()) < 1) {
+ return (Program_ERROR);
+ }
+
+// really need to pop up a chooser for which mixer device, in
+// cases where there is more than one.
+// In the meantime, I select the last one listed
+
+ IdMixer = nMixerDevs-1;
+
+ mmres = mixerOpen((LPHMIXER) &hMixer, IdMixer, (DWORD) 0, (DWORD)
+NULL,
+ MIXER_OBJECTF_MIXER);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+
+ bMixerOpened = TRUE;
+ }
+
+ mmres = mixerGetDevCaps(IdMixer, (LPMIXERCAPS) &mixCaps,
+sizeof(MIXERCAPS));
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+// Set the manufacturer's name for the mixer ...
+ SetDlgItemText(hWndDialogBox,IDC_MIXERNAME,mixCaps.szPname);
+ if(nMixerDevs>1) {
+ DialogBox(g_hInstance,MAKEINTRESOURCE(IDD_INFOMESSAGE1),
+hWndDialogBox, DialogBoxCallback);
+ }
+
+
+// Loop over the destination mixer lines
+ for (iD=0;iD<mixCaps.cDestinations;iD++) {
+ mixLine.cbStruct = sizeof(MIXERLINE);
+ mixLine.dwDestination = (DWORD) iD;
+ mixLine.dwSource = (DWORD) 0;
+// Get information on this line
+ mmres = mixerGetLineInfo(hMixer, (LPMIXERLINE) &mixLine,
+ MIXER_GETLINEINFOF_DESTINATION);
+
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+
+// I select types I'm interested in: the speaker output, the input
+(voice and wave)
+ itype = 0;
+ if(mixLine.dwComponentType == MIXERLINE_COMPONENTTYPE_DST_SPEAKERS)
+itype = 1; // Output for speakers ... only allow WAVEOUT
+ if(mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_DST_VOICEIN) itype = 2; // Input for ADC ...
+only allow Microphone (or AUX)
+ if(mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_DST_WAVEIN) itype = 2; // Input for ADC ...
+only allow Microphone (or AUX)
+ if(itype == 2 && !bMicrophone) {
+ itype = 3;
+ }
+
+
+ mixControls.cbStruct = sizeof(MIXERLINECONTROLS);
+ mixControls.dwLineID = mixLine.dwLineID;
+ mixControls.cControls = mixLine.cControls;
+ mixControls.cbmxctrl = sizeof(mixClist[0]);
+ mixControls.pamxctrl = (LPMIXERCONTROL) &mixClist[0];
+// Get the controls for the current destination mixer line
+ mmres = mixerGetLineControls(hMixer,
+ (LPMIXERLINECONTROLS) &mixControls,
+ MIXER_GETLINECONTROLSF_ALL);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ for (iDC=0;iDC<mixLine.cControls;iDC++) {
+// For this control, I make various checks on its type
+ if(mixClist[iDC].dwControlType == MIXERCONTROL_CONTROLTYPE_MUX ||
+ mixClist[iDC].dwControlType ==
+MIXERCONTROL_CONTROLTYPE_MIXER) {
+
+// This is a control that defines a set of connections ... get all the
+types, and the values
+// for the connection
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iDC].dwControlID;
+ mixDetails.cChannels = 1;//mixLine.cChannels;
+ mixDetails.hwndOwner = (HWND) mixClist[iDC].cMultipleItems;
+ mixDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_LISTTEXT);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_LISTTEXT)
+&mixList[0];
+ mmres = mixerGetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_LISTTEXT);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iDC].dwControlID;
+ mixDetails.cChannels = 1;//mixLine.cChannels;
+ mixDetails.hwndOwner = (HWND) mixClist[iDC].cMultipleItems;
+ mixDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_BOOLEAN)
+&mixBoolean[0];
+ mmres = mixerGetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+// In this application, I want to set only the microphone or line as
+input sources ...
+
+for(iS=0;iS<mixClist[iDC].cMultipleItems;iS++) {
+ mixBoolean[iS].fValue = FALSE;
+ if(itype == 2 && mixList[iS].dwParam2
+== MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE) {
+ mixBoolean[iS].fValue = TRUE;
+ bDoneMike = TRUE;
+ }
+ if(itype == 3 && (mixList[iS].dwParam2
+== MIXERLINE_COMPONENTTYPE_SRC_LINE ||
+ mixList[iS].dwParam2 ==
+MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY)) {
+ if(strncmp(mixList[iS].szName,"Line",4) == 0) {
+ mixBoolean[iS].fValue = TRUE;
+ bDoneMike = TRUE;
+ }
+ }
+ if(itype == 1 && mixList[iS].dwParam2 ==
+MIXERLINE_COMPONENTTYPE_DST_SPEAKERS) {
+ mixBoolean[iS].fValue = TRUE;
+ bDoneSpkr = TRUE;
+ }
+ }
+// I've prepared the settings accordingly ... now I set them in the
+mixer
+ mmres = mixerSetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_SETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ }
+ if(mixClist[iDC].dwControlType == MIXERCONTROL_CONTROLTYPE_VOLUME ||
+
+ mixClist[iDC].dwControlType == MIXERCONTROL_CONTROLTYPE_TREBLE ||
+
+ mixClist[iDC].dwControlType == MIXERCONTROL_CONTROLTYPE_BASS) {
+// This is a control of a volume
+ volume = 0;
+
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iDC].dwControlID;
+ mixDetails.cChannels = (DWORD) 1;
+ mixDetails.hwndOwner = NULL;
+ mixDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_UNSIGNED)
+&mixValue;
+ mmres = mixerGetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_VALUE);
+
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+// I want to set all volumes to maximum, treble and bass boost to
+minimum
+ if(mixClist[iDC].dwControlType ==
+MIXERCONTROL_CONTROLTYPE_VOLUME) {
+ if(mixValue.dwValue != 0) mixValue.dwValue =
+mixClist[iDC].Bounds.lMaximum;
+ } else {
+ mixValue.dwValue = mixClist[iDC].Bounds.lMinimum;
+ }
+ mmres = mixerSetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_SETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ }
+ if(mixClist[iDC].dwControlType == MIXERCONTROL_CONTROLTYPE_MUTE) {
+// A mute control _in principle_ I've already set all these up ...
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iDC].dwControlID;
+ mixDetails.cChannels = (DWORD) 1;
+ mixDetails.hwndOwner = NULL;
+ mixDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_BOOLEAN) &mixMute;
+ mmres = mixerGetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_VALUE);
+ mixMute.fValue = mixClist[iDC].Bounds.lMinimum;
+ mmres = mixerSetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_SETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ }
+ if(mixClist[iDC].dwControlType == MIXERCONTROL_CONTROLTYPE_ONOFF) {
+// An "on-off" control ... sort of like a mute, but different (used e.g
+for AGC)
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iDC].dwControlID;
+ mixDetails.cChannels = (DWORD) 1;
+ mixDetails.hwndOwner = NULL;
+ mixDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_BOOLEAN) &mixMute;
+ mmres = mixerGetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ mixMute.fValue = mixClist[iDC].Bounds.lMinimum;
+ mmres = mixerSetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_SETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ }
+
+ }
+
+
+ iDC = mixLine.cConnections;
+// Now I start looking over all the source lines coming into this mixer
+line ..
+ for (iS=0;iS<iDC;iS++) {
+ mixLine.cbStruct = sizeof(MIXERLINE);
+ mixLine.dwDestination = (DWORD) iD;
+ mixLine.dwSource = (DWORD) iS;
+
+ mmres = mixerGetLineInfo(hMixer, (LPMIXERLINE) &mixLine,
+ MIXER_GETLINEINFOF_SOURCE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+
+ mixControls.cbStruct = sizeof(MIXERLINECONTROLS);
+ mixControls.dwLineID = mixLine.dwLineID;
+ mixControls.cControls = mixLine.cControls;
+ mixControls.cbmxctrl = sizeof(mixClist[0]);
+ mixControls.pamxctrl = (LPMIXERCONTROL) &mixClist[0];
+ mmres = mixerGetLineControls(hMixer,
+ (LPMIXERLINECONTROLS) &mixControls,
+ MIXER_GETLINECONTROLSF_ALL);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+// for this source line ... loop over all the control. Very like what
+was done above for the
+// destination line ...
+ for(iC=0;iC<mixLine.cControls;iC++) {
+ if(mixClist[iC].dwControlType ==
+MIXERCONTROL_CONTROLTYPE_VOLUME) {
+
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iC].dwControlID;
+ mixDetails.cChannels = (DWORD) 1;
+ mixDetails.hwndOwner = NULL;
+ mixDetails.cbDetails =
+sizeof(MIXERCONTROLDETAILS_UNSIGNED);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_UNSIGNED)
+&mixValue;
+// I want to make a copy of the waveout, microphone, aux and line lines
+for later use .... hence memcpy
+ if(itype == 1 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT) {
+
+memcpy(&mixDetailsSpk,&mixDetails,sizeof(MIXERCONTROLDETAILS));
+ lMaximumSpk = mixClist[iC].Bounds.lMaximum;
+ lMinimumSpk = mixClist[iC].Bounds.lMinimum;
+ }
+ if(itype == 2 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE) {
+
+memcpy(&mixDetailsMic,&mixDetails,sizeof(MIXERCONTROLDETAILS));
+ lMaximumMic = mixClist[iC].Bounds.lMaximum;
+ lMinimumMic = mixClist[iC].Bounds.lMinimum;
+ }
+ if(itype == 3 &&
+(mixLine.dwComponentType == MIXERLINE_COMPONENTTYPE_SRC_LINE ||
+ mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY)) {
+// I'm not sure why I had to check the string like this ...
+ if(strncmp(mixLine.szName,"Line",4) == 0) {
+
+memcpy(&mixDetailsLin,&mixDetails,sizeof(MIXERCONTROLDETAILS));
+ lMaximumLin = mixClist[iC].Bounds.lMaximum;
+ lMinimumLin = mixClist[iC].Bounds.lMinimum;
+ }
+ }
+
+
+ mmres = mixerGetControlDetails(hMixer,
+
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+// Now I'm going to set the input levels the way I want them ..
+ mixValue.dwValue = mixClist[iC].Bounds.lMinimum;
+ if(itype == 1 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT) {
+ mixValue.dwValue = mixClist[iC].Bounds.lMaximum;
+ }
+ if(itype == 2 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE) {
+ mixValue.dwValue = mixClist[iC].Bounds.lMaximum;
+ }
+ if(itype == 3 &&
+(mixLine.dwComponentType == MIXERLINE_COMPONENTTYPE_SRC_LINE ||
+ mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY)) {
+ if(strncmp(mixLine.szName,"Line",4) == 0) {
+ mixValue.dwValue = mixClist[iC].Bounds.lMaximum;
+ }
+ }
+
+ mmres = mixerSetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_SETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ }
+ if(mixClist[iC].dwControlType ==
+MIXERCONTROL_CONTROLTYPE_MUTE) {
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iC].dwControlID;
+ mixDetails.cChannels = (DWORD) 1;
+ mixDetails.hwndOwner = NULL;
+ mixDetails.cbDetails =
+sizeof(MIXERCONTROLDETAILS_BOOLEAN);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_BOOLEAN)
+&mixMute;
+ mmres = mixerGetControlDetails(hMixer,
+
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+// I run the risk of inverting my boolean selections, so jump out if
+already done ...
+ if(itype != 0 && (bDoneSpkr || bDoneMike)) break;
+
+ mixMute.fValue = mixClist[iC].Bounds.lMaximum;
+ if(itype == 1 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT) {
+ mixMute.fValue = mixClist[iC].Bounds.lMinimum;
+ }
+ if(itype == 2 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE) {
+ mixMute.fValue = mixClist[iC].Bounds.lMinimum;
+ }
+ if(itype == 3 &&
+(mixLine.dwComponentType == MIXERLINE_COMPONENTTYPE_SRC_LINE ||
+ mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY)) {
+ if(strncmp(mixLine.szName,"Line",4) == 0) {
+ mixMute.fValue = mixClist[iC].Bounds.lMinimum;
+ }
+ }
+
+ mmres = mixerSetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_SETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ }
+ if(mixClist[iC].dwControlType == MIXERCONTROL_CONTROLTYPE_ONOFF)
+{
+ mixDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
+ mixDetails.dwControlID = mixClist[iC].dwControlID;
+ mixDetails.cChannels = (DWORD) 1;
+ mixDetails.hwndOwner = NULL;
+ mixDetails.cbDetails =
+sizeof(MIXERCONTROLDETAILS_BOOLEAN);
+ mixDetails.paDetails = (LPMIXERCONTROLDETAILS_BOOLEAN)
+&mixMute;
+ mmres = mixerGetControlDetails(hMixer,
+
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_GETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+
+ mixMute.fValue = mixClist[iC].Bounds.lMinimum;
+ if(itype == 1 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT) {
+ mixMute.fValue = mixClist[iC].Bounds.lMaximum;
+ }
+ if(itype == 2 && mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE) {
+ mixMute.fValue = mixClist[iC].Bounds.lMaximum;
+ }
+ if(itype == 3 &&
+(mixLine.dwComponentType == MIXERLINE_COMPONENTTYPE_SRC_LINE ||
+ mixLine.dwComponentType ==
+MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY)) {
+ if(strncmp(mixLine.szName,"Line",4) == 0) {
+ mixMute.fValue = mixClist[iC].Bounds.lMaximum;
+ }
+ }
+
+ mmres = mixerSetControlDetails(hMixer,
+ (LPMIXERCONTROLDETAILS) &mixDetails,
+ MIXER_SETCONTROLDETAILSF_VALUE);
+ if(mmres != MMSYSERR_NOERROR) {
+ return (Program_ERROR);
+ }
+ }
+ }
+ }
+ }
+ return Program_NOERROR;
+}
+
+
diff --git a/src/old/patch16.txt b/src/old/patch16.txt
new file mode 100644
index 0000000..cfd3982
--- /dev/null
+++ b/src/old/patch16.txt
@@ -0,0 +1,10 @@
+Liste des fichiers pour le patch 1.6
+
+help\cbot.txt (/f)
+help\cbot\object.txt
+help\cbot\grab.txt
+help\cbot\drop.txt
+help\cbot\category.txt
+help\cbot\extern.txt (/f)
+help\object\goal.txt
+help\object\atomic.txt
diff --git a/src/old/readme.txt b/src/old/readme.txt
new file mode 100644
index 0000000..55bdeeb
--- /dev/null
+++ b/src/old/readme.txt
@@ -0,0 +1,872 @@
+COLOBOT version 1.4 /f
+----------------------
+
+COLOBOT est un mélange d'un jeu de stratégie en temps réel et
+d'une initiation à la programmation. Le scénario vous place à
+la tête d'une expédition spatiale, composée d'un seul humain
+(vous) et de quelques robots. Vous devrez explorer et coloniser
+différentes planètes, tout en cherchant des matières premières
+nécessaires à votre survie.
+
+Petit à petit, vous pourrez construire et programmer de nouveaux
+robots, qui vous aideront dans vos tâches. Certaines planètes
+sont habitées par des créatures primitives et hostiles qu'il
+vous faudra combattre.
+
+
+Configuration minimale
+----------------------
+
+Processeur 300 MHz
+64 Mb RAM
+Carte graphique 3D avec 16 Mb RAM
+100 Mb d'espace libre sur le disque dur
+
+Si ce n'est pas déjà fait, DirectX 8a est installé.
+La présence du CD est nécessaire pour jouer.
+
+
+Missions
+--------
+
+Les missions contiennent la partie "aventure" de COLOBOT. Elles
+sont au nombre de 36, réparties sur 9 planètes différentes.
+Elles doivent être faites dans l'ordre imposé.
+
+Jeu libre
+---------
+
+Le mode "jeu libre" vous permet d'agir librement sur une
+planète, sans but déterminé. Seuls les planètes déjà visitées et
+les recherches effectuées sont disponibles.
+
+Programmation
+-------------
+
+Cette partie de COLOBOT permet d'apprendre à programmer, même si
+vous n'avez aucune notion dans ce domaine. Différents chapitres
+présentent des sujets de plus en plus compliqués. Vous pouvez
+effectuer n'importe quel exercice, bien qu'il soit conseillé de
+commencer par les plus simples.
+
+Défis
+-----
+
+Les défis vous demandent une bonne connaissance de la
+programmation. Ils permettent de vérifier si les notions
+apprises sous "programmation" sont effectivement comprises.
+
+
+Autre joueur
+------------
+
+Après avoir installé COLOBOT sur un ordinateur, plusieurs
+personnes peuvent y jouer. Pour chaque joueur, COLOBOT
+enregistre automatiquement la progression dans les missions,
+les programmes écrits, etc.
+
+
+Options
+-------
+
+Réglages du jeu, répartis dans 5 pages.
+
+
+Options - Affichage
+-------------------
+
+- Pilotes
+Il faut choisir un pilote qui porte la mention HAL (Hardware
+Abstraction Layer). Evitez les pilotes ayant la mention
+"Emulation" ou "T&L". Il arrive fréquemment que des pilotes
+avec des noms différents aient des comportements identiques.
+
+- Résolutions
+Les premier et deuxième chiffres indiquent le nombre de pixels
+en largeur et en hauteur dans l'écran. Le troisième chiffre
+indique le nombre de couleurs affichables (16 pour 65'000
+couleurs et 32 pour 4 millions de couleurs).
+Plus la résolution est grande et plus le jeu est beau.
+Mais il risque de devenir lent. Commencez par mettre
+640 x 480 x 16. La plupart des cartes graphiques modernes
+supportent 1024 x 768 x 16. A vous d'essayer le meilleur
+compromis.
+
+- Plein écran
+Normalement, COLOBOT occupe tout l'écran, quelle que soit la
+résolution. Si vous enlevez la coche, COLOBOT tournera dans
+une fenêtre fixe ayant approximativement 640 x 480 pixels.
+
+- Appliquer les changements
+Il faut cliquer ce bouton pour que les changements effectués
+dans cette page prennent effet.
+
+
+Options - Graphique
+-------------------
+
+- Ombres
+Normalement, tous les objets (robots, bâtiments, titanium,
+etc.) projettent une ombre sur le sol. Avec certaines cartes
+graphiques anciennes, un carré gris peut apparaître, en plus
+de l'ombre. Si cela vous semble inesthétique, supprimez cette
+option.
+
+- Marques sur le sol
+Les marques accentuent les berges. Elles donnent aussi des
+teintes différentes à certains endroits du terrain. Si cette
+option est déclenchée, il n'est pas possible de montrer les
+zones plates avec le cosmonaute.
+
+- Salissures
+Les salissures donnent un effet vieux et sale aux robots et aux
+bâtiments.
+
+- Ciel
+Avec cette option, le ciel de certaines planètes contient des
+nuages poussés par le vent. Sans cela, le ciel est généralement
+rempli par un simple dégradé de couleurs.
+
+- Rayons du soleil
+Lorsque vous vous tournez en direction du soleil, un reflet
+apparaît.
+
+- Planètes et étoiles
+Sur certaines planètes, vous voyez dans le ciel des planètes
+proches qui bougent lentement.
+
+- Brouillard
+Cette option correspond aux nappes de brouillard horizontales
+qui sont généralement très proches du sol.
+
+- Lumières dynamiques
+Les lumières dynamiques apparaissent lors d'explosions, ou
+lorsqu'un robot refait le plein d'énergie.
+
+- Quantité de particules (0% à 200%)
+Les particules servent à simuler la poussière, la fumée, les
+éclats, les bulles sous l'eau, etc.
+
+- Profondeur de champ (50% à 200%)
+La profondeur de champ détermine jusqu'où porte votre regard.
+Cette profondeur est de toute façon très différente selon
+l'atmosphère de la planète. Une grande valeur (par exemple
+200%) permet de voir loin, mais nécessite une bonne carte
+graphique 3D.
+
+- Détails des objets (0% à 200%)
+Lorsqu'un objet est au loin, il est représenté avec moins de
+détails. Une grande valeur éloigne la distance à laquelle le
+changement est effectué.
+
+- Nombre d'objets décoratifs (0% à 100%)
+Ce nombre détermine la quantité d'objets décoratifs présents,
+tels que les plantes, les arbres, les cristaux, etc.
+
+
+Options - Jeu
+-------------
+
+- Séquences cinématiques
+Certaines missions commencent ou finissent par un petit film
+montrant l'atterrissage ou le décollage du vaisseau. La touche
+Esc permet toujours de stopper ces séquences. Si cette option
+est supprimée, ces films sont complètement sautés.
+
+- Défilement dans les bords
+Lorsque la caméra est derrière le cosmonaute ou derrière un
+robot, une rotation est effectuée si la souris s'approche du
+bord de l'écran.
+
+- Inversion souris X
+Inverse le sens de la rotation lorsque la souris touche le bord
+gauche ou le bord droite de l'écran.
+
+- Inversion souris Y
+Inverse le sens du mouvement lorsque la souris touche le bord
+supérieur ou le bord inférieur de l'écran, dans l'éditeur de
+programmes.
+
+- Secousses lors d'explosions
+Lors d'une explosion, ou lorsque vous effectuez un atterrissage
+brusque, la caméra subit un choc qui se manifeste par une
+secousse plus on moins prononcée. Supprimez cette option pour
+que la caméra soit toujours parfaitement stable.
+
+- Retour animé
+Indique comment la situation est réinitialisée dans les exercices
+de programmation et dans les défis.
+
+- Bulles d'aide
+Les bulles d'aide vous donnent un petit texte explicatif lorsque
+la souris s'arrête sur un bouton ou un objet.
+
+- Reflets sur les boutons
+Les reflets sont visibles lorsque la souris survole un bouton.
+
+- Particules dans l'interface
+Pluie de particules lorsque la souris bouge dans les écrans
+d'interface.
+
+- Souris ombrée
+La souris ombrée est gérée par COLOBOT. La souris normale est
+dessinée par Windows. Lorsque COLOBOT ne fonctionne pas en mode
+"plein écran", la souris est forcément normale.
+
+- Indentation automatique
+L'indentation déplace automatiquement le curseur vers la droite
+lors de l'édition d'un programme, en fonction des accolades
+{ et }.
+
+- Grande indentation
+Une grande indentation décale vers la droite d'une distance
+égale à 4 espaces. Sinon, le décalage est de 2 espaces.
+
+
+Options - Commandes
+-------------------
+
+- Flèches gauche, droite, haut et bas
+Pour faire tourner, avancer ou reculer le cosmonaute ou un
+robot. Dans les exercices de programmation, notez que les robots
+ne peuvent pas être déplacés ainsi.
+
+- Shirt et Ctrl
+Pour faire monter ou descendre le cosmonaute ou un robot volant.
+Sur certaines planètes, le vol est impossible.
+
+- Entrée
+Cette touche effectue l'action principale du robot sélectionné,
+qui correspond au bouton avec un cadre rouge.
+
+- Espace
+Change le point de vue de la caméra. Pour la plupart des robots,
+la caméra passe alternativement d'une vue arrière à une vue
+intérieure.
+
+- . (pavé numérique)
+Met le jeu en pause et montre l'endroit correspondant au dernier
+message affiché en haut de l'écran. Si plusieurs messages sont
+affichés, une nouvelle pression montre le message précédent,
+chronologiquement parlant. Esc enlève la pause et le jeu reprend
+son cours.
+
+- Tab
+Sélectionne l'objet suivant, selon l'ordre des petites icônes
+tout en haut de l'écran.
+
+- Home
+Sélectionne toujours rapidement le cosmonaute.
+
+- 0 (pavé numérique)
+Sélectionne le robot ou le bâtiment qui était sélectionné
+précédemment.
+
+- + et - (pavé numérique)
+Approche ou éloigne la caméra de l'objet sélectionné.
+
+- F1
+Affiche les instructions sur la mission ou l'exercice à l'aide
+du SatCom.
+
+- F2
+Affiche le glossaire sur la programmation à l'aide du SatCom.
+
+- F3
+Pendant l'édition d'un programme, cette touche affiche des
+informations complémentaires sur l'instruction en cours de
+frappe.
+
+- F4, F5 et F6
+Choix de la vitesse du jeu. Le mode normal x1 correspond à la
+touche F4. Les modes rapides x1.5 et x2 doivent être utilisés
+avec prudence, car les ennemis vont également plus vite !
+
+- Esc
+Quitte la mission en cours.
+
+
+Options - Son
+-------------
+
+- Bruitages
+Les bruitages sont générés par l'action en cours. Il s'agit de
+bruits de moteur, de pas, d'explosions, etc.
+
+- Fond sonore
+Le fond sonore dépend de la planète. Il donne une ambiance
+générale, indépendamment de l'action en cours. Chaque fond
+sonore correspond à une piste audio sur le CD. Dans les
+exercices, les défis ainsi que sur la lune, il n'y a pas de
+fond sonore.
+
+- Bruitages 3D
+Certaines cartes son permettent de localiser un son dans
+l'espace à l'aide de 4 haut-parleurs. Le réalisme est alors
+superbe. Si votre carte son ne le permet pas, le bouton est
+grisé.
+
+
+Créér des exercices
+-------------------
+
+Tous les exercices sont dans le sous-dossier \scene\ :
+
+ \scene\trainxyy.txt -> exercices
+ \scene\defixyy.txt -> défis
+ \scene\scenexyy.txt -> missions
+ \scene\freexyy.txt -> jeux libres
+
+Le numéro de 3 chiffres est composé de :
+
+ x -> numéro du chapitre (1..9)
+ yy -> rang dans le chapitre (01..99)
+
+Par exemple, train102.txt est le deuxième exercice du premier
+chapitre.
+Lorsque le rang dans le chapitre est 00, c'est qu'il s'agit de
+la description du chapitre.
+Les fichiers doivent avoir des numéros sucessifs. Supposons par
+exemple que les fichiers suivants existent :
+
+ train600.txt
+ train601.txt
+ train602.txt
+ train605.txt
+
+Le chapitre 6 ne contiendra dans ce cas que 2 exercices, les
+numéros 01 et 02. Le numéro 05 n'apparaît pas dans la liste,
+car il manque les numéros 03 et 04.
+
+Description
+-----------
+
+Un fichier de description d'exercice détermine le relief du
+terrain, les textures utilisées, la position initiale des
+différents robots, matières premières, plantes, etc.
+
+
+
+Couleur
+-------
+
+Les couleurs sont spécifiées à l'aide de 4 composantes
+rouge/vert/bleu/alpha. Les valeurs sont comprises entre
+0 (noir) et 255 (blanc). La composante alpha est généralement
+nulle. Par exemple :
+
+ color=175;209;215;0 // bleu-sable
+
+
+
+
+Title.E text="Power Cell 1"
+Nom court de l'exercice, tel qu'il apparaît dans la liste de
+gauche.
+
+Resume.E text="Instruct a bot to change the power cell of a nearby winged shooter."
+Résumé de l'exercice, tel qu'il apparaît en dessous des deux
+listes.
+
+ScriptName.E text="Spider2"
+Nom par défaut donné à un nouveau programme créé.
+
+Instructions name="tcell1.txt"
+Nom du fichier qui contient les instructions de l'exercice,
+qui seront affichées dans le SatCom.
+Le fichier ttit1.txt doit être placé dans le dossier help\.
+
+HelpFile name="cbot.txt"
+Non du fichier qui contient les instructions sur la program-
+mation, affichées lorsque l'on presse sur F2.
+Le fichier cbot.txt doit être placé dans le dossier help\.
+Normalement, tous les exercices font référence aux mêmes
+instructions générales contenues dans cbot.txt.
+
+EndingFile win=2 lost=0
+Scène à utiliser lorsque l'exercice est réussi ou raté.
+win=2 signifie qu'il faut utiliser scene\win002.txt.
+lost=0 signifie qu'il faut utiliser scene\lost000.txt.
+
+Audio track=0
+Numéro de la piste audio du CD à jouer pendant l'exercice.
+Normalement, les exercices restent silencieux, en donnant le
+numéro de piste 0. Si nécessaire, il est possible de donner
+les numéros suivants :
+ 2: Terre
+ 3: Tropica
+ 4: Crystalium
+ 5: Saari
+ 6: Volcano
+ 7: Centaury
+ 8: Orphéon
+ 9: Terranova
+
+AmbiantColor air=102;102;102;102 water=20;20;20;20
+Couleur ambiante utilisée lorsqu'on est à l'air libre ou
+sous l'eau.
+
+FogColor air=180;222;255;0 water=10;20;100;0
+Couleur que prennent les objets lorsqu'ils sont au loin.
+
+VehicleColor color=175;209;215;0
+Couleur des robots et des bâtiments.
+
+DeepView air=100.00 water=25.00
+Distance en mètres jusqu'où porte la vue. Au delà de cette
+distance, plus rien n'est affiché.
+
+FogStart air=0.1 water=0.1
+Plus on s'approche de la distance maximale de vue (DeepView)
+et plus la couleur des objets fusionne avec la couleur du
+brouillard (FogColor), ce qui simule du brouillard. Une valeur
+de 0.1 indique un brouillard qui commence proche du point de
+vue, donc un brouillard dense. Une valeur de 0.9 indique un
+brouillard très peu dense.
+
+Par exemple :
+ DeepView air=100.00
+ FogStart air=0.2
+
+Distances à partir de l'observateur :
+0 à 20 mètres -> affichage normal
+20 à 100 mètres -> affichage de plus en plus brouillardeux
+100 mètres et plus -> plus rien n'est affiché
+
+SecondTexture rank=3
+Texture utilisée pour salir les robots et les bâtiments. Vous
+pouvez utiliser une valeur comprise entre 1 et 8.
+
+Background up=76;105;226;0 down=192;250;255;0
+Couleurs du fond d'écran, si aucune texture n'est utilisée.
+Un dégradé de couleur passe de "up" tout en haut de l'écran
+progressivement jusqu'à "down" en milieu d'écran. La moitié
+inférieure de l'écran prend la couleur unie "down". Cette
+moitié inférieure n'est en principe jamais visible, puisqu'il
+y a toujours une partie de terrain qui la recouvre.
+
+FrontsizeName image="lens5.tga"
+Nom de la texture d'avant-plan, qui contient un effet de
+"lens flare", plus ou moins visible selon l'orientation.
+
+
+TerrainRelief image="textures\relief41.bmp" factor=1.0
+Le relief du terrain est décrit dans une image BMP à 256
+niveaux de gris mesurant exactement 161 x 161 pixels.
+La couleur blanche correspond à l'altitude la plus basse.
+La couleur noire correspond à l'altitude la plus haute.
+Normalement, on utilise "factor=1.0". Dans ce cas, les 256
+niveaux permettent de s'élever de 64 mètres. Une différence
+d'intensité de gris de 1 correspond donc à une différence
+d'altitude de 0.25 mètres.
+
+La coordonnée du pixel central 80;80 de l'image correspond
+à la coordonnée 0;0 dans CoLoBoT.
+La coordonnée 0;0 du pixel en haut à gauche dans l'image
+correspond au point à l'extrème nord-ouest -400;400 dans CoLoBoT.
+Un pixel dans l'image correspond à un carré au sol de 5x5
+mètres dans CoLoBoT.
+
+Vous pouvez dessiner de nouveaux reliefs avec un logiciel tel
+que PaintShop, ou réutiliser les nombreux fichiers reliefxx.bmp
+placés dans le dossier textures\.
+
+TerrainResource image="textures\res00.bmp"
+Cette image détermine la présence des ressources dans le
+sous-sol. Il s'agit d'une image BMP en 256 couleurs de
+161 x 161 pixels.
+
+Rouge = 255;0;0 (index=5) -> titanium
+Vert = 0;255;0 (index=30) -> énergie
+Jaune = 255;255;0 (index=35) -> uranium
+
+Toutes les autres couleurs ou niveaux de gris sont ignorés.
+
+Généralement, un bon truc pour placer les zones de couleur au
+bon endroit est de partir de l'image à niveaux de gris du
+relief et de la convertir en 256 couleurs.
+
+TerrainWater level=7.5 ...
+Cette commande contient plusieurs paramètres, dont seul "level"
+nous intéresse ici. "level" indique donc le niveau de l'eau ou
+de la lave, par-rapport au niveau zéro qui correspond à la
+couleur blanche dans l'image du relief (TerrainResource).
+L'altitude des robots est par la suite toujours calculée par-
+rapport au niveau de la mer (level). Une altitude négative
+indiquera donc que le robot est sous l'eau.
+
+BeginObject
+Cette commande doit précéder le premier CreateObject.
+
+CreateObject pos=7;-10 dir=1.5 type=Me
+Création d'un objet dans l'exercice. Il peut s'agir d'un robot,
+d'un bâtiment, d'une matière première, d'une plante, etc.
+
+Pour déterminer la position d'un objet, un bon moyen consiste
+à déplacer le cosmonaute à l'endroit souhaité, puis de taper
+les commandes :
+
+ Ctrl+Pause showstat Entrée
+ Ctrl+Pause showpos Entrée
+
+La partie inférieure de l'écran indique alors les coordonnées
+de l'objet sélectionné, qu'il n'y a plus qu'à reporter dans le
+fichier de description de l'exercice.
+
+La direction est un nombre compris entre 0 et 2.
+ 0.0 -> est
+ 0.5 -> sud
+ 1.0 -> ouest
+ 1.5 -> nord
+Le sens de rotation est donc horaire.
+
+Les différents types possibles pour les objets sont :
+
+Base :
+ type=Me // cosmonaute
+ type=SpaceShip
+
+Robots :
+ type=PracticeBot // robot d'entraînement
+ type=TargetBot // robot cible
+
+ type=WheeledGrabber
+ type=TrackedGrabber
+ type=WingedGrabber
+ type=LeggedGrabber
+
+ type=WheeledShooter
+ type=TrackedShooter
+ type=WingedShooter
+ type=LeggedShooter
+
+ type=WheeledOrgaShooter
+ type=TrackedOrgaShooter
+ type=WingedOrgaShooter
+ type=LeggedOrgaShooter
+
+ type=WheeledSniffer
+ type=TrackedSniffer
+ type=WingedSniffer
+ type=LeggedSniffer
+
+ type=Thumper
+ type=PhazerShooter
+ type=Recycler
+ type=Shielder
+ type=Subber
+
+Bâtiments :
+ type=Derrick
+ type=BotFactory
+ type=PowerStation
+ type=Converter
+ type=RepairCenter
+ type=DefenseTower
+ type=AlienNest
+ type=ResearchCenter
+ type=RadarStation
+ type=ExchangePost
+ type=PowerPlant
+ type=AutoLab
+ type=NuclearPlant
+ type=PowerCaptor
+ type=Vault
+ type=StartArea
+ type=GoalArea
+ type=Target1 // pour l'entraînement au vol
+ type=Target2
+ type=Houston // centre de contrôle
+
+Objets transportables :
+ type=TitaniumOre
+ type=UraniumOre
+ type=Titanium
+ type=PowerCell
+ type=NuclearCell
+ type=OrgaMatter
+ type=BlackBox // boîte noire
+ type=KeyA..D
+ type=TNT // caisse d'explosif
+
+Plantes et décors :
+ type=Greenery0..4 // plante standard basse
+ type=Greenery5..7 // petit trèfle bas
+ type=Greenery10..14 // plante grasse montante
+ type=Greenery15..19 // fougère
+ type=Tree0..3 // arbre haut
+ type=Mushroom1 // champignon inoffensif
+ type=Mushroom2 // champignon corrosif
+ type=MegaStalk0..5 // plante étrange
+
+ type=Quartz0..3 // quartz petit..grand
+ type=Barrier0 // barrière courte
+ type=Barrier1 // barrière longue
+ type=ApolloLEM // sur la lune uniquement :
+ type=ApolloJeep
+ type=ApolloFlag
+ type=ApolloModule
+ type=ApolloAntenna
+
+Epaves de robots recyclables :
+ type=WreckBotw1..2 // robot à roues
+ type=WreckBott1..2 // robot à petites chenilles
+ type=WreckBotr1..2 // robot à grosses chenilles
+
+Bâtiments en ruine :
+ type=RuinBotFactory
+ type=RuinDoor // porte de convertisseur
+ type=RuinSupport // support de radar
+ type=RuinRadar // socle de radar
+ type=RuinConvert
+ type=RuinBaseCamp // socle du vaisseau spatial
+ type=RuinHeadCamp // coiffe du vaisseau spatial
+
+Ennemis :
+ type=AlienQueen
+ type=AlienEgg
+ type=AlienAnt
+ type=AlienSpider
+ type=AlienWasp
+ type=AlienWorm
+
+Indicateurs :
+ type=PowerSpot // indique la présence d'énergie en sous-sol
+ type=TitaniumSpot // indique la présence de titanium en sous-sol
+ type=UraniumSpot // indique la présence d'uranium en sous-sol
+ type=KeyA..DSpot // indique la présence de clé en sous-sol
+ type=WayPoint // croix pour les exercices
+ type=BlueFlag
+ type=RedFlag
+ type=GreenFlag
+ type=YellowFlag
+ type=VioletFlag
+
+Divers :
+ type=Mine // bombe fixe à éviter
+ type=Portico // portique géant (sur la terre)
+ type=Bag // sac de survie
+ type=Home // petite maison sympa (sur terranova)
+ type=Tech // technicien de Houston
+ type=Firework // feu d'artifice
+
+La commande CreateObject peut contenir des paramètres
+supplémentaires :
+
+CreateObject ... script1="ttit1.txt"
+Nom du programme CBOT à charger à la position 1 dans le robot
+ou l'insecte. Il est possible de charger jusqu'à 10 programmes
+en utilisant les commandes script1 à script10.
+Les fichiers .txt des programmes doivent être placés dans le
+dossier script\.
+
+CreateObject ... run=1
+Numéro du programme à exécuter directement lorsque l'exercice
+démarre. Cela peut être utile, par exemple, pour un robot
+TargetBot que l'élève devra suivre.
+Si plusieurs programmes sont chargés (avec script1, script2,
+etc.), un seul pourra être exécuté, bien entendu.
+
+EnableResearch type=WINGER
+Liste des recherches déjà effectuées.
+
+DoneResearch type=WINGER
+Liste des recherches qu'il est autorisé de faire, en construisant
+un centre de recherche (ResearchCenter) ou un laboratoire (AutoLab).
+
+
+ TRACKER Robots Tracked*
+ WINGER Robots Winged*
+ THUMPER Robots Thumper
+ SHOOTER Robots *Shooter
+ TOWER Bâtiment DefenseTower
+ PHAZER Robots PhazerShooter
+ SHIELDER Robots Shielder
+ ATOMIC Bâtiment NuclearPlant
+
+ iPAW Robots Legged*
+ iGUN Robots *OrgaShooter
+
+ RECYCLER Robots recycleurs
+ SUBBER Robots Subber
+ SNIFFER Robots *Sniffer
+
+
+EndMissionTake pos=0.00;0.00 dist=25000.00 type=Me lost=0
+EndMissionTake pos=0.00;0.00 dist=25000.00 type=WheeledGrabber lost=0
+EndMissionTake pos=0.00;0.00 dist=1000.00 type=Titanium min=1 max=1
+Critères pour déterminer à quel moment l'exercice est terminé.
+
+
+
+
+Dossiers et réseau
+------------------
+
+Dans une utilisation en réseau, COLOBOT doit être installé
+sur chaque machine individuellement. Après cette opération,
+les exercices et les missions sont chargés localement,
+généralement dans le dossier :
+
+ C:\Program Files\Colobot\scene\
+
+Si vous avez créé des exercices spécifiques, il peut être
+utile de les charger à partir d'un dossier central commun à
+tous les ordinateurs. Pour cela, il faut modifier le fichier
+
+ C:\Program Files\Colobot\colobot.ini
+
+sur chaque machine. La section suivante permet de donner le
+chemin d'accès :
+
+ [Directory]
+ scene=scene
+
+Ici, il s'agit d'un chemin d'accès relatif. Vous pouvez par
+exemple le changer en un chemin absolu sur un serveur :
+
+ [Directory]
+ scene=\\Serveur\c\colobot\scene\
+
+De la même façon, vous pouvez changer le dossier dans lequel
+sont placés les programmes lorsque vous utilisez la commande
+ouvrir/enregistrer avec le mode "public", dans l'éditeur de
+programmes :
+
+ [Directory]
+ public=program
+
+En donnant un chemin d'accès commun à tous les ordinateurs, il
+sera possible d'échanger des programmes :
+
+ [Directory]
+ public=\\Serveur\c\colobot\program\
+
+
+
+Réglages
+--------
+
+Pour afficher le nombre d'images par seconde, il faut appuyer
+sur Ctrl+Pause puis taper la commande "showstat" et valider
+avec la touche Entrée :
+
+ Ctrl+Pause showstat Entrée
+
+La partie supérieure de l'écran affiche alors, par exemple :
+
+ 32.46 fps T=11558 (640x480x16)
+
+Le premier chiffre correspond au nombre d'images par seconde
+(fps = frame per second).
+Le deuxième chiffre indique le nombre de triangles affiché dans
+la scène.
+Les 3 derniers chiffres entre parenthèses sont la résolution
+(largeur x hauteur) et le nombre de bits pour les couleurs.
+
+Tous les réglages sont mémorisés dans le fichier colobot.ini,
+présent dans le dossier principal où COLOBOT a été installé.
+Ce fichier peut être modifié (avec prudence et après en avoir
+fait une copie) avec un éditeur de texte, comme par exemple le
+bloc-notes de Windows.
+
+
+Problèmes
+---------
+
+Pour résoudre certains problèmes, il est possible de modifier
+le fichier colobot.ini avec un éditeur de texte (par exemple
+avec le bloc-notes de Windows). N'ajoutez pas de nouvelles
+lignes, mais modifiez simplement les valeurs existantes.
+Attention à ne pas insérer d'espace. Il faut quitter COLOBOT
+avant de modifier le fichier.
+
+Si la végétation s'affiche mal, ou même pas du tout, vous
+avez peut-être mis à zéro le nombre d'objets décoratifs dans
+les options. Pour remettre 100% :
+ [Setup]
+ GadgetQuantity=1.00
+Si la végétation ne s'affiche toujours pas, essayez :
+ [Engine]
+ AlphaMode=0
+ou
+ [Engine]
+ AlphaMode=2
+
+Si un carré apparaît autour des ombres, essayez :
+ [Engine]
+ WhiteSrcBlend=9
+ WhiteDestBlend=6
+ou
+ [Engine]
+ WhiteSrcBlend=6
+ WhiteDestBlend=3
+Si cela ne fonctionne pas, il faut supprimer les ombres :
+ [Engine]
+ WhiteSrcBlend=0
+ WhiteDestBlend=0
+ [Setup]
+ GroundShadow=0
+
+Lorsque un objet s'interpose entre l'objet sélectionné et la
+caméra, il devient transparent. Si l'objet n'est pas assez
+transparent, essayez :
+ [Engine]
+ StateColor=0
+ou
+ [Engine]
+ StateColor=1
+
+
+Equipe de développement
+-----------------------
+
+- Daniel Roux
+- Denis Dumoulin
+- Otto Kölbl
+- Michael Walz
+- Didier Gertsch
+
+Beta testeurs
+-------------
+
+- Adrien Roux
+- Didier Raboud
+- Nicolas Beuchat
+- Joël Roux
+- Michael Jubin
+- Daniel Sauthier
+- Nicolas Stubi
+- Patrick Thévoz
+
+Copyright
+---------
+
+La photo de la nébuleuse NGC3603 servant de fond pour la planète
+Orphéon a été prise avec le télescope spatial Hubble. Elle est
+utilisée avec l'autorisation des auteurs Wolfgang Brandner
+(JPL/IPAC), Eva K. Grebel (Université de Washington), You-Hua Chu
+(Université d'Illinois Urbana-Champaign) et de la NASA.
+
+Le son de tonnerre de la planète Orphéon est utilisé avec
+l'autorisation limitée de CREATIVE moyennant la mention :
+Material from products are used by limited permission from CREATIVE.
+
+Développeur
+-----------
+
+EPSITEC SA
+Mouette 5
+CH-1092 Belmont
+
+colobot@epsitec.ch
+www.colobot.com
+
+Editeur de la version française
+-------------------------------
+
+ALSYD
+43, Ch. du vieux Chêne
+F-38240 Meylan
+
+www.alsyd.com
diff --git a/src/old/resource.h b/src/old/resource.h
new file mode 100644
index 0000000..0f3be0a
--- /dev/null
+++ b/src/old/resource.h
@@ -0,0 +1,55 @@
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
+// *
+// * This program is free software: you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by winmain.rc
+//
+#define IDI_MAIN_ICON 101
+#define IDR_MAIN_ACCEL 113
+#define IDR_MENU 141
+#define IDR_POPUP 142
+#define IDD_ABOUT 143
+#define IDD_CHANGEDEVICE 144
+#define IDC_CURSORHAND 149
+#define IDC_CURSORSCROLLL 150
+#define IDC_CURSORSCROLLR 151
+#define IDC_CURSORSCROLLU 152
+#define IDC_CURSORSCROLLD 153
+#define IDC_CURSORTARGET 154
+#define IDC_DEVICE_COMBO 1000
+#define IDC_MODE_COMBO 1001
+#define IDC_WINDOWED_CHECKBOX 1012
+#define IDC_STEREO_CHECKBOX 1013
+#define IDC_FULLSCREEN_TEXT 1014
+#define IDM_ABOUT 40001
+#define IDM_CHANGEDEVICE 40002
+#define IDM_TOGGLEFULLSCREEN 40003
+#define IDM_TOGGLESTART 40004
+#define IDM_SINGLESTEP 40005
+#define IDM_EXIT 40006
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_3D_CONTROLS 1
+#define _APS_NEXT_RESOURCE_VALUE 159
+#define _APS_NEXT_COMMAND_VALUE 40011
+#define _APS_NEXT_CONTROL_VALUE 1015
+#define _APS_NEXT_SYMED_VALUE 102
+#endif
+#endif
diff --git a/src/old/t.txt b/src/old/t.txt
new file mode 100644
index 0000000..9dd81fb
--- /dev/null
+++ b/src/old/t.txt
@@ -0,0 +1,11 @@
+extern void object::Go()
+{
+//float a = energyLevel;
+//message(a);
+
+//object item=energyCell;
+//float i = item.energyLevel;
+//message(i);
+float i = energyCell.energyLevel;
+
+}
diff --git a/src/old/tracks.txt b/src/old/tracks.txt
new file mode 100644
index 0000000..8d80872
--- /dev/null
+++ b/src/old/tracks.txt
@@ -0,0 +1,17 @@
+Utilisation des tracks
+
+ 1: data
+ 2: terre Terre
+ 3: tropica Tropica
+ 4: crystalium Crystalium
+ 5: saari Saari
+ 6: volcano Volcano
+ 7: centaury Centaury
+ 8: orpheon Orphéon
+ 9: terranova Terranova
+10: lost perdu
+11: win gagné
+12: fox fin du jeu
+13: shuffle -
+
+DR 12.06.01
diff --git a/src/old/traduc.txt b/src/old/traduc.txt
new file mode 100644
index 0000000..73bbf55
--- /dev/null
+++ b/src/old/traduc.txt
@@ -0,0 +1,151 @@
+Types des objets COLOBOT
+------------------------
+
+
+ ... // sac de survie
+
+ BaseCamp // fusée principale
+ Derrick // derrick
+ BotFactory // fabrique de véhicules
+ PowerStation // station de recharge
+ Converter // conversion minerai en titanium
+ RepairCenter // centre de réparation
+ DefenceTower // tour de défense
+ AlienNest // nid
+ ResearchCenter // centre de recherches
+ RadarStation // radar
+ PowerPlant // fabrique de piles
+ AutoLab // analyseur de matières organiques
+ NuclearPlant // centrale nucléaire
+ StartArea // départ
+ GoalArea // arrivée
+ ExchangePost // borne d'information
+
+ TitaniumOre // minerai de titanium
+ UraniumOre // minerai d'uranium
+ Titanium // titanium
+ PowerPack // pile normale
+ NuclearPack // pile nucléaire
+ OrgaStuff // matière organique
+ BlackBox // boîte noire
+ TNT // explosif
+
+ PowerSpot // énergie en sous-sol
+ TitaniumSpot // titanium en sous-sol
+ UraniumSpot // uranium en sous-sol
+ PathSpot // chemin
+
+ TrainingRollerBot // véhicule d'entraînement :
+ TrainingCrawlerBot
+ TrainingJetBot
+ TrainingSpiderBot
+
+ GrabberRollerBot // véhicule manipulateur :
+ GrabberCrawlerBot
+ GrabberJetBot
+ GrabberSpiderBot
+
+ FireballRollerBot // véhicule de défense :
+ FireballCrawlerBot
+ FireballJetBot
+ FireballSpiderBot
+
+ OrgaballRollerBot // véhicule de défense :
+ OrgaballCrawlerBot
+ OrgaballJetBot
+ OrgaballSpiderBot
+
+ SnifferRollerBot // véhicule sondeur :
+ SnifferCrawlerBot
+ SnifferJetBot
+ SnifferSpiderBot
+
+ ThumperBot // véhicule de terrassement
+ FazerBot // véhicule de défense
+ RecyclerBot // véhicule de récupération
+ ShieldBot // véhicule de protection
+ SubBot // sous-marin
+ TargetBot // cible d'entraînement
+
+ Me // homme
+ Wiz // toto
+
+ AlienBigLady // mère pondeuse
+ AlienEgg // oeuf
+ AlienAnt // fourmi
+ AlienSpider // araignée
+ AlienWasp // guèpe
+ AlienWorm // ver
+
+ Wreck // épave de véhicule
+ Ruin // bâtiment en ruine
+ Firework // feu d'artifice
+ Mine // mine
+ Barrier // barrière
+ Greenery // plante
+ Tree // arbre
+ Quartz // quartz
+ MegaStalk // racine
+ ... // gravi-plante
+
+
+Fonction du langage CBOT :
+
+ Move // avance d'une certaine distance
+ Turn // tourne d'un certain angle
+ Goto // va à une coordonnée donnée
+ Motor // commande directe des moteurs gauche & droite
+ Jet // commande directe du réacteur
+
+ Radar // détecte un objet
+ Direction // calcule une direction
+ Distance // calcule la distance entre deux points
+ Wait // attend
+ Produce // crée un objet
+ Message // affiche un message
+
+ Grab // prend un objet avec le bras manipulateur
+ Drop // dépose un objet avec le bras manipulateur
+ Sniff // sonde le sous-sol
+ Receive // reçoit une information
+ Send // envoie une information
+ Thump // terraforme le terrain
+ Recycle // récupère une épave
+ Shield // actionne le bouclier de protection
+ Fire // tir avec un canon
+ Aim // hausse du canon
+
+
+Classes :
+
+ point // point avec coordonnées x,y,z
+ object // descriptif d'un objet
+
+
+Descripteur d'un objet :
+
+ category // catégorie de l'objet
+ energyPack // object pile
+ load // objet transporté
+ position // position x,y,z
+ direction // orientation
+ energyLevel // niveau d'énergie
+ shieldLevel // niveau du bouclier
+ altitude // hauteur par rapport au sol
+
+
+Argument de la commande Manip( ) :
+
+ InFront // prend ou dépose devant
+ Behind // prend ou dépose derrière
+ EnergyPack // prend ou dépose sa propre pile
+
+
+Filtre pour la commande Radar( ) ;
+
+ FilterNone // pas de filtre
+ FilterOnlyLanding // seulement les robots qui roulent
+ FilterOnlyFliying // seulement les robots qui volent
+
+
+DR 14.03.01
diff --git a/src/old/version.txt b/src/old/version.txt
new file mode 100644
index 0000000..da31287
--- /dev/null
+++ b/src/old/version.txt
@@ -0,0 +1,108 @@
+1.18 (24.01.08)
+- Ne vérifie plus la présence des pistes audio.
+
+1.17 (08.01.08)
+- Sound.cpp:InitAudioTrackVolume:mixerGetLineControls ne devrait plus planter
+ sous Vista, grace à l'abandon de MIXER_GETLINECONTROLSF_ALL.
+- CoLoBoT ne joue plus les pistes audio, et le réglage du volume a disparu
+- CoLoBoT n'affiche plus Alsyd
+- Texte "www.colobot.com" remplacé par "www.ceebot.com"
+
+1.16 (10.11.03)
+- Options: si "accès aux solutions" décoché -> Lancer défi,
+ éditer programme, Esc, Abandonner: plus de bouton "accès à la solution"
+
+1.15 (02.09.03)
+- EVENT_INTERFACE_KGUP: plus si CeeBot-Teen !
+- EVENT_INTERFACE_KGDOWN: plus si CeeBot-Teen !
+- EVENT_INTERFACE_KACTION: plus si CeeBot-Teen !
+- EVENT_INTERFACE_KVISIT: plus si CeeBot-Teen !
+- EVENT_INTERFACE_KNEXT: plus si CeeBot-Teen !
+- EVENT_INTERFACE_KHUMAN: plus si CeeBot-Teen !
+- EVENT_INTERFACE_KDESEL: plus si CeeBot-Teen !
+- EVENT_INTERFACE_KCBOT: plus si CeeBot-Teen !
+
+1.14 (28.07.03)
+- Switch -nosetup -> plus de bouton "Options" pendant jeu
+
+1.8 ()
+- instruction shield(1, radius) ok avec radius 10..25
+- instruction shield(1, radius) possible si bouclier déjà déployé
+
+1.8 BETA (05.10.01)
+- CBOT: public, static, synchronized, private, protected
+- CBOT: strlen, strleft, strright, strmid, strval, strfind, strupper, strlower
+- CBOT: file, open, close, writeln, readln, eof, deletefile
+- extern/public: aide en cliquant dans la ligne d'info de l'éditeur
+- ExchangePost: UpdateList si infos reçues
+- ok si lien d'un seul caractère: \l;x\u file;
+- colobot.ini: [Setup] DeleteGamer=1
+- colobot.ini: [Directory] files=files
+- studio: nb max de caractères: 10000 -> 20000
+- script antt41 (scene904): AlienMother -> AlienQueen
+- load: recompilation ok si procédures "public" dans d'autres robots
+- si le volume CD est nul, la piste n'est pas du tout jouée
+- goto ResearchCenter toujours possible
+- meilleure gestion des touches Ctrl et Shift dans l'éditeur
+- object.temperature=12 impossible (PR_READ)
+- studio: ne plante plus si on tape plus de 100 car. sans espace
+- studio: "enregistrer" se rappelle du nom de fichier dans la mission
+- studio: Ctrl+A sélectionne tout
+- studio: run: si liste < 5 variables -> fond gris
+
+1.7 (13.09.01)
+- object.lifeTime
+- object.range Winged* idem si camera OnBoard/Back
+- float flatground(center, rmax);
+- float abstime();
+- float receive(name, power);
+- void send(name, value, power);
+- void deleteinfo(name, power);
+- bool testinfo(name, power);
+- Le cosmonaute peut construire une borne d'information
+
+1.6 (06.09.01)
+- niveaux supplémentaires avec %user%
+- fonction "send" plus coloriée
+- english help: EnergyPack -> EnergyCell
+- english help: energyPack -> energyCell
+- english help: FinishArea -> GoalArea
+
+1.5 (24.08.01)
+- first execute: prefered first non-T&L, second T&L
+- fondus welcome: D3DSTATETTb/w -> D3DSTATETCb/w
+
+1.4 (02.08.01)
+- n'importe quelle touche/clic passe les écrans welcome1, 2 et 3
+- icône associée au CD dans autorun.inf
+- SatCom: icône "Aide à la programmation" présente dans exercices
+- welcome: phase "Alsyd" plus longue (8s)
+- SaveOneScript quand on quitte le studio par ok, cancel ou run
+
+1.3 (27.07.01)
+- goto BotFactory toujours possible
+- documentation errmode(0)
+- petites corrections anglaises par MW
+- enlever pile pendant recherche ne bloque plus
+- si human porte qq chose et vaisseau décole -> ne reste plus sur place
+- robot sur vaisseau puis sauvegarder-reprendre -> impossible gravir pentes
+
+GoldMaster 1.3 /e envoyé à CD PRESS pour 1000x
+
+1.2
+- bouton de fermeture (en haut à droite) supprimé en mode fenêtré
+- suppression du réglage "nice reset"
+
+1.1 (20.07.01)
+- volume du son non nul après installation
+- images logo au démarrage du jeu
+- image generic != si français ou anglais
+- install: nouvelle clé pour uninstall depuis autorun
+
+GoldMaster 1.1 /f envoyé à Alsyd
+
+1.0
+- commande "reset" (exercices) tjrs ok (fichier rechargé)
+- nom sauvegarde avec date/heure au format anglais
+- ScriptName.F et .E
+
diff --git a/src/old/winmain.aps b/src/old/winmain.aps
new file mode 100644
index 0000000..6a1e0df
--- /dev/null
+++ b/src/old/winmain.aps
Binary files differ
diff --git a/src/old/winmain.rc b/src/old/winmain.rc
new file mode 100644
index 0000000..547d4c2
--- /dev/null
+++ b/src/old/winmain.rc
@@ -0,0 +1,265 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define IDC_STATIC -1
+#include <windows.h>
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_MAIN_ICON ICON DISCARDABLE "DirectX.ico"
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#define IDC_STATIC -1\r\n"
+ "#include <windows.h>\r\n"
+ "\r\n"
+ "\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_MAIN_ACCEL ACCELERATORS DISCARDABLE
+BEGIN
+ VK_F12, IDM_CHANGEDEVICE, VIRTKEY, SHIFT, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_ABOUT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 165
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 117
+ END
+
+ IDD_CHANGEDEVICE, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 174
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 83
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUT DIALOG DISCARDABLE 0, 0, 172, 124
+STYLE DS_SYSMODAL | DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND |
+ DS_3DLOOK | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION
+CAPTION "About"
+FONT 8, "MS Sans Serif"
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,115,103,50,14
+ ICON IDI_MAIN_ICON,IDC_STATIC,5,5,20,20
+ LTEXT "Robot Sample",IDC_STATIC,35,5,46,8
+ LTEXT "Copyright (c) 1999-2000 EPSITEC SA",IDC_STATIC,35,15,
+ 120,8
+ LTEXT "About",IDC_STATIC,62,52,20,8
+ LTEXT "Select Driver / Device / Mode",IDC_STATIC,62,62,97,8
+ CTEXT "<Alt+Enter>",IDC_STATIC,12,72,45,8
+ LTEXT "Toggle Fullscreen / Windowed",IDC_STATIC,62,72,98,8
+ LTEXT "Exit",IDC_STATIC,62,82,12,8
+ CTEXT "<F1>",IDC_STATIC,12,52,45,8
+ CTEXT "<F2>",IDC_STATIC,12,62,45,8
+ CTEXT "<ESC>",IDC_STATIC,12,82,45,8
+ GROUPBOX "Usage",IDC_STATIC,7,42,160,55
+ LTEXT "Daniel Roux, version 0.1 Janvier 2000",IDC_STATIC,35,26,
+ 121,8
+END
+
+IDD_CHANGEDEVICE DIALOG DISCARDABLE 0, 0, 182, 90
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Change device"
+FONT 8, "MS Sans Serif"
+BEGIN
+ GROUPBOX "&Device selection",-1,5,5,115,40
+ COMBOBOX IDC_DEVICE_COMBO,10,15,105,100,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
+ CONTROL "Use desktop &window",IDC_WINDOWED_CHECKBOX,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,30,85,10
+ GROUPBOX "Fullscreen &modes",IDC_FULLSCREEN_TEXT,5,45,115,40
+ COMBOBOX IDC_MODE_COMBO,10,55,105,100,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
+ CONTROL "&Stereoscopic viewing",IDC_STEREO_CHECKBOX,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,70,85,9
+ DEFPUSHBUTTON "OK",IDOK,125,5,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,125,25,50,14
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Go/stop\tEnter", IDM_TOGGLESTART
+ MENUITEM "&Single step\tSpace", IDM_SINGLESTEP
+ MENUITEM SEPARATOR
+ MENUITEM "&About...\tF1", IDM_ABOUT
+ MENUITEM "&Change device...\tF2", IDM_CHANGEDEVICE
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit\tESC", IDM_EXIT
+ END
+END
+
+IDR_POPUP MENU DISCARDABLE
+BEGIN
+ POPUP "Popup"
+ BEGIN
+ MENUITEM "&Go/stop", IDM_TOGGLESTART
+ MENUITEM "&Single step", IDM_SINGLESTEP
+ MENUITEM SEPARATOR
+ MENUITEM "&About...", IDM_ABOUT
+ MENUITEM "&Change device...", IDM_CHANGEDEVICE
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit", IDM_EXIT
+ END
+END
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// French (Switzerland) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRS)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_SWISS
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,0
+ PRODUCTVERSION 1,0,0,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "100c04b0"
+ BEGIN
+ VALUE "CompanyName", "www.epsitec.com\0"
+ VALUE "FileDescription", "CeeBot\0"
+ VALUE "FileVersion", "Version 1.0\0"
+ VALUE "InternalName", "CeeBot\0"
+ VALUE "LegalCopyright", "Copyright © 2001 by EPSITEC SA\0"
+ VALUE "OriginalFilename", "ceebot.exe\0"
+ VALUE "ProductName", "EPSITEC CeeBot\0"
+ VALUE "ProductVersion", "Version 1.0\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x100c, 1200
+ END
+END
+
+#endif // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Cursor
+//
+
+IDC_CURSORHAND CURSOR DISCARDABLE "cursor1.cur"
+IDC_CURSORSCROLLL CURSOR DISCARDABLE "cursorha.cur"
+IDC_CURSORSCROLLR CURSOR DISCARDABLE "cursorsc.cur"
+IDC_CURSORSCROLLU CURSOR DISCARDABLE "cur00001.cur"
+IDC_CURSORSCROLLD CURSOR DISCARDABLE "cur00002.cur"
+IDC_CURSORTARGET CURSOR DISCARDABLE "cur00003.cur"
+#endif // French (Switzerland) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+