MisterTea / MAMEHub

Netplay-capable multi-machine emulator
http://www.mamehub.com
117 stars 29 forks source link

Possible Auditor Bug for CD32 #139

Closed Gitweazle closed 10 years ago

Gitweazle commented 10 years ago

Finally found out why I was unable to audit CD32 games. It seems that it only reads the 1st file you have in your folder. If I remove the 1st file, it will find the 2nd one after re-auditing etc.

If you happen to have a game with an incorrect SHA-1 at the top (like I did), it will not find any games at all, because it won't look beyond the 1st one.

PS: I also noticed when I temporarily placed some games in CD33 folder it would still find one of the games (so now with a total of 2 audited games, one in cd32 and one in cd33). I expected the folder requirements to be stricter.

MisterTea commented 10 years ago

Is this true for all roms or just CHDs?

Can you post your gui_log ?

Gitweazle commented 10 years ago

I did a clean audit with a few games in the folder cd32 and cd33. In the end it picked up 2 games, the 1st ones (alphabetically). I do not see anything special in the log, although an odd out of place entry of alien (MISSING_FILES). I do not have that ROM at all.

I am now converting the PSX XML and will check if I have the same problem with those CHDs and report back.

Here is the log of the audit:

INFO HashScanner.java:266] Clearing old reverse-map INFO HashScanner.java:274] Starting scan.. INFO HashScanner.java:283] Finished reading file headers. INFO HashScanner.java:302] Finished scanning INFO HashScanner.java:304] Committed all changes INFO GameAuditor.java:155] AUDIT: Creating in-memory hash entry map. INFO GameAuditor.java:160] Parsing MAME roms INFO RomParser.java:259] ROM INFO: RomInfo(id:alien, cloneRom:null, parentRom:null, filenames:[], description:Alien: The Arcade Medal Edition, missingReason:MISSING_FILES, chdFilenames:[], softwareLists:[], system:Arcade, interfaceFileMap:{}) INFO CartParser.java:64] Parsing carts for system: 32x (32x.xml) INFO CartParser.java:64] Parsing carts for system: 3do_m2 (3do_m2.xml) INFO CartParser.java:64] Parsing carts for system: a2600 (a2600.xml) INFO CartParser.java:64] Parsing carts for system: a2600p (a2600p.xml) INFO CartParser.java:64] Parsing carts for system: a500 (a500.xml) INFO CartParser.java:64] Parsing carts for system: a5200 (a5200.xml) INFO CartParser.java:64] Parsing carts for system: a7800 (a7800.xml) INFO CartParser.java:64] Parsing carts for system: a800 (a800.xml) INFO CartParser.java:64] Parsing carts for system: abc1600 (abc1600.xml) INFO CartParser.java:64] Parsing carts for system: abc80 (abc80.xml) INFO CartParser.java:64] Parsing carts for system: abc806 (abc806.xml) INFO CartParser.java:64] Parsing carts for system: advision (advision.xml) INFO CartParser.java:64] Parsing carts for system: alice32 (alice32.xml) INFO CartParser.java:64] Parsing carts for system: alice90 (alice90.xml) INFO CartParser.java:64] Parsing carts for system: ampro (ampro.xml) INFO CartParser.java:64] Parsing carts for system: apc (apc.xml) INFO CartParser.java:64] Parsing carts for system: apfm1000 (apfm1000.xml) INFO CartParser.java:64] Parsing carts for system: apogee (apogee.xml) INFO CartParser.java:64] Parsing carts for system: apple1 (apple1.xml) INFO CartParser.java:64] Parsing carts for system: apple2 (apple2.xml) INFO CartParser.java:64] Parsing carts for system: apple2gs (apple2gs.xml) INFO CartParser.java:64] Parsing carts for system: aquarius (aquarius.xml) INFO CartParser.java:64] Parsing carts for system: arcadia (arcadia.xml) INFO CartParser.java:64] Parsing carts for system: astrocde (astrocde.xml) INFO CartParser.java:64] Parsing carts for system: atom (atom.xml) INFO CartParser.java:64] Parsing carts for system: attache (attache.xml) INFO CartParser.java:64] Parsing carts for system: b2m (b2m.xml) INFO CartParser.java:64] Parsing carts for system: bbcbc (bbcbc.xml) INFO CartParser.java:64] Parsing carts for system: bk0010 (bk0010.xml) INFO CartParser.java:64] Parsing carts for system: bw12 (bw12.xml) INFO CartParser.java:64] Parsing carts for system: bw2 (bw2.xml) INFO CartParser.java:64] Parsing carts for system: casloopy (casloopy.xml) INFO CartParser.java:64] Parsing carts for system: cd32 (cd32.xml) INFO CartParser.java:64] Parsing carts for system: cdtv (cdtv.xml) INFO CartParser.java:64] Parsing carts for system: channelf (channelf.xml) INFO CartParser.java:64] Parsing carts for system: coleco (coleco.xml) INFO CartParser.java:64] Parsing carts for system: compis (compis.xml) INFO CartParser.java:64] Parsing carts for system: copera (copera.xml) INFO CartParser.java:64] Parsing carts for system: crvision (crvision.xml) INFO CartParser.java:64] Parsing carts for system: dim68k (dim68k.xml) INFO CartParser.java:64] Parsing carts for system: dps1 (dps1.xml) INFO CartParser.java:64] Parsing carts for system: ec1841 (ec1841.xml) INFO CartParser.java:64] Parsing carts for system: einstein (einstein.xml) INFO CartParser.java:64] Parsing carts for system: fm77av (fm77av.xml) INFO CartParser.java:64] Parsing carts for system: g7400 (g7400.xml) INFO CartParser.java:64] Parsing carts for system: galaxy (galaxy.xml) INFO CartParser.java:64] Parsing carts for system: gameboy (gameboy.xml) INFO CartParser.java:64] Parsing carts for system: gamecom (gamecom.xml) INFO CartParser.java:64] Parsing carts for system: gamegear (gamegear.xml) INFO CartParser.java:64] Parsing carts for system: gamepock (gamepock.xml) INFO CartParser.java:64] Parsing carts for system: gba (gba.xml) INFO CartParser.java:64] Parsing carts for system: gbcolor (gbcolor.xml) INFO CartParser.java:64] Parsing carts for system: gmaster (gmaster.xml) INFO CartParser.java:64] Parsing carts for system: gp32 (gp32.xml) INFO CartParser.java:64] Parsing carts for system: gx4000 (gx4000.xml) INFO CartParser.java:64] Parsing carts for system: ibm5140 (ibm5140.xml) INFO CartParser.java:64] Parsing carts for system: ibm5150 (ibm5150.xml) INFO CartParser.java:64] Parsing carts for system: ibm5170 (ibm5170.xml) INFO CartParser.java:64] Parsing carts for system: interact (interact.xml) INFO CartParser.java:64] Parsing carts for system: intv (intv.xml) INFO CartParser.java:64] Parsing carts for system: intvecs (intvecs.xml) INFO CartParser.java:64] Parsing carts for system: iq128 (iq128.xml) INFO CartParser.java:64] Parsing carts for system: jaguar (jaguar.xml) INFO CartParser.java:64] Parsing carts for system: juicebox (juicebox.xml) INFO CartParser.java:64] Parsing carts for system: kayproii (kayproii.xml) INFO CartParser.java:64] Parsing carts for system: lisa (lisa.xml) INFO CartParser.java:64] Parsing carts for system: lisa2 (lisa2.xml) INFO CartParser.java:64] Parsing carts for system: lviv (lviv.xml) INFO CartParser.java:64] Parsing carts for system: lynx (lynx.xml) INFO CartParser.java:64] Parsing carts for system: m20 (m20.xml) INFO CartParser.java:64] Parsing carts for system: m5 (m5.xml) INFO CartParser.java:64] Parsing carts for system: mbc55x (mbc55x.xml) INFO CartParser.java:64] Parsing carts for system: megacd (megacd.xml) INFO CartParser.java:64] Parsing carts for system: megacdj (megacdj.xml) INFO CartParser.java:64] Parsing carts for system: megadriv (megadriv.xml) INFO CartParser.java:64] Parsing carts for system: megaduck (megaduck.xml) INFO CartParser.java:64] Parsing carts for system: megapc (megapc.xml) INFO CartParser.java:64] Parsing carts for system: mikrosha (mikrosha.xml) INFO CartParser.java:64] Parsing carts for system: misterx (misterx.xml) INFO CartParser.java:64] Parsing carts for system: mpz80 (mpz80.xml) INFO CartParser.java:64] Parsing carts for system: mz2500 (mz2500.xml) INFO CartParser.java:64] Parsing carts for system: n64 (n64.xml) INFO CartParser.java:64] Parsing carts for system: n64dd (n64dd.xml) INFO CartParser.java:64] Parsing carts for system: neocd (neocd.xml) INFO CartParser.java:64] Parsing carts for system: nes (nes.xml) INFO CartParser.java:64] Parsing carts for system: next (next.xml) INFO CartParser.java:64] Parsing carts for system: ngp (ngp.xml) INFO CartParser.java:64] Parsing carts for system: ngpc (ngpc.xml) INFO CartParser.java:64] Parsing carts for system: nimbus (nimbus.xml) INFO CartParser.java:64] Parsing carts for system: odyssey2 (odyssey2.xml) INFO CartParser.java:64] Parsing carts for system: orao (orao.xml) INFO CartParser.java:64] Parsing carts for system: osborne1 (osborne1.xml) INFO CartParser.java:64] Parsing carts for system: pasogo (pasogo.xml) INFO CartParser.java:64] Parsing carts for system: pb2000c (pb2000c.xml) INFO CartParser.java:64] Parsing carts for system: pc1512 (pc1512.xml) INFO CartParser.java:64] Parsing carts for system: pc1640 (pc1640.xml) INFO CartParser.java:64] Parsing carts for system: pc8201 (pc8201.xml) INFO CartParser.java:64] Parsing carts for system: pc88va (pc88va.xml) INFO CartParser.java:64] Parsing carts for system: pce (pce.xml) INFO CartParser.java:64] Parsing carts for system: pcecd (pcecd.xml) INFO CartParser.java:64] Parsing carts for system: pcw16 (pcw16.xml) INFO CartParser.java:64] Parsing carts for system: pico (pico.xml) INFO CartParser.java:64] Parsing carts for system: pippin (pippin.xml) INFO CartParser.java:64] Parsing carts for system: pokemini (pokemini.xml) INFO CartParser.java:64] Parsing carts for system: prof80 (prof80.xml) INFO CartParser.java:64] Parsing carts for system: pv1000 (pv1000.xml) INFO CartParser.java:64] Parsing carts for system: pv2000 (pv2000.xml) INFO CartParser.java:64] Parsing carts for system: pyl601 (pyl601.xml) INFO CartParser.java:64] Parsing carts for system: radio86 (radio86.xml) INFO CartParser.java:64] Parsing carts for system: rainbow (rainbow.xml) INFO CartParser.java:64] Parsing carts for system: rx78 (rx78.xml) INFO CartParser.java:64] Parsing carts for system: sage2 (sage2.xml) INFO CartParser.java:64] Parsing carts for system: saturn (saturn.xml) INFO CartParser.java:64] Parsing carts for system: scv (scv.xml) INFO CartParser.java:64] Parsing carts for system: segacd (segacd.xml) INFO CartParser.java:64] Parsing carts for system: sf7000 (sf7000.xml) INFO CartParser.java:64] Parsing carts for system: sg1000 (sg1000.xml) INFO CartParser.java:64] Parsing carts for system: sgx (sgx.xml) INFO CartParser.java:64] Parsing carts for system: smc777 (smc777.xml) INFO CartParser.java:64] Parsing carts for system: sms (sms.xml) INFO CartParser.java:64] Parsing carts for system: snes (snes.xml) INFO CartParser.java:64] Parsing carts for system: snespal (snespal.xml) INFO CartParser.java:64] Parsing carts for system: socrates (socrates.xml) INFO CartParser.java:64] Parsing carts for system: softbox (softbox.xml) INFO CartParser.java:64] Parsing carts for system: spectrum (spectrum.xml) INFO CartParser.java:64] Parsing carts for system: studio2 (studio2.xml) INFO CartParser.java:64] Parsing carts for system: super6 (super6.xml) INFO CartParser.java:64] Parsing carts for system: supracan (supracan.xml) INFO CartParser.java:64] Parsing carts for system: svision (svision.xml) INFO CartParser.java:64] Parsing carts for system: svmu (svmu.xml) INFO CartParser.java:64] Parsing carts for system: tandy200 (tandy200.xml) INFO CartParser.java:64] Parsing carts for system: tandy2k (tandy2k.xml) INFO CartParser.java:64] Parsing carts for system: tdv2324 (tdv2324.xml) INFO CartParser.java:64] Parsing carts for system: tg16 (tg16.xml) INFO CartParser.java:64] Parsing carts for system: tiki100 (tiki100.xml) INFO CartParser.java:64] Parsing carts for system: trs80m2 (trs80m2.xml) INFO CartParser.java:64] Parsing carts for system: trsm100 (trsm100.xml) INFO CartParser.java:64] Parsing carts for system: tutor (tutor.xml) INFO CartParser.java:64] Parsing carts for system: ut88 (ut88.xml) INFO CartParser.java:64] Parsing carts for system: uzebox (uzebox.xml) INFO CartParser.java:64] Parsing carts for system: v1050 (v1050.xml) INFO CartParser.java:64] Parsing carts for system: vboy (vboy.xml) INFO CartParser.java:64] Parsing carts for system: vc4000 (vc4000.xml) INFO CartParser.java:64] Parsing carts for system: vectrex (vectrex.xml) INFO CartParser.java:64] Parsing carts for system: vg5k (vg5k.xml) INFO CartParser.java:64] Parsing carts for system: vic10 (vic10.xml) INFO CartParser.java:64] Parsing carts for system: vidbrain (vidbrain.xml) INFO CartParser.java:64] Parsing carts for system: vii (vii.xml) INFO CartParser.java:64] Parsing carts for system: vip (vip.xml) INFO CartParser.java:64] Parsing carts for system: visicom (visicom.xml) INFO CartParser.java:64] Parsing carts for system: vixen (vixen.xml) INFO CartParser.java:64] Parsing carts for system: wangpc (wangpc.xml) INFO CartParser.java:64] Parsing carts for system: wicat (wicat.xml) INFO CartParser.java:64] Parsing carts for system: wmbullet (wmbullet.xml) INFO CartParser.java:64] Parsing carts for system: wscolor (wscolor.xml) INFO CartParser.java:64] Parsing carts for system: wswan (wswan.xml) INFO CartParser.java:64] Parsing carts for system: xegs (xegs.xml)

Gitweazle commented 10 years ago

I just tested it with the Playstation. It does something similar, but slightly different. It's very confusing... I'll try to explain what I did.

I made 3 sub-folders in my roms directory, pse psj and psu, and created the respective XML files.

I have no way of telling if this is just on my side. Is there anyone that has more than 1 CHD in the same folder detected for any MESS system?

PS: The games and XMLs work fine if I use CSUME. It detects the shortnames perfectly.

MisterTea commented 10 years ago

Note that CHDs belong in subfolders like this:

c:\Rompath\mychd\mychd.chd

This is why mamehub only looks at the first file in the folder. It's actually looking for a chd with the same name as the folder IIRC.

On Mon, Feb 3, 2014 at 6:51 PM, Gitweazle notifications@github.com wrote:

I just tested on with the Playstation. It does something similar, but slightly different. It's very confusing... I'll try to explain what I did.

I made 3 folders, pse psj and psu.

-

Situation 1: I placed 1 game in psj and 2 games in psu. MAMEHub detects the single game in psj, but not psu.

Situation 2: I placed 2 games in psj and 1 game in psu. Now it detects the single game in psu, but nothing from psj.

I need somebody else to test CHDs with me, because I don't know if this is on my end alone.

Reply to this email directly or view it on GitHubhttps://github.com/MisterTea/MAMEHub/issues/139#issuecomment-34025977 .

Gitweazle commented 10 years ago

Thank you! That's what I was looking for, I'll go test it when I get back :)

It's not ZIP-ed so it has to be in a sub-folder, duh. If it works I will close the thread.

Gitweazle commented 10 years ago

This mostly solved the problem for me. There was still 1 PSX CHD that did not show up even though everything seemed in order. It ran fine through the CSUME command line.

After extracting and recreating it I got it to show up, the filesize changed but the SHA-1 remained the same (according to CHDMAN).

So my question is, how does MAMEHub check the SHA-1 checksum?

MisterTea commented 10 years ago

MAMEHub uses the chd spec to pull out the SHA-1:

https://github.com/MisterTea/MAMEHub/blob/master/Sources/Client/src/com/mamehub/client/audit/HashScanner.java#L348

Bytes 84-104 contain the SHA-1. So these bytes should match what's in the xml.

On Tue, Feb 4, 2014 at 10:02 AM, Gitweazle notifications@github.com wrote:

This mostly solved the problem for me. There was still 1 PSX CHD that did not show up even though everything was in order. It ran fine through the CSUME command line.

After extracting and recreating it I got it to show up, the filesize changed but the SHA-1 remained the same (according to CHDMAN).

So my question is, how does MAMEHub check the SHA-1 checksum?

Reply to this email directly or view it on GitHubhttps://github.com/MisterTea/MAMEHub/issues/139#issuecomment-34088193 .

Gitweazle commented 10 years ago

I had a look at the code and also chd.h used in CHDMAN. It seems that the CHD I downloaded had a V4 header, which starts at 48 in stead of 84.

[ 48] UINT8 sha1[20]; // combined raw+meta SHA1

So I had 2 things going on at the same time, that doesn't help :)

So problems solved, thanks a lot for your time. Closing the thread.