But most discussion's ive read in forums all dev's refer to a thread as a core, and from my programming if I make a program multi threaded (2 threads) it runs on 2 cores...
It's how ive been taught, its what I understand/beleve.
Education is different in America as to what it is here.
Hate to say this, but threads and cores are totally different. You were taught completely incorrectly. I also have programmed for multiple cores, and one of my current projects is threaded programming for an open source raytracing project.
Multiprogramming (making it appear as if the computer is doing several things at the same time) has been around since DOS, using interrupts for stuff like the mouse and sound card. When an interrupt happened, it called a small piece of code that would handle the event. Unfortunately, there was no centralized handling of the interrupt table, so it was extremely ineffective for true multitasking.
Windows 3 introduced a primitive form of centralized task switching and time slicing. Unfortunately, Windows did not have full control of when a program gave back control to the OS, and it depended on other programs releasing control back to the OS.
Threads have been around since Windows 95. In this case, the OS has full control (the OS can forcefully take control from a program), and the time slicer switches quickly between them to make it look like the CPU is doing several things at once, even though it isn't. Windows 95 doesn't even know what a core is, but it can use threads.
Windows XP SP2 is the first OS to take full advantage of multiple CPUs, which can be in the form of hyperthreading or multiple cores. It does so by assigning each thread to a core.
One of the reasons why some people confuse threads with cores is because the best way to take full advantage of a CPU is to have one thread for each CPU. That is, however, just best practice: There is nothing stopping you from having a single thread or from having hundreds of threads!
Another way to think about it:
Threads == software
Cores == hardware
Many games have multithreaded support, although it's usually just to separate large portions of the engine, such as the core and the GUI. Games that do a serious attempt to balance the load and take full advantage of multiple CPUs include Half-Life 2: Episode 2, Bioshock, Crysis, Microsoft Flight Simulator, and many of the latest games. If it's recent enough to support DirectX 10, it's very likely that the developers have also made some attempt to make it aware of and use multiple cores.
Note: Using multiple threads and detecting the number of cores are two separate things. It's entirely possible that a game use multiple threads but may not be aware that it's running on multiple cores. As I've said, many games may separate out the GUI and the core of the engine on separate threads. They don't need to detect the number of cores to do that.
To take full advantage of multiple cores, however, they do need to detect how many cores a computer has so they can make sure the number of threads is correct, and so they can make sure they fully utilize all of the cores (or at least balance the load if they are not fully utilizing the CPU).
Windows itself (both XP and Vista) is fully aware of the cores, and will do its best to balance the load between the cores. It's up to the application, however, to create multiple threads so the OS can balance the workload.
Yes, Crysis supports quad cores:
http://www.incrysis.com/index.php?option=com_content&task=view&id=411
In fact, most games that support multiple cores will not artificially limit themselves to a certain number of cores - it would be silly to add such a limitation.
Yes, it is difficult to add support for multiple cores, but it's the style of thinking that makes it difficult, not the number of cores. Once you figure out how to divide a problem between multiple cores, you can generally generalize it to any number of cores you want.