Autor Wątek: Castlevania - port na CPC  (Przeczytany 25077 razy)

zx81

  • **
  • Wiadomości: 71
  • Miejsce pobytu:
    krakow
Odp: Castlevania - port na CPC
« Odpowiedź #15 dnia: 2014.12.16, 07:17:24 »

Sugestie i komentarze, pochwały i zażalenia - wszystkie mile widziane. :D
Pomysl swietny. Tak jak Tygrys piwiedzial zycze wam zapalu.

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Castlevania - port na CPC
« Odpowiedź #16 dnia: 2014.12.16, 10:56:25 »
Dodam jeszcze że jak coś nie będziecie wiedzieli to pytajcie. Ileś gier już napisałem i chętnie podzielę się doświadczeniem.

 Tak naprawdę bowiem Amstrad CPC to w 90% to samo co Spectrum ;) Tryb graficzny inny ale procesor i techniki tworzenia gier takie same.

Trochę też nie zrozumiałem - chcecie to pisać w asemblerze czy w C?

Bo jeśli w C to i tak cały silnik graficzny trzeba będzie zrobić wstawkami w asemblerze bo język wyższego poziomu się nie wyrobi z szybkością. A w C można będzie zrobić logikę gry typu przeciwnik atakuje gdy podejdziesz odpowiednio blisko do niego. Takie rzeczy zwykle zajmują mało czasu procesora więc nie musimy się tu martwić o trochę mniej wydajny kod.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Castlevania - port na CPC
« Odpowiedź #17 dnia: 2014.12.16, 14:00:00 »
Ja też jestem przekonany o konieczności wstawek w ASM chociażby przy sprajtach. Ale Gotham jest przyzwyczajony na Symbianie że C potrafi wszystko i wydaje mi się że nie zdaje sobie sprawy z tego o ile Z80 jest wolniejszy w porównaniu ze smartphonami, a do tego zakręcona organizacja pamięci graficznej która komplikuje kod i spowalnia wszelkie modyfikacje w pamięci ekranu.

Ale znalazł stronkę gdzie sprajty z NESa są rozłożone na klatki obok siebie na tym samym obrazku, co mnie cieszy. :)
http://www.spriters-resource.com/nes/cv/sheet/8477  <- tu i następne 2 Sheet-y.
Ja zamierzam pokonwertować mapy i sprajty i zrobić w Basicu coś co będzie ich prezentacją i edytorem. Mam znacznie więcej czasu za to większe kłopoty z natchnieniem niż on. ;)  Przyznaję że od 4 dni nic z tym nie robiłem, a właśnie oglądając sprajty uświadomiłem sobie że aby to pasowało do map to muszę zmienić kolejność kolorów w palecie, a tym samym pokonwertować to co mam od nowa. :D  W każdym bądź razie na tak przygotowanych danych będzie można zależnie od natchnienia, albo pisać kod w C albo dopieszczać pikselki. :)

Przydałaby się procedura w ASM która przerzuca kafelki między ekranem a buforem i z powrotem (czyli dwie jej wersje). Z tym że w buforze dane o kolejnych linijkach z jakich składa się obiekt są zaraz po poprzedniej linijce, natomiast w pamięci ekranu początek każdej następnej linijki obiektu jest o 2048 bajtów dalej niż poprzednia. Tzn tak łatwo to jest tylko w przypadku gdy kafelek ma maks 8 linii w pionie. A że na razie tylko taki przypadek rozpatrujemy. To nie komplikujmy.

Kafel ma 4 bajty szerokości (2 pix w bajcie) i 8 bajtów wysokości, razem 32 bajty. I chciałbym aby można było za pomocą POKE wstawiać w nią dwa jednobajtowe parametry x i y (współrzędne lewego górnego bajta kafla na ekranie) (oba liczone od 0) oraz 2bajtowo adres bufora, który może być dowolny. I pod tym adresem jest lub ma być (zależnie od tego w którą stronę przerzucamy kafel) te 32 bajty. Natomiast w pamięci ekranu do adresu początkowego pamięci ekranu &C000 dodajemy x oraz y*80 i tam wstawiamy (lub bierzemy) 4 pierwsze bajty kafla, a kolejne 4 są 2048 bajtów dalej niż 1szy bajt 1ej linijki obiektu. I tak samo kolejne linie obiektu są o 2048 bajtów dalej niż początek poprzedniej linii. Procedura musi się kończyć RET (&C9). I żebym umiał ją wklepać z Basica podaj mi ją bajt po bajcie w Hexach, (coś jak w listingach z liniami DATA z Bajtka), bo z listingiem asemblera nie będę wiedział co zrobić. Zaznaczając w którym bajcie wstawić x,y i adrBuf. Mam nadzieję że dość jasno opisałem o co mi chodzi. :)  A tak w ogóle to dzięki Rafał za zaoferowanie pomocy. :D
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4540
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Castlevania - port na CPC
« Odpowiedź #18 dnia: 2014.12.16, 14:14:00 »
Cytuj
Przydałaby się procedura w ASM...

Napisałem dla was taką procedurę, tylko muszę  ją przetestować. Bez paniki, proszę ;-)
Po padzie komputera muszę sobie wszystko poustawiać od nowa.



gotham

  • ***
  • Wiadomości: 135
  • Miejsce pobytu:
    Kraków
Odp: Castlevania - port na CPC
« Odpowiedź #19 dnia: 2015.01.07, 18:20:38 »
I jak sprawa procedury?
Amstrad  6128 plus + CM14 , Gamecube , Xbox 1 , PSP , Neogeo Pocket color x 2 ,

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4540
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Castlevania - port na CPC
« Odpowiedź #20 dnia: 2015.01.08, 12:58:13 »
ZbyniuR ją dostał i pewnie zrobi z niej użytek.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Castlevania - port na CPC
« Odpowiedź #21 dnia: 2015.01.19, 23:48:12 »
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Castlevania - port na CPC
« Odpowiedź #22 dnia: 2015.01.20, 10:43:47 »
Cytuj
My tu gadu gadu...

No właśnie Zbyniu, a co z waszym projektem? :)

gotham

  • ***
  • Wiadomości: 135
  • Miejsce pobytu:
    Kraków
Odp: Castlevania - port na CPC
« Odpowiedź #23 dnia: 2015.01.20, 11:33:31 »
Ja czekam na swoje CPC + aż do mnie przyjedzie. Jest kilka rzeczy związanych z grafiką . Żeby gra miała ręce i nogi trzeba od nowa wszystko narysować. I co najważniejsze zdecydować się na normalny format obrazu albo bardziej panoramiczny.
Amstrad  6128 plus + CM14 , Gamecube , Xbox 1 , PSP , Neogeo Pocket color x 2 ,

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Castlevania - port na CPC
« Odpowiedź #24 dnia: 2015.01.20, 17:00:49 »
Pozwolicie, że odbiegnę na moment od tematu, ale nikt chyba jeszcze tu na forum nie pisał o metodach zapisu mapy gry w pamięci. Czytałem gdzieś, że w Saboteur 2 ma 768 ekranów (byłoby to 32x24). Ekran gry ma 32x16 znaków. Zmapowanie ich metodą znakową 8x8 zajęłoby około 400kB plus rozmieszczenie sprite'ów. Fakt, że wiele ekranów się powtarza, ale to też musi być gdzieś zapisane. Unikalnych znaków 8x8 jest trochę, może 16, może więcej, więc pewnie oszczędność na bitach, cztery w jednym bajcie i tiles 16x16 daje 24576, czyli luz. Czy ktoś może pociągnąć dalej? Ja się jedynie domyślam, a przydałoby się wiedzieć :)
AY Music, ULA plus.

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Castlevania - port na CPC
« Odpowiedź #25 dnia: 2015.01.20, 17:23:01 »
Może jakaś kompresja? Ekrany mają z reguły duże obszary powtarzających się "kafelków",  a to się łatwo kompresuje.

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Castlevania - port na CPC
« Odpowiedź #26 dnia: 2015.01.20, 19:56:56 »
Cytuj
Pozwolicie, że odbiegnę na moment od tematu, ale nikt chyba jeszcze tu na forum nie pisał o metodach zapisu mapy gry w pamięci...

No to jest większy temat :)

Bloczki są jedną z opcji. Mają swoje zalety ale są  istotnie opcją dosyć pamięciożerną. Nawet jak zrobimy obszar gry na 2/3 ekranu to bloczki 8x8 zabiorą nam 32x16=512 bajtów. Dlatego tak małych bloczków prawie nikt nigdzie nie używa. Jeśli użyjemy większych kafli 16x16 to  będziemy mieli 16x8=128 bajtów na lokację. To już się robi sensowne - 100 lokacji w 12 kilobajtach.

Ale zamiast bloczków możemy  możemy mieć obiekty w podanych współrzędnych. Czyli czyszczę ekran i mam później w pamięci zapis np. taki

1,10,16
255,2,20,0,16,1
0


1,10,16 - oznacza postaw obiekt numer 1 w 10 wierszu i 16 kolumnie. Ten obiekt to może być np drzewo wielkie na pół ekranu (powtarzające się później w innych lokacjach). Po co budować takie drzewo z kafli jak może je mieć od razu i w danych sprajta przechowywać jego rozmiar)

A np 255 jest kodem zastrzeżonym i oznacza powtórzenie grafiki. Czyli weź obiekt nr 2, zacznij z wiersza 20 i kolumny 0 i powtórz go 16 razy w poziomie i raz w pionie. I tak np. z grafiki 16x16 pikseli zrobiliśmy sobie np glebę szeroką na cały ekran.

Z kolei 0 kończy dane poziomu czyli mamy ziemię, na ziemi drzewo a dane lokacji (nie mylić z danymi grafiki) to tylko 10 bajtów.

To był w miarę prosty przykład. Tak naprawdę sposobów na organizację danych mapy może być bardzo wiele. Przy nieskomplikowanych lokacjach (a w Saboteurze są raczej proste) da się upchnąć w pamięci nawet taką wielką mapę.





Amun-Ra

  • ***
  • Wiadomości: 111
  • Miejsce pobytu:
    Kielce
  • P. D.
    • …
Odp: Castlevania - port na CPC
« Odpowiedź #27 dnia: 2015.01.20, 20:30:04 »
Całkiem niezła metoda. To dosyć ważny temat, w przeciwnym wypadku wychodzą niewypały w rodzaju Dizzy na Atari, gdzie każdy ekran doczytuje się na żywo z dyskietki...
And the Lord said unto John, come forth and thou shall receive eternal life. But John came fifth and won a toaster.
https://retro.rocks/cc/

gotham

  • ***
  • Wiadomości: 135
  • Miejsce pobytu:
    Kraków
Odp: Castlevania - port na CPC
« Odpowiedź #28 dnia: 2015.05.16, 23:56:48 »
Nareszcie dostałem swojego wymarzonego amstrada. Co do gry to największą przeszkodą jest grafika. Jej narysowanie w zasadzie od początku. Czy jest na forum grafik który podjąłby się takiego wyzwania?
Amstrad  6128 plus + CM14 , Gamecube , Xbox 1 , PSP , Neogeo Pocket color x 2 ,

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Castlevania - port na CPC
« Odpowiedź #29 dnia: 2015.05.25, 15:35:06 »
No zajebisty miałeś odzew. Ale nie przejmuj się, tu tak zawsze jest ;)

Poważnie mówiąc gdybyś naprawdę chciał pozyskać konkretnego (z umiejętnościami i solidnego) człowieka do projektu to musiałbyś najpierw sam coś pokazać - działające demo.

Konkretni ludzie ludzią pracować z innymi konkretnymi ludźmi, przy projektach które mają realną szansę na powstanie.

W dzisiejszych czasach praktycznie każdy programista robiący jakąś grę retro musi umieć sam choć trochę rysować. Narysuj więc bohatera, jednego wroga i kilka plansz a jak to wszystko będzie sensownie chodzić i ludzie to zobaczą to i o grafika będzie łatwiej, także w innych społecznościach -  Warsztat.gd, Devianart itp.