OSDN Git Service

renamed test-image
[motonesfpga/motonesfpga.git] / tools / ppu-regression-test / 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 \r
17 ;;; de1 env decoder bug test\r
18 ;;;LDA   $8182, y\r
19 ;;;STA   $2007\r
20 ;;;INY   \r
21 ;;;DEX   \r
22 ;;;;;BPL   #-10\r
23 ;;;LDA   $8182, y\r
24 ;;;STA   $2007\r
25 ;;;INY   \r
26 ;;;DEX   \r
27 ;;;;;BPL   #-10\r
28 ;;;LDA   #$3d\r
29 ;;;STA   $0302               ;;;>>>invalid store address!!!! @ 907,921,200 ps\r
30 \r
31 \r
32 \r
33 \r
34 ; interrupt off, initialize sp.\r
35         sei\r
36         ldx     #$ff\r
37         txs\r
38 \r
39     ;ppu register initialize.\r
40         lda     #$00\r
41         sta     $2000\r
42         sta     $2001\r
43 \r
44 \r
45         lda     #$3f\r
46         sta     $2006\r
47         lda     #$00\r
48         sta     $2006\r
49 \r
50     ;;load palette.\r
51         ldx     #$00\r
52         ldy     #$20\r
53 copypal:\r
54         lda     palettes, x\r
55         sta     $2007\r
56         inx\r
57         dey\r
58         bne     copypal\r
59 \r
60         lda     #$20\r
61         sta     $2006\r
62         lda     #$ab\r
63         sta     $2006\r
64         ldx     #$00\r
65         ldy     #$0d\r
66 \r
67     ;;load name table.\r
68 copymap:\r
69         lda     string, x\r
70         sta     $2007\r
71         inx\r
72         dey\r
73         bne     copymap\r
74 \r
75     ;;scroll reg set.\r
76         lda     #$00\r
77         sta     $2005\r
78         sta     $2005\r
79 \r
80 ;;;;----------------------\r
81     ;;load name tbl.\r
82     ldy #$00\r
83     ldx #$40    ;;name table entry cnt.\r
84 \r
85     lda #$20\r
86     sta $2006\r
87     lda #$c0\r
88     sta $2006\r
89 \r
90 nt_st:\r
91     lda nt1, y\r
92     sta $2007\r
93     iny\r
94     dex\r
95     bpl nt_st\r
96 \r
97     ;;load attr tbl.\r
98     ldy #$00\r
99     ldx #$08    ;;attribute entry cnt\r
100 \r
101     lda #$23\r
102     sta $2006\r
103     lda #$c8\r
104     sta $2006\r
105 \r
106 at_st:\r
107     lda at1, y\r
108     sta $2007\r
109     iny\r
110     dex\r
111     bpl at_st\r
112 \r
113     ;;set universal bg color.\r
114     lda #$3d\r
115     sta $0302\r
116     jsr set_bg_col\r
117 \r
118     ;;set scroll reg.\r
119     ;;lda #$a6\r
120     lda #$05\r
121     sta $0300\r
122     lda #00\r
123     sta $0301\r
124     jsr set_scroll\r
125 \r
126     ;;set next page name table\r
127     ldy #$00\r
128     ldx #$0b\r
129 \r
130     lda #$24\r
131     sta $2006\r
132     lda #$c0\r
133     sta $2006\r
134 \r
135 nt2_st:\r
136     lda nt2, y\r
137     sta $2007\r
138     iny\r
139     dex\r
140     bpl nt2_st\r
141 \r
142     ;;next page attr.\r
143     lda #$27\r
144     sta $2006\r
145     lda #$d0\r
146     sta $2006\r
147 \r
148     lda #$e4\r
149     sta $2007\r
150 \r
151 ;;;    ;;dma test data.\r
152 ;;;    ldy #$00\r
153 ;;;    ldx #$41\r
154 ;;;    stx $00\r
155 ;;;    ldx #$00\r
156 ;;;dma_set:\r
157 ;;;    ;;y pos\r
158 ;;;    txa\r
159 ;;;    sta $0200, y\r
160 ;;;    iny\r
161 ;;;    ;;tile index\r
162 ;;;    lda $00\r
163 ;;;    cmp #$5b\r
164 ;;;    bne inc_tile\r
165 ;;;    lda #$41\r
166 ;;;    sta $00\r
167 ;;;inc_tile:\r
168 ;;;    inc $00\r
169 ;;;    sta $0200, y\r
170 ;;;    iny\r
171 ;;;    ;;attribute\r
172 ;;;    lda #$01\r
173 ;;;    sta $0200, y\r
174 ;;;    iny\r
175 ;;;    ;;x pos\r
176 ;;;    txa\r
177 ;;;    adc #$03\r
178 ;;;    tax\r
179 ;;;    rol\r
180 ;;;    sta $0200, y\r
181 ;;;    iny\r
182 ;;;    bne dma_set\r
183 ;;;\r
184 ;;;    ;;dma start.\r
185 ;;;    lda #$02\r
186 ;;;    sta $4014\r
187 \r
188     ;;show bg...\r
189         lda     #$1e\r
190         sta     $2001\r
191 \r
192     ;;;enable nmi\r
193         lda     #$80\r
194         sta     $2000\r
195 \r
196     ;;done...\r
197     ;;infinite loop.\r
198 mainloop:\r
199 \r
200     ;;read ppu status reg while displaying\r
201     ;;vram read test\r
202     ldx #$0a\r
203 l1:\r
204     nop\r
205     dex\r
206     bne l1\r
207 \r
208     ldx #$0a\r
209 read_status:\r
210     lda $2002\r
211     dex\r
212     bne read_status\r
213 \r
214         jmp     mainloop\r
215 .endproc\r
216 \r
217 \r
218 nmi_test:\r
219     jsr set_scroll\r
220     jsr set_bg_col\r
221 \r
222     rti\r
223 \r
224 add_nl:\r
225     clc\r
226     txa\r
227     pha\r
228 \r
229     lda $01\r
230     sta $2006\r
231 \r
232     lda $00\r
233     adc #$20\r
234     sta $00\r
235     sta $2006\r
236 \r
237     bcc no_carry\r
238     lda $01\r
239     adc #$00\r
240     sta $01\r
241     sta $2006\r
242     lda $00\r
243     sta $2006\r
244 no_carry:\r
245 \r
246     pla\r
247     tax\r
248     rts\r
249 \r
250 set_scroll:\r
251     lda $0300\r
252     sta $2005\r
253     clc\r
254     adc #$05\r
255     sta $0300\r
256     lda $0301\r
257     sta $2005\r
258     clc\r
259     adc #04\r
260 ;;    sta $0301\r
261     rts\r
262 \r
263 set_bg_col:\r
264     lda #$3f\r
265     sta $2006\r
266     lda #$10\r
267     sta $2006\r
268     lda $0302\r
269     sta $2007\r
270     cmp #$30\r
271     bne bg_dec\r
272     lda #$3d\r
273     sta $0302\r
274     jmp bg_done\r
275 bg_dec:\r
276     dec $0302\r
277 bg_done:\r
278     rts\r
279 \r
280 nt1:\r
281         .byte   $41, $42, $43, $44, $45, $46, $47, $48, $49, $4a, $4b, $4c, $4d, $4e, $4f, $50\r
282         .byte   $61, $62, $63, $64, $65, $66, $67, $68, $69, $6a, $6b, $6c, $6d, $6e, $6f, $70\r
283         .byte   $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $8a, $8b, $8c, $8d, $8e, $8f\r
284         .byte   $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $9a, $9b, $9c, $9d, $9e, $9f\r
285 nt2:\r
286         .byte   $6b, $6a, $69, $68, $67, $66, $65, $64, $63, $62, $61\r
287         .byte   $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3a\r
288 \r
289 at1:\r
290         .byte   $1b, $e4, $a5, $5a\r
291         .byte   $e4, $1b, $5a, $a5\r
292 \r
293 palettes:\r
294 ;;;bg palette\r
295         .byte   $0f, $00, $10, $20\r
296         .byte   $0f, $04, $14, $24\r
297         .byte   $0f, $08, $18, $28\r
298         .byte   $0f, $0c, $1c, $2c\r
299 ;;;spr palette\r
300         .byte   $0f, $00, $10, $20\r
301         .byte   $0f, $06, $16, $26\r
302         .byte   $0f, $08, $18, $28\r
303         .byte   $0f, $0a, $1a, $2a\r
304 \r
305 string:\r
306         .byte   "test2!"\r
307 \r
308 ;;;for DE1 internal memory constraints.\r
309 .segment "VECINFO_4k"\r
310         .word   nmi_test\r
311         .word   Reset\r
312         .word   $0000\r
313 \r
314 .segment "VECINFO"\r
315         .word   nmi_test\r
316         .word   Reset\r
317         .word   $0000\r
318 \r
319 ; character rom file.\r
320 .segment "CHARS"\r
321         .incbin "character.chr"\r