Как установить правильный размер экрана

#assembly #x86-16 #emu8086

#сборка #x86-16 #emu8086

Вопрос:

Я пытаюсь создать игру-лабиринт в emu8086. Сначала я хочу сделать экран дисплея белым в полноэкранном режиме, затем напечатать координаты фона лабиринта черным, но когда я делаю его полноэкранным, он становится пикселизированным.. Как мне настроить весь экран дисплея в полноэкранном режиме на белый и напечатать символ 219 черным вместо серебристого.

Это несколько скриншотов моей проблемы:

http://prntscr.com/n9m5xm — Маленький экран http://prntscr.com/n9m7v5 — Полный экран

 mov ax,19 
int 10h

mov ah, 09h
mov cx, 1000h
mov al, 20h
mov bl, 0F0h  ; This is Black amp; White.
int 10h

mov  dl, 0   ;Column
mov  dh, 1   ;Row
mov  bh, 0    ;Display page
mov  ah, 02h  ;SetCursorPosition
int  10h


mov cx,0
first: 
mov  al, 219
mov  ah, 0Eh  ;Teletype 
int 10h  
inc cx  
cmp cx,80
jne first
  

Комментарии:

1. Это проблема emu8086. Вы устанавливаете режим 13h, который равен 320×200, изменение размера окна эмулятора не изменит разрешение, установленное вашей программой. Конечно, эмулятор должен масштабировать фреймбуфер 320×200, это простая задача, но, по-видимому, emu8086 с этим не справляется.

2. Итак, что я могу сделать, чтобы моя игра воспроизводилась в полноэкранном режиме > 🙁

Ответ №1:

Ваша игра воспроизводится в «полноэкранном режиме». Но экран вашего кода виртуальный. И этот «полноэкранный режим» устанавливается emu8086. Таким образом, вы не можете установить полноэкранный режим в эмуляторе. Ваш (эмулируемый) код всегда будет выполняться в окне, которое считается «полным» экраном.

Чтобы окно эмулятора расширилось на весь экран, используйте AltGrEnter комбинацию клавиш или что-то подобное этому (см. Руководство к вашему эмулятору).