OSDN Git Service

[INITIAL] Import 20141226 version of http://homepage3.nifty.com/takeda-toshiya/common...
[csp-qt/common_source_project-fm7.git] / source / src / vm / familybasic / ppu.h
1 /*\r
2         Nintendo Family BASIC Emulator 'eFamilyBASIC'\r
3 \r
4         Origin : nester\r
5         Author : Takeda.Toshiya\r
6         Date   : 2010.08.11-\r
7 \r
8         [ PPU ]\r
9 */\r
10 \r
11 #ifndef _PPU_H_\r
12 #define _PPU_H_\r
13 \r
14 #include "../vm.h"\r
15 #include "../../emu.h"\r
16 #include "../device.h"\r
17 \r
18 class PPU : public DEVICE\r
19 {\r
20 private:\r
21         DEVICE *d_cpu;\r
22         \r
23         scrntype palette_pc[64];\r
24         uint8 screen[240][256 + 16];    // 2*8 = side margin\r
25         uint8 solid_buf[512];\r
26         \r
27         uint8* banks[16];\r
28         uint8 header[16];\r
29         uint8 chr_rom[0x2000];\r
30         uint8 name_tables[0x1000];\r
31         uint8 spr_ram[0x100];\r
32         uint8 bg_pal[0x10];\r
33         uint8 spr_pal[0x10];\r
34         uint8 spr_ram_rw_ptr;\r
35         \r
36         uint8 regs[8];\r
37         uint16 bg_pattern_table_addr;\r
38         uint16 spr_pattern_table_addr;\r
39         uint16 ppu_addr_inc;\r
40         uint8 rgb_bak;\r
41         bool toggle_2005_2006;\r
42         uint8 read_2007_buffer;\r
43         \r
44         uint16 loopy_v;\r
45         uint16 loopy_t;\r
46         uint8 loopy_x;\r
47         \r
48         void render_scanline(int v);\r
49         void render_bg(int v);\r
50         void render_spr(int v);\r
51         void update_palette();\r
52         \r
53 public:\r
54         PPU(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}\r
55         ~PPU() {}\r
56         \r
57         // common functions\r
58         void initialize();\r
59         void reset();\r
60         void write_data8(uint32 addr, uint32 data);\r
61         uint32 read_data8(uint32 addr);\r
62         void event_vline(int v, int clock);\r
63         \r
64         // unique function\r
65         void set_context_cpu(DEVICE* device)\r
66         {\r
67                 d_cpu = device;\r
68         }\r
69         uint8 *get_spr_ram()\r
70         {\r
71                 return spr_ram;\r
72         }\r
73         void load_rom_image(_TCHAR *file_name);\r
74         void draw_screen();\r
75 };\r
76 \r
77 #endif\r