見出し画像

FBneoでマイクを使うファミコンゲームでNES設定になってるからマイクが設定できない件(FDS除く)

個人的にFBneoに対して怒っておったのはハックを
親ROMにしてたからとかでちょうどアサクリシャドウズの話で
炎上してたときで余計色々考えてましたん

こう日本発のものを勝手に変えられて広まるの嫌やん?
英語ハックがオリジナルみたいな基準にされて海外で作られたゲームが
後で日本語にローカライズされたんだぞみたいな歴史にされたくない
一騎当千方式シューティングゲームみたいな謎ジャンルも
日本人はそんなン知らんし、未だに納得いってないし
既に広まってしまってるからもうダメな気がするけど
なんかビデオゲーム機第何世代とかも勝手に
海外の研究家のが基準になってしまったし
アワアワ

まぁそれはそれとしてFBneoのd_nes.cpp見てたらなんか色々すごかった
(技術的なとこですよ、奥さん)
ウガウガ

基本的にファミコンタイトルもNES扱いになっているので
そのままではスターソルジャーやバンゲリングベイや
アトランチスの謎や仮面ライダー倶楽部やドラえもんや
たけしの挑戦状(これはソフト的にボタンで代用可)などで
マイクが使えない!!だめじゃん!!と思っていたが
実はFDSではマイク実装してるのよ
というか色んなデバイス実装してるんよ
優秀でしたわ

じゃあマイク対応のゲームのみデバイス入力とかを
FDSにしたらファミコンになるんじゃね?と
思いました

d_nes.cpp見ましょう

ゼルダの伝説(ディスクシステム版、自分が追加したやつ)
く、クローンじゃないしッ!!・・・(´・ω・`)ジブンデシテルデ
後、FDSはヘッダ付きとヘッダ無しが混在しておるんですがソレハ(´・ω・`)
FDSはポルスボイス対応済みです(イッツマイク)
(ニューファミコンでFDSゼルダをクリアしたんですけどNe)

// Zelda no Densetsu - The Hyrule Fantasy (Japan)
static struct BurnRomInfo fds_zeldanodenjRomDesc[] = {
	{ "Zelda no Densetsu - The Hyrule Fantasy (Japan).fds",          131000, 0x9e8ba7dc, BRF_ESS | BRF_PRG },
};

STDROMPICKEXT(fds_zeldanodenj, fds_zeldanodenj, fds_fdsbios)
STD_ROM_FN(fds_zeldanodenj)

struct BurnDriver BurnDrvfds_zeldanodenj = {
	"fds_zeldanodenj", "fds_zeldanoden", "fds_fdsbios", NULL, "1986",
	"Zelda no Densetsu - The Hyrule Fantasy (Japan)\0", NULL, "Nintendo", "Miscellaneous",
	NULL, NULL, NULL, NULL,
	BDF_GAME_WORKING | BDF_CLONE, 1, HARDWARE_FDS, GBF_ACTION | GBF_ADV, 0,
	NESGetZipName, fds_zeldanodenjRomInfo, fds_zeldanodenjRomName, NULL, NULL, NULL, NULL, NESFDSInputInfo, NESFDSDIPInfo,
	NESInit, NESExit, NESFrame, NESDraw, NESScan, &NESRecalc, 0x40,
	SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT
};

アトランチスの謎(ゾーンセレクトハック)これも自分が追加したやつ

// Atlantis no Nazo (Hack, Zone Select)
// Shigeru's ips 2016
// Download
// https://note.com/api/v2/attachments/download/2f8d207b8dc640f39db49a88fe929b54

static struct BurnRomInfo nes_atlantisnonazojzRomDesc[] = {
	{ "Atlantis no Nazo (Zone Select).nes",          49168, 0xaf9dc5f7, BRF_ESS | BRF_PRG },
};

STD_ROM_PICK(nes_atlantisnonazojz)
STD_ROM_FN(nes_atlantisnonazojz)

struct BurnDriver BurnDrvnes_atlantisnonazojz = {
	"nes_atlantisnonazojz", "nes_atlantisnonazo", NULL, NULL, "2016",
	"Atlantis no Nazo (Hack, Zone Select)\0", NULL, "Shigeru", "Miscellaneous",
	NULL, NULL, NULL, NULL,
	BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 1, HARDWARE_NES, GBF_PLATFORM, 0,
	NESGetZipName, nes_atlantisnonazojzRomInfo, nes_atlantisnonazojzRomName, NULL, NULL, NULL, NULL, NESInputInfo, NESDIPInfo,
	NESInit, NESExit, NESFrame, NESDraw, NESScan, &NESRecalc, 0x40,
	SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT
};

うーむ
もしかしたら

NESInputInfo, NESDIPInfo,

NESFDSInputInfo, NESFDSDIPInfo,

にするだけでいいんじゃね?って思いました
ディスクシステムなので強制的にファミコンになるはずですね

建築

できました

		// MIC "blow" hack (read on 1p controller address, yet, mic is on 2p controller!)
		if (NESMode & IS_FDS && port == 0) {
			if (DrvInputs[1] & ((1<<2) | (1<<3))) { // check if 2p select or start pressed. note: famicom 2p controller doesn't have start or select, we use it as a MIC button.
				ret |= 4;
			}
		}

すんません!
アトランチスの謎ハックではFBneoのドライバで設定されてる
2pセレクトとかぶるのでダメでした!(2pセレクト優先されます)
別のゲームでヨロシコ
ちなみにFDS設定にすると2pのスタート、セレクト入力の設定は
なくなります
(Nestopia等ではそんな事になりません、ややこしい)

となるとちっさいハミコンのアトランチスの謎のマイクは
やっぱり2コンの別ボタンに割り当てられてるのかな?
ゾーンセレクトなしだと確認がダルい

たけしの挑戦状ガガガガガ(公式のママ)

// Takeshi no Chousenjou (Japan)
static struct BurnRomInfo nes_takesschajRomDesc[] = {
	{ "Takeshi's Challenge (Japan).nes",          131088, 0xe810b35c, BRF_ESS | BRF_PRG },
};

STD_ROM_PICK(nes_takesschaj)
STD_ROM_FN(nes_takesschaj)

struct BurnDriver BurnDrvnes_takesschaj = {
	"nes_takesschaj", "nes_takesscha", NULL, NULL, "1986",
	"Takeshi no Chousenjou (Japan)\0", NULL, "Taito", "Miscellaneous",
	NULL, NULL, NULL, NULL,
	BDF_GAME_WORKING | BDF_CLONE, 1, HARDWARE_NES, GBF_ADV, 0,
	NESGetZipName, nes_takesschajRomInfo, nes_takesschajRomName, NULL, NULL, NULL, NULL, NESFDSInputInfo, NESFDIPInfo,
	NESInit, NESExit, NESFrame, NESDraw, NESScan, &NESRecalc, 0x40,
	SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT
};

// Takeshi's Challenge (Hack, English)
static struct BurnRomInfo nes_takesschaRomDesc[] = {
	{ "Takeshi's Challenge (T-Eng).nes",          262160, 0x18c9b8ad, BRF_ESS | BRF_PRG },
};

STD_ROM_PICK(nes_takesscha)
STD_ROM_FN(nes_takesscha)

struct BurnDriver BurnDrvnes_takesscha = {
	"nes_takesscha", NULL, NULL, NULL, "2011",
	"Takeshi's Challenge (Hack, English)\0", NULL, "KingMike", "Miscellaneous",
	NULL, NULL, NULL, NULL,
	BDF_GAME_WORKING | BDF_HACK, 1, HARDWARE_NES, GBF_ADV, 0,
	NESGetZipName, nes_takesschaRomInfo, nes_takesschaRomName, NULL, NULL, NULL, NULL, NESInputInfo, NESDIPInfo,
	NESInit, NESExit, NESFrame, NESDraw, NESScan, &NESRecalc, 0x40,
	SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT
};

こーゆーのですぞぉぉぉーーゴゴゴゴゴゴゴォーーーーー(再燃
たけしズチャレンジてなんや・・・
やはりジャパニーズはクローンにされてる・・・
NeCoビルドでは修正しておこう・・・
これってでぃんくさんの意思なのかがぶさんの意思なのかどっち?
それによってFBneoチーム感じ悪い選手権の順位が変わってきますぞぉ(
がぶさんが最高テスト責任者兼品質保証部門の責任者でした…
(最初ネタと思ってたのですがホントっぽいです)
やっぱり無茶苦茶やないか…
品質も保証もあるかぁァァァーー( ‘д‘⊂彡☆))Д´) スパパーン ドゴォォォ

建築

やはり他のエミュレータと同じくマイクをボタンに
割り当てでは反応しない
マイクの入力が逆になってる等の現象が起こってるとかの情報も
聞いたことはあったり入力がオンになってる時間の問題等なのか
他のエミュレータでもマイクだと基本的にもしもししてくれません
2コンの下とAでよろしこ(一回やればAボタンのみです)

当時これがヒントだと分かる人間はいなかった(ワカルカッ( ‘д‘⊂彡☆))Д´) パーン

ということで
バンゲリングベイかスターソルジャーか・・・
また今度だ・・・

ちなみに自分はわざわざ建築してますが
多分*.datを書き出してMAMEのように自分で追加すれば
ゲームの追加できるはずです(試してないのでわかんない)
マイクを使うファミコンゲームならFDSの*.dat書き出して
追記すればいいと思いましたがもしかしてFDSBIOSが
先に起動してしまうので無理かもしれません

あとエミュ界でもNESイメージにヘッダつけるのいい加減やめない?
との話も出ているのですがそれだと
エミュレータ側(または専用データベース)も必要だしどうなんでしょうね
しつこく任天堂がインターネットのROMイメージを使っている!!
という変な輩もいるんですけど(めっちゃどうでもいい)
余計な設定なしで自分で後でヘッダつけても同一のCRCのものになります
ヘッダに謎のコンバートの文字列が残ってるやつとかはシラン
QDファイルに文句つけることはできない
海外で合法的にFDSのゲームを遊ぼうとしているの人の話も
聞いてあげると楽しいです


この記事が気に入ったらサポートをしてみませんか?