Welcome, Guest. Please login or register.


Author Topic: Enterball (Read 99854 times)

Offline PiotrSoft

  • EP fan
  • *
  • Posts: 230
  • Country: hu
  • Fõhajtást a hõsöknek, könnycseppet az áldozatoknak
    • nem teljesen rollam szól de mégis rollam szól, ha megnézed megérted
Re: Enterball
« Reply #90 on: 2010.August.22. 17:31:28 »
Majd faggatom, de nem ígérek semmit, de ellenben ezt meg is tartom! :)
Medgyesegyháza s Mezõkovácsháza után, Budapestre vetett a sors.Itt tanultam, dolgoztam mígnem megházasodtam s Budakalászra költöztem.Voltam programozó, jármû-villamossági szerelõ,jelenleg látványtechnikus és tûzoltó, de ami a legfontosabb 3 gyermek apja!

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Enterball
« Reply #91 on: 2010.September.13. 13:14:10 »
Mi lett azóta a játék Spectrumra átírásával? Felkerült a WOS-ra? Vagy még nem?

Egy ötlet: azt meg lehetne csinálni, hogy amikor lassabb a labda, mélyebb frekvenciával szólnak a digi effektek (az emiatti megakadás így kevésbé lenne feltûnõ), és ahogy gyorsul, úgy a digi effektek is egyre rövidebb ideig szólnának (és így ez a megakadás is kevésbé lenne észrevehetõ)? Írtátok, hogy ha mélyebb hangjuk van a dobeffekteknek, akkor szebben szólnak, és amikor még nagyon lassú a labda, addig ezeket a szebb effekteket be lehetne dobni.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Enterball
« Reply #92 on: 2010.September.13. 13:48:04 »
Mi lett azóta a játék Spectrumra átírásával? Felkerült a WOS-ra? Vagy még nem?
Türelem  ;-)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Enterball
« Reply #93 on: 2010.September.13. 13:50:35 »
szipucsu, ha mélyebben szólnak akkor lassabban kell lejátszani a digi hangot, tehát hosszabb lesz :)
de amúgy az ötlet jó, érdekesebbé tenné a játékot kicsit ha változatosabbak a hangok
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Enterball
« Reply #94 on: 2010.September.13. 16:35:40 »
Türelem  ;-)
Csak nyugodtan! Csak megijedtem, hogy esetleg lemaradtam a dologról. :D

szipucsu, ha mélyebben szólnak akkor lassabban kell lejátszani a digi hangot, tehát hosszabb lesz :)
Én is így gondoltam. De a legkisebb (1-es, 2-es körüli) sebességnél talán még beleférne.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Enterball
« Reply #95 on: 2010.October.30. 22:22:10 »
Próbálkozás a zene felvételére:

Elég nagy méretû a felvett zene, bár ennyire azért nem pazarló, valójában ez a felvétel többször is tartalmazza ismételve - azt még meg kell oldani, hogy az egész zene pontosan az elejétõl a végéig egyszer legyen felvéve. A minõségen még lehetne javítani; a hangerõ/burkológörbe konverzió nem tûnik tökéletesnek, és a zajcsatornával problémák vannak (ez a script mindig arra a csatornára teszi, ahol éppen a legkisebb lenne a hangerõ, ami érdekesen szólna sztereó AY kimeneten :)).

Megpróbáltam a DAT fájlban megkeresni az ismétlõdéseket, a 38h-tól lévõ FC 34 4A 8D stb-vel kezdõdõ blokk ismétlõdik 5x. Levágva az elsõ blokkvégnél, már belefér egy szegmensbe :-) Igaz úgy hallom, hogy még mindig 2x van benne a zene, de pont a végénél ér véget. Arra hogyan lehetne rá venni a lejátszót, hogy a végén elõlrõl kezdje?
« Last Edit: 2010.October.30. 22:26:50 by Zozosoft »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Enterball
« Reply #96 on: 2010.October.30. 22:50:15 »
Igaz úgy hallom, hogy még mindig 2x van benne a zene

Ez előfordulhat, mert az adatformátumot bitenként kell feldolgozni, és nem biztos, hogy a zene egy ismétlődése egész byte méretű.

Quote
Arra hogyan lehetne rá venni a lejátszót, hogy a végén elõlrõl kezdje?

Az adat végén kellene lennie egy "file vége" jelzésnek, ami a file egyszerű rövidebbre vágásával elveszik.
Megpróbálom újra felvenni pontosan egyszer az elejétől a végéig (esetleg a minőségen is lehetne javítani még :oops:).

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Enterball
« Reply #97 on: 2010.October.30. 22:57:32 »
Az adat végén kellene lennie egy "file vége" jelzésnek, ami a file egyszerû rövidebbre vágásával elveszik.
Áhá  :oops:
Quote
Megpróbálom újra felvenni pontosan egyszer az elejétõl a végéig (esetleg a minõségen is lehetne javítani még :oops:).
Ha nem túl nagy kérés  :oops:

Azt ugye jól nézem, hogy egyszer kell az inicializálási részt hívni (a programba beépítve ebbõl az IRQ tábla létrehozás már nem kell), ezt lehet a SOUND megnyítása helyére berakni, aztán az IRQ rutint kell hivogatni 50Hz-ben?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Enterball
« Reply #98 on: 2010.October.30. 23:23:11 »
Azt ugye jól nézem, hogy egyszer kell az inicializálási részt hívni (a programba beépítve ebbõl az IRQ tábla létrehozás már nem kell), ezt lehet a SOUND megnyítása helyére berakni, aztán az IRQ rutint kell hivogatni 50Hz-ben?

Igen.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Enterball
« Reply #99 on: 2010.October.31. 13:57:16 »
Az új script és felvétel (az eredeti itt található):
  [ Guests cannot view attachments ]
  [ Guests cannot view attachments ]
  [ Guests cannot view attachments ]
  [ Guests cannot view attachments ]
Így már talán elfér :) Hangszerkesztő programmal sikerült megállapítani, hogy a zene 41.57 másodpercenként ismétlődik, ami 2080 50.036325 Hz-es képkockának felel meg. A továbbfejlesztett scriptben be lehet állítani a felvétel maximális hosszát, és nem indítja el a felvételt addig, amíg nincs hang; így már egyszerűen megoldható volt a zenét pontosan egyszer felvenni az elejétől a végéig. A zajcsatorna kezelése is megváltozott: most nem használja a négyszögjel&zaj módot; lehet, hogy így jobban szól, de az is lehet, hogy nem :oops: Az eredeti megoldás könnyen visszaállítható a noToneAndNoise változó false értékre állításával a script elején.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Enterball
« Reply #100 on: 2010.October.31. 14:24:37 »
Szuper! :smt038

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Enterball
« Reply #101 on: 2010.November.02. 12:20:13 »
Digitális hangot hogyan lenne célszerû az AY-val lejátszani?
Tiszta hang, maximális frekvencia, aztán birizgálni a hangerõt?
A 000h frekvencia a max? Vagy az osztás miatt 0-val kiakad?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Enterball
« Reply #102 on: 2010.November.02. 12:49:25 »
Digitális hangot hogyan lenne célszerû az AY-val lejátszani?
Tiszta hang, maximális frekvencia, aztán birizgálni a hangerõt?

A legegyszerűbb megoldás az, ha a mixer (7-es) regiszterben nincs engedélyezve a négyszögjel és a zaj sem. Amint az AY leírásban már említettem, az "alapértelmezett" kimeneti szint logikai 1, és ezt tudja a négyszögjel és/vagy a zaj "lehúzni" 0-ra az engedélyezése esetén (ez az oka az AND műveletnek is, ha mindkettő be van kapcsolva ugyanazon a csatornán).

Quote
A 000h frekvencia a max? Vagy az osztás miatt 0-val kiakad?

A 0 frekvencia ugyanazt a hangot eredményezi, mint az 1. Ez nem csak a hanggenerátorokra, hanem a zaj és burkológörbe frekvenciára is igaz.

Némi problémát jelenthet a lejátszásnál, hogy az AY hangerő regiszterei csak 4 bitesek, és nem lineárisan állítják a szintet. A legegyszerűbb megoldás erre az, ha a betöltő a Spectrum 128 felismerése után automatikusan konvertálja a hangmintákat AY hangerő értékekre (esetleg akár ditherelve), így a lejátszáskor ezzel már nem kell foglalkozni. Jobb minőséget lehetne elérni két AY csatorna használatával (táblázatból olvasva az egyes EP hangmintáknak megfelelő két AY hangerőt), de ez az eredeti mintavételezési frekvenciához valószínűleg túl lassú lenne; a frekvenciát felezve talán működne.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Enterball
« Reply #103 on: 2010.November.02. 13:04:35 »
Jobb minõséget lehetne elérni két AY csatorna használatával (táblázatból olvasva az egyes EP hangmintáknak megfelelõ két AY hangerõt), de ez az eredeti mintavételezési frekvenciához valószínûleg túl lassú lenne; a frekvenciát felezve talán mûködne.
Két csatorna használatára én is gondoltam, oly módon elképzelve, hogy fixen át lenne konvertálva a kódban az eredeti 8 bites hangminták 2x 4 bitesre, így akkor be is férne a helyére. Lejátszásnál meg kimaradna 8->6 bitre konverzió, és annak helyére mehetne a félbájt szétszedés.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Enterball
« Reply #104 on: 2010.November.30. 14:14:58 »
Két csatorna használatára én is gondoltam, oly módon elképzelve, hogy fixen át lenne konvertálva a kódban az eredeti 8 bites hangminták 2x 4 bitesre, így akkor be is férne a helyére. Lejátszásnál meg kimaradna 8->6 bitre konverzió, és annak helyére mehetne a félbájt szétszedés.

A sebességgel még így is problémák lehetnek :( Ha jól látom, ez az eredeti lejátszó ciklus:
Code: ZiLOG Z80 Assembler
  1. .   B2E5  06 01        LD    B, 01
  2. .   B2E7  10 FE        DJNZ  B2E7
  3. .   B2E9  3E 20        LD    A, 20
  4. .   B2EB  86           ADD   A, (HL)
  5. .   B2EC  CB 3F        SRL   A
  6. .   B2EE  CB 3F        SRL   A
  7. .   B2F0  D3 AC        OUT   (AC), A
  8. .   B2F2  23           INC   HL
  9. .   B2F3  1B           DEC   DE
  10. .   B2F4  7A           LD    A, D
  11. .   B2F5  B3           OR    E
  12. .   B2F6  20 ED        JR    NZ, B2E5
Ennek a futásideje midössze 88 ciklus (az LD B, 1 utasítás azonban változhat, nem minden hangminta lejátszási frekvenciája azonos), aminek az átiratban a Spectrum alacsonyabb órajele miatt 78-nak kellene lennie, a frekvencia pedig 45455 Hz :shock:

Az első próbálkozás elég lassúra sikerült :oops: Itt a HL a lejátszandó hang kezdőcíme, a BC pedig a hangminták száma. Minden byte felső 4 bitje tartalmazza az A csatorna hangerejét, az alsó 4 bit pedig a B csatornáét. Ez a verzió 155 ciklus, ami kb. 2-szer lassabb.
Code: ZiLOG Z80 Assembler
  1.         exx
  2.         ld    c, 0fdh
  3.         ld    de, 0ffbfh
  4.         ld    l, 8
  5.         exx
  6. .l1:    ld    a, (hl)                   ;   7
  7.         inc   hl                        ;  13
  8.         exx                             ;  17
  9.         ld    h, a                      ;  21
  10.         rrca                            ;  25
  11.         rrca                            ;  29
  12.         rrca                            ;  33
  13.         rrca                            ;  37
  14.         and   0fh                       ;  44
  15.         ld    b, d                      ;  48
  16.         out   (c), l                    ;  60
  17.         ld    b, e                      ;  64
  18.         out   (c), a                    ;  76
  19.         ld    a, h                      ;  80
  20.         and   0fh                       ;  87
  21.         ld    b, d                      ;  91
  22.         inc   l                         ;  95
  23.         out   (c), l                    ; 107
  24.         ld    b, e                      ; 111
  25.         out   (c), a                    ; 123
  26.         dec   l                         ; 127
  27.         exx                             ; 131
  28.         dec   bc                        ; 137
  29.         ld    a, c                      ; 141
  30.         or    b                         ; 145
  31.         jp    nz, .l1                   ; 155

Újabb verzió: itt a hangminták nincsenek konvertálva, hanem a konverzió lejátszás közben történik egy 512 byte-os, 512-vel osztható címen kezdődő táblázat segítségével (minden lehetséges hangminta értékhez tartalmazza az A és B csatorna hangerejét). Néhány egyéb kisebb optimalizálást is tartalmaz, így 125 ciklusra gyorsult, ami még mindig több, mint másfélszer lassabb a megfelelő sebességnél. :( Itt egyébként az AY programozása sem egészen szabványos módon történik: a regiszterszámot FFFDh helyett C0FDh I/O címre írja, ami bővített Spectrum esetén talán problémát okozhat.
Code: ZiLOG Z80 Assembler
  1.         exx
  2.         ld    bc, 0bffdh
  3.         ld    de, 0809h
  4.         exx
  5.         inc   bc
  6.         ld    de, .l2 + 1
  7.         jp    .l3
  8. .l1:    dec   de                        ;   6
  9.         exx                             ;  10
  10. .l2:    ld    hl, sampleConvTable / 2   ;  20
  11.         add   hl, hl                    ;  31
  12.         inc   b                         ;  35
  13.         out   (c), d                    ;  47
  14.         outi                            ;  63
  15.         inc   b                         ;  67
  16.         out   (c), e                    ;  79
  17.         outi                            ;  95
  18.         exx                             ;  99
  19. .l3:    ldi                             ; 115
  20.         jp    pe, .l1                   ; 125

Ezen még egy keveset sikerült javítani: a hangmintákat konvertálni kell 7 bitesre (a 0. bitnek mindig 0-nak kell lennie), de ez nem feltétlenül probléma, mert a két 4 bites hangerő kombinációja egyébként sem eredményezhet 7 bitesnél több különböző hangerőt. A táblázat mérete 256 byte-ra csökkent. Egy DEC DE utasítást is sikerült DEC E-re cserélni. Az AY programozása továbbra sem szabványos, és még mindig 112 ciklus a futásidő 78 helyett.
Code: ZiLOG Z80 Assembler
  1.         exx
  2.         ld    bc, 0bffdh
  3.         ld    de, 0809h
  4.         exx
  5.         inc   bc
  6.         ld    de, .l2 + 1
  7.         jp    .l3
  8.         align 2
  9.         nop
  10. .l1:    dec   e                         ;   4
  11.         exx                             ;   8
  12. .l2:    ld    hl, sampleConvTable       ;  18
  13.         inc   b                         ;  22
  14.         out   (c), d                    ;  34
  15.         outi                            ;  50
  16.         inc   b                         ;  54
  17.         out   (c), e                    ;  66
  18.         outi                            ;  82
  19.         exx                             ;  86
  20. .l3:    ldi                             ; 102
  21.         jp    pe, .l1                   ; 112

Talán lehetne még javítani rajta, de az I/O port címzés szabványossá tétele viszont némi lassulást eredményezne. Mindenesetre úgy látszik, az eredeti sebességgel problémás lehet a két csatornás lejátszást megoldani. Tehát valószínűleg marad az egyszerű egy csatornás, 4 bites hang, vagy a hangmintákat konvertálni kell alacsonyabb (kb. 30 kHz-es) mintavételezési frekvenciára, attól függően, hogy melyik ront kevésbé a hangminőségen. Az utóbbinak előnye lehet még, hogy helyet szabadítana fel, ahova esetleg elférhetne a konvertált zene és az új kód és táblázatok.
« Last Edit: 2010.November.30. 14:47:34 by IstvanV »