2024/07/09

Játékkonzolom memóriatérképe

Tudom, azt mondtam, hogy nincs külső RAM, és ez még most is igaz, viszont a hardver többi részével való kommunikációt csak így tudom megoldani. Minden külsőleg elérhető cím egy regiszterbe mutat, amit a hardver valamire használ.

Íme egy elgondolás (O: csak olvasható, Í: csak írható)
$00    (Í) LCD-be bemenet (írási hozzáférés beírja automatikusan a kijelzőbe a bemenetet)
$01    (Í) 1-es szólam frekvenciája
$02    (Í) 1-es szólam pulzusszélesség
$03    (Í) 1-es szólam szűrőértéke
$04    (Í) 1-es szólam vezérlő
$05    (Í) 1-es szólam AR (felfutás, lecsengés, mindkét egy nybble hosszú)
$06    (Í) 1-es szólam S (tartás)
$07    (O) 1-es szólam hanggenerátor
$08    (Í) 2-es szólam frekvenciája
$09    (Í) 2-es szólam pulzusszélesség
$0a    (Í) 2-es szólam szűrőértéke
$0b    (Í) 2-es szólam vezérlő
$0c    (Í) 2-es szólam AR (felfutás, lecsengés, mindkét egy nybble hosszú)
$0d    (Í) 2-es szólam S (tartás)
$0e    (O) 2-es szólam hanggenerátor
$0f     (Í) 3-as szólam frekvenciája
$10    (Í) 3-as szólam pulzusszélesség
$11    (Í) 3-es szólam szűrőértéke
$12    (Í) 3-as szólam vezérlő
$13    (Í) 3-as szólam AR (felfutás, lecsengés, mindkét egy nybble hosszú)
$14    (Í) 3-as szólam S (tartás)
$15    (O) 3-as szólam hanggenerátor
$16    (Í) LFSR frekvenciája
$17    (Í) LFSR pulzusszélesség
$18    (Í) LFSR szűrőértéke
$19    (Í) LFSR vezérlő
$1a    (Í) LFSR AR (felfutás, lecsengés, mindkét egy nybble hosszú)
$1b    (Í) LFSR S (tartás)
$1c    (O) LFSR hanggenerátor
$1d    (Í) 4-es szólam frekvenciája
$1e    (Í) 4-es szólam pulzusszélesség
$1f     (Í) 4-es szólam szűrőértéke
$20    (Í) 4-es szólam vezérlő
$21    (Í) 4-es szólam AR (felfutás, lecsengés, mindkét egy nybble hosszú)
$22    (Í) 4-es szólam S (tartás)
$23    (O) 4-es szólam hanggenerátor
$24    (O) 1-es játékvezérlő állapota
$25    (O) 2-es játékvezérlő állapota
$26    (Í) Megszakításkezelő
$27    (ÍO) Képsor száma (alacsony byte)
$28    (ÍO) Képsor száma (magas byte)
$29    (ÍO) Pixel száma

Vezérlők:
    ¤0: bázisfeszültség (0: +0V, 1: +0,25V)
    ¤1: bázisfeszültség (0: +0V, 1:+0,75V)
    ¤2: fázis újraindítás
    ¤3: felüláteresztő
    ¤4: aluláteresztő
    ¤5: hanghullám
    ¤6: hanghullám
    ¤7: burkológörbe engedélyezése
Játékvezérlő-állapot byteok:
   
¤0: tűz
    ¤1: fe
    ¤2: le
    ¤3: jobbra
    ¤4: balra
    ¤5: -
    ¤6: -
    ¤7: -
Megszakításkezelő:
   
¤0: megsz. új képsor elején
    ¤1: megsz. új képkocka elején
    ¤2: megsz. sorszinkronjelnél
    ¤3: megsz. képszinkronjelnél
    ¤4: megsz. a következő nem látható sorcsoportnál (overscan)
    ¤5: megsz. a $27-$28-ban meghatározott képsoron
    ¤6: megsz. rögtön a $29-ban meghatározott pixel után
    ¤7: -