From fda7f83855dc3972a3bb682358da243a6554f23e Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 6 Jun 2022 22:55:04 -0700 Subject: [PATCH] GB I/O: Fix writing to WAVE RAM behavior (fixes #1334) --- CHANGES | 1 + .../gb/blargg/cgb_sound/12-wave/baseline_0000.png | Bin 0 -> 628 bytes cinema/gb/blargg/cgb_sound/12-wave/config.ini | 2 -- .../blargg/cgb_sound/12-wave/xbaseline_0000.png | Bin 785 -> 0 bytes src/gb/io.c | 4 ++-- 5 files changed, 3 insertions(+), 4 deletions(-) create mode 100644 cinema/gb/blargg/cgb_sound/12-wave/baseline_0000.png delete mode 100644 cinema/gb/blargg/cgb_sound/12-wave/config.ini delete mode 100644 cinema/gb/blargg/cgb_sound/12-wave/xbaseline_0000.png diff --git a/CHANGES b/CHANGES index 6f0f13670..e644ba15e 100644 --- a/CHANGES +++ b/CHANGES @@ -23,6 +23,7 @@ Emulation fixes: - GB Audio: Properly apply per-model audio differences - GB Audio: Revamp channel rendering - GB Audio: Fix APU re-enable timing glitch + - GB I/O: Fix writing to WAVE RAM behavior (fixes mgba.io/i/1334) - GB Memory: Add cursory cartridge open bus emulation (fixes mgba.io/i/2032) - GB Serialize: Fix loading MBC1 states that affect bank 0 (fixes mgba.io/i/2402) - GB Video: Draw SGB border pieces that overlap GB graphics (fixes mgba.io/i/1339) diff --git a/cinema/gb/blargg/cgb_sound/12-wave/baseline_0000.png b/cinema/gb/blargg/cgb_sound/12-wave/baseline_0000.png new file mode 100644 index 0000000000000000000000000000000000000000..960eda9cea03b235523a6d2707fbd971287b9aee GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|S$_r;B4q#hkadFBZ*mU~mY0 z@#Ft~ANey2LL;tZT)t=dT(hw?rD${a<29c*=?KT}ulptbU^7dfu!Y|Pi^j*pnelE* zo$2|{CcdXP#mu*px7lrZwEkf>TYP)W+LPxq&5wWR|2^yA=}mXOS7)8Nr^7J&{=GZj zs?I1st~~g%;>3sb^<_66{JK>+@A%{VL-Kv;4=g_X-Tc$w{ND!gY32Sc+h=?iyL#~8 z-Ri$HpFCaqW2OA58#Wcc>~@Q+PkhJycI*5-RsRk8w_D_w9O0BvFPL+nkm)#1#`4S^ zcOR|a== z&5NqXf9yBTi_*ViZMQ>ozFE|w_vtsX-cROg_BWU@*Z$Ea7ki^-{^WeQ`Sa?heb)Qt hdc1P6GJ1^v<_(?sNG|!Rr4%SNdAjb*0|V0yPZ!6KiaBrZTr6rb5MchbKM3 zg8A@}75YA--b<7B@Py(xI~zTjwQ`rjXY@TtJ#lkRjZbup`~N#7EYIg`|H~)4X*J`5 zAFs1EpDz8jW<6j3H?4>F($)7>M!NG`1h_z(zN(3C)@Sh;I`A&Z_V@X*`K*AJxAQ?0TJPM$E0vk@~$4??0tvU zMNW0yx+T2zfBx;CK^Fz@%<%|~-cfsMp=FrtZOwgGCmZjTjGKGx<+`ns6Sh{CY?a)! z)%5%vrf>VVS6FX1;=TAdj$@fpylKe1a2vhjKRpH*kcJs>od7sa{WtlIUb$ciO{~HhYTwuhAZ8_)nvD1Ipf9{X7zgg^^ z@Z6lE;$_;)w^3gfre9mfS^uKx+n$?G`Q6_K+zoi#R{!~5_VMqVk8GciJ&k>x>-Xxp z&6h8Kdicj=js#ow{TbV%>ViK0U2W(Rzhl2&o|eQS_qxKUKob}C%jH&c?!4r?SbObq z$u<7=`?=eqDvB!K+P-audio, mTimingCurrentTime(gb->audio.timing), 0x4); - if (!gb->audio.playingCh3 || gb->audio.style != GB_AUDIO_DMG) { + if (!gb->audio.playingCh3) { gb->audio.ch3.wavedata8[address - GB_REG_WAVE_0] = value; - } else if(gb->audio.ch3.readable) { + } else if (gb->audio.ch3.readable || gb->audio.style == GB_AUDIO_CGB) { gb->audio.ch3.wavedata8[gb->audio.ch3.window >> 1] = value; } break;