User Tag List

Страница 9 из 16 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 151

Тема: Ретро-ЯП Millfork для Atari, Apple II, ZX Spectrum, MSX, CP/M, NES, Game Boy и MS-DOS

  1. #81

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Пока вы тут спорите об эмуляторах, я потиху начал разбираться с графикой, и как это всё прикрутить к Millfork.
    Прошерстив кучу текстов и поковыряв исходники ASM, что генерит Graph2Font, получил такую картину:



    Для начала определяем режим работы Antic, для примера обычный текстовый режим 2.
    Создадим anticMap (DisplayList) в виде array(byte), в котором опишем режим отображения блока из 8 линий.

    Там же зададим карту с тайлами array(byte) charMap, где какой символ будет расположен (0x00 - пустое место).

    И останется лишь задать адрес расположения в памяти $D402, $D403

    Надо отдать должное MillFork без проблем даёт работать с «указателями» на расположение массива в памяти и даже больше
    внутри самого массива можно указать на расположение в памяти (вот такая рекурсия).

    Для чего это нужно я не совсем пока понял, но примерах, что мне встречались, DisplayList для Antic заканчивается JPM на начало самого себя.

    Так не менее интересный момент. Когда я захотел использовать свой шрифт, то выяснился нюанс. Поскольку память ATARI устроена таким образом,
    что адрес расположения шрифта задаётся только страшим байтом адреса в $D409, то это внесло некоторые ограничения и шрифт должен располагаться кратно 0x0400.

    Встала дилемма, у нас-то не ассемблер и ALIGN не сделать. Однако, как выяснилось Millfork писали умные люди и уже обо всём позаботились. Достаточно при
    создании массива указать выравнивание и проблема решена

    Код:
    array(byte) font align(0x0400) = [
    Ну и поигравшись с разными значениями ANTIC можно получить не менее умилительные шрифты



    p.s. с прерываниями я пока не заморачивался, хотел разобраться для начала с базовой частью.
    Вложения Вложения

    Эти 2 пользователя(ей) поблагодарили breeze за это полезное сообщение:

    andrews(26.10.2024), Oleg N. Cher(27.10.2024)

  2. #82

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Здесь "выхлоп" не на "умильные шрифты" может быть направлен, а не на английские шрифты и всякие научные знаки типа производной, интеграла и прочего, имхо.

  3. #83

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,453
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    166
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    align(0x0400)
    Не многовато? для шрифтов хватит выравнивание по 256 байт.

    - - - Добавлено - - -

    Цитата Сообщение от andrews Посмотреть сообщение
    Здесь "выхлоп" не на "умильные шрифты" может быть направлен, а не на английские шрифты и всякие научные знаки типа производной, интеграла и прочего, имхо.
    и лучше на уникодные эмодзи и всякую требуху.
    Последний раз редактировалось Shiny; 27.10.2024 в 06:06.

  4. #84

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Question

    Цитата Сообщение от Shiny Посмотреть сообщение
    Код:
    align(0x0400)
    Не многовато? для шрифтов хватит выравнивание по 256 байт.
    Да вот видимо многовато Вообще брал из исходников graph2font:

    Код:
    	.ALIGN $0400
    fnt	ins "logo2.fnt"
    У них там вообще какой-то дико навороченный код с туевой хучей IFDEF.

    К слову вопрос, что-то у меня не получается вектор прерываний указать. В дебаге не попадаю в эту область ни при каком раскладе.

    Если я правильно понял, нужно сделать следующие шаги:

    1) Запрещаем обработчик:

    Код:
        LDA #0
        STA $D40E
    2) Устанавливаем вектор на адрес с обработчиком:

    Код:
        LDA #lo(handler1)
        STA $FFFA
        LDA #hi(handler1)
        STA $FFFB
    3) Разрешаем обработчик:

    Код:
        LDA #$C0
        STA $D40E
        RTS
    И нифига по адресу handler1 мы так и не попадаем ни разу. Причём в том же куске из graph2font это работает на ура. Может тут тоже какое «выравнивание по памяти необходимо» ?

    Причём интересно, что в примерах из книжек они вектор выставляют по адресу $0200, $0201 кому верить?

    - - - Добавлено - - -

    Забавно, нашел в чём дело, сбил с толку комментарий:

    Код:
        ;switch off ROM to get 16k more ram
        lda    #$fe
        sta    $D301
    Это не просто отключает 16к, без этого вообще NMI не фунциклирен.

    p.s. К слову выравнивание по $0400 в graph2font обусловлено тем, что они на лету шрифты чанки переключают для следующей области экрана

  5. #85

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,453
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    166
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Просто .xex без извращений:
    Код:
    *=$2000
    fnt .file "font.fnt"
    start: 
     lda #font/256
     sta 756
     rts
    *=$2E0
    .word start
    Что касается прерывания, то непонятно, что ты хочешь. Можно включить VBlank Interrupt(см. в моих исходниках 16К вызов jsr SETVBV). Если ты берешься за адреса $200-$201, то это Display List Interrupt. В этом случае нужно установить бит 7 для одной из строк - впиши вместо 2 $82 и на этой линии экрана произойдет прерывание. Но если ты поменяешь какие-то параметры экрана - шрифт и цвет, то параметры применятся ко всему экрану. Сам увидишь.

  6. #86

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    Просто .xex без извращений:
    в смысле? это ж исходник с ассемблером, да? Как из него .xex получить?

  7. #87

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,453
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    166
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

  8. #88

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    xasm ругается на это
    Код:
    fnt .file "font.fnt"
    ERROR: Illegal instruction
    Последний раз редактировалось andrews; 27.10.2024 в 19:36.

  9. #89

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,453
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    166
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    тогда так
    Код:
    	ORG $2000
    fnt ins "HOHL.FNT"
    start
    	lda #fnt/256
    	sta 756
    	ldy #0
    setc	tya
    	sta (88),y
    	iny
    	bne setc
    	jmp *
    	run start
    Вложения Вложения
    • Тип файла: zip a.zip (2.0 Кб, Просмотров: 60)

  10. #90

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так работает. Русский шрифт есть? И как что-то выводить по-русски?

Страница 9 из 16 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 11
    Последнее: 08.12.2023, 17:18
  2. Bad Apple для MSX/MSX2
    от Pyhesty в разделе MSX
    Ответов: 4
    Последнее: 31.05.2021, 21:45
  3. Перенос игр с Game Boy на ZX Spectrum
    от CityAceE в разделе Программирование
    Ответов: 104
    Последнее: 14.02.2019, 10:56
  4. Game Boy Advance
    от megabyte в разделе Nintendo
    Ответов: 8
    Последнее: 22.05.2006, 14:48
  5. Game Boy Advance в Питере.
    от Surfin_Bird в разделе Nintendo
    Ответов: 10
    Последнее: 21.08.2005, 09:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •