OldComp.cz

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


Právě je 19.03.2024, 09:10

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 233 ]  Přejít na stránku Předchozí  1 ... 10, 11, 12, 13, 14, 15, 16  Další
Autor Zpráva
PříspěvekNapsal: 07.05.2021, 23:58 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Ahoj,

já to vše píšu na mobilu, myslím teď, nemám doma net v PC.

Supr, již konečně vím, proč dávají $dff000 do registru. Já teď sice mám volné 4 adresové registre, byli určeny na něco jiného, to ale asi i tak nakonec bude vše jinak a zatím si ty registre nechám v záloze, je tam ještě pár otazníků, co a jak vše bude, nicméně to až někdy jindy, nicméně díky za vysvětlení :).

Moc se omlouvám když budu oponovat, ale opravdu nevím o tom že by volume používalo 16 bitů. Maximální volume je dekadicky 64, tedy 40 hexa. Tedy ani nejvyšší bit z 1 byte není využít a já používám bit 0-5 a tuhle hodnotu navysuji o 1. Tím se dostanu na rozsah 1 až 64 na všechny 4 kanály pomocí 3 byte. A 4.byte z Longu je v rámci dát mého formátu využit na něco jiného. Word je potřebný u frekvence (periody) a u délky samplu. Byte u volume.

Pokud se tedy pletu já, tak se opět jedná o nějakou ne zcela dokumentovanou specialitu :)

Koukal jsem opět raději na net a hledal i tu $dff0c9, nějaký 1 příklad mi to našlo, ale nejsem si jist, jestli to mělo něco s volume.

Info o parametrech třeba zde:
http://amiga-dev.wikidot.com/hardware:audxvol

Jinak nulovou hlasitost pak dosahují ukončením DMA přenosu, tedy snad to popisují správně, já radši věci používám než je nějak přesně definuji.

První kanál dám na hlasitost 0 takhle:
Move.w #1,dff096

K tomu TST, že je to zbytečné používat ok. Zatím je tam nechám, ale už o tom vím a časem na to přijde řada. Tedy u datových registrů.

K tomu poslednímu
moveq #$0f,d0
and.b d7,d0
beq.b .skip

Tohle bohužel nemůžu použít. Dlouho jsem měl a v hodně částech kódu ještě mám 1 datový registr volný v celém rozsahu, ale ne zde. V té D0 mám k dispozici jen 2 byte, tedy Moveq by mi smazalo potřebné data ve vyšších 2 byte z Longu. Ale mám k dispozici v Longu alespoň A2 a za ní jsem rád alespoň v závěru ukázanýho kódu :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 08.05.2021, 10:07 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3636
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Lisiak4 píše:
Volume Slide :lol:
Pozeram ze robis v emulatore a program pises rovno na emulovanej amige. Nezvazoval si pisat program v nejakom dobrom modernom IDE prostredi, ktore predsa len vie poskytnut podstatne vyssi komfort pre pisanie programov ?
Napriklad na ZX Spektre mame vynikajuce MRS, v ktorom som napisal vsetky svoje asemblerove programy, ale aj napriek tomu som sa v roku 2010 rozhodol prejst na crossdeveloping a odvtedy programy pisem priamo na PeCedle. A rozhodne nelutujem.


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

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Ono je to možná tím, že pořád dělám na 1 programu od počátku co jsem se začal učit v ASM. Možná i tím, že na té Amize v emulaci je to taky celkem pohodlný. Nic zásadního mi tam nechybí. Dělával jsem v Pythonu přímo na PC a tak nějak nepozoruji rozdíl. Mně vyhovuji jednoduché věci a ty jsou většinou i tak základnější. V emulaci mám nízké rozlišení, písmo je veliké a přehledné a to je fajn. Zatím mi v Asm-Pro ve kterém dělám opravdu nic zásadního nechybí. Mám ho i na real Amize. I dnes jsem něco testoval na real železe přímo v ASM, protože nějaký expert udělal na netu článek o notách a dal notu B na klávesu Amol místo na H. Já když se k těmhle věcem vracím po roce, tak si to tak nepamatuji a klávesy (nástroj) přes mou rutinu mi hráli falešně tak jsem si udělal 3 hodinové kolečko, kde by mohla být chyba :roll:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 08.05.2021, 17:22 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 376
Has thanked: 28 times
Been thanked: 120 times
Lisiak4 píše:
Moc se omlouvám když budu oponovat, ale opravdu nevím o tom že by volume používalo 16 bitů.

Všetky HW registre sú 16-bitové, aj adresy sú rozdelené do dvoch registrov.
Volume používa len 7 bitov (6-0) a 9 bitov (15-7) sa nepoužíva, je to aj v tom tvojom odkaze.
Takže keď chceš zapisovať len bajt, tak musíš preskočiť prvý (nepoužitý) bajt HW registra.


Nahoru
 Profil  
 
PříspěvekNapsal: 08.05.2021, 18:29 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Ok, fungují obě varianty zápisu 1 byte. Jak třeba do dff0d8, tak i dff0d9.

Mám tomu rozumět tak, že se do HW registru zapisuje v obráceném sledu než do registru datového, nebo adresového?

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 09.05.2021, 02:16 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Tak se mi povedla alespoň na 1 tónu taková sranda. Jedná se o práci s basovým nástrojem. Jde o to že zatím umím jen jednoduše loopovat nástroj. Když ale průběh začátku hraní je ve zvuku celkem důležitý a zahraje se jen jednou a pak se další část opakuje, to již neumím si tenhle údaj vzít ze samplu. Ten začátek před loopovaním je velice krátký, jeho hraní a přechod na loopováni je v rozsahu 1 řádku patternu. Mohl by jsem ten sampl natáhnout, aby jsem ho neloopoval a jeho průběh hraní bych opakoval přímo v jeho sinusovce. To bych měl tak 20 KB sampl. Žádná katastrofa, ale původní sampl má necelé kilo. Udělal jsem si tedy 2 menší sample. 1 na začátek hraní nástroje a druhý na loopování. Hodil jsem to do 4.kanalu, který vůči těm dalším dokáže pracovat s podstatně jemnějším časováním. A podařilo se mi ty sample zahrát za sebou tak rychle, že to zní jako původní 1 sampl. Porovnával jsem hraní původního samplu v Octamedu vůči mým 2 malým samplům v mé hudební rutině. Po zvukové stránce jsem neslyšel rozdíl. Minimálně v tom 1 tónu jsem oba příběhy samplů sladil. Tohle dělat na delší skladbě by byla magořina, ale těch pár tónů zkusím zvládnout. Alespoň jsem si provětral některé nově preprogramované části kódu. Vše je ok. Jen dodám že v rámci nastavení časovače je pouze 1 hodnota správně. Časovač má rozsah 5 bitů.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 09.05.2021, 21:35 
Offline
Kecka

Registrován: 11.01.2021, 11:47
Příspěvky: 48
Has thanked: 0 time
Been thanked: 39 times
Lisiak4 píše:
Ok, fungují obě varianty zápisu 1 byte. Jak třeba do dff0d8, tak i dff0d9.
Mám tomu rozumět tak, že se do HW registru zapisuje v obráceném sledu než do registru datového, nebo adresového?

Že ti přičtení (nebo odečtení) bajtu na tuto špatnou adresu funguje je v podstatě náhoda. Tedy náhoda to není, ale využíváš vlastnosti 68k procesorů, o které asi nevíš. Ale nebude to fungovat na všech Amigách (resp. nebude na některých akcelerátorech).
Viz tento odkaz, kde je i vysvětlení, proč tomu tak je.
https://eab.abime.net/showthread.php?p=1411756
Custom registry AUDxVOL jsou šestnáctibitové (koneckonců jako všechny ostatní) a má se k nim přistupovat čtením a zápisem v rozsahu šestnácti bitů. Když už chceš inkrementovat hlasitost přičtením bajtu, je dobré přistupovat na adresu, kde se ten bajt skutečně nachází. A ten je na AUDxVOL+1.


Nahoru
 Profil  
 
PříspěvekNapsal: 09.05.2021, 22:17 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Jasně, díky za info, dám tam ty devítky :like:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 18.05.2021, 00:42 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Aby řeč nestála, šipka ukazuje opravu chyby ze soboty=přidání instrukce. V D3 mám hodnotu o efektu arpeggio 4x1 byte, nebo o tónu 1xbyte, vše pro 3.kanál. Testuji, jestli se má hrát arpeggio, nebo tón. Efekt arpeggio má pak vlastní podprogram. Ten podprogram co se zde volá je jen pro výběr frekvence. Za stavu kdy se hraje tón se rozhodně nevykonává arpeggio, tak jsem si mohl dovolit D3 celou smáznout rychlejším moveq a zamezit tak později vykonání efektu arpeggio. Stačilo by mi mít v D3 prázdný jen 1 nejnižší byte.


Přílohy:
moveq.png
moveq.png [ 82.98 KiB | Zobrazeno 6092 krát ]

_________________
Amiga - PMD 85
Nahoru
 Profil  
 
PříspěvekNapsal: 18.05.2021, 01:08 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Jo a efekt arpeggio nemám v podprogramu, mám to jen jako klasický kód.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 18.05.2021, 09:42 
Offline
Kecka

Registrován: 11.01.2021, 11:47
Příspěvky: 48
Has thanked: 0 time
Been thanked: 39 times
Jen pár poznámek ke zdrojáku. Opět nic důležitého. Jen pár programovacích technik a tipů.
sekvence
Kód:
move.b #0,d2
tst.w d2
bne smp2nd1

lze přepsat na kratší
Kód:
eor.w #$ff,d2
bne.b smp2nd1

Instrukce moveq vždy pracuje s celým rozsahem 32 bitů. Není tedy třeba psát moveq.l.
Skoky je vhodné specifikovat jako krátké osmibitové (např. bne.b nebo bne.s -- je to totéž). Jinak se to nechává na assembleru, který buď v základu vyrábí skoky šestnáctibitové (např. z bne udělá bne.w), nebo je dává na osm bitů v případě, že se zapne optimalizace. Mně se spíše osvědčilo postarat se o to sám a mít tak vše pod kontrolou. Pokud se skok do osmi bitů už nevleze, tak na to assembler upozorní.
Zvaž, jestli nevyužívat lokální labels. Ta začínají tečkou. Jejich viditelnost (platnost) je vždy mezi dvěma globálními labely. Trochu to odpovídá lokální viditelnosti proměnných u vyšších jazyků (name scope). Umožňuje to mít přehlednější a kratší labely a nemuset se starat o konflikty mezi jejich jmény.
Kód:
mySubroutine1:
  movem.l d0-a6,-(sp)
  ...
  ...
.loop ; toto je lokální label platný jen mezi dvěma globálními
  move.w d0,d1
  ...
  ...
  dbf d7,.loop
  movem.l (sp)+,d0-a6
  rts

mySubroutine2:
  movem.l d0-a6,-(sp)
  ...
  ...
.loop ; platnost předchozího .loop zkončila s deklarací globálního labelu mySubroutine2
  move.w d0,d1
  ...
  ...
  dbf d7,.loop
  movem.l (sp)+,d0-a6
  rts


Nahoru
 Profil  
 
PříspěvekNapsal: 18.05.2021, 13:29 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 376
Has thanked: 28 times
Been thanked: 120 times
Toto mi nejak nesedí:
defor píše:
Kód:
eor.w #$ff,d2
bne.b smp2nd1

Možno si myslel toto:
Kód:
and.w #$ff00,d2
bne.b smp2nd1


Ale toto celé:
Kód:
move.w d3,d2
move.b #0,d2
tst.w d2
bne smp2nd1

sa dá skrátiť na:
Kód:
cmp.w #$0100,d3
bhs.b smp2nd1    ;bcc.b


Nahoru
 Profil  
 
PříspěvekNapsal: 18.05.2021, 15:24 
Offline
Kecka

Registrován: 11.01.2021, 11:47
Příspěvky: 48
Has thanked: 0 time
Been thanked: 39 times
Antony/DTA píše:
Toto mi nejak nesedí:
Možno si myslel toto:
Kód:
and.w #$ff00,d2
bne.b smp2nd1


Ano, máš pravdu. Nevím, na co jsem myslel. Aspoň Lisiak vidí, že mi nesmí všechno věřit.
O té další úpravě nevím. Popravdě já vůbec netuším, co přesně Lisiak v tom kódu dělá. Jestli mu jde jen o test, že v D3 je od osmého bitu ve wordu nenulové "něco", tak samozřejmě máš pravdu.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.05.2021, 07:26 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
Všemu rozumím, díky oboum za rady :like:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 19.05.2021, 07:36 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2276
Bydliště: Brno
Has thanked: 841 times
Been thanked: 302 times
defor píše:
O té další úpravě nevím. Popravdě já vůbec netuším, co přesně Lisiak v tom kódu dělá. Jestli mu jde jen o test, že v D3 je od osmého bitu ve wordu nenulové "něco", tak samozřejmě máš pravdu.

Ano o to mi jde, pokud je od 8.bitu něco, nehraje se klasický tón, ale arpeggio. Arpeggio se může hrát v rámci času v celém rozsahu 1 řádku patternu, ne jenom na jeho začátku, proto se to zpracovává jinak. To na kolik časových dílů je ještě rozdělen 1 řádek patternu mám nastaveno pomocí časovače CIA.

_________________
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ů: 233 ]  Přejít na stránku Předchozí  1 ... 10, 11, 12, 13, 14, 15, 16  Další

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 2 návštevní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