■
http://sega.jp/community/segahard/md/soft.html
■セガの公式ページを漁ってたら、メガドライブの公式ページを見つけたつ!
公式発表の「カードリッジ容量」もある!これで、怪しげなROMサイトに繋いで、容量のチェックをせんで済む!
うし、全部吸い出しちゃる。
単位はBITなので8で割ればバイトになる。
■最大サイズは、3MBytes(24MBit)なんだ。「Thor」はもう一度吸い出さないと駄目だな。
メガドラは容量が多い分はチェックサムを誤魔化せば動いてしまう。
「フアンタシースター千年記」今4MBytes(32MBit)なんだけど、3MBytes(24MBit)に減量加工しても良いのかな?
公式発表でも、間違う可能性はあるからな。
よし、調査ちょうさ。(03/15、13:00ぐらい)
6月25日 スーパーストリートファイターIITHE NEW CHALLENGERS
カプコン ACT 10,900円 T-12043 40M [6]
へえ。メガドラのスパⅡって5MBytes(40MBit)なんだ。別にうちの吸出し機8MBytes(64MBit)でも吸い出せるケド。
って事は「SEGA DRIVE」では絶対に動作しないな。(4MBytes上限にした為)さりげなく5MBytes上限に、
変更しとこうか?管理人が、「スパⅡ」持ってないし、そもそも6ボタン殺してあるんだけど、一応復活させよう
かなあ。意外なソフトが6B対応してるし。でもPSPの場合6Bの配置が面倒だな。Lボタンメニューは便利だし、
これに涙を飲んでもらってL+R+アナログが妥当かな。操作出来るのニュータイプだけだな。きっと。
R+アナログ右上+アナログ左下。でもいいけどさ。親指が二本ないと、ちとつらい。
(13:19、そろそろお昼にしよ)
■ああそうか、その場合スタートに退いてもらえば、いいのか。じゃあ6Bの場合は
4ボタン+L+R、スタート==アナログキーだな。(つまりスーパーファミコン感覚)さっとポーズ出来ないと、
ストレス溜まるからな。方法さえ決まれば実装してもいいよ。その場合いくつか機能を殺さないとならんかも、
いい加減カスタマイズ機能あたりに死んでもらうか、作り直すか、なんとかしないと。管理人の好みとして、
「どんなキー配置でも、カスタマイズすれば可能」っていう状態より、「絶対に使いやすい配置、変えられない」
って方が好み。メニューキーは多少使いにくいけど、少なくとも6Bモードの時にはSELECTキーかSTARTキー
にした方が良さそう。(もしくはアナログの逆)
■アナログキーを方向キーとして、使ってみたけど、やっぱ使いにくい。プレステのコントローラーのアナログ
スティックはレイクライシスとかで遊んでみたけど、結構使える。PSPは全然駄目。あれも位置が方向キーと
逆だったら評価は違ってたかもしんないが、あの位置でアナログ操作は、かなり無理。(PSのパッドでさえ
やりにくいのに、何もあんなの踏襲しなくても、NTDならもちっと考えるよ。方向キーの位置をあと5mm上に
移動させて、アナログキーもその分移動出来れば、きっと評価は違ってたな。ワンダースワンで方向キー
上よりは、実績があるんだから、真似したって良い筈。)
■やはり、この位置に方向キーがあるなら、方向キー下側で、ゲームボーイ持ちをし、Lキーを手の腹で
押して、アナログキーを活用するゲームを移植せんと話にならんかも、やっぱメタルホーク専用エミュかなあ。
あーあ、HOMEキーがソフトで読めれば良かったのに、なんとか(OS騙して)ならんもんかね。
(19:52、追記)
「ps4」(千年紀)は3MBytesで足切りしちゃうと、バイナリエディターで覗いた感じでは、なんかまずそう。
この領域はROMとカードリッジ内のSRAM(バックアップRAM)が配置されるんだけど、ぱっとみに、
なーんかSRAMっぽくないような。(それでもSRAMなのかな)だとしたら、SRAM容量いくつなんだ?
ええと4kBっぽいな。辻褄が合わない。
足切りして動くかどうか未知数だし。足切りしたら、SRAMセーブ出来るようになるかも?
そうそうエミュはカードリッジ内のヘッダから、SRAMの有無/容量を判別してるんだけど、
「スーパーハイドライド(注:もちろん日本版)」はヘッダのSRAM情報が間違ってるんだよね。
SRAM情報にパッチを当てない限り、総てのエミュでセーブが出来ません。ま、STATEセーブがあるから、
本物のSRAMセーブは要らなそうでしょ?処がゲームが開始出来ない筈。このゲームは、パッチ当てれば、
Genecystでも正常動作するよ。海外の怪しげなサイトにこのゲームが無いのはきっとこのせいだな。よく知らんが。
SRAM情報はバイナリ(BIN)で、0x01b0~0x01bf。他のSRAMカードリッジを参考にすれば書式は判るでしょ。
パッチを当てたら、チェックサムを修正しないと起動出来ない。チェックサムは0x18e,0x18f計算は、
確か0x200からカードリッジ末尾までのサム。管理人はGenecyst立ち上げてFix check sumとかゆーよーな
機能で書き込んじゃうケド。他のエミュでは知らない。
(13:44、いい加減おなかすいた)
メガドラのプログラムは大抵0x200ぐらいから始まるんだけど、(正確には違う。ROMの頭に開始番地が、
書いてある。これはm68000の起動の仕組みで、別にメガドラの仕組みって訳じゃない。)
ここで、テリトリーチェックとか、チェックサムのチェックとかしてるから、ここを殺せば、チェックサムなんて、
どおでもいいんだけど。ここは初期のソフトはバイナリレベルで1kbグライまったく同じアセンブラコードだったり
する。吸出し機が調整中。吸出し不安定な時期には、しょっちゅう書き換えて、重宝した部分。今はそんな心配
ないけど。基本的に管理人ハードウェアーは、一応専門外だから苦手なもんでね。ソフトは68000のアセン
ブラ程度なら別に全然難しくないから、バリバリパッチ当てて動かす。
(それでも不思議とハードウェアー得意なのかと思われてる。何度訂正しても直らん。苦手って言ってるのに)
(あーもー14:00になっちゃうよ。いいかげんおひる食べなくては、13:58)
■えーん、納得いかないよ。
管理人、さっき、現在のA22が突然コンパイル出来なくなった。Makeで、68のコンパイル方法が解からんってエラー。
んで、A21→A22は「version.txt」と「src/cpp/の下」しか弄ってないので、(記憶ではなく、タイムスタンプで調べた)
別館から「A21」をDL。コンパイル。きちんと自動生成する。(そりゃそうだ)
さらに「A21」を「A23」に改名し、「version.txt」と「src/cpp/の下」を削除。これを「A22」からコピーし、コンパイル。
きちんと自動生成する。(この時点で問題自体は解決済み)
なのに、「A22」のMakefileと「src/cpu/の下」を削除。「A21」のそれをコピーすると、やっぱ68のコンパイル方法が解からんってエラー。
訳ワカラン。
そおいう訳で、もしかしたら次のVERはA23って名前になってしまうかも。(なるべくA22にします)
windows\temp\を消したり、何度か再起動したり、いろいろやったんだけど。どうしても原因が解からん。
gccはその特性上。tempファイルをユーザーの見えない所で作成し、自動削除する仕組みなのだが、その辺が
うまくいってないのかも知れない。HDDを「segadrive」で全検索(grep相当)したのだか、tempファイルは
見つからなかった。レジストリが引っかかったので、まさかココ?
いづれにせよ、原因不明。こういう事もあるって、与太話。こまめにバックアップしよう。
実害はないんだが、何度トライしても再現する。
と思ったら、フォルダ名「segadrivea22」を「segadrivea22naze」に変更してトライしたら、
何故か正常動作し、EBOOT.PBPが出来た。このEBOOT.PBPは「segadrivea23」の奴と、
バイナリ一致する!!(注:フォルダ名はa23だが中身はa22と同じもの)
管理人がもし、PSP開発を始めたばかりでこんな状態に出くわしたら、Makefileを延々弄って、何日も泥沼に、
嵌まっていたに違いない。
この現象は、恐らくGCCがWINの「仮想メモリ」にキャッシュを取る為ではないか?今となっては確認不能だが、
WINの仮想メモリを削除して再起動すれば、再現しなかったかもしれん。
いまから、「segadrivea22naze」をさらに、「segadrivea22」に変更し、「make clean」→「make」をしてみるが、
再現するかな?
(15:40)
うおお、絶対に再現しないと、タカを括っていたが、再現したつ。<証拠>
make: *** No rule to make target `obj/cpu/m68kcpu.o', needed by `psd.out'. Stop
.
ソースファイルもMakeファイルも1ビットだって違わんぞ。しかもフォルダ名が、
「segadrivea22naze」はOKで、
「segadrivea22」は駄目。
そんなバカな事があるかつ!さっき「segadrivea22naze」で、、「make clean」→「make」は正常で
「segadrivea22」で、、「make clean」→「make」は上記のエラー。
初心者だったら、ええつMakefile書き間違えたのかなって思い。一週間迷走したあげく、
PSP開発は解からんぽい。ってなっても、全然不思議はない。一体どんな謎やねん。ワカラン。
(16:04)
■えーん、納得いかないよ。(その2)
しつこく追求!
再起動し、DOSを立ち上げ、IEのキャッシュ一式と(これは単なるついで)、WINの仮想メモリ「WIN386.SWP」を
削除。ついでにShellIconキャッシュやTTFキャッシュも削除(これもついで)。
cygwinはcygwin/tmp/とcygwin/var/tmp/とcygwin/usr/tmp/みたけど何もない。そんでWIN立ち上げて、
リトライ。再現する。
その状態で、今度はcleanを止め、フォルダ名を「segadrivea22」→「segadrivea22naze」に変更するとOK。
うっそーん。今度のEBOOT.PBPもバイナリ一致した。(16:44)
現在のショートファイル名は、
SEGADR~1 <DIR> 06-03-15 4:26 segadrivea23
SEGADR~3 <DIR> 06-02-07 1:58 segadrivea22naze
管理人の記憶が正しければさっきは
SEGADR~2 <DIR> 06-02-XX XX:XX segadrivea22
だった筈。(XXは不明)さっきは何度ロングファイル名を変えても、「SEGADR~2」固定だった。
もう一度。「segadrivea22naze」→「segadrivea22」に変えてやってみるか。いい加減飽きてきたので、
今度出来なかったらやめる。っていうか、あらゆる手段は尽くした。もう出来ることは、
あっ!そうだ。「segadrivea23」→「segadrivea22」に変えてやってみよう。これが出来ないんじゃないか?(予想)
(16:50、じゃ二つともやってみる)
■まず、「segadrivea22naze」→「segadrivea22」に変更。
SEGADR~2 <DIR> 06-02-07 1:58 segadrivea22 (これがA22)
SEGADR~1 <DIR> 06-03-15 4:26 segadrivea23 (これがA23)
になる。ここまでは、予想どおり。日付は変わらないんだ。知らなかった。
今度は、「segadrivea22/obj/cpu/m68kcpu.o」を削除。いやリネームしてみよう。「m68kcpu.ox」にする。
M68KCPU OX 630,728 06-03-15 16:37 m68kcpu.ox
問題ない。
で、make
やっぱ駄目。
今度は、「segadrivea22」→「segadrivea22naze」に変更。
「segadrivea23」→「segadrivea22」に変更。
SEGADR~2 <DIR> 06-03-15 4:26 segadrivea22 (これはA23)
SEGADR~3 <DIR> 06-02-07 1:58 segadrivea22naze (これがA22)
これも予想どおりだな。上の奴と名前を入れ替えたので、日付が入れ替わってる事に着目。
実体==日付。名称は入れ替えたので関係がない。
さて、一々説明しなかったが、作業に万全を期す為。毎回cygwinはexit。再起動してる。WINは再起動しないが。
M68KCPU OZ 630,728 06-03-15 15:07 m68kcpu.oz
今度はこうした。で、make。
やはり駄目。あらゆる手段は尽くした。フォルダ名が、「segadrivea22」だと駄目。それ以外の
「segadrivea21」
「segadrivea22naze」
「segadrivea23」
ならOK。(中身はすべてバイナリ一致)何度やっても再現。原因はどおしてもワカラン。もうあきらめたつ。
(17:13)
■えーん、納得いかないよ。(その3)
しつこく追求!(もういいってば)
「レジストリ」のチェックをしてないのを思い出して、チェックしてみた。WINには標準でREGEDITがあるが、
このプログラムの「検索」は遅すぎるし、「検索」にバグがあるらしく、(ちゃんと存在するのに)見つけられない
場合がある。
マニアはこんなタコな「検索」など使わん。時間の無駄だ。ここは面倒でも一旦テキストファイルに吐き出して、
「検索」した方が、遥かに速いし、正確だ。どうせ、REGEDITの中身なんてたかが知れてる。reg_query_exしか
使かっとらんのじゃろ。
そおいう訳で、テキストファイルに吐かせる。さて、レジストリ、一部壊れてたんで修復。ごそっと壊れてキツイ事
もあるが、今回は全然たいした事ない。簡単に修復。早めの修復が被害を広げないコツ。
で、もいっかい実験。再現。もうわからん。本当に。降参。まいりますたがな。
(17:50、このネタは本当におしまい。もう考えるのも嫌)
■今日はさして、実のない話で時間使ってるなあ。管理人三日グライ前から目眩がするんだけど、頭に手を
あててみたら熱あるな。そんで、きょうはケーキをかつてきて喰べたんだけど、おまけで付いて来たアイスノンだか
なんだか。(名前はワカラン)頭の上にのせるとひんやりして気持ちがいい。少し眩暈が治まる気がする。
ケーキよりおまけがおいしい。(いやケーキもおいしかったけどさ、19:42)
ケーキ喰って少しカロリー消費する為、プログラミングにする。知ってる?体中の器官で脳みそが、一番
カロリー喰いなんだぜ。体動かさなくても頭動かすと、お腹が空く。夕食、食べて、ああおやすみなさいって、
寝ちゃうのは、カロリーの面から考えて勿体無い。(いい夢見れば話は別)頭使ってカロリー消費してから、
寝ような。朝果物とかも実は似た理屈。一日働くから抵抗なく早めに吸収率の良いカロリーを摂取すると、
高効率。実は何事にも理屈がある。迷信も多いんだケド。
ちう訳で、今日はカロリー消耗しないと寝る訳には遺憾、じゃなかつた。イカン。ケーキが勿体無い。で、
VDPみてたら。うーん場当たり凌ぎとはいえ、やっぱA21の対応はまずかったな。(ケーキはおいしかった)
えっと、
static void vdp_poke_vram(int addr,unsigned char d)
{
addr&=0xffff;
if (vram[addr]!=d)
{
// Store dirty information down to 256 byte level in bits
#ifdef _USE_DIRT
int byt,bit;
byt=addr>>8; bit=byt&7; byt>>=3; byt&=0x1f;
dirt[0x00+byt]|=(1<<bit);
#endif // _USE_DIRT
dirt[0x34]|=1;
vram[addr]=d;
}
}
static void vdp_poke_cram(int addr,unsigned char d)
{
addr&=0x007f;
if (cram[addr]!=d)
{
// Store dirty information down to 1byte level in bits
#ifdef _USE_DIRT
int byt,bit;
byt=addr; bit=byt&7; byt>>=3; byt&=0x0f;
dirt[0x20+byt]|=(1<<bit);
#endif // _USE_DIRT
dirt[0x34]|=2;
cram[addr]=d;
}
}
こういう殆ど同じルーチンは、C言語では、まったく同じにする事が可能だ。場当たり凌ぎの高速化では、
こういう重要な点を見逃してしまう。反省。
unsigned char* aaaa;
とか定義して、
aaaa=cram;
とかポインタ代入し、
cram[addr]=d;
と書く代わりに、
aaaa[addr]=d;
と書いても同じ事。
同様に
aaaa=vram;
って書いときゃ
aaaa[addr]=d;
で、
vram[addr]=d;
と同じ。
dirt[]のルーチンが大きく異なるが、これはdirt[]を確保する量が現状セコ過ぎる。
(現状0x35バイトしか使ってない確か)
もっとドバーっと確保すれば、まったく同じルーチンに出来る。別にCRAMとVRAMとVSRAMと全部足した量
確保したって、全然少ない。まあVRAMは64kBytesなので、ちと節約するにしてもだ。おまけにdirtには、
苦手なビット演算も使ってるし、いっその事dirt[]なしって選択もありかも。
■解説しよう:dirt[]とは、dirty bufferの事。一度更新した場所はdirt[]にフラグとして覚えておき、画面更新の時に
さっきとデーターが変わってない部分をチェックして(つまりdirt[])更新を手抜きする手法。古くはPC88という、
コンピューターの時代に、ゲームアーツ開発の「テグザー」というゲームが使用して有名になった手法。
(注:正確にはPC-8801mkⅡSR/TR/FR/MR、同時期にPC-8001SRという(mkⅡが入らん)変な型番の
奴もあったが全く別PC。この頃のPCは型番が複雑。今は少しぐらい名前が違っても同じ物が動くのは
常識だけど、当時は1つ型番が違えば全く動かないのが常識。)
■このPCはアセンブラで書いても、画面のスクロールなどさせようものなら、それだけでCPUパワーを、使い
果たしてしまう情けないPC。もちろん(グラフィック画面の)ハードウェアースクロール機能などない。
「テグザー」ではドット単位のスクロールは潔くあきらめ、8ドット単位にスクロールを固定。(正確には16ドット)
一つの背景を構成するチップは8x8ドットなので(正確には16x8ドットの正方形)同じ背景チップが連続して
続いた場合は、画面をスクロールさせても全く書き換えなくて良い。意図的にチップの種類を減らす事により。
高速描画を実現。当時のプログラマーに衝撃を与えた。(と、思われる。注:すべて想像)
後に「スクエア」(現:スクエアエニックス)がファミコンに移植したが、ファミコンはドットスクロールがハードウェアーで、
あるので、8ドットスクロールさせても、全く嬉しくなく。しかも原作では空いたCPU時間を使って、
ガンダム(っていうよりマクロス)の爆発バリのオタッキーなエフェクトがかかっていて、
いい味を出していたのに。ファミコン版ではすべてカット。
全く無意味な出来具合だったのに。なぜか「スクエア」が持ち上げられる。
ファミコン版は画もダメ。音もダメの最悪な出来だと思ったが、ファミコンユーザーの他社ゲームの出来が
より酷かった為、(ファミコンは普及したが、ゲームをするのには、ちとスペックが低すぎた)
雑誌が出来が良いとか嘘ばっかり書いても、一般人には最後まで、気が付かれなかった。(もしくは気が付いても偽善で無視した)
どうせ一般人は原作の「テグザー」など見た事も聞いた事もない。が、見栄は人一倍あるので、まさか知らん
とも言えず。雑誌に騙される。
PC88時代には、現在のレベルから見ても、結構ヤッテルなと思わせるゲームがほんの少しだが存在する。
その他はどおしようもないカスだが、一部優秀なゲームが存在する。他のレトロPCも似た状況。
そおいうものが全然なければ、誰がエミュなど作るものか。
■ところでX68000エミュはいいかもな。メガドラと似たようなスペックでというよりメガドラに
大量のVRAMを足したような状態。(色はもっとずっと出る。大体PSPと同じグライ)PSPメモリ余ってるから、
何とでもなりそう。
確かVRAMが4MBytesぐらいで、(確か2+1+1)RAMが2~4MBytesグライで、主要なメモリはそんな感じ。
ディスク二枚で、3MBytesグライ、オンメモリに確保しても、PSPなら全然余裕じゃん。
DGEN100なんてワークに12MBytes以上確保して、平気な顔して動いてる。
■はっきり言って人間には経験則により、自分の体験した内容を正当化する性質がある。
ファミコンは、動きは確かにゲームしていた。だが、画や音のレベルは低すぎた。管理人的には、
あれはゲームの起点とは認められない。ファミコンの時代より遥か昔に、もっとずっと凄いゲームが
極少数ではあるが、存在していたからだ。
最近の子供(小学生程度)に先入観を与えず、ゲームを体験させてあげれば良い。ファミコンより昔の
ゲームでもずっとセンスが良く面白いものが幾らでも存在する。ただしハードウェアーの稼動条件は厳しいが。
ファミコンは、一般人にゲームとは実は楽しいものである。と認知させたが、けっしてクオリティーの高いゲームを
配布した媒体ではなかった。この傾向は後のスーパーファミコンにも引き継がれ、クソゲーばかり認知される。
スーパーファミコンで(ストーリーが面白い等の特徴のある)一部以外のRPGは全部クソゲーじゃねえか。
ファミコンのドラクエと本質的にレベルが変わらん。まともなアクション/シューティングは極一部しか無い。
(R-TYPEⅢは良い)まともな格闘ゲーはストⅡグライしかないし。NEOGEOのゲームは
(あんな低レベルの移植度じゃ(メガドラも同じ))NEOGEOで遊べよ。
レースゲームはF-ZEROもどきで、大体あの時代にはジャンル自体に無理があった。(首都高バトルとかさ、
PS時代になって初めてゲームっぽくなったじゃん)メガドラもこの辺は同じ。アーケードのパワードリフトとか
奇抜な発想で勝負するなら、何もポリゴンである必然性は何処にもない。っていうか、あれポリゴン化したら、
見た目に全然つまんないよ。あのガタガタ感がいいんだよ。(注:ステアリング、アクセル、ブレーキ、筐体必須)
ポリゴンじゃどうがんばってモデリングしても、きれいになりすぎて気持ち悪くなる(つまり酔う)だけだよ。
PS2のスペースハリアー楽しかったか?あれが(本物より)楽しいと思う人には、何も言うまい。
パックマンをポリゴンでモデリングして一人称ゲームにしたら、どんなにゲームバランス詰めても楽しくないよ。
あれは、アクション要素もあるけど完全な記号的戦略ゲームで、一画面にすべて見えてるから価値がある。
スクロールした時点で戦略が発揮出来ないから、別ゲームだよ。
単なるFPSで弾が切れて逃げ回ってるだけの状態を経験させたいなら、単なるマゾ。
エライ人には基本的な事がワカンナイんだろな。今頃インベーダーPSPで売ってるようじゃさ。
(2006-03/15、23:10)
■注:下記コメント参照せよ。
なにい。スパⅡ。動かないのか。これは面白い。ちと現実世界でROM漁って、スパⅡ入手してくるかな。
どおせ、程度に拘らなけりゃ¥1000以内であるじゃろ。¥2000もありゃ、256MBのUSBメモリが買える
時代とはいえ、下らん雑誌のひとつも買ったと思えばたいした額ではない(無駄遣いと思わない)例え、別口で、
非合法な方法ならタダで(ワンクリック五秒以内で)入手出来るとはいえ、¥1000払えば合法的に調査出来るなら、
下手な映画みて、つまんなかったって嘆くより。遥かに建設的。おし、明日は下界に赴いて調査する事に決めた。
目標はスパⅡなければ適当なもん買ってこよう。よーくセガのページで研究しなくちゃ。管理人が持ってなくて、
いかにもエミュで動きそうも無い物。いまからリスト作り作業だな。本音を言えば、メガドラで欲しいゲームはもうねえんだよ、
全部欲しいもんは買っちまったから、セガのリストを上から下まで何度眺めても、まああっても良いケドっての
ばかり。管理人レアかどうか知らんが、ガントレットやテトリスは泣いて頼まれても欲しくない。テトリスなら、
SYSTEM16移植しないと話しにならん。他の全てのテトリスは単なるカス。嘘だと思うなら試せ。
(2006-03/15、23:55)