StandardController2 → StandardVsController

diff --git a/lib/vortex/mode/standard_mode.rb b/lib/vortex/mode/standard_mode.rb
index 7e6e552..0663683 100644
--- a/lib/vortex/mode/standard_mode.rb
+++ b/lib/vortex/mode/standard_mode.rb
@@ -55,7 +55,7 @@ def initialize
   #
   # library = {
   #   :title      => "練習",
-  #   :controller => StandardController2.new,
+  #   :controller => StandardVsController.new,
   #   :piece_class => Piece::World,
   #   :randomizer    => "TT",
   #   :field      => <<-EOS,
diff --git a/lib/vortex/mode/standard_vs_mode.rb b/lib/vortex/mode/standard_vs_mode.rb
index 26f530c..dc81272 100644
--- a/lib/vortex/mode/standard_vs_mode.rb
+++ b/lib/vortex/mode/standard_vs_mode.rb
@@ -11,8 +11,8 @@ def initialize
         Field.create,
       ]
       @players = [
-        Player.new(@fields[0], 4, Handler::Pad1.new, Randomizer::Shuffle1Rec.new, StandardController2.new, Piece::World),
-        Player.new(@fields[1], 4, Handler::Pad2.new, Randomizer::Shuffle1Rec.new, StandardController2.new, Piece::World),
+        Player.new(@fields[0], 4, Handler::Pad1.new, Randomizer::Shuffle1Rec.new, StandardVsController.new, Piece::World),
+        Player.new(@fields[1], 4, Handler::Pad2.new, Randomizer::Shuffle1Rec.new, StandardVsController.new, Piece::World),
       ]
       @players[0].controller.target_player = @players[1]
       @players[1].controller.target_player = @players[0]
diff --git a/lib/vortex/mode/standard_vs_single_mode.rb b/lib/vortex/mode/standard_vs_single_mode.rb
index 85f0eea..6c07531 100644
--- a/lib/vortex/mode/standard_vs_single_mode.rb
+++ b/lib/vortex/mode/standard_vs_single_mode.rb
@@ -2,7 +2,7 @@

 require_relative 'standard_mode'

-class StandardController2 < StandardController
+class StandardVsController < StandardController
   include VersusMod::Base
   include VersusMod::Standard

@@ -17,7 +17,7 @@ class StandardVsSingleMode < ::Mode::Base
     self.mode_name = "2P STANDARD VS"
     def initialize
       @fields = [Field.create]
-      @players = [Player.new(@fields[0], 4, Handler::Pad1.new, Randomizer::Shuffle1Rec.new, StandardController2.new, Piece::World)]
+      @players = [Player.new(@fields[0], 4, Handler::Pad1.new, Randomizer::Shuffle1Rec.new, StandardVsController.new, Piece::World)]
       @players[0].controller.target_player = @players[0]
     end
   end
diff --git a/lib/vortex/simulator/srs.rb b/lib/vortex/simulator/srs.rb
index 3b5693f..51e1034 100644
--- a/lib/vortex/simulator/srs.rb
+++ b/lib/vortex/simulator/srs.rb
@@ -5,7 +5,7 @@
 library = [
   {
     :title      => "T",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "T",
     :field      => <<-EOS,
@@ -18,7 +18,7 @@

   {
     :title      => "I",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer => "JOIZSLT",
     :field      => <<-EOS,
@@ -28,7 +28,7 @@

   {
     :title      => "I",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "I",
     :field      => <<-EOS,
@@ -42,7 +42,7 @@
   },
   {
     :title      => "J",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "LSJ",
     :field      => <<-EOS,
@@ -58,7 +58,7 @@
   },
   {
     :title      => "I",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "I",
     :field      => <<-EOS,
@@ -71,7 +71,7 @@
   },
   {
     :title      => "J",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "LSJ",
     :field      => <<-EOS,
@@ -87,7 +87,7 @@
   },
   {
     :title      => "T",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "T",
     :field      => <<-EOS,
diff --git a/lib/vortex/simulator/world_training.rb b/lib/vortex/simulator/world_training.rb
index 2f70f21..5fbffcc 100644
--- a/lib/vortex/simulator/world_training.rb
+++ b/lib/vortex/simulator/world_training.rb
@@ -5,7 +5,7 @@
 library = [
   {
     :title      => "TSM (T-Spin Mini)",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "T",
     :field      => <<-EOS,
@@ -16,7 +16,7 @@
   },
   {
     :title      => "TSM (T-Spin Mini)",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "IT",
     :field      => <<-EOS,
@@ -29,7 +29,7 @@
   },
   {
     :title      => "Tスピン2ライン基本",
-    :controller => StandardController2.new,
+    :controller => StandardVsController.new,
     :piece_class => Piece::World,
     :randomizer    => "T",
     :field      => <<-EOS,
diff --git a/lib/vortex/tech_list.rb b/lib/vortex/tech_list.rb
new file mode 100644
index 0000000..b9d0a5a
--- /dev/null
+++ b/lib/vortex/tech_list.rb
@@ -0,0 +1,496 @@
+# -*- coding: utf-8 -*-
+require_relative "simulator"
+require_relative "mode/standard_vs_single_mode"
+
+# Soundset[:default][:music] = nil
+
+class WazaController < StandardVsController
+  def initialize
+    super
+    @start_delay = 10
+    # @das_delay   = 4     # 横溜め
+
+    @level_info.line_clear_delay = 30 # 浮いたブロックが落るまで
+    @level_info.lc_entry_delay   = 5  # ラインクリア時の次のブロックが移動可能になるまで
+  end
+end
+
+module Vortex
+  TechList = [
+    {
+      :title       => "DT砲",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "LSTIJZO IOZSLJT T",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    u *                    # L
+    u *                    # S
+    u *                    # T
+    r r B u *              # I
+    r| u *                 # J
+    r| u *                 # Z
+    l| u *                 # O
+
+    B r| u *               # I
+    r| l u *               # O
+    r u *                  # Z
+    r| u *                 # S
+    l A u *                # L
+    B l| u *               # J
+    B l| d_ A . A d_ A u * # T (TSD)
+
+    B l| d_ A . A u *      # T (TST)
+    EOS
+    },
+    {
+      :title       => "階段積み",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "SZT",
+      :field       => <<-EOS,
+xxxx......
+xxxxxxx...
+xxxxxxxx..
+xxxxxxxxx.
+xxxxxxxxx.
+xxxxxxxxx.
+xxxxxxxxx.
+  EOS
+      :input => <<-EOS,
+    *
+    r u *              # S
+    B r| u *           # Z
+    r| l d_ B d_ B u * # T (TSD)
+    EOS
+    },
+    {
+      :title       => "ワンツーパンチ",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "OLSIZJT T",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    u *                # O
+    l| r u *           # L
+    A u *              # S
+    r| u *             # I
+    r . r u *          # Z
+    A r| u *           # J
+    l| d_ B u *        # T (TSM)
+
+    l| r d_ A d_ A u * # T (TSD)
+    EOS
+    },
+    {
+      :title       => "STSD",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "LJTT",
+      :field       => <<-EOS,
+xxxxxx....
+xxxxxx....
+xxxxxxx...
+xxxxxxx...
+xxxxxxxx.x
+xxxxxxxx.x
+xxxxxxxx.x
+xxxxxxxx.x
+  EOS
+      :input => <<-EOS,
+    *
+    A r| u *         # L
+    Br . r u *       # J
+    Ar| d_ B . B u * # T (TSD)
+    r| d_ B d_ B u * # T (TSD)
+    EOS
+    },
+    {
+      :title       => "へぼまいスピン",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "ZOSILJT OZT",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    Al| u *    # Z
+    u *        # O
+    B u *      # S
+    r| u *     # I
+    Br . r u * # L
+    A r| u *   # J
+    Al d_ B u  # T
+
+    r| l u *    # O
+    Al| u *     # Z
+    Al d_ A u * # T
+    EOS
+    },
+    {
+      :title       => "アルバトロスSP",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "OLSIZJT JLSZOIT JSZILOT T",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    l u *            # O
+    Br . Br u *      # L
+    A l| u *         # S
+    B r| u *         # I
+    u *              # Z
+    Br| . Bl u *     # J
+    l| Ar d_ A u *   # T
+
+    Bl| u *          # J
+    Al u *           # L
+    Br u *           # S
+    B u *            # Z
+    r| l u *         # O
+    r| u *           # I
+    lB| d_ A . A u * # T
+
+    lB| d_ A u *     # J
+    lA u *           # S
+    B u *            # Z
+    rB u *           # I
+    r| lB u *        # L
+    r| u *           # O
+    lA| d_ A u *     # T
+
+    r| d_ A u *      # T
+
+    EOS
+    },
+    {
+      :title       => "QTK",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "ZOT",
+      :field       => <<-EOS,
+xxxxxxx...
+xxxxxxxx..
+xxxxxxxx..
+xxxxxxxx..
+xxxxxxxxx.
+xxxxxxxxx.
+xxxxxxxxx.
+xxxxxxxxx.
+  EOS
+      :input => <<-EOS,
+    *
+    r| B u *         # Z
+    r . r u *        # O
+    Br| d_ B u *     # T
+    EOS
+    },
+    {
+      :title       => "開幕TSD",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "ISJZOLT SZJLIOT",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    u *            # I
+    r u *          # S
+    Ar| u *        # J
+    Al u *         # Z
+    l| u *         # O
+    rB . B u *     # L
+    r| Bl d_ B u * # T
+
+    r u *          # S
+    rB| u *        # Z
+    l| u *         # J
+    l| r u *       # L
+    lA| u *        # I
+    l| r u *       # O
+    r| Bl d_ B u * # T
+    EOS
+    },
+    {
+      :title       => "キングクリムゾン",
+      :url         => "http://tinyurl.com/ldgxj7x",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer  => "ZJTTT",
+      :field       => <<-EOS,
+..xxxxxxxx
+...xxxxxxx
+...xxxxxxx
+...xxxxxxx
+...xxxxxxx
+...xxxxxxx
+...xxxxxxx
+x..xxxxxxx
+  EOS
+      :input => <<-EOS,
+    *
+    lA| u *          # Z
+    lB| u *          # J
+    lB| d_ A . A u * # T
+    lB| d_ A . A u * # T
+    lA| d_ A     u * # T
+    EOS
+    },
+    {
+      :title       => "TKI積み",
+      :url         => "http://bugloderunner.my.land.to/tetDS/TKId.html",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer => "ZSTLJIO SLIJTOZ LST",
+      :field       => <<-EOS,
+  ..........
+  EOS
+      :input => <<-EOS,
+    *
+    l u *        # Z
+    B u *        # S
+    Al . A u *   # T
+    Bl| u *      # L
+    Bl| u *      # J
+    r| u *       # I
+    r|  u *      # O
+
+    rB u *       # S
+    r| lA u *    # L
+    rB| u *      # I
+    rB| . lB u * # J
+    l d_ l B u * # T
+    l u *        # O
+    l u *        # Z
+
+    rB . rB u *      # L
+    r| A u *         # S
+    lB| d_ A . A u * # T
+
+    EOS
+    },
+    {
+      :title       => "ダブルダガー",
+      :url         => ["http://tinyurl.com/lfya8h4", "http://mame.nekonikoban.org/TetrisTikei.htm"], # よく見る地形8より
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer => "JOSZT T",
+      :field       => <<-EOS,
+c.........
+c.........
+c.........
+c.o.......
+yyoppp....
+yyoop...x.
+xxxxxx.xxx
+  EOS
+      :input => <<-EOS,
+    *
+    Br| . B u *                 # J
+    r| u *                      # O
+    u *                         # S
+    l| B u *                    # Z
+    rB . r d_ B u *             # T
+    rB . r d_ B u *             # T
+    EOS
+    },
+    {
+      :title       => "クラッシュ",
+      :url         => "http://tinyurl.com/mbem4u5",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer => "JT",
+      :field       => <<-EOS,
+# xxx....xxx
+xxx.ggxxxx
+xxxgg.xxxx
+  EOS
+      :input => <<-EOS,
+    *
+    Bl u *                      # J
+    Br d_ B u *                 # T
+    EOS
+    },
+
+    {
+      :title       => "3連TSD",
+      :url         => "http://tinyurl.com/mhnwy49",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer => "JLZOITS JILOSZT LSTZOIJ T",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    lB| u *                     # J
+    l u *                       # L
+    A u *                       # Z
+    l u *                       # O
+    r| l u *                    # I
+    rA| u *                     # T
+    r| l u *                    # S
+
+    lB| u *                     # J
+    B u *                       # I
+    rB| . Bl u *                # L
+    r . r u *                   # O
+    rB| u *                     # S
+    l u *                       # Z
+    lB| d_ A . A d_ A u *       # T (TSD)
+
+    Br . Br u *                 # L
+    Br| u *                     # S
+    lB| d_ A . A u *            # T (TSD)
+    # 4巡目のTが来るまでアドリブ
+    u *                         # Z
+    r . r u *                   # O
+    rB| u *                     # I
+    rB| . lB u *                # J
+
+    lA| d_ A u *                # T (TSD)
+
+    EOS
+    },
+
+    {
+      :title       => "3連攻撃",
+      :url         => "http://tinyurl.com/mvk3shj",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer => "JILTZOS IJZOLST SLZOJTI SJT",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    rA| u *                     # J
+    r| B u *                    # I
+    rA| u *                     # L
+    u *                         # T
+    lA u *                      # Z
+    l| u *                      # O
+    B u *                       # S
+
+    rB u *                      # I
+    rB u *                      # J
+    lA u *                      # Z
+    l| u *                      # O
+    l| u *                      # L
+    A u *                       # S
+    Ar| u *                     # T
+
+    l| u *                      # S
+    Al| . A u *                 # L
+    u *                         # Z
+    l| u *                      # O
+    Ar| u *                     # J
+    r| lA d_ A u *              # T (TSD)
+    r| A u *                    # I
+
+    rB u *                      # S
+    l u *                       # J
+    r| lA d_ A u *              # T (TSD)
+
+    EOS
+    },
+
+    {
+      :title       => "428砲",
+      :url         => "http://tinyurl.com/l7yrqh9",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer => "JIOLZST STLOJIZ OST",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    l u *                       # J
+    r| u *                      # I
+    l| u *                      # O
+    Al u *                      # L
+    r| l u *                    # Z
+    rB| u *                     # S
+    B d_ B u *                  # T (TSD)
+
+    r u *                       # S
+    Bl| d_ A u *                # T (TSM)
+    Ar| u *                     # L
+    r u *                       # O
+    lA . A u *                  # J
+    lA| u *                     # I
+    l| B u *                    # Z
+
+    l u *                       # O
+    r . r u *                   # S
+    rA| d_ B . B u *            # T
+
+    EOS
+    },
+
+    {
+      :title       => "BT砲",
+      :url         => "http://tinyurl.com/krhahnq",
+      :controller  => WazaController.new,
+      :piece_class => Piece::World,
+      :randomizer => "ZSJOITL ILSJOZT T",
+      :field       => <<-EOS,
+  EOS
+      :input => <<-EOS,
+    *
+    r u *                       # Z
+    rB u *                      # S
+    r| u *                      # J
+    r| u *                      # O
+    l| u *                      # I
+    l| u *                      # T
+    Al| . A u *                 # L
+
+    l| u *                      # I
+    rA u *                      # L
+    rB . r u *                  # S
+    Ar| u *                     # J
+    l| u *                      # O
+    r| l u *                    # Z
+    l| Br d_ A . A . A u *      # T (TSD)
+
+    l| Br d_ A . A u *          # T (TST)
+    EOS
+    },
+  ]
+end
+
+if $0 == __FILE__
+  # Vortex.config.piece_size  = [4,4]
+  # Stylet.config.screen_size = [640/4, 480/4]
+
+  # Vortex.config.piece_size  = [8*3, 8*3]
+  # Stylet.config.screen_size = [800, 600]
+
+  # Soundset[:default] = nil
+
+  # TechList.each{|e| break if Simulator.start_auto(e) == :break}; exit
+
+  e = TechList.find{|e|e[:title] == "TKI積み"} # アルバトロスSP
+  # Simulator.start_auto(e)
+  Simulator.start(e)
+  exit
+
+  # Simulator.start_auto(e)
+  # Simulator.start_auto(TechList[0])
+  # Simulator.start_auto(TechList[0])
+  # Simulator.start_auto(TechList[0])
+  # Simulator.start_auto(TechList[0])
+  # Simulator.start_auto(TechList.last); exit
+  # Simulator.start(TechList[1]); exit
+  # TechList.reverse.each{|e| break if Simulator.start_auto(e) == :break}; exit
+
+  if ARGV.empty?
+    Simulator.start_auto(TechList.last)
+  else
+    Simulator.start(TechList.last)
+  end
+end
diff --git a/lib/vortex/wazalist.rb b/lib/vortex/wazalist.rb
deleted file mode 100644
index 765a904..0000000
--- a/lib/vortex/wazalist.rb
+++ /dev/null
@@ -1,496 +0,0 @@
-# -*- coding: utf-8 -*-
-require_relative "simulator"
-require_relative "mode/standard_vs_single_mode"
-
-# Soundset[:default][:music] = nil
-
-class WazaController < StandardController2
-  def initialize
-    super
-    @start_delay = 10
-    # @das_delay   = 4     # 横溜め
-
-    @level_info.line_clear_delay = 30 # 浮いたブロックが落るまで
-    @level_info.lc_entry_delay   = 5  # ラインクリア時の次のブロックが移動可能になるまで
-  end
-end
-
-module Vortex
-  WazaList = [
-    {
-      :title       => "DT砲",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "LSTIJZO IOZSLJT T",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    u *                    # L
-    u *                    # S
-    u *                    # T
-    r r B u *              # I
-    r| u *                 # J
-    r| u *                 # Z
-    l| u *                 # O
-
-    B r| u *               # I
-    r| l u *               # O
-    r u *                  # Z
-    r| u *                 # S
-    l A u *                # L
-    B l| u *               # J
-    B l| d_ A . A d_ A u * # T (TSD)
-
-    B l| d_ A . A u *      # T (TST)
-    EOS
-    },
-    {
-      :title       => "階段積み",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "SZT",
-      :field       => <<-EOS,
-xxxx......
-xxxxxxx...
-xxxxxxxx..
-xxxxxxxxx.
-xxxxxxxxx.
-xxxxxxxxx.
-xxxxxxxxx.
-  EOS
-      :input => <<-EOS,
-    *
-    r u *              # S
-    B r| u *           # Z
-    r| l d_ B d_ B u * # T (TSD)
-    EOS
-    },
-    {
-      :title       => "ワンツーパンチ",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "OLSIZJT T",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    u *                # O
-    l| r u *           # L
-    A u *              # S
-    r| u *             # I
-    r . r u *          # Z
-    A r| u *           # J
-    l| d_ B u *        # T (TSM)
-
-    l| r d_ A d_ A u * # T (TSD)
-    EOS
-    },
-    {
-      :title       => "STSD",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "LJTT",
-      :field       => <<-EOS,
-xxxxxx....
-xxxxxx....
-xxxxxxx...
-xxxxxxx...
-xxxxxxxx.x
-xxxxxxxx.x
-xxxxxxxx.x
-xxxxxxxx.x
-  EOS
-      :input => <<-EOS,
-    *
-    A r| u *         # L
-    Br . r u *       # J
-    Ar| d_ B . B u * # T (TSD)
-    r| d_ B d_ B u * # T (TSD)
-    EOS
-    },
-    {
-      :title       => "へぼまいスピン",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "ZOSILJT OZT",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    Al| u *    # Z
-    u *        # O
-    B u *      # S
-    r| u *     # I
-    Br . r u * # L
-    A r| u *   # J
-    Al d_ B u  # T
-
-    r| l u *    # O
-    Al| u *     # Z
-    Al d_ A u * # T
-    EOS
-    },
-    {
-      :title       => "アルバトロスSP",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "OLSIZJT JLSZOIT JSZILOT T",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    l u *            # O
-    Br . Br u *      # L
-    A l| u *         # S
-    B r| u *         # I
-    u *              # Z
-    Br| . Bl u *     # J
-    l| Ar d_ A u *   # T
-
-    Bl| u *          # J
-    Al u *           # L
-    Br u *           # S
-    B u *            # Z
-    r| l u *         # O
-    r| u *           # I
-    lB| d_ A . A u * # T
-
-    lB| d_ A u *     # J
-    lA u *           # S
-    B u *            # Z
-    rB u *           # I
-    r| lB u *        # L
-    r| u *           # O
-    lA| d_ A u *     # T
-
-    r| d_ A u *      # T
-
-    EOS
-    },
-    {
-      :title       => "QTK",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "ZOT",
-      :field       => <<-EOS,
-xxxxxxx...
-xxxxxxxx..
-xxxxxxxx..
-xxxxxxxx..
-xxxxxxxxx.
-xxxxxxxxx.
-xxxxxxxxx.
-xxxxxxxxx.
-  EOS
-      :input => <<-EOS,
-    *
-    r| B u *         # Z
-    r . r u *        # O
-    Br| d_ B u *     # T
-    EOS
-    },
-    {
-      :title       => "開幕TSD",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "ISJZOLT SZJLIOT",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    u *            # I
-    r u *          # S
-    Ar| u *        # J
-    Al u *         # Z
-    l| u *         # O
-    rB . B u *     # L
-    r| Bl d_ B u * # T
-
-    r u *          # S
-    rB| u *        # Z
-    l| u *         # J
-    l| r u *       # L
-    lA| u *        # I
-    l| r u *       # O
-    r| Bl d_ B u * # T
-    EOS
-    },
-    {
-      :title       => "キングクリムゾン",
-      :url         => "http://tinyurl.com/ldgxj7x",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer  => "ZJTTT",
-      :field       => <<-EOS,
-..xxxxxxxx
-...xxxxxxx
-...xxxxxxx
-...xxxxxxx
-...xxxxxxx
-...xxxxxxx
-...xxxxxxx
-x..xxxxxxx
-  EOS
-      :input => <<-EOS,
-    *
-    lA| u *          # Z
-    lB| u *          # J
-    lB| d_ A . A u * # T
-    lB| d_ A . A u * # T
-    lA| d_ A     u * # T
-    EOS
-    },
-    {
-      :title       => "TKI積み",
-      :url         => "http://bugloderunner.my.land.to/tetDS/TKId.html",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer => "ZSTLJIO SLIJTOZ LST",
-      :field       => <<-EOS,
-  ..........
-  EOS
-      :input => <<-EOS,
-    *
-    l u *        # Z
-    B u *        # S
-    Al . A u *   # T
-    Bl| u *      # L
-    Bl| u *      # J
-    r| u *       # I
-    r|  u *      # O
-
-    rB u *       # S
-    r| lA u *    # L
-    rB| u *      # I
-    rB| . lB u * # J
-    l d_ l B u * # T
-    l u *        # O
-    l u *        # Z
-
-    rB . rB u *      # L
-    r| A u *         # S
-    lB| d_ A . A u * # T
-
-    EOS
-    },
-    {
-      :title       => "ダブルダガー",
-      :url         => ["http://tinyurl.com/lfya8h4", "http://mame.nekonikoban.org/TetrisTikei.htm"], # よく見る地形8より
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer => "JOSZT T",
-      :field       => <<-EOS,
-c.........
-c.........
-c.........
-c.o.......
-yyoppp....
-yyoop...x.
-xxxxxx.xxx
-  EOS
-      :input => <<-EOS,
-    *
-    Br| . B u *                 # J
-    r| u *                      # O
-    u *                         # S
-    l| B u *                    # Z
-    rB . r d_ B u *             # T
-    rB . r d_ B u *             # T
-    EOS
-    },
-    {
-      :title       => "クラッシュ",
-      :url         => "http://tinyurl.com/mbem4u5",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer => "JT",
-      :field       => <<-EOS,
-# xxx....xxx
-xxx.ggxxxx
-xxxgg.xxxx
-  EOS
-      :input => <<-EOS,
-    *
-    Bl u *                      # J
-    Br d_ B u *                 # T
-    EOS
-    },
-
-    {
-      :title       => "3連TSD",
-      :url         => "http://tinyurl.com/mhnwy49",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer => "JLZOITS JILOSZT LSTZOIJ T",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    lB| u *                     # J
-    l u *                       # L
-    A u *                       # Z
-    l u *                       # O
-    r| l u *                    # I
-    rA| u *                     # T
-    r| l u *                    # S
-
-    lB| u *                     # J
-    B u *                       # I
-    rB| . Bl u *                # L
-    r . r u *                   # O
-    rB| u *                     # S
-    l u *                       # Z
-    lB| d_ A . A d_ A u *       # T (TSD)
-
-    Br . Br u *                 # L
-    Br| u *                     # S
-    lB| d_ A . A u *            # T (TSD)
-    # 4巡目のTが来るまでアドリブ
-    u *                         # Z
-    r . r u *                   # O
-    rB| u *                     # I
-    rB| . lB u *                # J
-
-    lA| d_ A u *                # T (TSD)
-
-    EOS
-    },
-
-    {
-      :title       => "3連攻撃",
-      :url         => "http://tinyurl.com/mvk3shj",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer => "JILTZOS IJZOLST SLZOJTI SJT",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    rA| u *                     # J
-    r| B u *                    # I
-    rA| u *                     # L
-    u *                         # T
-    lA u *                      # Z
-    l| u *                      # O
-    B u *                       # S
-
-    rB u *                      # I
-    rB u *                      # J
-    lA u *                      # Z
-    l| u *                      # O
-    l| u *                      # L
-    A u *                       # S
-    Ar| u *                     # T
-
-    l| u *                      # S
-    Al| . A u *                 # L
-    u *                         # Z
-    l| u *                      # O
-    Ar| u *                     # J
-    r| lA d_ A u *              # T (TSD)
-    r| A u *                    # I
-
-    rB u *                      # S
-    l u *                       # J
-    r| lA d_ A u *              # T (TSD)
-
-    EOS
-    },
-
-    {
-      :title       => "428砲",
-      :url         => "http://tinyurl.com/l7yrqh9",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer => "JIOLZST STLOJIZ OST",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    l u *                       # J
-    r| u *                      # I
-    l| u *                      # O
-    Al u *                      # L
-    r| l u *                    # Z
-    rB| u *                     # S
-    B d_ B u *                  # T (TSD)
-
-    r u *                       # S
-    Bl| d_ A u *                # T (TSM)
-    Ar| u *                     # L
-    r u *                       # O
-    lA . A u *                  # J
-    lA| u *                     # I
-    l| B u *                    # Z
-
-    l u *                       # O
-    r . r u *                   # S
-    rA| d_ B . B u *            # T
-
-    EOS
-    },
-
-    {
-      :title       => "BT砲",
-      :url         => "http://tinyurl.com/krhahnq",
-      :controller  => WazaController.new,
-      :piece_class => Piece::World,
-      :randomizer => "ZSJOITL ILSJOZT T",
-      :field       => <<-EOS,
-  EOS
-      :input => <<-EOS,
-    *
-    r u *                       # Z
-    rB u *                      # S
-    r| u *                      # J
-    r| u *                      # O
-    l| u *                      # I
-    l| u *                      # T
-    Al| . A u *                 # L
-
-    l| u *                      # I
-    rA u *                      # L
-    rB . r u *                  # S
-    Ar| u *                     # J
-    l| u *                      # O
-    r| l u *                    # Z
-    l| Br d_ A . A . A u *      # T (TSD)
-
-    l| Br d_ A . A u *          # T (TST)
-    EOS
-    },
-  ]
-end
-
-if $0 == __FILE__
-  # Vortex.config.piece_size  = [4,4]
-  # Stylet.config.screen_size = [640/4, 480/4]
-
-  # Vortex.config.piece_size  = [8*3, 8*3]
-  # Stylet.config.screen_size = [800, 600]
-
-  # Soundset[:default] = nil
-
-  # WazaList.each{|e| break if Simulator.start_auto(e) == :break}; exit
-
-  e = WazaList.find{|e|e[:title] == "TKI積み"} # アルバトロスSP
-  # Simulator.start_auto(e)
-  Simulator.start(e)
-  exit
-
-  # Simulator.start_auto(e)
-  # Simulator.start_auto(WazaList[0])
-  # Simulator.start_auto(WazaList[0])
-  # Simulator.start_auto(WazaList[0])
-  # Simulator.start_auto(WazaList[0])
-  # Simulator.start_auto(WazaList.last); exit
-  # Simulator.start(WazaList[1]); exit
-  # WazaList.reverse.each{|e| break if Simulator.start_auto(e) == :break}; exit
-
-  if ARGV.empty?
-    Simulator.start_auto(WazaList.last)
-  else
-    Simulator.start(WazaList.last)
-  end
-end
diff --git a/training/environment.rb b/training/environment.rb
index 33b00bf..c207158 100644
--- a/training/environment.rb
+++ b/training/environment.rb
@@ -4,7 +4,7 @@

 Soundset[:default][:music] = nil

-class TrainingController < StandardController2
+class TrainingController < StandardVsController
   def initialize
     super
     @start_delay = 10
diff --git a/training2/environment.rb b/training2/environment.rb
index 4d71886..d7b199d 100644
--- a/training2/environment.rb
+++ b/training2/environment.rb
@@ -5,7 +5,7 @@
 #
 # Soundset[:default][:music] = nil
 #
-# class TrainingController < StandardController2
+# class TrainingController < StandardVsController
 #   def initialize
 #     super
 #     @start_delay = 10
diff --git a/training2/main.rb b/training2/main.rb
index fa28ca8..01d6086 100644
--- a/training2/main.rb
+++ b/training2/main.rb
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-wazalist.rb に移動
+tech_list.rb に移動

 # # -*- coding: utf-8 -*-
 # require_relative "environment"
soft_drop_speed 対応
40L追加。HD+ホールドでtop overバグ修正。randomizerのRecordをBaseへ

diff --git a/lib/vortex/handler/base.rb b/lib/vortex/handler/base.rb
index 42becfb..271ab90 100644
--- a/lib/vortex/handler/base.rb
+++ b/lib/vortex/handler/base.rb
@@ -32,20 +32,19 @@ def next_frame(*args)
       @history << to_s            # FIXME: 必要なときだけにする
     end

+    # コールバックされるメソッドたち
     [
-      :update,
-      :think_first_trigger,       # 次のブロックへの操作が有効になった最初に呼ばれる
-      :after_user_irs,    # IRSの後に呼ばれる
-      :power_key_filled,  # 溜めができた時に呼ばれる
-      :after_move,        # 移動後
+      :update,                  # キーの内容を更新して欲しいとき(毎フレーム)
+      :think_first_trigger,     # 次のブロックへの操作が有効になったタイミング
+      :after_user_irs,          # IRS直後(成功したかどうかには関係ない)
+      :power_key_filled,        # 溜めが完了したタイミング
+      :after_move,              # 移動直後
+      :reset                    # デバッグ中にリセットされたとき
     ].each do |method|
       define_method(method) do |*args, &block|
       end
     end

-    def reset
-    end
-
     private

     # キーの状態を更新する直前に上下が押されている時に左右を無効にする。
diff --git a/lib/vortex/mode/tds_mode.rb b/lib/vortex/mode/tds_mode.rb
deleted file mode 100644
index cb843d9..0000000
--- a/lib/vortex/mode/tds_mode.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-require_relative 'standard_mode'
-
-class TdsController < StandardController
-  def initialize
-    super
-    @controller_name = "TETRIS DS"
-  end
-end
-
-module Mode
-  class StandardTdsMode < ::Mode::Base
-    self.mode_name = "TDS"
-    def initialize
-      @fields = [Field.create]
-      @players = [Player.new(@fields[0], 4,  Handler::Pad1.new, Randomizer::Shuffle1Rec.new, TdsController.new, Piece::World)]
-    end
-  end
-end
-
-if $0 == __FILE__
-  frame = Mode::StandardTdsMode.new
-  Window::AnythingWindow.new(frame)
-  frame.start
-end