From cb59dbbf941347c63a18196370cb1e9c390b8827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Sun, 23 Jul 2023 11:38:36 +0100 Subject: [PATCH] chore: added APU automated testing --- frontends/sdl/README.md | 2 +- .../test/blargg/dmg_sound/01-registers.png | Bin 0 -> 331 bytes .../res/test/blargg/dmg_sound/02-len ctr.png | Bin 0 -> 365 bytes .../res/test/blargg/dmg_sound/03-trigger.png | Bin 0 -> 378 bytes frontends/sdl/src/test.rs | 28 +++++++++++++++++- src/apu.rs | 4 --- 6 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 frontends/sdl/res/test/blargg/dmg_sound/01-registers.png create mode 100644 frontends/sdl/res/test/blargg/dmg_sound/02-len ctr.png create mode 100644 frontends/sdl/res/test/blargg/dmg_sound/03-trigger.png diff --git a/frontends/sdl/README.md b/frontends/sdl/README.md index 262c2271..4e213ce2 100644 --- a/frontends/sdl/README.md +++ b/frontends/sdl/README.md @@ -79,7 +79,7 @@ cargo vcpkg -v build It's possible to run the emulator in headless mode using the `--headless` parameter: ```bash -cargo run -- --rom-path ../../res/roms/test/blargg/cpu/cpu_instrs.gb --cycles 100000000 --headless --device stdout --unlimited +cargo run -- --rom-path ../../res/roms/test/blargg/cpu/cpu_instrs.gb --cycles 100000000 --headless --device stdout --unlimited ``` ## Features diff --git a/frontends/sdl/res/test/blargg/dmg_sound/01-registers.png b/frontends/sdl/res/test/blargg/dmg_sound/01-registers.png new file mode 100644 index 0000000000000000000000000000000000000000..e442d3943aa3e93ec105d93411bcdb6ce6c14410 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62asS`b<aMAfq_xT)5S5Q;?~<67x|hDcvvs| z{%>z9A981bl;P!{1s)<ZFU##>TbWtEk5zy&P#|S+a_UU;ttb5(PwJ-F@%{-dh$>p% z+c+ur$Hw>mPs--x+5A4A%4M*YJ&ilY{@C-6KP<|h3CSDXNZrKnE_?fY^L_tI9~7SL z->LoV{K|7ZTZ3yW&10_J+N-tw<K3TsURhaaE{GR$fPw>;eJ|fOU&Q?`qIeZ^G`G&L z`$aWRg}&c>^L=vl-OrLaZ#|El+E*d?A@tj~_0!V~uGZ^lXJ2TQ0{Za7`t98N)Iu6X So?QL|3MEfhKbLh*2~7Y#^?i>3 literal 0 HcmV?d00001 diff --git a/frontends/sdl/res/test/blargg/dmg_sound/02-len ctr.png b/frontends/sdl/res/test/blargg/dmg_sound/02-len ctr.png new file mode 100644 index 0000000000000000000000000000000000000000..d77ee13986dcda743b88b9bf68a3a8aa41e624a3 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62asS`b<aMAfq~J))5S5Q;?~>i(R|Gc0t^TC z{$KjiU)$rLyK>TG!%UM)CwA!UaH;ws*gzqe&Zw*ubn5w1%}0U<I=1|pdZ_t)$HfDx zVZINnH(l)bP-HLl_Bx|-a2KEbfw-2>Uw_pfZu{~3qorv-Q~R?A<@~SvmNUMNSyimF zJ-kCB$lQ%d_X@~C^+EjKPAxyi{_L2S;jH-^X6^pV_PB9l_=<mFC*tDyzcIYE%DE*V z|KZHpgImng^Vr^<y_7dML-x$%Cj~BQZ>BsB@jJ^pt$M<WbDF%jf6SA5WHjq*-n(Zv zclRZD&F#p2)1A+r=bC@$*Y*B{xlNag0}gU=aB%#1@t9RlOn;fDix(d#96eqAT-G@y GGywqg(y8|V literal 0 HcmV?d00001 diff --git a/frontends/sdl/res/test/blargg/dmg_sound/03-trigger.png b/frontends/sdl/res/test/blargg/dmg_sound/03-trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..d232a0ffe26ec58495d842914a42ac89a166c559 GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62asS`b<aMAfq~J{)5S5Q;?~<6xBHq51Q;&- z{6BwQ>E^~QTSR?yQYSl$EUtZ#ST)=5)5CBECdxn^uf%%o|8|eonkR7@B)$Ko&{5&S z^7y-`ZbtVDxf?g+7jslzQ#N3i2xVC;ko*1K_lwof1k4TB)JrpN_wb+BoU2~@ps?dN zzj>l)x^?@j6C!U#v%cG<$oK5*KIF;7!NFl+<LQ=pZJ}-6t%bW!I!((AJs3MfW7^LL zJN|F}cJhD)^A=B+buy2*=WQ)EIDhTT*#nzHZ>_l%E&j3o2D|;uYhogcK3<#?#jTS) z+3)V`@ADM?D!vQNoc#J;wqVYxg=e1G&whHK{9^Qm|GmmLrc7P^d_jw-fPlb<i`V&A XJr+J>_;c4!P@sCc`njxgN@xNA?HP~1 literal 0 HcmV?d00001 diff --git a/frontends/sdl/src/test.rs b/frontends/sdl/src/test.rs index 12f082fa..63922a84 100644 --- a/frontends/sdl/src/test.rs +++ b/frontends/sdl/src/test.rs @@ -64,11 +64,37 @@ mod tests { 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_blargg_dmg_sound() { + let result: [u8; FRAME_BUFFER_SIZE] = run_image_test( + "../../res/roms/test/blargg/dmg_sound/01-registers.gb", + Some(50000000), + TestOptions::default(), + ); + let image_result = compare_images(&result, "res/test/blargg/dmg_sound/01-registers.png"); + assert_eq!(image_result, true); + + let result: [u8; FRAME_BUFFER_SIZE] = run_image_test( + "../../res/roms/test/blargg/dmg_sound/02-len ctr.gb", + Some(50000000), + TestOptions::default(), + ); + let image_result = compare_images(&result, "res/test/blargg/dmg_sound/02-len ctr.png"); + assert_eq!(image_result, true); + + let result: [u8; FRAME_BUFFER_SIZE] = run_image_test( + "../../res/roms/test/blargg/dmg_sound/03-trigger.gb", + Some(100000000), + TestOptions::default(), + ); + let image_result = compare_images(&result, "res/test/blargg/dmg_sound/03-trigger.png"); + assert_eq!(image_result, true); + } + #[test] fn test_dmg_acid2() { let result: [u8; FRAME_BUFFER_SIZE] = run_image_test( diff --git a/src/apu.rs b/src/apu.rs index c64ff9b4..78cd133c 100644 --- a/src/apu.rs +++ b/src/apu.rs @@ -444,14 +444,10 @@ impl Apu { } }; - println!("APU read: 0x{:04X} = 0x{:02X}", addr, value); - value } pub fn write(&mut self, addr: u16, value: u8) { - println!("APU write: 0x{:04X} = 0x{:02X}", addr, value); - // in case the sound is disabled then ignores writes // to any register aside from the sound on/off if !self.sound_enabled && addr != 0xff26 { -- GitLab