minor graphic modification

This commit is contained in:
Mwa
2026-03-17 23:10:58 +01:00
parent 94120273bb
commit 5c5d8471fa
2 changed files with 13 additions and 13 deletions

View File

@@ -31,7 +31,7 @@ syntaxe supplémentaire supportée:
## Features ## Features
rajouter --features=[liste séparé par des virgules] rajouter --features=[liste séparé par des virgules]
- div_mul: Support des instruction de multiplication / division - div_mul: Support des instruction de multiplication / division
- rgba: Écran au format RGBA plutot que 0BGR - rgba: Écran au format RGBA plutot que 0BGR (alpha ignoré mais stocké)
- rich_keyboard: rajoute trois champs de mmio pour le clavier. Voir MMIO - rich_keyboard: rajoute trois champs de mmio pour le clavier. Voir MMIO
- debug: repl similaire a la version python du simulateur - debug: repl similaire a la version python du simulateur
- futex: accélère le programme. ne marche pas sur les macs. actif par default, utiliser --no-default-features pour le desactiver - futex: accélère le programme. ne marche pas sur les macs. actif par default, utiliser --no-default-features pour le desactiver
@@ -44,7 +44,7 @@ call 0 termine l'exécution du simulateur proprement
## mmio: ## mmio:
- 0x01000000 à 0x0112c000 : Écran en lecture/écriture. un pixel par 32bits, de gauche a droite puis de bas en haut. - 0x01000000 à 0x0112c000 : Écran en lecture/écriture. un pixel par 32bits, de gauche a droite puis de bas en haut.
Format de pixel en 0BGR, 4 bits par couleur. Format de pixel en 0BGR, 4 bits par couleur.
Passage au format RGBA (a pour alpha) avec la feature rgba Passage au format RGBA (alpha ignoré, mais stocké) avec la feature rgba
- 0x01200000 : Clavier (scancode) (lecture seule) - 0x01200000 : Clavier (scancode) (lecture seule)
- 0x01200004 : Horloge (millisecondes écoulé depuis le début de la simulation, wrappe tout les 49 jours) (lecture seule) - 0x01200004 : Horloge (millisecondes écoulé depuis le début de la simulation, wrappe tout les 49 jours) (lecture seule)
- 0x01200008 : Boutons de la souris (OR des boutons préssés) Gauche = 1, Droit=2, Clic Molette = 3, Autres non testé (lecture seule) - 0x01200008 : Boutons de la souris (OR des boutons préssés) Gauche = 1, Droit=2, Clic Molette = 3, Autres non testé (lecture seule)

View File

@@ -16,7 +16,8 @@ use std::sync::{
use std::thread::scope; use std::thread::scope;
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use pixels::{Error, Pixels, SurfaceTexture}; use pixels::wgpu::{BlendState, Color};
use pixels::{Error, Pixels, PixelsBuilder, SurfaceTexture};
use winit::application::ApplicationHandler; use winit::application::ApplicationHandler;
use winit::dpi::LogicalSize; use winit::dpi::LogicalSize;
use winit::event::WindowEvent; use winit::event::WindowEvent;
@@ -58,8 +59,7 @@ impl<'a> ApplicationHandler for App<'a> {
Window::default_attributes() Window::default_attributes()
.with_title("bisare screen") .with_title("bisare screen")
.with_min_inner_size(size) .with_min_inner_size(size)
.with_maximized(true) .with_maximized(true),
.with_transparent(true),
) )
.unwrap(), .unwrap(),
) )
@@ -67,7 +67,11 @@ impl<'a> ApplicationHandler for App<'a> {
self.w = Some(window.clone()); self.w = Some(window.clone());
let size = window.inner_size(); let size = window.inner_size();
let surface_texture = SurfaceTexture::new(size.width, size.height, window); let surface_texture = SurfaceTexture::new(size.width, size.height, window);
self.pixels = Some(Pixels::new(WIDTH, HEIGHT, surface_texture).unwrap()); let pix = PixelsBuilder::new(WIDTH, HEIGHT, surface_texture)
.clear_color(Color::BLACK)
.blend_state(BlendState::REPLACE).build() ;
self.pixels = Some(pix.unwrap());
} }
fn window_event( fn window_event(
@@ -208,14 +212,10 @@ impl<'a> ApplicationHandler for App<'a> {
for (addr, ubgr) in cpu::SHARED.screen_buf.iter().enumerate() { for (addr, ubgr) in cpu::SHARED.screen_buf.iter().enumerate() {
let raw = ubgr.load(std::sync::atomic::Ordering::Relaxed); let raw = ubgr.load(std::sync::atomic::Ordering::Relaxed);
#[cfg(not(feature = "rgba"))] #[cfg(not(feature = "rgba"))]
let rgba = [raw as u8, (raw >> 8) as u8, (raw >> 16) as u8, 0xff]; let rgba: [u8;4] = raw.to_le_bytes();
#[cfg(feature = "rgba")] #[cfg(feature = "rgba")]
let rgba = [ let rgba =
(raw >> 24) as u8, raw.to_be_bytes();
(raw >> 16) as u8,
(raw >> 8) as u8,
raw as u8,
];
for i in 0..4 { for i in 0..4 {
screen[addr * 4 + i] = rgba[i]; screen[addr * 4 + i] = rgba[i];
} }