OSDN Git Service

scroll reg working..
[motonesfpga/motonesfpga.git] / tools / test-image / sample1.asm
1 .setcpu         "6502"\r
2 .autoimport     on\r
3 \r
4 ; iNES header\r
5 .segment "HEADER"\r
6         .byte   $4E, $45, $53, $1A      ; "NES" Header\r
7         .byte   $02                     ; PRG-BANKS\r
8         .byte   $01                     ; CHR-BANKS\r
9         .byte   $01                     ; Vetrical Mirror\r
10         .byte   $00                     ; \r
11         .byte   $00, $00, $00, $00      ; \r
12         .byte   $00, $00, $00, $00      ; \r
13 \r
14 .segment "STARTUP"\r
15 .proc   Reset\r
16 ; interrupt off, initialize sp.\r
17         sei\r
18         ldx     #$ff\r
19         txs\r
20 \r
21     ;ppu register initialize.\r
22         lda     #$00\r
23         sta     $2000\r
24         sta     $2001\r
25 \r
26 \r
27         lda     #$3f\r
28         sta     $2006\r
29         lda     #$00\r
30         sta     $2006\r
31 \r
32     ;;load palette.\r
33         ldx     #$00\r
34         ldy     #$20\r
35 copypal:\r
36         lda     palettes, x\r
37         sta     $2007\r
38         inx\r
39         dey\r
40         bne     copypal\r
41 \r
42         lda     #$20\r
43         sta     $2006\r
44         lda     #$ab\r
45         sta     $2006\r
46         ldx     #$00\r
47         ldy     #$0d\r
48 \r
49     ;;load name table.\r
50 copymap:\r
51         lda     string, x\r
52         sta     $2007\r
53         inx\r
54         dey\r
55         bne     copymap\r
56 \r
57     ;;scroll reg set.\r
58         lda     #$00\r
59         sta     $2005\r
60         sta     $2005\r
61 \r
62 ;;;;----------------------\r
63     ;;load name tbl.\r
64     ldy #$00\r
65     ldx #$2c\r
66 \r
67     lda #$20\r
68     sta $2006\r
69     lda #$80\r
70     sta $2006\r
71 \r
72     lda #$80\r
73     sta $00\r
74     lda #$20\r
75     sta $01\r
76 \r
77 nt_st:\r
78     cpy #$0b\r
79     bne goto_next1\r
80     jsr add_nl\r
81     jmp goto_next3\r
82 goto_next1:\r
83     cpy #$16\r
84     bne goto_next2\r
85     jsr add_nl\r
86     jmp goto_next3\r
87 goto_next2:\r
88     cpy #$21\r
89     bne goto_next3\r
90     jsr add_nl\r
91 goto_next3:\r
92 \r
93     lda nt1, y\r
94     sta $2007\r
95     iny\r
96     dex\r
97     bpl nt_st\r
98 \r
99 \r
100     ;;load attr tbl.\r
101     ldy #$00\r
102     ldx #$04\r
103 \r
104     lda #$23\r
105     sta $2006\r
106     lda #$c8\r
107     sta $2006\r
108 \r
109 at_st:\r
110     lda at1, y\r
111     sta $2007\r
112     iny\r
113     dex\r
114     bpl at_st\r
115 \r
116     ;;set universal bg color.\r
117     lda #$3f\r
118     sta $2006\r
119     lda #$10\r
120     sta $2006\r
121     lda #$3d\r
122     sta $2007\r
123 \r
124     ;;set scroll reg.\r
125     lda #$03\r
126     sta $2005\r
127     lda #$00\r
128     sta $2005\r
129 \r
130     ;;show bg...\r
131         lda     #$1e\r
132         sta     $2001\r
133 \r
134     ;;;enable nmi\r
135         lda     #$80\r
136         sta     $2000\r
137 \r
138     ;;done...\r
139     ;;infinite loop.\r
140 mainloop:\r
141 \r
142     ;;read ppu status reg while displaying\r
143     ;;vram read test\r
144     ldx #$0a\r
145 l1:\r
146     nop\r
147     dex\r
148     bne l1\r
149 \r
150     ldx #$0a\r
151 read_status:\r
152     lda $2002\r
153     dex\r
154     bne read_status\r
155 \r
156         jmp     mainloop\r
157 .endproc\r
158 \r
159 \r
160 nmi_test:\r
161 \r
162     rti\r
163 \r
164 add_nl:\r
165     clc\r
166     txa\r
167     pha\r
168 \r
169     lda $01\r
170     sta $2006\r
171 \r
172     lda $00\r
173     adc #$20\r
174     sta $00\r
175     sta $2006\r
176 \r
177     bcc no_carry\r
178     lda $01\r
179     adc #$00\r
180     sta $01\r
181     sta $2006\r
182     lda $00\r
183     sta $2006\r
184 no_carry:\r
185 \r
186     pla\r
187     tax\r
188     rts\r
189 \r
190 nt1:\r
191         .byte   $61, $62, $63, $64, $65, $66, $67, $68, $69, $6a, $6b\r
192         .byte   $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3a\r
193         .byte   $41, $42, $43, $44, $45, $46, $47, $48, $49, $4a, $4b\r
194         .byte   $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3a\r
195 \r
196 at1:\r
197         .byte   $1b, $e4, $a5, $5a\r
198 \r
199 palettes:\r
200 ;;;bg palette\r
201         .byte   $0f, $00, $10, $20\r
202         .byte   $0f, $04, $14, $24\r
203         .byte   $0f, $08, $18, $28\r
204         .byte   $0f, $0c, $1c, $2c\r
205 ;;;spr palette\r
206         .byte   $0f, $00, $10, $20\r
207         .byte   $0f, $06, $16, $26\r
208         .byte   $0f, $08, $18, $28\r
209         .byte   $0f, $0a, $1a, $2a\r
210 \r
211 string:\r
212         .byte   "test2!"\r
213 \r
214 .segment "VECINFO"\r
215         .word   nmi_test\r
216         .word   Reset\r
217         .word   $0000\r
218 \r
219 ; character rom file.\r
220 .segment "CHARS"\r
221         .incbin "character.chr"\r