Dyskusja:Programowanie: Detekcja stereo
From Atariki
Wersja z dnia 19:59, 25 paź 2011 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 10:34, 26 paź 2011 0xF (Dyskusja | wkład) (a może POTami?) Next diff → |
||
Linia 59: | Linia 59: | ||
:Najlepiej jest, kiedy właśnie tak myślisz. Nie krępuj się zatem :) [[Użytkownik:KMK|KMK]] 21:59, 25 paź 2011 (CEST) | :Najlepiej jest, kiedy właśnie tak myślisz. Nie krępuj się zatem :) [[Użytkownik:KMK|KMK]] 21:59, 25 paź 2011 (CEST) | ||
+ | |||
+ | Niestety zmienia "API" w nieintuicyjny sposób (chyba, że nazwiemy funkcję "is_mono"). | ||
+ | W rozwiązaniu Sebana kosztuje bajty ustawienie przerwań, a potem posprzątanie po nich. W rozwiązaniu KMK kosztuje to, że jeden $FF w RANDOM jeszcze o niczym nie świadczy. Jeśli dalej chcemy ciąć bajty, to można spróbować POTx - np. w jednym POKEYu odpalić szybkie skanowanie, a w drugim wolne. Jeśli szybkie włączymy w drugim POKEYu, a potem wolne w podstawowym, to nawet nie trzeba potem sprzątać. [[Użytkownik:0xF|0xF]] 12:34, 26 paź 2011 (CEST) |
Wersja z dnia 10:34, 26 paź 2011
A może dałoby się zrobić to inaczej:
ldx #$00 stx $d20f ;halt pokey 0 stx $d21f ;halt pokey 1 lda #$03 sta $d21f ;release pokey 1 lda $d20a ;see if pokey 0 is halted ($d20a = $ff) ?loop and $d20a inx bne ?loop ldy #$03 sty $d20f cmp #$ff bne ?mono inx ?mono ... ;X=0 - mono ;X=1 - stereo
? Procedura jest prostsza i krótsza niż u Sebana, oraz nie używa przerwań, ale nie bardzo mam na czym sprawdzić, czy to działa. KMK 16:43, 19 paź 2011 (CEST)
- EDIT: dalsze skrócenie, do 32 bajtów. Na emulatorze działa. KMK 17:15, 19 paź 2011 (CEST)
Będzie działać na real sprzęcie. Sprawdziłem czy pokey w reset daje $FF. Dokładnie tak do działa. Pomysł bardzo fajny i o wiele prostszy niż zabawa z IRQ. --Seban/SLIGHT 20:28, 20 paź 2011 (CEST)
moze w ten sposob?
detect_stereo ldx #$00 stx $d20f ;halt pokey 0 stx $d21f ;halt pokey 1 ldy #$03 sty $d21f ;release pokey 1 lda #$ff ?loop dex beq ?stereo cmp $d20a ;see if pokey 0 is halted ($d20a = $ff) beq ?loop ?stereo sty $d20f ;Results: ;X = 0 - stereo ;X !=0 - mono
Xxl 16:21, 25 paź 2011 (CEST)
- Uczcijmy to minutą ciszy. :) KMK 19:47, 25 paź 2011 (CEST)
kolejna cykliczna "adekwatna a nawet gorsza reakcja" Drac030 :) Xxl 21:45, 25 paź 2011 (CEST)
- Najlepiej jest, kiedy właśnie tak myślisz. Nie krępuj się zatem :) KMK 21:59, 25 paź 2011 (CEST)
Niestety zmienia "API" w nieintuicyjny sposób (chyba, że nazwiemy funkcję "is_mono"). W rozwiązaniu Sebana kosztuje bajty ustawienie przerwań, a potem posprzątanie po nich. W rozwiązaniu KMK kosztuje to, że jeden $FF w RANDOM jeszcze o niczym nie świadczy. Jeśli dalej chcemy ciąć bajty, to można spróbować POTx - np. w jednym POKEYu odpalić szybkie skanowanie, a w drugim wolne. Jeśli szybkie włączymy w drugim POKEYu, a potem wolne w podstawowym, to nawet nie trzeba potem sprzątać. 0xF 12:34, 26 paź 2011 (CEST)