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);
21 void dump_vram(int type, int bank, unsigned short addr, int size);
22 void set_bgtile(int tile_id);
24 struct timespec sleep_inteval = {0, 1000000 / VGA_REFRESH_RATE};
31 int load_prg_rom(FILE* cartridge, int num_rom_bank) {
32 #define ROM_32K 0x8000
36 rom_buffer = malloc(ROM_32K);
37 if (rom_buffer == NULL)
39 len = fread(rom_buffer, 1, ROM_32K, cartridge);
50 int debug_mode = TRUE;
51 int critical_error = FALSE;
52 void dump_6502(int full) {
55 static void test_ppu(void) {
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
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]);
69 for (i = 0; i < 64; i++)
70 name_tbl_set(0, i, i % 4);
72 for (i = 0; i < 64; i++)
73 attr_tbl_set(0, i, 0);
75 for (i = 0; i < 960; i++)
79 //void dump_vram(int type, int bank, unsigned short addr, int size);
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);
88 int main(int argc, char** argv) {
93 fprintf(stderr, "ppucore init error.\n");
96 ret = load_cartridge("sample1.nes");
98 fprintf(stderr, "load cartridge error.\n");
102 /* get vga shared memory */
103 if((disp_data = (struct rgb15 *)vga_shm_get()) == NULL)
105 fprintf(stderr, "error attaching shared memory.\n");
109 memset(disp_data, 0, VGA_SHM_SIZE);
110 set_vga_base((unsigned char*)disp_data);
117 vga_shm_free(disp_data);