PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WineX CVS & aktuelle Spiele



k3rn3lpanic
25.01.04, 16:46
HOWTO: WineX CVS & aktuelle Spiele


Inhalt:
1. Vorbemerkungen
1.1 Einleitung
1.2 Requirements

2. Woher bekomm' ich WineX???
2.2 Die Sache mit dem CVS
2.3 Konfiguration & Installation

3. Nun sollte es auch laufen...
3.1 Konfiguration von WineX
3.2 Installation von Spielen

4. Troubleshooting und FAQ

5. Abschluss/Kontakt

6. History

---

1. VORBEMERKUNGEN

1.1 Einleitung
-----------------------------------------------

Erstmal möchte ich mir kurz vorstellen:
Ich bin Ulli, nutze seit rund 3 Jahren Linux, seit einem
halben Jahr nur noch Linux. Ich verbringe meine Zeit mit
dem Pinguin hauptsächlich mit Programmierung und Webdesign,
ab und zu ist auch mal Zeit für etwas Zockerei, aber das
kommt eher selten vor.
Ich hab das Howto was ihr wahrscheinlich grade lest
geschrieben, da es überall mal Howtos gab, wo drinstand
wie man WineX aus dem CVS zieht, dann kam mal wieder eins
wo was über die Konfiguration drin stand und noch ein
drittes über diverse andere Sachen wie Troubleshooting usw.
Die Idee dieses Howto ist es, das alles unter einen Hut
zu bringen und nebenbei auch noch die Möglichkeit zu geben,
Spiele zum Laufen zu bringen, die mit den Releases von WineX
nicht laufen. Viel Spaß :-)


1.2 Requirements
-----------------------------------------------

Nun braucht ihr selbstverständlich einige Dinge, damit das
ganze funktioniert (auf die ganz grundsätzlichen wie

Linux geh ich nicht ein ;-)), was wären:

funktionierender gcc
funktionierende Tools wie make, awk usw.


Das ist soweit bei jeder aktuelleren Distri dabei.
Speziellere Dinge wären:

ein Grafiktreiber mit 3D-Beschleunigung (bspw. von NVidia oder ATi, je nach Karte)
XFree86 4.2 oder höher (ka. ob 4.1 auch geht)
Mut und Erfahrung, diesen Horrortrip durchzustehen ;)


2. WOHER BEKOMM' ICH WINEX???

2.1 Die Sache mit dem CVS
-----------------------------------------------
CVS? Häh? Werden einige Fragen, kurz dazu:
CVS (Concurrent Version System) ist ein System, welches
von Programmierern verwendet wird, um mehrere Versionen
einer Datei quasi parallel zu speichern, um im Falle eines
Falles zu einer frühreren Version zurückkehren zu können.
Die CVS-Trees beinhalten meist die aktuellesten Versionen
des/der jeweiligen Programm(e/s), damit sind sie bestens
geeignet für unsere Zwecke.
Als erstes solltet ihr euch in eurem Homeverzeichnis einen
Ordner namens "WineX-CVS" ö.ä. anlegen. Dann wechselt in
diesen Ordner und gebt auf der Shell folgendes ein:


cvs -d:pserver:cvs@cvs.transgaming.org:/cvsroot login

Ihr werdet dann nach einem Passwort gefragt, dabei gebt
ihr "cvs" ein (ohne Anführungsstriche).
Nun folgt:


cvs -z3 -d:pserver:cvs@cvs.transgaming.org:/cvsroot co winex

"co" heisst soviel wie Check-Out und hat hier die Bedeutung,
dass jetzt die aktuellen Sources von WineX auf eure Platte
gezogen werden. Abhängig von eurer Internetanbindung und
der Frequentierung des CVS-Server kann dieser Prozess 5 Minuten
dauern, aber auch eine halbe Stunde oder mehr, ersteres ist jedoch
wahrscheinlicher.


********** WICHTIG **********
Da die Binary-Versionen (die, für die man zahlen muss) lizenzierten
Code bspw. für Kopierschutz usw. enthalten, steht dieser Code
selbstverständlich nicht im CVS zur Verfügung. Ihr müsst also
für eure Spiele einen sog. NoCD-Crack verwenden. Diesen findet
ihr bspw. bei www.megagames.com oder www.gamecopyworld.com
ICH WEISE AUSDRÜCKLICH DARAUF HIN, DASS DIE BENUTZUNG EINES
NOCD-CRACKS, SOFERN MAN NICHT IM BESITZ DES ORIGINALSPIELS IST,
STRAFBAR IST UND ZIVIL- UND STRAFRECHTLICHE FOLGEN HABEN KANN!
*****************************

Damit wäre dann WineX erst einmal auf eurer Platte. Im WineX-CVS-
Verzeichnis existiert nun ein neuer Ordner namens "winex", wenn
ihr euch die Befehle oben anschaut, wisst ihr auch warum :-)


2.2 Konfiguration und Installation
-----------------------------------------------
Die Installation und Konfiguration von WineX CVS ist nicht
anders als bei allen möglichen Programmen, die man sich
aus dem Sourcecode kompiliert.
Bei den CVS-Versionen ist allerdings zu beachten, dass
es möglich ist, dass diese NICHT-KOMPILIERBAR sind und somit
auch nicht funktionieren. Bei WineX CVS halte ich diese
Wahrscheinlichkeit jedoch für gering. Mir persönlich ist
das noch nicht passiert.

Um uns jetzt einmal auszukäsen: Wechselt in das Verzeichnis
WineX-CVS/winex und gebt dort ein


./configure --help

Damit werden euch die Optionen gezeigt, mit denen ihr WineX
kompilieren könnt. Ich werde hier darauf nicht genauer eingehen,
da das meiste vom configure-Script sowieso erkannt wird.
Eins jedoch noch dazu, die Optionen sind einfach an ./configure
anzuhängen, also wenn ihr WineX bsp. in /usr installieren wollt,
ist der folgende Befehl der richtige für euch:


./configure --prefix=/usr

So läuft das auch mit den anderen Optionen.

Nun lasst einfach mal das configure-Script werkeln:


./configure

Damit wird euch eine Konfiguration für WineX erstellt.
Wenn das geklappt hat, könnt ihr WineX CVS wiefolgt kompilieren:


make dep && make

Der Prozess dauert jetzt relativ lange. Ich bin immer mit 'ner
halben Stunde dabei (Athlon 1000, 256 Mbyte RAM).
Wenn das dann wiederum glattgelaufen ist, ist WineX CVS
Installationsbereit, dies ist allerdings NUR als root möglich.


make install

Soweit sogut :-)

---

3. NUN SOLLTE ES AUCH LAUFEN


3.1 Konfiguration von WineX
-----------------------------------------------
WineX CVS als Programm startet ihr nicht per
winex3, sondern einfach per wine. Das hat den Vorteil, dass
sich somit die mglw. bereits installieren Stable-Versionen
nicht mit der CVS-Version ins Gehege kommen.
Erst einmal geht es jetzt daran, die Verzeichnisse für WineX CVS
zu erstellen. In eurem Homeverzeichnis wird ein Ordner namens
".wine" (anlegen per mkdir .wine im Homeverzeichnis)
gebraucht. In diesem wiederum folgende Ordner:


drive_c [oder ein anderer Name, je nach Wahl]
drive_c/windows
drive_c/windows/system
drive_c/windows/system32
drive_c/windows/fonts

Der Ordner "drive_c" kann auch anders heissen und muss auch nicht
im .wine-Verzeichnis liegen allerdings muss dann die folgende
Konfigurationsdatei angepasst werden.
Kommen wir nun zur WineX CVS-Konfigurationsdatei. Diese wird
verkörpert durch die Datei .wine/config
So sieht meine aus:

*** LISTING 1: .wine/config ***


WINE REGISTRY Version 2
;; All keys relative to \\Machine\\Software\\Wine\\Wine\\Config

;;
;; MS-DOS drives configuration
;;
;; Each section has the following format:
;; [Drive X]
;; "Path"="xxx" (Unix path for drive root)
;; "Type"="xxx" (supported types are 'floppy', 'hd', 'cdrom' and 'network')
;; "Label"="xxx" (drive label, at most 11 characters)
;; "Serial"="xxx" (serial number, 8 characters hexadecimal number)
;; "Filesystem"="xxx" (supported types are 'msdos'/'dos'/'fat', 'win95'/'vfat', 'unix')
;; This is the FS Wine is supposed to emulate on a certain
;; directory structure.
;; Recommended:
;; - "win95" for ext2fs, VFAT and FAT32
;; - "msdos" for FAT16 (ugly, upgrading to VFAT driver strongly recommended)
;; DON'T use "unix" unless you intend to port programs using Winelib !
;; "Device"="/dev/xx" (only if you want to allow raw device access)
;;
[Drive A]
"Path" = "/mnt/floppy"
"Type" = "floppy"
"Label" = "Floppy"
"Device" = "/dev/fd0"
"Filesystem" = "win95"

[Drive C]
"Path" = "/home/username/.wine/drive_c"
"Type" = "hd"
"Label" = "Dos Drive"
"Filesystem" = "win95"

[Drive D]
"Path" = "/mnt/cdrom"
"Type" = "cdrom"
"Label" = "CD-ROM"
"Filesystem" = "win95"
"Device" = "/dev/hda"

#[Drive D]
#"Path" = "${HOME}"
#"Type" = "hd"
#"Label" = "My Home"
#"Filesystem" = "win95"

[Drive E]
"Path" = "/tmp"
"Type" = "hd"
"Label" = "tmp"
"Filesystem" = "win95"

[Drive G]
"Path" = "/"
"Type" = "hd"
"Label" = "root"
"Filesystem" = "win95"

[wine]
"Windows" = "c:\\windows"
"System" = "c:\\windows\\system32\\"
"Temp" = "e:\\"
"Path" = "c:\\windows\\;c:\\windows\\system32\\"
"GraphicsDriver" = "x11drv"
; Wine doesn't pass directory symlinks to Windows programs by default.
; Enabling this may crash some programs that do recursive lookups of a whole
; subdir tree in case of a symlink pointing back to itself.
;
; Note: The WINESHELLLINK Environment variable will override this setting.
; (which is set in the winex startup script)
;"ShowDirSymlinks" = "1"
"ShellLinker" = "/usr/lib/transgaming_winex3/winex/bin/wineshelllink"

# <wineconf>

[DllDefaults]
"DefaultLoadOrder" = "native, builtin, so"

[DllOverrides]
"commdlg" = "builtin, native"
"comdlg32" = "builtin, native"
"oleaut32" = "builtin, native"
"ver" = "builtin, native"
"version" = "builtin, native"
"shell" = "builtin, native"
"shell32" = "builtin, native"
"shfolder" = "builtin, native"
"shlwapi" = "builtin, native"
"lzexpand" = "builtin, native"
"lz32" = "builtin, native"
"comctl32" = "builtin, native"
"commctrl" = "builtin, native"
"advapi32" = "builtin, native"
"crtdll" = "builtin, native"
"mpr" = "builtin, native"
"winspool.drv" = "builtin, native"
"d3d8" = "builtin, native"
"d3drm" = "builtin, native"
"ddraw" = "builtin, native"
"dinput" = "builtin, native"
"dinput8" = "builtin, native"
"dmusic" = "builtin, native"
"dsound" = "builtin, native"
"opengl32" = "builtin, native"
"msvcrt" = "native, builtin"
"rpcrt4" = "native, builtin"
"msvideo" = "builtin, native"
"msvfw32" = "builtin, native"
"mcicda.drv" = "builtin, native"
"mciseq.drv" = "builtin, native"
"mciwave.drv" = "builtin, native"
"mciavi.drv" = "native, builtin"
"mcianim.drv" = "native, builtin"
"msacm.drv" = "builtin, native"
"msacm" = "builtin, native"
"msacm32" = "builtin, native"
"midimap.drv" = "builtin, native"
"wininet" = "builtin, native"

[Version]
; Windows version to imitate. Valid versions are: 'win20', 'win30', 'win31', 'win95', 'win98', 'winme', 'nt351', 'nt40', 'win2000', 'winxp'
"Windows" = "win2k"
; DOS version to imitate
;"DOS" = "6.22"

[x11drv]
; Number of colors to allocate from the system palette
"AllocSystemColors" = "100"
; Number of colors to copy from the default palette
"CopyDefaultColors" = "0"
; Use a private color map
"PrivateColorMap" = "N"
; Favor correctness over speed in some graphics operations
"PerfectGraphics" = "N"
; Color depth to use on multi-depth screens
;;"ScreenDepth" = "16"
; Name of X11 display to use
;;"Display" = ":0.0"
; Allow the window manager to manage created windows
"Managed" = "Y"
; Use a desktop window of 640x480 for Wine
;"Desktop" = "800x600"
; Use XFree86 DGA extension if present
; (make sure /dev/mem is accessible by you !)
"UseDGA" = "Y"
; Use XShm extension if present
"UseXShm" = "Y"
; Enable DirectX mouse grab
"DXGrab" = "Y"
; Use XVidMode extension if present
"UseXVidMode" = "Y"
; Use XRandR extension if present
"UseXRandR" = "N"
; Create the desktop window with a double-buffered visual
; (useful to play OpenGL games)
"DesktopDoubleBuffered" = "Y"
; Code page used for captions in managed mode
; 0 means default ANSI code page (CP_ACP == 0)
"TextCP" = "0"
; Use this if you have more than one port for video on your setup
; (Wine uses for now the first 'input image' it finds).
;; "XVideoPort" = "43"
; Use this to make your X server execute all commands
; sequentially rather than buffering commands. Will make
; everything really SLOW but can be nice for debugging.
;; "Synchronous" = "Y"
; Enable the TransGaming HUD
;; "ShowFPS" = "Y"

[d3dgl]
"AnisotropicTextureFiltering" = "N"
"VertexShaders" = "Y"
"ClipSpaceFix" = "Y"

[fonts]
;Read documentation/fonts before adding aliases
"Resolution" = "96"
"Default" = "-adobe-times-"

[FontPatterns]
"Pattern0" = "-adobe-times*"
"Pattern1" = "-adobe-helvetica*"
"Pattern2" = "-adobe-courier*"
"Pattern3" = "-misc-fixed*"

[memory]
;; Attempt to make memory allocation more windows like.
;; Not for use with all applications. Best used in app default section.
;; "MemoryLayoutOverride" = "0x10000000"



[serialports]
"Com1" = "/dev/ttyS0"
"Com2" = "/dev/ttyS1"
"Com3" = "/dev/ttyS2"
"Com4" = "/dev/modem"

[parallelports]
"Lpt1" = "/dev/lp0"

[spooler]
"LPT1:" = "|lpr"
"LPT2:" = "|gs -sDEVICE=bj200 -sOutputFile=/tmp/fred -q -"
"LPT3:" = "/dev/lp3"

[ports]
;"read" = "0x779,0x379,0x280-0x2a0"
; "write" = "0x779,0x379,0x280-0x2a0"

[spy]
"Exclude" = "WM_SIZE;WM_TIMER;"

[registry]
;These are all booleans. Y/y/T/t/1 are true, N/n/F/f/0 are false.
;Defaults are read all, write to Home
; Global registries (stored in /etc)
"LoadGlobalRegistryFiles" = "n"
; Home registries (stored in ~user/.wine/)
"LoadHomeRegistryFiles" = "Y"
; Load Windows registries from the Windows directory
"LoadWindowsRegistryFiles" = "n"
; TRY to write all changes to home registries
"WritetoHomeRegistryFiles" = "Y"
; Registry periodic save timeout in seconds
; "PeriodicSave" = "600"
; Save only modified keys
"SaveOnlyUpdatedKeys" = "Y"

[Tweak.Layout]
;; supported styles are 'Win31'(default), 'Win95', 'Win98'
"WineLook" = "Win98"

[Console]
"Drivers" = "xterm"
;"Drivers" = "tty"
"XtermProg" = "konsole"
;"InitialRows" = "25"
;"InitialColumns" = "80"
;"TerminalType" = "nxterm"

[Clipboard]
"ClearAllSelections" = "0"
"PersistentSelection" = "1"

; List of all directories directly contain .AFM files
[afmdirs]
;"1" = "/usr/share/ghostscript/fonts"
;"2" = "/usr/share/a2ps/afm"
;"3" = "/usr/share/enscript"
;"4" = "/usr/X11R6/lib/X11/fonts/Type1"

[WinMM]
"Drivers" = "wineoss.drv"
"WaveMapper" = "msacm.drv"
"MidiMapper" = "midimap.drv"

[wineoss]
"UseMMap" = "Y"
"FullDuplex" = "N"

;; App default settings

;; Battle Field 1942 settings
[AppDefaults\\bf1942.exe\\d3dgl]
"ClipSpaceFix" = "N"

;; Medal Of Honor settings
[AppDefaults\\mohaa.exe\\memory]
"MemoryLayoutOverride" = "0x10000000"
[AppDefaults\\mohaademo.exe\\memory]
"MemoryLayoutOverride" = "0x10000000"

[AppDefaults\\moh_spearhead.exe\\memory]
"MemoryLayoutOverride" = "0x10000000"
[AppDefaults\\moh_spearhead.exe\\Version]
"Windows" = "win2k"
[AppDefaults\\moh_spearhead_demo.exe\\memory]
"MemoryLayoutOverride" = "0x10000000"

;; SimCity 4 settings
[AppDefaults\\SimCity 4.exe\\Version]
"Windows" = "win2k"

[AppDefaults\\SimCity 4.exe\\transgaming]
"cmdlineadd" = "-d:software"


;; Civ 3
[AppDefaults\\Civilization3.exe\\Version]
"Windows" = "win2k"

# </wineconf>

*** LISTING ENDE ***

Nicht gerade die schönste und angepassteste, aber sie
funktioniert :-)
Ich gehe hier nicht auf jede einzelne Option ein, nur auf einige
wichtige, da das sonst den Rahmen des Howto sprengen würde.

Abschnitt Laufwerkskonfiguration:
Erklärt sich prinzipiell alles von selbst, möglicherweise
müsst ihr einige Pfade euren Gegebenheiten anpassen.
Bei [Drive C] muss der Pfad des oben erwähnten drive_c-Verzeichnisses
angegeben werden, wenn dieses Verzeichnis woanders liegt oder
einfach einen anderen Namen hat, bitte ich darauf zu achten,
dass diese Option auch wirklich angepasst wird.

Abschnitt [x11drv]
---
"UseDGA" = "Y"
Direct Graphics Access Direkter Zugriff auf Grafikkarte, ohne geht's nicht für unsereZwecke

"Managed" = "Y"
Der Windowmanager kontrolliert alle erstellten Fenster, ohne diese Option geht bei mir die Tastatur nicht.

"DXGrab" = "Y"
DX darf die Maus grabben. Ist empfehlenswert. Warum weiss ich aber leider nicht ^^

"DesktopDoubleBuffered" = "Y"
Puffert den Desktop doppelt. Alles andere wäre IMHO zu komplex. Jedenfalls spinnen ohne diese Option einige OpenGL-Games


Abschnitt [d3dgl]
---
"AnisotropicTextureFiltering" = "N"
Anisotropische Texturenfilterung. Kostet Performance. Brauch ich nicht ^^

"VertexShaders" = "Y"
Einschalten von Vertex-Shadern. Ist Grafikkartenabhängig. Sollte ab GeForce2 und aufwärts funktionieren.

Abschnitt [WinMM]
---
Hier stellt man die Soundoptionen ein. Sofern vorhanden kann
anstatt von "Drivers" = "wineoss.drv" (OSS-Treiber) auch winealsa.drv
(ALSA-Treiber) - sofern vorhanden verwendet werden.

Abschnitt [wineoss]
---
Das hier sind Treiberspezifische Optionen vom OSS-Treiber (der im
übrigen eigentlich immer funktioniert).
"UseMMap" sollte immer auch "Y" stehen.

Abschnitt(e) [AppDefaults\\*]
---
Hier ist es möglich, so gut wie alle Optionen spielweise einzustellen.


3.2 Installation von Spielen
-----------------------------------------------
Die meisten Spiele lassen sich ganz einfach installieren, indem man
die CD mountet, in bspw. /mnt/cdrom wechselt und dort "wine setup.exe"
eingibt.

Jedoch gibt es ja auch Games, die mehrere CDs haben, was ja mounting-
technisch kompliziert ist. Meine Lösung hierfür ist folgende:

Einige Windowmanager, wie z.B. fluxbox (fluxbox.sf.net) bringen Run-
Tools mit, die das gleiche tun wie bei Windows der Befehl ausführen.
Bei neueren fluxbox-Version steht immer schon "Run..." mit im Menü.
Ich hab immer einfach die erste CD gemountet, dann Run und folgendes
eingegeben:


cd /mnt/cdrom && wine setup.exe

Natürlich ist die EXE-Datei je nach CD-Layout verschieden versteht sich.
Damit ist ersteinmal das Setup gestartet und Linux befindet sich mit
keiner Konsole irgendwo im gemounteten Verzeichnis. Wenn nach der zweiten
CD gefragt wird, einfach die erste unmounten, zweite CD ins Laufwerk
legen, mounten, auf "Weiter" oder was auch immer klicken. Warten. Fertig.

Eine andere Variante wäre, das Game auf einem Windoofs-Rechner zu
installieren und per Netzwerk auf den Linux-Boliden zu ziehen.

An dieser Stelle möchte ich nochmals auf meinen obigen Hinweis bgzl.
der Verwendung von NoCD-Cracks hinweisen. Für alle Schnellleser, es stand
in Abschnitt 2.1.

Die Games installiert man dann in einen beliebigen Ordner auf der
Fake-Windows-Platte und startet sie z.B. via


cd ~/.wine/drive_c/Games/MaxPayne2
wine MaxPayne2.exe

Ganz einfach, oder?


---

4. TROUBLESHOOTING UND FAQ

Q: Die Spiele schimpfen, dass es sich nicht um eine Original-CD handelt!
A: Hast Du den Hinweis bzgl. des NoCD-Cracks gelesen, der benötigt wird?

Q: Die Spiele stürzen vor dem Anzeigen des Menüs ab!
A: Kann seeeehr viele Ursachen haben, bspw.
1. Kein 3D-beschl. Treiber installiert
2. DGA (s. Abschnitt "Konfiguration von WineX") ist nicht
eingeschaltet.

Q: Wie kann ich die Version von WineX CVS ermitteln?
A: So direkt nicht, da es keine Versionen in dem Sinne gibt. Du kannst nur nachschauen, wann Du WineX aus dem CVS geholt hast.

Q: Ich benutze Fedora Core 1 und bekomme beim starten von Programmen per WineX eine Meldung a la "/home/[user]/.wine/wineserver-[user]/socket: No such file or directory.".
Was kann ich tun?
A: Das ganze liegt an einer Sache bei Fedora, welche sich Prelinking nennt (oder schimpft :ugly:). Prelinking soll diverse Programme beschleunigen hat allerdings den unangenehmen
Nebeneffekt, WineX instabil zu machen. Man kann es wiefolgt deaktivieren (folgende Befehle als root ausführen!!!):


emacs /etc/sysconfig/prelink

und PRELINKING auf NO setzen (An Stelle von Emacs kann auch ein beliebiger anderer Editor herhalten, ich mag nur halt Emacs). Dann:


/etc/cron.daily/prelink

Das kann jetzt allerdings eine Weile dauern ;)
Desweiteren solltet ihr, bevor ihr WineX startet noch "wineserver" in die Konsole eingeben und ihr habt keine Probleme mehr :)

---

5. ABSCHLUSS/KONTAKT

So, ich hoffe das Howto hat euch etwas weiter gebracht um euer Lieblings-
game zum laufen zu bringen.
Solltet ihr Fragen, konstruktive Kritik, Erweiterungsvorschläge u.ä.
haben, so bin ich wiefolgt zu erreichen:

eMail: entfernt, wegen Spam, bitte kontaktiert mich ueber ICQ oder Jabber!
ICQ: 125830933, Nick: k3rn3lpanic
Jabber: segmentationfault@jabber.ccc.de
Linuxforen.de PN: click! (http://linuxforen.de/forums/private.php?s=&action=newmessage&userid=22374)

So long, and thanks for all the fish ^^

6. HISTORY
25.01.2004: Das erste Release ^^
27.01.2004: Korrektur des CVS-Befehles zum Checkout und des Compilier-Befehls - Danke an BastiG und NUPSI
27.01.2004: Smileys deaktiviert - Danke für den Hinweis an kshade
16.03.2004: Neue eMail-Adresse Die alte bitte nicht mehr verwenden!
16.03.2004: Troubleshooting-Tipps bzgl. Fedora hinzugefügt
16.03.2004: Schusselfehler bei den Fedora-Tipps korrigiert, Danke an BoneCracker

Copyleft (c) 2004 by k3rn3lpanic.
Dieses HOWTO wurde unter der GNU FDL veröffentlicht.
-> http://www.gnu.org/copyleft/fdl.html