Previous 199869 Revisions Next

r20862 Saturday 9th February, 2013 at 12:39:33 UTC by Oliver Stöneberg
(MESS) fixed thomson.c softlist cart loading (nw)
[src/mess/machine]thomson.c

trunk/src/mess/machine/thomson.c
r20861r20862
403403{
404404   int i,j;
405405   UINT8* pos = image.device().machine().root_device().memregion("maincpu" )->base() + 0x10000;
406   offs_t size = image.length();
406   offs_t size;
407407   char name[129];
408408
409   if (image.software_entry() == NULL)
410      size = image.length();
411   else
412      size = image.get_software_region_length("rom");
413
409414   /* get size & number of 16-KB banks */
410415   if ( size <= 0x04000 )
411416      thom_cart_nb_banks = 1;
r20861r20862
415420      thom_cart_nb_banks = 4;
416421   else
417422   {
418      logerror( "to7_cartridge_load: invalid cartridge size %i\n", size );
423      astring errmsg;
424      errmsg.printf("Invalid cartridge size %u", size);
425      image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.cstr());
419426      return IMAGE_INIT_FAIL;
420427   }
421428
422   if ( image.fread( pos, size ) != size )
429   if (image.software_entry() == NULL)
423430   {
424      logerror( "to7_cartridge_load: read error\n" );
425      return IMAGE_INIT_FAIL;
431      if ( image.fread( pos, size ) != size )
432      {
433         image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Read error");
434         return IMAGE_INIT_FAIL;
435      }
426436   }
437   else
438   {
439      memcpy(pos, image.get_software_region("rom"), size);
440   }
427441
428442   /* extract name */
429443   for ( i = 0; i < size && pos[i] != ' '; i++ );
r20861r20862
19451959DEVICE_IMAGE_LOAD_MEMBER( thomson_state, mo5_cartridge )
19461960{
19471961   UINT8* pos = image.device().machine().root_device().memregion("maincpu")->base() + 0x10000;
1948   UINT64 size = image.length();
1962   UINT64 size;
19491963   int i,j;
19501964   char name[129];
19511965
1966   if (image.software_entry() == NULL)
1967      size = image.length();
1968   else
1969      size = image.get_software_region_length("rom");
1970
19521971   /* get size & number of 16-KB banks */
19531972   if ( size > 32 && size <= 0x04000 )
19541973      thom_cart_nb_banks = 1;
r20861r20862
19581977      thom_cart_nb_banks = 4;
19591978   else
19601979   {
1961      logerror( "mo5_cartridge_load: invalid cartridge size %u\n", (unsigned) size );
1980      astring errmsg;
1981      errmsg.printf("Invalid cartridge size "I64FMT, size);
1982      image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.cstr());
19621983      return IMAGE_INIT_FAIL;
19631984   }
19641985
1965   if ( image.fread(pos, size ) != size )
1986   if (image.software_entry() == NULL)
19661987   {
1967      logerror( "mo5_cartridge_load: read error\n" );
1968      return IMAGE_INIT_FAIL;
1988      if ( image.fread(pos, size ) != size )
1989      {
1990         image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Read error");
1991         return IMAGE_INIT_FAIL;
1992      }
19691993   }
1994   else
1995   {
1996      memcpy(pos, image.get_software_region("rom"), size);
1997   }
19701998
19711999   /* extract name */
19722000   i = size - 32;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team