OSDN Git Service

[VM][GENERAL][EX80BS] Merge upstream 2022-05-07 .
[csp-qt/common_source_project-fm7.git] / source / src / vm / ex80bs / display.h
1 /*
2         TOSHIBA EX-80 Emulator 'eEX-80'
3
4         Author : Takeda.Toshiya
5         Date   : 2015.12.10-
6
7         [ display ]
8 */
9
10 #ifndef _DISPLAY_H_
11 #define _DISPLAY_H_
12
13 #include "../vm.h"
14 #include "../../emu.h"
15 #include "../device.h"
16
17 #define SIG_DISPLAY_PC          0
18
19 namespace EX80BS {
20 class DISPLAY : public DEVICE
21 {
22 private:
23         DEVICE *d_cpu;
24         uint8_t font[0x400];    // EX-80
25         uint8_t font1[0x800];   // EX-80BS
26         uint8_t font2[0x800];   // EX-80BS (user defined)
27         uint8_t screen[TV_HEIGHT][TV_WIDTH];
28         
29         uint8_t *ram;
30         uint8_t *vram;
31         int odd_even;
32         uint8_t pc;
33         
34         void draw_tv();
35         void draw_bs();
36
37 public:
38         DISPLAY(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
39         {
40                 set_device_name(_T("Display"));
41         }
42         ~DISPLAY() {}
43         
44         // common functions
45         void initialize() override;
46         void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask) override;
47         void event_frame() override;
48         void event_vline(int v, int clock) override;
49         void __FASTCALL event_callback(int event_id, int err) override;
50         bool process_state(FILEIO* state_fio, bool loading) override;
51         
52         // unique functions
53         void set_context_cpu(DEVICE* device)
54         {
55                 d_cpu = device;
56         }
57         void set_ram_ptr(uint8_t* ptr)
58         {
59                 ram = ptr;
60         }
61         void set_vram_ptr(uint8_t* ptr)
62         {
63                 vram = ptr;
64         }
65         void draw_screen();
66 };
67 }
68 #endif
69