OSDN Git Service

merged master
[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 ;;---------------------\r
152 ;;;set sprite\r
153     ;;sprite addr=00\r
154     lda #$00\r
155     sta $2003\r
156     ;;sprite data: y=60\r
157     lda #$3c\r
158     sta $2004\r
159     ;;tile=0x4d (ascii 'M')\r
160     lda #$4d\r
161     sta $2004\r
162     lda #$00\r
163     sta $2004\r
164     ;x=39\r
165     lda #$27\r
166     sta $2004\r
167 \r
168 ;;;    ;;dma test data.\r
169 ;;;    ldy #$00\r
170 ;;;    ldx #$41\r
171 ;;;    stx $00\r
172 ;;;    ldx #$00\r
173 ;;;dma_set:\r
174 ;;;    ;;y pos\r
175 ;;;    txa\r
176 ;;;    sta $0200, y\r
177 ;;;    iny\r
178 ;;;    ;;tile index\r
179 ;;;    lda $00\r
180 ;;;    cmp #$5b\r
181 ;;;    bne inc_tile\r
182 ;;;    lda #$41\r
183 ;;;    sta $00\r
184 ;;;inc_tile:\r
185 ;;;    inc $00\r
186 ;;;    sta $0200, y\r
187 ;;;    iny\r
188 ;;;    ;;attribute\r
189 ;;;    lda #$01\r
190 ;;;    sta $0200, y\r
191 ;;;    iny\r
192 ;;;    ;;x pos\r
193 ;;;    txa\r
194 ;;;    adc #$03\r
195 ;;;    tax\r
196 ;;;    rol\r
197 ;;;    sta $0200, y\r
198 ;;;    iny\r
199 ;;;    bne dma_set\r
200 ;;;\r
201 ;;;    ;;dma start.\r
202 ;;;    lda #$02\r
203 ;;;    sta $4014\r
204 \r
205     ;;show bg...\r
206         lda     #$1e\r
207         sta     $2001\r
208 \r
209     ;;;enable nmi\r
210         lda     #$80\r
211         sta     $2000\r
212 \r
213     ;;done...\r
214     ;;infinite loop.\r
215 mainloop:\r
216 \r
217     ;;read ppu status reg while displaying\r
218     ;;vram read test\r
219     ldx #$0a\r
220 l1:\r
221     nop\r
222     dex\r
223     bne l1\r
224 \r
225     ldx #$0a\r
226 read_status:\r
227     lda $2002\r
228     dex\r
229     bne read_status\r
230 \r
231         jmp     mainloop\r
232 .endproc\r
233 \r
234 \r
235 nmi_test:\r
236     jsr set_scroll\r
237     jsr set_bg_col\r
238 \r
239     rti\r
240 \r
241 add_nl:\r
242     clc\r
243     txa\r
244     pha\r
245 \r
246     lda $01\r
247     sta $2006\r
248 \r
249     lda $00\r
250     adc #$20\r
251     sta $00\r
252     sta $2006\r
253 \r
254     bcc no_carry\r
255     lda $01\r
256     adc #$00\r
257     sta $01\r
258     sta $2006\r
259     lda $00\r
260     sta $2006\r
261 no_carry:\r
262 \r
263     pla\r
264     tax\r
265     rts\r
266 \r
267 set_scroll:\r
268     lda $0300\r
269     sta $2005\r
270     clc\r
271     adc #$05\r
272     sta $0300\r
273     lda $0301\r
274     sta $2005\r
275     clc\r
276     adc #04\r
277 ;;    sta $0301\r
278     rts\r
279 \r
280 set_bg_col:\r
281     lda #$3f\r
282     sta $2006\r
283     lda #$10\r
284     sta $2006\r
285     lda $0302\r
286     sta $2007\r
287     cmp #$30\r
288     bne bg_dec\r
289     lda #$3d\r
290     sta $0302\r
291     jmp bg_done\r
292 bg_dec:\r
293     dec $0302\r
294 bg_done:\r
295     rts\r
296 \r
297 nt1:\r
298         .byte   $41, $42, $43, $44, $45, $46, $47, $48, $49, $4a, $4b, $4c, $4d, $4e, $4f, $50\r
299         .byte   $61, $62, $63, $64, $65, $66, $67, $68, $69, $6a, $6b, $6c, $6d, $6e, $6f, $70\r
300         .byte   $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $8a, $8b, $8c, $8d, $8e, $8f\r
301         .byte   $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $9a, $9b, $9c, $9d, $9e, $9f\r
302 nt2:\r
303         .byte   $6b, $6a, $69, $68, $67, $66, $65, $64, $63, $62, $61\r
304         .byte   $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3a\r
305 \r
306 at1:\r
307         .byte   $1b, $e4, $a5, $5a\r
308         .byte   $e4, $1b, $5a, $a5\r
309 \r
310 palettes:\r
311 ;;;bg palette\r
312         .byte   $0f, $00, $10, $20\r
313         .byte   $0f, $04, $14, $24\r
314         .byte   $0f, $08, $18, $28\r
315         .byte   $0f, $0c, $1c, $2c\r
316 ;;;spr palette\r
317         .byte   $0f, $00, $10, $20\r
318         .byte   $0f, $06, $16, $26\r
319         .byte   $0f, $08, $18, $28\r
320         .byte   $0f, $0a, $1a, $2a\r
321 \r
322 string:\r
323         .byte   "test2!"\r
324 \r
325 ;;;for DE1 internal memory constraints.\r
326 .segment "VECINFO_4k"\r
327         .word   nmi_test\r
328         .word   Reset\r
329         .word   $0000\r
330 \r
331 .segment "VECINFO"\r
332         .word   nmi_test\r
333         .word   Reset\r
334         .word   $0000\r
335 \r
336 ; character rom file.\r
337 .segment "CHARS"\r
338         .incbin "character.chr"\r