From f29685523465fb0d2d0d6bbe9985cf11207cde23 Mon Sep 17 00:00:00 2001
From: whiteshark0 <whiteshark0@b956fd51-792f-4845-bead-9b4dfca2ff2c>
Date: Tue, 12 Jan 2010 19:55:25 +0000
Subject: deleted leftovers from old plugin system and party mode

git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2080 b956fd51-792f-4845-bead-9b4dfca2ff2c
---
 src/base/UDLLManager.pas             | 293 ------------------
 src/base/UDraw.pas                   | 256 ---------------
 src/base/UGraphic.pas                |   1 -
 src/base/UMain.pas                   |   1 -
 src/base/UNote.pas                   |   1 -
 src/screens/UScreenMain.pas          |   3 +-
 src/screens/UScreenPartyNewRound.pas |   1 -
 src/screens/UScreenPartyOptions.pas  |   1 -
 src/screens/UScreenPartyRounds.pas   |   1 -
 src/screens/UScreenSingModi.pas      | 582 -----------------------------------
 src/screens/UScreenSong.pas          |   1 -
 src/ultrastardx.dpr                  |   8 -
 12 files changed, 1 insertion(+), 1148 deletions(-)
 delete mode 100644 src/base/UDLLManager.pas
 delete mode 100644 src/screens/UScreenSingModi.pas

diff --git a/src/base/UDLLManager.pas b/src/base/UDLLManager.pas
deleted file mode 100644
index d5bb1480..00000000
--- a/src/base/UDLLManager.pas
+++ /dev/null
@@ -1,293 +0,0 @@
-{* UltraStar Deluxe - Karaoke Game
- *
- * UltraStar Deluxe is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * 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 2
- * 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; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *}
-
-unit UDLLManager;
-
-interface
-
-{$IFDEF FPC}
-  {$MODE Delphi}
-{$ENDIF}
-
-{$I switches.inc}
-
-uses
-  ModiSDK,
-  UFiles,
-  UPath,
-  UFilesystem;
-
-type
-  TDLLMan = class
-    private
-      hLib:     THandle;
-      P_Init:   fModi_Init;
-      P_Draw:   fModi_Draw;
-      P_Finish: fModi_Finish;
-      P_RData:  pModi_RData;
-    public
-      Plugins: array of TPluginInfo;
-      PluginPaths: array of IPath;
-      Selected: ^TPluginInfo;
-
-      constructor Create;
-
-      procedure GetPluginList;
-      procedure ClearPluginInfo(No: cardinal);
-      function  LoadPluginInfo(const Filename: IPath; No: cardinal): boolean;
-
-      function  LoadPlugin(No: cardinal): boolean;
-      procedure UnLoadPlugin;
-
-      function  PluginInit   (const TeamInfo:   TTeamInfo; 
-                              var   Playerinfo: TPlayerinfo;
-			      const Sentences:  TSentences;
-			      const LoadTex:    fModi_LoadTex;
-			      const Print:      fModi_Print;
-			            LoadSound:  fModi_LoadSound;
-				    PlaySound:  pModi_PlaySound)
-			     : boolean;
-      function  PluginDraw   (var Playerinfo: TPlayerinfo; const CurSentence: cardinal): boolean;
-      function  PluginFinish (var Playerinfo: TPlayerinfo): byte;
-      procedure PluginRData  (handle: HSTREAM; buffer: Pointer; len: dword; user: dword);
-  end;
-
-var
-  DLLMan: TDLLMan;
-
-const
-{$IF Defined(MSWINDOWS)}
-  DLLExt  = '.dll';
-{$ELSEIF Defined(DARWIN)}
-  DLLExt  = '.dylib';
-{$ELSEIF Defined(UNIX)}
-  DLLExt  = '.so';
-{$IFEND}
-
-implementation
-
-uses
-  {$IFDEF MSWINDOWS}
-  windows,
-  {$ELSE}
-  dynlibs,
-  {$ENDIF}
-  UPathUtils,
-  ULog,
-  SysUtils;
-
-
-constructor TDLLMan.Create;
-begin
-  inherited;
-  SetLength(Plugins, 0);
-  SetLength(PluginPaths, Length(Plugins));
-  GetPluginList;
-end;
-
-procedure TDLLMan.GetPluginList;
-var
-  Iter: IFileIterator;
-  FileInfo: TFileInfo;
-begin
-  Iter := FileSystem.FileFind(PluginPath.Append('*' + DLLExt), 0);
-  while (Iter.HasNext) do
-  begin
-    SetLength(Plugins, Length(Plugins)+1);
-    SetLength(PluginPaths, Length(Plugins));
-
-    FileInfo := Iter.Next;
-
-    if LoadPluginInfo(FileInfo.Name, High(Plugins)) then // loaded succesful
-    begin
-      PluginPaths[High(PluginPaths)] := FileInfo.Name;
-    end
-    else // error loading
-    begin
-      SetLength(Plugins, Length(Plugins)-1);
-      SetLength(PluginPaths, Length(Plugins));
-    end;
-  end;
-end;
-
-procedure TDLLMan.ClearPluginInfo(No: cardinal);
-begin
-// set to party modi plugin
-  Plugins[No].Typ := 8;
-
-  Plugins[No].Name := 'unknown';
-  Plugins[No].NumPlayers := 0;
-
-  Plugins[No].Creator := 'Nobody';
-  Plugins[No].PluginDesc := 'NO_PLUGIN_DESC';
-
-  Plugins[No].LoadSong  := true;
-  Plugins[No].ShowScore := true;
-  Plugins[No].ShowBars  := true;
-  Plugins[No].ShowNotes := true;
-  Plugins[No].LoadVideo := true;
-  Plugins[No].LoadBack  := true;
-
-  Plugins[No].TeamModeOnly := true;
-  Plugins[No].GetSoundData := true;
-  Plugins[No].Dummy := true;
-
-
-  Plugins[No].BGShowFull   := true;
-  Plugins[No].BGShowFull_O := true;
-
-  Plugins[No].ShowRateBar   := true;
-  Plugins[No].ShowRateBar_O := true;
-
-  Plugins[No].EnLineBonus   := true;
-  Plugins[No].EnLineBonus_O := true;
-end;
-
-function TDLLMan.LoadPluginInfo(const Filename: IPath; No: cardinal): boolean;
-var
-  hLibg: THandle;
-  Info: pModi_PluginInfo;
-//  I: integer;
-begin
-  Result := true;
-// clear plugin info
-  ClearPluginInfo(No);
-
-{
-// workaround plugins loaded 2 times
-  for i := low(pluginpaths) to high(pluginpaths) do
-    if (pluginpaths[i] = filename) then
-      exit;
-}
-
-// load libary
-  hLibg := LoadLibrary(PChar(PluginPath.Append(Filename).ToNative));
-// if loaded
-  if (hLibg <> 0) then
-  begin
-// load info procedure
-    @Info := GetProcAddress(hLibg, PChar('PluginInfo'));
-
-// if loaded
-    if (@Info <> nil) then
-    begin
-// load plugininfo
-      Info(Plugins[No]);
-      Result := true;
-    end
-    else
-      Log.LogError('Could not load plugin "' + Filename.ToNative + '": Info procedure not found');
-
-    FreeLibrary (hLibg);
-  end
-  else
-    Log.LogError('Could not load plugin "' + Filename.ToNative + '": Libary not loaded');
-end;
-
-function TDLLMan.LoadPlugin(No: cardinal): boolean;
-begin
-  Result := true;
-// load libary
-  hLib := LoadLibrary(PChar(PluginPath.Append(PluginPaths[No]).ToNative));
-// if loaded
-  if (hLib <> 0) then
-  begin
-// load info procedure
-    @P_Init := GetProcAddress (hLib, 'Init');
-    @P_Draw := GetProcAddress (hLib, 'Draw');
-    @P_Finish := GetProcAddress (hLib, 'Finish');
-
-// if loaded
-    if (@P_Init <> nil) and (@P_Draw <> nil) and (@P_Finish <> nil) then
-    begin
-      Selected := @Plugins[No]; 
-      Result := true;
-    end
-    else
-    begin
-      Log.LogError('Could not load plugin "' + PluginPaths[No].ToNative + '": Procedures not found');
-    end;
-  end
-  else
-    Log.LogError('Could not load plugin "' + PluginPaths[No].ToNative + '": Libary not loaded');
-end;
-
-procedure TDLLMan.UnLoadPlugin;
-begin
-  if (hLib <> 0) then
-    FreeLibrary (hLib);
-
-//  Selected := nil;
-  @P_Init   := nil;
-  @P_Draw   := nil;
-  @P_Finish := nil;
-  @P_RData  := nil;
-end;
-
-function TDLLMan.PluginInit (const TeamInfo:   TTeamInfo;
-                             var   Playerinfo: TPlayerinfo;
-			     const Sentences:  TSentences;
-			     const LoadTex:    fModi_LoadTex;
-			     const Print:      fModi_Print;
-			           LoadSound:  fModi_LoadSound;
-			           PlaySound:  pModi_PlaySound)
-			    : boolean;
-var
-  Methods: TMethodRec;
-begin
-  Methods.LoadTex := LoadTex;
-  Methods.Print := Print;
-  Methods.LoadSound := LoadSound;
-  Methods.PlaySound := PlaySound;
-  
-  if (@P_Init <> nil) then
-    Result := P_Init (TeamInfo, PlayerInfo, Sentences, Methods)
-  else
-    Result := true
-end;
-
-function TDLLMan.PluginDraw   (var Playerinfo: TPlayerinfo; const CurSentence: cardinal): boolean;
-begin
-  if (@P_Draw <> nil) then
-    Result := P_Draw (PlayerInfo, CurSentence)
-  else
-    Result := true
-end;
-
-function TDLLMan.PluginFinish (var Playerinfo: TPlayerinfo): byte;
-begin
-  if (@P_Finish <> nil) then
-    Result := P_Finish (PlayerInfo)
-  else
-    Result := 0;
-end;
-
-procedure TDLLMan.PluginRData  (handle: HStream; buffer: Pointer; len: dword; user: dword);
-begin
-if (@P_RData <> nil) then
-  P_RData (handle, buffer, len, user);
-end;
-
-end.
diff --git a/src/base/UDraw.pas b/src/base/UDraw.pas
index 47863f62..ada0bdb6 100644
--- a/src/base/UDraw.pas
+++ b/src/base/UDraw.pas
@@ -35,11 +35,9 @@ interface
 
 uses
   UThemes,
-  ModiSDK,
   UGraphicClasses;
 
 procedure SingDraw;
-procedure SingModiDraw (PlayerInfo: TPlayerInfo);
 procedure SingDrawBackground;
 procedure SingDrawOscilloscope(X, Y, W, H: real; NrSound: integer);
 procedure SingDrawNoteLines(Left, Top, Right: real; Space: integer);
@@ -86,7 +84,6 @@ uses
   Math,
   gl,
   TextGL,
-  UDLLManager,
   UDrawTexture,
   UGraphic,
   UIni,
@@ -904,259 +901,6 @@ begin
   glDisable(GL_TEXTURE_2D);
 end;
 
-// q'n'd for using the game mode dll's
-procedure SingModiDraw (PlayerInfo: TPlayerInfo);
-var
-  NR: TRecR;
-begin
-  // positions
-  if Ini.SingWindow = 0 then
-  begin
-    NR.Left := 120;
-  end
-  else
-  begin
-    NR.Left := 20;
-  end;
-
-  NR.Right := 780;
-  NR.Width := NR.Right - NR.Left;
-  NR.WMid  := NR.Width / 2;
-  NR.Mid   := NR.Left + NR.WMid;
-
-  // time bar
-  SingDrawTimeBar();
-
-  if DLLMan.Selected.ShowNotes then
-  begin
-    if PlayersPlay = 1 then
-      SingDrawNoteLines(NR.Left + 10*ScreenX, Skin_P2_NotesB - 105, NR.Right + 10*ScreenX, 15);
-    if (PlayersPlay = 2) or (PlayersPlay = 4) then
-    begin
-      SingDrawNoteLines(NR.Left + 10*ScreenX, Skin_P1_NotesB - 105, NR.Right + 10*ScreenX, 15);
-      SingDrawNoteLines(NR.Left + 10*ScreenX, Skin_P2_NotesB - 105, NR.Right + 10*ScreenX, 15);
-    end;
-
-    if (PlayersPlay = 3) or (PlayersPlay = 6) then
-    begin
-      SingDrawNoteLines(NR.Left + 10*ScreenX, 120, NR.Right + 10*ScreenX, 12);
-      SingDrawNoteLines(NR.Left + 10*ScreenX, 245, NR.Right + 10*ScreenX, 12);
-      SingDrawNoteLines(NR.Left + 10*ScreenX, 370, NR.Right + 10*ScreenX, 12);
-    end;
-  end;
-
-  // Draw Lyrics
-  //ScreenSingModi.Lyrics.Draw(LyricsState.MidBeat);
-  // TODO: Lyrics helper
-
-  // oscilloscope | the thing that moves when you yell into your mic (imho)
-  if (((Ini.Oscilloscope = 1) and (DLLMan.Selected.ShowRateBar_O)) and (not DLLMan.Selected.ShowRateBar)) then
-  begin
-    if PlayersPlay = 1 then
-      if PlayerInfo.Playerinfo[0].Enabled then
-        SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0);
-
-    if PlayersPlay = 2 then
-    begin
-      if PlayerInfo.Playerinfo[0].Enabled then
-        SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0);
-      if PlayerInfo.Playerinfo[1].Enabled then
-        SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 1);
-    end;
-
-    if PlayersPlay = 4 then
-    begin
-      if ScreenAct = 1 then
-      begin
-        if PlayerInfo.Playerinfo[0].Enabled then
-          SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0);
-        if PlayerInfo.Playerinfo[1].Enabled then
-          SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 1);
-      end;
-      if ScreenAct = 2 then
-      begin
-        if PlayerInfo.Playerinfo[2].Enabled then
-          SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 2);
-        if PlayerInfo.Playerinfo[3].Enabled then
-          SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 3);
-      end;
-    end;
-
-    if PlayersPlay = 3 then
-    begin
-      if PlayerInfo.Playerinfo[0].Enabled then
-        SingDrawOscilloscope( 75 + 10*ScreenX, 95, 100, 20, 0);
-      if PlayerInfo.Playerinfo[1].Enabled then
-        SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 1);
-      if PlayerInfo.Playerinfo[2].Enabled then
-        SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 2);
-    end;
-
-    if PlayersPlay = 6 then
-    begin
-      if ScreenAct = 1 then
-      begin
-        if PlayerInfo.Playerinfo[0].Enabled then
-          SingDrawOscilloscope( 75 + 10*ScreenX, 95, 100, 20, 0);
-        if PlayerInfo.Playerinfo[1].Enabled then
-          SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 1);
-        if PlayerInfo.Playerinfo[2].Enabled then
-          SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 2);
-      end;
-      if ScreenAct = 2 then
-      begin
-        if PlayerInfo.Playerinfo[3].Enabled then
-          SingDrawOscilloscope( 75 + 10*ScreenX, 95, 100, 20, 3);
-        if PlayerInfo.Playerinfo[4].Enabled then
-          SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 4);
-        if PlayerInfo.Playerinfo[5].Enabled then
-          SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 5);
-      end;
-    end;
-
-  end;
-
-// resize the notes according to the difficulty level
-  case Ini.Difficulty of
-    0:
-      begin
-        NotesH := 11; // 9
-        NotesW := 6; // 5
-      end;
-    1:
-      begin
-        NotesH := 8; // 7
-        NotesW := 4; // 4
-      end;
-    2:
-      begin
-        NotesH := 5;
-        NotesW := 3;
-      end;
-  end;
-
-  if (DLLMAn.Selected.ShowNotes and DLLMan.Selected.LoadSong) then
-  begin
-    if (PlayersPlay = 1) and PlayerInfo.Playerinfo[0].Enabled then
-    begin
-      SingDrawPlayerBGLine(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 0, 15);
-      SingDrawLine(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15);
-      SingDrawPlayerLine(NR.Left + 20, Skin_P2_NotesB, NR.Width - 40, 0, 15);
-    end;
-
-    if PlayersPlay = 2 then
-    begin
-      if PlayerInfo.Playerinfo[0].Enabled then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 0, 15);
-        SingDrawLine(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 15);
-        SingDrawPlayerLine(NR.Left + 20, Skin_P1_NotesB, NR.Width - 40, 0, 15);
-      end;
-      if PlayerInfo.Playerinfo[1].Enabled then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 1, 15);
-        SingDrawLine(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15);
-        SingDrawPlayerLine(NR.Left + 20, Skin_P2_NotesB, NR.Width - 40, 1, 15);
-      end;
-
-    end;
-
-    if PlayersPlay = 3 then
-    begin
-      NotesW := NotesW * 0.8;
-      NotesH := NotesH * 0.8;
-
-      if PlayerInfo.Playerinfo[0].Enabled then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, 120+95, NR.Right - 20, 0, 0, 12);
-        SingDrawLine(NR.Left + 20, 120+95, NR.Right - 20, 0, 12);
-        SingDrawPlayerLine(NR.Left + 20, 120+95, NR.Width - 40, 0, 12);
-      end;
-
-      if PlayerInfo.Playerinfo[1].Enabled then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, 245+95, NR.Right - 20, 0, 1, 12);
-        SingDrawLine(NR.Left + 20, 245+95, NR.Right - 20, 0, 12);
-        SingDrawPlayerLine(NR.Left + 20, 245+95, NR.Width - 40, 1, 12);
-      end;
-
-      if PlayerInfo.Playerinfo[2].Enabled then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, 370+95, NR.Right - 20, 0, 2, 12);
-        SingDrawLine(NR.Left + 20, 370+95, NR.Right - 20, 0, 12);
-        SingDrawPlayerLine(NR.Left + 20, 370+95, NR.Width - 40, 2, 12);
-      end;
-    end;
-
-    if PlayersPlay = 4 then
-    begin
-      if ScreenAct = 1 then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 0, 15);
-        SingDrawPlayerBGLine(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 1, 15);
-      end;
-      if ScreenAct = 2 then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 2, 15);
-        SingDrawPlayerBGLine(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 3, 15);
-      end;
-
-      SingDrawLine(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 15);
-      SingDrawLine(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15);
-
-      if ScreenAct = 1 then
-      begin
-        SingDrawPlayerLine(NR.Left + 20, Skin_P1_NotesB, NR.Width - 40, 0, 15);
-        SingDrawPlayerLine(NR.Left + 20, Skin_P2_NotesB, NR.Width - 40, 1, 15);
-      end;
-      if ScreenAct = 2 then
-      begin
-        SingDrawPlayerLine(NR.Left + 20, Skin_P1_NotesB, NR.Width - 40, 2, 15);
-        SingDrawPlayerLine(NR.Left + 20, Skin_P2_NotesB, NR.Width - 40, 3, 15);
-      end;
-    end;
-
-    if PlayersPlay = 6 then
-    begin
-      NotesW := NotesW * 0.8;
-      NotesH := NotesH * 0.8;
-
-      if ScreenAct = 1 then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, 120+95, NR.Right - 20, 0, 0, 12);
-        SingDrawPlayerBGLine(NR.Left + 20, 245+95, NR.Right - 20, 0, 1, 12);
-        SingDrawPlayerBGLine(NR.Left + 20, 370+95, NR.Right - 20, 0, 2, 12);
-      end;
-      if ScreenAct = 2 then
-      begin
-        SingDrawPlayerBGLine(NR.Left + 20, 120+95, NR.Right - 20, 0, 3, 12);
-        SingDrawPlayerBGLine(NR.Left + 20, 245+95, NR.Right - 20, 0, 4, 12);
-        SingDrawPlayerBGLine(NR.Left + 20, 370+95, NR.Right - 20, 0, 5, 12);
-      end;
-
-      SingDrawLine(NR.Left + 20, 120+95, NR.Right - 20, 0, 12);
-      SingDrawLine(NR.Left + 20, 245+95, NR.Right - 20, 0, 12);
-      SingDrawLine(NR.Left + 20, 370+95, NR.Right - 20, 0, 12);
-
-      if ScreenAct = 1 then
-      begin
-        SingDrawPlayerLine(NR.Left + 20, 120+95, NR.Width - 40, 0, 12);
-        SingDrawPlayerLine(NR.Left + 20, 245+95, NR.Width - 40, 1, 12);
-        SingDrawPlayerLine(NR.Left + 20, 370+95, NR.Width - 40, 2, 12);
-      end;
-      if ScreenAct = 2 then
-      begin
-        SingDrawPlayerLine(NR.Left + 20, 120+95, NR.Width - 40, 3, 12);
-        SingDrawPlayerLine(NR.Left + 20, 245+95, NR.Width - 40, 4, 12);
-        SingDrawPlayerLine(NR.Left + 20, 370+95, NR.Width - 40, 5, 12);
-      end;
-    end;
-  end;
-
-  glDisable(GL_BLEND);
-  glDisable(GL_TEXTURE_2D);
-end;
-
 {//SingBar Mod
 procedure SingDrawSingbar(X, Y, W, H: real; Percent: integer);
 var
diff --git a/src/base/UGraphic.pas b/src/base/UGraphic.pas
index f658c800..784e5493 100644
--- a/src/base/UGraphic.pas
+++ b/src/base/UGraphic.pas
@@ -71,7 +71,6 @@ uses
   UScreenSongMenu,
   UScreenSongJumpto,
   {Party Screens}
-  UScreenSingModi,
   UScreenPartyNewRound,
   UScreenPartyScore,
   UScreenPartyOptions,
diff --git a/src/base/UMain.pas b/src/base/UMain.pas
index 7b082c57..aefbf9f0 100644
--- a/src/base/UMain.pas
+++ b/src/base/UMain.pas
@@ -74,7 +74,6 @@ uses
   UCovers,
   UDataBase,
   UDisplay,
-  UDLLManager,
   UGraphic,
   UGraphicClasses,
   UIni,
diff --git a/src/base/UNote.pas b/src/base/UNote.pas
index 8e5b709a..6eb99df9 100644
--- a/src/base/UNote.pas
+++ b/src/base/UNote.pas
@@ -123,7 +123,6 @@ uses
   UCatCovers,
   UDataBase,
   UPlaylist,
-  UDLLManager,
   UParty,
   UConfig,
   UCommon,
diff --git a/src/screens/UScreenMain.pas b/src/screens/UScreenMain.pas
index b342281c..8bdfe419 100644
--- a/src/screens/UScreenMain.pas
+++ b/src/screens/UScreenMain.pas
@@ -67,7 +67,6 @@ uses
   Textgl,
   ULanguage,
   UParty,
-  UDLLManager,
   UScreenCredits,
   USkins,
   UUnicodeUtils;
@@ -98,7 +97,7 @@ begin
         end;
       end;
       Ord('M'): begin
-        if (Ini.Players >= 1) and (Length(DLLMan.Plugins) >= 1) then
+        if (Ini.Players >= 1) and (Party.ModesAvailable) then
         begin
           FadeTo(@ScreenPartyOptions, SoundLib.Start);
           Exit;
diff --git a/src/screens/UScreenPartyNewRound.pas b/src/screens/UScreenPartyNewRound.pas
index b52efd21..6a1c8e69 100644
--- a/src/screens/UScreenPartyNewRound.pas
+++ b/src/screens/UScreenPartyNewRound.pas
@@ -94,7 +94,6 @@ uses
   UIni,
   UTexture,
   UParty,
-  UDLLManager,
   ULanguage,
   USong,
   ULog,
diff --git a/src/screens/UScreenPartyOptions.pas b/src/screens/UScreenPartyOptions.pas
index 3dce9954..998d3655 100644
--- a/src/screens/UScreenPartyOptions.pas
+++ b/src/screens/UScreenPartyOptions.pas
@@ -74,7 +74,6 @@ uses
   ULanguage,
   UParty,
   USong,
-  UDLLManager,
   UPlaylist,
   USongs,
   UUnicodeUtils;
diff --git a/src/screens/UScreenPartyRounds.pas b/src/screens/UScreenPartyRounds.pas
index 146b8beb..5211e32c 100644
--- a/src/screens/UScreenPartyRounds.pas
+++ b/src/screens/UScreenPartyRounds.pas
@@ -76,7 +76,6 @@ uses
   ULanguage,
   UParty,
   USong,
-  UDLLManager,
   UPlaylist,
   USongs,
   UUnicodeUtils;
diff --git a/src/screens/UScreenSingModi.pas b/src/screens/UScreenSingModi.pas
deleted file mode 100644
index 48d1e9a1..00000000
--- a/src/screens/UScreenSingModi.pas
+++ /dev/null
@@ -1,582 +0,0 @@
-{* UltraStar Deluxe - Karaoke Game
- *
- * UltraStar Deluxe is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * 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 2
- * 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; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *}
-
-unit UScreenSingModi;
-
-interface
-
-{$IFDEF FPC}
-  {$MODE Delphi}
-{$ENDIF}
-
-{$I switches.inc}
-
-uses
-  UMenu,
-  UMusic,
-  SDL,
-  SysUtils,
-  UFiles,
-  UTime,
-  USongs,
-  UIni,
-  ULog,
-  UTexture,
-  ULyrics,
-  TextGL,
-  gl,
-  UPath,
-  UThemes,
-  UScreenSing,
-  ModiSDK;
-
-type
-  TScreenSingModi = class(TScreenSing)
-    protected
-    
-    public
-      Winner: byte; //Who Wins
-      PlayerInfo: TPlayerInfo;
-      TeamInfo:   TTeamInfo;
-
-      constructor Create; override;
-      procedure OnShow; override;
-      //procedure onShowFinish; override;
-      function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
-      function Draw: boolean; override;
-      procedure Finish; override;
-  end;
-
-type
-  TCustomSoundEntry = record
-    Filename : IPath;
-    Stream   : TAudioPlaybackStream;
-  end;
-
-var
-  //Custom Sounds
-  CustomSounds: array of TCustomSoundEntry;
-
-//Procedured for Plugin
-function LoadTex(const Name: PChar; Typ: TTextureType): TsmallTexture;
-  {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
-//function Translate (const Name: PChar): PChar;
-//  {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
-//Procedure to Print Text
-procedure Print(const Style, Size: byte; const X, Y: real; const Text: PChar);
-  {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
-//Procedure that loads a Custom Sound
-function LoadSound(const Name: PChar): cardinal;
-  {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
-//Plays a Custom Sound
-procedure PlaySound(const Index: cardinal);
-  {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
-
-//Utilys
-function ToSentences(Const Lines: TLines): TSentences;
-
-implementation
-
-uses
-  Classes, 
-  Math,
-  UDLLManager,
-  UDraw,
-  UGraphic,
-  UGraphicClasses,
-  ULanguage,
-  UNote,
-  UPathUtils,
-  URecord, 
-  USkins;
-
-// Method for input parsing. If false is returned, GetNextWindow
-// should be checked to know the next window to load;
-function TScreenSingModi.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
-begin
-  Result := true;
-  if (PressedDown) then
-  begin // Key Down
-    case PressedKey of
-
-      SDLK_ESCAPE,
-      SDLK_BACKSPACE :
-        begin
-          Finish;
-          AudioPlayback.PlaySound(SoundLib.Back);
-          FadeTo(@ScreenPartyScore);
-        end;
-
-      else
-        Result := inherited ParseInput(PressedKey, CharCode, PressedDown);
-    end;
-  end;
-end;
-
-constructor TScreenSingModi.Create;
-begin
-  inherited Create;
-
-end;
-
-function ToSentences(Const Lines: TLines): TSentences;
-var
-  I, J: integer;
-begin
-  Result.Current     := Lines.Current;
-  Result.High        := Lines.High;
-  Result.Number      := Lines.Number;
-  Result.Resolution  := Lines.Resolution;
-  Result.NotesGAP    := Lines.NotesGAP;
-  Result.TotalLength := Lines.ScoreValue;
-
-  SetLength(Result.Sentence, Length(Lines.Line));
-  for I := low(Result.Sentence) to high(Result.Sentence) do
-  begin
-    Result.Sentence[I].Start      := Lines.Line[I].Start;
-    Result.Sentence[I].StartNote  := Lines.Line[I].Note[0].Start;
-    Result.Sentence[I].Lyric      := Lines.Line[I].Lyric;
-    Result.Sentence[I].End_       := Lines.Line[I].End_;
-    Result.Sentence[I].BaseNote   := Lines.Line[I].BaseNote;
-    Result.Sentence[I].HighNote   := Lines.Line[I].HighNote;
-    Result.Sentence[I].TotalNotes := Lines.Line[I].TotalNotes;
-
-    SetLength(Result.Sentence[I].Note, Length(Lines.Line[I].Note));
-    for J := low(Result.Sentence[I].Note) to high(Result.Sentence[I].Note) do
-    begin
-      Result.Sentence[I].Note[J].Color     := Lines.Line[I].Note[J].Color;
-      Result.Sentence[I].Note[J].Start     := Lines.Line[I].Note[J].Start;
-      Result.Sentence[I].Note[J].Length    := Lines.Line[I].Note[J].Length;
-      Result.Sentence[I].Note[J].Tone      := Lines.Line[I].Note[J].Tone;
-      //Result.Sentence[I].Note[J].Text      := Lines.Line[I].Note[J].Text;
-      Result.Sentence[I].Note[J].FreeStyle := (Lines.Line[I].Note[J].NoteType = ntFreestyle);
-    end;
-  end;
-end;
-
-procedure TScreenSingModi.OnShow;
-var
-  I: integer;
-begin
-  inherited;
-
-  PlayersPlay := TeamInfo.NumTeams;
-
-  if DLLMan.Selected.LoadSong then //Start with Song
-  begin
-    inherited;
-  end
-  else //Start Without Song
-  begin
-    AudioInput.CaptureStart;
-  end;
-
-//Set Playerinfo
-  PlayerInfo.NumPlayers := PlayersPlay;
-  for I := 0 to PlayerInfo.NumPlayers-1 do
-  begin
-    PlayerInfo.Playerinfo[I].Name    := PChar(Ini.Name[I]);
-    PlayerInfo.Playerinfo[I].Score   := 0;
-    PlayerInfo.Playerinfo[I].Bar     := 50;
-    PlayerInfo.Playerinfo[I].Enabled := true;
-  end;
-
-  for I := PlayerInfo.NumPlayers to high(PlayerInfo.Playerinfo) do
-  begin
-    PlayerInfo.Playerinfo[I].Score:=  0;
-    PlayerInfo.Playerinfo[I].Bar :=  0;
-    PlayerInfo.Playerinfo[I].Enabled := false;
-  end;
-
-  {Case PlayersPlay of
-    1: begin
-      PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H;
-    end;
-    2,4: begin
-      PlayerInfo.Playerinfo[0].PosX := Static[StaticP1TwoPScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[0].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[2].PosX := Static[StaticP1TwoPScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[2].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[1].PosX := Static[StaticP2RScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[1].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[3].PosX := Static[StaticP2RScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[3].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H;
-    end;
-    3,6: begin
-      PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ThreePScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[3].PosX := Static[StaticP1ThreePScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[3].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[1].PosX := Static[StaticP2MScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[1].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[4].PosX := Static[StaticP2MScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[4].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[2].PosX := Static[StaticP3RScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[2].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H;
-      PlayerInfo.Playerinfo[5].PosX := Static[StaticP3RScoreBG].Texture.X;
-      PlayerInfo.Playerinfo[5].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H;
-    end;
-  end;       }
-
-  // play music (I)
-  //Music.CaptureStart;
-  //Music.MoveTo(AktSong.Start);
-
-  //Init Plugin
-  if not DLLMan.PluginInit(TeamInfo, PlayerInfo, ToSentences(Lines[0]), LoadTex, Print, LoadSound, PlaySound) then
-  begin
-    //Fehler
-    Log.LogError('Could not Init Plugin');
-    Halt;
-  end;
-
-  // Set Background (Little Workaround, maybe change sometime)
-  if (DLLMan.Selected.LoadBack) and (DLLMan.Selected.LoadSong) then
-    ScreenSing.Tex_Background := Tex_Background;
-
-  Winner := 0;
-
-  //Set Score Visibility
-  Scores.Visible := DLLMan.Selected.ShowScore;
-
-  {if PlayersPlay = 1 then
-  begin
-    Text[TextP1Score].Visible := DLLMan.Selected.ShowScore;
-    Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore;
-  end;
-
-  if (PlayersPlay = 2) or (PlayersPlay = 4) then
-  begin
-    Text[TextP1TwoPScore].Visible := DLLMan.Selected.ShowScore;
-    Static[StaticP1TwoPScoreBG].Visible := DLLMan.Selected.ShowScore;
-
-    Text[TextP2RScore].Visible := DLLMan.Selected.ShowScore;
-    Static[StaticP2RScoreBG].Visible := DLLMan.Selected.ShowScore;
-  end;
-
-  if (PlayersPlay = 3) or (PlayersPlay = 6) then
-  begin
-    Text[TextP1ThreePScore].Visible := DLLMan.Selected.ShowScore;
-    Static[StaticP1ThreePScoreBG].Visible := DLLMan.Selected.ShowScore;
-
-    Text[TextP2MScore].Visible := DLLMan.Selected.ShowScore;
-    Static[StaticP2MScoreBG].Visible := DLLMan.Selected.ShowScore;
-
-    Text[TextP3RScore].Visible := DLLMan.Selected.ShowScore;
-    Static[StaticP3RScoreBG].Visible := DLLMan.Selected.ShowScore;
-  end; }
-end;
-
-function TScreenSingModi.Draw: boolean;
-var
-  Min:    integer;
-  Sec:    integer;
-  TextStr:  string;
-  S, I:   integer;
-  T:      integer;
-  CurLyricsTime: real;
-begin
-  Result := false;
-
-  //Set Playerinfo
-  PlayerInfo.NumPlayers := PlayersPlay;
-  for I := 0 to PlayerInfo.NumPlayers-1 do
-  begin
-    PlayerInfo.Playerinfo[I].Name := PChar(Player[I].Name);
-    if PlayerInfo.Playerinfo[I].Enabled then
-    begin
-      if (Player[I].ScoreTotalInt <= MAX_SONG_SCORE) then
-        PlayerInfo.Playerinfo[I].Score:=  Player[I].ScoreTotalInt;
-      PlayerInfo.Playerinfo[I].Bar :=  Round(Scores.Players[I].RBPos * 100);
-    end;
-  end;
-
-  Background.Draw;
-
-  // draw background picture (if any, and if no visualizations)
-  // when we don't check for visualizations the visualizations would
-  // be overdrawn by the picture when {UNDEFINED UseTexture} in UVisualizer
-  if (DllMan.Selected.LoadSong) and (DllMan.Selected.LoadBack) and (not fShowVisualization) then
-    SingDrawBackground;
-
-  // set player names (for 2 screens and only Singstar skin)
-  if ScreenAct = 1 then
-  begin
-    Text[TextP1].Text       := 'P1';
-    Text[TextP1TwoP].Text   := 'P1'; // added for ps3 skin
-    Text[TextP1ThreeP].Text := 'P1'; // added for ps3 skin
-    Text[TextP2R].Text      := 'P2';
-    Text[TextP2M].Text      := 'P2';
-    Text[TextP3R].Text      := 'P3';
-  end
-
-  Else if ScreenAct = 2 then
-  begin
-    case PlayersPlay of
-      4:  begin
-            Text[TextP1TwoP].Text := 'P3';
-            Text[TextP2R].Text := 'P4';
-          end;
-      6:  begin
-            Text[TextP1ThreeP].Text := 'P4';
-            Text[TextP2M].Text := 'P5';
-            Text[TextP3R].Text := 'P6';
-          end;
-    end; // case
-  end; // if
-
-    // stereo   <- and where iss P2M? or P3?
-    Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX;
-    Text[TextP1].X := Text[TextP1].X + 10*ScreenX;
-
-    {Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X + 10*ScreenX;
-    Text[TextP1Score].X := Text[TextP1Score].X + 10*ScreenX;}
-
-    Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X + 10*ScreenX;
-    Text[TextP2R].X := Text[TextP2R].X + 10*ScreenX;
-
-  for S := 1 to 1 do
-    Static[S].Texture.X := Static[S].Texture.X + 10*ScreenX;
-
-  for T := 0 to 1 do
-    Text[T].X := Text[T].X + 10*ScreenX;
-
-  if DLLMan.Selected.LoadSong then
-  begin
-    // update static menu with time ...
-    CurLyricsTime := LyricsState.GetCurrentTime();
-    Min := Round(CurLyricsTime) div 60;
-    Sec := Round(CurLyricsTime) mod 60;
-
-    Text[TextTimeText].Text := '';
-    if Min < 10 then Text[TextTimeText].Text := '0';
-    Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Min) + ':';
-    if Sec < 10 then Text[TextTimeText].Text := Text[TextTimeText].Text + '0';
-    Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Sec);
-  end;
-
-  // update and draw movie
-{  if ShowFinish and CurrentSong.VideoLoaded and DllMan.Selected.LoadVideo then
-  begin
-    UpdateSmpeg; // this only draws
-  end;}
-
-  // update and draw movie
-  if (ShowFinish and (VideoLoaded or fShowVisualization) and DllMan.Selected.LoadVideo) then
-  begin
-    if assigned(fCurrentVideoPlaybackEngine) then
-    begin
-      // Just call this once
-      // when Screens = 2
-      if (ScreenAct = 1) then
-        fCurrentVideoPlaybackEngine.GetFrame(CurrentSong.VideoGAP + LyricsState.GetCurrentTime());
-
-      fCurrentVideoPlaybackEngine.DrawGL(ScreenAct);
-    end;
-  end;
-
-  // draw static menu (FG)
-  DrawFG;
-
-  if ShowFinish then
-  begin
-    if DllMan.Selected.LoadSong then
-    begin
-      if (not AudioPlayback.Finished) and ((CurrentSong.Finish = 0) or (LyricsState.GetCurrentTime*1000 <= CurrentSong.Finish)) then
-      begin
-        //Pause Mod:
-        if not Paused then
-          Sing(Self);       // analyze song
-      end
-      else
-      begin
-        if not FadeOut then
-        begin
-          Finish;
-          FadeOut := true;
-          FadeTo(@ScreenPartyScore);
-        end;
-      end;
-    end;
-  end;
-
-  // draw custom items
-  SingModiDraw(PlayerInfo);  // always draw
-
-  //GoldenNoteStarsTwinkle Mod
-    GoldenRec.SpawnRec;
-  //GoldenNoteStarsTwinkle Mod
-
-  //Draw Score
-  Scores.Draw;
-
-  //Update PlayerInfo
-  for I := 0 to PlayerInfo.NumPlayers-1 do
-  begin
-    if PlayerInfo.Playerinfo[I].Enabled then
-    begin
-      //PlayerInfo.Playerinfo[I].Bar :=  Player[I].ScorePercent;
-      PlayerInfo.Playerinfo[I].Score := Player[I].ScoreTotalInt;
-    end;
-  end;
-
-  if ((ShowFinish) and (not Paused)) then
-  begin
-    if not DLLMan.PluginDraw(Playerinfo, Lines[0].Current) then
-    begin
-      if not FadeOut then
-      begin
-        Finish;
-        FadeOut := true;
-        FadeTo(@ScreenPartyScore);
-      end;
-    end;   
-  end;
-
-  //Change PlayerInfo/Changeables
-  for I := 0 to PlayerInfo.NumPlayers-1 do
-  begin
-    if (Player[I].ScoreTotalInt <> PlayerInfo.Playerinfo[I].Score) then
-    begin
-      //Player[I].ScoreTotal   := Player[I].ScoreTotal + (PlayerInfo.Playerinfo[I].Score - Player[I].ScoreTotalI);
-      Player[I].ScoreTotalInt := PlayerInfo.Playerinfo[I].Score;
-    end;
-    {if (PlayerInfo.Playerinfo[I].Bar <> Player[I].ScorePercent) then
-      Player[I].ScorePercentTarget := PlayerInfo.Playerinfo[I].Bar; }
-  end;
-
-  // back stereo
-  Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX;
-  Text[TextP1].X := Text[TextP1].X - 10*ScreenX;
-
-  {Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X - 10*ScreenX;
-  Text[TextP1Score].X := Text[TextP1Score].X - 10*ScreenX;}
-
-  Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX;
-  Text[TextP2R].X := Text[TextP2R].X - 10*ScreenX;
-
-  {Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X - 10*ScreenX;
-  Text[TextP2RScore].X := Text[TextP2RScore].X - 10*ScreenX;}
-
-  for S := 1 to 1 do
-    Static[S].Texture.X := Static[S].Texture.X - 10*ScreenX;
-
-  for T := 0 to 1 do
-    Text[T].X := Text[T].X - 10*ScreenX;
-
-  Result := true;
-end;
-
-procedure TScreenSingModi.Finish;
-begin
-inherited Finish;
-
-Winner := DllMan.PluginFinish(PlayerInfo);
-
-//Log.LogError('Winner: ' + InttoStr(Winner));
-
-//DLLMan.UnLoadPlugin;
-end;
-
-function LoadTex(const Name: PChar; Typ: TTextureType): TsmallTexture;
-var
-  TexName: IPath;
-  Ext: UTF8String;
-  Tex: TTexture;
-begin
-  //Get texture Name
-  TexName := Skin.GetTextureFileName(string(Name));
-  //Get File Typ
-  Ext := TexName.GetExtension().ToUTF8;
-  if (UpperCase(Ext) = '.JPG') then
-    Ext := 'JPG'
-  else
-    Ext := 'BMP';
-
-  Tex := Texture.LoadTexture(false, TexName, UTexture.TTextureType(Typ), 0);
-
-  Result.TexNum := Tex.TexNum;
-  Result.W := Tex.W;
-  Result.H := Tex.H;
-end;
-{
-function Translate (const Name: PChar): PChar; stdcall;
-begin
-  Result := PChar(Language.Translate(string(Name)));
-end; }
-
-//Procedure to Print Text
-procedure Print(const Style, Size: byte; const X, Y: real; const Text: PChar);
-begin
-  SetFontItalic ((Style and 128) = 128);
-  SetFontStyle(Style and 7);
-  // FIXME: FONTSIZE
-  // used by Hold_The_Line / TeamDuell
-  SetFontSize(Size);
-  SetFontPos (X, Y);
-  glPrint (Language.Translate(string(Text)));
-end;
-
-//Procedure that loads a Custom Sound
-function LoadSound(const Name: PChar): cardinal;
-var
-  Stream: TAudioPlaybackStream;
-  i: integer;
-  Filename: IPath;
-  SoundFile: IPath;
-begin
-  //Search for Sound in already loaded Sounds
-  SoundFile := SoundPath.Append(Name);
-  for i := 0 to High(CustomSounds) do
-  begin
-    if (SoundFile.Equals(CustomSounds[i].Filename, true)) then
-    begin
-      Result := i;
-      Exit;
-    end;
-  end;
-
-  Stream := AudioPlayback.OpenSound(SoundFile);
-  if (Stream = nil) then
-  begin
-    Result := 0;
-    Exit;
-  end;
-
-  SetLength(CustomSounds, Length(CustomSounds)+1);
-  CustomSounds[High(CustomSounds)].Stream := Stream;
-  Result := High(CustomSounds);
-end;
-
-//Plays a Custom Sound
-procedure PlaySound(const Index: cardinal);
-begin
-  if (Index <= High(CustomSounds)) then
-    AudioPlayback.PlaySound(CustomSounds[Index].Stream);
-end;
-
-end.
-
diff --git a/src/screens/UScreenSong.pas b/src/screens/UScreenSong.pas
index 5bc42a68..f1fdba4d 100644
--- a/src/screens/UScreenSong.pas
+++ b/src/screens/UScreenSong.pas
@@ -160,7 +160,6 @@ uses
   Math,
   gl,
   UCovers,
-  UDLLManager,
   UGraphic,
   UMain,
   UMenuButton,
diff --git a/src/ultrastardx.dpr b/src/ultrastardx.dpr
index a0ee7c20..76ff995f 100644
--- a/src/ultrastardx.dpr
+++ b/src/ultrastardx.dpr
@@ -212,7 +212,6 @@ uses
   UCatCovers        in 'base\UCatCovers.pas',
   UFiles            in 'base\UFiles.pas',
   UGraphicClasses   in 'base\UGraphicClasses.pas',
-  UDLLManager       in 'base\UDLLManager.pas',
   UPlaylist         in 'base\UPlaylist.pas',
   UCommandLine      in 'base\UCommandLine.pas',
   URingBuffer       in 'base\URingBuffer.pas',
@@ -332,7 +331,6 @@ uses
   UScreenPopup            in 'screens\UScreenPopup.pas',
 
   //Includes - Screens PartyMode
-  UScreenSingModi         in 'screens\UScreenSingModi.pas',
   UScreenPartyNewRound    in 'screens\UScreenPartyNewRound.pas',
   UScreenPartyScore       in 'screens\UScreenPartyScore.pas',
   UScreenPartyPlayer      in 'screens\UScreenPartyPlayer.pas',
@@ -340,12 +338,6 @@ uses
   UScreenPartyRounds      in 'screens\UScreenPartyRounds.pas',
   UScreenPartyWin         in 'screens\UScreenPartyWin.pas',
 
-
-  //------------------------------
-  //Includes - Modi SDK
-  //------------------------------
-  ModiSDK       in '..\plugins\SDK\ModiSDK.pas', //Old SDK, will be deleted soon
-
   SysUtils;
 
 begin
-- 
cgit v1.2.3