예제 #1
0
파일: Dark Dawn.cs 프로젝트: adituv/gsmagic
        void loadDjinn(TabControl a)        //, TabPage d)
        {
            TabPage       d  = a.SelectedTab;
            Table_Manager tm = new Table_Manager();

            tm.setTable(ram, 0x61AFC, 0x8);
            tm.setPanel(a.SelectedTab);            //tabPage6);
            int pnlx = d.Width / 2 - 150 + 100 + 25;
            int pnly = d.Height / 2 - 125;
            //d.Text = "Forge";
            List <int> items = new List <int>();          // = {5, 6, 7 };

            items.Add(5);
            String[] text = { "" };            // "Processed", "Rusted" };
            //tm.doCombo(pnlx + 200, pnly + 20, Bits.textToBytes(text)
            tm.doTableListbox(Bits.textToBytes(text), Bits.numList(83));
            tm.doNud(pnlx + 200, pnly + 80, 0, 16);
            tm.doNud(pnlx + 200, pnly + 100, 2, 8);
            tm.doNud(pnlx + 200, pnly + 120, 3, 8);
            tm.doNud(pnlx + 200, pnly + 140, 4, 8);
            tm.doNud(pnlx + 200, pnly + 160, 5, 8);
            tm.doNud(pnlx + 200, pnly + 180, 6, 8);
            tm.doNud(pnlx + 200, pnly + 200, 7, 8);
            //tm.loadEntry();
        }
예제 #2
0
파일: Editors.cs 프로젝트: adituv/gsmagic
        //Random Encounters
        private void initRandEnctrs()
        {
            Table_Manager tm = new Table_Manager();

            tm.setTable(test.rom, 0xEDACC, 0x1C);
            tm.setPanel(tabControl1.SelectedTab);            //tabPage8);
            tabPage8.Text = "Encounters";

            List <int> items = new List <int>();

            //ListBox lstb = tm.doTableListbox();
            for (int ind3 = 0; ind3 < 0x6E; ind3++)
            {
                int ind2 = Bits.getInt16(test.rom, 0xEDACC + 4 + ind3 * 0x1C);
                int ind  = Bits.getInt16(test.rom, 0x12CE7C + ind2 * 0x18);
                //StringBuilder str = new StringBuilder(0x200);
                //str.Append((ind3).ToString().PadLeft(3, ' ') + "|");
                //items.Add((ind3).ToString().PadLeft(3, ' ') + "|" + getTextStrShort(1068 + ind));
                items.Add(1068 + ind);
            }
            tm.doTableListbox(txt, items);             //items);

            int pnlx = tabPage8.Width / 2 - 150 + 100 + 25;
            int pnly = tabPage8.Height / 2 - 125;

            tm.doLabel(pnlx, pnly, "Frequency");
            tm.doNud(pnlx, pnly + 20, 0, 16);
            tm.doLabel(pnlx + 200, pnly, "Target Level");
            tm.doNud(pnlx + 200, pnly + 20, 2, 16);


            tm.doLabel(pnlx, pnly + 60, "Group");
            tm.doLabel(pnlx + 200, pnly + 60, "Rate");
            String[] enGroups = new String[660];
            for (int ind2 = 0; ind2 < 660; ind2++)
            {
                enGroups[ind2] = ind2.ToString().PadLeft(3, ' ') + "|" + Bits.getTextShort(txt, 1068 + Bits.getInt16(test.rom, 0x12CE7C + ind2 * 0x18));
            }
            tm.doCombo(pnlx, pnly + 80, Bits.textToBytes(enGroups), Bits.numList(660), 4, 16);
            tm.doCombo(pnlx, pnly + 100, Bits.textToBytes(enGroups), Bits.numList(660), 6, 16);
            tm.doCombo(pnlx, pnly + 120, Bits.textToBytes(enGroups), Bits.numList(660), 8, 16);
            tm.doCombo(pnlx, pnly + 140, Bits.textToBytes(enGroups), Bits.numList(660), 10, 16);
            tm.doCombo(pnlx, pnly + 160, Bits.textToBytes(enGroups), Bits.numList(660), 12, 16);
            tm.doCombo(pnlx, pnly + 180, Bits.textToBytes(enGroups), Bits.numList(660), 14, 16);
            tm.doCombo(pnlx, pnly + 200, Bits.textToBytes(enGroups), Bits.numList(660), 16, 16);
            tm.doCombo(pnlx, pnly + 220, Bits.textToBytes(enGroups), Bits.numList(660), 18, 16);

            tm.doNud(pnlx + 200, pnly + 80, 20, 8);
            tm.doNud(pnlx + 200, pnly + 100, 21, 8);
            tm.doNud(pnlx + 200, pnly + 120, 22, 8);
            tm.doNud(pnlx + 200, pnly + 140, 23, 8);
            tm.doNud(pnlx + 200, pnly + 160, 24, 8);
            tm.doNud(pnlx + 200, pnly + 180, 25, 8);
            tm.doNud(pnlx + 200, pnly + 200, 26, 8);
            tm.doNud(pnlx + 200, pnly + 220, 27, 8);

            //lstb.SelectedIndex = 0;
        }
예제 #3
0
파일: Editors.cs 프로젝트: adituv/gsmagic
        private void texteditor()
        {
            TabPage       tp = tabControl1.SelectedTab;
            int           w  = tp.Width;
            int           h  = tp.Height;
            Table_Manager tm = new Table_Manager();

            tm.setPanel(tp);
            tp.Text = "Text Editor";
            tm.doTableListbox(txt, Bits.numList(12461));
            tm.sl.tb.Bounds = new Rectangle(0, 120, w, 20);
            tm.sl.lv.Bounds = new Rectangle(0, 140, w, h - 140);

            DataTextbox dtb = tm.doNamebox(0, 0, txt, 0);

            dtb.tbx.Bounds    = new Rectangle(0, 0, w - 100, 120);
            dtb.tbx.Multiline = true;
            dtb.bn.Bounds     = new Rectangle(w - 100, 0, 100, 120);
        }
예제 #4
0
파일: eClass.cs 프로젝트: adituv/gsmagic
        public override void load(TabControl tabControl1)
        {
            Table_Manager tm = new Table_Manager();

            tm.setTable(test.rom, 0xC15F4, 0x54);
            tm.setPanel(tabControl1.SelectedTab);            // tabPage5);
            int w = tabControl1.SelectedTab.Width;
            int h = tabControl1.SelectedTab.Height;

            //class Type Labels
            //List<int> ctlbl = new List<int>();
            //Shouldn't need more than 256 types if not doing code hacks to increase the number of classes. (e.g. Class index is saved in 8-bit.)
            //var ctlbl = Enumerable.Repeat(0, 256).ToList(); //If using a List.
            var ct = new int[0x100];

            for (int i = 2915 - 2915; i < 3159 - 2915; i++)
            {
                int n = Bits.getInt32(test.rom, 0xC15F4 + i * 0x54);
                if (n >= 0x100)
                {
                    continue;
                }
                if (ct[n] == 0)                 //{ }
                {
                    ct[n] = 2915 + i;
                }
            }
            var ctstr = new string[0x100];            //new List<String>();//

            for (int i = 0; i < 0x100; i++)           //{ }
            {
                if (ct[i] != 0)
                {
                    ctstr[i] = (i.ToString().PadLeft(3, ' ') + "|" + Bits.getTextShort(txt, ct[i]));
                }
                else
                {
                    ct[i]    = -1;
                    ctstr[i] = i.ToString().PadLeft(3, ' ') + "|";
                }
            }

            //2915
            //List<String> items = new List<String>();
            //for (int i = 2915; i < 3159; i++)
            //{
            //	items.Add((i - 2915).ToString().PadLeft(3, ' ') + "|" + getTextStrShort(i));
            //}
            List <int> items = new List <int>();

            for (int i = 0; i < 3159 - 2915; i++)
            {
                items.Add(2915 + i);
            }
            tm.doTableListbox(txt, items);            // items);

            int pnlx = w / 2 - 200 + 100 + 25;
            int pnly = 20 + 100;            // tabPage8.Height / 2 - 125;

            pnly += 20;
            tm.doNamebox(pnlx, pnly - 30, txt, 2915);

            String[] psyNames = new String[734];
            for (int ind2 = 0; ind2 < 734; ind2++)
            {
                psyNames[ind2] = ind2.ToString().PadLeft(3, ' ') + "|" + Bits.getTextShort(txt, 1447 + ind2);
            }

            Label fi = tm.doLabel(pnlx, pnly, "Class Type");

            //tm.doNud(pnlx + 100, pnly, 0, 32);
            tm.doCombo(pnlx + 100, pnly, txt, ct.ToList(), 0, 32);
            pnly -= 30;
            //fi = tm.doLabel(pnlx, pnly + 60, "Elemental Level Requirements");
            //fi.Width = 500;
            string[] eNames = { "Venus", "Mercury", "Mars", "Jupiter" };
            for (int i = 0; i < 4; i++)
            {
                tm.doLabel(pnlx + i * 100, pnly + 60, eNames[i] + " Lv.");
                tm.doNud(pnlx + i * 100, pnly + 80, 4 + i, 8);
            }

            string[] percents = new string[0x100];
            for (int i = 0; i < 0x100; i++)
            {
                percents[i] = (i * 10) + "%";
            }
            pnlx -= 50;
            tm.doLabel(pnlx, pnly + 200 - 80, "HP:");
            Control combo = tm.doCombo(pnlx + 80, pnly + 200 - 80, Bits.textToBytes(percents), Bits.numList(0x100), 0x8, 8);

            combo.Width = 70;
            tm.doLabel(pnlx, pnly + 200 - 60, "PP:");
            combo       = tm.doCombo(pnlx + 80, pnly + 200 - 60, Bits.textToBytes(percents), Bits.numList(0x100), 0x9, 8);
            combo.Width = 70;

            tm.doLabel(pnlx + 150 + 10, pnly + 200 - 80, "Attack:");
            combo       = tm.doCombo(pnlx + 150 + 80 + 10, pnly + 200 - 80, Bits.textToBytes(percents), Bits.numList(0x100), 0xA, 8);
            combo.Width = 70;
            tm.doLabel(pnlx + 150 + 10, pnly + 200 - 60, "Defense:");
            combo       = tm.doCombo(pnlx + 150 + 80 + 10, pnly + 200 - 60, Bits.textToBytes(percents), Bits.numList(0x100), 0xB, 8);
            combo.Width = 70;

            tm.doLabel(pnlx + 300 + 20, pnly + 200 - 80, "Agility:");
            combo       = tm.doCombo(pnlx + 300 + 80 + 20, pnly + 200 - 80, Bits.textToBytes(percents), Bits.numList(0x100), 0xC, 8);
            combo.Width = 70;
            tm.doLabel(pnlx + 300 + 20, pnly + 200 - 60, "Luck:");
            combo       = tm.doCombo(pnlx + 300 + 80 + 20, pnly + 200 - 60, Bits.textToBytes(percents), Bits.numList(0x100), 0xD, 8);
            combo.Width = 70;

            pnlx += 50;
            tm.doLabel(pnlx - 50, pnly + 200 - 20, "Level");
            tm.doLabel(pnlx + 60 - 50, pnly + 200 - 20, "Ability");
            for (int i = 0; i < 8; i++)
            {
                Control lv = tm.doNud(pnlx - 50, pnly + 200 + i * 20, 0x10 + 2 + i * 4, 8);
                lv.Width = 60;
                tm.doCombo(pnlx + 60 - 50, pnly + 200 + i * 20, Bits.textToBytes(psyNames), Bits.numList(734), 0x10 + 0 + i * 4, 16);
            }
            tm.doLabel(pnlx + 200, pnly + 200 - 20, "Level");
            tm.doLabel(pnlx + 60 + 200, pnly + 200 - 20, "Ability");
            for (int i = 0; i < 8; i++)
            {
                Control lv = tm.doNud(pnlx + 200, pnly + 200 + i * 20, 0x10 + 2 + (8 + i) * 4, 8);
                lv.Width = 60;
                tm.doCombo(pnlx + 60 + 200, pnly + 200 + i * 20, Bits.textToBytes(psyNames), Bits.numList(734), 0x10 + 0 + (8 + i) * 4, 16);
            }
            Label lbl = tm.doLabel(pnlx, pnly + 370, "Effect Weaknesses (+25% chance for non-flat effects.)");

            lbl.Width = 400;
            for (int i = 0; i < 3; i++)
            {
                tm.doNud(pnlx + i * 100, pnly + 390, 0x50 + i, 8);
            }
            pnly = 0;             //pnly -= 110;
            //pnlx += 5;
            //Class Type Chart
            Table_Manager tm2 = new Table_Manager();

            tm2.setTable(test.rom, 0xC6604, 0x40);
            tm2.setPanel(tabControl1.SelectedTab);             //tabPage5);
            for (int i = 0; i < 4; i++)
            {
                tm2.doLabel(pnlx + (i * 115), pnly, eNames[i]);
            }
            for (int j = 0; j < 4; j++)
            {
                tm2.doLabel(pnlx - 70, pnly + j * 20 + 20, eNames[j]);
            }
            pnly += 20;
            //for (int j = 0; j < 4; j++)
            //	for (int i = 0; i < 4; i++)
            //		tm2.doNud(pnlx + (i * 100), pnly + j * 20, (j * 4 + i) * 4, 32);
            for (int j = 0; j < 4; j++)
            {
                for (int i = 0; i < 4; i++)
                {
                    Control ctrl = tm2.doCombo(pnlx + (i * 115), pnly + j * 20, txt, ct.ToList(), (j * 4 + i) * 4, 32);
                    ctrl.Width = 115;
                }
            }
            tm2.loadEntry(null, null);
        }
예제 #5
0
파일: Editors.cs 프로젝트: adituv/gsmagic
        private void initEleTable()
        {
            Table_Manager tm = new Table_Manager();

            tm.setTable(test.rom, 0xC6684, 0x18);
            tm.setPanel(tabControl1.SelectedTab);            //tabPage7);
            tabPage7.Text = "Elemental Data";

            //ListBox lstb = tm.doTableListbox();
            List <int> items = new List <int>();

            //Determine what should go in table's Listbox
            int[] elni = new int[48];
            for (int ind3 = 0; ind3 < 379; ind3++)
            {
                if (elni[test.rom[0xB9E7C + ind3 * 0x4C + 0x2A]] == 0)
                {
                    elni[test.rom[0xB9E7C + ind3 * 0x4C + 0x2A]] = ind3 + 1;
                }
            }
            //Populate the Listbox
            for (int ind3 = 0; ind3 < 48; ind3++)
            {
                if (elni[ind3] == 0)
                {
                    //items.Add((ind3).ToString().PadLeft(3, ' ') + "|");
                    items.Add(-1);
                    continue;
                }
                //items.Add((ind3).ToString().PadLeft(3, ' ') + "|" + getTextStrShort(1068 + elni[ind3]-1));
                items.Add(1068 + elni[ind3] - 1);
            }
            tm.doTableListbox(txt, items);

            int pnlx = tabPage8.Width / 2 - 150 + 25;            // + 100;
            int pnly = tabPage8.Height / 2 - 125;

            Label ae = tm.doLabel(pnlx, pnly, "Attack Element");

            //ae.Width = 200;
            String[] elements = { "Venus", "Mercury", "Mars", "Jupiter", "Neutral" };
            tm.doCombo(pnlx, pnly + 20, Bits.textToBytes(elements), Bits.numList(5), 0, 32);

            tm.doLabel(pnlx + 100, pnly + 60, "Venus");
            tm.doLabel(pnlx + 200, pnly + 60, "Mercury");
            tm.doLabel(pnlx + 300, pnly + 60, "Mars");
            tm.doLabel(pnlx + 400, pnly + 60, "Jupiter");

            tm.doLabel(pnlx, pnly + 80, "Level");
            tm.doLabel(pnlx, pnly + 100, "Power");
            tm.doLabel(pnlx, pnly + 120, "Resist");

            tm.doNud(pnlx + 100, pnly + 80, 4, 8);
            tm.doNud(pnlx + 200, pnly + 80, 5, 8);
            tm.doNud(pnlx + 300, pnly + 80, 6, 8);
            tm.doNud(pnlx + 400, pnly + 80, 7, 8);

            tm.doNud(pnlx + 100, pnly + 100, 8, 16);
            tm.doNud(pnlx + 100, pnly + 120, 10, 16);
            tm.doNud(pnlx + 200, pnly + 100, 12, 16);
            tm.doNud(pnlx + 200, pnly + 120, 14, 16);
            tm.doNud(pnlx + 300, pnly + 100, 16, 16);
            tm.doNud(pnlx + 300, pnly + 120, 18, 16);
            tm.doNud(pnlx + 400, pnly + 100, 20, 16);
            tm.doNud(pnlx + 400, pnly + 120, 22, 16);

            //lstb.SelectedIndex = 0;
        }
예제 #6
0
파일: Editors.cs 프로젝트: adituv/gsmagic
        public void initForgeTable()
        {
            Table_Manager tm = new Table_Manager();

            tm.setTable(test.rom, 0x10CC34, 0x24);
            tm.setPanel(tabControl1.SelectedTab);            //tabPage6);
            tabPage6.Text = "Forge";

            //ListBox lstb = tm.doTableListbox();
            ////607
            int        ind3  = 0;
            List <int> items = new List <int>();

            while (true)             //for (int ind3 = 0; ind3 < 0x14; ind3++)
            {
                //int ind2 = Bits.getInt16(test.rom, 0xEDACC + 4 + ind3 * 0x1C);
                int ind = Bits.getInt16(test.rom, 0x10CC34 + ind3 * 0x24);
                if (ind == 0xFFFF)
                {
                    break;
                }
                //StringBuilder str = new StringBuilder(0x200);
                //str.Append((ind3).ToString().PadLeft(3, ' ') + "|");
                //items.Add((ind3).ToString().PadLeft(3, ' ') + "|" + getTextStrShort(607 + ind));
                items.Add(607 + ind);
                ind3++;
            }
            tm.doTableListbox(txt, items);            // items);
            String[] itemNames = new String[461];
            for (int ind2 = 0; ind2 < 461; ind2++)
            {
                itemNames[ind2] = ind2.ToString().PadLeft(3, ' ') + "|" + Bits.getTextShort(txt, 607 + ind2);
            }
            int   pnlx = tabPage8.Width / 2 - 150 + 100 + 25;
            int   pnly = tabPage8.Height / 2 - 125;
            Label fi   = tm.doLabel(pnlx, pnly, "Forgeable Item");

            //fi.Width = 200;
            tm.doCombo(pnlx, pnly + 20, Bits.textToBytes(itemNames), Bits.numList(461), 0, 16);
            tm.doLabel(pnlx + 200, pnly, "Just text?");
            String[] text = { "Processed", "Rusted" };
            tm.doCombo(pnlx + 200, pnly + 20, Bits.textToBytes(text), Bits.numList(2), 2, 16);
            //fi.Width = 200;
            //tm.doNud(pnlx+ 200, pnly + 20, 2, 16);

            tm.doLabel(pnlx, pnly + 60, "Item");
            tm.doLabel(pnlx + 200, pnly + 60, "Rate");

            tm.doCombo(pnlx, pnly + 80, Bits.textToBytes(itemNames), Bits.numList(461), 4, 16);
            tm.doCombo(pnlx, pnly + 100, Bits.textToBytes(itemNames), Bits.numList(461), 6, 16);
            tm.doCombo(pnlx, pnly + 120, Bits.textToBytes(itemNames), Bits.numList(461), 8, 16);
            tm.doCombo(pnlx, pnly + 140, Bits.textToBytes(itemNames), Bits.numList(461), 10, 16);
            tm.doCombo(pnlx, pnly + 160, Bits.textToBytes(itemNames), Bits.numList(461), 12, 16);
            tm.doCombo(pnlx, pnly + 180, Bits.textToBytes(itemNames), Bits.numList(461), 14, 16);
            tm.doCombo(pnlx, pnly + 200, Bits.textToBytes(itemNames), Bits.numList(461), 16, 16);
            tm.doCombo(pnlx, pnly + 220, Bits.textToBytes(itemNames), Bits.numList(461), 18, 16);

            tm.doNud(pnlx + 200, pnly + 80, 20, 16);
            tm.doNud(pnlx + 200, pnly + 100, 22, 16);
            tm.doNud(pnlx + 200, pnly + 120, 24, 16);
            tm.doNud(pnlx + 200, pnly + 140, 26, 16);
            tm.doNud(pnlx + 200, pnly + 160, 28, 16);
            tm.doNud(pnlx + 200, pnly + 180, 30, 16);
            tm.doNud(pnlx + 200, pnly + 200, 32, 16);
            tm.doNud(pnlx + 200, pnly + 220, 34, 16);

            //lstb.SelectedIndex = 0;
        }
예제 #7
0
파일: Dark Dawn.cs 프로젝트: adituv/gsmagic
        void loadEnemies(TabControl a)
        {
            TabPage       d  = a.SelectedTab;
            Table_Manager tm = new Table_Manager();

            tm.setTable(ram, 0x17726C, 0x58);
            tm.setPanel(a.SelectedTab);          //tabPage6);
            int pnlx = 250;                      //d.Width / 2 - 150 + 50;
            int pnly = 20;                       // d.Height / 2 - 125;
            //d.Text = "Forge";
            List <int> items = new List <int>(); // = {5, 6, 7 };

            items.Add(5);
            String[] text = { "" };            // "Processed", "Rusted" };

            //tm.doCombo(pnlx + 200, pnly + 20, Bits.textToBytes(text)
            //tm.doTableListbox2(Bits.textToBytes(text), Bits.numList(83));
            tm.doTableListbox2(ram, Bits.numList(366, 221));
            String[] lbl = { "ID", "Level", "Type", "HP", "PP", "Attack", "Defense", "Agility", "Luck", "Turns", "HP Regen", "PP Regen" };
            for (int i = 0; i < 12; i++)
            {
                tm.doLabel(pnlx, pnly + 0 + i * 20, lbl[i]);
            }
            tm.doNud(pnlx + 100, pnly + 0, 0, 32);
            tm.doNud(pnlx + 100, pnly + 20, 4, 8);             //Level
            tm.doNud(pnlx + 100, pnly + 40, 5, 8);
            tm.doNud(pnlx + 100, pnly + 60, 6, 16);            //HP
            tm.doNud(pnlx + 100, pnly + 80, 8, 16);            //PP
            tm.doNud(pnlx + 100, pnly + 100, 10, 16);          //Atk
            tm.doNud(pnlx + 100, pnly + 120, 12, 16);          //Def
            tm.doNud(pnlx + 100, pnly + 140, 14, 16);          //Agl
            tm.doNud(pnlx + 100, pnly + 160, 16, 8);           //Lck
            tm.doNud(pnlx + 100, pnly + 180, 17, 8);           //Turns
            tm.doNud(pnlx + 100, pnly + 200, 18, 8);
            tm.doNud(pnlx + 100, pnly + 220, 19, 8);

            //Items
            tm.doLabel(pnlx + 220, pnly, "Item");
            tm.doNud(pnlx + 220, pnly + 20, 20, 16);
            tm.doNud(pnlx + 220, pnly + 40, 22, 16);
            tm.doNud(pnlx + 220, pnly + 60, 24, 16);
            tm.doNud(pnlx + 220, pnly + 80, 26, 16);
            tm.doLabel(pnlx + 340, pnly, "Quantity");
            tm.doNud(pnlx + 340, pnly + 20, 28, 8);
            tm.doNud(pnlx + 340, pnly + 40, 29, 8);
            tm.doNud(pnlx + 340, pnly + 60, 30, 8);
            tm.doNud(pnlx + 340, pnly + 80, 31, 8);

            //Element
            //pnlx = ?
            pnly = 280;
            Label ae = tm.doLabel(pnlx, pnly, "Attack Element");

            //ae.Width = 200;
            String[] elements = { "Venus", "Mercury", "Mars", "Jupiter", "Neutral" };
            tm.doCombo(pnlx, pnly + 20, Bits.textToBytes(elements), Bits.numList(5), 0x20, 8);

            tm.doLabel(pnlx + 100, pnly + 60, "Venus");
            tm.doLabel(pnlx + 200, pnly + 60, "Mercury");
            tm.doLabel(pnlx + 300, pnly + 60, "Mars");
            tm.doLabel(pnlx + 400, pnly + 60, "Jupiter");

            tm.doLabel(pnlx, pnly + 80, "Level");
            tm.doLabel(pnlx, pnly + 100, "Power");
            tm.doLabel(pnlx, pnly + 120, "Resist");

            tm.doNud(pnlx + 100, pnly + 80, 0x21, 8);
            tm.doNud(pnlx + 200, pnly + 80, 0x22, 8);
            tm.doNud(pnlx + 300, pnly + 80, 0x23, 8);
            tm.doNud(pnlx + 400, pnly + 80, 0x24, 8);
            //0x25 = Unused?
            tm.doNud(pnlx + 100, pnly + 100, 0x26, 16);
            tm.doNud(pnlx + 100, pnly + 120, 0x28, 16);
            tm.doNud(pnlx + 200, pnly + 100, 0x2A, 16);
            tm.doNud(pnlx + 200, pnly + 120, 0x2C, 16);
            tm.doNud(pnlx + 300, pnly + 100, 0x2E, 16);
            tm.doNud(pnlx + 300, pnly + 120, 0x30, 16);
            tm.doNud(pnlx + 400, pnly + 100, 0x32, 16);
            tm.doNud(pnlx + 400, pnly + 120, 0x34, 16);
        }