OSDN Git Service

ppu internal release 2
[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
13 static struct rgb15 *disp_data;
14 void *vga_shm_get(void);
15 void vga_shm_free(void* addr);
16 int ppucore_init(void);
17 void clean_ppucore(void);
18 int load_cartridge(const char* cartridge);
19 void set_vga_base(unsigned char* base);
20 void vga_xfer(void);
21 void dump_vram(int type, int bank, unsigned short addr, int size);
22 void set_bgtile(int tile_id);
23
24 struct timespec sleep_inteval = {0, 1000000 / VGA_REFRESH_RATE};
25
26
27 /*
28  * dummy function
29  * for cartridge.c
30  * */
31 int load_prg_rom(FILE* cartridge, int num_rom_bank) {
32 #define ROM_32K 0x8000
33     int len;
34     char *rom_buffer;
35
36     rom_buffer = malloc(ROM_32K);
37     if (rom_buffer == NULL)
38         return FALSE;
39     len = fread(rom_buffer, 1, ROM_32K, cartridge);
40     if (len != ROM_32K)
41         return FALSE;
42
43     free(rom_buffer);
44     return TRUE;
45 }
46
47 /*
48  * for debug.c
49  * */
50 int debug_mode = TRUE;
51 int critical_error = FALSE;
52 void dump_6502(int full) {
53 }
54
55 static void test_ppu(void) {
56     int i;
57     unsigned char plt[32] = {
58         0, 1, 2,  3,  0, 5,  6,  7, 
59         0, 9, 10, 11, 0, 13, 14, 15,
60         0, 30, 31, 32, 0, 40, 41, 42,
61         0, 20, 21, 22, 0, 11, 12, 13
62     };
63
64     for (i = 0; i < 16; i++)
65         bg_palette_tbl_set(i, plt[i]);
66     for (i = 0; i < 16; i++)
67         spr_palette_tbl_set(i, plt[i + 16]);
68
69     for (i = 0; i < 64; i++) 
70         name_tbl_set(0, i, i % 4);
71
72     for (i = 0; i < 64; i++) 
73         attr_tbl_set(0, i, 0);
74
75     for (i = 0; i < 960; i++) 
76         set_bgtile(i);
77     vga_xfer();
78
79 //void dump_vram(int type, int bank, unsigned short addr, int size);
80 /*
81     dump_vram(0, 0, 0, 0x100);
82     dump_vram(1, 0, 0, 100);
83     dump_vram(2, 0, 0, 64);
84     dump_vram(3, 0, 0, 16);
85 */
86 }
87
88 int main(int argc, char** argv) {
89     int ret;
90
91     ret = ppucore_init();
92     if (ret == FALSE) {
93         fprintf(stderr, "ppucore init error.\n");
94         return -1;
95     }
96     ret = load_cartridge("sample1.nes");
97     if (ret == FALSE) {
98         fprintf(stderr, "load cartridge error.\n");
99         return -1;
100     }
101
102     /* get vga shared memory */
103     if((disp_data = (struct rgb15 *)vga_shm_get()) == NULL)
104     {
105         fprintf(stderr, "error attaching shared memory.\n");
106         return -1;
107     }
108
109     memset(disp_data, 0, VGA_SHM_SIZE);
110     set_vga_base((unsigned char*)disp_data);
111
112
113     /////test...
114     test_ppu();
115
116     clean_ppucore();
117     vga_shm_free(disp_data);
118     
119     return 0;
120 }
121
122