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!
ぐぉおおおおおおぉおお!!!