发新话题
打印

求FC教程

引用:
原帖由 曹老师 于 2008-6-11 13:28 发表 7 ^* F( ^( H! u1 |* R" u5 m' L
1 l/ o) K" M- d! M
; H; d% z/ L* a
什么是上面的东西?要我做什么?具体说!笼统了,我会不知所措。2 V. M0 ]+ b- W) q, \. l
如能否画一幅图我看看?等等。我记得有人叫我写一个1234,我就写过程序,在论坛上发表过。是否要的就是这个?
- ^2 n0 Q- @4 O5 o. q' X# [% I6 F6 i4 W7 M/ w) A/ P
曹老师您好!
! s9 e& g! I/ U8 A, B0 u, b6 Z7 q& J我看了一些书,懂一些6502,但是还是不知道怎么显示一个字,发出一段声音7 x- |/ K. O- I2 q0 O
能不能写一点程序,仔细讲讲
; D% l, m- K9 D8 `! h+ ~谢谢您了!- r5 b' f% g5 }0 B# I6 ^% W4 v
yyhxyr@qq.com

TOP

引用:
原帖由 yyhxyr 于 2008-6-17 01:00 发表 2 s4 [( j$ Y2 q& {7 `1 p! S
. \0 f7 C6 t3 f* G3 _, Z( z

- z( x' b! ?( C3 }9 j- d5 _1 F曹老师您好!
, b3 v: X8 c7 s: ~1 h6 {我看了一些书,懂一些6502,但是还是不知道怎么显示一个字,发出一段声音  D9 H. z) q$ b% C: _
能不能写一点程序,仔细讲讲
  L7 D! `6 G# q) s! X  t4 J谢谢您了!8 }+ T$ G' r, N8 c$ t: O
yyhxyr@qq.com
3 `' `% P# Y5 q" L0 |8 w  H我做的图,我编写的音乐,当然旋律是别人的(这首曲子叫MY WAY)
附件: 您所在的用户组无法下载或查看附件
性格决定命运,存在就是合理

TOP

曹老师您好!
+ s9 x9 `9 k/ c8 n2 f能说说程序是怎么显示那个CAO的吗?
2 a1 P) c; [- i2 b0 z3 |' J

TOP

FC在屏幕上显示一个8X8的点阵(一个字,如C,A,O每一个字都是一个8X8的点阵),要通过一个特别的端口把这个字的代码,送到屏幕显示缓冲区中。现在我一步一步说:下面$表示16进制
4 u6 e4 {" {; f6 r$ \% V; I  {1。画一个8X8的点阵,我这个图库里有从0,1,。。。9,A,B。。。Z字母,画好了。点阵的代码是$00-$FF。我把0。。。。。Z放在0010-0240的位置,就是说点阵的代码是$1,$2...$24
3 ?1 J! x1 {" t1 y' ]; U! t其中C是$0D,A是$0B,O是$01(我把它跟数字0共用一个点阵)。所以CAO的代码是$0D,$0B,$01
! t- j, Z0 \( V6 x2。屏幕缓冲区的地址,一个背景是$2000-$23FF,我想把CAO写在屏幕的中央,所以地址是$212A。通过端口设定地址 $2006:$21,$2006:$2A, $2007:$0D,$0B,$01(CAO)
$ y& z0 l7 O% `, F2 ]3。我的字希望它是白色的,所以再通过这个端口,把颜色的代码送到缓冲区中:$2006:$3F,$2006:$00, $2007:$12,20,0F,0F($20表示白色,背景$12是蓝色)0 A7 p$ e8 H( m' U4 N* l
4。开中断$2000:$804 i! j9 m2 h- a8 `6 o7 {
     开显示 $2001:$1E4 M/ j+ ?( y  h" R
5。你就可以看到屏幕上有一个“CAO”字,同时听到音乐。
/ m9 p3 q, u' Y6 J$ ?: |是不是很简单?5 x) U$ ]6 H7 F4 [, [
0 S& O$ E1 `/ q& A( ^; i: a( ?3 i  {
[ 本帖最后由 曹老师 于 2008-6-18 13:39 编辑 ]
性格决定命运,存在就是合理

TOP

能给一个  方向键控制精灵运动并发出声音的 nes 制作全过程2 O! b' T( k( w2 c, F6 M; K' t
要工具 和 代码就可以啦

TOP

我们的开发工具是公司自己制作的,这个我没有权力拿出来。(对不起)。我只能讲原理,制作要你们自己做。其实我给你的cao中就已经包含你要的,动画,音乐都有了。这个曲子还很好听的。
性格决定命运,存在就是合理

TOP

曹老师您好!  b3 p2 Z5 X& T* s: `/ ~
请您讲一下如何一步一步做成这个CAO.nes的(我现在只需要显示CAO这三个字,其它的都不要)2 X" \) B2 [, f1 n
麻烦您了!4 j0 X& {* J0 Z1 j
还有这个 $2007:$0D,$0B,$01- R& Q; U2 Z9 l, i9 A
怎么写成机器码啊?

TOP

我前面不是已经说了“cao”怎么显示的?
) ^' p- w& U2 L  _5 K' l                  LDA  #$21               A9  21        ;屏幕缓冲区的高位地址3 O$ C: [! X  I; @+ W  ~/ T5 P& a
                  STA     $2006          8D  06 20   ;输入地址的端口
6 C. G  i2 n0 ^6 K2 m& V+ \                  LDA   #$2A              A9   2A       ;屏幕缓冲区的低位地址; T- X; {+ T: Y0 ?  f) l
                  STA     $2006          8D 06 20
/ W* z1 X4 K% z4 ~( E               LDA #$0D               A9  0D      ;“C”的点阵代码5 o1 r' A7 q0 T- R" _
                  STA     $2007           8D  07 20 ;输入数据的端口9 l4 e* Z# g# w$ Y' l4 [+ z
                  LDA  #$0B                A9  0B       ;“A”的点阵代码
3 g. \2 m2 K# ?. s- O: `                  STA     $2007           8D 07 20
' {2 i3 D! D# X1 A9 b$ ?4 R: p5 v               LDA  #$01                A9  01        ;“O”的点阵代码! v' c; ]/ g- `* N' i9 X
                  STA    $2007            8D 07 20
. P, h. {" S' o1 p5 _3 B; [8 E$ O: y. z2 ]$ V" u' J8 n# O) F
这时最简单的办法,当然也可以用循环的方式写
性格决定命运,存在就是合理

TOP

这么神奇的东东在曹老师的手下竟然是覆手可得。。
Yesterday is history.
Tomorrow is a mystery.
But today is a gift.
That is why it’s called the present.

TOP

厉害啊

TOP

曹老师您好!
2 k2 Y) M' Q% q( P% }2 M2 @9 ?  n- U0 O" E, A0 z
"我把0。。。。。Z放在0010-0240的位置,就是说点阵的代码是$1,$2...$24"8 Q& r$ X4 i" O, U* F  x
. J, T- C/ Q# `9 i# J: c) u
这个是为什么啊?为什么不是其它点阵代码呢?位置和点阵的代码到底是怎么一一对应的呢?

TOP

还有点阵图会超过255个吧,但是点阵的代码却只有$00-$FF,FC是怎么知道要用的是哪个地方的点阵图呢?
8 {4 @/ T4 d/ X" W/ E5 X

TOP

FC可以扩容不是?  用硬件切页的方法可以访问超过255个点阵图
Yesterday is history.
Tomorrow is a mystery.
But today is a gift.
That is why it’s called the present.

TOP

引用:
原帖由 yyhxyr 于 2008-6-21 08:06 发表
1 k* l; Z) }" H9 I+ Y+ W曹老师您好!
4 h$ i/ Q) @$ I- m, R( D$ e" v" f4 }3 r
"我把0。。。。。Z放在0010-0240的位置,就是说点阵的代码是$1,$2...$24"( O( _1 s/ Q& h3 F& I# f* E
) C* S6 v# E' P7 B3 H1 n3 f) `
这个是为什么啊?为什么不是其它点阵代码呢?位置和点阵的代码到底是怎么一一对应的呢?
5 P5 B8 |% ~0 S8 O7 P
因为图是自己画的,所以点阵的位置是自己定义的,随便你放在那里。我把这些数字和字母放在开头,是为了程序里方便计算。" y4 @. L2 J+ r0 g8 y
点阵和代码的关系,我现在举一个例子:5 j( o. c  \3 Z4 a* P. x+ ~: f! ^
我要写一个1字,首先要画一个1,而且用8X8的点阵来画                     
$ ~6 ]! p6 k% F                                                              0 0 0 0 0 0 0 0      00! s5 l9 T3 v' G: ?. F
                                                              0 0 0 0 X 0 0 0      08& s0 y: [6 ^+ s$ }
                                                              0 0 0 X X 0 0 0      18
+ ^. ~/ s1 X  j$ S" a4 m( p                                                              0 0 0 0 X 0 0 0      080 e+ T+ H! W$ Z* p1 d  t' h
                                                              0 0 0 0 X 0 0 0      087 z$ j; L3 r& L7 b! x5 S3 I9 z
                                                              0 0 0 0 X 0 0 0      08
$ C/ s. P' T: B, j$ v2 W) Q' z                                                              0 0 0 0 X 0 0 0      08
% K" S7 y% l4 g9 W! k                                                              0 0 X X X X X 0      3E
3 w5 v' }% U1 E6 s  t看的出这是一个1字吗?右边的是点阵的X看成2进制的1,用16进制来表示。X为白色,0为黑色,在屏幕上就可以看到一个白色的1字。
& R* ?# w% v/ `! N6 P+ f现在把画好的图,生成一个点阵文件(有人叫字模,就是这个),它就是:. |) n( l0 B! }" N
0000:
" @- E0 b' F4 |5 C.......; s0 t$ }9 J2 Y% A/ m1 ?8 }/ {/ A
0020:00 08 18 08 08 08 08 3E    0028:00 00 00 00 00 00 00 00    ;是我自己放在这里的
( X6 {! }! m% [( H. k% Y9 e! S......
5 K2 n. _7 I% `% J1 L0FF0
+ K6 L/ K% K% C) d因此,表达1字的点阵代码就是02.共可以有FF个代码用来画图,点阵文件的长度是0-0FFF(这是背景图画)。
, e4 L8 F* M- i+ V! s- O! J3 o" j! J7 V, c
[ 本帖最后由 曹老师 于 2008-6-21 20:16 编辑 ]
性格决定命运,存在就是合理

TOP

引用:
原帖由 santi1984 于 2008-6-21 10:35 发表 * K- n) c2 Z5 Z6 a& x2 f5 E
FC可以扩容不是?  用硬件切页的方法可以访问超过255个点阵图
- N/ ~/ }" _. o( l" ]
先等一等介绍切体的功能。先从最简单的开始。
性格决定命运,存在就是合理

TOP

0000:
: x9 V" A; I+ c! B% u0 i, ~.......: r$ ?. A+ y5 c( L
0020:00 08 18 08 08 08 08 3E    0028:00 00 00 00 00 00 00 00    ;是我自己放在这里的
  U1 _# @$ t2 E; N0 }2 H7 A......
: M" M" N8 j' p/ b0FF0
2 o+ n' B& ]+ D2 z5 f* G
3 \. F; z# m. f8 a就是说
$ r0 H. y; e6 M$ Z: \放在0020的字模,代码是02' v& v5 ]/ f8 G6 v7 \
放在0FF0的字模,代码是FF; q" Y% f2 i: P, r8 K
放在0XX0的字模,代码是XX?# T4 j- p% o4 w5 o" j5 Y$ q

TOP

是的,每个代码是一个16byte 的数据。8X8实际上只要8个byte 就够了,为什么还要16个byte呢?
% l5 [9 t: w% C8 [这是为了选择每一个点的颜色。前面的点和后面对应的点组成2进制的2个位
7 w- j  b9 N0 G% t- ^                 00     01     10      11分别代表要选取的4个颜色,其中00为背景的颜色
性格决定命运,存在就是合理

TOP

那程序是怎么调用0FFF以后的字模呢?
$ ?( Q* a; l. z' {% Y/ K) C: j- ?比如我在0FFF后放了a~z的字模3 f( V/ T, Q1 A  @3 d9 f
a~z的字模代码是不是0~25呢?
: l5 _6 i! d4 R怎么让a在屏幕上显示呢?8 }0 H9 D6 O8 Z
程序要怎么写呢?$ a, z; B. b# D8 i) d
5 o; C) _, f) L% f2 X4 V  D, k$ o

6 t9 R$ P: E* z- U1 ~[ 本帖最后由 yyhxyr 于 2008-6-22 09:54 编辑 ]

TOP

引用:
原帖由 yyhxyr 于 2008-6-22 09:52 发表
) L" v0 l) f) P4 r0 `- f* I那程序是怎么调用0FFF以后的字模呢?
; z# }0 `' r; Z% [/ e7 L! }# D比如我在0FFF后放了a~z的字模
. o9 A% r/ j5 c! b+ Y( Ia~z的字模代码是不是0~25呢?
6 j. a5 \! u  e, @5 B怎么让a在屏幕上显示呢?
0 ?; Q, @6 z! ^0 k' A, R" g4 f4 B: ]程序要怎么写呢?
  t7 Y. L( J" _6 T8 k& @. b1 `2 Q
3 p, e/ x: t; T4 h& Z& c
要用 Sprite 来显示
Yesterday is history.
Tomorrow is a mystery.
But today is a gift.
That is why it’s called the present.

TOP

拿程序来说说吧,就是我那个例子

TOP

0-0FFF是背景图像,1000-1FFF是动画的图像。你说的“以后”是指什么意思?什么叫“以后”?能否说具体一点。如地址是多少?
性格决定命运,存在就是合理

TOP

曹老师您好!$ z* f: X$ J! E$ y9 ?
比如说:- v# v5 M6 A- J& l' I3 j
1000-100F放的是a的字模( |2 _8 p9 X3 @- v0 u  i& |* g
怎么让a在屏幕上显示呢?
- S( J* F  I8 k* u' G- H* v$ F0 o$ b8 z程序要怎么写呢?! n' _6 }$ K0 A5 S5 z( W$ Z

TOP

我在33楼已经把程序写出来了。第一次写2006是屏幕的高位地址,第二次写2006是屏幕的低位地址,然后把你的代码写到2007。
" z/ N1 W" E& s9 D0 L0 l+ l8 S要在屏幕上显示字或图,要准备三个文件:5 X- B' E% O, _
1。点阵文件(图库) 0000-1FFF    放在程序后面
0 p2 i& X# J0 H0 G! V0 A2。屏幕代码文件     2000-23FF    通过2006,2007端口写入
7 {2 y! A5 y8 n7 H9 q& j& b' L3。调色盘的颜色代码文件。00-1F    通过2006,3F00端口写入
1 m" ]4 [$ D0 h* m+ D1 Q; I  W# q) k& d) D5 j) O6 ?( \
[ 本帖最后由 曹老师 于 2008-6-24 13:44 编辑 ]
性格决定命运,存在就是合理

TOP

曹老师您好!
7 v5 A+ B$ o, s我在这个位置画了个0,怎么显示它呢?
1 Y" Q0 h# S" ~7 o6 b2 G: b7 o7 e# ^7 H3 a/ p/ u6 P+ W
& D8 g- o9 u4 }) |8 L% J9 b, H. m

- V5 l- p, |# I2 i( n' D: Q5 h$ K两个0的Tile ID都是01
) y9 I, y( W8 {* R# x% p
$ A+ }6 Y0 Q9 L1 ~; w& c
! V* H1 r7 O( z% X
: X1 z: \4 L! K$ i7 ]2 ^: k9 Q3 H( J4 `/ I7 F/ P
[ 本帖最后由 yyhxyr 于 2008-6-24 14:42 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

现在你的0的代码是E1,你能找到程序C624:0D,0B,01   你把0D改成E1(C改成0),就变成0AO了。
性格决定命运,存在就是合理

TOP

发新话题