正直日記



2006/11/14

_ スタータップのリンク順
リンク時、crt0.Sに書いたロムヘッダの前に意図しないコードが挿入されて
なんだろうと、リンカスクリプトを書き換えては戻したりして一週間くらい
悩んでいたが、気づいてみれば原因は単純で、crtbegin.oに含まれるコード
が挿入されていた。

.specsを書き換えて

*startfile:
crt0.o%s crtbegin.o%s

という順でリンクされるようにして解決。
ようやくGensで自作イメージが動いてちょっと感動したよ。ちょっとだけな。

2006/11/13

_ m68k-elf-as
エラーを吐いた時もオブジェクトファイルを出力してくれちゃうので、二度
目のmake時は素通りしてしまうという……。-Zオプションが素で有効になっ
てるっぽい。あとでしらべる。

あと、.Sソースに書いたマクロなんかが一切処理されてない気がする……。
#defineが使えないし、#if, #ifdefディレクティブも無視されてる。
これもあとで。
_ ARMマニュアルダウンロードにクイックリファレンスカード追加
http://www.jp.arm.com/document/manual/mdl.cgi

 9. ARMおよびThumb-2命令セット クイックリファレンスカード
 10.ARM命令セット クイックリファレンスカード
 11.Thumb 16bit命令セット クイックリファレンスカード
 12.ベクタ浮動小数点命令セット クイックリファレンスカード

これはいいね。こんな感じのm68k版クイックリファレンスが欲しい。

と思っていたら、あった。Z80もあるな……。
http://fms.komkon.org/comp/

2006/11/07

_ 縦ラスター
じゃなくて、あれはなんて言うんだ。ヴァンパイアキラーの揺れる塔とか、
ガンスタのヘリとか、あとついでにクライシスフォースの多重縦スクロール
(は、パターンの方でスクロールしているように見せかけているので実は違
うらしい)とかを実現しているあの機能は?

呼称はどうでもいいとして、VDPのどこを操作してアレをやるのか分からん。
どっかに資料無いかな。と思ったら、すずめ愛好会さんの所に超絶分かりや
すい資料があった。GBAといいMDといい、ここには本当にお世話になってる
なあ……。

>
http://sega.jp/community/album/12_gunstar/interview2.html
縦分割スクロールだって!また一歩メガドライバーに近づいたぜ。
 (2006/11/09 07:47:33)

2006/11/05

_ m68k-coffをキメた(5)
make installする段階になって、また引っかかったのでメモ。

/bits/stdc++.h.gch/*': No such file or directory

 src/gcc-4.1.1/libstdc++-v3/include/stdc++.hを
 build/{target}/{cpu}/libstdc++-v3/include/{target}/bits/にコピーし
 同ディレクトリのc++config.hにtouchしてmakeすれば
 ...gch/ディレクトリの中にO0g.gch, O2g.gchが出来るはず

newlibのconfigureオプションでprefixを/usr/local/以外にしていると、
newlibのmake時に{target}-ccがcommand not found

 Makefileの
 CC = {target}-cc ...を
 CC = $(bindir)/{target}-gcc ...に置換
 ar, as, ld, dlltoolなんかも同様に置換しておく(必要ないけど)


というわけで
 binutils 2.17
 gcc 4.1.1 / 3.4.6
 newlib 1.14.0
の構築が終わったよ。間に合わなかった。手作業が多くてうんざりなんだけ
ど、パッチを当てるとかで回避出来たんだろーか。

さっそく出来たm68k-gen-elf-asでアッセンブリングしてみますが、コメント
に@や;や#が使えなくてビビった。行頭は*、行中は|でコメントするらしい。
つまりOR演算が出来ない?→NOTとANDを駆使しろっつーことらしい。
やべーですよ。
_ m68k-coffをキメた(4)
elfなのにcoffを銘打ってるのはまずいかなとか。まあいいか。

newlibのmakeが済んで、またgccのmakeし直し。まだ終わってないけど最早
時間の問題だろう。4.1.1と3.4.6の両方が同時に出来つつある。

コンパイラはいいとして、リンカスクリプトとcrt0.S書かにゃならんのよな
あ。まあなんとかしよう。メガドラのメモリマップを調べないと。

RAM 64KBの範囲でスタック含めてなんとかしないといけないんだ?狭いなあ。
ガントレットとかスプライトダブラーのためのスプライト情報をどこに退避
してんだろう?あーあとZ80どうしよう。
_ m68k-coffをキメた(3)
DevkitProはmingwでmake出来てる(はず)なんだから、同じ方法を用いれば
make出来るかも、と思いついたのでbuildscripts-20060724.tgzを落として
スクリプトを眺める。

そして、configureのオプションを以下の通りに書いたら、warningが出たり
昨日と同じ箇所で引っかかったりはしたものの、最終的にはgccのmakeが完了
してしまったらしい。(のかどうか分からん。errorは出てないんだけど)

/src/gcc-4.1.1/configure --target=m68k-elf --enable-languages=c,c++ 
--with-gcc --with-gnu-ld --with-gnu-as --with-newlib --disable-shared 
--enable-multilib --disable-threads --disable-win32-registry 
--disable-debug --disable-libmudflap --disable-libssp --disable-nls 
--with-headers=/src/newlib-1.14.0/newlib/libc/include

すげえすげえよ。wintermuteの兄貴すげえよ!
_ m68k-coffをキメた(2)
(続いた)

libiberty/regex.cで
error: sys/types.h: No such file or directory
error: strings.h: No such file or directory
とか怒られる。xgccからは見つからないらしい。しかしこれらのヘッダファ
イルをどこから読みたいのかが分からない。検索したらsys/types.hは複数
あるし、strings(string).hなんか山ほどあるし。一応、全ての組み合わせ
を試してみたが山のようなerrorは留まらない。

きえええええええええええええええええええええええええええええええええ

ここで詰まってしまった。

こんなに苦労するのは全てMinGWを使っているせいだからだ!というわけで、
Fedora Core 6のDVDイメージを落として、USBに繋がっているDVDドライブで
焼いて、さあインストールするかというところでIDEに繋がっているDVDドラ
イブが焼いたDVD-Rを認識しない。

きえええええええええええええええええええええええええええええええええ

挫折と絶望に打ちひしがれたところで今日が終わってしまった。さようなら。

Sato_Tiff > はじめまして。わたしは68000を使った古い基板のプログラムを C で書いてみようなかなと思って gcc の m68k コードを出すクロスコンパイラを作る方法を探してました。 mingw だけうまくいかなかったので参考にさせていただきます。  (2006/11/06 17:38:53)
>
どうもはじめまして。あー基板いいですね。
http://arcadedev.emuvibes.com/
自分も↑のドキュメントとか読んでMVSやPGMに手を出してみたくなったりします。
 (2006/11/07 01:41:31)

2006/11/04

_ m68k-coffをキメた
というわけで手始めにキチガイめがどらいばーになってみることにしました。
早速色々と調べてコンパイル済みの開発環境も入手したけど、gcc2.9.xとか
古いので、まあいい機会だし、一からクロスコンパイラを構築してみようか
なーと。i686-pc-mingw32で頑張ってみる。

$ /src/binutils-2.17/configure --target=m68k-coff --with-gnu-as --with-gnu-ld
$ make
* snip *
This target is no longer supported in gas

おおおお?
まあ、m68k-elf-asならmake出来るし、別にELFでも困らないとは思うけど。
イキナリ不安になってきた。

で、取りあえずbinutils 2.17が無事完了したので次はgcc 4.1.1。
(コンパイル中……)

なんかlibgcc辺りでやたらと躓くな……。

tsystem.hでinhibit_libcがどーたら
 http://gcc.gnu.org/ml/gcc-patches/2000-04/msg01217.html

tm.hでdefaults.hやらがNo such file or directoryでどーたら
 パス通ってるはずなのに見えてないんですか!
 src/gcc-4.1.1/gcc/configを作業ディレクトリに丸々コピーして解決した

(まだコンパイル中……)
終わらないので、別マシンで平行してgcc 3.4.6も構築してみることにした。
時代はシングルコア・シングルタスク・マルチパソコンですよ奥さん!
(ダブルコンパイル中……)

collect2でリンカがforkやら何やらundefined refererenceでホゲ
 mingwだとリンク出来ないらしいので除外する
 具体的にはMakefileのUSE_COLLECT2=...を消す

fixincl.cでforkやらSIGQUITやらが無いと言われる
 mkfixincl.shにm68k-*-elf | m68k-*-coffを追加

(ダブルコンパイル中……)


(眠くなってきた……)


(続く)
_ なぜ俺はメガドライバーにもペケロッパーにもならずに
キチガイうんざーの道を歩み続けてしまったんだろうなあとか考え出したら
悔しくて夜も眠れないわけですが。いや嘘ですグッスリ寝てます。

2006/11/02

_ いまさらDMA@GBA
いまさらながら、ROM・WRAM・VRAM・OAM・PALRAMそれぞれにカウンタを回す
だけのプログラムを置いてDMA割り込みで止めるというテストをしてみた。

ブロックダイアグラムを見てダメそうな予感はしてたけど、やっぱり駄目だ
ね。カウンタ回ってないね。完全にバーストな感じだね。

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12