doubledepth

BMS Search

これとか真っ先に取り上げそうなものだと思ってたんですが意外

http://bmssearch.net/

余裕がなくつんどくしておりました。改めて確認したところ、LR2 song.dbからの一括登録やBemuseとの連携など、興味深い新機軸が実装されていることに気づかされました。ありがとうございます。この手のBMS support siteの集大成という印象です。q/stol氏の万能ぶりたるや。Chroma Internet Rankingとは連携するのかな?

とのことです。脆弱性をつつく遊びに実績のある某B氏、いかがでしょうか。私もtest用の糞dataなど投げてもよいものでしょうか。なぜかEmailを送信できなかったので、余計なお世話とは思いつつ、ざっと眺めた範囲で気になった点だけ書いてみます。

  • Fat footer tableの、</td>が一個余計。
        <a href="support?page=faq">よくある質問と答え</a>
    </td></td>
  • 前者よりは後者のほうが安全かなあ。LR2IR以外では問題が発生するかもしれませんし。
    <a href="http://www.dream-pro.info/~lavalse/LR2IR/search.cgi?mode=ranking&bmsmd5=xxx" target="_blank">
    <a href="http://www.dream-pro.info/~lavalse/LR2IR/search.cgi?mode=ranking&amp;bmsmd5=xxx" target="_blank">
  • encoding.jsは基本的に日本語環境専用に見えますblingblingHEARTblingbling「セHEARTに化けるなど)LR2IRが「複数のsystem locales」をsupportしているわけでもなく、難しいところではあります。
  • 全頁にtitle要素があるほうが、すくなくともdesktop PCでは何かと便利かと思いました。書式は何でもよいけど「<title>アルファテストについて - BMS Search</title>」ですとか、<title>[KID&#039;S DREAM] SAVE The World -starlight, more Colors- / Is-m - BMS Search</title>ですとか。

uBMplay memo

Windows OS compatibility
Vista+[1]XP2000Me98[2]95[2]
1.5.x [3][4]YesYesN/AN/AN/AN/A
1.4.5–6[4]YesYesYesN/AN/AN/A
1.4.0–4[4]YesYesYesYesYesN/A
1.3.xYesYesYesYesYesYes
[1]
dx7vb.dllおよびその登録が必要。Windows 2000/XPやDX81NTxxx.exeなどの中から取り出す。
[2]
DirectX 7.0以上が未導入なら必要(8.0a日本語/8.0a English)。MSVBVM60.DLLも必要。
[3]
Visual C++ 2010 Runtime (msvcr100.dll)が必要。これなくば無音。
[4]
COMDLG32.OCXが必要。KB3096896のinstallerから取り出すなど。Vista以降はOCXの登録も必要。
Dependency
15215115014614514414314214114013D13C13B13A139138137136
MSVBVM60.DLL
COMDLG32.OCX
image.dll
sound.dll
movie.dll
Dependency?
15215115014614514414314214114013D13C13B13A139138137136
msacm32.dll
user32.dll
VB6.OLB
VB6JP.DLL
VBA6.DLL
winmm.dll
WAV03 sumo2.wav
vastmeventx.htm
vastmexit.htm
stmfilecopyx.htm

BMSE/uBMplay関連の覚書

BMSEを動かすために必要な、Visual Basic 6に関連する三個のfiles。

MSVBVM60.DLL:
現時点での最新版は version 6.0.98.32 (KB2575928)
COMDLG32.OCX:
現時点での最新版は version 6.1.98.41 (KB3096896)
MSCOMCTL.OCX:
現時点での最新版は version 6.1.98.46 (KB3096896)

もVisual Basic 6関連の新しい更新が提供され続けているが([MS16-004])、「統合開発環境としてのVisual Basic 6」を備えていないcomputerにはinstallされない。私は以下の手順で自衛を試みた。

  1. 古いActiveX Controlsが導入済みなら各OCXのversionを確認する。最新版でないなら以下の手順に進む。
  2. VB60SP6-KB3096896-x86-XXX.msi7-Zipで開き、最新のCOMDLG32.OCXMSCOMCTL.OCXを取り出す。
  3. 古いActiveX Controlsの登録があれば解除する。Command Prompt (Admin)から以下を入力する。
    32-bitの場合:
    C:\Windows\System32\regsvr32.exe /u COMDLG32.OCX MSCOMCTL.OCX
    64-bitの場合:
    C:\Windows\SysWOW64\regsvr32.exe /u COMDLG32.OCX MSCOMCTL.OCX
  4. 新しいActiveX Controlsを以下の場所にcopyする。古いActiveX Controlsがあれば上書きする。
    32-bitの場合:
    C:\Windows\System32\COMDLG32.OCXおよびMSCOMCTL.OCX
    64-bitの場合:
    C:\Windows\SysWOW64\COMDLG32.OCXおよびMSCOMCTL.OCX
  5. 新しいActiveX Controlsを登録する。Command Promptを管理者として実行し、以下を入力する。
    32-bitの場合:
    C:\Windows\System32\regsvr32.exe COMDLG32.OCX MSCOMCTL.OCX
    64-bitの場合:
    C:\Windows\SysWOW64\regsvr32.exe COMDLG32.OCX MSCOMCTL.OCX

Elevated Command Promptを用いてもerrorが発生する可能性はある。私の場合、se188840によってWindows 8.1に導入したmsrdo20.dllを、Upgraded Windows 10上でUnregisterできなかったError Code: 0x80004005)。Safe mode上でCommand Prompt (Admin)を試すと、うまくいった。

BMSE ToolbarのCombo Boxesが変な位置に表示される

Hello, VScroll ComboBox. [MS12-027]のsecurity updateに起因する、MSCOMCTL.OCX v6.1.98.33以降で発生する現象。bmse.iniをNotepadなどで開き、該当するkeysGrid, Size, Resolution)の値をTrueに変更して保存すれば直る。Falseなら崩れる。

Grid=False
Size=False
Resolution=True
Hello, Size ComboBox

統合開発環境としてのVisual Basic 6や、Microsoft Officeなどが導入されている環境に対しては、2012年4月からWindows Updateが提供されている。しかしBMSE Toolbar崩壊現象を手元で再現できないusersは、ActiveX Controlsの脆弱性を取り除かないまま放置している可能性がある(私のように)。

重要でない事柄の備忘録

Windows ME/2000以降は標準で%WINDIR%配下にMSVBVM60.DLLを持っている[註1]。通常はMSVBVM60.DLLをわざわざ用意する必要はないし、無理に最新版に更新する必要もない。KB2575928はWindows 7/Server 2008にしか関係がないので、Windows 8以降が持つMSVBVM60.DLLはv6.0.98.15 (KB970157)に留まっている。

Windows ME:
C:\WINDOWS\SYSTEM\MSVBVM60.DLL (v6.0.84.95)
Windows 2000:
C:\WINNT\System32\MSVBVM60.DLL (v6.0.84.95)
32-bit XP and later:
C:\Windows\System32\msvbvm60.dll
64-bit XP and later:
C:\Windows\SysWOW64\msvbvm60.dll

「Windows ME、2000、SP2までのXP、Server 2003無印」のMSVBVM60.DLLは、VB6SP6よりも古い。これらの使用者はMSVBVM60.DLLを導入しなおすほうが無難かもしれない。また、Windows 95/98/98SE/Meの使用者は、MSVBVM60.DLL別途用意する必要がある(無難な配置場所はC:\WINDOWS\SYSTEM\MSVBVM60.DLL”)。

[註1] Windows XP EmbeddedはMSVBVM60.DLL持たないらしい

Windows Vista未満なら、BMSE.exeuBMplay.exeの同位にRuntimesを配置することもできる。この方法の場合、Visual Basic 6 Runtimesを登録しないままでもBMSEやuBMplayを使うことができる。

bmse\
lang\
theme\
BMSE.exe
readme.txt
+
MSVBVM60.DLL (if Windows 95/98/98SE/Me)
COMDLG32.OCX (if Windows 95/98/98SE/Me/2000/XP)
MSCOMCTL.OCX (if Windows 95/98/98SE/Me/2000/XP)

Windows Vista以降、Visual Basic 6 Runtimesに関してはこの方法は封印された。しかしVisual C++ 2010 Runtimesに関しては、Windows 10においてさえ依然としてこの方法を使用することができる。

  1. Microsoft Visual C++ 2010 x86 Redistributableから、vcredist_x86.exeをdownloadする。
  2. vcredist_x86.exe実行せずにWinRARや7-ZipやExplzhなどのarchiverから開く。
  3. 書庫内階層らしき. (FULL STOP)を何度か潜ると、.\.\.\.\vc_red.cab書庫が見つかる。これを展開する。
  4. F_CENTRAL_msvcr100_x86が見つかる。これを展開し、msvcr100.dllにrenameする。
  5. Version 1.5.0以降のuBMplay.exeの同位に、前述のmsvcr100.dllをcopyする。

前述の手順なら、Visual C++ 2010 Runtimesを導入することなく、uBMplay 1.5.0以降で音声を再生できる。

豆知識

  • uBMplay 1.3.13以前は、COMDLG32.OCXMSCOMCTL.OCXを要求しない(たぶん)
  • uBMplay 1.4.0以降は、MSCOMCTL.OCXを要求しない(Easter Eggまで確認したわけではないが)
  • Sound Card Audio Driversがない状態でuBMplayを起動すると、Runtime Errorが発生する。
  • BPP (16 colors)以下のdisplayでuBMplayを起動すると応答しない。
  • BPP (monochrome)のdisplayでBMSEを起動すると普通に働く。
  • 古い環境でbMoLを使うなら、Visual C++ 2005 Redistributable (x86)の導入が必要。(SP1でなくても構わない)
  • BMSCの配色、およびBMSEのBMSC互換配色は、BPP環境への配慮だった…ということに今頃気づいた。
  • BMSE Helpの旧配色は、低画質時にまともに読めなかった。
    Old background-colors (#9CF, #CCC, #DDD):
    Glitchy background-colors on 4-BPP (16 colors) mode

私は可能な限り当時の環境で閲覧できるようにしたかったのでSafest web colorsを採用したが、2016年現在はdisplayの色制限に配慮する必要性は皆無だろう。Windows 8以降はSafe Modeでさえ32 BPP (True Color)…

WinRAR 5.40 beta 1

Option” → “Name encodingから、encodingを指定できるようになった。System localeのANSI/OEM Code Pageが一致する、CJKVまたはThai産のNon-Unicode ZIP書庫に関しては、まともに符号化されていればほぼ確実に文字化けなしで展開することができる。(一部のarchiverはCP949とUnicodeを混淆させるなどの異常な符号化を行うので、使用者が妥当性を嗅ぎ分ける必要はある。)

WinRAR 5.40 beta 1のName encodingには、いまのところOEM Greek (ibm737)の選択肢はない。ギリシャ語Windows環境で、メモ帳で書かれエクスプローラーの圧縮フォルダーに送られた、ごく普通のBMSのZIP書庫」は、いまのところWinRARでは正しく展開できない。(もちろんギリシャ語環境は除く。)

#WAV06 &copy;. .rarのような糞みたいな名前を禁止することが可能になった。禁止というと語弊があるが、filename内の無駄に連続する空白やFULL STOPを切り詰めることができる。“オートメーション工場”automation\ura_63..wavとか。[追記] すみません、誤訳+勘違いしていました。

Winamp 5.666 Build 3516 + In_BM 1.17 (WAview)

図表そのものを波形として用いるたぐいのBMSを、綺麗に再生できる。

E.g. 王宮のロンド - Another:

Direct link to this sample video:
Ogg/Theora
MP4

uBMplay on Windows 10

Windows 10をclean installした場合のuBMplay導入手順。

Requires:
  1. Visual C++ 2010 x86 再頒布可能パッケージをinstallする。Service Pack 1でなくても構わない。これがなくてもuBMplayは動作するが、これがない環境ではuBMplay 1.5.0以降で音声が鳴らない。
  2. Visual Basic 6 Service Pack 6 runtimeをinstallする。これがないとuBMplayが動作しない。いくつか選択肢があるが、runtime packagesを併用すると酷い目に遭うので、どれかをinstallしてください。

  3. dx7vb.dllを用意する。unofficial nazobmplayなどに興味がある場合は、dx8vb.dllも併せて用意する。

    • Windows XPのC:\WINDOWS\system32\からcopyできるなら、それが手っ取り早い。私の環境でそれらはversion 5.3.2600.5512)だった。

      [SHA256] dx7vb.dll:
      7c8ff6613fe78b1503f9196863175a28f30193498c132950d1466cc48f4e0ae5
      [SHA256] dx8vb.dll:
      d04ad679990e70e21be9a382e4a15f2f608e9d9f87ca4f40593e26890cfc0755
    • Windows XP環境がない場合はDirectX 8.1 Runtime for Windows 2000をdownloadする。DX81NTxxx.exe実行せずに拡張子をcabに変更し、DX81NTxxx.cabを展開する。得られるdx7vb.dll/dx8vb.dllは、Version 5.1.2600.881)のはず。

      [SHA256] dx7vb.dll:
      4e63f2e83df26b350998352fb8a463ec546394efbb1c0a0269379e4659846376
      [SHA256] dx8vb.dll:
      b1c26cae457ea67bf2d54f8762c7ff98230935818e26f2cf9ae3350ea61dd91d
  4. dx7vb.dllを配置する。DLLが配置されるべきpathは、環境によって異なるので注意。

    32-bit OSの場合:
    C:\Windows\System32\dx7vb.dll
    64-bit OSの場合:
    C:\Windows\SysWOW64\dx7vb.dll
  5. dx7vb.dllを登録する。“Command Prompt (Admin)”から以下のcommandを入力する。

    32-bit OSの場合:
    C:\Windows\System32\regsvr32.exe dx7vb.dll
    64-bit OSの場合:
    C:\Windows\SysWOW64\regsvr32.exe dx7vb.dll

    (登録を解除したい場合は、同様に“Command Prompt (Admin)”から以下のcommandを入力する。)

    32-bit OSの場合:
    C:\Windows\System32\regsvr32.exe /u dx7vb.dll
    64-bit OSの場合:
    C:\Windows\SysWOW64\regsvr32.exe /u dx7vb.dll

    nazobmplayなどが使用するdx8vb.dllも、前述の手順と同じ要領で配置・登録・解除できる。

  6. これで環境は整ったはず。uBMplay 1.5.2を起動して、uBMplay windowに対して適当にBMS fileをdrag-and-dropしてみる。基本的な構成の“(^^)がtest用として最高におすすめ。Notesがscrollして音声が鳴るなら、たぶん正常に動作している。鳴らない場合は、BMSを再生しつつF1 keyを何回か押してみてください。

  7. 正常に動作しない場合は、\ubmplay\ubm.iniを削除してから、再びuBMplayを起動してtestしてみてください。これは、「Optionや設定が初期化されれば正常に動作するかも」というtestです。

  8. ここまでやっても正常に動作しない場合は、uBMplay以外の問題かもしれません。uBMplay 1.5.2ではなく、uBMplay 1.4.6bを試してみてください。それでも駄目なら他の方の記事を探してください。

日記

BMS関連

拙作BMS
bubble / hitkey
二次配布BMS
ノイズの海と鯨 / moka
PARTY TIME IN MY DREAM / HAIJI
BMSE非公式ヘルプ
Lite
Lite-online
Full
Full-online
buglist
iBMSC
Web (Japanese version)
issues
BMS差分
a­nal­gam
boléro
Ketch­up
quovadis
SELF
yellows
Do not use non-ascii filenames
雑多なメモ
bmsplayer data
bms benchmark
Secrets - Feeling Pomu 2nd
grid2sec
bmx2xxx
BMx Outliner
BMS command memo
BMS command memo (Japanese version)
BMS EVENT LITE
#RANDOM BMS list
BMS #OPTION command
BMS Bitmap test
Extended BPM
STOP Sequence
BMS Edge Cases
BMS extensions proposed by Sonorous (unofficial Japanese version)
BMS 2.0 (unofficial Japanese version)
BMS Editors
Do not use non-ascii filenames
BM98 Kikuchan Version 3.30 Revision #4.2

その他

HTML関連メモ
Dakuten on HTML
nest1000
EVS
Nervous Cascading
Source Han Sans test
User-Agent String
CSS Logical Properties