You're welcome

I'm reading these informations to make bms sometimes. It's very useful and helpful. Thanks for cheers!

There are very few contributions which I who am neither an engineer nor a programmer can do. I am glad if my documents are useful for someone related to BMS.

BGMレーンソーター (BGM Lane Sorter)

About:

This tool changes into BGM all the visible notes (#xxx[11-29]) that BMS has.

Furthermore, all BGM notes (#xxx01) align at numerical order (from #WAV01 to #WAVZZ).

Thereby, noters may be able to finish quickly the preparation which creates an appendix chart.

Usage:

Drop BMS/BME/BML/PMS file to this executable file.

(Or, (1) Run this executable file, (2) Specify pathname of targeted BMS/BME/BML/PMS.)

(Or, (1) Run this, (2) Drop BMS/BME/BML/PMS file to a console window, (3) Press Enter.)

Then, a targeted-filename_bgm.bmx file is generated in the same directory as a targeted file.

BGM channels of this *.bmx file have already aligned. We can copy this *_bgm.bmx file and can change a filename extension into *.bms/bme/bml/pms.

Tips:

Early BMS may be minifying BGM lines, in order to reduce filesize. For example, L9 (site search keyword: “Download(WAV)”). Noters who try to make the appendix chart of this BMS will be troubled by the excessive disorder of BGM area. BGMSorter can be used in order to solve this.

Drop “9_5.bms” from L9
Executable file:Console says:BGMs per measure:
bgmlanesorter.exe
WAV定義数:253
1小節あたりの最大WAV定義数:48
Maximum: 48 lines
bgmlanesorter999.exe
WAV定義数:253
1小節あたりの最大WAV定義数:253
Always: 253 lines
WAV定義数:
The number of #WAVs which BMS uses.
1小節あたりの最大WAV定義数:

In short, the number of BGM lanes which *_bgm.bmx requires from BMS chart editors.

If this value is 29 or more, BMSC should not open *_bgm.bmx file.

If this value is 33 or more, BMSE should not open *_bgm.bmx file.

When iBMSC opens *_bgm.bmx file, it is recommended that noters set “Number of B Columns” more than this value. (See: Sidebar - Grid column - Downwards arrow symbol under “Disable vertical moves”)

BMS Creator:
When one of the musical measures has 29 or more kinds of #WAVs, BGM lanes may overflow from the BGM area of BMSC. BMSC reduces the number of BGM lanes per measure from 29 (or more) to 28, when opening a BMS/BME file. Overflowing notes are destructed.
BMx Sequence Editor:
When one of the musical measures has 33 or more kinds of #WAVs, BGM lanes may overflow from the BGM area of BMSE. BMSE reduces the number of BGM lanes per measure from 33 (or more) to 32, when opening a BMS/BME/BML/PMS file. Overflowing notes are destructed.
GDA Creator Professional:
When one of the measures has many BGM line rather than the BGM lanes number which lane-script (*.gsc) permits, GDAC2 is forced to terminate.
iBMS BMS Creator:

iBMSC can extend the number of BGM lanes to a maximum of 999.

iBMSC does not delete overflowing BGMs. (In other words, iBMSC avoids over optimization.)

Therefore, we should use iBMSC. Being used with iBMSC is safest for BGMSorter.

These are not sorted:
Invisible notes (#xxx[31-49])
LONGNOTEs (#xxx[51-69])
Landmines/Bombs (#xxx[D1-E9])
BGMSorter does not allow visible notes without KEY-sound:
Visible notes which refer to undefined #WAV are deleted when sorting. Noters to use undefined notes (E.g. #LNOBJ etc.) must assign the dummy contents explicitly. (E.g. “#LNOBJ FF” + “#WAVFF fictitious-LNOBJ.wav”)
BGMSorter does not allow notes of the same #WAV index to overlap simultaneously:
Before Sorting
BMS-ABMS-D
#WAV01 v_f.wav
#WAV02 v_o.wav
#WAV03 v_o.wav
#WAV04 v_n.wav
#WAV05 v_f.wav
#WAV06 v_o.wav
#WAV07 v_o.wav
#WAV08 v_n.wav

#00101:01020304
#00112:00060700
#00114:05
#00115:00000008
#WAV01 v_f.wav
#WAV02 v_o.wav
#WAV03 v_o.wav
#WAV04 v_n.wav





#00101:01020304
#00112:00020300
#00114:01
#00115:00000004
After Sorting
BMS-ABMS-D
#WAV01 v_f.wav
#WAV02 v_o.wav
#WAV03 v_o.wav
#WAV04 v_n.wav
#WAV05 v_f.wav
#WAV06 v_o.wav
#WAV07 v_o.wav
#WAV08 v_n.wav

#00101:01000000
#00101:00020000
#00101:00000300
#00101:00000004
#00101:05000000
#00101:00060000
#00101:00000700
#00101:00000008
#WAV01 v_f.wav
#WAV02 v_o.wav
#WAV03 v_o.wav
#WAV04 v_n.wav





#00101:01000000
#00101:00020000
#00101:00000300
#00101:00000004




In BMS-A, visible notes have performance effectiveness (volume++, or pseudo-flange).

In BMS-D, visible notes do not have performance effectiveness.

uBMplay cannot detect “sound which sounds even if it does not perform” like BMS-D. When F1 key is pressed and uBMplay is made “BGM ONLY”, not only KEY but “BGM which overlaps to KEY” is muted.

The test method of daring to miss all the playable-notes is known. However, it is too inefficient that noters test BMS by their own ear. The check by man is not expectable in quality.

Noters can even do using BGMSorter, in order to debug BMS/BME/BML/PMS certainly. If this tool is used carefully, the quality of appendix charts will improve.

メモ

  • BGMレーンソーターに関しては発見が遅れたので後日に。bMoLに似てるけど「iBMSCのBGMレーンを999本に増やして力任せに整頓する」という富豪的発想に時代を感じました。俺の環境でBGM999にするとCtrl+Fとかで3分くらい固まるんですが、普通はそんなことなく普通に使えるのか……
  • 譜面分析ツール - 第2通常難易度表 あとで見る
  • イベントリスト正誤表もマンボウオルグ大移動の影響を受けることに気がついた。誰も見てなさそうだけど一応後で直す……いや、直さないほうがInternet Archive的には便利だったりするのか?

Investigation about the STOP Sequence - BMS Command

いろいろ勘違いしていた箇所を訂正しました。忘れないうちにメモしておきます。

  • 停止時間が0や負数のとき、nanasigrooveは0.1を適用する。拡張BPM変更と同様に、0.1が最小値。
  • 停止時間が負数のとき、Rhythm-itはおそらく-1を適用する。これは「停止ノートが存在しない状態」に最も近い値。Rhythm-itで#STOPxx 0”は停止時間ゼロを意味しない(“#STOPxx 0.2”くらいラグる感じ)。
  • 停止ノートの呼び出しコストを無視できない、などとドヤ顔で書いておきながら真相はこれでした。
  • 停止時間が0から-1の間のとき、Rhythm-itは-1適用前に端数処理を行う。そんなん調べるのイヤやわ……
  • 停止時間の端数が0.5のとき、unofficial nazobmplay/uBMplay/BMx Sequence Editorは偶数側に丸める。これ絶対おれ昔書いた文書まちがってたよね

隣接皿無理皿カウンター

  • Fixed an issue about #LNOBJ
  • Improved detection method in “LONG-SCRATCH vs LONGNOTE”

    The following moments are counted:
    • The moments that LONGNOTEs changed into Contiguous/Impossible state
    • The moments those special states are released
    Note:
    Probably, the conventional counter was counting “LNSC vs LN” as a lot of 192nd notes.

Investigation about the STOP Sequence - BMS Command

Ver.0.50 beta2
フリーズアロー。Rhythm-itのRDM形式。MGQ非サポート。BMモードはそのうちに。
シーケンス停止命令搭載。独自形式。
  • Feeling Pomu 2ndのSTOP定義番号は10進数(#STOP[01-99])だが、#xxx09には36進数番号を指定する
  • Rhythm-itのSTOP定義番号は36進数(#STOP[0-7][0-9A-Z])だが、#xxx09には16進数番号を指定する
  • #STOPxx 0”を大量に参照すると、いくつかの機種ではスクロールが遅くなる。WAviewは逆に加速する。
  • ストップシーケンスと同じ位置にある可視ノートは、スクロールが再開する直前まで放置してから処理しても最良判定を取れる。ただしDDR, LR2, ruvitは普通にPOORを返す
  • Feeling Pomu 2ndにおいて、ストップシーケンスと同じ位置にある音声の再生順序は保証されない
  • Feeling Pomu 2ndにおいて、映像やBPM変更オブジェクトは停止しない場合がある。
  • Ninja Agent GALLIにおいて、停止時間は192分音符単位ではない場合がある。
  • いくつかの機種において、BPMが小数部分を含む場合、停止時間は指定値よりも長くなる

Extended BPM

  • KbMedia PlayerとDTXCreatorに関する調査を追加した。
  • BGAEncoderの拡張BPM番号は36進数(#BPM[0-7][0-9A-Z])だが、#xxx08には16進数番号を指定する。“#00108:FF”は“#bpm73 %f”を参照する。範囲外番号(たとえば“#xxx08:G0”)が存在する譜面を変換すると、temp0.aviが肥大化し続ける。参照先が無い場合も変換が終わらない。一枚絵のみの音頭差分とか全滅。
  • BGAEncoderで3分33秒を超えるビデオを出力しようとすると、temp.aviが肥大化し続ける?
  • BGAEncoderで#250小節を超える譜面を変換しようとすると、異常終了する。
  • 非負整数でない#STOPが指定されると、多くのBMSアプリケーションはデフォルト値として0を適用する(つまり、妥当でない値を停止時間ゼロとみなしてやりすごす)。しかしLR2とPMSee-V-1を適用する。“#STOPxx invalid-value”は“#STOPxx -1”と等しくなり、192分音符1個分のスクロールスキップが発生する。これは通常は問題にならないが、低速高密度譜面や疑似変速などに対する影響は大きい。たとえばVitrual_ex.bmsをテキストエディタで開いて“#STOP01 1”だけを削除すると、LR2の場合はスキップの連鎖によって中盤8小節が吹き飛ぶ。PMSee-Vの場合はLR2とは逆方向にジャンプし、三歩進んで二歩戻る状態を暫く続けて異常終了する。
  • 追記: PMSee-VでVirtualは元のままの譜面でもほぼ同じ結果になるので、この推測は誤りかもしれない。
  • Virtualの疑似変速は、#STOPの値に1未満の小数を指定すれば、もっと滑らかなスクロールを実現できる。ただしLR2では正しく再生されない。LR2は#STOPの小数値を切り捨てるので、1未満の値は0とみなされ、既定値として-1が適用される。LR2がスキップしない範囲で許される最高の滑らかさが、現状のExtra譜面。

Extended BPM

  • Ninja Agent GALLIが扱える小節は#000-399
  • O2mania 1.2.0は#STOPをサポートしていなかった。
  • BM98de 3.32なんですぐ死んでしまうん? → #xxx08が拡張BPM定義番号01を参照していると死ぬ。
  • ほとんど「強制終了」で埋まっていたBM98de 3.32を、#BPM01を使わないようにして調べ直した。

Impossible PMS-Keypress Checker

  • [無理(Impossible)押し(Keypress)チェッカー(Checker)]: About this software
  • [] Fixed an issue where visible notes behind #LNOBJ are parsed as LONGNOTEs
  • The source code of this software, and “Cool URI” for distributing some tools were published.

Investigation about the Extended BPM

version 0.72.0768
BMS拡張命令「#bpm00 000」追加(うらみさん案)
  • bemaniaDXの拡張BPMの定義番号は10進数(#BPM[01-99])。しかし、#xxx08には36進数番号を指定する。“#00108:2R”は“#bpm99 %f”を参照する。範囲外番号(たとえば“#xxx08:30”)が存在する譜面を選択すると、bemaniaDXは強制終了する。拡張BPMを使うBMS作品がbemaniaDXをサポートするなら、9種類の定義(“#bpm[01-09] %f”)のみを使用するか、もしくはbemaniaDX専用の譜面を用意する必要がある。
  • [Ver0.034にて修正済] 負数BPMでBGAEncAdvanceの変換が終わらない(以前は強引に終わっていた)
  • #xxx03#xxx08が同時に指定された場合にどちらが採用されるかについて(^^)で試した結果、BGAの有無によって結果が異なる場合があった。たぶんソートが原因だと思うけど、よくわからない。
  • [済] 宿題: 超高速スクロール中に他のスクロールオブジェクトを拾えるかどうか
  • [済] 宿題: 超高速スクロール中にいきなり終わったりしないかどうか
  • [済] 宿題: 極端な値が指定された場合の経過時間が正確かどうか
  • [済] 宿題: 拡張BPM変更と#STOPが同時に指定された場合にどうなるか

#BPM01  (without value)

無視する:
uBMplay, GALLI, Angolmois(C)
保存時に削除する:
iBMSC
値に関与しない:
GDAC2
警告する:
BMX2WAV, IIDXv
選曲リストから譜面をグレーアウトする:
HDX
BPM 150 (nanasi's defaultize):
nanasi
BPM 130 (defaultize):
DDR, WAview, in_bm2, Angolmois(R), Sonorous
BPM 1:
pomu2
永遠に停止:
bemaniaDX, RDM, BM98de 3.31 (), nazo, ruvit, LR2, fgt/fgt++/fgt#
応答なし:
MW, BGAEnc
強制終了:
BM98de 3.32, BME2WAV, BMSE [1], loadtest/loadtestW/BGAEncAdv, PMSee-V
スクロールしない:
BMEV
空の内容を再生:
o2play

[1]: #BPMzz (without a delimiter and value) is isolated in the Expand tab.

Angolmois Rust Edition ()

lifthrasiirです。遅い時間だから長く書くことはできないし、、、

Rustが更新され、コンパイルできない時は私が直接修正しなければなりません。今回の修正はかなり大きな修正ですから(https://github.com/mozilla/rust/pull/12158)他のプロジェクトも多く影響を受け、rustcもたくさん変わったために修正に時間がかかりました。Sonorousも明日頃に修正しようとしています。

そしてAngolmois/Sonorousは現在rust-sdlをforkして修正したバージョン(https://github.com/lifthrasiir/rust-sdl/tree/revive-mixer-and-image)を使用するので注意する必要があります。(brson/rust-sdlが最近更新がされません。) 実はこういう理由で直接コンパイルはおすすめできません。

ソースコードの迅速な修正、おつかれさまでした! ならびに、だったにもかかわらず、日本語迅速コメントを投稿していただき、ありがとうございました!

アドバイスをいただいたおかげで、Rust 0.10-pre において、私はAngolmoisのmakeに成功しました。angolmois-rustのページを普通に読めば分かるはずのこと(rust-sdl @ b569bc5)について、私は不覚にもまったく気付いていませんでした。私はlifthrasiirさんの時間を盗むことを望んでいないので、コンピュータを新しくしたら素直にPackage Managerを使うつもりです。

#BPM01 0

無視する:
uBMplay, BMSE, GALLI, Angolmois(C)
保存時に削除する:
iBMSC
値に関与しない:
GDAC2
警告する:
BMX2WAV, IIDXv, Sonorous
選曲リストから譜面をグレーアウトする:
HDX
BPM 130 (defaultize):
DDR, WAview, in_bm2
BPM 1:
pomu2
BPM 0.1:
nanasi
永遠に停止:
bemaniaDX, RDM, BM98de 3.31 (), nazo, ruvit, LR2, fgt/fgt++/fgt#, o2play, Angolmois(R)
応答なし:
MW, BGAEnc
強制終了:
BM98de 3.32, BME2WAV, loadtest/loadtestW/BGAEncAdv, PMSee-V
全ノート同時再生:
BMEV

BMS using OS/2 Bitmap (8-bit)

TAROSさんの「LOVE'S REBIRTH」、Crankyさんの「Positive Dance 2nd~」等で使われてる

nebula-**.bmpOS/2 BMPですね。

フリー素材のようで、昔の作品探せばもっと使われてそう。

神情報をありがとうございました!!

どちらもKJさんのフリー素材を使用されていますが、において氏のサイトには既に“<IMG ALT="移転?しました 移転先が知りたい方はmailで">”と書かれており、私はこの手掛かりをこれ以上追跡できませんでした。20世紀のBMSコレクション、あるいは当時のBMSシーンの痕跡を私は探しています。

Angolmois Rust Edition ()

私が確認した時点で、Travis CIは“build: failing”を示しており、実際にmakeは失敗しました。謎の感動。

#!/bin/sh
cmd //c $(basename "$0") "$@"

rustc -v
C:\MinGW\msys\1.0\bin\rustc.exe 0.10-pre (db8a580 2014-02-11 18:21:49 -0800)
host: i686-pc-mingw32

make
rustc -O --crate-type=rlib rust-sdl/src/sdl/lib.rs --out-dir rust-sdl/ && touch rust-sdl/libsdl.dummy
rust-sdl\src\sdl\img.rs:51:22: 51:24 error: `do` is a reserved keyword
rust-sdl\src\sdl\img.rs:51         ll::IMG_Init(do flags.iter().fold(0i32) |flags, &flag| {
                                                ^~
make: *** [rust-sdl/libsdl.dummy] Error 101

余談、C言語版のAngolmoisはbms-wrong-relpath.zipのBMSのうち片方を再生できるけど、Rust版は両方とも再生できない。りりくろ!のように親ディレクトリへの参照を避ける構成なら、Rust版でも再生される。

reminder+++

BMSEdge cases
PAL,36 (test version) dividing by beat-unit, and applying the branch to each unit
Declinin' Randomized bars are divided into 129 (not 192)
おりたたみやごころ Remix [tatami3.bms] “#if 5” - global - “#if 5
RAN_NEST 100 Test of #RANDOM nesting
りりくろ! Randomized video / nanasi requires #ENDRANDOMs / separator '\' (REVERSE SOLIDUS)
秋風に靡く追憶は彼女なのか? [uBMplay 1.4.6] *.WAV alternative search fails by a directory separator '/' (SOLIDUS)
bms-wrong-relpath.zip Sample of the bug which actually existed in plugout4 once: LR2 can play this
The Beginnings [Archive on Wayback Machine] (Abnormal RLE × 46) + (Normal RLE × 42)
(^^) [] Abnormal Bitmap Headers (bfSize/biSizeImage)
[] Fixed (This bug is reproducible with freeware “最適Bitmap”)
scanline [db Premium] Abnormal Bitmap Headers (bfSize/biSizeImage)
OS/2 Bitmap According to readme.txt of Beditor, they were used very rarely (See bmpfmt.htm)
LOVE'S REBIRTH [nebula-0*.bmp] OS/2 Bitmap (8-bit)
positive dance "2nd RAVE" [nebula-0*.bmp] OS/2 Bitmap (8-bit) (KJ's resource?)
Wire Puller 3 - #18 Intentional character corruption (UTF-8 byte-code in Shift_JIS encoding?)
me.exe Uppercase filename vs Lowercase defined-name

#CHARFILEに関する備忘録

  • BMP/RLE/PNGを使える。ただし*.chp内で拡張子を明示的に指定する必要がある。
  • MAG/TIFF/TGAは使えない。PMChr-VではGIFやJPEGなども『画像ファイルが不正です』。
  • pomu2はGIF/JPEG/ICOも使えるが、JPEGは透過色を均一に塗りづらく、ICOは用途が限られすぎ。
  • pomu2において、アニメーションGIFは最初のフレームのみ表示される。
  • fcv200b3.exe(えふしーぶい!)はGIF非対応、PNGやJPEGを使うと背景や一部の動きが変に。

Windows batch; replace from ___bmse_tmp.bms to ___bmse_tmp.pms

[] The executable file version was released. (See my article: )

This is a script for LR2 called from BMSC/BMSE/iBMSC which is editing 9KEYS PMS chart.

Usually, LR2 called from BMS editors as external tool misunderstands a PMS chart as 10KEYS BMS (Double Play). Because the file suffix of the chart which editors generate temporarily for external tool is *.bms. By renaming temp.bms to temp.pms via this batch file, LR2 called considers that all the charts under edit are 9KEYS PMS. By this, chart edit and a test play become comfortable.

  1. Open lr2_pms_launcher.bat by any text editor
  2. set LR2PATH="your-LR2-path\LR2body.exe"
  3. BMSC: Open ExApps.cfg, then add as follows:
    LR2PMS
    your-bat-path\lr2_pms_launcher.bat
    [filename] -A -NS
    [filename] -NS
    -S
    BMSE: Open bmse_viewer.ini, then add as follows:
    LR2PMS
    your-bat-path\lr2_pms_launcher.bat
    <filename> -A -NS
    <filename> -NS
    -S
    iBMSC: Run, Options > Player Options
    1. Push “Add” button
    2. Specify your batch-file path directly
    3. KeyValue
      Play from beginning:"<filename>" -A -NS
      Play from current measure:"<filename>" -NS
      Stop:-S

If this batch file is used on GDAC2, probably we have to change a batch code.

  • GDAC2 which is editing the chart generates a temp.tmp file to the same directory as GDAC2.exe.
  • The temp.tmp file holds the contents of the chart under edit as a BMS format.
  • Furthermore, a temp.tmp file holds the reference to the BMS directory under edit with a #PATH_WAV command. However, LR2 does not support #PATH_WAV. What should I do?

BMS Bitmap test

Free StuffIt Expander 2011 for Windows was able to extract the beditor1.3.1.sit.hqx archive. Therefore I got to know that the OS/2 Bitmap format was actually once used in BMS.

1.2.1

一部のBMSがごくまれに使用しているOS/2形式のBMPファイルを読み込めるようにした。

I do not know BMS which uses OS/2 Bitmap. However, For example, in LOVE'S REBIRTH and positive dance "2nd RAVE", “nebula-*.bmp” are OS/2 Bitmap files. I tried feature detection very roughly to BMS applications just to make sure.

According to the result of this test, BGAEncAdvance looks just like software with the bad result. However, that is not right. If 1-, 4-, 8-, and 24-bit ordinary Windows Bitmap are supported, 99% of BMS using bitmap images should be able to be covered. Users can convert into PNG files the strange BMP files. The mainstream of the visual resource in BMS is already not image files but video files.

Re-Rise BMS List

の当日記において、『曲一覧は残ってない!?』というコメントをいただいていましたが、

Re-Riseのリストは登録ルーチンの穴をSPAMに突かれ、13MBのSPAMデータに乗っ取られた末リストデータが消滅しました。バックアップは取ってるので時間に余裕があれば復旧予定で。

【業務連絡】 なんかSPAM爆撃でシステムが大崩壊してたRe-Rise跡地、とりあえず跡地として復旧させました。a-manbow.sakura.ne.jp にreriseを付ければかつてのページに飛べます。

登録ルーチンにSPAM対策施そうかと思ったけどよくよく考えたら書き込むデータなんて無いし書き込みルーチンを丸ごとオミットした。

最近SPAMの爆撃が酷くなっているので、レンタルサーバーでかつ掲示板系統のCGIを放置している人は一度見直してみるといいかもしれません。

とのことで、Re-Riseのリストが復旧していました。ありがたいことです! 反応が遅れてすみません。

の当日記からのリンクがすべて死んでいたことを、私はにようやく気がついてアンリンクしましたが、CGIの復旧を確認したのであらためてリンクさせていただきました。

I was not able to find *.MBM files (BMS with #WAVCMD)

Resources:
http://harinezumi.s14.xrea.com/sblog/eid0.html
http://harinezumi.s14.xrea.com/download/mbm.txt (specification)
http://harinezumi.s14.xrea.com/download/MacBeat0983.sit.bin (implementation)
http://harinezumi.s14.xrea.com/download/MacBeat0983dev.sit.bin (source-code)
Evidence of MBM implementation existence:

Mac Beat 0.8.5がリリースされました

Mac Beat 0.8.1#3.5からの変更点は以下の通りです。

  • 5th風リスト表示に対応
  • MODもどきに再対応
  • デフォルトスキーム一部変更

From MacBeat 0.8.5 changelog: “Re-supported pseudo-MOD”

If we refer to source code, we may be able to know in detail about implementing of MBM. But I do not know how to decompress *.SIT.BIN files on Windows OS. Although I installed Free StuffIt Expander 2011 for Windows reluctantly, StuffIt failed to extract archive. I need more documents ...

Now, even if you are Japanese BMS user, you will be difficult to look for MBM files. According to the questionnaire in , the share of MacBeat was 0.5%. Could BMS authors write #WAVCMD in this situation? ... In my opinion, Mr. SIDE-1 (Kusofumen Lovers) has a high possibility of having tried #WAVCMD. In other words, I cannot imagine about the author who is likely to try it other than him.

Firefox 27

New Google Search Engine Icon:
Program Files\Mozilla Firefox\browser\searchplugins\google-jp.xml
(Profile folder)\search.json
青地に白字のg
Old Google Search Engine Icon:
Program Files\Mozilla Firefox\searchplugins\google-jp.xml
白地に青字のg

formhistory.sqliteの表示件数が勝手に切り詰められたので俺は半ば記憶喪失のような状態に陥っている

ill-mannered Bitmap files

註:現在はこの記事の内容は当てはまりません。問題のBMPは既に修正されています。

そういえば思い出したけど、(^^)に含まれる殆どのBMPのヘッダがバグっている。実際のファイルサイズが約65キロバイトであるにも関わらず、ヘッダは「このBMPのサイズは約16メガバイトだぜ」と主張している。具体的にはbfSizeが一律16842806だったり、biSizeImageがその近似値だったりする。

このせいでuBMplay 1.4.6やnazobmplayではBGAが表示されなくなっていたり、uBMplay 1.5.X系列ではファイルのロードに異様な時間がかかったり表示がちらついたり、おかしな現象が発生していた。初出時のアーカイブではそんなことにはならなかったはずで、じっさい減色処理を免れたcyc-miss00002.bmpのヘッダは正常なので、Yamajetさんのサイトで再公開される際に何らかの手違いが発生したものと思われる。

ヘッダが狂っているだけなので、そのへんの画像加工ソフトで(何も変更を加えずに)一括上書き処理すれば修正できる……と思う。俺の場合、Capture STAFF - Light -に全画像をドロップして上書きするだけで直った。

付録・数少ないまともな画像:
cyc-last_00031.bmp (1-bit color)
cyc-miss00002.bmp (24-bit color)
cyc-staff_00000.bmp (1-bit color)
_banner.bmp
title.bmp

The BeginningsのRLE圧縮BMPについて附記

“BM98 for the BEGINNER”による代理配布版では、46枚の不作法なRLE8はデコードされて無害化済み。

圧縮形式 biCompression0 以外の値の場合には,画像のサイズ biSizeImage0 にすることはできません。

ビットマップデータのサイズ (バイト数). BI_RGB の場合は0でもよい.

MSDNのBITMAPINFOHEADER structure (Windows)にもそのような記述がある。昔は、

biSizeImage0がはいってるとWindowsの標準ビューアで読み込めません(マジかよ)。

そんなようなこともあったらしい。現在はそんなことは無いようだが……と思いきや、Windows XP SP3のMicrosoft Paintは、行儀が悪いRLEを表示できない。代理配布版に同梱の42枚のRLE4は正常なので、無害。

Can display normal RLE4/RLE8 correctly:
BM98, BM98de, DDR, bemaniaDX, MW, RDM, nazo, nanasi, fgt/fgt++, LR2, ruvit, pomu2, IIDXv/HDX, Angolmois/Sonorous, otama, GALLI, BMSE, GDAC2, BMS Viewer, BMEV, nBMplay, WAview, uBMplay, PMSee-V, PMChr-V, DTXV, BmsToAvi, BGAEncoder, BGAEncAdv
Cannot display normal RLE4/RLE8:
BMSC, BGAEncAdv

つまり、RLEをサポートしていないBMS関係ソフトウェアはBMSCとBGAEncAdvだけなんだけど、半数以上は「行儀が悪いRLE」を考慮してなくて危ないから、そもそもRLE自体の使用を避けるほうが良さげ。

2014年11月30日追記: BGAEncAdvは2014年6月12日にリリースされたVer0.034にてRLEに対応済み。

以下、関係あるような無いような備忘録。

  • BMS Viewerは正常なRLEを表示できるが、指定していない番号の画像をたまに表示する。原因不明。
  • bemaniaDXは、画面のプロパティを16ビットに変更し、16bit colorsで起動すれば、表示が壊れない。
  • pomu2は、テスト時は#xxx[06-07]FpsStart.exeから有効化しておく。(通常プレイ時は無効化)
  • #000にしか内容が無い譜面を読むと、BMEVは強制終了する。
  • #000にしか内容が無い譜面を読むと、RDMはゲームを開始できない。
  • Display Bitmap Headers (dbh11.lzh)
  • Image Checker ver 1.04

DTXMania公式ドメイン取得のお知らせ /

Which is canonical URI?
http://mainori-se.sakura.ne.jp/dtxmania/
http://fromalto.sakura.ne.jp/dtxmania/
http://www.dtxmania.net/
http://dtxmania.net/

The Beginnings / juno & une

This BMS uses 46 ill-mannered Run-Length Encoded Bitmap files (*.bmp).

Can display correctly:
DDR, ruvit, Angolmois/Sonorous (but all 8000Hz WAVs die), WAview, BmsToAvi, BGAEncoder
Can display incorrectly:
otama, fgt/fgt++, IIDXv/HDX
Cannot display:
BM98, BM98de, MW, bemaniaDX, RDM, nazo, nanasi, pomu2, GALLI,
BMSC (“File Not Found”), BMSE, BMS Viewer, nBMplay, BMEV, uBMplay
Abnormal end:
LR2 (However, if open01.bmp and open02.bmp are isolated, all other RLE files can be displayed),
GDAC2 (Supposing RLE is displayed on the preview window),
BGAEncAdv (core.exception.RangeError@ngbase.loadimage(669): Range violation)
PMSee-V (#BANNER ill-mannered-rle.bmp : Error Code 13)
What I cannot investigate:
bemaniaDX

I Re-make Angolmois Rust Edition

lifthrasiirです。本年もよろしくお願い申し上げます。

- 最近、本業で忙しくて作業をほとんどしなかったですorz Sonorous snapshotも大きく変わったのがなくてごめんなさい。

コンパイル関連つっこみ:

- typoの指摘ありがとうございます! 修正しました。

- gitがなくても"Download ZIP"ボタンを押せば、現在masterをdownloadすることができます。

- MinGW-w64はまだテストができなかったです。コンパイルは可能だと思いますが保障することはできないでしょうね。

あ...lifthrasiirです。忘れていたが、"Download ZIP"でダウンロードすればrust-sdlは自動でダウンロードされません。https://github.com/lifthrasiir/rust-sdl/で、もう一度ダウンロードしなければなりません。

本年もよろしくお願い申し上げます! ご多忙にも関わらず、CJK圏のユーザにとって有用な変更を達成されており、毎度ながら頭が下がる思いです。私はコンピュータを買い替えたらMinGW-w64を試してみます。

angolmois-rust\
rust-sdl\
src\
sdl\
*.rs files
sdl_image\
lib.rs
sdl_mixer\
lib.rs
sdl-demo\
main.rs
.gitignore
.travis.yml
LICENSE.txt
README.md
.gitignore
.gitmodules
.travis.yml
angolmois.rs
Makefile
README.md

私は“Download ZIP”ボタンを忘れていました。昔の手順では上記のようなディレクトリツリーを手動で構成していましたね。私のHDDは空き容量が少ないので、MsysGitをアンインストールできて助かりました。

- Rust 0.9を手動でインストールした場合、Chocolateyバージョンより優先されることができます。多分C:\Chocolatey\lib\Rust.0.10.2014xxxx\bin\rustc.exeとすれば動くようです。

- あ、Angolmois Rust editionSonorousすべてC header fileはこれ以上必要としていません。そもそもCがないからです。

そういえばこれはC言語ではなくRustでした、私は愚かでした……!

Windows XP環境において、Chocolateyは期待通りに働きませんでした。何度試しても、以下のような当惑させられるメッセージとともにRust 0.9がインストールされました。私は何かを誤解しているのでしょうか?

cinst Rust
source chocolatey already disabled

Chocolateyを経由せず、コマンドライン版のNuGet.exe (NuGet.exe Bootstrapper 2.0)によって直接的にNuGet Rust packageをインストールすることを、私は思いつきました。それは実際にうまくいきました。

cd C:\
set EnableNuGetPackageRestore=true
nuget update -self
nuget install Rust -Version 0.10.2014xxxx

Installing 'Rust 0.10.2014xxxx'.
Successfully installed 'Rust 0.10.2014xxxx'.

これにより“C:\Rust.0.10.2014xxxx\”がインストールされました。

さらに、私は“C:\Rust.0.10.2014xxxx\bin\”の中身をすべて選択して、“MinGW\msys\1.0\bin\”にコピーしました。これによってようやく、私はAngolmois Rust Editionのmakeを成功させることができました。(“MinGW\msys\1.0\bin\”にペーストしたRust関連アイテムは、コンパイル後に削除しました。)

問題を解決するための重要なヒントを教えていただき、大いに助かりました。ありがとうございました!

- XPで動かないのはPath rewrite(https://github.com/mozilla/rust/pull/9655)の副作用のようです。(multi-byte pathがこのpull requestのおかげではあるが...) わざわざ改めたわけではないようだが、一応issueを作りました。https://github.com/mozilla/rust/issues/11950

- 個人的には構造がまったく違う2000/Meとは異なり、XPは環境さえあれば(一部の機能だけでも)支援するのが大きな負担はありません。でも環境がないですね。orz

「Windows XPを使い続けるべきではない」という教訓を、私は身を以て体験できたと思います。しかしながら、FirefoxはWindows XP難民をターゲットしているように見えます。たとえば、Firefox 26はWindows XPにおいてMP3を再生可能にしました。じつのところ、私は大いにこの変更の恩恵に与っています。

GeckoのターゲットとServoのターゲットは同じなのか異なるのか? それについて私はよく知りません。