Remove single-instruction helper func
This commit is contained in:
parent
1cc839c911
commit
1890dd2d3a
@ -334,31 +334,6 @@ impl Display {
|
||||
}
|
||||
}
|
||||
|
||||
fn get_background_attribute(
|
||||
&self,
|
||||
//tile_index_x: usize,
|
||||
//tile_index_y: usize,
|
||||
vram_offset: usize,
|
||||
) -> BgMapAttributes {
|
||||
/*
|
||||
let background_map = if self.control & CTRL_BG_TILE_MAP_SELECT != 0 {
|
||||
0x1C00
|
||||
} else {
|
||||
0x1800
|
||||
};
|
||||
|
||||
let vram_offset: usize =
|
||||
background_map + ((tile_index_y as usize) * 32) + tile_index_x as usize;
|
||||
*/
|
||||
// Background attributes are only in this memory range.
|
||||
assert!(
|
||||
vram_offset >= 0x1800 && vram_offset < 0x2000,
|
||||
format!("offset: {:04X}", vram_offset)
|
||||
);
|
||||
|
||||
BgMapAttributes(self.vram1[vram_offset])
|
||||
}
|
||||
|
||||
pub fn tick(&mut self, ticks: u16) {
|
||||
self.status &= 0xFC;
|
||||
if self.control & CTRL_LCD_DISPLAY_ENABLE == 0 {
|
||||
@ -621,7 +596,7 @@ impl Display {
|
||||
|
||||
// GBC stuff
|
||||
// Get BG map attributes
|
||||
let bg_attribs = self.get_background_attribute(vram_offset);
|
||||
let bg_attribs = BgMapAttributes(self.vram1[vram_offset]);
|
||||
let vram = [&*self.vram0, &*self.vram1][bg_attribs.vram_bank_number()];
|
||||
|
||||
// TODO: Priority
|
||||
@ -687,11 +662,7 @@ impl Display {
|
||||
|
||||
// Obtain tile ID in this area
|
||||
let tile_id = self.vram0[vram_offset];
|
||||
|
||||
let bg_attribs = self.get_background_attribute(
|
||||
//tile_index_x as usize, tile_index_y as usize
|
||||
vram_offset,
|
||||
);
|
||||
let bg_attribs = BgMapAttributes(self.vram1[vram_offset]);
|
||||
|
||||
// Get BG map attributes
|
||||
let vram = if bg_attribs.vram_bank_number() == 0 {
|
||||
@ -700,13 +671,12 @@ impl Display {
|
||||
&*self.vram1
|
||||
};
|
||||
|
||||
// TODO: Priority
|
||||
let tile_offset_x = if bg_attribs.vertical_flip() {
|
||||
let tile_offset_x = if bg_attribs.horizontal_flip() {
|
||||
7 ^ tile_offset_x
|
||||
} else {
|
||||
tile_offset_x
|
||||
};
|
||||
let tile_offset_y = if bg_attribs.horizontal_flip() {
|
||||
let tile_offset_y = if bg_attribs.vertical_flip() {
|
||||
7 ^ tile_offset_y
|
||||
} else {
|
||||
tile_offset_y
|
||||
|
||||
@ -11,15 +11,19 @@ impl BgMapAttributes {
|
||||
}
|
||||
|
||||
pub fn horizontal_flip(&self) -> bool {
|
||||
(self.0 >> 5) != 0
|
||||
((self.0 >> 5) & 1) == 1
|
||||
}
|
||||
|
||||
pub fn vertical_flip(&self) -> bool {
|
||||
(self.0 >> 6) != 0
|
||||
((self.0 >> 6) & 1) == 1
|
||||
}
|
||||
|
||||
pub fn has_priority(&self) -> bool {
|
||||
(self.0 >> 7) != 0
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub enum PixelOrigin {
|
||||
Empty,
|
||||
Background(usize),
|
||||
@ -36,7 +40,7 @@ pub struct Sprite {
|
||||
|
||||
impl Sprite {
|
||||
pub fn load(buf: &[u8]) -> Self {
|
||||
assert!(buf.len() > 4);
|
||||
assert!(buf.len() >= 4);
|
||||
Self {
|
||||
x: buf[0],
|
||||
y: buf[1],
|
||||
|
||||
Loading…
Reference in New Issue
Block a user