reiju's diary

オタクが文字を入力しておくだけ

SDL2のkeysymの取り扱いには注意しよう

環境

Linux arch-note 4.14.8-1-ARCH #1 SMP PREEMPT Wed Dec 20 21:27:44 UTC 2017 x86_64 GNU/Linux

上がC, 下はC++ではなくDです。どちらも同等の動きをします。


gistbf948df59f11c8e707c529f339119612


gist158724b107b0283dbc1169de6915e490

SDL_Event.key.keysym.symの値は、KEYDOWNしない時にはどうやらマウスのX座標がそのまま代入されるようで、画面に表示される線の上にマウスをもっていってやるとプログラムが落ちます(この場合のコードは)。

f:id:xreiju:20171226170603p:plain

というわけで、SDL2でキーボードの入力を受けつけるときは、必ずSDL_Event.typeがSDL_KEYDOWNであることを確認するif文を挟むようにしましょう。

ちなみに、マウスの座標はSDL_GetMouseStateをつかえば取得できます。

追記: 知識ある方に共用体のためこうなるのは当然と教えてもらいました。確かにそうです。確認不足で申し訳ない。

Cyro氏のアルセウス取得方法の解説

Cyro氏による、このトリックについての翻訳済みの文章および解説は公開を許諾されています。詳細はこちらへ

こんにちは、Reijuです。Cyro氏が十年来に解明した、アルセウスの取得方法を解説します。

私の翻訳ではどうしてもわかりづらいことが多いので、改めて書こうと思いました。

まず、重要なステップはこちらです。

続きを読む

ポケモンDPでアルセウスを出現させる方法(翻訳)

Cyro氏による、このトリックについての翻訳済みの文章および解説は公開を許諾されています。詳細はこちらへ

リタイアトリックを使うことで、なぞのばしょでの移動を介してアルセウスを出現させることが可能です。

下にあるステップに正確に従わなければいけません。RAMの値は読み込まれたマップデータによって操作されます。あなたが下のステップに従うことで訪れるマップそれぞれは、アルセウスを出現させるために必要なデータをメモリに上書きするものです。

続きを読む

ポケモンDPの技術的解説(翻訳)

Cyro氏による、このトリックについての翻訳済みの文章および解説は公開を許諾されています。詳細はこちらへ

追記: 2017-02-05 13時に編集を行いました。

 

BACKGROUND

Pokemon D/Pは動的アドレスを扱うので、別言語のROM間で、ベースアドレスと最もこのトリックに関係したメモリの相対位置は異なります。説明の一貫性のため、USバージョンのD/Pのアドレスや相対位置を扱って説明します。

ゲーム内のすべてのマップは4つの主要なプロパティを持ちます。それらは家具(像、植物など)、オブジェクト(スプライト)、ワープ(ドア、洞窟の出入り口など)、そしてトリガー(自動スクリプトの床)です。下にあるのはベースアドレスと、のちに扱われるメモリの相対位置です。

続きを読む