Hiding PC Evidence
One thing I hated about my first cab was you could tell it was driven by a Windows PC. On this project I want to hide all evidence of the computer and its operating system. There are a lot of good write-ups on the topic, and I tried most of what I could find, plus some more. I’m glad to report that I’m almost completely there, and what I don’t have, I know what is needed. For a clean boot you need to (in boot sequence order):
1) Hide the motherboard manufacturer boot image
2) Hide the BIOS boot text
3) Hide the Windows Welcome screen
4) Hide the mouse pointer
5) Bypass the Windows logon screen
6) Launch straight into the arcade menu, bypassing Explorer with its task bar, icons, and 5-15 seconds of load time.
7) Optimize boot time (perhaps you should do this first??)
Hide Boot Image / BIOS
I was excited when I brought home a used PCI video card to try the two video card trick. Little did I know, this trick only works if you have an existing AGP card. It took me about an hour of screwing around with configurations/reboots before I read the instructions more carefully. Unfortunately my PC does not have and AGP card, nor AGP slot.
Plan B – Somehow delay turning on the Monitor. This should work, the monitor is plugged into a power strip, controlled by a relay. All I need to do is delay turning on the relay until the BIOS screen is gone. Stretching waaaaaaay back in my schooling, I remember something about RC circuits. If you put a capacitor in parallel with a device, it is basically a dead short to until it gets mostly charged, then current will flow to the other parts of the circuit. A little Google later and I came up with a circuit. The math didn’t seem to work out though. Seconds (delay) = Farads (capacitance) X Ohms (resistance). To get the 20 seconds or so I needed a capacitor the size of a beer can! I picked up the biggest one StuffShack had to offer (200 uf), the biggest resistor they had (1M ohm pot) and gave it a go. I could delay the lighting of an LED for about 4 seconds but a relay would not turn on at all. I had too much resistance in the circuit. After lots of fiddling around, research, and asking co-workers, it was back to the drawing board.
Plan B’ – Build a custom circuit using my newfound skills with PIC controllers. Yea, that’s it, beat it up with code. The software took all of 15 minutes to hack from one of my LED controller projects. I had a very small 5 vdc relay left over from the Xcelerator vibrating seat project. The PIC could turn on the small relay, which could turn on the power strip relay. The software was very simple. 2 states, Waiting (output=off) and DoneWaiting (output=on). I soldered up the PIC, wiring the output to the relay, and a couple of wires for power and relay closure to the power strip relay. No Go. It took me a while to figure out that the PIC does not provide enough current to drive the small relay. I then hacked in a small transistor, and fed the relay from that. I was really surprised when it clicked on after about a 15 second delay. Good stuff. The circuit and small relay are powered from the 5 vdc side of a PC power connector (red & black). The small relay provides 12 vdc (from PC, yellow & black) to the power strip relay that provides 110vac to the power strip/rest of the cab. Once convinced that the whole thing was not going to burst into flames, I taped the circuit to the PC power connector to protect it.
I wanted to put in a pot to provide a variable time delay, but it was late, and I didn’t have the patience to wait. It is currently hard coded at around 15 seconds. If I should be so lucky to get my boot time below that, perhaps I’ll revisit that decision. Or maybe if someone is in the market…
Hide the Windows Welcome screen
Lots of write-ups on this. Used /noguiboot, set background color to black, and changed “how users log on”.
Hide Mouse Pointer
I was nervous about this one. It is very hard navigating windows in the dark. Rather than following the tutorials, setting the cursor to a completely invisible one, I created a custom cursor that was all black, with one grey pixel at the tip. All of my cursors (registry hack) are set to this new cursor. Now, on boot, if you’re looking for it, you see one grey pixel in the center of the black screen. If needed, it is still there. Once over a white window or other common app, the black shows up fine.
Bypass the Windows logon screen
Well documented hack: Start/Run “control userpasswords2”.
Launch straight into the arcade menu
Again, lots of write-ups on this one. This is the one step not yet completed. I have yet to configure my menu (Mala). Right now, it boots to Explorer, with the task bar minimized.
Optimize Boot Time
After lots of research and hacking, I reduced the number of services down to about 9. Deleted most all of the fonts, set system performance to “best”, etc, etc, etc. This got the boot down to about 28 seconds. The minlogon utility (hacked winlogon.exe from MS) brought it down to 22 seconds. Unfortunately, this disabled the power button / Windows shutdown. Not an option – revert back. Bootvis (another MS utility) got it back down to around 22 seconds. According to that utility, I’m launching Explorer at around 17 seconds into the sequence. Hopefully, replacing Explorer with Mala will reduce the boot time even more.