В что?
В что?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Выкладываю. Особо там не чистил) Но вроде работает.
Из всех скинутых примеров реально работает (именно так как надо, без дырок на 50Hz) только от DDp (http://zx-pk.ru/threads/25076-mir!-t...l=1#post801055). Пытаюсь скомпилить на winasm'е с fasm'ом, естественно, fasm не понимает
HIGH FUNCTION X,((X shr 8) and 0ffh)
LOW FUNCTION X,(X&0ffh)
Это можно заменить на какие-нибудь константы?
С данным кодом поведение в эмуляторах такое, что просто разъезжается экран (т.е., он как будто бы становится больше), а на реальной машине вот такое поведение - http://my-files.ru/sf3iwi
Синхронизация слетает.. При настройках в 8 линий в строке (line_per_row), количество видимых строк 30 (v_act), отступы (v_back, v_frone) по 4 сверху и снизу.
Что я делаю не так?
Profi v3.2 -=- Speccy2010,r2
Всё правильно делаете, это мой код немного неудачно написан - если строк больше какого-то количества, то вместо символов в экран лезут уже атрибуты. Не стал исправлять, так как этот момент наглядно показывает уплывание экрана на рк86 при случайном попадании атрибута в экранную область. Надо выставить 1 в параметре no_trans_attr, тогда ничего уплывать не будет.
Плюс к этому параметр under_line должен быть 8 или меньше, иначе не отображаются верхняя и нижняя строки в знакоряде. И параметр offset_line выставлен в 1, иначе символы псевдографики будут покорёжены.
Последний раз редактировалось SegaBoy; 24.11.2017 в 09:45.
Ну да. Остаётся вопрос: как-таки дырки убрать?) Т.е., включить мегарежим.
Вероятно, нужна правильна последовательность отправленных команда на ВГшку и ВТшку, но я, хоть убей, не врубаюсь, какая)
- - - Добавлено - - -
По результатам: в emu80v4 - черный экран, в emub2m - черный экран. Код транслировал winasm+fasm. Вечером попробую на реале.
Но,
здесь непонятно. В болдере и диззи выставлен режим, который через чёрно-белый выход отдаёт чёрно-белую картинку (а через цветной, соответственно, цветную), т.е., там ничего не слетает.
Вот есть другая игра - Замок, вот она в цветном режиме у меня разлетается, а в чёрно-белом норм, а вот эти две прекрасно себя чувствуют в обоих режимах.
Раз уж на то пошло, то, естественно, после того, как я получу режим без дырок между строчками, мне потребуется цвет)
Я использовал Прекрасный ассемблер. Проверял в emu v1.01 (так он о себе сообщает) и в emu80 v4.0.266, в обоих случаях выбрав конфиг Радио-86РК. А так же на реальном Апогее (поправив адреса портов и подпрограмм).
Во вложении скриншоты с эмуляторов и сгенерированый .rk файл.
П.С. В прошлом сообщении перепутал - параметр offset_line должен быть сброшен в 0.
Последний раз редактировалось SegaBoy; 07.12.2017 в 00:59.
Сбросил, странлировал в "прекрасном" и вот что получил:
Скрытый текст
[свернуть]
Забегая вперёд, скажу, что изменения offset_line в моём случае ни на что не повлияли.
А вот так выглядит болдер на этих же эмуляторах:
Скрытый текст
[свернуть]
Что-то мы делаем не так) Вчера пытался дизасемблировать болдеровский режим, но то ли недостаточно времени уделил, то ли у меня руки из одного места, что я не тот кусок кода принял за установку видео режима, но пока безрезультатно.
На всякий случай прилагаю самого болдера который запускал (а-то их тут много бродит разных).
И, да, кстати, на живой РК86 это болдер работает (с блекджеком и так далее).
- - - Добавлено - - -
И вот ещё, вот, вдогонку, дизассемблированный кусок кода с установками болдера.
Кажется, тут всё.
Проверил по параметрам (не по значениям, а по тому, куда они отправляются), за некоторыми оговорками очень похоже на то, что в коде-примере.
И вот он не запускается почему-то.. Ну, т.е., сам код отрабатывает, но на выходе чёрный экран, хотя я туда пытаюсь что-то печатать..
Скрытый текст
prompt equ 0F86Ch
clr_scr equ 0FACEh
wait_any_key equ 0xF803 ; ожидание нажатия клавиши
screenlc equ 077D0h ; фиксируем левый верхний угол видеопамяти
screenh equ 25 ; высота видимой области
screenw equ 64 ; ширина видимой области
; параметры горизонтальной строки (в символах)
h_back equ 8 ; отступ слева
h_act equ 64 ; видимых символов в строке
h_front equ 6 ; отступ справа
h_sync equ 8 ; строчный синхроимпульс (2..32)
h_total equ h_back + h_act + h_front ; общее количество символов в строке без учёта синхроимпульса (1..80)
scr_addr: dw 0000h
org 0100h
InitDisplay:
xra a
sta 0xC001
mvi a,04DH
sta 0xC000
mvi a,022H ;в коде от SB - 25h
sta 0xC000
mvi a,077H ;в коде 97h
sta 0xC000
mvi a,053H
sta 0xC000
mvi a,027H
sta 0xC001
mvi a,080H
sta 0xC001
sta 0xC000
sta 0xC000
lda 0xC001
lda 0xC001
ani 020H
InidDma:
mvi a,080H
sta 0xE008
mvi a,000H
sta 0xE004
mvi a,060H
sta 0xE004
mvi a,0A9H
sta 0xE005
mvi a,04AH
sta 0xE005
mvi a,0A4H
sta 0xE008
mvi a,036H
sta 0xA003
mvi a,076H
sta 0xA003
mvi a,0B6H
sta 0xA003
mvi a, 0A4h
sta 0xE008
mvi A, 0Fh
lxi HL, 078B2h
repeat:
mvi M, 11h
inx H
dcr A
jnz repeat
;call repeat
jmp prompt[свернуть]
Монитор РК86 выставляет такие параметры инициализации ВГ75:
0x4D - символов в строке = 78
0x1D - строк в кадровом импульсе = 1, строк в кадре = 30
0x99 - подчёркивание на линии 10, количество линий в строке = 10
0x93 - первая линия символа -1, невидимые атрибуты, курсор мигающее подчёркивание, строчный синхроимпульс = 8 символов
Болдер инициализирует ВГ75 так:
0x4D - символов в строке = 78
0x22 - строк в кадровом импульсе = 1, строк в кадре = 35
0x77 - подчёркивание на линии 8, количество линий в строке = 8
0x53 - первая линия символа 0, невидимые атрибуты, курсор мигающее подчёркивание, строчный синхроимпульс = 8 символов
- - - Добавлено - - -
Ну да, похоже на то = ))
Добавил процедуру инициализации экрана в пример draw_pic - экран становится уже, переходит в режим 60Hz, но всё работает. Проверил на двух эмуляторах.
Вложение 63038
Последний раз редактировалось SegaBoy; 07.12.2017 в 01:00.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)