Previous 15994 Revisions Next

r10092 Tuesday 18th January, 2011 at 18:45:58 UTC by Fabio Priuli
Added "part_id" features to multidisc games of cdi.xml and added code to use them effectively in the Internal File Manager
[hash]cdi.xml
[src/emu]softlist.c softlist.h uiimage.c

hash/cdi.xml
r10091r10092
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="cdi" description="CDI CD-ROM list">
3<softwarelist name="cdi" description="CD-i CD-ROM list">
44
5   <software name="frogfeas">
6      <description>Frog Feast (Demo)</description>
7      <year>2000</year>
8      <publisher>&lt;unknown&gt;</publisher>
9      <part name="cdrom" interface="cdi_cdrom">
10         <diskarea name="cdrom">
11            <disk name="frog feast" sha1="1ab1eb988458c39e171c8704176617df5730f56e"/>
12         </diskarea>
13      </part>
14   </software>
5<software name="frogfeas">
6   <description>Frog Feast (Demo)</description>
7   <year>2000</year>
8   <publisher>&lt;unknown&gt;</publisher>
9   <part name="cdrom" interface="cdi_cdrom">
10   <diskarea name="cdrom">
11      <disk name="frog feast" sha1="1ab1eb988458c39e171c8704176617df5730f56e"/>
12   </diskarea>
13   </part>
14</software>
1515
1616
17 <software name="3rddegre">
17<software name="3rddegre">
1818   <description>3rd Degree (USA)</description>
1919   <year>1993</year>
2020   <publisher>Philips</publisher>
r10091r10092
2525   </part>
2626</software>
2727 
28 <software name="7th1a">
28<software name="7th1a">
2929   <description>The 7th Guest (Euro)[DVC][8111033V113 50404169 01]</description>
3030   <year>1994</year>
3131   <publisher>Philips</publisher>
3232   <part name="cdrom1" interface="cdi_cdrom">
33      <feature name="part_id" value="The Game" />
3334      <diskarea name="cdrom">
3435         <disk name="7th guest, the (1994)(philips)(eu)(disc 1 of 2)[!][the game][dvc][8111033v113 50404169 01]" sha1="f08256a2719f0f4f3010cb95d3f8e2c3ff63d0fe"/>
3536      </diskarea>
3637   </part>
3738    <part name="cdrom2" interface="cdi_cdrom">
39      <feature name="part_id" value="The Music" />
3840      <diskarea name="cdrom">
3941         <disk name="7th guest, the (1994)(philips)(eu)(disc 2 of 2)[!][the music, die musik][cd-audio]" sha1="baa165adf76678353cd9d97bd8e7d09d80af1914"/>
4042      </diskarea>
r10091r10092
4648   <year>1994</year>
4749   <publisher>Philips</publisher>
4850   <part name="cdrom1" interface="cdi_cdrom">
51      <feature name="part_id" value="The Game" />
4952      <diskarea name="cdrom">
5053         <disk name="7th guest, the (1994)(philips)(eu)(disc 1 of 2)[!][the game][dvc][8110033v113 50404169 02]" sha1="d1ef3e8c9f05f6d928cb459c116e422b391d6758"/>
5154      </diskarea>
5255   </part>
5356   <part name="cdrom2" interface="cdi_cdrom">
57      <feature name="part_id" value="The Music" />
5458      <diskarea name="cdrom">
5559         <disk name="7th guest, the (1994)(philips)(eu)(disc 2 of 2)[!][the music, die musik][cd-audio]" sha1="baa165adf76678353cd9d97bd8e7d09d80af1914"/>
5660      </diskarea>
r10091r10092
6266   <year>1994</year>
6367   <publisher>Philips</publisher>
6468   <part name="cdrom1" interface="cdi_cdrom">
69      <feature name="part_id" value="Das Spiel" />
6570      <diskarea name="cdrom">
6671         <disk name="7th guest, the (1994)(philips)(de)(disc 1 of 2)[!][das spiel][dvc]" sha1="d73d783fc580e927653077afa4867d3316f77674"/>
6772      </diskarea>
6873   </part>
6974   <part name="cdrom2" interface="cdi_cdrom">
75      <feature name="part_id" value="Die Musik" />
7076      <diskarea name="cdrom">
7177         <disk name="7th guest, the (1994)(philips)(eu)(disc 2 of 2)[!][the music, die musik][cd-audio]" sha1="baa165adf76678353cd9d97bd8e7d09d80af1914"/>
7278      </diskarea>
r10091r10092
7884   <year>1994</year>
7985   <publisher>Philips</publisher>
8086   <part name="cdrom1" interface="cdi_cdrom">
87      <feature name="part_id" value="Le Jeu" />
8188      <diskarea name="cdrom">
8289         <disk name="7th guest, the (1994)(philips)(fr)(disc 1 of 2)[le jeu][dvc]" sha1="5fee7d8eac3e6fa3c94e8e753622d115c27bc3d4"/>
8390      </diskarea>
8491   </part>
8592   <part name="cdrom2" interface="cdi_cdrom">
93      <feature name="part_id" value="The Music (?)" />
8694      <diskarea name="cdrom">
8795         <disk name="7th guest, the (1994)(philips)(eu)(disc 2 of 2)[!][the music, die musik][cd-audio]" sha1="baa165adf76678353cd9d97bd8e7d09d80af1914"/>
8896      </diskarea>
r10091r10092
13981406   <year>1995</year>
13991407   <publisher>Philips</publisher>
14001408   <part name="cdrom1" interface="cdi_cdrom">
1409      <feature name="part_id" value="The Game" />
14011410      <diskarea name="cdrom">
14021411         <disk name="marco polo (1995)(philips)(eu)(disc 1 of 2)[!][the game]" sha1="f785d70e556a38b0e2ab6d9bb300d8df63011e97"/>
14031412      </diskarea>
14041413   </part>
14051414   <part name="cdrom2" interface="cdi_cdrom">
1415      <feature name="part_id" value="The Documentation" />
14061416      <diskarea name="cdrom">
14071417         <disk name="marco polo (1995)(philips)(eu)(disc 2 of 2)[!][the documentation]" sha1="6c31873f8f3898ab8e44d03bf0a1485000f9018a"/>
14081418      </diskarea>
r10091r10092
14141424   <year>1995</year>
14151425   <publisher>Philips</publisher>
14161426   <part name="cdrom1" interface="cdi_cdrom">
1427      <feature name="part_id" value="Le Jeu" />
14171428      <diskarea name="cdrom">
14181429         <disk name="marco polo (1995)(philips)(fr)(disc 1 of 2)[le jeu]" sha1="63549bc7398028e80c83aa3f2c03d60ab582ec38"/>
14191430      </diskarea>
14201431   </part>
14211432   <part name="cdrom2" interface="cdi_cdrom">
1433      <feature name="part_id" value="La Documentation" />
14221434      <diskarea name="cdrom">
14231435         <disk name="marco polo (1995)(philips)(fr)(disc 2 of 2)[la documentation]" sha1="d3e7164f28869198076792ad9ea2019b9ba7a1f1"/>
14241436      </diskarea>
r10091r10092
19691981   <year>1995</year>
19701982   <publisher>Philips</publisher>
19711983   <part name="cdrom1" interface="cdi_cdrom">
1984      <feature name="part_id" value="The Game" />
19721985      <diskarea name="cdrom">
19731986         <disk name="thunder in paradise (1995)(philips)(eu)(disc 1 of 2)[!][the game][dvc]" sha1="8e4844ff6f3aabfb4520110475811875009e3808"/>
19741987      </diskarea>
19751988   </part>
19761989   <part name="cdrom2" interface="cdi_cdrom">
1990      <feature name="part_id" value="The Episode" />
19771991      <diskarea name="cdrom">
19781992         <disk name="thunder in paradise (1995)(philips)(eu)(disc 2 of 2)[!][the episode][dvc]" sha1="39b0a2825d6254095a3a97649b0bcc52cabd8f1b"/>
19791993      </diskarea>
r10091r10092
19851999   <year>1995</year>
19862000   <publisher>Philips</publisher>
19872001   <part name="cdrom1" interface="cdi_cdrom">
2002      <feature name="part_id" value="The Game" />
19882003      <diskarea name="cdrom">
19892004         <disk name="thunder in paradise (1995)(philips)(us)(disc 1 of 2)[!][the game][dvc]" sha1="c3915a61ad43c43a9105ac0c271ac431b8d3d4b2"/>
19902005      </diskarea>
19912006   </part>
19922007   <part name="cdrom2" interface="cdi_cdrom">
2008      <feature name="part_id" value="The Episode" />
19932009      <diskarea name="cdrom">
19942010         <disk name="thunder in paradise (1995)(philips)(us)(disc 2 of 2)[!][the episode][dvc]" sha1="27c8cf91919c286a0e98e7d63ca0e70e26e56edd"/>
19952011      </diskarea>
r10091r10092
20012017   <year>1995</year>
20022018   <publisher>Philips</publisher>
20032019   <part name="cdrom1" interface="cdi_cdrom">
2020      <feature name="part_id" value="Das Spiel" />
20042021      <diskarea name="cdrom">
20052022         <disk name="thunder in paradise (1996)(philips)(de)(disc 1 of 2)[das spiel][dvc]" sha1="f90a4dc07c7571c2680426228de4706aab9c204c"/>
20062023      </diskarea>
20072024   </part>
20082025   <!-- Is this correct as disc 2? -->
20092026   <part name="cdrom2" interface="cdi_cdrom">
2027      <feature name="part_id" value="The Episode (?)" />
20102028      <diskarea name="cdrom">
20112029         <disk name="thunder in paradise (1995)(philips)(eu)(disc 2 of 2)[!][the episode][dvc]" sha1="39b0a2825d6254095a3a97649b0bcc52cabd8f1b"/>
20122030      </diskarea>
r10091r10092
41984216   </part>
41994217</software>
42004218
4219<!-- TODO: check if the part_id used are 'names' for the disk, or anything else... -->
42014220<software name="help1">
42024221   <description>Help! Opleiding Bedrijfshulpverlener voor de Supermarkt (Ned)</description>
42034222   <year>1996</year>
42044223   <publisher>&lt;unknown&gt;</publisher>
42054224   <part name="cdrom1" interface="cdi_cdrom">
4225      <feature name="part_id" value="Inleiding Ehbo2 Toets" />
42064226      <diskarea name="cdrom">
42074227         <disk name="help! opleiding bedrijfshulpverlener voor de supermarkt (1996)(-)(nl)(disc 1 of 3)[inleiding ehbo2 toets]" sha1="2371b2fda7d55d30f92e040d1420dd21cd8a4fd5"/>
42084228      </diskarea>
42094229   </part>
42104230   <part name="cdrom2" interface="cdi_cdrom">
4231      <feature name="part_id" value="Ehbo1" />
42114232      <diskarea name="cdrom">
42124233         <disk name="help! opleiding bedrijfshulpverlener voor de supermarkt (1996)(-)(nl)(disc 2 of 3)[ehbo1]" sha1="9de2182d95a4447e3060737a3044b7da6d9a5813"/>
42134234      </diskarea>
42144235   </part>
42154236   <part name="cdrom3" interface="cdi_cdrom">
4237      <feature name="part_id" value="Brand Ontruiming" />
42164238      <diskarea name="cdrom">
42174239         <disk name="help! opleiding bedrijfshulpverlener voor de supermarkt (1996)(-)(nl)(disc 3 of 3)[brand ontruiming]" sha1="6db47cfd5fc307bbd64543b45e01b8c915e55aea"/>
42184240      </diskarea>
r10091r10092
45144536   <year>1995</year>
45154537   <publisher>Philips</publisher>
45164538   <part name="cdrom1" interface="cdi_cdrom">
4539      <feature name="part_id" value="Journal Interactif" />
45174540      <diskarea name="cdrom">
45184541         <disk name="journal interactif '94 et le jeu des stars de l'info, le (1995)(philips)(fr)(disc 1 of 2)[journal interactif][dvc]" sha1="e8135f48058dcb4be1aa8c9287b391ad500e4f3d"/>
45194542      </diskarea>
45204543   </part>
45214544   <part name="cdrom2" interface="cdi_cdrom">
4545      <feature name="part_id" value="Jeu des Stars de l'Info" />
45224546      <diskarea name="cdrom">
45234547         <disk name="journal interactif '94 et le jeu des stars de l'info, le (1995)(philips)(fr)(disc 2 of 2)[jeu des stars de l'info][dvc]" sha1="00c64bda26559c4acb08c3abc108e3eeaa078deb"/>
45244548      </diskarea>
r10091r10092
45304554   <year>1995</year>
45314555   <publisher>Philips</publisher>
45324556   <part name="cdrom1" interface="cdi_cdrom">
4557      <feature name="part_id" value="Journal Interactif" />
45334558      <diskarea name="cdrom">
45344559         <disk name="journal interactif 1995 et le jeu des stars de l'info, le (1995)(philips)(fr)(disc 1 of 2)[journal interactif][dvc]" sha1="8063d3cbf65f1709e24befe8cd8d16537ace0c20"/>
45354560      </diskarea>
45364561   </part>
45374562   <part name="cdrom2" interface="cdi_cdrom">
4563      <feature name="part_id" value="Jeu des Stars de l'Info" />
45384564      <diskarea name="cdrom">
45394565         <disk name="journal interactif 1995 et le jeu des stars de l'info, le (1995)(philips)(fr)(disc 2 of 2)[jeu des stars de l'info][dvc]" sha1="64e65e371a29e245b4c7a2a2c9a0747d27441669"/>
45404566      </diskarea>
r10091r10092
47594785      </diskarea>
47604786   </part>
47614787   <part name="cdrom3" interface="cdi_cdrom">
4788      <feature name="part_id" value="Guided Tour" />
47624789      <diskarea name="cdrom">
47634790         <disk name="language director - deutsch level 1 (1993)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="19464492c78417d1201b55aaaba6ed83eff06708"/>
47644791      </diskarea>
r10091r10092
47804807      </diskarea>
47814808   </part>
47824809   <part name="cdrom3" interface="cdi_cdrom">
4810      <feature name="part_id" value="Guided Tour" />
47834811      <diskarea name="cdrom">
47844812         <disk name="language director - deutsch level 2 (1993)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="1d91d00c29b47a71fbc56bd55ce24875affcc8de"/>
47854813      </diskarea>
r10091r10092
48014829      </diskarea>
48024830   </part>
48034831   <part name="cdrom3" interface="cdi_cdrom">
4832      <feature name="part_id" value="Guided Tour" />
48044833      <diskarea name="cdrom">
48054834         <disk name="language director - deutsch level 3 (1994)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="9fd222a532b93e0efc7b17c0567f808ff0854e7e"/>
48064835      </diskarea>
r10091r10092
48224851      </diskarea>
48234852   </part>
48244853   <part name="cdrom3" interface="cdi_cdrom">
4854      <feature name="part_id" value="Guided Tour" />
48254855      <diskarea name="cdrom">
48264856         <disk name="language director - english level 1 (1993)(philips)(eu)(disc 3 of 3)[!][guided tour]" sha1="2a7e30728368606b5112595e892fc0710ac9523d"/>
48274857      </diskarea>
r10091r10092
48434873      </diskarea>
48444874   </part>
48454875   <part name="cdrom3" interface="cdi_cdrom">
4876      <feature name="part_id" value="Guided Tour" />
48464877      <diskarea name="cdrom">
48474878         <disk name="language director - english level 2 (1993)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="f49f517856c3518572f3dc4e04bc39d867a6d999"/>
48484879      </diskarea>
r10091r10092
48644895      </diskarea>
48654896   </part>
48664897   <part name="cdrom3" interface="cdi_cdrom">
4898      <feature name="part_id" value="Guided Tour" />
48674899      <diskarea name="cdrom">
48684900         <disk name="language director - espanol level 1 (1994)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="5d121adc6ab5ba127fd5019b76028e734127c101"/>
48694901      </diskarea>
r10091r10092
48854917      </diskarea>
48864918   </part>
48874919   <part name="cdrom3" interface="cdi_cdrom">
4920      <feature name="part_id" value="Guided Tour" />
48884921      <diskarea name="cdrom">
48894922         <disk name="language director - francais level 1 (1993)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="c41243f2a2232b2844d7e85168d9d33410f16df4"/>
48904923      </diskarea>
r10091r10092
49064939      </diskarea>
49074940   </part>
49084941   <part name="cdrom3" interface="cdi_cdrom">
4942      <feature name="part_id" value="Guided Tour" />
49094943      <diskarea name="cdrom">
49104944         <disk name="language director - francais level 2 (1993)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="e1f50f6beda8adc53f885f46496caf169ef2ed3e"/>
49114945      </diskarea>
r10091r10092
49274961      </diskarea>
49284962   </part>
49294963   <part name="cdrom3" interface="cdi_cdrom">
4964      <feature name="part_id" value="Guided Tour" />
49304965      <diskarea name="cdrom">
49314966         <disk name="language director - francais level 3 (1994)(philips)(eu)(disc 3 of 3)[guided tour]" sha1="7e3a7b1b204c3b2134681c5f2530336ce0cb73e3"/>
49324967      </diskarea>
src/emu/uiimage.c
r10091r10092
918918      {
919919         tmp_name.cpy(image->basename());
920920
921         /* the image has been loaded through softlist, also show the loaded part */
921         /* if the image has been loaded through softlist, also show the loaded part */
922922         if (image->part_entry() != NULL)
923923         {
924924            const software_part *tmp = image->part_entry();
r10091r10092
926926            {
927927               tmp_name.cat(" (");
928928               tmp_name.cat(tmp->name);
929               /* also check if this part has a specific part_id (e.g. "Map Disc", "Bonus Disc", etc.), and in case display it */
930               if (image->get_feature("part_id") != NULL)
931               {
932                  tmp_name.cat(": ");
933                  tmp_name.cat(image->get_feature("part_id"));
934               }
929935               tmp_name.cat(")");
930936            }
931937         }
src/emu/softlist.c
r10091r10092
12571257   return part;
12581258}
12591259
1260
12611260/*-------------------------------------------------
12621261    load_software_part
12631262
r10091r10092
15161515}
15171516
15181517
1518/*-------------------------------------------------
1519    software_part_get_feature
1520 -------------------------------------------------*/
1521
1522const char *software_part_get_feature(software_part *part, const char *feature_name)
1523{
1524   feature_list *feature;
1525   
1526   if (part == NULL)
1527      return NULL;
1528   
1529   for (feature = part->featurelist; feature; feature = feature->next)
1530   {
1531      if (!strcmp(feature->name, feature_name))
1532         return feature->value;
1533   }
1534   
1535   return NULL;
1536   
1537}
1538
1539
15191540/***************************************************************************
15201541    DEVICE INTERFACE
15211542***************************************************************************/
r10091r10092
17641785            if (strcmp(interface, swpart->interface_) == 0)
17651786            {
17661787               software_part_state *entry = (software_part_state *) ui_menu_pool_alloc(menu, sizeof(*entry));
1767               entry->part_name = ui_menu_pool_strdup(menu, swpart->name);
1788               // check if the available parts have specific part_id to be displayed (e.g. "Map Disc", "Bonus Disc", etc.)
1789               // if not, we simply display "part_name"; if yes we display "part_name (part_id)"
1790               astring menu_part_name(swpart->name);
1791               if (software_part_get_feature(swpart, "part_id") != NULL)
1792               {
1793                  menu_part_name.cat(" (");
1794                  menu_part_name.cat(software_part_get_feature(swpart, "part_id"));
1795                  menu_part_name.cat(")");
1796               }
1797               entry->part_name = ui_menu_pool_strdup(menu, swpart->name);   // part_name is later used to build up the filename to load, so we use swpart->name!
17681798               entry->interface = ui_menu_pool_strdup(menu, swpart->interface_);
1769               ui_menu_item_append(menu, info->shortname, swpart->name, 0, entry);
1799               ui_menu_item_append(menu, info->shortname, menu_part_name.cstr(), 0, entry);
17701800            }
17711801         }
17721802      }
src/emu/softlist.h
r10091r10092
6767/* helpers */
6868const char *software_get_clone(char *swlist, const char *swname);
6969UINT32 software_get_support(char *swlist, const char *swname);
70const char *software_part_get_feature(software_part *part, const char *feature_name);
7071
7172bool load_software_part(device_image_interface *image, const char *path, software_info **sw_info, software_part **sw_part, char **full_sw_name);
7273

Previous 15994 Revisions Next


© 1998-2018 The MESS Team