diff --git a/Source/Core/Core/Src/HLE/HLE_OS.cpp b/Source/Core/Core/Src/HLE/HLE_OS.cpp
index c477f62c7e..5dd073abc7 100644
--- a/Source/Core/Core/Src/HLE/HLE_OS.cpp
+++ b/Source/Core/Core/Src/HLE/HLE_OS.cpp
@@ -34,8 +34,8 @@ void HLE_OSPanic()
     std::string Error;
     GetStringVA(Error);
 
-    PanicAlert("PanicAlert: %s", Error.c_str());
-    LOG(OSREPORT,"(PC=%08x), PanicAlert: %s", LR, Error.c_str());
+    PanicAlert("OSPanic: %s", Error.c_str());
+    LOG(OSREPORT,"(PC=%08x), OSPanic: %s", LR, Error.c_str());
 
     NPC = LR;
 }
diff --git a/Source/Core/Core/Src/HW/VideoInterface.cpp b/Source/Core/Core/Src/HW/VideoInterface.cpp
index 9a9d52a5bb..f21f00ea8e 100644
--- a/Source/Core/Core/Src/HW/VideoInterface.cpp
+++ b/Source/Core/Core/Src/HW/VideoInterface.cpp
@@ -365,8 +365,6 @@ void UpdateTiming()
 
 void Update()
 {
-	// This stuff is not right - what if more than TicksPerLine ticks occur between
-	// calls to this function, say if we run with fairly inaccurate timing?
     while ((CoreTiming::GetTicks() - LastTime) > (TicksPerFrame / LineCount))
     {
         LastTime += (TicksPerFrame / LineCount);
diff --git a/Source/Core/DebuggerWX/DebuggerWX.vcproj b/Source/Core/DebuggerWX/DebuggerWX.vcproj
index 4cccc3935f..c9859c4496 100644
--- a/Source/Core/DebuggerWX/DebuggerWX.vcproj
+++ b/Source/Core/DebuggerWX/DebuggerWX.vcproj
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8,00"
+	Version="8.00"
 	Name="DebuggerWX"
 	ProjectGUID="{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}"
 	RootNamespace="DebuggerWX"
@@ -45,7 +45,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src"
+				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src;..\..\..\Externals\Bochs_disasm"
 				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;__WXMSW__"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -111,7 +111,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src"
+				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src;..\..\..\Externals\Bochs_disasm"
 				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;__WXMSW__"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -175,7 +175,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src"
+				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src;..\..\..\Externals\Bochs_disasm"
 				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;__WXMSW__"
 				RuntimeLibrary="0"
 				UsePrecompiledHeader="0"
@@ -238,7 +238,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src"
+				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src;..\..\..\Externals\Bochs_disasm"
 				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;__WXMSW__"
 				RuntimeLibrary="0"
 				BufferSecurityCheck="false"
@@ -302,7 +302,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src"
+				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src;..\..\..\Externals\Bochs_disasm"
 				PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="0"
@@ -368,7 +368,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src"
+				AdditionalIncludeDirectories="..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc;..\Core\Src;;..\Common\Src;..\..\..\Externals\Bochs_disasm"
 				PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH;_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -502,6 +502,14 @@
 			RelativePath=".\src\Debugger.h"
 			>
 		</File>
+		<File
+			RelativePath=".\src\JitWindow.cpp"
+			>
+		</File>
+		<File
+			RelativePath=".\src\JitWindow.h"
+			>
+		</File>
 		<File
 			RelativePath=".\src\LogWindow.cpp"
 			>
diff --git a/Source/Core/DebuggerWX/src/CodeView.cpp b/Source/Core/DebuggerWX/src/CodeView.cpp
index 42c6f6d938..e31a3ab9e7 100644
--- a/Source/Core/DebuggerWX/src/CodeView.cpp
+++ b/Source/Core/DebuggerWX/src/CodeView.cpp
@@ -19,6 +19,8 @@
 #include "Common.h"
 
 #include "CodeView.h"
+#include "JitWindow.h"
+
 #include <wx/event.h>
 #include <wx/clipbrd.h>
 
@@ -31,7 +33,7 @@ enum
 	IDM_COPYCODE,
 	IDM_INSERTBLR,
 	IDM_RUNTOHERE,
-	IDM_DYNARECRESULTS,
+	IDM_JITRESULTS,
 };
 
 
@@ -158,9 +160,7 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event)
 
 #if wxUSE_CLIPBOARD
 	    case IDM_COPYADDRESS:
-	    {
 		    wxTheClipboard->SetData(new wxTextDataObject(wxString::Format(_T("%08x"), selection)));
-	    }
 		    break;
 
 	    case IDM_COPYCODE:
@@ -168,35 +168,27 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event)
 		    break;
 
 	    case IDM_COPYHEX:
-	    {
+		    {
 		    char temp[24];
 		    sprintf(temp, "%08x", debugger->readMemory(selection));
 		    wxTheClipboard->SetData(new wxTextDataObject(wxString::FromAscii(temp)));
-	    }
+		    }
 		    break;
 #endif
 
 	    case IDM_RUNTOHERE:
-	    {
 		    debugger->setBreakpoint(selection);
 		    debugger->runToBreakpoint();
 		    redraw();
-	    }
 		    break;
 
 		case IDM_INSERTBLR:
-		{
 			debugger->insertBLR(selection);
 		    redraw();
 			break;
-		}
 
-	    case IDM_DYNARECRESULTS:
-	    {
-//			CDynaViewDlg::ViewAddr(selection);
-//			CDynaViewDlg::Show(TRUE);
-//				MessageBox(NULL, "not impl", "CtrlDisAsmView", MB_OK);
-	    }
+	    case IDM_JITRESULTS:
+			CJitWindow::ViewAddr(selection);
 		    break;
 	}
 
@@ -219,7 +211,7 @@ void CCodeView::OnMouseUpR(wxMouseEvent& event)
 #endif
 	menu.Append(IDM_RUNTOHERE, _T("&Run To Here"));
 	menu.Append(IDM_INSERTBLR, wxString::FromAscii("Insert &blr"));
-	//menu.Append(IDM_DYNARECRESULTS, "Copy &address");
+	menu.Append(IDM_JITRESULTS, wxString::FromAscii("PPC vs X86"));
 	PopupMenu(&menu);
 	event.Skip(true);
 }
diff --git a/Source/Core/DebuggerWX/src/CodeWindow.cpp b/Source/Core/DebuggerWX/src/CodeWindow.cpp
index 544175552d..79b66300eb 100644
--- a/Source/Core/DebuggerWX/src/CodeWindow.cpp
+++ b/Source/Core/DebuggerWX/src/CodeWindow.cpp
@@ -15,13 +15,16 @@
 // Official SVN repository and contact information can be found at
 // http://code.google.com/p/dolphin-emu/
 
+#include "IniFile.h"
+#include "Host.h"
+
 #include "Debugger.h"
 
 #include "RegisterWindow.h"
 #include "LogWindow.h"
 #include "BreakpointWindow.h"
 #include "MemoryWindow.h"
-#include "IniFile.h"
+#include "JitWindow.h"
 
 #include "wx/button.h"
 #include "wx/textctrl.h"
@@ -32,20 +35,17 @@
 
 #include "CodeWindow.h"
 #include "CodeView.h"
+
+#include "Core.h"
+#include "LogManager.h"
 #include "HW/CPU.h"
 #include "PowerPC/PowerPC.h"
-#include "Host.h"
-
-
 #include "Debugger/PPCDebugInterface.h"
 #include "Debugger/Debugger_SymbolMap.h"
 #include "PowerPC/PPCAnalyst.h"
 #include "PowerPC/Jit64/Jit.h"
 #include "PowerPC/Jit64/JitCache.h"
 
-#include "Core.h"
-#include "LogManager.h"
-
 // ugly that this lib included code from the main
 #include "../../DolphinWX/src/Globals.h"
 
@@ -194,6 +194,9 @@ void CCodeWindow::CreateGUIControls(const SCoreStartupParameter& _LocalCoreStart
 
 	m_MemoryWindow = new CMemoryWindow(this);
 	m_MemoryWindow->Show(true);
+
+	m_JitWindow = new CJitWindow(this);
+	m_JitWindow->Show(true);
 }
 
 
diff --git a/Source/Core/DebuggerWX/src/CodeWindow.h b/Source/Core/DebuggerWX/src/CodeWindow.h
index 8d8684f736..d56038a54e 100644
--- a/Source/Core/DebuggerWX/src/CodeWindow.h
+++ b/Source/Core/DebuggerWX/src/CodeWindow.h
@@ -31,6 +31,7 @@ class CRegisterWindow;
 class CLogWindow;
 class CBreakPointWindow;
 class CMemoryWindow;
+class CJitWindow;
 class CCodeView;
 class IniFile;
 
@@ -101,6 +102,7 @@ class CCodeWindow
 		CRegisterWindow* m_RegisterWindow;
 		CBreakPointWindow* m_BreakpointWindow;
 		CMemoryWindow* m_MemoryWindow;
+		CJitWindow* m_JitWindow;
 
 		CCodeView* codeview;
 		wxListBox* callstack;
diff --git a/Source/Core/DebuggerWX/src/JitWindow.cpp b/Source/Core/DebuggerWX/src/JitWindow.cpp
new file mode 100644
index 0000000000..53c496ede3
--- /dev/null
+++ b/Source/Core/DebuggerWX/src/JitWindow.cpp
@@ -0,0 +1,211 @@
+// Copyright (C) 2003-2008 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#include "Debugger.h"
+
+#include "IniFile.h"
+
+#include "wx/button.h"
+#include "wx/textctrl.h"
+#include "wx/listctrl.h"
+#include "wx/thread.h"
+#include "wx/listctrl.h"
+#include "JitWindow.h"
+#include "HW/CPU.h"
+#include "PowerPC/PowerPC.h"
+#include "PowerPC/Jit64/Jit.h"
+#include "PowerPC/Jit64/JitCache.h"
+#include "Host.h"
+#include "disasm.h"
+
+#include "Debugger/PPCDebugInterface.h"
+#include "Debugger/Debugger_SymbolMap.h"
+
+#include "Core.h"
+#include "StringUtil.h"
+#include "LogManager.h"
+
+// ugly that this lib included code from the main
+#include "../../DolphinWX/src/Globals.h"
+
+// UGLY
+namespace {
+CJitWindow *the_jit_window;
+}
+
+enum
+{
+	IDM_REFRESH_LIST = 33350,
+	IDM_PPC_BOX,
+	IDM_X86_BOX,
+	IDM_NEXT,
+	IDM_PREV,
+	IDM_BLOCKLIST,
+};
+
+BEGIN_EVENT_TABLE(CJitWindow, wxFrame)
+//    EVT_TEXT(IDM_ADDRBOX,           CJitWindow::OnAddrBoxChange)
+  //  EVT_LISTBOX(IDM_SYMBOLLIST,     CJitWindow::OnSymbolListChange)
+    //EVT_HOST_COMMAND(wxID_ANY,      CJitWindow::OnHostMessage)
+	EVT_BUTTON(IDM_REFRESH_LIST, CJitWindow::OnRefresh)
+END_EVENT_TABLE()
+
+
+CJitWindow::CJitWindow(wxWindow* parent, wxWindowID id,
+		const wxString& title, const wxPoint& pos, const wxSize& size, long style)
+	: wxFrame(parent, id, title, pos, size, style)
+{    
+	the_jit_window = this;
+	wxBoxSizer* sizerBig   = new wxBoxSizer(wxVERTICAL);
+	wxBoxSizer* sizerSplit = new wxBoxSizer(wxHORIZONTAL);
+	sizerSplit->Add(ppc_box = new wxTextCtrl(this, IDM_PPC_BOX, "(ppc)", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE), 1, wxEXPAND);
+	sizerSplit->Add(x86_box = new wxTextCtrl(this, IDM_X86_BOX, "(x86)", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE), 1, wxEXPAND);
+	sizerBig->Add(block_list = new JitBlockList(this, IDM_BLOCKLIST,
+				wxDefaultPosition, wxSize(100, 140),
+				wxLC_REPORT | wxSUNKEN_BORDER | wxLC_ALIGN_LEFT | wxLC_SINGLE_SEL | wxLC_SORT_ASCENDING), 0, wxEXPAND);
+	sizerBig->Add(sizerSplit, 2, wxEXPAND);
+//	sizerBig->Add(memview, 5, wxEXPAND);
+//	sizerBig->Add(sizerRight, 0, wxEXPAND | wxALL, 3);
+	sizerBig->Add(button_refresh = new wxButton(this, IDM_REFRESH_LIST, _T("&Refresh")));
+//	sizerRight->Add(addrbox = new wxTextCtrl(this, IDM_ADDRBOX, _T("")));
+//	sizerRight->Add(new wxButton(this, IDM_SETPC, _T("S&et PC")));
+
+	SetSizer(sizerBig);
+
+	sizerSplit->SetSizeHints(this);
+	sizerSplit->Fit(this);
+	sizerBig->SetSizeHints(this);
+	sizerBig->Fit(this);
+}
+
+
+CJitWindow::~CJitWindow()
+{
+}
+
+
+void CJitWindow::Save(IniFile& _IniFile) const
+{
+	_IniFile.Set("JitWindow", "x", GetPosition().x);
+	_IniFile.Set("JitWindow", "y", GetPosition().y);
+	_IniFile.Set("JitWindow", "w", GetSize().GetWidth());
+	_IniFile.Set("JitWindow", "h", GetSize().GetHeight());
+}
+
+
+void CJitWindow::Load(IniFile& _IniFile)
+{
+	int x,y,w,h;
+	_IniFile.Get("JitWindow", "x", &x, GetPosition().x);
+	_IniFile.Get("JitWindow", "y", &y, GetPosition().y);
+	_IniFile.Get("JitWindow", "w", &w, GetSize().GetWidth());
+	_IniFile.Get("JitWindow", "h", &h, GetSize().GetHeight());
+	SetSize(x, y, w, h);
+}
+
+void CJitWindow::OnRefresh(wxCommandEvent& /*event*/) {
+	block_list->Update();
+}
+
+void CJitWindow::ViewAddr(u32 em_address)
+{
+	the_jit_window->Compare(em_address);
+}
+
+void CJitWindow::Compare(u32 em_address)
+{
+	u8 *xDis = new u8[65536];
+	memset(xDis, 0, 65536);
+
+	disassembler x64disasm;
+	x64disasm.set_syntax_intel();
+
+	int block_num = Jit64::GetBlockNumberFromAddress(em_address);
+	if (block_num < 0)
+	{
+		ppc_box->SetValue(wxString(StringFromFormat("(non-code address: %08x)", em_address).c_str()));
+		x86_box->SetValue(wxString(StringFromFormat("(no translation)").c_str()));
+		return;
+	}
+	Jit64::JitBlock *block = Jit64::GetBlock(block_num);
+	const u8 *code = (const u8 *)Jit64::GetCompiledCodeFromBlock(block_num);
+	u64 disasmPtr = (u64)code;
+	int size = block->codeSize;
+	const u8 *end = code + size;
+	char *sptr = (char*)xDis;
+
+	while ((u8*)disasmPtr < end)
+	{
+		disasmPtr += x64disasm.disasm64(disasmPtr, disasmPtr, (u8*)disasmPtr, sptr);
+		sptr += strlen(sptr);
+		*sptr++ = 13;
+		*sptr++ = 10;
+	}
+	x86_box->SetValue(wxString((char*)xDis));
+	delete [] xDis;
+}
+
+void CJitWindow::Update()
+{
+
+}
+
+void CJitWindow::OnHostMessage(wxCommandEvent& event)
+{
+	switch (event.GetId())
+	{
+	    case IDM_NOTIFYMAPLOADED:
+		    //NotifyMapLoaded();
+		    break;
+	}
+}
+
+
+
+// JitBlockList
+//================
+
+enum {
+	COLUMN_ADDRESS,
+	COLUMN_PPCSIZE,
+	COLUMN_X86SIZE,
+	COLUMN_NAME,
+	COLUMN_FLAGS,
+	COLUMN_NUMEXEC,
+	COLUMN_COST,  // (estimated as x86size * numexec)
+};
+
+JitBlockList::JitBlockList(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
+	: wxListCtrl(parent, id, pos, size, style)                                                                                                                 // | wxLC_VIRTUAL)
+{
+	Init();		
+}
+
+void JitBlockList::Init()
+{
+	InsertColumn(COLUMN_ADDRESS, "Address");
+	InsertColumn(COLUMN_PPCSIZE, "PPC Size");
+	InsertColumn(COLUMN_X86SIZE, "x86 Size");
+	InsertColumn(COLUMN_NAME, "Symbol");
+	InsertColumn(COLUMN_FLAGS, "Flags");
+	InsertColumn(COLUMN_NUMEXEC, "NumExec");
+	InsertColumn(COLUMN_COST, "Cost");
+}
+
+void JitBlockList::Update()
+{
+}
diff --git a/Source/Core/DebuggerWX/src/JitWindow.h b/Source/Core/DebuggerWX/src/JitWindow.h
new file mode 100644
index 0000000000..4b8d0c0b15
--- /dev/null
+++ b/Source/Core/DebuggerWX/src/JitWindow.h
@@ -0,0 +1,81 @@
+// Copyright (C) 2003-2008 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#ifndef JITWINDOW_H_
+#define JITWINDOW_H_
+
+#include <vector>
+
+#include "wx/dialog.h"
+#include "wx/textctrl.h"
+#include "wx/listctrl.h"
+#include "wx/listbox.h"
+#include "Debugger.h"
+#include "MemoryView.h"
+#include "Thread.h"
+#include "IniFile.h"
+
+#include "CoreParameter.h"
+
+
+class JitBlockList : public wxListCtrl
+{
+	std::vector<int> block_ranking;
+public:
+	JitBlockList(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style);
+	void Init();
+	void Update();
+};
+
+
+class CJitWindow : public wxFrame
+{
+public:
+	CJitWindow(wxWindow* parent,
+		wxWindowID id = wxID_ANY,
+		const wxString& title = _T("JIT block viewer"),
+		const wxPoint& pos = wxPoint(950, 100),
+		const wxSize& size = wxSize(400, 500),
+		long style = wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE);
+
+    ~CJitWindow();
+
+	void Save(IniFile& _IniFile) const;
+	void Load(IniFile& _IniFile);
+
+	static void ViewAddr(u32 em_address);
+	void Update();
+
+private:
+	void OnRefresh(wxCommandEvent& /*event*/);
+	void Compare(u32 em_address);
+
+	JitBlockList* block_list;
+	wxButton* button_refresh;
+	wxTextCtrl* ppc_box;
+	wxTextCtrl* x86_box;
+	wxListBox* top_instructions;
+
+	DECLARE_EVENT_TABLE()
+
+	void OnSymbolListChange(wxCommandEvent& event);
+	void OnCallstackListChange(wxCommandEvent& event);
+	void OnAddrBoxChange(wxCommandEvent& event);
+	void OnHostMessage(wxCommandEvent& event);
+};
+
+#endif /*MEMORYWINDOW_*/