User Tag List

Страница 65 из 99 ПерваяПервая ... 616263646566676869 ... ПоследняяПоследняя
Показано с 641 по 650 из 985

Тема: WarCraft 1 - под классический 128+TR-Dos

  1. #641

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    при чем здесь это?
    1 установи стек
    2 включи страницу
    При чём тут это? Алоний чётко сказал ещё три месяца назад - мои снапы не запускаются на эмуле, настроенным быть Evo. И не могут быть запущены, пока не переткнёшь модель компьютера на нужную.Что его дико бесит и он постоянно орёт дурниной, чтобы я не делал снапы, а делал scl или trd
    Но я принципиально не хочу, чтобы технические демы распространялись и оседали в аналах. Это просто демонстрашки текушей реализации алгоритмов, а не плэйби демо.

    и выдели кстати свап страницами в отдельную процедуру
    У меня макросы. Или ты намекаешь на лютую экономию памяти? А макрос что ли не как отдельная процедура оформляется интерпритатором?

    Что он там меняет мне вообще по барабану, при сохранении снапа ты же указываешь откуда будет старт, вот там я и ставлю все нужные включения страниц, установку регистра прерываний и т.п.
    Я хз почему, но Алоний чётко сказал - это не работает и не может работать. Никак. Пока не переткнёшь в эмуле вручную ROMы на нормальный спек.

  2. #642

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от LW Посмотреть сообщение
    Я наверное чего-тог не понимаю, но это на кой чёрт?
    ну ты как маленький
    это чтобы по приходу прерывания знать какая страница включена.

    И вообще нельзя разве обойтись без OR? а сразу в аккумулятор загрузить то что надо...
    З.Ы. Сам сторонник процедур, но иногда тратить 17 тактов на call и 10 на ret роскошь
    вот по твоему примеру человек в макрос вписал процедуру свапа страниц

    и теперь тратит по 12 байт вместо 5

    Кроме того, если в прерываниях висит музыка/звуки/или иная хрень требующая переключения страниц в прерываниях, надо до кучи перед переключением страниц запрещать оные, и сохранять номер текущей страницы с переменной, дабы потом корректно выйти из прерывания.
    штааа?
    ты в каком ZX review такое ламерство вычитал?

    зачем запрещать прерывания?

    Код:
    set_page
    	push	bc		;делай раз сохраняем BC
    	ld	bc,#7ffd	;делай два ВС=порт
    	or	#10		;делай три накладываем на страницу экран и ROM
    cur_vpage equ $-1
    	ld	(page),a	;сохраняем текущие показатели на случай переключения на прерываниях
    	out	(c),a		;включаем текущую страницу
    	pop	bc		;восстанавливаем ВС
    	ret
    и где их тут запрещать и для чего?

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

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    У меня макросы. Или ты намекаешь на лютую экономию памяти? А макрос что ли не как отдельная процедура оформляется интерпритатором?
    нет
    вот это вывод спрайта
    написанный на макросах

    Код:
    ;can work in slow mem
    prspr_y0_x0go
            ex de,hl ;4
    	SPR2LINES0_x0
    prspr_y2_x0_hgt16go
    	SPR2LINES1_x0
    prspr_y4_x0_hgt14go
    	SPR2LINES0_x0
    prspr_y6_x0_hgt12go
    	SPR2LINES1_x0
            DOWNHL8_AFTERLINES1
    prspr_y0_x0_hgt10go
    	SPR2LINES0_x0
    prspr_y2_x0_hgt8go
    	SPR2LINES1_x0
    prspr_y4_x0_hgt6go
    	SPR2LINES0_x0
    prspr_y6_x0_hgt4go
    	SPR2LINES1_x0
            DOWNHL8_AFTERLINES1
    prspr_y0_x0_hgt2go
    	SPR2LINES0_x0
            org $-1 ;-4
    prspr_y2_x0_hgt0go
            PRSPREND
    а вот макросы для того чтобы это собралось в какой-то код

    Скрытый текст

    Код:
            macro GOPRSPR
            ld sp,hl
            exx
             if FULL7FFD
             pop de ;нельзя портить de', bc
             out (c),e ;pg
             ld a,d ;f(yphase)
             else
             pop bc
             ld a,c
             out (0xfd),a ;-1t
             endif
            pop hl ;gfx
            pop de ;scr
            ld sp,hl
            pop hl ;l = f(hgt, x&4)
             if FULL7FFD
            ld h,a ;f(yphase)
             else
            ld h,b ;f(yphase)
             endif
            jp (hl) ;f(yphase,sprhgt) ;для sprhgt=18 переход сразу на отрисовщик (x4) или на jp (x0), иначе на задержку
            endm
    
            macro PRSPREND
            exx
            add hl,de
            GOPRSPR
            endm
    
    ;вывод графики и атрибутов одновременно (по идее выигрыш 10(ret)+2*31(downhl8attr) = 72, т.е. можно раздуть на 8 тактов на двойную строку)
    
    ;входим с разных мест, получаем разную высоту спрайта при заданном yend = f(yphase, sprhgt)
    ;для нечётных yphase downhl8 оказывается в другом месте зигзага (т.к. графика спрайта одна на оба варианта)
    
            macro SPR2LINES0_x0 ;28b
    ;выводим строку 0
            pop de
            ld (hl),e
            inc l
            ld (hl),d
            inc l
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
             inc h
    ;выводим строку 1
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
            dec l
            pop de
            ld (hl),e
            dec l
            ld (hl),d
             rrc h ;было h0=1, результат 0xa0+ ;+4t
    ;выводим атрибуты строк 0-1
             pop de
             ld (hl),e ;attr
             inc l
             ld (hl),d ;attr
             inc h
            endm ;172t
    
            macro SPR2LINES1_x0 ;28b
    ;выводим атрибуты строк 2-3
             pop de
             ld (hl),e ;attr
             dec l
             ld (hl),d ;attr
             sla h ;+4t
    ;выводим строку 2
            pop de
            ld (hl),e
            inc l
            ld (hl),d
            inc l
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
             inc h
    ;выводим строку 3
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
            dec l
            pop de
            ld (hl),e
            dec l
            ld (hl),d
             inc h
            endm ;172t
    
            macro SPR2LINES0_x4 ;28b
    ;выводим строку 0
            pop de
            ld (hl),e
            dec l
            ld (hl),d
            dec l
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
             inc h
    ;выводим строку 1
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
            inc l
            pop de
            ld (hl),e
            inc l
            ld (hl),d
             rrc h ;было h0=1, результат 0xa0+ ;+4t
    ;выводим атрибуты строк 0-1
             pop de
             ld (hl),e ;attr
             dec l
             ld (hl),d ;attr
             inc h
            endm
    
            macro SPR2LINES1_x4 ;28b
    ;выводим атрибуты строк 2-3
             pop de
             ld (hl),e ;attr
             inc l
             ld (hl),d ;attr
             sla h ;+4t
    ;выводим строку 2
            pop de
            ld (hl),e
            dec l
            ld (hl),d
            dec l
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
             inc h
    ;выводим строку 3
            pop de
            ld a,(hl)
            and d
            or e
            ld (hl),a
            inc l
            pop de
            ld (hl),e
            inc l
            ld (hl),d
             inc h
            endm
    
    ;DOWNHL требует лишний inc h по сравнению с UPHL
    ;но при выводе вверх не получится rrc h для перехода к атрибутам
    	macro DOWNHL8_AFTERLINES1
    	ld a,l
    	sub -32
    	ld l,a ;NC=next third
    	sbc a,a
    	and -8
    	add a,h
    	ld h,a ;-8/+0
    	endm ;38t (+34 по сравнению с inc h)
            
    	macro DOWNHL8_AFTERLINES0
    	ld a,l
    	sub -32
    	ld l,a ;NC=next third
    	sbc a,a
    	and -4
    	add a,h
    	ld h,a ;-4/+0
    	endm ;38t (+34 по сравнению с inc h)
    ;b свободен, т.к. присвоить его = +7t, а выигрыш на его использовании только -6t
    ;можно освободить c=-32 (+6t), тогда out (c),e вместо ld a,e:out (0xfd),a (-3t)
    
    ;если чередовать столбцы: gfx,attr,gfx,attr,gfx, то можно сэкономить в генераторе на двукратном чтении тайлов, а тут на одном add hl,hl
    ;в восстановителе A используется только в downhl8, uphl8attr
            macro RESPR2LINES
            pop de
            ld (hl),e
            inc h
            ld (hl),d
            inc h
            endm
            
    	macro RESPR_DOWNHL8
    	ld a,l
    	sub -32
    	ld l,a ;NC=next third
    	sbc a,a
    	and -8
    	add a,h
    	ld h,a ;-8/+0
    	endm ;38t (+34 по сравнению с inc h)
            
            macro RESPR2LINESATTR
            pop de
            ld (hl),e
            dec h
            ld (hl),d
            dec h
            endm
            
            macro RESPR1LINEATTR
            pop de
            ld (hl),d
            dec h
            endm
            
            macro RESPR_UPHL8ATTR
            org $-1
    	ld a,l
    	sub 32
    	ld l,a ;CY=previous third
    	sbc a,a ;0 = this third, ff = previous third
    	or 3 ;+3 = this third, -1 = previous third
    	add a,h
    	ld h,a ;+3/-1
            endm
    [свернуть]


    Я хз почему, но Алоний чётко сказал - это не работает и не может работать. Никак. Пока не переткнёшь в эмуле вручную ROMы на нормальный спек.
    У тебя вызов процедур из ПЗУ идет это раз.
    Ты страницу 7 включаешь после всех инициализаций это два.
    С уважением,
    Jerri / Red Triangle.

  3. #643

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У тебя вызов процедур из ПЗУ идет это раз.
    Я же вроде избавился. Сделал "по Санчезу", своё отдельное.

    Ты страницу 7 включаешь после всех инициализаций это два.
    После всех инициализация я могу включать что угодно. Ты сам сказал минуту назад.
    Последний раз редактировалось DragonsLord; 18.06.2021 в 00:43.

  4. #644

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Я же вроде избавился. Сделал "по Санчезу", своё отдельное.
    нет у тебя вычисление адреса идет через ПЗУ.

    После всех инициализация я могу включать что угодно. Ты сам сказал минуту назад.
    ты не выставил стек
    ты не впечатал страницу
    а уже по адресу a4e1 впечатываешь f7d6 по адресу f7d4

    так что хз
    С уважением,
    Jerri / Red Triangle.

  5. #645

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ты не выставил стек
    А зачем "выставлять стэк"? Он что, по умолчанию не выставлен разве куда надо?
    Я же не собираюсь выходить из игры, например в TR-DOS, с продолжением работы.

    ты не впечатал страницу
    Что это значит? Написать PAGE 0?
    В используемом ассемблере это ни на что не влияет и нифига не работает. Хоть куда эту строчку прописывай.

  6. #646

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    А макрос что ли не как отдельная процедура оформляется интерпритатором?
    Интерпретатором чего?

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Я хз почему, но Алоний чётко сказал - это не работает и не может работать. Никак. Пока не переткнёшь в эмуле вручную ROMы на нормальный спек.
    Не используй п/п ПЗУ и всё будет работать.
    Цитата Сообщение от DragonsLord Посмотреть сообщение
    А зачем "выставлять стэк"? Он что, по умолчанию не выставлен разве куда надо?
    А кем он выставлен? А если игру запустить из бута в котором стэк вверху памяти?
    А если стэк окажется посреди твоих данных или процедур?
    Последний раз редактировалось LW; 18.06.2021 в 11:26.

  7. #646
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #647

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интерпретатором чего?
    А ты не в курсе, что ассемблер это интерпритатор мнемоник в двоичный код?

    А если игру запустить из бута в котором стэк вверху памяти?
    Наврядли Варик будет такого размера, чтобы его таскали по дискеткам с чужими бутами
    Последний раз редактировалось DragonsLord; 18.06.2021 в 11:38.

  9. #648

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это для меня новость. Всю жизнь думал что это компилятор.

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    А макрос что ли не как отдельная процедура оформляется интерпритатором?
    Макрос это не процедура, вместо имени макроса в тело программы подставляется его код с заданными параметрами.

    З.Ы. Для справки. Интерпретация это выполнение исходного кода программы без перевода его в машинный код.
    Последний раз редактировалось LW; 18.06.2021 в 11:43.

  10. #649

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ты филолог? И нашёл крупную несостыковку, ведущую к краху мироустройства? Или даже к коллапсу вселенной?

    Залитые грани привинтил к элите? Нет? Без залитых граней не канает, - проект не будет принят в эксплуатацию.

  11. #650

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Ты филолог? И нашёл крупную несостыковку, ведущую к краху мироустройства? Или даже к коллапсу вселенной?
    Фи. Термины верные надо использовать.

    Цитата Сообщение от DragonsLord Посмотреть сообщение
    Залитые грани привинтил к элите?
    Не было, нет и не будет. В монохроме, да еще на низком разрешении залитые грани нафик не нужны.

Страница 65 из 99 ПерваяПервая ... 616263646566676869 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. как портировать музон с Warcraft inroduction
    от ALKO в разделе Музыка
    Ответов: 20
    Последнее: 03.02.2021, 01:06
  2. Ответов: 1
    Последнее: 25.07.2018, 19:52
  3. Чтение дисков TR-DOS под XP
    от Zloy в разделе Софт
    Ответов: 47
    Последнее: 19.09.2008, 09:06
  4. NK-DOS (вариант MS-DOS под TR-DOS)
    от Nomy Graphics в разделе Оси
    Ответов: 30
    Последнее: 03.09.2007, 16:59
  5. Софт под iS-dos
    от demon_zx в разделе Софт
    Ответов: 0
    Последнее: 07.03.2006, 23:35

Ваши права

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