Welcome, Guest. Please login or register.


Author Topic: GraCha Sprite System (Read 24103 times)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
GraCha Sprite System
« on: 2019.April.13. 23:57:10 »
Elkezdtem basic-ben írni egy rendszert karakteres (főleg gracha) módhoz. Poke-okkal műxik és zzzippel fordítható lesz. De a lényeg az lenne ha valaki majd átírná asm-ba (egyszerű lesz), mert én már nem akarok gépi kóddal foglalkozni. De direkt úgy írom meg basic-ben is hogy könnyen átírható legyen.
A lényeg, azaz ilyen funkciók lesznek:
-gracha képernyőt kirajzolja (pálya rajzoló).
-kirak egy 2x2-es "sprite"-ot (gracha elem).
-kirak nagyobb sprite-ot egy háttér bufferből, ami egy gracha képernyő (megadható a sprite mérete).
-visszarajzolja a gracha pálya 2x2-es vagy más megadott méretű részét.
-gracha pálya betöltés.
-gracha háttér képernyő betöltés (lényegében egy másik pálya). ide rajzolhatjuk a sprite-okat, akármekkorát is.
-olyan sprite rajzoló, ami egyszerre rajzol ki sok sprite-ot. ez azért szükséges, mert gyorsabb lesz tőle, mintha basicből vezérelnék egyenként a sprite rutint. tehát basicben csak meg kell adni mondjuk 8 sprite koordinátáit és sprite számát (hogy melyikeket rajzolja ki), meghívjuk ezt a rutint és kirajzolja őket egyszerre.
-valami scroll dolog. egyelőre valszeg ez csak annyi lesz hogy a pálya kirajzoló megadott eltolással tudja kirakni a pályát.
-dupla bufferes kirajzolás, azaz egy háttér bufferbe rajzol mindent, azután azt megjeleníti. esetleges villogások elkerülésére.
-mindenféle automatikus raszter színező rutinok, hogy aki nem akar vagy nem tud gracha editorban színezni, annak is legyenek szép színei. :)
-valamiféle ütközésvizsgálat: ez lehet sprite-ok közötti és a pályával.
-valami particle rendszer (sok karakter gépi kóddal való mozgatása, pl robbanás).
-dupla buffer: a videolapot 2x-es magasságúra nyitom, és így dupla bufferként használható. így teljesen megszűntethető minden villogás.

Elvileg mivel ügye karakteres képernyő, ez olyan gyors lehet, hogy akár úgy is megfelelő sebességű lesz, ha az egész képernyőt folyton visszarajzoljuk és rárajzolunk 8-10 "sprite"-ot.

A lényeg pedig az lenne hogy ezzel a rendszerrel könnyen lehessen basic-ben látványosabb játékokat csinálni.

Gépi kódra majd akkor kell átírni, ha kiforrott az egész.
« Last Edit: 2019.September.01. 10:46:27 by endi »
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #1 on: 2019.April.14. 11:29:46 »
itt egy mínusz egyedik verzió. kimásol a képre valami memóriát, majd rárajzol egy nagy sprite-ot.
látható hogy zzzippelve a poke se elég gyors ehhez, de majd gépi kódban. :) és úgy villogni se fog!
na meg az se szükséges minden játéktípusnál, hogy az egész képernyőt mindig újra kirajzoljuk. de akarok majd kísérletezni scrollos játékkal. tök jó lesz basic-ben ilyeneket csinálni. :)
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: GraCha Sprite System
« Reply #2 on: 2019.April.14. 12:53:32 »
jól hangzik :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #3 on: 2019.April.14. 16:27:51 »
az első hozzászólást frissítem ha új ötlet van, vagy ha valami elkészült
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #4 on: 2019.April.17. 22:33:06 »
meg tudná valaki írni nekem a betöltést?
allocate-al lefoglalt memóriában akarok betölteni. 42*24*2 bájthoz szerintem nem kéne szegmenst foglalni :)

a formátum amit binárisan ment az editor:
pálya:
 24 sor, 42 bájt per sor
színek soronként:
 24 sor, 8 bájt soronként
definiált karakterek:
 1 bájt a karakter kód, 9 bájt per karakter a definíció, és 20*4 karakter van elmentve (mivel 2x2-es blokkokból áll és 20 ilyen 2x2-es elem van. a pálya nem ezekből épül hanem simán csak 24*42 karakterből, ez a 2x2-es dolog csak az editálást segíti az editorban).
« Last Edit: 2019.April.17. 22:38:16 by endi »
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #5 on: 2019.April.17. 22:45:40 »
úgy értem asm-ban :)
jó tudom, csak pár sor... de már nem emlékszem az exos dolgokra, és van akinek kisujjában van ma is:)
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: GraCha Sprite System
« Reply #6 on: 2019.April.18. 08:31:28 »
Egyből a karaktermapbe, karakterkészletbe, és az LPT-be a megfelelő dolgokat?

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #7 on: 2019.April.18. 10:10:57 »
Egyből a karaktermapbe, karakterkészletbe, és az LPT-be a megfelelő dolgokat?

hát ez se ártana igen, de egyelőre csak a pályára gondoltam, hogy allocate-al lefoglalt címre betölteni.
de a többi is jöhet :)
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: GraCha Sprite System
« Reply #8 on: 2019.April.18. 11:12:04 »
Nekem egyszerűbb a videómemóriába, mivel nem tudom, hogy az allocate-tel lefoglalt cím hol van :D

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: GraCha Sprite System
« Reply #9 on: 2019.April.18. 11:34:09 »
mivel nem tudom, hogy az allocate-tel lefoglalt cím hol van :D
Azt vagy hívásnál lehet átadni, és akkor a HL-ben lesz, vagy pedig a megfelelő helyen CODE változó=, és aztán a változó értékét bepókolni a töltő kódba a megfelelő helyen.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #10 on: 2019.April.18. 12:34:24 »
Azt vagy hívásnál lehet átadni, és akkor a HL-ben lesz, vagy pedig a megfelelő helyen CODE változó=, és aztán a változó értékét bepókolni a töltő kódba a megfelelő helyen.

igen, valami ilyen dereng nekem is :)
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #11 on: 2019.April.18. 12:35:17 »
Nekem egyszerűbb a videómemóriába, mivel nem tudom, hogy az allocate-tel lefoglalt cím hol van :D

az azért nem jó, mert háttér bufferben kell lennie a pályának, mert azt fogjuk átmásolni a videomembe amikor szükség van rá, pl sprite mögötti terület újrarajzolásánál.
pont ez lenne a lényege a rendszernek!
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: GraCha Sprite System
« Reply #12 on: 2019.April.18. 14:03:33 »
A HL szimpatikusabb is :)

Code: [Select]
    push hl
    xor a
    ld de,filename
    exos 1
    jr nz,unsucc
    pop de
    ld bc,24*42+24*8+20*4*9
    exos 6
unsucc
    xor a
    exos 3
    ret
filename dbl "file"

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #13 on: 2019.April.18. 17:04:19 »
már csak az a kérdés hogy több címet vagy file név címét hogy lehet átadni a basic code hex utasításba?
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: GraCha Sprite System
« Reply #14 on: 2019.April.18. 18:40:49 »
mondjuk lehet hogy kéne egy külön topik arra hogy "asm basic-ben"...
Vigyázat! Szektás vagyok! :)