User Tag List

Показано с 1 по 10 из 317

Тема: Что нужно для написания игр ?

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    jerri показал один из способов вывода. Совсем не обязательно юзать стек для загрузки спрайта в регистры.

    Возьмём 3 байта танка.

    pop de ; 10t
    ld (hl),e ; 7
    inc l ; 4
    ld (hl),d ; 7
    inc l ; 4
    pop de ; 10
    ld (hl),e ; 7
    inc h ; 4

    Всего 53 такта на строку.

    Теперь у меня:

    ldi ; 16
    ldi
    ldi

    Всего 48 тактов на строку. При этом можно рисовать в любую область экрана. И использовать для вертикального движения спрайта.
    Что-то не очень понятно. В первой процедуре на копирование одного байта тратится 5+7+4=16 тактов. У вас тоже 16 тактов на 1 байт. Хотя можно без стека обойтись. Это тоже может быть удобно.

    Небольшое уточнение. Если копировать "змейкой", то по второму способу будет так:
    ldi
    ldi
    ldi
    dec e
    inc d
    ldd
    ldd
    ldd
    inc e
    inc d
    ...
    На три байта тратится 16+16+16+4+4. Все-таки первый способ быстрее.

    Если посмотреть это фрагмент:
    Код:
    ; Вывод спрайта
    ; HL = Адрес спрайта
    ; DE = Адрес экрана
    SP_OUT:
    	LD IX,SPR_OUT
    	LD BC,#18FF
    	JP (IX)
    COR_DE	LD A,E
    	SUB #E0
    	LD E,A
    	SBC A,A
    	AND #F8
    	ADD A,D
    	LD D,A
    	JP (IX)
    LOOP_1	DEC DE
    	LD E,A
    	INC D
    	LD A,D
    	AND #07
    	JR Z,COR_DE
    SPR_OUT	LD A,E	
    	LDI	 
    	LDI	 
    	LDI	 
    	DJNZ LOOP_1	 
    	RET
    Выглядит мудрено. И непонятно, зачем команда DEC DE. Ведь у вас до этого были LD A,E, а потом LD E,A и INC D. Если только LDI перескакивает...
    На мой взгляд ваша процедура подходит для движения по-вертикали. А для движения по-горизонтали использовать стек.
    Последний раз редактировалось zx-kit; 04.08.2013 в 19:51.
    "L-256"

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

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

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

Похожие темы

  1. простой скрипт для написания хелпов
    от jim в разделе Программирование
    Ответов: 2
    Последнее: 09.04.2007, 14:33
  2. Ответов: 26
    Последнее: 09.08.2006, 14:48
  3. Ищу программистика для написания игры МИНОТАВР
    от TomCaT в разделе Программирование
    Ответов: 13
    Последнее: 15.04.2006, 03:09

Ваши права

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