EXCEEDの同人ソフト開発日記という名の備忘録

趣味のゲームソフト開発人。プロなのかアマなのかは不明(不定)らしい。

任天堂のソフトはいつも予定通りに出てこないって言われるけど、
ソフト作りっていうのは、そういうもの。
ゲームソフトは、期限までにやれと言われて、徹夜したり死に物狂いでやったからといって、
期待通りのものにはならない。そういうふうにすると、
結局、チームは妥協しなければならなくなる。
妥協させられて、できたものは、粗くなってしまう。
ユーザーは目が肥えていますから、受け付けてもらえない

山内 薄

XLATE65

XLATE09 という単語にピンと来た人は相当のマニアです(笑)

まあ、早い話、M6502 コードを MC68000ニーモニックに変換したいとか考えているわけですが、それのメモ

・キャリーの挙動

 6502でキャリーが変化するのは SEC CLC は当たり前として、
 CMP系 SBC ADC を行ったときのみ。INC や DEC や LD では変化しない。
 INC や DEC は addi.b #1 や subi.b #1 で対処することになるので、
 キャリーが変化してしまう。

 気をつけけなくてはならないのが、以下のようなソース

 SEC
 SBC #$10
 INX
 BCS label

 これをベタでMC68000ニーモニックに変換すると INX に該当する処理で
 キャリーの値が不安定になるため、超要注意。

 で、この辺を MoveToCCR とかでいちいち対処してたらめちゃくちゃ
 パフォーマンスが落ちるので、フラグ回避作業はやめて、
 吐き出されたソースのフラグ挙動管理は自己責任とする(笑)



・複数行に展開されるものはソースの見通しが悪くなるのでマクロ対処

 LDA $c200,X


 
movea.l a6,a5
adda.l #$c200,a5
move.b (a5,d1.w),d0

 か

 move.l #$c200,d7
 add.w d1,d7
move.b (a6,d7.l),d0

 どっちが軽いかはデータシートみないとわからんな・・・


・ついでなんで、MCF54xx も行っとく?

 いや、それはあとで考えよう・・・・
 そのためにもマクロ使うんだし・・・