OSDN Git Service

sprite xfer ok
[motonesemu/motonesemu.git] / emulator / ppucore / dummy-driver2.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <time.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <ctype.h>
7 #include <string.h>
8
9 #include "tools.h"
10 #include "vga.h"
11 #include "vram.h"
12 #include "sprite.h"
13
14 static struct rgb15 *disp_data;
15 void *vga_shm_get(void);
16 void vga_shm_free(void* addr);
17 int ppucore_init(void);
18 void clean_ppucore(void);
19 int load_cartridge(const char* cartridge);
20 void set_vga_base(unsigned char* base);
21 void vga_xfer(void);
22 void dump_vram(int type, int bank, unsigned short addr, int size);
23 void set_bgtile(int tile_id);
24 void set_sprite(int x, int y, int tile_id, struct sprite_attr sa);
25
26 struct timespec sleep_inteval = {0, 1000000 / VGA_REFRESH_RATE};
27
28
29 /*
30  * dummy function
31  * for cartridge.c
32  * */
33 int load_prg_rom(FILE* cartridge, int num_rom_bank) {
34 #define ROM_32K 0x8000
35     int len;
36     char *rom_buffer;
37
38     rom_buffer = malloc(ROM_32K);
39     if (rom_buffer == NULL)
40         return FALSE;
41     len = fread(rom_buffer, 1, ROM_32K, cartridge);
42     if (len != ROM_32K)
43         return FALSE;
44
45     free(rom_buffer);
46     return TRUE;
47 }
48
49 /*
50  * for debug.c
51  * */
52 int debug_mode = TRUE;
53 int critical_error = FALSE;
54 void dump_6502(int full) {
55 }
56
57 static void test_ppu(void) {
58     int i;
59     unsigned char plt[32] = {
60         0, 1, 2,  3,  0, 5,  6,  7, 
61         0, 9, 10, 11, 0, 13, 14, 15,
62         0, 30, 31, 32, 0, 40, 41, 42,
63         0, 20, 21, 22, 0, 11, 12, 13
64     };
65
66     for (i = 0; i < 16; i++)
67         bg_palette_tbl_set(i, plt[i]);
68     for (i = 0; i < 16; i++)
69         spr_palette_tbl_set(i, plt[i + 16]);
70
71     for (i = 0; i < 960; i++) 
72         name_tbl_set(0, i, 0);
73
74     for (i = 0; i < 64; i++) 
75         attr_tbl_set(0, i, 0);
76
77     //name_tbl_set(0, 205, 2);
78     name_tbl_set(0, 205, 'D');
79     name_tbl_set(0, 206, 'e');
80     name_tbl_set(0, 207, 'e');
81     name_tbl_set(0, 208, '!');
82     name_tbl_set(0, 209, '!');
83     //205 = palette gp2 01100101b
84     //205 = 11
85     attr_tbl_set(0, 11, 0x65);
86
87     //other test.
88     name_tbl_set(0, 300, 1);
89     attr_tbl_set(0, 0, 0x65);
90
91     for (i = 0; i < 960; i++) 
92         set_bgtile(i);
93
94     //sprite test
95     struct sprite_attr sa;
96     sa.palette = 2;
97     sa.priority = 1;
98     sa.flip_h = 0;
99     sa.flip_v = 0;
100     set_sprite(30, 100, 'd', sa);
101     sa.flip_h = 1;
102     set_sprite(50, 100, 'd', sa);
103     sa.flip_v = 1;
104     set_sprite(70, 105, 'd', sa);
105
106     vga_xfer();
107
108 //void dump_vram(int type, int bank, unsigned short addr, int size);
109 /*
110     dump_vram(VRAM_DUMP_TYPE_PTN, 0, 0, 0x100);
111     dump_vram(VRAM_DUMP_TYPE_NAME, 0, 0, 300);
112     dump_vram(VRAM_DUMP_TYPE_ATTR, 0, 0, 64);
113     dump_vram(VRAM_DUMP_TYPE_PLT, 0, 0, 16);
114 */
115 }
116
117 int main(int argc, char** argv) {
118     int ret;
119
120     ret = ppucore_init();
121     if (ret == FALSE) {
122         fprintf(stderr, "ppucore init error.\n");
123         return -1;
124     }
125     ret = load_cartridge("sample1.nes");
126     if (ret == FALSE) {
127         fprintf(stderr, "load cartridge error.\n");
128         return -1;
129     }
130
131     /* get vga shared memory */
132     if((disp_data = (struct rgb15 *)vga_shm_get()) == NULL)
133     {
134         fprintf(stderr, "error attaching shared memory.\n");
135         return -1;
136     }
137
138     memset(disp_data, 0, VGA_SHM_SIZE);
139     set_vga_base((unsigned char*)disp_data);
140
141
142     /////test...
143     test_ppu();
144
145     clean_ppucore();
146     vga_shm_free(disp_data);
147     
148     return 0;
149 }
150
151