-/*\r
- Skelton for retropc emulator\r
-\r
- Origin : MAME TMS9928A Core\r
- Author : Takeda.Toshiya\r
- Date : 2006.08.18 -\r
- 2007.07.21 -\r
-\r
- [ TMS9918A ]\r
-*/\r
-\r
-#ifndef _TMS9918A_H_\r
-#define _TMS9918A_H_\r
-\r
-#include "vm.h"\r
-#include "../emu.h"\r
-#include "device.h"\r
-\r
-#define SIG_TMS9918A_SUPER_IMPOSE 0\r
-\r
-class TMS9918A : public DEVICE\r
-{\r
-private:\r
- // output signals\r
- outputs_t outputs_irq;\r
- \r
- uint8 vram[TMS9918A_VRAM_SIZE];\r
- uint8 screen[192][256];\r
- uint8 regs[8], status_reg, read_ahead, first_byte;\r
- uint16 vram_addr;\r
- bool latch, intstat;\r
- uint16 color_table, pattern_table, name_table;\r
- uint16 sprite_pattern, sprite_attrib;\r
- uint16 color_mask, pattern_mask;\r
-#ifdef TMS9918A_SUPER_IMPOSE\r
- bool now_super_impose;\r
-#endif\r
- \r
- void set_intstat(bool val);\r
- void draw_mode0();\r
- void draw_mode1();\r
- void draw_mode2();\r
- void draw_mode12();\r
- void draw_mode3();\r
- void draw_mode23();\r
- void draw_modebogus();\r
- void draw_sprites();\r
- \r
-public:\r
- TMS9918A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)\r
- {\r
- init_output_signals(&outputs_irq);\r
-#ifdef TMS9918A_SUPER_IMPOSE\r
- now_super_impose = false;\r
-#endif\r
- }\r
- ~TMS9918A() {}\r
- \r
- // common functions\r
- void initialize();\r
- void reset();\r
- void write_io8(uint32 addr, uint32 data);\r
- uint32 read_io8(uint32 addr);\r
-#ifdef TMS9918A_SUPER_IMPOSE\r
- void write_signal(int id, uint32 data, uint32 mask);\r
-#endif\r
- void event_vline(int v, int clock);\r
- \r
- // unique function\r
- void set_context_irq(DEVICE* device, int id, uint32 mask)\r
- {\r
- register_output_signal(&outputs_irq, device, id, mask);\r
- }\r
- void draw_screen();\r
-};\r
-\r
-#endif\r
-\r
+/*
+ Skelton for retropc emulator
+
+ Origin : MAME TMS9928A Core
+ Author : Takeda.Toshiya
+ Date : 2006.08.18 -
+ 2007.07.21 -
+
+ [ TMS9918A ]
+*/
+
+#ifndef _TMS9918A_H_
+#define _TMS9918A_H_
+
+#include "vm.h"
+#include "../emu.h"
+#include "device.h"
+
+#define SIG_TMS9918A_SUPER_IMPOSE 0
+
+class TMS9918A : public DEVICE
+{
+private:
+ // output signals
+ outputs_t outputs_irq;
+
+ uint8 vram[TMS9918A_VRAM_SIZE];
+ uint8 screen[192][256];
+ uint8 regs[8], status_reg, read_ahead, first_byte;
+ uint16 vram_addr;
+ bool latch, intstat;
+ uint16 color_table, pattern_table, name_table;
+ uint16 sprite_pattern, sprite_attrib;
+ uint16 color_mask, pattern_mask;
+#ifdef TMS9918A_SUPER_IMPOSE
+ bool now_super_impose;
+#endif
+
+ void set_intstat(bool val);
+ void draw_mode0();
+ void draw_mode1();
+ void draw_mode2();
+ void draw_mode12();
+ void draw_mode3();
+ void draw_mode23();
+ void draw_modebogus();
+ void draw_sprites();
+
+public:
+ TMS9918A(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ {
+ init_output_signals(&outputs_irq);
+#ifdef TMS9918A_SUPER_IMPOSE
+ now_super_impose = false;
+#endif
+ }
+ ~TMS9918A() {}
+
+ // common functions
+ void initialize();
+ void reset();
+ void write_io8(uint32 addr, uint32 data);
+ uint32 read_io8(uint32 addr);
+#ifdef TMS9918A_SUPER_IMPOSE
+ void write_signal(int id, uint32 data, uint32 mask);
+#endif
+ void event_vline(int v, int clock);
+ void save_state(FILEIO* state_fio);
+ bool load_state(FILEIO* state_fio);
+
+ // unique functions
+ void set_context_irq(DEVICE* device, int id, uint32 mask)
+ {
+ register_output_signal(&outputs_irq, device, id, mask);
+ }
+ void draw_screen();
+};
+
+#endif
+