OSDN Git Service

[General] Convert sourcecode's CRLF format: DOS(WINDOWS) to Unix, to apply patches...
[csp-qt/common_source_project-fm7.git] / source / src / vm / tms9918a.h
1 /*
2         Skelton for retropc emulator
3
4         Origin : MAME TMS9928A Core
5         Author : Takeda.Toshiya
6         Date   : 2006.08.18 -
7                  2007.07.21 -
8
9         [ TMS9918A ]
10 */
11
12 #ifndef _TMS9918A_H_
13 #define _TMS9918A_H_
14
15 #include "vm.h"
16 #include "../emu.h"
17 #include "device.h"
18
19 #define SIG_TMS9918A_SUPER_IMPOSE       0
20
21 class TMS9918A : public DEVICE
22 {
23 private:
24         // output signals
25         outputs_t outputs_irq;
26         
27         uint8 vram[TMS9918A_VRAM_SIZE];
28         uint8 screen[192][256];
29         uint8 regs[8], status_reg, read_ahead, first_byte;
30         uint16 vram_addr;
31         bool latch, intstat;
32         uint16 color_table, pattern_table, name_table;
33         uint16 sprite_pattern, sprite_attrib;
34         uint16 color_mask, pattern_mask;
35 #ifdef TMS9918A_SUPER_IMPOSE
36         bool now_super_impose;
37 #endif
38         
39         void set_intstat(bool val);
40         void draw_mode0();
41         void draw_mode1();
42         void draw_mode2();
43         void draw_mode12();
44         void draw_mode3();
45         void draw_mode23();
46         void draw_modebogus();
47         void draw_sprites();
48         
49 public:
50         TMS9918A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
51         {
52                 init_output_signals(&outputs_irq);
53 #ifdef TMS9918A_SUPER_IMPOSE
54                 now_super_impose = false;
55 #endif
56         }
57         ~TMS9918A() {}
58         
59         // common functions
60         void initialize();
61         void reset();
62         void write_io8(uint32 addr, uint32 data);
63         uint32 read_io8(uint32 addr);
64 #ifdef TMS9918A_SUPER_IMPOSE
65         void write_signal(int id, uint32 data, uint32 mask);
66 #endif
67         void event_vline(int v, int clock);
68         void save_state(FILEIO* state_fio);
69         bool load_state(FILEIO* state_fio);
70         
71         // unique functions
72         void set_context_irq(DEVICE* device, int id, uint32 mask)
73         {
74                 register_output_signal(&outputs_irq, device, id, mask);
75         }
76         void draw_screen();
77 };
78
79 #endif
80