問題タブ [nintendo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
handheld - Nintendo DSi SDK : はじめに
新しいニンテンドーDSiの開発について学ぶための良い出発点はありますか? このようなものを開発してテストするには、どのようなハードウェアが必要ですか? 標準の DS を使用して DSi 向けに開発できますか? どの言語を使用する必要がありますか?
[おまけの質問] : 新しい DSi は Apple のような App Store になると聞きました - 開発者はこれを使ってゲームを販売できますか?
c++ - 変なターゲット プラットフォーム用の C++ コード カバレッジ ツール
次の条件下で使用できる C++ コード カバレッジ ツールは誰でも知っています。
ターゲット プラットフォームは、カスタム組み込み OS を実行する Nintendo WII dev.kit 内のPowerPC CPUです。PC とデータを交換する唯一の方法は、独自のカスタム API を使用することです (私の NDA で申し訳ありません)。
コンパイラはマイクロソフトでも、GCCでも、コマンドラインでもありません。つまり、Metrowerks IDE です (もちろん、Windows 上で実行されます)。
前もって感謝します!
hardware - 自作のニンテンドーエンターテインメントシステムソフトウェアを実際のハードウェアでテストするにはどうすればよいですか?
数年前、私は6502アセンブリで書かれたクラスプロジェクトとしてNESゲームを実装しました。ファミコンエミュレータでしか実行していませんが、実際のハードウェアで実行してほしいです。これを行うための開発ボードはありますか?マッパーチップなどでは多少注意が必要ですが、一般的なマッパー(MMC3など)だけに限定したいと思います。
nintendo-ds - PAlibを使ったニンテンドーDS
私は代理店に代わってニンテンドー DS の開発を検討しており、devkitPro/libnds と PAlib を使い始めました。それが私たちにとって実行可能なルートであるかどうかを決定し、できれば開発キットに投資/申請するまで、これは私たちのニーズに理想的です.とライセンス。
私の主な懸念は、PAlib スタイルを開発および学習している間に、最終的にこの方法で構築されたプロジェクトを取得し、ライセンスを取得して公開することは可能ですか? まったく異なるセットアップを学ばなければならないために、これを学ぶのに多くの時間を費やしたくありません。基本的に、PAlibはHomebrew専用だと思いますか? DS ゲームのリテール開発のために何を学ぶ必要がありますか?
どうもありがとう、アントン
c++ - エミュレータ プログラミングのチュートリアルやガイドはありますか?
How do Emulators Work と How are they Written?の重複の可能性がありますか?
エミュレーターをプログラムしたい (NES か C64 かもしれませんが、まだ決めていません)。エミュレーターがたくさんあることは知っているので、なぜゼロから作りたいのかと多くの人が尋ねるかもしれませんが、いくつかの特定の特性を含めたいと考えています。その中に、そしてそれを自分で構築するためにも。
私はそれを構築し、経験を伝えることができる誰かからのガイドを読みたいと思います.私はプログラミング方法を知っているので、プラットフォーム固有である必要はありません.エミュレートする。
assembly - Nintendo 64のHello Worldを構築する方法は?
MIPS Assembly Language Programmingを読んでいますが、 Nintendo 64用の簡単な「ゲーム」を作りたいと思っています。Hello, World
画面に印刷したいのですが、誰かがこれを手伝ってくれます。始めるものがないから。
Nintendo 64 を選択したのは、友人が MIPS を使用しており、エミュレーターを既に持っていると教えてくれたからです。
sprite - NESプログラミング-ネームテーブル?
NESがどのようにそのグラフィカルな筋肉を表示するのか疑問に思っています。私はオンラインで物事を調べてそれを読み通しましたが、最後にもう1つ疑問に思っています。それはNametablesです。
基本的に、私が読んだことから、NESネームテーブルの各8x8ブロックは、グラフィックメモリを保持するパターンテーブル内の場所を指しています。さらに、ネームテーブルには、16x16ブロックごとに特定のカラーパレットを設定する属性テーブルもあります。それらは次のようにリンクされています。
(16個の8x8ブロックを想定)名前付きテーブル、ABCD =スプライトデータへのポインター:
属性テーブル、1 2 3 =カラーパレットデータへのポインタ、<は左に値を参照、^は上、'は左と上に:
したがって、上記の例では、ブロックは次のように色付けされます
さて、これを固定画面に表示すると、うまく機能します。NESの解像度は256x240ピクセルだからです。では、これらのテーブルはどのようにスクロール用に調整されますか?
Nametable0はNametable1にスクロールできるため、スクロールを続けるとNametable0は再び折り返されます。私が得ること。しかし、私が得られないのは、属性テーブルのラップアラウンドもスクロールする方法です。私がオンラインで読んだものから、属性を割り当てる16x16ブロックは、画面のエッジタイルに色の歪みを引き起こします(SMB3で左から右にスクロールした場合、またはその逆の場合に見られます)。
私が懸念しているのは、名前テーブルをスクロールする方法を理解していることですが、属性テーブルをどのようにスクロールしますか?たとえば、画面の左側に緑色のブロックがある場合、画面を右に移動すると、理論的には、フレーム内に移動するまで右側のタイルも緑色になり、元に戻ります。彼らの通常の色。
~~~~編集:私はスキャンライン、XとYについて知っていることを指摘したいと思います。この考えはちょうど私の心を駆け巡りました。
スキャンラインYが10になっているとしましょう。つまり、名前テーブルに水平方向に10個の値を読み込んでいます。これは、ピクセル幅が8しかないため、最初の列が画面から外れていることを意味します。ただし、幅が16であるため、color属性はそのままです。
列全体の色属性が緑色であると仮定すると、ユーザーにとって、画面の左側の最初の6ピクセルは緑色になり、画面の右端の10ピクセルも緑色になると仮定するのは正しいでしょうか。それで、画面によると、左という私の仮定は正しいでしょうか?
memory - 古い NES アプリケーションの「Bank Switching」スプライト
私は現在、C# で、基本的に私が開発している昔ながらの見た目のゲームの NES ハードウェアの独自の解釈と呼ぶことができるものを書いています。私は FCE を起動し、NES がどのようにグラフィックスを表示しレンダリングするかを観察してきました。
簡単に言えば、NES は 2 つのビットマップに相当するグラフィック情報を保持でき、それぞれのサイズは 128x128 です。これらは PPU テーブルと呼ばれます。1 つは BG タイル用で、もう 1 つはスプライト用です。画面上に描画するには、データがこのメモリに存在する必要がありました。ここで、ゲームがこれら 2 つのバンクよりも多くのグラフィック データを持っている場合、各フレームの最後にこの新しい情報の一部をこれらのバンクに書き込み、そこにあったものを上書きし、次のフレームからそれを使用することができます。
では、古いゲームでは、プログラマーはどのように「バンク スイッチ」を行ったのでしょうか? つまり、レベル デザイン内で、ロードするグラフィック セットをどのように知っていたのでしょうか? 画面がステージのある部分から次の部分にプログラムによってスクロールされると、ロックマン 2 のバンクが切り替わることに気付きました。しかし、どのスプライトを PPU テーブルにコピーし、どこに書き込むかなど、この情報をどのようにレベルに格納したのでしょうか?
もう 1 つの例は、MM2 で一時停止を押すことです。一時停止中に BG タイルが上書きされ、プレーヤーが一時停止を解除すると復元されます。どのタイルを交換したか、どのように元に戻すかをどのように覚えていたのでしょうか?
私が怠け者だったら、巨大な静的ビットマップを 1 つ作成し、その方法で値を取得することができました。しかし、私はこれらの価値を制限して、より本物の体験を作り出すようにしています. MC Kids の作成方法に関するすばらしいガイドを読みました。このゲームのプログラミング方法については最低限のことをしようとしています。これらのプログラマーが持っていたものを使って何を成し遂げたのか、今でも頭がおかしくなります。
編集:私が考えることができる唯一の解決策は、どのタイルがいつPPUにあるべきかを示す個別のテーブルを保持することですが、それはNESが処理できない巨大なメモリリソースになると思います.
retro-computing - レトロなビデオゲームのプログラミング
スーパー マリオ ブラザーズ -1 ワールドの不具合を youtube で見たところ、これらのゲームの背後にあるコードについて本当に疑問に思い始めました。どの言語が使用されましたか? ビデオ ゲーム コンソールの OS はどうですか? このテーマに関するリソースが掲載されている Web サイトはありますか? (私は 90 年代のビデオ ゲーマーなので、これらのゲームの背後にあるプログラミングに特に興味がありますが、必要に応じて、これを wiki にして、ビデオ ゲーム プログラミング全般に関するリソースへのリンクを含めてください)
vb.net - ゲームでの 2D マップのレンダリング - トリミングとスクロール
わかった。私は本質的に、NES ハードウェアの独自の解釈を作成しようとしているので、理想的には NES ゲームがどのように見えるかに似たゲームを作成できます。私は現在、プレイフィールドをビデオメモリ(バックバッファ)に描画する方法を調整する方法にこだわっています。
バックバッファ
NES には、ネームテーブルまたはバックバッファに制限がありました。私の例では、バックバッファのサイズは 256x240 ピクセル、つまり 1 画面のサイズです。これをテレビに描いてみたら、画面いっぱいにぎっしり。ここで、これを X=5 のオフセットで画面に描画すると、画像全体がずれて画面に回り込みます。
例えば.....
画面はそれぞれ 8x8 ピクセルの正方形に分割され、合計 32x30 行と列になります。(256x240 ピクセル)。オフセットは、列ではなくピクセルで表されます。したがって、理論的には、画面を 5 ピクセルずらすことができ、すべての列が 5 ピクセルだけ右にシフトされます。
レベルの設計
私のステージは、16x15 の行と列 (それぞれ 16x16 ピクセル) で表されるデータを含む画面で構成されています。これは、いくつの NES ゲームがレベル データを格納したかをエミュレートするためのものです。各タイルには、各 8x8 ブロックに何が含まれるべきかに関する情報が保持されます。
例えば:
レベル デザインもこれで表されます。各番号は異なる画面であり、- は何も意味せず、null です。
キャラクターの配置 これは簡単です。文字の絶対位置に基づいて、文字がどのテーブル、行、および列に基づいているかを判断する方法は既に知っています。画面内の相対的な位置も判断できます。
この情報を使用すると、文字の左右にどの列があるかを簡単に把握できます (文字が画面 1 の左側にある場合、赤は左にはありません)。
ここに質問があります DUN DUN DUN どうすれば自分のレベルを画面に描画して、あるレベルから次のレベルにスクロールできますか。一度に 1 つの画面全体を描画するのは比較的簡単で、キャラクターが端に来たら別の画面に切り替えるだけです。
ただし、私が概念的に抱えている問題は、レベル データを画面に「ストリーミング」する必要があることです。つまり、キャラクターが右に 24 ピクセル移動するとします。BGも移動する必要があります。
そのため、バックバッファのスクロールを 24 ピクセル調整する必要があります。ただし、スクロールするだけで画面がオーバーラップし、レベルの古い部分が表示されます。そのため、スクロール中にレベルの新しい部分をバック バッファーに描画する必要があります。しかし、それを行う前に、最初に描画する必要があるタイルを特定する必要があります。人が左に 24 ピクセル移動した場合は、タイルをバックバッファーに再描画し、それに応じてオフセットも変更する必要があります。
また、キャラクターが右に移動し、描画するレベル データがなくなった場合、オフセットはなく、代わりにキャラクターが画面の端に近づくことを忘れないでください ( X 軸)。
基本的に、私は今、頭の中にたくさんの異なる数字と値が詰まっています. 私がこれにどのようにアプローチできるかについて、誰にも見通しがありますか?
編集: VB.Net を使用します。C#も適用可能です(私は両方でプログラムしています)