C64Power Forum
Archiwum => Meonlawel => Wątek zaczęty przez: BagoZonde w 27 Lutego 2011, 12:15
-
Witam, w sumie od zawsze mnie zastanawiało, dlaczego kolory w kodach ASCII są tak ułożone. Ma się to nijak do wartości kolorów wpisywanych przez POKE. Mimo wszystko wydaje mi się, że \'rozproszenie\' kolorów ASCII nie jest przypadkowe.
Stąd też moje pytanie, czy istnieje jakaś sztuczka, żeby przełożyć wartość koloru ASCII na wartość koloru dla POKE?
Napisałem sobie nawet w tym celu program, żeby znaleźć jakieś wspólne rozwiązanie, ale program wypluł mi, że wspólnego rozwiązania nie znajdę. Ustaliłem, że jest grupa kolorów, w których można w szybki sposób przełożyć je na wartości dla POKE, np:
od wartości 149 dla CHR$(149) [DARK BROWN] wystarczy odjąć 12 i uzyskamy ten sam kolor dla POKE (czyli 137). Tym sposobem można załatwić połowę palety kolorów (kolory dla ASCII od 149 do 155 i 159), ale już z drugą częścią palety jest pod górkę.
W drugą stronę, tzn. z POKE na ASCII jest prościej, bo mogę sobie skorzystać z tablicy, ale w tę stronę zbudowanie tablicy mija się z celem. Za duża rozpiętość wartości, których nie można nawet na żaden sposób sprytniej przekształcić.
Stąd też moje pytanie, czy w ogóle możliwe jest szybkie przetransformowanie tej wartości bez zbędnych warunków? Oczywiście wszystko celem jak najkrótszego kodu w assemblerze :).
-
c64 ma petscii nie ascii ;p szybka konwersja raczej nie jest mozliwa przy tym ukladzie,kolory w petscii pewnie po prostu upychano w wolnych miejscach,stad brak logiki.
.table $90,$05,$1c,...
lda petsciicode
ldx #$ff
loop: inx
cmp table,x
bne loop
x -> poke
w jakim celu chcesz w ogole korzystac z kodow petscii dla kolorow ? w asm to kompletnie niepotrzebne.
-
Chateau, dzięki za info. Już odpowiadam: potrzebne w przypadku, gdy pliki, z których odczytuję dane zapisane mają kolory w PETSCII. I gdy odczytuję te dane przez JSR $FFD2. Dzięki za info, że to PETSCII bo wszędzie w xiążkach piszą ASCII. Pewnie ogólnikowo.
A propos Twojego kodu, właśnie tego chciałem uniknąć jako \'marnotrawcy cykli\' :D, ale chyba będę na to skazany :).