140 lines
2.6 KiB
C++
140 lines
2.6 KiB
C++
#pragma once
|
|
#include <ircolib/types.hpp>
|
|
|
|
namespace weee::core {
|
|
struct mem;
|
|
|
|
struct video_interface {
|
|
video_interface(mem &);
|
|
void write16(ircolib::u32, ircolib::u16);
|
|
void write32(ircolib::u32, ircolib::u32);
|
|
ircolib::u16 read16(ircolib::u32);
|
|
ircolib::u32 read32(ircolib::u32);
|
|
|
|
ircolib::u32 xfb_top_addr() {
|
|
auto addr = tfbl.fbb;
|
|
if (tfbl.page) {
|
|
addr <<= 5;
|
|
}
|
|
|
|
return addr + tfbl.xof;
|
|
}
|
|
|
|
union DCR {
|
|
struct {
|
|
unsigned e : 1;
|
|
unsigned r : 1;
|
|
unsigned i : 1;
|
|
unsigned d : 1;
|
|
unsigned le0 : 2;
|
|
unsigned le1 : 2;
|
|
unsigned fmt : 2;
|
|
unsigned : 6;
|
|
};
|
|
|
|
ircolib::u16 raw;
|
|
} dcr;
|
|
|
|
union HTR0 {
|
|
struct {
|
|
unsigned hlw : 9;
|
|
unsigned : 7;
|
|
unsigned hce : 7;
|
|
unsigned : 1;
|
|
unsigned hcs : 7;
|
|
unsigned : 1;
|
|
};
|
|
|
|
ircolib::u32 raw;
|
|
} htr0;
|
|
|
|
union HTR1 {
|
|
struct {
|
|
unsigned hsy : 7;
|
|
unsigned hbe : 10;
|
|
unsigned hbs : 10;
|
|
unsigned : 5;
|
|
};
|
|
|
|
ircolib::u32 raw;
|
|
} htr1;
|
|
|
|
union VTR {
|
|
struct {
|
|
unsigned equ : 4;
|
|
unsigned acv : 10;
|
|
unsigned : 2;
|
|
};
|
|
|
|
ircolib::u16 raw;
|
|
} vtr;
|
|
|
|
union VTO {
|
|
struct {
|
|
unsigned prb : 10;
|
|
unsigned : 6;
|
|
unsigned psb : 10;
|
|
unsigned : 6;
|
|
};
|
|
|
|
ircolib::u32 raw;
|
|
} vto, vte;
|
|
|
|
union BBI {
|
|
struct {
|
|
unsigned bs1 : 5;
|
|
unsigned be1 : 11;
|
|
unsigned bs3 : 5;
|
|
unsigned be3 : 11;
|
|
};
|
|
|
|
ircolib::u32 raw;
|
|
} bbei, bboi;
|
|
|
|
union FBR {
|
|
struct {
|
|
unsigned : 3;
|
|
unsigned page : 1;
|
|
unsigned xof : 4;
|
|
unsigned fbb : 24;
|
|
};
|
|
ircolib::u32 raw;
|
|
} tfbl{}, bfbl{};
|
|
|
|
union FCT012 {
|
|
struct {
|
|
unsigned tap0 : 10;
|
|
unsigned tap1 : 10;
|
|
unsigned tap2 : 10;
|
|
unsigned : 2;
|
|
};
|
|
|
|
ircolib::u32 raw;
|
|
} fct0[3];
|
|
|
|
union FCT3456 {
|
|
struct {
|
|
unsigned tap0 : 8;
|
|
unsigned tap1 : 8;
|
|
unsigned tap2 : 8;
|
|
unsigned tap3 : 8;
|
|
};
|
|
|
|
ircolib::u32 raw;
|
|
} fct1[4];
|
|
|
|
union HSR {
|
|
struct {
|
|
unsigned stp : 9;
|
|
unsigned : 3;
|
|
unsigned hs_en : 1;
|
|
unsigned : 3;
|
|
};
|
|
|
|
ircolib::u16 raw;
|
|
} hsr;
|
|
|
|
bool viclk;
|
|
};
|
|
} // namespace weee::core
|