From 71b5d0d996c7d7d4160229b34911750e6038302b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Sat, 15 Jul 2023 13:03:57 +0100 Subject: [PATCH] chore: comparison of instr_timing image Also added support for image saving. --- .../test/blargg/instr_timing/instr_timing.png | Bin 0 -> 1542 bytes frontends/sdl/src/test.rs | 29 ++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 frontends/sdl/res/test/blargg/instr_timing/instr_timing.png diff --git a/frontends/sdl/res/test/blargg/instr_timing/instr_timing.png b/frontends/sdl/res/test/blargg/instr_timing/instr_timing.png new file mode 100644 index 0000000000000000000000000000000000000000..2f56cb91ba13f74eaee3010fa3f7fda7945276f0 GIT binary patch literal 1542 zcmeHHZ%7ky7`|!4SZHLJB+&<zJ}6`a6@o0XIUAT+xLZx55jf$J!d6UUG>ahm1BxJK zM%N!A@jMA>F;SX*7(r@R&>@0k2z4Ns$Px2OcRlazs6O_gJ_P+>yZim_ec$JOp7*)C zR#RP>Y0I-Q43p_P;5dToJ^VV>rs1ENN=z|~b<*Y7SKDG)_+aTMbafWGvTyYFj8r-t ze!rh}V+Cm?CjQ1cN2NU;Lh<{ZPREsz-X5D&<@W^72ZM(sf~-1uTx9FNgg12w$&!a> zWxb(x@N4YmE4SW#cz9mlS>#zg;r!UIkM|*H^Z%fKQ-YZ@c0OH@uj|vF)Y2zjvE}WA z67WU5OZo<{$gW(yEh%GMWNx-G6(%GX-f)pL#CD5p@#j6f)Y>L<@l_nGM|PVQdL2OC zSjeteSRtq69d1ey$=s5Z`e$A-+GOVg(_F+Xdr{Tyj3X}5D=B4!LkAg00lesBXm7>6 zAloQ=H!oe1xd^HYxXcY1_t7RgDBg;Waq-!CwcL0fZ=fJ=a}3R`+rdl2gllZjB>>GM zFh|r<c+HF0dxMr1vh$L%a%zA;;^C(<XB}XR2QOsRCJ!R5ds0!g&~vZ2ya+POiDM#* zJy63L7KXS$2fZ^@gdSud$J7ONwIJ9)8X%DDfoX_SVRoYC8%$H(pv9FSIG43k6Ffvs zM;FPd{TP&xlpg$%mobL`NaNT{s!`8sWqx$lP?+Y|uNU-<)_~NvUnXrOmNX!S`bMxZ zF(J9}zRc}1&7h(%>XJ#wP}Qoo1qo%3wNMsVU`9}#Ci*ibI=?r&i(u})1aK?FHzXX! zaGO(RA#F)ZLY<H0b>(87W*LLSkdfdKau`5thnt|jIexb;!?LE~TH$Uoi^ZftuKMBN rM4iaeU{uD?xd5EvZoTohzIIFPC6BiC)}1cOrSH3|qS`T7?z{XQklBPS literal 0 HcmV?d00001 diff --git a/frontends/sdl/src/test.rs b/frontends/sdl/src/test.rs index 7fa014f8..4d02cbc2 100644 --- a/frontends/sdl/src/test.rs +++ b/frontends/sdl/src/test.rs @@ -1,4 +1,4 @@ -use image::io::Reader as ImageReader; +use image::{io::Reader as ImageReader, ImageBuffer, Rgb}; pub fn compare_images(source_pixels: &[u8], target_path: &str) -> bool { let image_buffer = ImageReader::open(target_path) @@ -23,6 +23,19 @@ pub fn compare_images(source_pixels: &[u8], target_path: &str) -> bool { true } +pub fn save_image(pixels: &[u8], width: u32, height: u32, file_path: &str) { + let mut image_buffer: ImageBuffer<Rgb<u8>, Vec<u8>> = ImageBuffer::new(width, height); + + for (x, y, pixel) in image_buffer.enumerate_pixels_mut() { + let base = ((y * width + x) * 3) as usize; + *pixel = Rgb([pixels[base], pixels[base + 1], pixels[base + 2]]); + } + + image_buffer + .save_with_format(file_path, image::ImageFormat::Png) + .unwrap(); +} + #[cfg(test)] mod tests { use boytacean::{ @@ -31,7 +44,7 @@ mod tests { test::{run_image_test, TestOptions}, }; - use super::compare_images; + use super::{compare_images, save_image}; #[test] fn test_blargg_cpu_instrs() { @@ -44,6 +57,18 @@ mod tests { assert_eq!(image_result, true); } + #[test] + fn test_blargg_instr_timing() { + let result: [u8; FRAME_BUFFER_SIZE] = run_image_test( + "../../res/roms/test/blargg/instr_timing/instr_timing.gb", + Some(50000000), + TestOptions::default(), + ); + compare_images(&result, "res/test/blargg/instr_timing/instr_timing.png"); + let image_result = compare_images(&result, "res/test/blargg/instr_timing/instr_timing.png"); + assert_eq!(image_result, true); + } + #[test] fn test_dmg_acid2() { let result: [u8; FRAME_BUFFER_SIZE] = run_image_test( -- GitLab