Вход

Просмотр полной версии : C чего начать геймдэв для горбатыша?



ALKO
15.01.2012, 03:28
На васике могу что-нить написать, но это в любом случае будет статическая игра.

На асме же можно сделать вывод спрайтов (опять таки тут меня интересует вывод спрайта с маской), но игровую логику на асме просто нереально для меня создать, это куча cmp, jmp nz ,call-ов, ret-ов и т.д.

Что можете предложить для создания платформера, хотя б не скроллового, а фрэймового?
Есть ли готовые асм-процедуры ?

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

goblinish
15.01.2012, 08:20
а что в Ваших наполеоновских планах, мэтр?
на бейсике, помнится, писалась логика плюс вызовы процедур.

jerri
15.01.2012, 09:21
ALKO, для начала напиши ТЗ:
что именно ты хочешь, как оно будет выглядеть, нарисуй карты,опиши врагов, нарисуй врагов (можно даже на ПЦ), потом будет проще писать

Orionsoft
15.01.2012, 10:40
а кто такой горбатыш ?
Синклер спаяный про Горбачёве ?

Rindex
15.01.2012, 12:00
а кто такой горбатыш ?

Робик.

goodboy
15.01.2012, 12:04
Arcade Game Designer http://www.worldofspectrum.org/infoseekid.cgi?id=0020176 на этой-же странице смотри игры сделанные в нём.

NovaStorm
15.01.2012, 14:54
Сначала по-моему стоит изучить платформу, чтобы понять её ограничения. speccy.info и Z80 Family CPU User Manual читать до просветления. Потом уже, если не пропадёт желания =), осваивать ассемблер и, возможно, C.

baxter
15.01.2012, 17:24
NovaStorm, не пугай начинающих.

ALKO
15.01.2012, 17:41
Щас пока есть процедура вывода тайлов (произвольного размера по знакомету)
Только вот там координаты указываются в регистре HL, как адрес.
Как можно перевести из указания координат видом X/Y в адрес хранящийся ввиде двух байт (DEC)? Что б записывать значения через Poke.

---------- Post added at 17:41 ---------- Previous post was at 17:37 ----------

?

Mad Killer/PG
15.01.2012, 18:11
Вот простая игра.
Черный фон,ночь на небе статично месяц висит улыбается в профиль.
На небе сияют звёзды рандомно появляясь и угасая.

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

Можно замутить на символьной графике,половину букв перерисовать в спрайты и потом Принтом АТ всё повыводить.А главный скрин трава+месяц - артстудио это статика.

BYTEMAN
15.01.2012, 18:23
Сначала по-моему стоит изучить платформу, чтобы понять её ограничения. speccy.info и Z80 Family CPU User Manual читать до просветления.
Читать Инфоркомовский трёхтомник "Программинование на Ассемблере", последнее издание (которое все три топа в одном). Самая мегарульная весчь. Прикладная графика, Динамическая графика тоже можно почитать. Ещё можно почитать "как написать игру на ассемблере", но мне она imxo не понравилась :( По крайней мере, лучше код оттуда не брать, а только общие принципы :)

ALKO
15.01.2012, 18:35
На земле трафа эдиным масивом,по ней влево\вправо может ходить заец.
Рандомно в небе появляется клубника и падает на землю,задача зайца всё поймать.
Скорость падения увеличивается немного при набранных очках.

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

---------- Post added at 18:35 ---------- Previous post was at 18:32 ----------


Ещё можно почитать "как написать игру на ассемблере",
Там ни одна прога (что касается вывода спрайтов) нормально не компилится

Orionsoft
15.01.2012, 20:29
захотеть,настроится,настро ить,сделать.

NovaStorm
15.01.2012, 22:31
не пугай начинающих.
Ну я примерно так и начинал, зилоговский мануал написан весьма хорошо, ну и перевод старенький есть "Микропроцессорный комплект Z80".
А железо знать надо однозначно, структура экрана меня в своё время сильно потрясла =)

jerri
15.01.2012, 22:37
ALKO, Трантор это высший пилотаж говорю же пиши ТЗ

ALKO
15.01.2012, 23:18
ТЗ - это тех. задание или что за аббревиатура?

NEO SPECTRUMAN
16.01.2012, 01:39
ТетриЗ!

---------- Post added at 23:39 ---------- Previous post was at 23:38 ----------

Это должен сделать каждый кодер.

ALKO
16.01.2012, 01:40
ТетриЗ!
ок....надеюсь не только кодер, но и ГОВНО-КОДЕР (к числу коих я и отношусь)

NEO SPECTRUMAN
16.01.2012, 01:46
но и ГОВНО-КОДЕР (к числу коих я и отношусь)
Я тоже к ним отношусь.

Если появится настроение тоже напишу.

alone
16.01.2012, 01:51
Для начала питона осильте. Потом уже к тетрисам можно переходить :)

jerri
16.01.2012, 09:03
ALKO, ТехЗадание же
с него родного все начинается
можешь даже сюда писать :) но нежелательно - закидаю(т)

Andrew771
16.01.2012, 10:14
На асме же можно сделать вывод спрайтов (опять таки тут меня интересует вывод спрайта с маской), но игровую логику на асме просто нереально для меня создать, это куча cmp, jmp nz ,call-ов, ret-ов и т.д.

Ну для начала можно писать "быдло-код", но на ассемблере. Примерно так:

Для каждой переменной заводим байты памяти и метку:



var_i defb 0 ; однобайтовая переменная
var_j defb 0 ; однобайтовая переменная
var_x defw 0 ; двухбайтовая переменная
var_y defw 0 ; двухбайтовая переменная


А затем оперируем постоянно с ними, как на Бейсике:



; LET i=i+j

ld a,(var_i)
ld c,a
ld a,(var_j)
add a,c
ld (var_i),a

; или вот так, но тут портится регистр HL:

ld hl,var_i
ld a,(var_j)
add a,(hl)
ld (hl),a


; LET x=x+y

ld hl,(var_x)
ld de,(var_y)
add hl,de
ld (var_x),hl


; сложение однобайтовой и двухбайтной переменной LET x:=x+i:

ld a,(var_i)
ld c,a
ld b,0 ; превратили регистр a в регистр bc
ld hl,(var_x)
add hl,bc
ld (var_x),hl


Проверка условий:



; IF i>j THEN LET i=i-j ELSE LET i=i+j
; т.к. в асме нет проверки условия "больше", то заменяем на "меньше":
; IF j<i THEN LET i=i-j ELSE LET i=i+j

ld a,(var_j)
ld hl,var_i
cp (hl)
jp c,label01

add a,(hl)
jp label02

label01 ld a,(hl)
ld hl,var_j
sub a,(hl)

label02 ld (var_i),a


Цикл со счетчиком:


; повторить 45 раз

ld b,45
loop01 push bc ; запомнить b в стеке
...
pop bc ; достать b из стека
djnz loop01

; если внутри цикла регистр b не изменяется, то можно убрать push bc и pop bc.


Цикл со счетчиком и с принудительным выходом из тела цикла:


; FOR i=0 to 20
; ...
; IF i>15 THEN <выход из цикла>
; NEXT i
; ...

ld b,20
loop01 push bc
ld a,20
sub a,b
ld (var_i),a ; получили значение i
...
ld a,(var_i)
cp 16 ; if i>=16
jp nc,label01 ; then goto label01
pop bc
djnz loop01
jp label02
label01 pop bc ; возвращаем стек в исходное состояние, т.к. до этого мы туда втолкнули bc
label02 ...

jerri
16.01.2012, 10:25
Andrew771, подожди физикой грузить
пусть сначала лирику опишет

Andrew771
16.01.2012, 10:46
Процедура вывода спрайта (без масок):


; подпрограма вывода спрайта
; входные параметры: HL=адрес спрайта, D=вертик.координата вывода на экране, E=гориз.координата вывода на экране
; выходных параметров нет

PUTSPR LD A,(HL)
AND A
RET Z ; выход, если пустой спрайт
LD B,A
PUTS1 PUSH BC ; B = количество знакомест в спрайте

INC HL
LD A,(HL)
ADD A,D
LD B,A
INC HL
LD A,(HL)
ADD A,E
LD C,A
INC HL
PUSH DE ; DE = координаты спрайта на экране
EX DE,HL ; DE = адрес нахождения в спрайте, HL = свободно





LD A,B ; расчет адреса первого байта знакоместа в HL
LD H,A
RRCA
RRCA
RRCA
AND A,224
ADD A,C
LD L,A
LD A,H
AND 24
OR 64
LD H,A ; HL = адрес вывода знакоместа на экране, DE = адрес изображения в спрайте

; вывод знакоместа (8 строк)


LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H

LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H

LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H

LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H

LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H

LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H

LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H

LD A,(DE)
LD (HL),A ; вывели байт спрайта

EX DE,HL ; HL = адрес нахождения в спрайте

POP DE ; HL = адрес нахождения в спрайте, DE = координаты спрайта на экране
POP BC ; B = цикл по количеству знакомест в спрайте
DJNZ PUTS1
RET



; спрайты

SPRITE01
DEFB 14 ; количество знакомест в спрайте
DEFB 14,3, 0,0,0,0,0,0,255,255 ; знакоместо 1: координата y, координата x, 8 байтов изображения
DEFB 15,3, 0,23,20,243,0,0,0,0 ; знакоместо 2
... и так 14 знакомест ...


---------- Post added at 10:32 ---------- Previous post was at 10:30 ----------


Andrew771, подожди физикой грузить
пусть сначала лирику опишет
ALKO уже умеет игры на Бейсике и Дельфи писать, к асму надо приучить. :)

---------- Post added at 10:46 ---------- Previous post was at 10:32 ----------


Как можно перевести из указания координат видом X/Y в адрес хранящийся ввиде двух байт (DEC)? Что б записывать значения через Poke.


LD B,Y
LD C,X

LD A,B
LD H,A
RRCA
RRCA
RRCA
AND A,224
ADD A,C
LD L,A
LD A,H
AND 24
OR 64
LD H,A ; HL = адрес вывода знакоместа на экране

ALKO
16.01.2012, 14:56
ALKO уже умеет игры на Бейсике и Дельфи писать,
с\с++ не указали.

Andrew771
16.01.2012, 15:04
с\с++ не указали.
Тогда попробуй кросс-компилятор ccz80, удобный, но не оптимальный: http://zx.pk.ru/showpost.php?p=450358&postcount=4

AER
16.01.2012, 16:30
все вопросы решаются тут - http://zxpress.ru/

AndTorp
16.01.2012, 19:38
ALKO уже умеет игры на Бейсике и Дельфи писать, к асму надо приучить. :)
В таком случае, для приучения, можно попробовать попереводить с ЯВУ на ассемблер какие-нибудь программы.
Например из книги Максима Мозгового "Занимательное программирование".


Для начала питона осильте. Потом уже к тетрисам можно переходить :)
Удав и Тетрис, в вышеприведенной книге, разобраны хорошо.

ALKO
16.01.2012, 20:57
огда попробуй кросс-компилятор ccz80, удобный, но не оптимальный:
z88dk оптимизированее...Только с ним не могу разобраться.

---------- Post added at 19:45 ---------- Previous post was at 19:43 ----------

Спасибо за код перевода XY в 2 байта.
Теперь то же самое нужно для перевода address (формата DEC) в 2 байта.

---------- Post added at 20:53 ---------- Previous post was at 19:45 ----------

На бейцыке это будет примерно так:
add= 40000
x=int(add/256)
y= add-(x*256)

---------- Post added at 20:55 ---------- Previous post was at 20:53 ----------

x - старший байт
y - младший байт

---------- Post added at 20:57 ---------- Previous post was at 20:55 ----------

хотя проще будет выбирать фрейм
40000+k*n, где n - номер фрэйма
k - объём фрейма в байтах

goodboy
16.01.2012, 21:40
для перевода address (формата DEC) в 2 байта.

На бейцыке это будет примерно так:
add= 40000
x=int(add/256)
y= add-(x*256)

x - старший байт
y - младший байт

на ZX бейсике проще сделать так
RANDOMIZE addr
hi=peek 23671
low=peek 23670

ALKO
16.01.2012, 22:07
мне на асме надо - по адресу вызываются тайлы, а это скажется на скорости игры.

goodboy
16.01.2012, 22:57
мне на асме надо - по адресу вызываются тайлы, а это скажется на скорости игры.

LD HL,ADDR ; ADDR=256*H+L

или я чего-то не догоняю :v2_conf2:

ALKO
16.01.2012, 23:04
как раз таки обратную операцию надо выполнить.

Вобщем в регистр заносим байт (номер тайла)
Переводим его в адрес (4e4+k*n, где n - номер фрэйма
k - объём фрейма в байтах (40000 начало расположения тайлов))
Именно это выражение должно быть представленно ввиде двух байт, которые заносятся в регистры процедуры вывода тайла на экран.

Shadow Maker
16.01.2012, 23:14
ну и занеси в регистр B чегонить, в цикле добавь и курага, не?

типа

ld b, нумер
ld hl, 40000
ld de, размер фрейма в байтах
L1 add hl, de
djnz L1

не?

ALKO
17.01.2012, 00:01
да - это самое то.
Только когда я указываю на нулевой фрейм на экране пусто (с 1...и т.д. нормально вызываются кадры)

---------- Post added at 23:47 ---------- Previous post was at 23:45 ----------

по-идее при b = 0 , hl= 40000

---------- Post added at 23:48 ---------- Previous post was at 23:47 ----------

Но если убрать эту процедуру перевода и вместо неё поставить ld hl,40000 картинка вырисовывается та, что надо

---------- Post added at 23:49 ---------- Previous post was at 23:48 ----------

ладно, просто сделаю смещение 40000-размер кадра

---------- Post added 17.01.2012 at 00:01 ---------- Previous post was 16.01.2012 at 23:49 ----------


LD B,Y
LD C,X

LD A,B
LD H,A
RRCA
RRCA
RRCA
AND A,224
ADD A,C
LD L,A
LD A,H
AND 24
OR 64
LD H,A

А вот перевод координат чего-то не работает.:o

Alex Rider
17.01.2012, 00:44
да - это самое то.
Только когда я указываю на нулевой фрейм на экране пусто (с 1...и т.д. нормально вызываются кадры)

При b = 0 считается, что оно равно 256, ибо djnz сначала уменьшает счетчик, а потом сравнивает его с 0. Если хочется получать адрес нулевого элеманта, надо что-то типа этого:


ld b,нумер
ld hl,40000
inc b
dec b
ret z
ld de,размер фрейма в байтах
L1 add hl,de
djnz L1

palsw
17.01.2012, 02:14
Там ни одна прога (что касается вывода спрайтов) нормально не компилится

Все там прекрасно работает,но есть опечатки.но все можно обдумать и исправить - на себе проверил.напиши какая имено прога не работала,гляну краем глаза

AndTorp
17.01.2012, 03:19
ld b,нумер
ld hl,40000
inc b
dec b
ret z
ld de,размер фрейма в байтах
L1 add hl,de
djnz L1

А какой размер фрейма? На 256 нацело делится?

ALKO
17.01.2012, 03:29
Все там прекрасно работает,но есть опечатки.но все можно обдумать и исправить - на себе проверил.напиши какая имено прога не работала,гляну краем глаза
Там , где пример с чуваком из fist и ещё куча примеров со спрайтами...
Но я уже начал тайлово делать.
Нарисовал глав. ге-я и второстепенные объекты.


А какой размер фрейма?
288 байт = 48*48 пикселей = 6*6 знакомест

---------- Post added at 03:29 ---------- Previous post was at 03:28 ----------

Мне сейчас осталось разобраться только с переводом координат в байты.

AndTorp
17.01.2012, 03:49
Мне сейчас осталось разобраться только с переводом координат в байты.

Нашел, вроде работает:

;H=X, L=Y
LD A,L
AND 7
RRCA
RRCA
RRCA
OR H
LD H,L
LD L,A
LD A,H
AND #18
OR #40
LD H,A
RET

Andrew771
17.01.2012, 11:47
Сообщение от Andrew771
LD B,Y
LD C,X

LD A,B
LD H,A
RRCA
RRCA
RRCA
AND A,224
ADD A,C
LD L,A
LD A,H
AND 24
OR 64
LD H,A
А вот перевод координат чего-то не работает.

В регистрах B и C координаты знакомест (а не точек), начиная с верхнего левого угла с 0. Должно работать. Возможно, команду AND A,224 заменить на AND 224 - так правильнее.

ALKO
17.01.2012, 23:00
"AND A,224, ADD A,C" да возможно из-за этого и не компилило

Вот на этом скрине задействованы некоторые тайлы, которые я уже нарисовал.
И музон уже сделал на 2 кб (на фазе под бипер).
(тайлы пожрали 8 кб только это ещё не все нарисованы)
http://cs10320.vk.com/u53856147/98301119/y_cb67e0c8.jpg

---------- Post added at 21:27 ---------- Previous post was at 21:26 ----------

поведение врага будет сложно создать...

---------- Post added at 23:00 ---------- Previous post was at 21:27 ----------











Вот процедура, отвечающая за тайлы

org 23296
ld b,1 ; номер кадОра
ld hl, 39712 ; смещение от 40000 - размер кадОра
ld de, 288
L1 add hl, de
djnz L1

ld de,18000 ;координата куда засовывать кадЫр
ld b,48 ; пиксилы по вертикале
n1 push bc
push de
dup 6 ; кол-во знакомест по горизонтале (штоле)
ldi
edup
pop de
call de_inc
pop bc
djnz n1
ret
de_inc inc d
ld a,d
and 7
ret nz
ld a,e
add a,32
ld e,a
ret c
ld a,d
sub 8
ld d,a
ret


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

ALKO
18.01.2012, 02:40
Хммммм..........Бадыль какой-то непонятный.....
Всё равно не работает этот перевод координат чего-то.




org 23296
ld b,1 ; &#237;&#238;&#236;&#229;&#240; &#241;&#240;&#224;&#237;&#238;&#227;&#238; &#234;&#224;&#228;&#240;&#224;
ld hl, 39712 ; &#241;&#236;&#229;&#249;&#229;&#237;&#232;&#229; &#238;&#242; 40000 - &#240;&#224;&#231;&#236;&#229;&#240; &#234;&#224;&#228;&#240;&#224;
ld de, 288
L1 add hl, de
djnz L1

push HL

LD B,4 ; попытка перевода числа
LD C,4

LD A,B
LD H,A
RRCA
RRCA
RRCA
AND 224
ADD C
LD L,A
LD A,H
AND 24
OR 64
LD H,A


ld de,HL

pop HL

ld b,48
n1 push bc
push de
dup 6
ldi
edup
pop de
call de_inc
pop bc
djnz n1
ret
de_inc inc d
ld a,d
and 7
ret nz
ld a,e
add a,32
ld e,a
ret c
ld a,d
sub 8
ld d,a
ret

AndTorp
18.01.2012, 04:55
Хммммм..........Бадыль какой-то непонятный.....
Всё равно не работает этот перевод координат чего-то.


push HL

LD B,4 ; попытка перевода числа
LD C,4

LD A,B
LD H,A
RRCA
RRCA
RRCA
AND 224
ADD C
LD L,A
LD A,H
AND 24
OR 64
LD H,A


ld de,HL
pop HL

"ld de,HL" - это что за команда? Может это "EX DE,HL"?
Если перевод координат не сработает, попробуй процедуру, которую я привел в этой теме раньше.

З.Ы. Если в процедуре Andrew771 заменить все регистры "H" на "D", а "L" на "E", то PUSH HL, POP HL и EX DE,HL не понадобятся.

ALKO
18.01.2012, 05:35
Если перевод координат не сработает, попробуй процедуру, которую я привел в этой теме раньше.
пробовал, без результатно

---------- Post added at 05:24 ---------- Previous post was at 05:20 ----------


Может это "EX DE,HL"?
О! Пашыыыыт!!!

Я давненько уже на асме ни чего не делал, уже и запамятовал кое чё.

---------- Post added at 05:35 ---------- Previous post was at 05:24 ----------

AndTorp, подскажите, как сделать слияние с задним планом при выводе по AND...

AndTorp
18.01.2012, 05:53
AndTorp, подскажите, как сделать слияние с задним планом при выводе по AND...
По AND, по-моему, накладывается маска на фон, а слияние делается по OR.
Подробнее в книге "Как написать игру на ассемблере", глава 7, МУЛЬТИПЛИКАЦИЯ - пятый способ вывода.

ALKO
18.01.2012, 05:56
Ах да, точно OR...

---------- Post added at 05:56 ---------- Previous post was at 05:55 ----------

очередной раз затупил :v2_dizzy_facepalm:

NovaStorm
18.01.2012, 08:04
Персонажи и колонна хороши, а вот на фоне наверное пунктира как-то многовато, можно попробовать сплошной линией, может лучше будет?
:v2_thumb:

jerri
18.01.2012, 08:59
NovaStorm, фон не должен вылезать на передний план

Andrew771
18.01.2012, 09:39
Тогда побольше фона :)

NovaStorm
18.01.2012, 13:16
jerri, конечно, потому и написал "попробовать".
Andrew771, много фона - тяжело как для железа, так и для восприятия, пиксельная каша может получиться.
А такие тайлы можно попытаться "вдавить" в фон и инвертировать, сделать их как бы "освещёнными".

ALKO
18.01.2012, 16:09
пунктира как-то многовато
Обычно разницу между передним и задним фоном делают посредством разницы освещённости, но поскольку в спектруме однобитный графон, приходиться таким макаром делать.

А вот про смешение через OR я зря надумал, так как при анимации перемещения объектов придется затирать полностью по горизонтали весь участок и поновой прорисовывать бэкграунд и персонажей.

---------- Post added at 16:05 ---------- Previous post was at 16:02 ----------


А такие тайлы можно попытаться "вдавить" в фон и инвертировать, сделать их как бы "освещёнными".
Ненавижу такой эффект. Смешение через OR лучше смотриться, чем через XOR (или как там..... вобщем аналог бейсиковского over'a ,если я вас правильно понял).

---------- Post added at 16:09 ---------- Previous post was at 16:05 ----------


Тогда побольше фона
тогда и маски надо уже делать, а ведь уже тайлами начал (как в Gay-Shot'e , если кто помнит такую игру, только там тайлы были 8*8 знакомест и всё было на васике, кроме вывода тайлов и пары звуков)

newart
18.01.2012, 17:02
поскольку в спектруме однобитный графон, приходиться таким макаром делать.
На спектруме есть Bright, если ты вдруг забыл.
И он для таких целей частенько используется.

ALKO
18.01.2012, 17:22
На спектруме есть Bright, если ты вдруг забыл.
И он для таких целей частенько используется.
А то , что я весь экран через bright сделал тёмным, что б графика была не такой НЯшной, это не очевидно?

---------- Post added at 17:22 ---------- Previous post was at 17:19 ----------

А если делать бэк и передник разными bright-ами , то будет оооочень красивый, режущий глаза, эффект - attribute clash

ALKO
21.01.2012, 03:50
Взял от сюда исходник "растворения" экранной области
http://zxpress.ru/book_articles.php?id=1026

Но чего-то он не комрпилирует.

ORG 60000
ENT $
THAW LD B,8 ;экран очищается за 8 циклов
LD DE,0 ;адрес начала кодов ПЗУ
THAW1 LD HL,#4000 ;адрес начала экранной области
PUSH DE
THAW2 LD A,(DE) ;берем «случайный» байт из ПЗУ
AND (HL) ;объединяем с байтом из видеобуфера
LD (HL),A ;помещаем обратно в видеобуфер
INC HL ;переходим к следующим адресам
INC DE
LD A,H ;проверяем, нужно ли повторять цикл
CP #58 ;если прошли еще не весь видеобуфер
; (#5800 - адрес начала области атрибутов)
JR NZ,THAW2 ; то повторяем
PUSH BC
LD BC,1
CALL 7997 ;PAUSE 1
POP BC
POP DE
LD HL,100
ADD HL,DE ;увеличиваем адрес в ПЗУ на 100
EX DE,HL ;меняем HL на DE
DJNZ THAW1 ;повторяем цикл
JP 3435 ;окончательно очищаем экран

Где тут может быть ошибка?

---------- Post added at 03:50 ---------- Previous post was at 03:45 ----------

(тяжко без подсветки синтаксиса)

AndTorp
21.01.2012, 06:27
Но чего-то он не комрпилирует.
Где тут может быть ошибка
Что за компилятор? Возможно, данный компилятор не использует директиву "ENT $". Удалить ее или закомментировать.

ALKO
21.01.2012, 16:29
zx assembler++
(который встроен в emuZwin)

---------- Post added at 16:16 ---------- Previous post was at 16:04 ----------

Да, это таки из-за ENT'a была ошибка.....А что это за директива такая ?



ENT наверно указывает откуда начинать программу, но разве не достаточно ORG'a ?

AER
21.01.2012, 16:40
ORG указывает куда компилировать
ENT указывает ассемблеру откуда запустить

goodboy
23.01.2012, 13:49
а между тем на ebay продают распечатки исходников игры midnight resistance http://www.ebay.co.uk/itm/Sinclair-ZX-Spectrum-Midnight-Resistance-Source-Code-Jim-Bagley-/110778560627?pt=UK_VintageComputing_RL&hash=item19caeab073

newart
23.01.2012, 16:21
а между тем на ebay продают распечатки исходников игры midnight resistance http://www.ebay.co.uk/itm/Sinclair-Z...item19caeab073
А давайте скинемся?

Игрушка то зачетная.

---------- Post added at 16:21 ---------- Previous post was at 15:43 ----------

Даю 200р на это дело. Кто еще?

jerri
23.01.2012, 16:50
newart, были бы файлы другое дело
а распечатанные тексты - оно надо?

newart
23.01.2012, 17:02
newart, были бы файлы другое дело
а распечатанные тексты - оно надо?
Думаешь движок по ним не востановить?

jerri
23.01.2012, 17:43
newart, а зачем? в МидРес достаточно простой и грубый движок его ценность в распечатке гораздо ниже чем тоже но на диске/кассете/микродрайве ;)

newart
23.01.2012, 18:01
newart, а зачем? в МидРес достаточно простой и грубый движок
Да но, иходников ничего даже близкого к этому движку нет.

NEO SPECTRUMAN
23.01.2012, 21:55
А давайте скинемся?
Игрушка то зачетная.

Это бы в отдельную тему.

NovaStorm
24.01.2012, 10:37
Неясна лицензия на движок, если это распечатка и использовать код нельзя, ею остаётся только подтереться.
Хотя игру, помню, проходил.

jerri
24.01.2012, 15:19
newart, У нас есть более технологичные и качественные движки
вот тот же Wolf48 например - однако использовать их почемуто не получается?
зачем еще один никомуненужный движок?

Shadow Maker
24.01.2012, 15:21
Наверное "чтобы был", это в принципе часть истории и такую же историческую ценность представляет. С другой стороны движка под 48 для 2d скролл-шутеров типа MidRes я не помню в свободном доступе.

newart
24.01.2012, 15:40
вот тот же Wolf48 например
Это пока не жвижок. Много ли можно придумать игр с лабиринтом без предметов и врагов?

---------- Post added at 15:39 ---------- Previous post was at 15:38 ----------


С другой стороны движка под 48 для 2d скролл-шутеров типа MidRes я не помню в свободном доступе.
О чем и разговор.

---------- Post added at 15:40 ---------- Previous post was at 15:39 ----------


зачем еще один никомуненужный движок?
Если его оформить должным образом то еще как нужен будет.

jerri
24.01.2012, 15:49
newart,
есть уже предметы, и враги тоже есть

только вот в каком виде? если на Спеке нет желания писать
а кроме как под Аласм этот движок нигде не собирается

Ты оформлять движок будешь?