版を指定して表示しています。
理由が無い限り、最新版の閲覧をお願いします。

ユーザー操作

目次

概要

Z80基本

6502基本

速度判定


6502基本

こちらは、テーブルを使って少し高速化しています。


	LDA GAMEPAD ; 4

	TAY ; 2
	AND #3 ; 2
	BEQ UD ; 3 / 2

	TAX ; 2
	LDA TABLE-1,X ;4
	CLC ; 2
	ADC MX ; 4
	STA MX ; 4

UD:
	TYA ;2
	AND #$0C ; 2
	BEQ TRGA ; 3 / 2

	TAX ; 2
	LDA TABLE-4,X ;4
	CLC ; 2
	ADC MY ; 4
	STA MY ; 4

TRGA:
	LDA PAD_NEW ; 4
	ROL A ; 2
	BCC TRGB ; 3 / 2
	INC TR ; 6
TRGB:
	ROL A ; 2
	BCC END ; 3 / 2
	LDA #0 ; 2
	STA TR ; 3
END:


TABLE:
	DB -2,2,0,0,2

テーブルは読出しアドレスをうまく細工して、5バイトに納めています。

実は、これを Z80 に移植しようとしたのだけど、逆に遅くなってしまうのであきらめました。

うまくやれば出来ると思うのだけど、どうも Z80 は苦手…


6502 でアセンブラを覚え、インデックスを使うと遅い Z80 で挫折し、再びインデックスが普通に使える 68000 で再勉強したもので…

こちらも、クロックはひたすら数えるしかありません。


何も押されていない時、 32 クロック

右下と A が押されたとき、67 クロック。

左上と B が押されたとき、66 クロック


総計で 165 クロックです。


速度判定

6502 は 165クロック。周波数を考慮して倍にすると、MSX での 330クロック相当の実時間になります。

Z80 は 638クロックなので、差は308クロック。ファミコンが倍速です。


これは多分、僕が Z80 が苦手なせい。多分 Z80 側でもテーブル化するとかして高速に出来ると思うのだけど…


前ページ 1 2

(ページ作成 2014-08-10)
第1版 …他の版 最新版

前記事:パッド入力     戻る     次記事:コマンド入力
トップページへ

-- share --

0000

-- follow --




- Reverse Link -