【MSX】GLORIOUS FORCE と DumpListEditorの強力な機能&プログラム確認用データ(For MSX FAN)

GLORIOUS FORCE

f:id:uniskie:20220301211914p:plain

グロリアスフォース」
MSX(要RAM32KB/CasetteTape専用)
コマンド戦闘型RPG

月刊ログイン 1987年7月号掲載:
ソフトウェアコンテストグランプリ作品

 

グロリアスフォース」はTAKERUで販売されていたMSX用の良作RPG「ラドラの伝説」の前身となる作品で、こちらもグラフィックのセンスが飛びぬけています。

f:id:uniskie:20220301212029p:plain

なんとリストを打ち込むだけでこんなかっこいい画面で遊べます。

 

このゲームはラドラの伝説のタイトル画面をツイートしたところ、そこで教えていただいたもので、

おこのみ実験場~「投稿ゲーム再発見『グロリアスフォース』」 (psyzans.com)

おこのみ実験場さんで詳細が紹介されています。

 

(↓参考までにこちらがラドラの伝説のタイトル画面)

f:id:uniskie:20220305095440p:plain

ラドラの伝説(MSX1 DISK / ソフトベンダーTAKERUで販売)

■ リスト打ち込み作業

f:id:uniskie:20220305100138j:plain

月刊ログイン 1987年7月号に掲載されていたリストをOCR併用で打ち込みました。

f:id:uniskie:20220301212709p:plain

印刷は0とOが見分けづらく、OCRでは「0」(ゼロ)を「O」(オー)、8(数字の八)を0(ゼロ)と間違えがちで結構苦労しました。

肉眼だと細さやサイズの違いでオーとゼロの違いは分かるのですが、OCRは制御方法がよくわからないので、OCR変換された後のものを雑誌と見比べながら修正していきました。

(それでも、1から入力するのに比べたら遥かに楽です!)

 

今回の作業には「Program List OCR」「Scan Tailor」「Dump List Editor」 を使用しました。

手順は

  1.  スキャナで取り込み
  2.  Scan Tailorで画像補正
  3.  Program List OCRでテキストデータに変換
  4.  Dump List Editorでテキスト修正&casファイル化

でした。

 

ProgramListOCRの使い方はこちら:
Program List OCR 1.0.0リリース!: 808 Midway (seesaa.net)

Dump List Editorはこちら:
PC-8001を懐かしむページ (ojaru.jp)

 

■ 想像の10倍は強力だったDumpListEditorの機能

DumpListEditorは強力な機能を満載しています。
触ってみるととんでもない便利さにびっくりすると思います。

f:id:uniskie:20220302022624p:plain

MSX-BASICにも強力な対応。特殊文字も平気。
  • MSX-BASICを含めた各種BASICの文法解析(とエラー箇所表示)
  • BASICで使用されている変数リスト出力
  • テキストとBASファイルの相互変換
  • MSXFANファンダムのプログラムチェックデータ出力
  • 各種雑誌のダンプリスト方式(ログインも対応)のチェックサム解析(とエラー箇所表示)
  • ダンプリストとバイナリファイルの相互変換
  • アセンブルソースとバイナリファイルの相互変換
  • 行番号やアドレスの抜けチェック
  • MSX-BASIC独自の文字コードへの自動変換(全角文字をMSX文字コードに変換してくれる。コピーペーストでもファイル入出力でもできる。)

f:id:uniskie:20220302022946p:plain

各種ダンプリスト形式へ対応

f:id:uniskie:20220302022830p:plain

DSKイメージやCASイメージの作成や中身の編集も可能

 

元々はP6やP8用だったようなのですが、MSXにも追加で対応されたものです。
MSXユーザーからしても相当な高機能でとんでもない便利ソフトです。

 

OCRでは誤認識が少ないほうが良い為、
使用する文字種が少ないダンプリストの方が、
BASICリストより楽に完成させることができました。

(どちらも8→0、B↔8を誤認識する場合がありますが、ダンプリストは1↔l、O↔0、S↔5の誤認識を心配せずに済みます。)

 

とにかく、雑誌を見ながら
修正したら「チェック!」ボタン。
修正したら「チェック!」ボタン。

この繰り返しでどんどん問題が減っていくわけですね。
DumpListEditorが無かったらきっとくじけていたと思います。

■ 変数リストの使い方

f:id:uniskie:20220302022728p:plain

該当箇所のエラー表示以外も、変数リストが思いのほか強力でした。

構文解析で変数リストを出してくれるのですが、
例えば、「GOSUB」を打ち間違えて「G05UB」になっていた場合、変数として変数リストに出力されるので一目で分かります。

■ファンダムプログラムチェッカー機能の使い方

f:id:uniskie:20220302022634p:plain

また、ファンダムプログラムチェッカー機能があるので、このチェックデータを比較すれば、間違っている行がすぐわかるという寸法です。

そのためには、先に正常に打ち込みを完成した人にプログラムチェッカーデータを教えてもらう必要があります。

で。

これが、今回の本題になりますが、
自分の打ち込んだものと比較してくれる人を募集しております(笑)

宜しければ比較して教えてください。

自分のうちこんだBGFというファイル名のBASICプログラムのチェックデータはこちらになります。

 

※ 一部余計なコメントが紛れ込んでいたため、2022/03/02 02:20 更新しました。

 

2022/03/05  本名荒井 (id:fukenko)さんが比較検証してくださいました!

fukenko.hatenablog.com

 

結果、2か所、自分の打ち込み間違いが判明し修正することが出来ました。
ありがとうございます!

参考用に、どういう間違いだったかも掲載しておきます。
OCRだとこういう感じで意外と予想外な誤変換があったりしますね。

f:id:uniskie:20220305025328p:plain

f:id:uniskie:20220305025336p:plain

 1890> 1 0ss3 ※間違い

 3060>156 Pwh0 ※間違い

こういった流れも、これから打ち込みをされる方の参考になれば幸いです。

荒井さんありがとうございました!

↓ 修正後のプログラム確認用データ

---------プログラム確認用データ(For MSX FAN)
 1000>207	C8H0
 1010>255	NI60
 1020> 73	Oa40
 1030> 38	0lH0
 1040>242	T480
 1050>231	xqD0
 1060>199	xmA0
 1070>169	rE00
 1080>253	Do80
 1090>236	JR30
 1100>190	Ori0
 1110>143	7i60
 1120>  1	el10
 1130>127	jCJ0
 1140>191	M410
 1150>138	MCN0
 1160>218	Hj70
 1170>143	w310
 1180> 15	5kS0
 1190>175	E410
 1200> 96	R1U0
 1210>205	Hj70
 1220> 48	e5w0
 1230> 74	Mh70
 1240>208	twI0
 1250>249	cXg1
 1260>  4	kIS1
 1270> 14	1WS0
 1280>165	MUs0
 1290> 77	8tJ3
 1300> 59	xbi0
 1310>184	CV40
 1320>106	hWG0
 1330>186	wHd0
 1340>145	P700
 1350>  2	ef10
 1360> 57	RIL0
 1370>252	8670
 1380> 38	GDi0
 1390> 40	4s40
 1400> 79	6dK0
 1410>206	4e20
 1420> 19	Z600
 1430> 93	JV00
 1440>119	e520
 1450>153	8GE0
 1460>218	Asj0
 1470>247	Dt80
 1480> 19	UMS0
 1490> 47	D4H0
 1500> 41	quS2
 1510>198	M200
 1520> 93	fHr0
 1530>186	9530
 1540> 34	8dN0
 1550> 22	e350
 1560>235	7U41
 1570>136	bbX1
 1580>242	3U60
 1590>215	I3F0
 1600>245	9D70
 1610> 37	JS00
 1620> 40	rGE1
 1630>224	vU40
 1640>196	u341
 1650>242	3U60
 1660> 19	kq60
 1670>227	le91
 1680> 64	k6i0
 1690> 81	Z610
 1700>196	Ch10
 1710> 68	DW61
 1720> 56	iK31
 1730>122	WWs0
 1740> 98	kQ30
 1750> 92	eA00
 1760> 98	fTC0
 1770> 51	MMD0
 1780>253	YCT1
 1790>231	P1w0
 1800> 73	BQM0
 1810>207	NPJ0
 1820> 68	67p0
 1830>102	tZP0
 1840> 59	2P40
 1850>104	CvY0
 1860>189	ilA0
 1870>206	4A40
 1880>  8	9290
 1890>166	Rns3
 1900>214	cFi1
 1910> 67	wVl1
 1920>100	rvD0
 1930>138	bRp1
 1940>195	PsB0
 1950>219	ont0
 1960>147	qH80
 1970>226	uOJ0
 1980> 21	o210
 1990>165	jwQ0
 2000>143	B200
 2010>189	wO40
 2020>193	TZ60
 2030>211	Nu02
 2040>  7	R600
 2050>241	Tg00
 2060>213	7f50
 2070> 41	s220
 2080>  2	jAA0
 2090> 50	dkJ0
 2100>207	cN90
 2110> 42	OEA0
 2120> 47	xM31
 2130> 10	Zxb0
 2140>245	PbB0
 2150> 17	EBr0
 2160>194	BDa0
 2170>191	2lV0
 2180> 65	IYh0
 2190> 67	npB0
 2200>239	eWG0
 2210>206	omF1
 2220>199	tCR1
 2230>166	Dd00
 2240>180	b0S0
 2250>199	ORP0
 2260>162	hBB0
 2270> 67	C260
 2280>194	EsY0
 2290> 68	ZsY0
 2300> 41	XTF0
 2310> 19	kJu0
 2320>135	Wx10
 2330>111	sf10
 2340> 79	N300
 2350>188	mr10
 2360> 73	9c00
 2370>190	IjM0
 2380> 47	7E00
 2390>111	rxG0
 2400>198	OLX0
 2410>236	oZJ0
 2420>176	l3Y1
 2430> 61	XI00
 2440>208	WH00
 2450> 93	4E10
 2460> 27	U6B0
 2470>210	aO30
 2480> 74	WFO0
 2490>255	Bdh0
 2500>226	P4W0
 2510> 99	DYI0
 2520> 41	uCa0
 2530>152	GjH0
 2540>104	Oni0
 2550> 37	JS00
 2560>113	U510
 2570>212	TVF0
 2580>232	Jf74
 2590>234	6Sn0
 2600>179	ndH0
 2610> 66	BiD0
 2620> 84	0L50
 2630>237	ss10
 2640> 12	ICB0
 2650> 15	5Y10
 2660> 39	moi1
 2670> 76	t760
 2680>133	kKU0
 2690> 27	sf30
 2700> 25	r760
 2710>153	7hL0
 2720> 95	dC01
 2730> 60	B8k0
 2740>240	H430
 2750>164	Wl00
 2760> 63	p270
 2770>164	qA90
 2780>143	B200
 2790> 51	wZO0
 2800> 53	f310
 2810> 27	9ws0
 2820> 21	4ph1
 2830>153	Y9A0
 2840> 90	7f00
 2850>115	E5g0
 2860> 51	Wt10
 2870>173	ad50
 2880> 19	C620
 2890> 35	I260
 2900>155	gbg0
 2910> 50	rOm0
 2920>130	kaf0
 2930>171	jMF1
 2940>142	n6d0
 2950>181	tgJ0
 2960> 53	2lg0
 2970> 40	QmW0
 2980>175	s240
 2990>252	4Z30
 3000> 80	gIL0
 3010>234	f1B0
 3020>225	REM0
 3030>189	6W10
 3040>175	UZ20
 3050>229	eNB0
 3060> 43	0hg0
 3070> 43	rYH0
 3080>144	YvM0
 3090>226	5oi2
 3100> 76	lW11
 3110> 60	RTG0
 3120> 58	OGo2
 3130>210	rvL0
 3140> 38	wdD0
 3150>206	IJa1
 3160> 48	nuB0
 3170> 44	or40
 3180> 21	twE0
 3190> 72	fAf0
 3200> 82	hG90
 3210>138	0k70
 3220>126	mQv0
 3230> 93	K750
 3240>186	MkE0
 3250>210	8MK4
 3260>236	NW50
 3270>111	wX40
 3280>207	Uf30
 3290> 50	jXV1
 3300> 48	xPO0
 3310>229	fj60
 3320> 39	n5A0
 3330> 41	YZ50
 3340>218	pE40
 3350>166	oXD0
 3360>182	iUD0
 3370> 24	SQS0
 3380>187	XD60
 3390>112	bF20
 3400> 39	4e10
 3410> 93	JV00
 3420> 17	7GW0
 3430>186	CHN0
 3440>196	PoB0
 3450> 78	8p20
 3460>226	Zt00
 3470> 14	9f30
 3480> 49	0DF0
 3490>  5	q9f0
 3500>128	eA00
 3510>187	Cu91
 3520> 18	2ow0
 3530>169	wDB1
 3540>240	dRA0
 3550> 46	Vb32
 3560>173	iFT4
 3570>246	Aw01
 3580> 82	R153
 3590>131	cZD0
 3600>142	t8Z3
 3610> 29	7HP0
 3620>228	XSg0
 3630>171	oF90
 3640>  1	P2E0
 3650>237	EX53
 3660> 35	ew70
 3670>143	pDG0
 3680>128	AeP0

 

以上です。

自分が実際に動かして遊んでいるものは、最初の行を

1000 CLEAR:SCREEN1:DEFINTF-Z:DEFSNGA-E,G,M,N,V:ONSTOPGOSUB1510:STOPOFF:GOTO3540

に変更していますが、

チェックデータの方は変更前のプログラムで作成したチェックデータになります。

 

f:id:uniskie:20220301220300p:plain

綺麗ですね~。

今度はちゃんと打ち込みエラーなく動きそうです。

■ プログラムで気になるポイント

プログラムを眺めていて気になったのは文字変数領域のオーバーの可能性です。

LGF(スタートアップ・ロードプログラム)でメモリ範囲宣言CLEAR 80,&HB7FFをしているのですが、BGF(ゲームメインプログラム)で、文字変数の扱いを見ていると文字データの総数が80バイトをオーバーしそうな気がします。

DumpListEditorのBASICコード解析結果の変数リストを参考に軽く調べた感じでは、

■ 内容可変の文字変数:
SA$    VRAMから読み取った4桁の16進数
    FNQ(X,Y)=VPEEK(&H1800+X+Y*32)
A$    汎用。READ、PLAY、MAGIC名
B$    "F2DE2G2RF2GE2C2" 固定?
E$    敵キャラ名。11文字
S$    メッセージ表示用。一時変数
G$    PLAY BGM
PLAY文やPRINT文で文字列を連結する際の一時エリア

■ 内容固定の文字変数:
EX$    "EXIT"
Z$    "ENEMY"
Y$    "YOU DON'T HAVE "
P$    "T255L64V13"
UI$    CHR$(13)
U$    CHR$(34)
NM$(7)    FOOD,WEAPON,DRUG,ITEM,MYSTIC,POW,INN
DA$(18)    ERROR!,STATUS,MAGIC,ITEM,M.SPEED,LOAD,OPEN,CONTROL,END,ATTACK,MAGIC,ITEM,RUNAWAY,EXAMINE,PUSH SPACE!,COMMAND,HERALD,":SLEEPING...",":AWAKED!"

のような感じでした。

 

OpenMSX等で文字列変数領域の中身を表示する機能とかあれば分かりそうですね。
OpenMSXのツールコマンドはスプリプトで記述されていて、動作中のメモリの状態等を読み書き出来るみたいなので、文字変数領域のBASICワークエリア解析とかもできそうですよね。
BASICプログラム開発の役に立つので、既にどなたか作ったりしてないんでしょうか?

 

 

OpenMSX 1.7.0 初期設定変更+キー暴走対策(2020/03/13更新)

 

※(2020/03/07) OpenMSX1.7.0情報と、CAPS,半角/全角キー問題の対処、同時押し化け問題を追記しました。
※(2020/03/08) 同時押し化けが実機再現である事や、同時押し化け再現の無効化について追記しました。
※(2020/03/10) 自前でmachine設定をカスタマイズしたい場合、MyDocument/openMSX/share/mahinesに配置したファイルが優先されるのでそちらに置くことを推奨するよう追記
※(2020/03/13) LALTにCapsLockを割り当てるとGRAPHキーが使えなくなるため、秀CAPS64を推奨するようにしました。

OpenMSX 1.7.0が出ました。
https://openmsx.org/

f:id:uniskie:20220307201924p:plain

 

■ 1.7.0の注目点

1.6.0ほどの大きな変更は見られませんが、細かい利便性の向上やバグフィックスが主な変更です。細かい問題まだまだたくさんありますね。

https://raw.githubusercontent.com/openMSX/openMSX/RELEASE_17_0/doc/release-notes.txt

残念ながらCAPSキー半角/全角キーや、かなファイル名問題は依然として残ったままです。(対策は後述)

■ 1.6.0の注目点

SDL2(入力描画音声などのライブラリ)とTcl8.6(スクリプト)への移行が大きな変更点。(エミュレーション以外の内部動作が少し変わっているようです)

機能面では利便性の向上と、OPLLの改善が一番大きいかと思います。

NukeYKT OPLLコアへの変更

以前より再現度が上がりました。(以前はハイハットの音量が低く、音も結構違い、BlueMSXと同じような感じでした。)

ただし、実機に比べるとフィルタが実装されていない為、逆に全音域がクリア過ぎて高音域やリズム音が逆に少し目立ち過ぎる感じです。
これは同じく2021年8月頃のアップデートで再現度が上がった最新のEMU2413や、VM2413でも同様です。

新しく曲を作る分には音域の幅が広くて良いのですが、過去に作られた名曲を聴く場合は、結構パート間の音量バランスが破綻するレベルになっていたりします。

ローパスフィルタやハイパスフィルタもエミュレーションで設定できるようになると嬉しいのですが……。

■ セットアップ

起動方法や準備などは他を検索してみてください。
BIOSを自前で用意する場合など)
https://umipi.hatenadiary.org/entry/2020/05/10/000008

■ 起動方法(Catapultの薦め)

OpenMSX.exeでは無くて、
OpenMSX\Catapult\bin\Catapult.exeを起動してやると楽です。
(OpenMSXをダウンロードしてインストール/解凍すると入っています)

UIで色々設定をしたり、ROMやディスクを入れ替えたりもできます。
ディスクイメージやROMファイルをドロップしてやるとそこにセットされます。

また、DiskへフォルダをドロップするとPCのフォルダをDiskとして読み書きできます。(ファイルアクセスのみ。ファイル数と容量も2DDで可能な数まで)

OpenMSXとリアルタイムに連動しますので、結構便利ですね。



■ 設定ファイル

OpenMSX設定は、
%My Documents%\openMSX\share\settings.xml
に保存されます。

マイドキュメントにない場合は、
OpenMSX\Share\settings.xml
のものがマイドキュメントへコピーされます。

■ キーボードトラブル

日本語への対応はイマイチで、たまにトラブルが起きます。
その場合の対処法を軽くまとめ。

  • 半角/全角でおかしくなった
    →ALT+半角/全角を押すか、違うウィンドウにフォーカスを移動する。
    予防策→半角/全角キーに「なにもしない」を割り当てる。(次項参照)
  • CAPSが点滅する
    →SHIFT+CAPSで切り替えるか、違うウィンドウにフォーカスを移動する。
    予防策→CAPSキーに「なにもしない」を割り当て、左ALTキーにCAPSキーを割り当てる。(次項参照)
  • かなキーが勝手に解除される
    予防策→かな自動解除機能を無効化する(次々項参照)

■ CAPSLOCK、半角/全角キーが勝手にリピートされる問題

SDLという色んな機種用に共通して利用できる基本システムを使って、キー入力やウィンドウ描画や音声再生をしているのですが、このSDL側の問題で、

・半角/全角キーを離しても通知がすぐに来ない

・CapsLockキーを離しても通知がすぐに来ない

という問題があります。

違うウィンドウにフォーカスが移動するとキーを離したことが通知されるのですが、

それまで通知されないので一生押したまま扱いになってしまうようです。

*1

 

解決方法(CAPSLOCKキー):

CAPSLOCKキーを無効化して、LALTに割り当てる方法を試してみたのですが、
そうするとGRAPHキーが使えなくなってしまいました。

そこで、秀CAPS64を使用して、SHIFT無しでも英数キーではなくてCAPSLOCKとして扱うように変更する方法をお勧めします。

f:id:uniskie:20220313124214p:plain

こうするとなぜかOpenMSXで、SHIFT無しでのCAPSLOCKキーを検出できなくなって、自動リピート暴走が無くなります。

CAPSLOCK状態を切り替えるにはSHIFT+CAPSLOCKキーを使ってください。

(SHIFT+CAPSLOCKキーはCAPSキーとして認識され、リピート暴走もしません)

 

解決方法(半角/全角キー):

OpenMSXエミュレーター側で、該当キーを無効化し、CAPSキーの代わりに左ALTをMSXのCAPSキーとして扱うように設定します。

*2

 

%My Documents%\openMSX\share\settings.xml
を開き<bindings>から</bindings>の間に

  <bindings>
    <bind key="keyb BACKQUOTE"/>
    <bind key="keyb BACKQUOTE+SHIFT"/>
    <bind key="keyb BACKQUOTE+CTRL"/>
    <bind key="keyb BACKQUOTE+CTRL+SHIFT"/>
    <bind key="keyb BACKQUOTE+ALT"/>
  </bindings>

を追加、保存します。

例)

<!DOCTYPE settings SYSTEM 'settings.dtd'>
<settings>
  <settings>
    <setting id="kbd_auto_toggle_code_kana_lock">false</setting>
  </settings>
  <bindings>
    <bind key="keyb BACKQUOTE"/>
    <bind key="keyb BACKQUOTE+SHIFT"/>
    <bind key="keyb BACKQUOTE+CTRL"/>
    <bind key="keyb BACKQUOTE+CTRL+SHIFT"/>
    <bind key="keyb BACKQUOTE+ALT"/>
  </bindings>
</settings>

※<settings>~</settings>の中に、さらに<settings>~</settings>と<bindings>~</bindings>がある形です。

■参考:コンソールコマンド

OpenMSXでF10を押すと出てくるコンソールでbindコマンドでも

bind RCTRL keymatrixdown 6 0x08
bind RCTRL,release keymatrixup 6 0x08

のようにキーに機能割り当てができます。

(※ LALTはGRAPHキーとして使用しているので、空いているのはRCTRLぐらい?)

 

keymatrixdown 6 0x08
は、MSXキーマトリクス6行目の0x08(CAPSキー)を押すというコマンドです。

keymatrixupは指定したキーを離すというコマンド)

 

ただ、「なにもしない」を割り当てる方法が分からなかったので、
settings.xmlファイルで指定するようにしました。

 

※ ちなみに、bindコマンドで設定した物は「OpenMSX終了時設定自動セーブ」を有効にしているとsettings.xmlに保存されます。

 

もし、右CTRLキーにCAPSLOCKを割り当てたい場合は

    <bind key="keyb CAPSLOCK"/>
    <bind key="keyb CAPSLOCK+SHIFT"/>
    <bind key="keyb RCTRL">keymatrixdown 6 0x08</bind>
    <bind key="keyb RCTRL,RELEASE">keymatrixup 6 0x08</bind>

をsettings.xmlの<bindings>セクションに追加してください。

 

■ かなキーが勝手に解除される問題

OpenMSXの初期設定は、英語圏向けに

「かなキーは次に1文字入力すると勝手に解除される動作」
に設定されています。

英語圏では特殊アクセント文字を入力する際に使うキーになっているため)

日本語圏では勝手に解除されるのは非常に困ります。
そこで「カナキー自動解除機能」をOFFに変更する必要があります。

解決方法:
%My Documents%\openMSX\share\settings.xml
を開き<settings>から</settings>の間に

<setting id="kbd_auto_toggle_code_kana_lock">false</setting>

を追加、保存します。

例)

<!DOCTYPE settings SYSTEM 'settings.dtd'>
<settings>
  <settings>
    <setting id="kbd_auto_toggle_code_kana_lock">false</setting>
  </settings>
  <bindings>
    <bind key="keyb BACKQUOTE"/>
    <bind key="keyb BACKQUOTE+SHIFT"/>
    <bind key="keyb BACKQUOTE+CTRL"/>
    <bind key="keyb BACKQUOTE+CTRL+SHIFT"/>
    <bind key="keyb BACKQUOTE+ALT"/>
    <bind key="keyb CAPSLOCK"/>
    <bind key="keyb CAPSLOCK+SHIFT"/>
    <bind key="keyb LALT">keymatrixdown 6 0x08</bind>
    <bind key="keyb LALT,RELEASE">keymatrixup 6 0x08</bind>
  </bindings>
</settings>

これで、初期設定で、かなキー自動解除をしなくなります。

■ キー入力同時押しが化ける問題(キーゴースト)

OpenMSXでのキー同時押し化け現象。

画像

「7890」が「7890;」に化けたり、
SHIFT+K+LがCTRL+LやCTRL+Kに化ける。

これはMSX実機の仕様(バグ?)を忠実に再現した物だそうです。
(キーマトリクスの上下が影響しあってしまう現象)
実際に、CASIO MX-10、Panasonic A1GTの実機で同様の現象が発生するのを確認しました。

これはOpenMSXが完全な再現を目指しているので実装されているのですね。

該当処理は OpenMSX/src/input/keyboard.cc の doKeyGhosting()で処理されています。

f:id:uniskie:20220308184642p:plain

OpenMSX/src/input/keyboard.cc

ゴーストも2タイプあって、SHIFT・GRAPH・CODE(かな)の3つにLEDを挟んでゴースト対策した機種と、全部にゴーストが発生するものがあるようです。

これらは機種毎の設定記述ファイルで制御されています。
OpenMSX/share/machines/*.xml 

<msxconfig>
  <devices>
    <PPI id="ppi">
      <key_ghosting>false</key_ghosting>
    </PPI>
  </devices>
</msxconfig>

のように、<devices>の<PPI>の中の設定になります。

  • key_ghosting"
    falseならキーゴーストを発生させない。
    (省略時はtrue)
  • key_ghosting_sgc_protected
    falseならShiftGraphicCodeの保護をしない。(Codeは日本ではかなキー)
    (省略時はtrue)

例えば、C-BIOSを使用した架空マシンの定義ではキーゴーストは再現していないのでこんな感じ。

f:id:uniskie:20220308194944p:plain

C-BIOS_MSX1.xml

CASIO MX-10/101ではキーゴーストありで、ShiftGraphCodeキーの保護もないのでこんな感じ。

f:id:uniskie:20220308195019p:plain

Casio_MX-101.xml

解決方法:

自分好みのカスタマイズMSXマシンを作る。

手順:

① お好みのマシンのxmlをコピー

openMSX/share/mahines から、
%My Documents%\openMSX\share\mahines にコピーを推奨します。
同じファイル名であれば、%My Documents%\openMSX\share\mahines に配置したファイルが優先されます。
また、アップデート時に上書きれる心配もなくなります。

② ファイル名変更と、設定マシン名を変更

openMSX/share/mahines に置く場合や、既存のマシンと共存させたい場合、ファイル名を変更すると分かりやすいです。

例)Casio_MX-10.xmlCasio_MX-101k.xml

とし、

  <info>
    <manufacturer>Casio</manufacturer>
    <code>MX-101k</code>

とする等。

PPIグループの設定にkey_ghosting falseを追加

    <key_ghosting>false</key_ghosting>

あとは、CatapultでFile→Test MSX Hardwaresを実行して、記述に問題が無ければMSXTypeで選べるようになります。

例)

f:id:uniskie:20220308200134p:plain

f:id:uniskie:20220308200156p:plain

■ カタカナ、ひらがなファイルの問題

フォルダをディスクドライブとしてマウントする機能があるのですが、そのなかにカタカナファイル名があるとFILESで化けたり、ひらがなファイル名でSAVE/LOADしようとするとOpenMSXがエラーで強制終了したりします。

(1chipMSX等では特にそういう問題はないのですが)

解決方法:

内部処理のバグは解決を待つしかありませんが、
今できる暫定対策としては
基本的にファイル名にカナを使う場合はDSKイメージで扱う」のが良さそうです。

BIOSの準備

C-BIOSであれば最初から用意されていますが、C-BIOSはディスクが使えません。
ディスクが使いたい場合、BIOSは自分で用意する必要があります。

BIOS(システムROM)を実機から取り出すには、
fMSX98 の MAKEROM.BASや
BlueMSXPanasonic dump tools や Kanjirom dump tool
などを使うといいかもしれません。
(「MSX BIOS 吸出し」で検索すると色々出てくると思います)

BIOSロムファイルをディスク等に保存したら、
OpenMSX\share\machines の中の各マシンのxmlファイルを開き、
そこに記述されているファイル名にして
OpenMSX\share\systemroms に配置します。

FDCロムはファイルサイズなど調整する必要があるかもしれません。
無理やり動かすなら手持ちのロムファイルをsha1計算ツールなどで調べて
手持ちに合わせた<sha1></sha1>を追加するのも手です。

sha1値の追加例)
複数行かいておくと、どれかに合えばOKとなります

<PanasonicRom id="Firmware ROM">
<rom>
<sha1>e779c338eb91a7dea3ff75f3fde76b8af22c4a3a</sha1>
<sha1>5fa3aa79aeba2c0441f349e78e9a16d9d64422ea</sha1>
<filename>fs-a1gt_firmware.rom</filename>
</rom>
</PanasonicRom>

 

■ デバッガ(MSXプログラムを作る人向け)

DEBUGGER.exeも別途用意されています。
こちらも高機能なので、必要ならダウンロードして使ってみると良いかもしれません。
BlueMSXには無い機能がいくつかあります。

(補足) デバッガは本体と別にダウンロードする必要があります。

デバッガを起動したら、OpenMSXが動作している状態で、Connect(⚡ボタン)を押すと、OpenMSXと連動して動くようになります。
(OpenMSXのexeを再起動するたびに行います)

※注:VisualStudioなどの開発環境を起動しているとConnectできない場合があります。その場合はVisualStudio等を終了させてください。

f:id:uniskie:20220308203450p:plain

f:id:uniskie:20220308212748p:plain


ボタン割り当てがBlueMSXのデバッガと異なりますが、
通常のトレース・ステップ実行のほかに、巻き戻しステップ実行が出来ます。

OpenMSXは巻き戻し機能が実装されていますが、それを利用して、1ステップずつ一個前に実行した命令の状態に戻っていく事が出来ます。
たとえば永久ループで停止した状態から原因までさかのぼるのも非常に簡単です。

(普通は問題を予測・推論して、問題が起きてそうなコードの手前にブレークを仕掛けたりして何度も試して推論を絞り込んでデバッグしますが、そんな面倒なことはせずに一発で原因まで到達できてしまいます。)

 

MSX TMS9918カラーの再現

OpenMSXは改造してビルドする必要もなく、machinesフォルダのxmlの設定内容を弄るだけで実機風MSXパレットにできます。

( OpenMSX\share\machines\*.xml の設定を弄る)

①BlueMSX TMS9918Aパレット改造版

f:id:uniskie:20210907003654p:plain

②OpenMSX MX-101 TMS9118 + saturation 50指定

f:id:uniskie:20210907003742p:plain

③OpenMSX MX-101 TMS9118 + saturation 75指定

f:id:uniskie:20210907003801p:plain

④OpenMSX MX-101 TMS9118 追加指定なし

f:id:uniskie:20210907003813p:plain

 

openMSX\src\video\VDP.cc
VDP::getMSX1Palette()
が良くできていて、一部癖の強い機種だけ専用パレット、他はY-Pb-Pr信号パラメータから変換しています。

調整はmachinesフォルダの*.xmlファイルをテキストエディタで開き、VDPタグに saturation、saturationPr、saturationPb の指定を追加することで可能です。(基本的にはsaturationの指定だけで良いかと思います)

例)

OpenMSX\share\machines\Casio_MX-101.xml
    <VDP id="VDP">
      ....
      <saturation>50</saturation>
    </VDP>

 

MX-101はSaturation 50%がなんとなく近い気がします。

 

情報元:OpenMSXのMSX1カラー議論スレッドログ

github.com


興味深いですね。

*1:

これが、VisualC++などのデバッガで追跡しようとしても、指定した場所に来たらデバッグウィンドウに移動するので、ウィンドウフォーカスが移動し、その際にキーを離した通知が発生するので一見問題が無いように見えてしまうというヤヤコシイ現象が起きます。何なんでしょうね。

ちなみに半角/全角キーはSDL_SCANKODE_GRAVE、SDLK_CODE_BACKQUOTEという値で通知されます。英語圏だとSHIFTと一緒に押すと「‘」という文字が入力されます。

*2:

OpenMSX 0.6.x以前はkeymapというファイルでホストPCキーとMSXキーの対応を指定できたのですが、0.7.0以降は廃止されているため、指定しても無視されます。

最近まで方法が分からなかったのですが、やっとやり方が分かったのでメモしておきます。

1ChipMSXをMSX1として(疑似)動作させてみよう!

 

はじめに

この記事は(1ChipMSX)OCM PLD v3.8.0
 

uniskie.hatenablog.com

 
を導入済みの方向けの記事になります。


2020/06/13 追記 問題発見。

bios_image_maker_for_380.7z
の、MSX1PAL_IPLROM\380k_m1p.pld
に変更した場合、MSX2ソフトの一部でゴミが出ます
例えばアシュギーネ復讐の炎のタイトルデモなど。

VDP#8の初期値は関係なく、ロゴ変更時にBIOSのロゴ描画処理で問題が出るようです。
(BlueMSXでは発生しないので、1chipMSXの問題かもしれない)
標準ロゴでは問題が出なかったので、
bios_image_maker_for_380.7z に、
MSX1PAL_IPLROM\380_m1p.pld (380の後にkがついていない方)
を追加しました。
こちらを使っていただければと思います。

 


1ChipMSXをMSX1として動作させるSD-BIOSの作成 + 修正版PLD



1ChipMSXをMSX1 BIOSで動かしてみよう!




twitterを見ていたら、
パレットだけではなく、BIOSそのものをMSX1にして動かせばいい。
と気づき、実際にその効果と問題点などを検証・対策してみたので、
そのまとめになります。



1ChipMSXは電源投入時に、SDカードからBIOS一式を読み込んで起動する機能があり、
これを利用し、MSX1 BIOSで動かしてしまおう。という趣旨です。



■MSX1 BIOSで動かすメリット

・CASIO スキーコマンドがバグらない
・CASIO ゲームランドがバグらない
R-TYPEMSX1の色の方が綺麗MSX2時はパレット変更されるけど、その色がエグイ。
(※感想には個人差があります)
新10倍カートリッジのMSX1用画面がみられる
・起動が速い
などなど



MSX2以降で動かないMSX1用ソフトは、スロット構成が問題などといわれますが、
実際にはスロット構成はそのままにMSX1ROMで動作させれば動くものもあるようです。

■MSX1BIOSで動かすデメリット

ローマ字入力がない。(ローマ字かな入力機能がついたのはMSX2以降です)
MSX2以上向けのソフトが動かない。(当たり前)
・ハード的にはMSX2+なので、MSX2以降の機能を直接I/O等で操作しているものは動く。

■ 注意点 と 対策

1ChipMSXはMSX1用に設計されていない為、問題が2つあります。
対処方法は記事の後半にあります。

①起動時にスプライト非表示で初期化されるため、スプライトが表示されない。
②カラーパレットがMSX2以降のものなので色が違う

他にも潜在的な問題点はあるかもしれません。




■ MSX1-BIOS仕様のSD-BIOS作成

MSX1では1ChipMSXデフォルトのMegaSDHC(MSX-DOS2)BIOSでは動かないので、
Nextor+MSX1ROMという構成になります。



HRAさんのOCM改環境を利用してOCM PLD 3.8.0向けのSD-BIOSを作成する環境
を作りましたので、こちらを利用してみてください。
(kdlさんの環境を弄れる方はそちらを弄るのも良いかもしれません。)

bios_image_maker_for_380.7z をダウンロードしたら、
ReadMe.txtに従って準備をしてください。

HRAさんのOCM改セットをダウンロードして解凍
② batファイルを所定の場所(tool\bios_image_maker\roms\)にコピー
BlueMSXがインストールされていない場合はインストール
④ BlueMSXがインストールされた状態で copy_bluemsx.bat を実行
(※ BlueMSXのインストールパスが違う場合は copy_bluemsx.batを修正して下さい。)

copy_bluemsx.batが成功すると、
tool\bios_image_maker\roms\BlueMsxRomsフォルダが作成され、
BlueMSXのSharedROMがコピーされます。

準備が終ったら、
make_blue_msx1_nextor_for_380.bat
を実行してください。

すると、
OCM-BIOS_MSX1_NEXTOR.DAT
というSD-BIOSファイルが出来ます。
ファイルサイズが512KBなら成功です。

こちらをSDカードの最初のエントリとしてコピーしてください。
(SDカードフォーマット/全消し後最初にコピーする等)

このSDカードを1ChipMSXにセットしてあれば、
電源投入時に OCM-BIOS_MSX1_NEXTOR.DAT が読み込まれ、
MSX1として起動します。
(※ リセットでは読み込まれません)

NEXTOR.SYSCOMMAND2.COMも入れてあれば
MSX1起動画面→Nextor画面になります。
(なければBASICで起動すると思います。)

● SDカードにNEXTOR.SYSなどをコピーする

MSXDOS/DOS2向けツールを色々使うので
Nextorの各種システムファイルやユーティリティーをコピーしておくと便利です。
(無いと不便です)

(※ 先にSD-BIOSを入れておくこと。)

システムファイル一式はNextorのサイトからダウンロードできます。
バージョンが適合しているものが必要になります。
この記事では2.10β2です。

https://www.konamiman.com/msx/msx-e.html
からNexotr.dsk をダウンロードしたら、
ディスクイメージ操作ツール(DiskExplorer など)で開きます。

NEXTOR.SYS、COMMAND2.COM、MSXDOS.SYS、COMMAND.COM
を、SDカードのルートディレクトにコピーします。

次に、残りの、
DELALL.COM、DEVINFO.COM、DRIVERS.COM、DRVINFO.COM、EMUFILE.COM、FASTOUT.COM、LOCK.COM、MAPDRV.COM、NEXBOOT.COM、NSYSVER.COM、RALLOC.COM、Z80MODE.COM
を、UTILSディレクトリにコピーします。



SDカードをフォーマットしたら
①SD-BIOSをコピー
MSX-DOS2のシステムファイルやツール類をコピー
③Nextorのシステムファイルやツール類をコピー(上書き)
の順番にすると良いかもしれません。

 


■ スプライトが表示されない! 色がMSX1ぽくない!

現在の1ChipMSXはIPLで、VDP#8のスプライト非表示をONにして起動するようです。
これはMSX2からの機能なので、MSX1BIOSからは操作されません。
そのため、スプライトが表示されないという問題が発生します。

また、カラーパレットもV9938の色なので、MSX1の色とかなり違います。


(゜ω゜≡゜ω゜)<なにぃ!? ポポロンがいない!?

・スプライト問題は直接I/OからVDPにアクセスすることで対処します。
・カラー問題はMSXのカラーパレットを弄ることで対処します。
(色についてはパレットのビット精度の問題で、どうしても少し違和感は残ります。)

具体的な対処方法はとしては、
① 安全策
ファームウェア書き換え
の2つの方法があります。

↓ 対策後の様子。

(*´ω`*)<おかえり……ポポロン


① 安全策


bios_image_maker_for_380.7z

の、
tool_for_msx\MSX1FAKE.COM
をNextor上から実行してみてください。

スプライト非表示フラグをリセット+MSX1風パレットに変更するコマンドです。
(AUTOEXEC.BATから呼び出すようにすると楽です)

物理カートリッジやディスクから直接ゲームを起動する時には使えませんが、
SROM(SofaROM)SRI(SofaRunIt)からゲームを起動するようにすれば、
スプライト表示あり+MSX1風パレットで動かせます。




ファームウェア更新

(※USB Blaster等がある人以外は、
失敗すると1ChipMSXが動かなくなるのでご注意下さい。)


bios_image_maker_for_380.7z
の、
MSX1PAL_IPLROM\380k_m1p.pld (←一部ソフトで問題発生)
MSX1PAL_IPLROM\380_m1p.pld (←標準ロゴなら問題なし)

で1ChipMSXのファームウェアを変更してみてください。
(PLDFLASH等を使う)

ファームウェア仕様
OCM PLD 3.8.0 (MSX2+/MegaSDHC MSX-DOS2/日本語)ベースで
・1ChipMSX改ロゴに変更
・ 起動時のスプライト非表示フラグをセット状態からリセット状態に変更
・ MAINROMを呼び出す前のIPLがセットするカラーパレットを、MSX1風カラーパレットに変更。

このファームウェアに更新した場合、
MSX1 SD-BIOSの入ったSDカードを入れてあれば、
電源をいれてそのまま物理カートリッジやディスクでゲームを動かしても大丈夫です。
MSX1FAKE.COMを呼び出す必要がなくなります。

ファームウェアを書き換えてあっても 通常のMSX2+ BIOSが実行されれば、
パレットもスプライト非表示フラグもBIOS側でMSX2+仕様の状態に初期化されます。
MSXロゴが出る前のタイミングで一瞬だけMSX1っポイ青になります)


ファームウェアを変更するのが怖い場合は、
毎回実行する必要はありますが、MSX1FAKE.COMを使う方法でやってみてください。




海外のクラシカルPCもFPGA化が進んでいて
TMS9918Aを使った他のワンチップPCも気になるところです。

それでは良き1ChipMSXライフを



画像貼りすぎた

 


関連記事:

uniskie.hatenablog.com


↑SDカードで新10倍カートリッジを使うため、Nextorを導入しています。

関連記事:

uniskie.hatenablog.com


↑ より正確なMSX1カラー再現ならこちら。

新10倍セーブロードをSDカードで!

 

(1ChipMSX)OCM PLD v3.8.0

uniskie.hatenablog.com


を導入済みの方向けの記事になります。


■ SDカードを壊さずに新10倍カートリッジの状態セーブを使う方法


(公式1ChipMSX / DE0-CV + DEOCM 対応)
(もしかしたら実機 + MegaFlashROM SCC+ も対応?)
(この方法では、外付けFDDでもSDカードでも行けました)


動作確認リスト
OK:新10倍セルフモード
OK:グラディウス
OK:パロディウス
OK:ガリウスの迷宮
NG:グラディウス1(PAUSEをかけた時点で暴走)




クイックセーバーの皆様へ

新10倍カートリッジがあると、
状態を丸ごとディスクにセーブして、
セーブした時の状態から再開できるので便利ですよね。

ゲーム下手にとっては救世主のような機能です。


ところが、1chipMSXだと致命的な問題が発生します。

簡単にまとめると、

■ 問題:絶対ディスク破壊マンになる
■ 解決方法:
①Nextor for MegaSDHCで起動して
コマンドラインからSofaROMで新10倍+ゲームを起動
です。


■ なんかディスクが破壊されるんだけど…

そんな超便利機能「まるごと状態セーブロード」ですが
1ChipMSXでこの機能を使うと、なんと、ディスクを破壊してしまうのです…。
(気づかずに読み書きしていたらいつの間にかSDカードの中身全体が壊れていました)

参考:破壊されたディスクの中身(FDDイメージファイル)
(上)破壊される前。
(下)破壊されたディスク。

ブートセクタも含めて広範囲に壊されます。
読み込むだけで壊されることも。

新10倍カートリッジからのディスクアクセスですが、
新10倍と1ChipMSX内蔵MegaSDHCX(MSXDOS2)の内部処理は相性が悪いようで、
どうやってもディスクをめちゃくちゃに破壊してしまうようです。

・EPコマンドでFDDブートエミュレーションしても破壊
・SDカードの直接アクセスFAT12でもFAT16フォーマットでも破壊
と、どうしようもありません。

一見動作するように見えても、
実際にはほぼ確実にディスクを破壊
してしまうので困ったものです。


そこでMSXDOS2互換拡張版のNextorを使いました



重要なポイントは2つ
Nextorを導入したSD-BIOSで起動する
SofaROMで新10倍+ゲームを実行する

ゲームと新10倍カートリッジを物理カートリッジで起動した場合、
Nextorは(初期化プロセスの違いから)ディスクとして認識されない為、
ディスクが有効な状態からSofaROMゲームを起動します。

ということで、1ChipMSXでのNextorの導入方法と、
SofaROMの使い方を紹介していきたいと思います。


●Nextorの導入



↓Nextorを起動した画面


Nextor
入りのMSX2+ BIOSで起動する方法ですが、
本体のファームウェアを書き換えるわけではありません。
SD-BIOSというものが使えます。

SD-BIOSはSDカードに入れてあるシステムロムセットを電源投入時に読み込んで、
1Chipファームウェア内蔵のものの代わりに動かす機能です。


● SD-BIOSを作成する

MegaSDHC+DOS2カーネルの代わりに、Nextorが入ったSD-BIOSを作成する方法ですが、
今回紹介するSD-BIOSの作り方は2つあります。
どちらでもOKです。

① OCM PLD 3.8.0SD-BIOS作成環境
20200116 OCM-SDBIOS Pack v2.9 by KdL
が、ある人はそちらで作成できます。
https://gnogni.altervista.org/

make\make-sdb.cmd を実行。
出力ファイル名を例えば OCM-NEXT.DATなどとし、
[Firmware Menu] 2 = MSX2+ OCM-PLD v3.4 or later (default)
[Disk-ROM Menu] 3 = Nextor Kernel v2.1.0-RC1 Single SD-slot
[Main-ROM Menu] 1 = MSX2+ FS-A1WSX Fn-mod Yen
[Kanji-ROM Menu] どれでも
[Special-ROM Menu] どれでも
とすると、OCM-NEXT.DATなど指定した名前のファイルができます。
(ファイル名省略時はOCM-BIOS.DAT


② OCM-SDBIOS Pack v2.9が無い方は、
HRAさんのOCM改環境を利用してOCM PLD 3.8.0向けのSD-BIOSを作成する環境
を作りましたので、こちらを利用してください。
bios_image_maker_for_380.7z

ReadMe.txtを参照して準備をしたら、
hra-ocmkai-20200502\tool\bios_image_maker\roms の
make_blue_msx2p_nextor_for_380.bat を実行すると
OCM-BIOS_MSX2P_NEXTOR.DAT ができます。

 


● SDカードにSD-IBOSをセットする

SDカードからSD-BIOSを読み込む機能に必要な事は、
SD-BIOSをSDカードの最初のエントリに配置する」事です。

一番確実なのは、SDカードをフォーマットした後に最初にコピーする。

なので、SDカードを一旦フォーマットしたら、
作成したNextorSD-BIOSを一番最初にSDカードにコピーします。
これでOKです。

あとは、Nextor版SD-BIOSの入ったSDカードを挿して
1ChipMSXの電源を入れるSD-BIOSが読み込まれます。
リセットでは読み込まれません


● SDカードにNEXTOR.SYSなどをコピーする

(※ 先にSD-BIOSを入れておくこと。)

SofaROMはDOS向けツールなので
Nextorのシステムファイルが必要になります。

システムファイル一式はNextorのサイトからダウンロードできます。
バージョンがあっているものが必要になります。

この記事では2.10β2です。

https://www.konamiman.com/msx/msx-e.html

からNexotr.dsk をダウンロードしたら、
ディスクイメージ操作ツール(DiskExplorer など)で開いて、

NEXTOR.SYS、COMMAND2.COM、MSXDOS.SYS、COMMAND.COM

を、SDカードのルートディレクトにコピーします。

次に、残りの、

DELALL.COM、DEVINFO.COM、DRIVERS.COM、DRVINFO.COM、EMUFILE.COM、FASTOUT.COM、LOCK.COM、MAPDRV.COM、NEXBOOT.COM、NSYSVER.COM、RALLOC.COM、Z80MODE.COM

を、UTILSディレクトリにコピーします。

↑自分の環境はこんな感じ。

SDカードをフォーマットしたら
①SD-BIOSをコピー
MSX-DOS2のシステムファイルやツール類をコピー
③Nextorのシステムファイルやツール類をコピー(上書き)
の順番にすると良いかもしれません。

● 準備完了!! 起動確認!!

以上でNextor環境のSDカードインストールが終りましたので、
一度1ChipMSXの電源を切り、SDカードをセットしたら電源を入れます。

電源が入った時点でSDカードのアクセスランプが激しく点滅します。
ここでSDカード内のSD-BIOSが読み込まれます。

次にMSXロゴが出た後に、
Nextor.sys、Command2.comが読み込まれ、
Nexotorコマンドラインが立ち上がります。
MSX-DOS2互換コマンドラインです)


Nextor起動時の画面。(MSX1 RAM64KB以上の場合と、MSX2以降の場合)

こんな感じの画面になればOKです。
これで、Nextorの導入は終わりました。

ただし、1ChipMSXの構成では、
物理カートリッジから直接起動すると、
新10倍はNextorにつながったMegaSDをディスクドライブとして認識してくれません。

そこで、色々試した結果、
Nextorコマンドラインから、新10倍とゲームのROMイメージを読み込み起動することで、
新10倍カートリッジにディスクを認識させる事が出来ました。

そのために使用するROMローダーがSofaROMというツールです。


参考:Nextorよもやま情報

実機MegaFlashROM SCC+SD カートリッジは最初からNextorが入っています。
1ChipMSXにMegaFlashROM SCC+SDを挿せば簡単にできるかもしれません。
(未確認です)

※ 注:「MegaFlashROM SCC+」はSD無しなので要注意です。
BlueMSXNextorを使う場合、SunriseIDEというハードのエミュレーションを使うのですが、その場合は新10倍からのディスクアクセスでフリーズします。

MSXDOS2+MegaSDHC:NG
Nextor+MegaSDHC : OK
Nextor+SunriseIDE : NG

NextorMegaFlashROM SCC+SDドライバやファイル操作処理と新10倍相性が良いという事なのかもしれません。

●Nextorのバージョンによる問題

Nextor v2.1.0RC1だとMSXDOS1でフリーズするようです。
Nextorは安定版のv2.1.0 beta 2を使用してください。

1ChipMSXはMegaSDタイプなので、
Nextor-2.1.0-beta2.MegaFlashSDSCC.1-slot.ROM
20200116 OCM-SDBIOS Pack v2.9 by KdL\make\roms
または hra-ocmkai-20200502\tool\bios_image_maker\roms\nextor
に、 nextsdxr.rom
とリネームして置き換えます。
(古いファイルは名前を変えてバックアップしておくとよいと思います)

HRAさんのOCM改環境を利用してOCM PLD 3.8.0向けのSDBIOSを作成する環境を使用する場合は、そのまま使っても大丈夫でした。
20200116 OCM-SDBIOS Pack v2.9 by KdL を使用する場合は問題が発生しますので、v2.1.0 beta2に置き換えた方が良いかもしれません。

Nextorの安定版や最新版、使用方法などについては、Nextorを作成されているKonamimanさんのサイト https://www.konamiman.com/msx/msx-e.html#nextor を参照ください。(Chromeのページ翻訳機能とか便利です)

 


●SofaROMの導入


Nextor/MSXDOS2/MSXDOS1コマンドラインからゲームのROMを実行するためのツール
SofaROMの導入方法です。

SofaROMはこちらからダウンロードできます。
https://www.louthrax.net/mgr/

sofarom.zipをダウンロードしたら、解凍し、
SROM.COM
SROM.INI
を、SDカードにコピーします。

Nextorコマンドラインからパスの通るディレクトリに置くと便利です。
(AUTOEXEC.BATでSET PATHをしている場合)(ルートやUTILS等)

自分はAUTOEXEC.BATの中で
SET PATH=%1 %1\UTILS
と書いています。
(この%1は起動ドライブ名に自動で置き換わります)
こうしておくと、
Aドライブとして起動した場合は、
A:\ と A:\UTILSに置いたファイルはパスを省略してもアクセスできます。

新10倍カートリッジMGSAVE.COM等で取り込んでROMファイルを作ったら、
SROM.GE2 というファイル名して、
SROM.COMと同じディレクトリに置きます。
/G2 オプションを付けて、新10倍+ゲームで動作させるために必要です)

SROM.COM
SROM.INI
SROM.GE2
と、3つ揃えばOKです。

これで、準備が整いました。

参考:ROMイメージの取り込み方

電源が入った状態でカートリッジを後刺しすると、ショートしたりフリーズしたりする可能性があるので、

SHIFT+F12を押してスロット1端子を無効化する。
(内蔵ESE RAM SCCに切り替わり外部端子が無効化される)
②スロット1に新10倍カートリッジを挿す。
③(必ず)もう一回SHIFT+F12を押してスロット2の端子を有効化する。④MGSAVE SROM.GE2 /s1⏎と入力する

すると SROM.GE2として新10倍カートリッジのROMイメージが取り込めます。

注意点:

SHIFT+F12を押すと本体のLEDが一つ切り替わるのが確認できると思います。
そのLEDが点灯状態だとスロット1外部端子が無効
(内蔵ESE MegaRAM SCCが有効)な状態です。

MGSAVEする前にLEDが点灯していないことを確認してください。
点灯状態だとスロット1に挿した新10倍カートリッジではなく、
ESE Mega SCCの内容が保存されてしまいます。

 


■ SofaROMを使って「新10倍+ゲーム」を動かす。

自分は
GM ディレクトリに新10倍セーブファイル
・ROMS ディレクトリにROMファイル
・PATHの通ったディレクトリにSROM一式
と配置しています。

ゲーム起動時はカレントディレクトリのファイルを参照しますので、
あらかじめ
>CD GM
としてカレントディレクトリをGMディレクトリへ移動しておいてから
>SROM /G2 A:\ROMS\GARIOUS.ROM⏎
で、新10倍+ゲームを起動しています。

そうすると
新10倍やゲーム側では GM ディレクトリの中のファイルを操作するので、
ファイルが散らからず、管理が楽になります。
ゲームごとにディレクトリを変えても良いかもしれません。

↓SofaROMを実行したところ。


新10倍カートリッジは海外だと「GameMaster2」と言うそうです。
"Loading Game Master 2"で SROM.GE2(新10倍ROMイメージ)を読み込み、
"Loading ROM”で ゲームのROMファイル(ここではGARIOUS.ROM)を読み込んでいます。

これはESE MegaRAM SCC ひとつだけで、新10倍+ゲームを実行する凄い機能で、
1ChipMSXのスロット2内蔵のESE MegaRAM SCC(大容量の方)を使用し、
スロット1は通常スロットのままになります。
(スロット2は内部のEse MegaRAM SCCに切り替わるので使えません。)

ですので、SofaROMを使うと2スロット機でも外付けFDDが使えます。
FDDカートリッジを空いているスロット1に挿します。)

新10倍ROMとゲームROMのロードが無事完了すると、実行して良いか聞いてきます。
ここで、ReturnキーかAボタンを押すと新10倍+ゲームが起動します。
ロードがうまくいっていないようならここでキャンセルもできます。

※ その他の詳しいSofaROMの使い方は、SROM.TXT や SROM を実行した時に表示されるヘルプを参照してください。JoyMEGAにも対応したJoyToKey機能なども使えます。(ほかにも複数ROMを1スロットで動かす機能があるっぽい?)

起動(Launch ROM)すると、まず新10倍が動きます。
(物理カートリッジでと同じですね)



新10倍からゲームまで進んでセーブロードできるか試してみてください。
最初は、壊れても良いSDカードで実行することをお勧めします。

注意:ゲームが起動したらSDカードを抜かない事。
認識しなくなったり、フリーズしたりすることがあります。
NextorがDOS1モードでない場合、ディスクイジェクトを検出すると、カレントディレクトリがリセットされるなど、内部的に処理が実行されますが、そこでおかしくなるようです。

新10倍機能が有効な時、
STOPキー(1ChipMSXはENDキー)を押すと、新10倍機能の「ポーズ」になります。
STOPキー(1ChipMSXはENDキー)をもう一度押すとポーズが解除されます。

ポーズ状態でCTRLキーを押すと、DISKメニューが出ます。




DISK SAVE
SCREEN DATA
GAME DATA
DISK LOAD
GAME DATA

END
を選択すると戻ります。

ディスクメニューから抜けてポーズに戻ったら、
STOPキー(1ChipMSXはENDキー)を押してポーズを解除します。

(※ 新10倍機能では、操作はキーボードのみを受け付けます。ジョイスティックは不可

GAME DATAはゲーム中に状態をまるごとSAVE/LOAD出来ます。(ステートセーブ機能)
SCREEN DATAは新10倍のSELFからLOAD出来ます。(スクリーンショット機能)



SCREEN DATAの表示確認

SCREEN DATAをセーブしたら
リセットして、再びSROMで新10倍+ゲームを起動します。
(表示確認だけなら新10倍だけでも良いです。)

新10倍が起動したら「SELF」→「LOAD SCREEN DATA」を選びます。


表示できました。

デフォルトのMegaSDHC MSXDOS2だと、
この画面の前(スクリーンデータのロード時点)でフリーズしますが、
MegaSD Nextorにすることで正常に動作します。

(※ デフォルトのMegaSDHC MSXDOS2だと、
実は、ファイル一覧を表示した時点でもうディスクが壊れ始めています。)


ここ数日遊んでいますが、今のところ問題は無さそうです。

(※ Nextorバージョンが変わったらどうなるか分かりません



SDカードを読み書きするので、FDDを使うよりも圧倒的に速いですね。

新10倍カートリッジのまるごとセーブロード機能は、
本体が変わるとデータに互換性が無い場合があるのでご注意を。

 


関連記事:

uniskie.hatenablog.com


↑Nextor導入のついでで、1ChipMSXをMSX1 BIOSで動作させた記事

メモ:Wii 所有DLソフト

Wiiで所有しているソフトのリスト
DL版はこれ以上増えないのでまとめをメモ

DL版:50本
ディスク版:不明


Wiiウェア


バーチャルコンソールファミコン


バーチャルコンソールスーパーファミコン


バーチャルコンソールセガマークⅢ


バーチャルコンソールメガドライブ


バーチャルコンソールPCエンジン


バーチャルコンソール:アーケード

 


Wiiディスク

その他(未調査)

 

MSX2版 ハイドライド1 フォント置き換えパッチ



MSXFANの付録についてきたハイドライドMSX2版を弄りました。
デフォルトフォントを太文字にしただけで味気ないので、
ハイドライド2や3のようなフォントにしました。

MSXFAN 1992年10月号 付録ディスク#13収録の
MSX2用イドライド用置き換え画像データ

GIthub「MSXFAN13 HYDLIDE PATCH」
https://github.com/uniskie/MSX_GAME_TOOL/tree/main/MSXFAN13_HYDLIDE_PATCH




こんな感じになります。


GAME.XBで読み込んでいる
TITLE.XV8
VRAM-2.XV8
の置き換え用画像データです。

VRAM-2はフォントをHYDLIDE3のエンディングフォントに置き換えています。

60 _XUNPACKS("TITLE xv8",0)
70 _XUNPACKS("VRAM-2 xv8",1)

60 _XUNPACKS("TITLE xv8",0)
70 SETPAGE,1;BLOAD"VRAM-2.SR8",S
に書き換えてみてください。

おまけでタイトル差し替え画像も入ってます。

TITLEMは最近みかけない丸和太郎に置き換えています。
TITLEM.SR8はお好みで。
85 SETPAGE,0:BLOAD"TITLEM.SR8",S
など。

BlueMSX 2.9.0β改:TMS-9918Aカラー追加版 (PrivateBuild)

BlueMSX 2.9.0β改:TMS-9918Aカラー追加版 (PrivateBuild)

以前作った、私家版BlueMSX2.9.0ベータに画面サイズ3倍と4倍追加した物
に、TMS-9918A定義とパレットを追加しました。

TMS-9918A
TMS-9928A
V9938/V9958

BlueMSXはMSX1のカラーに対応していますが、
海外ユーザーあわせなのかTMS-9928Aの色しかなかったので、
寂しくて、TMS-9918Aの色を追加しました。

(TMS-99x8Aは、18Aと28Aでもかなり違います。)

マシン構成編集で、


ビデオチップTMS9918Aにすると、TMS9918Aパレット表示になります。

この淡くくすんだ感じ。俺の知ってるMSX1ですわ。

従来のものはTMS99x8Aで、そちらは以前と同じTMS9928Aパレットでの表示になります。

MSX1でエロゲやるならこっちのほうがエロイです。

TMS99x8をTMS9928Aに改名すると、
マシン定義のconfig.iniに互換性が無くなるのでそのまま残してます。

■実行ファイル(本体のみ) :blueMSX290_3X4X_TMS9918A.7z
 
https://app.box.com/s/0sowx9rfoa6r5awp5u02hoa31iz4vt3b

■ソースファイル :blueMSXsource290_3X4X_TMS9918A.7z
https://app.box.com/s/716d2tinv2zc7s9fplhejgla4aoyj2n5


公式BlueMSXをインストールしたら、
上書きするなり、名前を変えるなりして置いて使って貰えればと思います。

■ パレット参考(Thanks!):
https://atariage.com/forums/topic/262599-palette-fixes-for-colem-adamem-and-classic99/

自分はMSX2+が発売されるころまでずっとMX-101を使っていたので、
TMS9928Aパレットにはなじみが無く、色が暖かすぎて違和感があります。
自分の記憶のMSX1のような冷たく落ち着いた透明感が欲しかったのですが
探してもないようなので、自分でつけました。

各自NTSCテレビで見え方は違ったと思いますが、
自分の感覚ではTMS9928Aカラーよりは当時の思い出の色に近くなったように思います。

(どちらが良いとかではなく、記憶と近いかどうかの話です。)

自分のほかにもそんな人がいたら。これをご活用くださればと思います。

OpenMSXだと実は対応してたり?
いまだにあっちは使い方がよくわからない。
試した感じMSX2パレットに変更されちゃうみたい?
妙な動作。わからないのでほっとこ…。

比較ギャラリー

ハイドライド3
TMS9928A(従来のBlueMSX-MSX1実行時)

TMS9918A(今回追加した色)

9918Aパレットでは記憶してたように灰色と黄色がなじみ、床も落ち着いた感じ。
1枚目の9928Aパレットだとチーズ入りはんぺんっぽい。(それはそれでおいしそう)

TMS9928A(従来のBlueMSX-MSX1実行時)

TMS9918A(今回追加した色)

TMS-9918Aでは淡くはかなく落ち着いた雰囲気。
建物に使われている黄色が落ち着き、
地面も全体に落ち着いているので見やすいように思います。
空気感も変わりますね。

賢者の石
V9938(MSX2


エグい(笑)
遊んでいると目がチカチカして涙が出ます。

TMS9928A(従来のBlueMSX-MSX1実行時)




まだ目が痛い。

TMS9918A(今回追加した色)



黄色が黄土色に近くなったので、より神秘的な色合いに。
青と水色も馴染むようになり、地形も見やすくなりました。
絵画のような雰囲気。
これが自分の遊んだ賢者の石です。
長時間さまよっても目が痛くなりません。

いかがでしょうか。

制作者が想定している発色がどれかは分かりませんが、
少なくとも制作当時はMSX2は無かったと思いますから、
基本的には柔かな色合いのTMS-9918Aの発色でプレイした方がみやすいと思います。

パレットデータ一覧を作成してくれた方、有難う。

パレットデータ

参考:blueMSX vdp.c内の定義

■ 従来のTMS99x8A指定時の色
static struct {
int r;
int g;
int b;
} msx1Palette[16] = {
// TMS9928A
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 62, 184, 73 },
{ 116, 208, 125 },
{ 89, 85, 224 },
{ 128, 118, 241 },
{ 185, 94, 81 },
{ 101, 219, 239 },
{ 219, 101, 89 },
{ 255, 137, 125 },
{ 204, 195, 94 },
{ 222, 208, 135 },
{ 58, 162, 65 },
{ 183, 102, 181 },
{ 204, 204, 204 },
{ 255, 255, 255 }
};

■ 今回追加したTMS-9918Aの色
static struct {
int r;
int g;
int b;
} msx1Palette_9918a[16] = {
// TMS9188A
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 79, 176, 69 },
{ 129, 202, 119 },
{ 95, 81, 237 },
{ 129, 116, 255 },
{ 173, 101, 77 },
{ 103, 195, 228 },
{ 204, 110, 80 },
{ 240, 146, 116 },
{ 193, 202, 81 },
{ 209, 215, 129 },
{ 72, 156, 59 },
{ 176, 104, 190 },
{ 204, 204, 204 },
{ 255, 255, 255 }
};



MSX2以上の機種でどうにかしたい場合は、VDPパレットを操作する方法になります。
色の再現には6~8bit精度のパレットが必要なのですが、
MSX2以降の実機の場合は、3bit精度しかないので限界があります。

それでも、雰囲気が近くなるように足掻いてみたパレットデータ調査結果は
■MSX2/2+でMSX1風パレットを使おう(2020/04/05 17時更新)
https://uniskie.hatenablog.com/entry/ar1884019

にあります。

「TMS9918Aの独特な色あいがいい」
という方になら、もしかしたら参考になるかもしれません。


それではまた来世。


MSX2/2+やOpenMSXでMSX1風パレットを使おう(2020/04/07 05:45更新)

MSX2/2+でパレットをMSX1風にしてみました。






1枚目:MSX2の色
2枚目:MSXPLAYer:MSX1をMSX2でパレット再現した物
3枚目:BlueMSX:MSX1動作時の色(TMS-9928A)
4枚目:改造版BlueMSX:MSX1動作時の色(TMS-9918A)
5枚目:MSX2上で自作MSX1風パレットを使用した物

MSX1のVDPであるTMS-9918Aの色は、MSX2以降と全然違います。
参考:http://www.purose.net/befis/halloffame/msx_col/

MSX1用に作られたゲームをMSX2で表示すると、かなり色がキツくなりがちだと思います。
これはSC1000のゲームをマスターシステムで表示した時などにも起こる問題だそうです。

TMS9918Aという映像チップの頃はRGB出力ではなく
色の生成方式が違うため、各自の環境で見え方が違う事もあります。

さて、MSX2でMSX1っぽい色を表示したい場合はどうするかというと、
パレット機能を使用します。
しかし、MSXではRGB各3bitしかないので、
MSX2実機でどうにかしようとすると細かい調整は難しいです。

なにか良いものはないかと
自分の感覚で一番しっくりくるパレットデータが無かったので探しましたが、
無かったので作りました。

■ パレットの一覧とパレット値まとめ




2020/04/07 test-3d追加
2020/04/14 誤字修正 9188→9918、BlueMSXのパレット名を99x8に変更


MSX用のパレット値は後でテキストでも書いておきます。

TMS-9918AとTMS-9928Aで目立つ違いは7,8,9,10の色でしょうか。
9918のほうが、水色は抑えめ、赤系も抑えめ。黄色は少し緑寄り。

(自分はMSX2+が出るころまでMX-101を使っていたので、9918の色での思い出が強めです。)


■ OpenMSXのTMS9918出力エミュレーション

OpenMSXはそのままだとRGB出力したかのような色になりますが、Machine設定ファイルを編集することによってTMS9918映像出力回路から出力されるくすんだ色を再現可能です。

調整はmachinesフォルダの*.xmlファイルをテキストエディタで開き、VDPタグに saturation、saturationPr、saturationPb の指定を追加することで可能です。(基本的にはsaturationの指定だけで良いかと思います)

例)OpenMSX\share\machines\Casio_MX-101.xml
    <VDP id="VDP">
      ....
      <saturation>50</saturation>
    </VDP>

 

① saturation無し(デフォルト)
f:id:uniskie:20210907003813p:plain

② saturation 75%
f:id:uniskie:20210907003801p:plain

③ saturation 50%
f:id:uniskie:20210907003742p:plain

MX-101の実機に近いのはsaturation 50%でしょうか。


■ blueMSXのパレット
(訂正:3ビット精度では再現できませんでした)

BlueMSXはTMS-9928Aとして公開されいてるパレット値と同じもののようです。



参考:
https://atariage.com/forums/topic/262599-palette-fixes-for-colem-adamem-and-classic99/

TMS-9918Aに比べて鮮やかな色になっています。
そのため、逆に自分が違和感を感じる原因にもなっています。
(綺麗ですけどね)

TMS-9918A:内部的にもNTSC信号で色を生成。計算式的に純色に近い色は出せないため、全体にくすんだ色になる。(色味が混色気味になる)

TMS-9928A:RGB相当の色差信号に対応。9918とは計算式自体が違う。純色に近い色に変更された。

もしかすると、BlueMSXのパレットを9928から9918に変更したら、自分的に一番満足なのかもしれない。

ということで、BlueMSXにTMS-9918Aカラーを追加しました。
 ↓
BlueMSX 3.9.0β TMS-9918Aカラー対応版作りました。(PrivateBuild )

uniskie.hatenablog.com

(OpenMSXならプログラム改造しなくてもいいんですけどね…)

TMS-9928A(従来)


TMS-9918A(追加分)

結構満足のいく結果になりました。
よければ使ってみてください。

MSXPLAYerのパレット

Mマガ永久保存版MSXPLAYerのMSX1用ゲームでは、
MSXに合わせて3bit精度パレットで再現しているとのことです。




こちらは、彩度を上げたTVの色のようで、これはこれでありだと思います。
(一部の色の組み合わせが見づらいこともあります)

このあたりは好みや環境による感覚の違いがあると思うので、
各自この記事を参考に、好きなものを選んだり、
調整してみて貰えれば良いかと思います。

■ NandemoMSXPAL

他に、「なんでもMSXPAL」という汎用性の高いツールがあります。http://www.tiny-yarou.com/ndmsxpal.html

MSX用のゲームはサブロムのINIPALを呼ばないので、事前にパレットを弄ればそのままのパレットで動作することを利用したものになります。

こちらは8bit精度パレットデータを3bitに丸め込んで実機側のパレットに変換します。
最終的には3bit精度になるので微調整には限界があり、各自調整してくださいとのことです。

調整したい場合は、パレットを変更・確認するための実機ツールを作成したほうが早そうです。


ということで、V9938/9958パレットでMSX1風を再現するための
パレット調査過程を記事にまとめました。

1chipMSXやエミュレーターの場合BIOSROMを書き換えられるので、
直接書き換えてしまえば気に入った色で気軽に起動できるようになるのもメリットです。

よければどうぞ。

■ パレットデータの形式

MSXのパレットデータは1色2バイトで、
順番に R*16+B、G の並び(RB 0G)で構成されています。
各パレット値は0~7の範囲です。

例)黒0000、白7707、赤7000、青0700、緑0007、黄7007、水色0707、紫7700

MSX2のSUBROMにある初期化パレットデータ


MSX2ではSUBROMの$141にあるINIPALを呼び出してパレットを初期化していますが、
この時のパレットデータはSUBROM$1055にあります。
内容は 2バイト*16色のデータで

0000 0000 1106 3307 1701 2703 5101 27067101 7303 6106 6406 1104 6502 5505 7707

です。

1CHIPMSXやエミュレーターであれば、ROMイメージの該当箇所を書き換えれば、
パレットの初期化値を変更できます。

ターボRでも、上のパレットデータをバイナリエディタで検索して
該当箇所を書き換えれば行けるんじゃないかと思います。

■ 自分の気に入ったデータ

自分の感覚で一番しっくりきたパレットデータ

2020/04/07現在

0000 0000 3305 4406 3702 4703 5203 3605
6203 6304 5306 6406 2104 5503 5505 7707

一覧のTest-3dのデータになりました。

この辺は好みですが、透明感とくすみのある色が好きなので。
カラー10番の黄色の輝度を合わせようとすると3bか3cの2択になるかなと思います。
9918が好きな自分的に3cのオレンジはないので、選んだのは3bになりました。
その後、賢者の石などを遊んだ際に6の暗い赤がきつかったので、
もう一段階くすませて、3dになりました。

もちろん、黄色味を優先するなら既存の他のパレットが良いかもです。

何度か修正を繰り返しましたが、
数値を1弄るとどう変わるかのサンプルを載せておきます。

カラー8修正前(test-3)



カラー8修正後(test-3a)



カラー6と8修正後(test-3b)



カラー6修正後(test-3d)


淡い感じを優先して最終的にこうなりました。

数値が1違うだけで大違い。難しいねー。

ちなみに、1chipMSXのS端子/AV端子出力だと色が微妙に変わります。
(黄色が少し赤っぽくなる)
VGA出力だとエミュレーターで見るのと同じ色になります。

当時のMSX1でTMS-9918Aを使用していたもので
実際にRGBで出力されたものは存在しないので、
基本的に好みで微調整する感じでしょうね。


テストショット色々。(※test-2の画像)



パロディウス



順にBlueMSX(TMS-9928A)、MSXPLAYerパレット、
BlueMSX改(TMS-9918A)、自作パレット(3d)

ガルフォース



順にBlueMSX(TMS-9928A)、MSXPLAYerパレット
BlueMSX改(TMS-9918A)、自作パレット(3d)

MSXPLAYerMSX1向けパレットはなんかエロくていいですね。

TMS-9918のように黄色を緑に寄せると冷たい感じで透明感が出ます。
緑ではなくオレンジに寄せると温かい鮮やかさが出ます。(TMS-9928等)

モニタ側の色彩表現力が上がっている現代に合わせるなら、後者の方が見やすい事でしょう。

MSXのTMS-9918Aに一番近い色で動かしたい場合は、
改造版BlueMSXを作ったのでそちらを使ってみてください。
エミュレータ側の8bit精度のパレットで再現しているのでかなり近いかと思います。

MSX2以上の実機でMSXっぽい色にしたい場合は、
パレット精度の限界があるので、
自分で調整して好みのものを選ぶのが良いと思います。

実機でのパレット再現(Test-3d)




blueMSX改でのTMS-9188A再現(ベスト)




test-3dパレットは結構淡い感じを優先して調整した物です。
賢者の石(1~4枚目)なんかは良い線行ってると思います。

ハーベルの塔(最後の画像)は、
実機MSX1だと綺麗に馴染んでいるのに対して、
test-3dでは壁の黄色が浮いて見えるのは残念です。
このあたり、3bit精度のパレットでの再現は厳しいです。
せめて4bit精度あれば…。

ということで、実機のパレットで再現する場合は、
自分なりのコンセプトを考えて、
どこを諦めてどこを優先するか決めていく事になりますね。

■パレット値の一覧

MSX2
0000 0000 1106 3307 1701 2703 5101 2706
7101 7303 6106 6406 1104 6502 5505 7707

MSXPLAYer再現
0000 0000 2305 0105 2602 3703 5202 1606
7202 7303 5205 6305 1204 5502 5505 7707

BlueMSX風チャレンジ
0000 0000 1205 4306 2602 3703 5202 2706
6203 7304 5205 6406 1204 5503 5505 7707

MSX1風-1(ボツ)
0000 0000 2205 3306 2602 4703 4202 3605
6202 6304 6306 7406 1204 5503 5505 7707

MSX1風-2(ボツ)
0000 0000 2205 3306 2603 4703 4202 3605
6202 6304 5306 6406 1204 5503 5505 7707

MSX1風-3a(ボツ)
0000 0000 3305 4406 2602 4703 4202 3605
5102 6304 5306 6406 2104 5503 5505 7707

MSX1風-3b 緑金(マイベスト1)
0000 0000 3305 4406 2602 4703 5202 3605
6203 6304 5306 6406 2104 5503 5505 7707

MSX1風-3c 赤金(なんか違う)
0000 0000 3305 4406 2602 4703 5202 3605
6203 6304 6305 6406 2104 5503 5505 7707

MSX1風-3d 緑金かつ淡い茶色(マイベスト2)
0000 0000 3305 4406 3702 4703 5203 3605
6203 6304 5306 6406 2104 5503 5505 7707

■参考:blueMSX vdp.c内の定義

■ TMS99x8A指定時の色
static struct {
int r;
int g;
int b;
} msx1Palette[16] = {
// TMS9928A
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 62, 184, 73 },
{ 116, 208, 125 },
{ 89, 85, 224 },
{ 128, 118, 241 },
{ 185, 94, 81 },
{ 101, 219, 239 },
{ 219, 101, 89 },
{ 255, 137, 125 },
{ 204, 195, 94 },
{ 222, 208, 135 },
{ 58, 162, 65 },
{ 183, 102, 181 },
{ 204, 204, 204 },
{ 255, 255, 255 }
};


■ BlueMSX改で追加したTMS-9918Aの色
static struct {
int r;
int g;
int b;
} msx1Palette_9918a[16] = {
// TMS9188A
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 79, 176, 69 },
{ 129, 202, 119 },
{ 95, 81, 237 },
{ 129, 116, 255 },
{ 173, 101, 77 },
{ 103, 195, 228 },
{ 204, 110, 80 },
{ 240, 146, 116 },
{ 193, 202, 81 },
{ 209, 215, 129 },
{ 72, 156, 59 },
{ 176, 104, 190 },
{ 204, 204, 204 },
{ 255, 255, 255 }
};

 

■ 値の検証・調整に使ったプログラム

1 DEFINTA-Z:CLEAR500:LM=191
10 SCREEN2:BLOAD"hyd3msx1.sr2",S
20 LINE(0,LM-32)-(255,LM),1,BF
30 FOR I=0 TO 15:LINE(I*16,LM-31)-(I*16+14,LM),I,BF:NEXT
40 IF INKEY$="" THEN 40
50 GOSUB 500:GOTO40
500 READ A$
510 IF A$="" THEN 540
520 FOR I=0 TO 15:J=I*5:COLOR=(I,VAL(MID$(A$,J+1,1)),VAL(MID$(A$,J+4,1)),VAL(MID$(A$,J+2,1))):NEXT
530 RETURN
540 RESTORE 1000:COLOR=NEW:RETURN
1000 DATA "0000 0000 3305 4406 3702 4703 5203 3605 6203 6304 5306 6406 2104 5503 5505 7707"
1010 DATA "0000 0000 2305 0105 2602 3703 5202 1606 7202 7303 5205 6305 1204 5502 5505 7707"
1020 DATA "0000 0000 1205 4306 2602 3703 5202 2706 6203 7304 5205 6406 1204 5503 5505 7707"
1030 DATA "0000 0000 3305 4406 2602 4703 5202 3605 6203 6304 6305 6406 2104 5503 5505 7707"
1040 DATA "0000 0000 3305 4406 2602 4703 5202 3605 6203 6304 5306 6406 2104 5503 5505 7707"
1050 DATA""

起動するとデフォルトパレットで表示、

Dataは1行ごとに16色ワンセットになっていて、
キーを何か押すと順番に読み込みます。
Data分に空文字列があるとデフォルトパレットに戻します。

現状の並びは、MSXPLAYerパレット、BlueMSX(9928)風だけど濃くなり過ぎたパレット、自作パレットTest-3c、自作パレットTest-3bの順。

パレットデータはVDP用のデータの並びになっています。
(RB0G。それぞれ0~7の範囲)

実際にはエミュレータスクリーンショット
BMP2MSXでSR5やSR2データに変換し、
それを表示して確認したりすると分かりやすいです。


違和感の出ない組み合わせとなると限られますが、
多少違和感があっても良ければ、割と色々な選択肢があるかと思います。
弄ってると面白いです。

 

エグゾイドZ (MSX CASIO)裏技




エグゾイドZは、ロボットに変形する機体で戦うシューティングゲームです。
ボス戦は殴り合いで決着します。

エリア5という続編もありますが、
初代は検索しても裏技情報などが見つからなかったので自分で調べました。
そのあたりの裏技まとめ。

無敵とレーザーを確実にだす裏技があります。

レーザーは楽しいよ。
カイジャガーもそうだけど連射可能数が増えると気持ちが良い。

ガチプレイだと4面の縦横反応での斜め移動してくるキャラが対処難しい…。
エリア5の方が人気らしく、無印をやりこむ人はあまり見かけませんが、
個人的にはこちらの方が好きです。
パッケージもかっこいいですしね。

ボス戦はお勧めです。
たどり着いた先で、パンチが連続ヒットした時の爽快感と、
一発殴られただけでやられる緊張感のバランス。
そして逃げられてやり直しになった時の悔しさ。



■ 基本情報

隠し地上物:

4色でカラフルにアニメーションする地上物は壊せるものがある

スロット:

777が揃うと8連射可能なレーザーになる
リンゴが揃うと敵が弾を撃たなくなる

ボス戦:

飛び道具は捨てて、殴り合いで戦う。
すかしたところを殴ればイケル。
逃げられるとラウンドの途中からやり直しになります。

■ 裏技情報

●無敵


電源投入時からCASIOロゴが出るまで、
キーボードの1234567(飛んで)0を押しっぱなしにする。

ただし、ボスのパンチは食らうので注意。


*1

無敵だぁぁぁ!



ボスのパンチは食らうぞ! 殴り合いには無力だ!


相変わらず一発食らっただけで爆発四散します。
ステゴロはガチ。

●777を確実に出す

条件:
ラウンド開始からスロット出現まで、地上物を壊さない。
(隠し地上物は壊しても良い)



レーザーになると連射可能数が倍になり音も軽快に。気持ちが良い。



■解析向けアドレス情報

$E0B5:起動時のキーマトリクス0番の値:0なら無敵になる
※同時押しに対応しないキーボードの場合、ここを直接書き換えで

$E0B5:地上物撃破数:0ならスロット777固定になる

$E0CD:連射上限:通常=4/レーザー=8
※連射上限を大きくしすぎるとバグる

$EC35:敵が弾を撃つかどうか:0=撃たない/1=撃つ


*1:実機以外では同時押し対応(Nキーロールオーバー対応)のゲーミングキーボードが必要だと思います。
USBキーボードは規格の制限があり、6個までしか同時押し出来ないので無敵技が使えません。
(内部的に2つのデバイスとして動作するような変態キーボード等は可)
ですので、PS/2接続のキーボードを使用してください。PS/2さいこう。
公式1ChipMSXPS/2接続なのでばっちりです)

天使たちの午後(MSX版) 攻略まとめ(ネタバレあり)

天使たちの午後MSX版をクリアしました。
他機種版とかなり違ったのでまとめておきます。






■かんたん攻略

●学校

※ まりは反応しない

うしろ いく→いしい が いる
いしい おかす→むり
いしい はなす→かみきれがおちている
かみきれ とる→OK
かみきれ しらべる→コンピュータープログラムのようです
いえ かえる

●家

※妹はいない

かみきれ しらべる→ゆみこにひみつがある
つくえ あける→2万円発見(自動では取らない)
かね とる→OK
かばん あける(もしくは出て戻る)→でんわがなっています
でんわ とる→くみ こうえんにいる
こうえん いく

●公園

くみ はなす→他の人をすきになっちゃいや
くみ おかす→なみだ
くみ わかれる→OK ボートへ移動

●ボート

ようことデートしている

ようこ はなす→ゆみこにひみつがある
ようこ きく→なおこがくわしいらしい
ようこ おかす→いやがる
きし いく→OK なおこのへやへ

●直子の部屋

なおこ はなす→由美子は原先生に脅迫されている
なおこ はなす→由美子は夜、ディスコにいる
なおこ おかす→ことわれる
へや でる→OK ディスコへ

●ディスコ

ゆみこがいる

ゆみこ はなす→いきてるといろいろあるのよ
ひみつ はなす→そう、しっているの…
みせ でる→OK ホテルヘ

●ホテル

シャワーしているゆみこ(TKBなし)

ゆみこ キスする(要カタカナ)→せかしてはだめ
シャワー やめる(要カタカナ)OK→M字開脚

M字開脚するゆみこ(TKBなし SUJIなし)

ゆみこ いく→あふぅぅ
ゆみこ はなす→原先生をゆすろうとした
ゆみこ きく→逆に関係を持つことになってしまった
ホテル でる→OK ゆみこがほほえむ ENDへ

● エンディング

おわり!



■ ネタバレ:画像一覧

全10枚の画像。
由美子以外は一枚しかないですね。
ラストはご自分の目で。
ぽっちや局部は描いてないけど。


↓ 以下ネタバレ











 

制服伝説 プリティーファイター (SFC) クリア(ネタバレあり)

スーパーファミコン版、制服伝説 プリティーファイターを全キャラクリアしました。
(1994年12月2日/発売:イマジニア/開発:元気)

サターン版のプリティーファイターXは普通に楽しめる良作格ゲーですが、SFC版は違います。
格闘ゲームとしては成立しません。
連打げーです。

基本的には付録の説明書+説明書内の漫画を楽しむものなので、
箱説なしのカセットのみを購入するのはお勧めしません。
絵はこれ系格ゲーの絵の中ではダントツで好きです。










攻略本は、紙質や印刷が悪いものの、多少文字情報が多い。
コマンド表もある。
でも、説明書の確保を優先することをお勧めします。



■CPU攻略(?)

SFC版プリティーファイターが格ゲーとしてクソゲーな点は
ガード硬直・食らい硬直が極端に短く、ガードさせてもヒットさせてもすぐ相手は動けるので、固めや連携技などがあまり機能し無い事が原因かと思います。
むしろ当てたのに反撃されることなどざらにあります。

ガード硬直・食らい硬直とは~

攻撃を食らったり、ガードさせられた時に発生する硬直時間の事。
相手の硬直中に次の攻撃を当てることで連続技や連携が生まれる。
これが短いと、
攻撃した側の硬直が解ける前に、攻撃された側の反撃が間に合ってしまい、
空振りじゃないのにカウンターを食らうという悲しい状況が発生する。
硬直時間の調整が悪いのはクソゲーの証。

ちなみに、「攻撃した側もガード/食らった側も両方硬直する時間」というのもあります。こちらはヒットストップといいます。これは入力や操作感触にのみ影響し、有利不利には影響しません

また、なんと、相手がガードしてると投げ技が入りません。
普通の格闘ゲームは、ガードしてる相手のガードを崩すために投げ技を使いますが、
プリティファイターSFC版では違います。

投げ技ガード崩し技にはならないので、ガードを崩す手段は
しゃがみガード不可、立ちガード不可の攻撃の使い分けのみとなります。

ガード硬直・食らい硬直が短いため、
密着だとこちらが攻撃を当ててもガードさせてもCPUはぽんぽんカウンターで投げてきます。
こちらが固める側だとまず投げは入らないのに。

(サターンで出た続編のプリティーファイターXは、このあたり全部ちゃんとしてますし、ダウンや吹き飛び追撃もあります。あっちは普通に良作格ゲー)

■ CPU攻略方針

基本的に(自分に判定が当たらないように技をださせて)空振りカウンターか、
ずっとCPUがガードし続ける距離+攻撃の組み合わせを見つけて、
我慢強く連打するのが大事だったりします。

あとは、相手が動けない状態である、転倒や吹き飛びを狙うのも重要です。
ある程度当てると転倒する技もあるようです。(相手が勝手に飛んでるだけかも)

(他、他の格ゲー同様にCPUの癖を誘ってカウンターが通じる組み合わせもあります。
これが出来るなら楽なのですが。)

他の注意点としては
ダメージの差も激しく、あまり減らない技異常に減る技が混在しています。
異常に減る技を食らわない事も重要です。
CPUの反応を利用してそういう技を出させないというのも有効です。

基本は、
判定の相性が良い(こちらが食らわずに、相手にあたる)攻撃を連打する。

大事なのは
連打力
こちらに相手の攻撃が届く前に自分の攻撃があたる事
・相手に判定があたる攻撃
・判定が強い攻撃

信頼性と持続力。あと連射パッド。
1時間連打し続けられるなら手連打でも。

困ったらギリギリ離れた位置から下段攻撃連打。
連打してると相手が硬直して、かつ、たまに食らってくれる攻撃を見つけたら、その攻撃をこするのが基本。
まともな格ゲーだと思ってやるとクリアできない可能性が高い。

あと、注意点としては、
しゃがみ攻撃やレバー攻撃を出した後連打してるとニュートラル攻撃に切り替わらなかったり、必殺技が出なかったりします。(方向入力を離しても連打キャンセルが優先される)

色々癖はありますが、絵は良いと思います。
サターン版は面白いけど絵があまり好みではないです。

ゲームとして遊ぶならサターン版だけど。

ひとまず全員クリアしたのでこれで封印かな。人(´ω`*)ナム…



というわけで、全員のエンディング画像をはっておきます。




ついでに軽くキャラ解説も。


■マリン(青木真琳)

身長155 体重45 B85 W56 H84
1977/5/12生 牡牛座 A型 17歳
青森出身

・↓↘→+P:セーラーパンチ(飛び道具)
・→↓↘+P:ブルセラアッパー(昇竜拳:異常に減る)
・体力が1/3以下の時に一回転+K:ポケベルフラッシャー(飛び道具)

投げが無いけど、どうせガードされてたら投げられない。
昇竜拳を当てるとごっそり減る。
青森県は青木さんが結構多い。

■ジュリ(赤坂樹里)

身長164 体重47 B88 W57 H88
1975/6/30生 かに座 O型 19歳
東京出身

・←↙↓↘→+P:ジュリ扇ファイヤー(飛び道具)
・↓→↘+P:ぐるぐるパンチ(突進+連打)
・↓↙←+K:ジャンピングヒップアタック(めくり判定も強い)
・密着して左右どちらか+中か大P:背負い投げ

背が高いので背の低いキャラが面倒ξけど、基本的に扱いやすい。
ぐるぐるパンチが結構減る。
ジュリ扇は「じゅりせん」と読みます。扇ジュリ。

■クリス(白鳥クリス)

身長158 体重48 B83 W58 H84
1974/9/13生 乙女座 A型 20歳
札幌出身

・P連打:メディカルシャワー(近距離飛び道具)
・↓↘→+P:聴診器フラッシュ(突進攻撃)
・→↓↘+P:おしりプー(ジャンピングヒップアタック:めくり判定強い)
・ため→+K:ひらキック(突進連打攻撃)
・↓ため↑+K:パックリ旋風脚(連打攻撃)
・密着して左右どちらか+中か大P:釣込投げ
・密着して左右どちらか+中か大K:パワーボム

全体に強い。
ギリギリからパンチ連打のメディカルシャワーが安定。
クリスだけにおくすり。

おりょう(黄織涼子)

身長166 体重47 B83 W57 H85
1976/2/6生 水瓶座 B型 18歳
京都出身

・←ため→+P:ハート拳(飛び道具)
・→→+K:クイックアッシー(突進攻撃)
・←ため→+K:肩たたき(フライングクロスチョップ
・密着して↓ため↑+K:内緒話(投げ)
・↓ため↑+P:痛いムチ(長距離打撃)
・密着して左右どちらか+中か大P:巴投げ

ムチが届く距離からムチが安全。
常に何か連打してCPUを固めつつ、動いたらちょっと待ってムチ
(連打キャンセル期間だと必殺技が出ないので)
履いてない疑惑。

■ケイ(紺野警子)

身長170 体重53 B93 W59 H90
1973/8/16生 獅子座 A型 21歳
名古屋出身

・↓↘→+P:警棒ブーメラン(飛び道具)
・↓↙←+K:リバースキック(対空技?)
・P連打:ドリンク飲み(回復)
・密着して→↓↘+P:おしりペンペン(投げ)
・密着して←→+キック:後ろの正面ダレー(投げ)
・密着して左右どちらか+中か大P:巴投げ

投げが多いけど、信頼できるのは飛び道具連打。
P連打は回復だけど隙が出来るので要注意。

■アイ(桃山愛)

身長147 体重40 B72 W55 H74
1980/11/15生 蟹座 AB型 14歳
広島出身

・←↓↙+K:ラジオ体操(キック攻撃)
・↓↘→:バナナ食べ(バナナ大好き)
・密着してパンチ3つ同時押し:かみかみクラッシュ(投げ)
・密着して左右どちらか+中か大P:鯖折り(投げ)
・立ち大P:回り込み攻撃(移動+ガードされてたら反対へ移動)

飛び道具も便利な必殺技もないので通常攻撃連打で攻略する感じ。
立ち大パンチが特殊な動きをするので活用するのもありだけど、密着するので相手に投げられる事が多い。
バナナ大好き開脚海老ぞり娘。

■みなみ(緑川みなみ)

身長160 体重45 B82 W55 H83
1977/12/20生 射手座 O型
大阪出身

・K連打:明日天気になれー(飛び道具)
・←ため→キック:けっこうキック(対空?)
・←↙↓↘→+P:ブレザーバック(謎の踊り:多段攻撃)
・密着して左右どちらか+中か大P:フランケンシュタイナー

キック連打の飛び道具だけで進めていく。
他は使わない方が安全確実。

■やわら(山吹柔)

身長152 体重44 B80 W56 H80
1978/9/29生 天秤座 B型 16歳
福岡出身

・密着して一回転+P:ハメハメドライバー(投げ)
・密着して一回転+K:メガトンヒップ(投げ:飛んで蹴ってるだけに見える)
・密着して↓ため↑+P:7年殺し(投げ)
・密着して左右どちらか+中P:ジャーマンスープレックス(大Pは出ない)
・密着して左右どちらか+大K:背負い投げ(中Kは出ない)

必殺技が投げなので、通常技連打が基本。つらい。
前入れ小パンチや小キックを出しながら近づいて前入れ中パンチで投げ。
というのもあり。
ノーブラノーパン疑惑。





以上、SFC版 制服伝説プリティーファイターの紹介でした。

このゲームがうまくなっても格ゲーはうまくなりませんが、クソゲーには強くなれそうです。
イラストが可愛いのでぜひSFC版を箱説付きで買いましょう。
ゲームとして遊びたい場合はサターン版を追加で買いましょう。

サターン版だけ買うと絵が違うので、
SFC版がいくらクソゲーであってもSFC版は必携だと思います。
SFC版を持っていなければプリティファイターを名乗れないと思います。
名乗らなくてもいいです。

抜忍伝説 MSX2

MSX2版 抜忍伝説 翼をもった男達




パッケージから超カッコイイ。

BrainGrey 第一回記念作品ということで、BURAIに出てきたキャラもでてきます。
なかなかえぐい展開や、今の常識で考えるとクリアできない箇所があるとか。
アイテムを自分で作ったりして進めていくのはラストハルマゲドンにも通じますが、
おそらくこれが一番面倒くさい作りのあるゲームかと思います。

このゲームの一番のネックはディスクアクセスの重さです。
メニューを開いたり閉じたり色んな箇所で発生します。

あとは、起動時のプロテクトのチェックで1分ぐらいかかります。
なので、さっさとバックアップ&プロテクト外しをしました。

4枚ともセクター1431~1439がError12を返します。
ここをチェックしている箇所を飛ばすように書き換えます。

1.オープニングディスク 0x718E6: CD 05 00 -> 18 03 00
2.邪鬼丸ディスク 0xA35F1: CD 05 00 -> 18 06 00
3.小源太ディスク 0xA19F1: CD 05 00 -> 18 06 00
4.幻妖斎ディスク 0xA31F1: CD 05 00 -> 18 06 00

おそらくこれでチェックは飛ばせるようになると思います。

(※オリジナルディスクを書き換えないようにしてください)
(※エラーでバックアップできない場合はセクター1430までをコピーしてみてください)
(※プロテクトを解除した物や元イメージを配布しちゃだめですよ)


これで、エミュレーターやESE MEGARAMのFDエミュレーションで快適に遊べるようになります。


おまけ:MSX2版マニュアル



































スキャナ?あるけどめんどい。


超連射68K (ウィンドウモード)

よっしんさんが配布されている「超連射68K」というシューティングゲーム
をウィンドウモードで遊ぶ方法。

超連射68Kのダウンロードはこちらから。
http://www2.tky.3web.ne.jp/~yosshin/
Windows10にも対応しています。

みんな超連射68Kで遊ぼう!



TIPS:
・CONFIG画面で方向キーの上を押し続けると隠しOPTION
・F1でピクセル等倍
・F4で画面引き延ばし(デフォルト)
・F5で画面引き延ばし+インターレース
・三角形の形で回転するパワーアップアイテムの真ん中をうまくキープすると全部所得できる(普通は3つのうちどれか一個取ったら消える)

(上記以外のファンクションキーだと画面が消える。 昔のバージョンだとF2、F3もなんかあったのかな?)

超絶プレイのリプレイデモデータとかもあるみたいなので、見てみても楽しいかも。
プレイするたびにリプレイデモデータは上書きされますが、
バックアップを取っておけばいつでも好きなリプレイをでデモ画面で流せます。

■ ウィンドウモードで遊ぶ


こちらは普通に起動するとフルスクリーンになってしまいます。
そこでおなじみの窓化ツール「DxWnd2」を使います。
https://sourceforge.net/projects/dxwnd/

DXWnd2を起動したら、
ウィンドウにLATEST.exe超連射68Kの実行ファイル)をドラッグ&ドロップすると、
追加設定画面が開きます。
Mainタブだけ設定すれば大丈夫だと思います。

設定とかはこちらを参考にどうぞ
DXWnd(窓化ツール)で”DMMダウンロード版”イース完全版を動かそう!

uniskie.hatenablog.com


実機は55Hzなのでついでに55fpsにするとそれっぽい気分になります。
メガドラのTATSUJINを50fpsで動かすと丁度良くなるみたいな感じ。)


■ 30fpsで点滅を綺麗に表示する


ニコニコで配信する際は30fps配信だと爆発などの点滅で半透明風に表示しているものがちらつきます。
(見えなかったり、不透明になったりします)

キャプボならデインタレース機能(インターレース解除機能)でブレンドすれば綺麗になりますが、PC上のウィンドウを取り込む場合は使えません。

その場合、

48fpsとか半端な値で配信するか、
OBSで遅延レンダリングレイヤーを使って30fpsにブレンドすると綺麗になると思います。


参考↓
60fpsのPCゲーム(EGGやMSXPLAYer)を30fpsにブレンド合成しよう!

uniskie.hatenablog.com




とても良いゲームなのでぜひ皆さんも遊んでみてください。

コナミアンティークス MSXコレクション ウルトラパックからのROMイメージ吸い出し

コナミアンティークス MSXコレクションからROMイメージを取り出す方法メモ




ゲームのCDを開くと
ゲーム名.BIN というファイルがありますが、これはlzsslz77系列で圧縮されたファイルのようです。
(この圧縮アルゴリズムは1970年代から利用され続けており、見た目の特徴があります。)

検索してみた感じ、特に解凍ツールなどは無く、自作でもしようかと思ったのですが、
自分の技能だと(ハッシュ構造体サイズ等、それぞれ独自に実装してあるだろう箇所を推測して)解凍ツールを作ることが(めんどくさくて)出来ず、別の力業に頼る方法で試してみます。


Playstation版向けの「力業で取り出す方法」は解説がありましたが、セガサターン版は見つからなかったので、メモしておきます。


使用するもの

BIOS不要のセガサターンエミュレータ『SSF』と
『cep』というツールを使います。

SSFのメニューバーにあるAboutを押すと出てくるこれ。


この「cep」ってなんだろうと思ったら、
SSF実行時にメモリ参照&書き換え出来るツールらしい。
https://pcgamer-12.com/archives/2425

こちらのサイトを参考にcepをダウンロードし、
同梱されているAPPLIST.TXTを開き、

---------- SegaSaturn
SSF Preview Ver R15 | SSF.EXE | 02078360 | $00100000
SSF Preview Ver R15 | SSF.EXE | 06098360 | $00100000
を追加して保存します。

こんな感じ


ここまで下準備。


(追記)

SSF設定を変更したり何度か起動したりしてると、
cep用アドレスが変わることがあります。

Editタブが全部00で埋まったまま変化しないとか
出力ファイルが全部00であるとか、
おかしいと思ったら、

SFF
のメニューバーからAbout(A)→cepを選択。
cep用アドレスを確認してcep設定を修正してみてください。

例)06098360 → 06C28360 に変わっていた。




SSFを実行して実行中のサターンのメモリからROMを取り出す


SSFを起動して「コナミアンティークス MSXコレクション ウルトラパック」を動かします。

cepを起動して「Process」タブで
SSF Preview Ver R15 | SSF.EXE | 06098360 | $00100000」を選びます。
(アドレスの上位が「06*****」のほう)

ここまでが準備。以下、繰り返し。

③★ SSFで動いてるコナミアンティークスで、ROMを吸い出したいMSXゲームを起動させます。
④★ cepの「Search」タブで、「Searchボタン」→「Clearボタン」
(※初回は「Seachボタン」が使えないので最初に「Clearボタン」を押してから、「Searchボタン」→「Clearボタン」の順に押す)

(※サーチをすることでメモリの内容がcep側で取得できたので
一旦検索絞り込み結果を消して、メモリ全体を扱う。)


⑤★ cepの「Edit」タブで、「Saveボタン」を押し、メモリの内容をファイル名を付けて保存します。

⑥★ 保存したメモリデータファイルバイナリエディタで開きます。
SSF Preview Ver R15」の場合、アドレス00A0000からがROMイメージです。

MSXのゲームのロムは基本的に文字「AB」から始まります。)

あとは、ここからゲームに合わせたサイズのROMデータを切り出して、ROMファイルとして名前をつけて保存すれば、取り出し完了です。

例えば
$00000~$9FFFFを削除。
ロムサイズより後ろを削除。
残るのはロムイメージ部分になるのでこれを保存。

ROMサイズはアドレスにすると
16kBtye : $4000
1MBit = 128KByte : $20000
になります。


取り出して動かしてみた結果リストがこちら

コナミアンティークス MSXコレクション ウルトラパック
ROM吸出し結果
・動いたものは〇
・問題があったり動かないものは×

■ vol.1(ページ1)

コナミのボクシング : BOXING.ROM (32KB)
コナミのピンポン : PINGPONG.ROM (16KB)
ハイパースポーツ2 : HSPORTS2.ROM (16KB)
モピレンジャー : MPRANGER.ROM (16KB)
けっきょく南極大冒険 : ANTADV.ROM (16KB)
イー・アル・カンフー : KUNGFU.ROM (16KB)
ロードファイター : ROAD.ROM (16KB)
カイジャガー : JAGUAR.ROM (16KB)
グラディウス : GRADIUS.ROM (128KB(1MBit))
ゴーファーの野望 : GOFER.ROM (256KB(2MBit))

■ vol.2(ページ2)

コナミのゴルフ : GOLF.ROM (16KB)
コナミのビリヤード : BILLIARD.ROM (8KB)
ハイパースポーツ3 : HSPORTS3.ROM (32KB)
× わんぱくアスレチック : ATHLETIC.ROM (16KB)
× マジカルツリー : TREE.ROM (16KB)
イーガー皇帝の逆襲 : KUNGFU2.ROM (32KB)
魔城伝説 : KNIGHT.ROM (32KB)
× スーパーコブラ : COBRA.ROM (16KB)
× ツインビー : TWINBEE.ROM (32KB)
グラディウス : GRADIUS.ROM (128KB(1MBit))

■ vol.3(ページ3)

× コナミのテニス : TENNIS.ROM (16KB)
コナミのサッカー : SOCCER.ROM (32KB)
× コナミラリー : HRALLY.ROM (16KB)
× ぽんぽこパン : BAKERY.ROM (16KB)
× ピポルス : PIPPOLS.ROM (16KB)
× 王家の谷 : KVALLEY.ROM (16KB)
夢大陸アドベンチャー : PENGUIN.ROM (128KB(1MBit))
× タイムパイロット : TPILOT.ROM (16KB)
× パロディウス
: PARODIUS.ROM (128KB(1MBit))
× 沙羅曼蛇
: SALAMAND.ROM (128KB(1MBit))

(※ 2020/04/03 ツインビーもゲームプレイできないのでバツにしました)

ROM吸い出しても動かないものは、
vol.3(ページ3)が特に多いですね。

動かない物について実カートリッジを持っているものと比較検証したところ、
「アンティークス版エミュレータ向けに特殊機能を呼ぶコード」
が、実機だと動かない様子。

(例えば描画の一部を乗っ取って外部から操作しているとか、ROMイメージ以外のコードが必要だとか。)

該当箇所を逆アセンブルしてみると、
VDPアクセスコードが一部消されているために表示されなかったり進行停止したり。

(ゲームのCDROMには、???.BINの他に、
書き換えVRAMデータ????.CHTというファイルが一緒に入ってますね。)

ちなみに、パロディウスは手持ちロムとほとんど別物で、
純粋にアドレスと値が一致する箇所がほとんどありませんでした。
バージョン違いがあるのかもしれませんね。
→ ダンプ取り出しに失敗してただけでした。違いは一部。(画面初期化や描画の一部)

表示変更はそのままに動かない処理だけ元に戻すパッチとか作れたらいいのかな?




何故ROM吸出しを試したのかといえば、エミュレート精度が悪く、
音も動作も微妙なので、ちゃんとしたエミュレートで動作させたい為。
グラディウスのようにウェイト入れない系のゲームでは、酷いことになるので重要。

特に、MSXグラディウスは遊ぶ手段が少ないですし。
(個人的にはMSXグラディウス2よりもMSX版1グラディウスのほうが好きかも。)

ROMイメージを取り出せれば、
MSXエミュレータC-BIOSライセンスフリー)で快適に遊べます。



尚、吸出しを行う事や吸い出したROMイメージの取り扱いは自己責任で。

 

BlueMSX2.9.0私家版メモ

■ BlueMSXのビルドメモ




BlueMSXは使いやすくて動作も優秀なMSXエミュレーターですが、
更新が止まって久しいのでOpenMSXに移行した方が良いかもしれません。
ですが、それでもBlueMSXをもう少し愛用したい方向けの情報になります。

他の人がビルドした2013年 2.8.3β
https://www.msx.org/forum/msx-talk/emulation/bluemsx-latest-version

自分が弄った3倍、4倍表示対応版2.9.0β
https://app.box.com/s/50a2muesr4vvii7shz1viw5ae85vpafn
と、そのソース
https://app.box.com/s/7uq1l4yqc2xkdwt1lifvye6c5x7nhv78

WindowsSDK7以降はDirectShow回りが変更されてるのでそのあたりの修正とか色々。
VC++2017かVC++2010、
Windows SDK 7.0か7.1
DirectX SDK (August 2007)
でビルド完了。

※ ただ自前ビルド版では録画機能があまり安定しない気がします。

●BlueMSX最新版ソース(2.9.0?)

https://sourceforge.net/p/bluemsx/code/HEAD/tree/
ステートセーブのバグその他が修正されている。

●qedit_def.hを探してきて、qedit.hをインクルードしてる箇所をqedit_def.hに置き換え。
https://github.com/nyatla/NyWin32Capture

●Strmbaselib、Strmiids.lib、Quartz.lib
WindowsSDKへのDirectShow統合に伴って、明示的なライブラリへのリンクが必要。
めんどいからこんな感じで、Win32DirectShow.cpp に pragmaで指定。
#pragma comment(lib, “Strmbase.lib”)
#pragma comment(lib, “Strmiids.lib”)
#pragma comment(lib, “Quartz.lib”)

※ Strmbase.lib
プロジェクトのblueMSX\Src\ThirdParty\DirectShowSamples に存在する。
インクルードパスに無ければ追加
....\Src\ThirdParty\DirectShowSamples
ライブラリパスに無ければ追加
....\Src\ThirdParty\DirectShowSamples

※ 自分で作成する場合は、Windows SDK 7のsampleにあるbaseclassesから作れる。
http://imagingsolution.blog.fc2.com/blog-entry-189.html

自作の場合の追加のインクルードパス
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses

自作の場合の追加のライブラリパスに追加
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug_MBCS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release_MBCS
(※ 32ビット版Windowsの人はC:\Program Files (x86)\ → C:\Program Files\)

●zlibstat.lib
zlibstat.libを要求された場合は、プロジェクト内に存在しないので
zlibをダウンロードしてきてビルドして作る。
(レポジトリの過去ログを探れば見つかるかもしれない?)

●build_number.h
build_number.hが見つからないといわれた場合インクルードパスに追加
....\bin

●Languageファイル
英語環境向けのため、日本語環境だとうまくいかない事がある。

日本語環境でどうにかするなら、
エスケープシーケンス(漢字やかなの前に\があった場合の\)を削除する。
・こまめにUTF-8で保存しなおす。
UTF-8で保存しなおした場合、マルチバイト文字だと再現できませんなどの警告が出るがあきらめる。
(ワイド文字対応すると結構大変そう)

英語環境でやるなら、
VisualStudioインストーラで言語を追加。
設定→環境→国際対応で英語環境を選択する。

●その他
・upx.exeをダウンロードしてきてパスを通しておく。
・何か足りなかったらインクルードパス等に追加すればたぶんできる。