読者です 読者をやめる 読者になる 読者になる

KOYAMA Yoshiaki のブログ

プログラミングについての試行錯誤をつらつら書き溜めていきます。

PC-G850V のエミュレータ

mac pc-g850v プログラム
Version 0
http://www16.ocn.ne.jp/~ver0/index.html
http://ver0.sakura.ne.jp/

Linux/Windows/MacOSX用ソフトウェア
SHARP PC-G850/G815/E200エミュレータ g800 version 0.9.8
http://www16.ocn.ne.jp/~ver0/pc/index.html#g800
http://ver0.sakura.ne.jp/pc/index.html#g800

以前、見つけた、まるひろさんのPC-G850V エミュレータを試してみることにしました。残念ながら、PowerPC バイナリだけで Intel 版はないようです。

それで、ソースからビルドしてみることにしました。

Simple DirectMedia Layer
http://www.libsdl.org/index.php

まず、最初に SDL をインストールする必要があるようです。

Simple DirectMedia Layer
http://www.libsdl.org/download-1.2.php

の Source Code:

SDL-1.2.14.tar.gz - GPG signed
SDL-1.2.14-1.src.rpm - GPG signed
SDL-1.2.14.zip - GPG signed

のいづれかをダウンロードして

./configure
make
sudo make install

するだけで /usr/local/bin にコピーされるようです。


今回は Source Code からビルドして /usr/local/bin にコピーせず、

Simple DirectMedia Layer
http://www.libsdl.org/download-1.2.php
Runtime Libraries:
Mac OS X: 
SDL-1.2.14.dmg

Development Libraries:
Mac OS X: 
SDL-devel-1.2.14-extras.dmg (templates and documentation)

をインストールして SDL.framework、Xcode テンプレートを利用してビルドしてみました。(試していませんが、実行ファイル内のフレームワークSDL.framework をコピーするようにすれば、SDLをインストールせずに実行できるので便利かもしれません。)


SDL の知識もないので、

ただ g800.c の

int main(int argc, char *argv[]) 

int g800_main(int argc, char *argv[]) 

に変更し、

SDLMain.m の先頭に

extern int g800_main(int argc, char *argv[]);

を宣言し、

static void CustomApplicationMain (int argc, char **argv) 関数内で

/* */
	g800_main(argc, argv);
 /* Start the main event loop */
 	[NSApp run];

g800_main を呼ぶようにしました。

z80.h で ビッグエンディアン (big endian)、リトルエンディアン (little endian) の判別ができていないようなので

#include <stdio.h>
#if defined(Z80_USE_SDL)
/* 省略 */
#endif

#define Z80_LITTLEENDIAN	1

上のように Z80_LITTLEENDIAN を宣言しました。

Xcode でビルドするため、ソースを UTF8 に変換し(本当は、文字コード : Shift-JIS のままでも問題はありません。)、文字 ¥を置換を使って、すべて \ (Option + \) に変更しました。何とかビルドすることに成功しました。


また、

Linux/Windows/MacOSX用ソフトウェア
SHARP PC-G850/G815/E200エミュレータ g800 version 0.9.8
http://www16.ocn.ne.jp/~ver0/pc/index.html#g800
http://ver0.sakura.ne.jp/pc/index.html#g800

の copyrom.zip を使って、PC-G850V の ROM を吸い出す必要があります。ここで、はまりました。

base.txt
rom00.txt  rom01.txt rom02.txt rom03.txt rom04.txt rom05.txt 
rom06.txt rom07.txt rom08.txt rom09.txt rom09.txt rom09.txt 
rom0a.txt rom0b.txt rom0c.txt rom0d.txt rom0e.txt rom0f.txt 
rom10.txt rom11.txt rom12.txt rom13.txt rom14.txt rom15.txt 

PC-G850V の場合 ROM BANK 15 ( rom15.txt ) まで吸い出す必要があります。ソースを覗いたり、動作を追跡したりしましたが、結局、ホームページを見て気付きました。動作した時は、本当にうれしかったです。

拙作
MINE [Minesweeper ver 0.2]

COSMO PATROL
http://orange.kakiko.com/cosmopatrol/
咳めぐさんの
箱入り娘。
モッピーのアルバイト

を実行した動画を添付しておきます。

拙作
DUMP [DUMP ver 0.1]
EYES [Eyes version 0.1]

の動画については、

PC-G850V
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html

で公開しています。

また、転送するテキストにカナ文字が含まれている時は、Sio / Format の parity を none にすると良いようです。

ESC キーを押して電源を切ると空のウインドウが開きますが、Xcode 内のテンプレート main.c でウインドウを作成しているためだと思います。もう一度、ESCキーを押して終了する必要があります。


動作環境は

Mac OS X 10.6.2 ビルド 10C540

Xcode バージョン 3.2.1 64-bit
コンポーネントのバージョン
Xcode IDE: 1613.0
Xcode Core: 1614.0
ToolSupport: 1591.0

SDL-1.2.14.dmg (SDL.framework)
SDL-devel-1.2.14-extras.dmg (templates and documentation) (Xcode テンプレート)

です。

[ MINE [Minesweeper ver 0.2] ]

[ 箱入り娘。]

[ モッピーのアルバイト ]


おまけ、前回紹介した iYKTwitter にプロフィール画像を追加してみました。画像を添付しておきます。