mirror of
https://github.com/kirjavascript/trueLMAO.git
synced 2024-06-02 11:37:28 -04:00
half implemented vdp stuff
This commit is contained in:
parent
aa0e8b9f2f
commit
6c14e644e4
80
Cargo.lock
generated
80
Cargo.lock
generated
|
@ -291,15 +291,6 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cmake"
|
||||
version = "0.1.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cocoa"
|
||||
version = "0.24.0"
|
||||
|
@ -517,14 +508,6 @@ dependencies = [
|
|||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "desktop"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"emu",
|
||||
"fltk",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "detect-desktop-environment"
|
||||
version = "0.2.0"
|
||||
|
@ -723,40 +706,6 @@ dependencies = [
|
|||
"instant",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fltk"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6592e1dc57ff737c486ef4bd43721a22ba2d08211305f5ef2d1ab1021755197"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"fltk-derive",
|
||||
"fltk-sys",
|
||||
"lazy_static 1.4.0",
|
||||
"objc",
|
||||
"raw-window-handle 0.3.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fltk-derive"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01fdc87a8c3af8cb94ba7a558ed415bda3d185906e6734b2104fc0c861a610dd"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fltk-sys"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd114ac679ce2717fd78c8ed15b42b88c6693aeb7ffaf89e35c268a458fb0698"
|
||||
dependencies = [
|
||||
"cmake",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
|
@ -1049,15 +998,6 @@ version = "3.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
|
||||
|
||||
[[package]]
|
||||
name = "lazy_mut"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "767a23ea51ed54e6a9cd2a6d0fe156feb4934a4d95e585b55f4585577e195a5b"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "0.1.16"
|
||||
|
@ -1572,15 +1512,6 @@ dependencies = [
|
|||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "raw-window-handle"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "raw-window-handle"
|
||||
version = "0.4.3"
|
||||
|
@ -2196,15 +2127,6 @@ dependencies = [
|
|||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"emu",
|
||||
"lazy_mut",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.57"
|
||||
|
@ -2350,7 +2272,7 @@ dependencies = [
|
|||
"objc",
|
||||
"parking_lot 0.11.2",
|
||||
"percent-encoding",
|
||||
"raw-window-handle 0.4.3",
|
||||
"raw-window-handle",
|
||||
"smithay-client-toolkit",
|
||||
"wasm-bindgen",
|
||||
"wayland-client",
|
||||
|
|
|
@ -236,8 +236,9 @@ impl VDP {
|
|||
fn write_data(&mut self, target: VDPType, value: u32) {
|
||||
match target {
|
||||
VDPType::VRAM => {
|
||||
self.VRAM[self.control_address as usize] = ((value >> 8) & 0xff) as _;
|
||||
self.VRAM[self.control_address as usize + 1] = (value & 0xff) as _;
|
||||
let addr = self.control_address as usize;
|
||||
self.VRAM[addr] = ((value >> 8) & 0xff) as _;
|
||||
self.VRAM[addr + 1] = (value & 0xff) as _;
|
||||
},
|
||||
VDPType::CRAM => {
|
||||
let address = ((self.control_address & 0x7f) >> 1) as usize;
|
||||
|
|
|
@ -178,26 +178,57 @@ impl eframe::App for Frontend {
|
|||
|
||||
egui::Window::new("vram")
|
||||
.show(ctx, |ui| {
|
||||
// let mut pixels = vec![];
|
||||
// for duxel in &self.emu.core.mem.vdp.VRAM[0..64] {
|
||||
// let pixel = (*duxel & 0xF0) >> 4;
|
||||
// let color = self.emu.core.mem.vdp.color(0, pixel as _);
|
||||
// pixels.push(egui::Color32::from_rgb(color.0, color.1, color.2));
|
||||
// let pixel = *duxel & 0xF;
|
||||
// let color = self.emu.core.mem.vdp.color(0, pixel as _);
|
||||
// pixels.push(egui::Color32::from_rgb(color.0, color.1, color.2));
|
||||
// }
|
||||
// let texture: &egui::TextureHandle = &ui.ctx().load_texture(
|
||||
// "palette",
|
||||
// egui::ColorImage {
|
||||
// size: [8, 8* 2],
|
||||
// pixels,
|
||||
// },
|
||||
// egui::TextureFilter::Nearest
|
||||
// );
|
||||
// let img = egui::Image::new(texture, texture.size_vec2() * 20.);
|
||||
// TODO gui palette toggle
|
||||
const width: usize = 4;
|
||||
const height: usize = 4;
|
||||
const pixel_qty: usize = (width * 8) * (height * 8);
|
||||
// TODO use retained buffer
|
||||
let mut pixels: [egui::Color32; pixel_qty] = [ egui::Color32::from_rgb(0, 0, 0); pixel_qty];
|
||||
|
||||
// ui.add(img);
|
||||
for x_tile in 0..width {
|
||||
for y_tile in 0..height {
|
||||
let offset = x_tile + (y_tile * width);
|
||||
let vram_offset = offset * 32;
|
||||
let mut view_offset = (x_tile * 8) + (y_tile * (width * 8));
|
||||
let mut pixels_drawn = 0;
|
||||
|
||||
for duxel in &self.emu.core.mem.vdp.VRAM[vram_offset..vram_offset+32] {
|
||||
let pixel = (*duxel & 0xF0) >> 4;
|
||||
|
||||
let (r, g, b) = self.emu.core.mem.vdp.cram_rgb[pixel as usize];
|
||||
pixels[view_offset] = egui::Color32::from_rgb(r, g, b);
|
||||
pixels_drawn += 1;
|
||||
if pixels_drawn % 8 == 0 {
|
||||
view_offset += width * 8;
|
||||
} else {
|
||||
view_offset += 1;
|
||||
}
|
||||
let pixel = *duxel & 0xF;
|
||||
let (r, g, b) = self.emu.core.mem.vdp.cram_rgb[pixel as usize];
|
||||
pixels[view_offset] = egui::Color32::from_rgb(r, g, b);
|
||||
pixels_drawn += 1;
|
||||
view_offset += 1;
|
||||
if pixels_drawn % 8 == 0 {
|
||||
view_offset += width * 8;
|
||||
} else {
|
||||
view_offset += 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
let texture: &egui::TextureHandle = &ui.ctx().load_texture(
|
||||
"vram",
|
||||
egui::ColorImage {
|
||||
size: [width*8, height*8],
|
||||
pixels: pixels.to_vec(),
|
||||
},
|
||||
egui::TextureFilter::Nearest
|
||||
);
|
||||
let img = egui::Image::new(texture, texture.size_vec2() * 20.);
|
||||
|
||||
ui.add(img);
|
||||
});
|
||||
|
||||
egui::CentralPanel::default().show(ctx, |ui| {
|
||||
|
|
Loading…
Reference in a new issue