- Update boot graphics with new, RLE-compressed and palette-blacked versions from mf.

- Re-enable FreeLDR's "prepare for ros video" routine, but change it to match the new BootVid, which uses Mode 0x12. This is roughly what HalDisplayReset does, which isn't yet implemented (except the latter needs to setup a BIOS call trampoline).
- Fix up some bugs in bootvid and inbv.
- Implement SOS case of DisplayBootBitmap, and implement FinalizeBootLogo. Now bootvid starts to show its colors, but one .bmp is still buggy.

svn path=/trunk/; revision=25751
This commit is contained in:
Alex Ionescu 2007-02-08 00:50:23 +00:00
parent f58c57410c
commit 1b3e649577
21 changed files with 121 additions and 9 deletions

View file

@ -310,7 +310,7 @@ CreateFreeLoaderIniForDos(PWCHAR IniPath,
NULL,
INSERT_LAST,
L"Options",
L"/DEBUGPORT=SCREEN /NOGUIBOOT /SOS");
L"/DEBUGPORT=SCREEN /SOS");
/* Create "DOS" section */
IniSection = IniCacheAppendSection(IniCache,

View file

@ -596,7 +596,7 @@ PcVideoSetMode80x50_80x43(VOID)
{
if (VIDEOCARD_VGA == PcVideoDetectVideoCard())
{
PcVideoSetBiosMode(0x03);
PcVideoSetBiosMode(0x12);
PcVideoSetFont8x8();
PcVideoSelectAlternatePrintScreen();
PcVideoDisableCursorEmulation();
@ -1108,8 +1108,8 @@ PcVideoSync(VOID)
VOID
PcVideoPrepareForReactOS(VOID)
{
PcVideoSetMode80x50_80x43();
PcVideoHideShowTextCursor(FALSE);
PcVideoSetBiosMode(0x12);
PcVideoHideShowTextCursor(FALSE);
}
/* EOF */

View file

@ -932,7 +932,7 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
* Now boot the kernel
*/
DiskStopFloppyMotor();
//MachVideoPrepareForReactOS();
MachVideoPrepareForReactOS();
FrLdrStartup(0x2badb002);
}

View file

@ -847,7 +847,7 @@ VidSetScrollRegion(ULONG x1,
{
/* Assert alignment */
ASSERT((x1 & 0x7) == 0);
ASSERT((x2 & 0x7) == 0);
ASSERT((x2 & 0x7) == 7);
/* Set Scroll Region */
ScrollRegion[0] = x1;

View file

@ -1028,7 +1028,7 @@ Phase1InitializationDiscard(PVOID Context)
{
/* It is, display the boot logo and enable printing strings */
InbvEnableDisplayString(SosEnabled);
//DisplayBootBitmap(SosEnabled);
DisplayBootBitmap(SosEnabled);
}
else
{
@ -1204,7 +1204,7 @@ Phase1InitializationDiscard(PVOID Context)
/* Wait 5 seconds for it to initialize */
Timeout.QuadPart = Int32x32To64(5, -10000000);
Status = ZwWaitForSingleObject(ProcessInfo->ProcessHandle, FALSE, &Timeout);
//if (InbvBootDriverInstalled) FinalizeBootLogo();
if (InbvBootDriverInstalled) FinalizeBootLogo();
if (Status == STATUS_SUCCESS)
{

View file

@ -150,7 +150,7 @@ ShutdownThreadMain(PVOID Context)
InbvSetTextColor(15);
InbvInstallDisplayStringFilter(NULL);
InbvEnableDisplayString(TRUE);
//InbvSetScrollRegion(0, 0, 639, 479);
InbvSetScrollRegion(0, 0, 639, 479);
}
if (Action == ShutdownNoReboot)

View file

@ -19,6 +19,9 @@ INBV_PROGRESS_STATE InbvProgressState;
INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters;
ULONG ResourceCount;
PUCHAR ResourceList[64];
BOOLEAN SysThreadCreated;
ROT_BAR_TYPE RotBarSelection;
ULONG PltRotBarStatus;
/* FUNCTIONS *****************************************************************/
@ -528,3 +531,94 @@ NtDisplayString(IN PUNICODE_STRING DisplayString)
/* Return success */
return STATUS_SUCCESS;
}
VOID
NTAPI
DisplayBootBitmap(IN BOOLEAN SosMode)
{
PVOID Bitmap, Header;
ROT_BAR_TYPE TempRotBarSelection = RB_UNSPECIFIED;
/* Check if the system thread has already been created */
if (SysThreadCreated)
{
/* Reset the progress bar */
InbvAcquireLock();
RotBarSelection = 0;
InbvReleaseLock();
}
/* Check if this is SOS mode */
ShowProgressBar = FALSE;
if (SosMode)
{
/* Check if this is a server OS */
if (SharedUserData->NtProductType == NtProductWinNt)
{
/* It's not, set workstation settings */
InbvSetTextColor(15);
InbvSolidColorFill(0, 0, 639, 479, 7);
InbvSolidColorFill(0, 421, 639, 479, 1);
/* Get resources */
Bitmap = InbvGetResourceAddress(6);
Header = InbvGetResourceAddress(7);
}
else
{
/* Set server settings */
InbvSetTextColor(14);
InbvSolidColorFill(0, 0, 639, 479, 6);
InbvSolidColorFill(0, 421, 639, 479, 1);
/* Get resources */
Bitmap = InbvGetResourceAddress(14);
Header = InbvGetResourceAddress(15);
}
/* Set the scrolling region */
InbvSetScrollRegion(32, 80, 631, 400);
/* Make sure we have resources */
if ((Bitmap) && (Header))
{
/* BitBlt them on the screen */
InbvBitBlt(Header, 0, 419);
InbvBitBlt(Bitmap, 0, 0);
}
}
else
{
/* Is the boot driver installed? */
if (!InbvBootDriverInstalled) return;
/* FIXME: TODO, display full-screen bitmap */
}
/* Do we have a system thread? */
if (SysThreadCreated)
{
/* We do, set the progress bar location */
InbvAcquireLock();
RotBarSelection = TempRotBarSelection;
//InbvRotBarInit();
InbvReleaseLock();
}
}
VOID
NTAPI
FinalizeBootLogo(VOID)
{
/* Acquire lock and check the display state */
InbvAcquireLock();
if (InbvGetDisplayState() == INBV_DISPLAY_STATE_OWNED)
{
/* Clear the screen */
VidSolidColorFill(0, 0, 639, 479, 0);
}
/* Reset progress bar and lock */
PltRotBarStatus = 3;
InbvReleaseLock();
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 262 B

View file

@ -8,6 +8,12 @@ typedef struct _InbvProgressState
ULONG Bias;
} INBV_PROGRESS_STATE;
typedef enum _ROT_BAR_TYPE
{
RB_UNSPECIFIED,
RB_SQUARE_CELLS
} ROT_BAR_TYPE;
VOID
NTAPI
InbvUpdateProgressBar(
@ -27,6 +33,18 @@ InbvEnableBootDriver(
IN BOOLEAN Enable
);
VOID
NTAPI
DisplayBootBitmap(
IN BOOLEAN SosMode
);
VOID
NTAPI
FinalizeBootLogo(
VOID
);
#endif /* NTOSKRNL_INBV_H */