summaryrefslogtreecommitdiff
path: root/tb/vga.hpp
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-10-05 06:31:27 -0600
committerAlejandro Soto <alejandro@34project.org>2023-10-05 13:07:57 -0600
commite2d82e8e18ebddc78a0c187c4b7501b9f3aaa9c5 (patch)
treeeb72ed72e33f3a5ef3d9843ddcff624156177647 /tb/vga.hpp
parent59caca686d4d7798b617ee2a9f9d4c5d1d27b8ff (diff)
tb: move most C++ source files to tb/top/conspiracion
Diffstat (limited to 'tb/vga.hpp')
-rw-r--r--tb/vga.hpp82
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