Это я сказал?Цитата:
Сообщение от Shadow Maker
Кто тут с головой не дружит?
Вид для печати
Это я сказал?Цитата:
Сообщение от Shadow Maker
Кто тут с головой не дружит?
Я сказал. Про трассировщик. Уж лучше вообще без трассировки, да, чем когда герой утыркивается у каждого столба. А ты принял на счет всей игры что ли? Если да, то зря.
Мужики. Чем спорить напишите мне процедуру поиска пути. Умную:)Цитата:
Сообщение от Shadow Maker
Говорить про открытость исходников "ЧВ" не стоит. Они не открыты, а выкинуты в сеть. Разобраться в них сможет только программист (Алко, например). Я же не программист, а по профессии и вовсе учитель физкультуры. Программировать учился самомстоятельно. У меня нет азов, которые дают в вузах и прграммировать для меня сложно, но интересно, почему и занимаюсь этим.
И вообще больше по существу! Что хотелось бы добавить в игру, сделать, например, на что-то похожим и т.д. и т.п. Нужны рац. предложения, а не упреки мол хреново ходит. То, что плохо ходит, это исправим:)
Axor, ну хочешь, я напишу тебе поиск пути. Давай в мыло тогда, опиши требования к нему - вход-выход, сколько памяти под буфера есть...
Заодно процедуру печати свою покажи, может чего посоветую.
Я ведь года два назад баловался, ещё до Gogin'ского марио сделал свой вариант вывода фона (один битплан, правда) с фреймовым скроллом. Так что может и твою процедуру смогу оптимизнуть хоть чуть-чуть.
по Медноноговски завтра кину листингЦитата:
Сообщение от axor
у тебя как спрайты хранятся по тайлам или 2*16?
axor, ты расскажи хоть в чем суть игры? Раза два уже спросил... А то карта, причем какая-то странная, пропорции в смысле уж больно непонятные... Ну ходит бабуля. Чего это будет хоть? А я бы с удовольствием чего-нить напредлагал, дык ничего ж нету и неясно че будет.
Не знаю как кто, а я протащился от графики - Сафрин бог :) - (упавшие заборы и вывеска "ясная поляна" - просто супер). Впринципе, можно как в ЧВ менять для разных карт цвет фона и всё будет рулить и без цвета на каждое знакоместо.
1) Ходит действительно весьма неторопливо, хотя, если частоту возникновения событий увеличить, то это деже плюс - можно на карту меньших размеров больше игры вместить. И если по мере прокачки Вера станет бегать быстрее, то это тоже будет плюсом - разнообразие.
2) С трассировкой пути - это чисто технический вопрос и вполне решаемый. Хотя мне не понятны отмазки типа, я сам учился программировать, а по специальности вообще учитель физкультуры. Я тоже учился программировать сам, и это не важно где, в университете, или дома. Было бы желание можно и в исходах ЧВ разобраться. Но если Shiru поможет с этим, я думаю все будет только хорошо.
3) Не сосвем хорошо сделан скроллер: когда вера пытается уйти за пределы экрана - карта за ней неприятно дёргается, лучше всего, чтобы карта скролировалась за ней визуально плавно.
Кстати, может быть я не совсем хорошо смотрел, но не совсем понятно, это что квест, РПГ или может быть hack'n'slash вроде Diablo? Хорошо бы, если бы квест с элементами РПГ или наоборот РПГ с элементами квестов :)
Вот как обещал
Код:
;быстрая процедура рисования тайлов 2*16
;через стек с включенными прерываниями
;структура буфера - как экран - для примера
;ограничения: рисование только по четной Y координате
;ALASM
;модифицирование перехвата прерывания
interrupt
di
ex de,hl ;get sprite_data
ex (sp),hl ;restore damaged sprite/get return adres
ld (int_0),hl ;store return adr
pop hl ;restore hl
ld (int_1),sp ;store stek_pointer
ex de,hl
ld sp,interrupt_stek_adress
call interrupt_control
ld sp,$
int_1 equ $-2
ei
jp $
int_0 equ $-2
;собственно рисование через стек
tile_draw
;hl-tile adress
;bc-buf_adress
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld (tile_0),sp
ld sp,hl
ld h,b,l,c
ld (hl),e
inc l
ld (hl),d
inc h
pop de
ld (hl),d
dec l
ld (hl),e
inc h
dup 2
pop de
ld (hl),e
inc l
ld (hl),d
inc h
pop de
ld (hl),d
dec l
ld (hl),e
inc h
edup
pop de
ld (hl),e
inc l
ld (hl),d
inc h
pop de
ld (hl),d
dec l
ld (hl),e
;переход из знакоместа в знакоместо
ld bc,-#700+#20
add hl,bc
dup 3
pop de
ld (hl),e
inc l
ld (hl),d
inc h
pop de
ld (hl),d
dec l
ld (hl),e
inc h
edup
pop de
ld (hl),e
inc l
ld (hl),d
inc h
pop de
ld (hl),d
dec l
ld (hl),e
ld sp,0
tile_0 equ $-2
;-----------------------
Я тоже раза три спросил про это... Все проигнорировали в дуст...Цитата:
Кстати, может быть я не совсем хорошо смотрел, но не совсем понятно, это что квест, РПГ или может быть hack'n'slash вроде Diablo? Хорошо бы, если бы квест с элементами РПГ или наоборот РПГ с элементами квестов
Вот мой вариант.Цитата:
Сообщение от jerri
Код:Начало работы в прерываниях.
;IM_2 Программа на вторых прерываниях
ORG IM2 ;#6060
EX (SP),HL
LD (adr_ret+1),HL
POP HL
LD (IM2_SP+1),SP
PUSH BC ;процедуры печати спрайтов
;должны оперировать с регистром BC (POP BC)
LD SP,IM2 ;может быть любым, только с умом!
PUSH IX,IY,HL,DE,BC,AF
EX AF,AF'
EXX
PUSH HL,DE,BC,AF
...
;Основная идея (формат) Д.Быстрова (Alone Coder)
;Реализация А. Шушкова (Xor)
;Печать идет через стек, но без запрета прерываний
;Печать спрайта 2*2 знакоместа на теневом экране
;DE-координаты в системе 2*2 знакоместа (D-Y, E-X)
;HL-номер спрайта (0-511)
BLOCK22 LD A,PG_SPR
CALL PAGE
LD (BL22SP+1),SP
LD BC,SPR ;Высчитываем адрес спрайта
ADD HL,HL ;HL=HL*32
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,BC
LD C,(HL) ;Делаем именно так, чтобы прерывание
;не испортило спрайт
INC HL ;поэтому в BC у нас
;уже есть первые 2 байта спрайта
LD B,(HL)
INC HL
LD SP,HL ;Теперь стек указывает на начало спрайта
SLA D ;Высчитываем адрес в теневом экране
;для печати спрайта
SLA E
LD HL,SHADSCR
ADD HL,DE
LD DE,#FF20
;Непосредственно сам вывод спрайта
LD (HL),C
INC L
LD (HL),B
INC H
POP BC
LD (HL),B
DEC L
LD (HL),C
ADD HL,DE
DUP 6
POP BC
LD (HL),C
INC L
LD (HL),B
INC H
POP BC
LD (HL),B
DEC L
LD (HL),C
ADD HL,DE
EDUP
POP BC
LD (HL),C
INC L
LD (HL),B
INC H
POP BC
LD (HL),B
DEC L
LD (HL),C
BL22SP LD SP,0
RET