From c1fcfc3a58fc0061fb9262c95d728063029e1c2f Mon Sep 17 00:00:00 2001 From: "Jakob L. Kreuze" Date: Mon, 11 Jun 2018 22:28:09 -0400 Subject: Working ART to bitmap conversion. Apparently I suck at bitwise math. --- README.md | 6 +++--- src/bitmap.rs | 8 ++++---- src/main.rs | 15 --------------- 3 files changed, 7 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index f4e5702..69c01fe 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,9 @@ lack of foresight. - [ ] Implement a timer system. - Needs to expose some sort of 'totalclock'. - [ ] Implement support for ART bitmaps. - - [ ] PALETTE.DAT parser. - - [ ] ART parser. - - [ ] Efficient ART-to-bitmap conversion. + - [x] PALETTE.DAT parser. + - [x] ART parser. + - [x] Efficient ART-to-bitmap conversion. - [ ] Advanced ART features such as translucency and shading. - [ ] Tests. - [ ] Implement support for the CON language. diff --git a/src/bitmap.rs b/src/bitmap.rs index afc78c5..8773a66 100644 --- a/src/bitmap.rs +++ b/src/bitmap.rs @@ -103,12 +103,12 @@ impl BitmapManager { // FIXME: As of right now it's RGB, not ARGB. for i in 0..256 { - let r = data[(i * 3)] as u32; - let g = data[(i * 3) + 1] as u32; - let b = data[(i * 3) + 2] as u32; + let r = data[(i * 3)] << 2; + let g = data[(i * 3) + 1] << 2; + let b = data[(i * 3) + 2] << 2; // FIXME: Also, I'm not a fan of this manual shifting shit. - palette.push(r << 4 | g << 2 | b << 0); + palette.push(((r as u32) << 16) | ((g as u32) << 8) | (b as u32)); } palette diff --git a/src/main.rs b/src/main.rs index 8880719..3a95beb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,19 +40,4 @@ fn main() { let bitmap_manager = bitmap::BitmapManager::new(&group_manager).unwrap(); let _tile = bitmap_manager.get_tile(277).unwrap(); - - // use std::fs::File; - // use std::io::Write; - // let mut file = File::create("/tmp/test.data").unwrap(); - // let mut data: Vec = Vec::new(); - // for pixel in tile.data.iter() { - // let r = pixel / 16; - // let g = pixel / 4; - // let b = pixel & 0xff; - // data.push(r as u8); - // data.push(g as u8); - // data.push(b as u8); - // } - // println!("{} x {}", tile.width, tile.height); - // file.write_all(&data); } -- cgit v1.3