2021年1月11日月曜日

湾岸エリア攻略

今回の冬休みは、地元の県(静岡)から帰省禁止令(正確には不要不急の帰省を控えるようにするお達し)が出ていたので、東京で過ごしました。特にやることもないので、自転車で東京をぐるぐる回って過ごしました。

荒川サイクリングロードを使えば、東京の上下の端までの移動が簡単 & 安全にできます。

まずは、江東区若洲にある東京ゲートブリッジへ行ってきました。

というのも、とある位置情報ゲーム(テクテクライフ)で中央防波堤付近へ行く必要があったのですが、中央防波堤には徒歩や自転車では行くことができないので。東京ゲートブリッジを使えば中央防波堤に上陸こそできませんが、結構近づくことができます。(ゲームの方は上陸しなくても近づけば目的を達成できる)

ただし、休暇の期間中、東京ゲートブリッジの歩道は閉鎖されていたので、目的は未達...

※ちなみに、12/31の大晦日に行きました

若洲にはキャンプ場があり、初日の出が良い感じに見えそうな気がするので、キャンパーが沢山居るかと思いきや、目視で確認した範囲ではテントは3つしか無かったです。若洲〜新木場(夢の島)近辺には倉庫とかしかないので、大晦日は完全にゴーストタウンでした。普段は大型トラックが沢山通っているであろう大きな道路がほぼ貸し切り状態だったので、自転車でも車道を安全に走れました。

別の日に、中央区の晴海にも行きました。

コチラもテクテクライフで現地に行く必要があったので。

江東区の湾岸エリアほどではないですが、コチラも中々のゴーストタウン。晴海はそもそも、観光に行くところではないですが、やはり帰省している人が多いのかもしれません。

有明〜お台場方面にも行きました。

晴海と違って観光地ということもあり、まばらに人が居ましたが、「ここは東京なのか?」と錯覚する程度にはゴーストタウンでした。



お台場へ行った目的はレインボーブリッジを渡らないと塗れない部分を塗るため。

レインボーブリッジは車、ゆりかもめ、徒歩の何れかの手段で渡ることができます。なお、自転車の場合、後輪に滑車みたいなものを付けて押していく必要があります。

最後に葛西臨海公園。

コチラも離れ小島(下図)のようなところがあり、現地塗りが必要だったので。離れ小島には普通に橋で歩いて渡れます。

このような感じで東京の湾岸エリア(下図の赤枠で囲っているあたり)を回ってきました。

(主な攻略エリア)

  • 港区(港南・お台場)
  • 中央区(晴海・勝どき)
  • 江東区(有明・豊洲・東雲・辰巳・塩浜・新木場・若洲)
  • 江戸川区(臨海町)

トータルの走行距離はだいたい300kmぐらい。

東京の自宅から実家までの徒歩ルートだとだいたい240kmぐらいなので、実家までの片道分以上の距離を動き回りました。もちろん、1日で全部回った訳ではなく、何日かに分けて自宅〜東京湾岸エリアを何度も往復しています。1日あたりの平均移動距離は50kmぐらい。ミニベロ(小径車)だとこの辺が限界で、もっと行動範囲を増やすにはロードレーサーとかが必要になります。(持ってない)

東京湾岸エリアは、住むにはものすごく不便な場所(そもそも新木場と臨海町には今のところ住宅は無い)ですが、道路が広く、新木場や若洲などのロジスティクス倉庫ぐらいしか無いエリアは休日に車も少ないので、自転車乗りには住心地が良いかもしれません。

ただし、投機的な事情で高級住宅街に担ぎ上げられてしまったので、平民が住めるエリアではありませんが。暴落して安くなったらあの辺への引っ越しもアリかな...と思考を巡らせましたが、どんなに暴落しても足立区や千葉とかより安くなることは無いだろうから、やはりナシかなぁ。でも、豊洲とか有明あたりなら頑張れば都心にも自転車で通えるので、毎日出勤する必要がある日々に戻ったらナシではないかも。

2021年1月7日木曜日

MSXを技術的に振り返る

MSX開発の関係者を匂わせるタイトルかもしれませんが、私は全然関係ない(外野)です。

私はマイコン世代(死語)の人間ですが、実はリアルタイムでMSXは触ったことすら無いです。私が最初に触ったパソコンはPC-9801(16bit機)で、8bit機のMSXは触る機会すらありませんでした。

なので、MSXには全然詳しくないし、思い入れとかも全然ありません。PC-9801だと使えないスプライトが使えたり、PSG音源が標準実装されている点が羨ましいと思った記憶がある程度です。

最近、TinyMSXというMSXエミュレータを開発した関係で、MSXのハード仕様的な部分であれば現役でMSXを使っていた世代の諸先輩方よりも詳しくなりました。そんな客観的視点から「MSXとは何だったのか」を分析してみようと思います。

なお、MSXにはMSX、MSX2、MSX2+、MSX turboRという4シリーズあります。

以降、初代MSXのことは便宜上「MSX1」と表記します。

まず、MSX1のハード構成は以下の通りです。

  • CPU: Z80A互換
  • MMU: 独自システム(スロット)
  • Sound: AY-3-8910
  • Video: TMS9918A

TMS9918Aはテキサス・インスツルメンツ社が開発した画像処理装置(Video Display Processor)です。かなりクセが強いですが、16KBという比較的少ないビデオメモリ(VRAM)でそこそこカラフル(16色中16色を同時発色可能)な映像表現ができます。

TMS9918は元々、1979年にリリースされたテキサス・インスツルメンツのTI-99/4というパソコン(ホームコンピュータ)に搭載するために開発されたVDPです。そして、TMS9918Aは1981年にリリースされた後継機のTI-99/4Aに搭載されました。TMS9918との違いは画面モードにMode 2が追加された点です。(Mode 2は256x3の豊富 & カラフルなキャラクタパターンを表示できる画面モードで、MSX1の市販ゲームソフトの大半がMode 2を使っています)

なお、TI-99/4は最初に16bit CPU(TMS9900)を搭載した先進的なホームコンピュータとして知られています。ただし、変態キーボードを搭載していたり、競合のAppleIIと比べて値段が高かったりといった難があり、1981年までの2年間で2万台以下しか売れませんでした。一方、後継機のTI-99/4Aはかなりヒットして、北米でトータル280万台出荷されました。

MSX1が販売された1983年の時点では、TMS9918Aは既に2年落ちの古いVDPでしたが、TI-99/4Aのヒットにより安価に調達できたものと考えられます。同年にSEGAから発売されたSG-1000にもTMS9918Aが採用されました。

ちなみに、SG-1000と同じ年(というか同じ発売日)に任天堂からファミリーコンピュータも販売されましたが、ファミコンのVDP(PPU)は、TMS9918Aと違い、3色のカラフルなスプライトを同時に64枚(TMS9918Aは単色で同時に32枚)表示でき、1ドット単位の滑らかなBGスクロールができる(TMS9918Aだと8ドット単位のカクカクなBGスクロールしかできない)という、当時としてはとても優れたものでした。

MSX1のCPUは1976年にリリースされたZ80の互換CPU(8bit)です。

そして、PSG(音源)のAY-3-8910は、1978年にリリースされたサウンドチップで、当時のゲームサウンドではほぼデファクトスタンダードの地位だったので、ゲーム機やホビー系パソコンなどに広く搭載されていました。なお、一部のMSXではYAMAHA製のYM2149(AY-3-8910の互換チップ)が使われています。

つまり、1983年に発売されたMSX1は、1976〜1981年ごろに普及した(2〜7年落ちの)古いチップセットが使われています。MSXの基本コンセプトは「ホームコンピュータの標準化」なので、ハード部分は枯れた技術の寄せ集めの方が参入障壁が下がり都合が良かったものと想像できます。

ただし、MSX2(1985年)でだいぶ状況が変わります。

MSX2では、ASCII, Microsoft, YAMAHAがMSX用に共同開発したV9938(通称MSX-VIDEO)というTMS9918A上位互換のVDPが採用されました。

V9938は、カラフルなビットマップ表示(※これはASCIIからのリクエスト)や1行に80列表示できるテキスト表示(※これはMicrosoftからのリクエスト)などが出来る反面、ゲーム向けの機能強化については申し訳ない程度にしか強化されませんでした。

当時のASCIIとMicrosoftはあまりゲームを重視していなかったようです。

グラフィックはかなりキレイになりました。

ただし、ビットマップベースの画像処理には膨大な量のデータ処理が必要です。TMS9918Aは8x8のキャラクタベースの画像処理でしたが、ビットマップベースだとデータ量が単純計算で64倍に増えることになります。しかし、CPUは依然としてZ80(9年落ち)なので、ビットマップベースの膨大な量のデータ処理には向きません。その問題を解決するため、V9938にはコマンドと呼ばれるDMA装置が実装されています。しかし、そもそもデータ処理量が多いのでコマンド実行速度は期待したほど速くありませんでした。そのため、V9938はファミコンよりもキレイなグラフ表示などができる反面、キャラクタベースの画像処理主体のゲーム・グラフィックとしての性能はファミコン(MSX2発売時点で2年落ち)に劣るものでした。実際、ザナックEXと呼ばれるファミコン版ザナックをMSX2へ移植したゲームが存在しますが、処理落ちがかなり酷いものになってしまいました。

MSX2+(1988年)でVDPがV9938からV9958に強化され、横方向のハードウェアスクロールが可能になるなどのマイナーチェンジがされましたが、CPUは依然としてZ80(12年落ち)でした。CPUについてはMSX turboRでR800(16bit)になり劇的に速くなったものの、VDPはV9958に据え置かれており、今度はコマンドのウェイト発生が動作速度upする上でのネックになったものと想像できます。

MSXは世界向けの標準規格を目指していましたが、MSX2の時点で海外のメーカーはほぼ撤退し、MSX2+では日本メーカー3社のみが残り、最後のMSX turboRに至っては日本メーカー1社だけの日本ローカル規格になってしまいました。

MSXの標準化路線自体は正しかったものの、MSX2以降でミスディレクションしているように見えます。MSX1はCPUとVDPのバランスが良かったのですが、MSX2以降の全てのシリーズではCPUとVDPのバランスが常に悪かったという点が目立ちます。MSXはどちらかというと、「ゲーム開発できるゲーム機」という側面が強かったので、ゲーム(ホビー)向けに振り切っていれば、標準規格としてもっと生き長らえることができたかもしれません。

YAMAHAはV9938の開発後、SEGAマークIIIに搭載される315-5124というTMS9918A上位互換(V9938とは別の系譜)のVDPを開発しています。315-5124はMode 4という機能が追加実装され、Mode 4ではカラフル(512色中32色同時発色)なスプライトとBGを表示でき、1ドット単位の滑らかなスクロールも実現できます。更に、Mode 4のBGはV9938のようなビットマップベースではなくキャラクタベースなので、V9938と違いバランスが良い(Z80の処理性能でも制御しやすい)VDPだといえます。Mode 4はファミコンのPPU以上の性能があります。ファミコンだとBGの属性テーブルのビットレイアウトが独特(1バイトで2x2ブロック=4キャラクタ分の属性を設定する複雑な仕様)なのに対して、315-5124はネームテーブルと属性テーブルが各1バイトのシンプルなレイアウトになっているので、315-5124の方がゲームプログラムの開発には適していると思います。

要するに、V9938ではなく315-5124を搭載したMSX (MSX1+?) が欲しかった。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...