24 votes

What was the Hard Drive in the Original Xbox actually used for?

8 comments

  1. [4]
    ShamedSalmon
    (edited )
    Link
    A fun trip down memory lane! The Xbox is what really started to get me engaged with computers and, while nothing ever professionally came of it, I discovered a lifetime hobby of hardware and OS...
    • Exemplary

    A fun trip down memory lane! The Xbox is what really started to get me engaged with computers and, while nothing ever professionally came of it, I discovered a lifetime hobby of hardware and OS tinkering.



    Hardware Overviews

    If anyone is interested in a great online write-up that further explores the Xbox hardware, have a look at:

    Xbox Architecture - A Practical Analysis by Rodrigo Copetti

    For historic context, readers may also be interested in reading about the Xbox's evolutionary ancestor:

    Dreamcast Architecture - A Practical Analysis

    Another fun hardware dive that served as an early bible for Xbox hardware reference is:

    Hacking the Xbox by Andrew Huang (free .pdf copy from the author)

    Still a fun, if dated read, AnandTech did a pretty good review of the Xbox's hardware just days after its launch in 2001:

    Hardware Behind the Consoles - Microsoft's Xbox

    A longtime community-lead source on documenting the Xbox's hardware and its revisions:

    XboxDevWiki

    With a larger userbase, and a more broad scope, the ConsoleMods wiki is also a valuable source of hardware information:

    Original Xbox Mods Wiki

    RacketBoy is a website geared toward retro-gaming enthusiasts and collectors. They often put out and update cansual overview guides such as:

    Xbox 101: A Beginner's Guide to Microsoft's Original Console



    Xbox History

    Rusel DeMaria, author of the somewhat famous High Score! (and the Myst strategy guide!!), took the time to chronicle and interview key players in the design and creation of the Xbox, which he compiled into two volumes:

    Game of X, Vol. I (The Idea of an American Console, the Demise of Sega, Doing without Asking, and the Dawn of Xbox)
    Game of X, Vol. II (Founding the M$ Games Division, Cutler's New Tech, Corporate Vulture Culture, and the 3D Wars)

    More recently in the background of gaming journalism controversies, Dean Takahashi previously authored a rather celebrated book on the launch of the Xbox, following many of the same figures:

    Opening the Xbox

    There is also a six-part documentary series released by M$ for the 20th anniversary of Xbox:

    Power On: The Story of Xbox



    Emulation

    If you don't have access to Xbox hardware, but want to jump into playing, there is a Windows-only (or Wine) runtime wrapper/partial emulator:

    Cxbx-Reloaded

    But my personal favorite is a multi-platform, full machine emulator based on Qemu, which seeks to emulate as much of the hardware experience as possible:

    Xemu

    For this one, you are going to need a copy of complex4627v1.03.rar, a bootable Xbox kernel (yo-ho, yo-ho: Xbins mirrors under Console Based Applications).

    Name MD5 SHA-1
    (1mb) Complex 4627 v1.03 21445C6F28FCA7285B0F167EA770D1E5 358A20E61EC1A2387127B1FA92113034FB279F9B
    (256k) Complex 4627 v1.03 3D2C1A663C523F08389180A868B3D335 01E62FB823F9631A35F6F2FEB562D02C4A5EC7CF

    If you plan to run with 128MB of RAM, you will need the debug version of that kernel:

    Name MD5 SHA-1
    (1mb) Complex 4627 v1.03 Debug B701B33BD1281E9541970AD9112161C6 BDF9B5A4C7145942BDC8516FD8C5B017D2979BC2
    (512k) Complex 4627 v1.03 Debug 187A539C08E027CF72D9F5821EBE2230 C1061E12B049FD432A9C44621639D07D5891927E

    You will also need a copy of mcpx_1.0.bin, the MCPX v1.0 bootloader (sometimes called MCPX X3 1.0; usually found in the same galleon, with original BIOSes).

    Name MD5 SHA-1
    MCPX X3 v1.0 1bl ROM D49C52A4102F6DF7BCF8D0617AC475ED 5D270675B54EB8071B480E42D22A3015AC211CEF

    (Note: X2 chips, such as on Chihiro arcade boards, do not contain a first-stage bootloader. Also, Xemu does not support X3 1.1 1bls yet.)

    Optionally, if you're feeling nostalgic, you may want to look for a copy of Xbox Dashboard 5960. The Internet Archive might be your friend there.



    Game Information

    You're on your own to find the games, but for the most comprehensive index of Xbox game disc information, with complete file content listings and hashes, you cannot go wrong with:

    dbox.tools

    And if you like this index, feel free to send an email to the admin. They really like hearing from the community and don't get enough love for their hard work (in my opinion).

    This is an invaluable resource to help in figuring out what version of an Xbox game you might have.



    Essential Tools

    Some essential tools for working with Xemu:

    qemu-img - .qcow2 image conversion to help Windows users convert and mount their virtual harddrive. Example:

    qemu-img.exe convert "C:\path\to\xbox_hdd.qcow2" -O vhdx -o subformat=dynamic "C:\path\to\new\xbox_hdd.vhdx"
    qemu-img.exe convert -f vhdx "C:\path\to\new\xbox_hdd.vhdx" -O qcow2 "C:\path\to\new\xbox_hdd.qcow2"
    

    FatXplorer 3 (TRIAL) - for Windows users who want to mount the filesystem stored within the virtual harddrive (or a physical one, too). NOTE: This is trialware and you will be prompted to purshase a license at some point, but the developer is really involved and dedicated. However, if you don't want to purchase a license, there are alternatives worth exploring like xbox-winfsp. If on linux, have a look at fatx info.

    Xbox EEPROM Editor - This is helpful for setting things like your hardware type ("Debug" for extended memory support), region, resolution, HDD key, and more.

    XBEExplorer - An excellent tool for reading Xbox executable information such as linked libraries, certificate info, runtime flags, and more.



    Hacking

    If you want to get into some fun projects:

    An increasing number of people are interested in manually patching games to support progressive scan, widescreen, and higher resolutions (but do know that performance may dip and vary). Have a look at some of the links in:

    Xbox-Scene - Widescreen Patches Megathread

    You could always try your hand at patching the retail dashboard to have extended features:

    UIX-Ultra-Lite

    There is some microcode errata present in all Xbox kernels, as noted in this forum thread. While this has no real-world value and does not affect nor improve the performance of the system or games in any way, it's a fun project to learn how to unpack the kernel image. You will need:

    • A copy of your kernel
    • XBTool 1.0.23, to unpack the kernel
    • MCExtractor, to dump the unpacked kernel's microcode info
    • A Hex editor (like HxD) to find the old microcode block in the kernel image and replace it
    • Microcode Repository, for copies of the old and new microcode blocks for comparison and replacement
      • Old block cpu0068A_plat10_ver00000001_2000-11-02_PRD_80FC9E3B.bin is to be replaced with cpu006B1_plat10_ver0000001C_2001-02-15_PRD_6506E1CF.bin
      • Old block cpu00686_plat10_ver00000008_2000-05-05_PRD_EA2B7B61.bin is to be replaced with cpu006B4_plat10_ver00000001_2002-01-10_PRD_58213E6A.bin

    Pro tip: A packed Retail Xbox BIOS image is 256K in size. A 1MB image is that same 256K but concatenated four times. A packed Debug Xbox BIOS image is 512K in size. A 1MB image is that same 512K but concatenated twice.

    Complex 4627 versions 1.02 and 1.03 are signed with a standard Retail RC4 key (also called the MCPX 1.0 key):

    0x27 0x45 0xa9 0x10 0x39 0x7e 0x6a 0xa6 0x86 0xfb 0x4b 0x1a 0x4b 0xa9 0x0f 0xd2
    

    With XBTool, this key is set in Config\XBOX 1.0.ini and/or Config\Debug.ini, under

    RC4_key_encrypt=2
    RC4_KEY=
    

    (Also, expect some antivirus false positives when scanning XBTool -- this thing is ancient.)



    More Hacking

    One YouTube commenter asked whether the memory leaks in Morrowind were ever resolved: to my knowledge, no.

    If you do want some increased performance for Morrowind and your Xbox has 128MB of RAM, you can dump the game with extract-xiso, and then patch Morrowind.xbe with a RAM delimiter tool such as dexbe (simply load your .xbe and uncheck Limit Dev-Kit Mem. to 64 MB, then save and quit) or delimit (a commandline app that you point at the .xbe).

    (Note: default.xbe is already delimited, and just a stub for the main runtime anyway).

    If your Xbox only has the standard 64MB, or you do not have access to a 128MB kernel, others have suggested making edits to the Morrowind.ini configuration file by finding and changing key entries such as:

    Click to Expand
    
    [General]
    SkipProgramFlows=1
    DontThreadLoad=1
    ThreadPriority=1
    Exterior Cell Buffer=4
    UseExistingTempFile=1
    CanMoveInfosWhileFiltered=1
    Subtitles=1

    [LightAttenuation] UseLinear=0 UseQuadratic=1 QuadraticValue=1.0

    Using extended RAM, I have personally opted to skip changing these.

    Now, there is also a bug present in all versions of Morrowind (PC and Xbox) where, over a long period of time, actors will move slightly to the left. This is due to an error with the base character animation files; the idle animation loop begins and ends in a different position and because cell changes do not reset an actor's position, there is nothing to stop them from moving indefinitely.

    Enter Idle Animation Fix, a pair of meshes that correct the bug.

    You can place these two files under the following path of your game disc

    Data Files\Meshes\xbase_anim.kf
    Data Files\Meshes\xbase_anim_female.kf
    

    These will override the broken mesh files stored in Data Files\Morrowind.bsa.

    Finally, if you are using Game of the Year Edition and want to experiment with loading .esp plugin mods but you run into dependency issues, you can create two text files next to Data Files\Morrowind.esm, and name them Tribunal.esm and Bloodmoon.esm. Their sole contents should be the following string:

    TES3
    

    (This is the magic num at the beginning of .esm and .esp headers.) These should spoof relatively simple .esps into accepting that their dependencies have been met. However, you will want to make sure that the file modification date stamps match your desired load order, with the oldest dates being earliest to be loaded. In Windows, you could use something like BulkFileChanger, or perhaps PowerShell:

    Get-ChildItem  "C:\path\to\extracted\morrowind\Data Files\Morrowind.esm" | % {$_.LastWriteTime = '20/10/2003 22:23:00'}
    

    Or using a *nix environment:

    touch -m -t 200310202223.00 "/path/to/extracted/morrowind/Data Files/Morrowind.esm"
    

    Oh wow, I almost forgot! To force the game to read its data from the disc path (D:) instead of the cache path (Z:), you should change a few offsets in Morrowind.xbe:

    BS00101A (US) US02102E (EU) BS00503A (US, GotY) BS00505E (EU, GotY) Old Value New Value
    000C664F 000C670F 000C485F 000C4EDF 5A 44
    0034E70C 0035370C 0035B714 0035C714 5A 44
    003527E4 003577F4 0035FA0C 00360A0C 5A 44
    00352B90 00357BCC 0035FE04 00360E04 5A 44

    Yikes, I really got into the weeds on modding Morrowind, huh? Well, let's get back on track, then.



    Even More Hacking

    A handful of games used the EEPROM's HDD key to restrict save sharing. If you find yourself stuck importing a save from real hardware or somewhere on the internet, you may have to resign it for your current virtual or physical Xbox.

    If you are on Xemu and transferring from physical hardware, one thing you could do is dump that Xbox's hardware EEPROM and then use it to boot Xemu.

    On the other hand, if you do not have access to the physical Xbox from which the save was retrieved, you may be able to resign them with the help of some tools.

    You will need a few things first:

    1. XSaveSig, an original Xbox save resigner program.

    2. Xemu's HDD Key, which you can fetch from its generated eeprom.bin, using XboxEepromEditor

    3. The particular game's SigKey and AuthKey. You can fetch/generate these keys from the respective game's default.xbe file or see if they are either already in XSaveSig's list or this GitHub archive of expanded XSaveSig list entries.

    If you have to manually fetch these all important keys for your particular game, you need to dump your game disc with extract-xiso. Once you have a copy of your default.xbe file, open it up with XBEExplorer. To find your SigKey, navigate to XBE Header > Certificate. The entry you are looking for is bzSignatureKey.

    To obtain this .xbe's AuthKey, grab a copy of xboxsig.py, a python tool. If you're on Windows, ensure you have a version of Python3 installed and available in the $PATH for your command-line of choice, then run the script like so:

    python3 C:\path\to\xboxsig.py -i c:\path\to\default.xbe
    

    This will generate your AuthKey.

    What you need to do next is grab your Xemu eeprom.bin file, open it with XboxEepromEditor, and fetch the HDD Key. (Note: if you have nulled your HDD key for some reason, you can use the 32-char 0 value instead.) Copy that HDD Key into XSaveSig's xbhddkey.ini file.

    Lastly, you need to add the SigKey and AuthKey to XSaveSig's resign.ini file. After that, you should be able to run it and resign your save.

    There's also a set of easy-to-use command-line tools for resigning the gamesaves of particular titles, if your needs are more specific and limited:

    Original Xbox Gamesave Resigners



    Kernel Building

    Unpacking and microcode patching not enough for your thirst? How about building the Xbox kernel from source? Have a look at this (hosted by M$'s very own GitHub):

    Easy-Build for Xbox

    If you are interested in amateur kernel development and want to get some overview on the NT 5.0 kernel that serves as the xboxkrnl base, have a look at:

    Inside Microsoft Windows 2000



    Xbox Lives

    Learned what you like from the hacking scene and ready to hop back online? Sign up for an account on this Xbox Live replacement:

    Insignia

    IMPORTANT: Your HDD key must not be nulled. Also, if you are using an older softmod or a hardmod whose kernel blocks Xbox Live, you will either need to update your exploit or disable the block by means of the BIOS tool appropriate to your modchip.


    EDIT: Fixed some spelling errors and clarified a few sentences.
    EDIT2: Added SHA-1 sums of files, and byte offsets for all other Morrowind versions.

    37 votes
    1. [3]
      Gazook89
      Link Parent
      I have been sort of checking this post for while, wondering if someone was going to comment on it. It sure seemed like it was going to fall into obscurity with nary a comment. Then this. I have...

      I have been sort of checking this post for while, wondering if someone was going to comment on it. It sure seemed like it was going to fall into obscurity with nary a comment.

      Then this.

      I have nothing to add, so mark it as fluff, but just wanted to say “wow”.

      11 votes
      1. [2]
        ShamedSalmon
        (edited )
        Link Parent
        Good "wow"? :D While Microsoft should never be trusted to do anything beyond "Embrace, Extend, Extinguish", the original Xbox marked a very exciting time in my life. In 2002, I had saved up enough...
        • Exemplary

        Good "wow"? :D

        While Microsoft should never be trusted to do anything beyond "Embrace, Extend, Extinguish", the original Xbox marked a very exciting time in my life. In 2002, I had saved up enough cash to upgrade my computer to a PII-400, and buy an Xbox. It was the perfect compromise: in CentOS, I could burn CDs all day with K3b and watch Quicktime trailers in Mplayer without much stuttering; in Win98, I could play Half-Life at a decent framerate; on Xbox, I had immediate access to next-gen games -- which I could play with a controller! It was as though the whole world had met my finger-tips.

        Admittedly, I still couldn't afford a lot of games, so much of my play time was spent consuming a friend's discarded OXM demo discs, but this system nonetheless blew my mind, even well into 2006. My first taste of Xbox Live was playing Return to Castle Wolfenstein, especially Beach Invasion, Norway, and Trench Toast -- remember how fun those maps/modes were? Holy cow! I also remember anticipating that Doom 3 was going to graphically blow my mind, that is until I picked up Chronicles of Riddick on a whim over the summer of '04. The original Splinter Cell with it's moody soundtrack still just fills me with waves of nostalgia. Plus, the fact that I not only had access to Morrowind, but also Arx Fatalis, Bauldur's Gate: DA, Star Wars: KotOR, and Fable all in one place had me busy for months at a time. This doesn't even scratch the amazing action games like Psi Ops, Otogi (by the FromSoftware), 007: Nightfire, The Thing, Breakdown, Area 51 (starring David Duchovny, lol), The Suffering, Judge Dredd, Star Wars: Jedi Academy, and Timesplitters 2, or adventure games like Syberia, Indigo Prophecy, Jade Empire, Thief: Deadly Shadows, Still Life, Dreamfall, and Beyond Good and Evil. I'm one of those weirdos who actually liked Deus Ex: Infinity War (but probably because I played it before the original, heh), and loved getting the spookies from Call of Cthulhu.

        I didn't even mention Halo: CE yet, which in early 2002, wow.

        Discovering just how much I could do with the Xbox became icing on the cake. There was even a short period of time from 2007 to early 2009 that Hulu could be streamed via a plugin for XBMC. Remember XBMC, the Xbox Media Center? It went on to become Kodi (but has never felt the same without that old ProjectMayhem skin). For a while there, the Xbox was the best, most versatile media player that money could buy.

        EDIT: Oh right, so the video mentions that Morrowind's runtime (Morrowind.xbe) would issue an api call to jettison the current process in order to free memory handles and then rerun it's shim loader (default.xbe) with a pointer to any preserved data that was to be passed down to the new runtime instance. Well, fun fact: this same technique is also used in other games such as Deus Ex: Invisible War (and you can observe a similar functionality by watching it's parent/child processes in the Windows version, too; every time a load screen occurs, the child process is dropped and restarted).

        12 votes
        1. Gazook89
          Link Parent
          Yes, I could have been more clear: good wow.

          Yes, I could have been more clear: good wow.

          5 votes
  2. hobbes64
    Link
    I thought at the time that the 360 was premature and was pretty annoyed how the original got dropped just as it was hitting its stride. BTW there was an early game Blinkx which was advertised as...

    I thought at the time that the 360 was premature and was pretty annoyed how the original got dropped just as it was hitting its stride.
    BTW there was an early game Blinkx which was advertised as using the hard drive to store your gameplay as it ran which allowed you to rewind and fast-forward.

    8 votes
  3. [3]
    crazydave333
    Link
    I have an original Xbox with the box, controllers, a DVD remote, and probably a few games sitting somewhere in my closet. It worked perfectly before I put it away for good. I should probably see...

    I have an original Xbox with the box, controllers, a DVD remote, and probably a few games sitting somewhere in my closet. It worked perfectly before I put it away for good. I should probably see what I could sell it for.

    2 votes
    1. [2]
      ShamedSalmon
      Link Parent
      There is a fatal flaw that affects most production models from hardware revision 1.0 to 1.4. Instead of a 2032 button battery to keep the system time across power losses, the Xbox used a charged...

      There is a fatal flaw that affects most production models from hardware revision 1.0 to 1.4. Instead of a 2032 button battery to keep the system time across power losses, the Xbox used a charged capacitor. This "clock cap", located under the DVD drive and near the first controller port, is prone to leaking after a decade of life and its acidic contents can eat through the surface of the motherboard.

      It might be worth checking your serial number and opening the unit up with a T20 torx bit to see if your clock cap has leaked. If it hasn't you can desolder it with no ill effects, save for losing the time on power loss. (Only the 1.6 model requires its presence to boot, but that one doesn't use the cap type that leaks.)

      5 votes
      1. crazydave333
        Link Parent
        Thank you! I will check that out. It is one of the earlier Xbox's that was produced. Came with the huge, clunky controller.

        Thank you! I will check that out. It is one of the earlier Xbox's that was produced. Came with the huge, clunky controller.

        1 vote