View Page Source

Back to Page
Revision 104 (current)
Edited by feos 15 hours ago
This page provides instructions and tips for installing Windows in PCem to make tool-assisted speedruns. The entirety of the [EmulatorResources/PCem|main guide] applies here too. To discuss this setup and its usage, please [Forum/Topics/24903|visit this thread].

These guidelines will help you make a TAS that people will be able to sync on other machines. If nobody else can sync your run, then it will probably not get accepted!

We cannot distribute a fully configured OS hard drive image like we did with the DOS configurations, so you will need to install Windows yourself. But we can provide a libTAS movie that you can run and it will automatically install Windows onto a hard drive image for you.

Be aware of our Movie Rules for [EmulatorResources/LibTAS#MovieSubmissions|libTAS movies] and especially for running [EmulatorResources/PCem#MovieSubmissions|PCem in libTAS].

%%TOC%%

!!! What you'll need

The steps for installing ''Windows 95'' or ''Windows XP'' in PCem under libTAS are similar. You will need a number of files matched exactly by name and hashsum, and the steps below largely involve identifying the correct files and ensuring they are in the correct locations. Consult the [EmulatorResources/PCem/Windows/Configurations|Windows configuration] page for additional details including hashsum information as well as full hardware specifications. The following elements should be in place to complete a Windows installation using a libTAS movie file:

!! Common files

* [EmulatorResources/PCem#WhatYouLlNeed|libTAS and PCem] installed (ensure {{~/.pcem/pcem.cfg}} has {{confirm_on_stop_emulation = 0}} set).
* ROM files for PCem v17. We can't distribute them. Place all PCem ROMs in {{~/.pcem/roms/}}. File names are case-sensitive!
** The files you'll need for Windows are: {{ga686bx/6BX.F2a}}, {{voodoo3_3000/3k12sd.rom}}, and {{awe32.raw}}. Their hashsums are provided in the [EmulatorResources/PCem/Windows/Configurations|Windows common configuration] section.
* An empty 4GB hard drive image file ([https://files.tasvideos.org/common/Wiki/pcem/windows/windowsxp.img.7z|download link])
** If you are installing Windows 95, just rename the {{windowsxp.img}} file to {{windows95b.img}} or similar.
* Make sure {{~/.pcem/roms/ga686bx/flash.bin}} and {{~/.pcem/nvr/windowsxp.ga686bx.nvr}} files do not exist! If you write to disk or use PCem outside of libTAS, delete the files again before installing.

!! OS dependent files

|| File || Windows 95 || Windows XP ||
| __Windows installation CD image__ | [EmulatorResources/PCem/Windows/Configurations/95#Windows95Cd|Windows 95b OSR 2] | [EmulatorResources/PCem/Windows/Configurations/XP#WindowsXpCd|Windows XP SP3 Home Edition] |
| __Utilities CD with extra dependencies__ | [EmulatorResources/PCem/Windows/Configurations/95#UtilitiesCd|Windows 95 utilities ISO] | [EmulatorResources/PCem/Windows/Configurations/XP#UtilitiesCd|Windows XP utilities ISO] |
| __Boot floppy__ (Windows 95 only)|  [EmulatorResources/PCem/Windows/Configurations/95#BootFloppy|Microsoft Windows 95 OSR2 - Boot Disk] | |
| __Machine config file__ (update each {{ /full/path/to/}}) | [EmulatorResources/PCem/Windows/Configurations/95#Config|windows95b.cfg] | [EmulatorResources/PCem/Windows/Configurations/XP#Config|windowsxp.cfg] |
| __OS installation movie file for libTAS__ | [EmulatorResources/PCem/Windows/Configurations/95#Windows95LibtasMovieFile|Windows 95 installation .ltm] | [EmulatorResources/PCem/Windows/Configurations/XP#WindowsXpLibtasMovieFile|Windows XP installation .ltm] |

!!! Installing the OS

Run PCem in libTAS as follows (similar to [EmulatorResources/PCem#Settings|the main PCem guide]):

# Set the game executable to the full path to PCem, usually {{/usr/bin/pcem}}.
# Set the command line to {{--config /full/path/to/config.cfg}}, substituting the path of your {{.cfg}} file. Use the full path, do not shorten it with {{~}}.
# __Uncheck__ ''Runtime -> Prevent writing to disk'' for the installation movie only (remember to check this back after the OS installation is complete).
# Play back the matching installation movie above (fast-forward should work).
# If something is missing and the process fails, delete {{~/.pcem/roms/ga686bx/flash.bin}} and {{~/.pcem/nvr/windowsxp.ga686bx.nvr}} and recreate an empty 4GB hard drive image before trying again.
When the Windows installation completes successfully, you will have {{flash.bin}}, {{.nvr,}} and  {{.img}} files that represent your setup. See descriptions/annotations of respective OS installation movies for their paths, names, and hashsums.
* __If some hashsum does not match, you'll have to redo the installation process again, because that's the only way to ensure your actual TAS will sync for other people!__

!! Encodes

%%TAB Windows 95B OSR 2

[module:youtube|v=LnJyyFauV4I]

%%TAB Windows XP SP 3

[module:youtube|v=lfc2k1hKow8]

%%TAB Setting up Windows XP in libTAS

[module:youtube|v=GJodywbJNcM]

%%TAB_END

!!! Using Windows with libTAS

!! flash.bin and NVR

{{flash.bin}} is file a created by the system, it contains the flash memory of the system. Because the ROM gets written into it, we can't distribute it. This file may also contain custom system parameters from previous configs using the chipset.

Similarly, a non-volatile memory file is created in {{~/.pcem/nvr/}} named after your machine config and motherboard (for example {{windowsxp.ga686bx.nvr}}). It is also required for movie sync. It ''can'' be distributed, but it's pointless to distribute it, since the installation movie has to be run anyway, and it recreates the NVR file.

* __You must always start with the {{~/.pcem/roms/ga686bx/flash.bin}} and {{~/.pcem/nvr/windowsxp.ga686bx.nvr}} files that were generated from the Windows XP installation movie__.
** If you use a verification movie to install your game, you should start with {{flash.bin}} and {{.nvr}} that were generated from that.

!! libTAS Settings

* All settings from the [EmulatorResources/PCem#UsingLibtasWithPcem|main PCem guide] apply
* Games that attempt to fetch the current time and date may not work correctly using the default system time in libTAS (which results in 2070-01-01). To fix this, set the system time to a date between 2000-01-01 (946684800 ''System time'' in libTAS) and 2037-12-31 (2145830400).
** 1980-01-01 (2145830400 ''System time'' in libTAS) to 1999-12-31 (946684800) should also work. However, Windows XP is known to take substantially longer to boot up using system times in this range (see Trivia below) and hence this is not recommended.

!!! Trivia

%%TAB Hide

%%TAB Driver VSync setting

* Double-click on the 3dfx icon in the Notification area (alternatively, right-click it and select ''3dfx Voodoo 3 Board - 3dfx Hub'')
* Go to ''3dfx Advanced Features'' tab
* Go to ''Direct3D'' (or ''OpenGL/Glide'', depending on the game) -> ''Speed Settings''
* Change ''Fastest (V-Sync Disabled)'' to ''Normal (V-Sync Enabled)'' by double-clicking on the current option and selecting the other one in the dropdown that appears
This may reduce screen tearing in your game, but it's not guaranteed to help.

%%TAB System time and startup timecodes

|| Starting time ||   3dfx card BIOS || Pentium II BIOS || System Config || Windows XP || Res increase || Mouse appears || Welcome || Desktop ||
|              1 |              2.27 |             3.63 |           9.57 |       13.82 |         44.39 |          44.55 |    48.75 |    51.56 |
|      100000000 | Trial expiry      |                  |                |             |               |                |          |          |
|      300000000 | Trial expiry      |                  |                |             |               |                |          |          |
|      400000000 | Invalid time/date |                  |                |             |               |                |          |          |
|      500000000 | Too long (300+)   |                  |                |             |               |                |          |          |
|      800000000 | Invalid time/date |                  |                |             |               |                |          |          |
|     1000000000 |              2.27 |             3.63 |           9.57 |       13.82 |         53.42 |          55.88 |    60.63 |    68.75 |
|     1100000000 |              2.27 |             3.63 |           9.57 |       13.82 |         44.4  |          44.56 |    48.94 |    51.39 |
|     1200000000 |              2.27 |             3.63 |           9.57 |       13.82 |         44.42 |          44.58 |    48.84 |    51.49 |
|     1300000000 |              2.27 |             3.63 |           9.57 |       13.82 |         44.4  |          44.56 |    48.55 |    53.62 |
|     1400000000 |              2.27 |             3.63 |           9.57 |       13.82 |         53.42 |          55.89 |    58.36 |    68.84 |
|     1500000000 |              2.27 |             3.63 |           9.57 |       13.82 |         53.42 |          55.88 |    58.31 |    68.78 |
|     1600000000 |              2.27 |             3.63 |           9.57 |       13.82 |         53.42 |          55.88 |    59.92 |    68.72 |
|     1700000000 |              2.27 |             3.63 |           9.57 |       13.82 |         44.4  |          44.56 |    48.74 |    51.1  |
|     1800000000 |              2.27 |             3.63 |           9.57 |       13.82 |         44.4  |          44.56 |    48.91 |    51.36 |
|     1900000000 |              2.27 |             3.63 |           9.57 |       13.82 |         44.4  |          44.57 |    49.01 |    51.36 |
|     2000000000 |              2.27 |             3.63 |           9.57 |       13.82 |         53.42 |          55.88 |    59.88 |    68.75 |
|     2100000000 |              2.27 |             3.63 |           9.57 |       13.82 |         53.42 |          55.89 |    58.27 |    68.76 |

Legend:
* __3dfx card BIOS__ = first frame that the text is visible onscreen
* __Pentium II BIOS__ = first frame that the text is visible onscreen
* __System Config__ = frame that the window settles on its new resolution
* __Windows XP__ = frame that the window settles on its new resolution of 640x480
* __Res increase__ = frame that the window settles on its new resolution of 800x600
* __Mouse appears__ = first frame that the mouse appears onscreen
* __Welcome__ = first frame that the welcome screen (or "Windows is starting up") is fully visible
* __Desktop__ = first frame that the desktop is fully visible
%%TAB_END

%%%