>>942 互換モードだとFM音源や68000は止まってしまうんじゃなかったかな?
通常モードでZ80から68000に画面制御の仕事を投げるようにプログラムするのは可能。
でも、そんなことするならZ80のコードを68000用に書き直したほうがいいように思う。
>944
ありがとうございます。互換モードだと動かないのは残念なです。
確かに、手間のかかることをかもしれませんが、マスターシステムに興味もありまして、その技術を使えたら楽なのではない
か、と思った次第なのです。セガハードの未知の部分の探求ってやつです。
底の浅いハードだなぁ
互換モードだと68000に突っ込みを入れる手段が無くなってしまうので、
きっと通常モードで動かす必要があるのだと思います。
最初にマスターシステム版のゲームを作って、
そのZ80ソースコード(アセンブラ)をなるべく書き換えずに、つまりZ80メインで68000をなるべく使わずに
メガドライブに移植するとした場合を考えてみたけど、結構メンドクサイかも。
1. カラー、背景、スプライト、サウンド、パッド入力、バンク切り替えのルーチンを初めから
独立させておく。後にメガドライブ用に書き換える。
2. RAMとROMのアドレスが入れ替わってるから、アドレス定義を書き換える。
3. 固定32K + バンク16K + RAM8K だったメモリー空間が、RAM8K + バンク32KB に変わってる。
32Kで収まらないROM容量の場合は初めからこの違いを考慮する必要がある。
場合によっては 1. 以外のルーチンもこの違いの都合で書き換えないとエケないかも。
4. 割り込みモード1、割り込み要因はVSYNCのみ。
5. Z80はメガドライブのI/Oに一通りアクセス出来るけど、
VDPのコントロールポートとデータポートだけは16bitバスアクセスしかサポートしてないので、
68000に代理アクセスしてもらう必要がある。
例えばZ80はVDPに送りたい内容をZ80のRAMにスタックしておいて、
68000はVSYNC毎にそのスタックの内容をVDPに送るとかすれば68000側のコードだけはクソ短くなる。
6. メガドライブ側の開発環境にZ80を始動させるコードを含んだスタートアップルーチンが
あるので、そこは楽。
丁寧な解説ありがとうございます。
互換モードというよりは、VDPの画面モードをマスターシステム
にして、かつVDPのアクセスを68000に実行させるということですね。
一応、68000が動いているということは、ゲームのプログラムを動かしつつ
Z80のポート処理は出来るということでしょうね。
VDPの画面モードはマスターシステム互換(Mode 4)でもメガドライブ(Mode 5)でもOK。
何時の日か作った60fps拡大縮小デモ、実機で動く様に修正しました。
エミュだとDMA周りの再現性が怪しい事が分かりました。
http://68000.web.fc2.com/demo.html 非VBLANK中はソフトウェアレンダリング量を削る為に256x224pixelにしてます。
VBLANK中は320x224pixelにする事でDMAの転送速度を上げてます。
(DMAの転送速度がドットクロックに合わせて変わります。)
修正乙
やっぱ実機確認は必要だね
自作ROM乗せるカセット作るのに五円とか十円で裸カセットを買ってみた
そういやこないだの日曜日、友達(熟女)のPCがコンデンサー破水して逝きかけてたから、
ハードオフにそれのスペア代わりになりそうなマザーボードが無いか眺めに逝ったついでに、
8bitバスなROMが2個乗ったメガドライブのカートリッジを2本買っておきました。
既にNeo Super MD貰ってしまったから今の所ただのストックだけど。
元ネタ (2〜4Mx8bitのROMで作るカートリッジ)
↓
ttp://ponrevival.blogspot.com/2010/07/m4ifm.html
安く買えそうなのはスーパーリーグとスーパーマスターズかな
古いマザボで2Mのフラッシュ焼けば楽できるね
それから、上のほうでマスターシステム互換の話が出てたけど
バッテリーバックアップ付きのカセットからROM抜いて、配線をあれこれすれば
8Kのマスターシステム互換カセットが出来上がるのかも
なんとなく60fps拡大縮小デモの続きで60fps動作するメガデモみたいなシーンを少し作ってるのだけど、
ふと60fps動作可能な「似非回転BG面」や「似非アルファブレンディング」や「似非カラー半透明」
を実現する為のヒントがVDPの非公開機能 (ポートアドレス 0xC0001C) に潜んでいる事に気づきました。
でもエミュはその非公開の機能が実装されて無いから、
非公開機能を使ったシーンは実機でガチャガチャ動作確認しないとエケなくてめんどい問題。
今の所出来てるのは、ソフトウェアなビットマップレンダリングを一切しない、
HSYNC割り込みとラスタースクロールだけで表現出来る60fpsなメタボールと拡大縮小。
他に立体的にねじれたり変形する柱とかチューブとか、
ソリッド ポリゴン (多分1ライン当たり最大5トライアングルまで)
もHSYNC割り込みとラスタースクロールだけで可能な様です。
とりあえず実機で動くROMが出来たらいっぺん動画かROMを公開してみます。
今の所不真面目なコード書いてるから実機だとシーン切り替えに失敗してフリーズします。
更にエミュだと気まぐれで画面がバグります。
>VDPの非公開機能
テラドライブの315-5313には倍の128KBのVRAMが付いてて
当時の一部の人達は当たり前のようにそこを使う方法を知ってたんだよなぁ
あの人達はやはり開発関係者だったんだろうか?
V9938の拡張RAMみたいに表示用には使えないのだそうだけど
同人ゲー、とりあえず最後のボスまで出来た。
あとはバグ捕って、サウンド シーケンサーとエンディングをこさえて、
ゲームバランス調整しないとエケない状態。
オリジナルは 「無料ダウンロードじゃなかったの?」 と言うレベルのミニゲームで、
そのゲームをわざわざ工場で金型でプラ固めて、ROM焼いて、アセンブルして、
メガドライブのカートリッジにするのはもったいなく思ったから、
好き勝手に敵の種類を増やして、1ステージから4ステージに増やして、
ゲームシステム自体変えて、だいぶボリュームアップしてみたけど、
手間掛かった割りにそんなに面白くない問題。( ´^ω^`)
そしてこないだのデモはスクリーンショット上げてみた。
http://68000.web.fc2.com/animals.html
見てきた
メガデモでは珍しい処理じゃないけど、メガドラってとこがポイントなのかな
乙です
ところでZ80でPCM再生の頁のリンクが死んでるのは仕様ですか?
リンク先が404なのはきっとヴォケです。直してみた。
そういやそのPCM2音再生ドライバー、バグがあって一部のエミュでも実機でも音が出ないです。
まだ直してないです。
乙です
勉強させてもらいまっす
おや。期待アゲ。
>>964 NEO Mythで動かなくてそのスレ読んでみたら、実機では動かないと言う話。
実機で動くバージョンが出来たらウレシイ。
実機本体からBIOS読み出すのどうしたらいいの?
メガCDとかは出来るみたいだけど・・・
NEO Myth Flash Cart使えるなら、本体BIOSの内容をSRAM領域に単純にコピーするプログラム書いて、それ実行して結果をPCから吸いだすのが一番簡単では。
ケーブル作る手間を惜しまないなら、どっかの外人が作ってた、メガCDからブートして、MDのパッド端子とPCのパラレルポートを繋いだケーブル経由でデータ吸いだすソフト使えばよい。
あれは、MCDのBIOSだけじゃなくて、本体側のBIOSやROMカートリッジの内容も読み出せた筈なので。
そういう手段が無かったころは、
・本体のBIOS-ROMを剥がして、リーダにセットするなり適当に配線するなりして、チップから直にデータを読み出す。
・適当なSRAM付きのカートリッジに一旦BIOSのデータを吸いだして、さらに適当な吸出し機経由でPCで読む。
とかやってたのではなかろうか。
MDにBIOSなんてあったんだ
BIOSというかリージョンチェックプログラムがVA6以降(だっけ?
単品のROMじゃなくてカスタムLSIの中ですが
そういやBIOS見るのってどうするんだっけと思って見てみた。
アドレス 0xA14101 に 0x00 をセットすると、BIOS ROM が有効になる。
アドレス 0xA14101 に 0x01 をセットすると、カートリッジ ROM が有効になる。
つまり2種類のROMを切り替える方式の様なので、
NEO MythみたいなバックアップSRAM機能付きFlashカートリッジを使う場合、
カートリッジ ROM上のコードをRAMにロードして、
ロードしたコードにジャンプすればOKの様です。
ウチの予想が合っているなら多分こんな感じ。
int ram[1024];
void transfer(){
register char *bios;
register char *sram;
register int size;
*(char *)0xA14101 = 0x00;
bios = (char *)0x000000;
/* 16MBitカートリッジのケツにバックアップSRAM 2KBytes がある場合 */
sram = (char *)0x200000;
/* for文が相対ブランチ命令になってないとRAMから実行できない */
for(size = 0; size < 2048; size++){
*sram++ = *bios++;
sram++;
}
/* SGCCバグ対応無限ループ */
while(1) asm("nop");
}
void main(){
register char *read;
register char *write;
register int size;
void (*function) ();
read = (char *)&transfer;
write = &ram[0];
for(size = 0; size < 1024; size++){
*write++ = *read++;
}
/* 関数ポインタの扱い方忘れた。変数ramにロードしたtransfer関数を実行出来れば良い。 */
function = (void (*) ())ram;
(*function) ();
}
と言うかそのうちNEO MythにBIOSを保存する機能が付きそうな予感。
ついでにBIOS眺めてみたけど、2KBしか無いROMカートリッジと言う感じだった。
ROMカートリッジとしてのヘッダーが付いてました。
コードらしき領域は少ししか無い (後半のビットパターンはきっとフォントデータ) から、
単純にライセンスとリージョンチェックくらいしかしてないっぽい。
BIOS ROM搭載機種かどうかは、単に起動時にセガのライセンス表示が出るかどうかで判別出来ると思います。
まんま、"produced by or under license from sega enterprises ltd" と言うデータがあった。
ちょこっと変えるだけでHello worldになる教科書ソフト的何か?
そういえばメガアダプタにもROM(のような物)が乗っかって
カートリッジとマイカードの切り分けをやった後で自分は見えなくなるようになってる
??? ?
? ? ?? ??
? ? ? ?
? ? ? ?
? ? ? ?
? ?■ ?
?? ??
?? ??
? ?
? ● ● ?
? ?
?? ? ??
????? ??????
?? ????? ??
???? ????
???? ????
??? ???
?■?????■??
????▲?????
!
| 丶 _ .,! ヽ
> ``‐.`ヽ、 .|、 |
゙'. ,ト `i、 `i、 .、″
| .,.:/"" ゙‐,. ` /
` .,-''ヽ"` ヽ,,,、 !
、,、‐'゙l‐、 .丿 : ':、
、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''` .,"-、
,r"ツぃ丶 `````` ../ `i、
,.イ:、ヽ/ー`-、-ヽヽヽ、−´ .l゙`-、
_,,l゙-:ヽ,;、、 、、丶 ゙i、
>>977 要するに、メガドライブ版のメガデモみたいなものかな?
979 :
798:2011/01/12(水) 02:25:07 ID:U+R11Gux
モーションブラー版かっこいいねえ
音付きに期待
音付けてみた。
音で660KBくらい消費してます。
絵は890KBくらい。
Megasisじゃ正常に動かなかったのでRegen導入してみた
起動さえしないよファッキン
なんで…?
Megasis <<<<<< Kega Fusion < Regen
メガシス、CPUクロック間違ってるから音程がおかしいです...。
なのでRegenが起動出来なかったら、Fusion試してみると良いかも。
ウチはFusion 3.63 とRegen 0.97D 実機で動かしております。
Fusionで動いた!
スゲー、耳から脳汁が漏れます
技術的な事が全くわからない通りすがりだけど
メガドライブでここまでできる事に驚いた
>>980 最初の 0.00 だと何だか分からなかったけど、
0.02 になったら何だか分かるどころかすごく格好良い!
>>980 NOMAD実機 + NEO MYTH CARTで動かしてみた。 スバラシイ!!(・∀・)
日課の様に今日(昨日)も更新してみた。
再生ルーチン側の補完処理で擬似的に解像度を上げたけど、
見栄え的には前回のバージョンの方がスッキリしてて良かったかも。
ハーフトーンがザラザラしてていやらしいです。
今日は風引いたから、寝ながらウチもNOMAD + NEO MYTH CARTで動かしてみた。
NOMADのスピーカーと液晶だと、結構ノイズ目立たなくて都合いい感じね。
オリジナルをつべで見た
つか、どれが元かよくわからんけど
ああ、そういう内容だったのか…
>風邪
おだいじに…
MZか何かの拡張16MB使ってやってる人もいなかったっけ
>>991 なるほどー、何人も神がいたわけか…
>4. その絵コンテを元に影絵アニメ化した動画が登場。
動画としての元はここなんだろうけど、動きが凄くなめらか
実際に人が動いた影絵を加工してるのだろうか?