PG

HTMLでゲームを作る

PG

ふと思い立ってWindowsについてるソリティアで暇つぶししようとしたんです。 ソリティアって単純なわりには面白いですよね。 カードゲームなら俺でも作れるかしらと思ったんですよ。 今日日のゲームはプログラムを組むのも大変ですが、 それよりなにより、グ…

エミュレータ開発で、C++からJavaScriptへ変換し、さらにJavaへ移植するという話

東日本大震災の影響で、 東京に1年半ぐらい行かされて、 ごたごたした日々が続いてましたが、 ようやく落ち着きました。 システムエンジニアなんて、 天災の影響が少なそうな業種だと思ってたんですが、 そうでもなかったです。 仙台は、自治体とか電力とかN…

ixpceその後について

以前開発していたiアプリ用PCエンジンエミュレータのixpceですが、ソースコードを暇なときにいじってたんですが どうも思ったような成果が出ませんでした。特にCPUコアのソースなんですが、速度を稼ぐ目的でほとんどの処理をインライン展開してしまったので…

ガラケーでも個人開発者がアプリを売れる時代が来た!

ガラケーの話です。 Docomoのiアプリは、AUやSoftbankのアプリに比べると割と自由に作れる環境になっていたんです。 勝手アプリというやつです。 一応、アプリを好き勝手に作って、適当なサイトにアップして配布することが可能なのですが、 使えるAPIに制限…

Webサービスを活用して転売で儲けるアプリを作ってみようかな

思いつきを書いてみます。Yahoo!オークションでは、凄まじい量の商品の取引が日々行われています。 使ったことがある方は、あとちょっとのところで落札できなくて悔しい思いをした経験もあるかと思います。 このオークションでの落札価格というのは、かなり…

JavaScriptでテ○リスを作る 第3回 グラフィックを強化する

PG

以前はブロックをただの単色の矩形で表示していたのですが、それっぽい画像を作り、それを描画するようにしました。 となると、音も鳴らしたくなるのが人情です。 JavaScriptで音を鳴らすにはどうすればいいのでしょうか? とりあえずBGMはMIDIとかで鳴らし…

JavaScriptでテ○リスを作る 第2回 開発環境をそろえよう

PG

前回、ざっくりとテトリスっぽいものを作りましたが、とりあえずブラウザとメモ帳だけでソースを書いていたので、あまり効率がいいやり方とは言えませんね。開発の手順をつかんだところで、もうちょっと楽に開発できるような環境を作ってみることにしました…

JavaScriptでテ○リスを作る 第1回 とりあえず作ってみる

PG

JavaScriptの勉強と称して、簡単なゲームを作ってみることにしました。 私はJavaScriptについて、たいした知識が無いんですが、次の仕事でバリバリ使うという話を聞いたので、ちょっと勉強してみようと思ったんです。 それでテト○スを作ってみたわけなんです…

PCEエミュを高速化したい - バンク切替をメモリコピーで実装しよう

前のエントリーで、PCEエミュのバンク切り替えをメモリコピーによって実装する話を書きました。 検討していくと、問題が発生するパターンがあることに気がつきました。PCEのCPUであるHuC6280から見えるメモリ空間は、$0000-$FFFFの64KBです。 これを8個のバ…

PCEエミュレータを高速化しよう

iアプリ用PCエンジンエミュレータであるixpceのCPUエミュレーションコアは、xpceのソースコードに含まれていたM6502という有名な6502コアをJavaへ移植したものです。 短期間でそれなりの速度と品質でC言語からJavaへ移植するために、Cソースを機械的にJavaへ…

サウンドのピッチを変えずにテンポだけ変えたい

WAVE(サウンド)のピッチを変えずにテンポだけを変える処理を組んでいます。再生時間だけを長くする処理です。PCEエミュで60FPS出ないため、サウンドの長さが不足して、音の途切れが発生します。 そこで、サウンドの長さを引き伸ばして再生してやることで、…

iアプリでPCM再生

iアプリでSDカードからwavファイルをストリーミング的に読み出して再生するプログラムを作っています。 Ga氏作成のWSX2音源のコードを利用させてもらっています。 PCエンジンエミュレータを音対応にする前段階としての、実験プログラムです。ただファイルか…

クラスローダがあればJITコンパイラを自前で実装できるのよねえ

今まで、iアプリ上で動作するエミュレータを作ってきました。iアプリの場合、一番ネックだったのがやはり「実行速度」です。 最適化には非常に悩まされました。 iアプリはJ2MEがベースとなったDoJaプロファイルという規格なんです。 J2MEは、「Java 2 Micro …

日本語でプログラミング

今度、私が参加することになったプロジェクトは、 前のプロジェクトとは対極な感じです。 以前のプロジェクト 要求仕様がめちゃめちゃ難解 プログラミングも難しい 仕様書は基本設計書以外は無かった 後からリバースエンジニアリング的に仕様書を作っていっ…

ファイルサーバが汚いと、体まで壊す

今年から新しい客先になったんです。 ドキュメント作成用、プログラム開発用で、2台のPCを付与されました。 結構速いマシンです。 前の客先は、一昔前のPCで、何をするにしても重かった… もう、この時点でかなり違う感じがしました。 ファイルサーバの中を…

iアプリ用PCエンジンエミュレータ ixpce ver0.02を公開してみた

上のQRコードをバーコードリーダーでスキャンすると、ダウンロードページへいけます。 Docomoの携帯電話で、905iシリーズ以上なら動きます。 ゲームで遊ぶまでの手順は、以下のサイトを見るとわかります。 docomoエミュレータまとめ 今回は、横画面用と縦画…

PCエンジンエミュレータ開発状況

動画撮影しました。 携帯機種はSH-04Aです。 FS3で、普通に遊べる速度で動いてますよ! もっと重いかと思ってたんですが。元となった、xpceの出来が良かったので、 ほぼ最適化してないのにかかわらず、かなりの速度で動いています。 ちょっと変わった機能と…

PCエンジンエミュレータのバグとれたかも?

スプライトの化けも直って、画面が正常に表示されるようになりました。 CPUのバグもちょっとあったんですけど、 なんとかデバッグしました… 元祖?魔女っ子シューティングの マジカルチェイスも動きます。 DoJaエミュレータ上だと遅いですけど… うんこゲーで…

PCエンジンエミュ動いたー!?

ついにDoJaエミュレータ上で、R-TYPEが動作しましたぁ なんかちょっと画面が化けてますが… あーやっと画面が出たよー 今まで、真っ暗な画面しか出なくて、 何が原因なのかずっと悩んでました 実機で動かしたら何FPSぐらい出るか楽しみです。 キー操作がまだ…

Java(DoJa)で例外が発生した行番号が分からない件

PG

PCエンジンエミュレータの移植の作業は大体終わったのですが、 (とりあえずJavaに書き直したという意味では) まだバグが取りきれていません。 エミュレータを動かしてしばらく放置すると例外が起きるようです… しかし、そのスタックトレースを見ても、ソー…

ごめんなさい

1個前に書いたエントリで、さんざんJavaのことを○○○だ!とか書いてしまったんですが、 品位がなかったですし、Java界の方々にあまりにも失礼でした。 申し訳ありませんでした。Nagiseさんから以下のブックマークコメントを頂きました。 相性が悪いことやっ…

Javaってウ○コだな(とくにDoJa)

XPCEというPCエンジンエミュレータのソースを、Java(DoJa)に移植しています。 M6502は移植完了。 今は、Pce.cppを移植作業してます。 コンパイルエラーがあと83個です。 これを上から順番に地道に直していってます。 はっきりいって苦行です。 滝に打たれ…

C言語からJavaへの移植方法まとめ

XPCEというC言語で組まれたPCエンジンエミュレータを、iアプリのJavaへ移植しています。 やっているうちに、移植手順のちょっとしたコツに気がつきました。 そんなわけで、C言語のソースから、Javaへ移植する場合の作業について、まとめておきます。 常に動…

移植がうまくいかない!!

XPCEというC言語で書かれたPCエンジンエミュレータを、iアプリのJava(DoJa)に移植する作業を行っています。 Javaにはunionやstructがないので、その辺はclassに書き換えました。 前回も書きましたが、問題なのが、unsigned型をどうするかということ。 CPU…

XPCEをWindows XPで動かしTai!

移植ベースとなるXPCEは、軽いし、いいエミュレータなんですけど、 どうもWindows XPでは動かないようなんです。 Windows2000がインストールされているマシンでは正常に動作するのですが、 XPのマシンだと、実行後、ROMを読み込んだところで強制終了してしま…

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

XPCEの6502コアはM6502ってやつなんですけど、これが実にC言語C言語してる実装でして… C言語のマクロが死ぬほど使われているんですが、Javaにマクロは無いのでこれを何とかしないとダメなんです。 (すごく…マクロです…) 色々試した結果、Visual C++のコン…

続CPUエミュレーションを速くしたい - 静的バイナリ変換のハイブリッドシステム

前回の続きです。 どうやって、デコンパイルで生成したJavaコード実行と、エミュレーション実行を、都合よく切り替えるか、という お話です。以下が簡単化した擬似コードです。 public void Execute() { while (clk > 0) { int beforeClk = clk; デコンパイ…

CPUエミュレーションを速くしたい - 静的バイナリ変換のハイブリッドシステム

たまにはエミュレーションネタを書かないとねw 以前に作っていた「FCC」というiアプリ用ファミコンエミュレータでは、通常のCPUエミュレーションに加えて、 静的バイナリ変換によってJavaコードに事前変換した6502のコードを実行するレイヤを設けて、 互換性…

C言語にあってJavaにないもの

PCエンジンエミュの移植作業を暇なときにちまちまとやってたわけなんです。xpceのソースはとってもC言語な感じです。C言語らしい書き方をされたソースです。マクロが多用されています。 C言語よりJavaのほうが後発の言語ですが、C言語にあってJavaに無い機能…

PCエンジンエミュレータ移植始めました

今までiアプリ用のファミコンエミュレータを作成してきましたが、それはいったん凍結して、新たにPCエンジンエミュレータの移植をはじめることにしました。iアプリ向けにファミコンエミュレータを作ろうと思ったころ、私の携帯はD703iというやつでした。 そ…