OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 01.12.2024, 22:33

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 20 ]  Přejít na stránku Předchozí  1, 2
Autor Zpráva
PříspěvekNapsal: 24.11.2024, 14:05 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2351
Bydliště: Brno
Has thanked: 887 times
Been thanked: 331 times
@ObiWanKen:

CIAB_TALO=127 a CIAB_TAHI=55, to je nastaveni casovace, pokud je nastaveni opozdeni CIA samotnym prerusenim tak ok. Ja jen poukazal na to, ze pokud na stejne nastaveni caovace ktere hraje nejaky MOD "povesis" i vykreslovani pomoci copperu, tak pokud chces jiz vykreslit rekneme alepson 5 pismen a vykreslovani pismen je i soucasti hlavni smycky pro hrani MODu, tedy v 1 programove smycce co hraje MOD vykreslis jeste navic i 5 pismen copperem, tak se ti logicky zacne hrat MOD pomaleji, nez by se hral bez vykreslovani danych 5 pismen. Z meho pohledu a i z toho co jsem cetl jsou jednotlive hudebi rutiny ruzne rychle, podle toho jak jsou rychle (narocne pro CPU) musi byt v kazde jedne z nich jinak nastavene CIA. Pokud chces delat neco mimo programovou smycku prehravace MODu, tak aby se ti skladba nespomalila, musis poscitat s casem pro program, co se potrebuje vykonat mimo smycku hudebni rutiny a nasledne upravit casovac CIA v hudebni rutine, tedy dat jeho nastaveni na o neco nizsi hodnotu. Tak nejak to vnimam ja.

Proto jsem psal ze z meho pohledu nasilu delat v programu jeho mozne zkracovani, kdyz muze nastat situace i te dlouhe varianty neni uplne stastne reseni. Jsem si vedom ze pri hre se temto vecem neda vyhnout, ale zaroven z meho pohledu i kdyz se jim neda vyhnout, tak se zaroven nemusi o to jeste vice podporovat. Narazim na program pro detekci kolize. Jako kdyby jsme se bavili o nejakem 8bitu, ze ktereho zdimas maximum a si rad, ze se nekdy neco provede i rychleji to je uplne jina situace, tam tomu rozumim ze se jiz zkracuje co se dá... .

Ja mam casovac CIA nastaveni v me hudebni rutine na hodnotu 36FFh, tedy 14079. To je nastaveni pro nejrychlesi mozne prehrani 1 radku v patternu. Tahle rychlost je mnohem rychlejsi nez 1 vterina. Prehrani 1 radku v patternu v case 1 vterina je ve vysledku dost pomale hrani MODu, standardne se MODy hraji podstate rychleji. Nastaveni CIA na 1 vteriinu je urcite dohledatelne na netu a ja to dohledavat nebudu. Nicmene pokud to vezmu od oka, tak tvuj vypocet na 1 vterinu je podobny memu nastaveni CIA. A me nastaveni CIA casovace je urcite podstatne kratsi casovy usek nez je 1 vterina. Jestli si nedelal spise nejaky vypocet pro VBLANK. Tam je preruseni mnohonasobne "hrubší" nez je tomu u CIA.

EDIT: Nemuzes v prehravaci pro MOD co pouzivas nastavovat hodnotu CIA casovace? Myslim, jestli se tohle nastaveni nedela jako nejaky standard... .

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 24.11.2024, 21:44 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 244
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 46 times
Samozrejme máš pravdu že tých 14079 nie je sekunda ale 1/50 sekundy. Sekundu asi nie je ani možné nastaviť v CIA časovačoch.
PT player to nastavuje približne na túto tvoju hodnotu (14079) pre PAL. V popise prehrávača je napísané že je to "tempo" 125.
Samozrejme mne to nič nehovorí, tebe skôr. Ale pozriem to zajtra aby to bolo na 100pro, teraz som v práci.

EDIT: Pokiaľ vypisuješ text a aj prehrávaš v jednom cia časovači tak ti to bude spomaľovať prehrávanie. Musíš stihnúť vykresliť a prehrať všetko spolu pod tú 1/50 sekundy.
Alebo na prehrávanie použiť časovač A a na vykreslovanie časovač B.

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
PříspěvekNapsal: 24.11.2024, 23:40 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2351
Bydliště: Brno
Has thanked: 887 times
Been thanked: 331 times
Já si časovač můžu nastavit i na nižší hodnotu a hrát i ryhleji. Když pak program zatizim, tak můžu docilit potřebného tempa. Nicméně využití obou časovačů je dobrý nápad.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 25.11.2024, 13:08 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 244
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 46 times
Skôr vyššiu hodnotu a upraviť hudbu, aby si mal viacej času medzi prerušeniami a tým pádom môžeš v prerušení dlhšie blbnúť. ASI,MOŽNO :)
Podľa všetkého ty teraz prehrávaš hudbu rýchlosťou 50 hz (14079). Keby si hodnotu zmenil na 25 hz (28158) tak by si mal viacej času na prehrávanie a aj výpis znaku. Ale zase by si musel upraviť hudbu. Za pokus to isto stojí.

V PT player som našiel toto:
Kód:
   ; determine if 02 clock for timers is based on PAL or NTSC
   tst.b   d0
   bne   .1
   move.l   #1789773,d0      ; NTSC
   bra   .2
.1:   move.l   #1773447,d0      ; PAL
.2:   move.l   d0,mt_timerval(a4)

   ; load TimerA in continuous mode for the default tempo of 125
   divu   #125,d0
   move.b   d0,CIATALO(a0)
   lsr.w   #8,d0
   move.b   d0,CIATAHI(a0)
   move.b   #$11,CIACRA(a0)      ; load timer, start continuous

Tu páni muzikanti používajú nejakú konštantu 1773447 pre PAL. Jej výpočet sa dá ľahko dohľadať.
Má to zase niečo s BPM a Tempom. A čo som pochopil má to aj niečo spoločné s časom 2,5sekundy. Rozhodne keď ju vydelíš s tempom akým chceš prehrávať hudbu dostaneš hodnotu ktorú musíš uložiť do časovača.
1773447/125=14187. Takže 14187 je 50 hz.


A to je aj defaultne nastavená hodnota prehrávača ktorá sa dá meniť počas prehrávania.

Kód:
; TimerA interrupt calls mt_music at a selectable tempo (Fxx command),
; which defaults to 50 times per second.




Ešte otázka možno dve.

1. Čo som pochopil tak ty prehrávaš hudbu aj vypisuješ znaky v cia prerušení. Správne ?

2. Čo zatiaľ robí "hlavný" chod programu. Čakáš len na stlačenie LMB a potom obnovíš OS a skončíš ?




EDIT: Tu je aj ten výpočet konštanty
Kód:
The original Protracker v2.3A CIA Replayer source code uses 1773447 ( PAL value )
as the CIA timer constant to calculate the Beats Per Minute ( not really BPM but better see it as Tempo ).

Amiga CIA timervalue constant = 1773447
CIA Tempo Constant = 1,4096836810788027274559861512675 * 1773447 = 2499999.2951581594605986362720069 microseconds = 2.4999992951581594605986362720069 seconds.
For example: 125 BPM = 2.499999295158159 / 125 = 0,01999999436126527568478909017606 seconds
1 / 0,01999999436126527568478909017606 = 50,000014096840785205309208563888 Hz.

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
PříspěvekNapsal: 25.11.2024, 14:10 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2351
Bydliště: Brno
Has thanked: 887 times
Been thanked: 331 times
Cim nastavim na CIA mensi hodnotu, tim vice kodu mimo / v hudebni rutine muzu napsat, abych mel spravne tempo hrani MODu. Bavim se v ramci stejne rychlosti tempa, samozrejme ruzne rychlosti jsou podporovane, ale to je dano pouze tim, kolik krat se vykona kod s CIA casovacem. Mozna nestandardni pristup, ale mne to takhle funguje, pokud nastane problem, budu resit.

Je jen na mne jestli budu chtit vyuzit casovac hudebni rutiny a tedy delat neco pomaleji, nebo vykonam kod mimo hudebni rutinu a budu delat neco rychle.

Mam 2 soubory. Program a hudebni rutinu. Z programu volam hudebni rutinu. V programu testuji stisk klavesi sipky dolu nebo nahoru a dle toho se hraje konkretni MOD. Taky testuji leve tlacitko mysi pro ukonceni programu. To je zatim vse co dela program. Ja ted jeste resim, jestli souborovy manazer co pouzivam LDOS umi hrat hudbu i pocas nahravani programu. Tedy jestli je mozne pocas nahravani souboru LDOSem, ktery jsem nenaprogramoval já obsluhovat i vlastni kod, nebo musim pockat az se donahravaji data.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 20 ]  Přejít na stránku Předchozí  1, 2

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz