gprof「undefined reference to `mcount’」エラー回避

Posted on

gprofの概要とか。

 gprofが何なのかよく分かってる人は次の項目からどうぞ。

 現在、Eclipse+CDTを使ってCでゲームを書いているのですが、ちょっと遅い。どこにボトルネックがあるのか気になっていたのですが、手動で時間を計るのは、さすがにめんどくさい。

 というわけでいろいろ探してたところ、どうもGNUのgprofという、関数別に実行時間を測定してくれるソフトがあるらしい。まあ多分一般常識レベルなんでしょうけどね、この世界だと・・・。

 利用するためにはプロファイルというのが必要で、ビルドオプションをいじって、実行後にプロファイルがexeファイルと同じフォルダに出来上がるようにしなきゃいけないらしい。で、このプロファイルとexeファイルをgprofに流し込むと分析してくれるそうな。

 で、Eclipseの設定を眺めると、コンパイラのデバッグオプションの設定項目に、gprof用のプロファイルを出力するオプションがあります。これをチェックすればいいのか、やっぱGUIって何だかんだ言って楽だ†1な、と思って余裕でクリーンコンパイルしたところ、

undefined reference to `mcount'

というのがリンク時に出てきて完了できない。結構これで詰まってる人は多いんじゃないでしょうか。だって、EclipseCDTはこれしか設定項目がないから

 で、長々と書きましたが、結局は、どうやってEclipse+CDTでプロファイルを出力する実行ファイルを出力するか、がこの記事でやりたいことです。

リンクエラーが出てしまった原因。

 こちらを参考にすればすぐわかる事ですが、コンパイラオプションだけでなく、リンカオプションにも-pgオプションを設定する必要があります

 Eclipse+CDTの設定項目はコンパイラオプションにしか追加してくれません。何考えてるの?

Eclipse+CDTでプロファイルを出力させるには

まずは、[プロジェクト]->[プロパティ]->[C/C++ビルド]を表示させておきます。

コンパイラオプション

 [GCC C コンパイラー]->[デバッグ]で表示される設定項目のうちの、[gprof向けプロファイル情報の生成(-pg)]をチェック

リンカオプション

 [GCC C リンカー]->[その他]の、リンカー・フラグに「-pg」を追加します。

テストするには

 上記を設定したあとに完全コンパイルしたあとに一回実行して、gmon.outが出力されていることを確認。

 コマンドプロンプトを起動して、gprof.exeにパスが通っていることを確認した後にコンパイルしたexeファイルと同じフォルダに移動して、

gprof ***.exe gmon.out -p

とすると、各関数別の実行時間を表示してくれます。下のほうの英文が要らないと思ったら「-b」オプションです。

 なお、静的ライブラリにおいては、コンパイルオプションに-gpがついていると時間測定はしてくれるようですが、何回呼び出されたか、に関しては分からないみたいです。ゲームのうちの中核部分は静的ライブラリにして呼び出していたので、これは残念・・・・。

ちなみに

 合計で0.01秒以上実行時間がないと時間が不明なので、ゲームの場合は結構な時間動かしておかないと測定できないかも。ゲームで0.01秒って言ったらかなり長い時間ですからね。約0.6フレーム。

どうでもいいこと

うさだBlog」をアンテナに追加しました。鋭すぎる。ネトゲ以外にも話題はあるので、ぜひご一読をお勧めします。プログラミング技術もすごいっぽい。

 こういう人に成りたいなぁ。どうやったら成れるのかなぁ。とりあえずはお勉強がんばります。。。。

 要するに、ヵっぉぉゃっょ。

 何をいまさら。7~8年くらい前にぁゃιぃわーるど周辺ではやってませんでしたっけ、この表現。タイトルからしてそうですし。というか、あんぐら全般?今の女子中学生があんな書き込みを見たら、なんて思うのかな?w

  • †1: まあGUIってホント糞なUIだな、CUI最高と思うこともあるわけですが。

GBA版パネルでポン修正パッチ 「セレクトへ戻る」使用不能

Posted on

効用

 スタートを押して出るPAUSEメニューで、「セレクトへ戻る」を使っても「このままつづける」と同じ効果になります。ついでに最初に出てくる警告メッセージも削除してあります。

パッチ概要

 先日パネルでポンのエンドレスで99万9999(6桁カンスト)しようとした所、AでPAUSEメニューを出したときに間違えて「セレクトへ戻る」を押してしまい、スコアがパーになりました。それで頭に来たので、このメニューを無効化するパッチを製作しました。

 パネポン発売一周年記念ってことで。

書き換えポイント

0810eb34:d00a
0810eb38:d00a

ジャンプ先の調整です。

0810eb4c:2001
0810eb4e:7020

カーソルの指している位置を無理やり「このままつづける」に変更します。

ちなみに,

0810eb4c:2000

にすると,「最初から」になります.一応.目的から言ってそれはやりませんがw

書き換えパッチ

 IPSと実行ファイルの二つを用意しました。

その他

 製作時間は2日で合計4時間ぐらい。そんなもんですかね。パッチをあてたROMを起動するにはフラッシュカードとかSuperCardとかその手のが必要ですが、前者はともかくSuperCardとかM3Adapterは電池を食うので、バッテリー切れでスコアがパーになる可能性もあります。ご注意ください。エミュレータでやるんだったらどこでもセーブがあるので、このパッチ自体不要だと思います。

 逆汗でもしてもらえれば分かるんですが、カーソルのさしている先で処理を分岐する所が、いらないといえばいらない分岐をしているので、そこを消してなんとか他の命令を書き込むスペースをギリギリ確保しています。良かった、良かった。ただしその分,エラー処理が消えてます.まあいいか.

bitGenerations用「警告-健康と安全のために」解除パッチャー

Posted on

 ウェイトコードと、一部のループをつぶしています。OrbitalとColorisの処理を参考にして作ったので、OrbitalとColorisでは完璧に動作します。

ダウンロード

 使用にはJavaが動作する環境が必要です。使用方法はファイル名をコマンドライン引数にして実行するだけです。

 Windowsの場合はサーナイトのアイコンのプログラムにドラッグ&ドロップするだけで使えます。複数ファイルOKです。(と思ったけどサーナイトのアイコンのプログラムの方のバグで無理な場合もあるかも?そのときはひとつづつお願いします。。。。)

使用は自己責任でお願いします。(おやくそく)

動作リスト

  • 1st
    • Boundish—?
    • Dial Hex—?
    • Dot Stream—?
  • 2nd
    • Sound Voyager–?
    • Orbital–○
    • Digi Drive–?
    • Coloris–○

○:完璧に動作する

△:すこし問題あり

×:解除できない、または起動できない

?:不明

テスト結果を募集中です。ご協力お願いします。

GBA「警告-健康と安全のために」メッセージ解析

Posted on

 DSに合わせて最近の任天堂製GBAソフトにつくようになった、「警告-健康と安全のために」という題名の警告メッセージ。最初の一回だけとはいえ、イライラします。確実に興ざめです。消すべく解析してみました。

共通のパッチャーは・・・作れない!

 RTCの時計無効化パッチや、セーブパッチ(って何やってるのか知りませんけど)は共通のパッチ用プログラムがあって、なかなか便利です。これはハードウェアである以上使用方法が一緒だからだと思いますが、そうなるとハードウェアとはあまり関係が無い警告メッセージは共通パッチャは作れません。個別に解析する必要があります。

 いや、当初は作れるかなと思っていたんです。このプログラムはどうせ同じプログラムを使いまわしてると思ってたので。しかし・・・。警告メッセージのプログラムは共通ではありません。

 わかりやすい違いは、たとえばポケモン不思議のダンジョンです。ほかのゲームの警告メッセージは、「ボタンを押してください」の点滅がフェードイン、フェードアウトを繰り返す滑らかな点滅なのに対し、このゲームだけはフェードインもフェードアウトもせず、いきなり黒文字がでて、いきなり消えます。

 なめらかな点滅のもの同士でも、逆アセンブルリスト上、ずいぶん異なります。ここまで違うのはコンパイルオプションの最適化の影響ではないと思います。

BitGenerationsだけは共通パッチャ作れそう

 BitGenerationsの「Orbital」を解析して発見した特徴的なビット列を「Coloris」でも発見しました。これらはさすがに同じプログラムを使いまわしているようです。

 そのすぐ後に出た「リズム天国」も調べてみたところ、発見できませんでした。やはり開発プロジェクトごとにこのプログラムを作っているようです。まあそんなに難しくもないですしね。

BitGenerationsのメッセージプログラムの特徴

  • 0x04000006のIOレジスタを何度も用いたウェイトコード。なぜか関数に纏めずに毎回毎回直に書いてるので検索すればすくにわかる。
  • その周辺で0x04000130のキー入力を読んでる。普通は専用関数に飛ばすし、その関数はひとつだけ。(ドクマリパネポンは例外として共通メニュー、ゲーム本編*2、お試し版*2で合計5つ存在します)

これだけだと不十分で一瞬表示されてしまうこともあるので、一部のループも回避しないと駄目っぽいです。

解析のためのヒント

 まずはキー入力だと思います。BitGenerationsは制御コードに直に描いてあったので、見つけやすいです。何かひとつでもボタンを押しているかどうかのチェックを行っているというのもヒントだと思います。

 それを見つけたらあとは周辺のadd r0,#0x1とか、レジスタとの条件分岐とか、丁寧に読むのが面倒だったらそこらへんのを適当につぶしてれば見つかると思います。フェードイン用、文字が点滅し始めるまで用、文字の点滅用、フェードアウト用で4つくらいはカウントと条件分岐があるはずです。

 ジャンプ命令を使って飛ばそうというのは若干無謀です。大人しくちょこまかいじった方が安定しているようです。

BitGenerations用のパッチャ作ってくるノシ

 やっぱJavaかな。特定の環境でしか動かないプログラムはできるだけ作りたくない。まあ動かすまでが面倒ですが、こんなのを使う人間ならすでにJavaの実行環境くらい持ってる気がw

こもります。さがさないでね

Posted on

 宿題1割もやってねぇ^^;;;;

 というわけで宿題のためにこもります。

ポケモン予約してきた

 周りにポケモンやる人間がいよいよ居なくなりそうな感じなので、二本ともかっちゃいました><

 セブンイレブンで8760円です。

 っていうか最初の3匹どれも使う気が起きないんですけど、どうしましょう(苦笑)。

 まあ、というのは建前ですけどね。実際は海洋堂のふぃぎゃーかなw

 もしも誰か欲しいという人間がいれば売りつけるかもw

ネギま!?

 そういえば新作あにめ。

 うんうん、なんでne.jpなんだろう、といった疑問を軽く吹っ飛ばす衝撃のフレーズ。

10月4日(水)夕方5:30~

(中略)放送開始!

 ななんだってぇええ!!111!”!!深夜じゃないのかYO!!!!11111

 この時間じゃ恥ずかしくて見れません><

 録画か!?録画専用なのかっ!?

 絵柄が前に比べて可愛らしくなりましたね。こっちの方がいいや。 ストーリー的には文化祭なのかな?・・・武道会もこの絵でやるの?

 ってか、5:30のアニメで仮契約したり女装しちゃったりして良いんですかね。というわけで、個人的にゆえやのどかは当然として、キツネギ(ネギツネ)に注目www

 この絵柄だとさらに可愛くなりそうな予感wwwww

フマキラーの子供用質問サイトが面白すぎる件

 虫博士回答手抜き杉ワラタwwww

 個人的にはこれとかこれがツボでしたw

 明らかにネタな質問にも答える博士ステキです><

 セミのとこを見てみれば、予想通り「ひぐらしのなく頃に」祭りでした><

 これはさすがにやり過ぎだ。。。

 子供のしょーもない質問だけでなく、けっこう専門的な質問にもすらすら答えてる所からも、博士の実力が伺えます。アルバイトの学生ではなく、きっとフマキラーの研究者が片手間でやってるんですね。

 あー、そういえば去年の今頃はNHKの子供科学電話相談に出ちゃいましたね、懐かしいw

 あのときに比べてさらに声がおっさん臭くなったかもw

 もう無理な年なのか・・・。寂しいなぁ。もうちょっと暴れておけばよかったよ・・・。

宇多田ヒカルがテトリス強すぎな件

 30人中26勝。強すぎ。ちなみにテトリスDSも買いましたが、今の所、一勝も出来てないです。orz。例によって友達コード募集中。

 動画来てました。ボタンが硬い~って・・・それ任天堂のイベントで言っちゃっていいのかなw

 DSにケーブル付いてますけど・・・これはACアダプタにしては太すぎる気が・・・このハブ使ってるのかな?

 たかがテトリスされどテトリス本人の日記。

3戦目。落ち着け私!このコントローラーと心を一つにするのだ!いざ勝負!そして・・・快勝!!!や、やっとまともにプレイできた!そうよもう負けないわ!

「よっしゃー!!」と叫びそうになるも、ふと気づくと会場はなんとなく微妙な空気。

・・・よりによって相手は7才の女の子でした。

( ;´・_・`)ぅ・・ご、ごめんねおねえちゃん普段はこんなにこわい人じゃないの・・・あ、そ、そんな顔しないで・・・ね・・・ま、またテトリスしようね・・・

 ワラタ。大人げないw

 まあ自分もポケモンなら小学生相手に完全本気モードですけどw

男性ネットゲーマーが女性を演じる理由

Posted on

 ・・・呼んだ?(ぁ

 ポケモンシリーズはもちろんのこと、その他RPGでも男女が選べれば女にしてます。ネトゲもそうです。キャラ持ってるのはレッドストーン(ビーストテイマー)とテイルズウィーバー(ティチエル)とマビノギ(女と男で選択可能)ですが、全部女。まあ殆どやってないけど。どれも友人に誘われてやったネトゲですが、友人も女のキャラつかってた気がします。

 そういえば、去年のポケモンリーグの大会の決勝戦も、二人ともリアル性別は男でしたが、二人とも女の子の主人公つかってましたね。

 ネトゲのキャラに関しては、ファッションが女の方がしやすい、と聞いたから、と自分の中では理由付けしてるんですが、じゃなんでポケモンも女の子にしてるのか。

 こちらの「・異性キャラへの同一視・ショタキャラへの同一視(少なくとも、男性オタクの場合)」が参考になるかもしれません。

 元の記事に戻ると、

 「必ずしも意識的に(女性キャラクターに)決めたわけではない。ただ、ほかのゲームでは強い女性キャラクターを演じられる機会がないというのはある。変身体験を楽しんでいる」(同氏)

 変身体験・・・まあそうかもしれませんね。自分の場合、正直言って男ばっかりやってるのも飽きるので、ゲーム内だけでも女になった気分になるのかもしれません。

 これは・・・上であげたサイトの、「1.彼らのうちに男性としての成熟から退却したい心性が存在している可能性。退却対象としての女キャラ・ショタキャラへの憧れ→同一視?(男性成熟から逃避)」

 これに見事なまでにこれに当てはまりそうな予感・・・。

 まあ、それだけじゃなくって、単純に見てて可愛いってのもあるんでしょうけど。

 そもそもリアルだと殆どファッションに気を配らないのに、なんでネトゲ内だとキャラの衣装に凝ろうとするのかが謎です。まあリアル世界よりはお金が掛からないってのもあるんでしょうが、もしかすると女の子の服装への無意識の憧れがあるのかもしれません。・・・正直書いてて恥ずかしい。

 テキサス州オースティンで法律関係の秘書をしているエリカ・プールさん(31)は、オンラインゲームで女性キャラクターを演じている男性プレイヤーを見分ける方法があると言う。

 「キャラクターの衣装の露出度が高いというのが大きなヒント。それに胸が大きいほど、男性がプレイヤーである可能性が高い」とも。

 ねーよwwww

 まあ露出が高くて胸の大きいキャラは男しか使わない気がしますが、 ティチエルみたいな対極のキャラも人気ありますから。

 まあアメリカヲタクはそうなのかもしれません。

 「オンラインで知り合った人の中にインディアナ州に住む子持ちの女性がいて、わたしが実際は男で、女性キャラクターをプレイしているということに好奇心を抱いてしまった。実際のわたしは毛深い大男だと彼女に打ち明けざるを得なくなった」(ウィリアムさん)

 まあ別にリアル性別でもあるけどねwww

 ネトゲキャラって男だとカッコいいキャラが多いですから、ネトゲ内恋愛でうまくいったとしても、両者の写真を交換したら関係が終わることは多いらしいです。

それにしても。

 今度はこちらのネタをご覧ください。ちょっとグロ注意です。写真は無いですが、男の場合は冷や汗が出てくるかもしれませんw

 ネットゲーマーはネトゲ内だけでも女性になりたがっていました。こちらのネタでは、息子を「娘」にしたい母親が出てきました。2ちゃんのネタですから、どこまで信用できるかはともかく。

 なんだか、男から逃れようとしている傾向が見えませんか?環境ホルモンで男性が女性になって行く、というのが一時期話題になりましたが、もしかして精神構造からもこの影響が出てるんじゃないかという気がしてきました。恐ろしい。

今MysteryHouseやってるんだけど

Posted on

 今は無きApple][のソフトです.結構有名な方?

 親いわく,「懐かしい」だそうですよw

 学生時代に遊んでたらしいw

で,最近はエミュレータという便利なものがあるので,遊んでみました.

20060416-01.PNG

あなたはアバンドネッド・ビクトリアンの大きな家の前の庭にいます.

石の階段が幅の広い屋根つき玄関へと続いています.

コマンドを入力してください?_

で,これどうやって入るの?(ぉ

GET(GO) HOUSEとかGET(GO) INSIDEとかGET(GO) PORCHとか何入れても中に入れません><

(数分後)

ASCEND STAIRS

で入れたー!!!知らねぇよそんな単語!!!11

で,OPEN DOORでドアを開けて,中に入るには・・・・また詰まったっ!_| ̄|○

20060416-02.PNG

gain houseとかenter houseとかgo houseとかget houseとか色々試しましたが・・・駄目(‘A`)

辞書必須のゲームバランスに感激です_| ̄|○

英語の勉強にはなる・・・かな?いや・・・

 親曰く,「数ヶ月詰まった.短剣の単語をknifeとかswordとか試したけどダメで,友人がdaggerで試したらうまくいって教えてもらった.そんな単語しらん><」らしいです.ちなみに,結局途中で投げたってさw

 「でもこのゲームのお陰でRPGとかアドベンチャは卒業した.時間の無駄><」とかも言ってたw

ねー,誰か攻略サイト教えてよー?探したけど全然見つからないよー_| ̄|○

 今見ると凄い貧相なグラフィックですが,これはこれで味があって良いのかもしれません.これぐらいなら作れそうと思えますしね,自分でもw

 実際にはハードの制限とかで辛かったのかな?今度歴史の生き証人に聞いてみるかw

追記2007/03/24

 できました。ENTER DOORです。そうか、そういう表現もあるんだな。一年もかかるとはw

20070324-01.PNG

THE DOOR HAS BEEN CLOSED AND LOCKED
YOU ARE IN THE ENTRY HALL. DOORWAYS GO EAST, WEST, AND SOUTH.
A STAIRWAY GOES UP.
 ドアが閉じ、ロックされました。
 あなたは今玄関ホールに居ます。出入り口が東西南にあり、階段が上に続いています。

 ASCNED UPSTAIRSであがれて、downで下がれるのを確認。

 東西南は・・・わかりません。。。

 GET NOTEでノートが取れるのはいいんだけど、ノートの中身はどうすれば良いのでしょうか・・・w

 VIEWとかじゃ駄目なんだよなぁ。

 しゃべり方もわかりません。

 謎が謎を呼ぶアドベンチャー!(ある意味で)

ベーシックもあったんですけど

エミュに付属の奴.つーか著作権も何もないなぁ.

20060416-03.PNG

コマンドよくワカラナス

 ここを見てベーシックモードのコマンドは大体は分かってきたんですが,call先に何があるかとか,call -151で出てくるモニタモードのコマンドとか良く分からないです・・・.今更ネット上に資料も無いしね.

 家にAppltⅡ関連で最近出た本があるのと,もしかしたら親の学生自体のマニュアルがあるかもしれないので今度探してみます.それでも分からなかったら親が暇なときに聞いてみます(ぉ

 結構奥が深い予感.

「成分解析」 for CGI written in C

Posted on

もしかして,自分,馬鹿じゃね?(何を今更

これ,プログラミングの練習に丁度いいですね.そうですね,HelloWorldの次の次の次の次くらいに書くには丁度良いですね.

っていうか,その,ポインタで結構苦戦しました(ぉ

Javaの参照型で慣れてるつもりだったんですが,ダメダメですね.

「成分解析」 for CGI written in Cの成分解析結果 :
「成分解析」 for CGI written in Cの40%はやらしさで出来ています。
「成分解析」 for CGI written in Cの34%は柳の樹皮で出来ています。
「成分解析」 for CGI written in Cの22%は砂糖で出来ています。
「成分解析」 for CGI written in Cの2%は鍛錬で出来ています。
「成分解析」 for CGI written in Cの1%は努力で出来ています。
「成分解析」 for CGI written in Cの1%はツンデレで出来ています。

うるさいうるさいうるさい!(ぉ

(04/07追記)GETメソッドにしてみました.こっちの方が簡単なのに,なんでPOSTにしてたんだろ?掲示板とかだとPOSTの方が良いらしいんですが.つか宿題終わってねぇ(‘A`)

(04/12追記)同じパーセンテージの時に,少し結果が変わってしまうのを修正.

「成分解析」 for Java

Posted on

 「成分解析」解析結果に基づいて,JavaAppletで作っちゃいました.よって,本家と同じ結果を返します.あれ?宿題やるんじゃないの?(‘A`)

 重そうなので下においておきます.つーかさ,Javaでツール作るって結構難しいね.符号なしの型が無いからさ.Cでも本格的にお勉強しようかしら.

 なお,本家には10種類以上表示できないバグ(“あ”といれて見ればわかる.99%にしかならない)があるのですが,Java版では本来の動作をさせています.

 (04/06追記)CでCGIにも移植しました.

Read more

カブロボウォッチ 6号さん優勝

Posted on
1 鈴木さやか@6号さんBayesianRobot   2005-12-16   71   6,896,400円
2 iwatch		BayesianRobot   2005-12-19   70   6,783,500円
3 dal102		BayesianRobot   2005-12-21   68   6,614,500円
4 ぺす		BayesianRobot   2005-12-25   67   6,585,000円
5 悠之介		簡易ロボット        2006-01-01   62   6,568,100円

 というわけで,6号さんが一位でした.おめでとうございますオブジイヤー☆(w

 記念という事で続編のぱにぽにたーぼ!よろしくお願いします(w>スクエニ

 なっちんは,資産総額 5,579,100円で総資産でのランキング160 位で終了となりました・・・かも.運用期間が長いので,年率ランキングではランクが落ち,281位でした・・・かも.

 結局最終晩は昭和シェルを買いあさり,エーザイを売ろうとするものの50万円の制限が掛かってたので売れない,というので安定してしまいました・・・かも.原因は,判断基準を長期にしすぎてしまい判断がなかなか切り替わらなかったこと,売るのにも制限をかけてしまったこと(売るのに関しては最低でも一株分,とかすればよかった・・・かも.) などがある・・・かも.

 次回の5月上旬のコンテストにも参加したい・・・かも.6号さんはどうするのかなぁ・・・かも?

連絡

 宿題がヤヴァイので一週間以上はお休みします(;´Д`)

 〆切間際の修羅場は逆に落ち着く事が大事なんだよね~