User Tag List

Страница 123 из 167 ПерваяПервая ... 119120121122123124125126127 ... ПоследняяПоследняя
Показано с 1,221 по 1,230 из 1664

Тема: SjASMPlus Z80 кросс ассемблер

  1. #1221

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как ты собираешься по индексу находить адрес, если они все разного размера?

  2. #1222

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А как ты собираешься по индексу находить адрес, если они все разного размера?
    Да там уже есть процедуры, которые пробегают по данным.
    Одна ищет маркеры (zero-terminated), и находит начальный адрес нужного куска.

    Другая что-то типа как со спрайтами я описал, тоже рассчитывает начальный адрес следующего блока с объектом, переходя от одного к другому, используя информацию о размере.

    Есть и так:
    Код:
    	ld hl,   table_start
    	ld bc,  object_size
    	ld      a, (de)		; A = object index
    scan_objects:
    	dec     a
    	ret     z
    	
    	add     hl, bc
    	jr      scan_objects
    Последний раз редактировалось Bedazzle; 16.10.2015 в 00:09.

  3. #1223

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Квадратичная сложность - не слишком ли большая цена за экономию десятка байт памяти? Не говоря уже о затратах на код поиска.

  4. #1224

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Квадратичная сложность - не слишком ли большая цена за экономию десятка байт памяти? Не говоря уже о затратах на код поиска.
    Ну, это не ко мне вопрос
    Меня больше интересует, как это можно представить в человеческом виде, чтобы потом было удобно поддерживать.

  5. #1225

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Адресам конкретных спрайтов назначить метки и использовать. Не?
    Код:
      struct sprite
    w byte
    h byte
    data byte
      ends
    
      struct object
    x byte
    y byte
    addr word
       ends
    
      object 0,5,dog
      object 7,3,cat
    
    dog sprite 3,8
            db data
    cat sprite 2,7
            db data

  6. #1226

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Адресам конкретных спрайтов назначить метки и использовать. Не?
    Я с объектами ещё не умею, пока ничего не делал, буду почитать.

    Не догоняю, где в приведённом примере индексы для кота и собаки задаются.


    Upd.
    Во, чуть проще пример, чтобы стало понятна печаль с индексами.

    Код:
    animation:
        DB #15, #16, #16, #16, #15, #01, #5E
    Вот эти вот байты - номера спрайтов из набора.
    И в тексте программы хочется использовать вместо числовых значений человеческие названия, скажем

    Код:
    animation:
        DB WALK, PUNCH, PUNCH, PUNCH, WALK, JUMP, ANIMATION_STOP


    сейчас я не вижу, как это можно сделать, не задавая

    Код:
    JUMP   EQU #01
    .....
    WALK   EQU #15
    PUNCH  EQU #16
    ANIMATION_STOP EQU #5E
    в таком виде один кусок программы получается очень сильно завязан на другой,
    и если вдруг затем потребуется двигать спрайт PUNCH, то очень легко попортить данные, если забыть обновить EQUшки.
    Последний раз редактировалось Bedazzle; 16.10.2015 в 00:51.

  7. #1227

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Я с объектами ещё не умею, пока ничего не делал, буду почитать.
    Это просто структуры. Можно и без них, обычными defb.


    Цитата Сообщение от Bedazzle Посмотреть сообщение
    в таком виде один кусок программы получается очень сильно завязан на другой,
    и если вдруг затем потребуется двигать спрайт PUNCH, то очень легко попортить данные, если забыть обновить EQUшки.
    Все потому, что ты пытаешься жрать кактус с этими идентификаторами.

    Да, можно и с ними:
    Код:
    ;идентификаторы, enum для бедных
      struct sprites
    stop byte ;fake
    walk word
    punch word
    jump word
      ends
    
      macro mksprite id,w,h,datafile
    spriteaddr=$
      org lookup+id
      dw spriteaddr
      org spriteaddr
      db w,h
      incbin datafile
      endm
    
    ;табличка с указателями на спрайты чтоб не надо было тупить с поиском
    lookup sprites
    
    ;данные спрайтов
      mksprite sprites.walk,1,2,"walk.bin"
      mksprite sprites.punch,3,4,"punch.bin"
      mksprite sprites.jump,5,6,"jump.bin"
    
    ;анимация
    animation:
      db sprites.walk,sprites.punch,sprites.punch,sprites.walk,sprites.jump,sprites.stop
    
    ;получение адреса спрайта по идентификатору (в А)
    getsprite:
      ld l,a
      ld h,high lookup
      ld a,(hl)
      inc l
      ld h,(hl)
      ld l,a
      ret
    Но это все дикий треш по сравнению с использованием нормальных адресов:
    Код:
      macro mksprite w,h,datafile
      db w,h
      incbin datafile
      endm
    
    ;данные спрайтов
      module sprites
    stop=0
    walk mksprite 1,2,"walk.bin"
    punch mksprite 3,4,"punch.bin"
    jump mksprite 5,6,"jump.bin"
        endmod
    
    ;анимация
    animation:
        dw sprites.walk,sprites.punch,sprites.punch,sprites.walk,sprites.jump,sprites.stop
    И все! При этом, компилятор берет на себя проблемы типа необъявленного спрайта, на который ссылаются.

  8. #1228

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Все потому, что ты пытаешься жрать кактус с этими идентификаторами.
    Это дизасм, вот и выходит, что приводить в удобный вид приходится то, что было не мной сделано.
    Так что с адресами пока не получится.

  9. #1229

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Ткните меня носом ктонить в последнюю версию
    и в доки к нему
    компилятор встроенный в emuzwin больше не могу терпеть
    из за истерических припадков вызванных последним чота не могу найти...

    или новей 1.07 RC7 ничего нет?
    Последний раз редактировалось NEO SPECTRUMAN; 17.10.2015 в 17:14.

  10. #1230

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    или новей 1.07 RC7 ничего нет?
    Я так понял, что это последняя стабильная версия.

Страница 123 из 167 ПерваяПервая ... 119120121122123124125126127 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Кросс-ассемблеры Z80 для Pc
    от Aprisobal в разделе Программирование
    Ответов: 16
    Последнее: 15.01.2011, 22:46
  2. кросс компилятор С для Z80
    от vitasam в разделе Программирование
    Ответов: 24
    Последнее: 04.03.2007, 18:03
  3. Хороший ПЦшный ассемблер - залог успеха!
    от Aprisobal в разделе Программирование
    Ответов: 35
    Последнее: 08.08.2005, 15:25
  4. ZX ассемблер (и не только?) с библиотеками
    от shade в разделе Программирование
    Ответов: 24
    Последнее: 04.03.2005, 19:43

Ваши права

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