Welcome, Guest. Please login or register.


Author Topic: Assembly programozás (Read 254693 times)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #555 on: 2013.November.02. 20:58:50 »
Quote
Segíteni sajnos nem tudok, csak imádkozni érted, hogy Zozo meg ne lássa a fix szegmenscímeket.
Ja, de ha lesz ebből bármi is, akkor a fix címeket simán át lehet írni önmódosító kóddal, mikor EXOS -osítani akarja valaki. Kb. 3 helyen lesz benne lapozás, és forrásállományban rendelkezésre fog állni az egész.

Bárki azt csinálhat vele, amit csak akar.
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #556 on: 2013.November.02. 21:07:29 »
Quote from: ergoGnomik
Segíteni sajnos nem tudok, csak imádkozni érted, hogy Zozo meg ne lássa a fix szegmenscímeket. :ds_icon_cheesygrin:
Készültem szóvá tenni :-)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #557 on: 2013.November.02. 21:25:08 »
Na az előző hozzáadásával (most még a videomegszakba nem építettem bele a lekapcsolást, mert az 80X ritkábban fut le, tehát oda bármit is rakok elég gyors lesz), ilyenre módosult a megszak (mostmár nem kommenteztem be, aki az elsőt érti, latni fogja a két EXX közötti marha nagy különbséget):


Code: [Select]
void IRQ() __naked
{
__asm

di

ex af, af

in a, (0xb4)
and #0x2

jr z, IRQ_NoAudio

ld a, #D_Ints+ 0x2
out (0xb4), a

exx

ld a, #0xf9
out (D_Page1), a

ld a, (de)
out (0xa8), a
inc de

ld a, (hl)
out (0xac), a
inc hl

ld a, #0xfc
out (D_Page1), a

exx

ex af, af

ei

ret

IRQ_NoAudio:

ld a, #D_Ints+ 0x20
out (0xb4), a

ld a, #1
ld (_g_WasIRQ), a

ex af, af

ei

ret

__endasm;
}


És igazából ugyanennek akkor lehet készíteni egy ilyen verziót is, ami talán egyetlen hajszálnyival gyorsabb mint az előző:



Code: [Select]
void IRQ() __naked
{
__asm

di

ex af, af

in a, (0xb4)
and #0x2

jr z, IRQ_NoAudio

ld a, #D_Ints+ 0x2
out (0xb4), a

exx

ld a, #0xf9
out (D_Page1), a

ld c, #0xa8
outi
ex de, hl

ld c, #0xac
outi
ex de, hl

ld a, #0xfc
out (D_Page1), a

exx

ex af, af

ei

ret

IRQ_NoAudio:

ld a, #D_Ints+ 0x20
out (0xb4), a

ld a, #1
ld (_g_WasIRQ), a

ex af, af

ei

ret

__endasm;
}



De ami viszont nagyon érdekes. Mindkét verzióra igaz, hogy mégha egymáshoz képest nincs is nagy különbség, de az előzőhöz képest azért komoly különbséget vártam ...

És nincs. Azért jobb, ezeket fogom alkalmazni, nem az elsőt, de csak ha 5% -ra javult ... tehát akkor mostmár mondjuk fix 25% a lassulás az előző 30% -hoz képest ... Persze mindez szemre a raszteridőn, de akkor is ... Többet vártam.

Úgy látszik a többi megszak kód, az exx -ekkel, meg a b4 írással, video megszak megkülönböztetéssel, lapozással és talaán magának a CPU -nak a megszak overhead- jével mindez sokkal nagyobb tétel, mint maga a tényleges hangadás ... így hiába gyorsítottam halálba a hangkiadást, akkor is lassú maradt egészében ...
« Last Edit: 2013.November.02. 21:28:57 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #558 on: 2013.November.02. 21:34:14 »
Viszont ezzel, hogy a video megszakban fogom lekapcsolni a hangot, ezzel akor megszünt a hangokra mind a 256 align limit, mind pedig hogy 256 -al osztható hosszúságú kell legyen,

Az egyetlen megkötés akkor az lesz a hangmintákra (pld 4KHz. megszak esetén), hogy a hangminták után kell legyen mondjuk 90 byte csend.

A video megszak meg majd észreveszi hogy már a csendet játsza, és mielőtt elfogyna a csend a hang mögül, átváltja majd egy külön csend hangra, amit mindíg újra és újra bevált, míg valaki be nem kapcsol igazi (nem csend) hangot.
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #559 on: 2013.November.02. 22:02:17 »
Mit szólsz ahhoz, ha a videó megszakítást el is hagyod?, akkor nem kell figyelgetni, és egy csomó időt megspórolsz, mivel 50 FPS-es játékot szeretnél, a videó megszakítás részt tedd a főprogramba, pont az 50 Hz-es várakozás után.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #560 on: 2013.November.02. 22:06:35 »
Quote
Mit szólsz ahhoz, ha a videó megszakítást el is hagyod?, akkor nem kell figyelgetni, és egy csomó időt megspórolsz, mivel 50 FPS-es játékot szeretnél, a videó megszakítás részt tedd a főprogramba, pont az 50 Hz-es várakozás után.

A hangmegszakítás 4KHz -el pörög a digi hanghoz ... Nem értem milyen 50 Hz -es dologra gondolsz, ami nem video ... És milyen 50 Hz -es várakozás ...
Z80 System

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Assembly programozás
« Reply #561 on: 2013.November.02. 22:13:12 »
én továbbra se értem minek bele a lapozás
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #562 on: 2013.November.02. 22:13:39 »
Ne legyen videó megszakításod, csak a programozható, ami most videó megszakításos rész, legyen a főprogramban.

főprogram 50Hz -re való várakozás:

Code: [Select]
w50  in   a,(b4h)
     bit  4,a
     jr   z,w50
     call eredetilegmegszakításbanlévő50Hzrutin
.
.
.
a főprogram további része
Így csak a progamozható megszakításod lesz, és nem kell csekkolni semmit, csak egy 03h-t küldeni a b4h portra.
« Last Edit: 2013.November.02. 22:19:22 by geco »

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #563 on: 2013.November.02. 22:24:10 »
Quote
Ne legyen videó megszakításod, csak a programozható, ami most videó megszakításos rész, legyen a főprogramban.

főprogram 50Hz -re való várakozás:
Aham ... tehát azt állítod, hogy a video megszak bit akkor is beállítódik az LPT által, ha a video megszakítás a b4 -en valójában tiltva van,

és z80 -al is simán lehet csekkolni/törölni a megszak igény bitet a b4 portban ?

Ha ez igy van, akkor nagyon királyosnak tűnik !

Nem is gondoltam volna, hogy így van, azt hittem azt a bitet csak a megszakból lehet érzékelni ...

Ill. hát mégis van egy gond ezzel ... Nem 100% -osan leszek 50 FPS. Menni akarok 50 FPS -sel, de menni akarok tetszőleges beállított FPS -sel is ... és akkor ilyenkor a 50 FPS villogtatással kevert színek nem tudnának működni ...

Ennek ellenére lehet hogy mégis alkalmazni fogom. Megnézem mennyit gyorsít a hangképzésen, és ha eleget, akkor hozok egy olyan kompromisszumot, hogy a színvillogtatást külön ki lehet majd kapcsolni (csak olyankor rondább lesz a grafika) viszont akkor továbbra is igaz marad, hogy csontra ugyanolyan (grafika is) verzióban lehet majd összehasonlítani a különböző sebességverziókat.

Szóval baromi jó ötletnek tűnik ... megpróbálom. Tanx!
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #564 on: 2013.November.02. 22:28:58 »
Quote
én továbbra se értem minek bele a lapozás
Pedig 1Xű. B0 -án van a program (C is) kód, meg a mozgás adatok, főleg utóbbi miatt még szűk is lehet, másik három lapon meg a video ram van, screen meg sprite adatok.

Ezzel kész is. Máris 64K. Ha digi hangot akarok, akkor már mér ne sokat, ami mutat is valamit ? És van még másik 64K kihasználatlanul a legalapabb EP -ben is.
Z80 System

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Assembly programozás
« Reply #565 on: 2013.November.02. 22:32:23 »
Quote from: Z80System
Pedig 1Xű. B0 -án van a program (C is) kód, meg a mozgás adatok, főleg utóbbi miatt még szűk is lehet, másik három lapon meg a video ram van, screen meg sprite adatok.

Ezzel kész is. Máris 64K. Ha digi hangot akarok, akkor már mér ne sokat, ami mutat is valamit ? És van még másik 64K kihasználatlanul a legalapabb EP -ben is.
jó értem én. tehát giga mennyiségű és minőségű grafika és effekt lesz benne
mert ügye 64k-t egy EP játék se használt ki eddig
(specy128-as igen, de az most más téma)
Vigyázat! Szektás vagyok! :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #566 on: 2013.November.02. 22:33:19 »
Quote
Ha digi hangot akarok, akkor már mér ne sokat,
Még az is lehet, hogy teljes digi zenét le stream -elek alá az egyik oldalon ... vagy legalább ambienteket ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #567 on: 2013.November.02. 22:34:02 »
Quote
Még az is lehet, hogy teljes digi zenét le stream -elek alá az egyik oldalon ... 
Kis Metallica -t alá ... :)
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #568 on: 2013.November.02. 22:37:32 »
Egyszerű a megoldás (nem tökélestes), ha 25fps-t akarsz, akkor két helyre teszel wait50hz-et, csak jól kell kiválasztani a második helyét, ha meg át akarsz térni 50-re, akkor önmódosító kóddal törlöd a 2-dikat.
Úgy vettem észre, hogy a 4. bit 1-be billen, amikor eléri a megszakításbájtot tartalmazó LPB-t a NICK, és törlődik, amikor áttér a következő LPB-re.
Én is ezt használom időzítésre, csak tiltott megszakítás mellett.
Ja, a videó RAM-ból való olvasás, és írás is lassít egy picit.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #569 on: 2013.November.02. 22:38:00 »
Quote
És van még másik 64K kihasználatlanul a legalapabb EP -ben is.
Persze a 64K gépek buktak ...

Majd vesznek 512K belső bővítést ... :)

Vagy teszek bele opciót, hogy 64K gépen némán megy majd.
Z80 System