>>140
なかなか出来が良さそう
.macro 〜 .endm (引数付きで)
.func
なんかも使うと楽になる場合もあるよ

>>140
ttp://wiki.nesdev.com/w/index.php/Controller_port_registers
$4017への書き込み(W)によるstrobe(コントローラーのリセット行為)は無意味、
そもそも出力ポートにつながってないかと。
strobe行為は$4016だけで十分。

$4016のbit0が1か0かで、
Tコン、Uコン、bothのコントローラーの中のTC4021BP(シフトレジスタのIC)の、
パラレル、シリアルの各モードが変わる。
1→0で押しボタンのパラレルデータがシフトレジスタに取り込まれて、
シリアル化されたということだ。

シリアル化されたデータは
Tコンは$4016の読み込み(R)で、
Uコンは$4017の読み込み(R)で、
それぞれ独立にシフトされる。

ttp://green.ap.teacup.com/junker/116.html この回路図もいいな
ttp://nesdev.com/Ntd_8bit.jpg

>>141
パレットはいじってないよ?