旧いダンプリストから

ベーマガ掲載P6プログラム「GOKIVADER」のマシン語ルーチンから発展した、古の(笑)CPU談義いろいろです。
8
本名荒井 @psyzans

ふと「GOKIVADER」のMSX移植を思い立つ。問題は画面表示範囲処理と、マシン語ルーチンの解読だ。

2012-01-07 21:39:56
本名荒井 @psyzans

マシン語部分を無理無理MSXに打ち込み、MOLITORで逆アセンブルしてみた。P6の画面表示についてはよくわからないが、マシン語ルーチンを解読してみると、ゴキベーダー降下処理をやっているものと思われる。 http://t.co/XTJNuc7P

2012-01-07 21:43:39
本名荒井 @psyzans

P6もMSXも同じZ80系CPUを使ってるから、基本のニーモニックは共通だろうということで、P6のマシン語サブルーチンをMSXで解読するという無茶ができるわけで。

2012-01-07 21:45:01
岩崎啓眞@スマホゲーム屋+α @snapwith

@psyzans 間違いなく。ブロック転送でキャラクタVRAMを転送して最上位をスペースで埋めてるだけですねw

2012-01-07 21:47:16
本名荒井 @psyzans

@snapwith ご教示ありがとうございます。25年近く前のアセンブリ言語のソースを見ただけですぐ判るとは! さすがスタープログラマー!(笑)

2012-01-07 21:50:49
岩崎啓眞@スマホゲーム屋+α @snapwith

@psyzans つっか、こんなの誰でも分かるでしょうw

2012-01-07 21:51:22
しんさん @shinsan68k

ブロック転送なるいにしえの呪文が聞こえた気がするが、2012年的に気のせいだろう

2012-01-07 21:54:36
SOW龍@猫とヤングとおれふつう @SOW74656

@psyzans @snapwith ブロック転送ナツカシス。LDDRなんて文字列見たの何年ぶりだろうかw

2012-01-07 21:56:23
岩崎啓眞@スマホゲーム屋+α @snapwith

@psyzans 古すぎて全然データがないんですが、32バイト離れてるんで、横32キャラで、$E3DFあたりが右端1キャラ分上のVRAMエンドで、LDDRで転送してるんだとw

2012-01-07 21:59:38
本名荒井 @psyzans

@snapwith おおよその見当は付きましたが、こちらはP6のVRAM関連の知識が全くないため、厳密にどういう挙動をするか、掴みきれないところがあるのですw

2012-01-07 21:59:42
MSX研究所長 @yoshimatsuTUQ

@snapwith @psyzans 誰でも!ってそりゃ無茶な…と思いつつ、LDIRじゃなくてLDDRを使っているところがミソですね。コピー元と先の領域が重なってる時に使う命令だったっけ。

2012-01-07 22:01:01
岩崎啓眞@スマホゲーム屋+α @snapwith

@yoshimatsuTUQ @psyzans 逆スクロールで上から下にモノが降りてくるから、下から上にコピーしないといけないので、LDDRなんですw ニコニコに動画があるので確認出来ますね。画面サイズが結構ナゾなのが唯一の問題です。$1c0ではどう考えても足りない。

2012-01-07 22:02:44
本名荒井 @psyzans

@yoshimatsuTUQ @snapwith LDDRとLDIRの使い分けですね。尻からコピーするか頭からコピーするか。

2012-01-07 22:03:00
SOW龍@猫とヤングとおれふつう @SOW74656

@yoshimatsuTUQ @snapwith @psyzans 確かスクロールはLDIRじゃダメでLDDR使ってたな。もう20年以上前のことだから忘れちゃった・・・・・・。

2012-01-07 22:04:12
本名荒井 @psyzans

@snapwith @yoshimatsuTUQ リストにCONSOLE 0,16,0,0の記述があるので、16行しか使ってないようです。つまり仰るとおりというわけです。

2012-01-07 22:06:19
SOW龍@猫とヤングとおれふつう @SOW74656

@psyzans @snapwith モードやページ数によってV-RAMの位置が変わります。

2012-01-07 22:06:49
ゆんゆん探偵 @yunyundetective

ブロック転送がどうしたって?

2012-01-07 22:06:23
MSX研究所長 @yoshimatsuTUQ

@snapwith @psyzans 0x1c0=448だから、32x14ですかね。うわ、小さい。P6知らないけどこんなもんでしょうか。20Hで埋めてるのも32だから合ってるはず…。

2012-01-07 22:07:00
本名荒井 @psyzans

@yoshimatsuTUQ @snapwith 最下段2行に自機を表示するので、14行分スクロールさせてるみたいです。これではっきりしました。(0,0)-(32,13)に表示している内容を一段下に下げ、最上段をスペースで埋める処理ですね。皆さんご教示ありがとうございます!

2012-01-07 22:10:02
ゆんゆん探偵 @yunyundetective

TweetDeckがまともにリプライチェーン辿れなくなっているせいでブロック転送の話題が追えない…。twitter社まじで死ね。

2012-01-07 22:10:07
岩崎啓眞@スマホゲーム屋+α @snapwith

@yunyundetective ブロック転送ごときに熱くならないでくださいwwww

2012-01-07 22:11:13
タイニーP/四寺儀けんぞう @Kenzoo6601

@psyzans 16行「しか」でなくて初代P6のテキスト画面は32文字×16行っす(1文字が8×12ドットなので)

2012-01-07 22:12:40
ゆんゆん探偵 @yunyundetective

DJNZ命令で規定回数ループ回してるあたりは反射的にループ展開しちゃいたくなるのは病気だな。

2012-01-07 22:13:17
ゆんゆん探偵 @yunyundetective

Z80のディスアセンブルコード見たら脳みそが反射的に最適化始めようとした件。20年ぐらい前に夢中になってた事にまだ身体が反応する…。

2012-01-07 22:14:02
岩崎啓眞@スマホゲーム屋+α @snapwith

@yunyundetective ぶっちゃけLDDRもパフォーマンス悪いですよ。メモリ使っていいなら、全然速く出来る…(;´ω`)

2012-01-07 22:14:03
1 ・・ 4 次へ