HI I just was courious on how microsoft made the xbox OS?? did they use c++
or c++ and ASM??
How could I make games for the xbox console?? I just want to make games for myself just to learn how it's done.
fun to think about.
HI I just was courious on how microsoft made the xbox OS?? did they use c++
or c++ and ASM??
How could I make games for the xbox console?? I just want to make games for myself just to learn how it's done.
fun to think about.
To make a game for xbox console you would have to have a dev-kit and it's development tools. I think you have to pay a lot of money for those. The cheaper way is to deal with C# and microsoft's XNA studio which uses .net and is compatiable with the 360. There is an ongoing contest by microsoft for these types of games, one of which is going to get on the Live Arcade soon. That's the most I know, may be iffy on some parts.
If I've understood things right, the verion of "Windows" that runs on the original XBox is related to Windows CE, which is written mostly in C/C++ with a bit of assembler. Drivers for WinCE are written in C++. I don't know what the XBox 360 OS is like, but I would guess it's just an improved version of the previous OS.
All OS's need at least some amount of assembly code, because (at the very least) parts of the "context switch" (when the OS switches between one thread or process and another) requires direct access to the registers in the processor. It is possible to write an OS with about 20-50 lines of assembler and the rest written in C/C++. Most OS's have a bit more assembler, because there are some other things that are tricky in C and/or perform better if you write them in assembler, such as the very low level of interrupt handling, exception handling and system call functionality.
--
Mats
The Xbox runs a stripped version of Windows 2000's kernel that exposes an API built on DirectX 8.1 and other various fun things.
If you're interested in writing stuff for your xbox, don't get your hopes too high, but it's possible to write (limited amounts of) things for it using a modded xbox (you need a modded version because every xbox game has a very special digital signature on the disk that comes from MS, so the xbox doesn't run anything 'bad') and something like OpenXDK.
operating systems: mac os 10.6, debian 5.0, windows 7
editor: back to emacs because it's more awesomer!!
version control: git
website: http://0xff.ath.cx/~as/
The link in my signature shows that xbox is based on Windows 2000, http://widefox.pbwiki.com/CPU however it suggests that it's not actually windows.
any good ASM website that would teach most of it and also explain what parts of it is used today ect.
or any OS dev site that would teach all low level programming and also how the hardware works together ect.
?
I am aware of some of those kit's.
I have an xbox and I don't play it, it's modded but never worked I think I got riped off on it, like I can only use retail cds ect, so I only have 3 or 4 games and got bored of it, I also hated xbox becuse of the games lacked realistic small details well their big for me.
like hockey games from ea the don't have zombies anymore they used to in playstation, and when ps2 and xbox came out they forgot those details and focused more on the game play, I knew soon they were going to make the crowd near the rink 3d models, but when xbox first came out the first xbox games lacked detail of the crowd and 3rd party items they done well on the on ice game play I also knew they where going to make the ice trails off from the players skates, the ice cuts ect.
I am not planning on going commerical, just for education, learning what's what.
like digitial signatures I know what it is based on tech people talking about it ect, but I never seen what it is myself, seening is one thing then hearing.
I'm sure you can find some website(s) that explains how an OS works, but essentially, the assembler needed for an OS (at minimum level) is the one to switch registers, so something like this:
This saves and restores all x86 "general purpose" registers. You may also need to save/restore some other registers if you build a "proper" OS (where memory protection is used), for example CR3. And some OS's do use the segment registers, so those would have to be stored and restored.Code:struct context { int proc_id; void *sp; ... }; struct context current; ... void context_switch(struct context *newctxt) { __asm { push eax push ebx push ecx push edx push ebp push edi push esi mov dword ptr current, eax mov esp, 4[eax] // Store stack pointer. mov dword ptr newctxt, eax // Set "current" to "newctxt". mov eax, dword ptr current mov 4[eax], esp pop esi pop edi pop ebp pop edx pop ecx pop ebx pop eax } }
If you want to play a little bit with it, you could actually write a little threads program that uses the above code to switch from one thread to another in Windows or Linux.
--
Mats