Войти
ФлеймФорумИгры

Mighty Final Fight on ZX Spectrum [русские опять всем показали]

Страницы: 1 2 3 4 5 6 Следующая »
#0
19:45, 28 янв. 2018

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#1
23:24, 28 янв. 2018

Кайф! Очень-очень круто! %)

Правка:
Они ещё и исходники выложили для таких же отбитых :)

#2
6:12, 29 янв. 2018

Круто, круто! Надо заценить на эмуле и потом еще отписать впечатления...

P.S.

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

Образ с игрой можно скачать тут: http://idpixel.ru/games/m/mightyfinalfight/files/mff_v1.0.tap.zip
Исходники там же лежат по следующей ссылке: http://idpixel.ru/games/m/mightyfinalfight/files/mff_source.zip

Пойду глядеть в последние...

#3
7:39, 29 янв. 2018

P.S.

В общем посмотрел исходники - реальный, комплексный проектище, со дозагрузками, кучей ресурсов, причём как я понял всё что нужно для компиляции, возможно даже редактирования ресурсов и далее эмуляции вложено в архив же.
По коду полазил - видно что всё структурированно нормально так.
Смещения до полей в объектах описаны в main.asm:

;дескриптор объекта
object.ycord      equ 0  ;координата y в локации в пикселях (2 байта)
object.xcord      equ 2  ;координата x в локации в пикселях (2 байта)
object.yoffset      equ 4  ;высота объекта над поверхностью, вычитается из ycord (1 байт)
object.type        equ 5  ;тип объекта (1 байт), если равно #00 - нет объекта
object.animation    equ 6   ;номер текущей анимации (1 байт)
object.frametime    equ 7   ;счетчик продолжительности вывода кадра (1 байт)
object.composition    equ 8   ;адрес текущей композиции (2 байта)
object.xaccel      equ 10  ;скорость перемещения объекта по координате X с учётом направления (-127;127) (1 байт)
object.yaccel      equ 11  ;ускорение объекта по координате Y (гравитация) (1 байт)
object.hits        equ 12  ;счетчик непрерывно попадавших в цель ударов (1 байт)
object.animadr      equ 13  ;адрес начала анимаций объекта (2 байт)
object.animpage      equ 15  ;страница начала анимаций объекта (1 байт)
object.faze        equ 16  ;текущая фаза (1 байт) (для врагов)
object.twistercnt    equ 16  ;счётчик для суперудара "твистер" (1 байт) (для героев)
object.energy      equ 17  ;жизненная энергия объекта (1 байт)
object.maxenergy    equ 18  ;максимальная жизненная энергия объекта (1 байт)
object.hitpower      equ 19  ;сила текущего удара (1 байт)
object.cntr        equ 20  ;счётчик общего назначения (1 байт)
object.itemkind      equ 20  ;(для Items) вид Items (1 байт)
object.rage        equ 21  ;накопленный Rage (1 байт)
object.itemprop      equ 21  ;свойства Item, берется при создании из yoffset(1 байт)
object.stamina      equ 22  ;выносливость, если больше 150, то герою наносится критический урон (1 байт)
object.undeadcntr    equ 23  ;счётчик бессмертия (1 байт)
object.enemyobject    equ 24  ;адрес вражеского объекта (2 байта)
object.movecord      equ 24  ;координаты, к которым стремится враг во время 5-ой фазы или герой в режиме скрипта
object.damagearea    equ 24  ;размеры коллайдера поражения у Items (2 байта)
object.weapon      equ 26  ;оружие героя, количество (1 байт)
object.itemspeed    equ 26  ;скорость перемещения у Items (1 байт)
object.status      equ 27   ;статус объекта (2 байта)
object.scriptadr    equ 29  ;текущий адрес описателя скрипта (2 байта)
object.scripttype    equ 31  ;текущий тип скрипта (1 байт)

;статусы
IS_DIRECT        equ 0  ;направление объекта по горизонтали (0 - вправо, 1 - влево)
IS_DAMAGE        equ 1   ;объект получил повреждение
IS_NOINT        equ 2   ;проигрывается анимация, которую нельзя прерывать
IS_THROW        equ 3   ;объект бросили
IS_CRITDAMAGE      equ 4   ;объект получил критический удар
IS_CAPTURED        equ 5  ;объект захвачен (для вражеских объектов)
IS_SUPERMOVE      equ 5   ;объект в движении во время супер удара (для героев)
IS_SUPERDAMAGE      equ 6   ;объект получил супер удар (либо героя ударили сзади)
IS_SCRIPTMODE      equ 7  ;объект в режиме скрипта
IS_DIRENEMY        equ 8  ;с какой стороны подходит к врагу
IS_UPDOWNENEMY      equ 9   ;уходить с линии атаки вверх или вниз
IS_ENEMYCAPTURE      equ 10  ;захвачен враг
IS_SUPERHIT        equ 11  ;объект наносит супер удар
IS_CRITHIT        equ 12  ;объект наносит критический удар
IS_KNEE          equ 13  ;объект наносит удар коленом
IS_FALLDEEP        equ 14  ;объект падает в пропасть
IS_BLOCK        equ 15  ;объект в состоянии блока      
            
object.lenght      equ 32  ;размер описателя объекта
object.maxnum      equ 8  ;максимальное число объектов

В процедуры работающие с объектами указатель на дескриптор объекта передаётся в IX, а иногда в IY что весьма логично для платформы:

;бросок объекта
event_throw        ld (ix+object.yaccel),-25
            ld a,(ix+object.status)
            xor 1
            ld (ix+object.status),a
            ret
или вот в macroses.asm макрос по установке статуса объекта (статусы типа IS_BLOCK это номера бит в 2-байтовом поле статуса):
;включить свойство
            MACRO set_status property
              IF property < 8
                set property,(ix+object.status)          
              ELSE
                set property-8,(ix+object.status+1)      
              ENDIF
            ENDM
            
;включить свойство (IY)
            MACRO set_enemy_status property
              IF property < 8
                set property,(iy+object.status)          
              ELSE
                set property-8,(iy+object.status+1)      
              ENDIF
            ENDM
В общем да, >300 Кб одним только asm-исходников + куча ресурсов как в исходном так и в бинарном виде. Респект и уважуха.

#4
13:19, 29 янв. 2018

Какая-то запущенная стадия ностальгирования.
Зачем тратить столько усилий на безнадёжно устаревшую платформу?..
Хотя, как говорится, чем бы дитя не тешилось, лиш бы не плакало.

#5
13:21, 29 янв. 2018

Zx
> Зачем тратить столько усилий на безнадёжно устаревшую платформу?..
Ник интересный... когнитивный диссонанс у меня

#6
13:34, 29 янв. 2018

Zx
> Зачем тратить столько усилий на безнадёжно устаревшую платформу?..

Да потому что очередное мыльное кинцо на актуальные платформы больше никого не задевает

#7
15:44, 29 янв. 2018

0iStalker
> больше никого не задевает
Я почти уверен, что данная игра не задела никого младше 21 года. Потому как она вся обыгрывает воспоминания, которых в таком возрасте быть не может.

#8
16:14, 29 янв. 2018

Zx
> Я почти уверен, что данная игра не задела никого младше 21 года. Потому как она
> вся обыгрывает воспоминания, которых в таком возрасте быть не может.

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

#9
16:18, 29 янв. 2018

=A=L=X=
Кто способен фрилансом заработать на яхту, тот и аниме успеет посмотреть столько, сколько не успеет посмотреть тот, кто не способен заработать фрилансом на яхту.

#10
18:05, 29 янв. 2018

beejah
> аниме успеет посмотреть

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

#11
19:08, 29 янв. 2018

В 90-х игра имела бы колоссальный успех, сейчас удивлен что еще живы люди которые это умеют делать.

#12
19:24, 29 янв. 2018

gamedevfor
> сейчас удивлен что еще живы люди которые это умеют делать

Так сейчас то как раз делать такое проще чем тогда намного. Тулзы, компили, отладка в эмуляторе - всё легко и просто достаётся. Да и ассемблер с современной точки зрения совсем простенький, недаром с чего то типа 8080 в институтах его и преподают обычно.

#13
19:42, 29 янв. 2018

=A=L=X=
И тогда писали что игры под ZX делали на PC. На самом ZX делали только народные умельцы.

#14
6:16, 30 янв. 2018

gamedevfor
> И тогда писали что игры под ZX делали на PC.

Несомненно когда есть более мощная машина с более удобным софтом - делать на ней то или иное удобнее, чем на оригинале.
Так например даже Doom по большому счёту делался на несовместимом с IBM PC компьютере от Стива Джобса (после изгнания из Apple) - NeXT. А на IBM PC оттуда был сперва портирован рендер, а уже потом и утилиты.
Ну  или там 3D-модельки и статичные рендеры раньше тоже для игр на разных совершенно платформах, включая IBM PC, создавали на станциях Silicon Graphics - и так далее.
Эта практика неудивительна. Но PC в годы актуальности Speccy не мог запустить игру на спектруме - эмуляторов то вообще не было, поэтому финальный продукт тестировался на реальном железе и с отладкой тут было не очень всё.
Сейчас в эмуляторах можно быть вообще богом отладки и мониторить весь ПК как свои пять пальцев. Раньше для таких удобностей надо было монструозный DevKit собирать, я даже не уверен что с ZX такие были вообще.

Страницы: 1 2 3 4 5 6 Следующая »
ФлеймФорумИгры