System.NullReferenceException: Object reference not set to an instance of an object. at Latenite.LateniteIDE.HelpItemCombo_SelectedIndexChanged(Object sender, EventArgs e) at Latenite.LateniteIDE.ProjectAndHelpTabs_SelectedIndexChanged_1(Object sender, EventArgs e) at System.Windows.Forms.TabControl.OnSelectedIndexChanged(EventArgs e) at System.Windows.Forms.TabControl.WmSelChange() at System.Windows.Forms.TabControl.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

*: occurs when switching from help to project tab when the help file is incomplete/broken, but still (no offense but it should be handled, shouldn't it?)
edit: why does tab changing change the selected index anyway?

IIRC it's in an attempt to fix a bug with the ActiveX IE wrapper, where it would mysteriously undock itself from the application window and appear at (0,0) on the user's desktop. It removes and recreates the control when switching tabs.

I thought you might be interested in an interface to wabbitemu I built into a DLL. Call calc_draw(calc, HDC) and it will draw you a color calc screen with the nice pixel filter applied. Cool! Currently you can also send it files and press keys.

Besides the obvious calc_mem_read and calc_mem_write functions an interesting question is what's the best way to communicate the state of the calc. I am thinking filling simple dummy structs with the information requested will be the best way.

This should give us an easy way to create VB or C# front ends to a C calculator core.

How might you intend on dealing with, say, breakpoints? I suppose a callback could be triggered by the emulator, which would be handled by the front-end.

If you will indeed expose methods to retrieve and alter the emulator state, it would make sense to swap out PindurTI from the current Brass 3 debugger (which itself is very badly written - my front end, not PindurTI!)

Alright, let's give this a try. Instead of a DLL I'm going to make it an out of process COM object that you should be able to access when Wabbitemu is open. I'll create a startup mode for Wabbitemu where it won't create a gui. It implements the IWabbitemu interface, which you can use to control the emulator and draw the screen.

You will at least need the GUIDs to connect. So the process should be: Launch wabbitemu in silent mode, connect to the object, run commands, release the object, and close wabbitemu.

I might start up a VB project and give it a try out-of-process here pretty soon, but I wanted to give you a heads up. I'll be loitering around tcpa for a while yet tonight, as my sleeping schedule is almost entirely reversed.

bi is just a BITMAPINFO structure describing the palette (greenish shades from light to dark). A flat array might give you usable results. I'll put up the newer Wabbitemu and DLL either way, it might help.

I haven't implemented the actual message system for the breakpoints yet, but AppList and SymList work as you'd expect. You do have to have arrays that size, DCOM will write the whole thing.

Here's how I see it happening: You build, send to wabbitemu using another instance, get a symlist to see its address/page, set breakpoints, then use keypresses to remotely run it. You could set breakpoints dynamically to step through the source.

Edit: You can now use SetBreakpoint to get control during a breakpoint. When wabbitemu hits a breakpoint, it sends a WM_USER (0x0400) message to the HWND you provide. If it looks like C# is using these messages in this range we can use a function called "RegisterWindowMessage" to find a unique message we both can use.

After you are finished processing the breakpoint, you call ClearBreakpoint. For now any ClearBreakpoint call will resume the calculator so make sure you call all of the SetBreakpoints you want first (such as stopping it on the next command).

Here's an example in my client app for sending Zelda, setting a breakpoint at Zelda's gameloop, then pausing the calc for 5 seconds.

Who is online

Users browsing this forum: No registered users and 1 guest

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum