Skip to content

Commit 223e949

Browse files
refactor: don't report unsupported video modes
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1 parent 0297ac6 commit 223e949

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

  • src/Spice86.Core/Emulator/InterruptHandlers/VGA

src/Spice86.Core/Emulator/InterruptHandlers/VGA/VgaBios.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,24 +1477,26 @@ public void VbeGetControllerInfo() {
14771477

14781478
/// <inheritdoc cref="IVesaBiosExtension.VbeGetModeInfo"/>
14791479
public void VbeGetModeInfo() {
1480-
ushort modeNumber = State.CX;
1480+
ushort requestedModeNumber = State.CX;
1481+
const ushort SupportedVbeMode = 0x0102;
1482+
ushort modeNumber = (ushort)(requestedModeNumber & 0x3FFF);
14811483
ushort segment = State.ES;
14821484
ushort offset = State.DI;
14831485
uint address = MemoryUtils.ToPhysicalAddress(segment, offset);
14841486

1485-
// Get mode parameters based on VESA mode number
1487+
// Get mode parameters based on VESA base mode number (without high flag bits)
14861488
(ushort width, ushort height, byte bpp, bool supported) = GetVesaModeParams(modeNumber);
14871489

1488-
if (!supported) {
1490+
if (!supported || modeNumber != SupportedVbeMode) {
14891491
if (_logger.IsEnabled(LogEventLevel.Warning)) {
14901492
_logger.Warning("{ClassName} INT 10 4F01 VbeGetModeInfo - Unsupported mode 0x{Mode:X4}",
1491-
nameof(VgaBios), modeNumber);
1493+
nameof(VgaBios), requestedModeNumber);
14921494
}
14931495
State.AX = (ushort)VbeStatus.Failed;
14941496
return;
14951497
}
14961498

1497-
var modeInfo = new VbeModeInfoBlock(Memory, address);
1499+
VbeModeInfoBlock modeInfo = new VbeModeInfoBlock(Memory, address);
14981500
modeInfo.Clear();
14991501

15001502
// Mode Attributes

0 commit comments

Comments
 (0)