OSDN Git Service

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