color emphasis

This commit is contained in:
Theron 2020-03-29 11:52:15 -05:00
parent d2ea059915
commit 784c507e85
3 changed files with 37 additions and 7 deletions

View File

@ -36,8 +36,8 @@ impl super::Ppu {
self.show_background = byte & (1<<3) != 0;
self.show_sprites = byte & (1<<4) != 0;
self.emphasize_red = byte & (1<<5) != 0;
self.emphasize_blue = byte & (1<<6) != 0;
self.emphasize_green = byte & (1<<7) != 0;
self.emphasize_green = byte & (1<<6) != 0;
self.emphasize_blue = byte & (1<<7) != 0;
}
// cpu reads ppu status from 0x2002, PPUSTATUS

View File

@ -135,9 +135,9 @@ impl Ppu {
show_sprites_left: false,
show_background: false,
show_sprites: false,
emphasize_red: false, //
emphasize_green: false, // TODO: implement these
emphasize_blue: false, //
emphasize_red: false,
emphasize_green: false,
emphasize_blue: false,
sprite_overflow: false,
sprite_zero_hit: false,
should_generate_nmi: false,

View File

@ -117,8 +117,22 @@ impl super::Ppu {
}
// let pixel = self.read(palette_address as usize) as usize;
let pixel = self.palette_ram[palette_address as usize] as usize;
let color: (u8, u8, u8) = super::PALETTE_TABLE[pixel];
let mut color: (u8, u8, u8) = super::PALETTE_TABLE[pixel];
if self.emphasize_red {
color.0 = emphasize(&color.0);
color.1 = deemphasize(&color.1);
color.2 = deemphasize(&color.2);
}
if self.emphasize_green {
color.0 = deemphasize(&color.0);
color.1 = emphasize(&color.1);
color.2 = deemphasize(&color.2);
}
if self.emphasize_blue {
color.0 = deemphasize(&color.0);
color.1 = deemphasize(&color.1);
color.2 = emphasize(&color.2);
}
(x,y,color)
}
@ -332,3 +346,19 @@ impl super::Ppu {
self.previous_nmi = nmi;
}
}
fn emphasize(byte: &u8) -> u8 {
if *byte < 200 {
byte + 55
} else {
255
}
}
fn deemphasize(byte: &u8) -> u8 {
if *byte > 55 {
byte - 55
} else {
0
}
}