diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt
index fcbbaccf5b..88b197efbd 100644
--- a/pcsx2/CMakeLists.txt
+++ b/pcsx2/CMakeLists.txt
@@ -267,7 +267,8 @@ set(pcsx2DebugToolsSources
 	DebugTools/DisR3000A.cpp
 	DebugTools/DisR5900asm.cpp
 	DebugTools/DisVU0Micro.cpp
-	DebugTools/DisVU1Micro.cpp)
+	DebugTools/DisVU1Micro.cpp
+	DebugTools/BiosDebugData.cpp)
 
 # DebugTools headers
 set(pcsx2DebugToolsHeaders
@@ -282,7 +283,8 @@ set(pcsx2DebugToolsHeaders
 	DebugTools/Debug.h
 	DebugTools/DisASm.h
 	DebugTools/DisVUmicro.h
-	DebugTools/DisVUops.h)
+	DebugTools/DisVUops.h
+	DebugTools/BiosDebugData.h)
 
 # gui sources
 set(pcsx2GuiSources
diff --git a/pcsx2/DebugTools/BiosDebugData.cpp b/pcsx2/DebugTools/BiosDebugData.cpp
new file mode 100644
index 0000000000..85964d814f
--- /dev/null
+++ b/pcsx2/DebugTools/BiosDebugData.cpp
@@ -0,0 +1,28 @@
+#include "PrecompiledHeader.h"
+#include "BiosDebugData.h"
+#include "../Memory.h"
+
+std::vector<EEThread> getEEThreads()
+{
+	std::vector<EEThread> threads;
+
+	if (CurrentBiosInformation == NULL)
+		return threads;
+
+	u32 start = CurrentBiosInformation->threadListAddr & 0x3fffff;
+	for (int tid = 0; tid < 256; tid++)
+	{
+		EEThread thread;
+
+		EEInternalThread* internal = (EEInternalThread*) PSM(start+tid*sizeof(EEInternalThread));
+		if (internal->status != THS_BAD)
+		{
+			thread.tid = tid;
+			thread.data = *internal;
+			threads.push_back(thread);
+		}
+	}
+
+	return threads;
+}
+
diff --git a/pcsx2/DebugTools/BiosDebugData.h b/pcsx2/DebugTools/BiosDebugData.h
new file mode 100644
index 0000000000..e0daca58c2
--- /dev/null
+++ b/pcsx2/DebugTools/BiosDebugData.h
@@ -0,0 +1,50 @@
+#pragma once
+#include "Pcsx2Types.h"
+#include "../ps2/BiosTools.h"
+
+struct EEInternalThread { // internal struct
+	u32 prev;
+	u32 next;
+	int status;
+	u32 entry;
+	u32 stack;
+	u32 gpReg;
+	short currentPriority;
+	short initPriority;
+	int waitType;
+	int semaId;
+	int wakeupCount;
+	int attr;
+	int option;
+	u32 entry_init;
+	int argc;
+	u32 argstring;
+	u32 stack_bottom; //FIXME
+	int stackSize;
+	u32 root;
+	u32 heap_base;
+};
+
+enum {
+	THS_BAD          = 0x00,
+	THS_RUN          = 0x01,
+	THS_READY        = 0x02,
+	THS_WAIT         = 0x04,
+	THS_SUSPEND      = 0x08,
+	THS_WAIT_SUSPEND = 0x0C,
+	THS_DORMANT      = 0x10,
+};
+ 
+enum {
+	WAIT_NONE       = 0,
+	WAIT_WAKEUP_REQ = 1,
+	WAIT_SEMA       = 2,
+};
+
+struct EEThread
+{
+	u32 tid;
+	EEInternalThread data;
+};
+
+std::vector<EEThread> getEEThreads();
\ No newline at end of file
diff --git a/pcsx2/windows/VCprojects/pcsx2.vcxproj b/pcsx2/windows/VCprojects/pcsx2.vcxproj
index ae8f19fca2..18f6823584 100644
--- a/pcsx2/windows/VCprojects/pcsx2.vcxproj
+++ b/pcsx2/windows/VCprojects/pcsx2.vcxproj
@@ -426,6 +426,7 @@
     <ClCompile Include="..\..\DebugTools\Breakpoints.cpp" />
     <ClCompile Include="..\..\DebugTools\DebugInterface.cpp" />
     <ClCompile Include="..\..\DebugTools\DisassemblyManager.cpp" />
+    <ClCompile Include="..\..\DebugTools\BiosDebugData.cpp" />
     <ClCompile Include="..\..\DebugTools\ExpressionParser.cpp" />
     <ClCompile Include="..\..\DebugTools\MIPSAnalyst.cpp" />
     <ClCompile Include="..\..\DebugTools\MipsAssembler.cpp" />
@@ -712,6 +713,7 @@
     <ClInclude Include="..\..\DebugTools\Breakpoints.h" />
     <ClInclude Include="..\..\DebugTools\DebugInterface.h" />
     <ClInclude Include="..\..\DebugTools\DisassemblyManager.h" />
+    <ClInclude Include="..\..\DebugTools\BiosDebugData.h" />
     <ClInclude Include="..\..\DebugTools\ExpressionParser.h" />
     <ClInclude Include="..\..\DebugTools\MIPSAnalyst.h" />
     <ClInclude Include="..\..\DebugTools\MipsAssembler.h" />
diff --git a/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters
index 32a0e46274..8ebc4642ab 100644
--- a/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters
+++ b/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters
@@ -820,6 +820,9 @@
     <ClCompile Include="..\..\DebugTools\MipsAssembler.cpp">
       <Filter>System\Ps2\Debug</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\DebugTools\BiosDebugData.cpp">
+      <Filter>System\Ps2\Debug</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\DebugTools\MipsAssemblerTables.cpp">
       <Filter>System\Ps2\Debug</Filter>
     </ClCompile>
@@ -1236,6 +1239,9 @@
     <ClInclude Include="..\..\DebugTools\MipsAssembler.h">
       <Filter>System\Ps2\Debug</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\DebugTools\BiosDebugData.h">
+      <Filter>System\Ps2\Debug</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\DebugTools\MipsAssemblerTables.h">
       <Filter>System\Ps2\Debug</Filter>
     </ClInclude>
diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj
index 002ebdab4c..26b283f10f 100644
--- a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj
+++ b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj
@@ -411,6 +411,7 @@
     <ClCompile Include="..\..\DebugTools\Breakpoints.cpp" />
     <ClCompile Include="..\..\DebugTools\DebugInterface.cpp" />
     <ClCompile Include="..\..\DebugTools\DisassemblyManager.cpp" />
+    <ClCompile Include="..\..\DebugTools\BiosDebugData.cpp" />
     <ClCompile Include="..\..\DebugTools\ExpressionParser.cpp" />
     <ClCompile Include="..\..\DebugTools\MIPSAnalyst.cpp" />
     <ClCompile Include="..\..\DebugTools\MipsAssembler.cpp" />
@@ -698,6 +699,7 @@
     <ClInclude Include="..\..\DebugTools\Breakpoints.h" />
     <ClInclude Include="..\..\DebugTools\DebugInterface.h" />
     <ClInclude Include="..\..\DebugTools\DisassemblyManager.h" />
+    <ClInclude Include="..\..\DebugTools\BiosDebugData.h" />
     <ClInclude Include="..\..\DebugTools\ExpressionParser.h" />
     <ClInclude Include="..\..\DebugTools\MIPSAnalyst.h" />
     <ClInclude Include="..\..\DebugTools\MipsAssembler.h" />
diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters
index cfbae94ea9..1153d41a4f 100644
--- a/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters
+++ b/pcsx2/windows/VCprojects/pcsx2_vs2012.vcxproj.filters
@@ -835,6 +835,9 @@
     <ClCompile Include="..\..\DebugTools\MipsAssembler.cpp">
       <Filter>System\Ps2\Debug</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\DebugTools\BiosDebugData.cpp">
+      <Filter>System\Ps2\Debug</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\DebugTools\MipsAssemblerTables.cpp">
       <Filter>System\Ps2\Debug</Filter>
     </ClCompile>
@@ -1251,6 +1254,9 @@
     <ClInclude Include="..\..\DebugTools\MipsAssembler.h">
       <Filter>System\Ps2\Debug</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\DebugTools\BiosDebugData.h">
+      <Filter>System\Ps2\Debug</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\DebugTools\MipsAssemblerTables.h">
       <Filter>System\Ps2\Debug</Filter>
     </ClInclude>
diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj
index fde2077b2a..5f345811a1 100644
--- a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj
+++ b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj
@@ -411,6 +411,7 @@
     <ClCompile Include="..\..\DebugTools\Breakpoints.cpp" />
     <ClCompile Include="..\..\DebugTools\DebugInterface.cpp" />
     <ClCompile Include="..\..\DebugTools\DisassemblyManager.cpp" />
+    <ClCompile Include="..\..\DebugTools\BiosDebugData.cpp" />
     <ClCompile Include="..\..\DebugTools\ExpressionParser.cpp" />
     <ClCompile Include="..\..\DebugTools\MIPSAnalyst.cpp" />
     <ClCompile Include="..\..\DebugTools\MipsAssembler.cpp" />
@@ -698,6 +699,7 @@
     <ClInclude Include="..\..\DebugTools\Breakpoints.h" />
     <ClInclude Include="..\..\DebugTools\DebugInterface.h" />
     <ClInclude Include="..\..\DebugTools\DisassemblyManager.h" />
+    <ClInclude Include="..\..\DebugTools\BiosDebugData.h" />
     <ClInclude Include="..\..\DebugTools\ExpressionParser.h" />
     <ClInclude Include="..\..\DebugTools\MIPSAnalyst.h" />
     <ClInclude Include="..\..\DebugTools\MipsAssembler.h" />
@@ -938,4 +940,4 @@
   <ImportGroup Label="ExtensionTargets">
     <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters
index 3eef87385e..ec441c1b3e 100644
--- a/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters
+++ b/pcsx2/windows/VCprojects/pcsx2_vs2013.vcxproj.filters
@@ -850,6 +850,9 @@
     <ClCompile Include="..\..\DebugTools\MipsAssembler.cpp">
       <Filter>System\Ps2\Debug</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\DebugTools\BiosDebugData.cpp">
+      <Filter>System\Ps2\Debug</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\Patch.h">
@@ -1263,6 +1266,9 @@
     <ClInclude Include="..\..\DebugTools\MipsAssembler.h">
       <Filter>System\Ps2\Debug</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\DebugTools\BiosDebugData.h">
+      <Filter>System\Ps2\Debug</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="..\..\..\3rdparty\wxWidgets\include\wx\msw\wx.rc">
@@ -1345,4 +1351,4 @@
       <Filter>AppHost\Resources</Filter>
     </CustomBuild>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file