From fd02c872a97d7144c6910e9885285e0fb2eadbc0 Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Thu, 25 Nov 2021 16:34:36 -0500 Subject: [PATCH] MSX: finish up SCC, set to released. --- Assets/dll/MSXHawk.dll | Bin 247808 -> 247808 bytes Assets/gamedb/gamedb_msx_msx1_rom.txt | 44 ++++----- libHawk/MSXHawk/MSXHawk/SCC.h | 89 ++++++++++++------ .../Computers/MSX/MSX.cs | 2 +- 4 files changed, 81 insertions(+), 54 deletions(-) diff --git a/Assets/dll/MSXHawk.dll b/Assets/dll/MSXHawk.dll index e9f07a072840b4ee6ec35495aade635032207e08..1cf940095b45c7239237414e5e166fabca79b674 100644 GIT binary patch delta 5850 zcmeHLZB!K38NPF8)m>OvzFCluMOHvSL?sPTOm;?y3&j)+ZTyU+hfqvnf+?J+HSQuP zGu;re>KT667EjXZX+&c+Y-*`|8PS9$Y8peT=`kMDEYY4|ni!i#x6i#hkTv#y|8&oJ z=Xu_*d*8Wp?>htTc8j~+@~Tmw@B4R#2%AmSZ;GUf5^{9s4q=}#@5p`BDGGmV-ZII% zWs=~!;aUct`(N%xQ;8zSk4_Po*3=j#xi48@NgDls#T+)>0h{FBXe70g zOD)T8NGSDC<_@zQj}buRD9LiDYD?8sI`^EUE^#2%L>dzHsBp{iD#6CWqVEVRMp($V zVHOtVU|}(LggFrwIuYh7i(qlpEH3trxN^jqNkg(eYve>&Tp$dERSZf)as^hE3=TV+ zuNk+Vv%L5)o^r9JyVQtFr3sg1Ax?FrJpv@usW#ZH$NhdnoNAHX(!If4?D7m)Qr&Eb zl9tmAvucHPxs5X{UTIpbD&<JoT zK%yc?0j4T)G$2WlV*tsD91BQMYhM`OY?Z_Mo;$ zpxaz^*m5RCLX8_k9Lk0$?3In7O0j)?v9bZB%4S81fr=HC!xSkNv>r5Ek>V5ss*^2> zgsSBTMX~}S6)6D_rAUc@XhoU|h*6{@K&&Dq1L71Z1rV=D*io{MhGlCq@%QBe*8%@p% zazHPe;bIKr78q2?h#z+@@61L%F+rnUPvBP~^XpGaHlW-dF zFj#)mc)ru&z9lrGFA0|Ja(f+y5b(6{obHH1Bl$*XL?7W%>-8uDS|}R|^`=!^HA+Jg zZzQGIAK1`VX|?pIv`SjJ`q5P@28X>B2D&^(c+UHZm0lL&RxBZ;wCx3Zp+h9-kgpTG zXM7K8FD26Vg#qnnQ|TM7P4D^rrELf7b+w^rHmiubs%ofYDdNab$w~u<>d72xj2!Ah zI6P(MP#?~rA%esDC=Q!q7;JUp8pl}+u2#+zToXBa0oNqrVu9_TDUii&J$CYwP*SR< zO6uw=X=o8I1js7^@=}1j79cMM$g2VJa)7)ZATJ2WE0Ts<-I#@y1RAI*i}UfSU=EbU zt>a~tqO18u9}mkGr8ZZx8lJ$C5}GhgI#AY0^44B`9yA>597)c!hd zr(De}1?}W_cEG+LxLED6zp5EiXiA}jr?=Qm*UWeTB^U~P3`43@hDzp;2of<=lEKp1kd^BGJQw>>Gxl~r=_pa>^blByyY9b z0{x>Ru`xQJzjPh?S)cg^AiPLu3<;Rc+TK)}DLAy#sr23)HkrZM=IMJpl=$8`=l2_% z*;>KEHrp|_xqO9x<7O?#MzeTA#CXD{yAs$Q^L_kbAYrqO#w}uNH!5JW9%FkGnP+5? z_y%0J{msp6cH{V9sdo*=5`2n2*oC`hA3pota{27{=m~jg)NW)mm`^r4wB>0ui5G7k zpKsY+>Fl`p1}+AQ-A zdn$h%NJrIz|76qc$@l=VY}xgV-*4$=yWsFNn&xuCTkh#!uq%>~pKfl8A)Y3dr?%{1 z+uPH`{GJ^)JinYBNw~HdN-zvjcQt+MZ!>e7(tn1Qp&V3S;&P63_F znGtLXXC^QsXCYuF45cg#1qL~+7?_!}aIi4W@a@qW&KW*GS}mO6?cN%}89qW< zBRPwX1HC@vl&!BbGG^V|iK_7`^rw!jd zN^`t|_33VPX!mB)T;a4<1BmbW0888UB3oCiu&;}&$2+|HGU;_8n&);mTan2=s`8a> z4(}^7s99Ju<_;sizPW@qJEk~2r|=YfCK<(e-oi`CwqmsUGr!;QFurwdPR|F&*cNem z)HCc6{-S_!&j>iT`r`9WAiiyU-t8mW z&K&xX(BZwDLnWb#?Jj2<-?gZqwEvQbGJPXR^)xe|I>p0V1iv{}^XkFjiJzw_A0hs} zag)HPv}dd35-Dg62J6L$e26`_GEFKSI7f7r;|G9@Mcz$1OV6>DZ&^ zo!9YG9VhF4yN-oAmg{&$M?NXRD>UStz{I|{1E@QQ;Y>ikqWj<0v0KOdcLV+oUEiYP z6FOGtn4!ld={P?AJnqLUeEe6TPq^)N8ZJHr|CE@RFZR3+-;=K3$zkZB4S=Wt$I2DmN>jQT??hAwcWxP99!nbn5 z=Y9K0G0zY&JYSfy|C7rlhhOuZ>-z1H?Ot=ecvDzgaX%q>>uVls!07d-MKXpl0=j)Y zC>j4lKkxBC%+Xzu>x(x@3kfpG-~_2@yz8D7Yv$SG zCzJRFLc(iAGO2))>JUnP1{ppfk~D;IUAuKad^o|DO34C<{f&TYLf6)Gi8%?KX_WLp z>U8&nu61>Zsn%hbv);qy0)&RUXN$z}8v}V>yV50QO*WqtNp++abx>RqSp?3e9-B|e z+#*Vfw8n#C`t$~F#){U2k;>;Rgg81XCZFLcF3>13yz4bf@=iNeEgS-ljO!n zdPUF)4#y_H3ENmu+%(uaV5<&_dk}}iD2Zew$W{xR8#Z^4Z5wP^u(7>{A3GY@RqRMR zup9~hZ)1Ex*yVrN#zwov_(?k>#E9-5F;{d2A9i-=dqXMt3l2WRi;yw!iZDtZh``>* zv8}LDl9o(~6@23KgR`#Cj-#Io&QOCa1)pdE;H)(y*(s?9XP9oM8DtNXd?*DOloWbI z;sBn>rsM$Z42Sb5xuTuz71QZAZ)i7q#k|rO9O{VsDESeDrPR-(Bo3V-A9fq?6P-_V z57=238HSXDGyED-qpj@|(_O5Cuuk$Rqy?PeSC9^HhPNOGzzOzePV^JlSzpCgi~qlFe>dl1O6Y5fvfYon<4F2$W!agTxkM6wuHn8aT*q z*g$5^8Vv#+j`bAmu?O1VS)bNf4b*< z^ZVZ4oqO+h?|M83*dkQzxP{81(BoYdA6OMH zxCh;bVe?${G?{mjFd=o4&1sfQ{;oPH!D$ZtR$#`KChJbvh~znLy6n(>+z@ekiaV`} z$&ek*kR7V!M(g*Eg%H>yp!SIk7jA(BD+%@4u~cb(*2ZYDcP zDj`krb&~2dGflQGWHTX07jl?j(FF?=th!*8Jj)HFk&F|DcsNPpOX$pmteipb22;=bx)I?F@rlgu5>JiW0LNesyk+K z$J#3$9dI;~##~lA4UQEizcb6^_SXot(@fiIR>_h&$JHbCIbE1J($mj>viG!M^&!(U zKf{tDX|(~5`x0bzu00h@qO2~qoBtBVUX#^EyVc}hYLwM-yUD*S$>n>;lt(IB4>eAx z6CTNLDmDcqGoqytb*hvPOup1*&qMtI*(WH~$tHgWbz&SXvRYkM(R#FTBEsxVB?!xA zVd)4%Vkw1(=}{>re+{)p!zSxd1w1N;MP(qW0BDMhGO;K}B+9K;mpfX+yjl^Dv#_{K z#1#QkW8?73HMBNb&EaSr+>t!D% zPWE9QWglkMSM3t39b$F4SUp*+E}L3iqE?SLZRnD{dksDP+Oe>((qUGdcm-*c;>3ug zY{iKR(rCpw0+6FP(*e1PGXr2zoSA?;1uN~Btcr6az_#IeIy>Jdm2_V)C{8w~rHXSb z;0DE6Ah$aU^|jY#2y~6P0ox=&kx*iJq7r9!D9hN!UY?|#66h#*J*+8;gzQx&#bs|s z167)#OXXdf)D2mJT$RQQ*)WWVF+i?LXNDXYGGYu&&Saq$cx2UepD@%V?PHFRogm;r0!%#SfJc?{B(z`>3(N&DagVb0j@ zlc`AuCAGQ)?cyxxK5kCh!~7)A1)<CSVTYMAl$$M4MYebG!d7G@-Z9^?uhd>+~zk zlO3K*LQ@v3*bjCzr{5LNdwK0phH{7JN1*N-6a<%J}LF$uuD_3Gkv3<XzAg#fK98vL zJ$R;Y zt`$#{8;_aoyXu`8*T87~J@X5kp z&$r?5sT*6nnvA{=W#7BO_dkPtqFiiBkH|aDK|UDF83d%13r&d;b&mF89xW8C+WtIx zb1^FxC%5~$7ABG4fkWZ2!OLa~8n(IKWZNgW^HZ+YimkMW2c$*=R$LQ+yPE_T>H#aQ zG;2DWy^w%i`6kV{~tylaxNfS^H7cJ!L+{RgieF0cNlPa?xD zwNbl)RWSB?t=j!In!^WgjMlsFnsB!1gHApCMH?M^<=ZA)6Ts_zb1YKtT(q8n)yvJN z1y_bYJ@8+L+oXp-mQU?@d^r$~Q48VTmP^CX)TUMIe+Y+7ezpr<&8IeZ5v((O-M6k! zBjlGW+cSu-g~h3@YuN_(wJ^JHtrhE6yfz2V_P7dmHmK`cF5BCUTqpTF8{r`pd)6}$ zS{3F3EsK`I9+pZ{JuFMqRZWQa_IhlA`^V6?1b59*c7YDa?a#6kAy@&?v->zUE>>F$ zu}$s!2-U-w$-Y>|D{HKQKVC$u zrd8MRARAXb%XqA|gJpPMR@+#T;2K`{*`3GEk;n;eO$ya zgC8N(=Vdl^xQ`zZ{N>n~=j-1??1R|Xk_wk_S5zhY_8=G0p1huR(9pwygi_jnldvi9 z;Q~6Y$G!6)yATOUd_RI89g5&vI=-yqb2>Kb*ssTZq2u>DX6g1a9c3No>Uds9UX&0w z$vzM%c;USW>IRZA5RuR8_D^-})zP63_+?#wPRHds*6MhZ?pLB?G=CMhvnyNw)#?SG z(eZg5qjt0YhJ(7kOqX}*@-ZD>(y?C08M@y)y4L~ZQ*<0af3b77l1WDC5vNGy#@{rMO5XFgt@{L{Cd{ccin zUSV#)*dSgImfU+AA*Ia=9%@AP=KUhMfE*Fo-VByR|Ee!t81dQLFA{tZkkUt(Y@f({ zX8%JV$Z8^C+1KDtbF&8j`hzTgBp0oi;>)7VG9AS^ND~G0!{zbEE<;DE0WqwEoGZHC(Qw#l|DO_l1b&1IJBkP#4%%=xf-*&Aen5w zm6GDyD2eFEWm$V;n|OoJrG>VMd1+mGBI{2mnFZ?7Ms0`Hs#R`>)!G*+)9Ik(6v(PA z+b$Neg$!)kE`A~i8?~oi6-SP_fW@%lUn;RbCJnGfirCiLGPT){i*ee(tKtf=bHBJw z5OZx|{8-SV?~1rY2+7oGBa)p4IkeTUiT6}L0dote9kdCw74&D&0nka%Sx_7nI~`O6 zngo(T^Fd2M%Rs9@9iUC1ZGr1|h;4#9h=q^-%F#|9e3{qAw6O&{{Q`6(MmG_@-;W2+ za0_TI_@Vv>&(4JsJ0*?a8BVg(0^#W9rh zYJQrI`tMx?gp`thAEU};g~3c-U|Fu=ZB6C=-Cm{51I|0;rF0=ZAq6n#?6io zc8q)lQou9(4)g+ehChNj!4n)FBS14ya_BIDo*gPL;^-Iv&u|OqEO>@nL8&-mhK?8T z?3k%{VyeIcN07%L%!a_Q5!9gBy2X*n9;l|@MM+y7CF`|{Zk&EEL*;ptl3k$j7zV?_ zMU=b(eGyOv9oE|6I?A{Y3$%oi*FiFPhMzx%x6<~rO#RH_BNS-|0TWy}^U9V{vIA5D{&k>fInI6X4xke>8GJ3U l4&>0r_K03e_Gy3U5lc;bQF7x%%nQiKPs+kT%3kps@jv0SzI6Zq diff --git a/Assets/gamedb/gamedb_msx_msx1_rom.txt b/Assets/gamedb/gamedb_msx_msx1_rom.txt index 531912eff2..b15d491134 100644 --- a/Assets/gamedb/gamedb_msx_msx1_rom.txt +++ b/Assets/gamedb/gamedb_msx_msx1_rom.txt @@ -748,10 +748,10 @@ E8519FC1F9A4AF0115A8ABB450B32BD6 Exerion II - Zorni (1984)(Jaleco)(JP)[a] MSX 67EECAE6CBB4A1FBB5F6F549DD614C1D Exoide-Z (1986)(Casio)(JP)[a] MSX JP 1BB9D2437C2304088D36EBBC655FE2C1 Exoide-Z (1986)(Casio)(JP)[a2] MSX JP 1C7C29B7F4527BBA7160641616FCB6A3 Exoide-Z Area 5 (1986)(Casio)(JP) MSX JP -603D4C819A51D0C20FF9FA9F902D3FFD F-1 Spirit - The Way to Formula 1 (1987)(Konami)(JP)[a][RC-752] MSX JP -910CC3718C00C9AF6A808E277F0E7586 F-1 Spirit - The Way to Formula 1 (1987)(Konami)(JP)[RC-752] MSX JP -298CCA1F79A4494C41CFB9EB1E586A50 F-1 Spirit - The Way to Formula 1 (1987)(Konami)(JP)[SCC][RC-752] MSX JP -FCF0F1CA4AB651512E27BAA397AE774F F-1 Spirit - The Way to Formula 1 (1987)(Zemina)(KR)[RC-752] MSX KR +603D4C819A51D0C20FF9FA9F902D3FFD F-1 Spirit - The Way to Formula 1 (1987)(Konami)(JP)[a][RC-752] MSX mapper=2 JP +910CC3718C00C9AF6A808E277F0E7586 F-1 Spirit - The Way to Formula 1 (1987)(Konami)(JP)[RC-752] MSX mapper=2 JP +298CCA1F79A4494C41CFB9EB1E586A50 F-1 Spirit - The Way to Formula 1 (1987)(Konami)(JP)[SCC][RC-752] MSX mapper=2 JP +FCF0F1CA4AB651512E27BAA397AE774F F-1 Spirit - The Way to Formula 1 (1987)(Zemina)(KR)[RC-752] MSX mapper=2 KR C7C38266C0778D3E3669CD3A8DE313FE F16 Fighting Falcon (1985)(ASCII)(JP) MSX JP 9926D3629D71A880FAF8BD14F6488288 Fa Tetris (1989)(Fa Soft)(KR) MSX KR DF328B3806F98F0045253C50C21A9B33 Factory Infection (2004)(Karoshi)[RK705] MSX @@ -815,10 +815,10 @@ C5FA1C8C6676FAA382DB530EEAB349B6 Gall Force - Defense of Chaos (1986)(Sony)(JP) AC2E61850414F7B528C8753A3D804394 Glider (1985)(ASCII)(JP) MSX JP A9E41CB3920EC0CE6348325C638A19AD Glider (1985)(ASCII)(JP)[a] MSX JP EC1A568F12FA3303804216F35E1CD841 Gniffel v2 (2004)(Dioniso) MSX -DC31287CED6E601EA7FDF2AF9759C58F Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[a][RC-764] MSX JP -FF9FEDE25893DC32F6A7DB275173B2B9 Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[a2][RC-764] MSX JP -55C020211EDCFC4C5A5D66BDD48F7D16 Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[RC-764] MSX JP -AAA5EB619E90C1A3D1C2F5714BCCC0EA Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[SCC][RC-764] MSX JP +DC31287CED6E601EA7FDF2AF9759C58F Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[a][RC-764] MSX mapper=2 JP +FF9FEDE25893DC32F6A7DB275173B2B9 Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[a2][RC-764] MSX mapper=2 JP +55C020211EDCFC4C5A5D66BDD48F7D16 Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[RC-764] MSX mapper=2 JP +AAA5EB619E90C1A3D1C2F5714BCCC0EA Gofer no Yabou Episode II. Nemesis 3 - The Eve of Destruction (1988)(Konami)(JP)[SCC][RC-764] MSX mapper=2 JP B56500EBB55C2E5FB20DE542EF739D5B Gokiburi Daisakusen. Bug Bomb (1983)(Magic Software)(JP) MSX JP 277B93F5F1A7EF399479FFDF98844922 Golf Game (1983)(ASCII)(JP) MSX JP AE65C3CEB17FD6187AAD36DCFB3B9858 Golf Kyou. Hudson 3D Golf. Golf Crazy (1984)(Hudson Soft)(JP) MSX JP @@ -834,12 +834,12 @@ E25E87AECC04F4E5047B9AF12135CDE1 Goonies, The (1986)(Konami)(JP)[a][RC-734] MSX 8A7C8149F1F3B7A5FC93CD66A7FB2AD5 Gozira 3D. Godzilla vs 3 Major Monsters (1984)(Bandai)(JP) MSX JP 4724699F410FA266A6BCB223EE8C99FC Gozira Kun. Godzilla (1985)(Toho)(JP) MSX JP B197C822F012647A5C30EEA2BA009FC5 Gozira Kun. Godzilla (1985)(Toho)(JP)[a] MSX JP -FF98B021526417A0422DF2A1D7E9ECDF Gradius 2. Nemesis 2 (1987)(Konami)(beta)[a][RC-751] MSX -76D211421642FE6CFCD56AF525B0D877 Gradius 2. Nemesis 2 (1987)(Konami)(beta)[RC-751] MSX -ABBCFC00F71051434E0E82E29B6EA1EF Gradius 2. Nemesis 2 (1987)(Konami)(JP)[a][RC-751] MSX JP -648E923715E4B54CBECE186F098E0956 Gradius 2. Nemesis 2 (1987)(Konami)(JP)[penguin version][RC-751] MSX JP -EE3E6A50E3DE131D217E5DAB55519011 Gradius 2. Nemesis 2 (1987)(Konami)(JP)[RC-751] MSX JP -C1EAEAF5F0B432D2C6A53735B6F53B6D Gradius 2. Nemesis 2 (1987)(Konami)(JP)[SCC][RC-751] MSX JP +FF98B021526417A0422DF2A1D7E9ECDF Gradius 2. Nemesis 2 (1987)(Konami)(beta)[a][RC-751] MSX mapper=2 JP +76D211421642FE6CFCD56AF525B0D877 Gradius 2. Nemesis 2 (1987)(Konami)(beta)[RC-751] MSX mapper=2 JP +ABBCFC00F71051434E0E82E29B6EA1EF Gradius 2. Nemesis 2 (1987)(Konami)(JP)[a][RC-751] MSX mapper=2 JP +648E923715E4B54CBECE186F098E0956 Gradius 2. Nemesis 2 (1987)(Konami)(JP)[penguin version][RC-751] MSX mapper=2 JP +EE3E6A50E3DE131D217E5DAB55519011 Gradius 2. Nemesis 2 (1987)(Konami)(JP)[RC-751] MSX mapper=2 JP +C1EAEAF5F0B432D2C6A53735B6F53B6D Gradius 2. Nemesis 2 (1987)(Konami)(JP)[SCC][RC-751] MSX mapper=2 JP 797016FDBF2B23138C543FEE5C8CC34B Gradius. Nemesis (1986)(Konami)(JP)[a][RC-742] MSX JP 1D19E90B3DF492F0F1956747279FBBAC Gradius. Nemesis (1986)(Konami)(JP)[a][SCC][RC-742] MSX JP 25C0349164616A7540FAA04DCC90237A Gradius. Nemesis (1986)(Konami)(JP)[SCC][RC-742] MSX JP @@ -973,8 +973,8 @@ DC990D182C3EC2B053E9BBE5B3FBF488 King's Valley (1985)(Konami)(JP)[a][RC-727] MS DCD8D9508BE4FD38FDB4C8F50B16DBE3 King's Valley (1985)(Konami)(JP)[a3][RC-727] MSX JP B1E77E416CDBE46E31A50D6412A0A7BD King's Valley (1985)(Konami)(JP)[a4][RC-727] MSX JP F485D4C28102F3C5E7FB1EBA8520382C King's Valley (1985)(Konami)(JP)[RC-727] MSX JP -2F8A812F46E09E39DD3D0DA8524EE96C King's Valley II - The Seal of El Giza (1988)(Konami)(JP)[RC-760] MSX JP -7C002653A7D54C8404EACE7B0694B70D King's Valley II - The Seal of El Giza (1988)(Konami)(JP)[SCC][RC-760] MSX JP +2F8A812F46E09E39DD3D0DA8524EE96C King's Valley II - The Seal of El Giza (1988)(Konami)(JP)[RC-760] MSX mapper=2 JP +7C002653A7D54C8404EACE7B0694B70D King's Valley II - The Seal of El Giza (1988)(Konami)(JP)[SCC][RC-760] MSX mapper=2 JP 46051F8A0AAEFAA012B8783ADA3DA4FD Kinnikuman. Muscle Man (1985)(Bandai)(JP) MSX JP 1CD39F900EDF496A967E4FC8E48D1451 Kinnikuman. Muscle Man (1985)(Bandai)(JP)[a] MSX JP 489075D5E2F3B9B60C41FBF8AD27AC7E Knight Lore (1985)(Nippon Dexter)(JP) MSX JP @@ -1159,10 +1159,10 @@ DA801620C9472CB14C31EA9F3C1DC196 Pai Panic (1983)(ASCII)(JP) MSX JP 63D4E4360BF187C3BF8CE789D4CFB116 Pairs (1983)(ASCII)(JP)[a2] MSX JP 629F18292B2F7A7D3862678A7C221A95 Panther (1986)(IREM)(JP) MSX JP BC250F705C0285E3040E633E698D81B3 Parachuteless Joe (2005)(Paxanga Soft) MSX -E753BB6637DD811F1E9B41747A1D3C58 Parodius - Tako Saves Earth (1988)(Konami)(JP)[a][RC-759] MSX JP -55ADF3B4576B370DD2680D80C333EBDE Parodius - Tako Saves Earth (1988)(Konami)(JP)[a][SCC][RC-759] MSX JP -790972D4E53FCBC2EE46317A583FB52E Parodius - Tako Saves Earth (1988)(Konami)(JP)[RC-759] MSX JP -9548807E96BF5FA2688EA24BF9ED62AF Parodius - Tako Saves Earth (1988)(Konami)(JP)[SCC][RC-759] MSX JP +E753BB6637DD811F1E9B41747A1D3C58 Parodius - Tako Saves Earth (1988)(Konami)(JP)[a][RC-759] MSX mapper=2 JP +55ADF3B4576B370DD2680D80C333EBDE Parodius - Tako Saves Earth (1988)(Konami)(JP)[a][SCC][RC-759] MSX mapper=2 JP +790972D4E53FCBC2EE46317A583FB52E Parodius - Tako Saves Earth (1988)(Konami)(JP)[RC-759] MSX mapper=2 JP +9548807E96BF5FA2688EA24BF9ED62AF Parodius - Tako Saves Earth (1988)(Konami)(JP)[SCC][RC-759] MSX mapper=2 JP 455DF4D49FF8300C702CE961919AC61C Pass Ball (1983)(ASCII)(JP) MSX JP 7224FA4AADD5A2614AFF3BBC339B1CE1 Pastfinder (1984)(Pony Canyon)(JP) MSX JP 8CCCA56B46815714DC5C79A616DE60A0 Payload (1985)(Sony)(JP) MSX JP @@ -1247,8 +1247,8 @@ D2560E3B7D4E137BDBBA8426030D2F44 Rotors (1984)(ASCII)(JP) MSX JP 0F03B2306E11C5182351DB3B7AA30533 Saimazoom (2005)(Karoshi)[RK708] MSX B0D4FB9A9A88FB65C12D2B567B567171 Saimazoom (2005)(Karoshi)[RK708EN] MSX EC869B375D7517A7BA6161B10F5DEE06 Salamander - Operation X (1987)(Konami)(JP)[RC-758] MSX mapper=2 JP -59767E46E226F5C69469694817839189 Salamander - Operation X (1987)(Konami)(JP)[SCC][RC-758] MSX JP -0DA25C28FCE818D6FA7231CB6A914783 Salamander - Operation X (1988)(Zemina)(KR)[RC-758] MSX KR +59767E46E226F5C69469694817839189 Salamander - Operation X (1987)(Konami)(JP)[SCC][RC-758] MSX mapper=2 JP +0DA25C28FCE818D6FA7231CB6A914783 Salamander - Operation X (1988)(Zemina)(KR)[RC-758] MSX mapper=2 KR 305BF5B78B03D28B92DEF20AD89A4E4B Sangokushi. Romance of Three Kingdoms (1986)(Koei)(JP) MSX JP C39692644983104279C32F0E2538C773 Sangokushi. Romance of Three Kingdoms (1986)(Koei)(JP)[a] MSX JP 740A3E9D6A90AE40E37D9DADF94CF10E Sangokushi. Romance of Three Kingdoms (1986)(Koei)(JP)[a2] MSX JP diff --git a/libHawk/MSXHawk/MSXHawk/SCC.h b/libHawk/MSXHawk/MSXHawk/SCC.h index d91561e951..019f074907 100644 --- a/libHawk/MSXHawk/MSXHawk/SCC.h +++ b/libHawk/MSXHawk/MSXHawk/SCC.h @@ -22,6 +22,9 @@ namespace MSXHawk uint8_t ch_1_cnt, ch_2_cnt, ch_3_cnt, ch_4_cnt, ch_5_cnt; uint8_t ch_1_vol, ch_2_vol, ch_3_vol, ch_4_vol, ch_5_vol; + uint8_t ch_1_frl, ch_2_frl, ch_3_frl, ch_4_frl, ch_5_frl; + uint8_t ch_1_frh, ch_2_frh, ch_3_frh, ch_4_frh, ch_5_frh; + uint16_t ch_1_frq, ch_2_frq, ch_3_frq, ch_4_frq, ch_5_frq; uint16_t ch_1_clk, ch_2_clk, ch_3_clk, ch_4_clk, ch_5_clk; @@ -41,7 +44,7 @@ namespace MSXHawk const uint32_t VolumeTable[16] = { - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 + 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 }; void Reset() @@ -85,16 +88,16 @@ namespace MSXHawk else if (addr < 0x90) { // frequencies, volumes, enable - if (addr == 0x80) { ch_1_frq = (uint16_t)((ch_1_frq & 0xFF00) | value); } - else if (addr == 0x81) { ch_1_frq = (uint16_t)((ch_1_frq & 0x00FF) | ((value & 0xF) << 8)); } - else if (addr == 0x82) { ch_2_frq = (uint16_t)((ch_2_frq & 0xFF00) | value); } - else if (addr == 0x83) { ch_2_frq = (uint16_t)((ch_2_frq & 0x00FF) | ((value & 0xF) << 8)); } - else if (addr == 0x84) { ch_3_frq = (uint16_t)((ch_3_frq & 0xFF00) | value); } - else if (addr == 0x85) { ch_3_frq = (uint16_t)((ch_3_frq & 0x00FF) | ((value & 0xF) << 8)); } - else if (addr == 0x86) { ch_4_frq = (uint16_t)((ch_4_frq & 0xFF00) | value); } - else if (addr == 0x87) { ch_4_frq = (uint16_t)((ch_4_frq & 0x00FF) | ((value & 0xF) << 8)); } - else if (addr == 0x88) { ch_5_frq = (uint16_t)((ch_5_frq & 0xFF00) | value); } - else if (addr == 0x89) { ch_5_frq = (uint16_t)((ch_5_frq & 0x00FF) | ((value & 0xF) << 8)); } + if (addr == 0x80) { ch_1_frl = value; } + else if (addr == 0x81) { ch_1_frh = (value & 0xF); } + else if (addr == 0x82) { ch_2_frl = value; } + else if (addr == 0x83) { ch_2_frh = (value & 0xF); } + else if (addr == 0x84) { ch_3_frl = value; } + else if (addr == 0x85) { ch_3_frh = (value & 0xF); } + else if (addr == 0x86) { ch_4_frl = value; } + else if (addr == 0x87) { ch_4_frh = (value & 0xF); } + else if (addr == 0x88) { ch_5_frl = value; } + else if (addr == 0x89) { ch_5_frh = (value & 0xF); } else if (addr == 0x8A) { ch_1_vol = value; } else if (addr == 0x8B) { ch_2_vol = value; } else if (addr == 0x8C) { ch_3_vol = value; } @@ -109,17 +112,17 @@ namespace MSXHawk ch_5_en = (value & 16) == 16; } - if (ch_1_frq == 0) { ch_1_frq = 0x1000; } - if (ch_2_frq == 0) { ch_2_frq = 0x1000; } - if (ch_3_frq == 0) { ch_3_frq = 0x1000; } - if (ch_4_frq == 0) { ch_4_frq = 0x1000; } - if (ch_5_frq == 0) { ch_5_frq = 0x1000; } + ch_1_frq = (ch_1_frl | (ch_1_frh << 8)) + 1; + ch_2_frq = (ch_2_frl | (ch_2_frh << 8)) + 1; + ch_3_frq = (ch_3_frl | (ch_3_frh << 8)) + 1; + ch_4_frq = (ch_4_frl | (ch_4_frh << 8)) + 1; + ch_5_frq = (ch_5_frl | (ch_5_frh << 8)) + 1; - if (ch_1_en) { ch_1_out = (int32_t)page_pntr[ch_1_cnt] * VolumeTable[ch_1_vol]; } else { ch_1_out = 0; } - if (ch_2_en) { ch_2_out = (int32_t)page_pntr[ch_2_cnt + 0x20] * VolumeTable[ch_2_vol]; } else { ch_2_out = 0; } - if (ch_3_en) { ch_3_out = (int32_t)page_pntr[ch_3_cnt + 0x40] * VolumeTable[ch_3_vol]; } else { ch_3_out = 0; } - if (ch_4_en) { ch_4_out = (int32_t)page_pntr[ch_4_cnt + 0x60] * VolumeTable[ch_4_vol]; } else { ch_4_out = 0; } - if (ch_5_en) { ch_5_out = (int32_t)page_pntr[ch_5_cnt + 0x60] * VolumeTable[ch_5_vol]; } else { ch_5_out = 0; } + if (ch_1_en) { ch_1_out = (int32_t)((int8_t)page_pntr[ch_1_cnt]) * VolumeTable[ch_1_vol]; } else { ch_1_out = 0; } + if (ch_2_en) { ch_2_out = (int32_t)((int8_t)page_pntr[ch_2_cnt + 0x20]) * VolumeTable[ch_2_vol]; } else { ch_2_out = 0; } + if (ch_3_en) { ch_3_out = (int32_t)((int8_t)page_pntr[ch_3_cnt + 0x40]) * VolumeTable[ch_3_vol]; } else { ch_3_out = 0; } + if (ch_4_en) { ch_4_out = (int32_t)((int8_t)page_pntr[ch_4_cnt + 0x60]) * VolumeTable[ch_4_vol]; } else { ch_4_out = 0; } + if (ch_5_en) { ch_5_out = (int32_t)((int8_t)page_pntr[ch_5_cnt + 0x60]) * VolumeTable[ch_5_vol]; } else { ch_5_out = 0; } } else { @@ -141,7 +144,7 @@ namespace MSXHawk ch_1_cnt++; ch_1_cnt &= 0x1F; - ch_1_out = (int32_t)page_pntr[ch_1_cnt] * VolumeTable[ch_1_vol]; + ch_1_out = (int32_t)((int8_t)page_pntr[ch_1_cnt]) * VolumeTable[ch_1_vol]; } } @@ -155,7 +158,7 @@ namespace MSXHawk ch_2_cnt++; ch_2_cnt &= 0x1F; - ch_2_out = (int32_t)page_pntr[ch_2_cnt + 0x20] * VolumeTable[ch_2_vol]; + ch_2_out = (int32_t)((int8_t)page_pntr[ch_2_cnt + 0x20]) * VolumeTable[ch_2_vol]; } } @@ -169,7 +172,7 @@ namespace MSXHawk ch_3_cnt++; ch_3_cnt &= 0x1F; - ch_3_out = (int32_t)page_pntr[ch_3_cnt + 0x40] * VolumeTable[ch_3_vol]; + ch_3_out = (int32_t)((int8_t)page_pntr[ch_3_cnt + 0x40]) * VolumeTable[ch_3_vol]; } } @@ -183,7 +186,7 @@ namespace MSXHawk ch_4_cnt++; ch_4_cnt &= 0x1F; - ch_4_out = (int32_t)page_pntr[ch_4_cnt + 0x60] * VolumeTable[ch_4_vol]; + ch_4_out = (int32_t)((int8_t)page_pntr[ch_4_cnt + 0x60]) * VolumeTable[ch_4_vol]; } } @@ -197,7 +200,7 @@ namespace MSXHawk ch_5_cnt++; ch_5_cnt &= 0x1F; - ch_5_out = (int32_t)page_pntr[ch_5_cnt + 0x60] * VolumeTable[ch_5_vol]; + ch_5_out = (int32_t)((int8_t)page_pntr[ch_5_cnt + 0x60]) * VolumeTable[ch_5_vol]; } } } @@ -233,6 +236,18 @@ namespace MSXHawk *saver = ch_4_vol; saver++; *saver = ch_5_vol; saver++; + *saver = ch_1_frl; saver++; + *saver = ch_2_frl; saver++; + *saver = ch_3_frl; saver++; + *saver = ch_4_frl; saver++; + *saver = ch_5_frl; saver++; + + *saver = ch_1_frh; saver++; + *saver = ch_2_frh; saver++; + *saver = ch_3_frh; saver++; + *saver = ch_4_frh; saver++; + *saver = ch_5_frh; saver++; + *saver = (uint8_t)(ch_1_frq & 0xFF); saver++; *saver = (uint8_t)((ch_1_frq >> 8) & 0xFF); saver++; *saver = (uint8_t)(ch_2_frq & 0xFF); saver++; *saver = (uint8_t)((ch_2_frq >> 8) & 0xFF); saver++; *saver = (uint8_t)(ch_3_frq & 0xFF); saver++; *saver = (uint8_t)((ch_3_frq >> 8) & 0xFF); saver++; @@ -271,6 +286,18 @@ namespace MSXHawk ch_4_vol = *loader; loader++; ch_5_vol = *loader; loader++; + ch_1_frl = *loader; loader++; + ch_2_frl = *loader; loader++; + ch_3_frl = *loader; loader++; + ch_4_frl = *loader; loader++; + ch_5_frl = *loader; loader++; + + ch_1_frh = *loader; loader++; + ch_2_frh = *loader; loader++; + ch_3_frh = *loader; loader++; + ch_4_frh = *loader; loader++; + ch_5_frh = *loader; loader++; + ch_1_frq = *loader; loader++; ch_1_frq |= (*loader << 8); loader++; ch_2_frq = *loader; loader++; ch_2_frq |= (*loader << 8); loader++; ch_3_frq = *loader; loader++; ch_3_frq |= (*loader << 8); loader++; @@ -286,11 +313,11 @@ namespace MSXHawk old_sample = *loader; loader++; old_sample |= (*loader << 8); loader++; old_sample |= (*loader << 16); loader++; old_sample |= (*loader << 24); loader++; - if (ch_1_en) { ch_1_out = (int32_t)page_pntr[ch_1_cnt] * VolumeTable[ch_1_vol]; } else { ch_1_out = 0; } - if (ch_2_en) { ch_2_out = (int32_t)page_pntr[ch_2_cnt + 0x20] * VolumeTable[ch_2_vol]; } else { ch_2_out = 0; } - if (ch_3_en) { ch_3_out = (int32_t)page_pntr[ch_3_cnt + 0x40] * VolumeTable[ch_3_vol]; } else { ch_3_out = 0; } - if (ch_4_en) { ch_4_out = (int32_t)page_pntr[ch_4_cnt + 0x60] * VolumeTable[ch_4_vol]; } else { ch_4_out = 0; } - if (ch_5_en) { ch_5_out = (int32_t)page_pntr[ch_5_cnt + 0x60] * VolumeTable[ch_5_vol]; } else { ch_5_out = 0; } + if (ch_1_en) { ch_1_out = (int32_t)((int8_t)page_pntr[ch_1_cnt]) * VolumeTable[ch_1_vol]; } else { ch_1_out = 0; } + if (ch_2_en) { ch_2_out = (int32_t)((int8_t)page_pntr[ch_2_cnt + 0x20]) * VolumeTable[ch_2_vol]; } else { ch_2_out = 0; } + if (ch_3_en) { ch_3_out = (int32_t)((int8_t)page_pntr[ch_3_cnt + 0x40]) * VolumeTable[ch_3_vol]; } else { ch_3_out = 0; } + if (ch_4_en) { ch_4_out = (int32_t)((int8_t)page_pntr[ch_4_cnt + 0x60]) * VolumeTable[ch_4_vol]; } else { ch_4_out = 0; } + if (ch_5_en) { ch_5_out = (int32_t)((int8_t)page_pntr[ch_5_cnt + 0x60]) * VolumeTable[ch_5_vol]; } else { ch_5_out = 0; } return loader; } diff --git a/src/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs b/src/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs index 3f09ddea66..9897071a38 100644 --- a/src/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs +++ b/src/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs @@ -5,7 +5,7 @@ using BizHawk.Emulation.Common; namespace BizHawk.Emulation.Cores.Computers.MSX { - [Core(CoreNames.MSXHawk, "", isReleased: false)] + [Core(CoreNames.MSXHawk, "", isReleased: true)] [ServiceNotApplicable(new[] { typeof(IDriveLight) })] public partial class MSX : IEmulator, IVideoProvider, ISoundProvider, ISaveRam, IInputPollable, IRegionable, ISettable {