ファミリーベーシック活用テクニック|ツリー抽出(13件 >>396)

396 : ナイコンさん : 2008/01/20(日) 03:27:54
どなたかファミリーBASICのキャラクターROMデータを直接
読む方法をご教授願います。例えばAの文字などの場合、
&h38;,&h6c;,&hc6;,&hfe;,&h82;,&h82;,&h82;,&h00; みたいなデータで
保存されているのではないかと思い、エミュレータ上でPEEK命令を
使ってみたのですが、それらしいデータが見つからないもので・・。

大昔、発見した気がするのですが、あまりに昔のことで覚えてない
のです。
400 : ナイコンさん[sage] : 2008/01/20(日) 09:38:28
>>397,398
違うと思うぞ。
>>396
ファミリーベーシックは持ってないので想像だけど
ROMの領域だから&H8000;以降ではないかな。
ググってみたけどメモリーマップは見つからなかった。
401 : 396[sage] : 2008/01/20(日) 12:48:10
>>400
ありがとうございます。取説のメモリマップには、
プログラムROMは&H8000;~&HFFFF;と書いてありますが、
キャラジェネはPPUからですので、単なるPEEK命令では
読み込めないかも知れないですね。もう少し頑張ってみます。
397 : ナイコンさん[sage] : 2008/01/20(日) 04:56:40
for i=0 to 255:print chr$(i);:next i
のこと?

コード知りたきゃ
print asc("A")
でAのキャラクターコード表示されるとオモ。
407 : ナイコンさん[sage] : 2008/01/24(木) 21:42:25
http://ossan.fam.cx/up/gazo/src/1201178170132.jpg
>>396のやりたいことを、Z80使いの漏れが6502で作ってみたが、
6割方値は読むので考え方は間違っていないのだろうけど、
完全に読めていない。何が悪いんだろう。割り込み関係かな?

.org $6d1f
sei
lda #$14  ; $1000+asc("A")+16の値が入る。
sta $2006
lda #$10  ; Aなので、$1000+65*16=$1410。
sta $2006
ldx #8
ldy #0
label01:
lda $2007
sta data,y
iny
dex
bne label01
rts
data:
.db 0
408 : ナイコンさん[sage] : 2008/01/25(金) 11:31:06
>>407
V3? どっちにしてもCLEAR&H;○○○○で、自分用の領域を確保しないとやばい。
409 : ナイコンさん[sage] : 2008/01/25(金) 14:05:12
http://ossan.fam.cx/up/gazo/src/1201237165551.jpg

>>396
とりあえず出来た。ギコを参考に、PPUを読む際にスプライトとBGの表示をオフにしたら読めた。
最初の1個は何故か20Hが読まれるけど、次からの8バイトはちゃんと読めている。
POKEで6021Hと6026Hを変えれば他の文字も読めるので、このプログラムから応用が利くのでは。

昨日のリストから、seiを除いて、
最初に lda #%00000110 sta $2001でスプライト・BGを非表示に、
最後に lda #%00011110 sta $2001でスプライト・BGを表示。
ldx #8 を ldx #9 にして、9バイトを読んでいる。
(ファミコンの場合、BG1個につき16バイトのデータで構成されているけど、
 この用事に必要なのは頭8個だろう)

>>408
サンクス。CLEARの使い方はこれでいいのかな?
412 : ナイコンさん[sage] : 2008/01/26(土) 15:23:26
>>409
RAMアクセス以外でも、表示を消さないとダメだったんだっけか。
CLEARはそれで良いと思った。

スクロールがずれるのであれば↓の技でどうだろう。(2006とスクロールレジスタは内部が共有している)

734 :名前は開発中のものです。(sage):2007/09/04(火) 01:24:17 ID:GQvI0rE0
>>732
112行目に下のコードをはさんでみ

lda #$3F
sta $2006
lda #$00
sta $2006
sta $2006
sta $2006
414 : ナイコンさん[sage] : 2008/01/26(土) 16:24:49
画像ロダに、簡潔に機械語を纏めたリストを貼った職人が…
機械語たった9バイト、すげぇ。

ちなみに、漏れが書いた>>411のプログラムに
>>412のコードを挟んでも、画面ブレがなくなった。サンクス。
411 : ナイコンさん[sage] : 2008/01/26(土) 12:47:58
http://ossan.fam.cx/up/gazo/src/1201318925048.png

BGパターンを読む際に、画面が一瞬チカッとするのが気に入らない。
$2006に値を入れた瞬間に画面が乱れるみたいなので、
Vブランク回避などを試みているが、今ひとつ上手く行かない。
が、BGパターンは間違いなくちゃんと読めている。

ファミコンの画面表示って面倒くさいのな。
732 : ナイコンさん[sage] : 2010/08/15(日) 10:15:18
キーボードが付くと俄然"コンピューター"って感じがするよね。
413 : 396[sage] : 2008/01/26(土) 16:23:03
>>408-411
 やってみました! まさに私のやりたかった事でしたよ。

 実は、ご教授いただいた直後、昔は意味も分からず眺めて
いた某書籍をさらに発掘したので、色々調べてみました。

 ・読みたいアドレスを&H004A;と&H004B;に書いてから、
  &H0063;に「5」の値を書き込んで、垂直ブランキングを
  待つと、CG-ROMの中身を読み込んで、結果を&H0073;に返す・・らしい。

 普通、わかりませんよね。こんなこと(^^;。

 他の表示部分を、そのまま使わせていただき手直ししました。
ちらつきもほとんど無くなったかと思います。

http://ossan.fam.cx/up/gazo/src/1201331220154.png

 お陰さまで本当に助かりました。皆様、有難うございました。
415 : ナイコンさん[sage] : 2008/01/26(土) 16:26:19
と思ったら、>>396本人だったのね。