これまでの疑問
ここ最近Karu_gamoさんとのセッションで「NESのプログラミングを再燃したいな…」と、すぐに飽きそうなものの、久々にリハビリをしてみる事に。
リハビリ内容は、「昔(1983年)から気になっていた事を実験的に確認しよう」というもので、それは「ファミリーコンピュータ版 マリオブラザーズの背景は、何故あんなものになってしまったのか?」というものです。
リハビリ内容は、「昔(1983年)から気になっていた事を実験的に確認しよう」というもので、それは「ファミリーコンピュータ版 マリオブラザーズの背景は、何故あんなものになってしまったのか?」というものです。
私はアーケード版を初めてプレーした時に、心の底からこのゲームのファンとなったのですが(その数年後にオリジナルを入手した程)、同年の秋に発売されたファミリーコンピュータ版のソレは、発売されて嬉しいとは思ったものの、かなりガッカリさせられた事の一つでもありました。
特に「土管のフォルムがまるで違った」事、「画面下部の土管の配置が『何故か』上がっていた」事に、物凄く疑問を抱いていました。ファミリーコンピュータ版をプレーしたことのある方はご存知だと思いますが、ファミリーコンピュータ版の敵は土管に入る時に「ジャンプ」をします。プログラム的には、アーケード版よりも高度な事をしている訳ですが、「何故、ワザワザこんな処理にしたのか?」を初めて見た日から気になっていました。
その5年後に、「帰ってきたマリオブラザーズ」が、ディスクライタ書き換え専用としてリリースされ、不足していたアーケード版のフィーチャーを頑張って色々と移植してくれたのですが(シェルクリーパーの甲羅の脱着や、ツララ等)、それでもこの「土管問題」は払拭されていませんでした。
しかも、ご丁寧に「ジャンプ中の操作可能」という、個人的にはマジで要らないフィーチャーまで付けてのリメイクです。
(ちなみに、その後に移植されたものは比較にすら値しないので、割愛します)
「帰ってきたマリオブラザーズ」。かなりの良移植です。
…が、これでも個人的には満足に至らなかった。
当時は、余り深いところまで考えずに、「なんでだろ?」程度の考えでしたが、今のファミリーコンピュータのハックロムの感動移植を見ていると、ちょっと頑張れば結構アーケード版に似せる事はできるような気がする…と思い、リハビリがてらにBGの実装と、パレットの実装を擬似的に作ってみました。
まずはアーケード版とFC版のBG比較。
左がアーケード、右がFC。
画面を見ると、画面サイズは同様で、256x240 pixelです。ファミリーコンピュータは、その仕様から「224ラインが有効」という事が挙がっていますが、アーキテクチャとしては「画面1 ネームテーブル」の左上アドレスは0x2300となり、右下のアドレスが0x23BF=960バイトで、1BGセルが8x8 pixelという事から、横256 pixel/8 pixel=幅32、縦240 pixel/8=30 pixel、32x30=960バイトということから、当時縦が映る/映らないテレビがあっても、それは仕様でとおりそうなものだし(大抵テレビのツマミ調整でなんとかなった)、実際にこのように実機からスクリーンショットを撮ると、ファミリーコンピュータ版は上部の16 pixelは潰されていても、テキストのレイアウト次第で土管はアーケード版と同じサイズのものを実現できるし、画面下の土管も同じ配置にできそうなものだと思っています。(これは1990年初頭から、ファミリーコンピュータが解析されて雑誌に紹介され始めた頃から、そう思ってました)
そこで、私も同じように深く考えずに画面の目コピーでプログラミングをしてみたのですが…
アーケード版とFC版(OKI自作)のBG比較。
左がアーケード、右がOKI自作。配色はとりあえずFCの制約です。
工夫は考えられますが、今はしない形で。
あれっ? なんか色がおかしくなりました。 調査をしてみると、「画面1 属性テーブル」の0x23C0~0x23C7のパレットの下位4ビット(0000_0000_xxxx_xxxxBのxxxxのところ)が、ズレているような…
左のような状態を期待したのに、右のようになっている?
とりあえず、縦に8 pixeスクロールlして、全ての値をその分ズラせば、↓のようにできました。

とりあえず縦アジャスト。(´▽`)
これでもアーケード版とクリソツにすると、画面上部の「TOP」などはファミリーコンピュータのパレットの性質上、この位置での配置は不可能です。(右に横に1BG移動程度で解決できます)
また、土管のバルブなどは色数的に不可能なので、スプライトで代替えし、色数を増やすといった措置も検討可能です。(それはそれでラインバッファの問題が課題で浮上しますが…)
ということで、ここまでは実現可能なので、帰ってきたマリオブラザーズも、これをやっていれば、更にアーケード版に近づけたと思うのですが、当時の事情なんて知らないで語っているので、色々な問題があるのかもしれません。
とりあえず個人的見解では、疑問は多少晴れて、
「頑張ればちゃんと行けたのではないのか? それも土管ジャンプの処理なんて入れずに…」
という感じになりました。
なんとなくスッキリしたので、こんなパクりなんてしないで、オリジナルのゲームを考えていこうと思います。
リハビリ終わり!(ゴロリ)
特に「土管のフォルムがまるで違った」事、「画面下部の土管の配置が『何故か』上がっていた」事に、物凄く疑問を抱いていました。ファミリーコンピュータ版をプレーしたことのある方はご存知だと思いますが、ファミリーコンピュータ版の敵は土管に入る時に「ジャンプ」をします。プログラム的には、アーケード版よりも高度な事をしている訳ですが、「何故、ワザワザこんな処理にしたのか?」を初めて見た日から気になっていました。
その5年後に、「帰ってきたマリオブラザーズ」が、ディスクライタ書き換え専用としてリリースされ、不足していたアーケード版のフィーチャーを頑張って色々と移植してくれたのですが(シェルクリーパーの甲羅の脱着や、ツララ等)、それでもこの「土管問題」は払拭されていませんでした。
しかも、ご丁寧に「ジャンプ中の操作可能」という、個人的にはマジで要らないフィーチャーまで付けてのリメイクです。
(ちなみに、その後に移植されたものは比較にすら値しないので、割愛します)
![]() | ![]() |
…が、これでも個人的には満足に至らなかった。
当時は、余り深いところまで考えずに、「なんでだろ?」程度の考えでしたが、今のファミリーコンピュータのハックロムの感動移植を見ていると、ちょっと頑張れば結構アーケード版に似せる事はできるような気がする…と思い、リハビリがてらにBGの実装と、パレットの実装を擬似的に作ってみました。
![]() | ![]() |
左がアーケード、右がFC。
画面を見ると、画面サイズは同様で、256x240 pixelです。ファミリーコンピュータは、その仕様から「224ラインが有効」という事が挙がっていますが、アーキテクチャとしては「画面1 ネームテーブル」の左上アドレスは0x2300となり、右下のアドレスが0x23BF=960バイトで、1BGセルが8x8 pixelという事から、横256 pixel/8 pixel=幅32、縦240 pixel/8=30 pixel、32x30=960バイトということから、当時縦が映る/映らないテレビがあっても、それは仕様でとおりそうなものだし(大抵テレビのツマミ調整でなんとかなった)、実際にこのように実機からスクリーンショットを撮ると、ファミリーコンピュータ版は上部の16 pixelは潰されていても、テキストのレイアウト次第で土管はアーケード版と同じサイズのものを実現できるし、画面下の土管も同じ配置にできそうなものだと思っています。(これは1990年初頭から、ファミリーコンピュータが解析されて雑誌に紹介され始めた頃から、そう思ってました)
そこで、私も同じように深く考えずに画面の目コピーでプログラミングをしてみたのですが…
![]() | ![]() |
左がアーケード、右がOKI自作。配色はとりあえずFCの制約です。
工夫は考えられますが、今はしない形で。
あれっ? なんか色がおかしくなりました。 調査をしてみると、「画面1 属性テーブル」の0x23C0~0x23C7のパレットの下位4ビット(0000_0000_xxxx_xxxxBのxxxxのところ)が、ズレているような…
![]() | ![]() |
とりあえず、縦に8 pixeスクロールlして、全ての値をその分ズラせば、↓のようにできました。

とりあえず縦アジャスト。(´▽`)
これでもアーケード版とクリソツにすると、画面上部の「TOP」などはファミリーコンピュータのパレットの性質上、この位置での配置は不可能です。(右に横に1BG移動程度で解決できます)
また、土管のバルブなどは色数的に不可能なので、スプライトで代替えし、色数を増やすといった措置も検討可能です。(それはそれでラインバッファの問題が課題で浮上しますが…)
ということで、ここまでは実現可能なので、帰ってきたマリオブラザーズも、これをやっていれば、更にアーケード版に近づけたと思うのですが、当時の事情なんて知らないで語っているので、色々な問題があるのかもしれません。
とりあえず個人的見解では、疑問は多少晴れて、
「頑張ればちゃんと行けたのではないのか? それも土管ジャンプの処理なんて入れずに…」
という感じになりました。
なんとなくスッキリしたので、こんなパクりなんてしないで、オリジナルのゲームを考えていこうと思います。
リハビリ終わり!(ゴロリ)
コメント
コメントの投稿