In revision 20194 Brandon Turner changed to default resolution to
800x600x16. Many people were not happy with it, especially GreateLord
how has got a monitor that is capable of that resolution. On the other
hand ReactOS looks way better in 800x600x16. Especially if we want to
include photo wallpapers, it is a bad idea imo if the they won't work
with the standard resolution.
It was GreatLord's idea to make it a option at 1st stage installer, that
way the default can stay 800x600 but people with old monitors got a
chance to choose 640x680. So here is the patch.
Maarten Bosma
Index: subsys/system/usetup/settings.c
===================================================================
--- subsys/system/usetup/settings.c (revision 20296)
+++ subsys/system/usetup/settings.c (working copy)
@@ -521,6 +521,66 @@
return FALSE;
}
+ /* Set the resolution */
+ // ToDo:
+ // * get Driver Name into Path
+ PWCHAR Buffer;
+ if (!InfGetDataField(Context, 4, &Buffer))
+ {
+ DPRINT("InfGetDataField() failed\n");
+ return FALSE;
+ }
+ ULONG Width = wcstoul(Buffer, NULL, 0);
+ Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
+ L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware
Profiles\\Current\\System\\CurrentControlSet\\Services\\VBE\\Device0", // FIXME: Do
not hardcode driver name
+ L"DefaultSettings.XResolution",
+ REG_DWORD,
+ &Width,
+ sizeof(ULONG));
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT("RtlWriteRegistryValue() failed (Status %lx)\n", Status);
+ return FALSE;
+ }
+
+
+ if (!InfGetDataField(Context, 5, &Buffer))
+ {
+ DPRINT("InfGetDataField() failed\n");
+ return FALSE;
+ }
+ ULONG Hight = wcstoul(Buffer, NULL, 0);
+ Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
+ L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware
Profiles\\Current\\System\\CurrentControlSet\\Services\\VBE\\Device0", // FIXME: Do
not hardcode driver name
+ L"DefaultSettings.YResolution",
+ REG_DWORD,
+ &Hight,
+ sizeof(ULONG));
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT("RtlWriteRegistryValue() failed (Status %lx)\n", Status);
+ return FALSE;
+ }
+
+ if (!InfGetDataField(Context, 6, &Buffer))
+ {
+ DPRINT("InfGetDataField() failed\n");
+ return FALSE;
+ }
+ ULONG Bpp = wcstoul(Buffer, NULL, 0);
+ Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
+ L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware
Profiles\\Current\\System\\CurrentControlSet\\Services\\VBE\\Device0", // FIXME: Do
not hardcode driver name
+ L"DefaultSettings.BitsPerPel",
+ REG_DWORD,
+ &Bpp,
+ sizeof(ULONG));
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT("RtlWriteRegistryValue() failed (Status %lx)\n", Status);
+ return FALSE;
+ }
+
+ /* Enable the right driver */
if (!InfGetDataField(Context, 3, &ServiceName))
{
DPRINT("InfGetDataField() failed\n");
Index: bootdata/txtsetup.sif
===================================================================
--- bootdata/txtsetup.sif (revision 20296)
+++ bootdata/txtsetup.sif (working copy)
@@ -66,9 +66,10 @@
halmp.dll = 2,hal.dll
[Display]
-;<id> = <user friendly name>,<spare>,<service key name>
-vga = "VGA Display",,Vga
-vbe = "VESA Display",,VBE
+;<id> = <user friendly name>,<spare>,<service key
name>,<hight>,<width>,<bpp>
+vga = "VGA Display (640x680x8)",,Vga,640,480,8
+vbe_lowres = "VESA Display (640x680x8)",,VBE,640,480,8
+vbe = "VESA Display (800x600x16)",,VBE,800,600,16
[Map.Display]
;<id> = <pnp id string>