diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-10-05 06:31:27 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-10-05 13:07:57 -0600 |
| commit | e2d82e8e18ebddc78a0c187c4b7501b9f3aaa9c5 (patch) | |
| tree | eb72ed72e33f3a5ef3d9843ddcff624156177647 /tb/vga.hpp | |
| parent | 59caca686d4d7798b617ee2a9f9d4c5d1d27b8ff (diff) | |
tb: move most C++ source files to tb/top/conspiracion
Diffstat (limited to 'tb/vga.hpp')
| -rw-r--r-- | tb/vga.hpp | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/tb/vga.hpp b/tb/vga.hpp deleted file mode 100644 index 578dd17..0000000 --- a/tb/vga.hpp +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef LIBTALLER_VGA_HPP -#define LIBTALLER_VGA_HPP - -#include <array> -#include <cstddef> -#include <cstdint> - -#include <SDL2/SDL_surface.h> -#include <SDL2/SDL_video.h> - -#include "avalon.hpp" - -namespace taller::vga -{ - struct timings - { - unsigned active; - unsigned front_porch; - unsigned sync; - unsigned back_porch; - }; - - struct video_mode - { - std::uint32_t pixel_clk; - timings h; - timings v; - }; - - template<class Crtc> - class display : public avalon::slave - { - public: - display(Crtc &crtc, std::uint32_t base, std::uint32_t clock_hz, std::uint32_t bus_hz = 0) noexcept; - - ~display() noexcept; - - virtual void tick() noexcept final override; - - virtual bool read(std::uint32_t addr, std::uint32_t &data) noexcept final override; - virtual bool write(std::uint32_t addr, std::uint32_t data, unsigned byte_enable) noexcept final override; - - void signal_tick(bool clk) noexcept; - - inline bool key(std::size_t index) - { - return keys.at(index); - } - - private: - unsigned ticks = 0; - unsigned refresh_ticks = 0; - unsigned max_addr = 0; - Crtc& crtc; - SDL_Window *window = nullptr; - const video_mode *mode = nullptr; - unsigned row = 0; - unsigned col = 0; - unsigned hsync_lo = 0; - unsigned hsync_hi = 0; - unsigned vsync_hi = 0; - unsigned vsync_lo = 0; - bool last_hsync = false; - bool last_vsync = false; - bool found_line = false; - const std::uint32_t clock_hz; - - std::array<bool, 4> keys = {}; - - void move_pos() noexcept; - void scan_syncs() noexcept; - void scan_vsync() noexcept; - void put_pixel() noexcept; - void guess_mode() noexcept; - void signal_lost() noexcept; - void update_window() noexcept; - }; -} - -#include "vga.impl.hpp" - -#endif |
