#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 комбинацию клавиш или что-то подобное этому (см. Руководство к вашему эмулятору).