問題タブ [gbdk]

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.

0 投票する
2 に答える
332 参照

assembly - GBDK コンパイラの 2 の累乗乗算に関するバグ

私は現在、ゲームボーイエミュレーターを開発しており、エミュレーターの正確性をテストするために、GBDK を使用してエミュレーター用の C プログラムをコンパイルしています。

コンパイラは (予想どおり) 回転を行うことで、2 の累乗である定数を使用して乗算を最適化することに気付きました。ただし、特定のパワーに対して正しい量の回転を生成していないようです。

たとえば、次の非常に単純なプログラム:

次のアセンブリを生成します。

RR命令は実際にはキャリーフラグを介して回転し、効果的に9ビットの回転になるため、これは正しくないように見えます。これは、現在 (0x40) の間違った結果ではなく、正しい結果を生成するために追加のローテーションが必要であることを意味します。

視覚化:

これが実際に GBDK に付属する SDCC コンパイラのバグであることを確認できる人はいますか? ローテーションに続く and 命令の使用にも興味があります。

sourceforge の Windows 用 GBDK の最新 (3-2.93) バージョンを使用します。

0 投票する
1 に答える
260 参照

c - GBDK C プロジェクト (GBExtended) にスタティック ライブラリを含める

ゲームでGBExtended ライブラリを使用したいのですが、ライブラリをどのように組み込むか理解できません。

GBExtended ライブラリ (少なくとも loderunner のサンプル ソースから) にはディレクトリが含まれており、含めるincludes/必要があるファイルは.lib/src/lib/gbext.lib

必要に応じて、ファイルにライブラリを含める必要があると思います。

lccこれらのライブラリを含めるために、コンパイラに渡す必要があるフラグは何ですか? 例からこれを特定するのに苦労しています。

0 投票する
1 に答える
414 参照

c - GBDK C での typedef 構造体の前方宣言

元のゲームボーイ用のゲームを作成するために GBDK C を使用していますが、ちょっとした問題が発生しました。ゲーム内の各部屋には異なるportalsが必要ですが、それぞれportalが部屋を参照する必要があります。コードの短縮バージョンを次に示します。

これを達成する方法について何か提案はありますか? ファイルの先頭に前方宣言を追加しようとしましたstruct Portal;が、役に立ちませんでした。


次のコードを使用します。

このエラーが表示されます:

0 投票する
0 に答える
115 参照

c - C での文字列リテラルと文字リテラルの連結

私のコードでは、次のようなコンパイラ定数をいくつか定義しています。

(これらは chars、ints、何でもかまいません ... )

1 つは文字列リテラル、もう 1 つは switch ステートメントです。

私が得ている問題は、型が混在していて、コンパイラの警告が表示されることです。

これを両方のシナリオで機能させる方法はありますか?

0 投票する
2 に答える
270 参照

c - "\r" キャリッジ リターン記号を文字どおり出力する

私はCプログラミング言語を独学しています。ゲームボーイ ゲームの設計のコンテキストで学習していることを除いて (GBDEK を使用)。

私は単純なブレイクアウト クローンに取り組んでおり、printf() 関数を使用してプレーヤーのスコアを表示することにしました。プレーヤーのスコアが増加すると、表示されるスコアも当然変化するはずです。関連するコードは次のとおりです。

ゲームが開始されると、コンソールはスコアを配置するために一連の空の行を出力します。スコアが変化すると (この場合はボールがパドルに当たったとき)、ラインの先頭に戻り、新しい数字を出力する必要があります。ただし、キャリッジ リターン記号 (奇妙な CR 記号) が出力され、以前のスコアは消去されません。これが私が何を意味するかを示すスクリーンショットです。

ここに画像の説明を入力

これを修正する方法がわかりません。ヘルプ?