Example #1
0
        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;
        }
Example #3
0
        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;
        }