PCエンジンエミュレータ移植の件

XPCEの6502コアはM6502ってやつなんですけど、これが実にC言語C言語してる実装でして…


C言語のマクロが死ぬほど使われているんですが、Javaにマクロは無いのでこれを何とかしないとダメなんです。
(すごく…マクロです…)


色々試した結果、Visual C++コンパイラ(cl.exe)でプリプロセスだけ処理させることにしました。
マクロを展開したソースを吐くことができました。

cl.exe /EP in.java > out.java
とやればOKです。


これでちょっとは完成に近づきました。


それでマクロの件はどうにかなったんですけど…


M6502では、レジスタをunsigned char型にしてるんです。
これが曲者。
unsigned charなので、値が255のときに1を足したら0に戻るんです。
M6502は、この動作を前提としたソースになっています。


しかし、Javaにはunsigned char型みたいな、符号無し8bitの型は無いんです。
Javaの場合は、演算に& 0xFFをつけて、0〜255の範囲で循環するようにしてやる必要があります。


レジスタ演算している箇所全部に& 0xFFをつけないとダメなんですよ!
死ぬほどめんどくせー!!


なんでJavaにはunsigned型無いんだよ!
ふざけんなよSUN!
ぐぉおおおおおおぉおお!!!