private void GetRomInfo() { Console.Write("ROM name: "); for (int i = 0; i < 16; i++) { char c = (char)rom[0x0134 + i]; if (c == 0) { break; } Console.Write(c); } Console.WriteLine(); CartType cartType = (CartType)rom[0x0147]; string typeString = cartType.ToString(); Console.WriteLine($"ROM type: {typeString.ToUpper()} ({(int)cartType})"); romSize = 0x20 << rom[0x0148]; Console.WriteLine($"ROM size: {romSize}K ({romSize >> 4} banks)"); hasRam = typeString.Contains("Ram"); ramSize = ramSizes[rom[0x0149]]; if (ramSize == 0) { hasRam = false; } Console.WriteLine($"Has RAM: {(hasRam ? $"Yes\nRAM size: {ramSize}K" : "No")}"); hasBattery = typeString.Contains("Battery"); Console.WriteLine($"Has battery: {(hasBattery ? "Yes" : "No")}"); switch (typeString) { case var type when type.Contains("Rom"): ReadByte = ReadByteRomOnly; WriteByte = WriteByteRomOnly; break; case var type when type.Contains("Mbc1"): ReadByte = ReadByteMbc1; WriteByte = WriteByteMbc1; break; case var type when type.Contains("Mbc3"): ReadByte = ReadByteMbc3; WriteByte = WriteByteMbc3; break; default: break; } }
/// <summary> /// Return the rules related to the cart, telling what type of extraction and upload options are valid /// These are general rules related to the cart type, not specific to the client. /// </summary> /// <returns>DashCartDefinition</returns> public static DashCartDefinition GetCartRules(CartType cartType) { //note, this is defined here instead of using an abstract method //so that cart rules can exist for cart types that don't have extractors var rules = new DashCartDefinition{ CartId = (int)cartType, CartValue = cartType.ToString() }; switch (cartType) { case CartType.BigCommerce: rules.CartDisplayName = "BigCommerce"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = false; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.CommerceV3: rules.CartDisplayName = "Commerce V3"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = false; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.MivaMerchant: rules.CartDisplayName = "MivaMerchant"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = true; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.ThreeDCart: rules.CartDisplayName = "3dcart"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = false; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.Volusion: rules.CartDisplayName = "Volusion"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = false; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.Shopify: rules.CartDisplayName = "Shopify"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = true; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.NetSuite: rules.CartDisplayName = "NetSuite"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = true; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.JsonFeed: rules.CartDisplayName = "JsonFeed"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = true; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.XmlFeed: rules.CartDisplayName = "XmlFeed"; rules.HasCartExtractor = true; rules.CanExtractCatalog = true; rules.CanExtractAllSales = true; rules.CanExtractSalesUpdate = true; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; case CartType.TabbedFeed: case CartType.osCommerce: case CartType.Magento: case CartType.PrestaShop: case CartType.WebsitePipeline: case CartType.Other: default: rules.CartDisplayName = cartType.ToString(); rules.HasCartExtractor = false; rules.CanExtractCatalog = false; rules.CanExtractAllSales = false; rules.CanExtractSalesUpdate = false; rules.HasManualUpload = true; rules.HasManualUploadLink = false; break; } return rules; }
static Cart New(BinaryReader rom, CartType cartType) { Cart c; switch (cartType) { case CartType.A2K: c = new CartA2K(rom); break; case CartType.A4K: c = new CartA4K(rom); break; case CartType.A8K: c = new CartA8K(rom); break; case CartType.A8KR: c = new CartA8KR(rom); break; case CartType.A16K: c = new CartA16K(rom); break; case CartType.A16KR: c = new CartA16KR(rom); break; case CartType.DC8K: c = new CartDC8K(rom); break; case CartType.PB8K: c = new CartPB8K(rom); break; case CartType.TV8K: c = new CartTV8K(rom); break; case CartType.CBS12K: c = new CartCBS12K(rom); break; case CartType.A32K: c = new CartA32K(rom); break; case CartType.A32KR: c = new CartA32KR(rom); break; case CartType.MN16K: c = new CartMN16K(rom); break; case CartType.DPC: c = new CartDPC(rom); break; case CartType.A7808: c = new Cart7808(rom); break; case CartType.A7816: c = new Cart7816(rom); break; case CartType.A7832P: case CartType.A7832: c = new Cart7832(rom); break; case CartType.A7848: c = new Cart7848(rom); break; case CartType.A78SGP: case CartType.A78SG: c = new Cart78SG(rom, false); break; case CartType.A78SGR: c = new Cart78SG(rom, true); break; case CartType.A78S9: c = new Cart78S9(rom); break; case CartType.A78S4: c = new Cart78S4(rom, false); break; case CartType.A78S4R: c = new Cart78S4(rom, true); break; case CartType.A78AB: c = new Cart78AB(rom); break; case CartType.A78AC: c = new Cart78AC(rom); break; default: throw new Exception("Unexpected CartType: " + cartType.ToString()); } return c; }
public XElement ReadCartRules(CartType cartType) { //TODO: define rules to read files uploaded from osCommerce if (cartType.Equals(CartType.osCommerce) || cartType.Equals(CartType.Other)) return null; XElement cartRules; lock (_cartRules) { if (!_cartRules.TryGetValue(cartType, out cartRules)) { var path = ""; try { path = DataPath.Instance.Root + cartType.ToString() + "Rules.xml"; cartRules = XElement.Load(path); if (!cartRules.IsEmpty) _cartRules.Add(cartType, cartRules); } catch (Exception ex) { if (BoostLog.Instance != null) BoostLog.Instance.WriteEntry(EventLogEntryType.Error, "Error reading CartRules from " + path, ex, ""); } } } return cartRules; }