Exemple #1
0
        private void assembleButton_Click(object sender, EventArgs e)
        {
            string game = GetChosenGame();

            if (textFile == null || binaryFile == null)
            {
                MessageBox.Show("Choose both files");
            }
            else if (!File.Exists(textFile))
            {
                MessageBox.Show("Text file doesn't exist.");
            }
            else if (!Nintenlord.Event_Assembler.Core.Program.CodesLoaded)
            {
                MessageBox.Show("Raws not loaded");
            }
            else
            {
#if DEBUG
                lastMessages = new StringWriter();
                var messageLog = new TextWriterMessageLog(lastMessages);
                Core.Program.Assemble(textFile, binaryFile, game, messageLog);
                PrintAll(messageLog);
#else
                assemblyBackgroundWorker.RunWorkerAsync(Tuple.Create(textFile, binaryFile, game));
#endif
            }
        }
Exemple #2
0
        void MainForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.Alt && (e.KeyCode == Keys.P))
            {
                lastMessages = new StringWriter();
                var messageLog = new TextWriterMessageLog(lastMessages);

                Core.Program.Preprocess(textFile, binaryFile, GetChosenGame(), messageLog);

                PrintAll(messageLog);
            }
        }
Exemple #3
0
        private void disassembleButton_Click(object sender, EventArgs e)
        {
            string          game = GetChosenGame();
            DisassemblyMode mode = GetChosenMode();

            if (textFile == null || binaryFile == null)
            {
                MessageBox.Show("Choose both files");
            }
            else if (!File.Exists(binaryFile))
            {
                MessageBox.Show("ROM file doesn't exist.");
            }
            else if (!Nintenlord.Event_Assembler.Core.Program.CodesLoaded)
            {
                MessageBox.Show("Raws not loaded");
            }
            else
            {
#if DEBUG
                lastMessages = new StringWriter();
                var messageLog = new TextWriterMessageLog(lastMessages);

                Priority priority;
                if (mode == DisassemblyMode.Block || mode == DisassemblyMode.ToEnd)
                {
                    if (!GetPriority(out priority))
                    {
                        return;
                    }
                }
                else
                {
                    priority = Priority.none;
                }

                Core.Program.Disassemble(binaryFile, textFile, game, this.checkBoxEnder.Checked,
                                         mode, (int)OffsetControl.Value, priority, (int)LengthControl.Value, messageLog);

                PrintAll(messageLog);
#else
                disassemblyBackgroundWorker.RunWorkerAsync(Tuple.Create(binaryFile, textFile, game,
                                                                        (int)OffsetControl.Value, (int)LengthControl.Value,
                                                                        mode, this.checkBoxEnder.Checked));
#endif
            }
        }
Exemple #4
0
        private static int Main(string[] args)
        {
            TextWriterMessageLog writerMessageLog = new TextWriterMessageLog(Console.Error);
            StreamWriter         logWriter        = null;

            if ((Program.RunConfig = ReadProgramArguments(args, (ILog)writerMessageLog)) != null)
            {
                if (Program.RunConfig.errorFile != null)
                {
                    logWriter = new StreamWriter(Program.RunConfig.errorFile);
                    writerMessageLog.Writer = logWriter;
                }

                // doc generation does raw loading on its own, load in a standard manner for everything else
                if (Program.RunConfig.execType != ProgramRunConfig.RunExecType.GenDoc)
                {
                    Program.LoadCodes(false);
                }

                switch (Program.RunConfig.execType)
                {
                case ProgramRunConfig.RunExecType.GenDoc:
                    Program.MakeDoc(
                        Program.RunConfig.outputFile,
                        Program.RunConfig.rawsFolder,
                        Program.RunConfig.rawsExtension,
                        Program.RunConfig.isDirectory,
                        Program.RunConfig.docHeader,
                        Program.RunConfig.docFooter
                        );

                    break;

                case ProgramRunConfig.RunExecType.GenPNHighlight:
                    try {
                        HighlightingHelper.GetProgrammersNotepadlanguageDoc(
                            (IEnumerable <EACodeLanguage>)Program.Languages.Values,
                            Program.RunConfig.outputFile
                            );
                    } catch (Exception e) {
                        writerMessageLog.AddError(e.Message);
                    }

                    break;

                case ProgramRunConfig.RunExecType.GenNppHighlight:
                    throw new NotImplementedException();

                case ProgramRunConfig.RunExecType.Disassemble:
                    Program.Disassemble((ILog)writerMessageLog);
                    break;

                case ProgramRunConfig.RunExecType.Assemble:
                    Program.Assemble((ILog)writerMessageLog);
                    break;
                }
            }

            int exitStatus = 0;

            if (writerMessageLog.ErrorCount != 0)
            {
                exitStatus = 1;
            }

            if (Program.RunConfig == null || !Program.RunConfig.quiet)
            {
                writerMessageLog.PrintAll();
            }

            writerMessageLog.Clear();

            if (logWriter != null)
            {
                logWriter.Dispose();
            }

            return(exitStatus);
        }
Exemple #5
0
        public MainForm()
        {
            InitializeComponent();

            this.OffsetControl.Maximum = 0x20000000;
            this.LengthControl.Maximum = 0x20000000;
            this.MinimumSize           = this.Size;
#if DEBUG
            this.KeyPreview = true;
            this.KeyDown   += new KeyEventHandler(MainForm_KeyDown);
#endif
            this.Move += new EventHandler((x, y) => FormHelpers.ClingToScreenEndges(x as Form, 20));
            this.Load += new EventHandler(MainForm_Load);



            this.assemblyBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(
                (sender, args) =>
            {
                lastMessages   = new StringWriter();
                var messageLog = new TextWriterMessageLog(lastMessages);
                var tuple      = args.Argument as Tuple <string, string, string>;
#if DEBUG
                try
                {
#endif
                Core.Program.Assemble(tuple.Item1, tuple.Item2, tuple.Item3, messageLog);
#if DEBUG
            }
                catch (Exception e)
            {
                messageLog.AddError("Exception: " + e.ToString());
            }
#endif
                args.Result = messageLog;
            });
            this.assemblyBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(
                (sender, args) => PrintAll(args.Result as MessageLog));


            this.disassemblyBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(
                (sender, args) =>
            {
                lastMessages   = new StringWriter();
                var messageLog = new TextWriterMessageLog(lastMessages);
                var tuple      = args.Argument as Tuple <string, string, string, int, int, DisassemblyMode, bool>;

                Priority priority;
                if (tuple.Item6 == DisassemblyMode.Block || tuple.Item6 == DisassemblyMode.ToEnd)
                {
                    if (!GetPriority(out priority))
                    {
                        return;
                    }
                }
                else
                {
                    priority = Priority.none;
                }

                try
                {
                    Core.Program.Disassemble(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item7,
                                             tuple.Item6, tuple.Item4, priority, tuple.Item5, messageLog);
                }
                catch (Exception e)
                {
                    messageLog.AddError("Exception: " + e.ToString());
                }

                args.Result = messageLog;
            });
            this.disassemblyBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(
                (sender, args) => PrintAll(args.Result as MessageLog));
        }