Mad Pascal

Nie ma róży bez kolców... Miejsce na dyskusję o najmłodszym bracie C64
Wiadomość
Autor
zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Re: Mad Pascal

#21 Post autor: zbyti »

Dzięki @carrion za miłe słowo :]

Nie, nie pisałem jeszcze na Plus4World.com bo nie mam tam konta, może z czasem założę ale jak chcesz tam dać znać to fajnie.

Ta gra to taka piaskownica z prostymi AI ale można napisać lepsze i to zostawiam chętnym albo sobie jak będę miał natchnienie :]

Do tego trochę pociąga mnie C+4 i Twój artykuł na temat KickC i C+4 pozwolił mi postawić pierwsze kroki :)

Filmik i art. na portalu był by cool bo zależy mi trochę na promocji Mad Pascala bo wtedy jego autor TeBe doda więcej ficzerów związanych z rodziną Commodore a tak to wsparcie teraz jest podstawowe (mi wystarcza) a cała para idzie w platformę A8.

Większe zainteresowanie z strony Commodore większa motywacja dla autora Mad Pascala ;)

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Siege AI Playground

#22 Post autor: zbyti »

@carrion właśnie udało mi się (w końcu) wygrać z komputerem we własną grę :D także proszę nie narzekać na poziom trudności jakby co, gra jest do przejścia, po prostu trzeba zaobserwować najwłaściwszą drogę na każdym poziomie a zwłaszcza na 2 ostatnich ;)

Awatar użytkownika
carrion
Posty: 2329
Rejestracja: 27 lut 2009, 17:38
Kontakt:

Re: Mad Pascal

#23 Post autor: carrion »

hehe właśnie miałem pisać że jest mega trudno. nie wygrałem ani razu - troche za szybcy są dla mnie ci przeciwnicy...
ale ale mam pomysł. Zrobię ci do tego jakiś obrazek tytułowy bo chciałbym zobaczyć jak poradzisz sobie z dodaniem w Mad Pascalu obrazka w trybie graficznym do tej gry... Machne coś na szybko więc nie będzie to jakieś arcydzieło, ale zawsze coś :)

Czy nazwa "C+4 Tron" będzie OK?
Ide zaraz nakręcę jakiś mini filmik bo najwyższy czas coś na portal i na kanał wstawić.
c64portal.pl, retronavigator.com

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Re: Mad Pascal

#24 Post autor: zbyti »

No to proszę, w załączniku wersja wolniejsza ;)

Może zrobię wybieranie szybkości? ;) Ta wersja w co grałeś uważana jest przeze mnie za normal :D w załączniku masz to co uważam za slow :]

Chętnie zapodam Twoją grafikę do tej gry, nie musi być nic fancy ;)

Kluczem do zwycięstwa jest dostrzeżenie patternów AI, też na początku nie mogłem wygrać przez cały dzień od ukończenia prac, ale teraz wygrywam za każdym razem, nie wszystkie rundy ale pierwszy dochodzę do 9 zwycięst.

Tytuł gry jaki chcesz, dla mnie to jest piaskownica ;)
main_slow.zip
(2.64 KiB) Pobrany 62 razy

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Tron+4 WINNER ;)

#25 Post autor: zbyti »

Nie jest lekko ale można :]
Screenshot_2021-02-21_14-59-02.png
Screenshot_2021-02-21_14-59-02.png (32.15 KiB) Przejrzano 1852 razy

Awatar użytkownika
carrion
Posty: 2329
Rejestracja: 27 lut 2009, 17:38
Kontakt:

Re: Mad Pascal

#26 Post autor: carrion »

poszedł news na portalu
https://c64portal.pl/2021/02/22/program ... al-dla-c4/

jest filmik z mini niespodzianką na końcu :)
zapodałem też info na plus4world - możliwe że będzie news na ich głównej.
c64portal.pl, retronavigator.com

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Re: Mad Pascal

#27 Post autor: zbyti »

Dzięki, bardzo fajnie wyszedł ten materiał, no i dopieściłeś mi ucho moim ulubionym muzykiem ze sceny C64 z lat '90 - lepiej być nie mogło :D

Awatar użytkownika
carrion
Posty: 2329
Rejestracja: 27 lut 2009, 17:38
Kontakt:

Re: Mad Pascal

#28 Post autor: carrion »

Przetestowałem grę na 16 kb. Działa!
c64portal.pl, retronavigator.com

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Tron+4 C16

#29 Post autor: zbyti »

No to ok, celujemy także w 16KB RAM ;)

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Mad Pascal - IRQ

#30 Post autor: zbyti »

Aby się zsynchronizować z ramką potrzebowałem opanować Raster IRQ, wydaje się, że to może wyglądać tak jak poniżej, od linii 204 to chyba nawet może ten kod robić za VBLK ;)

Kod: Zaznacz cały

var
  DETIRQSRC                          : byte absolute $ff09;  //detect IRQ source, and clear IRQ flag
  SETIRQSRC                          : byte absolute $ff0a;  //set IRQ source
  RC                                 : byte absolute $ff0b;  //raser counter bits 0-7
  BACKGROUND                         : byte absolute $ff15;
  BOREDER                            : byte absolute $ff19;
  VCOUNT                             : byte absolute $ff1d;  //vertical line bits 0-7
  IRQVEC                             : word absolute $fffe;

var
  tmp                                : byte absolute $ff;


procedure myRasterIrq; interrupt;
begin
  asm { phr };

  Inc(BOREDER);
  tmp:= VCOUNT + 32; repeat until tmp = VCOUNT;
  Dec(BOREDER);

  DETIRQSRC := DETIRQSRC and %01111111;
  asm { plr };
end;

begin
  pause;

  asm { sei \ sta $ff3f};

  RC := 204; SETIRQSRC := 2;
  DETIRQSRC := DETIRQSRC and %01111111;

  IRQVEC := word(@myRasterIrq);

  asm { cli };

  repeat until false;
end.
Screenshot_2021-02-22_22-37-00.png
Screenshot_2021-02-22_22-37-00.png (17.35 KiB) Przejrzano 1782 razy

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Mad Pascal - kodowanie stringów

#31 Post autor: zbyti »

No i dzięki TeBe mamy kolejny drobiazg dla rodziny Commodore ale ułatwiający życie :)

Od dziś zamiast pisać tak:

Kod: Zaznacz cały

procedure endScreen;
var
  winner: string = #23#9#14#14#5#18#33;
  loser : string = #12#15#19#5#18#33;
begin
  if player1.score = ZERO + VICTORIES then printXY(winner, 2, 0, $71 + $80)
  else printXY(loser, 2, 0, $71 + $80);
end;
można już tak:

Kod: Zaznacz cały

procedure endScreen;
var
  winner: string = 'winner!'~;
  loser : string = 'looser!'~;
begin
  if player1.score = ZERO + VICTORIES then printXY(winner, 2, 0, $71 + $80)
  else printXY(loser, 2, 0, $71 + $80);
end;

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Re: Mad Pascal - IRQ

#32 Post autor: zbyti »

zbyti pisze:
22 lut 2021, 22:22
Aby się zsynchronizować z ramką potrzebowałem opanować Raster IRQ, wydaje się, że to może wyglądać tak jak poniżej, od linii 204 to chyba nawet może ten kod robić za VBLK ;)
Eh... Oczywiście miałem na myśli, że ten kod może "robić" za VBI a nie VBLK, podczas VBLK to on będzie pracował.

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Mad Pascal - Multicolor

#33 Post autor: zbyti »

Mad Pascal został skrojony pod Atari i jego znakomity format binarny XEX. Z tego powodu nie działa jeszcze dla rodziny Commodore dyrektywa dołączania zasobów, dlatego musiałem się posłużyć małym trickiem.

Zasoby umieściłem w procedurze ASM gdzie mogłem sterować za pomocą ORG miejscem danych w pamięci a na końcu (by optymalizator nie wyrzucił mi nieużywanej procedury) przypisałem ją do zmiennej absolute.

Mam nadzieję, że z czasem będzie to można zrobić "po ludzku" ale na ten moment działa to w ten sposób ;)

Grafika na szybko wygenerowana za pomocą Multipaint.

Kod: Zaznacz cały

var
  SETBITMAP                          : byte absolute $ff06;
  SETMCOLOR                          : byte absolute $ff07;
  BITMAPADDR                         : byte absolute $ff12;
  VIDEOMATRIX                        : byte absolute $ff14;
  BACKGROUND                         : byte absolute $ff15;
  COLOUR1                            : byte absolute $ff16;
  BORDER                             : byte absolute $ff19;

var
  tmp                                : pointer absolute $60;

procedure gfxData; assembler;
asm {
  org $4000
; bitmap:
  .byte ...

  org $6000
; colors 2
  .byte ...

  org $6400
; colors 1
  .byte ...
};
end;

{*
  multipaint format / txt export
  http://multipaint.kameli.net/
*}
begin
  SETBITMAP := SETBITMAP or $20;
  SETMCOLOR := (SETMCOLOR and $40) or $18;

  // (xx010xxx) $4000 = 2 * $2000; (xx111xxx) $e000 = 7 * $2000
  BITMAPADDR := %00010000;
  // (01100xxx) $6000; (01101xxx) $6800; (01110xxx) $7000; ...
  VIDEOMATRIX := %01100000;

{
  ; border
    .byte 6
  ; background 1:
    .byte 0
  ; background 2:
    .byte 65
}
  BORDER := 6;
  BACKGROUND := 0;
  COLOUR1 := 65;

  tmp := @gfxData; // opt workaround

  repeat until false;
end.
Screenshot_2021-02-26_14-48-00.png
Screenshot_2021-02-26_14-48-00.png (24.84 KiB) Przejrzano 1721 razy
smile.zip
(1.49 KiB) Pobrany 54 razy

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Multicolor a C16

#34 Post autor: zbyti »

@Carrion coś mi się nie zgadza...

C16 ma 16KB czy od $0 do $3fff.

Pamięci ekranu nie ustawię od $0 więc pierwszy możliwy adres jak zrozumiałem to $2000 czyli mapę kolorów musiałbym dać do $1800 czyli na kod zostaje mi 2KB od $1000 do $17ff.

Naprawdę wąsko :D C16 to chyba nie Atari bym mógł wczytywać dane od $400 ;)

Na upartego można by wczytać spakowaną grę i grafikę, wyłączyć system, przekopiować dane gry za stos od $200 i jakieś inne machlojki, ale czy to jest tego warte? ;)

Podrzuć grafikę jak skończysz to zacznę się bawić ;) Export jako tekst z Mulipaint jako byte z komentarzami :] i prg bym wiedział jak to wygląda. Najlepiej jako załącznik tutaj :)

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Mad Pascal - Tron+4

#35 Post autor: zbyti »

Zrobiłem mały refactor i zszedłem na ten moment do 5.9KB, więc jeszcze można trochę dołożyć "bajerów", spakowane exomizerem ma 2,7KB.

Kod: Zaznacz cały

Writing "siege.prg" as prg, saving from $1001 to $1AB5.

Memory layout:   |Start |End   |
 Crunched data   | $0FFF| $19A2|
 Decrunched data | $1001| $272A|
Spakowana wersja do pobrania w załączniku, aby tło nie było takie nudne dodałem prostą paralaksę na znaku ;)
siege.zip
(2.83 KiB) Pobrany 53 razy

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Mad Pascal - Tron+4

#36 Post autor: zbyti »

OK. Gra pójdzie na C16 ale z czołówką PETSCII albo coś jeszcze prostszego, wersja na C+4 będzie miała czołówkę na bitmapie jeżeli będę taką dysponował. Howg! :]

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Mad Pascal - Tron+4 C16 Final

#37 Post autor: zbyti »

Jeżeli chodzi o wersję na C16 to jest tutaj:

https://github.com/zbyti/siege-ai-playg ... /siege.prg

zmieniłem trochę grafikę i dodałem prostą czołówkę.

Nie dodałem zmiany prędkości bo ta co jest ustawiona jest najlepsza do dynamicznej rozgrywki.

---

Jeżeli Carrion zrobi title screen może popracuję jeszcze nad paroma niedoskonałościami, może (ale chyba lenistwo zwycięży) dam stateczek co pół znaku by tak nie szarpał itd., uruchomię własne IRQ etc. Na pewno nie będę wtedy celował w 16KB z multikolorem.

Ale generalnie gra mnie zadowala taka jak jest teraz i wolę pomyśleć nad czymś nowym.

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Tron+4 Title Screen :]

#38 Post autor: zbyti »

Tak dla picu, ale cieszy ;) może dodam randomizację na osi Y ba na ten moment losuje tylko kierunek.

Screenshot_2021-02-28_10-14-36.png
Screenshot_2021-02-28_10-14-36.png (26.01 KiB) Przejrzano 1653 razy

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Tron+4 C16 YT

#39 Post autor: zbyti »

To tak jakby ktoś uważał, że nie da się przejść ;) Potrafię lepszy wynik zrobić (4 pierwsze można dać AI do zera) ale tak też może być.

https://youtu.be/NAHH3ZmHsKE

Awatar użytkownika
carrion
Posty: 2329
Rejestracja: 27 lut 2009, 17:38
Kontakt:

Re: Mad Pascal

#40 Post autor: carrion »

ja grać może w to nie umiem, ale jestem przekonany, że da się upchnąć i bitmapę na początku + całą grę w 16 kb...
c64portal.pl, retronavigator.com

ODPOWIEDZ