Commit Graph
62 Commits
Author SHA1 Message Date
Hermès Bélusca-Maïto c2aaa52bf2 [BOOTVID] Implement a generic linear framebuffer boot video driver (#8618)
Its purpose is to offer an out-of-the-box generic framebuffer video
(a video miniport driver for win32k will be introduced in a future PR)
to ease ReactOS porting to other possibly non-PC-compatible systems,
where no VGA-compatible video is present and only linear framebuffers
are available; for example: XBOX, UEFI with GOP only, AppleTV, etc.

Of course, once ReactOS is ported, one can then (and should) write,
or use existing video drivers tailored to the system of interest.

Together with our FreeLoader, this driver could also be employed for
of porting/modding Windows 2000/XP/2003 attempts to other platforms,
as this has been done by external contributors.

Current limitations:
- Only supports 32 bits-per-pixel ARGB format. This limitation will be
  removed in subsequent PR(s).
- May be slow during rendering (region color filling and scrolling);
  I will try to improve this as time goes.

This driver's code is loosely based upon preliminary code by Justin Miller
and on the existing XBOX bootvid implementation.
Tested by Justin Miller (@TheDarkFire) for UEFI, and by Sylas Hollander
(@DistroHopper39B) with his AppleTV port.
It has also been tested with VESA linear modes on PC by myself.
2026-01-30 21:21:30 +01:00
Hermès Bélusca-Maïto fda2ee2ad8 [BOOTVID] Modularize the different bootvid's build rules (#8548)
The aim is to be able to compile multiple bootvids for a given ReactOS
build without having to duplicate the same commands.
2026-01-18 18:19:01 +01:00
Hermès Bélusca-Maïto d4ffcf81be [BOOTVID][NTOS:INBV] Improve SAL annotations for *BufferToScreenBlt() and *ScreenToBufferBlt() 2026-01-03 14:19:25 +01:00
Hermès Bélusca-Maïto 5674e5d32b [BOOTVID][HAL][NTOS:INBV][NDK] *DisplayString(): Use a more suitable string pointer parameter type
Use `PCSTR` for the type of the (Hal,Inbv,Vid)DisplayString() routines'
`String` parameter, instead of `PCHAR` or `PUCHAR`, since it points to a
NUL-terminated string. (The buffer isn't a counted string.)

And improve SAL annotations along the way.
2026-01-03 14:19:24 +01:00
Hermès Bélusca-Maïto 3b33b1025e [BOOTVID] Use an "unsigned" (U)RECT structure for the VidpScrollRegion (#8547)
This makes the code more readable than using e.g. `VidpScrollRegion[0]`,
`VidpScrollRegion[1]` etc. instead of `VidpScrollRegion.Left`,
`VidpScrollRegion.Top` respectively.

Based on a suggestion by Dmitry Borisov.
2026-01-03 14:19:23 +01:00
Hermès Bélusca-Maïto 5894d0b443 [BOOTVID] Reorganize some definitions used in the per-architecture bootvids (#8547)
In addition:
- simplify the no-op `PrepareForSetPixel()` definitions;
- const-ify immutable data arrays for the VGA PC bootvid.
2026-01-03 14:19:15 +01:00
Hermès Bélusca-Maïto 44e4781600 [BOOTVID] Split common.c into graphics-specific and console (in console.c) parts (#8547)
In addition:
- move back common function prototypes to precomp.h;
- const-ify `VidpFontData` and adjust its usages;
- improve SAL annotations for `InitPaletteWithTable()`;
- rename the (Vid)ResetDisplay() parameter to "SetMode".
2026-01-03 13:42:47 +01:00
Dmitry Borisov c8e1772109 [BOOTVID:PC98][PC98VID] Disable the text layer when setting mode (#8539)
The previous approach was causing the contents of TVRAM to be visible after boot:
https://github.com/user-attachments/assets/df6d2782-4d54-41ab-b4c9-caeb170c4e1e

Fixes a regression introduced in 0fa49018cd.

CORE-17977
2025-12-28 14:40:17 +03:00
Stanislav Motylkov c3f3b2b0ad [BOOTVID:XBOX] Fix MSVC build
Fix two similar warnings, that were treated as errors:
- warning C4146: unary minus operator applied to unsigned type, result still unsigned

Addendum to fa1ec0a2ed. CORE-16216 CORE-16219
2025-12-19 15:56:07 +01:00
Stanislav Motylkov 52e02af86b [BOOTVID] Fix build for ARM port
- Move functions from header to main source, keeping their definitions
- Fix typo DefaultPalette -> VidpDefaultPalette
- Add missing PrepareForSetPixel() function

Addendum to 5f2ca473dc and cd91271796. CORE-17617 CORE-17604
2025-07-02 22:24:46 +02:00
Katayama Hirofumi MZ fe11f7a2e5 [REACTOS] Refresh old URLs (#7632)
URLs are getting old. We have to
update URLs for documentation
purpose.
JIRA issue: CORE-19963
- Refresh old URLs.
- Add " (DEAD_LINK)" labels
  to dead links.
- Use MS Learn links rather
  than MSDN ones.
- Some dead links revived by
  Web Archive.
- Don't change Wine Tests
  and Wine Sync.
- Don't change 3rd party libraries.
- Don't append "redirected" labels.
2025-01-28 13:36:45 +09:00
Hermès Bélusca-Maïto b84f2a1cdc [KDVM] Fix definition of RtlEqualMemory() (#6988)
Comply with the standard documented behaviour:

https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-rtlequalmemory#return-value
> RtlEqualMemory returns TRUE if Source1 and Source2 are equivalent; otherwise, it returns FALSE.

and
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-rtlcomparememory#return-value
> [...] If all bytes match up to the specified Length value, the Length value is returned.
2024-06-10 22:29:22 +02:00
Hermès Bélusca-Maïto 3b62a89d4d [BOOTVID] Don't NTAPI non-exported functions; remove useless @implemented (#6650) 2024-03-23 15:16:00 +01:00
Hermès Bélusca-Maïto ff790a9111 [BOOTVID] Add file copyright information headers (#6650) 2024-03-23 15:15:41 +01:00
Hermès Bélusca-Maïto 7b956a0a1f [BOOTVID] Fix definition of GetFontPtr(). 2023-12-24 21:41:09 +01:00
Hermès Bélusca-Maïto f8f9c170b1 [KDGDB] Fix GCC build. Addendum to commits b577ac07 and de81021ba.
See also PR #5217.
2023-04-05 03:33:42 +02:00
Hermès Bélusca-Maïto 641c89d834 [KDVBOX] Fix port name comparison. 2023-04-05 03:33:38 +02:00
Hermès Bélusca-Maïto b577ac073e [KDGDB] Fix compilation following commit de81021ba (#4930)
Use cast to be compatible with "public" structure definition.
2022-12-06 00:53:53 +01:00
Jérôme Gardou 6e0d8de013 [KDGDB] Support "int 0x2c" for x86 & amd64 targets 2021-07-05 10:55:47 +02:00
Victor Perevertkin 34593d933b [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
Jérôme Gardou 9930eeca76 [KDGDB] Implement TIB address retrieval 2021-05-11 11:00:49 +02:00
Jérôme Gardou 0ab44664b6 [KDGDB] Remove debugging leftover 2021-04-28 14:52:05 +02:00
Jérôme Gardou 3ee1eb42a5 [KDGDB] Avoid looping for ever when something unexpected happens 2021-04-28 13:10:23 +02:00
Jérôme Gardou 0eea78648c [KDGDB] Adapt to amd64 2021-04-28 13:10:23 +02:00
Jérôme Gardou 10379811c0 [KDGDB] Break and ignore when being prompted. 2021-03-30 17:20:57 +02:00
Jérôme Gardou 00ce9ad42a [CMAKE] Declare KD stub Dlls as kerneldll 2021-03-24 15:20:06 +01:00
Hervé Poussineau 2a6d8465d6 [KDVBOX] Fix compilation with GAS x64 2021-01-28 23:10:01 +01:00
Jérôme Gardou 3acbec4851 [KDGDB] Always use kernel stack to get stack frame 2020-11-09 10:47:05 +01:00
Stanislav Motylkov 2a77e359e4 [XBOX] Move NV2A XGPU definitions into header file
TODO: helper functions should be also moved. CORE-16216
2020-08-26 16:58:01 +03:00
Dmitry Borisov 06cbc2acd2 [BOOTVID] More improvements for PC-98 (#2936)
- Fix failure handling
- Reduce memory mapping that's not needed
2020-07-29 19:10:39 +03:00
Dmitry Borisov e318801c1c [BOOTVID] Fix screen buffer copying code for PC-98 (#2936) 2020-07-29 19:10:39 +03:00
Dmitry Borisov c87be643f8 [BOOTVID] Improve text scrolling performance for PC-98 (#2936) 2020-07-29 19:10:39 +03:00
Dmitry Borisov 5d40981efa [BOOTVID] Fix BitBlt behavior (#2936) 2020-07-29 19:10:38 +03:00
Dmitry Borisov da9384b918 [BOOTVID] Annotate some functions to avoid confusing (#2936)
Also fix some magic constants.
2020-07-29 19:10:38 +03:00
Dmitry Borisov 4d54b8ce69 [BOOTVID] Fix drawing strings on top of the bitmap (#2936)
Also fix VGA pixel drawing.

CORE-15896
2020-07-29 19:10:38 +03:00
Serge Gautherie 11345aedd8 [FORMATTING] [CMAKE] Remove space in 'if (' (#2847) 2020-05-26 20:24:02 +02:00
Stanislav Motylkov fa1ec0a2ed [BOOTVID][HALXBOX] Implement boot video driver for Xbox (#2774)
Also make HalpBiosDisplayReset() function always return FALSE,
because we don't have a BIOS on Xbox.

CORE-16216 CORE-16219
2020-05-17 19:18:32 +03:00
Dmitry Borisov e901489574 [BOOTVID] Add boot video driver for NEC PC-98 series (#2787) 2020-05-15 22:28:34 +03:00
Stanislav Motylkov cd91271796 [NTOSKRNL][HAL][BOOTVID] Some more code refactoring
- Add boot video color constants
- Refactor palette initialization
- Move some common stuff in right place
- Get rid of some magic constants and hardcoded values
- Get rid of TopDelta variable (calculated at compile time)
- Update SAL annotations

Addendum to 5f2ca473. CORE-16216 CORE-16219
2020-05-12 15:56:37 +03:00
Sylvain Deverre 140ec9d037 [KDGDB] Fix GCC8 build 2020-05-01 16:37:13 +02:00
Dmitry Borisov 4501bbac8f [KDCOM][NTOS:INBV][FREELDR] Decrease default baud rate for PC-98 target (#2601)
According to PC-9801 Bible p. 50, divisor for PIT will become unsupported in some cases after having removed the fractional part. Replace 19200 value with 9600 which is supported by both 10 MHz and 8 MHz machines.
2020-04-21 23:22:42 +03:00
Sylvain Deverre 309e9c13e1 [KDGDB] Allow kdgdb to continue when hit by a first-chance exception.
When gdb receives a fault, it converts it to "signal", and send "C"
command to server to transfer the signal it couldn't handle.

On ReactOS (and Windows ?) side, we tell KD API that we continue with an
error code, so the exception handler can be called.

This is useful when playing with gflags, especially +soe, with KDGDB.
2020-04-19 15:01:41 +02:00
Hermès Bélusca-Maïto 85f3eeabc4 [BOOTVID] Addendum to 5f2ca473: Forgot to include the precompiled header. 2020-04-09 17:45:40 +02:00
Dmitry Borisov 5f2ca473dc [BOOTVID] Code refactoring. (#2510)
- Abstract the VGA and LCD code.
- Create a common file for all platforms.
2020-04-09 15:56:16 +02:00
Dmitry Borisov df23bb779e [BOOTVID] Move the VGA code into the PC directory. (#2510) 2020-04-09 15:33:58 +02:00
Dmitry BorisovandHermès Bélusca-Maïto 1610367fe2 [BOOTVID][NTOSKRNL][HALX86] Move hardcoded coordinates of bootvid into one place. (#2504)
Co-Authored-By: Hermès Bélusca-Maïto <[email protected]>
2020-04-09 15:17:48 +02:00
Jérôme Gardou de369ce26b [KDGDB] Various fixes and improvements 2020-03-30 07:53:34 +00:00
Dmitry Borisov 222e79232c [CPORTLIB][NTOS:INBV][KDCOM][FREELDR] Add ComPort library for NEC PC-98 series (#2407)
There are 2 known serial ports:
    COM1 - based on Intel 8251A
    COM2 - National Semiconductor 16550
2020-03-06 19:50:31 +01:00
Hermès Bélusca-Maïto aca7ff54b0 [BOOTVID] Correctly fix scrolling and printing when the scroll region contains the whole screen.
Addendum fixes to ca370b49 (r52239) and a965ca6b (r52409).

- Fix the comments to explain what is really happening.

- Fix the boundary calculations in VidDisplayString() so that we can
  correctly display a character in the very last column before going
  to the next line, and fix similarly the vertical boundary calculation.

- Port the fixes to the ARM code.
2019-12-23 21:06:59 +01:00
Hermès Bélusca-Maïto 93e9877225 [BOOTVID] Factor out the common code that is used before setting pixels. 2019-12-23 21:06:58 +01:00