Browse Source

Adding missing Movipa and Racing Game Source

Simon (darkside) Jackson 5 years ago
parent
commit
0b845cc659
100 changed files with 33539 additions and 0 deletions
  1. 230 0
      Samples/Movipa/Microsoft Permissive License.rtf
  2. 1030 0
      Samples/Movipa/Movipa.htm
  3. 208 0
      Samples/Movipa/Movipa/Components/Animation/ModelAnimationComponent.cs
  4. 291 0
      Samples/Movipa/Movipa/Components/Animation/MovieComponent.cs
  5. 77 0
      Samples/Movipa/Movipa/Components/Animation/Particle.cs
  6. 391 0
      Samples/Movipa/Movipa/Components/Animation/ParticleComponent.cs
  7. 181 0
      Samples/Movipa/Movipa/Components/Animation/PuzzleAnimation.cs
  8. 123 0
      Samples/Movipa/Movipa/Components/Animation/SequencePlayAnimationComponent.cs
  9. 304 0
      Samples/Movipa/Movipa/Components/FadeSeqComponent.cs
  10. 314 0
      Samples/Movipa/Movipa/Components/Input/InputComponent.cs
  11. 210 0
      Samples/Movipa/Movipa/Components/Input/InputState.cs
  12. 51 0
      Samples/Movipa/Movipa/Components/Input/VirtualKeyState.cs
  13. 214 0
      Samples/Movipa/Movipa/Components/Input/VirtualPadButtons.cs
  14. 123 0
      Samples/Movipa/Movipa/Components/Input/VirtualPadDPad.cs
  15. 123 0
      Samples/Movipa/Movipa/Components/Input/VirtualPadState.cs
  16. 81 0
      Samples/Movipa/Movipa/Components/Input/VirtualPadThumbSticks.cs
  17. 79 0
      Samples/Movipa/Movipa/Components/Input/VirtualPadTriggers.cs
  18. 192 0
      Samples/Movipa/Movipa/Components/SafeAreaComponent.cs
  19. 258 0
      Samples/Movipa/Movipa/Components/Scene/GameOver.cs
  20. 195 0
      Samples/Movipa/Movipa/Components/Scene/Logo.cs
  21. 165 0
      Samples/Movipa/Movipa/Components/Scene/Menu/InitializeThread.cs
  22. 178 0
      Samples/Movipa/Movipa/Components/Scene/Menu/MenuBase.cs
  23. 654 0
      Samples/Movipa/Movipa/Components/Scene/Menu/MenuComponent.cs
  24. 243 0
      Samples/Movipa/Movipa/Components/Scene/Menu/MenuData.cs
  25. 87 0
      Samples/Movipa/Movipa/Components/Scene/Menu/MenuType.cs
  26. 107 0
      Samples/Movipa/Movipa/Components/Scene/Menu/MovieLoader.cs
  27. 383 0
      Samples/Movipa/Movipa/Components/Scene/Menu/Ready.cs
  28. 112 0
      Samples/Movipa/Movipa/Components/Scene/Menu/SaveFileLoader.cs
  29. 769 0
      Samples/Movipa/Movipa/Components/Scene/Menu/SelectDivide.cs
  30. 1310 0
      Samples/Movipa/Movipa/Components/Scene/Menu/SelectFile.cs
  31. 559 0
      Samples/Movipa/Movipa/Components/Scene/Menu/SelectMode.cs
  32. 931 0
      Samples/Movipa/Movipa/Components/Scene/Menu/SelectMovie.cs
  33. 1202 0
      Samples/Movipa/Movipa/Components/Scene/Menu/SelectStyle.cs
  34. 106 0
      Samples/Movipa/Movipa/Components/Scene/Menu/ThumbnailLoader.cs
  35. 119 0
      Samples/Movipa/Movipa/Components/Scene/Menu/ThumbnailSprite.cs
  36. 166 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/PanelData.cs
  37. 398 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/PanelManager.cs
  38. 2375 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/PuzzleComponent.cs
  39. 273 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/SpriteScorePopup.cs
  40. 831 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/ChangeComponent.cs
  41. 88 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/PanelAfterImage.cs
  42. 583 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/RevolveComponent.cs
  43. 663 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/SlideComponent.cs
  44. 930 0
      Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/StyleBase.cs
  45. 155 0
      Samples/Movipa/Movipa/Components/Scene/Result/FreeResult.cs
  46. 341 0
      Samples/Movipa/Movipa/Components/Scene/Result/NormalResult.cs
  47. 442 0
      Samples/Movipa/Movipa/Components/Scene/Result/ResultBase.cs
  48. 279 0
      Samples/Movipa/Movipa/Components/Scene/StaffRoll.cs
  49. 1028 0
      Samples/Movipa/Movipa/Components/Scene/Title.cs
  50. 312 0
      Samples/Movipa/Movipa/Components/SceneComponent.cs
  51. 341 0
      Samples/Movipa/Movipa/Components/SoundComponent.cs
  52. BIN
      Samples/Movipa/Movipa/Components/StorageComponent.cs
  53. 80 0
      Samples/Movipa/Movipa/Content/App.config.xml
  54. 1405 0
      Samples/Movipa/Movipa/Content/Audio/Movipa.xap
  55. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaGame.wav
  56. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaGameClear.wav
  57. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaGameOver.wav
  58. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaSelect.wav
  59. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaTitle.wav
  60. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectCancel.wav
  61. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectClear.wav
  62. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectCursor1.wav
  63. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectCursor2.wav
  64. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectOkay.wav
  65. BIN
      Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/ResultScore.wav
  66. 746 0
      Samples/Movipa/Movipa/Content/Content.contentproj
  67. 38 0
      Samples/Movipa/Movipa/Content/Layout/Anime1/Anime.l4t
  68. 325 0
      Samples/Movipa/Movipa/Content/Layout/Anime1/Anime1.stg
  69. 3106 0
      Samples/Movipa/Movipa/Content/Layout/Anime1/Anime1_Scene.xml
  70. 13 0
      Samples/Movipa/Movipa/Content/Layout/Anime1/Info.xml
  71. BIN
      Samples/Movipa/Movipa/Content/Layout/Anime1/Thumbnail.png
  72. BIN
      Samples/Movipa/Movipa/Content/Layout/Anime1/bmp/mov01_bg.bmp
  73. BIN
      Samples/Movipa/Movipa/Content/Layout/Anime1/bmp/mov01_obj01.bmp
  74. BIN
      Samples/Movipa/Movipa/Content/Layout/Anime1/bmp/mov01_obj02.bmp
  75. 38 0
      Samples/Movipa/Movipa/Content/Layout/Anime2/Anime2.l4t
  76. 167 0
      Samples/Movipa/Movipa/Content/Layout/Anime2/Anime2.stg
  77. 1849 0
      Samples/Movipa/Movipa/Content/Layout/Anime2/Anime2_Scene.xml
  78. 13 0
      Samples/Movipa/Movipa/Content/Layout/Anime2/Info.xml
  79. BIN
      Samples/Movipa/Movipa/Content/Layout/Anime2/Thumbnail.png
  80. BIN
      Samples/Movipa/Movipa/Content/Layout/Anime2/bmp/mov02_obj1.bmp
  81. BIN
      Samples/Movipa/Movipa/Content/Layout/Anime2/bmp/mov02_obj2.bmp
  82. 44 0
      Samples/Movipa/Movipa/Content/Layout/Fade/Fade.l4t
  83. 21 0
      Samples/Movipa/Movipa/Content/Layout/Fade/Gonzales.stg
  84. 127 0
      Samples/Movipa/Movipa/Content/Layout/Fade/Gonzales_Scene.xml
  85. 19 0
      Samples/Movipa/Movipa/Content/Layout/Fade/Normal.stg
  86. 101 0
      Samples/Movipa/Movipa/Content/Layout/Fade/Normal_Scene.xml
  87. 217 0
      Samples/Movipa/Movipa/Content/Layout/Fade/RotateBox.stg
  88. 2675 0
      Samples/Movipa/Movipa/Content/Layout/Fade/RotateBox_Scene.xml
  89. BIN
      Samples/Movipa/Movipa/Content/Layout/Fade/bmp/Box.bmp
  90. BIN
      Samples/Movipa/Movipa/Content/Layout/Fade/bmp/Gonzales.bmp
  91. BIN
      Samples/Movipa/Movipa/Content/Layout/GameOver/bmp/gameover.bmp
  92. 38 0
      Samples/Movipa/Movipa/Content/Layout/GameOver/gameover.l4t
  93. 26 0
      Samples/Movipa/Movipa/Content/Layout/GameOver/gameover.stg
  94. 184 0
      Samples/Movipa/Movipa/Content/Layout/GameOver/gameover_Scene.xml
  95. BIN
      Samples/Movipa/Movipa/Content/Layout/Result/bmp/result.bmp
  96. 38 0
      Samples/Movipa/Movipa/Content/Layout/Result/result.l4t
  97. 157 0
      Samples/Movipa/Movipa/Content/Layout/Result/result.stg
  98. 1307 0
      Samples/Movipa/Movipa/Content/Layout/Result/result_Scene.xml
  99. BIN
      Samples/Movipa/Movipa/Content/Layout/StaffRoll/bmp/staff1.bmp
  100. BIN
      Samples/Movipa/Movipa/Content/Layout/StaffRoll/bmp/staff2.bmp

+ 230 - 0
Samples/Movipa/Microsoft Permissive License.rtf

@@ -0,0 +1,230 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f36\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}
+{\f40\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f41\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f42\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f44\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f45\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f46\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f47\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f48\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f49\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f51\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f52\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
+{\f54\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f55\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f56\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f57\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
+{\f58\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f59\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f401\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\f402\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
+{\f404\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\f405\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\f408\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\f421\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}
+{\f422\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f424\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f425\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f426\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}
+{\f427\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f428\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f429\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f430\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}
+{\f441\fbidi \fswiss\fcharset238\fprq2 Verdana CE;}{\f442\fbidi \fswiss\fcharset204\fprq2 Verdana Cyr;}{\f444\fbidi \fswiss\fcharset161\fprq2 Verdana Greek;}{\f445\fbidi \fswiss\fcharset162\fprq2 Verdana Tur;}
+{\f448\fbidi \fswiss\fcharset186\fprq2 Verdana Baltic;}{\f449\fbidi \fswiss\fcharset163\fprq2 Verdana (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
+{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
+\red192\green192\blue192;}{\*\defchp }{\*\defpap \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 
+\ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 heading 1;}{\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink16 \sqformat \spriority9 heading 2;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\*\cs15 
+\additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\f36\fs32\kerning32 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af0\afs28 \ltrch\fcs0 \b\i\f36\fs28 \sbasedon10 \slink2 \slocked \spriority9 
+Heading 2 Char;}{\s17\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \f38\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
+\sbasedon0 \snext17 \slink18 \ssemihidden \sunhideused \styrsid7424395 Balloon Text;}{\*\cs18 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink17 \slocked \ssemihidden \styrsid7424395 Balloon Text Char;}{\*\cs19 \additive 
+\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden \sunhideused \styrsid4538388 annotation reference;}{\s20\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs20\alang1025 \ltrch\fcs0 
+\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 \slink21 \ssemihidden \sunhideused \styrsid4538388 annotation text;}{\*\cs21 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 
+\sbasedon10 \slink20 \slocked \ssemihidden \styrsid4538388 Comment Text Char;}{\s22\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
+\sbasedon20 \snext20 \slink23 \ssemihidden \sunhideused \styrsid4538388 annotation subject;}{\*\cs23 \additive \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1 \sbasedon21 \slink22 \slocked \ssemihidden \styrsid4538388 Comment Subject Char;}}{\*\rsidtbl \rsid213160
+\rsid284417\rsid417145\rsid481196\rsid551334\rsid723397\rsid786968\rsid1382437\rsid1390003\rsid1521043\rsid1530955\rsid1708989\rsid1783212\rsid1903779\rsid2431884\rsid3165084\rsid3416120\rsid3419781\rsid3754103\rsid3768194\rsid3831520\rsid4538130
+\rsid4538388\rsid4552277\rsid4680449\rsid4729674\rsid4865270\rsid4987534\rsid5128131\rsid5186068\rsid5864350\rsid6186044\rsid6311778\rsid6384507\rsid6434687\rsid6561471\rsid6910344\rsid6947552\rsid7033180\rsid7424395\rsid7682010\rsid7690850\rsid7744081
+\rsid8151618\rsid8196281\rsid8198206\rsid8342723\rsid8350925\rsid8722561\rsid8852349\rsid8934457\rsid8944153\rsid9573035\rsid9635349\rsid9638545\rsid9724918\rsid10044820\rsid10095979\rsid10228618\rsid10449644\rsid10494075\rsid11166278\rsid11166751
+\rsid11285353\rsid11366513\rsid11494815\rsid11932529\rsid12061202\rsid12533699\rsid12536400\rsid12916885\rsid13264736\rsid13322831\rsid13440556\rsid13455614\rsid13597357\rsid13768671\rsid14097590\rsid14157399\rsid14229900\rsid14305025\rsid14314735
+\rsid14436896\rsid14565916\rsid14572556\rsid14688892\rsid14752433\rsid14904394\rsid15086147\rsid15749945\rsid15814398\rsid15927751\rsid16071312\rsid16126175\rsid16279402\rsid16391569\rsid16404661\rsid16452939\rsid16537688\rsid16606866\rsid16674896}
+{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title Microsoft Permissive License (Ms-PL)}{\author Jonr}{\operator Dean Johnson}{\creatim\yr2007\mo2\dy23\hr15\min10}
+{\revtim\yr2007\mo2\dy23\hr15\min10}{\printim\yr2006\mo9\dy28\hr8\min46}{\version2}{\edmins1}{\nofpages1}{\nofwords404}{\nofchars2221}{\*\company Microsoft}{\nofcharsws2620}{\vern32859}{\*\saveprevpict}}{\*\userprops {\propname _NewReviewCycle}\proptype30
+{\staticval }}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect 
+\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\hyphcaps0\horzdoc\dghspace120\dgvspace120
+\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\splytwnine\ftnlytwnine\htmautsp\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot10494075
+\newtblstyruls\nogrowautofit\utinl \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
+\s1\ql \li0\ri0\sb180\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 
+\fs31\cf1\kerning36\insrsid10494075\charrsid14688892 Microsoft}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid10494075  Permissive}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid14688892  }{\rtlch\fcs1 \af1\afs31 
+\ltrch\fcs0 \fs31\cf1\kerning36\insrsid10494075 License (Ms-PL}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid4552277 )}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid10494075 
+\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs17 \ltrch\fcs0 
+\b\f40\fs17\insrsid10494075 
+\par This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
+\par }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6910344 
+\par }\pard\plain \ltrpar\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0 
+\b\f40\fs23\insrsid10494075 1. Definitions
+\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid10494075 The terms \'93reproduce,\'94 \'93reproduction}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7744081 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 \'94 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid551334 \'93derivative works,\'94}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7744081\charrsid7744081  }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 and \'93distribution\'94 have the same meaning here as under 
+{\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}U.S.{\*\xmlclose}{\*\xmlclose} copyright law.
+\par }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 A \'93contribution\'94 is the original software}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid4865270 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400  }{\rtlch\fcs1 
+\af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid11932529 or}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400  any additions or changes to the software.
+\par }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid551334 A \'93c}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid551334\charrsid551334 ontributor\'94 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 is}{\rtlch\fcs1 \af40\afs17 
+\ltrch\fcs0 \f40\fs17\insrsid12536400\charrsid551334  }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid551334\charrsid551334 any person that }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 
+distributes its contribution under this license.}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14229900 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid4729674\delrsid4729674  }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 \'93Licensed patents
+\'94 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 are }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3831520 a contributor\rquote s }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 patent claims }{\rtlch\fcs1 
+\af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3831520 that }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 read directly on }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3831520 its contribution.}{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\insrsid14229900\charrsid14229900 
+\par }\pard\plain \ltrpar\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0 
+\b\f40\fs23\insrsid5186068 
+\par }{\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0 \b\f40\fs23\insrsid10494075 2. Grant of Rights
+\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid10494075 (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 each contributor }{\rtlch\fcs1 \af40\afs17 
+\ltrch\fcs0 \f40\fs17\insrsid10494075 grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 its contribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid10494075 , prepare derivative works of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 its contribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid10494075  and distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 its contribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075  or any derivative works that you create.
+\par (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid9724918 each contributor }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid10494075 grants you a non-exclusive, worldwide, royalty-free license under }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid15814398 its }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 licensed patents
+ to make, have made, use, sell, offer for sale, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid1390003 import, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 and/or otherwise dispose of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid8944153 its contribution in }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 the software or derivative works of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid8944153 the contribution in }{\rtlch\fcs1 \af40\afs17 
+\ltrch\fcs0 \f40\fs17\insrsid10494075 the software.
+\par }\pard\plain \ltrpar\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0 
+\b\f40\fs23\insrsid5186068 
+\par }{\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0 \b\f40\fs23\insrsid10494075 3. Conditions and Limitations
+\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid1530955  }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 (A) No Trademark License- This license does not grant you rights to use }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid1708989 any contributors\rquote  }{
+\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 name, logo, or trademarks.
+\par (B) If you }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid8934457 bring a patent claim against }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10095979 any contributor}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 
+ over patents that you }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6947552 claim }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010 are }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6947552 infringe}{\rtlch\fcs1 
+\af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010 d by}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075  the software, your }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010 patent }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid10494075 license}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010  from such contributor}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075  to the software ends automatically.
+\par (C) If you distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3165084 any portion of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 
+the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
+\par (D) If you distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid15749945 any portion of the }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 software in source code form}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid14904394 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075  you may do so only under this license}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6384507  }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid14904394 by including }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 a complete copy of this license with your distribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6384507 .}{\rtlch\fcs1 \af40\afs17 
+\ltrch\fcs0 \f40\fs17\insrsid10494075  }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6384507 I}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 f you distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid15749945 
+any portion of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 the software in compiled or object code form}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid16452939 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 
+ you may only do so under a license that complies with this license.
+\par }\pard \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14572556 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 (E) The software is licensed \'93as-is.\'94 You bear the risk of using it. }{
+\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid284417 The contributors }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 
+give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid1783212 the contributors }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 
+\f40\fs17\insrsid10494075\charrsid14572556 
+\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
+72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
+2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
+44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
+065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
+00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
+84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
+52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
+bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
+656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
+070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
+29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65
+312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8
+a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04
+98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c
+94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471
+7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671
+9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1
+e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5
+193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1
+17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2
+8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6
+6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a
+668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847
+bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e
+16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b
+5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0
+8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2
+c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966
+0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b
+7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb
+9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0
+088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf
+8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26
+ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0
+28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6
+345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93
+b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30
+254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74
+68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24
+51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198
+720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528
+a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000
+000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000
+002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468
+656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000
+00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000
+00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;
+\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;
+\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 1;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 2;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 3;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 4;
+\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 5;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 6;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 7;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 8;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 9;
+\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;
+\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;
+\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000d070
+a7c59f57c701feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}

+ 1030 - 0
Samples/Movipa/Movipa.htm

@@ -0,0 +1,1030 @@
+<html xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xanx="http://schemas.microsoft.com/developer/xanx/2005"><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><META NAME="save" CONTENT="history"><title>Movipa</title>
+<style><!--
+/***********************************************************
+ *             SCRIPT-SUPPORTING STYLES
+ ***********************************************************/
+
+/* Defines the userData cache persistence mechanism. */
+.userDataStyle
+{
+	behavior: url(#default#userData);
+}
+
+/* Used to save the scroll bar position when navigating away from a page. */
+div.saveHistory
+{
+	behavior: url(#default#saveHistory);
+}
+
+/* Formats the expand/collapse images for all collapsible regions. */
+img.toggle
+{
+	border: 0;
+	margin-right: 5;
+}
+
+/* Formats the Language filter drop-down image. */
+img#languageFilterImage
+{
+	border: 0;
+	margin-left: 0;
+	vertical-align: middle;
+}
+
+/* Formats the Members Options filter drop-down image. */
+img#membersOptionsFilterImage
+{
+	border: 0;
+	margin-left: 0;
+	vertical-align: middle;
+}
+
+/* Formats the Collapse All/Expand All images. */
+img#toggleAllImage
+{
+	margin-left: 0;
+	vertical-align: middle;
+}
+
+/* Supports XLinks */
+MSHelp\:link
+{
+ 	text-decoration: underline;
+	color: #0000ff; 
+	hoverColor: #3366ff;
+	filterString: ;
+}
+
+
+body
+	{
+	background:	#FFFFFF;
+	color: #000000;
+	font-family:	Verdana;
+	font-size: medium;
+	font-style: normal;
+	font-weight: normal;
+	margin-top:	0;
+	margin-bottom:	0;
+	margin-left:	0;
+	margin-right:	0;
+	width:	100%;
+	/*font-size: 110%;*/
+	}
+
+div.section
+	{
+	margin-left: 15px;
+	}
+
+div.hxnx5
+	{
+	margin-left: 1.5em;
+	}
+
+/* Font for all headings */	
+h1, h2, h3, h4, h5, h6
+	{
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	margin-top: 18;
+	margin-bottom: 8; 
+	font-weight: bold;
+	}
+h1
+	{
+	font-size: 130%;
+	color: #003399;
+	}
+div#scrollyes h1 /* Changes font size for full-scrolling topic */
+	{
+	font-size: 150%;
+	}
+h2
+	{
+	font-size: 125%;
+	}
+h3
+	{
+	font-size: 115%;
+	margin-top: 9;
+	margin-bottom: 4; 
+	}
+h4
+	{
+	font-size: 115%;
+	margin-top: 9;
+	margin-bottom: 4; 
+	}
+h5
+	{
+	font-size: 100%;
+	margin-top: 9;
+	margin-bottom: 4; 
+	}
+h6
+	{
+	font-size: 100%;
+	margin-top: 9;
+	margin-bottom: 4; 
+	}
+
+ul p, ol p, dl p
+	{
+	margin-left: 0em;
+	}
+
+p
+	{
+	margin-top: .6em;
+	margin-bottom: .6em;
+	}
+	
+td p
+	{
+	margin-top: 0.0em;
+	margin-bottom: 0.6em;
+	}
+
+dd p
+	{
+	margin-top: 0.0em;
+	margin-bottom: 0.6em;
+	}
+
+.image
+	{
+	text-align: center;
+	}
+
+dl
+	{
+	margin-top: 0em; 
+	margin-bottom: 1.3em;
+	}
+
+dd
+	{
+	margin-bottom: 0em;
+	margin-left: 0;
+	}
+
+dl.glossary dd 
+{
+	margin-bottom: 0em;  
+	margin-left: 1.5em; 
+}
+
+dt
+	{
+	margin-top: .6em;
+	margin-bottom: 1;
+	}
+
+ul, ol
+	{
+	margin-top: 0.6em;
+	margin-bottom: 0.6em; 	
+	}
+	
+ol
+	{
+	margin-left: 2.5em; 
+	
+	}	
+	
+ul
+	{
+	list-style-type: disc; 
+	margin-left: 1.9em; 
+	}
+
+li
+	{
+	margin-bottom: 0.4em;
+	}
+
+ul ol, ol ol
+	{
+	list-style-type: lower-alpha;
+	}
+
+pre
+	{
+	margin-top: .6em;
+	margin-bottom: .6em; 
+	}
+
+pre
+	{
+	font: 105% Lucida, mono; 
+	color: #000066;
+	}
+
+code
+{
+	font-family: Monospace, Courier New, Courier;
+	font-size: 105%;
+	color:	#000066;
+}
+
+table.userdata td 
+	{
+	background: #ffffff;
+	background-color: #F5F5F5;
+	border-color: #ffffff;
+	border: none;
+	}	
+table.clsWarning
+	{
+	background: #ffffff;
+	padding: 0px;
+	margin: 0px;
+	border: none;
+	}
+table.clsWarning td
+	{
+	padding: 0px;
+	margin: 0px;
+	background: #ffffff;
+	vertical-align: middle;
+	font-size: 70%;
+	}
+
+div#mainSection table
+	{
+	width: 98%;
+	background: #ffffff;
+	margin-top: 5px;
+	margin-bottom: 5px;
+	}
+
+div#mainSection table th
+	{ 
+	padding: 5px 6px;
+	background: #EFEFF7;
+	text-align: left;
+	font-size: 70%;
+	vertical-align: bottom;
+	border-bottom: 1px solid #C8CDDE;
+	}
+div#mainSection table td
+	{ 
+	padding: 5px 5px;
+	background: #F7F7FF;
+	vertical-align: top;
+	font-size: 70%;
+	border-bottom: 1px solid #D5D5D3;
+	}
+
+div#syntaxCodeBlocks table th
+	{
+	padding: 1px 6px;
+	color: #000066;
+	}
+
+div#syntaxCodeBlocks table td
+	{
+	padding: 1px 5px;
+	}
+
+/* Applies to the running header text in the first row of the upper table in the
+   non-scrolling header region. */
+span#runningHeaderText
+{
+	color: #003399;
+	font-size: 90%;
+	padding-left: 13;
+}
+
+/* Applies to the topic title in the second row of the upper table in the
+   non-scrolling header region. */
+span#nsrTitle
+{
+	color: #003399;
+	font-size: 120%;
+	font-weight: 600;
+	padding-left: 13;
+}
+
+/* Applies to everything below the non-scrolling header region. */
+div#mainSection
+{
+	font-size: 70%;
+	width: 100%;
+}
+
+/* Applies to everything below the non-scrolling header region, minus the footer. */
+div#mainBody
+{
+	font-size: 90%;
+	margin-left: 15;
+	margin-top: 10;
+	padding-bottom: 20;
+}
+
+/* Adds right padding for all blocks in mainBody */
+div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl
+{
+	padding-right: 5;
+}
+
+div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection
+{
+	width:98.9%;
+}
+
+div.alert p, div.code p
+{
+	margin-top:5;
+	margin-bottom:8;
+}
+
+/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Begin Note Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+div#mainSection div.alert table
+{
+	border: 0;
+}
+
+div#mainSection div.alert table th
+{
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 5;
+	padding-right: 5;
+}
+
+div#mainSection div.alert table td
+{
+	padding-left: 5;
+	padding-right: 5;
+}
+
+img.note
+{
+	border: 0;
+	margin-left: 0;
+	margin-right: 3;
+}
+/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - End Note Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Begin Non-scrolling Header Region Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+/* Applies to the entire non-scrolling header region. */
+div#header
+{
+	background-color: #D4DFFF;
+	padding-top:	0;
+	padding-bottom:	0;
+	padding-left:	0;
+	padding-right:	0;
+	width:	100%;
+}
+
+/* Applies to both tables in the non-scrolling header region. */
+div#header table
+{
+	margin-top:	0;
+	margin-bottom: 0;
+	border-bottom-color: #C8CDDE;
+	border-bottom-style: solid;
+	border-bottom-width: 1;
+	background: #D4DFFF;
+	width:	100%;
+}
+
+/* Applies to cells in both tables in the non-scrolling header region. */
+div#header table td
+{
+	color: #0000FF;
+	font-size: 70%;
+	padding-right: 20;
+	padding-top: 1;
+	padding-bottom: 1;
+	border: none;
+	background: #D4DFFF;
+}
+
+/* Applies to the last row in the upper table of the non-scrolling header region. Text 
+   in this row includes See Also, Constructors, Methods, and Properties. */
+div#header table tr#headerTableRow3 td
+{
+	padding-bottom: 2;
+	padding-top: 5;
+	padding-left: 15;
+}
+
+/* Applies to the lower table in the non-scrolling header region. Text in this table
+   includes Collapse All/Expand All, Language Filter, and Members Options. */
+div#header table#bottomTable
+{
+	border-top-color: #FFFFFF;
+	border-top-style: solid;
+	border-top-width: 1;
+	text-align: left;
+	padding-left: 15;
+}
+
+
+blockquote
+	{
+	margin-left: 3.8em;
+	margin-right: 3.8em;
+	margin-top: .6em;
+	margin-bottom: .6em;
+	}
+
+sup
+	{
+	text-decoration: none;
+	font-size: smaller; 
+	}
+
+a:link
+	{
+	color: #0000FF;
+/*    font-weight: bold */
+	}
+	
+a:visited
+	{
+	color: #0000AA;
+/*    font-weight: bold	*/
+	}
+	
+a:hover
+	{
+	color: #3366FF;
+/*    font-weight: bold */
+	}
+	
+.label
+	{
+	font-weight: bold; 
+	margin-top: 1em;
+	margin-left: -26px;
+	}
+	
+.tl
+	{
+	margin-bottom: .75em; 
+	}
+	
+.atl
+	{
+	padding-left: 1.5em;
+	padding-bottom: .75em; 
+	}
+	
+.cfe
+	{
+	font-weight: bold; 
+	}
+	
+.mini
+	{
+	font-size: smaller;
+	}
+	
+.dt
+	{
+	margin-bottom: -.6em; 
+	}
+	
+.indent
+	{
+	margin-left: 1.9em; 
+	margin-right: 1.9em;
+	}
+
+.product
+	{
+	text-align: right;
+	color: #333333;
+	font-size: smaller;
+	font-style: italic;
+	}
+
+.buttonbarshade
+	{
+	position: relative;
+	margin: 0;
+	left: 0px;
+	top: 2;
+	width: 50%;
+	height: 40px;
+	}
+
+.buttonbartable
+	{
+	position: absolute;
+	margin: 0;
+	padding:0;
+	border:0;
+	left:0px;
+	top: 2;
+	width: 100%;
+	height: 40px;
+	}
+
+/* background color, font for header */ 
+table.buttonbartable td, table.buttonbarshade td
+	{
+	background: #ffffff; /*#5177B8; #80C615;*/
+	border-left: 0px solid #80C615;
+	margin: 0;
+	padding: 0px 0px 0px 0px;
+	font-family: Impact, sans-serif;
+	font-size: 14pt;
+	}
+
+table.buttonbartable td.button1
+	{
+	background: #5177B8; /*#80C615;*/;
+	padding: 0;
+	font-weight: bold;
+	text-align: center;
+	cursor: hand;
+	}
+
+table.buttonbartable td.button2
+	{
+	background: #5177B8; /*#80C615;*/;
+	font-weight: bold;
+	text-align: center;
+	}
+
+table.buttonbartable td.button3
+	{
+	background: #5177B8; /*#80C615;*/;
+	font-weight: bold;
+	text-align: center;
+	}
+
+table.buttonbartable td.runninghead
+	{
+	padding-left: 0px;
+	font-style: italic;
+	text-align: left;
+	}
+
+.version
+	{
+	text-align: left;
+	color: #000000;
+	margin-top: 3em;
+	margin-left: -26px;
+	font-size: smaller;
+	font-style: italic;
+	}
+
+.lang, .ilang
+	{
+	color: #0000ff;
+	font: normal 7pt Arial, Helvetica, sans-serif;
+	}
+
+div.langMenu
+	{
+	position: absolute;
+	z-index: 1;
+	width: 96pt;
+	padding: 8pt;
+	visibility: hidden;
+	border: 1px solid #000000;
+	background: #ffffd0;
+	}
+
+div.langMenu ul
+	{
+	padding-left: 2em;
+	margin-left: 0;
+	}
+
+div.filtered
+	{
+	margin: 4pt 0 8pt -26px;
+	padding: 4px 4px 8px 26px;
+	width: 100%;
+	border: 2px solid #aaaacc;
+	background: #ffffff;
+	}
+
+div.filtered2
+	{
+	margin: 4pt 0 8pt -26px;
+	padding: 4px 4px 8px 26px;
+	width: 100%;
+	border: none;
+	background: #ffffff;
+	}
+
+div.filtered h1, div.filtered h2, div.filtered h3, div.filtered h4
+	{
+	margin-left: -22px;
+	}
+
+div.filtered span.lang
+	{
+	position: relative;
+	left: -22px;
+	}
+
+div.reftip
+	{
+	position: absolute;
+	z-index: 1;
+	padding: 8pt;
+	visibility: hidden;
+	border: 1px solid #000000;
+	background: #ffffd0;
+	}
+
+a.synParam
+	{
+	color: #0000FF;
+	/*color: #3F7800;*/ 	
+	/*color: #8DC54F;*/
+	text-decoration: none;
+    font-weight: normal;
+	}
+
+a.synParam:hover
+	{
+	text-decoration: underline;
+    font-weight: normal;
+	}
+
+div.sapop
+	{
+	position: absolute;
+	z-index: 1;
+	left: 26px;
+	width: 100%;
+	padding: 10px 10px 10px 36px;
+	visibility: hidden;
+	border: 1px solid #000000;
+	background: #ffffd0;
+	}
+
+div.footer
+	{
+	width: 100%;
+	border: none;
+	background: #ffffff;
+	margin-top: 18pt;
+	padding-bottom: 12pt;
+	color: #0000FF;
+	/*color: #228B22; */
+	text-align: center;
+	font-size: 76%;
+	}
+
+div.preliminary
+	{
+	margin-top: 8pt;
+	padding-bottom: 12pt;
+	color: #A0A0A0;
+	}
+
+/* A procedure section. eg. 'To create a file', 'To add a value' */
+div.proc
+    {
+	margin-left: 0.5em; 
+    }
+     
+/* The title of a 'procedure' section. */
+div.proc h3
+    {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-weight: bold;
+	font-size: 115%;
+	margin-top: 1em;
+	margin-bottom: 0.4em;
+	margin-left: -0.5em; 
+	color: #003399;
+    }
+
+div.proc ul
+    {
+    margin-left: 1.5em;
+    }
+
+div.proc ol
+    {
+    margin-left: 2.0em;
+    }
+      
+.note
+	{
+	margin-left: 14pt;
+	margin-right: 12pt;
+	}
+
+.indent1
+	{
+	margin-left: 12pt;
+	}
+
+.indent2
+	{
+	margin-left: 24pt;
+	}
+
+.indent3
+	{
+	margin-left: 36pt;
+	}
+
+p.proch
+	{
+	padding-left: 16px;
+	}
+
+p.proch img
+	{
+	position: relative; 
+	vertical-align: top;
+	left: -18px; 
+	margin-right: -14px; 
+	margin-bottom: -18px;
+	}
+	
+div.clsPlatSpec
+{
+	background-color:#FFF8DC;
+	border-style:solid;
+	border-width:1pt 0pt 0pt 1pt;
+	border-color:#ffE4C4;
+	margin-top:0.6em;
+	width:100%;
+}
+
+
+/* Applies to the language labels in the Language Filter drop-down list. */
+.languageFilter
+{
+	color:	#0000FF;
+	cursor:hand;
+	text-decoration:underline;
+	padding-bottom:4;
+}
+
+/* Dropdown areas */
+
+#languageSpan {
+	position: absolute;
+	visibility: hidden;
+	border-style: solid;
+	border-width: 1px;
+	border-color: #C8CDDE;
+	background: #d4dfff;
+	padding: 4px;
+	font-size: 70%;
+}
+
+#membersOptionsSpan {
+	position: absolute;
+	visibility: hidden;
+	border-style: solid;
+	border-width: 1px;
+	border-color: #C8CDDE;
+	background: #d4dfff;
+	padding: 4px;
+	font-size: 70%;
+}
+--></style>
+
+<xml>
+<MSHelp:TOCTitle Title="Movipa" />
+<MSHelp:RLTitle Title="Movipa" />
+<MSHelp:Keyword Index="A" Term="O:Microsoft.Xna.Movipa" />
+<MSHelp:Keyword Index="A" Term="7f7e0ee8-284b-29c3-7bc6-35876da8a6a9" />
+<MSHelp:Keyword Index="K" Term="Movipa" />
+<MSHelp:Attr Name="ProjType" Value="LocalProj" />
+<MSHelp:Attr Name="ProjType" Value="XNA_30" />
+<MSHelp:Attr Name="DocSet" Value="XNA" />
+<MSHelp:Attr Name="DocSet" Value="ExpressLibVS" />
+<MSHelp:Attr Name="DocSet" Value="C#" />
+<MSHelp:Attr Name="Locale" Value="en-us" />
+<MSHelp:Attr Name="CommunityContent" Value="1" />
+<MSHelp:Attr Name="AssetID" Value="7f7e0ee8-284b-29c3-7bc6-35876da8a6a9" />
+<MSHelp:Attr Name="TopicType" Value="kbOrient" />
+</xml>
+</head><body><div id="mainSection"><div id="mainBody">
+	<h1>Movipa</h1>
+	
+
+	<p>This topic contains the following sections.</p>
+	<ul><li><a href="#ID2EP">Introduction to Movipa</a></li><li><a href="#ID2EQB">System Requirements</a></li><li><a href="#ID2EBC">Getting Started</a></li><li><a href="#ID2ETD">Game Controls</a></li><li><a href="#ID2EYCAC">Extending Movipa</a></li></ul>
+
+  <a name="ID2EP"></a><h1 class="heading">Introduction to Movipa</h1><div id="ID2EP" class="hxnx1">
+    
+    <p>
+      Movipa is a complete mini game for XNA Game Studio. The project comes ready to compile and run, and it's easy to customize with a little bit of C# programming. You are also free to use the source code as the basis for your own XNA Game Studio game projects, and to share your work with others.
+    </p>
+    <p>
+      Movipa is a puzzle game involving moving images that demonstrates the following components:
+    </p>
+    <ul>
+      <li>Non-continuous rendering of puzzle tiles via texture coordinates</li>
+      <li>Asynchronous asset loading</li>
+      <li>Game state saving and loading</li>
+      <li>Multiple gameplay modes</li>
+      <li>Complex scene-description system for layered 2D scenes.</li>
+      <li>
+        Skinned animation system, from the Skinning Animation sample on the <a href="http://creators.xna.com">XNA Creators Club website</a>.
+      </li>
+    </ul>
+  </div>
+
+
+  <a name="ID2EQB"></a><h1 class="heading">System Requirements</h1><div id="ID2EQB" class="hxnx1">
+    
+  <a name="ID2EUB"></a><h2 class="subHeading">Minimum Shader Profile</h2><div id="ID2EUB" class="hxnx2">
+    
+    <dl class="glossary">
+      <dt>Vertex Shader Model 2.0</dt>
+      <dt>Pixel Shader Model 2.0</dt>
+    </dl>
+  </div>
+  </div>
+
+  <a name="ID2EBC"></a><h1 class="heading">Getting Started</h1><div id="ID2EBC" class="hxnx1">
+		
+
+		<a name="ID2EFC"></a><h2 class="subHeading">Building and Running a Movipa Project</h2><div id="ID2EFC" class="hxnx2">
+			
+			<div class="proc"><h3 class="subHeading">To build and run the Movipa project</h3><div class="subSection">
+				
+				<ul>
+					<li>
+						<p>
+							Either press F5 or, on the <b>Debug</b> menu, click <b>Start Debugging</b>.
+						</p>
+						<p>The project will build and then run within the debugger.</p>
+					</li>
+				</ul>
+			</div></div>
+
+			<div class="proc"><h3 class="subHeading">To build the project without running it</h3><div class="subSection">
+				
+				<ul>
+					<li>
+						<p>
+							Either press F6 or, on the <b>Build</b> menu, click <b>Build Solution</b>.
+						</p>
+						<p>The project will build without running.</p>
+					</li>
+				</ul>
+			</div></div>
+		</div>
+
+	</div>
+
+	<a name="ID2ETD"></a><h1 class="heading">Game Controls</h1><div id="ID2ETD" class="hxnx1">
+		
+    <p>
+      Menu Controls:
+    </p>
+    <table>
+      <tr>
+        <th>Action</th>
+        <th>Gamepad Control</th>
+        <th>Keyboard Control</th>
+      </tr>
+      <tr>
+        <td>Select a menu entry.</td>
+        <td>Left thumb stick, Directional pad</td>
+        <td>UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW</td>
+      </tr>
+      <tr>
+        <td>Accept the menu selection.</td>
+        <td>
+          <b>A</b>
+        </td>
+        <td>ENTER</td>
+      </tr>
+      <tr>
+        <td>Cancel the menu.</td>
+        <td>
+          <b>B</b>
+        </td>
+        <td>ESC</td>
+      </tr>
+      <tr>
+        <td>Delete a save game (Select File screen only).</td>
+        <td>
+          <b>X</b>
+        </td>
+        <td>X</td>
+      </tr>
+    </table>
+    <p>
+      Game Controls:
+    </p>
+    <table>
+      <tr>
+        <td>Change the current selection.</td>
+        <td>Left thumb stick, Directional pad.</td>
+        <td>UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW</td>
+      </tr>
+      <tr>
+        <td>Select a puzzle piece.</td>
+        <td>
+          <b>A</b>
+        </td>
+        <td>ENTER</td>
+      </tr>
+      <tr>
+        <td>Cancel the current selection.</td>
+        <td>
+          <b>B</b>
+        </td>
+        <td>ESC</td>
+      </tr>
+      <tr>
+        <td>Rotate the selected piece clockwise.</td>
+        <td>
+          <b>Y</b>
+        </td>
+        <td>Y</td>
+      </tr>
+      <tr>
+        <td>Rotate the selected piece counter-clockwise.</td>
+        <td>
+          <b>X</b>
+        </td>
+        <td>X</td>
+      </tr>
+      <tr>
+        <td>Use a hint (stops animation, limited in Normal mode only).</td>
+        <td>Left bumper</td>
+        <td>Q</td>
+      </tr>
+      <tr>
+        <td>Zoom in on the original image thumbnail.</td>
+        <td>Right bumper</td>
+        <td>E</td>
+      </tr>
+      <tr>
+        <td>Enter the pause/exit menu.</td>
+        <td>
+          <b>START</b>
+        </td>
+        <td>TAB</td>
+      </tr>
+      <tr>
+        <td>Rotate the current group clockwise (Rotate Mode only).</td>
+        <td>
+          <b>A</b>
+        </td>
+        <td>ENTER</td>
+      </tr>
+      <tr>
+        <td>Rotate the current group counter-clockwise (Rotate Mode only).</td>
+        <td>
+          <b>Y</b>
+        </td>
+        <td>Y</td>
+      </tr>
+      <tr>
+        <td>Slide the current column down (Slide Mode only).</td>
+        <td>
+          <b>A</b>
+        </td>
+        <td>ENTER</td>
+      </tr>
+      <tr>
+        <td>Slide the current column up (Slide Mode only).</td>
+        <td>
+          <b>Y</b>
+        </td>
+        <td>Y</td>
+      </tr>
+      <tr>
+        <td>Slide the current row left (Slide Mode only).</td>
+        <td>
+          <b>X</b>
+        </td>
+        <td>X</td>
+      </tr>
+      <tr>
+        <td>Slide the current row right (Slide Mode only).</td>
+        <td>
+          <b>B</b>
+        </td>
+        <td>ESC</td>
+      </tr>
+    </table>
+  </div>
+
+  <a name="ID2EYCAC"></a><h1 class="heading">Extending Movipa</h1><div id="ID2EYCAC" class="hxnx1">
+    
+
+    <p>There are many possible ways to modify or improve Movipa:</p>
+    <ul>
+      <li><b>Modify Scenes:</b> It is possible to edit the XML definition files for each scene, including puzzles and menus, or edit the images associated with each of them.</li>
+      <li><b>Reusable Classes:</b>  The StorageComponent, SoundComponent, and InputComponent classes (and related classes) are useful managers for common game tasks.  They may be useful in a variety of games.</li>
+    </ul>
+  </div>
+
+</div><div class="footer" id="footer"><p>© 2008 Microsoft Corporation. All rights reserved.<br>Send feedback to <a href="mailto:[email protected]?subject=Documentation Feedback: Movipa">[email protected]</a>.</p></div></div></body></html>

+ 208 - 0
Samples/Movipa/Movipa/Components/Animation/ModelAnimationComponent.cs

@@ -0,0 +1,208 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// ModelAnimationComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Util;
+using MovipaLibrary;
+using SkinnedModel;
+#endregion
+
+namespace Movipa.Components.Animation.ModelAnimation
+{
+    /// <summary>
+    /// This component is for animations used in puzzles.
+    /// This class inherits PuzzleAnimation to animate and draw
+    /// skin models.
+    ///
+    /// パズルで使用するアニメーションのコンポーネントです。
+    /// このクラスはPuzzleAnimationを継承し、スキンモデルを
+    /// アニメーションさせて描画します。
+    /// </summary>
+    public class ModelAnimationComponent : PuzzleAnimation
+    {
+        #region Fields
+        private readonly Color ClearColor;
+        private Matrix projection;
+        private Matrix view;
+        private Vector3 cameraUpVector;
+        private Vector3 cameraPosition;
+        private Vector3 cameraLookAt;
+        private List<SkinnedModelData> modelList;
+        private SkinnedModelAnimationInfo skinnedModelAnimationInfo;
+        #endregion
+
+        #region Property
+        /// <summary>
+        /// Obtains the movie information.
+        ///
+        /// ムービー情報を取得します。
+        /// </summary>
+        public new SkinnedModelAnimationInfo Info
+        {
+            get { return skinnedModelAnimationInfo; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public ModelAnimationComponent(Game game, SkinnedModelAnimationInfo info)
+            : base(game, info)
+        {
+            skinnedModelAnimationInfo = info;
+
+            // Sets the color to clear the background.
+            // 
+            // 背景をクリアする色を設定します。
+            ClearColor = Color.CornflowerBlue;
+        }
+
+
+        /// <summary>
+        /// Performs initialization.
+        ///
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Obtains the setting information of the camera.
+            // 
+            // カメラの設定を取得します。
+            cameraPosition = Info.CameraPosition;
+            cameraLookAt = Info.CameraLookAt;
+            cameraUpVector = Info.CameraUpVector;
+
+            // Creates a projection.
+            // 
+            // プロジェクションを作成します。
+            float aspect = (float)Info.Size.X / (float)Info.Size.Y;
+            projection = Matrix.CreatePerspectiveFieldOfView(
+                MathHelper.PiOver4, aspect, 0.1f, 1000.0f);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Loads the contents.
+        ///
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the skin model data.
+            // 
+            // モデルデータを読み込みます。
+            modelList = new List<SkinnedModelData>();
+            List<SkinnedModelInfo> list = Info.SkinnedModelInfoCollection;
+            foreach (SkinnedModelInfo skinnedModelInfo in list)
+            {
+                LoadModel(skinnedModelInfo);
+            }
+
+            base.LoadContent();
+        }
+
+
+        /// <summary>
+        /// Loads the skin model data.
+        ///
+        /// モデルデータを読み込みます。
+        /// </summary>
+        private void LoadModel(SkinnedModelInfo skinnedModelInfo)
+        {
+            // Loads the skin model data.
+            // 
+            // モデルデータを読み込みます。
+            Model model = Content.Load<Model>(skinnedModelInfo.ModelAsset);
+            SkinnedModelData modelData = new SkinnedModelData(model, "Take 001");
+
+            // Sets the animation data.
+            // 
+            // アニメーションデータを設定します。
+            SkinningData skinningData = modelData.Model.Tag as SkinningData;
+            modelData.AnimationPlayer = new AnimationPlayer(skinningData);
+            modelData.AnimationClip =
+                skinningData.AnimationClips[skinnedModelInfo.AnimationClip];
+            modelData.AnimationPlayer.StartClip(modelData.AnimationClip);
+
+            // Obtains the position of the skin model.
+            // 
+            // ポジションを取得します。
+            modelData.Position = skinnedModelInfo.Position;
+
+            // Adds the skin model data to the list.
+            // 
+            // リストに追加します。
+            modelList.Add(modelData);
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the skin model and camera.
+        ///
+        /// モデルとカメラの更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Updates the animation for all the skin models.
+            // 
+            // 全てのモデルのアニメーションを更新します。
+            foreach (SkinnedModelData model in modelList)
+            {
+                model.AnimationPlayer.Update(
+                    gameTime.ElapsedGameTime, true, Matrix.Identity);
+            }
+
+            // Updates the camera.
+            // 
+            // カメラの更新をします。
+            view = Matrix.CreateLookAt(cameraPosition, cameraLookAt, cameraUpVector);
+
+            base.Update(gameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing for the render target.
+        ///
+        /// レンダーターゲットへの描画処理を行います。
+        /// </summary>
+        protected override void DrawRenderTarget()
+        {
+            // Clears the background.
+            // 
+            // 背景をクリアします。
+            GraphicsDevice.Clear(ClearColor);
+
+            // Enable the depth buffer.
+            GraphicsDevice.RenderState.DepthBufferEnable = true;
+
+            // Draws all the skin models.
+            // 
+            // 全てのモデルを描画します。
+            foreach (SkinnedModelData model in modelList)
+            {
+                model.Draw(view, projection);
+            }
+        }
+        #endregion
+    }
+}
+

+ 291 - 0
Samples/Movipa/Movipa/Components/Animation/MovieComponent.cs

@@ -0,0 +1,291 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// MovieComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using MovipaLibrary;
+#endregion
+
+namespace Movipa.Components.Animation
+{
+    /// <summary>
+    /// This component is for animations used in puzzles.
+    /// This class inherits PuzzleAnimation to read and draw
+    /// sequential textures.
+    ///
+    /// パズルで使用するアニメーションのコンポーネントです。
+    /// このクラスはPuzzleAnimationを継承し、連番のテクスチャを
+    /// 読み込んで描画します。
+    /// </summary>
+    public class MovieComponent : PuzzleAnimation
+    {
+        #region Fields
+        /// <summary>
+        /// Waiting time for each frame
+        ///
+        /// フレーム毎のウェイト
+        /// </summary>
+        private readonly TimeSpan FrameWait;
+
+        /// <summary>
+        /// Movie texture
+        ///
+        /// ムービーのテクスチャ
+        /// </summary>
+        private Texture2D movieTexture;
+
+        /// <summary>
+        /// Movie texture number
+        ///
+        /// ムービーのテクスチャ番号
+        /// </summary>
+        private UInt32 textureCount;
+
+        /// <summary>
+        /// Movie frame number
+        ///
+        /// ムービーのフレーム番号
+        /// </summary>
+        private UInt32 frameCount;
+
+        /// <summary>
+        /// Drawing size
+        /// 
+        /// 描画サイズ
+        /// </summary>
+        private Rectangle drawRectangle;
+
+        /// <summary>
+        /// Original image size
+        ///
+        /// 元画像サイズ
+        /// </summary>
+        private Rectangle srcRectangle;
+
+        /// <summary>
+        /// Movie information
+        ///
+        /// ムービー情報
+        /// </summary>
+        private RenderingInfo renderingInfo;
+
+        /// <summary>
+        /// Waiting time
+        ///
+        /// ウェイト時間
+        /// </summary>
+        private TimeSpan waitTime;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the movie information.
+        ///
+        /// ムービー情報を取得します。
+        /// </summary>
+        public new RenderingInfo Info
+        {
+            get { return renderingInfo; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public MovieComponent(Game game, RenderingInfo info)
+            : base(game, info)
+        {
+            renderingInfo = info;
+
+            // Sets the waiting time for one frame.
+            //
+            // 1フレームのウェイトを設定します。
+            long tick = TimeSpan.TicksPerSecond / renderingInfo.FrameRate;
+            FrameWait = new TimeSpan(tick);
+        }
+
+
+        /// <summary>
+        /// Performs initialization.
+        ///
+        /// 初期化を実行します。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Sets the image width.
+            // 
+            // 画像の幅を設定します。
+            srcRectangle = new Rectangle(0, 0, Info.ImageSize.X, Info.ImageSize.Y);
+
+            // Sets the drawing size.
+            //
+            // 描画のサイズを設定します。
+            drawRectangle = new Rectangle(0, 0, Info.Size.X, Info.Size.Y);
+
+            // Initializes the frame waiting time.
+            //
+            // フレームウェイトを初期化します。
+            waitTime = TimeSpan.Zero;
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Reads the content.
+        ///
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            string asset;
+
+            // Reads all the sequential numbers and cache textures.
+            // 
+            // 最初に全ての連番を読み込み、テクスチャのキャッシュを行います。
+            for (int i = 0; i < Info.TotalTexture; i++)
+            {
+                asset = string.Format(Info.Format, i);
+                Content.Load<Texture2D>(string.Format(Info.Format, i));
+            }
+
+            // Sets the first texture.
+            // 
+            // 最初のテクスチャを設定します。
+            asset = string.Format(Info.Format, textureCount);
+            movieTexture = Content.Load<Texture2D>(asset);
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs the update process to switch the movie frame.
+        ///
+        /// ムービーのフレームを切り替える更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Calculates the frame waiting time.
+            // 
+            // フレームのウェイトを計算します。
+            waitTime += gameTime.ElapsedGameTime;
+
+            // If the frame waiting time exceeds the preset time, sets the next frame.
+            // 
+            // ウェイトが終了していたら次のフレームを設定します。
+            if (waitTime >= FrameWait)
+            {
+                // Initialize the waiting time.
+                //
+                // ウェイトを初期化します。
+                waitTime = TimeSpan.Zero;
+
+                UpdateNextFrame();
+            }
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the next frame.
+        ///
+        /// 次のフレームへ更新します。
+        /// </summary>
+        private void UpdateNextFrame()
+        {
+            // Increments the frame count.
+            //
+            // フレーム数を次の値へ設定します。
+            frameCount = (frameCount + 1) % Info.TotalFrame;
+
+            // If all frames are completed, returns to the first texture and frame.
+            //
+            // 全てのフレームが終了していた場合は
+            // 最初のテクスチャとフレームに戻します。
+            if (frameCount == 0)
+            {
+                srcRectangle.X = 0;
+                srcRectangle.Y = 0;
+                textureCount = 0;
+                string asset = string.Format(Info.Format, textureCount);
+                movieTexture = Content.Load<Texture2D>(asset);
+                return;
+            }
+
+            // Moves the X coordinate of the transfer source.
+            // 
+            // 転送元のX座標を移動します。
+            int nextX = (srcRectangle.X + srcRectangle.Width);
+            srcRectangle.X = nextX % movieTexture.Width;
+            if (srcRectangle.X == 0)
+            {
+                // If the X coordinate is set to 0, moves the Y coordinate.
+                // 
+                // X座標が0に戻っていた場合はY座標を移動します。
+                int nextY = (srcRectangle.Y + srcRectangle.Height);
+                srcRectangle.Y = nextY % movieTexture.Height;
+                    
+                if (srcRectangle.Y == 0)
+                {
+                    // If both the X and Y coordinates are set to 0, which means 
+                    // all frames in this texture are drawn, switches to the
+                    // next texture. 
+                    // 
+                    // X座標もY座標も0に戻ったら、テクスチャ内のフレームが
+                    // 全て描画し終わったので次のテクスチャに切り替えます。
+                    textureCount = (textureCount + 1) % Info.TotalTexture;
+                    string asset = string.Format(Info.Format, textureCount);
+                    movieTexture = Content.Load<Texture2D>(asset);
+                }
+            }
+        }
+
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs a drawing process for the rendering target.
+        ///
+        /// レンダーターゲットへの描画処理を行います。
+        /// </summary>
+        protected override void DrawRenderTarget()
+        {
+          
+           // Clears the background.
+           //
+           // 背景をクリアします。
+            GraphicsDevice.Clear(Color.Black);
+
+            // Draws the texture.
+            // 
+            // テクスチャを描画します。
+            Batch.Begin();
+            Batch.Draw(movieTexture, drawRectangle, srcRectangle, Color.White);
+            Batch.End();
+
+        }
+        #endregion
+    }
+
+
+}
+
+
+
+

+ 77 - 0
Samples/Movipa/Movipa/Components/Animation/Particle.cs

@@ -0,0 +1,77 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// Particle.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+#endregion
+
+namespace Movipa.Components.Animation
+{
+    /// <summary>
+    /// This class handles particle information.
+    ///
+    /// パーティクルの情報を扱います。
+    /// </summary>
+    public class Particle
+    {
+        #region Fields
+        /// <summary>
+        /// Fall velocity
+        ///
+        /// 落下速度
+        /// </summary>
+        public static readonly Vector3 Gravity = new Vector3(0, -0.1f, 0);
+
+        private Vector3 position;
+        private Vector3 velocity;
+        private bool enable;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains or sets the position.
+        ///
+        /// 位置を取得または設定します。
+        /// </summary>
+        public Vector3 Position
+        {
+            get { return position; }
+            set { position = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the distance.
+        ///
+        /// 移動量を取得または設定します。
+        /// </summary>
+        public Vector3 Velocity
+        {
+            get { return velocity; }
+            set { velocity = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the enabled status.
+        ///
+        /// 有効状態を取得または設定します。
+        /// </summary>
+        public bool Enable
+        {
+            get { return enable; }
+            set { enable = value; }
+        }
+        #endregion
+    }
+}
+

+ 391 - 0
Samples/Movipa/Movipa/Components/Animation/ParticleComponent.cs

@@ -0,0 +1,391 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// ParticleComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+using Movipa.Util;
+using MovipaLibrary;
+#endregion
+
+namespace Movipa.Components.Animation
+{
+    /// <summary>
+    /// This component is for animations used in puzzles.
+    /// This class inherits PuzzleAnimation to draw particles
+    /// with SpriteBatch.
+    ///
+    /// パズルで使用するアニメーションのコンポーネントです。
+    /// このクラスはPuzzleAnimationを継承し、パーティクルを
+    /// SpriteBatchで描画します。
+    /// </summary>
+    public class ParticleComponent : PuzzleAnimation
+    {
+        #region Fields
+        private Matrix projection;
+        private Matrix view;
+
+        private Vector3 cameraUpVector;
+        private Vector3 cameraPosition;
+        private Vector3 cameraLookAt;
+        private float cameraRotate = 0;
+        private float cameraDistance = 100.0f;
+
+        private UInt32 particleMax;
+        private float particleJumpPower;
+        private float particleMoveSpeed;
+        private UInt32 particleGenerateCount;
+
+
+        private Texture2D spriteTexture;
+        private LinkedList<Particle> particleList;
+
+        // Class to draw a floor
+        // 
+        // 床を描画するクラス
+        private PrimitiveFloor primitiveFloor;
+
+        // Animation information
+        // 
+        // アニメーション情報
+        private ParticleInfo particleInfo;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the movie information.
+        ///
+        /// ムービー情報を取得します。
+        /// </summary>
+        public new ParticleInfo Info
+        {
+            get { return particleInfo; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public ParticleComponent(Game game, ParticleInfo info)
+            : base(game, info)
+        {
+            particleInfo = info;
+
+            // Creates a class to draw a floor.
+            // 
+            // 床を描画するクラスを作成します。
+            primitiveFloor = new PrimitiveFloor(game.GraphicsDevice);
+        }
+
+
+        /// <summary>
+        /// Performs initialization.
+        ///
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Obtains the setting information of the camera.
+            // 
+            // カメラの設定を取得します。
+            cameraUpVector = Info.CameraUpVector;
+            cameraPosition = Info.CameraPosition;
+            cameraLookAt = Info.CameraLookAt;
+
+            // Obtains the setting information of the particle.
+            particleMax = Info.ParticleMax;
+            particleJumpPower = Info.ParticleJumpPower;
+            particleMoveSpeed = Info.ParticleMoveSpeed;
+            particleGenerateCount = Info.ParticleGenerateCount;
+
+            // Creates a particle array.
+            // 
+            // パーティクルの配列を作成します。
+            particleList = new LinkedList<Particle>();
+
+            // Creates a projection.
+            // 
+            // プロジェクションを作成します。
+            float aspect = (float)Info.Size.X / (float)Info.Size.Y;
+            projection = Matrix.CreatePerspectiveFieldOfView(
+                MathHelper.PiOver4, aspect, 0.1f, 1000.0f);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Loads the contents.
+        ///
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the particle texture.
+            // 
+            // パーティクルのテクスチャを読み込みます。
+            string asset = Info.ParticleTexture;
+            spriteTexture = Content.Load<Texture2D>(asset);
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the particle and camera.
+        ///
+        /// パーティクルとカメラの更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Updates the camera.
+            // 
+            // カメラの更新処理を行います。
+            UpdateCamera();
+
+            // Updates the particle.
+            // 
+            // パーティクルの更新処理を行います。
+            UpdateParticles();
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Updates all the particles.
+        /// 
+        /// 全てのパーティクルの更新処理を行います。
+        /// </summary>
+        private void UpdateParticles()
+        {
+            // Creates a particle.
+            // 
+            // パーティクルを作成します。
+            CreateParticle();
+
+            // Moves all the particles.
+            // 
+            // 全てのパーティクルを移動します。
+            LinkedListNode<Particle> node = particleList.First;
+            LinkedListNode<Particle> removeNode;
+            while (node != null)
+            {
+                Particle particle = node.Value;
+                UpdateParticle(particle);
+
+                // Saves the node to determine the end of the animation.
+                // 
+                // アニメーション終了判定用にノードを保持します。
+                removeNode = node;
+
+                // Moves to the next node.
+                // 
+                // 次のノードへ移動します。
+                node = node.Next;
+
+                // Checks the determination node to see whether it has ended.
+                // If it has ended, removes this node from the list.
+                // 
+                // 終了判定用のノードをチェックし、終了していた場合は
+                // ノードをリストから削除します。
+                if (!removeNode.Value.Enable)
+                {
+                    particleList.Remove(removeNode);
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the single particle. 
+        ///
+        /// 単体のパーティクルの更新処理を行います。
+        /// </summary>
+        private static void UpdateParticle(Particle particle)
+        {
+            // Changes the fall velocity for the distance.
+            // 
+            // 移動量の落下速度を変更します。
+            particle.Velocity += Particle.Gravity;
+
+            // Moves the particle.
+            // 
+            // パーティクルの移動をします。
+            particle.Position += particle.Velocity;
+
+            // If the position of the particle falls below the floor, 
+            // terminates the animation.
+            //
+            // パーティクルの位置が床より下に行くと、
+            // アニメーションの終了処理を行います。
+            if (particle.Position.Y < 0)
+                particle.Enable = false;
+        }
+
+
+        /// <summary>
+        /// Updates the camera.
+        /// </summary>
+        private void UpdateCamera()
+        {
+            // Rotates the camera.
+            // 
+            // カメラを回転させます。
+            cameraRotate += 0.001f;
+            cameraPosition.X = (float)Math.Sin(cameraRotate) * cameraDistance;
+            cameraPosition.Z = (float)Math.Cos(cameraRotate) * cameraDistance;
+
+            // Creates a view from the camera.
+            // 
+            // カメラからビューを作成します。
+            view = Matrix.CreateLookAt(cameraPosition, cameraLookAt, cameraUpVector);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing for the render target.
+        ///
+        /// レンダーターゲットへの描画処理を行います。
+        /// </summary>
+        protected override void DrawRenderTarget()
+        {
+            // Clears the background.
+            // 
+            // 背景をクリアします。
+            GraphicsDevice.Clear(Color.Black);
+
+            // Draws the floor.
+            // 
+            // 床を描画します。
+            primitiveFloor.SetRenderState(GraphicsDevice, SpriteBlendMode.AlphaBlend);
+            primitiveFloor.Draw(projection, view);
+
+            // Draws the particle.
+            // 
+            // パーティクルを描画します。
+            DrawParticle();
+        }
+
+
+        /// <summary>
+        /// Draws the particle.
+        ///
+        /// パーティクルを描画します。
+        /// </summary>
+        private void DrawParticle()
+        {
+            Batch.Begin(SpriteBlendMode.Additive);
+
+            foreach (Particle particle in particleList)
+            {
+                Vector3 position = particle.Position;
+
+                // Converts world coordinates to screen coordinates.
+                // 
+                // ワールド座標からスクリーン座標に変換します。
+                Vector2 pos1 = WorldToScreen(position);
+
+                // Converts world coordinates to screen coordinates by 
+                // turning them upside down.
+                // 
+                // 位置を上下反転させて、スクリーン座標に変換します。
+                position.Y = -position.Y;
+                Vector2 pos2 = WorldToScreen(position);
+
+                // Draws the particle.
+                // 
+                // パーティクルを描画します。
+                Batch.Draw(spriteTexture, pos1, Color.White);
+                Batch.Draw(spriteTexture, pos2, Color.Blue);
+            }
+
+            Batch.End();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Creates new particles.
+        ///
+        /// パーティクルの生成処理を行います。
+        /// </summary>
+        private void CreateParticle()
+        {
+            for (int i = 0; i < particleGenerateCount; i++)
+            {
+                // Checks the number of current particles. 
+                // If it exceeds the maximum number of allowed particles, 
+                // stops creating new particles.
+                //
+                // パーティクルの最大数をチェックし、上限に達していたら
+                // 生成処理を行いません。
+                if (particleList.Count >= particleMax)
+                {
+                    return;
+                }
+
+                // Create a new particle.
+                // 
+                // パーティクルを新たに作成します。
+                Particle particle = new Particle();
+                float direction = (float)Random.NextDouble() * 360.0f;
+                float speed = ((float)Random.NextDouble() + 0.1f) * particleMoveSpeed;
+                float jump = ((float)Random.NextDouble() + 0.1f) * particleJumpPower;
+
+                particle.Enable = true;
+                particle.Position = Vector3.Zero;
+
+                Vector3 velocity = new Vector3();
+                velocity.X += (float)Math.Sin(direction) * speed;
+                velocity.Y += jump;
+                velocity.Z += (float)Math.Cos(direction) * speed;
+                particle.Velocity = velocity;
+
+                // Adds the particle to the array.
+                // 
+                // パーティクルを配列に追加します。
+                particleList.AddLast(particle);
+            }
+
+        }
+
+
+        /// <summary>
+        /// Converts world coordinates to screen coordinates.
+        ///
+        /// ワールド座標からスクリーン座標に変換します。
+        /// </summary>
+        private Vector2 WorldToScreen(Vector3 position)
+        {
+            Vector4 v4 = Vector4.Transform(position, Matrix.Identity);
+            v4 = Vector4.Transform(v4, view);
+            v4 = Vector4.Transform(v4, projection);
+
+            Vector2 screenSize = new Vector2(Info.Size.X, Info.Size.Y);
+            Vector2 screenHalf = screenSize * 0.5f;
+
+            float x = (v4.X / v4.W + 1) * screenHalf.X;
+            float y = (1 - v4.Y / v4.W) * screenHalf.Y;
+
+            return new Vector2(x, y);
+        }
+        #endregion
+    }
+}
+

+ 181 - 0
Samples/Movipa/Movipa/Components/Animation/PuzzleAnimation.cs

@@ -0,0 +1,181 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// PuzzleAnimation.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using MovipaLibrary;
+#endregion
+
+namespace Movipa.Components.Animation
+{
+    /// <summary>
+    /// This is an abstract class of the component that performs update and 
+    /// drawing processes for animations used in a puzzle. 
+    /// Major implementations for drawing are written in the subclass.
+    ///
+    /// パズルで使用するアニメーションの更新と描画を実行するコンポーネントの
+    /// 抽象クラスです。
+    /// 描画に関する主な実装は継承先のクラスで記述します。
+    /// </summary>
+    public abstract class PuzzleAnimation : SceneComponent
+    {
+        #region Fields
+        private AnimationInfo animationInfo;
+        protected RenderTarget2D renderTarget;
+        protected Texture2D renderTargetTexture;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the movie information.
+        ///
+        /// ムービー情報を取得します。
+        /// </summary>
+        public AnimationInfo Info
+        {
+            get { return animationInfo; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        protected PuzzleAnimation(Game game, AnimationInfo info)
+            : base(game)
+        {
+            animationInfo = info;
+        }
+
+
+        /// <summary>
+        /// Reads the contents.
+        ///
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Obtains the parameters.
+            // 
+            // パラメータを取得します。
+            PresentationParameters pp = GraphicsDevice.PresentationParameters;
+            SurfaceFormat format = pp.BackBufferFormat;
+            MultiSampleType msType = pp.MultiSampleType;
+            int msQuality = pp.MultiSampleQuality;
+
+            // Creates a render target.
+            // 
+            // レンダーターゲットを作成します。
+            int width = Info.Size.X;
+            int height = Info.Size.Y;
+            renderTarget = new RenderTarget2D(
+                GraphicsDevice, width, height, 1, format, msType, msQuality, 
+                RenderTargetUsage.PreserveContents);
+
+            base.LoadContent();
+        }
+
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing for the render target.
+        ///
+        /// レンダーターゲットへの描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            if (renderTarget != null && !renderTarget.IsDisposed)
+            {
+                // Sets the drawing target.
+                // 
+                // 描画先を設定します。
+                GraphicsDevice.SetRenderTarget(0, renderTarget);
+
+                // Performs drawing for the render target.
+                // 
+                // レンダーターゲットへの描画を行います。
+                DrawRenderTarget();
+
+                // Returns the drawing target. 
+                // 
+                // 描画先を戻します。
+                GraphicsDevice.SetRenderTarget(0, null);
+
+                // Obtains the texture.
+                // 
+                // テクスチャを取得します。
+                renderTargetTexture = renderTarget.GetTexture();
+            }
+
+            base.Draw(gameTime);
+        }
+
+
+        /// <summary>
+        /// Performs drawing for the render target.
+        /// 
+        /// レンダーターゲットへの描画処理を行います。
+        /// </summary>
+        protected virtual void DrawRenderTarget() { }
+
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Obtains the texture of the render target.
+        /// 
+        /// レンダーターゲットのテクスチャを取得します。
+        /// </summary>
+        public Texture2D Texture
+        {
+            get { return renderTargetTexture; }
+        }
+
+
+        /// <summary>
+        /// Creates an animation component.
+        /// 
+        /// アニメーションコンポーネントを作成します。
+        /// </summary>
+        public static PuzzleAnimation CreateAnimationComponent(
+            Game game, AnimationInfo info)
+        {
+            switch (info.Category)
+            {
+                case AnimationInfo.AnimationInfoCategory.Layout:
+                    return new SequencePlayAnimationComponent(
+                        game, (LayoutInfo)info);
+                case AnimationInfo.AnimationInfoCategory.Rendering:
+                    return new MovieComponent(
+                        game, (RenderingInfo)info);
+                case AnimationInfo.AnimationInfoCategory.SkinnedModelAnimation:
+                    return new Animation.ModelAnimation.ModelAnimationComponent(
+                        game, (SkinnedModelAnimationInfo)info);
+                case AnimationInfo.AnimationInfoCategory.Particle:
+                    return new Animation.ParticleComponent(
+                        game, (ParticleInfo)info);
+                default:
+                    throw new ArgumentException("Invalid animation category provided.");
+            }
+        }
+
+        #endregion
+    }
+}
+
+
+
+

+ 123 - 0
Samples/Movipa/Movipa/Components/Animation/SequencePlayAnimationComponent.cs

@@ -0,0 +1,123 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SequencePlayAnimationComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using SceneDataLibrary;
+using MovipaLibrary;
+#endregion
+
+namespace Movipa.Components.Animation
+{
+    /// <summary>
+    /// This component is for animations used in puzzles.
+    /// This class inherits PuzzleAnimation to play and draw
+    /// the sequence of Layout.
+    ///
+    /// パズルで使用するアニメーションのコンポーネントです。
+    /// このクラスはPuzzleAnimationを継承し、Layoutのシーケンスを
+    /// 再生して描画します。
+    /// </summary>
+    public class SequencePlayAnimationComponent : PuzzleAnimation
+    {
+        #region Fields
+        private SceneData sceneData = null;
+        private SequencePlayData seqPlayData = null;
+        private LayoutInfo layoutToolInfo;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the movie information.
+        ///
+        /// ムービー情報を取得します。
+        /// </summary>
+        public new LayoutInfo Info
+        {
+            get { return layoutToolInfo; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SequencePlayAnimationComponent(Game game, LayoutInfo info)
+            : base(game, info)
+        {
+            layoutToolInfo = info;
+        }
+
+
+        /// <summary>
+        /// Reads the contents.
+        ///
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Reads the Layout data.
+            // 
+            // Layoutのデータを読み込みます。
+            sceneData = Content.Load<SceneData>(Info.SceneDataAsset);
+            seqPlayData = sceneData.CreatePlaySeqData(Info.Sequence);
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the sequence.
+        ///
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            seqPlayData.Update(gameTime.ElapsedGameTime);
+            base.Update(gameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing for the render target.
+        ///
+        /// レンダーターゲットへの描画処理を行います。
+        /// </summary>
+        protected override void DrawRenderTarget()
+        {
+            // Clears the background.
+            // 
+            // 背景をクリアします。
+            GraphicsDevice.Clear(Color.Black);
+
+            // Draws the sequence.
+            // 
+            // シーケンスの描画を行います。
+            Batch.Begin();
+            seqPlayData.Draw(Batch, null);
+            Batch.End();
+        }
+        #endregion
+   }
+}
+
+
+
+
+
+
+

+ 304 - 0
Samples/Movipa/Movipa/Components/FadeSeqComponent.cs

@@ -0,0 +1,304 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// FadeSeqComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components
+{
+    #region Public Types
+    /// <summary>
+    /// Fade status
+    /// 
+    /// フェード状態
+    /// </summary>
+    public enum FadeMode
+    {
+        /// <summary>
+        /// Fade-in
+        /// 
+        /// フェードイン
+        /// </summary>
+        FadeIn,
+
+        /// <summary>
+        /// Fade-out
+        /// 
+        /// フェードアウト
+        /// </summary>
+        FadeOut,
+
+        /// <summary>
+        /// Stop fade
+        /// 
+        /// フェード停止
+        /// </summary>
+        None
+    }
+
+    /// <summary>
+    /// Fade type
+    /// 
+    /// フェード種類
+    /// </summary>
+    public enum FadeType
+    {
+        /// <summary>
+        /// Normal fade
+        /// 
+        /// 通常フェード
+        /// </summary>
+        Normal,
+        
+        /// <summary>
+        /// Rectangle fade
+        /// 
+        /// 矩形フェード
+        /// </summary>
+        RotateBox,
+        
+        /// <summary>
+        /// Gonzales fade
+        /// 
+        /// ゴンザレスフェード
+        /// </summary>
+        Gonzales,
+    }
+    #endregion
+
+    /// <summary>
+    /// The component that draws the fade.
+    /// The fade animation involves loading the Layout 
+    /// sequence and managing and drawing the in and out separately.
+    /// To add more fade types, first add animations to the sequence
+    /// used for fade processing, then add the Fadetype item, then
+    /// load the corresponding animation. 
+    /// 
+    /// フェードの描画をするコンポーネントです。
+    /// フェードのアニメーションにはLayoutのシーケンスを読み込み、
+    /// インとアウトを別に管理して描画しています。
+    /// フェードの種類を増やしたい場合は、事前にフェードに使用する
+    /// シーケンスにアニメーションを追加し、FadeTypeの項目を追加し、
+    /// 対応するアニメーションを読み込みます。
+    /// </summary>
+    public class FadeSeqComponent : SceneComponent
+    {
+        #region Private Types
+        /// <summary>
+        /// Fade-in sequence name
+        /// 
+        /// フェードインのシーケンス名
+        /// </summary>
+        private const string SeqFadeInName = "FadeIn";
+
+        /// <summary>
+        /// Fade-out sequence name
+        /// 
+        /// フェードアウトのシーケンス名
+        /// </summary>
+        private const string SeqFadeOutName = "FadeOut";
+        #endregion
+
+        #region Fields
+        private Dictionary<FadeType, SceneData> sceneList;
+        private Dictionary<FadeType, Dictionary<FadeMode, SequencePlayData>> seqList;
+        private SequencePlayData curSeqData = null;
+        private FadeMode fadeMode = FadeMode.None;
+        private float count = 0.0f;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains or sets the fade status.
+        /// 
+        /// フェード状態を取得または設定します。
+        /// </summary>
+        public FadeMode FadeMode
+        {
+            get { return fadeMode; }
+            set { fadeMode = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains the fade count.
+        /// 
+        /// フェードカウントを取得します。
+        /// </summary>
+        public float Count
+        {
+            get { return count; }
+        }
+
+
+        /// <summary>
+        /// Obtains the playback status.
+        /// 
+        /// 再生状態を取得します。
+        /// </summary>
+        public bool IsPlay
+        {
+            get { return curSeqData.IsPlay; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public FadeSeqComponent(Game game)
+            : base(game)
+        {
+        }
+
+
+        /// <summary>
+        /// Executes content load processing.
+        /// 
+        /// コンテントの読み込み処理を実行します。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            sceneList = new Dictionary<FadeType, SceneData>();
+            seqList = new Dictionary<FadeType, Dictionary<FadeMode, SequencePlayData>>();
+
+            // Loads the sequence data.
+            // 
+            // シーケンスデータを読み込みます。
+            addFadeScene(FadeType.Normal, "Layout/Fade/Normal_Scene");
+            addFadeScene(FadeType.RotateBox, "Layout/Fade/RotateBox_Scene");
+            addFadeScene(FadeType.Gonzales, "Layout/Fade/Gonzales_Scene");
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the sequence. 
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            if (curSeqData != null)
+            {
+                curSeqData.Update(gameTime.ElapsedGameTime);
+                count += 1.0f;
+            }
+
+            base.Update(gameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws the sequence.
+        /// 
+        /// シーケンスの描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            if (curSeqData != null)
+            {
+                Batch.Begin();
+                curSeqData.Draw(Batch, null);
+                Batch.End();
+            }
+
+            base.Draw(gameTime);
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Starts the fade processing.
+        /// 
+        /// フェード処理を開始します。
+        /// </summary>
+        /// <param name="type">Fade Type</param>
+        ///
+        /// <param name="type">フェードの種類</param>
+
+        /// <param name="mode">Fade Status</param>
+        /// 
+        /// <param name="mode">フェードの状態</param>
+        public void Start(FadeType type, FadeMode mode)
+        {
+            // No processing is performed when Stop status is specified.
+            // 
+            // 状態が停止で指定された場合は処理を行いません。
+            if (mode == FadeMode.None)
+            {
+                return;
+            }
+
+            // Sets the current fade status.
+            // 
+            // 現在のフェード状態を設定します。
+            FadeMode = mode;
+
+            // Initializes the count. 
+            // 
+            // カウントを初期化します。
+            count = 0.0f;
+
+            // Replaces the sequence with the specified one.
+            // 
+            // シーケンスを指定のものに差し替えます。
+            curSeqData = seqList[type][mode];
+            curSeqData.SequenceData.SequenceGroupList[0].Replay();
+
+            // Updates the first frame once.
+            // 
+            // 最初のフレームに一度更新します。
+            curSeqData.Update(new TimeSpan());
+        }
+
+
+        /// <summary>
+        /// Adds the specified sequence to the array.
+        /// 
+        /// 指定されたシーケンスを配列に追加します。
+        /// </summary>
+        /// <param name="type">Fade Type</param>
+        ///  
+        /// <param name="type">フェードタイプ</param>
+        /// <param name="asset">Sequence Asset Name</param>
+        ///  
+        /// <param name="asset">シーケンスのアセット名</param>
+        private void addFadeScene(FadeType type, string asset)
+        {
+            // Loads the scene data.
+            // 
+            // シーンデータを読み込みます。
+            SceneData scene = Content.Load<SceneData>(asset);
+            sceneList.Add(type, scene);
+
+            // Loads the sequence from the scene data.
+            // 
+            // シーンデータからシーケンスを読み込みます。
+            Dictionary<FadeMode, SequencePlayData> fadeList = 
+                new Dictionary<FadeMode, SequencePlayData>();
+            fadeList.Add(FadeMode.FadeIn, scene.CreatePlaySeqData(SeqFadeInName));
+            fadeList.Add(FadeMode.FadeOut, scene.CreatePlaySeqData(SeqFadeOutName));
+            seqList.Add(type, fadeList);
+        }
+        #endregion
+    }
+}
+
+

+ 314 - 0
Samples/Movipa/Movipa/Components/Input/InputComponent.cs

@@ -0,0 +1,314 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// InputComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Input;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// This component manages input information from a device.
+    /// The input state of the game pad and keyboard is reflected to the state
+    /// of the virtual pad.  When checking which virtual pad is assigned to the 
+    /// keyboard or when adding a new keyboard, refer to the value of VirtualKeyMaps.
+    ///
+    /// デバイスからの入力を管理するコンポーネントです。
+    /// ゲームパッドとキーボードの入力状態から仮想パッドの状態に反映します。
+    /// キーボードがどの仮想パッドに割り当てられているか、または追加する場合は
+    /// VirtualKeyMapsの値を参照してください。
+    /// </summary>
+    public class InputComponent : GameComponent
+    {
+        #region Fields
+        private readonly PlayerIndex[] Players = {
+            PlayerIndex.One,
+            PlayerIndex.Two,
+            PlayerIndex.Three,
+            PlayerIndex.Four
+        };
+
+        private float deadZone;
+        private Dictionary<PlayerIndex, KeyboardState> keyboardStates;
+        private Dictionary<PlayerIndex, GamePadState> gamePadStates;
+        private Dictionary<PlayerIndex, VirtualPadState> virtualPadStates;
+        private Dictionary<InputState, Keys> virtualKeyMaps;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the state of the keyboard.
+        ///
+        /// キーボード状態を取得します。
+        /// </summary>
+        public Dictionary<PlayerIndex, KeyboardState> KeyboardStates
+        {
+            get { return keyboardStates; }
+        }
+
+
+        /// <summary>
+        /// Obtains the state of the game pad.
+        ///
+        /// ゲームパッド状態を取得します。
+        /// </summary>
+        public Dictionary<PlayerIndex, GamePadState> GamePadStates
+        {
+            get { return gamePadStates; }
+        }
+
+
+        /// <summary>
+        /// Obtains the state of the virtual pad.
+        ///
+        /// 仮想パッド状態を取得します。
+        /// </summary>
+        public Dictionary<PlayerIndex, VirtualPadState> VirtualPadStates
+        {
+            get { return virtualPadStates; }
+        }
+
+
+        /// <summary>
+        /// Obtains the key map.
+        ///
+        /// キーマップを取得します。
+        /// </summary>
+        public Dictionary<InputState, Keys> VirtualKeyMaps
+        {
+            get { return virtualKeyMaps; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the non-response area of the analog stick.
+        ///
+        /// アナログスティックの無反応領域を取得または設定します。
+        /// </summary>
+        public float DeadZone
+        {
+            get { return deadZone; }
+            set { deadZone = value; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public InputComponent(Game game)
+            : base(game)
+        {
+        }
+
+
+        /// <summary>
+        /// Performs initialization.
+        ///
+        /// 初期化を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            deadZone = 0.5f;
+            keyboardStates = new Dictionary<PlayerIndex, KeyboardState>();
+            gamePadStates = new Dictionary<PlayerIndex, GamePadState>();
+            virtualPadStates = new Dictionary<PlayerIndex, VirtualPadState>();
+            virtualKeyMaps = new Dictionary<InputState, Keys>();
+
+            foreach (PlayerIndex index in Players)
+            {
+                keyboardStates.Add(index, Keyboard.GetState(index));
+                gamePadStates.Add(index, GamePad.GetState(index));
+                virtualPadStates.Add(index, new VirtualPadState());
+            }
+
+            InitializeVirtualKeyMaps();
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Perform initialization for key mapping.
+        /// 
+        /// キーマッピングの初期化を行います。
+        /// </summary>
+        public void InitializeVirtualKeyMaps()
+        {
+            VirtualPadState virtualPad = virtualPadStates[PlayerIndex.One];
+
+            virtualKeyMaps.Clear();
+
+            // Arrow
+            virtualKeyMaps.Add(virtualPad.ThumbSticks.Left.Up, Keys.Up);
+            virtualKeyMaps.Add(virtualPad.ThumbSticks.Left.Down, Keys.Down);
+            virtualKeyMaps.Add(virtualPad.ThumbSticks.Left.Left, Keys.Left);
+            virtualKeyMaps.Add(virtualPad.ThumbSticks.Left.Right, Keys.Right);
+            virtualKeyMaps.Add(virtualPad.DPad.Up, Keys.Up);
+            virtualKeyMaps.Add(virtualPad.DPad.Down, Keys.Down);
+            virtualKeyMaps.Add(virtualPad.DPad.Left, Keys.Left);
+            virtualKeyMaps.Add(virtualPad.DPad.Right, Keys.Right);
+
+            // Buttons
+            virtualKeyMaps.Add(virtualPad.Buttons.A, Keys.Enter);
+            virtualKeyMaps.Add(virtualPad.Buttons.B, Keys.Escape);
+            virtualKeyMaps.Add(virtualPad.Buttons.X, Keys.X);
+            virtualKeyMaps.Add(virtualPad.Buttons.Y, Keys.Y);
+            virtualKeyMaps.Add(virtualPad.Buttons.LeftShoulder, Keys.Q);
+            virtualKeyMaps.Add(virtualPad.Buttons.RightShoulder, Keys.E);
+            virtualKeyMaps.Add(virtualPad.Buttons.Start, Keys.Tab);
+            virtualKeyMaps.Add(virtualPad.Buttons.Back, Keys.Escape);
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the keys.
+        ///
+        /// キーの更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            UpdateGamePadState();
+            UpdateKeyboardState();
+
+            AssignVirtualPad();
+            UpdateVirtualPad();
+
+            base.Update(gameTime);
+        }
+
+        /// <summary>
+        /// Updates the game pad information.
+        ///
+        /// ゲームパッドの情報を更新します。
+        /// </summary>
+        private void UpdateGamePadState()
+        {
+            foreach (PlayerIndex index in Players)
+            {
+                gamePadStates[index] = GamePad.GetState(index);
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the keyboard information.
+        ///
+        /// キーボードの情報を更新します。
+        /// </summary>
+        private void UpdateKeyboardState()
+        {
+            foreach (PlayerIndex index in Players)
+            {
+                keyboardStates[index] = Keyboard.GetState(index);
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the virtual key information.
+        ///
+        /// 仮想キーの情報を更新します。
+        /// </summary>
+        private void UpdateVirtualPad()
+        {
+            foreach (PlayerIndex index in Players)
+            {
+                virtualPadStates[index].Update();
+            }
+        }
+
+
+
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Sets the state for when a virtual key is pressed.
+        ///
+        /// 仮想キーの押下状態を設定します。
+        /// </summary>
+        private void AssignVirtualPad()
+        {
+            foreach (PlayerIndex index in Players)
+            {
+                AssignVirtualPad(index);
+            }
+        }
+
+
+        /// <summary>
+        /// Sets the state for when a virtual key is pressed.
+        ///
+        /// 仮想キーの押下状態を設定します。
+        /// </summary>
+        private void AssignVirtualPad(PlayerIndex index)
+        {
+            GamePadState gamePad = gamePadStates[index];
+            VirtualPadState virtualPad = virtualPadStates[index];
+
+            // Clear
+            virtualPad.SetPress(false);
+
+            // Buttons
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            buttons.A.IsPress = gamePad.IsButtonDown(Buttons.A);
+            buttons.B.IsPress = gamePad.IsButtonDown(Buttons.B);
+            buttons.X.IsPress = gamePad.IsButtonDown(Buttons.X);
+            buttons.Y.IsPress = gamePad.IsButtonDown(Buttons.Y);
+            buttons.LeftShoulder.IsPress = gamePad.IsButtonDown(Buttons.LeftShoulder);
+            buttons.RightShoulder.IsPress = gamePad.IsButtonDown(Buttons.RightShoulder);
+            buttons.LeftStick.IsPress = gamePad.IsButtonDown(Buttons.LeftStick);
+            buttons.RightStick.IsPress = gamePad.IsButtonDown(Buttons.RightStick);
+            buttons.Back.IsPress = gamePad.IsButtonDown(Buttons.Back);
+            buttons.Start.IsPress = gamePad.IsButtonDown(Buttons.Start);
+
+            // DPad
+            VirtualPadDPad dPad = virtualPad.DPad;
+            dPad.Up.IsPress = gamePad.IsButtonDown(Buttons.DPadUp);
+            dPad.Down.IsPress = gamePad.IsButtonDown(Buttons.DPadDown);
+            dPad.Left.IsPress = gamePad.IsButtonDown(Buttons.DPadLeft);
+            dPad.Right.IsPress = gamePad.IsButtonDown(Buttons.DPadRight);
+
+            // ThumbSticks
+            VirtualPadThumbSticks thumbSticks = virtualPad.ThumbSticks;
+            Vector2 leftThumbStick = gamePad.ThumbSticks.Left;
+            Vector2 rightThumbStick = gamePad.ThumbSticks.Right;
+            thumbSticks.Left.Up.IsPress = (leftThumbStick.Y > deadZone);
+            thumbSticks.Left.Down.IsPress = (leftThumbStick.Y < -deadZone);
+            thumbSticks.Left.Left.IsPress = (leftThumbStick.X < -deadZone);
+            thumbSticks.Left.Right.IsPress = (leftThumbStick.X > deadZone);
+            thumbSticks.Right.Up.IsPress = (rightThumbStick.Y > deadZone);
+            thumbSticks.Right.Down.IsPress = (rightThumbStick.Y < -deadZone);
+            thumbSticks.Right.Left.IsPress = (rightThumbStick.X < -deadZone);
+            thumbSticks.Right.Right.IsPress = (rightThumbStick.X > deadZone);
+
+            // Triggers
+            VirtualPadTriggers triggers = virtualPad.Triggers;
+            triggers.Left.IsPress = gamePad.IsButtonDown(Buttons.LeftTrigger);
+            triggers.Right.IsPress = gamePad.IsButtonDown(Buttons.RightTrigger);
+
+            // Keybord Mapping
+            foreach (KeyValuePair<InputState, Keys> pair in virtualKeyMaps)
+            {
+                bool keyDown = keyboardStates[index].IsKeyDown(pair.Value);
+                pair.Key.IsPress = (keyDown) ? true : pair.Key.IsPress;
+            }
+        }
+
+        #endregion
+    }
+}

+ 210 - 0
Samples/Movipa/Movipa/Components/Input/InputState.cs

@@ -0,0 +1,210 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// InputState.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// This class manages input state.
+    /// Specifically, it manages the following states:
+    /// When there is no key input, when key input is started,  
+    /// while key input is being performed, and when key input is ended.
+    /// It also determines key repeat while key input is being performed.
+    ///
+    /// 入力状態を管理します。
+    /// 入力されていない状態、入力された瞬間、入力が持続している状態、
+    /// そして入力が終わった瞬間の状態を管理します。
+    /// また、入力が持続している状態のリピート判定なども行います。
+    /// </summary>
+    public class InputState
+    {
+        #region Fields
+        private int startInterval = 60;
+        private int repeatInterval = 10;
+        private VirtualKeyState state = VirtualKeyState.Free;
+        private int pressCount = 0;
+        private bool isPress = false;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Specify the key state.
+        /// If it is equal to the virtual key state, return True.
+        ///
+        /// キー状態を指定して同じであればTrueを返します。
+        /// </summary>
+        /// <param name="virtualKeyState"></param>
+        /// <returns></returns>
+        public bool this[VirtualKeyState virtualKeyState]
+        {
+            get { return (virtualKeyState == State); }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the number of frames to start key repeat.
+        ///
+        /// キーリピートを開始するまでのフレーム数を取得または設定します。
+        /// </summary>
+        public int StartInterval
+        {
+            get { return startInterval; }
+            set { startInterval = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the frame interval for key repeat.
+        ///
+        /// キーリピートのフレーム間隔を取得または設定します。
+        /// </summary>
+        public int RepeatInterval
+        {
+            get { return repeatInterval; }
+            set { repeatInterval = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains the key state for when it is pressed. 
+        /// The value is masked by "3". Determine the key state by the following bits:
+        /// 
+        /// bits
+        ///  00  : key is not pressed.
+        ///  01  : key was pressed.
+        ///  11  : key is being pressed.
+        ///  10  : key was released.
+        /// 
+        /// キーの押下状態を取得します。
+        /// 値は3でマスクされ、ビットによって押下状態を判定します。
+        /// 
+        /// bits
+        ///  00  : 離されています。
+        ///  01  : 押されました。
+        ///  11  : 押されています。
+        ///  10  : 離されました。
+        /// </summary>
+        public VirtualKeyState State
+        {
+            get { return (VirtualKeyState)((int)state & 0x03); }
+        }
+
+
+        /// <summary>
+        /// Obtains the repeat state of the key.
+        ///
+        /// キーのリピート状態を取得します。
+        /// </summary>
+        public bool Repeat
+        {
+            get
+            {
+                // Does not determine key repeat when the key is not pressed.
+                // 
+                // キーが離されている時はリピート判定をしません。
+                if (State == VirtualKeyState.Free || State == VirtualKeyState.Release)
+                    return false;
+
+                if (State == VirtualKeyState.Push)
+                    return true;
+
+                if (pressCount < StartInterval)
+                    return false;
+
+                return (((pressCount - StartInterval) % RepeatInterval) == 0);
+            }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the key state for when it is pressed.
+        ///
+        /// キーの押下状態を取得または設定します。
+        /// </summary>
+        public bool IsPress
+        {
+            get { return isPress; }
+            set { isPress = value; }
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the key state.
+        ///
+        /// キー状態の更新処理を行います。
+        /// </summary>
+        public void Update()
+        {
+            // Updates the frame in which the key is pressed.
+            // When obtaining the key state, uses the properties and masks it by "3".
+            //
+            // キーの押下フレームを更新します。
+            // 取得する場合はプロパティ使用し、3でマスクを行います。
+            state = (VirtualKeyState)((int)State << 1);
+            if (IsPress)
+                state = (VirtualKeyState)((int)State | 1);
+
+            // Increments the interval value.
+            // 
+            // インターバルの処理を行います。
+            pressCount = (IsPress) ? pressCount + 1 : 0;
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Sets the key state for when it is pressed.
+        ///
+        /// キーの押下状態を設定します。
+        /// </summary>
+        public void SetPress(bool press)
+        {
+            isPress = press;
+        }
+
+
+        /// <summary>
+        /// Checks if any of the keys is in the "Push" state.
+        ///
+        /// 複数のキーのいずれかが、Push状態になっているかチェックします。
+        /// </summary>
+        public static bool IsPush(params InputState[] keys)
+        {
+            foreach (InputState inputState in keys)
+            {
+                if (inputState[VirtualKeyState.Push])
+                    return true;
+            }
+
+            return false;
+        }
+
+
+        /// <summary>
+        /// Checks if any of the keys is in the "Push" or "Repeat" state.
+        ///
+        /// 複数のキーのいずれかが、PushまたはRepeat状態になっているかチェックします。
+        /// </summary>
+        public static bool IsPushRepeat(params InputState[] keys)
+        {
+            foreach (InputState inputState in keys)
+            {
+                if (inputState[VirtualKeyState.Push] || inputState.Repeat)
+                    return true;
+            }
+
+            return false;
+        }
+        #endregion
+    }
+}

+ 51 - 0
Samples/Movipa/Movipa/Components/Input/VirtualKeyState.cs

@@ -0,0 +1,51 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// VirtualKeyState.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// Key state for when it is pressed
+    ///
+    /// キーの押下状態
+    /// </summary>
+    public enum VirtualKeyState
+    {
+        /// <summary>
+        /// Key is not pressed.
+        ///
+        /// 離されています。
+        /// </summary>
+        Free = 0,
+
+        /// <summary>
+        /// Key was pressed.
+        ///
+        /// 押されました。
+        /// </summary>
+        Push = 1,
+
+        /// <summary>
+        /// Key is being pressed.
+        ///
+        /// 押されています。
+        /// </summary>
+        Press = 3,
+
+        /// <summary>
+        /// Key was released.
+        ///
+        /// 離されました。
+        /// </summary>
+        Release = 2,
+    }
+}

+ 214 - 0
Samples/Movipa/Movipa/Components/Input/VirtualPadButtons.cs

@@ -0,0 +1,214 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// VirtualPadButtons.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// This class manages the buttons of a virtual pad.
+    /// There are the following buttons:
+    /// A, B, X, Y, LeftShoulder, RightShoulder, LeftStick, RightStick, Back, and Start.
+    ///
+    /// 仮想パッドのボタンを管理します。
+    /// ボタンにはA、B、X、Y、LeftShoulder、RightShoulder、LeftStick、RightStick、
+    /// そしてBackとStartがあります。
+    /// </summary>
+    public class VirtualPadButtons
+    {
+        #region Fields
+        private InputState a;
+        private InputState b;
+        private InputState x;
+        private InputState y;
+        private InputState leftShoulder;
+        private InputState rightShoulder;
+        private InputState leftStick;
+        private InputState rightStick;
+        private InputState back;
+        private InputState start;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the input state of the A button.
+        ///
+        /// Aボタンの入力状態を取得します。
+        /// </summary>
+        public InputState A
+        {
+            get { return a; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the B button.
+        ///
+        /// Bボタンの入力状態を取得します。
+        /// </summary>
+        public InputState B
+        {
+            get { return b; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the X button.
+        ///
+        /// Xボタンの入力状態を取得します。
+        /// </summary>
+        public InputState X
+        {
+            get { return x; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the Y button.
+        /// 
+        /// Yボタンの入力状態を取得します。
+        /// </summary>
+        public InputState Y
+        {
+            get { return y; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the LeftShoulder button.
+        ///
+        /// LeftShoulderボタンの入力状態を取得します。
+        /// </summary>
+        public InputState LeftShoulder
+        {
+            get { return leftShoulder; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the RightShoulder button.
+        ///
+        /// RightShoulderボタンの入力状態を取得します。
+        /// </summary>
+        public InputState RightShoulder
+        {
+            get { return rightShoulder; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the LeftStick button.
+        ///
+        /// LeftStickボタンの入力状態を取得します。
+        /// </summary>
+        public InputState LeftStick
+        {
+            get { return leftStick; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the RightStick button.
+        ///
+        /// RightStickボタンの入力状態を取得します。
+        /// </summary>
+        public InputState RightStick
+        {
+            get { return rightStick; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the Back button.
+        ///
+        /// Backボタンの入力状態を取得します。
+        /// </summary>
+        public InputState Back
+        {
+            get { return back; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the Start button.
+        ///
+        /// Startボタンの入力状態を取得します。
+        /// </summary>
+        public InputState Start
+        {
+            get { return start; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public VirtualPadButtons()
+        {
+            a = new InputState();
+            b = new InputState();
+            x = new InputState();
+            y = new InputState();
+            leftShoulder = new InputState();
+            rightShoulder = new InputState();
+            leftStick = new InputState();
+            rightStick = new InputState();
+            back = new InputState();
+            start = new InputState();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the state of the button.
+        ///
+        /// ボタンの状態を更新します。
+        /// </summary>
+        public void Update()
+        {
+            a.Update();
+            b.Update();
+            x.Update();
+            y.Update();
+            leftShoulder.Update();
+            rightShoulder.Update();
+            leftStick.Update();
+            rightStick.Update();
+            back.Update();
+            start.Update();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Sets the key state for when it is pressed.
+        ///
+        /// キーの押下状態を設定します。
+        /// </summary>
+        public void SetPress(bool press)
+        {
+            a.SetPress(press);
+            b.SetPress(press);
+            x.SetPress(press);
+            y.SetPress(press);
+            leftShoulder.SetPress(press);
+            rightShoulder.SetPress(press);
+            leftStick.SetPress(press);
+            rightStick.SetPress(press);
+            back.SetPress(press);
+            start.SetPress(press);
+        }
+        #endregion
+    }
+}

+ 123 - 0
Samples/Movipa/Movipa/Components/Input/VirtualPadDPad.cs

@@ -0,0 +1,123 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// VirtualPadDPad.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// This class manages the cross button of a virtual pad.
+    /// There are the following parameters: 
+    /// Up, Down, Left, and Right.
+    ///
+    /// 仮想パッドの十字ボタンを管理します。
+    /// Up、Down、Left、Rightのパラメータがあります。
+    /// </summary>
+    public class VirtualPadDPad
+    {
+        #region Fields
+        private InputState up;
+        private InputState down;
+        private InputState left;
+        private InputState right;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the input state of the Up button.
+        ///
+        /// Upボタンの入力状態を取得します。
+        /// </summary>
+        public InputState Up
+        {
+            get { return up; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the Down button.
+        ///
+        /// Downボタンの入力状態を取得します。
+        /// </summary>
+        public InputState Down
+        {
+            get { return down; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the Left button.
+        ///
+        /// Leftボタンの入力状態を取得します。
+        /// </summary>
+        public InputState Left
+        {
+            get { return left; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the Right button.
+        ///
+        /// Rightボタンの入力状態を取得します。
+        /// </summary>
+        public InputState Right
+        {
+            get { return right; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public VirtualPadDPad()
+        {
+            up = new InputState();
+            down = new InputState();
+            left = new InputState();
+            right = new InputState();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the state of the button.
+        ///
+        /// ボタンの状態を更新します。
+        /// </summary>
+        public void Update()
+        {
+            up.Update();
+            down.Update();
+            left.Update();
+            right.Update();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Sets the key state for when it is pressed.
+        ///
+        /// キーの押下状態を設定します。
+        /// </summary>
+        public void SetPress(bool press)
+        {
+            up.SetPress(press);
+            down.SetPress(press);
+            left.SetPress(press);
+            right.SetPress(press);
+        }
+        #endregion
+    }
+}

+ 123 - 0
Samples/Movipa/Movipa/Components/Input/VirtualPadState.cs

@@ -0,0 +1,123 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// VirtualPadState.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// This class manages the input state of a virtual pad.
+    /// There are the following parameters: 
+    /// button, cross button, stick, and trigger.
+    ///
+    /// 仮想パッドの入力状態を管理します。
+    /// ボタン、十字ボタン、スティック、トリガーのパラメータがあります。
+    /// </summary>
+    public class VirtualPadState
+    {
+        #region Fields
+        private VirtualPadButtons buttons;
+        private VirtualPadDPad dPad;
+        private VirtualPadThumbSticks thumbSticks;
+        private VirtualPadTriggers triggers;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the input state of the button.
+        ///
+        /// ボタンの入力状態を取得します。
+        /// </summary>
+        public VirtualPadButtons Buttons
+        {
+            get { return buttons; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the cross button.
+        ///
+        /// 十字ボタンの入力状態を取得します。
+        /// </summary>
+        public VirtualPadDPad DPad
+        {
+            get { return dPad; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the stick.
+        ///
+        /// スティックの入力状態を取得します。
+        /// </summary>
+        public VirtualPadThumbSticks ThumbSticks
+        {
+            get { return thumbSticks; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the trigger.
+        ///
+        /// トリガーの入力状態を取得します。
+        /// </summary>
+        public VirtualPadTriggers Triggers
+        {
+            get { return triggers; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public VirtualPadState()
+        {
+            buttons = new VirtualPadButtons();
+            dPad = new VirtualPadDPad();
+            thumbSticks = new VirtualPadThumbSticks();
+            triggers = new VirtualPadTriggers();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the input state of the virtual pad.
+        ///
+        /// 仮想パッドの入力状態を更新します。
+        /// </summary>
+        public void Update()
+        {
+            buttons.Update();
+            dPad.Update();
+            thumbSticks.Update();
+            triggers.Update();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Sets the key state for when it is pressed.
+        ///
+        /// キーの押下状態を設定します。
+        /// </summary>
+        public void SetPress(bool press)
+        {
+            buttons.SetPress(press);
+            dPad.SetPress(press);
+            thumbSticks.SetPress(press);
+            triggers.SetPress(press);
+        }
+        #endregion
+    }
+}

+ 81 - 0
Samples/Movipa/Movipa/Components/Input/VirtualPadThumbSticks.cs

@@ -0,0 +1,81 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// VirtualPadThumbSticks.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// This class manages the state of the sticks of a virtual pad.
+    /// There are the following two parameters: left stick and right stick.
+    /// The obtained values are converted to digital values, not to analog values.
+    ///
+    /// 仮想パッドのスティックの状態を管理します。
+    /// 左スティックと右スティックのパラメータがあります。
+    /// 取得される値はアナログではなく、デジタルに変換されます。
+    /// </summary>
+    public class VirtualPadThumbSticks
+    {
+        #region Fields
+        private VirtualPadDPad left = new VirtualPadDPad();
+        private VirtualPadDPad right = new VirtualPadDPad();
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the input state of the left stick.
+        ///
+        /// 左スティックの入力状態を取得します。
+        /// </summary>
+        public VirtualPadDPad Left
+        {
+            get { return left; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input state of the right stick.
+        ///
+        /// 右スティックの入力状態を取得します。
+        /// </summary>
+        public VirtualPadDPad Right
+        {
+            get { return right; }
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the input state of the stick.
+        ///
+        /// スティックの入力状態を更新します。
+        /// </summary>
+        public void Update()
+        {
+            left.Update();
+            right.Update();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Sets the key state for when it is pressed.
+        ///
+        /// キーの押下状態を設定します。
+        /// </summary>
+        public void SetPress(bool press)
+        {
+            left.SetPress(press);
+            right.SetPress(press);
+        }
+        #endregion
+    }
+}

+ 79 - 0
Samples/Movipa/Movipa/Components/Input/VirtualPadTriggers.cs

@@ -0,0 +1,79 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// VirtualPadTriggers.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+#endregion
+
+namespace Movipa.Components.Input
+{
+    /// <summary>
+    /// This class gets the input state of the triggers of a virtual pad.
+    /// The obtained values are converted to digital values, not to analog values.
+    ///
+    /// 仮想パッドのトリガーの入力状態を取得します。
+    /// 取得される値はアナログではなく、デジタルに変換されます。
+    /// </summary>
+    public class VirtualPadTriggers
+    {
+        #region Fields
+        private InputState left = new InputState();
+        private InputState right = new InputState();
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the input state of the left trigger.
+        ///
+        /// 左トリガーの入力状態を取得します。
+        /// </summary>
+        public InputState Left
+        {
+            get { return left; }
+        }
+
+
+        /// <summary>
+        /// Obtains the input value of the right trigger.
+        ///
+        /// 右トリガーの入力状態を取得します。
+        /// </summary>
+        public InputState Right
+        {
+            get { return right; }
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Obtains the input state of the trigger.
+        ///
+        /// トリガーの入力状態を取得します。
+        /// </summary>
+        public void Update()
+        {
+            left.Update();
+            right.Update();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Sets the key state for when it is pressed.
+        ///
+        /// キーの押下状態を設定します。
+        /// </summary>
+        public void SetPress(bool press)
+        {
+            left.SetPress(press);
+            right.SetPress(press);
+        }
+        #endregion
+    }
+}

+ 192 - 0
Samples/Movipa/Movipa/Components/SafeAreaComponent.cs

@@ -0,0 +1,192 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SafeAreaComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using Movipa.Util;
+#endregion
+
+namespace Movipa.Components
+{
+    /// <summary>
+    /// Component that draws the Safe Area.
+    /// Push the right stick on the Game Pad to draw.
+    /// The scope is set in Scale Properties, and the draw
+    /// color in Color Properties. The default scope value is 0.9f (90%).
+    /// 
+    /// セーフエリアを描画するコンポーネントです。
+    /// ゲームパッドの右スティックを押し込んだ状態で描画します。
+    /// 有効範囲の設定はScaleプロパティで設定し、描画色はColorプロパティで
+    /// 設定します。有効範囲の初期値は0.9f(90%)に設定されています。
+    /// </summary>
+    public class SafeAreaComponent : DrawableGameComponent
+    {
+        #region Fields
+        /// <summary>
+        /// Primitive Draw class
+        /// 
+        /// 基本描画クラス
+        /// </summary>
+        private PrimitiveDraw2D primitiveDraw;
+
+        /// <summary>
+        /// Scale
+        ///
+        /// スケール
+        /// </summary>
+        private float scale;
+
+        /// <summary>
+        /// Draw color
+        ///
+        /// 描画色
+        /// </summary>
+        private Vector4 color;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains or sets the scale.
+        ///
+        /// スケールを取得または設定します。
+        /// </summary>
+        public float Scale
+        {
+            get { return scale; }
+            set { scale = MathHelper.Clamp(value, 0, 1); }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the draw color.
+        ///
+        /// 描画色を取得または設定します。
+        /// </summary>
+        public Vector4 Color
+        {
+            get { return color; }
+            set { color = value; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SafeAreaComponent(Game game)
+            : base(game)
+        {
+            primitiveDraw = new PrimitiveDraw2D(game.GraphicsDevice);
+            Scale = 0.9f;
+            color = new Vector4(1, 0, 1, 0.25f);
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Switches the component visibility status from the pad input status.
+        /// 
+        /// パッドの入力状態からコンポーネントの可視状態を切り替えます。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Make visible when player 1 pushes the right stick.
+            // 
+            // プレイヤー1の右スティックを押下されていたら可視状態にします。
+            GamePadState gamePad = GamePad.GetState(PlayerIndex.One);
+            Visible = (gamePad.Buttons.RightStick == ButtonState.Pressed);
+
+            base.Update(gameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws the Safe Area.
+        /// 
+        /// セーフエリアを描画します。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            // Sets the draw mode.
+            // 
+            // 描画モードを設定
+            primitiveDraw.SetRenderState(GraphicsDevice, SpriteBlendMode.AlphaBlend);
+
+            // Fills the rectangle list.
+            // 
+            // 矩形リストを塗りつぶす
+            foreach (Rectangle region in GetRegions())
+            {
+                primitiveDraw.FillRect(null, region, new Color(color));
+            }
+
+            base.Draw(gameTime);
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Obtains the Safe Area rectangle.
+        /// 
+        /// セーフエリアの矩形を取得します。
+        /// </summary>
+        private Rectangle[] GetRegions()
+        {
+            Vector2 safeSize = GameData.ScreenSizeVector2 * Scale;
+            Vector2 outSize = GameData.ScreenSizeVector2 - safeSize;
+            Vector2 halfOutSize = outSize * 0.5f;
+
+            Rectangle[] regions = new Rectangle[4];
+
+            // Up 
+            // 
+            // 上
+            regions[0].X = 0;
+            regions[0].Y = 0;
+            regions[0].Width = GameData.ScreenWidth;
+            regions[0].Height = (int)halfOutSize.Y;
+
+            // Down
+            // 
+            // 下
+            regions[1].X = 0;
+            regions[1].Y = GameData.ScreenHeight - (int)halfOutSize.Y;
+            regions[1].Width = GameData.ScreenWidth;
+            regions[1].Height = (int)halfOutSize.Y;
+
+            // Left
+            // 
+            // 左
+            regions[2].X = 0;
+            regions[2].Y = (int)halfOutSize.Y;
+            regions[2].Width = (int)halfOutSize.X;
+            regions[2].Height = GameData.ScreenHeight - (int)outSize.Y;
+
+            // Right
+            // 
+            // 右
+            regions[3].X = GameData.ScreenWidth - (int)halfOutSize.X;
+            regions[3].Y = (int)halfOutSize.Y;
+            regions[3].Width = (int)halfOutSize.X;
+            regions[3].Height = GameData.ScreenHeight - (int)outSize.Y;
+
+            return regions;
+        }
+        #endregion
+    }
+}
+
+

+ 258 - 0
Samples/Movipa/Movipa/Components/Scene/GameOver.cs

@@ -0,0 +1,258 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// GameOver.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene
+{
+    /// <summary>
+    /// This scene component displays game over.
+    /// It provides fade control and basic replay
+    /// functionality for Layout sequences.
+    ///
+    /// ゲームオーバーを表示するシーンコンポーネントです。
+    /// フェードの制御と、Layoutで作成されたシーケンスの
+    /// シンプルな再生処理を行っています。
+
+    /// </summary>
+    public class GameOver : SceneComponent
+    {
+        #region Fields
+        // Components
+        private FadeSeqComponent fade;
+
+        // Layout
+        private SceneData sceneData;
+        private SequencePlayData seqStart;
+
+        // BackgroundMusic
+        private Cue bgm;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public GameOver(Game game)
+            : base(game)
+        {
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        ///
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Obtains the fade component instance. 
+            //
+            // フェードコンポーネントのインスタンスを取得します。
+            fade = GameData.FadeSeqComponent;
+
+            // Specifies the fade-in settings.
+            //
+            // フェードインの設定を行います。
+            fade.Start(FadeType.Normal, FadeMode.FadeIn);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+            base.InitializeNavigate();
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        ///
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Obtains the Layout sequence.
+            // 
+            // Layoutのシーケンスを取得します。
+            string asset = "Layout/GameOver/gameover_Scene";
+            sceneData = Content.Load<SceneData>(asset);
+            seqStart = sceneData.CreatePlaySeqData("GameOver");
+
+            // Plays the BackgroundMusic and obtains Cue.
+            // 
+            // BackgroundMusicを再生し、Cueを取得します。
+            bgm = GameData.Sound.PlayBackgroundMusic(Sounds.GameOverBackgroundMusic);
+
+            base.LoadContent();
+        }
+
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // Stops the BackgroundMusic.
+            // 
+            // BackgroundMusicを停止します。
+            SoundComponent.Stop(bgm);
+
+            base.UnloadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            if (fade.FadeMode == FadeMode.FadeIn)
+            {
+                // Switches the fade mode after the fade-in finishes.
+                // 
+                // フェードインが完了したらフェードのモードを切り替えます。
+                if (!fade.IsPlay)
+                {
+                    fade.FadeMode = FadeMode.None;
+                }
+            }
+            else if (fade.FadeMode == FadeMode.None)
+            {
+                // Updates Main.
+                //
+                // メインの更新処理を行います。
+                UpdateMain();
+            }
+            else if (fade.FadeMode == FadeMode.FadeOut)
+            {
+                // Updates fade-out. 
+                // 
+                // フェードアウトの更新処理を行います。
+                UpdateFadeOut();
+            }
+
+            // Updates sequences except fade-in.
+            //
+            // フェードイン以外でシーケンスの更新をします。
+            if (fade.FadeMode != FadeMode.FadeIn)
+            {
+                seqStart.Update(gameTime.ElapsedGameTime);
+            }
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Performs main update processing.
+        ///
+        /// メインの更新処理を行います。
+        /// </summary>
+        private void UpdateMain()
+        {
+            // Obtains Pad information. 
+            //
+            // パッドの情報を取得します。
+            VirtualPadState virtualPad =
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            // Performs the fade-out after the sequence terminates 
+            // or if the A button is pressed.
+            //
+            // シーケンスが再生終了、またはAボタンを押されたらフェードアウトします。
+            if (!seqStart.IsPlay || buttons.A[VirtualKeyState.Push] || 
+                buttons.B[VirtualKeyState.Push] || buttons.Back[VirtualKeyState.Push])
+            {
+                fade.Start(FadeType.Normal, FadeMode.FadeOut);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing at fade-out.
+        /// 
+        /// フェードアウト時の更新処理を行います。
+        /// </summary>
+        private void UpdateFadeOut()
+        {
+            // Fades out the BackgroundMusic volume.
+            // 
+            // BackgroundMusicのボリュームをフェードアウトします。
+            float volume = 1.0f - (fade.Count / 60.0f);
+            SoundComponent.SetVolume(bgm, volume);
+
+            // Switches scenes after the fade finishes.
+            //
+            // フェードが終了するとシーンの切り替えを行います。
+            if (!fade.IsPlay)
+            {
+                Dispose();
+
+                // Performs entry for title screen scenes.
+                // 
+                // タイトル画面のシーンをエントリーします。
+                GameData.SceneQueue.Enqueue(new Title(Game));
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws the sequence.
+        ///
+        /// シーケンスの描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            // Clears the background.
+            // 
+            // 背景をクリアします。
+            GraphicsDevice.Clear(Color.Black);
+
+            // Draws the sequence and navigate button. 
+            // 
+            // シーケンスとナビゲートボタンを描画します。
+            Batch.Begin();
+            seqStart.Draw(Batch, null);
+            DrawNavigate(gameTime, false);
+            Batch.End();
+
+            base.Draw(gameTime);
+        }
+        #endregion
+    }
+}
+
+

+ 195 - 0
Samples/Movipa/Movipa/Components/Scene/Logo.cs

@@ -0,0 +1,195 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// Logo.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+#endregion
+
+namespace Movipa.Components.Scene
+{
+    /// <summary>
+    /// This scene component draws the logo. 
+    /// It provides fade control and text string rendering. 
+    /// 
+    /// ロゴの描画を行うシーンコンポーネントです。
+    /// フェードの制御と、文字列の描画処理を行っています。
+    /// </summary>
+    public class Logo : SceneComponent
+    {
+        #region Fields
+        private readonly TimeSpan WaitTime = new TimeSpan(0, 0, 2);
+
+        // Components
+        private FadeSeqComponent fade;
+
+        private string developerName;
+        private SpriteFont developerFont;
+        private Vector2 drawPosition;
+        private TimeSpan viewTime;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public Logo(Game game)
+            : base(game)
+        {
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        ///
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Obtains the developer’s name.
+            // 
+            // 開発名を取得します。
+            developerName = GameData.AppSettings["DeveloperName"];
+
+            // Specifies the font settings.
+            // 
+            // フォントを設定します。
+            developerFont = MediumFont;
+
+            // Sets the draw position.
+            // 
+            // 描画位置を設定します。
+            drawPosition = GameData.ScreenSizeVector2 * 0.5f;
+            drawPosition -= developerFont.MeasureString(developerName) * 0.5f;
+
+            // Initializes the display time.
+            // 
+            // 表示時間の初期化します。
+            viewTime = TimeSpan.Zero;
+
+            // Obtains the fade component instance. 
+            // 
+            // フェードコンポーネントのインスタンスを取得します。
+            fade = GameData.FadeSeqComponent;
+
+            // Specifies the fade-in settings.
+            //
+            // フェードインの処理を設定します。
+            fade.Start(FadeType.Normal, FadeMode.FadeIn);
+
+            base.Initialize();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs scene update processing.
+        ///
+        /// シーンの更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            if (fade.FadeMode == FadeMode.FadeIn)
+            {
+                // Switches the fade mode after the fade-in finishes.
+                //
+                // フェードインが完了したらフェードのモードを切り替えます。
+                if (!fade.IsPlay)
+                {
+                    fade.FadeMode = FadeMode.None;
+                }
+            }
+            else if (fade.FadeMode == FadeMode.None)
+            {
+                // Updates Main.
+                //
+                // メインの更新処理を行います。
+                UpdateMain(gameTime);
+            }
+            else if (fade.FadeMode == FadeMode.FadeOut)
+            {
+                // Fade-out
+                // 
+                // フェードアウト
+                if (!fade.IsPlay)
+                {
+                    // Terminates after the fade-out finishes.
+                    // 
+                    // フェードアウトが終了したら終了します。
+                    Dispose();
+                }
+            }
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Performs main update processing.
+        /// 
+        /// メインの更新処理を行います。
+        /// </summary>
+        private void UpdateMain(GameTime gameTime)
+        {
+            // Obtains Pad information.
+            // 
+            // パッドの情報を取得します。
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+
+            // Calculates the display time.
+            // 
+            // 表示時間を加算します。
+            viewTime += gameTime.ElapsedGameTime;
+
+            // Starts the fade-out when the display time is 
+            // exceeded or the A button is pressed.
+            // 
+            // 表示の時間が過ぎたか、またはAボタンが押されたら
+            // フェードアウトを開始します。
+            if (viewTime > WaitTime || virtualPad.Buttons.A[VirtualKeyState.Push])
+            {
+                fade.Start(FadeType.Gonzales, FadeMode.FadeOut);
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws the scene.
+        ///
+        /// シーンの描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            // Clears the background to white.
+            // 
+            // 白で背景をクリアします。
+            GraphicsDevice.Clear(Color.White);
+
+            // Draws the text.
+            // 
+            // 文字を描画します。
+            Batch.Begin();
+            Batch.DrawString(developerFont, developerName, drawPosition, Color.White);
+            Batch.End();
+
+            base.Draw(gameTime);
+        }
+        #endregion
+    }
+}
+
+

+ 165 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/InitializeThread.cs

@@ -0,0 +1,165 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// InitializeThread.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using Microsoft.Xna.Framework;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>     
+    /// Class used for asynchronous initialization.
+    /// This class is inherited. 
+    /// The initialize method is defined in the inherited 
+    /// target class with description of initialization processing.
+    /// When the Run method is called, the Initialize method is
+    /// executed in the thread, thus enabling asynchronous initialization.
+    /// The executing CPU core may be changed in Xbox360 only.
+    /// When initialization is completed, the Initialized property becomes True.
+    /// 
+    /// 非同期で初期化をする為のクラスです。
+    /// このクラスは継承して使用します。
+    /// 継承先のクラスでInitializeメソッドを定義し、初期化の処理を
+    /// 記述します。Runメソッドを呼ぶと、スレッドでInitializeメソッドが
+    /// 実行され、非同期で初期化を行うことが出来ます。
+    /// Xbox360でのみ、実行させるCPUのコアを変更することが出来ます。
+    /// 初期化が終了したら、InitializedプロパティがTrueになります。
+    /// </summary>
+    public class InitializeThread
+    {
+        #region Fields
+        // CPU core
+        //
+        // cpuコア
+        private int cpuId;
+
+        // Initialized flag
+        //  
+        // 初期化済みフラグ
+        private bool initialized = false;
+
+        // Load thread
+        //
+        //読み込みスレッド
+        private Thread thread;
+
+        // Game object transferred to movie
+        //
+        // ムービーに渡すGameオブジェクト
+        private Game game;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the Game instance.
+        /// 
+        /// Gameインスタンスを取得します。
+        /// </summary>
+        public Game Game
+        {
+            get { return game; }
+        }
+
+        /// <summary>
+        /// Obtains the initialization status.
+        ///
+        /// 初期化状態を取得します。
+        /// </summary>
+        public bool Initialized
+        {
+            get { return initialized; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        /// <param name="game">Gameインスタンス</param>
+        /// <param name="cpu">使用するCPUコア</param>
+        public InitializeThread(Game game, int cpu)
+        {
+            this.game = game;
+            cpuId = cpu;
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Loads the movie asynchronously.
+        ///
+        /// ムービーを非同期で読み込みます。 
+        /// </summary>
+        public void Run()
+        {
+            // Start the thread.
+            // 
+            // スレッドの開始
+            thread = new Thread(new ThreadStart(this.Initialize));
+            thread.Start();
+        }
+
+
+        /// <summary>
+        /// Forcibly terminates the thread.
+        ///
+        /// スレッドを強制終了します。
+        /// </summary>
+        public void Abort()
+        {
+            if (thread != null)
+                thread.Abort();
+        }
+
+
+        /// <summary>
+        /// Waits until the thread terminates.
+        ///
+        /// スレッドが終了するまで待機します。
+        /// </summary>
+        public void Join()
+        {
+            if (thread != null)
+                thread.Join();
+        }
+
+        
+        /// <summary>
+        /// Loads the moview.
+        ///
+        /// ムービーを読み込みます。 
+        /// </summary>
+        protected virtual void Initialize()
+        {
+            // Sets the initialized flag.
+            // 
+            // 初期化済みフラグを設定する
+            initialized = true;
+        }
+
+
+        /// <summary>
+        /// Sets the CPU core processed in the thread.
+        ///
+        /// スレッドで処理を行うCPUコアの設定をします。
+        /// </summary>
+        protected void SetCpuCore()
+        {
+#if XBOX360
+            Thread.CurrentThread.SetProcessorAffinity(cpuId);
+#endif
+        }
+        #endregion
+    }
+}

+ 178 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/MenuBase.cs

@@ -0,0 +1,178 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// MenuBase.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Abstract class for menu processing.
+    /// The menu items inherit this class so that the 
+    /// necessary processing is written in Update and Draw.
+    /// The CreateMenu method for this class should be 
+    /// used to create menu instances. 
+    /// 
+    /// メニューの処理を行う抽象クラスです。
+    /// 各メニューの項目は、このクラスを継承し、必要な処理を
+    /// UpdateとDrawに記述するようにします。
+    /// 各メニューのインスタンスを作成するには、このクラスの
+    /// CreateMenuメソッドを使用して下さい。
+    /// </summary>
+    public abstract class MenuBase : SceneComponent
+    {
+        #region Fields
+        protected bool initialized = false;
+        private MenuData data;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the initialization flag.
+        /// 
+        /// 初期化フラグを取得します。
+        /// </summary>
+        public bool Initialized
+        {
+            get { return initialized; }
+        }
+
+
+        /// <summary>
+        /// Obtains the menu data.
+        /// 
+        /// メニューデータを取得します。
+        /// </summary>
+        public MenuData Data
+        {
+            get { return data; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        protected MenuBase(Game game, MenuData menuData)
+            : base(game)
+        {
+            data = menuData;
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            initialized = true;
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Performs asynchronous initialization processing.
+        /// 
+        /// 非同期で初期化処理を行います。
+        /// </summary>
+        public void RunInitializeThread()
+        {
+            // Starts the initialization thread.
+            // 
+            // 初期化スレッドを開始します。
+            Thread thread = new Thread(new ThreadStart(this.Initialize));
+            thread.Start();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Abstract method for update processing.
+        /// 
+        /// 更新処理の抽象メソッドです。
+        /// </summary>
+        public virtual MenuBase UpdateMain(GameTime gameTime)
+        {
+            return null;
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Abstract method for drawing processing.
+        ///
+        /// 描画処理の抽象メソッドです。
+        /// </summary>
+        public virtual void Draw(GameTime gameTime, SpriteBatch batch)
+        {
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Creates menu instances.
+        ///
+        /// メニューのインスタンスを作成します。
+        /// </summary>
+        /// <param name="game">Game</param>
+        /// <param name="menuType">MenuType</param>
+        /// <param name="data">MenuData</param>
+        /// <returns>Created menu instances</returns>
+        ///  
+        /// <returns>作成されたメニューインスタンス</returns>
+        public static MenuBase CreateMenu(Game game, MenuType menuType, MenuData data)
+        {
+            switch (menuType)
+            {
+                case MenuType.SelectMode:
+                    // Mode selection
+                    // 
+                    // モード選択
+                    return new SelectMode(game, data);
+                case MenuType.SelectFile:
+                    // File selection
+                    // 
+                    // ファイル選択
+                    return new SelectFile(game, data);
+                case MenuType.SelectStyle:
+                    // Style selection
+                    // 
+                    // スタイル選択
+                    return new SelectStyle(game, data);
+                case MenuType.SelectMovie:
+                    // Movie selection
+                    // 
+                    // ムービー選択
+                    return new SelectMovie(game, data);
+                case MenuType.SelectDivide:
+                    // Divisions setting
+                    // 
+                    // 分割数設定
+                    return new SelectDivide(game, data);
+                case MenuType.Ready:
+                    // Confirmation screen
+                    // 
+                    // 確認画面
+                    return new Ready(game, data);
+                default:
+                    throw new ArgumentException("Invalid MenuType specified");
+            }
+        }
+        #endregion
+    }
+}

+ 654 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/MenuComponent.cs

@@ -0,0 +1,654 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// MenuComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+using Movipa.Util;
+using Movipa.Components.Scene.Puzzle;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Scene component that draws menus.
+    /// This class draws the background and renders 
+    /// the animation movie.  
+    /// It also switches the classes used to process 
+    /// items of each menu that has inherited MenuBase.
+    ///
+    /// メニューの描画を行うシーンコンポーネントです。
+    /// このクラスでは、背景の描画と、アニメーションムービーの
+    /// レンダリング処理を行っています。
+    /// また、MenuBaseを継承した各メニューの項目を処理するクラスの
+    /// 切り替え処理も行っています。
+
+    /// </summary>
+    public class MenuComponent : SceneComponent
+    {
+        #region Fields
+        /// <summary>
+        /// Common data structure
+        ///
+        /// 共通データ構造体
+        /// </summary>
+        private MenuData data;
+
+        /// <summary>
+        /// Background texture 
+        /// 
+        /// 背景テクスチャ 
+        /// </summary>
+        private Texture2D wallpaper;
+
+        /// <summary>
+        /// BackgroundMusic cue
+        /// 
+        /// BackgroundMusicのキュー
+        /// </summary>
+        private Cue bgm;
+
+        /// <summary>
+        /// Menu object currently being executed
+        /// 
+        /// 現在実行しているメニューオブジェクト
+        /// </summary>
+        private MenuBase currentMenu;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public MenuComponent(Game game)
+            : base(game)
+        {
+            // Creates common data used in the menu. 
+            // 
+            // メニューで使用する共通データを作成します。
+            data = new MenuData(Game);            
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        ///  
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Creates the initial menu.
+            // 
+            // 最初のメニューを作成します。
+            currentMenu = MenuBase.CreateMenu(Game, MenuType.SelectMode, data);
+
+            // Registers the fade-in settings.
+            // 
+            // フェードインの設定を行います。
+            GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeIn);
+
+            // Plays the BackgroundMusic and obtains the Cue.
+            // 
+            // BackgroundMusicを再生し、Cueを取得します。 
+            bgm = GameData.Sound.PlayBackgroundMusic(Sounds.SelectBackgroundMusic);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the background texture.
+            // 
+            // 背景テクスチャの読み込み
+            string asset;
+            asset = "Textures/Wallpaper/Wallpaper_006";
+            wallpaper = Content.Load<Texture2D>(asset);
+
+            // Loads and sets the sphere model.
+            // 
+            // 球体モデルの読み込みと設定  
+            InitializeModels();
+
+            // Loads the menu scene data.
+            // 
+            // メニューのシーンデータを読み込む 
+            data.sceneData = Content.Load<SceneData>("Layout/menu/menu_Scene");
+
+            // Creates the render data.
+            // 
+            // レンダーターゲットを作成します。
+            InitializeRenderTarget();
+
+            // Initializes the first scene.
+            // 
+            // 最初のシーンの初期化を実行する  
+            currentMenu.RunInitializeThread();
+
+            base.LoadContent();
+        }
+
+
+        /// <summary>
+        /// Loads the model data.
+        ///
+        /// モデルデータの読み込みを行います。
+        /// </summary>
+        private void InitializeModels()
+        {
+            // Loads the model.
+            // 
+            // モデルの読み込み
+            Model[] models = new Model[] {
+                Content.Load<Model>("Models/sphere01"),
+                Content.Load<Model>("Models/sphere02"),
+                Content.Load<Model>("Models/sphere11"),
+                Content.Load<Model>("Models/sphere12"),
+            };
+
+            // Creates the model data.
+            // 
+            // モデルデータの作成
+            data.Spheres = new BasicModelData[][] {
+                new BasicModelData[]
+                {
+                    new BasicModelData(models[0]), new BasicModelData(models[1])
+                },
+                new BasicModelData[]
+                {
+                    new BasicModelData(models[2]), new BasicModelData(models[3])
+                },
+            };
+
+            // Model scale
+            // 
+            // モデルのスケール
+            float[] modelScale = {
+                0.9f, 0.88f, data.CursorSphereSize, data.CursorSphereSize };
+
+            // Loading
+            // 
+            // 読み込み処理   
+            for (int i = 0; i < models.Length; i++)
+            {
+                BasicModelData sphere = data.Spheres[i / 2][i % 2];
+                sphere.Scale = modelScale[i];
+            }
+        }
+
+
+        /// <summary>
+        /// Creates the render target.
+        /// 
+        /// レンダーターゲットを作成します。
+        /// </summary>
+        private void InitializeRenderTarget()
+        {
+            // Creates the split preview RenderTarget. 
+            // 
+            // 分割数プレビューのRenderTargetを作成
+            data.DividePreview = new RenderTarget2D(
+                GraphicsDevice,
+                GameData.MovieWidth,
+                GameData.MovieHeight,
+                1,
+                SurfaceFormat.Color,
+                RenderTargetUsage.PreserveContents);
+
+            // Creates the style animation RenderTarget. 
+            // 
+            // スタイルアニメーションのRenderTargetを作成
+            data.StyleAnimation = new RenderTarget2D(
+                GraphicsDevice,
+                GameData.StyleWidth,
+                GameData.StyleHeight,
+                1,
+                SurfaceFormat.Color,
+                RenderTargetUsage.PreserveContents);
+        }
+
+
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // Stops the BackgroundMusic.
+            // 
+            // BackgroundMusicの停止
+            SoundComponent.Stop(bgm);
+
+            base.UnloadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。  
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Updates the model.
+            // 
+            // モデルの更新処理を行います。
+            UpdateModels();
+
+            if (GameData.FadeSeqComponent.FadeMode == FadeMode.FadeIn)
+            {
+                // Switches fade modes after the fade-in finishes.
+                // 
+                // フェードインが完了したらフェードのモードを切り替えます。
+                if (!GameData.FadeSeqComponent.IsPlay)
+                {
+                    GameData.FadeSeqComponent.FadeMode = FadeMode.None;
+                }
+            }
+            else if (GameData.FadeSeqComponent.FadeMode == FadeMode.None)
+            {
+                // Performs main processing.
+                // 
+                // メインの更新処理を行います。
+                UpdateMain(gameTime);
+            }
+            else if (GameData.FadeSeqComponent.FadeMode == FadeMode.FadeOut)
+            {
+                // Performs update processing at fade-out.
+                // 
+                // フェードアウト時の更新処理を行います。
+                UpdateFadeOut();
+            }
+
+            base.Update(gameTime);
+        }
+
+        /// <summary>
+        /// Performs main processing.
+        /// 
+        /// メインの更新処理を行います。 
+        /// </summary>
+        private void UpdateMain(GameTime gameTime)
+        {
+            // Performs an error check.
+            // 
+            // エラーチェックを行います。
+            if (currentMenu == null || !currentMenu.Initialized)
+                return;
+
+            // Updates the movie.
+            // 
+            // ムービーの更新処理を行います。 
+            UpdateMovie(gameTime);
+
+            // Updates the menu.
+            // 
+            // メニューの更新処理を行います。
+            MenuBase menu = currentMenu.UpdateMain(gameTime);
+
+            // Switches menus if the next menu has been specified.
+            // 
+            // 次のメニューが指定されていれば切り替えます。
+            if (menu != null)
+            {
+                // Releases the current menu.
+                // 
+                // 現在のメニューを開放します。
+                currentMenu.Dispose();
+
+                // Sets a new menu.
+                // 
+                // 新しいメニューを設定します。 
+                currentMenu = menu;
+
+                // Executes the initialization thread.
+                // 
+                // 初期化スレッドを実行します。
+                currentMenu.RunInitializeThread();
+            }
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Performs update processing at fade-out.
+        /// 
+        /// フェードアウト時の更新処理を行います。
+        /// </summary>
+        private void UpdateFadeOut()
+        {
+            // Sets the BackgroundMusic volume.
+            // 
+            // BackgroundMusicのボリュームを設定します。
+            float volume = 1.0f - (GameData.FadeSeqComponent.Count / 60.0f);
+            SoundComponent.SetVolume(bgm, volume);
+
+            // Performs release processing after the fade-out finishes.
+            // 
+            // フェードアウトが終了したら開放処理を行います。  
+            if (!GameData.FadeSeqComponent.IsPlay)
+            {
+                Dispose();
+            }
+        }
+
+
+
+        /// <summary>
+        /// Updates the movie.
+        /// 
+        /// ムービーの更新処理を行います。
+        /// </summary>
+        private void UpdateMovie(GameTime gameTime)
+        {
+            // Switches the sequence when the animation movie 
+            // loading thread is complete.
+            // 
+            // アニメーションムービーの読み込みスレッドが完了していたら
+            // シーケンスを切り替えます。 
+            if (data.movieLoader != null && data.movieLoader.Initialized)
+            {
+                // Releases the movie if it has already been set.
+                // 
+                // 既にムービーが設定されていたら快方処理を行います。
+                if (data.movie != null)
+                {
+                    data.movie.Dispose();
+                }
+
+                data.movie = data.movieLoader.Movie;
+                data.movieLoader = null;
+            }
+
+            // Updates the movie if it has been designated.
+            // 
+            // ムービーが指定されていれば更新処理を行います。
+            if (data.movie != null)
+            {
+                data.movie.Update(gameTime);
+            }
+        }
+
+        /// <summary>
+        /// Updates the model.
+        /// 
+        /// モデルの更新処理を行います。 
+        /// </summary>
+        private void UpdateModels()
+        {
+            Vector3 rotate;
+
+            // Rotates the background sphere.x
+            // 
+            // 背景の球体を回転させます。
+            rotate = data.Spheres[0][0].Rotate;
+            rotate.Y += MathHelper.ToRadians(0.1f);
+            data.Spheres[0][0].Rotate = rotate;
+
+            rotate = data.Spheres[0][1].Rotate;
+            rotate.Y -= MathHelper.ToRadians(0.03f);
+            data.Spheres[0][1].Rotate = rotate;
+
+            // Rotates the cursor sphere.
+            // 
+            // カーソルの球体を回転させます。
+            rotate = data.Spheres[1][0].Rotate;
+            rotate.Y += data.CursorSphereRotate;
+            data.Spheres[1][0].Rotate = rotate;
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing processing.
+        /// 
+        /// 描画処理を行います。 
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            // Draws the style animation texture.
+            // 
+            // スタイルアニメーションのテクスチャを描画します。
+            DrawStyleAnimation(Batch);
+
+            // Draws the movie animation texture.
+            // 
+            // ムービーアニメーションのテクスチャを描画します。             
+            DrawMovie(gameTime);
+
+            // Uses the movie animation texture 
+            // to create the split preview texture.
+            // 
+            // ムービーアニメーションのテクスチャを使用し、
+            // 分割プレビューのテクスチャを作成します。
+          
+            DrawDividePreview();
+
+            // Draws the background.
+            // 
+            // 背景を描画します。 
+            Batch.Begin();
+            Batch.Draw(wallpaper, Vector2.Zero, Color.White);
+            Batch.End();
+
+            // Clears the depth buffer and draws the sphere model.
+            // 
+            // 深度バッファをクリアし、球体のモデルを描画します。
+            GraphicsDevice.Clear(ClearOptions.DepthBuffer, Color.Black, 1.0f, 0);
+            DrawSpheres(Batch);
+
+            // Performs drawing processing if the menu is set and
+            // initialization is complete.
+            // 
+            // メニューが設定され、初期化が終了していたら描画処理を行います。        
+            if (currentMenu != null && currentMenu.Initialized)
+            {
+                currentMenu.Draw(gameTime, Batch);
+            }
+
+            base.Draw(gameTime);
+        }
+
+
+        /// <summary>
+        /// Draws the cursor sphere.
+        /// 
+        /// カーソルの球体を描画します。
+        /// </summary>
+        private void DrawSpheres(SpriteBatch batch)
+        {
+            GraphicsDevice graphicsDevice = batch.GraphicsDevice;
+            Matrix view;
+            view = Matrix.CreateLookAt(data.CameraPosition, Vector3.Zero, Vector3.Up);
+
+            for (int i = 0; i < 2; i++)
+            {
+                BasicModelData basicModel = data.Spheres[0][i];
+                basicModel.SetRenderState(graphicsDevice, SpriteBlendMode.Additive);
+                basicModel.Draw(view, GameData.Projection);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the movie animation and sets it in the texture. 
+        ///
+        /// ムービーのアニメーションを描画し、テクスチャに設定します。
+        /// </summary>
+        private void DrawMovie(GameTime gameTime)
+        {
+            // Processing is not performed if the movie has not been set.
+            // 
+            // ムービーが設定されていない場合は処理を行いません。
+            if (data.movie == null)
+                return;
+
+            data.movie.Draw(gameTime);
+            data.movieTexture = data.movie.Texture;
+        }
+
+
+        /// <summary>
+        /// Draws the split preview and sets it in the texture.
+        /// 
+        /// 分割プレビューを描画してテクスチャに設定します。
+        /// </summary>
+        private void DrawDividePreview()
+        {
+            // Performs an error check.
+            // 
+            // エラーチェックを行います。  
+            if (!data.PanelManager.IsInitialized ||
+                data.DividePreview == null || 
+                data.DividePreview.IsDisposed)
+            {
+                return;
+            }
+
+
+            // Changes the render target.
+            // 
+            // 描画先を変更します。
+            GraphicsDevice.SetRenderTarget(0, data.DividePreview);
+
+            // Clears the background.
+            // 
+            // 背景をクリアします。
+            GraphicsDevice.Clear(Color.Black);
+
+            // Draws the movie animation.
+            // 
+            // ムービーアニメーションを描画します。
+            if (data.movieTexture != null)
+            {
+                Batch.Begin();
+                Batch.Draw(data.movieTexture, Vector2.Zero, Color.White);
+                Batch.End();
+            }
+
+            // Draws the split image.
+            // 
+            // 分割イメージを描画します。
+            Matrix projection = GameData.MovieScreenProjection;
+            Color fillColor = new Color(0xff, 0x00, 0x00, 0x80);
+            for (int x = 0; x < data.PanelManager.PanelCount.X; ++x)
+            {
+                for (int y = 0; y < data.PanelManager.PanelCount.Y; ++y)
+                {
+                    // Draws a rectangle at the panel position.
+                    // 
+                    // パネルの場所に矩形を描画します。 
+                    Rectangle rect = data.PanelManager.GetPanel(x, y).RectanglePosition;
+                    data.primitiveDraw.FillRect(projection, rect, fillColor);
+                    data.primitiveDraw.DrawRect(projection, rect, Color.Yellow);
+                }
+            }
+
+            // Returns the render target.
+            // 
+            // 描画先を戻します。
+            GraphicsDevice.SetRenderTarget(0, null);
+
+            // Obtains the preview texture.
+            // 
+            // プレビューのテクスチャを取得します。
+            data.divideTexture = 
+                (data.DividePreview == null || data.DividePreview.IsDisposed) ? null : 
+                data.DividePreview.GetTexture();
+        }
+
+
+        /// <summary>
+        /// Draws the style animation and sets it in the texture.
+        /// 
+        /// スタイルアニメーションを描画してテクスチャに設定します。        
+        /// </summary>
+        private void DrawStyleAnimation(SpriteBatch batch)
+        {
+            RenderTarget2D renderTarget = data.StyleAnimation;
+            SequencePlayData seqPlayData = data.SeqStyleAnimation;
+
+            // Performs an error check.
+            // 
+            // エラーチェックをします。
+            if (seqPlayData == null || renderTarget == null || renderTarget.IsDisposed)
+                return;
+
+            // Changes the render target.
+            // 
+            // 描画先を変更します。             
+            GraphicsDevice.SetRenderTarget(0, renderTarget);
+
+            // Clears the background to a transparent color.
+            // 
+            // 透過色で背景をクリアします。
+            GraphicsDevice.Clear(Color.TransparentBlack);
+
+            // Draws the sequence.
+            // 
+            // シーケンスを描画します。 
+            batch.Begin();
+            seqPlayData.Draw(batch, null);
+            batch.End();
+
+            // Returns the render target.
+            // 
+            // 描画先を戻します。 
+            GraphicsDevice.SetRenderTarget(0, null);
+
+            // Obtains the style animation texture.
+            // 
+            // スタイルアニメーションのテクスチャを取得します。 
+            data.StyleAnimationTexture =
+                (renderTarget == null || renderTarget.IsDisposed) ? null :
+                renderTarget.GetTexture();
+        }
+        #endregion
+
+        #region IDisposable Members
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing)
+            {
+                if (data != null)
+                {
+                    data.Dispose();
+                    data = null;
+                }
+            }
+
+            base.Dispose(disposing);
+        }
+
+        #endregion
+    }
+}

+ 243 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/MenuData.cs

@@ -0,0 +1,243 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// MenuData.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using Microsoft.Xna.Framework.Storage;
+using Microsoft.Xna.Framework.Content;
+
+using Movipa.Components.Animation;
+using Movipa.Components.Scene.Puzzle;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Stores common data used in menus.
+    /// 
+    /// メニューで使用する共通データを格納します。
+    /// </summary>
+    public class MenuData : IDisposable
+    {
+        #region Fields
+        /// <summary>
+        /// Cursor sphere rotation speed
+        /// 
+        /// カーソルの球体の回転速度
+        /// </summary>
+        public readonly float CursorSphereRotate;
+
+        /// <summary>
+        /// Cursor sphere default size
+        /// 
+        /// カーソルの球体のデフォルトサイズ
+        /// </summary>
+        public readonly float CursorSphereSize;
+
+        /// <summary>
+        /// Small cursor sphere 
+        /// 
+        /// カーソルの球体の小さいサイズ
+        /// </summary>
+        public readonly float CursorSphereMiniSize;
+
+        /// <summary>
+        /// Enlarge value when cursor sphere selected
+        /// 
+        /// カーソルの球体の選択時に拡大する値
+        /// </summary>
+        public readonly float CursorSphereZoomSpeed;
+
+        /// <summary>
+        /// Change value during cursor sphere fade
+        ///
+        /// カーソルの球体のフェード時に変化する値
+        /// </summary>
+        public readonly float CursorSphereFadeSpeed;
+
+        /// <summary>
+        /// Camera position viewing sphere
+        ///
+        /// 球体を見るカメラ位置
+        /// </summary>
+        public readonly Vector3 CameraPosition;
+        
+        /// <summary>
+        /// Menu scene data
+        ///
+        /// メニューのシーンデータ
+        /// </summary>
+        public SceneData sceneData;
+
+        /// <summary>
+        /// Background and selected status sphere
+        ///
+        /// 背景と選択状態の球体
+        /// </summary>
+        public BasicModelData[][] Spheres;
+
+        /// <summary>
+        /// Movie animation
+        /// 
+        /// ムービーアニメーション
+        /// </summary>
+        public PuzzleAnimation movie;
+
+        /// <summary>
+        /// Movie loader
+        ///
+        /// ムービーローダ
+        /// </summary>
+        public MovieLoader movieLoader;
+
+        /// <summary>
+        /// Movie texture
+        ///
+        /// ムービーテクスチャ
+        /// </summary>
+        public Texture2D movieTexture;
+
+        /// <summary>
+        /// Split preview render target
+        ///
+        /// 分割プレビューのレンダーターゲット
+        /// </summary>
+        public RenderTarget2D DividePreview;
+
+        /// <summary>
+        /// Split texture
+        /// 
+        /// 分割テクスチャ
+        /// </summary>
+        public Texture2D divideTexture;
+
+        /// <summary>
+        /// Style animation render target
+        ///
+        /// スタイルアニメーションのレンダーターゲット
+        /// </summary>
+        public RenderTarget2D StyleAnimation;
+
+        /// <summary>
+        /// Style animation texture
+        ///
+        /// スタイルアニメーションのテクスチャ
+        /// </summary>
+        public Texture2D StyleAnimationTexture;
+
+        /// <summary>
+        /// Style animation texture
+        ///
+        /// スタイルアニメーションのテクスチャ
+        /// </summary>
+        public SequencePlayData SeqStyleAnimation;
+
+        /// <summary>
+        /// Stage settings information 
+        ///
+        /// ステージの設定情報
+        /// </summary>
+        public StageSetting StageSetting;
+
+        /// <summary>
+        /// Panel management class 
+        ///
+        /// パネルの管理クラス
+        /// </summary>
+        public PanelManager PanelManager;
+
+        /// <summary>
+        /// Primitive drawing class
+        ///
+        /// 基本描画クラス
+        /// </summary>
+        public PrimitiveDraw2D primitiveDraw;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public MenuData(Game game)
+        {
+            CursorSphereRotate = MathHelper.ToRadians(1.0f);
+            CursorSphereSize = 0.4f;
+            CursorSphereMiniSize = 0.18f;
+            CursorSphereZoomSpeed = 0.01f;
+            CursorSphereFadeSpeed = 0.1f;
+
+            CameraPosition = new Vector3(0.0f, 0.0f, 200.0f);
+            
+            StageSetting = new StageSetting();
+            PanelManager = new PanelManager(game);
+            primitiveDraw = new PrimitiveDraw2D(game.GraphicsDevice);
+        }
+        #endregion
+
+        #region IDisposable Members
+
+        private bool disposed = false;
+        public bool Disposed
+        {
+            get { return disposed; }
+        }
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected virtual void Dispose(bool disposing)
+        {
+            if (disposing && !disposed)
+            {
+                if (primitiveDraw != null)
+                {
+                    primitiveDraw.Dispose();
+                    primitiveDraw = null;
+                }
+                if (DividePreview != null && !DividePreview.IsDisposed)
+                {
+                    DividePreview.Dispose();
+                    DividePreview = null;
+                }
+                if (StyleAnimation != null && !StyleAnimation.IsDisposed)
+                {
+                    StyleAnimation.Dispose();
+                    StyleAnimation = null;
+                }
+                disposed = true;
+            }
+        }
+
+        #endregion
+
+    }
+}

+ 87 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/MenuType.cs

@@ -0,0 +1,87 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// MenuData.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using Microsoft.Xna.Framework.Storage;
+using Microsoft.Xna.Framework.Content;
+
+using Movipa.Components.Animation;
+using Movipa.Components.Scene.Puzzle;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    #region Public Types
+    /// <summary>
+    /// Defines the menu items.
+    /// 
+    /// メニューの項目を定義します。
+    /// </summary>
+    public enum MenuType
+    {
+        /// <summary>
+        /// Mode selection
+        /// 
+        /// モード選択
+        /// </summary>
+        SelectMode,
+
+        /// <summary>
+        /// Save File selection
+        ///
+        /// セーブファイル選択
+        /// </summary>
+        SelectFile,
+
+        /// <summary>
+        /// Style selection
+        ///
+        /// スタイル選択
+        /// </summary>
+        SelectStyle,
+
+        /// <summary>
+        /// Rotation setting
+        ///
+        /// 回転の設定
+        /// </summary>
+        RotateSelect,
+
+        /// <summary>
+        /// Movie selection
+        ///
+        /// ムービー選択
+        /// </summary>
+        SelectMovie,
+
+        /// <summary>
+        /// Split setting
+        /// 
+        /// 分割数の設定
+        /// </summary>
+        SelectDivide,
+
+        /// <summary>
+        /// Confirmation screen 
+        ///
+        /// 確認画面
+        /// </summary>
+        Ready,
+    }
+    #endregion
+}

+ 107 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/MovieLoader.cs

@@ -0,0 +1,107 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// MovieLoader.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Animation;
+using MovipaLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Loads and initializes the movie animation 
+    /// asynchronously. 
+    /// This class is designed to execute the 
+    /// Initialize method in a thread by inheriting 
+    /// InitializeThread and invoking the associated Run method.
+    /// 
+    /// ムービーアニメーションの読み込みと初期化を非同期で行います。
+    /// このクラスはInitializeThreadを継承し、InitializeThreadの
+    /// Runメソッドを呼び出すことで、Initializeメソッドをスレッドで
+    /// 実行するようになっています。
+    /// </summary>
+    public class MovieLoader : InitializeThread
+    {
+        #region Fields
+        // Animation information 
+        //
+        // アニメーション情報
+        private AnimationInfo animationInfo;
+
+        // Loaded movie objects
+        //
+        // 読み込まれたムービーオブジェクト
+        private PuzzleAnimation movie;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the movie objects that have been loaded. 
+        ///
+        /// 読み込まれたムービーオブジェクトを取得します。
+        /// </summary>
+        public PuzzleAnimation Movie
+        {
+            get
+            {
+                if (!Initialized)
+                    return null;
+
+                return movie;
+            }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public MovieLoader(Game game, int cpu, AnimationInfo info)
+            : base(game, cpu)
+        {
+            animationInfo = info;
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Loads the movie.
+        ///
+        /// ムービーの読み込み処理を行います。
+        /// </summary>
+        protected override void Initialize()
+        {
+            // Sets the CPU core.
+            // 
+            // CPUコアの設定をします。
+            SetCpuCore();
+
+            // Loads the movie.
+            // 
+            // ムービーを読み込みます。
+            movie = PuzzleAnimation.CreateAnimationComponent(Game, animationInfo);
+
+            // Initializes the movie that has been loaded.
+            //
+            // 読み込んだムービーの初期化を行います。
+            movie.Initialize();
+
+            base.Initialize();
+        }
+        #endregion
+    }
+}

+ 383 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/Ready.cs

@@ -0,0 +1,383 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// Ready.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// This menu is used to display the confirmation
+    /// screen. It inherits MenuBaseance 
+    /// and expands menu compilation processing. Menu 
+    /// selection is followed by fade-out and 
+    /// transition to the puzzle scene.
+    /// 
+    /// 確認の画面を表示するメニュー
+    /// MenuBaseを継承し、メニューを構成する処理を拡張しています。
+    /// このメニューで決定されれば、フェードアウトし、パズルのシーンへ
+    /// 遷移します。
+    /// </summary>
+    public class Ready : MenuBase
+    {
+        #region Private Types
+        /// <summary>
+        ///Processing status
+        ///
+        /// 処理状態
+        /// </summary>
+        private enum Phase
+        {
+            /// <summary>
+            /// Start
+            ///
+            /// 開始演出
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// Normal processing
+            ///
+            /// 通常処理
+            /// </summary>
+            Select,
+
+            /// <summary>
+            /// Select
+            ///
+            /// 選択演出
+            /// </summary>
+            Selected,
+        }
+        #endregion
+
+        #region Fields
+        // Movie render area
+        //
+        // ムービーの描画領域
+        private readonly Rectangle MoviePreviewRect;
+
+        // Processing details
+        //
+        //処理内容
+        private Phase phase;
+
+        // Sequence
+        // 
+        // シーケンス
+        private SequencePlayData seqStart;
+        private SequencePlayData seqLoop;
+        private SequencePlayData seqMovieWindow;
+        private SequencePlayData seqPosStart;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        /// <param name="data">
+        /// Common data structure
+        ///
+        /// 共通データ構造体
+        /// </param>
+        public Ready(Game game, MenuData data)
+            : base(game, data)
+        {
+            // Loads the position.
+            //
+            // ポジションを読み込みます。
+            Point point;
+            PatternGroupData patternGroup;
+            patternGroup = data.sceneData.PatternGroupDictionary["Pos_PosMovie"];
+            point = patternGroup.PatternObjectList[0].Position;
+            MoviePreviewRect = new Rectangle(point.X, point.Y, 640, 360);
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        ///
+        /// 初期化の処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the processing status.
+            //
+            // 処理状態の初期設定をします。
+            phase = Phase.Start;
+
+            // Initializes the sequence.
+            //
+            // シーケンスの初期化を行います。
+            InitializeSequence();
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel"), false));
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+        }
+
+
+        /// <summary>
+        /// Initializes the sequence.
+        ///
+        /// シーケンスの初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            seqStart = Data.sceneData.CreatePlaySeqData("ReadyStart");
+            seqLoop = Data.sceneData.CreatePlaySeqData("ReadyLoop");
+            seqMovieWindow = Data.sceneData.CreatePlaySeqData("MovieWindow");
+            seqPosStart = Data.sceneData.CreatePlaySeqData("PosReadyStart");
+
+            seqStart.Replay();
+            seqPosStart.Replay();
+        }
+
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        ///
+        /// 更新処理を行います。
+        /// </summary>
+        public override MenuBase UpdateMain(GameTime gameTime)
+        {
+            // Updates the sequence.
+            //
+            // シーケンスの更新
+            UpdateSequence(gameTime);
+
+            if (phase == Phase.Start)
+            {
+                // Sets to selection process after start animation finishes.
+                // 
+                // 開始アニメーションが終了したら選択処理に設定します。
+                if (!seqStart.SequenceData.IsPlay)
+                {
+                    phase = Phase.Select;
+                }
+            }
+            else if (phase == Phase.Select)
+            {
+                // Performs update processing at selection.
+                //
+                // 選択時の更新処理を行います。
+                return UpdateSelect();
+            }
+            else if (phase == Phase.Selected)
+            {
+                // Registers puzzle scene then perform fade-out.
+                // 
+                // パズルのシーンを登録して、フェードアウトします。
+                GameData.SceneQueue.Enqueue(
+                    new Puzzle.PuzzleComponent(Game, Data.StageSetting));
+                GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeOut);
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update processing at selection.
+        /// 
+        /// 選択時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateSelect()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            if (buttons.A[VirtualKeyState.Push])
+            {
+                // Performs the post-selection process when the enter button is pressed. 
+                //
+                // 決定ボタンが押されたら選択後の処理に設定します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+                phase = Phase.Selected;
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Returns to split settings when the cancel button is pressed.
+                // 
+                // キャンセルボタンが押されたので、分割数の設定に戻ります。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+                return CreateMenu(Game, MenuType.SelectDivide, Data);
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        ///
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            seqStart.Update(gameTime.ElapsedGameTime);
+            seqLoop.Update(gameTime.ElapsedGameTime);
+            seqMovieWindow.Update(gameTime.ElapsedGameTime);
+            seqPosStart.Update(gameTime.ElapsedGameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs render processing.
+        ///
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime, SpriteBatch batch)
+        {
+            // Draws the movie window. 
+            //
+            // ムービーウィンドウを描画します。
+            batch.Begin();
+            seqMovieWindow.Draw(batch, null);
+            batch.End();
+
+            // Draws the split preview. 
+            //
+            // 分割プレビューを描画します。
+            DrawDivideTexture(batch);
+
+            batch.Begin();
+
+            if (phase == Phase.Start)
+            {
+                seqStart.Draw(batch, null);
+            }
+            else if (phase == Phase.Select)
+            {
+                seqLoop.Draw(batch, null);
+
+                // Draws the navigate.
+                // 
+                // ナビゲートの描画
+                DrawNavigate(gameTime, batch, false);
+            }
+            else if (phase == Phase.Selected)
+            {
+                seqLoop.Draw(batch, null);
+            }
+
+            DrawSequenceString(batch);
+
+            batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the split preview.
+        /// 
+        /// 分割プレビューを描画します。
+        /// </summary>
+        private void DrawDivideTexture(SpriteBatch batch)
+        {
+            // Unable to draw if no texture.
+            // 
+            // テクスチャが無い場合は描画処理を行いません。
+            if (Data.divideTexture == null)
+                return;
+
+            // Draws with no alpha.
+            //
+            // アルファ無しで描画をします。
+            batch.Begin(SpriteBlendMode.None);
+            batch.Draw(Data.divideTexture, MoviePreviewRect, Color.White);
+            batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws text string based on sequence.
+        /// 
+        /// シーケンスを元に文字列を描画します。
+        /// </summary>
+        private void DrawSequenceString(SpriteBatch batch)
+        {
+            SequenceBankData seqData;
+            seqData = seqPosStart.SequenceData;
+            foreach (SequenceGroupData seqBodyData in seqData.SequenceGroupList)
+            {
+                SequenceObjectData seqPartsData = seqBodyData.CurrentObjectList;
+                if (seqPartsData == null)
+                {
+                    continue;
+                }
+
+                List<PatternObjectData> list = seqPartsData.PatternObjectList;
+                foreach (PatternObjectData patPartsData in list)
+                {
+                    DrawData putInfoData = patPartsData.InterpolationDrawData;
+                    SpriteFont font = MediumFont;
+                    Color color = putInfoData.Color;
+
+                    string text = GetDrawString();
+                    Point point = putInfoData.Position;
+                    Vector2 position = new Vector2(point.X, point.Y);
+                    position -= font.MeasureString(text) * 0.5f;
+
+                    batch.DrawString(font, text, position, color);
+                }
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Obtains the text string for drawing.
+        /// 
+        /// 描画用の文字列を取得します。
+        /// </summary>
+        /// <returns>
+        /// Text string for drawing
+        ///
+        /// 描画用の文字列
+        /// </returns>
+        private string GetDrawString()
+        {
+            Point divide = Data.StageSetting.Divide;
+
+            string text = String.Empty;
+            text += string.Format("Style : {0}\n", Data.StageSetting.Style);
+            text += string.Format("Rotate : {0}\n", Data.StageSetting.Rotate);
+            text += string.Format("Movie : {0}\n", Data.movie.Info.Name);
+            text += string.Format("Divide : {0:00}x{1:00}", divide.X, divide.Y);
+
+            return text;
+        }
+        #endregion
+    }
+}

+ 112 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/SaveFileLoader.cs

@@ -0,0 +1,112 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SaveFileLoader.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.IO;
+using Microsoft.Xna.Framework;
+
+using Movipa.Util;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Performs an asynchronous search for the save
+    /// file of the game. 
+    /// This class is designed to execute the 
+    /// Initialize method in a thread by inheriting 
+    /// InitializeThread and invoking the associated 
+    /// Run method. The save files are named SaveDataFile1.xml,
+    /// SaveDataFile2.xml and SaveDataFile3.xml.
+    /// 
+    /// ゲームのセーブファイルを非同期で検索します。
+    /// このクラスはInitializeThreadを継承し、InitializeThreadの
+    /// Runメソッドを呼び出すことで、Initializeメソッドをスレッドで
+    /// 実行するようになっています。
+    /// セーブファイルの名称については、SaveDataFile1.xml、SaveDataFile2.xml、
+    /// SaveDataFile3.xml、となっています。
+    /// </summary>
+    public class SaveFileLoader : InitializeThread
+    {
+        #region Fields
+        private SaveData[] gameSettings = null;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains settings information.
+        /// 
+        /// 設定情報を取得します。
+        /// </summary>
+        public SaveData[] GetGameSettings()
+        {
+            if (!Initialized)
+                return null;
+
+            return gameSettings;
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SaveFileLoader(Game game, int cpu)
+            : base(game, cpu)
+        {
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Loads the save file.
+        ///
+        /// セーブファイルの読み込みを行います。
+        /// </summary>
+        protected override void Initialize()
+        {
+            // Sets the CPU core.
+            // 
+            // CPUコアの設定をします。
+            SetCpuCore();
+
+            // Sets the filename to be searched.
+            // 
+            // 検索するファイル名を設定します。
+            string[] saveFilePathList = {
+                GameData.Storage.GetStoragePath("SaveDataFile1.xml"),
+                GameData.Storage.GetStoragePath("SaveDataFile2.xml"),
+                GameData.Storage.GetStoragePath("SaveDataFile3.xml"),
+            };
+
+            // Loads the file and adds it to the list.
+            //
+            // ファイルを読み込み、リストに追加します。
+            List<SaveData> saveList = new List<SaveData>();
+            foreach (string saveFilePath in saveFilePathList)
+            {
+                saveList.Add(SettingsSerializer.LoadSaveData(saveFilePath));
+            }
+
+            // Converts the list to an array.
+            // 
+            // リストを配列に変換します。
+            gameSettings = saveList.ToArray();
+
+            base.Initialize();
+        }
+        #endregion
+    }
+
+}

+ 769 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/SelectDivide.cs

@@ -0,0 +1,769 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SelectDivide.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Menu item used to specify the number of 
+    /// divisions. It inherits MenuBaseance and 
+    /// expands menu compilation processing. When
+    /// rotation is off, the number of vertical and
+    /// horizontal divisions can be specified. When rotation
+    /// is on, only the number of vertical divisions
+    /// may be specified. The number of horizontal divisions
+    /// is automatically set to the maximum possible number
+    /// relative to the vertical divisions.
+    ///
+    /// 分割数を設定するメニュー項目です。
+    /// MenuBaseを継承し、メニューを構成する処理を拡張しています。
+    /// 回転が無しの場合は縦と横の分割数を設定できますが、
+    /// 回転がありに設定されていた場合は縦の分割数のみ設定可能で、
+    /// 横の分割数は縦の分割数に応じた最大数を自動で設定します。
+    /// </summary>
+    public class SelectDivide : MenuBase
+    {
+        #region Private Types
+        /// <summary>
+        /// Processing status
+        /// 
+        /// 処理状態
+        /// </summary>
+        private enum Phase
+        {
+            /// <summary>
+            /// Start
+            ///
+            ///開始演出
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// Normal processing
+            ///
+            /// 通常処理
+            /// </summary>
+            Select,
+
+            /// <summary>
+            /// Select
+            ///
+            /// 選択演出
+            /// </summary>
+            Selected,
+        }
+
+        /// <summary>
+        /// Cursor position
+        /// 
+        /// カーソル位置
+        /// </summary>
+        private enum CursorPosition
+        {
+            /// <summary>
+            /// Horizontal divisions
+            /// 
+            /// 横分割
+            /// </summary>
+            Left,
+
+            /// <summary>
+            /// Vertical divisions
+            /// 
+            /// 縦分割
+            /// </summary>
+            Right,
+
+            /// <summary>
+            /// Count
+            /// 
+            /// カウント用
+            /// </summary>
+            Count,
+        }
+        #endregion
+
+        #region Fields
+        // Maximum number of divisions
+        //
+        // 分割数最大値
+        private readonly Point DivideMax;
+
+        // Minimum number of divisions
+        //
+        // 分割数最小値
+        private readonly Point DivideMin;
+
+        // Movie draw position
+        //
+        // ムービー描画位置
+        private readonly Rectangle MoviePreviewRect;
+
+        // Cursor sphere position
+        //
+        // カーソル球体の位置
+        private readonly Vector3[] SpherePositions;
+
+        // Processing details
+        //
+        // 処理内容
+        private Phase phase;
+
+        // Cursor position
+        //
+        // カーソル位置
+        private CursorPosition cursor;
+
+        // Sequence
+        // 
+        // シーケンス
+        private SequencePlayData seqStart;
+        private SequencePlayData seqLoop;
+        private SequencePlayData seqSelect;
+        private SequencePlayData seqMovieWindow;
+        private SequencePlayData seqLeftLoop;
+        private SequencePlayData seqLeftUp;
+        private SequencePlayData seqLeftDown;
+        private SequencePlayData seqRightLoop;
+        private SequencePlayData seqRightUp;
+        private SequencePlayData seqRightDown;
+        private SequencePlayData seqPosDivideWidthStart;
+        private SequencePlayData seqPosDivideHeightStart;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SelectDivide(Game game, MenuData data)
+            : base(game, data)
+        {
+            // Loads the position.
+            //
+            // ポジションを読み込みます。
+            PatternGroupData patternGroup = 
+                data.sceneData.PatternGroupDictionary["Pos_PosMovie"];
+            Point point;
+            point = patternGroup.PatternObjectList[0].Position;
+            MoviePreviewRect = new Rectangle(point.X, point.Y, 640, 360);
+
+            // Sets the number of divisions to the maximum value.
+            // 
+            // 分割数の最大値を設定します。
+            DivideMax = new Point(10, 6);
+
+            // Sets the number of divisions to the minimum value.
+            // 
+            // 分割数の最小値を設定します。
+            DivideMin = new Point(2, 2);
+
+            // Sets the cursor position.
+            // 
+            // カーソルの位置を設定します。
+            SpherePositions = new Vector3[] {
+                new Vector3(-29.43751f, -47.44127f, 0),
+                new Vector3(27.08988f, -47.44127f, 0)
+            };
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化の処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the processing status.
+            // 
+            // 処理状態の初期設定をします。
+            phase = Phase.Start;
+
+            // Initializes the sphere model.
+            // 
+            // 球体モデルの初期設定をします。
+            Data.Spheres[1][0].Position += SpherePositions[0];
+            Data.Spheres[1][0].Rotate = new Vector3(0, 0, MathHelper.ToRadians(90.0f));
+            Data.Spheres[1][0].Alpha = 0.0f;
+            Data.Spheres[1][0].Scale = Data.CursorSphereSize;
+
+            // Initializes the cursor position.
+            //
+            // カーソルの初期位置を設定します。
+            if (Data.StageSetting.Rotate == StageSetting.RotateMode.Off)
+            {
+                cursor = CursorPosition.Left;
+            }
+            else if (Data.StageSetting.Rotate == StageSetting.RotateMode.On)
+            {
+                // When rotation is on, only vertical divisions may be specified.
+                // 
+                // 回転有りの場合は縦分割のみ設定できます。
+                cursor = CursorPosition.Right;
+            }
+
+            // Calculates the number of divisions.
+            // 
+            // 分割数の計算を行います。
+            CalcDivide();
+
+            // Initializes the sequence.
+            //
+            // シーケンスの初期化を行います。
+            InitializeSequence();
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel"), false));
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+        }
+
+
+        /// <summary>
+        /// Initializes the sequence.
+        /// 
+        /// シーケンスの初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            SceneData scene = Data.sceneData;
+            seqStart = scene.CreatePlaySeqData("DivideStart");
+            seqLoop = scene.CreatePlaySeqData("DivideLoop");
+            seqSelect = scene.CreatePlaySeqData("DivideSelect");
+            seqMovieWindow = scene.CreatePlaySeqData("MovieWindow");
+            seqLeftLoop = scene.CreatePlaySeqData("DivideLeftLoop");
+            seqLeftUp = scene.CreatePlaySeqData("DivideLeftUp");
+            seqLeftDown = scene.CreatePlaySeqData("DivideLeftDown");
+            seqRightLoop = scene.CreatePlaySeqData("DivideRightLoop");
+            seqRightUp = scene.CreatePlaySeqData("DivideRightUp");
+            seqRightDown = scene.CreatePlaySeqData("DivideRightDown");
+            seqPosDivideWidthStart = scene.CreatePlaySeqData("PosDivideWidthStart");
+            seqPosDivideHeightStart = scene.CreatePlaySeqData("PosDivideHeightStart");
+
+            seqStart.Replay();
+            seqPosDivideWidthStart.Replay();
+            seqPosDivideHeightStart.Replay();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        ///
+        /// 更新処理を行います。
+        /// </summary>
+        public override MenuBase UpdateMain(GameTime gameTime)
+        {
+            // Updates the sequence.
+            // 
+            // シーケンスの更新を行います。
+            UpdateSequence(gameTime);
+
+            // Updates the model.
+            // 
+            // モデルの更新処理を行います。
+            UpdateModels();
+
+            if (phase == Phase.Start)
+            {
+                // Sets to selection process after start animation finishes.
+                // 
+                // 開始アニメーションが終了したら選択処理へ設定します。
+                if (!seqStart.IsPlay)
+                {
+                    phase = Phase.Select;
+                }
+            }
+            else if (phase == Phase.Select)
+            {
+                // Updates during selection.
+                // 
+                // 選択中の更新処理を行います。
+                return UpdateSelect();
+            }
+            else if (phase == Phase.Selected)
+            {
+                // Switches to the confirmation screen when the selected animation ends.
+                //
+                // 選択アニメーションが終了したら確認画面へ繊維します。
+                if (!seqSelect.IsPlay)
+                {
+                    return CreateMenu(Game, MenuType.Ready, Data);
+                }
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Updates during selection.
+        /// 
+        /// 選択中の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateSelect()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPushRepeat(dPad.Up, leftStick.Up))
+            {
+                // Down key increases the number of divisions.
+                // 
+                // 下キーが押されたら分割数を増やします。
+                SetDivide(1);
+            }
+            else if (InputState.IsPushRepeat(dPad.Down, leftStick.Down))
+            {
+                // Down key decreases the number of divisions.
+                //
+                // 下キーが押されたら分割数を減らします。
+                SetDivide(-1);
+            }
+            else if (InputState.IsPush(dPad.Left, leftStick.Left) ||
+                InputState.IsPush(dPad.Right, leftStick.Right))
+            {
+                // Use common processing since there are only two items.
+                // However, only the number of vertical divisions may be
+                // specified when rotation is on, so the processing is 
+                // performed only when rotation is off.
+                //
+                //項目が2つしかないので共通の処理を使用します。
+                // ただし、回転が有りの場合は縦分割のみ設定可能なので、
+                // 回転無しの場合のみ処理を行います。
+                if (Data.StageSetting.Rotate == StageSetting.RotateMode.Off)
+                {;
+                    // Moves the cursor position.
+                    // 
+                    // カーソル位置を移動します。
+                    cursor = CursorMove();
+
+                    // SoundEffect playback
+                    // 
+                    // SoundEffectの再生
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+                }
+            }
+            else if (buttons.A[VirtualKeyState.Push])
+            {
+                // Enter button has been pressed; set processing state after selection.
+                // 
+                // 決定ボタンが押されたので、処理状態を選択後に設定します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+                seqSelect.Replay();
+                phase = Phase.Selected;
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Cancel button has been pressed; return to movie selection.
+                // 
+                // キャンセルボタンが押されたのでムービー選択へ戻ります。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+                return CreateMenu(Game, MenuType.SelectMovie, Data);
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            seqStart.Update(gameTime.ElapsedGameTime);
+            seqLoop.Update(gameTime.ElapsedGameTime);
+            seqSelect.Update(gameTime.ElapsedGameTime);
+            seqMovieWindow.Update(gameTime.ElapsedGameTime);
+            seqLeftLoop.Update(gameTime.ElapsedGameTime);
+            seqLeftUp.Update(gameTime.ElapsedGameTime);
+            seqLeftDown.Update(gameTime.ElapsedGameTime);
+            seqRightLoop.Update(gameTime.ElapsedGameTime);
+            seqRightUp.Update(gameTime.ElapsedGameTime);
+            seqRightDown.Update(gameTime.ElapsedGameTime);
+            seqPosDivideWidthStart.Update(gameTime.ElapsedGameTime);
+            seqPosDivideHeightStart.Update(gameTime.ElapsedGameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the model.
+        ///
+        /// モデルの更新処理を行います。
+        /// </summary>
+        private void UpdateModels()
+        {
+            // Updates the position.
+            // 
+            // ポジションの更新を行います。
+            Vector3 position = Data.Spheres[1][0].Position;
+            if (cursor == CursorPosition.Left)
+            {
+                position += (SpherePositions[0] - position) * 0.2f;
+            }
+            else if (cursor == CursorPosition.Right)
+            {
+                position += (SpherePositions[1] - position) * 0.2f;
+            }
+            Data.Spheres[1][0].Position = position;
+
+            // Specifies the transparency and scale settings.
+            //
+            // 透明度とスケールの設定をします。
+            float alpha = Data.Spheres[1][0].Alpha;
+            float fadeSpeed = Data.CursorSphereFadeSpeed;
+            if (phase != Phase.Selected)
+            {
+                alpha = MathHelper.Clamp(alpha + fadeSpeed, 0.0f, 1.0f);
+            }
+            else
+            {
+                // Performs fade-out with zoom when item is selected.
+                // 
+                // 項目が決定されるとズームしながらフェードアウトします。
+                alpha = MathHelper.Clamp(alpha - fadeSpeed, 0.0f, 1.0f);
+                Data.Spheres[1][0].Scale += Data.CursorSphereZoomSpeed;
+            }
+            Data.Spheres[1][0].Alpha = alpha;
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs render processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime, SpriteBatch batch)
+        {
+            // Draws the model.
+            // 
+            // モデルの描画を行います。
+            DrawModels(batch);
+
+            // Draws the movie window.
+            // 
+            // ムービーウィンドウを描画します。
+            batch.Begin();
+            seqMovieWindow.Draw(batch, null);
+            batch.End();
+
+            // Draws the division preview.
+            // 
+            // 分割プレビューを描画します。
+            DrawDivideTexture(batch);
+
+            // Draws the sequence.
+            // 
+            // シーケンスの描画を行います。
+            batch.Begin();
+            DrawSequence(gameTime, batch);
+            batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the model.
+        /// 
+        /// モデルの描画を行います。
+        /// </summary>
+        private void DrawModels(SpriteBatch batch)
+        {
+            GraphicsDevice graphicsDevice = batch.GraphicsDevice;
+            Matrix view;
+            view = Matrix.CreateLookAt(Data.CameraPosition, Vector3.Zero, Vector3.Up);
+            Data.Spheres[1][0].SetRenderState(graphicsDevice, SpriteBlendMode.Additive);
+            Data.Spheres[1][0].Draw(view, GameData.Projection);
+        }
+
+
+        /// <summary>
+        /// Draws the division preview.
+        ///
+        /// 分割プレビューを描画します。
+        /// </summary>
+        private void DrawDivideTexture(SpriteBatch batch)
+        {
+            // Processing is not performed if the texture is not set. 
+            // 
+            // テクスチャが設定されていない場合は処理を行いません。
+            if (Data.divideTexture == null)
+                return;
+
+            // Draws division preview with no alpha.
+            // 
+            // アルファ無しで分割プレビューを描画します。
+            batch.Begin(SpriteBlendMode.None);
+            batch.Draw(Data.divideTexture, MoviePreviewRect, Color.White);
+            batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the sequence.
+        /// 
+        /// シーケンスの描画を行います。
+        /// </summary>
+        private void DrawSequence(GameTime gameTime, SpriteBatch batch)
+        {
+            if (phase == Phase.Start)
+            {
+                seqStart.Draw(batch, null);
+                DrawSequenceString(batch);
+            }
+            else if (phase == Phase.Select)
+            {
+                seqLoop.Draw(batch, null);
+                seqLeftLoop.Draw(batch, null);
+                seqRightLoop.Draw(batch, null);
+                seqLeftUp.Draw(batch, null);
+                seqLeftDown.Draw(batch, null);
+                seqRightUp.Draw(batch, null);
+                seqRightDown.Draw(batch, null);
+                DrawSequenceString(batch);
+
+                // Draws the navigate button.
+                //
+                // ナビゲートボタンの描画を行います。
+                DrawNavigate(gameTime, batch, false);
+            }
+            else if (phase == Phase.Selected)
+            {
+                seqLoop.Draw(batch, null);
+                seqSelect.Draw(batch, null);
+                DrawSequenceString(batch);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the sequence text string.
+        /// 
+        /// シーケンスの文字列を描画します。
+        /// </summary>
+        private void DrawSequenceString(SpriteBatch batch)
+        {
+            SequenceBankData sequenceBank;
+
+            // Horizontal division text string
+            // 
+            // 横分割の文字列
+            sequenceBank = seqPosDivideWidthStart.SequenceData;
+            DrawSequenceString(batch, sequenceBank, Data.StageSetting.Divide.X);
+
+            // Vertical division text string
+            // 
+            // 縦分割の文字列
+            sequenceBank = seqPosDivideHeightStart.SequenceData;
+            DrawSequenceString(batch, sequenceBank, Data.StageSetting.Divide.Y);
+        }
+
+
+        /// <summary>
+        /// Draws the sequence text string.
+        /// 
+        /// シーケンスの文字列を描画します。
+        /// </summary>
+        private void DrawSequenceString(SpriteBatch batch, 
+            SequenceBankData sequenceBank, int value)
+        {
+            foreach (SequenceGroupData seqBodyData in sequenceBank.SequenceGroupList)
+            {
+                SequenceObjectData seqPartsData = seqBodyData.CurrentObjectList;
+                if (seqPartsData == null)
+                {
+                    continue;
+                }
+
+                foreach (PatternObjectData patPartsData in
+                    seqPartsData.PatternObjectList)
+                {
+                    DrawData putInfoData = patPartsData.InterpolationDrawData;
+                    SpriteFont font = LargeFont;
+                    Color color = putInfoData.Color;
+                    Point point = putInfoData.Position;
+                    Vector2 position = new Vector2(point.X, point.Y);
+                    string text = string.Format("{0:00}", value);
+                    batch.DrawString(font, text, position, color);
+                }
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Calculates the number of divisions.
+        /// 
+        /// 分割数を計算します。
+        /// </summary>
+        private void CalcDivide()
+        {
+            // Creates the panel.
+            // 
+            // パネルを作成します。
+            Data.PanelManager.CreatePanel(GameData.MovieSizePoint, Data.StageSetting);
+
+            // When rotation is off, end without changing.
+            // When rotation is on, calculate the optimum number of horizontal divisions.
+            // 
+            // 回転がオフの状態の時はそのまま終了します。
+            // 回転がオンの時は横の分割数が最適になるように計算します。
+            if (Data.StageSetting.Rotate == StageSetting.RotateMode.Off)
+                return;
+
+            // Obtains the number of divisions.
+            //
+            // 分割数を取得します。
+            Point divide = Data.StageSetting.Divide;
+
+            // Recalculates using the minimum number of horizontal divisions. 
+            //
+            // 横分割数を最小値にして再計算します。
+            divide.X = DivideMin.X;
+            Data.StageSetting.Divide = divide;
+            Data.PanelManager.CreatePanel(GameData.MovieSizePoint, Data.StageSetting);
+
+            // Divides the movie width by the width of the rectangle. 
+            //
+            // ムービーの横幅を矩形の横幅で割ります。
+            int movieWidth = GameData.MovieSizePoint.X;
+            int panelWidth = (int)Data.PanelManager.PanelSize.X;
+            int widthCount = (int)(movieWidth / panelWidth);
+
+            // Updates the number of divisions to the calculation result.
+            //
+            // 割った数を分割数に再設定します。
+            divide.X = widthCount;
+            Data.StageSetting.Divide = divide;
+
+            // Recalculates the panel. 
+            //
+            // パネルを再計算します。
+            Data.PanelManager.CreatePanel(GameData.MovieSizePoint, Data.StageSetting);
+        }
+
+
+        /// <summary>
+        /// Moves the cursor position.
+        /// 
+        /// カーソル位置を移動します。
+        /// </summary>
+        private CursorPosition CursorMove()
+        {
+            int length = (int)CursorPosition.Count;
+            return (CursorPosition)(((int)cursor + 1) % length);
+        }
+
+
+        /// <summary>
+        /// Sets the number of divisions.
+        ///
+        /// 分割数の設定をします。
+        /// </summary>
+        private void SetDivide(int offset)
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadTriggers triggers = virtualPad.Triggers;
+
+            Point divide = Data.StageSetting.Divide;
+
+            if (cursor == CursorPosition.Left)
+            {
+                // Calculates the number of horizontal divisions.
+                //
+                // 横の分割数を計算します。
+                divide.X += offset;
+
+                // Replays the sequence.
+                //
+                // シーケンスをリプレイします。
+                seqLeftUp.Replay();
+            }
+            else if (cursor == CursorPosition.Right)
+            {
+                // Calculates the number of vertical divisions.
+                //
+                // 縦の分割数を計算します。
+                divide.Y += offset;
+
+                // Replays the sequence.
+                // 
+                // シーケンスをリプレイします。
+                seqRightUp.Replay();
+            }
+
+            // Limits the number of divisions.
+            // The limitation is cancelled if the L trigger or R trigger are pressed.
+            // 
+            // 分割数の制限をします。
+            // LトリガーとRトリガーが押されていた場合は制限を解除します。
+            if (triggers.Left[VirtualKeyState.Free] || 
+                triggers.Right[VirtualKeyState.Free])
+            {
+                int max;
+                int min;
+
+                max = DivideMax.X;
+                min = DivideMin.X;
+                divide.X = (divide.X > max) ? max : divide.X;
+                divide.X = (divide.X < min) ? min : divide.X;
+
+                max = DivideMax.Y;
+                min = DivideMin.Y;
+                divide.Y = (divide.Y > max) ? max : divide.Y;
+                divide.Y = (divide.Y < min) ? min : divide.Y;
+            }
+
+            // Sets the number of divisions.
+            //
+            // 分割数を設定します。
+            Data.StageSetting.Divide = divide;
+
+            // Re-creates the panel.
+            // 
+            // パネルを再作成します。
+            CalcDivide();
+
+            // Plays the SoundEffect for change in number of divisions.
+            // 
+            // 分割数変更のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+        #endregion
+    }
+}

+ 1310 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/SelectFile.cs

@@ -0,0 +1,1310 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SelectFile.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using SceneDataLibrary;
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Menu item used for save file selection process. It inherits 
+    /// MenuBase and expands menu compilation processing. 
+    /// This class implements menu mode selection, and includes 
+    /// asynchronous file searching, save file load, and 
+    /// delete functions. 
+    /// 
+    /// セーブファイルの選択を処理するメニュー項目です。
+    /// MenuBaseを継承し、メニューを構成する処理を拡張しています。
+    /// このクラスはメニューのモード選択を実装し、非同期のファイル検索と
+    /// セーブファイルの読み込み、削除の機能があります。
+    /// </summary>
+    public class SelectFile : MenuBase
+    {
+        #region Private Types
+        /// <summary>
+        /// Processing status
+        /// 
+        /// 処理状態
+        /// </summary>
+        private enum Phase
+        {
+            /// <summary>
+            /// Storage selection
+            /// 
+            /// ストレージ選択
+            /// </summary>
+            StorageSelect,
+
+            /// <summary>
+            /// File search
+            ///
+            /// ファイル検索
+            /// </summary>
+            FileSearch,
+
+            /// <summary>
+            /// Start
+            ///
+            /// 開始演出
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// File selection
+            /// 
+            /// ファイル選択
+            /// </summary>
+            Select,
+
+            /// <summary>
+            /// File selected
+            /// 
+            /// ファイル決定演出
+            /// </summary>
+            Selected,
+
+            /// <summary>
+            /// Delete start
+            /// 
+            /// 削除開始演出
+            /// </summary>
+            DeleteStart,
+
+            /// <summary>
+            /// Delete selection
+            /// 
+            /// 削除選択
+            /// </summary>
+            DeleteSelect,
+        }
+
+        /// <summary>
+        /// Cursor position
+        /// 
+        /// カーソル位置。
+        /// </summary>
+        private enum CursorPosition
+        {
+            /// <summary>
+            /// File 1
+            /// 
+            /// ファイル1。
+            /// </summary>
+            File1,
+
+            /// <summary>
+            /// File 2
+            /// 
+            /// ファイル2。
+            /// </summary>
+            File2,
+
+            /// <summary>
+            /// File 3
+            /// 
+            /// ファイル3。
+            /// </summary>
+            File3,
+
+            /// <summary>
+            /// Count
+            /// 
+            /// カウント用。
+            /// </summary>
+            Count
+        }
+        #endregion
+
+        #region Fields
+        /// <summary>
+        /// Name of storage container 
+        /// 
+        /// ストレージで使用するコンテナ名
+        /// </summary>
+        private const string ContainerName = "Movipa";
+
+        // Cursor position
+        // 
+        // カーソル位置
+        private CursorPosition cursor;
+
+        // Processing status
+        // 
+        // 処理状態
+        private Phase phase;
+
+        // Game settings information 
+        //
+        // ゲームの設定情報
+        private SaveFileLoader saveFileLoader;
+        private SaveData[] saveData;
+
+        // Delete window visibility
+        // 
+        // 削除ウィンドウの可視状態
+        private bool visibleDeleteWindow;
+
+        // Sequence
+        //
+        // シーケンス
+        private SequencePlayData seqStart;
+        private SequencePlayData seqPosStart;
+        private SequencePlayData seqLoop;
+        private SequencePlayData seqFile1;
+        private SequencePlayData seqFile1Loop;
+        private SequencePlayData seqFile1LoopOff;
+        private SequencePlayData seqFile1FadeOut;
+        private SequencePlayData seqPosFile1FadeOut;
+        private SequencePlayData seqFile2;
+        private SequencePlayData seqFile2Loop;
+        private SequencePlayData seqFile2LoopOff;
+        private SequencePlayData seqFile2FadeOut;
+        private SequencePlayData seqPosFile2FadeOut;
+        private SequencePlayData seqFile3;
+        private SequencePlayData seqFile3Loop;
+        private SequencePlayData seqFile3LoopOff;
+        private SequencePlayData seqFile3FadeOut;
+        private SequencePlayData seqPosFile3FadeOut;
+        private SequencePlayData seqDeleteStart;
+        private SequencePlayData seqDeleteLoop;
+        private SequencePlayData seqPosDelete;
+
+        // Position
+        //
+        // ポジション
+        private SequenceGroupData[] seqPosFile1;
+        private SequenceGroupData[] seqPosFile2;
+        private SequenceGroupData[] seqPosFile3;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SelectFile(Game game, MenuData data)
+            : base(game, data)
+        {
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the processing status.
+            // 
+            // 処理状態の初期設定をします。
+            phase = Phase.StorageSelect;
+
+            // Sets the initial cursor position.
+            //
+            // カーソルの初期位置を設定します。
+            cursor = CursorPosition.File1;
+
+            // Sets the delete window visibility to invisible. 
+            // 
+            // 削除ウィンドウの可視状態を不可視に設定します。
+            visibleDeleteWindow = false;
+
+            // Initializes the sequence.
+            // 
+            // シーケンスの初期化を行います。
+            InitializeSequence();
+
+            // Displays the storage selector.
+            //
+            // ストレージセレクタを表示します。
+            InitializeStorageSelect();
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes storage selection.
+        /// 
+        /// ストレージ選択の初期化を行います。
+        /// </summary>
+        private static void InitializeStorageSelect()
+        {
+            // Displays the storage selection screen.
+            // 
+            // ストレージ選択の画面を表示します。
+            GameData.Storage.ShowStorageDeviceSelector(ContainerName, PlayerIndex.One);
+        }
+
+
+        /// <summary>
+        /// Initializes file searching.
+        /// 
+        /// ファイル検索の初期化を行います。
+        /// </summary>
+        private void InitializeFileSearch()
+        {
+            if (saveFileLoader != null)
+                return;
+
+            // Creates the file loader.
+            // 
+            // ファイルローダーを作成します。
+            saveFileLoader = new SaveFileLoader(Game, 3);
+
+            // Starts the file search.
+            //
+            // ファイル検索を開始します。
+            saveFileLoader.Run();
+        }
+
+
+        /// <summary>
+        /// Initializes the navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            InitializeNavigate_Select();
+        }
+
+
+        /// <summary>
+        /// Initializes the sequence.
+        /// 
+        /// シーケンスの初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            // Loads the sequence.
+            // 
+            // シーケンスの読み込みを行います。
+            seqStart = Data.sceneData.CreatePlaySeqData("FileStart");
+            seqPosStart = Data.sceneData.CreatePlaySeqData("PosFileStart");
+            seqLoop = Data.sceneData.CreatePlaySeqData("FileLoop");
+            seqFile1 = Data.sceneData.CreatePlaySeqData("File1");
+            seqFile1Loop = Data.sceneData.CreatePlaySeqData("File1Loop");
+            seqFile1LoopOff = Data.sceneData.CreatePlaySeqData("File1LoopOff");
+            seqFile1FadeOut = Data.sceneData.CreatePlaySeqData("File1FadeOut");
+            seqPosFile1FadeOut = Data.sceneData.CreatePlaySeqData("PosFile1FadeOut");
+            seqFile2 = Data.sceneData.CreatePlaySeqData("File2");
+            seqFile2Loop = Data.sceneData.CreatePlaySeqData("File2Loop");
+            seqFile2LoopOff = Data.sceneData.CreatePlaySeqData("File2LoopOff");
+            seqFile2FadeOut = Data.sceneData.CreatePlaySeqData("File2FadeOut");
+            seqPosFile2FadeOut = Data.sceneData.CreatePlaySeqData("PosFile2FadeOut");
+            seqFile3 = Data.sceneData.CreatePlaySeqData("File3");
+            seqFile3Loop = Data.sceneData.CreatePlaySeqData("File3Loop");
+            seqFile3LoopOff = Data.sceneData.CreatePlaySeqData("File3LoopOff");
+            seqFile3FadeOut = Data.sceneData.CreatePlaySeqData("File3FadeOut");
+            seqPosFile3FadeOut = Data.sceneData.CreatePlaySeqData("PosFile3FadeOut");
+
+            seqDeleteStart = Data.sceneData.CreatePlaySeqData("DelStart");
+            seqDeleteLoop = Data.sceneData.CreatePlaySeqData("DelLoop");
+            seqPosDelete = Data.sceneData.CreatePlaySeqData("PosDelStart");
+
+
+            // Obtains the position from the sequence.
+            //
+            // シーケンスからポジションを取得します。
+            seqPosFile1 = new SequenceGroupData[] {
+                seqPosStart.SequenceData.SequenceGroupList[0],
+                seqPosStart.SequenceData.SequenceGroupList[1],
+                seqPosStart.SequenceData.SequenceGroupList[2],
+                seqPosStart.SequenceData.SequenceGroupList[3],
+                seqPosStart.SequenceData.SequenceGroupList[4],
+            };
+            seqPosFile2 = new SequenceGroupData[] {
+                seqPosStart.SequenceData.SequenceGroupList[5],
+                seqPosStart.SequenceData.SequenceGroupList[6],
+                seqPosStart.SequenceData.SequenceGroupList[7],
+                seqPosStart.SequenceData.SequenceGroupList[8],
+                seqPosStart.SequenceData.SequenceGroupList[9],
+            };
+            seqPosFile3 = new SequenceGroupData[] {
+                seqPosStart.SequenceData.SequenceGroupList[10],
+                seqPosStart.SequenceData.SequenceGroupList[11],
+                seqPosStart.SequenceData.SequenceGroupList[12],
+                seqPosStart.SequenceData.SequenceGroupList[13],
+                seqPosStart.SequenceData.SequenceGroupList[14],
+            };
+        }
+
+
+        /// <summary>
+        /// Sets the navigate for file selection.
+        /// 
+        /// ファイル選択時のナビゲートを設定します。
+        /// </summary>
+        private void InitializeNavigate_Select()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("X_Delete")));
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel")));
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+        }
+
+
+        /// <summary>
+        /// Sets the navigate for file deletion.
+        ///
+        /// ファイル削除時のナビゲートを設定します。
+        /// </summary>
+        private void InitializeNavigate_Delete()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("X_Delete")));
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel")));
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        ///
+        /// 更新処理を行います。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        /// <returns>
+        /// Next menu
+        /// 
+        /// 次のメニュー
+        /// </returns>
+        public override MenuBase UpdateMain(GameTime gameTime)
+        {
+            // Updates the sequence
+            // 
+            // シーケンスの更新処理
+            UpdateSequence(gameTime);
+
+            if (phase == Phase.StorageSelect)
+            {
+                // Performs update at storage selection.
+                // 
+                // ストレージ選択時の更新処理を行います。
+                return UpdateStorageSelect();
+            }
+            else if (phase == Phase.FileSearch)
+            {
+                // Performs update at file search.
+                //
+                // ファイル検索時の更新処理を行います。
+                return UpdateFileSearch();
+            }
+            else if (phase == Phase.Start)
+            {
+                // Sets to selection after start animation finishes.
+                //
+                // 開始アニメーションが終了したら選択処理へ設定します。
+                if (!seqStart.SequenceData.IsPlay)
+                {
+                    phase = Phase.Select;
+                }
+            }
+            else if (phase == Phase.Select)
+            {
+                // Updates at file selection.
+                //
+                // ファイル選択時の更新処理を行います。
+                return UpdateSelect();
+            }
+            else if (phase == Phase.Selected)
+            {
+                // Performs update when file is selected.
+                //
+                // ファイルが選択された時の更新処理を行います。
+                return UpdateSelected();
+            }
+            else if (phase == Phase.DeleteStart)
+            {
+                // Sets to delete selection when delete
+                // window start animation finishes.
+                //
+                // 削除ウィンドウの開始アニメーションが終了したら
+                // 削除選択の処理へ設定します。
+                if (!seqDeleteStart.IsPlay && !seqPosDelete.IsPlay)
+                {
+                    phase = Phase.DeleteSelect;
+                }
+            }
+            else if (phase == Phase.DeleteSelect)
+            {
+                // Performs update at file deletion. 
+                //
+                // ファイル削除時の更新処理を行います。
+                UpdateDeleteSelect();
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update at storage selection.
+        /// 
+        /// ストレージ選択時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateStorageSelect()
+        {
+            // Begins file search after storage has been selected.
+            // 
+            // ストレージ選択が完了したらファイル検索を開始します。
+            if (!GameData.Storage.IsVisible && GameData.Storage.IsConnected)
+            {
+                phase = Phase.FileSearch;
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update at file search.
+        /// 
+        /// ファイル検索時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateFileSearch()
+        {
+            // Starts file search thread.
+            // 
+            // ファイル検索のスレッドを開始します。
+            if (saveFileLoader == null)
+            {
+                InitializeFileSearch();
+            }
+
+            // Starts file selection process after file search has finished.
+            // 
+            // ファイル検索が終了したら、ファイル選択処理を開始します。
+            if (saveFileLoader.GetGameSettings() != null)
+            {
+                saveData = saveFileLoader.GetGameSettings();
+                saveFileLoader = null;
+
+                seqStart.Replay();
+                seqPosStart.Replay();
+
+                phase = Phase.Start;
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// Performs update at file selection.
+        /// 
+        /// ファイル選択時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateSelect()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPush(dPad.Up, leftStick.Up))
+            {
+                // Performs Up key processing.
+                // 
+                // 上キーを押した時の処理を行います。
+                InputUpKey();
+            }
+            else if (InputState.IsPush(dPad.Down, leftStick.Down))
+            {
+                // Performs Down key processing.
+                // 
+                // 下キーを押した時の処理を行います。
+                InputDownKey();
+            }
+            else if (buttons.A[VirtualKeyState.Push])
+            {
+                // Performs Enter key processing.
+                // 
+                // 決定キーを押した時の処理を行います。
+                InputSelectKey();
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Switches to mode selection due to cancel.
+                //
+                // キャンセルされたので、モード選択に遷移します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+                return CreateMenu(Game, MenuType.SelectMode, Data);
+            }
+            else if (buttons.X[VirtualKeyState.Push])
+            {
+                // Performs Delete button processing.
+                // 
+                // 削除ボタンを押した時の処理を行います。
+                return InputDeleteKey();
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update when file is selected.
+        /// 
+        /// ファイルが選択された時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateSelected()
+        {
+            // Processing is not performed until the selected animation has finished.
+            // 
+            // 選択アニメーションが終了するまで処理を行いません。
+            if (!seqFile1FadeOut.IsPlay ||
+                !seqFile2FadeOut.IsPlay ||
+                !seqFile3FadeOut.IsPlay)
+            {
+                // Loads stage information based on number of stages recorded in file. 
+                // 
+                // ファイルに記録されたステージ数を元に、
+                // ステージ情報を読み込みます。
+                int stage = GameData.SaveData.Stage;
+                StageSetting stageSetting = GameData.StageCollection[stage];
+
+                // Registers game window scene.
+                // 
+                // ゲーム画面のシーンを登録します。
+                GameData.SceneQueue.Enqueue(
+                    new Puzzle.PuzzleComponent(Game, stageSetting));
+
+                // Specifies fade-out settings.
+                //
+                // フェードアウトの設定を行います。
+                GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeOut);
+            }
+            
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs Up key processing.
+        /// 
+        /// 上キーを押した時の処理を行います。
+        /// </summary>
+        private void InputUpKey()
+        {
+            // Moves the cursor position.
+            // 
+            // カーソルの位置を移動します。
+            cursor = CursorPrev();
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイします。
+            ReplaySequences(cursor);
+
+            // Plays SoundEffect.
+            // 
+            // SoundEffectを再生
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+
+
+        /// <summary>
+        /// Performs Down key processing.
+        /// 
+        /// 下キーを押した時の処理を行います。
+        /// </summary>
+        private void InputDownKey()
+        {
+            // Moves the cursor position.
+            // 
+            // カーソルの位置を移動します。
+            cursor = CursorNext();
+
+            // Replays the sequence.
+            //
+            // シーケンスをリプレイします。
+            ReplaySequences(cursor);
+
+            // Plays SoundEffect.
+            // 
+            // SoundEffectを再生
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+
+
+        /// <summary>
+        /// Performs Enter key processing.
+        /// 
+        /// 決定キーを押した時の処理を行います。
+        /// </summary>
+        private void InputSelectKey()
+        {
+            // Obtains settings data.
+            // 
+            // 設定データを取得します。
+            SaveData gameSettings = saveData[(int)cursor];
+
+            // Creates a new file if no data exists.
+            // 
+            // データが無い場合はファイルを新規作成します。
+            if (gameSettings == null)
+            {
+                // Sets full path filename.
+                // 
+                // ファイル名をフルパスで設定します。
+                string filename = string.Format("SaveData{0}.xml", cursor);
+                string filePath = GameData.Storage.GetStoragePath(filename);
+
+                // Creates a new file.
+                // 
+                // ファイルを新規作成します。
+                gameSettings = CreateSaveData(filePath);
+            }
+
+            // Calculates the play count. 
+            // 
+            // プレイカウントを加算します。
+            gameSettings.PlayCount++;
+
+            // Sets the save data to be used.
+            // 
+            // 使用するセーブデータを設定します。
+            GameData.SaveData = gameSettings;
+
+            // Replays the sequence.
+            //
+            // シーケンスをリプレイします。
+            seqFile1FadeOut.Replay();
+            seqPosFile1FadeOut.Replay();
+            seqFile2FadeOut.Replay();
+            seqPosFile2FadeOut.Replay();
+            seqFile3FadeOut.Replay();
+            seqPosFile3FadeOut.Replay();
+
+            // Plays the chosen SoundEffect.
+            //
+            // 決定のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+            // Sets the processing status to Selected.
+            //
+            // 処理状態を選択済みに設定します。
+            phase = Phase.Selected;
+        }
+
+        /// <summary>
+        /// Performs update processing at file deletion.
+        /// 
+        /// ファイル削除時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateDeleteSelect()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            if (buttons.X[VirtualKeyState.Push])
+            {
+                // Deletes the file when X button is pressed.
+                // 
+                // Xボタンが押されたら、ファイルの削除処理を実行します。
+                SaveData gameSettings = saveData[(int)cursor];
+
+                // Deletes the file and (where necessary) plays the SoundEffect.  
+                // 
+                // ファイル削除を実行し、結果に応じたSoundEffectを再生します。
+                DeleteSaveData(gameSettings.FileName);
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+                // Sets the processing status to file search.
+                // 
+                // 処理状態をファイル検索に設定します。
+                phase = Phase.FileSearch;
+                visibleDeleteWindow = false;
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Deletes cancelled; cancel tone sounds.
+                //
+                // 削除処理がキャンセルされたので、キャンセル音を再生します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+
+                // Sets processing status to file search.
+                // 
+                // 処理状態をファイル検索に設定します。
+                phase = Phase.FileSearch;
+                visibleDeleteWindow = false;
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs delete button processing.
+        /// 
+        /// 削除ボタンを押したときの処理を行います。
+        /// </summary>
+        private MenuBase InputDeleteKey()
+        {
+            // Obtains settings data.
+            // 
+            // 設定データを取得します。
+            SaveData gameSettings = saveData[(int)cursor];
+
+            // Processing is not performed if there is no data.
+            // 
+            // データが無ければ処理を行いません。
+            if (gameSettings == null)
+            {
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+                return null;
+            }
+
+            // Replays the delete window sequence.
+            // 
+            // 削除ウィンドウのシーケンスをリプレイします。
+            seqDeleteStart.Replay();
+            seqPosDelete.Replay();
+
+            // Sets the delete window visibility to visible.
+            // 
+            // 削除ウィンドウを可視状態に設定します。
+            visibleDeleteWindow = true;
+
+            // Sets the navigate button in delete item.
+            // 
+            // ナビゲートボタンを削除の項目に設定します。
+            InitializeNavigate_Delete();
+
+            // Sets processing status to delete selection.
+            //
+            // 処理状態を削除選択に設定します。
+            phase = Phase.DeleteStart;
+
+            // Plays the chosen SoundEffect.
+            // 
+            // 決定のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            TimeSpan elapsedGameTime = gameTime.ElapsedGameTime;
+
+            seqStart.Update(elapsedGameTime);
+            seqPosStart.Update(elapsedGameTime);
+            seqLoop.Update(elapsedGameTime);
+            seqFile1.Update(elapsedGameTime);
+            seqFile1Loop.Update(elapsedGameTime);
+            seqFile1LoopOff.Update(elapsedGameTime);
+            seqFile1FadeOut.Update(elapsedGameTime);
+            seqPosFile1FadeOut.Update(elapsedGameTime);
+            seqFile2.Update(elapsedGameTime);
+            seqFile2Loop.Update(elapsedGameTime);
+            seqFile2LoopOff.Update(elapsedGameTime);
+            seqFile2FadeOut.Update(elapsedGameTime);
+            seqPosFile2FadeOut.Update(elapsedGameTime);
+            seqFile3.Update(elapsedGameTime);
+            seqFile3Loop.Update(elapsedGameTime);
+            seqFile3LoopOff.Update(elapsedGameTime);
+            seqFile3FadeOut.Update(elapsedGameTime);
+            seqPosFile3FadeOut.Update(elapsedGameTime);
+            seqDeleteStart.Update(elapsedGameTime);
+            seqDeleteLoop.Update(elapsedGameTime);
+            seqPosDelete.Update(elapsedGameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs render processing.
+        ///
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime, SpriteBatch batch)
+        {
+            batch.Begin();
+
+            if (phase == Phase.Start)
+            {
+                // Draws the start animation.
+                // 
+                // 開始アニメーションの描画を行います。
+                DrawPhaseStart(batch);
+            }
+            else if (phase == Phase.Selected)
+            {
+                // Draws the selected animation.
+                // 
+                // 選択後のアニメーションを描画します。
+                DrawPhaseSelected(batch);
+            }
+            else if (phase > Phase.FileSearch)
+            {
+                // Performs rendering except during file search 
+                // and the above process branch.  Also executed 
+                // during file deletion.
+                //
+                // ファイル検索中と、上記の処理分岐以外での描画を行います。
+                // ファイル削除中もこの処理は実行されます。
+                DrawPhaseSelect(gameTime, batch);
+            }
+
+            // Draws the delete window.
+            // 
+            // 削除ウィンドウを描画します。
+            DrawDeleteWindow(gameTime, batch);
+
+            batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the start animation.
+        /// 
+        /// 開始アニメーションの描画を行います。
+        /// </summary>
+        private void DrawPhaseStart(SpriteBatch batch)
+        {
+            seqStart.Draw(batch, null);
+            //SelectFile_DrawString(gameTime, batch);
+            DrawSequenceString(batch, seqPosFile1, 0);
+            DrawSequenceString(batch, seqPosFile2, 1);
+            DrawSequenceString(batch, seqPosFile3, 2);
+        }
+
+
+        /// <summary>
+        /// Performs rendering during file selection.
+        /// 
+        /// ファイル選択中の描画を行います。
+        /// </summary>
+        private void DrawPhaseSelect(GameTime gameTime, SpriteBatch batch)
+        {
+            seqLoop.Draw(batch, null);
+
+            seqFile1.Draw(batch, null);
+            seqFile2.Draw(batch, null);
+            seqFile3.Draw(batch, null);
+
+            // Determines file selection status and performs rendering accordingly.
+            // 
+            // ファイル選択中の状態を判別して描画します。
+            SequencePlayData seqPlayData;
+            CursorPosition file;
+
+            file = CursorPosition.File1;
+            seqPlayData = (cursor == file) ? seqFile1Loop : seqFile1LoopOff;
+            seqPlayData.Draw(batch, null);
+
+            file = CursorPosition.File2;
+            seqPlayData = (cursor == file) ? seqFile2Loop : seqFile2LoopOff;
+            seqPlayData.Draw(batch, null);
+
+            file = CursorPosition.File3;
+            seqPlayData = (cursor == file) ? seqFile3Loop : seqFile3LoopOff;
+            seqPlayData.Draw(batch, null);
+
+            // Draws file text strings.
+            //
+            // ファイルの内容の文字列を描画します。
+            DrawSequenceString(batch, seqPosFile1, 0);
+            DrawSequenceString(batch, seqPosFile2, 1);
+            DrawSequenceString(batch, seqPosFile3, 2);
+
+            // Draws the navigate button when the delete window is not displayed.
+            // 
+            // 削除ウィンドウが非表示の場合はナビゲートボタンを描画します。
+            if (!visibleDeleteWindow)
+            {
+                DrawNavigate(gameTime, batch, false);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the selected animation.
+        /// 
+        /// 選択後のアニメーションを描画します。
+        /// </summary>
+        private void DrawPhaseSelected(SpriteBatch batch)
+        {
+            seqLoop.Draw(batch, null);
+
+            seqFile1FadeOut.Draw(batch, null);
+            seqFile2FadeOut.Draw(batch, null);
+            seqFile3FadeOut.Draw(batch, null);
+
+            // Draws the window text string.
+            // 
+            // ウィンドウの文字列を描画します。
+            SequencePlayData[] sequences = new SequencePlayData[] {
+                seqPosFile1FadeOut,
+                seqPosFile2FadeOut,
+                seqPosFile3FadeOut
+            };
+
+            for (int i = 0; i < sequences.Length; i++)
+            {
+                SequencePlayData sequence = sequences[i];
+                
+                SequenceGroupData[] sequenceGroups;
+                sequenceGroups = sequence.SequenceData.SequenceGroupList.ToArray();
+                DrawSequenceString(batch, sequenceGroups, i);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the delete window.
+        /// 
+        /// 削除ウィンドウを描画します。
+        /// </summary>
+        private void DrawDeleteWindow(GameTime gameTime, SpriteBatch batch)
+        {
+            // Processing is not performed when the delete window is invisible.
+            // 
+            // 削除ウィンドウの可視状態が不可視の場合は処理をしません。
+            if (!visibleDeleteWindow)
+            {
+                return;
+            }
+
+            if (phase == Phase.DeleteStart)
+            {
+                // Draws the delete window start animation. 
+                // 
+                // 削除ウィンドウの開始アニメーションを描画します。
+                seqDeleteStart.Draw(batch, null);
+
+                SequenceGroupData[] sequenceGroups;
+                sequenceGroups = seqPosDelete.SequenceData.SequenceGroupList.ToArray();
+                DrawSequenceString(batch, sequenceGroups, (int)cursor);
+            }
+            else if (phase == Phase.DeleteSelect)
+            {
+                seqDeleteLoop.Draw(batch, null);
+
+                SequenceGroupData[] sequenceGroups;
+                sequenceGroups = seqPosDelete.SequenceData.SequenceGroupList.ToArray();
+                DrawSequenceString(batch, sequenceGroups, (int)cursor);
+
+                // Draws the navigate button.
+                // 
+                // ナビゲートボタンの描画を行います。
+                DrawNavigate(gameTime, batch, false);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the window text string.
+        /// 
+        /// ウィンドウの文字列を描画します。
+        /// </summary>
+        private void DrawSequenceString(SpriteBatch batch, 
+            SequenceGroupData[] seqBodyDataList, int fileId)
+        {
+            // Processing is not performed if there is no settings data.
+            // 
+            // 設定データが無い場合は処理を行いません。
+            if (saveData == null)
+            {
+                return;
+            }
+
+            for (int i = 0; i < seqBodyDataList.Length; i++)
+            {
+                SaveData gameSettings = saveData[fileId];
+                SequenceGroupData seqBodyData = seqBodyDataList[i];
+                SequenceObjectData seqPartsData = seqBodyData.CurrentObjectList;
+                if (seqPartsData == null)
+                {
+                    continue;
+                }
+
+                List<PatternObjectData> list = seqPartsData.PatternObjectList;
+                foreach (PatternObjectData patPartsData in list)
+                {
+                    DrawData info = patPartsData.InterpolationDrawData;
+                    int posType = i % 5;
+
+                    if (posType == 0)
+                    {
+                        // Draws the file header text string.
+                        // 
+                        // ファイルヘッダの文字列を描画します。
+                        if (!DrawFileHeader(batch, info, gameSettings, fileId))
+                        {
+                            // Processing omitted for new items with no data.
+                            // 
+                            // データが無く、新規の項目ならば処理を抜けます。
+                            return;
+                        }
+                    }
+                    else if (posType == 1)
+                    {
+                        // Draws the Best Time header.
+                        // 
+                        // ベストタイムのヘッダを描画します。
+                        DrawBestTimeHeader(batch, info);
+                    }
+                    else if (posType == 2)
+                    {
+                        // Draws the Best Score header.
+                        //
+                        // ベストスコアのヘッダを描画します。
+                        DrawBestScoreHeader(batch, info);
+                    }
+                    else if (posType == 3)
+                    {
+                        // Draws the Best Time value.
+                        //
+                        // ベストタイムの値を描画します。
+                        DrawBestTimeValue(batch, info, gameSettings);
+                    }
+                    else if (posType == 4)
+                    {
+                        // Draws the Best Score value.
+                        //
+                        // ベストスコアの値を描画します。
+                        DrawBestScoreValue(batch, info, gameSettings);
+                    }
+                }
+            }
+
+        }
+
+
+        /// <summary>
+        /// Draws the file header text string.
+        /// 
+        /// ファイルヘッダの文字列を描画します。
+        /// </summary>
+        private bool DrawFileHeader(SpriteBatch batch, DrawData info, 
+            SaveData gameSettings, int fileId)
+        {
+            SpriteFont font = LargeFont;
+            Vector2 position = new Vector2(info.Position.X, info.Position.Y);
+            string text = GetFileHeaderString(gameSettings, fileId);
+            position -= font.MeasureString(text) * 0.5f;
+            batch.DrawString(font, text, position, info.Color);
+
+            return (gameSettings != null);
+        }
+
+
+        /// <summary>
+        /// Draws the Best Time header.
+        /// 
+        /// ベストタイムのヘッダを描画します。
+        /// </summary>
+        private void DrawBestTimeHeader(SpriteBatch batch, DrawData info)
+        {
+            SpriteFont font = MediumFont;
+            Vector2 position = new Vector2(info.Position.X, info.Position.Y);
+            string text = "Best Time";
+            batch.DrawString(font, text, position, info.Color);
+        }
+
+
+        /// <summary>
+        /// Draws the Best Time value.
+        ///
+        /// ベストタイムの値を描画します。
+        /// </summary>
+        private void DrawBestTimeValue(
+            SpriteBatch batch, DrawData info, SaveData gameSettings)
+        {
+            SpriteFont font = MediumFont;
+            Vector2 position = new Vector2(info.Position.X, info.Position.Y);
+            string timeText = gameSettings.BestTime == TimeSpan.Zero ? "None" : 
+                gameSettings.BestTime.ToString().Substring(0, 8);
+            position.X -= font.MeasureString(timeText).X;
+            batch.DrawString(font, timeText, position, info.Color);
+        }
+
+
+        /// <summary>
+        /// Draws the Best Score header.
+        ///
+        /// ベストスコアのヘッダを描画します。
+        /// </summary>
+        private void DrawBestScoreHeader(SpriteBatch batch, DrawData info)
+        {
+            SpriteFont font = MediumFont;
+            Vector2 position = new Vector2(info.Position.X, info.Position.Y);
+            string value = "Best Score";
+            batch.DrawString(font, value, position, info.Color);
+        }
+
+
+        /// <summary>
+        /// Draws the Best Score value.
+        ///
+        /// ベストスコアの値を描画します。
+        /// </summary>
+        private void DrawBestScoreValue(SpriteBatch batch, DrawData info, 
+            SaveData gameSettings)
+        {
+            SpriteFont font = MediumFont;
+            Vector2 position = new Vector2(info.Position.X, info.Position.Y);
+            string value =
+                string.Format("{0:000000}", gameSettings.BestScore);
+            position.X -= font.MeasureString(value).X;
+            batch.DrawString(font, value, position, info.Color);
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Creates a new save file and returns the instance.
+        /// 
+        /// セーブファイルを新規作成し、インスタンスを返します。
+        /// </summary>
+        private static SaveData CreateSaveData(string filename)
+        {
+            // Sets the full path for the file.
+            // 
+            // ファイルのフルパスを設定します。
+            string filePath = GameData.Storage.GetStoragePath(filename);
+
+            // Creates the save file instance and set the file name.
+            //
+            // セーブファイルのインスタンスを作成し、ファイル名を設定します。
+            SaveData setting = new SaveData();
+            setting.FileName = filename;
+
+            // Serializes and saves the save data.
+            // 
+            // セーブデータをシリアライズして保存します。
+            SettingsSerializer.SaveSaveData(filePath, setting);
+
+            return setting;
+        }
+
+
+        /// <summary>
+        /// Deletes the file.
+        /// 
+        /// ファイルを削除します。
+        /// </summary>
+        private static void DeleteSaveData(string filename)
+        {
+            // Checks for the file; if the file is not found, 
+            // processing is not performed.
+            // 
+            // ファイルの有無をチェックし、無ければ処理を行いません。
+            if (!File.Exists(filename))
+            {
+                return;
+            }
+
+            // If the file to be deleted can be found, the processing is performed.
+            //
+            // 削除対象のファイルが見つかれば削除処理を行います。
+            File.Delete(filename);
+        }
+
+
+        /// <summary>
+        /// Obtains the previous cursor position.
+        /// 
+        /// カーソルの前の位置を取得します。
+        /// </summary>
+        private CursorPosition CursorPrev()
+        {
+            int count = (int)CursorPosition.Count;
+            return (CursorPosition)(((int)cursor + (count - 1)) % count);
+        }
+
+        /// <summary>
+        /// Obtains the next cursor position.
+        /// 
+        /// カーソルの次の位置を取得します。
+        /// </summary>
+        private CursorPosition CursorNext()
+        {
+            int count = (int)CursorPosition.Count;
+            return (CursorPosition)(((int)cursor + 1) % count);
+        }
+
+
+        /// <summary>
+        /// Replays the file item sequence.
+        ///
+        /// ファイル項目のシーケンスをリプレイします。
+        /// </summary>
+        private void ReplaySequences(CursorPosition cursorPosition)
+        {
+            ReplaySequences((int)cursorPosition);
+        }
+
+
+        /// <summary>
+        /// Replays the file item sequence.
+        /// 
+        /// ファイル項目のシーケンスをリプレイします。
+        /// </summary>
+        private void ReplaySequences(int id)
+        {
+            // Sets the sequence array to be replayed.
+            // 
+            // リプレイするシーケンスの配列をセット
+            SequencePlayData[] seqFiles = { seqFile1, seqFile2, seqFile3 };
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイする
+            seqFiles[id].Replay();
+        }
+
+
+        /// <summary>
+        /// Obtains the file header text string.
+        /// 
+        /// ファイルヘッダの文字列を取得します。
+        /// </summary>
+        private static string GetFileHeaderString(SaveData gameSettings, int fileId)
+        {
+            string text = String.Empty;
+            if (gameSettings == null)
+            {
+                text = "New";
+            }
+            else
+            {
+                string format = "File[{0}] Stage {1}";
+                int stage = gameSettings.Stage + 1;
+                text = string.Format(format, fileId, stage);
+            }
+
+            return text;
+        }
+        #endregion
+    }
+}

+ 559 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/SelectMode.cs

@@ -0,0 +1,559 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SelectMode.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Menu item for processing mode selection.
+    /// It inherits MenuBase and expands menu compilation.
+    /// This class implements menu mode selection, provides sequence control
+    /// and moves the model used as the cursor. 
+    /// 
+    /// モード選択を処理するメニュー項目です。
+    /// MenuBaseを継承し、メニューを構成する処理を拡張しています。
+    /// このクラスはメニューのモード選択を実装し、シーケンスの制御と
+    /// カーソルに使用しているモデルの移動を行っています。
+    /// </summary>
+    public class SelectMode : MenuBase
+    {
+        #region Private Types
+        /// <summary>
+        /// Processing status
+        /// 
+        /// 処理状態
+        /// </summary>
+        private enum Phase
+        {
+            /// <summary>
+            /// Start
+            /// 
+            /// 開始演出
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// Normal processing
+            /// 
+            /// 通常処理
+            /// </summary>
+            Select,
+
+            /// <summary>
+            /// Selected
+            ///
+            /// 選択演出
+            /// </summary>
+            Selected,
+        }
+
+
+        /// <summary>
+        /// Cursor position
+        /// 
+        /// カーソル位置
+        /// </summary>
+        private enum CursorPosition
+        {
+            /// <summary>
+            /// Normal mode
+            /// 
+            /// ノーマルモード
+            /// </summary>
+            Normal,
+
+            /// <summary>
+            /// Free mode
+            ///
+            /// フリーモード
+            /// </summary>
+            Free,
+
+            /// <summary>
+            /// Count
+            ///
+            /// カウント用
+            /// </summary>
+            Count
+        }
+        #endregion
+
+        #region Fields
+        /// <summary>
+        /// Cursor sphere position
+        /// 
+        /// カーソルの球体の位置
+        /// </summary>
+        private readonly Vector3[] SpherePositions;
+
+        // Cursor position
+        // 
+        // カーソル位置
+        private CursorPosition cursor;
+
+        // Processing status
+        // 
+        // 処理状態
+        private Phase phase;
+
+        // Sequence
+        //
+        // シーケンス
+        private SequencePlayData seqStart;
+        private SequencePlayData seqBg;
+        private SequencePlayData seqNormal;
+        private SequencePlayData seqNormalLoop;
+        private SequencePlayData seqNormalSelect;
+        private SequencePlayData seqFree;
+        private SequencePlayData seqFreeLoop;
+        private SequencePlayData seqFreeSelect;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SelectMode(Game game, MenuData data)
+            : base(game, data)
+        {
+            // Sets the cursor position.
+            // 
+            // カーソルの位置を設定します。
+            SpherePositions = new Vector3[] {
+                new Vector3(0, -4.56056f, 0),
+                new Vector3(0, -24.94905f, 0)
+            };
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the sphere models.
+            // 
+            // 球体モデルの初期設定をします。
+            Data.Spheres[1][0].Position = SpherePositions[0];
+            Data.Spheres[1][0].Rotate = new Vector3();
+            Data.Spheres[1][0].Alpha = 0.0f;
+            Data.Spheres[1][0].Scale = Data.CursorSphereSize;
+
+            // Initializes the sequence.
+            // 
+            // シーケンスを初期化します。
+            InitializeSequence();
+
+            // Sets the initial cursor position.
+            // 
+            // カーソルの初期位置を設定します。
+            cursor = CursorPosition.Normal;
+
+            // Initializes the processing status.
+            // 
+            // 処理状態の初期設定をします。
+            phase = Phase.Start;
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel"), false));
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+        }
+
+
+        /// <summary>
+        /// Initializes the sequence.
+        /// 
+        /// シーケンスの初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            seqStart = Data.sceneData.CreatePlaySeqData("ModeStart");
+            seqBg = Data.sceneData.CreatePlaySeqData("ModeLoop");
+            seqNormal = Data.sceneData.CreatePlaySeqData("ModeNormal");
+            seqNormalLoop = Data.sceneData.CreatePlaySeqData("ModeNormalLoop");
+            seqNormalSelect = Data.sceneData.CreatePlaySeqData("ModeNormalSelect");
+            seqFree = Data.sceneData.CreatePlaySeqData("ModeFree");
+            seqFreeLoop = Data.sceneData.CreatePlaySeqData("ModeFreeLoop");
+            seqFreeSelect = Data.sceneData.CreatePlaySeqData("ModeFreeSelect");
+
+            // Plays the sequence from the start.
+            // 
+            // シーケンスをはじめから再生します。
+            seqStart.Replay();
+            seqStart.Update(new TimeSpan());
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override MenuBase UpdateMain(GameTime gameTime)
+        {
+            // Processing is not performed if initialization is incomplete.
+            // 
+            // 初期化が未完了の場合は処理を行いません。
+            if (!Initialized)
+                return null;
+
+            // Updates the sequence.
+            // 
+            // シーケンスの更新処理を行います。
+            UpdateSequence(gameTime);
+
+            // Updates the sphere models.
+            // 
+            // 球体モデルの更新処理を行います。
+            UpdateModels();
+
+            if (phase == Phase.Start)
+            {
+                // Changes to selection after start animation finishes.
+                // 
+                // 開始アニメーションが終了したら選択処理に変更します。
+                if (!seqStart.SequenceData.IsPlay)
+                {
+                    phase = Phase.Select;
+                }
+            }
+            else if (phase == Phase.Select)
+            {
+                // Updates at selection.
+                //
+                // 選択時の更新処理を行います。
+                UpdateSelect(gameTime);
+            }
+            else if (phase == Phase.Selected)
+            {
+                // Updates when selection ends.
+                //
+                // 選択終了時の更新処理を行います。
+                return UpdateSelected();
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Updates at selection.
+        /// 
+        /// 選択時の更新処理を行います。
+        /// </summary>
+        private void UpdateSelect(GameTime gameTime)
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPush(dPad.Up, leftStick.Up, dPad.Down, leftStick.Down))
+            {
+                // Moves the cursor.
+                // Use common processing since there are only two items.
+                // 
+                // カーソルを移動します。
+                // 項目が2つしか無いので共通の処理を使用します。
+                cursor = CursorMove();
+
+                // Plays the SoundEffect.
+                // 
+                // SoundEffectを再生します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                // Replays the selected cursor sequence.
+                //
+                // 選択されているカーソルのシーケンスをリプレイします。
+                ReplaySequence(gameTime);
+            }
+            else if (buttons.A[VirtualKeyState.Push])
+            {
+                // Enter key pressed; process changes.
+                //
+                // 決定キーが押されたので、処理を変更します。
+                phase = Phase.Selected;
+
+                // Plays the SoundEffect.
+                // 
+                // SoundEffectを再生します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+                // Sets game mode and replays the selected item sequence.
+                //
+                // ゲームモードを設定し、選択された項目のシーケンスをリプレイします。
+                if (cursor == CursorPosition.Normal)
+                {
+                    Data.StageSetting.Mode = StageSetting.ModeList.Normal;
+
+                    seqNormalSelect.Replay();
+                    seqNormalSelect.Update(gameTime.ElapsedGameTime);
+                }
+                else if (cursor == CursorPosition.Free)
+                {
+                    Data.StageSetting.Mode = StageSetting.ModeList.Free;
+
+                    seqFreeSelect.Replay();
+                    seqFreeSelect.Update(gameTime.ElapsedGameTime);
+                }
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Cancel button pressed; return to title.
+                // 
+                // キャンセルボタンが押されたので、タイトルに戻ります。
+                GameComponent next = new Movipa.Components.Scene.Title(Game);
+                GameData.SceneQueue.Enqueue(next);
+                GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeOut);
+            }
+        }
+
+
+        /// <summary>
+        /// Updates when selection ends.
+        /// 
+        /// 選択終了時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateSelected()
+        {
+            if (cursor == CursorPosition.Normal)
+            {
+                // Switches to the file selection menu when normal mode is 
+                // selected by the cursor and the selected animation has finished.
+                // 
+                // カーソルがノーマルモードを選択していて、選択アニメーションが
+                // 終了したら、ファイル選択のメニューに遷移します。
+                if (!seqNormalSelect.SequenceData.IsPlay)
+                {
+                    return CreateMenu(Game, MenuType.SelectFile, Data);
+                }
+            }
+            else if (cursor == CursorPosition.Free)
+            {
+                // Switches to the style selection menu when free mode is 
+                // selected by the cursor and the selected animation has finished.
+                // 
+                // カーソルがフリーモードを選択していて、選択アニメーションが
+                // 終了したら、スタイル選択のメニューに遷移します。
+                if (!seqFreeSelect.SequenceData.IsPlay)
+                {
+                    return CreateMenu(Game, MenuType.SelectStyle, Data);
+                }
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            TimeSpan elapsedGameTime = gameTime.ElapsedGameTime;
+
+            seqStart.Update(elapsedGameTime);
+            seqBg.Update(elapsedGameTime);
+            seqNormal.Update(elapsedGameTime);
+            seqNormalLoop.Update(elapsedGameTime);
+            seqNormalSelect.Update(elapsedGameTime);
+            seqFree.Update(elapsedGameTime);
+            seqFreeLoop.Update(elapsedGameTime);
+            seqFreeSelect.Update(elapsedGameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the model.
+        /// 
+        /// モデルの更新処理を行います。
+        /// </summary>
+        private void UpdateModels()
+        {
+            // Moves the position to the cursor location. 
+            // 
+            // カーソル位置へポジションを移動します。
+            Vector3 position = Data.Spheres[1][0].Position;
+            if (cursor == CursorPosition.Normal)
+            {
+                position += (SpherePositions[0] - position) * 0.2f;
+            }
+            else if (cursor == CursorPosition.Free)
+            {
+                position += (SpherePositions[1] - position) * 0.2f;
+            }
+            Data.Spheres[1][0].Position = position;
+
+            // Modifies the transparency and scale settings. 
+            // 
+            // 透明度とスケールの変更をします。
+            float alpha = Data.Spheres[1][0].Alpha;
+            float fadeSpeed = Data.CursorSphereFadeSpeed;
+            if (phase != Phase.Selected)
+            {
+                alpha = MathHelper.Clamp(alpha + fadeSpeed, 0.0f, 1.0f);
+            }
+            else
+            {
+                // Performs fade-out with zoom when item is selected. 
+                // 
+                // 項目が決定されるとズームしながらフェードアウトします。
+                alpha = MathHelper.Clamp(alpha - fadeSpeed, 0.0f, 1.0f);
+                Data.Spheres[1][0].Scale += Data.CursorSphereZoomSpeed;
+            }
+            Data.Spheres[1][0].Alpha = alpha;
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs render processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime, SpriteBatch batch)
+        {
+            // Draws the model. 
+            // 
+            // モデルの描画を行います。
+            DrawModels(batch);
+
+            batch.Begin();
+            if (phase == Phase.Start)
+            {
+                seqStart.Draw(batch, null);
+            }
+            else if (phase == Phase.Select)
+            {
+                // Draws menu name and other sequences.
+                // 
+                // メニュー名などのシーケンスを描画します。
+                seqBg.Draw(batch, null);
+
+                // Draws the item sequence.
+                // 
+                // 項目のシーケンスを描画します。
+                if (cursor == CursorPosition.Normal)
+                {
+                    seqNormalLoop.Draw(batch, null);
+                }
+                else if (cursor == CursorPosition.Free)
+                {
+                    seqFreeLoop.Draw(batch, null);
+                }
+                seqNormal.Draw(batch, null);
+                seqFree.Draw(batch, null);
+
+                // Draws the navigate button.
+                // 
+                // ナビゲートボタンを描画します。
+                DrawNavigate(gameTime, batch, false);
+            }
+            else if (phase == Phase.Selected)
+            {
+                // Draws menu name and other sequences.
+                // 
+                // メニュー名などのシーケンスを描画します。
+                seqBg.Draw(batch, null);
+
+                // Draws the item animation.
+                // 
+                // 項目の決定アニメーションを描画します。
+                if (cursor == CursorPosition.Normal)
+                {
+                    seqNormalSelect.Draw(batch, null);
+                }
+                else if (cursor == CursorPosition.Free)
+                {
+                    seqFreeSelect.Draw(batch, null);
+                }
+            }
+
+            batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the model.
+        /// 
+        /// モデルの描画を行います。
+        /// </summary>
+        private void DrawModels(SpriteBatch batch)
+        {
+            GraphicsDevice graphicsDevice = batch.GraphicsDevice;
+            Matrix view;
+            view = Matrix.CreateLookAt(Data.CameraPosition, Vector3.Zero, Vector3.Up);
+            Data.Spheres[1][0].SetRenderState(graphicsDevice, SpriteBlendMode.Additive);
+            Data.Spheres[1][0].Draw(view, GameData.Projection);
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Returns to the next cursor position.
+        /// 
+        /// カーソルの次の位置を返します。
+        /// </summary>
+        private CursorPosition CursorMove()
+        {
+            return (CursorPosition)(((int)cursor + 1) % (int)CursorPosition.Count);
+        }
+
+
+        /// <summary>
+        /// Replays the selected cursor sequence.
+        /// 
+        /// 選択されているカーソルのシーケンスをリプレイします。
+        /// </summary>
+        private void ReplaySequence(GameTime gameTime)
+        {
+            if (cursor == CursorPosition.Normal)
+            {
+                seqNormal.Replay();
+                seqNormal.Update(gameTime.ElapsedGameTime);
+            }
+            else if (cursor == CursorPosition.Free)
+            {
+                seqFree.Replay();
+                seqFree.Update(gameTime.ElapsedGameTime);
+            }
+        }
+        #endregion
+    }
+}

+ 931 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/SelectMovie.cs

@@ -0,0 +1,931 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SelectMovie.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Menu item for processing movie selection.
+    /// It inherits MenuBase and expands menu compilation processing.
+    /// This class uses threads for asynchronous loading of movies and for 
+    /// loading of thumbnail images. A loading status icon is displayed 
+    /// during asynchronous movie loading.
+    /// 
+    /// ムービー選択を処理するメニュー項目です。
+    /// MenuBaseを継承し、メニューを構成する処理を拡張しています。
+    /// このクラスは、スレッドを使用して非同期でムービーの読み込みと、
+    /// サムネイル画像の読み込みを行っています。
+    /// 非同期でムービーを読み込んでいる時は、その状態を示すアイコンを
+    /// 描画しています。
+    /// </summary>
+    public class SelectMovie : MenuBase
+    {
+        #region Private Types
+        /// <summary>
+        /// Processing status
+        /// 
+        /// 処理状態
+        /// </summary>
+        private enum Phase
+        {
+            /// <summary>
+            /// Initialization
+            /// 
+            /// 初期化
+            /// </summary>
+            Loading,
+
+            /// <summary>
+            /// Start
+            ///
+            /// 開始演出
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// Select
+            ///
+            /// 選択
+            /// </summary>
+            Select,
+
+            /// <summary>
+            /// Selected
+            ///
+            /// 選択演出
+            /// </summary>
+            Selected,
+        }
+        #endregion
+
+        #region Fields
+        // Thumbnail size
+        // 
+        // サムネイルのサイズ
+        private readonly Vector2 ThumbnailSize;
+
+        // Number of panels displaying thumbnails
+        // 
+        // サムネイルを表示するパネル数
+        private const int ThumbnailPanel = 7;
+
+        // Movie draw position
+        // 
+        // ムービーを描画する位置
+        private readonly Vector2 PositionThumbnail;
+        private readonly Rectangle MoviePreviewRect;
+
+        // Processing details
+        //
+        // 処理内容
+        private Phase phase;
+
+        // Cursor position
+        //
+        // カーソル位置
+        private int cursor;
+
+        // Sequence
+        //
+        // シーケンス
+        private SequencePlayData seqStart;
+        private SequencePlayData seqLoop;
+        private SequencePlayData seqMovieWindow;
+        private SequencePlayData seqMovieSelect;
+        private SequencePlayData seqLeft;
+        private SequencePlayData seqRight;
+        private SequencePlayData seqLoading;
+        private SequencePlayData seqPosMovieTitle;
+        private SequencePlayData seqPosMovieCount;
+
+        // Thumbnail texture list
+        // 
+        // サムネイルのテクスチャリスト
+        private List<Texture2D> thumbTextures;
+
+        // Thumbnail sprite list 
+        //
+        // サムネイルのスプライトリスト
+        private List<ThumbnailSprite> thumbSprite;
+
+        // CPU core for load processing
+        //
+        // 読み込み処理をさせるCPUコア
+        private int cpuId;
+
+        // Thumbnail loading class
+        // 
+        // サムネイルを読み込むクラス
+        private ThumbnailLoader thumbLoader;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SelectMovie(Game game, MenuData data)
+            : base(game, data)
+        {
+            // Loads the position.
+            // 
+            // ポジションを読み込みます。
+            PatternGroupData patternGroup = 
+                data.sceneData.PatternGroupDictionary["Pos_PosMovie"];
+            Point point;
+            point = patternGroup.PatternObjectList[0].Position;
+            MoviePreviewRect = new Rectangle(point.X, point.Y, 640, 360);
+
+            point = patternGroup.PatternObjectList[1].Position;
+            PositionThumbnail = new Vector2(point.X, point.Y);
+
+            // Sets the thumbnail size.
+            //
+            // サムネイルのサイズを設定します。
+            ThumbnailSize = new Vector2(256.0f, 144.0f);
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化の処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the processing status.
+            // 
+            // 処理状態の初期設定をします。
+            phase = Phase.Loading;
+
+            // Initializes the sequence.
+            //
+            // シーケンスの初期化を行います。
+            InitializeSequence();
+
+            // Creates a thumbnail list for loading.
+            // 
+            // 読み込むサムネイルのリストを作成します。
+            thumbTextures = new List<Texture2D>();
+            List<string> thumbAssetList = new List<string>();
+            foreach (string infoPath in GameData.MovieList)
+            {
+                // Obtains the path to Info, then replaces the asset name 
+                // with the Thumbnail and adds it to the list.
+                //
+                // Infoまでのパスを取得し、アセット名をThumbnailに
+                // 置き換えてリストに追加します。
+                int length = infoPath.LastIndexOf("/");
+                string path = infoPath.Substring(0, length);
+                string asset = path + "/Thumbnail";
+                thumbAssetList.Add(asset);
+            }
+
+            // Begins asynchronous thumbnail loading.
+            // 
+            // サムネイルの非同期読み込みを開始します。
+            thumbLoader = new ThumbnailLoader(Game, 3, thumbAssetList.ToArray());
+            thumbLoader.Run();
+
+            // Creates thumbnail sprite.
+            //
+            // サムネイルのスプライトを作成します。
+            thumbSprite = new List<ThumbnailSprite>();
+            for (int i = 0; i < ThumbnailPanel; i++)
+            {
+                ThumbnailSprite sprite = new ThumbnailSprite(Game);
+
+                sprite.Id = i;
+                sprite.Position = PositionThumbnail;
+
+                Vector2 target = PositionThumbnail;
+                target.X += ThumbnailSize.X * (i - (ThumbnailPanel >> 1));
+                sprite.TargetPosition = target;
+
+                // Coordinate correction 
+                // 
+                // 座標補正
+                sprite.Position -= ThumbnailSize * 0.5f;
+                sprite.TargetPosition -= ThumbnailSize * 0.5f;
+
+                // Sets initial texture.
+                // 
+                // 初期テクスチャの設定
+                int textureId = cursor + i;
+                textureId += GameData.MovieList.Count - (ThumbnailPanel >> 1);
+                textureId %= GameData.MovieList.Count;
+                sprite.TextureId = textureId;
+
+                thumbSprite.Add(sprite);
+            }
+
+            // Starts movie loading.
+            // 
+            // ムービーの読み込み処理を開始します。
+            SetMovie(false);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel"), false));
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+        }
+
+
+        /// <summary>
+        /// Initializes the sequence.
+        /// 
+        /// シーケンスの初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            seqStart = Data.sceneData.CreatePlaySeqData("MovieStart");
+            seqLoop = Data.sceneData.CreatePlaySeqData("MovieLoop");
+            seqMovieWindow = Data.sceneData.CreatePlaySeqData("MovieWindow");
+            seqMovieSelect = Data.sceneData.CreatePlaySeqData("MovieSelect");
+            seqLeft = Data.sceneData.CreatePlaySeqData("Left");
+            seqRight = Data.sceneData.CreatePlaySeqData("Right");
+            seqPosMovieTitle = Data.sceneData.CreatePlaySeqData("PosMovieTitle");
+            seqPosMovieCount = Data.sceneData.CreatePlaySeqData("PosMovieCount");
+            seqLoading = Data.sceneData.CreatePlaySeqData("Loading");
+
+            seqStart.Replay();
+            seqPosMovieTitle.Replay();
+            seqPosMovieCount.Replay();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override MenuBase UpdateMain(GameTime gameTime)
+        {
+            // Updates the sequence.
+            // 
+            // シーケンスの更新
+            UpdateSequence(gameTime);
+
+            if (phase == Phase.Loading)
+            {
+                // Performs update during loading.
+                // 
+                // 読み込み中の更新処理を行います。
+                return UpdateLoading();
+            }
+            else if (phase == Phase.Start)
+            {
+                // Waits until start animation has finished.
+                // 
+                // 開始アニメーションが終了するまで待機
+                if (!seqStart.SequenceData.IsPlay)
+                {
+                    // To movie selection
+                    // 
+                    // ムービー選択処理へ
+                    phase = Phase.Select;
+                }
+            }
+            else if (phase == Phase.Select)
+            {
+                // Performs update during selection.
+                // 
+                // 選択中の更新処理を行います。
+                return UpdateSelect();
+            }
+            else if (phase == Phase.Selected)
+            {
+                // Waits until selected animation has finished.
+                // 
+                // 選択アニメーションが終了するまで待機
+                if (!seqMovieSelect.SequenceData.IsPlay)
+                {
+                    // To division setting
+                    // 
+                    // 分割数設定へ
+                    return CreateMenu(Game, MenuType.SelectDivide, Data);
+                }
+            }
+
+
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update during loading.
+        /// 
+        /// 読み込み中の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateLoading()
+        {
+            // Waits until thumbnail and movie loading has finished.
+            // 
+            // サムネイルとムービーの読み込み処理が終了するまで待機します。
+            if (thumbTextures == null || !thumbLoader.Initialized)
+                return null;
+
+            // Obtains the texture list.
+            //
+            // テクスチャリストを取得します。
+            thumbTextures = thumbLoader.Textures;
+
+            // Sets the texture for the thumbnail sprite.
+            //
+            // サムネイルのスプライトにテクスチャをセットします。
+            SetThumbnailTexture();
+
+            // Replays the sequence animation.
+            //
+            // シーケンスのアニメーションをリプレイします。
+            seqStart.Replay();
+
+            // Sets the processing status to the start animation.
+            //
+            // 処理状態を開始アニメーションに設定します。
+            phase = Phase.Start;
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update during selection.
+        /// 
+        /// 選択中の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateSelect()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (buttons.A[VirtualKeyState.Push])
+            {
+                // Performs Enter key processing.
+                // 
+                // 決定キーが押されたときの処理を行います。
+                InputSelectKey();
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+                return CreateMenu(Game, MenuType.SelectStyle, Data);
+            }
+            else if (InputState.IsPush(dPad.Left, leftStick.Left))
+            {
+                InputLeftKey();
+            }
+            else if (InputState.IsPush(dPad.Right, leftStick.Right))
+            {
+                InputRightKey();
+            }
+            
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs Enter key processing.
+        /// 
+        /// 決定キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputSelectKey()
+        {
+            Data.StageSetting.Movie = GameData.MovieList[cursor];
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+            seqMovieSelect.Replay();
+            phase = Phase.Selected;
+        }
+
+
+        /// <summary>
+        /// Performs Left key processing.
+        /// 
+        /// 左キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputLeftKey()
+        {
+            // Sets the previous cursor position.
+            // 
+            // 前のカーソル位置に設定します。
+            cursor = CursorPrev();
+
+            // Sets the thumbnail.
+            //
+            // サムネイルを設定します。
+            SetPreviousThumbnail();
+
+            // Plays the cursor movement SoundEffect.
+            //
+            // カーソル移動のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイします。
+            seqLeft.Replay();
+        }
+
+
+        /// <summary>
+        /// Performs Right key processing.
+        /// 
+        /// 右キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputRightKey()
+        {
+            // Sets the next cursor position.
+            // 
+            // 次のカーソル位置に設定します。
+            cursor = CursorNext();
+
+            // Sets the thumbnail.
+            // 
+            // サムネイルを設定します。
+            SetNextThumbnail();
+
+            // Places the cursor movement SoundEffect.
+            // 
+            // カーソル移動のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイします。
+            seqRight.Replay();
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            // Updates the sequence except during loading.
+            // 
+            // 読み込み中以外の場面で、シーケンスを更新します。
+            if (phase != Phase.Loading)
+            {
+                seqStart.Update(gameTime.ElapsedGameTime);
+                seqLoop.Update(gameTime.ElapsedGameTime);
+                seqMovieWindow.Update(gameTime.ElapsedGameTime);
+                seqMovieSelect.Update(gameTime.ElapsedGameTime);
+                seqLeft.Update(gameTime.ElapsedGameTime);
+                seqRight.Update(gameTime.ElapsedGameTime);
+                seqPosMovieTitle.Update(gameTime.ElapsedGameTime);
+                seqPosMovieCount.Update(gameTime.ElapsedGameTime);
+
+                foreach (Sprite sprite in thumbSprite)
+                {
+                    sprite.Update(gameTime);
+                }
+            }
+
+            seqLoading.Update(gameTime.ElapsedGameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs render processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime, SpriteBatch batch)
+        {
+            // Draws the movie window.
+            // 
+            // ムービーのウィンドウを描画します。
+            batch.Begin();
+            seqMovieWindow.Draw(batch, null);
+            batch.End();
+
+            // Draws the movie.
+            // 
+            // ムービーを描画します。
+            DrawMovie(batch);
+
+            batch.Begin();
+
+            // Draws the thumbnail.
+            //
+            // サムネイルを描画します。
+            DrawThumbnail(gameTime, batch);
+
+            // Draws the sequence.
+            //
+            // シーケンスを描画します。
+            DrawSequence(gameTime, batch);
+
+            batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the movie.
+        /// 
+        /// ムービーを描画します。
+        /// </summary>
+        private void DrawMovie(SpriteBatch batch)
+        {
+            // Drawing is not performed during loading.
+            // 
+            // 読み込み中は描画処理を行いません。
+            if (phase == Phase.Loading)
+                return;
+
+            if (Data.movieTexture != null)
+            {
+                // Draws the movie with no alpha.
+                // 
+                // ムービーをアルファ値無しで描画します。
+                batch.Begin(SpriteBlendMode.None);
+                batch.Draw(Data.movieTexture, MoviePreviewRect, Color.White);
+                batch.End();
+            }
+            else
+            {
+                // Draws the load icon if the movie has not been
+                // loaded.
+                // 
+                // ムービーがまだ読み込まれていない場合は
+                // ロードアイコンを描画します。
+                batch.Begin();
+                seqLoading.Draw(batch, null);
+                batch.End();
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the thumbnail.
+        /// 
+        /// サムネイルを描画します。
+        /// </summary>
+        private void DrawThumbnail(GameTime gameTime, SpriteBatch batch)
+        {
+            foreach (Sprite sprite in thumbSprite)
+            {
+                sprite.Draw(gameTime, batch);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the sequence.
+        /// 
+        /// シーケンスを描画します。
+        /// </summary>
+        private void DrawSequence(GameTime gameTime, SpriteBatch batch)
+        {
+            if (phase == Phase.Start)
+            {
+                seqStart.Draw(batch, null);
+            }
+            else if (phase == Phase.Select)
+            {
+                seqLoop.Draw(batch, null);
+                seqLeft.Draw(batch, null);
+                seqRight.Draw(batch, null);
+
+                // Draws the navigate button.
+                // 
+                // ナビゲートボタンを描画します。
+                DrawNavigate(gameTime, batch, false);
+            }
+            else if (phase == Phase.Selected)
+            {
+                seqLoop.Draw(batch, null);
+                seqMovieSelect.Draw(batch, null);
+                seqLeft.Draw(batch, null);
+                seqRight.Draw(batch, null);
+            }
+
+            // Draws the movie title.
+            // 
+            // ムービーのタイトルを描画します。
+            DrawMovieTitle(batch);
+
+            // Draws the movie number. 
+            // 
+            // ムービーの番号を描画します。
+            DrawMovieCount(batch);
+        }
+
+
+        /// <summary>
+        /// Draws the movie title.
+        /// 
+        /// ムービーのタイトルを描画します。
+        /// </summary>
+        private void DrawMovieTitle(SpriteBatch batch)
+        {
+            // Drawing is not performed if the movie is Null.
+            // 
+            // ムービーがnullの場合は描画処理を行いません。
+            if (Data.movie == null)
+                return;
+
+
+            SequenceBankData seqData = seqPosMovieTitle.SequenceData;
+            foreach (SequenceGroupData seqBodyData in seqData.SequenceGroupList)
+            {
+                SequenceObjectData seqPartsData = seqBodyData.CurrentObjectList;
+                if (seqPartsData == null)
+                {
+                    continue;
+                }
+
+                List<PatternObjectData> list = seqPartsData.PatternObjectList;
+                foreach (PatternObjectData patPartsData in list)
+                {
+                    DrawData putInfoData = patPartsData.InterpolationDrawData;
+                    SpriteFont font = LargeFont;
+                    Color color = putInfoData.Color;
+                    string text = Data.movie.Info.Name;
+
+                    // Centers the position.
+                    //
+                    // 位置をセンタリングします。
+                    Point point = putInfoData.Position;
+                    Vector2 position = new Vector2(point.X, point.Y);
+                    position -= font.MeasureString(text) * 0.5f;
+
+                    batch.DrawString(font, text, position, color);
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the movie number.
+        /// 
+        /// ムービーの番号を描画します。
+        /// </summary>
+        private void DrawMovieCount(SpriteBatch batch)
+        {
+            SequenceBankData seqData = seqPosMovieCount.SequenceData;
+            foreach (SequenceGroupData seqBodyData in seqData.SequenceGroupList)
+            {
+                SequenceObjectData seqPartsData = seqBodyData.CurrentObjectList;
+                if (seqPartsData == null)
+                {
+                    continue;
+                }
+
+                List<PatternObjectData> list = seqPartsData.PatternObjectList;
+                foreach (PatternObjectData patPartsData in list)
+                {
+                    DrawData putInfoData = patPartsData.InterpolationDrawData;
+                    SpriteFont font = LargeFont;
+                    Color color = putInfoData.Color;
+
+                    int current = cursor + 1;
+                    int total = GameData.MovieList.Count;
+                    string format = "{0:00}/{1:00}";
+                    string text = string.Format(format, current, total);
+
+                    Point point = putInfoData.Position;
+                    Vector2 position = new Vector2(point.X, point.Y);
+
+                    batch.DrawString(font, text, position, color);
+                }
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Starts loading the movie.
+        ///
+        /// ムービーの読み込み処理を開始します。
+        /// </summary>
+        /// <param name="join">
+        /// Waiting for movie to finish loading
+        ///
+        /// ムービーの読み込み終了待ち
+        /// </param>
+        private void SetMovie(bool join)
+        {
+            // Performs release processing if 
+            // movie object already exists.
+            // 
+            // 既にムービーオブジェクトが存在している場合は
+            // 開放処理を行います。
+            if (Data.movie != null)
+            {
+                Data.movie.Dispose();
+                Data.movie = null;
+            }
+
+            Data.movieTexture = null;
+
+            // Force quits if movie is already loading.
+            // 
+            // ムービーが既に読み込み中なら強制終了をします。
+            if (Data.movieLoader != null && !Data.movieLoader.Initialized)
+            {
+                Data.movieLoader.Abort();
+
+                // Performs release processing.
+                // 
+                // 開放処理を行います。
+                if (Data.movieLoader.Movie != null)
+                {
+                    Data.movieLoader.Movie.Dispose();
+                }
+
+                Data.movieLoader = null;
+            }
+
+            // Loads movie asynchronously. 
+            // For Xbox 360, set CPU core to execute thread.
+            // 
+            // ムービーを非同期で読み込みます。
+            // Xbox 360の場合はスレッドを実行するCPUのコアを設定します。
+            AnimationInfo animationInfo =
+                Content.Load<AnimationInfo>(GameData.MovieList[cursor]);
+            Data.movieLoader = new MovieLoader(Game, 3 + cpuId, animationInfo);
+            Data.movieLoader.Run();
+
+            // Changes the next CPU core to be used.
+            //
+            // 次回使用するCPUコアを変更します。
+            cpuId = (cpuId + 1) % 3;
+
+            // If set to synchronous loading, wait for completion.
+            // 
+            // 同期読み込みが設定されていたら終了するまで待機します。
+            if (join)
+            {
+                Data.movieLoader.Join();
+            }
+
+            // Replays the movie title display sequence.
+            // 
+            // ムービータイトル表示のシーケンスをリプレイします。
+            if (seqPosMovieTitle != null)
+            {
+                seqPosMovieTitle.Replay();
+            }
+
+        }
+
+
+        /// <summary>
+        /// Shifts the thumbnail one back.
+        /// 
+        /// サムネイルを一つ前に移動します。
+        /// </summary>
+        private void SetPreviousThumbnail()
+        {
+            ThumbnailSprite frontSprite = thumbSprite[0];
+            ThumbnailSprite tailSprite = thumbSprite[thumbSprite.Count - 1];
+
+            Vector2 frontPosition = frontSprite.TargetPosition;
+
+            tailSprite.Position = tailSprite.TargetPosition =
+                frontPosition - new Vector2(ThumbnailSize.X, 0);
+
+            int textureId = cursor;
+            textureId += GameData.MovieList.Count - (ThumbnailPanel >> 1);
+            textureId %= GameData.MovieList.Count;
+            tailSprite.TextureId = textureId;
+
+            thumbSprite.Remove(tailSprite);
+            thumbSprite.Insert(0, tailSprite);
+
+            foreach (ThumbnailSprite sprite in thumbSprite)
+            {
+                Vector2 position = sprite.TargetPosition;
+                position.X += ThumbnailSize.X;
+                sprite.TargetPosition = position;
+            }
+
+            SetThumbnailTexture();
+
+            SetMovie(false);
+        }
+
+
+        /// <summary>
+        /// Shifts the thumbnail one forward.
+        ///
+        /// サムネイルを一つ次へ移動します。
+        /// </summary>
+        private void SetNextThumbnail()
+        {
+            ThumbnailSprite frontSprite = thumbSprite[0];
+            ThumbnailSprite tailSprite = thumbSprite[thumbSprite.Count - 1];
+
+            Vector2 tailPosition = tailSprite.TargetPosition;
+
+            int textureId = cursor;
+            textureId += (ThumbnailPanel >> 1) - 1;
+            textureId %= GameData.MovieList.Count;
+            tailSprite.TextureId = textureId;
+
+            frontSprite.Position = frontSprite.TargetPosition = 
+                tailPosition + new Vector2(ThumbnailSize.X, 0);
+
+            thumbSprite.Remove(frontSprite);
+            thumbSprite.Add(frontSprite);
+
+            foreach (ThumbnailSprite sprite in thumbSprite)
+            {
+                Vector2 position = sprite.TargetPosition;
+                position.X -= ThumbnailSize.X;
+                sprite.TargetPosition = position;
+            }
+
+            SetThumbnailTexture();
+
+            SetMovie(false);
+        }
+
+
+        /// <summary>
+        /// Sets the texture for the thumbnail sprite.
+        /// 
+        /// サムネイルのスプライトにテクスチャを設定します。
+        /// </summary>
+        private void SetThumbnailTexture()
+        {
+            // Processing is not performed if there is no texture list.
+            // 
+            // テクスチャリストが無い場合は処理をしません。
+            if (thumbTextures == null)
+            {
+                return;
+            }
+
+            // Sets the texture.
+            // 
+            // テクスチャを設定します。
+            foreach (ThumbnailSprite sprite in thumbSprite)
+            {
+                sprite.Texture = thumbTextures[sprite.TextureId];
+            }
+        }
+
+
+        /// <summary>
+        /// Returns the previous cursor position.
+        /// 
+        /// 前のカーソル位置を返します。
+        /// </summary>
+        private int CursorPrev()
+        {
+            return ((cursor - 1) < 0) ? GameData.MovieList.Count - 1 : cursor - 1;
+        }
+
+
+        /// <summary>
+        /// Returns the next cursor position.
+        ///
+        /// 次のカーソル位置を返します。
+        /// </summary>
+        private int CursorNext()
+        {
+            return (cursor + 1) % GameData.MovieList.Count;
+        }
+        #endregion
+    }
+}

+ 1202 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/SelectStyle.cs

@@ -0,0 +1,1202 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SelectStyle.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Menu item used for style selection.
+    /// It inherits MenuBase and expands menu compilation processing.
+    /// This class implements menu style selection and rotation selection, and
+    /// provides sequence control and cursor model movement.
+    /// 
+    /// スタイル選択を処理するメニュー項目です。
+    /// MenuBaseを継承し、メニューを構成する処理を拡張しています。
+    /// このクラスはメニューのスタイル選択と、回転の有無の選択を実装し、
+    /// シーケンスの制御とカーソルに使用しているモデルの移動を行っています。
+    /// </summary>
+    public class SelectStyle : MenuBase
+    {
+        #region Private Types
+        /// <summary>
+        /// Processing status
+        /// 
+        /// 処理状態
+        /// </summary>
+        private enum Phase
+        {
+            /// <summary>
+            /// Start
+            /// 
+            /// 開始演出
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// Style selection
+            /// 
+            /// スタイル選択
+            /// </summary>
+            StyleSelect,
+
+            /// <summary>
+            /// Style selected
+            ///
+            /// スタイル選択演出
+            /// </summary>
+            StyleSelected,
+
+            /// <summary>
+            /// Rotation item start
+            ///
+            /// 回転項目開始演出
+            /// </summary>
+            RotateStart,
+
+            /// <summary>
+            /// Rotate selection
+            ///
+            /// 回転選択
+            /// </summary>
+            RotateSelect,
+
+            /// <summary>
+            /// Rotate selected
+            ///
+            /// 回転選択演出
+            /// </summary>
+            RotateSelected,
+        }
+
+
+        /// <summary>
+        /// Style item
+        /// 
+        /// スタイルの項目
+        /// </summary>
+        private enum CursorStyle
+        {
+            /// <summary>
+            /// Change mode
+            /// 
+            /// チェンジモード
+            /// </summary>
+            Change,
+
+            /// <summary>
+            /// Revolve mode
+            ///
+            /// リボルヴモード
+            /// </summary>
+            Revolve,
+
+            /// <summary>
+            /// Slide mode
+            /// 
+            /// スライドモード
+            /// </summary>
+            Slide,
+
+            /// <summary>
+            /// Count
+            ///
+            /// カウント用
+            /// </summary>
+            Count,
+        }
+
+
+        /// <summary>
+        /// Rotate item
+        /// 
+        /// 回転の項目
+        /// </summary>
+        private enum CursorRotate
+        {
+            /// <summary>
+            /// Rotate on
+            /// 
+            /// 回転有り
+            /// </summary>
+            On,
+
+            /// <summary>
+            /// Rotate off
+            ///
+            /// 回転無し
+            /// </summary>
+            Off,
+
+            /// <summary>
+            /// Count
+            /// 
+            /// カウント用
+            /// </summary>
+            Count
+        }
+        #endregion
+
+        #region Fields
+        /// <summary>
+        /// Style animation draw position
+        /// 
+        /// スタイルアニメーションの描画位置
+        /// </summary>
+        private readonly Vector2 PositionStyleAnimation;
+
+        /// <summary>
+        /// Cursor sphere position
+        ///
+        /// カーソル球体の位置
+        /// </summary>
+        private readonly Vector3[][] SpherePositions;
+
+        // Processing status
+        // 
+        // 処理状況
+        private Phase phase;
+
+        // Cursor position
+        //
+        // カーソル位置
+        private CursorStyle cursorStyle;
+        private CursorRotate cursorRotate;
+
+        // Layout
+        private SequencePlayData seqStart;
+        private SequencePlayData seqLoop;
+        private SequencePlayData seqChange;
+        private SequencePlayData seqChangeLoop;
+        private SequencePlayData seqChangeSelect;
+        private SequencePlayData seqRevolve;
+        private SequencePlayData seqRevolveLoop;
+        private SequencePlayData seqRevolveSelect;
+        private SequencePlayData seqSlide;
+        private SequencePlayData seqSlideLoop;
+        private SequencePlayData seqSlideSelect;
+        private SequencePlayData seqRotateStart;
+        private SequencePlayData seqRotateLoop;
+        private SequencePlayData seqRotateOn;
+        private SequencePlayData seqRotateOnLoop;
+        private SequencePlayData seqRotateOff;
+        private SequencePlayData seqRotateOffLoop;
+        private SequencePlayData seqRotateOnSelect;
+        private SequencePlayData seqRotateOffSelect;
+
+        private SceneData sceneStyleChangeRotateOn;
+        private SequencePlayData seqStyleChangeRotateOn;
+
+        private SceneData sceneStyleChangeRotateOff;
+        private SequencePlayData seqStyleChangeRotateOff;
+
+        private SceneData sceneStyleRevolve;
+        private SequencePlayData seqStyleRevolve;
+
+        private SceneData sceneStyleSlide;
+        private SequencePlayData seqStyleSlide;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SelectStyle(Game game, MenuData data)
+            : base(game, data)
+        {
+            // Loads the position.
+            // 
+            // ポジションを読み込みます。
+            PatternGroupData patternGroup = 
+                data.sceneData.PatternGroupDictionary["Pos_PosStyle"];
+            Point point;
+            point = patternGroup.PatternObjectList[0].Position;
+            PositionStyleAnimation = new Vector2(point.X, point.Y);
+
+            // Sets the cursor position.
+            //
+            // カーソル位置を設定します。
+            SpherePositions = new Vector3[][] {
+                // Select Style
+                new Vector3[] {
+                    new Vector3(-40.22693f, 4.972153f, 0),
+                    new Vector3(-40.22693f, -13.60015f, 0),
+                    new Vector3(-40.22693f, -32.24725f, 0) },
+                // Rotate Select
+                new Vector3[] {
+                    new Vector3(-20.6443f, -11.82219f, 0),
+                    new Vector3(-20.6443f, -22.5499f, 0) },
+            };
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the processing status.
+            // 
+            // 処理状態の初期設定をします。
+            phase = Phase.Start;
+
+            // Initializes the cursor position.
+            // 
+            // カーソルの初期位置を設定します。
+            cursorStyle = CursorStyle.Change;
+            cursorRotate = CursorRotate.On;
+
+            // Initializes the sphere model.
+            //
+            // 球体モデルの初期設定をします。
+            Data.Spheres[1][0].Position = SpherePositions[0][0];
+            Data.Spheres[1][0].Rotate = new Vector3();
+            Data.Spheres[1][0].Alpha = 0.0f;
+            Data.Spheres[1][0].Scale = Data.CursorSphereSize;
+
+            // Loads and initializes the sequence.
+            //
+            // シーケンスの読み込みと初期化を行います。
+            InitializeSequence();
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel"), false));
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+        }
+
+
+        /// <summary>
+        /// Loads and initializes the sequence.
+        ///
+        /// シーケンスの読み込みと初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            string asset;
+
+            // Loads the style animation.
+            // 
+            // スタイルアニメーションを読み込みます。
+            asset = "Layout/Style/change_rotate_on_Scene";
+            sceneStyleChangeRotateOn = Content.Load<SceneData>(asset);
+            seqStyleChangeRotateOn = 
+                sceneStyleChangeRotateOn.CreatePlaySeqData("Anime");
+
+            asset = "Layout/Style/change_rotate_off_Scene";
+            sceneStyleChangeRotateOff = Content.Load<SceneData>(asset);
+            seqStyleChangeRotateOff = 
+                sceneStyleChangeRotateOff.CreatePlaySeqData("Anime");
+
+            asset = "Layout/Style/revolve_Scene";
+            sceneStyleRevolve = Content.Load<SceneData>(asset);
+            seqStyleRevolve = 
+                sceneStyleRevolve.CreatePlaySeqData("Anime");
+
+            asset = "Layout/Style/slide_Scene";
+            sceneStyleSlide = Content.Load<SceneData>(asset);
+            seqStyleSlide =
+                sceneStyleSlide.CreatePlaySeqData("Anime");
+
+
+            // Loads the other sequences.
+            // 
+            // その他のシーケンスを読み込みます。
+            seqStart = Data.sceneData.CreatePlaySeqData("StyleStart");
+            seqLoop = Data.sceneData.CreatePlaySeqData("StyleLoop");
+            seqChange = Data.sceneData.CreatePlaySeqData("StyleChange");
+            seqChangeLoop = Data.sceneData.CreatePlaySeqData("StyleChangeLoop");
+            seqChangeSelect = Data.sceneData.CreatePlaySeqData("StyleChangeSelect");
+            seqRevolve = Data.sceneData.CreatePlaySeqData("StyleRevolve");
+            seqRevolveLoop = Data.sceneData.CreatePlaySeqData("StyleRevolveLoop");
+            seqRevolveSelect = Data.sceneData.CreatePlaySeqData("StyleRevolveSelect");
+            seqSlide = Data.sceneData.CreatePlaySeqData("StyleSlide");
+            seqSlideLoop = Data.sceneData.CreatePlaySeqData("StyleSlideLoop");
+            seqSlideSelect = Data.sceneData.CreatePlaySeqData("StyleSlideSelect");
+            seqSlide = Data.sceneData.CreatePlaySeqData("StyleSlide");
+            seqSlideLoop = Data.sceneData.CreatePlaySeqData("StyleSlideLoop");
+            seqSlideSelect = Data.sceneData.CreatePlaySeqData("StyleSlideSelect");
+            seqRotateStart = Data.sceneData.CreatePlaySeqData("RotateStart");
+            seqRotateLoop = Data.sceneData.CreatePlaySeqData("RotateLoop");
+            seqRotateOn = Data.sceneData.CreatePlaySeqData("RotateOn");
+            seqRotateOnLoop = Data.sceneData.CreatePlaySeqData("RotateOnLoop");
+            seqRotateOnSelect = Data.sceneData.CreatePlaySeqData("RotateOnSelect");
+            seqRotateOff = Data.sceneData.CreatePlaySeqData("RotateOff");
+            seqRotateOffLoop = Data.sceneData.CreatePlaySeqData("RotateOffLoop");
+            seqRotateOffSelect = Data.sceneData.CreatePlaySeqData("RotateOffSelect");
+
+            // Replays the first sequence to be displayed.
+            // 
+            // 最初に表示されるシーケンスをリプレイします。
+            seqStart.Replay();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override MenuBase UpdateMain(GameTime gameTime)
+        {
+            // Processing is not performed if initialization is not complete.
+            // 
+            // 初期化が終了していなければ処理を行いません。
+            if (!Initialized)
+                return null;
+
+            // Updates the sequence.
+            // 
+            // シーケンスの更新処理を行います。
+            UpdateSequence(gameTime);
+
+            // Updates the model.
+            //
+            // モデルの更新処理を行います。
+            UpdateModels();
+
+            // Sets the style animation sequence.
+            // 
+            // スタイルアニメーションのシーケンスを設定します。
+            SetStyleAnimation();
+
+
+            if (phase == Phase.Start)
+            {
+                // Sets to selection after the style start animation finishes.
+                // 
+                // スタイル開始アニメーションが終了したら、選択処理に設定します。
+                if (!seqStart.IsPlay)
+                {
+                    phase = Phase.StyleSelect;
+                }
+            }
+            else if (phase == Phase.StyleSelect)
+            {
+                // Performs update when style is selected.
+                //
+                // スタイル選択時の更新処理を行います。
+                return UpdateStyleSelect();
+            }
+            else if (phase == Phase.StyleSelected)
+            {
+                // Performs update after style selection.
+                //
+                // スタイル選択後の更新処理を行います。
+                return UpdateStyleSelected();
+            }
+            else if (phase == Phase.RotateStart)
+            {
+                // Sets to selection after the rotation select start animation finishes.
+                //
+                // 回転選択の開始アニメーションが終了したら選択処理に設定します。
+                if (!seqRotateStart.SequenceData.IsPlay)
+                {
+                    phase = Phase.RotateSelect;
+                }
+            }
+            else if (phase == Phase.RotateSelect)
+            {
+                // Performs update when rotation is selected.
+                //
+                // 回転選択時の更新処理を行います。
+                return UpdateRotateSelect();
+            }
+            else if (phase == Phase.RotateSelected)
+            {
+                // After rotate selection
+                //
+                // 回転選択後
+                if (!seqRotateOnSelect.IsPlay && !seqRotateOffSelect.IsPlay)
+                {
+                    return CreateMenu(Game, MenuType.SelectMovie, Data);
+                }
+
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update when style is selected.
+        /// 
+        /// スタイル選択時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateStyleSelect()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPush(dPad.Up, leftStick.Up))
+            {
+                // Performs Up key processing when style is selected.
+                // 
+                // スタイル選択時、上キーが押された時の処理を行います。
+                InputStyleUpKey();
+            }
+            else if (InputState.IsPush(dPad.Down, leftStick.Down))
+            {
+                // Performs Down key processing when style is selected.
+                //
+                // スタイル選択時、下キーが押された時の処理を行います。
+                InputStyleDownKey();
+            }
+            else if (buttons.A[VirtualKeyState.Push])
+            {
+                // Performs Enter key processing when style is selected.
+                //
+                // スタイル選択時、決定キーが押された時の処理を行います。
+                InputStyleSelectKey();
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                return CreateMenu(Game, MenuType.SelectMode, Data);
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs update after style selection.
+        /// 
+        /// スタイル選択後の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateStyleSelected()
+        {
+            // Processing is not performed while playing the animation.
+            // 
+            // アニメーション再生中は処理を行いません。
+            if (seqChangeSelect.IsPlay ||
+                seqRevolveSelect.IsPlay ||
+                seqSlideSelect.IsPlay)
+            {
+                return null;
+            }
+
+            if (cursorStyle == CursorStyle.Change)
+            {
+                // If the change mode is selected by the cursor,
+                // set to rotation selection.
+                //
+                // カーソルがチェンジモードを選択していた場合は
+                // 回転の選択処理に設定します。
+                phase = Phase.RotateStart;
+
+                // Cursor model settings
+                // 
+                // カーソルモデルの設定
+                Data.Spheres[1][0].Position = SpherePositions[1][0];
+                Data.Spheres[1][0].Rotate = new Vector3();
+                Data.Spheres[1][0].Alpha = 0.0f;
+                Data.Spheres[1][0].Scale = Data.CursorSphereMiniSize;
+            }
+            else
+            {
+                // Switches straight to the select movie menu 
+                // if the revolve mode and slide mode are selected.
+                // 
+                // リボルヴモードと、スライドモードを選択していた場合は
+                // そのままムービー選択のメニューに遷移します。
+                return CreateMenu(Game, MenuType.SelectMovie, Data);
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs Up key processing when style is selected.
+        /// 
+        /// スタイル選択時、上キーが押された時の処理を行います。
+        /// </summary>
+        private void InputStyleUpKey()
+        {
+            // Moves the cursor.
+            // 
+            // カーソルを移動します。
+            cursorStyle = CursorStyleUp();
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイします。
+            ReplayStyleAnimation();
+            ReplayStyleSequence(cursorStyle);
+
+            // Plays the cursor movement SoundEffect.
+            // 
+            // カーソル移動のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+
+
+        /// <summary>
+        /// Performs Down key processing when style is selected.
+        /// 
+        /// スタイル選択時、下キーが押された時の処理を行います。
+        /// </summary>
+        private void InputStyleDownKey()
+        {
+            // Moves the cursor.
+            //
+            // カーソルを移動します。
+            cursorStyle = CursorStyleDown();
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイします。
+            ReplayStyleAnimation();
+            ReplayStyleSequence(cursorStyle);
+
+            // Plays the cursor movement SoundEffect.
+            // 
+            // カーソル移動のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+
+
+        /// <summary>
+        /// Performs Enter key processing when style is selected.
+        /// 
+        /// スタイル選択時、決定キーが押された時の処理を行います。
+        /// </summary>
+        private void InputStyleSelectKey()
+        {
+            // Sets processing status to selection completed.
+            // 
+            // 処理状態を選択完了に設定します。
+            phase = Phase.StyleSelected;
+
+            // Plays the SoundEffect.
+            // 
+            // 決定のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+            if (cursorStyle == CursorStyle.Change)
+            {
+                // Sets to the change mode.
+                // 
+                // チェンジモードに設定します。
+                Data.StageSetting.Style = StageSetting.StyleList.Change;
+
+                // Replays the sequence.
+                //
+                // シーケンスをリプレイします。
+                seqChangeSelect.Replay();
+                seqRotateStart.Replay();
+            }
+            else if (cursorStyle == CursorStyle.Revolve)
+            {
+                // Sets to the revolve mode.
+                //
+                // リボルヴモードに設定します。
+                Data.StageSetting.Style = StageSetting.StyleList.Revolve;
+                Data.StageSetting.Rotate = StageSetting.RotateMode.Off;
+
+                // Replays the sequence.
+                // 
+                // シーケンスをリプレイします。
+                seqRevolveSelect.Replay();
+            }
+            else if (cursorStyle == CursorStyle.Slide)
+            {
+                // Sets to the slide mode.
+                // 
+                // スライドモードに設定します。
+                Data.StageSetting.Style = StageSetting.StyleList.Slide;
+                Data.StageSetting.Rotate = StageSetting.RotateMode.Off;
+
+                // Replays the sequence. 
+                // 
+                // シーケンスをリプレイします。
+                seqSlideSelect.Replay();
+            }
+
+        }
+
+
+
+        /// <summary>
+        /// Performs update when rotation is selected.
+        /// 
+        /// 回転選択時の更新処理を行います。
+        /// </summary>
+        private MenuBase UpdateRotateSelect()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPush(dPad.Up, leftStick.Up, dPad.Down, leftStick.Down))
+            {
+                InputRotateMoveKey();
+            }
+            else if (buttons.A[VirtualKeyState.Push])
+            {
+                InputRotateSelectKey();
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                return CreateMenu(Game, MenuType.SelectStyle, Data);
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Performs cursor movement key processing when rotation is selected.
+        /// Use common processing, since it has only two items (on and off).
+        /// 
+        /// 回転選択時、カーソルの移動キーが押されたときの処理を行います。
+        /// 項目はOnとOffの2つしかないため、共通の処理を使用します。
+        /// </summary>
+        private void InputRotateMoveKey()
+        {
+            // Moves the cursor.
+            // 
+            // カーソルを移動します。
+            cursorRotate = CursorRotateMove();
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイします。
+            ReplayStyleAnimation();
+            ReplayRotateSequence(cursorRotate);
+
+            // Plays cursor movement SoundEffect.
+            // 
+            // カーソル移動のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+
+
+        /// <summary>
+        /// Performs Enter key processing when rotation is selected.
+        /// 
+        /// 回転選択時、決定キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputRotateSelectKey()
+        {
+            // Sets processing status to selection completed.
+            // 
+            // 処理状態を選択完了に設定します。
+            phase = Phase.RotateSelected;
+
+            // Plays the SoundEffect.
+            //
+            // 決定のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+            if (cursorRotate == CursorRotate.On)
+            {
+                // Enables the rotation settings.
+                // 
+                // 回転の設定を有効にします。
+                Data.StageSetting.Rotate = StageSetting.RotateMode.On;
+
+                // Replays the sequence.
+                //
+                // シーケンスをリプレイします。
+                seqRotateOnSelect.Replay();
+            }
+            else if (cursorRotate == CursorRotate.Off)
+            {
+                // Disables the rotation settings.
+                //
+                // 回転の設定を無効にします。
+                Data.StageSetting.Rotate = StageSetting.RotateMode.Off;
+
+                // Replays the sequence.
+                // 
+                // シーケンスをリプレイします。
+                seqRotateOffSelect.Replay();
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            TimeSpan elapsedGameTime = gameTime.ElapsedGameTime; 
+
+            seqStart.Update(elapsedGameTime);
+            seqLoop.Update(elapsedGameTime);
+            seqChange.Update(elapsedGameTime);
+            seqChangeLoop.Update(elapsedGameTime);
+            seqChangeSelect.Update(elapsedGameTime);
+            seqRevolve.Update(elapsedGameTime);
+            seqRevolveLoop.Update(elapsedGameTime);
+            seqRevolveSelect.Update(elapsedGameTime);
+            seqSlide.Update(elapsedGameTime);
+            seqSlideLoop.Update(elapsedGameTime);
+            seqSlideSelect.Update(elapsedGameTime);
+            seqSlide.Update(elapsedGameTime);
+            seqSlideLoop.Update(elapsedGameTime);
+            seqSlideSelect.Update(elapsedGameTime);
+            seqRotateStart.Update(elapsedGameTime);
+            seqRotateLoop.Update(elapsedGameTime);
+            seqRotateOn.Update(elapsedGameTime);
+            seqRotateOnLoop.Update(elapsedGameTime);
+            seqRotateOnSelect.Update(elapsedGameTime);
+            seqRotateOff.Update(elapsedGameTime);
+            seqRotateOffLoop.Update(elapsedGameTime);
+            seqRotateOffSelect.Update(elapsedGameTime);
+
+            seqStyleChangeRotateOn.Update(elapsedGameTime);
+            seqStyleChangeRotateOff.Update(elapsedGameTime);
+            seqStyleRevolve.Update(elapsedGameTime);
+            seqStyleSlide.Update(elapsedGameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the model.
+        ///
+        /// モデルの更新処理を行います。
+        /// </summary>
+        private void UpdateModels()
+        {
+            // Updates the position.
+            // 
+            // ポジションの更新を行います。
+            Vector3 position = Data.Spheres[1][0].Position;
+            if (phase == Phase.StyleSelect)
+            {
+                if (cursorStyle == CursorStyle.Change)
+                {
+                    position += (SpherePositions[0][0] - position) * 0.2f;
+                }
+                else if (cursorStyle == CursorStyle.Revolve)
+                {
+                    position += (SpherePositions[0][1] - position) * 0.2f;
+                }
+                else if (cursorStyle == CursorStyle.Slide)
+                {
+                    position += (SpherePositions[0][2] - position) * 0.2f;
+                }
+            }
+            else if (phase == Phase.RotateSelect)
+            {
+                if (cursorRotate == CursorRotate.On)
+                {
+                    position += (SpherePositions[1][0] - position) * 0.2f;
+                }
+                else if (cursorRotate == CursorRotate.Off)
+                {
+                    position += (SpherePositions[1][1] - position) * 0.2f;
+                }
+            }
+            Data.Spheres[1][0].Position = position;
+
+            // Specifies the transparency and scale settings.
+            // 
+            // 透明度とスケールの設定をします。
+            float alpha = Data.Spheres[1][0].Alpha;
+            float fadeSpeed = Data.CursorSphereFadeSpeed;
+            if (phase != Phase.StyleSelected && phase != Phase.RotateSelected)
+            {
+                alpha = MathHelper.Clamp(alpha + fadeSpeed, 0.0f, 1.0f);
+            }
+            else
+            {
+                // Performs fade-out with zoom when item is selected.
+                // 
+                // 項目が決定されるとズームしながらフェードアウトします。
+                alpha = MathHelper.Clamp(alpha - fadeSpeed, 0.0f, 1.0f);
+                Data.Spheres[1][0].Scale += Data.CursorSphereZoomSpeed;
+            }
+            Data.Spheres[1][0].Alpha = alpha;
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs render processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime, SpriteBatch batch)
+        {
+            // Draws the cursor sphere.
+            // 
+            // カーソルの球体を描画します。
+            DrawSpheres(batch);
+
+            // Switches the draw method depending on the process.
+            // 
+            // 処理内容によって描画メソッドを切り替えます。
+            batch.Begin();
+            if (phase == Phase.Start)
+            {
+                DrawStyleStart(batch);
+            }
+            else if (phase == Phase.StyleSelect)
+            {
+                DrawStyleSelect(gameTime, batch);
+            }
+            else if (phase == Phase.StyleSelected)
+            {
+                DrawStyleSelected(batch);
+            }
+            else if (phase == Phase.RotateStart)
+            {
+                DrawRotateStart(batch);
+            }
+            else if (phase == Phase.RotateSelect)
+            {
+                DrawRotateSelect(gameTime, batch);
+            }
+            else if (phase == Phase.RotateSelected)
+            {
+                DrawRotateSelected(batch);
+            }
+            batch.End();
+
+            // Draws the style animation.
+            // 
+            // スタイルアニメーションを描画します。
+            DrawStyleAnimation(batch);
+        }
+
+
+        /// <summary>
+        /// Performs render processing when the style animation starts.
+        /// 
+        /// スタイルアニメーション開始時の描画処理を行います。
+        /// </summary>
+        private void DrawStyleStart(SpriteBatch batch)
+        {
+            seqStart.Draw(batch, null);
+        }
+
+
+        /// <summary>
+        /// Performs render processing when style is selected.
+        ///
+        /// スタイル選択中の描画処理を行います。
+        /// </summary>
+        private void DrawStyleSelect(GameTime gameTime, SpriteBatch batch)
+        {
+            seqLoop.Draw(batch, null);
+
+            if (cursorStyle == CursorStyle.Change)
+            {
+                seqChangeLoop.Draw(batch, null);
+            }
+            else if (cursorStyle == CursorStyle.Revolve)
+            {
+                seqRevolveLoop.Draw(batch, null);
+            }
+            else if (cursorStyle == CursorStyle.Slide)
+            {
+                seqSlideLoop.Draw(batch, null);
+            }
+
+            seqChange.Draw(batch, null);
+            seqRevolve.Draw(batch, null);
+            seqSlide.Draw(batch, null);
+
+            // Draws the navigate button.
+            // 
+            // ナビゲートボタンの描画をします。
+            DrawNavigate(gameTime, batch, false);
+        }
+
+
+        /// <summary>
+        /// Performs render processing after the style is selected.
+        /// 
+        /// スタイル選択後の描画処理を行います。
+        /// </summary>
+        private void DrawStyleSelected(SpriteBatch batch)
+        {
+            seqLoop.Draw(batch, null);
+            if (cursorStyle == CursorStyle.Change)
+            {
+                seqChangeSelect.Draw(batch, null);
+                seqRotateStart.Draw(batch, null);
+            }
+            else if (cursorStyle == CursorStyle.Revolve)
+            {
+                seqRevolveSelect.Draw(batch, null);
+            }
+            else if (cursorStyle == CursorStyle.Slide)
+            {
+                seqSlideSelect.Draw(batch, null);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs render processing when the rotation selected animation starts.
+        /// 
+        /// 回転選択アニメーション開始時の描画処理を行います。
+        /// </summary>
+        private void DrawRotateStart(SpriteBatch batch)
+        {
+            seqLoop.Draw(batch, null);
+            seqRotateStart.Draw(batch, null);
+        }
+
+        /// <summary>
+        /// Performs render processing when rotation is selected.
+        ///
+        /// 回転選択時の描画処理を行います。
+        /// </summary>
+        private void DrawRotateSelect(GameTime gameTime, SpriteBatch batch)
+        {
+            seqLoop.Draw(batch, null);
+            seqRotateLoop.Draw(batch, null);
+            if (cursorRotate == CursorRotate.On)
+            {
+                seqRotateOnLoop.Draw(batch, null);
+            }
+            else if (cursorRotate == CursorRotate.Off)
+            {
+                seqRotateOffLoop.Draw(batch, null);
+            }
+
+            seqRotateOn.Draw(batch, null);
+            seqRotateOff.Draw(batch, null);
+
+            // Draws the navigate button.
+            // 
+            // ナビゲートボタンの描画をします。
+            DrawNavigate(gameTime, batch, false);
+        }
+
+
+        /// <summary>
+        /// Performs render processing after rotation is selected.
+        /// 
+        /// 回転選択後の描画処理を行います。
+        /// </summary>
+        private void DrawRotateSelected(SpriteBatch batch)
+        {
+            seqLoop.Draw(batch, null);
+            seqRotateLoop.Draw(batch, null);
+            if (cursorRotate == CursorRotate.On)
+            {
+                seqRotateOnSelect.Draw(batch, null);
+            }
+            else if (cursorRotate == CursorRotate.Off)
+            {
+                seqRotateOffSelect.Draw(batch, null);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the cursor sphere.
+        /// 
+        /// カーソルの球体を描画します。
+        /// </summary>
+        private void DrawSpheres(SpriteBatch batch)
+        {
+            GraphicsDevice graphicsDevice = batch.GraphicsDevice;
+            Matrix view;
+            view = Matrix.CreateLookAt(Data.CameraPosition, Vector3.Zero, Vector3.Up);
+            Data.Spheres[1][0].SetRenderState(graphicsDevice, SpriteBlendMode.Additive);
+            Data.Spheres[1][0].Draw(view, GameData.Projection);
+        }
+
+
+        /// <summary>
+        /// Draws the style animation.
+        ///
+        /// スタイルアニメーションを描画します。
+        /// </summary>
+        private void DrawStyleAnimation(SpriteBatch batch)
+        {
+            Texture2D texture = Data.StyleAnimationTexture;
+
+            // The following process is not performed when there
+            // is no style animation texture.
+            // 
+            // スタイルアニメーションのテクスチャが無い場合は
+            // 以下の処理を行いません。
+            if (texture == null)
+                return;
+
+            // Draws style animation texture via addition. 
+            // 
+            // スタイルアニメーションのテクスチャを加算で描画します。
+            batch.Begin(SpriteBlendMode.Additive);
+            batch.Draw(texture, PositionStyleAnimation, Color.White);
+            batch.End();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Replays the sequence.
+        /// 
+        /// シーケンスをリプレイします。
+        /// </summary>
+        private void ReplayStyleAnimation()
+        {
+            seqStyleChangeRotateOn.Replay();
+            seqStyleChangeRotateOff.Replay();
+            seqStyleRevolve.Replay();
+            seqStyleSlide.Replay();
+        }
+
+
+        /// <summary>
+        /// Sets the current style animation.
+        ///
+        /// 現在のスタイルアニメーションを設定します。
+        /// </summary>
+        private void SetStyleAnimation()
+        {
+            if (cursorStyle == CursorStyle.Change)
+            {
+                if (cursorRotate == CursorRotate.On)
+                {
+                    // Change : Rotate On
+                    Data.SeqStyleAnimation = seqStyleChangeRotateOn;
+                }
+                else
+                {
+                    // Change : Rotate Off
+                    Data.SeqStyleAnimation = seqStyleChangeRotateOff;
+                }
+            }
+            else if (cursorStyle == CursorStyle.Revolve)
+            {
+                // Revolve
+                Data.SeqStyleAnimation = seqStyleRevolve;
+            }
+            else if (cursorStyle == CursorStyle.Slide)
+            {
+                // Slide
+                Data.SeqStyleAnimation = seqStyleSlide;
+            }
+        }
+
+
+        /// <summary>
+        /// Moves the style selection cursor up.
+        /// 
+        /// スタイル選択のカーソルを上に移動します。
+        /// </summary>
+        private CursorStyle CursorStyleUp()
+        {
+            int count = (int)CursorStyle.Count;
+            return (CursorStyle)(((int)cursorStyle + (count - 1)) % count);
+        }
+
+
+        /// <summary>
+        /// Moves the style selection cursor down.
+        /// 
+        /// スタイル選択のカーソルを下に移動します。
+        /// </summary>
+        private CursorStyle CursorStyleDown()
+        {
+            int count = (int)CursorStyle.Count;
+            return (CursorStyle)(((int)cursorStyle + 1) % count);
+        }
+
+
+        /// <summary>
+        /// Replays the sequence for the style selection cursor.
+        /// 
+        /// スタイルを選択しているカーソルのシーケンスをリプレイします。
+        /// </summary>
+        private void ReplayStyleSequence(CursorStyle cursorStyle)
+        {
+            ReplayStyleSequence((int)cursorStyle);
+        }
+
+
+        /// <summary>
+        /// Replays the sequence for the style selection cursor.
+        /// 
+        /// スタイルを選択しているカーソルのシーケンスをリプレイします。
+        /// </summary>
+        private void ReplayStyleSequence(int id)
+        {
+            SequencePlayData[] seqList = { seqChange, seqRevolve, seqSlide };
+            seqList[id].Replay();
+        }
+
+
+        /// <summary>
+        /// Moves the rotation selection cursor.
+        /// 
+        /// 回転選択のカーソルを移動します。
+        /// </summary>
+        private CursorRotate CursorRotateMove()
+        {
+            int count = (int)CursorRotate.Count;
+            return (CursorRotate)(((int)cursorRotate + 1) % count);
+        }
+        
+
+        /// <summary>
+        /// Replays the sequence for the rotation selection cursor.
+        /// 
+        /// 回転を選択しているカーソルのシーケンスをリプレイします。
+        /// </summary>
+        private void ReplayRotateSequence(CursorRotate cursorRotate)
+        {
+            ReplayRotateSequence((int)cursorRotate);
+        }
+
+
+        /// <summary>
+        /// Replays the sequence for the rotation selection cursor.
+        /// 
+        /// 回転を選択しているカーソルのシーケンスをリプレイします。
+        /// </summary>
+        private void ReplayRotateSequence(int id)
+        {
+            SequencePlayData[] seqList = { seqRotateOn, seqRotateOff };
+            seqList[id].Replay();
+        }
+        #endregion
+    }
+}

+ 106 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/ThumbnailLoader.cs

@@ -0,0 +1,106 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// ThumbnailLoader.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Loads movie thumbnails asynchronously.
+    /// The load list should be specified in the constructor.
+    /// This class is designed to execute the Initialize method
+    /// in a thread by inheriting InitializeThread and 
+    /// invoking the associated Run method. 
+    /// 
+    /// ムービーのサムネイルを非同期で読み込みます。
+    /// 読み込むリストはコンストラクタに指定して下さい。
+    /// このクラスはInitializeThreadを継承し、InitializeThreadの
+    /// Runメソッドを呼び出すことで、Initializeメソッドをスレッドで
+    /// 実行するようになっています。
+    /// </summary>
+    public class ThumbnailLoader : InitializeThread
+    {
+        #region Fields
+        // Asset list to load
+        // 
+        // 読み込むアセットリスト
+        private string[] list;
+
+        // Loaded texture list
+        // 
+        // 読み込まれたテクスチャリスト
+        private List<Texture2D> textures;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the texture list.
+        /// 
+        /// テクスチャのリストを取得します。
+        /// </summary>
+        public List<Texture2D> Textures
+        {
+            get
+            {
+                if (!Initialized)
+                    return null;
+
+                return textures;
+            }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public ThumbnailLoader(Game game, int cpu, string[] assetList)
+            : base(game, cpu)
+        {
+            list = assetList;
+            textures = new List<Texture2D>();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Loads the asset list.
+        ///
+        /// アセットリストの読み込み処理を行います。
+        /// </summary>
+        protected override void Initialize()
+        {
+            // Sets the CPU core.
+            // 
+            // CPUコアの設定をします。
+            SetCpuCore();
+
+            // Loads all assets in the list.
+            // 
+            // リストにあるアセットを全て読み込みます。
+            foreach (string asset in list)
+            {
+                Texture2D texture = Game.Content.Load<Texture2D>(asset);
+                textures.Add(texture);
+            }
+
+            base.Initialize();
+        }
+        #endregion
+    }
+}

+ 119 - 0
Samples/Movipa/Movipa/Components/Scene/Menu/ThumbnailSprite.cs

@@ -0,0 +1,119 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// ThumbnailSprite.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Util;
+#endregion
+
+namespace Movipa.Components.Scene.Menu
+{
+    /// <summary>
+    /// Updates and draws the thumbnails.
+    /// 
+    /// サムネイルの更新と描画を行います。
+    /// </summary>
+    public class ThumbnailSprite : Sprite
+    {
+        #region Fields
+        private Vector2 targetPosition;
+        private int id;
+        private int textureId;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains or sets the target position.
+        /// 
+        /// 移動先の位置を取得または設定します。
+        /// </summary>
+        public Vector2 TargetPosition
+        {
+            get { return targetPosition; }
+            set { targetPosition = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the sprite ID.
+        /// 
+        /// スプライトのIDを取得または設定します。
+        /// </summary>
+        public int Id
+        {
+            get { return id; }
+            set { id = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the texture ID.
+        /// 
+        /// テクスチャのIDを取得または設定します。
+        /// </summary>
+        public int TextureId
+        {
+            get { return textureId; }
+            set { textureId = value; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public ThumbnailSprite(Game game)
+            : base(game)
+        {
+            Updating += ThumbnailSpriteUpdating;
+            Drawing += ThumbnailSpriteDrawing;
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        ///
+        /// 更新処理を行います。
+        /// </summary>
+        void ThumbnailSpriteUpdating(object sender, UpdatingEventArgs args)
+        {
+            // Slides to the designated position.
+            // 
+            // 指定された位置までスライドします。
+            Position += (TargetPosition - Position) * 0.2f;
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs render processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        void ThumbnailSpriteDrawing(object sender, DrawingEventArgs args)
+        {
+            // Does not draw if no texture is specified.
+            // 
+            // テクスチャが指定されていなければ描画をしません。
+            if (Texture == null)
+                return;
+
+            args.Batch.Draw(Texture, Position, Color.White);
+        }
+        #endregion
+    }
+}

+ 166 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/PanelData.cs

@@ -0,0 +1,166 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// PanelData.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Util;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle
+{
+    /// <summary>
+    /// Manages the panel status.
+    /// This class inherits the Sprite class.
+    /// Update and draw processing is performed in the Panel and StyleBase classes.
+    /// 
+    /// パネルの状態を管理します。
+    /// このクラスはSpriteクラスを継承しています。
+    /// 更新と描画は、Panelクラスおよび、StyleBaseクラスで行っています。
+    /// </summary>
+    public class PanelData : Sprite
+    {
+        #region Public Types
+        /// <summary>
+        /// Panel status
+        /// 
+        /// パネルの状態
+        /// </summary>
+        public enum PanelStatus
+        {
+            /// <summary>
+            /// Normal
+            /// 
+            /// 通常
+            /// </summary>
+            None,
+
+            /// <summary>
+            /// Rotating left
+            /// 
+            /// 左回転中
+            /// </summary>
+            RotateLeft,
+
+            /// <summary>
+            /// Rotating right
+            ///
+            /// 右回転中
+            /// </summary>
+            RotateRight,
+
+            /// <summary>
+            /// Shifting
+            ///
+            /// 移動中
+            /// </summary>
+            Move,
+        }
+        #endregion
+
+        #region Fields
+        private PanelStatus status;
+        private int id;
+        private float flush;
+        private float moveCount;
+        private float toRotate;
+        public Vector2 FromPosition;
+        public Vector2 ToPosition;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains or sets the panel status.
+        /// 
+        /// パネルの状態を取得または設定します。
+        /// </summary>
+        public PanelStatus Status
+        {
+            get { return status; }
+            set { status = value; }
+        }
+
+        /// <summary>
+        /// Obtains or sets the panel ID.
+        /// 
+        /// パネルのIDを取得または設定します。
+        /// </summary>
+        public int Id
+        {
+            get { return id; }
+            set { id = value; }
+        }
+
+        /// <summary>
+        /// Obtains or sets the completed effect status.
+        /// 
+        /// 完成エフェクトの状態を取得または設定します。
+        /// </summary>
+        public float Flush
+        {
+            get { return flush; }
+            set { flush = value; }
+        }
+
+        /// <summary>
+        /// Obtains or sets the movement amount.
+        /// 
+        /// 移動量を取得または設定します。
+        /// </summary>
+        public float MoveCount
+        {
+            get { return moveCount; }
+            set { moveCount = value; }
+        }
+
+        /// <summary>
+        /// Obtains or sets the rotation target.
+        /// 
+        /// 回転目標を取得または設定します。
+        /// </summary>
+        public float ToRotate
+        {
+            get { return toRotate; }
+            set { toRotate = value; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public PanelData(Game game)
+            : base(game)
+        {
+            flush = 0.0f;
+            moveCount = 0.0f;
+            FromPosition = Vector2.Zero;
+            ToPosition = Vector2.Zero;
+            toRotate = 0.0f;
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Obtains the panel center coordinates.
+        /// 
+        /// パネル中央の座標を取得します。
+        /// </summary>
+        public Vector2 Center
+        {
+            get { return Vector2.Add(Position, Origin); }
+        }
+        #endregion
+    }
+}

+ 398 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/PanelManager.cs

@@ -0,0 +1,398 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// PanelManager.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+
+using MovipaLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle
+{
+    /// <summary>
+    /// Class used to create and manage panels.
+    /// Also includes functions for the number of completed panels and the completion
+    /// ratio as well as for obtaining panels at random.
+    ///
+    /// パネルの作成と管理をするクラスです。
+    /// 他にも完成した枚数や完成率、ランダムでパネルを取得する機能があります。
+    /// </summary>
+    public class PanelManager
+    {
+        #region Fields
+        private Game game;
+        private PanelData[,] panels;
+        private Vector2 panelSize;
+        private Vector4 panelArea;
+        private Vector2 offset;
+        private Point panelCount;
+        #endregion
+
+        #region Properties
+        /// <summary> 
+        /// Obtains the Game instance.
+        /// 
+        /// Gameインスタンスを取得します。
+        /// </summary>
+        public Game Game
+        {
+            get { return game; }
+        }
+
+
+        /// <summary>
+        /// Obtains the intitialized status.
+        /// </summary>
+        public bool IsInitialized
+        {
+            get { return panels != null; }
+        }
+
+
+        /// <summary>
+        /// Obtains the panel data.
+        /// 
+        /// パネルデータを取得します。
+        /// </summary>
+        public PanelData GetPanel(int x, int y)
+        {
+            return panels[x, y];
+        }
+
+        /// <summary>
+        /// Assigns the panel data.
+        /// </summary>
+        public void SetPanel(int x, int y, PanelData panelData)
+        {
+            panels[x, y] = panelData;
+        }
+
+        /// <summary>
+        /// Obtains the panel data.
+        /// 
+        /// パネルデータを取得します。
+        /// </summary>
+        public PanelData GetPanel(Point point)
+        {
+            return GetPanel(point.X, point.Y);
+        }
+
+        /// <summary>
+        /// Assigns the panel data.
+        /// </summary>
+        public void SetPanel(Point point, PanelData panelData)
+        {
+            SetPanel(point.X, point.Y, panelData);
+        }
+
+        /// <summary>
+        /// Obtains the panel count.
+        /// </summary>
+        public Point PanelCount
+        {
+            get { return panelCount; }
+        }
+
+
+        /// <summary>
+        /// Obtains the panel size.
+        /// 
+        /// パネルサイズを取得します。
+        /// </summary>
+        public Vector2 PanelSize
+        {
+            get { return panelSize; }
+        }
+
+
+        /// <summary>
+        /// Obtains the total panel area.
+        /// 
+        /// パネル全体のエリアを取得します。
+        /// </summary>
+        public Vector4 PanelArea
+        {
+            get { return panelArea; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the drawing offset.
+        /// 
+        /// 描画時のオフセットを取得または設定します。
+        /// </summary>
+        public Vector2 DrawOffset
+        {
+            get { return offset; }
+            set { offset = value; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public PanelManager(Game game)
+        {
+            this.game = game;
+            panels = null;
+            panelSize = Vector2.Zero;
+            panelArea = Vector4.Zero;
+            offset = Vector2.Zero;
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Creates the panel.
+        /// 
+        /// パネルを作成します。
+        /// </summary>
+        public void CreatePanel(Point movieSize, StageSetting setting)
+        {
+            // Obtains the panel size.
+            // 
+            // パネルサイズを取得します。
+            panelSize = GetPanelSize(movieSize, setting);
+
+            // Calculates the total width.
+            //
+            // 全体の幅を計算します。
+            panelArea.Z = PanelSize.X * setting.Divide.X;
+            panelArea.W = PanelSize.Y * setting.Divide.Y;
+
+            // Calculates the panel start position. 
+            // 
+            // パネルの開始位置を計算します。
+            panelArea.X = (movieSize.X - PanelArea.Z) * 0.5f;
+            panelArea.Y = (movieSize.Y - PanelArea.W) * 0.5f;
+
+            // Creates the panel.
+            // 
+            // パネルを作成します。
+            panelCount = setting.Divide;
+            panels = new PanelData[panelCount.X, panelCount.Y];
+            for (int x = 0; x < panelCount.X; x++)
+            {
+                for (int y = 0; y < panelCount.Y; y++)
+                {
+                    panels[x, y] = GetPanelData(x, y, setting);
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Obtains the panel size.
+        /// 
+        /// パネルのサイズを取得します。
+        /// </summary>
+        private static Vector2 GetPanelSize(Point movieSize, StageSetting setting)
+        {
+            Vector2 panelSize = new Vector2();
+
+            panelSize.X = movieSize.X / setting.Divide.X;
+            panelSize.Y = movieSize.Y / setting.Divide.Y;
+
+            // Aligns with minimum value if rotation is on.
+            // 
+            // 回転ありの場合は最小値にあわせます。
+            if (setting.Rotate == StageSetting.RotateMode.On)
+            {
+                // Splits into squares.
+                // 
+                // 正方形に分割します。
+                float size = (panelSize.X < panelSize.Y) ? panelSize.X : panelSize.Y;
+                panelSize.X = size;
+                panelSize.Y = size;
+            }
+
+            return panelSize;
+        }
+
+
+        /// <summary>
+        /// Obtains panel information.
+        /// 
+        /// パネル情報を取得します。
+        /// </summary>
+        private PanelData GetPanelData(int x, int y, StageSetting setting)
+        {
+            PanelData panel = new PanelData(game);
+            panel.Id = y + (x * setting.Divide.Y);
+            panel.Size = new Vector2((int)PanelSize.X, (int)PanelSize.Y);
+
+            Vector2 texturePosition = new Vector2();
+            texturePosition.X = (int)(PanelArea.X + (x * panel.Size.X));
+            texturePosition.Y = (int)(PanelArea.Y + (y * panel.Size.Y));
+            panel.TexturePosition = texturePosition;
+
+            panel.Position = texturePosition;
+            panel.Origin = panel.Size * 0.5f;
+
+            return panel;
+        }
+
+
+        /// <summary>
+        /// Obtains the number of completed panels.
+        /// 
+        /// パネル完成枚数を取得します。
+        /// </summary>
+        public int PanelCompleteCount(StageSetting setting)
+        {
+            int value = 0;
+            for (int x = 0; x < setting.Divide.X; x++)
+            {
+                for (int y = 0; y < setting.Divide.Y; y++)
+                {
+                    int id = (y + (x * setting.Divide.Y));
+                    PanelData panel = panels[x, y];
+                    if (panel.Rotate == 0 && panel.Id == id)
+                    {
+                        value++;
+                    }
+                }
+            }
+
+            return value;
+        }
+
+
+        /// <summary>
+        /// Obtains the number of remaining panels.
+        ///
+        /// パネル残り枚数を取得します。
+        /// </summary>
+        public int PanelRestCount(StageSetting setting)
+        {
+            return ((setting.Divide.X * setting.Divide.Y) - PanelCompleteCount(setting));
+        }
+
+
+        /// <summary>
+        /// Obtains the completion ratio.
+        /// 
+        /// 完成率を取得します。
+        /// </summary>
+        public float PanelCompleteRatio(StageSetting setting)
+        {
+            Point divide = setting.Divide;
+            float complete = (float)PanelCompleteCount(setting);
+            float totalPanel = (float)(divide.X * divide.Y);
+
+            return (complete / totalPanel) * 100;
+        }
+
+
+        /// <summary>
+        /// Checks the panel completion status and obtains the list.
+        /// 
+        /// パネルの完成状態をチェックし、リストを取得します。
+        /// </summary>
+        /// <returns>Newly completed panels list</returns>
+        ///  
+        /// <returns>新しく完成したパネルのリスト</returns>
+        public List<PanelData> PanelCompleteCheck(StageSetting setting)
+        {
+            List<PanelData> list = new List<PanelData>();
+
+            for (int x = 0; x < setting.Divide.X; x++)
+            {
+                for (int y = 0; y < setting.Divide.Y; y++)
+                {
+                    int id = (y + (x * setting.Divide.Y));
+                    if (panels[x, y].Enabled == true &&
+                        (MathHelper.ToDegrees(panels[x, y].Rotate) % 360) == 0 &&
+                        panels[x, y].Id == id)
+                    {
+                        PanelData panel = panels[x, y];
+
+                        list.Add(panel);
+
+                        panel.Flush = -256;
+
+                        if (setting.Style != StageSetting.StyleList.Revolve &&
+                            setting.Style != StageSetting.StyleList.Slide)
+                        {
+                            panel.Enabled = false;
+                        }
+                    }
+                }
+            }
+
+            return list;
+        }
+
+
+        /// <summary>
+        /// Obtains completed panels at random.
+        /// 
+        /// 完成されているパネルをランダムで取得します。
+        /// </summary>
+        public Point GetRandomPanel(StageSetting setting)
+        {
+            Random rnd = new Random();
+            List<Point> list = new List<Point>();
+            Point value = new Point();
+
+            for (int x = 0; x < setting.Divide.X; x++)
+            {
+                for (int y = 0; y < setting.Divide.Y; y++)
+                {
+                    int id = (y + (x * setting.Divide.Y));
+                    if (panels[x, y].Enabled == true &&
+                        (MathHelper.ToDegrees(panels[x, y].Rotate) % 360) == 0 &&
+                        panels[x, y].Id == id)
+                    {
+                        list.Add(new Point(x, y));
+                    }
+                }
+            }
+
+
+            if (list.Count == 0)
+            {
+                // If there are no completed panels, panels
+                // are obtained at random from the entire pool.
+                // 
+                // 完成されたパネルが無ければ、全てのパネルから
+                // ランダムで取得します。
+                value.X = rnd.Next(setting.Divide.X);
+                value.Y = rnd.Next(setting.Divide.Y);
+            }
+            else
+            {
+                // If the list contains completed panels, 
+                // panels are obtained at random from the list.
+                //
+                // 完成されたパネルがリストに存在していれば、
+                // その中からランダムで取得します。
+                int id = rnd.Next(list.Count);
+                value = list[id];
+            }
+
+            // Limits the range of movement in Revolve Mode.
+            // 
+            // リボルヴモードの場合は移動範囲を制限します。
+            if (setting.Style == StageSetting.StyleList.Revolve)
+            {
+                value.X = (int)MathHelper.Clamp(value.X, 0, setting.Divide.X - 2);
+                value.Y = (int)MathHelper.Clamp(value.Y, 0, setting.Divide.Y - 2);
+            }
+
+            return value;
+        }
+        #endregion
+    }
+}

+ 2375 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/PuzzleComponent.cs

@@ -0,0 +1,2375 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// PuzzleComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Animation;
+using Movipa.Components.Input;
+using Movipa.Components.Scene.Puzzle.Style;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle
+{
+    /// <summary>
+    /// Scene Component for processing the puzzle.
+    /// Invoked in both Normal Mode and Free Mode, it
+    /// changes the processing within individual methods.
+    /// ChangeComponent, RevolveComponent and SlideComponent inherited
+    /// from StyleBase are used to interchange panels.
+    /// This component is created using the CreateStyleComponent method.
+    /// 
+    /// パズルの処理をするシーンコンポーネントです。
+    /// ノーマルモードと、フリーモード共通で呼び出され、
+    /// 各メソッド内で処理内容を変更しています。
+    /// パネルの入れ替え処理には、StyleBaseを継承したChangeComponent、
+    /// RevolveComponent、SlideComponentを使用します。
+    /// このコンポーネントの作成にはCreateStyleComponentメソッドを使用しています。
+    /// </summary>
+    public class PuzzleComponent : SceneComponent
+    {
+        #region Public Types
+        /// <summary>
+        /// Game status
+        /// 
+        /// ゲームの状態
+        /// </summary>
+        public enum Phase
+        {
+            /// <summary>
+            /// Display name and number of stages 
+            /// 
+            /// ステージ数と名前表示
+            /// </summary>
+            StageTitle,
+
+            /// <summary>
+            /// Display completed diagram
+            /// 
+            /// 完成図表示
+            /// </summary>
+            FirstPreview,
+
+            /// <summary>
+            /// Shuffle initial panels
+            ///
+            /// 初期パネルのシャッフル
+            /// </summary>
+            Shuffle,
+
+            /// <summary>
+            /// Start countdown
+            ///
+            /// 開始カウントダウン
+            /// </summary>
+            CountDown,
+
+            /// <summary>
+            /// Panel select
+            ///
+            /// パネルセレクト
+            /// </summary>
+            PanelSelect,
+
+            /// <summary>
+            /// Panel action
+            ///
+            /// パネル移動演出
+            /// </summary>
+            PanelAction,
+
+            /// <summary>
+            /// Completed judgment 
+            ///
+            /// 完成判定
+            /// </summary>
+            Judge,
+
+            /// <summary>
+            /// Completed
+            ///
+            /// 完成演出
+            /// </summary>
+            Complete,
+
+            /// <summary>
+            /// Time over
+            ///
+            /// タイムオーバー演出
+            /// </summary>
+            Timeover,
+        };
+
+
+        /// <summary>
+        /// Paused cursor select status 
+        /// 
+        /// ポーズ中のカーソル選択状態
+        /// </summary>
+        public enum PauseCursor
+        {
+            /// <summary>
+            /// Return to game
+            ///
+            /// ゲームに戻る
+            /// </summary>
+            ReturnToGame,
+
+            /// <summary>
+            /// Return to title
+            ///
+            /// タイトルに戻る
+            /// </summary>
+            GoToTitle,
+
+            /// <summary>
+            /// Count
+            /// 
+            /// カウント用
+            /// </summary>
+            Count
+        };
+        #endregion
+
+        #region Private Types
+        /// <summary>
+        /// Position list
+        ///
+        /// ポジションリスト
+        /// </summary>
+        enum PositionList
+        {
+            /// <summary>
+            /// Preview
+            ///
+            /// プレビュー
+            /// </summary>
+            Preview,
+
+            /// <summary>
+            /// Movie
+            ///
+            /// ムービー
+            /// </summary>
+            Movie,
+
+            /// <summary>
+            /// Score
+            ///
+            /// スコア
+            /// </summary>
+            Score,
+
+            /// <summary>
+            /// Time
+            ///
+            /// タイム
+            /// </summary>
+            Time,
+
+            /// <summary>
+            /// Number remaining
+            ///
+            /// 残り数
+            /// </summary>
+            Rest,
+
+            /// <summary>
+            /// Help icon
+            ///
+            /// ヘルプアイコン
+            /// </summary>
+            HelpIcon,
+        }
+        #endregion
+
+        #region Fields
+        // Seconds for first preview shown
+        // 
+        // 最初に表示するプレビューの秒数
+        private readonly TimeSpan FirstPreviewTime = new TimeSpan(0, 0, 3);
+
+        // Seconds to stop animation in help item
+        // 
+        // ヘルプアイテムでアニメーションを止める秒数
+        private readonly TimeSpan HelpItemTime = new TimeSpan(0, 0, 3);
+
+        /// <summary>
+        /// Preview zoom speed
+        /// 
+        /// プレビュー拡大縮小速度
+        /// </summary>
+        private const float ThumbZoomSpeed = 0.05f;
+
+        /// <summary>
+        /// Score when aligned in single
+        ///
+        /// シングルで揃った時のスコア
+        /// </summary>
+        private const int ScoreSingle = 10;
+
+        /// <summary>
+        /// Score when aligned in double
+        ///
+        /// ダブルで揃った時のスコア
+        /// </summary>
+        private const int ScoreDouble = 50;
+
+        /// <summary>
+        /// Bonus score for help item
+        ///
+        /// ヘルプアイテムのボーナススコア
+        /// </summary>
+        private const int ScoreHelpItem = 100;
+
+        /// <summary>
+        /// Help item count
+        ///
+        /// ヘルプアイテムの所持数
+        /// </summary>
+        private const int HelpItemCount = 3;
+
+        // Components
+        private StyleBase style;
+        private FadeSeqComponent fade;
+
+        // Processing status
+        // 
+        // 処理状態
+        private Phase phase;
+
+        // Display time for first preview shown
+        // 
+        // 最初に表示するプレビューの表示時間
+        private TimeSpan firstPreviewTime;
+
+        // Play time
+        //
+        // プレイ時間
+        private TimeSpan playTime;
+
+        // Movie rectangle vertices list
+        // 
+        // ムービー矩形の頂点リスト
+        private Vector2[] movieFramePosition;
+
+        // Rectangle list of movie excluding panels 
+        // 
+        // パネルを除いたムービーの矩形リスト
+        private Rectangle[] movieFrameSrc;
+
+        // Preview zoom status
+        // 
+        // プレビューのズーム状態
+        private bool thumbZoom;
+
+        // Preview zoom ratio
+        // 
+        // プレビューの拡大率
+        private float thumbZoomRate;
+
+        // Movie display rectangle
+        // 
+        // ムービーの表示矩形
+        private Rectangle movieRect;
+
+        // Preview display rectangle
+        // 
+        // プレビューの表示矩形
+        private Rectangle movieThumbRect;
+
+        // Popup score sprite list
+        // 
+        // ポップアップスコアのスプライトリスト
+        private List<SpriteScorePopup> scorePopupList;
+
+        // Current score
+        // 
+        // 現在のスコア
+        private int score;
+
+        // Displayed score
+        // 
+        // 表示するスコア
+        // Defined separately for addition animation.
+        // 
+        // 加算アニメーションの為に別にしている。
+        private int scoreView;
+
+        // Remaining shuffle count
+        // 
+        // シャッフルの残り回数
+        private int shuffleCount;
+
+        // Pause status
+        // 
+        // ポーズ状態
+        private bool isPause;
+
+        // Paused cursor position
+        // 
+        // ポーズのカーソル位置
+        private PauseCursor pauseCursor;
+
+        // Cross-fade color
+        // 
+        // クロスフェード用カラー
+        private Vector4 completeColor;
+
+        // Cross-fade texture
+        // 
+        // クロスフェード用テクスチャ
+        private ResolveTexture2D resolveTexture = null;
+
+        // Stage information 
+        // 
+        // ステージ情報
+        private StageSetting setting;
+
+        // Play result
+        // 
+        // プレイ結果
+        private StageResult result;
+
+        // Panel manager class
+        // 
+        // パネル管理クラス
+        private PanelManager panelManager;
+
+        // Background texture
+        // 
+        // 背景テクスチャ
+        private Texture2D wallpaperTexture;
+
+        // Cursor position
+        // 
+        // カーソル位置
+        private Point cursor = new Point();
+
+        // BackgroundMusic
+        private Cue bgm;
+
+        // Movie animation
+        // 
+        // ムービーアニメーション
+        private PuzzleAnimation movie;
+
+        // Movie animation texture
+        // 
+        // ムービーアニメーションのテクスチャ
+        private Texture2D movieTexture;
+
+        // Help item count
+        // 
+        // ヘルプアイテムの所持数
+        private int helpItemCount;
+
+        // Help item stop time
+        // 
+        // ヘルプアイテムの停止時間
+        private TimeSpan helpItemTime;
+
+        // Layout
+        private SceneData sceneData;
+        private SequencePlayData seqMainFrame;
+        private SequencePlayData seqCountDown;
+        private SequencePlayData seqTimeUp;
+        private SequencePlayData seqHelpIcon;
+        private SequencePlayData seqRefStart;
+        private SequencePlayData seqRefLoop;
+        private SequencePlayData seqRefNaviStart;
+        private SequencePlayData seqRefNaviLoop;
+        private SequencePlayData seqRefReturnToGameOn;
+        private SequencePlayData seqRefGoToTitleOn;
+        private SequencePlayData seqStage;
+        private SequencePlayData seqComplete;
+
+        // Position list
+        // 
+        // ポジションリスト
+        private Dictionary<PositionList, Vector2> positions;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains or sets the processing status.
+        /// 
+        /// 処理状態を取得または設定します。
+        /// </summary>
+        public Phase GamePhase
+        {
+            get { return phase; }
+            set { phase = value; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public PuzzleComponent(Game game, StageSetting stageSetting)
+            : base(game)
+        {
+            setting = stageSetting;
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        ///
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the processing status. 
+            // In Normal Mode, sets to stage display.
+            // 
+            // 処理状態の初期設定を行います。
+            // ノーマルモードの場合はステージを表示する処理に設定します。
+            GamePhase = (setting.Mode == StageSetting.ModeList.Normal) ?
+                Phase.StageTitle : Phase.FirstPreview;
+
+            // Initializes the member variables.
+            // 
+            // メンバ変数の初期化を行います。
+            score = 0;
+            scoreView = 0;
+            result = new StageResult();
+            isPause = false;
+            playTime = new TimeSpan();
+            firstPreviewTime = FirstPreviewTime;
+            helpItemCount = HelpItemCount;
+            helpItemTime = new TimeSpan();
+            thumbZoomRate = 1.0f;
+            thumbZoom = true;
+            completeColor = Vector4.One;
+
+            // Sets the shuffle count.
+            // The shuffle count is twice the total number of panels.
+            // 
+            // シャッフルする回数を設定します。
+            // シャッフル回数は総パネル数を2倍した数値です。
+            shuffleCount = (setting.Divide.X * setting.Divide.Y) * 2;
+
+            // Creates the panel management class.
+            // 
+            // パネル管理クラスを作成します。
+            panelManager = new PanelManager(Game);
+
+            // Creates the panel.
+            // 
+            // パネルを作成します。
+            panelManager.CreatePanel(GameData.MovieSizePoint, setting);
+
+            // Adds the component for interchanging panels.
+            // 
+            // パネルを入れ替えるコンポーネントを追加します。
+            style = CreateStyleComponent();
+            AddComponent(style);
+
+            // Sets to No Drawing on the component side.
+            // 
+            // コンポーネント側で描画しない設定をします。
+            style.Visible = false;
+
+            // Creates the popup score sprite array.
+            // 
+            // ポップアップするスコアのスプライト配列を作成します。
+            scorePopupList = new List<SpriteScorePopup>();
+
+            // Obtains the fade component instance. 
+            // 
+            // フェードコンポーネントのインスタンスを取得します。
+            fade = GameData.FadeSeqComponent;
+
+            // Sets the fade-in processing.
+            // 
+            // フェードインの処理を設定します。
+            fade.Start(FadeType.Normal, FadeMode.FadeIn);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        /// 
+        /// コンテントを読み込みます。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the background texture.
+            // 
+            // 背景のテクスチャを読み込みます。
+            string asset = "Textures/Wallpaper/Wallpaper_006";
+            wallpaperTexture = Content.Load<Texture2D>(asset);
+
+            // Initializes the sequence.
+            // 
+            // シーケンスの初期化を行います。
+            InitializeSequence();
+
+            // Initializes the movie.
+            // 
+            // ムービーの初期化を行います。
+            InitializeMovie();
+
+            // Plays the BackgroundMusic and obtains the Cue.
+            // 
+            // BackgroundMusicを再生し、Cueを取得します。
+            bgm = GameData.Sound.PlayBackgroundMusic(Sounds.GameBackgroundMusic);
+            
+            base.LoadContent();
+        }
+
+
+        /// <summary>
+        /// Initializes the sequence.
+        /// 
+        /// シーケンスの初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            // Loads the SceneData.
+            // 
+            // SceneDataを読み込みます。
+            string asset = "Layout/game/game_Scene";
+            sceneData = Content.Load<SceneData>(asset);
+
+            // Creates the sequence.
+            // 
+            // シーケンスを作成します。
+            string name = (setting.Mode == StageSetting.ModeList.Normal) ?
+                "GameNormal" : "GameFree";
+            seqMainFrame = sceneData.CreatePlaySeqData(name);
+
+            seqCountDown = sceneData.CreatePlaySeqData("StartCount");
+            seqTimeUp = sceneData.CreatePlaySeqData("TimeUp");
+            seqHelpIcon = sceneData.CreatePlaySeqData("HelpIcon");
+            seqRefStart = sceneData.CreatePlaySeqData("RefStart");
+            seqRefLoop = sceneData.CreatePlaySeqData("RefLoop");
+            seqRefReturnToGameOn = sceneData.CreatePlaySeqData("RefReturnToGameOn");
+            seqRefGoToTitleOn = sceneData.CreatePlaySeqData("RefGoToTitleOn");
+            seqStage = sceneData.CreatePlaySeqData("Stage");
+            seqComplete = sceneData.CreatePlaySeqData("Complete");
+
+            // Creates the sequence in accordance with the style.
+            // 
+            // スタイルに応じたシーケンスを作成します。
+            if (setting.Style == StageSetting.StyleList.Change &&
+                setting.Rotate == StageSetting.RotateMode.On)
+            {
+                seqRefNaviStart = sceneData.CreatePlaySeqData("RefChangeRotateStart");
+                seqRefNaviLoop = sceneData.CreatePlaySeqData("RefChangeRotateLoop");
+            }
+            else if (setting.Style == StageSetting.StyleList.Change &&
+                setting.Rotate == StageSetting.RotateMode.Off)
+            {
+                seqRefNaviStart = sceneData.CreatePlaySeqData("RefChangeStart");
+                seqRefNaviLoop = sceneData.CreatePlaySeqData("RefChangeLoop");
+            }
+            else if (setting.Style == StageSetting.StyleList.Revolve)
+            {
+                seqRefNaviStart = sceneData.CreatePlaySeqData("RefRevolveStart");
+                seqRefNaviLoop = sceneData.CreatePlaySeqData("RefRevolveLoop");
+            }
+            else if (setting.Style == StageSetting.StyleList.Slide)
+            {
+                seqRefNaviStart = sceneData.CreatePlaySeqData("RefSlideStart");
+                seqRefNaviLoop = sceneData.CreatePlaySeqData("RefSlideLoop");
+            }
+
+            // Replays the sequence.
+            // 
+            // シーケンスをリプレイします。
+            seqCountDown.Replay();
+            seqTimeUp.Replay();
+            seqComplete.Replay();
+
+            // Loads the position.
+            // 
+            // ポジションを読み込みます。
+            positions = new Dictionary<PositionList, Vector2>();
+            PatternGroupData patternGroup;
+            PatternObjectData patternObject;
+            Point point;
+
+            // Obtains the pattern group.
+            // 
+            // パターングループを取得します。
+            patternGroup = sceneData.PatternGroupDictionary["Main_Pos"];
+
+            // Obtains the preview position.
+            // 
+            // プレビューのポジションを取得します。
+            patternObject = patternGroup.PatternObjectList[0];
+            point = patternObject.Position;
+            positions.Add(PositionList.Preview, new Vector2(point.X, point.Y));
+            movieThumbRect = new Rectangle(
+                point.X,
+                point.Y,
+                (int)(patternObject.Rect.Width * patternObject.Scale.X),
+                (int)(patternObject.Rect.Height * patternObject.Scale.Y));
+
+
+            // Obtains the movie position.
+            // 
+            // ムービーのポジションを取得します。
+            patternObject = patternGroup.PatternObjectList[1];
+            point = patternObject.Position;
+            positions.Add(PositionList.Movie, new Vector2(point.X, point.Y));
+            movieRect = new Rectangle(
+                point.X,
+                point.Y,
+                (int)(patternObject.Rect.Width * patternObject.Scale.X),
+                (int)(patternObject.Rect.Height * patternObject.Scale.Y));
+
+            // Obtains the score position.
+            // 
+            // スコアのポジションを取得します。
+            point = patternGroup.PatternObjectList[2].Position;
+            positions.Add(PositionList.Score, new Vector2(point.X, point.Y));
+
+            // Obtains the time position.
+            // 
+            // タイムのポジションを取得します。
+            point = patternGroup.PatternObjectList[3].Position;
+            positions.Add(PositionList.Time, new Vector2(point.X, point.Y));
+
+            // Obtains the remaining panel count position.
+            // 
+            // 残りパネル数のポジションを取得します。
+            point = patternGroup.PatternObjectList[4].Position;
+            positions.Add(PositionList.Rest, new Vector2(point.X, point.Y));
+
+            // Obtains the help icon position.
+            // 
+            // ヘルプアイコンのポジションを取得します。
+            point = patternGroup.PatternObjectList[5].Position;
+            positions.Add(PositionList.HelpIcon, new Vector2(point.X, point.Y));
+        }
+
+
+        /// <summary>
+        /// Initializes the movie.
+        /// 
+        /// ムービーの初期化を行います。
+        /// </summary>
+        private void InitializeMovie()
+        {
+            // Loads movie information.
+            // 
+            // ムービーの情報を読み込みます。
+            AnimationInfo info = Content.Load<AnimationInfo>(setting.Movie);
+
+            // Adds movie components.
+            // 
+            // ムービーのコンポーネントを追加します。
+            movie = CreateMovie(info);
+            AddComponent(movie);
+
+            // Turns automatic movie updating off.
+            //
+            // ムービーを自動で更新しないように設定します。
+            movie.Enabled = false;
+
+            // Obtains the movie outer rectangle.
+            // 
+            // ムービー外の矩形を取得します。
+            movieFramePosition = GetMovieFramePosition();
+            movieFrameSrc = GetMovieFrameSource();
+
+            // Sets the panel draw position offset.
+            // 
+            // パネル描画位置のオフセットを設定します。
+            panelManager.DrawOffset = positions[PositionList.Movie];
+        }
+
+
+        /// <summary>
+        /// Creates the screen back buffer.
+        /// 
+        /// 画面のバックバッファを作成します。
+        /// </summary>
+        private void InitializeBackBuffer()
+        {
+            PresentationParameters pp = GraphicsDevice.PresentationParameters;
+
+            resolveTexture = new ResolveTexture2D(
+                GraphicsDevice,
+                pp.BackBufferWidth,
+                pp.BackBufferHeight,
+                1,
+                pp.BackBufferFormat);
+        }
+
+
+        /// <summary>
+        /// Releases all content.
+        ///
+        /// 全てのコンテントを開放します。
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // Stops the BackgroundMusic.
+            // 
+            // BackgroundMusicを停止します。
+            SoundComponent.Stop(bgm);
+
+            base.UnloadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Updates the sequence.
+            // 
+            // シーケンスの更新処理を行います。
+            UpdateSequence(gameTime);
+
+            // Updates the preview.
+            //
+            // プレビューの更新処理を行います。
+            UpdatePreview();
+
+            // Updates the movie.
+            // 
+            // ムービーの更新処理を行います。
+            UpdateMovie(gameTime);
+
+            // Updates the score.
+            // 
+            // スコアの更新処理を行います。
+            UpdateScore(gameTime);
+
+            if (fade.FadeMode == FadeMode.FadeIn)
+            {
+                // Sets to Main Processing after the fade-in finishes.
+                // 
+                // フェードインが終了したら、メインの処理に設定します。
+                if (!fade.IsPlay)
+                {
+                    fade.FadeMode = FadeMode.None;
+                }
+            }
+            else if (fade.FadeMode == FadeMode.None)
+            {
+                // Performs main update processing.
+                // 
+                // メインの更新処理を行います。
+                UpdateMain(gameTime);
+            }
+            else if (fade.FadeMode == FadeMode.FadeOut)
+            {
+                // Performs update processing at fade-out.
+                // 
+                // フェードアウト時の更新処理を行います。
+                UpdateFadeOut();
+            }
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            // Updates the background sequence.
+            // 
+            // 背景のシーケンスを更新します。
+            seqMainFrame.Update(gameTime.ElapsedGameTime);
+
+            // Updates the help icon sequence.
+            // 
+            // ヘルプアイコンのシーケンスを更新します。
+            seqHelpIcon.Update(gameTime.ElapsedGameTime);
+
+            // Updates the pause screen sequence. 
+            // 
+            // ポーズ画面のシーケンスを更新します。
+            seqRefStart.Update(gameTime.ElapsedGameTime);
+            seqRefLoop.Update(gameTime.ElapsedGameTime);
+            seqRefNaviStart.Update(gameTime.ElapsedGameTime);
+            seqRefNaviLoop.Update(gameTime.ElapsedGameTime);
+            seqRefReturnToGameOn.Update(gameTime.ElapsedGameTime);
+            seqRefGoToTitleOn.Update(gameTime.ElapsedGameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the preview.
+        /// 
+        /// プレビューの更新処理を行います。
+        /// </summary>
+        private void UpdatePreview()
+        {
+            float zoomRate = (thumbZoom) ? ThumbZoomSpeed : -ThumbZoomSpeed;
+            thumbZoomRate = MathHelper.Clamp(thumbZoomRate + zoomRate, 0.0f, 1.0f);
+        }
+
+
+        /// <summary>
+        /// Updates the movie. 
+        /// 
+        /// ムービーの更新処理を行います。
+        /// </summary>
+        private void UpdateMovie(GameTime gameTime)
+        {
+            GameTime time;
+
+            // Reduces the hint item elapsed time.
+            // 
+            // ヒントアイテムの使用時間を減らします。
+            helpItemTime -= gameTime.ElapsedGameTime;
+
+            // If the hint time is greater than 0, the movie update time is set to zero.
+            // If the hint time is negative, the normal update time is set.
+            // 
+            // ヒントタイムが0より多ければ、ムービーの更新時間をゼロに設定します。
+            // ヒントタイムがマイナスならば、通常の更新時間を設定します。
+            time = (helpItemTime <= TimeSpan.Zero) ? gameTime : new GameTime();
+
+            // Updates the movie.
+            // 
+            // ムービーを更新します。
+            movie.Update(time);
+        }
+
+
+        /// <summary>
+        /// Performs update processing at fade-out.
+        /// 
+        /// フェードアウト時の更新処理を行います。
+        /// </summary>
+        private void UpdateFadeOut()
+        {
+            // Sets the BackgroundMusic volume.
+            // 
+            // BackgroundMusicのボリュームを設定します。
+            float volume = 1.0f - (GameData.FadeSeqComponent.Count / 60.0f);
+            SoundComponent.SetVolume(bgm, volume);
+
+            // Performs release processing when the fade-out has finished.
+            // 
+            // フェードアウトが終了したら開放処理を行います。
+            if (!fade.IsPlay)
+            {
+                Dispose();
+            }
+        }
+
+
+
+
+        /// <summary>
+        /// Performs main update processing.
+        /// 
+        /// メインの更新処理を行います。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        /// <returns></returns>
+        public void UpdateMain(GameTime gameTime)
+        {
+            // Determines the pause.
+            // 
+            // ポーズの判定をします。
+            if (isPause)
+            {
+                // Performs update processing during pause.
+                // 
+                // ポーズ中の更新処理を行います。
+                UpdatePause();
+                return;
+            }
+            else
+            {
+                // Checks the pause button status, and sets to Pause 
+                // if it has been pressed.
+                // 
+                // ポーズボタンが押されたかチェックし、
+                // 押されていればポーズの設定を行います。
+                if (CheckPause())
+                {
+                    return;
+                }
+            }
+
+            if (GamePhase == Phase.StageTitle)
+            {
+                // Performs update processing when the number of stages 
+                // and the name are displayed. 
+                // 
+                // ステージ数を名前を表示しているときの更新処理を行います。
+                UpdateStageTitle(gameTime);
+            }
+            else if (GamePhase == Phase.FirstPreview)
+            {
+                // Performs update processing to display the completed picture preview.
+                // 
+                // 完成図のプレビューを表示する更新処理を行います。
+                UpdateFirstPreview(gameTime);
+            }
+            else if (GamePhase == Phase.Shuffle)
+            {
+                // Performs update processing at panel shuffle.
+                //
+                // パネルシャッフル時の更新処理を行います。
+                UpdateShuffle();
+            }
+            else if (GamePhase == Phase.CountDown)
+            {
+                // Performs update processing during countdown.
+                // 
+                // カウントダウン中の更新処理を行います。
+                UpdateCountDown(gameTime);
+            }
+            else if (GamePhase == Phase.PanelSelect)
+            {
+                // Performs update processing at panel selection.
+                // 
+                // パネル選択時の更新処理を行います。
+                UpdatePanelSelect(gameTime);
+            }
+            else if (GamePhase == Phase.PanelAction)
+            {
+                // Performs updates processing during panel action.
+                // 
+                // パネル動作中の更新処理を行います。
+                UpdatePanelAction();
+            }
+            else if (GamePhase == Phase.Judge)
+            {
+                // Performs update processing to judge panels.
+                // 
+                // パネルの判定をする更新処理を行います。
+                UpdateJudge();
+            }
+            else if (GamePhase == Phase.Complete)
+            {
+                // Performs update processing at completion.
+                // 
+                // 完成時の更新処理を行います。
+                UpdateComplete(gameTime);
+            }
+            else if (GamePhase == Phase.Complete)
+            {
+                // Performs update processing at completion.
+                // 
+                // 完成時の更新処理を行います。
+                UpdateComplete(gameTime);
+            }
+            else if (GamePhase == Phase.Timeover)
+            {
+                // Performs update processing at time over.
+                // 
+                // タイムオーバー時の更新処理を行います。
+                UpdateTimeOver(gameTime);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing when the number of stages 
+        /// and the name are displayed.
+        /// 
+        /// ステージ数を名前を表示しているときの更新処理を行います。
+        /// </summary>
+        public void UpdateStageTitle(GameTime gameTime)
+        {
+            seqStage.Update(gameTime.ElapsedGameTime);
+
+            // Sets to Initial Preview Processing after sequence playback finishes.
+
+            // 
+            // シーケンスの再生が終了したら、最初のプレビュー処理に設定します。
+            if (!seqStage.IsPlay)
+            {
+                GamePhase = Phase.FirstPreview;
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing to display completed picture preview.
+        /// 
+        /// 完成図のプレビューを表示する更新処理を行います。
+        /// </summary>
+        public void UpdateFirstPreview(GameTime gameTime)
+        {
+            // Reduces the display time.
+            // 
+            // 表示時間を減らします。
+            firstPreviewTime -= gameTime.ElapsedGameTime;
+
+            if (firstPreviewTime < TimeSpan.Zero)
+            {
+                // Sets the thumbnail to reduced size.
+                // 
+                // サムネイルを縮小に設定します。
+                if (thumbZoom)
+                {
+                    thumbZoom = false;
+                }
+
+                // Sets processing status to Shuffle after 
+                // thumbnail reduction has finished.
+                // 
+                // サムネイルの縮小が完了したら処理状態をシャッフルに設定します。
+                if (thumbZoomRate == 0.0f)
+                {
+                    GamePhase = Phase.Shuffle;
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing at panel shuffle.
+        /// 
+        /// パネルシャッフル時の更新処理を行います。
+        /// </summary>
+        public void UpdateShuffle()
+        {
+            // Obtains the number of completed panels.
+            // 
+            // 完成枚数を取得します。
+            int complete = panelManager.PanelCompleteCount(setting);
+
+            // Checks to see if all shuffles are completed.
+            // 
+            // 全てのシャッフルが完了したかチェックします。
+            if (shuffleCount == 0 && complete == 0)
+            {
+                // Performs the panel judgment and sets the processing status
+                // to Countdown.
+                // 
+                // パネルの判定をし、処理状態をカウントダウンに設定します。
+                panelManager.PanelCompleteCheck(setting);
+
+                GamePhase = Phase.CountDown;
+            }
+
+            // Shuffles the panels.
+            // 
+            // パネルをシャッフルします。
+            if (style.RandomShuffle())
+            {
+                // Reduces the shuffle count.
+                // 
+                // シャッフル回数を減らします。
+                if (shuffleCount > 0)
+                {
+                    shuffleCount--;
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing during countdown.
+        /// 
+        /// カウントダウン中の更新処理を行います。
+        /// </summary>
+        public void UpdateCountDown(GameTime gameTime)
+        {
+            seqCountDown.Update(gameTime.ElapsedGameTime);
+
+            // Sets the processing status to Panel Selection
+            // after the sequence finishes.
+            // 
+            // シーケンスが終了したら処理状態をパネルの選択に設定します。
+            if (!seqCountDown.IsPlay)
+            {
+                // Enables panel selection.
+                // 
+                // パネルの選択を可能にします。
+                style.SelectEnabled = true;
+
+                GamePhase = Phase.PanelSelect;
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing at panel selection.
+        /// 
+        /// パネル選択時の更新処理を行います。
+        /// </summary>
+        public void UpdatePanelSelect(GameTime gameTime)
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            // Updates the play time. 
+            // 
+            // プレイタイムの更新処理を行います。
+            UpdatePlayTime(gameTime);
+
+            // Performs time limit judgment.
+            // 
+            // タイムリミットの判定を行います。
+            if (IsTimeLimit())
+            {
+                // Sets to the same value as the time limit 
+                // to prevent a negative time readout.
+                // 
+                // タイム表記がマイナスに行かないように、
+                // 制限時間と同じ値を設定します。
+                playTime = setting.TimeLimit;
+
+                // Sets the processing status to Time Over.
+                //
+                // 処理状態をタイムオーバーに設定します。
+                GamePhase = Phase.Timeover;
+            }
+
+            // Changes the processing status if the panel is currently in action.
+            // 
+            // パネルが動作中ならば、処理状態を変更します。
+            if (style.IsPanelAction)
+            {
+                GamePhase = Phase.PanelAction;
+            }
+
+            // Uses the help item.
+            //
+            // ヘルプアイテムを使用します。
+            if (buttons.LeftShoulder[VirtualKeyState.Push])
+            {
+                UseHelpItem();
+            }
+
+            // Sets the thumbnail size status.
+            // 
+            // サムネイルのズーム状態を設定します。
+            thumbZoom = buttons.RightShoulder[VirtualKeyState.Press];
+        }
+
+
+        /// <summary>
+        /// Updates the play time.
+        /// 
+        /// プレイタイムの更新処理を行います。
+        /// </summary>
+        private void UpdatePlayTime(GameTime gameTime)
+        {
+            playTime += gameTime.ElapsedGameTime;
+            result.ClearTime = playTime;
+            if (setting.Mode == StageSetting.ModeList.Normal)
+            {
+                GameData.SaveData.TotalPlayTime += gameTime.ElapsedGameTime;
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing during panel actions.
+        /// 
+        /// パネル動作中の更新処理を行います。
+        /// </summary>
+        public void UpdatePanelAction()
+        {
+            // Sets the processing status to Judge after the panel actions finish.
+            // 
+            // パネルの動作が完了したら、処理状態を判定に設定します。
+            if (!style.IsPanelAction)
+            {
+                GamePhase = Phase.Judge;
+            }
+        }
+
+
+        /// <summary>
+        /// Updates panel judgment.
+        /// 
+        /// パネルの判定をする更新処理を行います。
+        /// </summary>
+        public void UpdateJudge()
+        {
+            // Obtains the newly completed panel list.
+            // 
+            // 新たに完成されたパネルのリストを取得します。
+            List<PanelData> list = panelManager.PanelCompleteCheck(setting);
+
+            // Plays the SoundEffect if all panels are prepared.
+            // 
+            // パネルが揃っていればSoundEffectを再生します。
+            if (list.Count > 0)
+            {
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+            }
+
+            // Checks the number of prepared panels.
+            // 
+            // 揃った個数をチェックします。
+            if (list.Count == 1)
+            {
+                PanelCompleteSingle(list);
+            }
+            else if (list.Count == 2)
+            {
+                PanelCompleteDouble(list);
+            }
+
+            // Sets the processing status to Completed if all panels are complete.
+            // 
+            // 全て完成したら、処理状態を完成に設定します。
+            if (panelManager.PanelCompleteRatio(setting) >= 100)
+            {
+                GamePhase = Phase.Complete;
+
+                // Disables panel selection.
+                // 
+                // パネルを選択不可に設定します。
+                style.SelectEnabled = false;
+            }
+            else
+            {
+                // If still not completed, sets the processing status to Panel Select.
+                // 
+                // まだ完成していない場合は、処理状態をパネル選択に設定します。
+                GamePhase = Phase.PanelSelect;
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing at completion.
+        /// 
+        /// 完成時の更新処理を行います。
+        /// </summary>
+        public void UpdateComplete(GameTime gameTime)
+        {
+            // Processing is not performed during score updates.
+            // 
+            // スコアが更新中なら処理をしません。
+            if (scorePopupList.Count > 0 || score != scoreView)
+                return;
+
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            // Updates the complete sequence.
+            // 
+            // コンプリートのシーケンスを更新します。
+            seqComplete.Update(gameTime.ElapsedGameTime);
+
+            // Sets the cross-fade buffer.
+            // 
+            // クロスフェード用のバッファを設定します。
+            if (resolveTexture == null)
+            {
+                // Creates the back buffer.
+                // 
+                // バックバッファの作成をします。
+                InitializeBackBuffer();
+
+                // Transfers the current screen to the back buffer.
+                // 
+                // 現在の画面をバックバッファに転送します。
+                GraphicsDevice.ResolveBackBuffer(resolveTexture);
+
+                // Plays the clear SoundEffect.
+                // 
+                // クリアのSoundEffectを再生します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectClear);
+
+                // Registers the Navigate button settings.
+                // 
+                // ナビゲートボタンの設定をします。
+                Navigate.Clear();
+                Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+            }
+
+            // Reduces the cross-fade transparency color.
+            // 
+            // クロスフェード用の透過色を下げていきます。
+            completeColor.W = MathHelper.Clamp(completeColor.W - 0.01f, 0.0f, 1.0f);
+
+            // Omits processing where transparency color still remains.
+            // 
+            // 透過色がまだ残っている場合は処理を抜けます。
+            if (completeColor.W > 0)
+                return;
+
+            // Once the performance is completely finished, the A button switches 
+            // to the results display screen.
+            // 
+            // 演出が全て終わったらAボタンで結果表示画面に遷移します。
+            if (buttons.A[VirtualKeyState.Push])
+            {
+                // Plays the SoundEffect of the Enter button.
+                // 
+                // 決定ボタンのSoundEffectを再生します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+                // Adds the bonus based on the number of help items remaining.
+                //
+                // 残りのヘルプアイテムの数に応じてボーナスを加算します。
+                result.HintScore = ScoreHelpItem * helpItemCount;
+
+                // Sets the move count.
+                // 
+                // 移動回数の設定をします。
+                result.MoveCount = style.MoveCount;
+
+                // Adds the scene for the next transition.
+                // Divides the result display classes for 
+                // Normal Mode and Free Mode. 
+                // 
+                // 次に遷移するシーンの追加をします。
+                // ノーマルモードと、フリーモードで結果表示画面の
+                // クラスをわけています。
+                SceneComponent scene;
+                if (setting.Mode == StageSetting.ModeList.Normal)
+                {
+                    scene = new Result.NormalResult(Game, result);
+                }
+                else
+                {
+                    scene = new Result.FreeResult(Game, result);
+                }
+                GameData.SceneQueue.Enqueue(scene);
+
+                // Sets the fade-out process.
+                // 
+                // フェードアウトの処理を設定します。
+                GameData.FadeSeqComponent.Start(FadeType.RotateBox, FadeMode.FadeOut);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs time over update processing.
+        /// 
+        /// タイムオーバー時の更新処理を行います。
+        /// </summary>
+        public void UpdateTimeOver(GameTime gameTime)
+        {
+            seqTimeUp.Update(gameTime.ElapsedGameTime);
+
+            // When the time over animation finishes, registers the 
+            // game over scene and sets the fade-out process.
+            // 
+            // タイムオーバーのアニメーションが終了したらゲームオーバーの
+            // シーンを登録し、フェードアウトの処理を設定します。
+            if (!seqTimeUp.IsPlay)
+            {
+                GameData.SceneQueue.Enqueue(new GameOver(Game));
+                GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeOut);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs update processing during pause.
+        /// 
+        /// ポーズ中の更新処理を行います。
+        /// </summary>
+        public void UpdatePause()
+        { 
+            // The following process is not performed while the sequence is playing.
+            // 
+            // シーケンスが再生中なら以下の処理を行いません。
+            if (seqRefNaviStart.IsPlay)
+                return;
+
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPush(buttons.B, buttons.Start))
+            {
+                // Plays the canceled SoundEffect and releases the pause status
+                // when either the B button or the start button is pressed.
+                //
+                // Bボタンか、スタートボタンが押されたらキャンセルの
+                // SoundEffectを再生し、ポーズ状態を解除します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+
+                isPause = false;
+
+                // Enables the panel selection.
+                // 
+                // パネル選択可能状態にする
+                style.SelectEnabled = true;
+            }
+            else if (buttons.A[VirtualKeyState.Push])
+            {
+                if (pauseCursor == PauseCursor.GoToTitle)
+                {
+                    // When confirmed with the A button, Return to Title
+                    // is selected, so it plays the determined SoundEffect and 
+                    // registers the title scene, then sets the fade-out process.
+                    // 
+                    // Aボタンで決定時、タイトルに戻るを選択しているので
+                    // 決定のSoundEffectを再生し、タイトルのシーンを登録してから
+                    // フェードアウトの処理を設定します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+
+                    // Adds the scene for the next transition
+                    // 
+                    // 次に遷移するシーンの追加
+                    GameData.SceneQueue.Enqueue(new Title(Game));
+                    fade.Start(FadeType.RotateBox, FadeMode.FadeOut);
+                }
+                else if (pauseCursor == PauseCursor.ReturnToGame)
+                {
+                    // When confirmed with the A button, the Return to Game
+                    // item is selected, so the behavior is the same as Cancel.
+                    // 
+                    // Aボタンで決定時、ゲームに戻る項目を選択しているので
+                    // キャンセルと同じ挙動をします。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+
+                    isPause = false;
+
+                    // Enables the panel selection.
+                    //
+                    // パネル選択可能状態にする
+                    style.SelectEnabled = true;
+                }
+            }
+            else if (InputState.IsPush(dPad.Up, leftStick.Up, dPad.Down, 
+                leftStick.Down))
+            {
+                // Moves the cursor vertically. 
+                // There are only two items, so common processing is used.
+                //
+                // 上下でカーソルを移動します。
+                // 項目が2つしかないので、共通の処理を使用します。
+
+                int count = (int)PauseCursor.Count;
+                int cursor = (int)pauseCursor;
+
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor2);
+                pauseCursor = (PauseCursor)((cursor + 1) % count);
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the score.
+        /// 
+        /// スコアの更新処理を行います。
+        /// </summary>
+        public void UpdateScore(GameTime gameTime)
+        {
+            // Updates the sprite.
+            // 
+            // スプライトの更新を行います。
+            for (int i = 0; i < scorePopupList.Count; i++)
+            {
+                SpriteScorePopup sprite = scorePopupList[i];
+                sprite.Update(gameTime);
+
+                // Adds up the score and deletes it from the array
+                // after the sprite action finishes.
+                // 
+                // スプライトの動作が終わったらスコアを加算し、
+                // 配列から削除します。
+                if (sprite.Disposed)
+                {
+                    score += sprite.Score;
+                    scorePopupList.Remove(sprite);
+                }
+            }
+
+            // Adds up the display score so that it tracks the actual score.
+            // 
+            // 表示用のスコアは、実際のスコアを追うように加算します。
+            if (score > scoreView)
+            {
+                scoreView++;
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        public override void Draw(GameTime gameTime)
+        {
+            // Draws the game.
+            // 
+            // ムービー描画
+            movieTexture = movie.Texture;
+            style.MovieTexture = movieTexture;
+
+            // Draws the background.
+            // 
+            // 背景を描画する
+            Batch.Begin();
+            {
+                // Draws the BG.
+                // 
+                // BGを描画
+                Batch.Draw(wallpaperTexture, Vector2.Zero, Color.White);
+
+                // Draws the main frame.
+                // 
+                // メインのフレームを描画
+                seqMainFrame.Draw(Batch, null);
+
+                // Draws the help icon.
+                // 
+                // ヘルプアイコンの描画
+                DrawHelpIcon(Batch);
+
+                // Draws the text string.
+                // 
+                // 文字列の描画
+                SpriteFont font = LargeFont;
+                DrawTextScore(Batch, font);
+                DrawTextTime(Batch, font);
+                DrawTextRest(Batch, font);
+            }
+            Batch.End();
+
+            // Draws the movie outer frame.
+            // 
+            // ムービーの外枠を描画
+            DrawOutMovie();
+
+            // Draws the movie panels.
+            // 
+            // ムービーのパネル描画
+            style.DrawPanels(gameTime);
+
+            // Draws the cursor.
+            //
+            // カーソル描画
+            style.DrawCursor(gameTime);
+
+            // Draws the popup score.
+            //
+            // ポップアップスコアを描画
+            Batch.Begin();
+            {
+                SpriteBatch batch = Batch;
+                foreach (SpriteScorePopup sprite in scorePopupList)
+                {
+                    sprite.Draw(gameTime, batch);
+                }
+            }
+            Batch.End();
+
+            // Draws the preview.
+            //
+            // プレビューを描画
+            DrawThumbnail();
+
+            // Performs drawing processing as per status.
+            //
+            // 状態に応じた描画
+            DrawMain(gameTime);
+
+            base.Draw(gameTime);
+        }
+
+
+        /// <summary>
+        /// Performs main drawing processing.
+        /// 
+        /// メインの描画処理を行います。
+        /// </summary>
+        private void DrawMain(GameTime gameTime)
+        {
+            if (GamePhase == Phase.StageTitle)
+            {
+                // Draws the number of stages and the title.
+                // 
+                // ステージ数とタイトルの描画処理を行います。
+                DrawStageTitle();
+            }
+            else if (GamePhase == Phase.CountDown)
+            {
+                // Performs countdown drawing.
+                // 
+                // カウントダウンの描画処理を行います。
+                DrawCountDown();
+            }
+            else if (GamePhase == Phase.Complete)
+            {
+                // Performs drawing processing at completion.
+                // 
+                // 完成時の描画処理を行います。
+                DrawComplete(gameTime);
+            }
+            else if (GamePhase == Phase.Timeover)
+            {
+                // Performs over time drawing.
+                // 
+                // タイムオーバーの描画処理を行います。
+                DrawTimeOver();
+            }
+
+            // Performs drawing processing during pause.
+            // 
+            // ポーズ中の描画を行います。
+            if (isPause)
+            {
+                DrawPause(gameTime);
+            }
+
+        }
+
+
+        /// <summary>
+        /// Draws the number of stages and the title.
+        /// 
+        /// ステージ数とタイトルの描画処理を行います。
+        /// </summary>
+        private void DrawStageTitle()
+        {
+            Batch.Begin();
+
+            // Draws the sequence.
+            // 
+            // シーケンスの描画をします。
+            seqStage.Draw(Batch, null);
+
+
+            SequenceGroupData seqBodyData;
+            string text;
+
+            // Draws the text string for the number of stages.
+            // 
+            // ステージ数の文字列を描画します。
+            text = string.Format("{0:00}", GameData.SaveData.Stage + 1);
+            seqBodyData = seqStage.SequenceData.SequenceGroupList[2];
+            DrawStageTitle(seqBodyData, text);
+
+            // Draws the text string for the stage name.
+            // 
+            // ステージ名の文字列を描画します。
+            text = movie.Info.Name;
+            seqBodyData = seqStage.SequenceData.SequenceGroupList[3];
+            DrawStageTitle(seqBodyData, text);
+
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the number of stages and the title.
+        /// 
+        /// ステージ数とタイトルの描画処理を行います。
+        /// </summary>
+        private void DrawStageTitle(SequenceGroupData sequenceGroup, string text)
+        {
+            SequenceObjectData sequenceObject = sequenceGroup.CurrentObjectList;
+
+            // Processing is not performed if data cannot be obtained.
+            // 
+            // データが取得できなかった場合は処理を行いません。
+            if (sequenceObject == null)
+                return;
+
+            List<PatternObjectData> list = sequenceObject.PatternObjectList;
+            foreach (PatternObjectData patternObject in list)
+            {
+                SpriteFont font = LargeFont;
+                DrawData putInfoData = patternObject.InterpolationDrawData;
+                Color color = putInfoData.Color;
+                Point point = putInfoData.Position;
+                Vector2 position = new Vector2(point.X, point.Y);
+
+                // Centers the Y coordinate.
+                // 
+                // Y座標をセンタリングします。
+                position.Y -= (font.MeasureString(text).Y * 0.5f);
+
+                // Draws the text string.
+                // 
+                // 文字列の描画をします。
+                Batch.DrawString(font, text, position, color);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs countdown drawing.
+        /// 
+        /// カウントダウンの描画処理を行います。
+        /// </summary>
+        private void DrawCountDown()
+        {
+            Batch.Begin();
+            seqCountDown.Draw(Batch, null);
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Performs drawing processing at completion.
+        /// 
+        /// 完成時の描画処理を行います。
+        /// </summary>
+        private void DrawComplete(GameTime gameTime)
+        {
+            // Processing is not performed while score is displayed. 
+            // 
+            // スコアが表示中ならば処理をしない
+            if (scorePopupList.Count > 0 || score != scoreView)
+                return;
+
+            // Draws the movie in full screen.
+            // 
+            // ムービーをフルスクリーンで描画します。
+            if (resolveTexture != null && movieTexture != null)
+            {
+                Batch.Begin(SpriteBlendMode.None);
+                Batch.Draw(movieTexture, GameData.ScreenSizeRect, null, Color.White);
+                Batch.End();
+            }
+
+
+            Batch.Begin();
+            
+            // Draws the cross-fade back buffer.
+            // 
+            // クロスフェード用のバックバッファを描画します。
+            if (resolveTexture != null)
+            {
+                Batch.Draw(resolveTexture, Vector2.Zero, new Color(completeColor));
+
+                // Draws the Navigate button.
+                // 
+                // ナビゲートボタンを描画します。
+                DrawNavigate(gameTime, false);
+            }
+
+            // Performs drawing processing while the completed animation is being played.
+            // 
+            // コンプリートアニメーションが再生中なら描画処理を行います。
+            if (seqComplete.SequenceData.IsPlay)
+                seqComplete.Draw(Batch, null);
+
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Performs time over drawing processing.
+        /// 
+        /// タイムオーバーの描画処理を行います。
+        /// </summary>
+        public void DrawTimeOver()
+        {
+            Batch.Begin();
+            {
+                seqTimeUp.Draw(Batch, null);
+            }
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the Pause screen.
+        /// 
+        /// ポーズ画面の描画処理を行います。
+        /// </summary>
+        public void DrawPause(GameTime gameTime)
+        {
+            Batch.Begin();
+
+            if (seqRefNaviStart.IsPlay)
+            {
+                seqRefStart.Draw(Batch, null);
+                seqRefNaviStart.Draw(Batch, null);
+            }
+            else
+            {
+                seqRefLoop.Draw(Batch, null);
+                seqRefNaviLoop.Draw(Batch, null);
+
+                // Sets the selection cursor sequence.
+                // 
+                // 選択カーソルのシーケンスを設定します。
+                SequencePlayData seqPlayData;
+                seqPlayData = (pauseCursor == PauseCursor.ReturnToGame) ?
+                    seqRefReturnToGameOn : seqRefGoToTitleOn;
+
+                // Draws the sequence.
+                // 
+                // シーケンスを描画します。
+                seqPlayData.Draw(Batch, null);
+
+                // Draws the Navigate button.
+                // 
+                // ナビゲートボタンの描画を行います。
+                DrawNavigate(gameTime, false);
+            }
+
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the Preview screen.
+        /// 
+        /// プレビュー画面の描画処理を行います。
+        /// </summary>
+        public void DrawThumbnail()
+        {
+            // Processing is not performed if there is no movie texture.
+            // 
+            // ムービーのテクスチャが無い場合は処理を行いません。
+            if (movieTexture == null)
+                return;
+
+            // Sets the movie rectangle.
+            // 
+            // ムービーの矩形を設定します。
+            Vector4 movie = new Vector4();
+            movie.X = movieRect.X;
+            movie.Y = movieRect.Y;
+            movie.Z = movieRect.Width;
+            movie.W = movieRect.Height;
+
+            // Sets the thumbnail rectangle.
+            // 
+            // サムネイルの矩形を設定します。
+            Vector4 thumb = new Vector4();
+            thumb.X = movieThumbRect.X;
+            thumb.Y = movieThumbRect.Y;
+            thumb.Z = movieThumbRect.Width;
+            thumb.W = movieThumbRect.Height;
+
+            // Calculates the size.
+            // 
+            // サイズを計算します。
+            Vector4 size = Vector4.Lerp(thumb, movie, thumbZoomRate);
+            Rectangle rect = new Rectangle();
+            rect.X = (int)size.X;
+            rect.Y = (int)size.Y;
+            rect.Width = (int)size.Z;
+            rect.Height = (int)size.W;
+
+            // Draws the thumbnail.
+            // 
+            // サムネイルを描画します。
+            Batch.Begin(SpriteBlendMode.None);
+            Batch.Draw(movieTexture, rect, Color.White);
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the help icon.
+        /// 
+        /// ヘルプアイコンの描画処理を行います。
+        /// </summary>
+        public void DrawHelpIcon(SpriteBatch batch)
+        {
+            // hints are only used in Normal mode
+            if (setting.Mode != StageSetting.ModeList.Normal)
+            {
+                return;
+            }
+
+            SequenceBankData sequenceBank = seqHelpIcon.SequenceData;
+            SequenceGroupData sequenceGroup = sequenceBank.SequenceGroupList[0];
+            SequenceObjectData sequenceObject = sequenceGroup.SequenceObjectList[0];
+            PatternObjectData patternObject = sequenceObject.PatternObjectList[0];
+            Rectangle rect = patternObject.Rect;
+
+            DrawData info = new DrawData();
+
+            // Shifts the drawing position by the number of remaining help icons.
+            // 
+            // ヘルプアイコンの残りの数だけ、位置をずらして描画します。
+            for (int i = 0; i < helpItemCount; i++)
+            {
+                Vector2 position = positions[PositionList.HelpIcon];
+                position.X += (rect.Width * i);
+                info.Position = new Point((int)position.X, (int)position.Y);
+                seqHelpIcon.Draw(batch, info);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the score.
+        /// 
+        /// スコアの描画処理を行います。
+        /// </summary>
+        public void DrawTextScore(SpriteBatch batch, SpriteFont font)
+        {
+            // The score is drawn only in Normal Mode.
+            // 
+            // Normalモード以外はスコアの描画を行いません。
+            if (setting.Mode != StageSetting.ModeList.Normal)
+                return;
+
+
+            string text = string.Format("{0:00000}", scoreView);
+            Vector2 position = positions[PositionList.Score];
+            batch.DrawString(font, text, position, Color.White);
+        }
+
+
+        /// <summary>
+        /// Draws the remaining time and elapsed time.
+        /// 
+        /// 残り時間・経過時間の描画処理を行います。
+        /// </summary>
+        public void DrawTextTime(SpriteBatch batch, SpriteFont font)
+        {
+            string text;
+            if (setting.Mode == StageSetting.ModeList.Normal)
+            {
+                string time = (setting.TimeLimit - playTime).ToString(); 
+                text = time.Substring(0, 8);
+            }
+            else
+            {
+                text = playTime.ToString().Substring(0, 8);
+            }
+            Vector2 position = positions[PositionList.Time];
+            batch.DrawString(font, text, position, Color.White);
+        }
+
+
+        /// <summary>
+        /// Draws the number of remaining panels.
+        /// 
+        /// パネルの残り枚数の描画処理を行います。
+        /// </summary>
+        public void DrawTextRest(SpriteBatch batch, SpriteFont font)
+        {
+            int rest = panelManager.PanelRestCount(setting);
+            string value = string.Format("{0:00}", rest);
+            Vector2 position = positions[PositionList.Rest];
+            batch.DrawString(font, value, position, Color.White);
+        }
+
+
+        /// <summary>
+        /// Draws the area with movie panels excluded.
+        /// 
+        /// ムービーのパネルを除いたエリアの描画処理を行います。
+        /// </summary>
+        private void DrawOutMovie()
+        {
+            // Drawing processing is not performed if there is no movie texture.
+            // 
+            // ムービーのテクスチャが無ければ描画処理を行いません。
+            if (movieTexture == null)
+                return;
+
+            // Obtains the rectangle list.
+            // 
+            // 矩形のリストを取得します。
+            Vector2[] positions = movieFramePosition;
+            Rectangle[] rectangles = movieFrameSrc;
+
+            Batch.Begin(SpriteBlendMode.None);
+            for (int i = 0; i < rectangles.Length; i++)
+            {
+                Batch.Draw(movieTexture, positions[i], rectangles[i], Color.Silver);
+            }
+            Batch.End();
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Movie sizes that do not fit in the panels are returned as rectangles.
+        /// 
+        /// パネルに収まらなかったムービーのサイズを矩形で返します。
+        /// </summary>
+        private Vector2[] GetMovieFramePosition()
+        {
+            Vector2 offset = positions[PositionList.Movie];
+            Vector2 top;
+            Vector2 bottom;
+            Vector2 left;
+            Vector2 right;
+
+            float movieHeight = movieRect.Height;
+            float panelHeight = panelManager.PanelArea.W;
+
+            float panelX = panelManager.PanelArea.X;
+            float panelWidth = panelManager.PanelArea.Z;
+
+            top = offset;
+
+            bottom = offset;
+            bottom.Y += (movieHeight - (movieHeight - panelHeight) * 0.5f);
+            
+            left = offset;
+
+            right = offset;
+            right.X += panelX + panelWidth;
+
+            return new Vector2[] { top, bottom, left, right };
+        }
+
+
+        /// <summary>
+        /// Obtains rectangles for non-panel sections.
+        /// 
+        /// パネル以外の部分の矩形を取得します。
+        /// </summary>
+        private Rectangle[] GetMovieFrameSource()
+        {
+            Rectangle top;
+            Rectangle bottom;
+            Rectangle left;
+            Rectangle right;
+
+            float panelX = panelManager.PanelArea.X;
+            float panelWidth = panelManager.PanelArea.Z;
+            float panelHeight = panelManager.PanelArea.W;
+
+            top = new Rectangle();
+            top.Width = movieRect.Width;
+            top.Height = (int)((movieRect.Height - panelHeight) * 0.5f);
+
+            bottom = new Rectangle();
+            bottom.Y = movieRect.Height - (int)((movieRect.Height - panelHeight) * 0.5f);
+            bottom.Width = movieRect.Width;
+            bottom.Height = (int)((movieRect.Height - panelHeight) * 0.5f);
+
+            left = new Rectangle();
+            left.Width = (int)(panelX);
+            left.Height = movieRect.Height;
+
+            right = new Rectangle();
+            right.X = (int)(panelX + panelWidth);
+            right.Width = (int)((movieRect.Width - panelWidth) * 0.5f);
+            right.Height = movieRect.Height;
+
+            return new Rectangle[] { top, bottom, left, right };
+        }
+
+
+        /// <summary>
+        /// Adds up the completed single score.
+        /// 
+        /// シングル揃いのスコアを加算します。
+        /// </summary>
+        public void AddSingleScore(long score)
+        {
+            result.SingleScore += score;
+        }
+
+
+        /// <summary>
+        /// Adds up the completed double score.
+        /// 
+        /// ダブル揃いのスコアを加算します。
+        /// </summary>
+        public void AddDoubleScore(long score)
+        {
+            result.DoubleScore += score;
+        }
+
+
+        /// <summary>
+        /// Performs processing if panels are completed in single.
+        /// 
+        /// シングルで揃った場合の処理を行う。
+        /// </summary>
+        public void PanelCompleteSingle(List<PanelData> list)
+        {
+            // Processing is performed only in Change. 
+            // 
+            // Change以外では処理を行いません。
+            if (setting.Style != StageSetting.StyleList.Change)
+                return;
+
+            // Processing is only performed in Normal Mode. 
+            // 
+            // ノーマルモード以外では処理を行いません。
+            if (setting.Mode != StageSetting.ModeList.Normal)
+                return;
+
+            // Adds up the score.
+            // 
+            // スコアを加算します。
+            AddSingleScore(ScoreSingle);
+
+            // Creates the score sprite.
+            // 
+            // スコアのスプライトを作成します。
+            foreach (PanelData panel in list)
+            {
+                // Creates the sprite.
+                // 
+                // スプライトを作成します。
+                SpriteScorePopup sprite = CreateSpriteScore(panel, ScoreSingle);
+
+                // Adds the sprite to the array.
+                // 
+                // 配列に追加します。
+                scorePopupList.Add(sprite);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs processing if panels are completed in double.
+        /// 
+        /// パネルがダブルで揃った時の処理を行います。
+        /// </summary>
+        public void PanelCompleteDouble(List<PanelData> list)
+        {
+            // Processing is performed only in Change.
+            // 
+            // Change以外では処理を行いません。
+            if (setting.Style != StageSetting.StyleList.Change)
+                return;
+
+            // Processing is performed only in Normal Mode.
+            // 
+            // ノーマルモード以外では処理を行いません。
+            if (setting.Mode != StageSetting.ModeList.Normal)
+                return;
+
+            // Adds up the score.
+            // 
+            // スコアを加算します。
+            AddDoubleScore(ScoreDouble * 2);
+
+            // Creates the score sprite.
+            // 
+            // スコアのスプライトを作成します。
+            foreach (PanelData panel in list)
+            {
+                // Creates the sprite.
+                // 
+                // スプライトを作成します。
+                SpriteScorePopup sprite = CreateSpriteScore(panel, ScoreDouble);
+
+                // Adds the sprite to the array.
+                // 
+                // 配列に追加します。
+                scorePopupList.Add(sprite);
+            }
+        }
+
+
+        /// <summary>
+        /// Creates and returns the score sprite.
+        /// 
+        /// スコアのスプライトを作成して返します。
+        /// </summary>
+        private SpriteScorePopup CreateSpriteScore(PanelData panel, int score)
+        {
+            SpriteScorePopup sprite = new SpriteScorePopup(Game);
+            sprite.Initialize();
+
+            // Sets the score initial position. 
+            // 
+            // スコアの初期位置を設定します。
+            sprite.Position = panel.Center + panelManager.DrawOffset;
+            sprite.DefaultPosition = sprite.Position;
+
+            // Sets the score target position.
+            // 
+            // スコアの移動先を設定します。
+            Vector2 target;
+            target = positions[PositionList.Score] + new Vector2(128, 32);
+            sprite.TargetPosition = target;
+
+            // Sets the score.
+            // 
+            // スコアの設定をします。
+            sprite.Score = score;
+
+            return sprite;
+        }
+
+
+        /// <summary>
+        /// Creates and returns the component for the specified style.
+        /// 
+        /// 指定したスタイルのコンポーネントを作成して返します。
+        /// </summary>
+        private StyleBase CreateStyleComponent()
+        {
+            return CreateStyleComponent(setting, cursor, panelManager);
+        }
+
+
+        /// <summary>
+        /// Creates and returns the component for the specified style.
+        /// 
+        /// 指定したスタイルのコンポーネントを作成して返します。
+        /// </summary>
+        private StyleBase CreateStyleComponent(
+            StageSetting setting, Point cursor, PanelManager manager)
+        {
+            StyleBase component = null;
+
+            if (setting.Style == StageSetting.StyleList.Change)
+            {
+                component = new ChangeComponent(Game, setting, cursor, manager);
+            }
+            else if (setting.Style == StageSetting.StyleList.Revolve)
+            {
+                component = new RevolveComponent(Game, setting, cursor, manager);
+            }
+            else if (setting.Style == StageSetting.StyleList.Slide)
+            {
+                component = new SlideComponent(Game, setting, cursor, manager);
+            }
+
+            return component;
+        }
+
+        
+        /// <summary>
+        /// Creates and returns the movie component.
+        /// 
+        /// ムービーコンポーネントを作成して返します。
+        /// </summary>
+        private PuzzleAnimation CreateMovie(AnimationInfo info)
+        {
+            return PuzzleAnimation.CreateAnimationComponent(Game, info);
+        }
+
+
+        /// <summary>
+        /// Checks the pause.
+        /// 
+        /// ポーズのチェックをします。
+        /// </summary>
+        private bool CheckPause()
+        {
+            VirtualPadState virtualPad =
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            // Processing is performed only when start has been pressed. 
+            // 
+            // スタートが押されていない場合は処理を行いません。
+            if (!buttons.Start[VirtualKeyState.Push])
+                return false;
+
+            // Start has been pressed; Pause flag is set.
+            // 
+            // スタートが押されていたので、ポーズのフラグを設定します。
+            isPause = true;
+
+            // Initializes the pause screen cursor.
+            // 
+            // ポーズ画面のカーソルの初期設定をします。
+            pauseCursor = PauseCursor.ReturnToGame;
+
+            // Sets the panel selection in the background so that it will not move.
+            //
+            // 裏でパネル選択が動かないように設定します。
+            style.SelectEnabled = false;
+
+            // Rests the sequence displayed on the pause screen.
+            // 
+            // ポーズ画面に表示するシーケンスをリセットします。
+            seqRefStart.Replay();
+            seqRefLoop.Replay();
+            seqRefNaviStart.Replay();
+            seqRefNaviLoop.Replay();
+            seqRefReturnToGameOn.Replay();
+            seqRefGoToTitleOn.Replay();
+
+            // Sets the Navigate button.
+            // 
+            // ナビゲートボタンの設定を行います。
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel"), false));
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Checks the time limit.
+        /// 
+        /// タイムリミットのチェックを行います。
+        /// </summary>
+        private bool IsTimeLimit()
+        {
+            // The time limit judgment is performed only in Normal Mode.
+            // 
+            // ノーマルモード以外ではタイムリミットの判定を行いません。
+            if (setting.Mode != StageSetting.ModeList.Normal)
+                return false;
+
+            return (playTime >= setting.TimeLimit);
+        }
+
+
+        /// <summary>
+        /// Uses the help item.
+        /// 
+        /// ヘルプアイテムを使用します。
+        /// </summary>
+        private bool UseHelpItem()
+        {
+            // Processing is not performed if no items are remaining.
+            // 
+            // アイテムの残り個数が無ければ処理をしません。
+            if (helpItemCount <= 0)
+                return false;
+
+            // Processing is not performed while items are in use.
+            // 
+            // アイテム使用中なら処理をしません。
+            if (helpItemTime > TimeSpan.Zero)
+                return false;
+
+            // Sets the item usage time.
+            // 
+            // アイテムの使用時間を設定します。
+            helpItemTime = HelpItemTime;
+
+            // In Normal Mode, reduces the usage repetitions.
+            // 
+            // ノーマルモードなら使用回数を減らします。
+            if (setting.Mode == StageSetting.ModeList.Normal)
+                helpItemCount--;
+
+            return true;
+        }
+        #endregion
+    }
+}
+
+

+ 273 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/SpriteScorePopup.cs

@@ -0,0 +1,273 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SpriteScorePopup.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Util;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle
+{
+    /// <summary>
+    /// Sprite class that draws the score.
+    /// This class inherits the Sprite class and performs update and drawing
+    /// processing. At first appearance, it performs a bounce before shifting to 
+    /// the designated position. Once the designated position is attained, it
+    /// performs a fade-out; when this has finished, it performs release processing.
+    /// 
+    /// スコアを描画するスプライトのクラスです。
+    /// このクラスはSpriteクラスを継承し、更新と描画の処理を行います。
+    /// 出現時、まずバウンドを行い、バウンドが終了したら指定の
+    /// 位置へ移動します。指定の位置へ到着したらフェードアウトを開始し、
+    /// フェードアウトが完了すると、開放処理を行います。
+    /// </summary>
+    public class SpriteScorePopup : Sprite
+    {
+        #region Private Types
+        /// <summary>
+        /// Processing status
+        /// 
+        /// 処理状態
+        /// </summary>
+        enum Phase
+        {
+            /// <summary>
+            /// Bounce
+            /// 
+            /// バウンド
+            /// </summary>
+            Bound,
+
+            /// <summary>
+            /// Move
+            /// 
+            /// 移動
+            /// </summary>
+            Move,
+
+            /// <summary>
+            /// Fade-out
+            /// 
+            /// フェードアウト
+            /// </summary>
+            FadeOut,
+        }
+        #endregion
+
+        #region Fields
+        public int Score;
+        public Vector2 DefaultPosition;
+        public Vector2 TargetPosition;
+
+        private Phase phase;
+        private SpriteFont font;
+        private float jumpPower;
+        private float jumpBoundPower;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SpriteScorePopup(Game game)
+            : base(game)
+        {
+            MovipaGame movipaGame = game as MovipaGame;
+            if (movipaGame != null)
+            {
+                font = movipaGame.MediumFont;
+            }
+            Updating += SpriteScorePopupUpdating;
+            Drawing += SpriteScorePopupDrawing;
+        }
+
+        
+        /// <summary>
+        /// Performs initialization processing. 
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the processing status.
+            // 
+            // 処理状態の初期設定を行います。
+            phase = Phase.Bound;
+
+            // Sets the jump parameters.
+            // 
+            // ジャンプのパラメータを設定します。
+            jumpPower = 8.0f;
+            jumpBoundPower = 8.0f;
+
+            // Sets the draw color.
+            //
+            // 描画色を設定します。
+            Color = Color.White;
+
+            base.Initialize();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        void SpriteScorePopupUpdating(object sender, UpdatingEventArgs args)
+        {
+            if (phase == Phase.Bound)
+            {
+                // Performs updates from first appearance through to end of bounce.
+                // 
+                // 出現からバウンド終了までの更新処理を行います。
+                UpdateBound();
+            }
+            else if (phase == Phase.Move)
+            {
+                // Performs updates following movement.
+                // 
+                // 移動時の更新処理を行います。
+                UpdateMove();
+            }
+            else if (phase == Phase.FadeOut)
+            {
+                // Performs updates following fade-out.
+                // 
+                // フェードアウト時の更新処理を行います。
+                UpdateFadeOut();
+            }
+        }
+        
+
+        /// <summary>
+        /// Performs updates from first appearance through to end of bounce.
+        /// 
+        /// 出現からバウンド終了までの更新処理を行います。
+        /// </summary>
+        private void UpdateBound()
+        {
+            // Shifts the Y coordinate.
+            // 
+            // Y座標を移動させます。
+            position.Y -= jumpPower;
+
+            // Performs bounce processing if it is lower than the 
+            // initial appearance coordinates.
+            // 
+            // 初期出現座標よりも下がった場合、バウンド処理をします。
+            if (Position.Y > DefaultPosition.Y)
+            {
+                // Sets the Y coordinate to the initial coordinate.
+                // 
+                // Y座標を初期座標へ設定します。
+                position.Y = DefaultPosition.Y;
+
+                // Reduces the bounce power.
+                // 
+                // バウンド力を減らします。
+                jumpBoundPower *= 0.5f;
+
+                // Sets the amount of Y coordinate travel.
+                // 
+                // Y座標の移動量を設定します。
+                jumpPower = jumpBoundPower;
+
+                // Sets to Movement Processing when there is no more bounce power.
+                // 
+                // バウンド力が無くなった場合は移動処理へ設定します。
+                if (jumpBoundPower < 0.1f)
+                {
+                    phase = Phase.Move;
+                }
+            }
+            else
+            {
+                // Reduces the amount of Y coordinate travel.
+                // 
+                // Y座標の移動量を減らします。
+                jumpPower -= 1.0f;
+            }
+        }
+
+
+        /// <summary>
+        /// Performs updates following movement.
+        /// 
+        /// 移動時の更新処理を行います。
+        /// </summary>
+        private void UpdateMove()
+        {
+            // Moves to the target position.
+            // 
+            // 目的地まで移動させます。
+            Position += (TargetPosition - Position) * 0.1f;
+
+            // Performs fade-out upon arrival at the target position.
+            // 
+            // 目的地に到達した場合はフェードアウト処理を行います。
+            if (Vector2.Distance(TargetPosition, Position) < 1.0f)
+            {
+                phase = Phase.FadeOut;
+            }
+        }
+
+
+        /// <summary>
+        /// Performs updates following fade-out.
+        /// 
+        /// フェードアウト時の更新処理を行います。
+        /// </summary>
+        private void UpdateFadeOut()
+        {
+            // Reduces the transparency color.
+            // 
+            // 透過色を減らします。
+            Vector4 color = Color.ToVector4();
+            color.W = MathHelper.Clamp(color.W - 0.1f, 0, 1);
+
+            // Sets a new color.
+            // 
+            // 新しい色を設定します。
+            Color = new Color(color);
+
+            // Performs release processing when it is totally transparent.
+            // 
+            // 完全に透過されたら開放処理を行います。
+            if (color.W <= 0)
+            {
+                Dispose();
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        void SpriteScorePopupDrawing(object sender, DrawingEventArgs args)
+        {
+            string value = string.Format("{0:00}", Score);
+            Vector2 position = Position - (font.MeasureString(value) * 0.5f);
+            args.Batch.DrawString(font, value, position, Color);
+        }
+        #endregion
+    }
+
+}

+ 831 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/ChangeComponent.cs

@@ -0,0 +1,831 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// ChangeComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle.Style
+{
+    /// <summary>
+    /// Implements the Change Mode style.
+    /// This class inherits the StyleBase class and implements panel swapping.
+    /// It swaps between the two panels and rotates the panels.
+    /// 
+    /// チェンジモードのスタイルを実装します。
+    /// このクラスはStyleBaseクラスを継承し、パネルの入れ替え処理を実装しています。
+    /// 2つのパネルを入れ替える処理と、パネルを回転させる処理を行っています。
+    /// </summary>
+    public class ChangeComponent : StyleBase
+    {
+        #region Fields
+        // Panel holding status
+        // 
+        // パネルの保持状態
+        private bool isPanelHold = false;
+
+        // Coordinates of holding panel
+        // 
+        // ホールドしているパネルの座標
+        private Point panelHold = new Point();
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance. 
+        /// 
+        /// インスタンスの初期化をします。
+        /// </summary>
+        public ChangeComponent(Game game, 
+            StageSetting setting, Point cursor, PanelManager manager)
+            : base(game, setting, cursor, manager)
+        {
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        ///
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the cursor texture.
+            // 
+            // カーソルのテクスチャを読み込みます。
+            string asset = "Textures/Puzzle/cursor";
+            cursorTexture = Content.Load<Texture2D>(asset);
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Checks for selection enabled status.
+            // 
+            // 選択有効状態をチェックします。
+            if (SelectEnabled)
+            {
+                // Moves the cursor.
+                // 
+                // カーソルの移動処理を行います。
+                UpdateCursor();
+
+                // Performs panel operation.
+                // 
+                // パネルの操作を行います。
+                UpdatePanel();
+            }
+
+            // Updates all panels.
+            // 
+            // 全てのパネルの更新処理を行います。
+            UpdatePanels(gameTime);
+
+            base.Update(gameTime);
+        }
+
+        /// <summary>
+        /// Performs panel operation.
+        /// 
+        /// パネルの操作を行います。
+        /// </summary>
+        private void UpdatePanel()
+        {
+            // Processing is not performed if the panel is currently in action.
+            // 
+            // パネルが動作中ならば処理を行いません。
+            if (IsPanelAction)
+                return;
+
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            if (buttons.A[VirtualKeyState.Push])
+            {
+                // Obtains the panel.
+                // 
+                // パネルを取得します。
+                PanelData panel = panelManager.GetPanel(cursor);
+
+                // Processing is not performed if the panel is disabled.
+                // 
+                // パネルが無効の状態ならば処理をしません。
+                if (!panel.Enabled)
+                    return;
+
+                // Checks the hold status.
+                // 
+                // ホールド状態をチェックします。
+                if (isPanelHold == false)
+                {
+                    // There is no held panel, so the 
+                    // selected panel is held.
+                    // 
+                    // ホールドしているパネルが無いので
+                    // 選択しているパネルをホールドします。
+                    if (HoldPanel())
+                    {
+                        // Plays the SoundEffect if the hold is successful.
+                        // 
+                        // ホールドに成功したらSoundEffectを再生します。
+                        GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+                    }
+                }
+                else
+                {
+                    // There is already a held panel, so the 
+                    // selected panel is swapped with the panel
+                    // that has already been held.
+                    // 
+                    // 既にホールドしているパネルがあるので、
+                    // 選択しているパネルと、ホールド済みのパネルと
+                    // 入れ替える処理を行います。
+                    if (SwapPanel())
+                    {
+                        // Plays the SoundEffect if the swap is successful.
+                        // 
+                        // 入れ替えに成功したらSoundEffectを再生します。
+                        GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                        // Calculates the movement count. 
+                        // 
+                        // 移動カウントを加算します。
+                        moveCount++;
+                    }
+                }
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Releases the held panel.
+                // 
+                // ホールドしているパネルを開放します。
+                ReleasePanel();
+            }
+
+            // Controls panel rotation.
+            // 
+            // パネルの回転の制御を行います。
+            RotatePanel();
+        }
+
+
+        /// <summary>
+        /// Performs cursor movement processing.
+        /// 
+        /// カーソル移動処理を行います。
+        /// </summary>
+        private void UpdateCursor()
+        {
+            // Manages the SoundEffect by the flag only once so that
+            // the SoundEffect will not be played simultaneously.
+            // 
+            // SoundEffectの同時再生を防ぐために一度フラグで管理します。
+            bool sePlay = false;
+
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPushRepeat(dPad.Up, leftStick.Up))
+            {
+                // Performs Up key processing.
+                // 
+                // 上キーが押されたときの処理を行います。
+                InputUpKey();
+
+                // Sets the SoundEffect play flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Down, leftStick.Down))
+            {
+                // Performs Down key processing.
+                // 
+                // 下キーが押されたときの処理を行います。
+                InputDownKey();
+
+                // Sets the SoundEffect play flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Left, leftStick.Left))
+            {
+                // Performs Left key processing.
+                // 
+                // 左キーが押されたときの処理を行います。
+                InputLeftKey();
+
+                // Sets the SoundEffect play flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Right, leftStick.Right))
+            {
+                // Performs Right key processing.
+                // 
+                // 右キーが押されたときの処理を行います。
+                InputRightKey();
+
+                // Sets the SoundEffect play flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+
+            // Plays sound if the sound play flag is set.
+            // 
+            // サウンド再生フラグが設定されていれば再生します。
+            if (sePlay)
+            {
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor2);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs Up key processing.
+        /// 
+        /// 上キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputUpKey()
+        {
+            // Sets the cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = cursor.X;
+            int newY = cursor.Y - 1;
+
+            if (newY < 0)
+            {
+                newY = stageSetting.Divide.Y - 1;
+            }
+
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+
+
+        /// <summary>
+        /// Performs Down key processing.
+        /// 
+        /// 下キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputDownKey()
+        {
+            // Sets the cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = cursor.X;
+            int newY = (cursor.Y + 1) % stageSetting.Divide.Y;
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+
+
+        /// <summary>
+        /// Performs Left key processing.
+        /// 
+        /// 左キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputLeftKey()
+        {
+            // Sets the cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = cursor.X - 1;
+            int newY = cursor.Y;
+
+            if (newX < 0)
+            {
+                newX = stageSetting.Divide.X - 1;
+            }
+
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+
+
+        /// <summary>
+        /// Performs Right key processing.
+        /// 
+        /// 右キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputRightKey()
+        {
+            // Sets the cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = (cursor.X + 1) % stageSetting.Divide.X;
+            int newY = cursor.Y;
+
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws all position cursors.
+        /// 
+        /// 全ての位置のカーソルを描画します。
+        /// </summary>
+        public override void DrawCursor(GameTime gameTime)
+        {
+            Batch.Begin();
+
+            // Draws the hold cursor.
+            // 
+            // ホールドカーソルを描画します。
+            DrawHoldCursor(gameTime);
+
+            // Draws the normal cursor.
+            // 
+            // 通常のカーソルを描画します。
+            DrawNormalCursor(gameTime);
+            
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the normal cursor.
+        /// 
+        /// 通常のカーソルを描画します。
+        /// </summary>
+        private void DrawNormalCursor(GameTime gameTime)
+        {
+            // Obtains the panel at the cursor position.
+            // 
+            // カーソル位置にあるパネルを取得します。
+            PanelData panel = panelManager.GetPanel(cursor);
+
+            // Obtains the cursor rectangle.
+            // 
+            // カーソルの矩形を取得します。
+            Rectangle rectangle = panel.RectanglePosition;
+
+            // Draws all four corners of the cursor.
+            // 
+            // 四隅全てのカーソルを描画します。
+            DrawCursor(gameTime, rectangle, Color.White, PanelTypes.All);
+        }
+
+
+        /// <summary>
+        /// Draws the hold cursor.
+        /// 
+        /// ホールドカーソルを描画します。
+        /// </summary>
+        private void DrawHoldCursor(GameTime gameTime)
+        {
+            // Drawing processing is not performed if there is no hold status. 
+            // 
+            // ホールド状態が無い場合は描画処理を行いません。
+            if (!isPanelHold)
+                return;
+
+            // Obtains the held panels.
+            // 
+            // ホールドしているパネルを取得します。
+            PanelData panel = panelManager.GetPanel(panelHold);
+
+            // Obtains the cursor rectangle.
+            // 
+            // カーソルの矩形を取得します。
+            Rectangle rectangle = panel.RectanglePosition;
+
+            // Draws all four corners of the cursor.
+            // 
+            // 四隅全てのカーソルを描画します。
+            DrawCursor(gameTime, rectangle, Color.Red, PanelTypes.All);
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Swaps the panels.
+        /// 
+        /// パネルの交換処理を行います。
+        /// </summary>
+        private bool SwapPanel()
+        {
+            // Processing is not performed if it is the same panel.
+            // 
+            // 同じパネルなら処理を行いません。
+            if (cursor.Equals(panelHold) == true)
+            {
+                return false;
+            }
+
+            // Arranges the swap panels in an array.
+            // 
+            // 入れ替えるパネルを配列にセットします。
+            PanelData[] panels =
+            {
+                panelManager.GetPanel(panelHold),
+                panelManager.GetPanel(cursor),
+            };
+
+            // Processing is not performed if the panel is currently in action.
+            // 
+            // パネルが動作中なら処理を行いません。
+            if (panels[0].Status != PanelData.PanelStatus.None ||
+                panels[1].Status != PanelData.PanelStatus.None)
+            {
+                return false;
+            }
+
+            // Sets the panel From and To positions.
+            // 
+            // パネルの移動元と、移動先を設定します。
+            Vector2[,] panelFromTo = {
+                {
+                    panels[0].Position,
+                    panels[1].Position
+                },
+                {
+                    panels[1].Position,
+                    panels[0].Position
+                }
+            };
+
+            // Changes the draw position.
+            // 
+            // 描画位置の変更をします。
+            panels[0].FromPosition = panelFromTo[0, 0];
+            panels[0].ToPosition = panelFromTo[0, 1];
+            panels[1].FromPosition = panelFromTo[1, 0];
+            panels[1].ToPosition = panelFromTo[1, 1];
+
+            // Swaps the panel data.
+            // 
+            // パネルのデータを交換します。
+            panelManager.SetPanel(panelHold, panels[1]);
+            panelManager.SetPanel(cursor, panels[0]);
+
+            // Sets the panel status.
+            // 
+            // パネルの状態を設定します。
+            panels[0].Status = PanelData.PanelStatus.Move;
+            panels[1].Status = PanelData.PanelStatus.Move;
+            panels[0].Color = ActivePanelColor;
+            panels[1].Color = ActivePanelColor;
+            panels[0].MoveCount = 1.0f;
+            panels[1].MoveCount = 1.0f;
+
+            // Cancels the hold status.
+            // 
+            // ホールド状態を解除します。
+            isPanelHold = false;
+
+            return true;
+
+        }
+
+
+        /// <summary>
+        /// Holds the panel.
+        /// 
+        /// パネルをホールドします。
+        /// </summary>
+        private bool HoldPanel()
+        {
+            // Obtains the panel at the cursor position.
+            // 
+            // カーソル位置にあるパネルを取得します。
+            PanelData panel = panelManager.GetPanel(cursor);
+
+            // Processing is not performed if the panel is currently in action.
+            //
+            // パネルが動作中なら処理を行いません。
+            if (panel.Status != PanelData.PanelStatus.None)
+                return false;
+
+            // Sets to the held panel.
+            //
+            // ホールドパネルに設定します。
+            panelHold.X = cursor.X;
+            panelHold.Y = cursor.Y;
+            isPanelHold = true;
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Releases the held panel.
+        /// 
+        /// ホールドしているパネルを開放します。
+        /// </summary>
+        private void ReleasePanel()
+        {
+            // If there are held panels, the hold status
+            // is cancelled and the canceled SoundEffect is played. 
+            // 
+            // ホールドしているパネルがあるなら、ホールド状態を
+            // 解除してキャンセルのSoundEffectを再生します。
+            if (isPanelHold == true)
+            {
+                isPanelHold = false;
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCancel);
+            }
+        }
+
+
+        /// <summary>
+        /// Controls panel rotation.
+        /// 
+        /// パネルの回転の制御を行います。
+        /// </summary>
+        private void RotatePanel()
+        {
+
+            // Processing is not performed if rotation is disabled.
+            // 
+            // 回転が無効の場合は処理を行いません。
+            if (stageSetting.Rotate == StageSetting.RotateMode.Off)
+                return;
+
+            // Processing is not performed in Hold status.
+            // 
+            // ホールド状態なら処理を行いません。
+            if (isPanelHold)
+                return;
+
+
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            
+            // Obtains the panel at the cursor position.
+            // 
+            // カーソル位置にあるパネルを取得します。
+            PanelData panel = panelManager.GetPanel(cursor);
+
+            // Processing is not performed if the panel status is Completed.
+            // 
+            // パネルの状態が完成済みなら処理を行いません。
+            if (!panel.Enabled)
+                return;
+
+            if (buttons.Y[VirtualKeyState.Push])
+            {
+                // Rotates the panel to the left when the Y button is pressed.
+                // 
+                // Yボタンが押されたらパネルを左回転させます。
+                if (RotatePanelLeft(panel))
+                {
+                    // Plays the SoundEffect during rotation.
+                    // 
+                    // 回転時のSoundEffectを再生します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                    // Calculates the number of moves.
+                    // 
+                    // 移動回数を加算します。
+                    moveCount++;
+                }
+            }
+            else if (buttons.X[VirtualKeyState.Push])
+            {
+                    // Rotates the panel to the right when the X button is pressed.
+                    // 
+                // Xボタンが押されたらパネルを右回転させます。
+                if (RotatePanelRight(panel))
+                {
+                    // Plays the SoundEffect during rotation.
+                    // 
+                    // 回転時のSoundEffectを再生します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                    // Calculates the number of moves.
+                    // 
+                    // 移動回数を加算します。
+                    moveCount++;
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Rotates the panel to the left.
+        /// 
+        /// パネルを左回転させます。
+        /// </summary>
+        private bool RotatePanelLeft(PanelData panelData)
+        {
+            if (panelData.Status != PanelData.PanelStatus.None)
+                return false;
+
+            // Changes the panel status.
+            // 
+            // パネルの状態を変更します。
+            panelData.Color = ActivePanelColor;
+            panelData.ToRotate += 90;
+            panelData.ToRotate %= 360;
+            panelData.Status = PanelData.PanelStatus.RotateLeft;
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Rotates the panel to the right.
+        /// 
+        /// パネルを右回転させます。
+        /// </summary>
+        private bool RotatePanelRight(PanelData panelData)
+        {
+            if (panelData.Status != PanelData.PanelStatus.None)
+                return false;
+
+            // Changes the panel status.
+            // 
+            // パネルの状態を変更します。
+            panelData.Color = ActivePanelColor;
+            panelData.ToRotate += 270;
+            panelData.ToRotate %= 360;
+            panelData.Status = PanelData.PanelStatus.RotateRight;
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Replaces the panels at random.
+        /// 
+        /// ランダムでパネルを入れ替えます。
+        /// </summary>
+        public override bool RandomShuffle()
+        {
+            // Processing is not performed if the panel is currently in action.
+            // 
+            // パネルが動作中なら処理を行いません。
+            if (IsPanelAction)
+                return false;
+
+            // Randomly sets rotation.
+            // 
+            // 回転の処理をランダムで設定します。
+            bool rotate = false;
+            if (stageSetting.Rotate == StageSetting.RotateMode.On)
+            {
+                // If rotation is enabled and the randomly generated value is
+                // 0, shuffle rotation is enabled.
+                // 
+                // 回転が有効で、ランダムで出した数値が0なら
+                // 回転のシャッフルを有効にします。
+                rotate = (Random.Next(0, 2) == 0);
+            }
+
+            if (rotate)
+            {
+                // Rotates the panel at random.
+                //
+                // ランダムでパネルを回転させます。
+                RandomShuffleRotate();
+            }
+            else
+            {
+                // Replaces the panels at random.
+                // 
+                // ランダムでパネルを入れ替えます。
+                RandomShuffleSwap();
+            }
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Rotates the panel at random.
+        /// 
+        /// ランダムでパネルを回転させます。
+        /// </summary>
+        private void RandomShuffleRotate()
+        {
+            // Obtains the target panel.
+            // 
+            // 対象のパネルを取得します。
+            cursor = panelManager.GetRandomPanel(stageSetting);
+
+            // Obtains the panel at the cursor position.
+            //
+            // カーソル位置にあるパネルを取得します。
+            PanelData panel = panelManager.GetPanel(cursor);
+
+            // Randomly sets the rotation direction.
+            // 
+            // ランダムで回転方向を設定します。
+            if (Random.Next(2) == 0)
+            {
+                RotatePanelLeft(panel);
+            }
+            else
+            {
+                RotatePanelRight(panel);
+            }
+
+            // Plays the SoundEffect during rotation.
+            // 
+            // 回転のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+
+
+        /// <summary>
+        /// Replaces the panel at random.
+        /// 
+        /// ランダムでパネルを入れ替えます。
+        /// </summary>
+        private void RandomShuffleSwap()
+        {
+            Point holdPanel = new Point();
+            Point swapPanel = new Point();
+
+            // Selects the panel to hold.
+            // 
+            // ホールドするパネルを選択します。
+            holdPanel = panelManager.GetRandomPanel(stageSetting);
+
+            // Holds the panel.
+            // 
+            // パネルをホールドします。
+            cursor = holdPanel;
+            HoldPanel();
+
+            // Selects a panel at random until a panel 
+            // other than the held panel is selected.
+            // 
+            // ホールドしたパネルとは別のパネルが選択されるまで
+            // ランダムに選択します。
+            do
+            {
+                if (panelManager.PanelCompleteCount(stageSetting) != 1)
+                {
+                    // Obtains the swap destination panel.
+                    // 
+                    // 交換先のパネルを取得します。
+                    swapPanel = panelManager.GetRandomPanel(stageSetting);
+                }
+                else
+                {
+                    // If there is only one panel that is not being shuffled, 
+                    // this will be the only panel available for selection, 
+                    // resulting in an infinite loop, so it must be avoided.
+                    // 
+                    // シャッフルされていないパネルが1個だけの場合は
+                    // それしか選択されず無限ループされるので回避
+                    swapPanel.X = Random.Next(0, stageSetting.Divide.X);
+                    swapPanel.Y = Random.Next(0, stageSetting.Divide.Y);
+                }
+            } while (holdPanel.Equals(swapPanel));
+            cursor = swapPanel;
+
+            // Swaps the panels.
+            // 
+            // パネルの交換処理を行います。
+            SwapPanel();
+
+            // Plays the panel swap SoundEffect.
+            // 
+            // パネル交換のSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+        }
+        #endregion
+    }
+}
+
+

+ 88 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/PanelAfterImage.cs

@@ -0,0 +1,88 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// PanelAfterImage.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Util;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle.Style
+{
+    /// <summary>
+    /// Panel after-image class.
+    /// This class inherits the Sprite class and performs update and draw processing.
+    /// Sprites are managed by the StyleBase class.
+    /// 
+    /// パネルの残像クラスです。
+    /// このクラスはSpriteクラスを継承し、更新と描画の処理を行います。
+    /// スプライトの管理はStyleBaseクラスで行っています。
+    /// </summary>
+    public class PanelAfterImage : Sprite
+    {
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance. 
+        /// 
+        /// インスタンスの初期化を行います。
+        /// </summary>
+        public PanelAfterImage(Game game)
+            : base(game)
+        {
+            Updating += PanelAfterImageUpdating;
+            Drawing += PanelAfterImageDrawing;
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        void PanelAfterImageUpdating(object sender, UpdatingEventArgs args)
+        {
+            // Reduces the transparency color value.
+            // 
+            // 透過色の値を下げます。
+            Vector4 colorVector4 = Color.ToVector4();
+            colorVector4.W = MathHelper.Clamp(colorVector4.W - 0.1f, 0.0f, 1.0f);
+            Color = new Color(colorVector4);
+
+            // Performs release processing when the transparency color value reaches 0.
+            //
+            // 透過色の値が0になったら開放処理を行います。
+            if (Color.A == 0)
+                Dispose();
+        }
+        #endregion
+
+        #region Drawing Methods
+
+        /// <summary>
+        /// Performs a primitive draw.
+        /// This method needs to be invoked in advance since the 
+        /// SpriteBatch Begin and End are not performed.
+        ///
+        /// 基本的な描画を行います。
+        /// このメソッドではSpriteBatchのBegin/Endが行われないので
+        /// 事前に呼び出して下さい。
+        /// </summary>
+        void PanelAfterImageDrawing(object sender, DrawingEventArgs args)
+        {
+            base.Draw(args.Batch);
+        }
+
+        #endregion
+    }
+}

+ 583 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/RevolveComponent.cs

@@ -0,0 +1,583 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// RevolveComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle.Style
+{
+    /// <summary>
+    /// Implements the Revolve Mode style.
+    /// This class inherits the StyleBase class and implements 
+    /// panel switching. It rotates four panels expanded one 
+    /// down and one to the right of the cursor position.
+    /// 
+    /// リボルヴモードのスタイルを実装します。
+    /// このクラスはStyleBaseクラスを継承し、パネルの入れ替え処理を実装しています。
+    /// カーソルの位置から、右と下方向に1枚ずつパネルを拡張した4枚のパネルを
+    /// 回転する処理を行っています。
+    /// </summary>
+    public class RevolveComponent : StyleBase
+    {
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public RevolveComponent(Game game, 
+            StageSetting setting, Point cursor, PanelManager manager)
+            : base(game, setting, cursor, manager)
+        {
+        }
+
+
+        /// <summary>
+        /// Loads the content. 
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the cursor texture.
+            // 
+            // カーソルのテクスチャを読み込みます。
+            string asset = "Textures/Puzzle/cursor";
+            cursorTexture = Content.Load<Texture2D>(asset);
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Checks the select enabled status.
+            // 
+            // 選択有効状態をチェックします。
+            if (SelectEnabled)
+            {
+                // Moves the cursor.
+                // 
+                // カーソルの移動処理を行います。
+                UpdateCursor();
+
+                // Replaces the cursor.
+                // 
+                // カーソルの入れ替え処理を行います。
+                RevolvePanel();
+            }
+
+            // Updates all panels.
+            // 
+            // 全てのパネルの更新処理を行います。
+            UpdatePanels(gameTime);
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Moves the cursor.
+        /// 
+        /// カーソル移動処理を行います。
+        /// </summary>
+        private void UpdateCursor()
+        {
+            // Manages the SoundEffect by the flag only once so that the SoundEffect 
+            // will not be played simultaneously.
+            // 
+            // SoundEffectの同時再生を防ぐために一度フラグで管理します。
+            bool sePlay = false;
+
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPushRepeat(dPad.Up, leftStick.Up))
+            {
+                // Performs Up key processing.
+                // 
+                // 上キーが押されたときの処理を行います。
+                InputUpKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Down, leftStick.Down))
+            {
+                // Performs Down key processing.
+                // 
+                // 下キーが押されたときの処理を行います。
+                InputDownKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Left, leftStick.Left))
+            {
+                // Performs Left key processing.
+                // 
+                // 左キーが押されたときの処理を行います。
+                InputLeftKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Right, leftStick.Right))
+            {
+                // Performs Right key processing.
+                // 
+                // 右キーが押されたときの処理を行います。
+                InputRightKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+
+            // Plays the SoundEffect if the sound playback flag is set.
+            // 
+            // サウンド再生フラグが設定されていれば再生します。
+            if (sePlay)
+            {
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor2);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs Up key processing.
+        /// 
+        /// 上キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputUpKey()
+        {
+            int newX = cursor.X;
+            int newY = cursor.Y - 1;
+
+            if (newY < 0)
+            {
+                newY = stageSetting.Divide.Y - 2;
+            }
+
+            cursor = new Point(newX, newY);
+        }
+
+
+        /// <summary>
+        /// Performs Down key processing.
+        /// 
+        /// 下キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputDownKey()
+        {
+            int newX = cursor.X;
+            int newY = (cursor.Y + 1) % (stageSetting.Divide.Y - 1);
+            cursor = new Point(newX, newY);
+        }
+
+
+        /// <summary>
+        /// Performs Left key processing.
+        /// 
+        /// 左キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputLeftKey()
+        {
+            int newX = cursor.X - 1;
+            int newY = cursor.Y;
+
+            if (newX < 0)
+            {
+                newX = stageSetting.Divide.X - 2;
+            }
+
+            cursor = new Point(newX, newY);
+        }
+
+
+        /// <summary>
+        /// Performs Right key processing.
+        /// 
+        /// 右キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputRightKey()
+        {
+            int newX = (cursor.X + 1) % (stageSetting.Divide.X - 1);
+            int newY = cursor.Y;
+            cursor = new Point(newX, newY);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws cursors at all positions. 
+        /// 
+        /// 全ての位置のカーソルを描画します。
+        /// </summary>
+        public override void DrawCursor(GameTime gameTime)
+        {
+            // Sets rectangles of four panels consisting of the panels
+            // at the cursor position expanded to the right and down.
+            // 
+            // カーソル位置のパネルと、右方向と下方向に1枚ずつのばした
+            // 4枚のパネルの矩形を設定します。
+            Rectangle[] cursorRect = {
+                new Rectangle(
+                    (int)(cursor.X * panelManager.PanelSize.X),
+                    (int)(cursor.Y * panelManager.PanelSize.Y),
+                    (int)(panelManager.PanelSize.X),
+                    (int)(panelManager.PanelSize.Y)
+                ),
+                new Rectangle(
+                    (int)(cursor.X * panelManager.PanelSize.X),
+                    (int)((cursor.Y * panelManager.PanelSize.Y) +
+                        panelManager.PanelSize.Y),
+                    (int)(panelManager.PanelSize.X),
+                    (int)(panelManager.PanelSize.Y)
+                ),
+                new Rectangle(
+                    (int)((cursor.X * panelManager.PanelSize.X) +
+                        panelManager.PanelSize.X),
+                    (int)(cursor.Y * panelManager.PanelSize.Y),
+                    (int)(panelManager.PanelSize.X),
+                    (int)(panelManager.PanelSize.Y)
+                ),
+                new Rectangle(
+                    (int)((cursor.X * panelManager.PanelSize.X) +
+                        panelManager.PanelSize.X),
+                    (int)((cursor.Y * panelManager.PanelSize.Y) +
+                        panelManager.PanelSize.Y),
+                    (int)(panelManager.PanelSize.X),
+                    (int)(panelManager.PanelSize.Y)
+                ),
+            };
+
+            // Sets the four-panel cursor draw flag.
+            // 
+            // 4枚のパネルのカーソル描画フラグを設定します。
+            PanelTypes[] types = {
+                PanelTypes.LeftUp | PanelTypes.LeftDown | PanelTypes.RightUp,
+                PanelTypes.LeftUp | PanelTypes.LeftDown | PanelTypes.RightDown,
+                PanelTypes.LeftUp | PanelTypes.RightUp | PanelTypes.RightDown,
+                PanelTypes.LeftDown | PanelTypes.RightUp | PanelTypes.RightDown
+            };
+
+
+            Batch.Begin();
+            
+            // Draws the four-panel cursor.
+            // 
+            // 4枚のパネルのカーソルを描画します。
+            for (int i = 0; i < cursorRect.Length; i++)
+            {
+                DrawCursor(gameTime, cursorRect[i], Color.White, types[i]);
+            }
+
+            // Draws the central cursor.
+            // 
+            // 中央のカーソルを描画します。
+            DrawCenterCursor();
+
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the central cursor.
+        /// 
+        /// 中央のカーソルを描画します。
+        /// </summary>
+        public void DrawCenterCursor()
+        {
+            Rectangle cursorSize = new Rectangle(0, 0, 48, 48);
+            
+            // Calculates the coordinates of the texture source.
+            // 
+            // テクスチャの転送元の座標を計算します。
+            Rectangle centerCursorArea = new Rectangle();
+            centerCursorArea.X = 192;
+            centerCursorArea.Y = (cursorSize.Height * 2) * 0;
+            centerCursorArea.Width = cursorSize.Width;
+            centerCursorArea.Height = cursorSize.Height;
+
+            // Calculates the source coordinates.
+            // 
+            // 転送先の座標を計算します。
+            Vector2 centerCursorPosition = new Vector2();
+            centerCursorPosition.X = 
+                (cursor.X * panelManager.PanelSize.X) + panelManager.PanelSize.X;
+            centerCursorPosition.Y = 
+                (cursor.Y * panelManager.PanelSize.Y) + panelManager.PanelSize.Y;
+            centerCursorPosition.X -= (cursorSize.Width * 0.5f);
+            centerCursorPosition.Y -= (cursorSize.Height * 0.5f);
+
+            // Draws the cursor.
+            // 
+            // カーソルを描画します。
+            Vector2 position = centerCursorPosition + panelManager.DrawOffset;
+            Batch.Draw(cursorTexture, position, centerCursorArea, Color.White);
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Switches the panels.
+        /// 
+        /// パネルの入れ替え処理を行います。
+        /// </summary>
+        private void RevolvePanel()
+        {
+            VirtualPadState virtualPad =
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            if (buttons.A[VirtualKeyState.Push])
+            {
+                // Left rotates and switches the panel when the A button is pressed.
+                // 
+                // Aボタンが押されたら左回転のパネル入れ替え処理を行います。
+                if (RevolvePanelLeft())
+                {
+                    // Plays the SoundEffect if the panel switch is successful.
+                    // 
+                    // 入れ替えに成功したらSoundEffectを再生します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                    // Adds the move count.
+                    // 
+                    // 移動カウントを加算します。
+                    moveCount++;
+                }
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Right rotates and switches the panel when the B button is pressed.
+                // 
+                // Bボタンが押されたら右回転のパネル入れ替え処理を行います。
+                if (RevolvePanelRight())
+                {
+                    // Plays the SoundEffect if the panel switching is successful.
+                    // 
+                    // 入れ替えに成功したらSoundEffectを再生します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                    // Adds the move count.
+                    // 
+                    // 移動カウントを加算します。
+                    moveCount++;
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Left rotates and switches the panel.
+        /// 
+        /// 左回転のパネル入れ替え処理を行います。
+        /// </summary>
+        private bool RevolvePanelLeft()
+        {
+            Point[] panelPoints = new Point[] {
+                new Point(cursor.X + 0, cursor.Y + 0),
+                new Point(cursor.X + 1, cursor.Y + 0),
+                new Point(cursor.X + 1, cursor.Y + 1),
+                new Point(cursor.X + 0, cursor.Y + 1),
+            };
+
+            // Specifies the panel array and performs switching. 
+            // 
+            // パネルの配列を指定して入れ替え処理を行います。
+            return RevolvePanel(panelPoints);
+        }
+
+
+        /// <summary>
+        /// Right rotates and switches the panel.
+        /// 
+        /// 右回転のパネル入れ替え処理を行います。
+        /// </summary>
+        private bool RevolvePanelRight()
+        {
+            Point[] panelPoints = new Point[] {
+                new Point(cursor.X + 0, cursor.Y + 0),
+                new Point(cursor.X + 0, cursor.Y + 1),
+                new Point(cursor.X + 1, cursor.Y + 1),
+                new Point(cursor.X + 1, cursor.Y + 0),
+            };
+
+            // Specifies the panel array and performs switching. 
+            // 
+            // パネルの配列を指定して入れ替え処理を行います。
+            return RevolvePanel(panelPoints);
+        }
+
+
+        /// <summary>
+        /// Specifies the panel array and performs switching.
+        /// 
+        /// パネルの配列を指定して入れ替え処理を行います。
+        /// </summary>
+        private bool RevolvePanel(Point[] panelPoints)
+        {
+            // Processing is not performed if the panel is in action.
+            // 
+            // パネルが動作中の場合は処理を行いません。
+            if (IsPanelAction)
+                return false;
+
+            // Sets the switching panel array.
+            // 
+            // 入れ替えるパネルの配列を設定します。
+            PanelData[] panels = { 
+                panelManager.GetPanel(panelPoints[0]),
+                panelManager.GetPanel(panelPoints[1]),
+                panelManager.GetPanel(panelPoints[2]),
+                panelManager.GetPanel(panelPoints[3]),
+            };
+
+            // Processing is not performed if the switching panel status is not Normal.
+            // 
+            // 入れ替えるパネルが通常状態ではない場合、処理を行いません。
+            foreach (PanelData panelData in panels)
+            {
+                if (panelData.Status != PanelData.PanelStatus.None)
+                {
+                    return false;
+                }
+            }
+
+            // Sets the panel From and To positions.
+            // 
+            // パネルの移動元と、移動先を設定します。
+            Vector2[,] panelFromTo = {
+                {
+                    panels[0].Position,
+                    panels[1].Position,
+                },
+                {
+                    panels[1].Position,
+                    panels[2].Position,
+                },
+                {
+                    panels[2].Position,
+                    panels[3].Position,
+                },
+                {
+                    panels[3].Position,
+                    panels[0].Position,
+                },
+            };
+
+            // Changes and sets the draw position.
+            // 
+            // 描画位置の変更と、設定を行います。
+            for (int i = 0; i < 4; i++)
+            {
+                panels[i].FromPosition = panelFromTo[i, 0];
+                panels[i].ToPosition = panelFromTo[i, 1];
+                panels[i].Status = PanelData.PanelStatus.Move;
+                panels[i].Color = ActivePanelColor;
+                panels[i].MoveCount = 1.0f;
+            }
+
+            // Exchanges the panel data.
+            // 
+            // パネルのデータを交換します。
+            panelManager.SetPanel(panelPoints[0], panels[3]);
+            panelManager.SetPanel(panelPoints[1], panels[0]);
+            panelManager.SetPanel(panelPoints[2], panels[1]);
+            panelManager.SetPanel(panelPoints[3], panels[2]);
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Switches panels at random.
+        /// 
+        /// ランダムでパネルを入れ替えます。
+        /// </summary>
+        public override bool RandomShuffle()
+        {
+            // Processing is not performed if the panel is in action.
+            // 
+            // パネルが動作中なら処理を行いません。
+            if (IsPanelAction)
+                return false;
+
+            // Obtains the target panel.
+            // 
+            // 対象のパネルを取得します。
+            cursor = panelManager.GetRandomPanel(stageSetting);
+
+            // Sets the rotation direction at random.
+            // 
+            // ランダムで回転方向を設定します。
+            if (Random.Next(2) == 0)
+            {
+                // Performs left rotation panel switching.
+                // 
+                // 左回転のパネル入れ替え処理を行います。
+                if (RevolvePanelLeft())
+                {
+                    // Plays the SoundEffect if panel switching is successful.
+                    // 
+                    // 入れ替えが成功したらSoundEffectを再生します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+                }
+            }
+            else
+            {
+                // Performs right rotation panel switching.
+                // 
+                // 右回転のパネル入れ替え処理を行います。
+                if (RevolvePanelRight())
+                {
+                    // Plays the SoundEffect if panel switching is successful.
+                    // 
+                    // 入れ替えが成功したらSoundEffectを再生します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+                }
+            }
+
+            return true;
+        }
+        #endregion
+    }
+}
+
+

+ 663 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/SlideComponent.cs

@@ -0,0 +1,663 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SlideComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle.Style
+{
+    /// <summary>
+    /// Implements the Slide Mode style.
+    /// This class inherits the StyleBase class and implements panel switching.
+    /// It switches panels extended from the cursor position in all four directions
+    /// as far as the movie end panel by sliding them.
+    /// 
+    /// スライドモードのスタイルを実装します。
+    /// このクラスはStyleBaseクラスを継承し、パネルの入れ替え処理を実装しています。
+    /// カーソルの位置から、ムービーの端のパネルまで上下左右に伸ばしたパネルを
+    /// スライドさせて入れ替える処理を行っています。
+    /// </summary>
+    public class SlideComponent : StyleBase
+    {
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SlideComponent(Game game,
+            StageSetting setting, Point cursor, PanelManager manager)
+            : base(game, setting, cursor, manager)
+        {
+        }
+
+
+        /// <summary>
+        /// Loads the content. 
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the cursor texture.
+            // 
+            // カーソルのテクスチャを読み込みます。
+            string asset = "Textures/Puzzle/cursor";
+            cursorTexture = Content.Load<Texture2D>(asset);
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Checks the select enabled status.
+            // 
+            // 選択有効状態をチェックします。
+            if (SelectEnabled)
+            {
+                // Moves the cursor.
+                // 
+                // カーソルの移動処理を行います。
+                UpdateCursor();
+
+                // Slides the panels in the vertical direction.
+                // 
+                // パネルを縦方向にスライドする処理を行います。
+                UpdateSlidePanel();
+            }
+
+            // Updates all panels.
+            // 
+            // 全てのパネルの更新処理を行います。
+            UpdatePanels(gameTime);
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Moves the cursor.
+        /// 
+        /// カーソル移動処理を行います。
+        /// </summary>
+        private void UpdateCursor()
+        {
+            // Manages the SoundEffect by the flag only once so that 
+            // the SoundEffect will not be played simultaneously.
+            // 
+            // SoundEffectの同時再生を防ぐために一度フラグで管理します。
+            bool sePlay = false;
+
+            VirtualPadState virtualPad =
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadDPad dPad = virtualPad.DPad;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+
+            if (InputState.IsPushRepeat(dPad.Up, leftStick.Up))
+            {
+                // Performs Up key processing.
+                // 
+                // 上キーが押されたときの処理を行います。
+                InputUpKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Down, leftStick.Down))
+            {
+                // Performs Down key processing.
+                //
+                // 下キーが押されたときの処理を行います。
+                InputDownKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Left, leftStick.Left))
+            {
+                // Performs Left key processing.
+                // 
+                // 左キーが押されたときの処理を行います。
+                InputLeftKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+            if (InputState.IsPushRepeat(dPad.Right, leftStick.Right))
+            {
+                // Performs Right key processing.
+                //
+                // 右キーが押されたときの処理を行います。
+                InputRightKey();
+
+                // Sets the SoundEffect playback flag.
+                // 
+                // SoundEffectの再生フラグを設定します。
+                sePlay = true;
+            }
+
+
+            // Plays the SoundEffect if the sound playback flag is set.
+            // 
+            // サウンド再生フラグが設定されていれば再生します。
+            if (sePlay)
+            {
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor2);
+            }
+        }
+
+
+        /// <summary>
+        /// Performs Up key processing.
+        /// 
+        /// 上キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputUpKey()
+        {
+            // Sets the cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = cursor.X;
+            int newY = cursor.Y - 1;
+
+            if (newY < 0)
+            {
+                newY = stageSetting.Divide.Y - 1;
+            }
+
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+
+
+        /// <summary>
+        /// Performs Down key processing.
+        /// 
+        /// 下キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputDownKey()
+        {
+            // Sets the  cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = cursor.X;
+            int newY = (cursor.Y + 1) % stageSetting.Divide.Y;
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+
+
+        /// <summary>
+        /// Performs Left key processing.
+        /// 
+        /// 左キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputLeftKey()
+        {
+            // Sets the cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = cursor.X - 1;
+            int newY = cursor.Y;
+
+            if (newX < 0)
+            {
+                newX = stageSetting.Divide.X - 1;
+            }
+
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+
+
+        /// <summary>
+        /// Performs Right key processing.
+        /// 
+        /// 右キーが押されたときの処理を行います。
+        /// </summary>
+        private void InputRightKey()
+        {
+            // Sets the cursor position.
+            // 
+            // カーソル位置を設定
+            int newX = (cursor.X + 1) % stageSetting.Divide.X;
+            int newY = cursor.Y;
+            cursor.X = newX;
+            cursor.Y = newY;
+        }
+
+
+        /// <summary>
+        /// Performs update processing to judge panel slide.
+        /// 
+        /// パネルのスライドを判定する更新処理を行います。
+        /// </summary>
+        private void UpdateSlidePanel()
+        {
+            bool action = false;
+
+            VirtualPadState virtualPad =
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            if (buttons.Y[VirtualKeyState.Push])
+            {
+                // Slides the panel up when the Y button is pressed.
+                // 
+                // Yボタンが押されていたら、上方向にパネルをスライドします。
+                action = SlidePanelUp();
+            }
+            else if (buttons.A[VirtualKeyState.Push])
+            {
+                // Slides the panel down when the A button is pressed.
+                // 
+                // Aボタンが押されていたら、下方向にパネルをスライドします。
+                action = SlidePanelDown();
+            }
+            else if (buttons.X[VirtualKeyState.Push])
+            {
+                // Slides the panel to the left when the X button is pressed.
+                // 
+                // Xボタンが押されていたら、左方向にパネルをスライドします。
+                action = SlidePanelLeft();
+            }
+            else if (buttons.B[VirtualKeyState.Push])
+            {
+                // Slides the panel to the right when the B button is pressed.
+                // 
+                // Bボタンが押されていたら、右方向にパネルをスライドします。
+                action = SlidePanelRight();
+            }
+
+            // Performs processing in response to panel action.
+            // 
+            // パネルが動作したら処理を行います。
+            if (action)
+            {
+                // Plays the SoundEffect when sliding.
+                // 
+                // スライド時のSoundEffectを再生します。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                // Adds up the move count.
+                // 
+                // 移動回数を加算します。
+                moveCount++;
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws cursors at all positions.
+        /// 
+        /// 全ての位置のカーソルを描画します。
+        /// </summary>
+        public override void DrawCursor(GameTime gameTime)
+        {
+            Batch.Begin();
+
+            // Draws the center cursor.
+            // 
+            // 中央のカーソルを描画します。
+            DrawCenterCursor(gameTime);
+
+            // Draws the vertical cursor.
+            // 
+            // 横方向のカーソルを描画します。
+            DrawVerticalCursor(gameTime);
+
+            // Draws the horizontal cursor.
+            // 
+            // 縦方向のカーソルを描画します。
+            DrawHorizontalCursor(gameTime);
+            
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the center cursor.
+        /// 
+        /// 中央のカーソルを描画します。
+        /// </summary>
+        private void DrawCenterCursor(GameTime gameTime)
+        {
+            Rectangle cursorRect = new Rectangle();
+            cursorRect.X = (int)(cursor.X * panelManager.PanelSize.X);
+            cursorRect.Y = (int)(cursor.Y * panelManager.PanelSize.Y);
+            cursorRect.Width = (int)(panelManager.PanelSize.X);
+            cursorRect.Height = (int)(panelManager.PanelSize.Y);
+            DrawCursor(gameTime, cursorRect, Color.Red, PanelTypes.All);
+        }
+
+
+        /// <summary>
+        /// Draws the vertical cursor.
+        /// 
+        /// 横方向のカーソルを描画します。
+        /// </summary>
+        private void DrawVerticalCursor(GameTime gameTime)
+        {
+            for (int x = 0; x < stageSetting.Divide.X; x++)
+            {
+                // Processing is not performed if the draw location is 
+                // the same as the cursor position.
+                // 
+                // 描画先がカーソル位置と同じ場合は処理を行いません。
+                if (x == cursor.X)
+                    continue;
+
+                Rectangle cursorRect = new Rectangle();
+                cursorRect.X = (int)(x * panelManager.PanelSize.X);
+                cursorRect.Y = (int)(cursor.Y * panelManager.PanelSize.Y);
+                cursorRect.Width = (int)(panelManager.PanelSize.X);
+                cursorRect.Height = (int)(panelManager.PanelSize.Y);
+
+                DrawCursor(gameTime, cursorRect, Color.White, PanelTypes.All);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the horizontal cursor.
+        /// 
+        /// 縦方向のカーソルを描画します。
+        /// </summary>
+        private void DrawHorizontalCursor(GameTime gameTime)
+        {
+            for (int y = 0; y < stageSetting.Divide.Y; y++)
+            {
+                // Proccessing is not performed if the draw location is 
+                // the same as the cursor position.
+                // 
+                // 描画先がカーソル位置と同じ場合は処理を行いません。
+                if (y == cursor.Y)
+                    continue;
+
+                Rectangle cursorRect = new Rectangle();
+                cursorRect.X = (int)(cursor.X * panelManager.PanelSize.X);
+                cursorRect.Y = (int)(y * panelManager.PanelSize.Y);
+                cursorRect.Width = (int)(panelManager.PanelSize.X);
+                cursorRect.Height = (int)(panelManager.PanelSize.Y);
+
+                DrawCursor(gameTime, cursorRect, Color.White, PanelTypes.All);
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Slides the panels up.
+        /// 
+        /// パネルを上方向にスライドさせます。
+        /// </summary>
+        private bool SlidePanelUp()
+        {
+            List<Point> panelPointList = new List<Point>();
+            for (int y = stageSetting.Divide.Y - 1; y >= 0; y--)
+            {
+                panelPointList.Add(new Point(cursor.X, y));
+            }
+
+            if (panelPointList.Count == 0)
+            {
+                return false;
+            }
+
+            // Specifies the panel array to slide and switches the panels.
+            // 
+            // スライドするパネルの配列を指定して入れ替えます。
+            return SlidePanel(panelPointList);
+        }
+
+
+        /// <summary>
+        /// Slides the panels down.
+        /// 
+        /// パネルを下方向にスライドさせます。
+        /// </summary>
+        private bool SlidePanelDown()
+        {
+            List<Point> panelPointList = new List<Point>();
+            for (int y = 0; y < stageSetting.Divide.Y; y++)
+            {
+                panelPointList.Add(new Point(cursor.X, y));
+            }
+
+            if (panelPointList.Count == 0)
+            {
+                return false;
+            }
+
+            // Specifies the panel array to slide and switches the panels.
+            // 
+            // スライドするパネルの配列を指定して入れ替えます。
+            return SlidePanel(panelPointList);
+        }
+
+
+        /// <summary>
+        /// Slides the panels to the left.
+        /// 
+        /// パネルを左方向にスライドさせます。
+        /// </summary>
+        private bool SlidePanelLeft()
+        {
+            List<Point> panelPointList = new List<Point>();
+            for (int x = stageSetting.Divide.X - 1; x >= 0; x--)
+            {
+                panelPointList.Add(new Point(x, cursor.Y));
+            }
+
+            if (panelPointList.Count == 0)
+            {
+                return false;
+            }
+
+            // Specifies the panel array to slide and switches the panels.
+            // 
+            // スライドするパネルの配列を指定して入れ替えます。
+            return SlidePanel(panelPointList);
+        }
+
+
+        /// <summary>
+        /// Slides the panels to the right.
+        /// 
+        /// パネルを右方向にスライドさせます。
+        /// </summary>
+        private bool SlidePanelRight()
+        {
+            List<Point> panelPointList = new List<Point>();
+            for (int x = 0; x < stageSetting.Divide.X; x++)
+            {
+                panelPointList.Add(new Point(x, cursor.Y));
+            }
+
+            if (panelPointList.Count == 0)
+            {
+                return false;
+            }
+
+            // Specifies the panel array to slide and switches the panels.
+            // 
+            // スライドするパネルの配列を指定して入れ替えます。
+            return SlidePanel(panelPointList);
+        }
+
+
+        /// <summary>
+        /// Specifies the panel array to slide and switches the panels.
+        /// 
+        /// スライドするパネルの配列を指定して入れ替えます。
+        /// </summary>
+        private bool SlidePanel(List<Point> panelPointList)
+        {
+            // Processing is not performed if the panel status is not Normal.
+            // 
+            // パネルが通常状態ではない場合は処理を行いません。
+            if (IsPanelAction)
+                return false;
+
+            // Processing is not performed if there is no switching panel array.
+            // 
+            // 入れ替えるパネルの配列が無い場合は処理を行いません。
+            if (panelPointList == null || panelPointList.Count == 0)
+                return false;
+
+            // Obtains the switching panel list.
+            // 
+            // 入れ替えるパネルのリストを取得します。
+            List<PanelData> panels = new List<PanelData>();
+            foreach (Point point in panelPointList)
+            {
+                panels.Add(panelManager.GetPanel(point));
+            }
+
+            // Processing is not performed if the switching panel status is not Normal.
+            // 
+            // 入れ替えるパネルが通常状態ではない場合、処理を行いません。
+            foreach (PanelData panelData in panels)
+            {
+                if (panelData.Status != PanelData.PanelStatus.None)
+                {
+                    return false;
+                }
+            }
+
+            // Sets the panel From and To positions.
+            // 
+            // パネルの移動元と、移動先を設定します。
+            List<Vector2[]> panelFromTo = new List<Vector2[]>();
+            for (int i = 0; i < panels.Count; i++)
+            {
+                int currentId = i;
+                int nextId = (i + 1) % panels.Count;
+
+                Vector2[] item = {
+                    panels[currentId].Position,
+                    panels[nextId].Position,
+                };
+                panelFromTo.Add(item);
+            }
+
+            // Changes and sets the draw position.
+            // 
+            // 描画位置の変更と、設定を行います。
+            for (int i = 0; i < panels.Count; i++)
+            {
+                panels[i].FromPosition = panelFromTo[i][0];
+                panels[i].ToPosition = panelFromTo[i][1];
+                panels[i].Status = PanelData.PanelStatus.Move;
+                panels[i].Color = ActivePanelColor;
+                panels[i].MoveCount = 1.0f;
+            }
+
+            // Exchanges the panel data.
+            // 
+            // パネルのデータを交換します。
+            for (int i = 0; i < panels.Count; i++)
+            {
+                int panelId = (i + (panels.Count - 1)) % panels.Count;
+                panelManager.SetPanel(panelPointList[i], panels[panelId]);
+            }
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Switches panels at random.
+        /// 
+        /// ランダムでパネルを入れ替えます。
+        /// </summary>
+        public override bool RandomShuffle()
+        {
+            // Processing is not performed while panels are in action.
+            // 
+            // パネルが動作中なら処理を行いません。
+            if (IsPanelAction)
+                return false;
+
+            // Obtains the target panels.
+            // 
+            // 対象のパネルを取得します。
+            cursor = panelManager.GetRandomPanel(stageSetting);
+
+            // Selects the panel sliding direction at random.
+            // 
+            // パネルのスライド方向をランダムで決定します。
+            int rndValue = Random.Next(0, 4);
+            if (rndValue == 0)
+            {
+                // Slides the panel up.
+                // 
+                // 上方向にスライドします。
+                SlidePanelUp();
+            }
+            else if (rndValue == 1)
+            {
+                // Slides the panel down.
+                // 
+                // 下方向にスライドします。
+                SlidePanelDown();
+            }
+            else if (rndValue == 2)
+            {
+                // Slides the panel to the left.
+                // 
+                // 左方向にスライドします。
+                SlidePanelLeft();
+            }
+            else if (rndValue == 3)
+            {
+                // Slides the panel to the right.
+                // 
+                // 右方向にスライドします。
+                SlidePanelRight();
+            }
+
+            // Plays the sliding SoundEffect.
+            // 
+            // スライドのSoundEffectを再生します。
+            GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+            return true;
+        }
+        #endregion
+    }
+}
+
+

+ 930 - 0
Samples/Movipa/Movipa/Components/Scene/Puzzle/Style/StyleBase.cs

@@ -0,0 +1,930 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// StyleBase.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Puzzle.Style
+{
+    /// <summary>
+    /// Panel selection class.
+    /// This class implements panel update and drawing functions.
+    /// DrawCursor (used for drawing the cursor) and RandomShuffle (used for shuffling)
+    /// must be defined in the inheritance target for this class. 
+    /// 
+    /// パネル選択のクラスです。
+    /// このクラスにはパネルの更新と描画の機能を実装しています。
+    /// クラスの継承先ではカーソルを描画するDrawCursorと、
+    /// シャッフル時に使用されるRandomShuffleを定義する必要があります。
+    /// </summary>
+    public abstract class StyleBase : SceneComponent
+    {
+        #region Public Types
+        /// <summary>
+        /// Cursor draw position
+        /// 
+        /// カーソル描画位置
+        /// </summary>
+        [Flags]
+        public enum PanelTypes
+        {
+            /// <summary>
+            /// Left up
+            /// 
+            /// 左上
+            /// </summary>
+            LeftUp = 1,
+
+            /// <summary>
+            /// Left down 
+            /// 
+            /// 左下
+            /// </summary>
+            LeftDown = 2,
+
+            /// <summary>
+            /// Right up
+            /// 
+            /// 右上
+            /// </summary>
+            RightUp = 4,
+
+            /// <summary>
+            /// Right down
+            /// 
+            /// 右下
+            /// </summary>
+            RightDown = 8,
+
+            /// <summary>
+            /// All
+            /// 
+            /// 全て
+            /// </summary>
+            All = LeftUp | LeftDown | RightUp | RightDown
+        }
+        #endregion
+
+        #region Fields
+        /// <summary>
+        /// Active panel color 
+        /// 
+        /// 動作中のパネルの色
+        /// </summary>
+        protected readonly Color ActivePanelColor = new Color(0xff, 0xff, 0xff, 0x7f);
+
+        // Movie texture
+        // 
+        // ムービーテクスチャ
+        private Texture2D movieTexture = null;
+
+        // Select enabled status
+        // 
+        // 選択可否状態
+        private bool selectEnabled = false;
+
+        // Panel after-image list
+        // 
+        // パネルの残像リスト
+        private LinkedList<PanelAfterImage> panelAfterImageList;
+
+        // Cursor
+        // 
+        // カーソル
+        protected Point cursor;
+
+        // Cursor texture
+        // 
+        // カーソルテクスチャ
+        protected Texture2D cursorTexture;
+
+        // Stage settings information 
+        // 
+        // ステージ設定情報
+        protected StageSetting stageSetting;
+
+        // Panel management class
+        // 
+        // パネル管理クラス
+        protected PanelManager panelManager;
+
+        // Move count
+        // 
+        // 移動回数
+        protected UInt32 moveCount;
+
+        // Glass texture
+        // 
+        // ガラステクスチャ
+        private Texture2D glassTexture;
+
+        // Lighting texture
+        // 
+        // ライティングテクスチャ
+        private Texture2D glassLightingTexture;
+
+        // Glass texture rectangle
+        // 
+        // ガラステクスチャの矩形
+        private Rectangle glassRect;
+
+        // Lighting texture rectangle
+        // 
+        // ライティングテクスチャの矩形
+        private Rectangle glassLightingRect;
+
+        // Glass texture draw color
+        // 
+        // ガラステクスチャの描画色
+        private Color glassColor;
+
+        // Primitive draw class
+        // 
+        // 基本描画クラス
+        private PrimitiveDraw2D primitiveDraw;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains or sets the movie animation texture.
+        /// 
+        /// ムービーアニメーションのテクスチャを取得または設定します。
+        /// </summary>
+        public Texture2D MovieTexture
+        {
+            get { return movieTexture; }
+            set { movieTexture = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the select enabled status.
+        /// 
+        /// 選択可否状態を取得または設定します。
+        /// </summary>
+        public bool SelectEnabled
+        {
+            get { return selectEnabled; }
+            set { selectEnabled = value; }
+        }
+
+
+        /// <summary>
+        /// Obtains or sets the panel after-image list.      
+        /// 
+        /// 残像パネルのリストを取得または設定します。
+        /// </summary>
+        public LinkedList<PanelAfterImage> PanelAfterImageList
+        {
+            get { return panelAfterImageList; }
+        }
+
+
+        /// <summary>
+        /// Obtains the move count. 
+        /// 
+        /// 移動回数を取得します。
+        /// </summary>
+        public UInt32 MoveCount
+        {
+            get { return moveCount; }
+        }
+
+
+        /// <summary>
+        /// Obtains the panel action status.
+        /// 
+        /// パネル動作状態を取得します。
+        /// </summary>
+        public bool IsPanelAction
+        {
+            get { return GetPanelAction(); }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        protected StyleBase(Game game, StageSetting setting, Point cursor, 
+            PanelManager manager)
+            : base(game)
+        {
+            this.cursor = cursor;
+            stageSetting = setting;
+            panelManager = manager;
+
+            // Creates the panel after-image array.
+            // 
+            // パネルの残像の配列を作成します。
+            panelAfterImageList = new LinkedList<PanelAfterImage>();
+
+            // Creates the line drawing class.
+            // 
+            // ライン描画のクラスを作成します。
+            primitiveDraw = new PrimitiveDraw2D(game.GraphicsDevice);
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        /// 
+        /// コンテントを読み込みます。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            string asset;
+            
+            // Loads the glass texture drawn at completion.
+            // 
+            // 完成時に描画するガラスのテクスチャを読み込みます。
+            asset = "Textures/Puzzle/glass";
+            glassTexture = Content.Load<Texture2D>(asset);
+
+            // Loads the reflected light texture.
+            // 
+            // 反射光のテクスチャを読み込みます。
+            asset = "Textures/Puzzle/glass_light";
+            glassLightingTexture = Content.Load<Texture2D>(asset);
+
+
+            glassRect = new Rectangle();
+            glassRect.Width = glassTexture.Width;
+            glassRect.Height = glassTexture.Height;
+
+            glassLightingRect = new Rectangle();
+            glassLightingRect.Width = glassLightingTexture.Width;
+            glassLightingRect.Height = glassLightingTexture.Height;
+
+            glassColor = new Color(0xff, 0xff, 0xff, 0x4f);
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates all panels.
+        /// 
+        /// 全てのパネルの更新処理を行います。
+        /// </summary>
+        protected void UpdatePanels(GameTime gameTime)
+        {
+            for (int x = 0; x < stageSetting.Divide.X; x++)
+            {
+                for (int y = 0; y < stageSetting.Divide.Y; y++)
+                {
+                    UpdatePanel(panelManager.GetPanel(x, y));
+                }
+            }
+
+            // Updates the panel after-image. 
+            // 
+            // 残像のパネルを更新します。
+            UpdateAfterImage(gameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the panel.
+        ///
+        /// パネルの更新処理を行います。
+        /// </summary>
+        protected virtual void UpdatePanel(PanelData panel)
+        {
+            // Updates panel rotation.
+            // 
+            // パネルの回転処理の更新を行います。
+            UpdatePanelRotate(panel);
+
+            // Moves the panel.
+            // 
+            // パネルの移動処理を行います。
+            UpdatePanelMove(panel);
+
+            // Updates the panel reflected light.
+            // 
+            // パネルの反射光の更新処理を行います。
+            UpdatePanelGlass(panel);
+
+            // Creates the after-image if the panel is in active status.
+            // 
+            // パネルが動作状態の場合は残像を作成します。
+            if (panel.Status != PanelData.PanelStatus.None)
+            {
+                // Creates the after-image panel.
+                // 
+                // 残像のパネルを作成します。
+                PanelAfterImage afterimage = CreateAfterImage(panel);
+
+                // Adds the after-image to the array.
+                // 
+                // 残像を配列に追加します。
+                PanelAfterImageList.AddLast(afterimage);
+            }
+
+        }
+
+
+        /// <summary>
+        /// Updates the panel rotation.
+        /// 
+        /// パネルの回転処理の更新を行います。
+        /// </summary>
+        private static void UpdatePanelRotate(PanelData panel)
+        {
+            // Processing is not performed if the panel status is not Rotate.
+            // 
+            // ステータスが回転では無い場合は処理を行いません。
+            if (panel.Status != PanelData.PanelStatus.RotateLeft &&
+                panel.Status != PanelData.PanelStatus.RotateRight)
+                return;
+
+
+            if (panel.Status == PanelData.PanelStatus.RotateLeft)
+            {
+                panel.Rotate += 10;
+                panel.Rotate %= 360;
+            }
+            else if (panel.Status == PanelData.PanelStatus.RotateRight)
+            {
+                panel.Rotate += 350;
+                panel.Rotate %= 360;
+            }
+
+            // Rotation completed; status is returned.
+            // 
+            // 回転が終了したのでステータスを戻します。
+            if (Math.Abs(panel.Rotate - panel.ToRotate) < 10)
+            {
+                panel.Status = PanelData.PanelStatus.None;
+                panel.Rotate = panel.ToRotate;
+            }
+        }
+
+
+        /// <summary>
+        /// Moves the panel.
+        /// 
+        /// パネルの移動処理を行います。
+        /// </summary>
+        private static void UpdatePanelMove(PanelData panel)
+        {
+            // Processing is not performed if the panel status is not Move.
+            // 
+            // ステータスが移動ではない場合は処理を行いません。
+            if (panel.Status != PanelData.PanelStatus.Move)
+                return;
+
+            if (panel.MoveCount > 0)
+            {
+                // Moves the panel.
+                // 
+                // パネルの移動処理を行います。
+                panel.MoveCount = MathHelper.Clamp(panel.MoveCount - 0.1f, 0.0f, 1.0f);
+
+                Vector2 fromPosition = panel.FromPosition;
+                Vector2 toPosition = panel.ToPosition;
+                float amount = panel.MoveCount;
+                panel.Position = Vector2.Lerp(toPosition, fromPosition, amount);
+            }
+            else
+            {
+                // Movement completed; status is returned.
+                // 
+                // 移動が完了したのでステータスを戻します。
+                panel.Status = PanelData.PanelStatus.None;
+                panel.Position = panel.ToPosition;
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the panel reflected light.
+        /// 
+        /// パネルの反射光の更新処理を行います。
+        /// </summary>
+        private void UpdatePanelGlass(PanelData panel)
+        {
+            // Processing is not performed if the panel status is Active.
+            // 
+            // ステータスが動作状態の場合は処理を行いません。
+            if (panel.Status != PanelData.PanelStatus.None)
+                return;
+
+            // Returns the panel draw color.
+            // 
+            // パネルの描画色を戻します。
+            panel.Color = Color.White;
+            panel.Flush += 32;
+
+            // Generates glass light at random.
+            // 
+            // ランダムでガラスのライトを発生させます。
+            if (panel.Enabled == false)
+            {
+                if (panel.Flush > 256 && (Random.Next() % 200) == 0)
+                {
+                    panel.Flush = -256;
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the panel after-image.
+        /// 
+        /// 残像のパネルを更新します。
+        /// </summary>
+        protected void UpdateAfterImage(GameTime gameTime)
+        {
+            LinkedListNode<PanelAfterImage> node = PanelAfterImageList.First;
+            while (node != null)
+            {
+                PanelAfterImage afterimage = node.Value;
+                LinkedListNode<PanelAfterImage> removeNode = node;
+
+                // Updates the after-image.
+                // 
+                // 残像の更新処理を行います。
+                afterimage.Update(gameTime);
+
+                // Moves to the next node. 
+                // 
+                // 次のノードへ移動します。
+                node = node.Next;
+
+                // Deletes the after image from the array if released.
+                // 
+                // 開放処理が行われていたら配列から削除します。
+                if (afterimage.Disposed)
+                {
+                    PanelAfterImageList.Remove(removeNode);
+                }
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws the panel.
+        /// 
+        /// パネルの描画を行います。
+        /// </summary>
+        public void DrawPanels(GameTime gameTime)
+        {
+            // Processing is not performed if there is no texture.
+            // 
+            // テクスチャが無い場合は処理を行いません。
+            if (MovieTexture == null)
+                return;
+
+            // Draws Normal status panels.
+            // 
+            // 通常状態のパネルを描画します。
+            DrawNormalPanel();
+
+            // Draws the panel frame.
+            // 
+            // パネルのフレームを描画します。
+            DrawPanelFrame();
+
+            // Draws the panel after-image.
+            // 
+            // 残像のパネルを描画します。
+            DrawEffectPanel(gameTime, Batch);
+
+            // Draws panels undergoing change.
+            // 
+            // 変化中のパネル描画を描画します。
+            DrawActivePanel();
+        }
+
+
+        /// <summary>
+        /// Draws Normal status panels.
+        /// 
+        /// 通常状態のパネルを描画します。
+        /// </summary>
+        private void DrawNormalPanel()
+        {
+            Batch.Begin();
+            for (int x = 0; x < stageSetting.Divide.X; x++)
+            {
+                for (int y = 0; y < stageSetting.Divide.Y; y++)
+                {
+                    // Obtains the panel.
+                    // 
+                    // パネルを取得します。
+                    PanelData panel = panelManager.GetPanel(x, y);
+
+                    // Panels undergoing change are not drawn.
+                    // 
+                    // 変化中のパネルは描画処理を行いません。
+                    if (panel.Status != PanelData.PanelStatus.None)
+                    {
+                        continue;
+                    }
+
+                    // Draws Normal status panels.
+                    // 
+                    // 通常状態のパネルを描画します。
+                    DrawPanel(panel);
+
+                    // Draws glass texture for completed panels.
+                    // 
+                    // 完成されたパネルのガラステクスチャを描画します。
+                    DrawPanelGlass(panel);
+                }
+            }
+            Batch.End();
+
+        }
+
+
+        /// <summary>
+        /// Draws Normal status panels.
+        /// 
+        /// 通常状態のパネルを描画します。
+        /// </summary>
+        private void DrawPanel(PanelData panel)
+        {
+            Batch.Draw(
+                MovieTexture,
+                panel.Center + panelManager.DrawOffset,
+                panel.SourceRectangle,
+                panel.Color,
+                MathHelper.ToRadians(panel.Rotate),
+                panel.Origin,
+                1.0f,
+                SpriteEffects.None,
+                0.0f);
+        }
+
+
+        /// <summary>
+        /// Draws glass texture for completed panels.
+        /// 
+        /// 完成されたパネルのガラステクスチャを描画します。
+        /// </summary>
+        private void DrawPanelGlass(PanelData panel)
+        {
+            // Drawing is not performed if the panel is not completed.
+            // 
+            // パネルがまだ完成されていない状態なら描画処理を行いません。
+            if (panel.Enabled)
+                return;
+
+            Rectangle panelRect = panel.RectanglePosition;
+            panelRect.X += (int)panelManager.DrawOffset.X;
+            panelRect.Y += (int)panelManager.DrawOffset.Y;
+
+
+            Texture2D texture;
+
+            // Draws the glass.
+            // 
+            // ガラスを描画します。
+            texture = glassTexture;
+            Batch.Draw(texture, panelRect, glassRect, glassColor);
+
+            // Draws the lighting effect.
+            // 
+            // ライティングエフェクトを描画します。
+            glassLightingRect.X = (int)panel.Flush;
+            texture = glassLightingTexture;
+            Batch.Draw(texture, panelRect, glassLightingRect, Color.White);
+        }
+
+
+        /// <summary>
+        /// Draws the active panel.
+        /// 
+        /// 動作中のパネルを描画します。
+        /// </summary>
+        private void DrawActivePanel()
+        {
+            // Performs drawing via addition.
+            // 
+            // 加算で描画を行います。
+            Batch.Begin(SpriteBlendMode.AlphaBlend);
+            for (int x = 0; x < stageSetting.Divide.X; x++)
+            {
+                for (int y = 0; y < stageSetting.Divide.Y; y++)
+                {
+                    // Obtains the panel.
+                    // 
+                    // パネルを取得します。
+                    PanelData panel = panelManager.GetPanel(x, y);
+
+                    // Stopped panels are not drawn.
+                    // 
+                    // 停止中のパネルは描画処理を行いません。
+                    if (panel.Status == PanelData.PanelStatus.None)
+                    {
+                        continue;
+                    }
+
+                    // Draws the active panel.
+                    // 
+                    // 動作中のパネルを描画します。
+                    DrawPanel(panel);
+                }
+            }
+            Batch.End();
+        }
+
+
+        /// <summary>
+        /// Draws the after-image.
+        /// 
+        /// 残像の描画を行います。
+        /// </summary>
+        private void DrawEffectPanel(GameTime gameTime, SpriteBatch batch)
+        {
+            // Performs drawing via addition.
+            // 
+            // 加算で描画処理を行います。
+            Batch.Begin(SpriteBlendMode.Additive);
+            foreach (PanelAfterImage afterimage in PanelAfterImageList)
+            {
+                afterimage.Draw(gameTime, batch);
+            }
+            Batch.End();
+
+        }
+
+
+        /// <summary>
+        /// Draws lines in the panel rectangle.
+        /// 
+        /// パネルの矩形にラインを描画します。
+        /// </summary>
+        private void DrawPanelFrame()
+        {
+            for (int x = 0; x < stageSetting.Divide.X; x++)
+            {
+                for (int y = 0; y < stageSetting.Divide.Y; y++)
+                {
+                    // Obtains the panel.
+                    // 
+                    // パネルを取得します。
+                    PanelData panel = panelManager.GetPanel(x, y);
+
+                    // Panels undergoing change are not drawn.
+                    // 
+                    // 変化中のパネルは描画処理を行いません。
+                    if (panel.Status != PanelData.PanelStatus.None)
+                    {
+                        continue;
+                    }
+
+                    // Draws the lines.
+                    // 
+                    // ラインを描画します。
+                    DrawPanelFrame(panel);
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Draws lines in the panel rectangle.
+        /// 
+        /// パネルの矩形にラインを描画します。
+        /// </summary>
+        private void DrawPanelFrame(PanelData panel)
+        {
+            Vector2 panelPosition = panel.Position + panelManager.DrawOffset;
+            Color color = new Color(0xff, 0xff, 0xff, 0x20);
+            Vector4 rect = new Vector4();
+            rect.X = panelPosition.X;
+            rect.Y = panelPosition.Y;
+            rect.Z = panel.Size.X;
+            rect.W = panel.Size.Y;
+
+            primitiveDraw.DrawRect(null, rect, color);
+        }
+
+
+        /// <summary>
+        /// Abstract method for cursor drawing.
+        /// 
+        /// カーソル描画の抽象メソッドです。
+        /// </summary>
+        public abstract void DrawCursor(GameTime gameTime);
+
+
+        /// <summary>
+        /// Draws the cursor.
+        /// 
+        /// カーソル描画処理を行います。
+        /// </summary>
+        protected void DrawCursor(
+            GameTime gameTime, Rectangle panelSize, Color color, PanelTypes panelType)
+        {
+            Color[] colors = {
+                color,
+                color,
+                color,
+                color
+            };
+
+            DrawCursor(gameTime, panelSize, colors, panelType);
+        }
+
+
+        /// <summary>
+        /// Draws the cursor by specifying the four corners.
+        /// 
+        /// 四隅を指定してカーソルを描画します。
+        /// </summary>
+        protected virtual void DrawCursor(GameTime gameTime,
+            Rectangle panelSize, Color[] colors, PanelTypes panelType)
+        {
+            // Processing is not performed if the cursor texture is not specified.
+            // 
+            // カーソルのテクスチャが指定されていない場合は処理を行いません。
+            if ((cursorTexture == null) || cursorTexture.IsDisposed)
+            {
+                return;
+            }
+
+            // Specifies the cursor size at the four corners.
+            // 
+            // 四隅にあるカーソルのサイズを指定します。
+            Rectangle cursorSize = new Rectangle(0, 0, 48, 48);
+
+            // Calculates the drawing coordinates at the four corners 
+            // based on the panel rectangle.
+            // 
+            // パネルの矩形から、四隅の描画座標を計算します。
+            Vector2[] drawPosition = {
+                // Left up 
+                // 
+                // 左上
+                new Vector2(
+                    panelSize.X,
+                    panelSize.Y),
+                // Left down
+                // 
+                // 左下
+                new Vector2(
+                    panelSize.X,
+                    panelSize.Y + panelSize.Height - cursorSize.Height),
+                // Right up 
+                // 
+                // 右上
+                new Vector2(
+                    panelSize.X + panelSize.Width - cursorSize.Width,
+                    panelSize.Y),
+                // Right down
+                // 
+                // 右下
+                new Vector2(
+                    panelSize.X + panelSize.Width - cursorSize.Width,
+                    panelSize.Y + panelSize.Height - cursorSize.Height)
+            };
+
+            // Sets the texture source coordinates.
+            // 
+            // テクスチャの転送元座標を設定します。
+            int cursorType = (cursorSize.Height * 2) * 0;
+            Rectangle[] cursorArea = {
+                // Left up 
+                // 
+                // 左上
+                new Rectangle(0, cursorType,
+                    cursorSize.Width, cursorSize.Height),
+                // Left down
+                // 
+                // 左下
+                new Rectangle(0, cursorType + cursorSize.Height,
+                    cursorSize.Width, cursorSize.Height),
+                // Right up 
+                // 
+                // 右上
+                new Rectangle(cursorSize.Width, cursorType,
+                    cursorSize.Width, cursorSize.Height),
+                // Right down
+                // 
+                // 右下
+                new Rectangle(cursorSize.Width, cursorType + cursorSize.Height,
+                    cursorSize.Width, cursorSize.Height)
+            };
+
+            // Draws the cursor at the designated flag location.
+            // 
+            // 指定されたフラグの箇所のカーソルを描画します。
+            for (int i = 0; i < drawPosition.Length; i++)
+            {
+                // Processing is skipped if the draw cursor
+                // flag is not specified.
+                // 
+                // 描画するカーソルのフラグが指定されていなければ
+                // 処理をスキップします。
+                if (((int)panelType & (1 << i)) == 0)
+                    continue;
+
+                Vector2 position;
+
+                // Draws the cursor frame.
+                // 
+                // カーソルの外枠を描画します。
+                position = drawPosition[i] + panelManager.DrawOffset;
+                Batch.Draw(cursorTexture, position, cursorArea[i], colors[i]);
+
+                // Offsets the source coordinates.
+                // 
+                // 転送元の座標をずらします。
+                cursorArea[i].X += 96;
+
+                // Changes the draw color.
+                // 
+                // 描画色を変更します。
+                Vector4 color = colors[i].ToVector4();
+                float radian = (float)gameTime.TotalGameTime.TotalSeconds;
+                float alpha = Math.Abs((float)Math.Sin(radian));
+                color.W = alpha;
+
+                // Draws the internal cursor frame. 
+                // 
+                // カーソルの内枠を描画します。
+                position = drawPosition[i] + panelManager.DrawOffset;
+                Batch.Draw(cursorTexture, position, cursorArea[i], new Color(color));
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Abstract method for panel shuffle.
+        /// Should be written in the inheritance target.
+        ///
+        /// パネルシャッフルの抽象メソッドです。
+        /// 継承先で記述してください。
+        /// </summary>
+        public abstract bool RandomShuffle();
+
+
+        /// <summary>
+        /// Obtains the panel action status.
+        /// 
+        /// パネルの動作状態を取得します。
+        /// </summary>
+        private bool GetPanelAction()
+        {
+            for (int x = 0; x < stageSetting.Divide.X; x++)
+            {
+                for (int y = 0; y < stageSetting.Divide.Y; y++)
+                {
+                    if (panelManager.GetPanel(x, y).Status !=
+                        PanelData.PanelStatus.None)
+                    {
+                        return true;
+                    }
+                }
+            }
+
+            return false;
+        }
+
+
+        /// <summary>
+        /// Creates the panel after-image.
+        /// 
+        /// 残像のパネルを作成します。
+        /// </summary>
+        private PanelAfterImage CreateAfterImage(PanelData panel)
+        {
+            PanelAfterImage afterimage = new PanelAfterImage(Game);
+            afterimage.Texture = MovieTexture;
+            afterimage.Position = panel.Center + panelManager.DrawOffset;
+            afterimage.Size = panel.Size;
+            afterimage.Origin = panel.Origin;
+            afterimage.Rotate = MathHelper.ToRadians(panel.Rotate);
+            afterimage.TexturePosition = panel.TexturePosition;
+
+            return afterimage;
+        }
+        #endregion
+    }
+}
+
+

+ 155 - 0
Samples/Movipa/Movipa/Components/Scene/Result/FreeResult.cs

@@ -0,0 +1,155 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// FreeResult.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Result
+{
+    /// <summary>
+    /// Scene component displaying the Free Mode results.
+    /// It inherits ResultBase and loads the content to be used,
+    /// then performs main update processing.
+    ///
+    /// フリーモードのリザルトを表示するシーンコンポーネントです。
+    /// ResultBaseを継承し、使用するコンテントの読み込みと、
+    /// メインの更新処理の内容をわけています。
+    /// </summary>
+    public class FreeResult : ResultBase
+    {
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public FreeResult(Game game, StageResult stageResult)
+            : base(game, stageResult)
+        {
+        }
+
+
+        /// <summary>
+        /// Initializes the Navigate button.
+        /// 
+        /// ナビゲートボタンの初期化処理を行います。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("B_Title")));
+            Navigate.Add(new NavigateData(AppSettings("A_Menu"), true));
+
+            // Sets the Navigate button draw status.
+            // 
+            // ナビゲートボタンの描画状態を設定
+            drawNavigate = true;
+
+            base.InitializeNavigate();
+        }
+
+
+        /// <summary>
+        /// Loads the content. 
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the sequence data.
+            // 
+            // シーケンスデータの読み込み
+            string asset = "Layout/Result/result_Scene";
+            sceneData = Content.Load<SceneData>(asset);
+            seqStart = sceneData.CreatePlaySeqData("ResultFreeStart");
+            seqPosition = sceneData.CreatePlaySeqData("PosFreeStart");
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs main update processing.
+        /// 
+        /// メインの更新処理を行います。
+        /// </summary>
+        protected override void UpdateMain(GameTime gameTime)
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            if (phase == Phase.Start)
+            {
+                // Sets to Select Processing when the sequence finishes.
+                // 
+                // シーケンスが終了したら、選択処理に設定します。
+                if (!seqStart.IsPlay)
+                {
+                    phase = Phase.Select;
+                }
+            }
+            else if (phase == Phase.Select)
+            {
+                if (buttons.A[VirtualKeyState.Push])
+                {
+                    // Performs menu transition when the A button is pressed.
+                    // 
+                    // Aボタンが押された場合はメニューに遷移します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+                    GameData.SceneQueue.Enqueue(new Menu.MenuComponent(Game));
+                    GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeOut);
+                }
+                else if (buttons.B[VirtualKeyState.Push])
+                {
+                    // Performs title transition when the B button is pressed.
+                    // 
+                    // Bボタンが押された場合はタイトルに遷移します。
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+                    GameData.SceneQueue.Enqueue(new Title(Game));
+                    GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeOut);
+                }
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Returns the text string to display in the sequence.
+        /// 
+        /// シーケンスに表示する文字列を返します。
+        /// </summary>
+        protected override string GetSequenceString(int id)
+        {
+            switch (id)
+            {
+                case 0:
+                    return result.ClearTime.ToString().Substring(0, 8);
+                case 1:
+                    return string.Format("{0:000}", result.MoveCount);
+            }
+
+            return String.Empty;
+        }
+        #endregion
+
+    }
+}
+
+

+ 341 - 0
Samples/Movipa/Movipa/Components/Scene/Result/NormalResult.cs

@@ -0,0 +1,341 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// NormalResult.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Result
+{
+    /// <summary>
+    /// Scene component displaying the Normal Mode results.
+    /// It inherits ResultBase and loads the content to be used,
+    /// then performs main update processing.
+    /// Additional scores are obtained from completion results for 
+    /// the specified stage and the count increments by one points. It also 
+    /// implements a fast forward (100 x speed) function which is accessed 
+    /// by pressing the A button. 
+    /// Save data is recorded when the scene ends. 
+    /// 
+    /// ノーマルモードのリザルトを表示するシーンコンポーネントです。
+    /// ResultBaseを継承し、使用するコンテントの読み込みと、
+    /// メインの更新処理の内容をわけています。
+    /// 指定されたステージのクリア結果から追加スコアを取得し、
+    /// 1点ずつカウントしていく処理を行っていますが、Aボタンを押して
+    /// 100倍の速度で早送りする処理も実装しています。
+    /// このシーンの終了時にセーブデータを記録しています。
+    /// </summary>
+    public class NormalResult : ResultBase
+    {
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public NormalResult(Game game, StageResult stageResult)
+            : base(game, stageResult)
+        {
+        }
+
+
+        /// <summary>
+        /// Initializes the Navigate button.
+        ///
+        /// ナビゲートボタンの初期化処理を行います。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Clear();
+            Navigate.Add(new NavigateData(AppSettings("A_Next"), true));
+
+            base.InitializeNavigate();
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            string asset = "Layout/Result/result_Scene";
+            sceneData = Content.Load<SceneData>(asset);
+            seqStart = sceneData.CreatePlaySeqData("ResultNormalStart");
+            seqPosition = sceneData.CreatePlaySeqData("PosNormalStart");
+
+            base.LoadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs main update processing.
+        ///
+        /// メインの更新処理を行います。
+        /// </summary>
+        protected override void UpdateMain(GameTime gameTime)
+        {
+            if (phase == Phase.Start)
+            {
+                if (!seqStart.IsPlay)
+                {
+                    phase = Phase.Select;
+                }
+            }
+            else
+            {
+                UpdateScore();
+            }
+
+            base.UpdateMain(gameTime);
+        }
+
+
+        /// <summary>
+        /// Calculates the score.
+        /// 
+        /// スコアの加算処理を行います。
+        /// </summary>
+        private void UpdateScore()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            // Sets the number of score calculations.
+            // The count is normally 1, but if the A button is 
+            // pressed it becomes 100.
+            // 
+            // スコアの加算回数を設定します。
+            // 通常は1回のカウントですが、Aボタンが押されていれば
+            // 100回カウントするようにします。
+            int loopCount = (buttons.A[VirtualKeyState.Press]) ? 100 : 1;
+
+            // Calculates the score.
+            // 
+            // スコアの加算処理を行います。
+            if (CalcScore(loopCount) == true)
+            {
+                // Plays the SoundEffect while the score calculation continues.
+                // 
+                // スコアの加算処理が継続している場合はSoundEffectを再生します。
+                GameData.Sound.PlaySoundEffect(Sounds.ResultScore);
+            }
+            else
+            {
+                // Score calculation has finished; Navigate button
+                // is displayed.
+                // 
+                // スコアの加算処理が終了したので、ナビゲートボタンを
+                // 表示するようにします。
+                drawNavigate = true;
+
+                // Performs fade-out if the A button is pressed.
+                // 
+                // Aボタンが押されたらフェードアウトを行います。
+                if (buttons.A[VirtualKeyState.Push])
+                {
+                    // Sets the next scene.
+                    // 
+                    // 次のシーンを設定します。
+                    SetNextScene();
+
+                    GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+                    GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeOut);
+                }
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Calculates the score.
+        /// 
+        /// スコアの計算をします。
+        /// </summary>
+        private bool CalcScore(int loopCount)
+        {
+            bool addFlag = false;
+
+            // Performs the designated number of loop repetitions.
+            // 
+            // 指定された回数分ループします。
+            for (int i = 0; i < loopCount; i++)
+            {
+                if (CalcScore())
+                {
+                    addFlag = true;
+                }
+                else
+                {
+                    // Processing is suspended if the score is not updated.
+                    // 
+                    // スコアの更新が行われない場合は処理を中断します。
+                    break;
+                }
+            }
+
+            return addFlag;
+        }
+
+
+        /// <summary>
+        /// Calculates the score.
+        /// 
+        /// スコアの計算をします。
+        /// </summary>
+        private bool CalcScore()
+        {
+            bool addFlag = false;
+
+            if (result.SingleScore > 0)
+            {
+                addFlag = true;
+
+                result.SingleScore--;
+                GameData.SaveData.Score++;
+            }
+            else if (result.DoubleScore > 0)
+            {
+                addFlag = true;
+
+                result.DoubleScore--;
+                GameData.SaveData.Score++;
+            }
+            else if (result.HintScore > 0)
+            {
+                addFlag = true;
+
+                result.HintScore--;
+                GameData.SaveData.Score++;
+            }
+
+            return addFlag;
+        }
+
+
+        /// <summary>
+        /// Checks if all stages have been completed, and readies the next scene.
+        /// 
+        /// 全てのステージをクリアしたかどうか判断し、次のシーンを用意します。
+        /// </summary>
+        private void SetNextScene()
+        {
+            // Obtains the stage settings.
+            // 
+            // ステージの設定を取得します。
+            int stage = GameData.SaveData.Stage;
+
+            // Sets the high score.
+            // 
+            // ハイスコアを設定します。
+            if (GameData.SaveData.BestScore < GameData.SaveData.Score)
+            {
+                GameData.SaveData.BestScore = GameData.SaveData.Score;
+            }
+            
+            // Checks if the next stage exists.
+            // 
+            // 次のステージが存在するかチェックします。
+            if ((stage + 1) >= GameData.StageCollection.Count)
+            {
+                // Next stage does not exist; all stages have been completed.
+                // 
+                // 次のステージが存在しないので、全てのステージをクリアしました。
+
+                // Sets the best time.
+                // 
+                // ベストタイムを設定します。
+                if (GameData.SaveData.BestTime == TimeSpan.Zero ||
+                    GameData.SaveData.BestTime > GameData.SaveData.TotalPlayTime)
+                {
+                    GameData.SaveData.BestTime = GameData.SaveData.TotalPlayTime;
+                }
+                
+                // Initializes the stages.
+                // 
+                // ステージを初期化します。
+                GameData.SaveData.Stage = 0;
+
+                // Initializes the score.
+                // 
+                // スコアを初期化します。
+                GameData.SaveData.Score = 0;
+
+                // Registers the Staff Roll scenes.
+                // 
+                // スタッフロールのシーンを登録します。
+                GameData.SceneQueue.Enqueue(new StaffRoll(Game));
+            }
+            else
+            {
+                // If the next stage exists, it is set.
+                // 
+                // ステージが存在するなら次のステージを設定します。
+                stage++;
+                GameData.SaveData.Stage = stage;
+
+                // Obtains setting information for the next stage.
+                // 
+                // 次のステージの設定情報を取得します。
+                StageSetting stageSetting = GameData.StageCollection[stage];
+
+                // Registers the main game scenes.
+                // 
+                // メインゲームのシーンを登録します。
+                GameData.SceneQueue.Enqueue(
+                    new Puzzle.PuzzleComponent(Game, stageSetting));
+            }
+
+            // Saves the Save Data.
+            // 
+            // セーブデータを保存します。
+            string filename = GameData.SaveData.FileName;
+            string filePath = GameData.Storage.GetStoragePath(filename);
+            SettingsSerializer.SaveSaveData(filePath, GameData.SaveData);
+        }
+
+
+        /// <summary>
+        /// Returns the text string to display in the sequence.
+        /// 
+        /// シーケンスに表示する文字列を返します。
+        /// </summary>
+        protected override string GetSequenceString(int id)
+        {
+            switch (id)
+            {
+                case 0:
+                    return string.Format("{0:000000}", result.SingleScore);
+                case 1:
+                    return string.Format("{0:000000}", result.DoubleScore);
+                case 2:
+                    return string.Format("{0:000000}", result.HintScore);
+                case 3:
+                    return string.Format("{0:000000}", GameData.SaveData.Score);
+            }
+
+            return String.Empty;
+        }
+        #endregion
+    }
+}
+
+

+ 442 - 0
Samples/Movipa/Movipa/Components/Scene/Result/ResultBase.cs

@@ -0,0 +1,442 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// ResultBase.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene.Result
+{
+    /// <summary>
+    /// Conducts basic result processing. This class is inherited.
+    /// This class loads common assets, and implements update and draw 
+    /// functions. Fade processing is performed in the Update method, while
+    /// main update processing is written in the inherited UpdateMain. 
+    /// The text string used for drawing is defined in the inherited
+    /// GetSequenceString and drawn with DrawSequenceString.
+    ///
+    /// リザルトの基本処理を行います。このクラスは継承して利用します。
+    /// このクラスでは、共通のアセットを読み込み、更新と描画を行う機能を
+    /// 実装しています。フェードの処理はUpdateメソッド内で行われ、
+    /// メインの更新処理は継承先のUpdateMainに記述します。
+    /// 描画に使用する文字列は継承先のGetSequenceStringで設定し、
+    /// DrawSequenceStringで描画しています。
+    /// </summary>
+    public class ResultBase : SceneComponent
+    {
+        #region Private Types
+        /// <summary>
+        /// Processing status
+        /// 
+        /// 処理状態
+        /// </summary>
+        protected enum Phase
+        {
+            /// <summary>
+            /// Start animation in progress
+            /// 
+            /// 開始アニメーション中
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// Selected status after animation finishes
+            /// 
+            /// アニメーション終了後の選択状態
+            /// </summary>
+            Select
+        }
+        #endregion
+
+
+        #region Fields
+        // Processing status
+        // 
+        // 処理状態
+        protected Phase phase;
+
+        // Stage completion result
+        // 
+        // ステージのクリア結果
+        protected StageResult result;
+
+        // BackgroundMusic cue
+        // 
+        // BackgroundMusicのキュー
+        protected Cue bgm;
+
+        // Camera
+        // 
+        // カメラ
+        protected readonly Vector3 cameraPosition;
+        protected readonly Vector3 cameraLookAt;
+
+        // Background sphere model data
+        // 
+        // 背景の球体モデルデータ
+        protected BasicModelData[] spheres;
+
+        // Background texture 
+        // 
+        // 背景テクスチャ
+        protected Texture2D wallpaperTexture;
+
+        // Layout
+        protected SceneData sceneData;
+        protected SequencePlayData seqStart;
+        protected SequencePlayData seqPosition;
+
+        // Navigate button draw flag
+        // 
+        // ナビゲートボタンの描画フラグ
+        protected bool drawNavigate;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public ResultBase(Game game, StageResult stageResult)
+            : base(game)
+        {
+            result = stageResult;
+
+            cameraPosition = new Vector3(0.0f, 0.0f, 200.0f);
+            cameraLookAt = Vector3.Zero;
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Sets the initial processing status.
+            // 
+            // 処理の初期状態を設定します。
+            phase = Phase.Start;
+
+            // Sets the Navigate button draw status.
+            // 
+            // ナビゲートボタンの描画状態を設定
+            drawNavigate = false;
+
+            // Sets the Fade-in.
+            // 
+            // フェードインの設定を行います。
+            GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeIn);
+
+            // Plays the BackgroundMusic and obtains the Cue.
+            // 
+            // BackgroundMusicを再生し、Cueを取得します。
+            bgm = GameData.Sound.PlayBackgroundMusic(Sounds.GameClearBackgroundMusic);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the background texture.
+            // 
+            // 背景テクスチャを読み込みます。
+            string asset = "Textures/Wallpaper/Wallpaper_005";
+            wallpaperTexture = Content.Load<Texture2D>(asset);
+
+            // Loads and sets the sphere model.
+            // 
+            // 球体モデルの読み込みと設定をします。
+            spheres = new BasicModelData[2];
+            spheres[0] = new BasicModelData(Content.Load<Model>("Models/sphere01"));
+            spheres[0].Scale = 0.9f;
+            spheres[1] = new BasicModelData(Content.Load<Model>("Models/sphere02"));
+            spheres[1].Scale = 0.88f;
+
+            base.LoadContent();
+        }
+
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // Stops the BackgroundMusic.
+            // 
+            // BackgroundMusicを停止します。
+            SoundComponent.Stop(bgm);
+
+            base.UnloadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        /// <param name="gameTime">GameTime</param>
+        public override void Update(GameTime gameTime)
+        {
+            // Updates the sphere model.
+            // 
+            // 球体モデルの更新処理を行います。
+            UpdateModels();
+
+            if (GameData.FadeSeqComponent.FadeMode == FadeMode.FadeIn)
+            {
+                // Changes the processing status after the fade-in finishes.
+                // 
+                // フェードインが終了したら、処理状態を変更します。
+                if (!GameData.FadeSeqComponent.IsPlay)
+                {
+                    GameData.FadeSeqComponent.FadeMode = FadeMode.None;
+                }
+            }
+            else if (GameData.FadeSeqComponent.FadeMode == FadeMode.None)
+            {
+                // Performs main update processing.
+                // 
+                // メインの更新処理を行います。
+                UpdateMain(gameTime);
+            }
+            else if (GameData.FadeSeqComponent.FadeMode == FadeMode.FadeOut)
+            {
+                // Performs update processing at fade-out.
+                // 
+                // フェードアウト時の更新処理を行います。
+                UpdateFadeOut();
+            }
+
+            // Updates the sequence except during fade-in.
+            // 
+            // フェードイン以外で、シーケンスの更新処理を行います。
+            if (GameData.FadeSeqComponent.FadeMode != FadeMode.FadeIn)
+            {
+                UpdateSequence(gameTime);
+            }
+
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Performs update except during a fade.
+        /// 
+        /// フェード処理中以外の更新処理を行います。
+        /// </summary>
+        protected virtual void UpdateMain(GameTime gameTime)
+        {
+        }
+
+
+        /// <summary>
+        /// Performs update processing at fade-out.
+        /// 
+        /// フェードアウト時の更新処理を行います。
+        /// </summary>
+        private void UpdateFadeOut()
+        {
+            // Sets the BackgroundMusic volume.
+            // 
+            // BackgroundMusicのボリュームを設定します。
+            float volume = 1.0f - (GameData.FadeSeqComponent.Count / 60.0f);
+            SoundComponent.SetVolume(bgm, volume);
+
+            // Performs release processing after the fade-out finishes.
+            // 
+            // フェードアウトが終了したら、開放処理を行います。
+            if (!GameData.FadeSeqComponent.IsPlay)
+            {
+                Dispose();
+            }
+        }
+
+
+        /// <summary>
+        /// Updates the model.
+        /// 
+        /// モデルの更新処理を行います。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        private void UpdateModels()
+        {
+            Vector3 rotate;
+
+            rotate = spheres[0].Rotate;
+            rotate.Y += MathHelper.ToRadians(0.1f);
+            spheres[0].Rotate = rotate;
+
+            rotate = spheres[1].Rotate;
+            rotate.Y -= MathHelper.ToRadians(0.03f);
+            spheres[1].Rotate = rotate;
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            seqStart.Update(gameTime.ElapsedGameTime);
+            seqPosition.Update(gameTime.ElapsedGameTime);
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            // Draws the background.
+            // 
+            // 背景の描画を行います。
+            Batch.Begin();
+            Batch.Draw(wallpaperTexture, Vector2.Zero, Color.White);
+            Batch.End();
+
+            // Clears the depth buffer and draws the sphere model.
+            // 
+            // 深度バッファをクリアし、球体モデルを描画します。
+            GraphicsDevice.Clear(ClearOptions.DepthBuffer, Color.Black, 1.0f, 0);
+            DrawSpheres();
+
+            Batch.Begin();
+
+            // Draws the sequence.
+            // 
+            // シーケンスを描画します。
+            seqStart.Draw(Batch, null);
+
+            // Draws the text string.
+            // 
+            // 文字列を描画します。
+            DrawSequenceString();
+
+            // Draws the Navigate button.
+            // 
+            // ナビゲートボタンを描画します。
+            if (drawNavigate)
+            {
+                DrawNavigate(gameTime, false);
+            }
+
+            Batch.End();
+
+            base.Draw(gameTime);
+        }
+
+        
+        /// <summary>
+        /// Draws the cursor sphere.
+        /// 
+        /// カーソルの球体を描画します。
+        /// </summary>
+        private void DrawSpheres()
+        {
+            GraphicsDevice graphicsDevice = GraphicsDevice;
+            Matrix view;
+            view = Matrix.CreateLookAt(cameraPosition, cameraLookAt, Vector3.Up);
+            for (int i = 0; i < spheres.Length; i++)
+            {
+                spheres[i].SetRenderState(graphicsDevice, SpriteBlendMode.Additive);
+                spheres[i].Draw(view, GameData.Projection);
+            }
+        }
+
+
+        /// <summary>
+        /// Draws the sequence text string.
+        /// 
+        /// シーケンスの文字列を描画します。
+        /// </summary>
+        private void DrawSequenceString()
+        {
+            SpriteFont font = LargeFont;
+            SequenceBankData sequenceBank = seqPosition.SequenceData;
+
+            for (int i = 0; i < sequenceBank.SequenceGroupList.Count; i++)
+            {
+                SequenceGroupData seqBodyData = sequenceBank.SequenceGroupList[i];
+                SequenceObjectData seqPartsData = seqBodyData.CurrentObjectList;
+
+                // Processing is skipped if the parts data cannot be obtained.
+                // 
+                // パーツデータが取得できない場合は処理をスキップします。
+                if (seqPartsData == null)
+                {
+                    continue;
+                }
+
+                List<PatternObjectData> patternObjects = seqPartsData.PatternObjectList;
+                foreach (PatternObjectData patPartsData in patternObjects)
+                {
+                    DrawData putInfoData = patPartsData.InterpolationDrawData;
+                    Color color = putInfoData.Color;
+                    Point point = putInfoData.Position;
+                    Vector2 position = new Vector2(point.X, point.Y);
+
+                    // Obtains the drawn text string.
+                    // 
+                    // 描画文字列を取得します。
+                    string text = GetSequenceString(i);
+
+                    // Sets the draw position to right aligned.
+                    // 
+                    // 描画位置を右寄せに設定します。
+                    position.X -= font.MeasureString(text).X;
+
+                    Batch.DrawString(font, text, position, color);
+                }
+            }
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Returns the text string to display in the sequence.
+        /// 
+        /// シーケンスに表示する文字列を返します。
+        /// </summary>
+        protected virtual string GetSequenceString(int id)
+        {
+            return String.Empty;
+        }
+        #endregion
+
+    }
+}
+
+

+ 279 - 0
Samples/Movipa/Movipa/Components/Scene/StaffRoll.cs

@@ -0,0 +1,279 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// StaffRoll.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+
+using Movipa.Components.Input;
+using Movipa.Util;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene
+{
+    /// <summary>
+    /// Scene component that displays Staff Roll.
+    /// Changes the playback speed for sequences created in Layout.
+    /// Pressing the A button during sequence playback switches to 5x playback speed.
+    /// 
+    /// スタッフロールを表示するシーンコンポーネントです。
+    /// Layoutで作成されたシーケンスの再生速度を変更する処理を行っています。
+    /// 再生中にAボタンを押すと、5倍の速度でシーケンスを再生します。
+    /// </summary>
+    public class StaffRoll : SceneComponent
+    {
+        #region Fields
+        // Staff Roll playback speed
+        // 
+        // スタッフロールの再生倍率
+        private const int SkipSpeed = 5;
+
+        // Layout4 scene data
+        // 
+        // Layout4シーンデータ
+        private SceneData sceneData;
+
+        // Layout4 sequence array
+        // 
+        // Layout4シーケンス配列
+        private SequencePlayData[] seqStaffRoll;
+
+        // Current sequence number
+        // 
+        // 現在のシーケンス番号
+        int seqIndex;
+
+        // BackgroundMusic Cue
+        // 
+        // BackgroundMusicのキュー
+        Cue bgm;
+
+        // BackgroundMusic volume
+        // 
+        // BackgroundMusicのボリューム
+        float bgmVolume;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public StaffRoll(Game game)
+            : base(game)
+        {
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Initializes the sequence number.
+            // 
+            // シーケンスの番号を初期化します。
+            seqIndex = 0;
+
+            // Sets the initial volume value.
+            // 
+            // ボリュームの初期値を設定します。
+            bgmVolume = 1.0f;
+
+            // Sets the fade-in.
+            // 
+            // フェードインの設定を行います。
+            GameData.FadeSeqComponent.Start(FadeType.Normal, FadeMode.FadeIn);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Loads the Layout scene data.
+            // 
+            // Layoutのシーンデータを読み込みます。
+            string asset = "Layout/StaffRoll/staffroll_Scene";
+            sceneData = Content.Load<SceneData>(asset);
+
+            // Loads the Layout sequence data into the array.
+            // 
+            // 
+            // Layoutのシーケンスデータを配列に読み込みます。
+            seqStaffRoll = new SequencePlayData[] {
+                sceneData.CreatePlaySeqData("Planner01"),
+                sceneData.CreatePlaySeqData("Programmer02"),
+                sceneData.CreatePlaySeqData("MusicComposer03"),
+                sceneData.CreatePlaySeqData("GraphicDesigner04"),
+                sceneData.CreatePlaySeqData("DevelopedBy05"),
+            };
+
+            // Plays the BackgroundMusic and obtains the Cue.
+            // 
+            // BackgroundMusicの再生を行い、Cueを取得します。
+            bgm = GameData.Sound.PlayBackgroundMusic(Sounds.TitleBackgroundMusic);
+
+            base.LoadContent();
+        }
+
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // Stops the BackgroundMusic.
+            // 
+            // BackgroundMusicを停止します。
+            SoundComponent.Stop(bgm);
+
+            base.UnloadContent();
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            if (seqIndex < seqStaffRoll.Length)
+            {
+                // Updates the sequence.
+                // 
+                // シーケンスの更新処理を行います。
+                UpdateSequence(gameTime);
+            }
+            else
+            {
+                // Performs fade-out since 
+                // all sequences are completed.
+                // 
+                // シーケンスが全て終了しているので、
+                // フェードアウト処理を行います。
+                UpdateFadeOut();
+            }
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+
+            // Sets the update count.
+            // If the A button has been pressed, performs update processing for 
+            // the number of times specified in SkipSpeed.
+            // 
+            // 更新回数を設定します。
+            // Aボタンが押されていればSkipSpeedで指定されている回数だけ
+            // 更新処理を行います。
+            int updateCount = (buttons.A[VirtualKeyState.Press]) ? SkipSpeed : 1;
+
+            // Updates the sequence.
+            // 
+            // シーケンスの更新を行います。
+            for (int i = 0; i < updateCount; i++)
+            {
+                seqStaffRoll[seqIndex].Update(gameTime.ElapsedGameTime);
+            }
+
+            // If sequence playback has finished, changes to the next sequence.
+            // 
+            // シーケンスが再生終了していれば次のシーケンスへ変更します。
+            if (!seqStaffRoll[seqIndex].IsPlay || 
+                buttons.B[VirtualKeyState.Push] || buttons.Back[VirtualKeyState.Push])
+            {
+                seqIndex++;
+            }
+        }
+
+
+        /// <summary>
+        /// Performs fade-out.
+        /// 
+        /// フェードアウト処理を行います。
+        /// </summary>
+        private void UpdateFadeOut()
+        {
+            // Sets the BackgroundMusic volume.
+            // 
+            // BackgroundMusicのボリュームを設定します。
+            bgmVolume -= 0.01f;
+            SoundComponent.SetVolume(bgm, bgmVolume);
+
+            // If the BackgroundMusic volume reaches 0, ends the scene
+            // and registers the game over scene.
+            // 
+            // BackgroundMusicボリュームが0になればシーンを終了し、
+            // ゲームオーバーのシーンを登録します。
+            if (bgmVolume < 0)
+            {
+                GameData.SceneQueue.Enqueue(new GameOver(Game));
+                Dispose();
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws the sequence.
+        /// 
+        /// シーケンスの描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            // Clears the background.
+            // 
+            // 背景をクリアします。
+            GraphicsDevice.Clear(Color.Black);
+
+            // Performs drawing processing if the sequences are not all finished.
+            // 
+            // まだシーケンスが全て終了していなければ描画処理を行います。
+            if (seqIndex < seqStaffRoll.Length)
+            {
+                Batch.Begin();
+                seqStaffRoll[seqIndex].Draw(Batch, null);
+                Batch.End();
+            }
+
+            base.Draw(gameTime);
+        }
+        #endregion
+
+    }
+}
+
+

+ 1028 - 0
Samples/Movipa/Movipa/Components/Scene/Title.cs

@@ -0,0 +1,1028 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// Title.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+using Movipa.Components.Animation;
+using Movipa.Components.Input;
+using Movipa.Util;
+using MovipaLibrary;
+using SceneDataLibrary;
+#endregion
+
+namespace Movipa.Components.Scene
+{
+    /// <summary>
+    /// Scene component that displays the title.
+    /// Provides fade control and item selection.
+    /// Items obtain the position from Layout data and draw the text string.
+    /// The texture that draws the movie is specified 
+    /// in the BasicEffect Texture properties to draw the film model texture. 
+    /// 
+    /// 
+    /// タイトルを表示するシーンコンポーネントです。
+    /// フェードの制御と、項目の選択処理を行っています。
+    /// 項目はLayoutのデータから位置を取得し、文字列を描画しています。
+    /// フィルムモデルのテクスチャにはBasicEffectのTextureプロパティに
+    /// ムービーを描画したテクスチャを指定して描画しています。
+    /// </summary>
+    public class Title : SceneComponent
+    {
+        #region Private Types
+        /// <summary>
+        /// Item type specified with cursor 
+        /// 
+        /// カーソルが指定している項目の種類
+        /// </summary>
+        private enum CursorType
+        {
+            /// <summary>
+            /// Game start
+            /// 
+            /// ゲーム開始
+            /// </summary>
+            Start,
+
+            /// <summary>
+            /// Game end
+            /// 
+            /// ゲーム終了
+            /// </summary>
+            Quit,
+
+            /// For count
+            /// 
+            // カウント用
+            Count,
+        }
+        #endregion
+
+        #region Fields
+        // Position and size of animation mounted on film
+        // 
+        // フィルムに貼り付けるアニメーションの位置とサイズ
+        private readonly Rectangle animationTexturePosition;
+
+        // Components
+        private FadeSeqComponent fade;
+
+        // Film model
+        // 
+        // フィルムのモデル
+        private BasicModelData film;
+        private Vector3 filmCameraPosition;
+        private Vector3 filmCameraLookAt;
+        private RenderTarget2D filmRenderTarget;
+        private RenderTarget2D filmModelRenderTarget;
+
+        // Title skinned animation model
+        // 
+        // タイトルのスキンアニメーションモデル
+        private SkinnedModelData titleModel;
+        private Vector3 titleModelCameraPosition;
+        private Vector3 titleModelCameraLookAt;
+        private Vector3 titleModelLightPosition;
+        private Plane titleModelLightPlane;
+        private RenderTarget2D titleModelRenderTarget;
+        private RenderTarget2D shadowRenderTarget;
+        private Color shadowColor;
+
+        // Animation
+        // 
+        // アニメーション
+        private PuzzleAnimation animation;
+
+        // Cursor position
+        // 
+        // カーソル位置
+        private CursorType cursor;
+
+        // Coordinates defined in Layout
+        // 
+        // Layoutで定義された座標
+        private Dictionary<string, Vector2> positions;
+
+        // Start text string
+        // 
+        // 開始の文字列
+        private string stringStart;
+
+        // End text string
+        // 
+        // 終了の文字列
+        private string stringQuit;
+
+        // Menu draw font
+        // 
+        // メニューの描画フォント
+        private SpriteFont menuFont;
+
+        // Developer text string
+        // 
+        // 開発会社の文字列
+        private string stringDeveloper;
+
+        // Developer draw font
+        // 
+        // 開発会社の描画フォント
+        private SpriteFont developerFont;
+
+        // Background texture
+        // 
+        // 背景のテクスチャ
+        private Texture2D wallpaperTexture;
+
+        // Film texture
+        // 
+        // フィルムのテクスチャ
+        private Texture2D filmTexture;
+        
+        // BackgroundMusic Cue
+        // 
+        // BackgroundMusicのキュー
+        private Cue bgm;
+
+        // Layout
+        private SceneData sceneData = null;
+        private SequencePlayData seqSubTitle = null;
+        private SequencePlayData seqStart = null;
+        private SequencePlayData seqQuit = null;
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public Title(Game game)
+            : base(game)
+        {
+            // Sets the size of the animation to be drawn in the film texture.
+            // 
+            // フィルムのテクスチャに描画するアニメーションのサイズを設定します。
+            animationTexturePosition = new Rectangle(142, 40, 640, 360);
+        }
+
+
+        /// <summary>
+        /// Performs initialization processing.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            // Sets the initial cursor position.
+            // 
+            // カーソルの初期位置を設定します。
+            cursor = CursorType.Start;
+
+            // Sets the film model camera.
+            // 
+            // フィルムのモデルのカメラを設定します。
+            filmCameraPosition = new Vector3(0.0f, 0.0f, 150.0f);
+            filmCameraLookAt = Vector3.Zero;
+
+            // Sets the title logo camera.
+            // 
+            // タイトルロゴのカメラを設定します。
+            titleModelCameraPosition = new Vector3(0, 50, -300f);
+            titleModelCameraLookAt = new Vector3(0, -20, 0);
+
+            // Sets the position of the light that creates the title logo shadow.
+            // 
+            // タイトルロゴの影を作るライトの位置を設定します。
+            titleModelLightPosition = new Vector3(50, 40, -30);
+            titleModelLightPlane = new Plane(Vector3.Up, 0);
+
+            // Obtains the fade component instance.
+            // 
+            // フェードコンポーネントのインスタンスを取得します。
+            fade = GameData.FadeSeqComponent;
+
+            // Sets the fade-in.
+            // 
+            // フェードインの設定を行います。
+            fade.Start(FadeType.Gonzales, FadeMode.FadeIn);
+
+            // Plays the BackgroundMusic and obtains the Cue.
+            // 
+            // BackgroundMusicを再生し、Cueを取得します。
+            bgm = GameData.Sound.PlayBackgroundMusic(Sounds.TitleBackgroundMusic);
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the Navigate.
+        /// 
+        /// ナビゲートの初期化をします。
+        /// </summary>
+        protected override void InitializeNavigate()
+        {
+            Navigate.Add(new NavigateData(AppSettings("A_Ok"), true));
+            Navigate.Add(new NavigateData(AppSettings("B_Cancel"), true));
+            base.InitializeNavigate();
+        }
+
+
+        /// <summary>
+        /// Loads the content.
+        /// 
+        /// コンテントの読み込み処理を行います。
+        /// </summary>
+        protected override void LoadContent()
+        {
+            // Obtains the font.
+            // 
+            // フォントを取得します。
+            menuFont = LargeFont;
+            developerFont = MediumFont;
+
+            // Obtains the menu text string.
+            // 
+            // メニューの文字列を取得します。
+            stringStart = GameData.AppSettings["TitleStart"];
+            stringQuit = GameData.AppSettings["TitleQuit"];
+            stringDeveloper = GameData.AppSettings["DeveloperName"];
+
+            // Loads the texture.
+            // 
+            // テクスチャを読み込みます。
+            string asset;
+            asset = "Textures/Wallpaper/Wallpaper_002";
+            wallpaperTexture = Content.Load<Texture2D>(asset);
+
+            asset = "Textures/Title/Film";
+            filmTexture = Content.Load<Texture2D>(asset);
+
+            // Loads and initializes the model data.
+            // 
+            // モデルデータの読み込みと初期化を行います。
+            InitializeModels();
+
+            // Loads and initializes the sequence.
+            // 
+            // シーケンスの読み込みと初期化を行います。
+            InitializeSequence();
+
+            // Loads the movie animation.
+            // 
+            // ムービーアニメーションの読み込みを行います。
+            InitializeAnimation();
+
+            // Obtains the positions from the sequence.
+            // 
+             // シーケンスから配置を取得します。
+            InitializePositions(sceneData);
+
+            // Creates the render target.
+            // 
+            // レンダーターゲットの作成を行います。
+            InitializeRenderTarget();
+
+            base.LoadContent();
+        }
+
+
+        /// <summary>
+        /// Loads and initializes the model data.
+        /// 
+        /// モデルデータの読み込みと初期化を行います。
+        /// </summary>
+        private void InitializeModels()
+        {
+            // Loads the film model.
+            // 
+            // フィルムのモデルを読み込みます。
+            film = new BasicModelData(Content.Load<Model>("Models/film"));
+            film.Rotate = new Vector3(0.0f, -0.1765043f, -0.4786051f);
+            film.FogEnabled = true;
+            film.FogColor = Vector3.Zero;
+            film.FogStart = 10;
+            film.FogEnd = 500;
+
+            // Loads the title model.
+            // 
+            // タイトルのモデルを読み込みます。
+            titleModel = new SkinnedModelData(Content.Load<Model>(GetTitleAsset()), 
+                "Take 001");
+            titleModel.Rotate = new Vector3(0, MathHelper.ToRadians(180), 0);
+            shadowColor = new Color(0, 0, 0, 192);
+        }
+
+
+        /// <summary>
+        /// Loads and initializes the sequence.
+        /// 
+        /// シーケンスの読み込みと初期化を行います。
+        /// </summary>
+        private void InitializeSequence()
+        {
+            // Loads the Layout data.
+            // 
+            // Layoutのデータを読み込みます。
+            sceneData = Content.Load<SceneData>("Layout/title/Title_Scene");
+
+            // Creates the sequence.
+            // 
+            // シーケンスを作成します。
+            seqStart = sceneData.CreatePlaySeqData("Start");
+            seqQuit = sceneData.CreatePlaySeqData("Quit");
+            seqSubTitle = sceneData.CreatePlaySeqData("SubTitle");
+        }
+
+
+        /// <summary>
+        /// Loads the movie animation.
+        /// 
+        /// ムービーアニメーションの読み込みを行います。
+        /// </summary>
+        private void InitializeAnimation()
+        {
+            // Loads animations at random.
+            // 
+            // ランダムでアニメーションを読み込みます。
+            Random rnd = new Random();
+            int id = rnd.Next(GameData.MovieList.Count);
+            string asset = GameData.MovieList[id];
+            AnimationInfo animationInfo = Content.Load<AnimationInfo>(asset);
+            animation = PuzzleAnimation.CreateAnimationComponent(Game, animationInfo);
+            AddComponent(animation);
+        }
+
+
+        /// <summary>
+        /// Obtains the positions from the sequence.
+        /// 
+        /// シーケンスから配置を取得します。
+        /// </summary>
+        private void InitializePositions(SceneData sceneData)
+        {
+            PatternGroupData patternGroup;
+            Point point;
+            Vector2 position;
+
+            positions = new Dictionary<string, Vector2>();
+
+            // Obtains the position of the Start text string.
+            // 
+            // Startの文字列の位置を取得します。
+            patternGroup = sceneData.PatternGroupDictionary["Title_Start_Normal"];
+            point = patternGroup.PatternObjectList[0].Position;
+            position = new Vector2(point.X, point.Y);
+            positions.Add(stringStart, position);
+
+            // Obtains the position of the Quit text string.
+            // 
+            // Quitの文字列の位置を取得します。
+            patternGroup = sceneData.PatternGroupDictionary["Title_Quit_Normal"];
+            point = patternGroup.PatternObjectList[0].Position;
+            position = new Vector2(point.X, point.Y);
+            positions.Add(stringQuit, position);
+
+            // Obtains the position of the developer.
+            // 
+            // 開発社名の位置を取得します。
+            patternGroup = sceneData.PatternGroupDictionary["Title_Developer"];
+            point = patternGroup.PatternObjectList[0].Position;
+            position = new Vector2(point.X, point.Y);
+
+            // Aligns with the centered coordinates.
+            // 
+            // センタリングされた座標に合わせます。
+            position -= developerFont.MeasureString(stringDeveloper) * 0.5f;
+
+            positions.Add(stringDeveloper, position);
+        }
+
+
+
+        /// <summary>
+        /// Creates the render target.
+        /// 
+        /// レンダーターゲットを作成します。
+        /// </summary>
+        private void InitializeRenderTarget()
+        {
+            // Obtains the parameters.
+            // 
+            // パラメータを取得します。
+            PresentationParameters pp = GraphicsDevice.PresentationParameters;
+            SurfaceFormat format = pp.BackBufferFormat;
+            MultiSampleType msType = pp.MultiSampleType;
+            int msQuality = pp.MultiSampleQuality;
+
+            // Obtains the film size.
+            // 
+            // フィルムのサイズを取得します。
+            Point filmSize = new Point(filmTexture.Width, filmTexture.Height);
+
+            // Obtains the screen size.
+            // 
+            // スクリーンのサイズを取得します。
+            int width = GameData.ScreenWidth;
+            int height = GameData.ScreenHeight;
+
+            // Creates the render target.
+            // 
+            // レンダーターゲットを作成します。
+            filmRenderTarget = new RenderTarget2D(GraphicsDevice,
+                filmSize.X, filmSize.Y, 1, format, msType, msQuality, 
+                RenderTargetUsage.PreserveContents);
+
+            filmModelRenderTarget = new RenderTarget2D(GraphicsDevice,
+                width, height, 1, format, msType, msQuality,
+                RenderTargetUsage.PreserveContents);
+
+            titleModelRenderTarget = new RenderTarget2D(GraphicsDevice,
+                width, height, 1, format, msType, msQuality,
+                RenderTargetUsage.PreserveContents);
+
+            shadowRenderTarget = new RenderTarget2D(GraphicsDevice,
+                width, height, 1, format, msType, msQuality,
+                RenderTargetUsage.PreserveContents);
+        }
+
+
+
+        /// <summary>
+        /// Releases all resources.
+        /// 
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // Stops the BackgroundMusic.
+            // 
+            // BackgroundMusicを停止します。
+            SoundComponent.Stop(bgm);
+
+            base.UnloadContent();
+        }
+ 
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Performs update processing.
+        /// 
+        /// 更新処理を行います。
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Updates the sequence.
+            // 
+            // シーケンスの更新処理を行います。
+            UpdateSequence(gameTime);
+
+            // Updates the model.
+            // 
+            // モデルの更新処理を行います。
+            UpdateModels(gameTime);
+
+
+            if (fade.FadeMode == FadeMode.FadeIn)
+            {
+                // Switches fade modes after the fade-in has finished.
+                // 
+                // フェードインが完了したらフェードのモードを切り替えます。
+                if (!fade.IsPlay)
+                {
+                    fade.FadeMode = FadeMode.None;
+                }
+            }
+            else if (fade.FadeMode == FadeMode.None)
+            {
+                // Performs main update processing.
+                // 
+                // メインの更新処理を行います。
+                UpdateMain();
+            }
+            else if (fade.FadeMode == FadeMode.FadeOut)
+            {
+                // Performs update processing at fade-out.
+                // 
+                // フェードアウト時の更新処理を行います。
+                UpdateFadeOut();
+            }
+
+            base.Update(gameTime);
+        }
+
+        /// <summary>
+        /// Updates the sequence.
+        /// 
+        /// シーケンスの更新処理を行います。
+        /// </summary>
+        private void UpdateSequence(GameTime gameTime)
+        {
+            seqStart.Update(gameTime.ElapsedGameTime);
+            seqQuit.Update(gameTime.ElapsedGameTime);
+            seqSubTitle.Update(gameTime.ElapsedGameTime);
+        }
+
+
+        /// <summary>
+        /// Updates the model.
+        /// 
+        /// モデルの更新処理を行います。
+        /// </summary>
+        private void UpdateModels(GameTime gameTime)
+        {
+            // Rotates the film.
+            // 
+            // フィルムを回転させます。
+            Vector3 rotate = film.Rotate;
+            rotate.X += MathHelper.ToRadians(0.1f);
+            film.Rotate = rotate;
+
+            // Runs the title logo animation.
+            // 
+            // タイトルロゴのアニメーションをさせます。
+            titleModel.AnimationPlayer.Update(
+                gameTime.ElapsedGameTime, true, Matrix.Identity);
+        }
+
+
+        /// <summary>
+        /// Performs main update processing.
+        /// 
+        /// メインの更新処理を行います。
+        /// </summary>
+        private void UpdateMain()
+        {
+            VirtualPadState virtualPad = 
+                GameData.Input.VirtualPadStates[PlayerIndex.One];
+            VirtualPadButtons buttons = virtualPad.Buttons;
+            VirtualPadDPad leftStick = virtualPad.ThumbSticks.Left;
+            VirtualPadDPad dPad = virtualPad.DPad;
+
+            if (InputState.IsPush(buttons.A))
+            {
+                // Confirms with the A button or the Start button,
+                // then executes fade-out.
+                // 
+                // Aボタンまたはスタートボタンで決定をし、
+                // フェードアウトの処理を行います。
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+                fade.Start(FadeType.RotateBox, FadeMode.FadeOut);
+            }
+            else if (InputState.IsPush(buttons.B, buttons.Back))
+            {
+                cursor = CursorType.Quit;
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectOkay);
+                fade.Start(FadeType.RotateBox, FadeMode.FadeOut);               
+            }
+            else if (InputState.IsPush(dPad.Up, leftStick.Up, dPad.Down, leftStick.Down))
+            {
+                // Moves the cursor.
+                // Common processing is used since there are only two items:
+                // Start and Quit.
+                // 
+                // カーソルの移動処理を行います。
+                // 項目はStartとQuitの2つしかないので、共通の処理を使用します。
+                cursor = CursorMove();
+                GameData.Sound.PlaySoundEffect(Sounds.SoundEffectCursor1);
+
+                // Replays the sequence.
+                // 
+                // シーケンスをリプレイさせます。
+                seqStart.Replay();
+                seqQuit.Replay();
+            }
+
+        }
+
+
+        /// <summary>
+        /// Performs update processing at fade-out.
+        /// 
+        /// フェードアウト時の更新処理を行います。
+        /// </summary>
+        private void UpdateFadeOut()
+        {
+            // Sets the BackgroundMusic volume.
+            // 
+            // BackgroundMusicのボリュームを設定します。
+            float volume = 1.0f - (fade.Count / 60.0f);
+            SoundComponent.SetVolume(bgm, volume);
+
+            if (!fade.IsPlay)
+            {
+                // Performs release processing after the fade-out has finished.
+                // 
+                // フェードアウトが完了したら開放処理を行います。
+                Dispose();
+
+                // Registers the next scene if the cursor has selected Start.
+                // 
+                // カーソルがStartを選択していたら次のシーンを登録します。
+                if (cursor == CursorType.Start)
+                {
+                    Game.Components.Add(new Menu.MenuComponent(Game));
+                }
+            }
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Performs drawing processing.
+        /// 
+        /// 描画処理を行います。
+        /// </summary>
+        public override void Draw(GameTime gameTime)
+        {
+            // Draws the film model to the render target.
+            // 
+            // フィルムのモデルをレンダーターゲットに描画します。
+            if (!DrawFilmModel()) return;
+
+            // Draws the title model to the render target.
+            // 
+            // タイトルのモデルをレンダーターゲットに描画します。
+            if (!DrawTitleModel()) return;
+
+            // Draws the title shadow to the render target.
+            // 
+            // タイトルの影をレンダーターゲットに描画します。
+            if (!DrawTitleModelShadow()) return;
+
+            Batch.Begin();
+
+            // Draws the background.
+            // 
+            // 背景を描画します。
+            Batch.Draw(wallpaperTexture, Vector2.Zero, Color.Silver);
+
+            if ((filmModelRenderTarget != null) && !filmModelRenderTarget.IsDisposed)
+            {
+                // Draws the film.
+                // 
+                // フィルムを描画します。
+                Batch.Draw(filmModelRenderTarget.GetTexture(), Vector2.Zero,
+                    Color.Silver);
+            }
+
+            if ((shadowRenderTarget != null) && !shadowRenderTarget.IsDisposed)
+            {
+                // Draws the title shadow.
+                // 
+                // タイトルの影を描画します。
+                Batch.Draw(shadowRenderTarget.GetTexture(), Vector2.Zero, shadowColor);
+            }
+
+            if ((titleModelRenderTarget != null) && !titleModelRenderTarget.IsDisposed)
+            {
+                // Draws the title.
+                // 
+                // タイトルを描画します。
+                Batch.Draw(titleModelRenderTarget.GetTexture(), Vector2.Zero, 
+                    Color.White);
+            }
+
+            // Draws the title sequence.
+            // 
+            // タイトルシーケンスの描画します。
+            DrawSequence(gameTime, Batch);
+
+            Batch.End();
+
+            base.Draw(gameTime);
+        }
+
+
+        /// <summary>
+        /// Draws the sequence.
+        /// 
+        /// シーケンスを描画します。
+        /// </summary>
+        private void DrawSequence(GameTime gameTime, SpriteBatch batch)
+        {
+            // Draws the sub-title.
+            // 
+            // サブタイトルを描画します。
+            seqSubTitle.Draw(batch, null);
+
+            // Draws the developer name.
+            // 
+            // 開発社名を描画します。
+            Vector2 position = positions[stringDeveloper];
+            batch.DrawString(developerFont, stringDeveloper, position, Color.White);
+
+            // Draws the sequence text string.
+            // 
+            // シーケンスの文字列を描画します。
+            DrawSequenceString(batch);
+
+            // Draws the Navigate button.
+            // 
+            // ナビゲートボタンを描画します。
+            DrawNavigate(gameTime, false);
+        }
+
+
+        /// <summary>
+        /// Draws the sequence text string.
+        /// 
+        /// シーケンスの文字列を描画します。
+        /// </summary>
+        private void DrawSequenceString(SpriteBatch batch)
+        {
+            Vector2 position;
+            bool selected;
+
+            position = positions[stringStart];
+            selected = (cursor == CursorType.Start);
+            DrawSequenceString(batch, seqStart, stringStart, position, selected);
+
+            position = positions[stringQuit];
+            selected = (cursor == CursorType.Quit);
+            DrawSequenceString(batch, seqQuit, stringQuit, position, selected);
+        }
+
+
+        /// <summary>
+        /// Draws the sequence text string.
+        /// 
+        /// シーケンスの文字列を描画します。
+        /// </summary>
+        private void DrawSequenceString(SpriteBatch batch, SequencePlayData sequence, 
+            string text, Vector2 position, bool selected)
+        {
+            Color color;
+
+            if (selected)
+            {
+                // Obtains the selected status color.
+                // 
+                // 選択状態の色を取得します。
+                color = sequence.SequenceData.GetDrawPatternObjectDrawData(0, 0).Color;
+            }
+            else
+            {
+                // Obtains the non-selected status color.
+                // 
+                // 非選択状態の色を取得します。
+                SequenceGroupData sequenceGroup;
+                sequenceGroup = sequence.SequenceData.SequenceGroupList[0];
+                color = sequenceGroup.SequenceObjectList[0].PatternObjectList[0].Color;
+            }
+
+            // Draws the text string. 
+            // 
+            // 文字列を描画します。
+            batch.DrawString(menuFont, text, position, color);
+        }
+
+
+        /// <summary>
+        /// Draws the film model.
+        /// 
+        /// フィルムのモデルを描画します。
+        /// </summary>
+        private bool DrawFilmModel()
+        {
+            // Draws the film texture.
+            // 
+            // フィルムのテクスチャを描画します。
+            if (!DrawFilmTexture())
+            {
+                return false;
+            }
+
+            if ((filmRenderTarget == null) || filmRenderTarget.IsDisposed)
+            {
+                return false;
+            }
+            // Sets the texture in the film model.
+            // 
+            // フィルムのモデルにテクスチャを設定します。
+            film.Texture = filmRenderTarget.GetTexture();
+
+            // Changes the render target.
+            // 
+            // 描画先を変更します。
+            GraphicsDevice.SetRenderTarget(0, filmModelRenderTarget);
+
+            // Clears the background to transparent.
+            // 
+            // 背景を透過色でクリアします。
+            GraphicsDevice.Clear(Color.TransparentBlack);
+
+            // Enables the depth buffer.
+            // 
+            // 深度バッファを有効にします。
+            GraphicsDevice.RenderState.DepthBufferEnable = true;
+
+            // Draws the film model.
+            // 
+            // フィルムのモデルを描画します。
+            Matrix view = Matrix.CreateLookAt(
+                filmCameraPosition, filmCameraLookAt, Vector3.Up);
+            film.SetRenderState(GraphicsDevice, SpriteBlendMode.AlphaBlend);
+            GraphicsDevice.RenderState.CullMode = CullMode.None;
+            film.Draw(view, GameData.Projection);
+
+            // Returns the render target.
+            // 
+            // 描画先を戻します。
+            GraphicsDevice.SetRenderTarget(0, null);
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Draws the film texture.
+        /// 
+        /// フィルムのテクスチャを描画します。
+        /// </summary>
+        private bool DrawFilmTexture()
+        {
+            Texture2D animationTexture = animation.Texture;
+
+            // Performs an error check.
+            // 
+            // エラーチェックを行います。
+            if (animationTexture == null ||
+                animationTexture.IsDisposed ||
+                filmRenderTarget == null ||
+                filmRenderTarget.IsDisposed)
+            {
+                return false;
+            }
+
+            // Changes the render target.
+            // 
+            // 描画先を変更します。
+            GraphicsDevice.SetRenderTarget(0, filmRenderTarget);
+
+            // Clears the background to transparent.
+            // 
+            // 背景を透過色でクリアします。
+            GraphicsDevice.Clear(Color.TransparentBlack);
+
+            // Draws the film frame.
+            //
+            // フィルムの外枠を描画します。
+            Batch.Begin();
+            Batch.Draw(filmTexture, Vector2.Zero, Color.White);
+            Batch.End();
+
+            // Draws the animation.
+            //
+            // アニメーションを描画します。
+            Batch.Begin(SpriteBlendMode.None);
+            Batch.Draw(animationTexture, animationTexturePosition, Color.White);
+            Batch.End();
+
+            // Returns the render target.
+            // 
+            // 描画先を戻します。
+            GraphicsDevice.SetRenderTarget(0, null);
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Draws the title model.
+        /// 
+        /// タイトルのモデルを描画します。
+        /// </summary>
+        private bool DrawTitleModel()
+        {
+            if ((titleModelRenderTarget == null) || titleModelRenderTarget.IsDisposed)
+            {
+                return false;
+            }
+            // Changes the render target.
+            // 
+            // 描画先を変更します。
+            GraphicsDevice.SetRenderTarget(0, titleModelRenderTarget);
+
+            // Clears the background to transparent.
+            // 
+            // 背景を透過色でクリアします。
+            GraphicsDevice.Clear(Color.TransparentBlack);
+
+            // Enables the depth buffer.
+            // 
+            // 深度バッファを有効にします。
+            GraphicsDevice.RenderState.DepthBufferEnable = true;
+
+            // Draws the title model.
+            // 
+            // タイトルのモデルを描画します。
+            Matrix view = Matrix.CreateLookAt(
+                titleModelCameraPosition, titleModelCameraLookAt, Vector3.Up);
+            titleModel.SetRenderState(GraphicsDevice, SpriteBlendMode.AlphaBlend);
+            titleModel.Draw(Matrix.Identity, view, GameData.Projection,
+                true, Vector3.One, Vector3.Zero);
+
+            // Returns the render target.
+            // 
+            // 描画先を戻します。
+            GraphicsDevice.SetRenderTarget(0, null);
+
+            return true;
+        }
+
+
+        /// <summary>
+        /// Draws the title model shadow.
+        /// 
+        /// タイトルのモデルの影を描画します。
+        /// </summary>
+        private bool DrawTitleModelShadow()
+        {
+            if ((shadowRenderTarget == null) || shadowRenderTarget.IsDisposed)
+            {
+                return false;
+            }
+
+            // Changes the render target.
+            // 
+            // 描画先を変更します。
+            GraphicsDevice.SetRenderTarget(0, shadowRenderTarget);
+
+            // Clears the background to transparent.
+            // 
+            // 背景を透過色でクリアします。
+            GraphicsDevice.Clear(Color.TransparentBlack);
+
+            // Enables the depth buffer.
+            // 
+            // 深度バッファを有効にします。
+            GraphicsDevice.RenderState.DepthBufferEnable = true;
+
+            // Creates the shadow matrix.
+            // 
+            // 影のマトリックスを作成します。
+            Matrix shadowMatrix = Matrix.CreateShadow(
+                titleModelLightPosition, titleModelLightPlane);
+
+            // Draws the shadow model.
+            // 
+            // 影のモデルを描画します。
+            Matrix view = Matrix.CreateLookAt(
+                titleModelCameraPosition, titleModelCameraLookAt, Vector3.Up);
+            Vector3 rotate = titleModel.Rotate;
+            titleModel.Rotate = Vector3.Zero;
+            titleModel.SetRenderState(GraphicsDevice, SpriteBlendMode.AlphaBlend);
+            titleModel.Draw(shadowMatrix, view, GameData.Projection, false);
+            titleModel.Rotate = rotate;
+
+            // Returns the render target.
+            // 
+            // 描画先を戻します。
+            GraphicsDevice.SetRenderTarget(0, null);
+
+            return true;
+        }
+
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Obtains the title asset name at random.
+        /// 
+        /// タイトルのアセット名をランダムで取得します。
+        /// </summary>
+        private string GetTitleAsset()
+        {
+            int i = Random.Next(6) + 1;
+            string asset = string.Format("Models/Title/movipa_title_{0:00}", i);
+            return asset;
+        }
+
+
+        /// <summary>
+        /// Returns the next cursor position.
+        /// 
+        /// カーソルの次の位置を返します。
+        /// </summary>
+        private CursorType CursorMove()
+        {
+            return (CursorType)(((int)cursor + 1) % (int)CursorType.Count);
+        }
+        #endregion
+    }
+}
+
+

+ 312 - 0
Samples/Movipa/Movipa/Components/SceneComponent.cs

@@ -0,0 +1,312 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SceneComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+using Movipa.Util;
+#endregion
+
+namespace Movipa.Components
+{
+    /// <summary>
+    /// Constituent component of the scene.
+    /// All scenes are created by inheriting this Component.
+    /// 
+    /// シーンを構成するコンポーネントです。
+    /// 各シーンはこのコンポーネントを継承して作成されます。
+    /// </summary>
+    public class SceneComponent : DrawableGameComponent
+    {
+        #region Fields
+        private MovipaGame movipaGame;
+        private List<GameComponent> sceneComponents;
+        private List<NavigateData> navigate;
+        private Random random;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains ContentManager.
+        /// 
+        /// ContentManagerを取得します。
+        /// </summary>
+        public ContentManager Content
+        {
+            get { return movipaGame.Content; }
+        }
+
+
+        /// <summary>
+        /// Obtains SpriteBatch. 
+        /// 
+        /// SpriteBatchを取得します。
+        /// </summary>
+        public SpriteBatch Batch
+        {
+            get { return movipaGame.Batch; }
+        }
+
+
+        public SpriteFont MediumFont
+        {
+            get { return movipaGame.MediumFont; }
+        }
+
+
+        public SpriteFont LargeFont
+        {
+            get { return movipaGame.LargeFont; }
+        }
+
+
+        /// <summary>
+        /// Obtains the Navigate List.
+        /// 
+        /// ナビゲートリストを取得します。
+        /// </summary>
+        public List<NavigateData> Navigate
+        {
+            get { return navigate; }
+        }
+
+
+        /// <summary>
+        /// Obtains Random.
+        /// 
+        /// ランダムを取得します。
+        /// </summary>
+        public Random Random
+        {
+            get { return random; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        ///
+        /// インスタンスを初期化します。
+        /// </summary>
+        /// <param name="game"></param>
+        public SceneComponent(Game game)
+            : base(game)
+        {
+            movipaGame = game as MovipaGame;
+            
+            sceneComponents = new List<GameComponent>();
+            navigate = new List<NavigateData>();
+            random = new Random();
+        }
+
+
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// 初期化処理を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            InitializeNavigate();
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Initializes the Navigate button.
+        /// This process is invoked after invoking the Initialize method.
+        /// 
+        /// ナビゲートボタンの初期化を行います。
+        /// この処理はInitializeメソッドを呼び出した後に呼び出されます。
+        /// </summary>
+        protected virtual void InitializeNavigate()
+        {
+        }
+
+        /// <summary>
+        /// Releases all resources.
+        ///
+        /// 全てのリソースを開放します。
+        /// </summary>
+        protected override void UnloadContent()
+        {
+            // End of component added via AddComponent 
+            // 
+            // AddComponentで追加されたコンポーネントの終了
+            foreach (GameComponent component in sceneComponents)
+            {
+                component.Dispose();
+            }
+
+            base.UnloadContent();
+        }
+        #endregion
+
+        #region Draw Methods
+        /// <summary>
+        /// Draws the Navigate button.
+        /// 
+        /// ナビゲートボタンを描画します。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        /// <param name="batchBeginEnd">SpriteBatch.Begin/End execute flag</param>
+        ///  
+        /// <param name="batchBeginEnd">SpriteBatch.Begin/Endの実行フラグ</param>
+        public void DrawNavigate(GameTime gameTime, bool batchBeginEnd)
+        {
+            DrawNavigate(gameTime, Batch, 1.0f, batchBeginEnd);
+        }
+
+
+        /// <summary>
+        /// Draws the Navigate button.
+        ///
+        /// ナビゲートボタンを描画します。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        /// <param name="batch">SpriteBatch</param>
+        /// <param name="batchBeginEnd">SpriteBatch.Begin/End execute flag</param>
+        ///  
+        /// <param name="batchBeginEnd">SpriteBatch.Begin/Endの実行フラグ</param>
+        public void DrawNavigate(
+            GameTime gameTime, SpriteBatch batch, bool batchBeginEnd)
+        {
+            DrawNavigate(gameTime, batch, 1.0f, batchBeginEnd);
+        }
+
+
+        /// <summary>
+        /// Draws the Navigate button.
+        /// 
+        /// ナビゲートボタンを描画します。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        /// <param name="batch">SpriteBatch</param>
+        /// <param name="alpha">Transparency</param>
+        ///  
+        /// <param name="alpha">透明度</param>
+        /// <param name="batchBeginEnd">SpriteBatch.Begin/End execute flag</param>
+        ///  
+        /// <param name="batchBeginEnd">SpriteBatch.Begin/Endの実行フラグ</param>
+        public void DrawNavigate(
+            GameTime gameTime, SpriteBatch batch, float alpha, bool batchBeginEnd)
+        {
+            SpriteFont font = movipaGame.MediumFont;
+
+            string navigateText = String.Empty;
+
+            // Collects the drawing text strings.
+            // 
+            // 描画文字列をまとめます。
+            for (int i = 0; i < Navigate.Count; i++)
+            {
+                navigateText += Navigate[i].Message + "\n";
+            }
+
+            // Trims the final carriage return.
+            // 
+            // 最後の改行を取り除きます。
+            navigateText = navigateText.TrimEnd('\n');
+
+            // Calculates the draw position.
+            // 
+            // 描画位置を計算します。
+            Vector2 measure = font.MeasureString(navigateText);
+            // Coordinates at bottom right of screen 
+            // 画面右下の座標 
+            Vector2 safePosition = GameData.ScreenSizeVector2 * 0.95f; 
+            Vector2 basePosition = safePosition - measure;
+            Vector2 position;
+
+            if (batchBeginEnd)
+                batch.Begin();
+
+            // Draws the normal text string.
+            // 
+            // 通常の文字列描画します。
+            position = basePosition;
+            for (int i = 0; i < Navigate.Count; i++)
+            {
+                Color color = new Color(new Vector4(1.0f, 1.0f, 1.0f, alpha));
+                batch.DrawString(font, Navigate[i].Message, position, color);
+                position.Y += font.LineSpacing;
+            }
+
+            batch.End();
+            batch.Begin(SpriteBlendMode.Additive);
+
+            // If the text string is flashing, overwrites it by adding.
+            // 
+            // 文字列が点滅していれば加算で上書きします。
+            position = basePosition;
+            for (int i = 0; i < Navigate.Count; i++)
+            {
+                if (Navigate[i].Blink)
+                {
+                    float radian = MathHelper.ToRadians(
+                        (float)gameTime.TotalGameTime.TotalMilliseconds * 0.1f);
+                    float w = Math.Abs((float)Math.Cos(radian)) * alpha;
+                    Color color = new Color(new Vector4(1, 1, 1, w));
+
+                    batch.DrawString(font, Navigate[i].Message, position, color);
+                }
+                position.Y += font.LineSpacing;
+            }
+
+            batch.End();
+
+
+            batch.Begin();
+
+            if (batchBeginEnd)
+                batch.End();
+
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Adds the Component.
+        /// </summary>
+        /// <param name="component">Component to add</param>
+        public void AddComponent(GameComponent component)
+        {
+            sceneComponents.Add(component);
+            Game.Components.Add(component);
+        }
+
+
+        /// <summary>
+        /// Obtains value from GameData.AppSettings.
+        /// 
+        /// GameData.AppSettingsから値を取得します。
+        /// </summary>
+        /// <param name="key">Key</param>
+        ///  
+        /// <param name="key">キー</param>
+
+        /// <returns>Text string stored in key</returns>
+        ///  
+        /// <returns>キーに格納された文字列</returns>
+        public static string AppSettings(string key)
+        {
+#if XBOX360
+            return GameData.AppSettings[key];
+#else
+            return GameData.AppSettings[key + "_Win"];
+#endif
+        }
+        #endregion
+    }
+}
+
+

+ 341 - 0
Samples/Movipa/Movipa/Components/SoundComponent.cs

@@ -0,0 +1,341 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// SoundComponent.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+#endregion
+
+namespace Movipa.Components
+{
+    /// <summary>
+    /// Component that plays sound. 
+    /// If nothing is specified in the Constructor, it loads the file 
+    /// created with the default name. 
+    /// The PlaySoundEffect method should be used for SoundEffect playback, 
+    /// and the PlayBackgroundMusic method for BackgroundMusic playback.
+    /// Cue is specified as the return value for the PlayBackgroundMusic method.
+    /// "Volume" and "Pitch" must be provided in the Cue variables on the 
+    /// XACT side for the SetVolume and SetPitch methods.
+    ///
+    /// サウンドを鳴らすコンポーネントです。
+    /// コンストラクタで特に何も指定しなければ、デフォルトで作成される名前の
+    /// ファイルを読み込むようになっています。
+    /// SoundEffectを再生するときはPlaySoundEffectメソッドを使用し、BackgroundMusic�
+    /// �ト生する時はPlayBackgroundMusicメソッドを
+    /// 使用してください。
+    /// PlayBackgroundMusicメソッドは戻り値にcueが指定されています。
+    /// SetVolumeおよびSetPitchメソッドに関しては、XACT側でCueのVariableに
+    /// "Volume"と"Pitch"が用意されている必要があります。
+    /// </summary>
+    public class SoundComponent : GameComponent
+    {
+        #region Fields
+        private const string DefaultAudioEnginePath = "Content/Audio/Movipa.xgs";
+        private const string DefaultWaveBankPath = "Content/Audio/Movipa.xwb";
+        private const string DefaultSoundBankPath = "Content/Audio/Movipa.xsb";
+        private const string VolumeVariableName = "Volume";
+        private const string PitchVariableName = "Pitch";
+
+        private string audioEnginePath;
+        private string waveBankPath;
+        private string soundBankPath;
+
+        private AudioEngine audioEngine;
+        private WaveBank waveBank;
+        private SoundBank soundBank;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Obtains the audio engine path.
+        /// 
+        /// オーディオエンジンのパスを取得します。
+        /// </summary>
+        public string AudioEnginePath
+        {
+            get { return audioEnginePath; }
+        }
+
+
+        /// <summary>
+        /// Obtains the wave bank path.
+        /// 
+        /// ウェーブバンクのパスを取得します。
+        /// </summary>
+        public string WaveBankPath
+        {
+            get { return waveBankPath; }
+        }
+
+
+        /// <summary>
+        /// Obtains the sound bank path.
+        ///
+        /// サウンドバンクのパスを取得します。
+        /// </summary>
+        public string SoundBankPath
+        {
+            get { return soundBankPath; }
+        }
+
+
+        /// <summary>
+        /// Obtains the audio engine.
+        ///
+        /// オーディオエンジンを取得します。
+        /// </summary>
+        public AudioEngine AudioEngine
+        {
+            get { return audioEngine; }
+        }
+
+
+        /// <summary>
+        /// Obtains the wave bank.
+        ///
+        /// ウェーブバンクを取得します。
+        /// </summary>
+        public WaveBank WaveBank
+        {
+            get { return waveBank; }
+        }
+
+
+        /// <summary>
+        /// Obtains the sound bank.
+        ///
+        /// サウンドバンクを取得します。
+        /// </summary>
+        public SoundBank SoundBank
+        {
+            get { return soundBank; }
+        }
+        #endregion
+
+        #region Initialization
+        /// <summary>
+        /// Initializes the instance.
+        /// The default audio file is used.
+        ///
+        /// インスタンスを初期化します。
+        /// オーディオファイルはデフォルトのものを使用します。
+        /// </summary>
+        public SoundComponent(Game game)
+            : this(game, 
+            DefaultAudioEnginePath, DefaultWaveBankPath, DefaultSoundBankPath)
+        {
+        }
+
+
+        /// <summary>
+        /// Initializes the instance.
+        /// 
+        /// インスタンスを初期化します。
+        /// </summary>
+        public SoundComponent(Game game, 
+            string audioEnginePath, string waveBankPath, string soundBankPath)
+            : base(game)
+        {
+            this.audioEnginePath = audioEnginePath;
+            this.waveBankPath = waveBankPath;
+            this.soundBankPath = soundBankPath;
+        }
+
+
+        /// <summary>
+        /// Initializes the sound.
+        ///
+        /// サウンドの初期化を行います。
+        /// </summary>
+        public override void Initialize()
+        {
+            audioEngine = new AudioEngine(AudioEnginePath);
+            waveBank = new WaveBank(audioEngine, WaveBankPath);
+            soundBank = new SoundBank(audioEngine, SoundBankPath);
+
+            audioEngine.Update();
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Releases all sound resources.
+        ///
+        /// サウンドリソースを全て開放します。
+        /// </summary>
+        protected override void Dispose(bool disposing)
+        {
+            if (soundBank != null && !soundBank.IsDisposed)
+                soundBank.Dispose();
+
+            if (waveBank != null && !waveBank.IsDisposed)
+                waveBank.Dispose();
+
+            if (audioEngine != null && !audioEngine.IsDisposed)
+                audioEngine.Dispose();
+
+            base.Dispose(disposing);
+        }
+        #endregion
+
+        #region Update Methods
+        /// <summary>
+        /// Updates the sound resource.
+        /// 
+        /// サウンドリソースの更新処理を行います。
+        /// </summary>
+        /// <param name="gameTime"></param>
+        public override void Update(GameTime gameTime)
+        {
+            if (audioEngine != null && !audioEngine.IsDisposed)
+            {
+                audioEngine.Update();
+            }
+
+            base.Update(gameTime);
+        }
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Obtains the Cue.
+        ///
+        /// Cueを取得します。
+        /// </summary>
+        /// <param name="sound">Sound name</param>
+        ///  
+        /// <param name="sound">サウンドの名前</param>
+        /// <returns>サウンドのCue</returns>
+        public Cue GetCue(string cueName)
+        {
+            return soundBank.GetCue(cueName);
+        }
+
+
+        /// <summary>
+        /// Plays the sound.
+        /// 
+        /// サウンドの再生をします。
+        /// </summary>
+        /// <param name="sound">Sound for playback</param>
+        ///  
+        /// <param name="sound">再生するサウンド</param>
+        ///
+        /// <returns>Played Cue</returns>
+        ///  
+        /// <returns>再生されたCue</returns>
+        public Cue PlayBackgroundMusic(string cueName)
+        {
+            Cue cue = GetCue(cueName);
+
+            if (cue != null && !cue.IsDisposed)
+                cue.Play();
+
+            return cue;
+        }
+
+
+        /// <summary>
+        /// Plays the sound.
+        /// 
+        /// サウンドの再生をします。
+        /// </summary>
+        /// <param name="sound">Sound for playback</param>
+        ///  
+        /// <param name="sound">再生するサウンド</param>
+        public void PlaySoundEffect(string cueName)
+        {
+            if (soundBank != null && !soundBank.IsDisposed)
+                soundBank.PlayCue(cueName);
+        }
+
+
+        /// <summary>
+        /// Sets the Cue variable.
+        /// 
+        /// Cueの変数を設定します。
+        /// </summary>
+        /// <param name="cue">Cue to be changed</param>
+        ///  
+        /// <param name="cue">変更するキュー</param>
+        ///
+        /// <param name="value">Value to be changed</param>
+        ///  
+        /// <param name="value">変更する値</param>
+        public static void SetVariable(Cue cue, string name, float value)
+        {
+            if (cue == null || cue.IsDisposed)
+                return;
+
+            cue.SetVariable(name, value);
+        }
+
+
+        /// <summary>
+        /// Changes the Cue volume.
+        /// Specified as float type between 0 and 1.
+        /// 
+        /// キューのボリュームを変更します。
+        /// 0~1までのfloat型で指定します。
+        /// </summary>
+        /// <param name="cue">Cue to be changed</param>
+        ///  
+        /// <param name="cue">変更するキュー</param>
+        ///
+        /// <param name="value">Value to be changed</param>
+        ///  
+        /// <param name="value">変更する値</param>
+        public static void SetVolume(Cue cue, float value)
+        {
+            float volume = 100.0f * MathHelper.Clamp(value, 0.0f, 1.0f);
+            SetVariable(cue, VolumeVariableName, volume);
+        }
+
+
+        /// <summary>
+        /// Alters the Cue pitch.
+        /// Alters the pitch by semitone in the range -12 to +12.
+        /// 
+        /// キューのピッチを変更します。
+        /// -12~+12まで、半音ずつ変化します。
+        /// </summary>
+        /// <param name="cue">Cue to be changed</param>
+        ///  
+        /// <param name="cue">変更するキュー</param>
+       ///
+        /// <param name="value">Value to be changed</param>
+        ///  
+        /// <param name="value">変更する値</param>
+        public static void SetPitch(Cue cue, float value)
+        {
+            float pitch = 12.0f * MathHelper.Clamp(value, -1.0f, 1.0f);
+            SetVariable(cue, PitchVariableName, pitch);
+        }
+
+
+        /// <summary>
+        /// Stops the Cue.
+        /// 
+        /// Cueを停止します。
+        /// </summary>
+        /// <param name="cue">Cue to be stopped</param>
+        ///  
+        /// <param name="cue">停止するキュー</param>
+        public static void Stop(Cue cue)
+        {
+            if (cue != null && !cue.IsDisposed && cue.IsPlaying)
+                cue.Stop(AudioStopOptions.Immediate);
+        }
+        #endregion
+    }
+}

BIN
Samples/Movipa/Movipa/Components/StorageComponent.cs


+ 80 - 0
Samples/Movipa/Movipa/Content/App.config.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<XnaContent xmlns:Generic="System.Collections.Generic">
+	<Asset Type="Generic:Dictionary[string,string]">
+		<!-- 開発元 -->
+		<Item>
+			<Key>DeveloperName</Key>
+			<Value>Developed by AGENDA/Zenryokutei</Value>
+		</Item>
+		<Item>
+			<Key>TitleStart</Key>
+			<Value>START</Value>
+		</Item>
+		<Item>
+			<Key>TitleQuit</Key>
+			<Value>QUIT</Value>
+		</Item>
+
+		
+		
+		
+		<Item>
+			<Key>A_Ok</Key>
+			<Value>{Ok</Value>
+		</Item>
+		<Item>
+			<Key>A_Ok_Win</Key>
+			<Value>{[Enter]Ok</Value>
+		</Item>
+		<Item>
+			<Key>B_Cancel</Key>
+			<Value>|Cancel</Value>
+		</Item>
+		<Item>
+			<Key>B_Cancel_Win</Key>
+			<Value>|[Esc]Cancel</Value>
+		</Item>
+		<Item>
+			<Key>B_Title</Key>
+			<Value>|Title</Value>
+		</Item>
+		<Item>
+			<Key>B_Title_Win</Key>
+			<Value>|[Esc]Title</Value>
+		</Item>
+		<Item>
+			<Key>X_Delete</Key>
+			<Value>}Delete</Value>
+		</Item>
+		<Item>
+			<Key>X_Delete_Win</Key>
+			<Value>}[X]Delete</Value>
+		</Item>
+		<Item>
+			<Key>A_Next</Key>
+			<Value>{Next</Value>
+		</Item>
+		<Item>
+			<Key>A_Next_Win</Key>
+			<Value>{[Enter]Next</Value>
+		</Item>
+		<Item>
+			<Key>A_Menu</Key>
+			<Value>{Select</Value>
+		</Item>
+		<Item>
+			<Key>A_Menu_Win</Key>
+			<Value>{[Enter]Select</Value>
+		</Item>
+		<Item>
+			<Key>A_Title</Key>
+			<Value>{Title</Value>
+		</Item>
+		<Item>
+			<Key>A_Title_Win</Key>
+			<Value>{[Enter]Title</Value>
+		</Item>
+
+		
+	</Asset>
+</XnaContent>

+ 1405 - 0
Samples/Movipa/Movipa/Content/Audio/Movipa.xap

@@ -0,0 +1,1405 @@
+Signature = XACT2;
+Version = 16;
+Content Version = 43;
+Release = August 2007;
+
+Options
+{
+    Cue List File = XACTCues.txt;
+    Verbose Report = 0;
+    Generate C/C++ Headers = 1;
+}
+
+Global Settings
+{
+    Xbox File = Xbox\Movipa.xgs;
+    Windows File = Win\Movipa.xgs;
+    Header File = Audio.h;
+    Exclude Category Names = 0;
+    Exclude Variable Names = 0;
+    Last Modified Low = 0;
+    Last Modified High = 0;
+
+    Category
+    {
+        Name = Global;
+        Public = 1;
+        Background Music = 0;
+        Volume = 0;
+
+        Category Entry
+        {
+        }
+
+        Instance Limit
+        {
+            Max Instances = 255;
+            Behavior = 0;
+
+            Crossfade
+            {
+                Fade In = 0;
+                Fade Out = 0;
+                Crossfade Type = 0;
+            }
+        }
+    }
+
+    Category
+    {
+        Name = Default;
+        Public = 1;
+        Background Music = 0;
+        Volume = 0;
+
+        Category Entry
+        {
+            Name = Global;
+        }
+
+        Instance Limit
+        {
+            Max Instances = 255;
+            Behavior = 0;
+
+            Crossfade
+            {
+                Fade In = 0;
+                Fade Out = 0;
+                Crossfade Type = 0;
+            }
+        }
+    }
+
+    Category
+    {
+        Name = Music;
+        Public = 1;
+        Background Music = 1;
+        Volume = 0;
+
+        Category Entry
+        {
+            Name = Global;
+        }
+
+        Instance Limit
+        {
+            Max Instances = 255;
+            Behavior = 1;
+
+            Crossfade
+            {
+                Fade In = 0;
+                Fade Out = 0;
+                Crossfade Type = 0;
+            }
+        }
+    }
+
+    Category
+    {
+        Name = UI;
+        Public = 1;
+        Background Music = 0;
+        Volume = 0;
+
+        Category Entry
+        {
+            Name = Global;
+        }
+
+        Instance Limit
+        {
+            Max Instances = 255;
+            Behavior = 0;
+
+            Crossfade
+            {
+                Fade In = 0;
+                Fade Out = 0;
+                Crossfade Type = 0;
+            }
+        }
+    }
+
+    Variable
+    {
+        Name = OrientationAngle;
+        Public = 1;
+        Global = 0;
+        Internal = 0;
+        External = 0;
+        Monitored = 1;
+        Reserved = 1;
+        Read Only = 0;
+        Time = 0;
+        Value = 0.000000;
+        Initial Value = 0.000000;
+        Min = -180.000000;
+        Max = 180.000000;
+    }
+
+    Variable
+    {
+        Name = DopplerPitchScalar;
+        Public = 1;
+        Global = 0;
+        Internal = 0;
+        External = 0;
+        Monitored = 1;
+        Reserved = 1;
+        Read Only = 0;
+        Time = 0;
+        Value = 1.000000;
+        Initial Value = 1.000000;
+        Min = 0.000000;
+        Max = 4.000000;
+    }
+
+    Variable
+    {
+        Name = SpeedOfSound;
+        Public = 1;
+        Global = 1;
+        Internal = 0;
+        External = 0;
+        Monitored = 1;
+        Reserved = 1;
+        Read Only = 0;
+        Time = 0;
+        Value = 343.500000;
+        Initial Value = 343.500000;
+        Min = 0.000000;
+        Max = 1000000.000000;
+    }
+
+    Variable
+    {
+        Name = ReleaseTime;
+        Public = 1;
+        Global = 0;
+        Internal = 1;
+        External = 1;
+        Monitored = 1;
+        Reserved = 1;
+        Read Only = 1;
+        Time = 1;
+        Value = 0.000000;
+        Initial Value = 0.000000;
+        Min = 0.000000;
+        Max = 15.000001;
+    }
+
+    Variable
+    {
+        Name = AttackTime;
+        Public = 1;
+        Global = 0;
+        Internal = 1;
+        External = 1;
+        Monitored = 1;
+        Reserved = 1;
+        Read Only = 1;
+        Time = 1;
+        Value = 0.000000;
+        Initial Value = 0.000000;
+        Min = 0.000000;
+        Max = 15.000001;
+    }
+
+    Variable
+    {
+        Name = NumCueInstances;
+        Public = 1;
+        Global = 0;
+        Internal = 1;
+        External = 1;
+        Monitored = 1;
+        Reserved = 1;
+        Read Only = 1;
+        Time = 0;
+        Value = 0.000000;
+        Initial Value = 0.000000;
+        Min = 0.000000;
+        Max = 1024.000000;
+    }
+
+    Variable
+    {
+        Name = Distance;
+        Public = 1;
+        Global = 0;
+        Internal = 0;
+        External = 0;
+        Monitored = 1;
+        Reserved = 1;
+        Read Only = 0;
+        Time = 0;
+        Value = 0.000000;
+        Initial Value = 0.000000;
+        Min = 0.000000;
+        Max = 1000000.000000;
+    }
+
+    Variable
+    {
+        Name = Volume;
+        Public = 1;
+        Global = 0;
+        Internal = 0;
+        External = 0;
+        Monitored = 1;
+        Reserved = 0;
+        Read Only = 0;
+        Time = 0;
+        Value = 100.000000;
+        Initial Value = 0.000000;
+        Min = 0.000000;
+        Max = 100.000000;
+    }
+
+    Variable
+    {
+        Name = Pitch;
+        Public = 1;
+        Global = 0;
+        Internal = 0;
+        External = 0;
+        Monitored = 1;
+        Reserved = 0;
+        Read Only = 0;
+        Time = 0;
+        Value = 0.000000;
+        Initial Value = 0.000000;
+        Min = -12.000000;
+        Max = 12.000000;
+    }
+
+    RPC
+    {
+        Name = BackgroundMusic;
+
+        RPC Curve
+        {
+            Name = Sound::66a5a9f0-14e3-4ce1-8e53-b5265bd6b7e3;
+            Property = 0;
+            Sound = 1;
+            Viewable = 1;
+
+            Variable Entry
+            {
+                Name = Volume;
+            }
+
+            RPC Point
+            {
+                X = 4.852686;
+                Y = -9600.000000;
+                Curve = 0;
+            }
+
+            RPC Point
+            {
+                X = 18.717505;
+                Y = -877.286316;
+                Curve = 0;
+            }
+
+            RPC Point
+            {
+                X = 45.927208;
+                Y = 274.457275;
+                Curve = 0;
+            }
+
+            RPC Point
+            {
+                X = 100.000000;
+                Y = 600.000000;
+                Curve = 0;
+            }
+        }
+
+        RPC Curve
+        {
+            Name = Sound::66479e50-c851-474c-a08f-e7f6b2c40f11;
+            Property = 1;
+            Sound = 1;
+            Line Color = 4294901760;
+            Viewable = 1;
+
+            Variable Entry
+            {
+                Name = Pitch;
+            }
+
+            RPC Point
+            {
+                X = -12.000000;
+                Y = -1200.000000;
+                Curve = 0;
+            }
+
+            RPC Point
+            {
+                X = 11.999999;
+                Y = 1200.000000;
+                Curve = 0;
+            }
+        }
+    }
+
+    Compression Preset
+    {
+        Name = Compression Preset;
+        Xbox Format Tag = 357;
+        Target Sample Rate = 48000;
+        Quality = 60;
+        Find Best Quality = 0;
+        High Freq Cut = 0;
+        Loop = 0;
+        PC Format Tag = 2;
+        Samples Per Block = 128;
+    }
+}
+
+Wave Bank
+{
+    Name = Movipa;
+    Xbox File = Xbox\Movipa.xwb;
+    Windows File = Win\Movipa.xwb;
+    Xbox Bank Path Edited = 1;
+    Windows Bank Path Edited = 1;
+    Seek Tables = 1;
+    Compression Preset Name = Compression Preset;
+    Bank Last Revised Low = 4037682080;
+    Bank Last Revised High = 29938431;
+
+    Wave
+    {
+        Name = MovipaGame;
+        File = Waves\BackgroundMusic\MovipaGame.wav;
+        Build Settings Last Modified Low = 3891237146;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 1693440;
+            Loop Region Offset = 0;
+            Loop Region Length = 1693440;
+            File Type = 1;
+            Last Modified Low = 436290304;
+            Last Modified High = 29844401;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaGameClear;
+        File = Waves\BackgroundMusic\MovipaGameClear.wav;
+        Build Settings Last Modified Low = 3891549646;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 3299648;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 3338736384;
+            Last Modified High = 29845546;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaGameOver;
+        File = Waves\BackgroundMusic\MovipaGameOver.wav;
+        Build Settings Last Modified Low = 3891549646;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 1539492;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 1882631168;
+            Last Modified High = 29844442;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaSelect;
+        File = Waves\BackgroundMusic\MovipaSelect.wav;
+        Build Settings Last Modified Low = 3891549646;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 1539492;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 2457860096;
+            Last Modified High = 29844449;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaTitle;
+        File = Waves\BackgroundMusic\MovipaTitle.wav;
+        Build Settings Last Modified Low = 3891549646;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 112;
+            Play Region Length = 13305600;
+            Loop Region Offset = 3629056;
+            Loop Region Length = 9676544;
+            File Type = 1;
+            Last Modified Low = 384847616;
+            Last Modified High = 29844204;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaSoundEffectOkay;
+        File = Waves\SoundEffect\MovipaSoundEffectOkay.wav;
+        Build Settings Last Modified Low = 3891705896;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 168704;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 3978121728;
+            Last Modified High = 29844457;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaSoundEffectCancel;
+        File = Waves\SoundEffect\MovipaSoundEffectCancel.wav;
+        Build Settings Last Modified Low = 3891705896;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 40928;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 2883154432;
+            Last Modified High = 29844458;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaSoundEffectCursor2;
+        File = Waves\SoundEffect\MovipaSoundEffectCursor2.wav;
+        Build Settings Last Modified Low = 3891862146;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 24528;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 1623154432;
+            Last Modified High = 29844458;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaSoundEffectCursor1;
+        File = Waves\SoundEffect\MovipaSoundEffectCursor1.wav;
+        Build Settings Last Modified Low = 3891862146;
+        Build Settings Last Modified High = 29889649;
+        Compression Preset Name = Compression Preset;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 2;
+            Sampling Rate = 44100;
+            Bits Per Sample = 1;
+            Play Region Offset = 46;
+            Play Region Length = 25600;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 903154432;
+            Last Modified High = 29844458;
+        }
+    }
+
+    Wave
+    {
+        Name = ResultScore;
+        File = Waves\SoundEffect\ResultScore.wav;
+        Build Settings Last Modified Low = 1068873418;
+        Build Settings Last Modified High = 29900317;
+        Compression Preset Name = <none>;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 1;
+            Sampling Rate = 44100;
+            Bits Per Sample = 0;
+            Play Region Offset = 44;
+            Play Region Length = 5014;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 984498418;
+            Last Modified High = 29900317;
+        }
+    }
+
+    Wave
+    {
+        Name = MovipaSoundEffectClear;
+        File = Waves\SoundEffect\MovipaSoundEffectClear.wav;
+        Build Settings Last Modified Low = 4254190880;
+        Build Settings Last Modified High = 29924220;
+        Compression Preset Name = <none>;
+
+        Cache
+        {
+            Format Tag = 0;
+            Channels = 1;
+            Sampling Rate = 22050;
+            Bits Per Sample = 0;
+            Play Region Offset = 56;
+            Play Region Length = 68747;
+            Loop Region Offset = 0;
+            Loop Region Length = 0;
+            File Type = 1;
+            Last Modified Low = 3999503380;
+            Last Modified High = 29924220;
+        }
+    }
+}
+
+Sound Bank
+{
+    Name = Movipa;
+    Xbox File = Xbox\Movipa.xsb;
+    Windows File = Win\Movipa.xsb;
+    Xbox Bank Path Edited = 1;
+    Windows Bank Path Edited = 1;
+
+    Sound
+    {
+        Name = SoundEffectCursor1;
+        Volume = -400;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = UI;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaSoundEffectCursor1;
+                    Entry Index = 8;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = SoundEffectCursor2;
+        Volume = -400;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = UI;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaSoundEffectCursor2;
+                    Entry Index = 7;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = SoundEffectCancel;
+        Volume = -400;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = UI;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaSoundEffectCancel;
+                    Entry Index = 6;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = SoundEffectOkay;
+        Volume = -400;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = UI;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaSoundEffectOkay;
+                    Entry Index = 5;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = TitleBackgroundMusic;
+        Volume = -600;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = Music;
+        }
+
+        RPC Entry
+        {
+            RPC Name = BackgroundMusic;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Loop Count = 255;
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaTitle;
+                    Entry Index = 4;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = SelectBackgroundMusic;
+        Volume = -600;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = Music;
+        }
+
+        RPC Entry
+        {
+            RPC Name = BackgroundMusic;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Loop Count = 255;
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaSelect;
+                    Entry Index = 3;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = GameOverBackgroundMusic;
+        Volume = -600;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = Music;
+        }
+
+        RPC Entry
+        {
+            RPC Name = BackgroundMusic;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaGameOver;
+                    Entry Index = 2;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = GameClearBackgroundMusic;
+        Volume = -600;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = Music;
+        }
+
+        RPC Entry
+        {
+            RPC Name = BackgroundMusic;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaGameClear;
+                    Entry Index = 1;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = GameBackgroundMusic;
+        Volume = -600;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = Music;
+        }
+
+        RPC Entry
+        {
+            RPC Name = BackgroundMusic;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Loop Count = 255;
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaGame;
+                    Entry Index = 0;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = ResultScore;
+        Volume = -1200;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = UI;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = ResultScore;
+                    Entry Index = 9;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Sound
+    {
+        Name = SoundEffectClear;
+        Volume = -1200;
+        Pitch = 0;
+        Priority = 0;
+
+        Category Entry
+        {
+            Name = Default;
+        }
+
+        Track
+        {
+            Volume = 0;
+
+            Play Wave Event
+            {
+                Break Loop = 0;
+                Use Speaker Position = 0;
+                Use Center Speaker = 1;
+                New Speaker Position On Loop = 1;
+                Speaker Position Angle = 0.000000;
+                Speaer Position Arc = 0.000000;
+
+                Event Header
+                {
+                    Timestamp = 0;
+                    Relative = 0;
+                    Random Recurrence = 0;
+                    Random Offset = 0;
+                }
+
+                Wave Entry
+                {
+                    Bank Name = Movipa;
+                    Bank Index = 0;
+                    Entry Name = MovipaSoundEffectClear;
+                    Entry Index = 10;
+                    Weight = 255;
+                    Weight Min = 0;
+                }
+            }
+        }
+    }
+
+    Cue
+    {
+        Name = TitleBackgroundMusic;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = TitleBackgroundMusic;
+            Index = 4;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = SelectBackgroundMusic;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = SelectBackgroundMusic;
+            Index = 5;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = SoundEffectOkay;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = SoundEffectOkay;
+            Index = 3;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = SoundEffectCancel;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = SoundEffectCancel;
+            Index = 2;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = SoundEffectCursor2;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = SoundEffectCursor2;
+            Index = 1;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = SoundEffectCursor1;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = SoundEffectCursor1;
+            Index = 0;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = GameOverBackgroundMusic;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = GameOverBackgroundMusic;
+            Index = 6;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = GameClearBackgroundMusic;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = GameClearBackgroundMusic;
+            Index = 7;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = GameBackgroundMusic;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = GameBackgroundMusic;
+            Index = 8;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = ResultScore;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = ResultScore;
+            Index = 9;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+
+    Cue
+    {
+        Name = SoundEffectClear;
+
+        Variation
+        {
+            Variation Type = 3;
+            Variation Table Type = 1;
+            New Variation on Loop = 0;
+        }
+
+        Sound Entry
+        {
+            Name = SoundEffectClear;
+            Index = 10;
+            Weight Min = 0;
+            Weight Max = 255;
+        }
+    }
+}

BIN
Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaGame.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaGameClear.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaGameOver.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaSelect.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/BackgroundMusic/MovipaTitle.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectCancel.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectClear.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectCursor1.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectCursor2.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/MovipaSoundEffectOkay.wav


BIN
Samples/Movipa/Movipa/Content/Audio/Waves/SoundEffect/ResultScore.wav


+ 746 - 0
Samples/Movipa/Movipa/Content/Content.contentproj

@@ -0,0 +1,746 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{2B47D242-9D65-47D8-BE43-E0ADF275D025}</ProjectGuid>
+    <ProjectTypeGuids>{96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Movipa</RootNamespace>
+    <AssemblyName>Movipa</AssemblyName>
+    <XnaFrameworkVersion>v2.0</XnaFrameworkVersion>
+    <ApplicationIcon>Movipa.ico</ApplicationIcon>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <XnaPlatform>Windows</XnaPlatform>
+    <OutputPath>bin\x86\Debug</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <XnaPlatform>Windows</XnaPlatform>
+    <OutputPath>bin\x86\Release</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Xbox 360' ">
+    <XnaPlatform>Xbox 360</XnaPlatform>
+    <OutputPath>bin\Xbox 360\Debug</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Xbox 360' ">
+    <XnaPlatform>Xbox 360</XnaPlatform>
+    <OutputPath>bin\Xbox 360\Release</OutputPath>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.EffectImporter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.FBXImporter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.TextureImporter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.XImporter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\MovipaPipeline\MovipaPipeline.csproj">
+      <Project>{AB316159-CFB5-41D2-860E-77653EB2B9CF}</Project>
+      <Name>MovipaPipeline</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\SceneDataPipeline\SceneDataPipeline.csproj">
+      <Project>{6CD6CE4A-411C-4D58-94B9-35682930F293}</Project>
+      <Name>SceneDataPipeline</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\SkinnedModelPipeline\SkinnedModelPipeline.csproj">
+      <Project>{76A496D0-9384-4219-85E9-0102CC608B4D}</Project>
+      <Name>SkinnedModelPipeline</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Audio\Movipa.xap">
+      <Name>Movipa</Name>
+      <Importer>XactImporter</Importer>
+      <Processor>XactProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Textures\Puzzle\cursor.png">
+      <Name>cursor</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Puzzle\glass.png">
+      <Name>glass</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Puzzle\glass_light.png">
+      <Name>glass_light</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Puzzle\grow.png">
+      <Name>grow</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Textures\Title\film.png">
+      <Name>film</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Title\title_logo.png">
+      <Name>title_logo</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Textures\Wallpaper\Wallpaper_001.png">
+      <Name>Wallpaper_001</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Wallpaper\Wallpaper_002.png">
+      <Name>Wallpaper_002</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Wallpaper\Wallpaper_003.png">
+      <Name>Wallpaper_003</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Wallpaper\Wallpaper_004.png">
+      <Name>Wallpaper_004</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Wallpaper\Wallpaper_005.png">
+      <Name>Wallpaper_005</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Wallpaper\Wallpaper_006.png">
+      <Name>Wallpaper_006</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="App.config.xml">
+      <Name>App.config</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Movie\Program\Dude\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Movie\Program\Dude\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Movie\Program\Particle\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Movie\Program\Particle\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Movie\Program\Particle\Particle.png">
+      <Name>Particle</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="StageData.xml">
+      <Name>StageData</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00000.png">
+      <Name>moere_00000</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00001.png">
+      <Name>moere_00001</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00002.png">
+      <Name>moere_00002</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00003.png">
+      <Name>moere_00003</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00004.png">
+      <Name>moere_00004</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00005.png">
+      <Name>moere_00005</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00006.png">
+      <Name>moere_00006</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00007.png">
+      <Name>moere_00007</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00008.png">
+      <Name>moere_00008</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00009.png">
+      <Name>moere_00009</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00010.png">
+      <Name>moere_00010</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00011.png">
+      <Name>moere_00011</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00012.png">
+      <Name>moere_00012</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00013.png">
+      <Name>moere_00013</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00014.png">
+      <Name>moere_00014</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00015.png">
+      <Name>moere_00015</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00016.png">
+      <Name>moere_00016</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00017.png">
+      <Name>moere_00017</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\moere_00018.png">
+      <Name>moere_00018</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+      <ProcessorParameters_TextureFormat>DxtCompressed</ProcessorParameters_TextureFormat>
+    </Compile>
+    <Compile Include="Movie\Rendering\moere\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Models\film.FBX">
+      <Name>film</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>ModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\sandglass.FBX">
+      <Name>sandglass</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>ModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\sphere01.FBX">
+      <Name>sphere01</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>ModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\sphere02.FBX">
+      <Name>sphere02</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>ModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\sphere11.FBX">
+      <Name>sphere11</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>ModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\sphere12.FBX">
+      <Name>sphere12</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>ModelProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Models\Dude\dude.fbx">
+      <Name>dude</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>SkinnedModelProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="SkinnedModel.fx">
+      <Name>SkinnedModel</Name>
+      <Importer>EffectImporter</Importer>
+      <Processor>EffectProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="MovieList.xml">
+      <Name>MovieList</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Models\Title\movipa_title_02.FBX">
+      <Name>movipa_title_02</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>SkinnedModelProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Models\Title\movipa_title_01.FBX">
+      <Name>movipa_title_01</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>SkinnedModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\Title\movipa_title_03.FBX">
+      <Name>movipa_title_03</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>SkinnedModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\Title\movipa_title_04.FBX">
+      <Name>movipa_title_04</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>SkinnedModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\Title\movipa_title_05.FBX">
+      <Name>movipa_title_05</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>SkinnedModelProcessor</Processor>
+    </Compile>
+    <Compile Include="Models\Title\movipa_title_06.FBX">
+      <Name>movipa_title_06</Name>
+      <Importer>FbxImporter</Importer>
+      <Processor>SkinnedModelProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Layout\Anime1\Anime1_Scene.xml">
+      <Name>Anime1_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime1\bmp\mov01_bg.bmp">
+      <Name>mov01_bg</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime1\bmp\mov01_obj01.bmp">
+      <Name>mov01_obj01</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime1\bmp\mov01_obj02.bmp">
+      <Name>mov01_obj02</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime1\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime1\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime2\Anime2_Scene.xml">
+      <Name>Anime2_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime2\bmp\mov02_obj1.bmp">
+      <Name>mov02_obj1</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime2\bmp\mov02_obj2.bmp">
+      <Name>mov02_obj2</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime2\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Anime2\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Fade\bmp\Box.bmp">
+      <Name>Box</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Fade\bmp\Gonzales.bmp">
+      <Name>Gonzales</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Fade\Gonzales_Scene.xml">
+      <Name>Gonzales_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Fade\Normal_Scene.xml">
+      <Name>Normal_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Fade\RotateBox_Scene.xml">
+      <Name>RotateBox_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\GameOver\bmp\gameover.bmp">
+      <Name>gameover</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\GameOver\gameover_Scene.xml">
+      <Name>gameover_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\game\bmp\flash.bmp">
+      <Name>flash</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\game\bmp\game.bmp">
+      <Name>game</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\game\bmp\reference1.bmp">
+      <Name>reference1</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\game\bmp\reference2.bmp">
+      <Name>reference2</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\game\game_Scene.xml">
+      <Name>game_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ghost\bmp\ghost_bg.bmp">
+      <Name>ghost_bg</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ghost\bmp\ghost_obj.bmp">
+      <Name>ghost_obj</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ghost\bmp\ghost_obj2.bmp">
+      <Name>ghost_obj2</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ghost\ghost_Scene.xml">
+      <Name>ghost_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ghost\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ghost\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\menu\bmp\menu1.bmp">
+      <Name>menu1</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\menu\bmp\menu2.bmp">
+      <Name>menu2</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\menu\menu_Scene.xml">
+      <Name>menu_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\penguin\bmp\penguin_bg.bmp">
+      <Name>penguin_bg</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\penguin\bmp\penguin_obj.bmp">
+      <Name>penguin_obj</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\penguin\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\penguin\penguin_Scene.xml">
+      <Name>penguin_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\penguin\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Result\bmp\result.bmp">
+      <Name>result</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Result\result_Scene.xml">
+      <Name>result_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\sea\bmp\sea_bg.bmp">
+      <Name>sea_bg</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\sea\bmp\sea_obj.bmp">
+      <Name>sea_obj</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\sea\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\sea\sea_Scene.xml">
+      <Name>sea_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\sea\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\StaffRoll\bmp\staff1.bmp">
+      <Name>staff1</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\StaffRoll\bmp\staff2.bmp">
+      <Name>staff2</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\StaffRoll\staffroll_Scene.xml">
+      <Name>staffroll_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\street\bmp\street_bg.bmp">
+      <Name>street_bg</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\street\bmp\street_obj.bmp">
+      <Name>street_obj</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\street\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\street\street_Scene.xml">
+      <Name>street_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\street\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\bmp\panel.bmp">
+      <Name>panel</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\bmp\panel_1.bmp">
+      <Name>panel_1</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\change_rotate_off_Info.xml">
+      <Name>change_rotate_off_Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\change_rotate_off_Scene.xml">
+      <Name>change_rotate_off_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\change_rotate_on_Info.xml">
+      <Name>change_rotate_on_Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\change_rotate_on_Scene.xml">
+      <Name>change_rotate_on_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\revolve_Info.xml">
+      <Name>revolve_Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\revolve_Scene.xml">
+      <Name>revolve_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\slide_Info.xml">
+      <Name>slide_Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Style\slide_Scene.xml">
+      <Name>slide_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Title\bmp\title_logo.bmp">
+      <Name>title_logo</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\Title\Title_Scene.xml">
+      <Name>Title_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ufo\bmp\ufo_bg.bmp">
+      <Name>ufo_bg</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ufo\bmp\ufo_obj.bmp">
+      <Name>ufo_obj</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ufo\Info.xml">
+      <Name>Info</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ufo\Thumbnail.png">
+      <Name>Thumbnail</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>TextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Layout\ufo\ufo_Scene.xml">
+      <Name>ufo_Scene</Name>
+      <Importer>XmlImporter</Importer>
+      <Processor>PassThroughProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Textures\Font\LargeGameFont.png">
+      <Name>LargeGameFont</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>FontTextureProcessor</Processor>
+    </Compile>
+    <Compile Include="Textures\Font\MediumGameFont.png">
+      <Name>MediumGameFont</Name>
+      <Importer>TextureImporter</Importer>
+      <Processor>FontTextureProcessor</Processor>
+    </Compile>
+  </ItemGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\v2.0\Microsoft.Xna.GameStudio.ContentPipeline.targets" />
+</Project>

+ 38 - 0
Samples/Movipa/Movipa/Content/Layout/Anime1/Anime.l4t

@@ -0,0 +1,38 @@
+//LT4_PROJECT 1000 
+//T0:
+//T1:
+//T2:
+//T3:
+//T4:
+//T5:
+//T6:
+//T7:
+//T8:
+//T9:
+//T10:
+//T11:
+//T12:
+//T13:
+//T14:
+//T15:
+//T16:
+//T17:
+//T18:
+//T19:
+//T20:
+//T21:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:
+//T22:
+//T23:
+//T24:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:
+//T25:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:
+Anime:1,0,0,16384,6720,256,1024,576,32,32,32,32,32,16,32,16,0,0,
+
+//ST "Anime1",0,0,1,0,703163053,
+.\Anime1.stg
+
+//PLUGIN_NAME
+XNASceneDataFormat
+PatImgExportDataFormat
+//VSS_DATA
+
+$/

+ 325 - 0
Samples/Movipa/Movipa/Content/Layout/Anime1/Anime1.stg

@@ -0,0 +1,325 @@
+703163053
+//IL
+//IG "32bit",0,0,32,1024,2048,0,0,1,0,0,//1:0703151651_2aebacb1219_11cd7ed//2:
+//IO ".\bmp\mov01_bg.bmp","mov01_bg",0,0,32,0,0,1024,576,0,32,0,0,0,0,0,0,0:0703151708_2aefac262fb_18583b3://1:mov01_bg.bmp
+//IO ".\bmp\mov01_obj01.bmp","mov01_obj01",0,9216,32,0,576,1024,504,0,32,0,0,0,0,0,0,0:0703151708_2aefad2632f_183b6fa://1:mov01_obj01.bmp
+//IO ".\bmp\mov01_obj02.bmp","mov01_obj02",0,16906,32,0,1080,76,112,0,32,0,0,0,0,0,0,0:0703162454_1663041b3c_18303cd://1:mov01_obj02.bmp
+//PT
+//PB "AnimeBG","",0,0,
+//PG "Night",0,0:0703095453_1026182438c_44e02ea:
+//PO "mov01_bg",0,0.000000,0.000000,1024.000000,576.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703151708_2aefac262fb_18583b3::
+//PG "Rever1",0,0:0703153054_2bb974611f4_18410a1:
+//PO "mov01_obj01",0,0.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,256.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,-256.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,512.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,768.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PG "Rever2",0,0:0703154947_2cce0824e8_18417d0:
+//PO "mov01_obj01",0,256.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,512.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,0.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,768.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,1024.000000,320.000000,256.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,712,0,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PG "Guardrail",0,0:0703152759_2b8ea56553c_183d58c:
+//PO "mov01_obj01",0,-13.000000,342.000000,376.000000,120.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,312,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,351.000000,342.000000,376.000000,120.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,312,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,715.000000,342.000000,376.000000,120.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,312,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,1.000000,387.000000,296.000000,168.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,680,144,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PG "Star1",0,0:0703162134_38ec3d22cf4_183a769:
+//PO "StarL_1",0,21.000000,22.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_2",0,412.000000,4.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_3",0,690.000000,62.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_4",0,831.000000,-2.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_1",0,54.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_2",0,152.000000,42.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_3",0,485.000000,52.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_4",0,564.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_5",0,662.000000,27.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_6",0,723.000000,46.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_7",0,816.000000,41.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_8",0,926.000000,29.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_9",0,947.000000,79.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Star2",0,0:0703160600_119f1bb85_41e6268b:
+//PO "StarL_1",0,21.000000,22.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_2",0,412.000000,4.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_3",0,690.000000,62.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_4",0,831.000000,-2.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_1",0,54.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_2",0,152.000000,42.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_3",0,485.000000,52.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_4",0,564.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_5",0,662.000000,27.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_6",0,723.000000,46.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_7",0,816.000000,41.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_8",0,926.000000,29.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_9",0,947.000000,79.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Star3",0,0:0703160801_1378bd1635_1864083:
+//PO "StarL_1",0,21.000000,22.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_2",0,412.000000,4.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_3",0,690.000000,62.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_4",0,831.000000,-2.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_1",0,54.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_2",0,152.000000,42.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_3",0,485.000000,52.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_4",0,564.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_5",0,662.000000,27.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_6",0,723.000000,46.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_7",0,816.000000,41.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_8",0,926.000000,29.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_9",0,947.000000,79.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Star4",0,0:0703160929_14cf83758f_183984e:
+//PO "StarL_1",0,21.000000,22.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_2",0,412.000000,4.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_3",0,690.000000,62.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarL_4",0,831.000000,-2.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,640,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_1",0,54.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_2",0,152.000000,42.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.500000,0.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_3",0,485.000000,52.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_4",0,564.000000,-3.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_5",0,662.000000,27.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_6",0,723.000000,46.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_7",0,816.000000,41.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_8",0,926.000000,29.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "StarS_9",0,947.000000,79.000000,32.000000,32.000000,128,128,128,128,17.000000,17.000000,0.740000,0.740000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,672,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PB "Object","",0,0,
+//PG "Boy1",0,0:0703152113_2b2b9121c6d_18327b6:
+//PO "mov01_obj10",0,301.000000,470.000000,80.000000,104.000000,128,128,128,128,24.000000,20.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,208,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj12",0,363.000000,460.000000,80.000000,80.000000,128,128,128,128,14.000000,10.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,304,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj11",0,347.000000,315.000000,56.000000,160.000000,128,128,128,128,32.000000,20.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,288,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj9",0,298.000000,328.000000,72.000000,168.000000,128,128,128,128,50.000000,16.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,216,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,341.000000,222.000000,66.000000,68.000000,128,128,128,128,14.000000,12.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,72,369,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,285.000000,190.000000,112.000000,160.000000,128,128,128,128,80.000000,130.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,174.000000,3.000000,216.000000,200.000000,128,128,128,128,138.000000,192.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,405.000000,280.000000,61.000000,45.000000,128,128,128,128,12.000000,14.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,136,427,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,291.000000,214.000000,288.000000,160.000000,128,128,128,128,80.000000,96.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,344,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj6",0,426.000000,224.000000,64.000000,88.000000,128,128,128,128,28.000000,80.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,112,280,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj7",0,301.000000,276.000000,80.000000,80.000000,128,128,128,128,14.000000,9.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,112,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj8",0,252.000000,230.000000,72.000000,72.000000,128,128,128,128,40.000000,12.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,360,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Boy2",0,0:0703152932_2f1445d5a92_75b68bc:
+//PO "mov01_obj10",0,301.000000,470.000000,80.000000,104.000000,128,128,128,128,24.000000,20.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,208,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj12",0,363.000000,454.000000,80.000000,80.000000,128,128,128,128,14.000000,10.000000,1.000000,1.000000,0.000000,0.000000,3.000000:,0,6,0,0.000000:,200,304,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj11",0,352.000000,313.000000,56.000000,160.000000,128,128,128,128,32.000000,20.000000,1.000000,1.000000,0.000000,0.000000,2.000000:,0,6,0,0.000000:,288,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj9",0,303.000000,329.000000,72.000000,168.000000,128,128,128,128,50.000000,16.000000,1.000000,1.000000,0.000000,0.000000,2.000000:,0,6,0,0.000000:,216,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,350.000000,226.000000,66.000000,68.000000,128,128,128,128,14.000000,12.000000,1.000000,1.000000,0.000000,0.000000,-5.000000:,0,6,0,0.000000:,72,369,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,288.000000,193.000000,112.000000,160.000000,128,128,128,128,80.000000,130.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,0,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,187.000000,2.000000,216.000000,200.000000,128,128,128,128,138.000000,192.000000,1.000000,1.000000,0.000000,0.000000,15.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,423.000000,282.000000,61.000000,45.000000,128,128,128,128,12.000000,14.000000,1.000000,1.000000,0.000000,0.000000,-10.000000:,0,6,0,0.000000:,136,427,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,296.000000,213.000000,288.000000,160.000000,128,128,128,128,80.000000,96.000000,1.000000,1.000000,0.000000,0.000000,4.000000:,0,6,0,0.000000:,344,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj6",0,446.000000,222.000000,64.000000,88.000000,128,128,128,128,28.000000,80.000000,1.000000,1.000000,0.000000,0.000000,3.000000:,0,6,0,0.000000:,112,280,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj7",0,307.000000,280.000000,80.000000,80.000000,128,128,128,128,14.000000,9.000000,1.000000,1.000000,0.000000,0.000000,30.000000:,0,6,0,0.000000:,112,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj8",0,267.000000,229.000000,72.000000,72.000000,128,128,128,128,40.000000,12.000000,1.000000,1.000000,0.000000,0.000000,15.000000:,0,6,0,0.000000:,0,360,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Boy3",0,0:0703155918_30c856a5aaf_1841b81:
+//PO "mov01_obj10",0,301.000000,470.000000,80.000000,104.000000,128,128,128,128,24.000000,20.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,208,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj12",0,363.000000,460.000000,80.000000,80.000000,128,128,128,128,14.000000,10.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,304,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj11",0,347.000000,315.000000,56.000000,160.000000,128,128,128,128,32.000000,20.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,288,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj9",0,298.000000,328.000000,72.000000,168.000000,128,128,128,128,50.000000,16.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,216,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,341.000000,222.000000,66.000000,68.000000,128,128,128,128,14.000000,12.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,72,369,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,285.000000,190.000000,112.000000,160.000000,128,128,128,128,80.000000,130.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,174.000000,3.000000,216.000000,200.000000,128,128,128,128,138.000000,192.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,405.000000,280.000000,61.000000,45.000000,128,128,128,128,12.000000,14.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,136,427,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,291.000000,214.000000,288.000000,160.000000,128,128,128,128,80.000000,96.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,344,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj6",0,426.000000,224.000000,64.000000,88.000000,128,128,128,128,28.000000,80.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,112,280,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj7",0,306.000000,271.000000,80.000000,80.000000,128,128,128,128,14.000000,9.000000,1.000000,1.000000,0.000000,0.000000,-15.000000:,0,6,0,0.000000:,112,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj8",0,252.000000,230.000000,72.000000,72.000000,128,128,128,128,40.000000,12.000000,1.000000,1.000000,0.000000,0.000000,-10.000000:,0,6,0,0.000000:,0,360,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Boy4",0,0:0703154456_2ff5d9e64e0_6448ee7:
+//PO "mov01_obj10",0,301.000000,465.000000,80.000000,104.000000,128,128,128,128,24.000000,20.000000,1.000000,1.000000,0.000000,0.000000,3.000000:,0,6,0,0.000000:,208,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj12",0,363.000000,460.000000,80.000000,80.000000,128,128,128,128,14.000000,10.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,304,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj11",0,343.000000,315.000000,56.000000,160.000000,128,128,128,128,32.000000,20.000000,1.000000,1.000000,0.000000,0.000000,-2.000000:,0,6,0,0.000000:,288,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj9",0,294.000000,325.000000,72.000000,168.000000,128,128,128,128,50.000000,16.000000,1.000000,1.000000,0.000000,0.000000,-2.000000:,0,6,0,0.000000:,216,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,335.000000,224.000000,66.000000,68.000000,128,128,128,128,14.000000,12.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,72,369,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,285.000000,190.000000,112.000000,160.000000,128,128,128,128,80.000000,130.000000,1.000000,1.000000,0.000000,0.000000,-5.000000:,0,6,0,0.000000:,0,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,164.000000,6.000000,216.000000,200.000000,128,128,128,128,138.000000,192.000000,1.000000,1.000000,0.000000,0.000000,-10.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,379.000000,271.000000,61.000000,45.000000,128,128,128,128,12.000000,14.000000,1.000000,1.000000,0.000000,0.000000,-10.000000:,0,6,0,0.000000:,136,427,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,283.000000,214.000000,288.000000,160.000000,128,128,128,128,80.000000,96.000000,1.000000,1.000000,0.000000,0.000000,-15.000000:,0,6,0,0.000000:,344,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj6",0,398.000000,209.000000,64.000000,88.000000,128,128,128,128,28.000000,80.000000,1.000000,1.000000,0.000000,0.000000,-5.000000:,0,6,0,0.000000:,112,280,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj7",0,289.000000,285.000000,80.000000,80.000000,128,128,128,128,14.000000,9.000000,1.000000,1.000000,0.000000,0.000000,30.000000:,0,6,0,0.000000:,112,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj8",0,249.000000,235.000000,72.000000,72.000000,128,128,128,128,40.000000,12.000000,1.000000,1.000000,0.000000,0.000000,15.000000:,0,6,0,0.000000:,0,360,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Boy2_2",0,0:0703160707_313aeca3db7_185ff4b:
+//PO "mov01_obj10",0,301.000000,470.000000,80.000000,104.000000,128,128,128,128,24.000000,20.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,208,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj12",0,363.000000,454.000000,80.000000,80.000000,128,128,128,128,14.000000,10.000000,1.000000,1.000000,0.000000,0.000000,3.000000:,0,6,0,0.000000:,200,304,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj11",0,352.000000,313.000000,56.000000,160.000000,128,128,128,128,32.000000,20.000000,1.000000,1.000000,0.000000,0.000000,2.000000:,0,6,0,0.000000:,288,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj9",0,303.000000,329.000000,72.000000,168.000000,128,128,128,128,50.000000,16.000000,1.000000,1.000000,0.000000,0.000000,2.000000:,0,6,0,0.000000:,216,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,350.000000,226.000000,66.000000,68.000000,128,128,128,128,14.000000,12.000000,1.000000,1.000000,0.000000,0.000000,-5.000000:,0,6,0,0.000000:,72,369,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,288.000000,193.000000,112.000000,160.000000,128,128,128,128,80.000000,130.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,0,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,187.000000,2.000000,216.000000,200.000000,128,128,128,128,138.000000,192.000000,1.000000,1.000000,0.000000,0.000000,20.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj4",0,425.000000,288.000000,61.000000,45.000000,128,128,128,128,12.000000,14.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,136,427,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,296.000000,215.000000,288.000000,160.000000,128,128,128,128,80.000000,96.000000,1.000000,1.000000,0.000000,0.000000,10.000000:,0,6,0,0.000000:,344,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj6",0,446.000000,235.000000,64.000000,88.000000,128,128,128,128,28.000000,80.000000,1.000000,1.000000,0.000000,0.000000,7.000000:,0,6,0,0.000000:,112,280,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj7",0,307.000000,280.000000,80.000000,80.000000,128,128,128,128,14.000000,9.000000,1.000000,1.000000,0.000000,0.000000,30.000000:,0,6,0,0.000000:,112,200,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj8",0,267.000000,229.000000,72.000000,72.000000,128,128,128,128,40.000000,12.000000,1.000000,1.000000,0.000000,0.000000,15.000000:,0,6,0,0.000000:,0,360,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Cat1",0,0:0703153410_2be92564dcb_183e084:
+//PO "mov01_obj3",0,590.000000,434.000000,72.000000,112.000000,128,128,128,128,14.000000,92.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,424,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,515.000000,415.000000,96.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,440,160,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,477.000000,326.000000,144.000000,120.000000,128,128,128,128,74.000000,104.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Cat2",0,0:0703164612_3377423dc2_1d2d9b32:
+//PO "mov01_obj3",0,590.000000,434.000000,72.000000,112.000000,128,128,128,128,14.000000,92.000000,1.000000,1.000000,0.000000,0.000000,-4.000000:,0,6,0,0.000000:,424,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,515.000000,415.000000,96.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,440,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,476.000000,326.000000,144.000000,120.000000,128,128,128,128,74.000000,104.000000,1.000000,1.000000,0.000000,0.000000,6.000000:,0,6,0,0.000000:,280,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Cat3",0,0:0703164613_33779151de8_1856dcd:
+//PO "mov01_obj3",0,590.000000,434.000000,72.000000,112.000000,128,128,128,128,14.000000,92.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,424,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,515.000000,415.000000,96.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,440,160,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,477.000000,326.000000,144.000000,120.000000,128,128,128,128,74.000000,104.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Cat4",0,0:0703164614_3377d0c2adb_10134b18:
+//PO "mov01_obj3",0,590.000000,434.000000,72.000000,112.000000,128,128,128,128,14.000000,92.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,424,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,515.000000,415.000000,96.000000,144.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,440,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,477.000000,326.000000,144.000000,120.000000,128,128,128,128,74.000000,104.000000,1.000000,1.000000,0.000000,0.000000,-4.000000:,0,6,0,0.000000:,280,312,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Bird1",0,0:0703153520_2bfa6085219_1843708:
+//PO "mov01_obj2",0,607.000000,546.000000,72.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,456,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,607.000000,489.000000,72.000000,72.000000,128,128,128,128,40.000000,64.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,384,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Bird2",0,0:0703163801_32ff95720d6_75127f9:
+//PO "mov01_obj2",0,607.000000,546.000000,72.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,456,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,607.000000,489.000000,72.000000,72.000000,128,128,128,128,40.000000,64.000000,1.000000,1.000000,0.000000,0.000000,-3.000000:,0,6,0,0.000000:,200,384,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Bird3",0,0:0703163802_32ffd012ccd_66210d4:
+//PO "mov01_obj2",0,607.000000,546.000000,72.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,456,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,607.000000,489.000000,72.000000,72.000000,128,128,128,128,40.000000,64.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,384,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Bird4",0,0:0703163803_32fffdf362a_749b8e2:
+//PO "mov01_obj2",0,607.000000,546.000000,72.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,200,456,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj01",0,607.000000,489.000000,72.000000,72.000000,128,128,128,128,40.000000,64.000000,1.000000,1.000000,0.000000,0.000000,3.000000:,0,6,0,0.000000:,200,384,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Dog1",0,0:0703153830_2c28d614d8f_183f43d:
+//PO "mov01_obj01",0,909.000000,410.000000,80.000000,104.000000,128,128,128,128,24.000000,86.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,632,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,795.000000,339.000000,144.000000,192.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,496,304,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,767.000000,270.000000,144.000000,136.000000,128,128,128,128,72.000000,110.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,536,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Dog2",0,0:0703160454_34892c47594_65adb59:
+//PO "mov01_obj01",0,909.000000,410.000000,80.000000,104.000000,128,128,128,128,24.000000,86.000000,1.000000,1.000000,0.000000,0.000000,8.000000:,0,6,0,0.000000:,632,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,795.000000,339.000000,144.000000,192.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,496,304,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,767.000000,270.000000,144.000000,136.000000,128,128,128,128,72.000000,110.000000,1.000000,1.000000,0.000000,0.000000,-5.000000:,0,6,0,0.000000:,536,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Dog3",0,0:0703160455_34898627ec_659b9ba:
+//PO "mov01_obj01",0,909.000000,410.000000,80.000000,104.000000,128,128,128,128,24.000000,86.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,632,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,795.000000,339.000000,144.000000,192.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,496,304,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,767.000000,270.000000,144.000000,136.000000,128,128,128,128,72.000000,110.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,536,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Dog4",0,0:0703160456_3489d631844_1c749a3a:
+//PO "mov01_obj01",0,909.000000,410.000000,80.000000,104.000000,128,128,128,128,24.000000,86.000000,1.000000,1.000000,0.000000,0.000000,10.000000:,0,6,0,0.000000:,632,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,795.000000,339.000000,144.000000,192.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,496,304,0,0,0,1,0,0,0,0::0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,767.000000,270.000000,144.000000,136.000000,128,128,128,128,72.000000,110.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,536,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Turtle1",0,0:0703153620_2c08f4f4be2_1841c15:
+//PO "mov01_obj4",0,676.000000,499.000000,64.000000,64.000000,128,128,128,128,46.000000,24.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,288,248,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,748.000000,499.000000,72.000000,64.000000,128,128,128,128,50.000000,24.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,360,248,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,703.000000,445.000000,152.000000,88.000000,128,128,128,128,60.000000,80.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,288,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,657.000000,464.000000,64.000000,56.000000,128,128,128,128,58.000000,30.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Turtle2",0,0:0703162545_35bacb8561c_3d013fda:
+//PO "mov01_obj4",0,676.000000,481.000000,64.000000,64.000000,128,128,128,128,46.000000,24.000000,1.000000,1.000000,0.000000,0.000000,10.000000:,0,6,0,0.000000:,288,248,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,748.000000,487.000000,72.000000,64.000000,128,128,128,128,50.000000,24.000000,1.000000,1.000000,0.000000,0.000000,-10.000000:,0,6,0,0.000000:,360,248,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,703.000000,431.000000,152.000000,88.000000,128,128,128,128,60.000000,80.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,288,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,658.000000,446.000000,64.000000,56.000000,128,128,128,128,58.000000,30.000000,1.000000,1.000000,0.000000,0.000000,10.000000:,0,6,0,0.000000:,0,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Turtle3",0,0:0703162745_35d80cc4ea8_63a7925:
+//PO "mov01_obj4",0,676.000000,499.000000,64.000000,64.000000,128,128,128,128,46.000000,24.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,288,248,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj5",0,748.000000,499.000000,72.000000,64.000000,128,128,128,128,50.000000,24.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,360,248,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj2",0,703.000000,452.000000,152.000000,88.000000,128,128,128,128,60.000000,80.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,288,160,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PO "mov01_obj3",0,657.000000,471.000000,64.000000,56.000000,128,128,128,128,58.000000,30.000000,1.000000,1.000000,0.000000,0.000000,-3.000000:,0,6,0,0.000000:,0,432,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703151708_2aefad2632f_183b6fa::
+//PG "Onpu1",0,0:0703165144_3b7d4f44aa_1834e12:
+//PO "PatObj",0,0.000000,0.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "Onpu2",0,0:0703165555_3f514a44de_185fab0:
+//PO "mov01_obj02",0,574.000000,133.000000,76.000000,112.000000,128,128,128,0,38.000000,56.000000,1.000000,1.000000,0.000000,0.000000,10.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu3",0,0:0703162822_198ff279ec_185964e:
+//PO "mov01_obj3",0,789.000000,77.000000,76.000000,112.000000,128,128,128,128,38.000000,56.000000,1.000000,1.000000,0.000000,0.000000,-13.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu4",0,0:0703162837_19ca6a38db_18664a6:
+//PO "mov01_obj4",0,1028.000000,-20.000000,76.000000,112.000000,128,128,128,128,38.000000,56.000000,1.000000,1.000000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu5",0,0:0703163347_1e872f3140_482eb43:
+//PO "mov01_obj02",0,574.000000,133.000000,76.000000,112.000000,128,128,128,0,38.000000,56.000000,0.800000,0.800000,0.000000,0.000000,10.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu6",0,0:0703163519_1fec1e3ed8_783f3f6:
+//PO "mov01_obj3",0,789.000000,77.000000,76.000000,112.000000,128,128,128,128,38.000000,56.000000,0.800000,0.800000,0.000000,0.000000,-13.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu7",0,0:0703163541_2042d95a12_18631a4:
+//PO "mov01_obj4",0,1028.000000,-20.000000,76.000000,112.000000,128,128,128,128,38.000000,56.000000,0.800000,0.800000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu8",0,0:0703164139_25b99731c6_788d146:
+//PO "mov01_obj02",0,574.000000,133.000000,76.000000,112.000000,128,128,128,0,38.000000,56.000000,0.900000,0.900000,0.000000,0.000000,10.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu9",0,0:0703164153_25f0b565c3_6f63d59:
+//PO "mov01_obj3",0,789.000000,77.000000,76.000000,112.000000,128,128,128,128,38.000000,56.000000,0.900000,0.900000,0.000000,0.000000,-13.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//PG "Onpu10",0,0:0703164157_25ffc816fd_1933803:
+//PO "mov01_obj4",0,1028.000000,-20.000000,76.000000,112.000000,128,128,128,128,38.000000,56.000000,0.900000,0.900000,0.000000,0.000000,5.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703162454_1663041b3c_18303cd::
+//SQ
+//SB "Anime","",0,0,
+//SG "Night",0,0.000000,0.000000,0,1,0,-1,-1,0,0,0,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Night",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,1,0:0703095453_1026182438c_44e02ea:
+//SG "Rever",0,0.000000,0.000000,0,600,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Rever1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,600,0:0703153054_2bb974611f4_18410a1:
+//SO "Rever2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,2,0,0:0703154947_2cce0824e8_18417d0:
+//SG "Star",0,0.000000,0.000000,0,100,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Star1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,4,25,0:0703162134_38ec3d22cf4_183a769:
+//SO "Star2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,5,25,0:0703160600_119f1bb85_41e6268b:
+//SO "Star3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,6,25,0:0703160801_1378bd1635_1864083:
+//SO "Star4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,7,25,0:0703160929_14cf83758f_183984e:
+//SO "Star5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,4,0,0:0703162134_38ec3d22cf4_183a769:
+//SG "Guardrail",0,0.000000,0.000000,0,1,0,-1,-1,0,0,0,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Guardrail",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,3,1,0:0703152759_2b8ea56553c_183d58c:
+//SG "Boy",0,0.000000,0.000000,0,240,0,-1,-1,0,0,1,0.010000,0.010000,0.010000,0.000000,0.000000::::
+//SO "Boy1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,0,30,0:0703152113_2b2b9121c6d_18327b6:
+//SO "Boy2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,1,30,0:0703152932_2f1445d5a92_75b68bc:
+//SO "Boy3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,2,30,0:0703155918_30c856a5aaf_1841b81:
+//SO "Boy4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,3,30,0:0703154456_2ff5d9e64e0_6448ee7:
+//SO "Boy1_2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,0,30,0:0703152113_2b2b9121c6d_18327b6:
+//SO "Boy2_2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,4,30,0:0703160707_313aeca3db7_185ff4b:
+//SO "Boy1_3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,0,30,0:0703152113_2b2b9121c6d_18327b6:
+//SO "Boy4_2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,3,30,0:0703154456_2ff5d9e64e0_6448ee7:
+//SO "Boy1_8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,0,0,0:0703152113_2b2b9121c6d_18327b6:
+//SG "Cat",0,0.000000,0.000000,0,240,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Cat1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,5,30,0:0703153410_2be92564dcb_183e084:
+//SO "Cat2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,6,28,0:0703164612_3377423dc2_1d2d9b32:
+//SO "Cat3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,7,32,0:0703164613_33779151de8_1856dcd:
+//SO "Cat4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,8,30,0:0703164614_3377d0c2adb_10134b18:
+//SO "Cat5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,5,30,0:0703153410_2be92564dcb_183e084:
+//SO "Cat6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,6,30,0:0703164612_3377423dc2_1d2d9b32:
+//SO "Cat7",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,7,30,0:0703164613_33779151de8_1856dcd:
+//SO "Cat8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,8,30,0:0703164614_3377d0c2adb_10134b18:
+//SO "Cat21",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,5,0,0:0703153410_2be92564dcb_183e084:
+//SG "Bird",0,0.000000,0.000000,0,240,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Bird1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,9,30,0:0703153520_2bfa6085219_1843708:
+//SO "Bird2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,10,30,0:0703163801_32ff95720d6_75127f9:
+//SO "Bird3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,11,30,0:0703163802_32ffd012ccd_66210d4:
+//SO "Bird4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,12,30,0:0703163803_32fffdf362a_749b8e2:
+//SO "Bird5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,9,30,0:0703153520_2bfa6085219_1843708:
+//SO "Bird6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,10,30,0:0703163801_32ff95720d6_75127f9:
+//SO "Bird7",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,11,30,0:0703163802_32ffd012ccd_66210d4:
+//SO "Bird8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,12,30,0:0703163803_32fffdf362a_749b8e2:
+//SO "Bird21",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,9,0,0:0703153520_2bfa6085219_1843708:
+//SG "Dog",0,0.000000,0.000000,0,240,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Dog1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,13,32,0:0703153830_2c28d614d8f_183f43d:
+//SO "Dog2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,14,30,0:0703160454_34892c47594_65adb59:
+//SO "Dog3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,15,26,0:0703160455_34898627ec_659b9ba:
+//SO "Dog4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,16,32,0:0703160456_3489d631844_1c749a3a:
+//SO "Dog5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,13,32,0:0703153830_2c28d614d8f_183f43d:
+//SO "Dog6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,14,30,0:0703160454_34892c47594_65adb59:
+//SO "Dog7",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,15,26,0:0703160455_34898627ec_659b9ba:
+//SO "Dog8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,16,32,0:0703160456_3489d631844_1c749a3a:
+//SO "Dog21",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,13,0,0:0703153830_2c28d614d8f_183f43d:
+//SG "Turtle",0,0.000000,0.000000,0,240,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Turtle1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,17,50,0:0703153620_2c08f4f4be2_1841c15:
+//SO "Turtle2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,18,50,0:0703162545_35bacb8561c_3d013fda:
+//SO "Turtle3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,19,20,0:0703162745_35d80cc4ea8_63a7925:
+//SO "Turtle4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,17,50,0:0703153620_2c08f4f4be2_1841c15:
+//SO "Turtle5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,18,50,0:0703162545_35bacb8561c_3d013fda:
+//SO "Turtle6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,19,20,0:0703162745_35d80cc4ea8_63a7925:
+//SO "Turtle19",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,17,0,0:0703153620_2c08f4f4be2_1841c15:
+//SG "onpu1",0,0.000000,0.000000,0,300,0,-1,-1,0,0,1,0.010000,0.010000,0.010000,0.000000,0.000000::::
+//SO "Onpu2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,21,50,0:0703165555_3f514a44de_185fab0:
+//SO "Onpu3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,22,50,0:0703162822_198ff279ec_185964e:
+//SO "Onpu4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,23,50,0:0703162837_19ca6a38db_18664a6:
+//SO "Onpu5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,23,150,0:0703162837_19ca6a38db_18664a6:
+//SG "onpu2",0,0.000000,0.000000,0,300,0,-1,-1,0,0,1,0.010000,0.010000,0.010000,0.000000,0.000000::::
+//SO "Onpu5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,24,25,0:0703163347_1e872f3140_482eb43:
+//SO "Onpu6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,24,50,0:0703163347_1e872f3140_482eb43:
+//SO "Onpu7",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,25,50,0:0703163519_1fec1e3ed8_783f3f6:
+//SO "Onpu8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,26,50,0:0703163541_2042d95a12_18631a4:
+//SO "Onpu9",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,26,125,0:0703163541_2042d95a12_18631a4:
+//SG "onpu3",0,0.000000,0.000000,0,300,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Onpu8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,27,50,0:0703164139_25b99731c6_788d146:
+//SO "Onpu9",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,27,50,0:0703164139_25b99731c6_788d146:
+//SO "Onpu10",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,28,50,0:0703164153_25f0b565c3_6f63d59:
+//SO "Onpu11",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,29,50,0:0703164157_25ffc816fd_1933803:
+//SO "Onpu12",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,29,100,0:0703164157_25ffc816fd_1933803:
+//SG "onpu4",0,0.000000,0.000000,0,300,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Onpu5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,24,75,0:0703163347_1e872f3140_482eb43:
+//SO "Onpu6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,24,50,0:0703163347_1e872f3140_482eb43:
+//SO "Onpu7",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,25,50,0:0703163519_1fec1e3ed8_783f3f6:
+//SO "Onpu8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,26,50,0:0703163541_2042d95a12_18631a4:
+//SO "Onpu9",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,26,75,0:0703163541_2042d95a12_18631a4:
+//SG "onpu5",0,0.000000,0.000000,0,300,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Onpu2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,21,125,0:0703165555_3f514a44de_185fab0:
+//SO "Onpu3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,21,50,0:0703165555_3f514a44de_185fab0:
+//SO "Onpu4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,22,50,0:0703162822_198ff279ec_185964e:
+//SO "Onpu5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,23,50,0:0703162837_19ca6a38db_18664a6:
+//SO "Onpu6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,23,25,0:0703162837_19ca6a38db_18664a6:
+//SG "onpu6",0,0.000000,0.000000,0,300,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Onpu5",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,24,150,0:0703163347_1e872f3140_482eb43:
+//SO "Onpu6",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,24,50,0:0703163347_1e872f3140_482eb43:
+//SO "Onpu7",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,25,50,0:0703163519_1fec1e3ed8_783f3f6:
+//SO "Onpu8",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,26,50,0:0703163541_2042d95a12_18631a4:

+ 3106 - 0
Samples/Movipa/Movipa/Content/Layout/Anime1/Anime1_Scene.xml

@@ -0,0 +1,3106 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<XnaContent xmlns:Lib="SceneDataLibrary">
+	<Asset Type="Lib:SceneData">
+		<PatternGroupDictionary>
+			<Item>
+				<Key>AnimeBG_Night</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_bg</TextureName>
+							<Rect>0 0 1024 576</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>AnimeBG_Rever1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-256 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>AnimeBG_Rever2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>712 0 256 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 320</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>AnimeBG_Guardrail</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 312 376 120</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-13 342</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 312 376 120</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>351 342</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 312 376 120</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>715 342</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>680 144 296 168</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1 387</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>AnimeBG_Star1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>21 22</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>412 4</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>690 62</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>831 -2</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>54 -3</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>152 42</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>485 52</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>564 -3</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>662 27</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>723 46</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>816 41</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>926 29</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>947 79</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>AnimeBG_Star2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>21 22</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>412 4</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>690 62</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>831 -2</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>54 -3</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>152 42</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>485 52</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>564 -3</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>662 27</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>723 46</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>816 41</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>926 29</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>947 79</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>AnimeBG_Star3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>21 22</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>412 4</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>690 62</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>831 -2</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>54 -3</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>152 42</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>485 52</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>564 -3</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>662 27</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>723 46</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>816 41</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>926 29</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>947 79</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>AnimeBG_Star4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>21 22</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>412 4</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>690 62</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>640 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>831 -2</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>54 -3</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>152 42</Position>
+								<Color>80808080</Color>
+								<Scale>0.500000 0.500000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>485 52</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>564 -3</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>662 27</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>723 46</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>816 41</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>926 29</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>672 432 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>947 79</Position>
+								<Color>80808080</Color>
+								<Scale>0.740000 0.740000</Scale>
+								<Center>17 17</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Boy1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>208 200 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>301 470</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 20</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 304 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>363 460</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 10</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 0 56 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>347 315</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>32 20</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>216 0 72 168</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>298 328</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 16</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>72 369 66 68</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>341 222</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 12</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 200 112 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>285 190</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 130</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 0 216 200</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>174 3</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>138 192</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>136 427 61 45</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>405 280</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>12 14</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>344 0 288 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>291 214</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 96</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 280 64 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>426 224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>28 80</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 200 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>301 276</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 9</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 360 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>252 230</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 12</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Boy2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>208 200 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>301 470</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 20</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 304 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>363 454</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 10</Center>
+								<RotateZ>3.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 0 56 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>352 313</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>32 20</Center>
+								<RotateZ>2.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>216 0 72 168</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>303 329</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 16</Center>
+								<RotateZ>2.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>72 369 66 68</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>350 226</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 12</Center>
+								<RotateZ>-5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 200 112 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>288 193</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 130</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 0 216 200</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>187 2</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>138 192</Center>
+								<RotateZ>15.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>136 427 61 45</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>423 282</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>12 14</Center>
+								<RotateZ>-10.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>344 0 288 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>296 213</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 96</Center>
+								<RotateZ>4.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 280 64 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>446 222</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>28 80</Center>
+								<RotateZ>3.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 200 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>307 280</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 9</Center>
+								<RotateZ>30.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 360 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>267 229</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 12</Center>
+								<RotateZ>15.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Boy3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>208 200 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>301 470</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 20</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 304 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>363 460</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 10</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 0 56 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>347 315</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>32 20</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>216 0 72 168</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>298 328</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 16</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>72 369 66 68</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>341 222</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 12</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 200 112 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>285 190</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 130</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 0 216 200</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>174 3</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>138 192</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>136 427 61 45</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>405 280</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>12 14</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>344 0 288 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>291 214</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 96</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 280 64 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>426 224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>28 80</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 200 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>306 271</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 9</Center>
+								<RotateZ>-15.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 360 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>252 230</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 12</Center>
+								<RotateZ>-10.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Boy4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>208 200 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>301 465</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 20</Center>
+								<RotateZ>3.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 304 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>363 460</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 10</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 0 56 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>343 315</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>32 20</Center>
+								<RotateZ>-2.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>216 0 72 168</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>294 325</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 16</Center>
+								<RotateZ>-2.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>72 369 66 68</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>335 224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 12</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 200 112 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>285 190</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 130</Center>
+								<RotateZ>-5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 0 216 200</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>164 6</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>138 192</Center>
+								<RotateZ>-10.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>136 427 61 45</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>379 271</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>12 14</Center>
+								<RotateZ>-10.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>344 0 288 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>283 214</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 96</Center>
+								<RotateZ>-15.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 280 64 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>398 209</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>28 80</Center>
+								<RotateZ>-5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 200 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>289 285</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 9</Center>
+								<RotateZ>30.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 360 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>249 235</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 12</Center>
+								<RotateZ>15.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Boy2_2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>208 200 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>301 470</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 20</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 304 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>363 454</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 10</Center>
+								<RotateZ>3.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 0 56 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>352 313</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>32 20</Center>
+								<RotateZ>2.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>216 0 72 168</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>303 329</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 16</Center>
+								<RotateZ>2.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>72 369 66 68</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>350 226</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 12</Center>
+								<RotateZ>-5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 200 112 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>288 193</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 130</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 0 216 200</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>187 2</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>138 192</Center>
+								<RotateZ>20.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>136 427 61 45</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>425 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>12 14</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>344 0 288 160</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>296 215</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>80 96</Center>
+								<RotateZ>10.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 280 64 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>446 235</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>28 80</Center>
+								<RotateZ>7.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>112 200 80 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>307 280</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 9</Center>
+								<RotateZ>30.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 360 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>267 229</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 12</Center>
+								<RotateZ>15.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Cat1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>424 312 72 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>590 434</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 92</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>440 160 96 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>515 415</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>280 312 144 120</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>477 326</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>74 104</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Cat2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>424 312 72 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>590 434</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 92</Center>
+								<RotateZ>-4.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>440 160 96 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>515 415</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>280 312 144 120</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>476 326</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>74 104</Center>
+								<RotateZ>6.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Cat3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>424 312 72 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>590 434</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 92</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>440 160 96 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>515 415</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>280 312 144 120</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>477 326</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>74 104</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Cat4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>424 312 72 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>590 434</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>14 92</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>440 160 96 144</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>515 415</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>280 312 144 120</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>477 326</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>74 104</Center>
+								<RotateZ>-4.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Bird1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 456 72 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 546</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 384 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 489</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 64</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Bird2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 456 72 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 546</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 384 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 489</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 64</Center>
+								<RotateZ>-3.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Bird3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 456 72 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 546</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 384 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 489</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 64</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Bird4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 456 72 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 546</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>200 384 72 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>607 489</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>40 64</Center>
+								<RotateZ>3.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Dog1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>632 0 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>909 410</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 86</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>496 304 144 192</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>795 339</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>536 160 144 136</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>767 270</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>72 110</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Dog2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>632 0 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>909 410</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 86</Center>
+								<RotateZ>8.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>496 304 144 192</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>795 339</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>536 160 144 136</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>767 270</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>72 110</Center>
+								<RotateZ>-5.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Dog3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>632 0 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>909 410</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 86</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>496 304 144 192</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>795 339</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>536 160 144 136</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>767 270</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>72 110</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Dog4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>632 0 80 104</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>909 410</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>24 86</Center>
+								<RotateZ>10.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>496 304 144 192</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>795 339</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>536 160 144 136</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>767 270</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>72 110</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Turtle1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 248 64 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>676 499</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>46 24</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>360 248 72 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>748 499</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 24</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 160 152 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>703 445</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>60 80</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 432 64 56</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>657 464</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>58 30</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Turtle2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 248 64 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>676 481</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>46 24</Center>
+								<RotateZ>10.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>360 248 72 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>748 487</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 24</Center>
+								<RotateZ>-10.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 160 152 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>703 431</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>60 80</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 432 64 56</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>658 446</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>58 30</Center>
+								<RotateZ>10.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Turtle3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 248 64 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>676 499</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>46 24</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>360 248 72 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>748 499</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>50 24</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>288 160 152 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>703 452</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>60 80</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj01</TextureName>
+							<Rect>0 432 64 56</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>657 471</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>58 30</Center>
+								<RotateZ>-3.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>574 133</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>10.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>789 77</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>-13.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1028 -20</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu5</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>574 133</Position>
+								<Color>00808080</Color>
+								<Scale>0.800000 0.800000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>10.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu6</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>789 77</Position>
+								<Color>80808080</Color>
+								<Scale>0.800000 0.800000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>-13.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu7</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1028 -20</Position>
+								<Color>80808080</Color>
+								<Scale>0.800000 0.800000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu8</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>574 133</Position>
+								<Color>00808080</Color>
+								<Scale>0.900000 0.900000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>10.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu9</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>789 77</Position>
+								<Color>80808080</Color>
+								<Scale>0.900000 0.900000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>-13.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_Onpu10</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime1/bmp/mov01_obj02</TextureName>
+							<Rect>0 0 76 112</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1028 -20</Position>
+								<Color>80808080</Color>
+								<Scale>0.900000 0.900000</Scale>
+								<Center>38 56</Center>
+								<RotateZ>5.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+		</PatternGroupDictionary>
+		<SequenceBankDictionary>
+			<Item>
+				<Key>Anime</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>0</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>AnimeBG_Night</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>600</Frame>
+									<PatternGroupName>AnimeBG_Rever1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>AnimeBG_Rever2</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>25</Frame>
+									<PatternGroupName>AnimeBG_Star1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>25</Frame>
+									<PatternGroupName>AnimeBG_Star2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>25</Frame>
+									<PatternGroupName>AnimeBG_Star3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>25</Frame>
+									<PatternGroupName>AnimeBG_Star4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>AnimeBG_Star1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>0</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>AnimeBG_Guardrail</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy2_2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Boy4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_Boy1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Cat1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>28</Frame>
+									<PatternGroupName>Object_Cat2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>32</Frame>
+									<PatternGroupName>Object_Cat3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Cat4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Cat1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Cat2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Cat3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Cat4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_Cat1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Bird4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_Bird1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>32</Frame>
+									<PatternGroupName>Object_Dog1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Dog2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>26</Frame>
+									<PatternGroupName>Object_Dog3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>32</Frame>
+									<PatternGroupName>Object_Dog4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>32</Frame>
+									<PatternGroupName>Object_Dog1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>Object_Dog2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>26</Frame>
+									<PatternGroupName>Object_Dog3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>32</Frame>
+									<PatternGroupName>Object_Dog4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_Dog1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Turtle1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Turtle2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>20</Frame>
+									<PatternGroupName>Object_Turtle3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Turtle1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Turtle2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>20</Frame>
+									<PatternGroupName>Object_Turtle3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_Turtle1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_Onpu4</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>25</Frame>
+									<PatternGroupName>Object_Onpu5</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu5</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu6</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu7</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>125</Frame>
+									<PatternGroupName>Object_Onpu7</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu8</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu8</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu9</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu10</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>100</Frame>
+									<PatternGroupName>Object_Onpu10</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>75</Frame>
+									<PatternGroupName>Object_Onpu5</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu5</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu6</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu7</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>75</Frame>
+									<PatternGroupName>Object_Onpu7</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>125</Frame>
+									<PatternGroupName>Object_Onpu2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu4</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>25</Frame>
+									<PatternGroupName>Object_Onpu4</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_Onpu5</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu5</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu6</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>50</Frame>
+									<PatternGroupName>Object_Onpu7</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+		</SequenceBankDictionary>
+	</Asset>
+</XnaContent>

+ 13 - 0
Samples/Movipa/Movipa/Content/Layout/Anime1/Info.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<XnaContent>
+	<Asset Type="MovipaLibrary.LayoutInfo">
+		<!--AnimationInfo-->
+		<Category>Layout</Category>
+		<Name>Guitar</Name>
+		<Size>1024 576</Size>
+		
+		<!--LayoutInfo-->
+		<SceneDataAsset>Layout/Anime1/Anime1_Scene</SceneDataAsset>
+		<Sequence>Anime</Sequence>
+	</Asset>
+</XnaContent>

BIN
Samples/Movipa/Movipa/Content/Layout/Anime1/Thumbnail.png


BIN
Samples/Movipa/Movipa/Content/Layout/Anime1/bmp/mov01_bg.bmp


BIN
Samples/Movipa/Movipa/Content/Layout/Anime1/bmp/mov01_obj01.bmp


BIN
Samples/Movipa/Movipa/Content/Layout/Anime1/bmp/mov01_obj02.bmp


+ 38 - 0
Samples/Movipa/Movipa/Content/Layout/Anime2/Anime2.l4t

@@ -0,0 +1,38 @@
+//LT4_PROJECT 1000 
+//T0:
+//T1:
+//T2:
+//T3:
+//T4:
+//T5:
+//T6:
+//T7:
+//T8:
+//T9:
+//T10:
+//T11:
+//T12:
+//T13:
+//T14:
+//T15:
+//T16:
+//T17:
+//T18:
+//T19:
+//T20:
+//T21:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:
+//T22:
+//T23:
+//T24:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:
+//T25:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:0,:
+Anime2:1,0,0,16384,6720,256,1024,576,32,32,32,32,32,16,32,16,0,0,
+
+//ST "Anime2",0,0,1,0,707175118,
+.\Anime2.stg
+
+//PLUGIN_NAME
+XNASceneDataFormat
+PatImgExportDataFormat
+//VSS_DATA
+
+$/

+ 167 - 0
Samples/Movipa/Movipa/Content/Layout/Anime2/Anime2.stg

@@ -0,0 +1,167 @@
+707175118
+//IL
+//IG "ImgGrp",0,0,32,1024,1024,0,0,1,0,0,//1:0703164154_1a678091b30_11cf704//2:
+//IO ".\bmp\mov02_obj1.bmp","mov02_obj1",0,0,32,0,0,448,480,0,32,0,0,0,0,0,0,0:0703164202_1a6974913d_1831a19://1:mov02_obj1.bmp
+//IO ".\bmp\mov02_obj2.bmp","mov02_obj2",0,7680,32,0,480,128,128,0,32,0,0,0,0,0,0,0:0703164202_1a6974913d_18322a1://1:mov02_obj2.bmp
+//PT
+//PB "Object","",0,0,
+//PG "scroll1",0,0:0703164231_1a709da775d_185158c:
+//PO "mov02_obj2",0,0.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj3",0,128.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj4",0,256.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj5",0,384.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj6",0,512.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj7",0,640.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj8",0,768.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj9",0,896.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj10",0,0.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj11",0,128.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj12",0,256.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj13",0,384.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj14",0,512.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj15",0,640.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj16",0,768.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj17",0,896.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj18",0,0.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj19",0,128.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj20",0,256.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj21",0,384.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj22",0,512.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj23",0,640.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj24",0,768.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj25",0,896.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj26",0,0.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj27",0,128.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj28",0,256.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj29",0,384.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj30",0,512.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj31",0,640.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj32",0,768.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj33",0,896.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj34",0,0.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj35",0,128.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj36",0,256.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj37",0,384.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj38",0,512.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj39",0,640.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj40",0,768.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj41",0,896.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj42",0,0.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj43",0,128.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj44",0,256.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj45",0,384.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj46",0,512.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj47",0,640.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj48",0,768.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj49",0,896.000000,672.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj50",0,0.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj51",0,128.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj52",0,256.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj53",0,384.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj54",0,512.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj55",0,640.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj56",0,768.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj57",0,896.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj58",0,896.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PG "scroll2",0,0:0703164650_1aafc595b38_1845ca3:
+//PO "mov02_obj2",0,0.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj3",0,128.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj4",0,256.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj5",0,384.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj6",0,512.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj7",0,640.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj8",0,768.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj9",0,896.000000,-96.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj10",0,0.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj11",0,128.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj12",0,256.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj13",0,384.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj14",0,512.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj15",0,640.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj16",0,768.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj17",0,896.000000,32.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj18",0,0.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj19",0,128.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj20",0,256.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj21",0,384.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj22",0,512.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj23",0,640.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj24",0,768.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj25",0,896.000000,160.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj26",0,0.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj27",0,128.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj28",0,256.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj29",0,384.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj30",0,512.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj31",0,640.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj32",0,768.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj33",0,896.000000,288.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj34",0,0.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj35",0,128.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj36",0,256.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj37",0,384.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj38",0,512.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj39",0,640.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj40",0,768.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj41",0,896.000000,416.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj42",0,0.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj43",0,128.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj44",0,256.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj45",0,384.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj46",0,512.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj47",0,640.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj48",0,768.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj49",0,896.000000,544.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj50",0,0.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj51",0,128.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj52",0,256.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj53",0,384.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj54",0,512.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj55",0,640.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj56",0,768.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj57",0,896.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PO "mov02_obj58",0,896.000000,-224.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0703164202_1a6974913d_18322a1::
+//PG "obj1_1",0,0:0703164243_1a7380ee3e_184eb9c:
+//PO "mov02_obj1",0,288.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj1_2",0,0:0703164735_1ababe31874_185afad:
+//PO "mov02_obj1",0,288.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,120.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj1_3",0,0:0703164805_1ac241020e6_1845b26:
+//PO "mov02_obj1",0,288.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,240.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj1_4",0,0:0703161145_1c1cdb85eae_1868fd9:
+//PO "mov02_obj1",0,288.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj2_1",0,0:0703164244_1a73b4a18ce_184b967:
+//PO "mov02_obj1",0,-224.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj2_2",0,0:0703165145_1af7f12160e_186f85c:
+//PO "mov02_obj1",0,-224.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,-120.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj2_3",0,0:0703165146_1af831a2338_184c3be:
+//PO "mov02_obj1",0,-224.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,-240.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj2_4",0,0:0703161633_1c632d738da_18470a3:
+//PO "mov02_obj1",0,-224.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,-360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj3_1",0,0:0703164245_1a73eb523f7_183f407:
+//PO "mov02_obj1",0,800.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj3_2",0,0:0703165238_1b04d303726_186e9f3:
+//PO "mov02_obj1",0,800.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,-120.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj3_3",0,0:0703165240_1b0551050dd_1849bc0:
+//PO "mov02_obj1",0,800.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,-240.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//PG "obj3_4",0,0:0703161656_1c68b765a40_1840e28:
+//PO "mov02_obj1",0,800.000000,48.000000,448.000000,480.000000,128,128,128,128,224.000000,254.000000,1.000000,1.000000,0.000000,0.000000,-360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0703164202_1a6974913d_1831a19::
+//SQ
+//SB "Anime","",0,0,
+//SG "scroll",0,0.000000,0.000000,0,450,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "scroll1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,450,0:0703164231_1a709da775d_185158c:
+//SO "scroll2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,0,0:0703164650_1aafc595b38_1845ca3:
+//SG "obj_1",0,0.000000,0.000000,0,900,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "obj1_1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,2,300,0:0703164243_1a7380ee3e_184eb9c:
+//SO "obj1_2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,3,300,0:0703164735_1ababe31874_185afad:
+//SO "obj1_3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,4,300,0:0703164805_1ac241020e6_1845b26:
+//SO "obj1_4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,5,0,0:0703161145_1c1cdb85eae_1868fd9:
+//SG "obj_2",0,0.000000,0.000000,0,450,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "obj2_1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,6,150,0:0703164244_1a73b4a18ce_184b967:
+//SO "obj2_2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,7,150,0:0703165145_1af7f12160e_186f85c:
+//SO "obj2_3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,8,150,0:0703165146_1af831a2338_184c3be:
+//SO "obj2_4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,9,0,0:0703161633_1c632d738da_18470a3:
+//SG "obj_3",0,0.000000,0.000000,0,450,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "obj3_1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,10,150,0:0703164245_1a73eb523f7_183f407:
+//SO "obj3_2",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,11,150,0:0703165238_1b04d303726_186e9f3:
+//SO "obj3_3",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,12,150,0:0703165240_1b0551050dd_1849bc0:
+//SO "obj3_4",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,13,0,0:0703161656_1c68b765a40_1840e28:

+ 1849 - 0
Samples/Movipa/Movipa/Content/Layout/Anime2/Anime2_Scene.xml

@@ -0,0 +1,1849 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<XnaContent xmlns:Lib="SceneDataLibrary">
+	<Asset Type="Lib:SceneData">
+		<PatternGroupDictionary>
+			<Item>
+				<Key>Object_scroll1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 672</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_scroll2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 -96</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 32</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 160</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 544</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj2</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 -224</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj1_1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>288 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj1_2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>288 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>120.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj1_3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>288 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>240.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj1_4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>288 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj2_1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-224 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj2_2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-224 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>-120.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj2_3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-224 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>-240.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj2_4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-224 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>-360.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj3_1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>800 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj3_2</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>800 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>-120.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj3_3</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>800 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>-240.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Object_obj3_4</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Anime2/bmp/mov02_obj1</TextureName>
+							<Rect>0 0 448 480</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>800 48</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>224 254</Center>
+								<RotateZ>-360.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+		</PatternGroupDictionary>
+		<SequenceBankDictionary>
+			<Item>
+				<Key>Anime</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>450</Frame>
+									<PatternGroupName>Object_scroll1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_scroll2</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>300</Frame>
+									<PatternGroupName>Object_obj1_1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>300</Frame>
+									<PatternGroupName>Object_obj1_2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>300</Frame>
+									<PatternGroupName>Object_obj1_3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_obj1_4</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_obj2_1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_obj2_2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_obj2_3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_obj2_4</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_obj3_1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_obj3_2</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>150</Frame>
+									<PatternGroupName>Object_obj3_3</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>Object_obj3_4</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+		</SequenceBankDictionary>
+	</Asset>
+</XnaContent>

+ 13 - 0
Samples/Movipa/Movipa/Content/Layout/Anime2/Info.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<XnaContent>
+	<Asset Type="MovipaLibrary.LayoutInfo">
+		<!--AnimationInfo-->
+		<Category>Layout</Category>
+		<Name>Gonzales Saburouta</Name>
+		<Size>1024 576</Size>
+		
+		<!--LayoutInfo-->
+		<SceneDataAsset>Layout/Anime2/Anime2_Scene</SceneDataAsset>
+		<Sequence>Anime</Sequence>
+	</Asset>
+</XnaContent>

BIN
Samples/Movipa/Movipa/Content/Layout/Anime2/Thumbnail.png


BIN
Samples/Movipa/Movipa/Content/Layout/Anime2/bmp/mov02_obj1.bmp


BIN
Samples/Movipa/Movipa/Content/Layout/Anime2/bmp/mov02_obj2.bmp


+ 44 - 0
Samples/Movipa/Movipa/Content/Layout/Fade/Fade.l4t

@@ -0,0 +1,44 @@
+//LT4_PROJECT 1000 
+//T0:
+//T1:
+//T2:
+//T3:
+//T4:
+//T5:
+//T6:
+//T7:
+//T8:
+//T9:
+//T10:
+//T11:
+//T12:
+//T13:
+//T14:
+//T15:
+//T16:
+//T17:
+//T18:
+//T19:
+//T20:
+//T21:
+//T22:
+//T23:
+//T24:
+//T25:
+Fade:3,0,0,16384,6720,256,1280,720,32,32,32,32,32,16,32,16,0,0,
+
+//ST "Normal",0,0,1,0,707185321,
+.\Normal.stg
+
+//ST "RotateBox",0,0,1,0,707181807,
+.\RotateBox.stg
+
+//ST "Gonzales",0,0,1,0,710222604,
+.\Gonzales.stg
+
+//PLUGIN_NAME
+XNASceneDataFormat
+PatImgExportDataFormat
+//VSS_DATA
+
+$/

+ 21 - 0
Samples/Movipa/Movipa/Content/Layout/Fade/Gonzales.stg

@@ -0,0 +1,21 @@
+710222604
+//IL
+//IG "ImgGrp",0,0,32,5,5,0,-1,1,0,0,//1:0707104211_23e9b946fb_18cffac//2:
+//IO ".\bmp\Gonzales.bmp","Gonzales",0,0,32,0,0,512,512,0,32,0,0,0,0,0,0,0:0707105329_2e43b014a6_18d2a5c:
+//PT
+//PB "PatBank","",0,0,
+//PG "PatGrp",0,0:0707105352_2e9c4f360c_18d45bf:
+//PO "Fade_001",0,384.000000,104.000000,512.000000,512.000000,128,128,128,0,256.000000,256.000000,0.000000,0.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707105329_2e43b014a6_18d2a5c::
+//PO "BlackScreen",0,0.000000,0.000000,32.000000,32.000000,128,128,128,0,0.000000,0.000000,40.000000,22.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,208,392,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707105329_2e43b014a6_18d2a5c::
+//PG "PatGrp1",0,0:0707105356_2eae807174_18d4765:
+//PO "Fade_001",0,384.000000,104.000000,512.000000,512.000000,128,128,128,128,256.000000,256.000000,4.020000,4.020000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707105329_2e43b014a6_18d2a5c::
+//PO "BlackScreen",0,0.000000,0.000000,32.000000,32.000000,128,128,128,128,0.000000,0.000000,40.000000,22.500000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,208,392,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707105329_2e43b014a6_18d2a5c::
+//SQ
+//SB "FadeIn","",0,0,
+//SG "SeqGrp",0,0.000000,0.000000,0,60,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PatGrp1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,60,0:0707105356_2eae807174_18d4765:
+//SO "PatGrp",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,0,0:0707105352_2e9c4f360c_18d45bf:
+//SB "FadeOut","",0,0,
+//SG "SeqGrp",0,0.000000,0.000000,0,60,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PatGrp",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,60,0:0707105352_2e9c4f360c_18d45bf:
+//SO "PatGrp1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,0,0:0707105356_2eae807174_18d4765:

+ 127 - 0
Samples/Movipa/Movipa/Content/Layout/Fade/Gonzales_Scene.xml

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<XnaContent xmlns:Lib="SceneDataLibrary">
+	<Asset Type="Lib:SceneData">
+		<PatternGroupDictionary>
+			<Item>
+				<Key>PatBank_PatGrp</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Gonzales</TextureName>
+							<Rect>0 0 512 512</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 104</Position>
+								<Color>00808080</Color>
+								<Scale>0.000000 0.000000</Scale>
+								<Center>256 256</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Gonzales</TextureName>
+							<Rect>208 392 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>00808080</Color>
+								<Scale>40.000000 22.500000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>PatBank_PatGrp1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Gonzales</TextureName>
+							<Rect>0 0 512 512</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 104</Position>
+								<Color>80808080</Color>
+								<Scale>4.020000 4.020000</Scale>
+								<Center>256 256</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Gonzales</TextureName>
+							<Rect>208 392 32 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>80808080</Color>
+								<Scale>40.000000 22.500000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+		</PatternGroupDictionary>
+		<SequenceBankDictionary>
+			<Item>
+				<Key>FadeIn</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>60</Frame>
+									<PatternGroupName>PatBank_PatGrp1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>PatBank_PatGrp</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>FadeOut</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>60</Frame>
+									<PatternGroupName>PatBank_PatGrp</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>PatBank_PatGrp1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+		</SequenceBankDictionary>
+	</Asset>
+</XnaContent>

+ 19 - 0
Samples/Movipa/Movipa/Content/Layout/Fade/Normal.stg

@@ -0,0 +1,19 @@
+707185321
+//IL
+//IG "ImgGrp",0,0,32,1,128,0,-1,1,0,0,//1:0707171250_dbdea3e7df_18d28f2//2:
+//IO ".\bmp\Box.bmp","Box",0,0,32,0,0,128,128,0,32,0,0,0,0,0,0,0:0707171333_dbe94d634f5_18d18ad://1:Box.bmp
+//PT
+//PB "PatBank","",0,0,
+//PG "PatGrp",0,0:0707172335_dc7c0db289a_18d09b2:
+//PO "Box",0,0.000000,0.000000,128.000000,128.000000,128,128,128,128,0.000000,0.000000,10.000000,5.625000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707171333_dbe94d634f5_18d18ad::
+//PG "PatGrp1",0,0:0707185212_2cb0106e94_18e6ba7:
+//PO "Box",0,0.000000,0.000000,128.000000,128.000000,128,128,128,0,0.000000,0.000000,10.000000,5.625000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707171333_dbe94d634f5_18d18ad::
+//SQ
+//SB "FadeIn","",0,0,
+//SG "SeqGrp",0,0.000000,0.000000,0,60,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PatGrp",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,60,0:0707172335_dc7c0db289a_18d09b2:
+//SO "PatGrp1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,0,0:0707185212_2cb0106e94_18e6ba7:
+//SB "FadeOut","",0,0,
+//SG "SeqGrp",0,0.000000,0.000000,0,2,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PatGrp1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,60,0:0707185212_2cb0106e94_18e6ba7:
+//SO "PatGrp",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,0,0:0707172335_dc7c0db289a_18d09b2:

+ 101 - 0
Samples/Movipa/Movipa/Content/Layout/Fade/Normal_Scene.xml

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<XnaContent xmlns:Lib="SceneDataLibrary">
+	<Asset Type="Lib:SceneData">
+		<PatternGroupDictionary>
+			<Item>
+				<Key>PatBank_PatGrp</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>80808080</Color>
+								<Scale>10.000000 5.625000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>PatBank_PatGrp1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 128</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>00808080</Color>
+								<Scale>10.000000 5.625000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+		</PatternGroupDictionary>
+		<SequenceBankDictionary>
+			<Item>
+				<Key>FadeIn</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>60</Frame>
+									<PatternGroupName>PatBank_PatGrp</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>PatBank_PatGrp1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>FadeOut</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>60</Frame>
+									<PatternGroupName>PatBank_PatGrp1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>0</Frame>
+									<PatternGroupName>PatBank_PatGrp</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+		</SequenceBankDictionary>
+	</Asset>
+</XnaContent>

+ 217 - 0
Samples/Movipa/Movipa/Content/Layout/Fade/RotateBox.stg

@@ -0,0 +1,217 @@
+707181807
+//IL
+//IG "ImgGrp",0,0,32,128,128,0,-1,1,0,0,//1:0707172749_dcba14a5179_18d47aa//2:
+//IO ".\bmp\Box.bmp","Box",0,0,32,0,0,128,128,0,32,0,0,0,0,0,0,0:0707172805_dcbe0081e5d_18f984e:
+//PT
+//PB "PatBank","",0,0,
+//PG "PatGrp",0,0:0707173030_dce16805836_1916500:
+//PO "Box",0,0.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1",0,128.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2",0,256.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1",0,384.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1",0,512.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1",0,640.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2",0,768.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2",0,896.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2",0,1024.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1",0,1152.000000,0.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_3",0,0.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_3",0,128.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_3",0,256.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_1",0,384.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_1",0,512.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_1",0,640.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_1",0,768.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_1",0,896.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_2",0,1024.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_1",0,1152.000000,72.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_4",0,0.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_4",0,128.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_4",0,256.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_2",0,384.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_2",0,512.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_2",0,640.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_2",0,768.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_2",0,896.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_3",0,1024.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_2",0,1152.000000,144.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_5",0,0.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_5",0,128.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_5",0,256.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_3",0,384.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_3",0,512.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_3",0,640.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_3",0,768.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_3",0,896.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_4",0,1024.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_3",0,1152.000000,216.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_6",0,0.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_6",0,128.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_6",0,256.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_4",0,384.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_4",0,512.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_4",0,640.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_4",0,768.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_4",0,896.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_5",0,1024.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_4",0,1152.000000,288.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_7",0,0.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_7",0,128.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_7",0,256.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_5",0,384.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_5",0,512.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_5",0,640.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_5",0,768.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_5",0,896.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_6",0,1024.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_5",0,1152.000000,360.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_8",0,0.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_8",0,128.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_8",0,256.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_6",0,384.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_6",0,512.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_6",0,640.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_6",0,768.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_6",0,896.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_7",0,1024.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_6",0,1152.000000,432.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_9",0,0.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_9",0,128.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_9",0,256.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_7",0,384.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_7",0,512.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_7",0,640.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_7",0,768.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_7",0,896.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_8",0,1024.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_7",0,1152.000000,504.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_10",0,0.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_10",0,128.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_10",0,256.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_8",0,384.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_8",0,512.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_8",0,640.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_8",0,768.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_8",0,896.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_9",0,1024.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_8",0,1152.000000,576.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_11",0,0.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_11",0,128.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_11",0,256.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_9",0,384.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_9",0,512.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_9",0,640.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_9",0,768.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_9",0,896.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_10",0,1024.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_9",0,1152.000000,648.000000,128.000000,72.000000,128,128,128,128,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PG "PatGrp1",0,0:0707173944_dd68a907321_742d4f5:
+//PO "Box",0,0.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1",0,128.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2",0,256.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1",0,384.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1",0,512.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1",0,640.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2",0,768.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2",0,896.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2",0,1024.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1",0,1152.000000,0.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_3",0,0.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_3",0,128.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_3",0,256.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_1",0,384.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_1",0,512.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_1",0,640.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_1",0,768.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_1",0,896.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_2",0,1024.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_1",0,1152.000000,72.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_4",0,0.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_4",0,128.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_4",0,256.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_2",0,384.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_2",0,512.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_2",0,640.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_2",0,768.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_2",0,896.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_3",0,1024.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_2",0,1152.000000,144.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_5",0,0.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_5",0,128.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_5",0,256.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_3",0,384.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_3",0,512.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_3",0,640.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_3",0,768.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_3",0,896.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_4",0,1024.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_3",0,1152.000000,216.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_6",0,0.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_6",0,128.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_6",0,256.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_4",0,384.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_4",0,512.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_4",0,640.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_4",0,768.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_4",0,896.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_5",0,1024.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_4",0,1152.000000,288.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_7",0,0.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_7",0,128.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_7",0,256.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_5",0,384.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_5",0,512.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_5",0,640.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_5",0,768.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_5",0,896.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_6",0,1024.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_5",0,1152.000000,360.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_8",0,0.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_8",0,128.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_8",0,256.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_6",0,384.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_6",0,512.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_6",0,640.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_6",0,768.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_6",0,896.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_7",0,1024.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_6",0,1152.000000,432.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_9",0,0.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_9",0,128.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_9",0,256.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_7",0,384.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_7",0,512.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_7",0,640.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_7",0,768.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_7",0,896.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_8",0,1024.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_7",0,1152.000000,504.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_10",0,0.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_10",0,128.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_10",0,256.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_8",0,384.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_8",0,512.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_8",0,640.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_8",0,768.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_8",0,896.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_9",0,1024.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_8",0,1152.000000,576.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_11",0,0.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_11",0,128.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_11",0,256.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_1_9",0,384.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_1_9",0,512.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_1_9",0,640.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box_2_9",0,768.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box1_2_9",0,896.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_10",0,1024.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//PO "Box2_2_1_9",0,1152.000000,648.000000,128.000000,72.000000,128,128,128,0,64.000000,32.000000,1.000000,1.000000,0.000000,0.000000,360.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707172805_dcbe0081e5d_18f984e::
+//SQ
+//SB "FadeIn","",0,0,
+//SG "SeqGrp",0,0.000000,0.000000,0,60,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PatGrp",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,60,0:0707173030_dce16805836_1916500:
+//SO "PatGrp1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,1,0:0707173944_dd68a907321_742d4f5:
+//SB "FadeOut","",0,0,
+//SG "SeqGrp",0,0.000000,0.000000,0,0,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PatGrp1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,60,0:0707173944_dd68a907321_742d4f5:
+//SO "PatGrp",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,1,0:0707173030_dce16805836_1916500:

+ 2675 - 0
Samples/Movipa/Movipa/Content/Layout/Fade/RotateBox_Scene.xml

@@ -0,0 +1,2675 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<XnaContent xmlns:Lib="SceneDataLibrary">
+	<Asset Type="Lib:SceneData">
+		<PatternGroupDictionary>
+			<Item>
+				<Key>PatBank_PatGrp</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 0</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 72</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 144</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 216</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 288</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 360</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 432</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 504</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 576</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 648</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>PatBank_PatGrp1</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 0</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 72</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 144</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 216</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 288</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 360</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 432</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 504</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 576</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>0 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>256 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>384 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>512 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>768 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>896 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1024 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/Fade/bmp/Box</TextureName>
+							<Rect>0 0 128 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 648</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>64 32</Center>
+								<RotateZ>360.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+		</PatternGroupDictionary>
+		<SequenceBankDictionary>
+			<Item>
+				<Key>FadeIn</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>60</Frame>
+									<PatternGroupName>PatBank_PatGrp</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>PatBank_PatGrp1</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>FadeOut</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>60</Frame>
+									<PatternGroupName>PatBank_PatGrp1</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>PatBank_PatGrp</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+		</SequenceBankDictionary>
+	</Asset>
+</XnaContent>

BIN
Samples/Movipa/Movipa/Content/Layout/Fade/bmp/Box.bmp


BIN
Samples/Movipa/Movipa/Content/Layout/Fade/bmp/Gonzales.bmp


BIN
Samples/Movipa/Movipa/Content/Layout/GameOver/bmp/gameover.bmp


+ 38 - 0
Samples/Movipa/Movipa/Content/Layout/GameOver/gameover.l4t

@@ -0,0 +1,38 @@
+//LT4_PROJECT 1000 
+//T0:
+//T1:
+//T2:
+//T3:
+//T4:
+//T5:
+//T6:
+//T7:
+//T8:
+//T9:
+//T10:
+//T11:
+//T12:
+//T13:
+//T14:
+//T15:
+//T16:
+//T17:
+//T18:
+//T19:
+//T20:
+//T21:
+//T22:
+//T23:
+//T24:
+//T25:
+gameover:1,0,0,16384,6720,256,1280,720,32,32,32,32,32,16,32,16,-1,0,
+
+//ST "gameover",0,0,1,0,708315234,
+.\gameover.stg
+
+//PLUGIN_NAME
+XNASceneDataFormat
+PatImgExportDataFormat
+//VSS_DATA
+
+$/

+ 26 - 0
Samples/Movipa/Movipa/Content/Layout/GameOver/gameover.stg

@@ -0,0 +1,26 @@
+708315234
+//IL
+//IG "32bit",0,0,32,1024,1024,0,-1,1,0,0,//1:0707113538_fba2f23d51_118be3c//2:
+//IO ".\bmp\gameover.bmp","gameover",0,0,32,0,0,512,256,0,32,0,0,0,0,0,0,0:0707253712_8da8961907_635ea69://1:gameover.bmp
+//PT
+//PB "GameOver","",0,0,
+//PG "GameOver",0,0:0707203250_1a06039357f_440388c:
+//PO "game",0,297.000000,316.000000,344.000000,88.000000,128,128,128,128,344.000000,44.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,8,8,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707253712_8da8961907_635ea69::
+//PO "over",0,641.000000,316.000000,344.000000,88.000000,128,128,128,128,0.000000,44.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,8,96,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707253712_8da8961907_635ea69::
+//PG "GameOverStart",0,0:0707244014_23be640155b_5d468a7:
+//PO "game",0,297.000000,316.000000,344.000000,88.000000,128,128,128,0,344.000000,44.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,8,8,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707253712_8da8961907_635ea69::
+//PO "over",0,641.000000,316.000000,344.000000,88.000000,128,128,128,0,0.000000,44.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,8,96,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707253712_8da8961907_635ea69::
+//PG "GameOverFadeOut",0,0:0707244917_2442f4823c1_5c4bc8f:
+//PO "game",0,297.000000,316.000000,344.000000,88.000000,128,128,128,0,344.000000,44.000000,3.000000,3.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,8,8,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707253712_8da8961907_635ea69::
+//PO "over",0,641.000000,316.000000,344.000000,88.000000,128,128,128,0,0.000000,44.000000,3.000000,3.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,8,96,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707253712_8da8961907_635ea69::
+//PB "Pos","",0,0,
+//PG "PosButton",0,0:0707200323_1856c2330b8_5e40cee:
+//PO "PosXDelete",0,1002.000000,550.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PO "PosBCancel",0,980.000000,596.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PO "PosAOk",0,958.000000,642.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//SQ
+//SB "GameOver","",0,0,
+//SG "GameOver",0,0.000000,0.000000,0,1840,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "GameOverStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,1,10,0:0707244014_23be640155b_5d468a7:
+//SO "GameOver",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,30,0:0707203250_1a06039357f_440388c:
+//SO "GameOver1",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,0,1800,0:0707203250_1a06039357f_440388c:

+ 184 - 0
Samples/Movipa/Movipa/Content/Layout/GameOver/gameover_Scene.xml

@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<XnaContent xmlns:Lib="SceneDataLibrary">
+	<Asset Type="Lib:SceneData">
+		<PatternGroupDictionary>
+			<Item>
+				<Key>GameOver_GameOver</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/gameover/bmp/gameover</TextureName>
+							<Rect>8 8 344 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>297 316</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>344 44</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/gameover/bmp/gameover</TextureName>
+							<Rect>8 96 344 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>641 316</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 44</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>GameOver_GameOverStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/gameover/bmp/gameover</TextureName>
+							<Rect>8 8 344 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>297 316</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>344 44</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/gameover/bmp/gameover</TextureName>
+							<Rect>8 96 344 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>641 316</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 44</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>GameOver_GameOverFadeOut</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/gameover/bmp/gameover</TextureName>
+							<Rect>8 8 344 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>297 316</Position>
+								<Color>00808080</Color>
+								<Scale>3.000000 3.000000</Scale>
+								<Center>344 44</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/gameover/bmp/gameover</TextureName>
+							<Rect>8 96 344 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>641 316</Position>
+								<Color>00808080</Color>
+								<Scale>3.000000 3.000000</Scale>
+								<Center>0 44</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosButton</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1002 550</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>980 596</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>958 642</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+		</PatternGroupDictionary>
+		<SequenceBankDictionary>
+			<Item>
+				<Key>GameOver</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>GameOver_GameOverStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>30</Frame>
+									<PatternGroupName>GameOver_GameOver</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>1800</Frame>
+									<PatternGroupName>GameOver_GameOver</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+		</SequenceBankDictionary>
+	</Asset>
+</XnaContent>

BIN
Samples/Movipa/Movipa/Content/Layout/Result/bmp/result.bmp


+ 38 - 0
Samples/Movipa/Movipa/Content/Layout/Result/result.l4t

@@ -0,0 +1,38 @@
+//LT4_PROJECT 1000 
+//T0:
+//T1:
+//T2:
+//T3:
+//T4:
+//T5:
+//T6:
+//T7:
+//T8:
+//T9:
+//T10:
+//T11:
+//T12:
+//T13:
+//T14:
+//T15:
+//T16:
+//T17:
+//T18:
+//T19:
+//T20:
+//T21:
+//T22:
+//T23:
+//T24:
+//T25:
+result:1,0,0,16384,6720,256,1280,720,32,32,32,32,32,16,32,16,-1,0,
+
+//ST "result",0,0,1,0,707313006,
+.\result.stg
+
+//PLUGIN_NAME
+XNASceneDataFormat
+PatImgExportDataFormat
+//VSS_DATA
+
+$/

+ 157 - 0
Samples/Movipa/Movipa/Content/Layout/Result/result.stg

@@ -0,0 +1,157 @@
+707313006
+//IL
+//IG "32bit",0,0,32,1024,1024,0,-1,1,0,0,//1:0707113538_fba2f23d51_118be3c//2:
+//IO ".\bmp\result.bmp","result",0,0,32,0,0,512,512,0,32,0,0,0,0,0,0,0:0707250041_a329f55341_451ba62://1:result.bmp
+//PT
+//PB "Result","",0,0,
+//PG "ResultFreeParts",0,0:0707203712_16d71a66300_44713c3:
+//PO "Result",0,416.000000,152.000000,448.000000,88.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "ClearTime",0,264.000000,304.000000,432.000000,72.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,88,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "MoveCount",0,264.000000,392.000000,472.000000,72.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,176,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "ResultNormalParts",0,0:0707203722_16d98d562f5_44710b0:
+//PO "Result",0,416.000000,152.000000,448.000000,88.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "Single",0,320.000000,272.000000,256.000000,80.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,248,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "Double",0,320.000000,352.000000,280.000000,64.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,328,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "Hint",0,320.000000,416.000000,176.000000,80.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,392,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "Total",0,320.000000,528.000000,200.000000,64.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,248,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "LineL1",0,-103.000000,491.000000,232.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,448,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "LineL2",0,128.000000,491.000000,512.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,480,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "LineR1",0,1152.000000,491.000000,232.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,448,0,1,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PO "LineR2",0,640.000000,491.000000,512.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,480,0,1,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PG "Result",0,0:0707245206_20fd6a532e9_4509f0f:
+//PO "Result",0,416.000000,152.000000,448.000000,88.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "ResultStart",0,0:0707245249_2107f1a5906_5df94f6:
+//PO "Result1",0,176.000000,152.000000,448.000000,88.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PG "ClrarTime",0,0:0707245329_21117b14b51_5df9462:
+//PO "ClearTime",0,264.000000,304.000000,432.000000,72.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,88,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "ClrarTimeStart",0,0:0707245358_21189183da4_5c4b652:
+//PO "ClearTime",0,24.000000,304.000000,432.000000,72.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,88,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "MoveCount",0,0:0707245330_2111c355a10_7681aa5:
+//PO "MoveCount",0,264.000000,392.000000,472.000000,72.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,176,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "MoveCountStart",0,0:0707245448_2124f084405_5de6dd7:
+//PO "MoveCount",0,24.000000,392.000000,472.000000,72.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,176,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PG "Single",0,0:0707245331_21122306d97_5e04db3:
+//PO "Single",0,320.000000,272.000000,256.000000,80.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,248,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "SingleStart",0,0:0707245706_21468b11fcb_77c2076:
+//PO "Single",0,80.000000,272.000000,256.000000,80.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,248,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "Double",0,0:0707245612_21394c76bc5_5c5d1ed:
+//PO "Double",0,320.000000,352.000000,280.000000,64.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,328,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "DoubleStart",0,0:0707245737_214e10d28d6_77c1f42:
+//PO "Double",0,80.000000,352.000000,280.000000,64.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,328,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "Hint",0,0:0707252353_b86785300b_81c068a:
+//PO "Hint",0,320.000000,416.000000,176.000000,80.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,392,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "HintStart",0,0:0707245742_214f77471fe_76d17a2:
+//PO "Hint",0,80.000000,416.000000,176.000000,80.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,392,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PG "Line",0,0:0707245326_2110d6029a0_5c62a30:
+//PO "LineL1",0,-103.000000,491.000000,232.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,448,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "LineL2",0,128.000000,491.000000,512.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,480,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "LineR1",0,1152.000000,491.000000,232.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,448,0,1,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PO "LineR2",0,640.000000,491.000000,512.000000,32.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,480,0,1,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PG "LineStart",0,0:0707245747_2150b0b31f7_77c1dc9:
+//PO "LineL1",0,-343.000000,491.000000,232.000000,32.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,448,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "LineL2",0,-112.000000,491.000000,512.000000,32.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,480,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PO "LineR1",0,912.000000,491.000000,232.000000,32.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,448,0,1,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PO "LineR2",0,400.000000,491.000000,512.000000,32.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,0,480,0,1,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PG "Total",0,0:0707245331_2111fbf659e_786c810:
+//PO "Total",0,320.000000,528.000000,200.000000,64.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,248,0,0,0,1,0,0,0,0::0707250041_a329f55341_451ba62::
+//PG "TotalStart",0,0:0707245752_2151b3866ca_77c1c40:
+//PO "Total",0,80.000000,528.000000,200.000000,64.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,0,6,0,0.000000:,280,248,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:0707250041_a329f55341_451ba62::
+//PB "Pos","",0,0,
+//PG "PosButton",0,0:0707200323_1856c2330b8_5e40cee:
+//PO "PosXDelete",0,1002.000000,550.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PO "PosBCancel",0,980.000000,596.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PO "PosAOk",0,958.000000,642.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosClearTime",0,0:0707203452_2101c3a1623_5d7e927:
+//PO "PosClearTime",0,975.000000,303.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosClearTimeFade",0,0:0707311437_1ccbb82f14_67117dc:
+//PO "PosClearTime",0,735.000000,303.000000,16.000000,16.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosMoveCount",0,0:0707311119_1c9b845388a_44e2a28:
+//PO "PosMoveCount",0,975.000000,392.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosMoveCountFade",0,0:0707311454_1ccff326c1e_44e2808:
+//PO "PosMoveCount",0,735.000000,392.000000,16.000000,16.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosSingle",0,0:0707203804_21309402422_5d5ede6:
+//PO "PosSingle",0,917.000000,272.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosSingleFade",0,0:0707311459_1cd122e2a1d_44e29b2:
+//PO "PosSingle",0,677.000000,272.000000,16.000000,16.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosDouble",0,0:0707311143_1ca173d6eab_44e28dd:
+//PO "PosDouble",0,917.000000,347.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosDoubleFade",0,0:0707311503_1cd2400644f_44e270e:
+//PO "PosDouble",0,677.000000,347.000000,16.000000,16.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosHint",0,0:0707311146_1ca20c3dc5_44e274d:
+//PO "PosHint",0,917.000000,422.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosHintFade",0,0:0707311507_1cd33cf17ee_44e2582:
+//PO "PosHint",0,677.000000,422.000000,16.000000,16.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosTotal",0,0:0707311115_1c9a9ed9b3_44e2bb4:
+//PO "PosTotal",0,917.000000,526.000000,16.000000,16.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//PG "PosTotalFade",0,0:0707311511_1cd405240ca_44cfe65:
+//PO "PosTotal",0,677.000000,526.000000,16.000000,16.000000,128,128,128,0,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000:,3,6,0,0.000000:,0,0,0,0,0,1,0,0,0,0:$aHC$aVC$;$;$;$;$;$;:::
+//SQ
+//SB "ResultFreeStart","",0,0,
+//SG "Result",0,0.000000,0.000000,0,31,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "ResultStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,3,10,0:0707245249_2107f1a5906_5df94f6:
+//SO "Result",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,2,21,0:0707245206_20fd6a532e9_4509f0f:
+//SG "ClearTime",0,0.000000,0.000000,10,21,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "ClrarTimeStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,5,10,0:0707245358_21189183da4_5c4b652:
+//SO "ClrarTime",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,4,11,0:0707245329_21117b14b51_5df9462:
+//SG "MoveCount",0,0.000000,0.000000,20,11,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "MoveCountStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,7,10,0:0707245448_2124f084405_5de6dd7:
+//SO "MoveCount",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,6,1,0:0707245330_2111c355a10_7681aa5:
+//SB "ResultFreeLoop","",0,0,
+//SG "Result",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Result",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,2,1,0:0707245206_20fd6a532e9_4509f0f:
+//SG "ClearTime",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "ClrarTime",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,4,1,0:0707245329_21117b14b51_5df9462:
+//SG "MoveCount",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "MoveCount",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,6,1,0:0707245330_2111c355a10_7681aa5:
+//SB "PosFreeStart","",0,0,
+//SG "PosClearTime",0,0.000000,0.000000,10,21,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PosClearTimeFade",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,2,10,0:0707311437_1ccbb82f14_67117dc:
+//SO "PosClearTime",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,1,11,0:0707203452_2101c3a1623_5d7e927:
+//SG "PosMoveCount",0,0.000000,0.000000,20,11,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PosMoveCountFade",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,4,10,0:0707311454_1ccff326c1e_44e2808:
+//SO "PosMoveCount",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,3,1,0:0707311119_1c9b845388a_44e2a28:
+//SB "ResultNormalStart","",0,0,
+//SG "Result",0,0.000000,0.000000,0,36,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "ResultStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,3,10,0:0707245249_2107f1a5906_5df94f6:
+//SO "Result",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,2,26,0:0707245206_20fd6a532e9_4509f0f:
+//SG "Single",0,0.000000,0.000000,5,31,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "SingleStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,9,10,0:0707245706_21468b11fcb_77c2076:
+//SO "Single",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,8,21,0:0707245331_21122306d97_5e04db3:
+//SG "Double",0,0.000000,0.000000,10,26,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "DoubleStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,11,10,0:0707245737_214e10d28d6_77c1f42:
+//SO "Double",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,10,16,0:0707245612_21394c76bc5_5c5d1ed:
+//SG "Hint",0,0.000000,0.000000,15,21,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "HintStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,13,10,0:0707245742_214f77471fe_76d17a2:
+//SO "Hint",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,12,11,0:0707252353_b86785300b_81c068a:
+//SG "Line",0,0.000000,0.000000,20,16,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "LineStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,15,10,0:0707245747_2150b0b31f7_77c1dc9:
+//SO "Line",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,14,6,0:0707245326_2110d6029a0_5c62a30:
+//SG "Total",0,0.000000,0.000000,25,11,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "TotalStart",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,17,10,0:0707245752_2151b3866ca_77c1c40:
+//SO "Total",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,16,1,0:0707245331_2111fbf659e_786c810:
+//SB "ResultNormalLoop","",0,0,
+//SG "Result",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Result",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,2,1,0:0707245206_20fd6a532e9_4509f0f:
+//SG "Single",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Single",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,8,1,0:0707245331_21122306d97_5e04db3:
+//SG "Double",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Double",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,10,1,0:0707245612_21394c76bc5_5c5d1ed:
+//SG "Hint",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Hint",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,12,1,0:0707252353_b86785300b_81c068a:
+//SG "Line",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Line",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,14,1,0:0707245326_2110d6029a0_5c62a30:
+//SG "Total",0,0.000000,0.000000,0,1,0,-1,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "Total",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0,16,1,0:0707245331_2111fbf659e_786c810:
+//SB "PosNormalStart","",0,0,
+//SG "PosSingle",0,0.000000,0.000000,5,31,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PosSingleFade",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,6,10,0:0707311459_1cd122e2a1d_44e29b2:
+//SO "PosSingle",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,5,21,0:0707203804_21309402422_5d5ede6:
+//SG "PosDouble",0,0.000000,0.000000,10,26,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PosDoubleFade",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,8,10,0:0707311503_1cd2400644f_44e270e:
+//SO "PosDouble",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,7,16,0:0707311143_1ca173d6eab_44e28dd:
+//SG "PosHint",0,0.000000,0.000000,15,21,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PosHintFade",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,10,10,0:0707311507_1cd33cf17ee_44e2582:
+//SO "PosHint",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,9,11,0:0707311146_1ca20c3dc5_44e274d:
+//SG "PosTotal",0,0.000000,0.000000,25,11,0,0,-1,0,0,1,0.000000,0.000000,0.000000,0.000000,0.000000::::
+//SO "PosTotalFade",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,12,10,0:0707311511_1cd405240ca_44cfe65:
+//SO "PosTotal",0,0.000000,0.000000,0.000000,0.000000,128,128,128,128,0.000000,0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1,11,1,0:0707311115_1c9a9ed9b3_44e2bb4:

+ 1307 - 0
Samples/Movipa/Movipa/Content/Layout/Result/result_Scene.xml

@@ -0,0 +1,1307 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<XnaContent xmlns:Lib="SceneDataLibrary">
+	<Asset Type="Lib:SceneData">
+		<PatternGroupDictionary>
+			<Item>
+				<Key>Result_ResultFreeParts</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 0 448 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>416 152</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 88 432 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>264 304</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 176 472 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>264 392</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_ResultNormalParts</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 0 448 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>416 152</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 248 256 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 272</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 328 280 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 352</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 392 176 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 248 200 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 528</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 448 232 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-103 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 480 512 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 448 232 32</Rect>
+							<FlipH>1</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 480 512 32</Rect>
+							<FlipH>1</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_Result</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 0 448 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>416 152</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_ResultStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 0 448 88</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>176 152</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_ClrarTime</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 88 432 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>264 304</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_ClrarTimeStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 88 432 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>24 304</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_MoveCount</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 176 472 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>264 392</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_MoveCountStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 176 472 72</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>24 392</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_Single</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 248 256 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 272</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_SingleStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 248 256 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>80 272</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_Double</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 328 280 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 352</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_DoubleStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 328 280 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>80 352</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_Hint</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 392 176 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 416</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_HintStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 392 176 80</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>80 416</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_Line</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 448 232 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-103 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 480 512 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>128 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 448 232 32</Rect>
+							<FlipH>1</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1152 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 480 512 32</Rect>
+							<FlipH>1</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>640 491</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_LineStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 448 232 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-343 491</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 480 512 32</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>-112 491</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 448 232 32</Rect>
+							<FlipH>1</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>912 491</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>0 480 512 32</Rect>
+							<FlipH>1</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>400 491</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_Total</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 248 200 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>320 528</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Result_TotalStart</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName>Layout/result/bmp/result</TextureName>
+							<Rect>280 248 200 64</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>80 528</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosButton</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>1002 550</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>980 596</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>958 642</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosClearTime</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>975 303</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosClearTimeFade</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>735 303</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosMoveCount</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>975 392</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosMoveCountFade</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>735 392</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosSingle</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>917 272</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosSingleFade</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>677 272</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosDouble</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>917 347</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosDoubleFade</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>677 347</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosHint</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>917 422</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosHintFade</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>677 422</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosTotal</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>917 526</Position>
+								<Color>80808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>Pos_PosTotalFade</Key>
+				<Value>
+					<PatternObjectList>
+						<Item>
+							<TextureName></TextureName>
+							<Rect>0 0 16 16</Rect>
+							<FlipH>0</FlipH>
+							<FlipV>0</FlipV>
+							<Data>
+								<Position>677 526</Position>
+								<Color>00808080</Color>
+								<Scale>1.000000 1.000000</Scale>
+								<Center>0 0</Center>
+								<RotateZ>0.000000</RotateZ>
+							</Data>
+						</Item>
+					</PatternObjectList>
+				</Value>
+			</Item>
+		</PatternGroupDictionary>
+		<SequenceBankDictionary>
+			<Item>
+				<Key>ResultFreeStart</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_ResultStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>21</Frame>
+									<PatternGroupName>Result_Result</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>10</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_ClrarTimeStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>11</Frame>
+									<PatternGroupName>Result_ClrarTime</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>20</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_MoveCountStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_MoveCount</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>ResultFreeLoop</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Result</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_ClrarTime</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_MoveCount</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>PosFreeStart</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>10</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Pos_PosClearTimeFade</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>11</Frame>
+									<PatternGroupName>Pos_PosClearTime</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>20</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Pos_PosMoveCountFade</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Pos_PosMoveCount</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>ResultNormalStart</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_ResultStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>26</Frame>
+									<PatternGroupName>Result_Result</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>5</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_SingleStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>21</Frame>
+									<PatternGroupName>Result_Single</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>10</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_DoubleStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>16</Frame>
+									<PatternGroupName>Result_Double</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>15</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_HintStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>11</Frame>
+									<PatternGroupName>Result_Hint</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>20</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_LineStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>6</Frame>
+									<PatternGroupName>Result_Line</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>25</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Result_TotalStart</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Total</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>ResultNormalLoop</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Result</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Single</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Double</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Hint</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Line</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>0</StartFrame>
+							<LoopNumber>-1</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Result_Total</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+			<Item>
+				<Key>PosNormalStart</Key>
+				<Value>
+					<ZPos>0</ZPos>
+					<SequenceGroupList>
+						<Item>
+							<StartFrame>5</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Pos_PosSingleFade</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>21</Frame>
+									<PatternGroupName>Pos_PosSingle</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>10</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Pos_PosDoubleFade</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>16</Frame>
+									<PatternGroupName>Pos_PosDouble</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>15</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Pos_PosHintFade</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>11</Frame>
+									<PatternGroupName>Pos_PosHint</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+						<Item>
+							<StartFrame>25</StartFrame>
+							<LoopNumber>0</LoopNumber>
+							<InterpolationType>1</InterpolationType>
+							<SplineParamT>0</SplineParamT>
+							<SplineParamC>0</SplineParamC>
+							<SplineParamB>0</SplineParamB>
+							<SequenceObjectList>
+								<Item>
+									<Frame>10</Frame>
+									<PatternGroupName>Pos_PosTotalFade</PatternGroupName>
+								</Item>
+								<Item>
+									<Frame>1</Frame>
+									<PatternGroupName>Pos_PosTotal</PatternGroupName>
+								</Item>
+							</SequenceObjectList>
+						</Item>
+					</SequenceGroupList>
+				</Value>
+			</Item>
+		</SequenceBankDictionary>
+	</Asset>
+</XnaContent>

BIN
Samples/Movipa/Movipa/Content/Layout/StaffRoll/bmp/staff1.bmp


BIN
Samples/Movipa/Movipa/Content/Layout/StaffRoll/bmp/staff2.bmp


Some files were not shown because too many files changed in this diff