ret = pm_read(p,todo,f);\r
       bytes_read += ret;\r
       p += ret;\r
-      PicoCartLoadProgressCB(bytes_read * 100 / size);\r
+      PicoCartLoadProgressCB(bytes_read * 100LL / size);\r
     }\r
     while (ret > 0);\r
   }\r
 
   // align to bank size. We know ROM loader allocated enough for this\r
   mask = (1 << M68K_MEM_SHIFT) - 1;\r
   rs = (Pico.romsize + mask) & ~mask;\r
+  if (rs > 0x400000) rs = 0x400000; // max cartridge area\r
   cpu68k_map_set(m68k_read8_map,  0x000000, rs - 1, Pico.rom, 0);\r
   cpu68k_map_set(m68k_read16_map, 0x000000, rs - 1, Pico.rom, 0);\r
 \r