Ejemplo n.º 1
0
static int load_extendedkickstart (void)
{
    struct zfile *f;
    int size;

    if (strlen (currprefs.romextfile) == 0)
	return 0;
    f = zfile_open (currprefs.romextfile, "rb");
    if (!f) {
	printf ("No extended Kickstart ROM found");
	return 0;
    }

    zfile_fseek (f, 0, SEEK_END);
    size = zfile_ftell (f);
    if (size > 300000)
	extendedkickmem_size = 524288;
    else
	extendedkickmem_size = 262144;
    zfile_fseek (f, 0, SEEK_SET);

    switch (extromtype ()) {
    case EXTENDED_ROM_CDTV:
	extendedkickmemory = (uae_u8 *) mapped_malloc (extendedkickmem_size, "rom_f0");
	extendedkickmem_bank.baseaddr = (uae_u8 *) extendedkickmemory;
	break;
    case EXTENDED_ROM_CD32:
	extendedkickmemory = (uae_u8 *) mapped_malloc (extendedkickmem_size, "rom_e0");
	extendedkickmem_bank.baseaddr = (uae_u8 *) extendedkickmemory;
	break;
    }
    read_kickstart (f, extendedkickmemory, 524288, 0, 0);
    return 1;
}
Ejemplo n.º 2
0
static int load_kickstart (void)
{
    FILE *f = uae4all_rom_fopen(romfile, "rb");

    if (f == NULL) {
#if defined(AMIGA)||defined(__POS__)
#define USE_UAE_ERSATZ "USE_UAE_ERSATZ"
	if (!getenv (USE_UAE_ERSATZ)) {
	    write_log ("Using current ROM. (create ENV:%s to " "use uae's ROM replacement)\n", USE_UAE_ERSATZ);
	    memcpy (kickmemory, (char *) 0x1000000 - kickmem_size, kickmem_size);
	    kickstart_checksum (kickmemory, kickmem_size);
	    goto chk_sum;
	}
#endif
	return 0;
    }

    if (!read_kickstart (f, kickmemory, kickmem_size, 1, &cloanto_rom))
	return 0;

    return 1;
}
Ejemplo n.º 3
0
static int load_kickstart (void)
{
    struct zfile *f = NULL;
    int i;

    fprintf(stderr,"load_kickstart\n");

    if (currprefs.rom_crc32) {
	    for (i = 0;; i++) {
	        struct romlist *rl = romlist_from_idx (i, ROMTYPE_KICK, 1);
	        if (!rl)
		         break;
	        fprintf(stderr,"rom_crc32 trying idx %d\n",i);
	        if (rl->rd->crc32 == currprefs.rom_crc32)
	        {
	 	               f = zfile_open (rl->path, "rb");
	 	               break;
	        } else {
	        	fprintf(stderr,"rom_crc32 %x != %x\n", rl->rd->crc32, currprefs.rom_crc32);
	        }

	    }
    }
     else
     {
	     f = zfile_open (currprefs.romfile, "rb");
#ifdef __QNXNTO__
	     if(f)
	     {
	       fprintf(stderr,"romfile = %s\n", currprefs.romfile);
	     }
	       else
	     {    /* nothing to lose hunt for 1.2 or 1.3 A500 kickstart ... */
	    	fprintf(stderr,"hunting for a kickstart ...\n");
	    	  for (i = 0;; i++) {
	    		        struct romlist *rl = romlist_from_idx (i, ROMTYPE_KICK, 1);
	    		        if (!rl)
	    			         break;
	    		        /* Since no crc32 was initally set and the romfile is null
	    		         * but we possibly have a match from pre-cached roms lets try
	    		         * kickstart 1.2 or 1.3 i.e A500 as last ditch attempt
	    		         */
	    		        fprintf(stderr,"kickstart rev %d\n", rl->rd->rev);

	    		        if( (rl->rd->rev == 3) || (rl->rd->rev == 4) )
	    		            currprefs.rom_crc32 = rl->rd->crc32;

	    		        if (rl->rd->crc32 == currprefs.rom_crc32)
	    		        {
	    		 	        f = zfile_open (rl->path, "rb");
	    		 	        if(!f)
	    		 	          fprintf(stderr,"open failed for '%s'\n", rl->path);
	    		 	        else
	    		 	        	goto readDaKick;
	    		 	        break;
	    		        }
	          }
	     }
#endif
	     }
/*
    fprintf(stderr,"kick rom open '%s'\n", currprefs.romfile);
    f = zfile_open( currprefs.romfile, "rb");
    if(!f)
    	fprintf(stderr,"zFile_open failed to load %s %s\n". currprefs.romfile, strerror(errno) );
*/

    if (f == NULL) {
    	fprintf(stderr,"\nmemory_init: kickstart failed to open %s\n", currprefs.romfile);

readDaKick:

#if defined (AMIGA)
#define USE_UAE_ERSATZ "USE_UAE_ERSATZ"
	if (!getenv (USE_UAE_ERSATZ)) {
	    printf ("Using current ROM. (create ENV:%s to " "use uae's ROM replacement)\n", USE_UAE_ERSATZ);
	    memcpy (kickmemory, (char *) 0x1000000 - kickmem_size, kickmem_size);
	    kickstart_checksum (kickmemory, kickmem_size);
	    goto chk_sum;
	}
#endif
	return 0;
    }

    if (!read_kickstart (f, kickmemory, kickmem_size, 1, &cloanto_rom))
    {
      fprintf(stderr,"read_kickstart() error");
	  return 0;
    }

#if defined (AMIGA)
  chk_sum:
#endif
    kickstart_version = (kickmemory[12] << 8) | kickmemory[13];

    fprintf(stderr,"kickstart version %d\n", kickstart_version );
    return 1;
}