User Tag List

Страница 20 из 22 ПерваяПервая ... 16171819202122 ПоследняяПоследняя
Показано с 191 по 200 из 217

Тема: ROBOTZ! Releases

Комбинированный просмотр

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

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PPC Посмотреть сообщение
    Да. Попробуй удерживать клавишу <УС> в смысле <CTRL> при старте игры (это упоминается в FAQ).
    Эх, даже в игрушке нужно читать readme.
    Кнопку S нажал - вижу что убирает/показывает панель.

    Цитата Сообщение от PPC Посмотреть сообщение
    Как тебе обновлённок меню Options (цвет номер 20)?
    Цветомузыка, прикольно.

    Присоединяюсь к svofski по поводу желательности демо-режима. Или ютубы с игровым процессом.

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

  3. #2

    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    336
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, это всё ещё сырая альфа, и робот там полупрозрачный, и NPC ещё нет пока. Планов громадьё, но сейчас я really хочу чуть-чуть отдохнуть Чуть офигевший от перетолмачивания графики. Сборка, которая пошла в 0.65a была собрана буквально сегодня. Буду несказанно рад, если походишь, побродишь, меня самого там несколько моментов достаёт: в частности - очень много труб на которые надо запрыгивать IMHO. В общем, игровой процесс там всё ещё далеко несбалансирован, потому, что весь мой пар пошёл на антураж и скорость рендеринга. Рано наверное запулять в ютубу. Но когда-то мы доберёмся до заветной версии 1.0b
    С Наступающим тебя!

    PS. Демо-режим сделаю

  4. #3

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PPC Посмотреть сообщение
    С Наступающим тебя!
    Спасибо, тебя тоже с наступающим!

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

  5. #4

    Регистрация
    01.08.2006
    Адрес
    Волгоград
    Сообщений
    399
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Syntal смог пройти старую версию, может и к этой примерится.
    Я был молод и горяч, прошу меня понять. Всех вектористов с НГ!!!

    "... жизнь удалась, если найдётся кто-нибудь, кто заберёт с помойки твои книги и инструменты, когда ты умрёшь". (c) marta_ketro
    Любой компьютер, в котором стоят резисторы, компьютером может называться с натяжкой. (с) Д. Михайлов

  6. #5

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ждем авторского демо-режима.

  7. #6

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  8. #7

    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    336
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, а там пока только координаты ГГ проверяются, а что? На самом деле, алгоритм (но не имплементация!!!) примерно такой (по памяти): берётся текущая ширина ГГ в тайлах (движок считает эту величину переменной), и определяется координата центра спрайта в пикселах. Может попасть либо на границу тайлов из которых сделан спрайт, либо - на центр тайла (когда количество тайлов в спрайте - нечётное). К вычисленному в "экранных" координатах центру, прибавляются "физические" толщины ГГ в пикселах от центра, заданные в специальном файле-описателе параметров ГГ, и полученные величины превращаются в координаты в тайлах с округлением в большую сторону. Затем на тайловой карте производится проверка на попадания "граничных" тайлов ГГ на свободное (тайлы с величинами 0-0x7F) или занятое (0x80-0xFF) место. На самом деле, всё ешё сложнее, потому, что многие вещи не вычисляются каждый раз, а предкомпилированы, и код гонится по заранее известным веткам в зависимости от нажатых клавиш. Но на самом деле, всё ещё сложнее, потому, что во время прыжка или бега, алгоритм задаёт не единичные входы, и обсчёт движения за одно обновления экрана может включать несколько итераций. Как-то так. Если у тебя остался сырок, то вся эта байда происходит в файле vp.mac. Единственно, о чём надо помнить, что кроме соударений с препятствиями, на ГГ могут действовать и другие силы и они тоже обсчитываются там-же. Так сделана гравитация и также сделан эффект движения на платформе лифта.

  9. #8

    Регистрация
    06.05.2019
    Адрес
    г. Подольск
    Сообщений
    108
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    18
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    ;hl адрес спрайта
    Код:
    
    ;вот это вешаем на прерывание
    ISR_sub
               di
               ex (sp),hl  ;обмениваем вершину стека и содержимое HL
               ld (imm_jp),hl
               pop hl       ;заменяем испорченное слово спрайта 
               push bc     ;на текущее слово находящееся в BC
               ld (imm_sp),sp
              
               ld sp,ISR_sp
    ;здесь идет обработка прерывания
    ;          ...
    ;----------------------------------
               ld sp,$          
    imm_sp equ $-2
               ei
               jp $
    imm_jp equ $-2
    Подскажите, здесь приведён пример с прерыванием и выводом графики. Вроде бы разобрался, даже будет работать, если в этот момент не спрайты рисуются. Но возникает вопрос. Если стек SP был на одном адресе, то при переходе на прерывание он уменьшается. Здесь где выделено, он уже уменьшенный и imm_sp он присваивается, уменьшенный, а не каким он был изначально. Ведь выход не RET, а JP. Значит он не увеличится сам. Как это понять? Не должен ли быть он между PUSH и POP?

    И ещё,

    Код:
               ld (imm_jp),hl
               jp $
    imm_jp equ $-2
    это то же, что и
    Код:
               ld (imm_jp+1),hl
    imm_jp     jp $
    ?
    unreal

  10. #9

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

    По умолчанию

    Цитата Сообщение от Biland Посмотреть сообщение
    Код:
    ;hl адрес спрайта
    Код:
    
    ;вот это вешаем на прерывание
    ISR_sub
               di
               ex (sp),hl  ;обмениваем вершину стека и содержимое HL
               ld (imm_jp),hl
               pop hl       ;заменяем испорченное слово спрайта 
               push bc     ;на текущее слово находящееся в BC
               ld (imm_sp),sp
              
               ld sp,ISR_sp
    ;здесь идет обработка прерывания
    ;          ...
    ;----------------------------------
               ld sp,$          
    imm_sp equ $-2
               ei
               jp $
    imm_jp equ $-2
    Подскажите, здесь приведён пример с прерыванием и выводом графики. Вроде бы разобрался, даже будет работать, если в этот момент не спрайты рисуются. Но возникает вопрос. Если стек SP был на одном адресе, то при переходе на прерывание он уменьшается. Здесь где выделено, он уже уменьшенный и imm_sp он присваивается, уменьшенный, а не каким он был изначально. Ведь выход не RET, а JP. Значит он не увеличится сам. Как это понять? Не должен ли быть он между PUSH и POP?

    И ещё,

    Код:
               ld (imm_jp),hl
               jp $
    imm_jp equ $-2
    это то же, что и
    Код:
               ld (imm_jp+1),hl
    imm_jp     jp $
    ?

    здесь похоже на ошибку.
    оно должно выглядеть так

    Код:
    ;hl адрес спрайта
    Код:
    
    ;вот это вешаем на прерывание
    ISR_sub
               di
               ex (sp),hl  ;обмениваем вершину стека и содержимое HL
               ld (imm_jp),hl
               pop hl          
               ld (imm_sp),sp
    
                               ;заменяем испорченное слово спрайта 
               push bc     ;на текущее слово находящееся в BC
              
               ld sp,ISR_sp
    ;здесь идет обработка прерывания
    ;          ...
    ;----------------------------------
               ld sp,$          
    imm_sp equ $-2
               ei
               jp $
    imm_jp equ $-2
    С уважением,
    Jerri / Red Triangle.

  11. #10

    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    336
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код из Robotz 0.65a

    Пояснения:
    Assembler: Microsoft M80

    ISR прерывает выполнение в multi bank mode: спрайты с 2-х байтными gaps в отдельном 64К банке с доступом стековыми операциями, операции память-память происходят в основной RAM

    PGE_OFF - макро, выключающее банкинг и включающее 64K main RAM в адресное пространство 8080 на Векторе
    XTB_SP - стек для ISR в основной памяти (предустановлен при настройке рендерера спрайтов)
    XTB_RDM - слово-состояние порта 10h (банк со спрайтами, куда нужно переключиться по выходу из ISR, также предустановлено заранее)


    Код:
    RamDrv	EQU	10h
    
    PGE_SET	Macro
    	out	RamDrv	
    EndM
    
    PGE_OFF	Macro
    	xra	a
    	PGE_SET
    EndM
    ;===========================================
    ; Tile Renderer Interrupt Service Routine
    ;-------------------------------------------
    ;INPUT: <BC> stack top restore value
    ;OUTPUT:  none                                               
    ;===========================================
    IsrXTB:	shld	XTB_HL
    	pop	h
    	shld	XTB_RET
    	push	PSW
    	lxi	h,0
    	dad	SP	; <CY> is FUBARed
    	shld	XTB_ESP
    	PGE_OFF		; assumption is that XTB_SP is in main RAM bank
    	DB	(lxi	SP)
    XTB_SP:	DW	0
    	push	d
    	push	b
    	call	SndCBH	; call sound/SFX callback hook with assumption
    	;PGE_OFF	; that SndCBH will set STACK access to main RAM
    	pop	b	; bank 0 on return (PgeRDM set satisfies this)
    	pop	d
    	DB	(mvi a)
    XTB_RDM:DB	0
    	PGE_SET
    	DB	(lxi	sp)
    XTB_ESP:DW	0	; entry stack
    	pop	PSW
    	push	b	; restore stack, corrupted by XTB_RET
    	pop	b	; using <BC>
    	DB	(lxi	h)
    XTB_HL:	DW	0
    	ei
    	DB	(jmp)
    XTB_RET:DW	0
    Последний раз редактировалось PPC; 04.07.2021 в 15:43. Причина: Пояснения к значению XTB_RDM

Страница 20 из 22 ПерваяПервая ... 16171819202122 ПоследняяПоследняя

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

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

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

Ваши права

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