樫樹の広場



1行掲示板です。情報提供などありましたらよろしくお願いします。

特に、記事の誤り訂正などは「ほかの方も読める記録が残る」ので、掲示板を推奨します。


長い内容など、メールで連絡を取りたい方は以下のアドレスへ。


各ページの下にも1行掲示板がついていますが、このページではそれら全てを集めて表示しています。

特定ページへの内容への意見は、そちらのページで書いていただけるとありがたいです。


また、日付にリンクがある場合は、そのリンクを辿ることで元ページを見ることが出来ます。

(日付にリンクがないものは、このページで書き込まれた意見です)


作者が怠惰なので、反応は遅いかもしれません。


申し訳ありませんが、現在意見投稿をできない状態にしています

あきよし】 PAD_NEW -> PAD_OLD ご指摘の通りです。修正いたしました。ありがとうございます。 (2014-08-12 20:15:26)

【名無し】 本筋には無関係ですが、大抵のファミコンソフトは外部パッド入力(bit1)にも対応していたので、読出しは軽量化も含めるとこんな感じでしょうか。前処理で1クロック増。LDA #$01 ;2 STA >0 ;3 STA $4016 ;4 LSR A ;2 STA $4016 ;4 LOOP: LDA $4016 ;4 AND #$03 ;2 CMP #$01 ;2 ROL >0 ;5 BCC LOOP ;3/2 (2014-08-11 22:10:43)

【名無し】 TRGA:以下はBITを使うと少し軽くできますね。TRGA: BIT PAD_NEW ;4 BPL TRGB ;3/2 INC TR ;6 TRGB: BVC END ;3/2 LDA #0 ;2 STA TR ;3 END: (2014-08-11 21:57:03)

【名無し】 LD C,(nn) という操作が2箇所ありますが、Z80にこの命令はありません。 (2014-08-11 19:05:31)

【名無し】 LD (PAD_NEW),HL は LD (PAD_OLD),HL では? (2014-08-11 13:52:54)

あきよし】 ご指摘通り、特に意味はないです。ここに書いてある比較全部、プログラムとしての意味よりも「Z80 と 6502の比較」をしたいだけですし、このプログラムは次の例題の一部だったのを、長くなりすぎるから分離したものなので。一応、意図としては「ポインタ操作の比較」です。 (2014-08-11 11:19:09)

【名無し】 ファミコンでもMSXでも、1/60秒に1回しかやらない処理の速い/遅いはあんま意味あるもんではないですね。 (2014-08-11 02:14:43)

あきよし】 改良ありがとうございます。内容更新しました。 (2014-08-10 16:07:51)

あきよし】 改良ありがとうございます。内容更新しました。 (2014-08-10 16:07:27)

【名無し】 スタックポインタの退避と復帰で自己書き換えを使うと若干速くなります。勿論ROM化できなくなるのでMSXのプログラムとしては微妙な方法ですが。LD (END+1),SP ; 20 (22);LD SP,DATA ; 10 (11);POP HL ; 10 (11);SLA L ; 8 (10);JR C,END ; 12/7 (13/8);LOOP:;; テーブルを参照して VRAM の縦位置を取得;LD A,(HL) ; 7 (8);INC L ; 4 (5);LD H,(HL) ; 7 (8);;; 横座標とキャラクターを得て書き込み;POP BC ; 10 (11);OR C ; 4 (5);LD L,A ; 4 (5);LD (HL),B ; 7 (8);;; 縦座標を得て終了条件チェック;POP HL ; 10 (11);SLA L ; 8 (10);JP NC,LOOP ; 10 (11);;END:;LD SP,0 ; 10 (12) (2014-08-09 18:45:59)

←最近 27 28 29 30 31 32 33 34 35 36 37 過去→

戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -