1行掲示板です。情報提供などありましたらよろしくお願いします。
特に、記事の誤り訂正などは「ほかの方も読める記録が残る」ので、掲示板を推奨します。
長い内容など、メールで連絡を取りたい方は以下のアドレスへ。

各ページの下にも1行掲示板がついていますが、このページではそれら全てを集めて表示しています。
特定ページへの内容への意見は、そちらのページで書いていただけるとありがたいです。
また、日付にリンクがある場合は、そのリンクを辿ることで元ページを見ることが出来ます。
(日付にリンクがないものは、このページで書き込まれた意見です)
作者が怠惰なので、反応は遅いかもしれません。
申し訳ありませんが、現在意見投稿をできない状態にしています。
【名無し】 上位アドレスのTABLE1と下位アドレスのTABLE2を用意して、LDX #>DATA ; 2;LDA #0 ; 2;STA >0 ; 3;CLC ; 2;LDY DATA,X ; 4;BMI END ; 3 / 2;LOOP:;LDA TABLE1,Y; 4;STA >1 ; 3;LDA TABLE2,Y; 4;ADC DATA+64,X; 4;TAY ; 2;LDA DATA+128,X; 4;STA (0),Y ; 6;INX ; 2;LDY DATA,X ; 4;BPL LOOP ; 3 / 2;END: とすると1742クロックですね。 (2014-08-07 22:29:53)
【名無し】 HLとDEを入れ替えるだけで結構効率化できます。LD DE,DATA ; 10 (11);LD B,VRAM/256; 7 (8);;LOOP:;; まずは縦座標を計算。 5bit シフト;LD A,(DE) ; 7 (8);RLA ; 4 (5);JR C,END ; 12 / 7 (13 / 8);INC DE ; 6 (7);RLA ; 4 (5);RLA ; 4 (5);LD L,A ; 4 (5);LD H,0 ; 7 (8);ADD HL,HL ; 11 (12);ADD HL,HL ; 11 (12);;; 横座標と、VRAMアドレスを足す;LD C,(DE) ; 7 (8);INC DE ; 6 (7);ADD HL,BC ; 11 (12);;; キャラを書き込む;LD A,(DE) ; 7 (8);INC DE ; 6 (7);LD (HL),A ; 7 (8);;JMP LOOP ; 10 (11);END: (2014-08-07 20:33:35)
【名無し】 初回シフトの最適化と、加算なしの場合の処理を減らして150クロック35バイト。ある種ループ展開ですが……。LDA #100 ;2 STA >3 ;3 ASL A ;2 STA >0 ;3 LDA #0 ;2 LDX #8 ;2 BCC LOOP ;3/2 ADD: ADC >3 ;3 BCC LOOP ;3/2 INC >0 ;5 LOOP: DEX ;2 BEQ END ;3/2 SHIFT: ASL A ;2 ROL >0 ;5 BCS ADD ;3 DEX ;2 BNE SHIFT ;3/2 END: LSR >0 ;5 ROR A ;2 STA >1 ;3 (2014-08-07 19:57:38)
【名無し】 LD A,(HL) でフラグ変化はないのでNフラグの判定は失敗します。また、JR M,e という命令はないので絶対ジャンプ命令にする必要があります。最初の RLA でキャリーフラグを判定するのが楽だと思います。 (2014-08-07 19:53:56)
【名無し】 LD DE,100 ; 10(11);LD H,E ; 4(5);LD L,D ; 4(5);INC E ; 4(5);LD B,2 ; 7(8);LOOP:;ADD HL,HL ; 11(12);JR NC,SKIP1; 12/7(13/8);ADD HL,DE ; 11(12);SKIP1:;ADD HL,HL ; 11(12);JR NC,SKIP2; 12/7(13/8);ADD HL,DE ; 11(12);SKIP2:;ADD HL,HL ; 11(12);JR NC,SKIP3; 12/7(13/8);ADD HL,DE ; 11(12);SKIP3:;ADD HL,HL ; 11(12);JR NC,SKIP4; 12/7(13/8);ADD HL,DE ; 11(12);SKIP4:;DJNZ LOOP ; 13/8(14/9);SRL H ; 8(10);RR L ; 8(10) で30バイト298クロック。 (2014-08-07 19:22:46)
【あきよし】 クロック計算、その通りです。ありがとうございます。申請170クロックで合わないな…と思いつつ、3クロック差だから「加算の共通部分」に間違いがあるのかと思ってそこばかりチェックしていました。 (2014-08-07 19:10:06)
【名無し】 前処理のSTA >3は3クロック、加算有りの繰上りなしは20クロックではないでしょうか。 (2014-08-07 12:05:27)
【あきよし】 なんて美しいプログラム…。ありがとうございます。内容更新しました。 (2014-08-07 06:13:32)
【名無し】 6502ループ展開前を改造してみました。ADD:では必ずC=1なので、>3には101-1を代入してCLCは省略。>0は>4の役割を兼任。ループはXでカウントに変更、など。170クロック。LDA #100; STA >0; STA >3; LDX #8; LDA #0; BEQ START; ADD: ADC >3; BCC LOOP; INC >0; LOOP: DEX; BEQ END; START: ASL A; ROL >0; BCS ADD; BCC LOOP; END: LSR >0; ROR A; STA >1; (2014-08-06 19:57:31)
【あきよし】 ありがとうございます。内容更新しました。 (2014-08-06 10:49:15)←最近 28 29 30 31 32 33 34 35 36 37 38 過去→