openMSX
Video9000.hh
Go to the documentation of this file.
1#ifndef VIDEO9000_HH
2#define VIDEO9000_HH
3
4#include "MSXDevice.hh"
6#include "VideoLayer.hh"
7#include "EventListener.hh"
8
9namespace openmsx {
10
11class VDP;
12class V9990;
13class PostProcessor;
14
15class Video9000 final : public MSXDevice
17 , private VideoLayer
18 , private EventListener
19{
20public:
21 explicit Video9000(const DeviceConfig& config);
22 ~Video9000() override;
23
24 // MSXDevice
25 void init() override;
26 void reset(EmuTime::param time) override;
27 void writeIO(word port, byte value, EmuTime::param time) override;
28
29 template<typename Archive>
30 void serialize(Archive& ar, unsigned version);
31
32private:
33 void recalculate();
34 void recalculateVideoSource();
35
36 // VideoSystemChangeListener
37 void preVideoSystemChange() noexcept override;
38 void postVideoSystemChange() noexcept override;
39
40 // VideoLayer
41 void paint(OutputSurface& output) override;
42 void takeRawScreenShot(unsigned height, const std::string& filename) override;
43
44 // EventListener
45 bool signalEvent(const Event& event) override;
46
47 // Observer<Setting>
48 void update(const Setting& setting) noexcept override;
49
50private:
51 VideoSourceSetting& videoSourceSetting;
52 VDP* vdp;
53 V9990* v9990;
54 Layer* activeLayer = nullptr;
55 PostProcessor* v99x8Layer = nullptr;
56 PostProcessor* v9990Layer = nullptr;
57 byte value = 0x10;
58};
59
60} // namespace openmsx
61
62#endif
BaseSetting * setting
Interface for display layers.
Definition Layer.hh:14
An MSXDevice is an emulated hardware component connected to the bus of the emulated MSX.
Definition MSXDevice.hh:36
A frame buffer where pixels can be written to.
A post processor builds the frame that is displayed from the MSX frame, while applying effects such a...
Implementation of the Yamaha V9990 VDP as used in the GFX9000 cartridge by Sunrise.
Definition V9990.hh:35
Unified implementation of MSX Video Display Processors (VDPs).
Definition VDP.hh:67
void reset(EmuTime::param time) override
This method is called on reset.
Definition Video9000.cc:52
~Video9000() override
Definition Video9000.cc:45
void init() override
Definition Video9000.cc:27
void serialize(Archive &ar, unsigned version)
Definition Video9000.cc:162
void writeIO(word port, byte value, EmuTime::param time) override
Write a byte to a given IO port at a certain time to this device.
Definition Video9000.cc:57
This file implemented 3 utility functions:
Definition Autofire.cc:11
uint16_t word
16 bit unsigned integer
Definition openmsx.hh:29
std::variant< KeyUpEvent, KeyDownEvent, MouseMotionEvent, MouseButtonUpEvent, MouseButtonDownEvent, MouseWheelEvent, JoystickAxisMotionEvent, JoystickHatEvent, JoystickButtonUpEvent, JoystickButtonDownEvent, OsdControlReleaseEvent, OsdControlPressEvent, WindowEvent, TextEvent, FileDropEvent, QuitEvent, FinishFrameEvent, CliCommandEvent, GroupEvent, BootEvent, FrameDrawnEvent, BreakEvent, SwitchRendererEvent, TakeReverseSnapshotEvent, AfterTimedEvent, MachineLoadedEvent, MachineActivatedEvent, MachineDeactivatedEvent, MidiInReaderEvent, MidiInWindowsEvent, MidiInCoreMidiEvent, MidiInCoreMidiVirtualEvent, MidiInALSAEvent, Rs232TesterEvent, Rs232NetEvent, ImGuiDelayedActionEvent, ImGuiActiveEvent > Event
Definition Event.hh:445