跳轉到內容

Signetics 2650 & 2636 程式設計/程式設計顏色

75% developed
來自 Wikibooks,開放世界中的開放書籍

教程 — 程式設計顏色

[編輯 | 編輯原始碼]

這系列的控制檯能使用的顏色調色盤非常有限。PVI 有三個數字(即要麼開要麼關)顏色訊號,它們連線到 PAL 編碼器的紅、綠和藍輸入端。這將系統限制為八種顏色:黑、紅、綠、藍、青、洋紅、黃和白。

乍一看這似乎很簡單,但有兩個其他訊號會影響顯示屏上的顏色,這使得它變得複雜起來

  • PVI 的 OBJ/SCR 輸出端,它會在顯示物件或分數數字時變為低電平。請記住:SCR 是分數,而不是螢幕!
  • 74LS138 '效果' 暫存器的第 5 位。

另一個複雜之處在於,一些控制檯(如 Interton VC4000)使用這些訊號來改變顏色的亮度,而另一些控制檯則使用它來反轉顏色。本頁面的其餘部分適用於顏色反轉方法,特別是 Voltmace 資料庫中實現的方法。

硬體描述

[編輯 | 編輯原始碼]
Voltmace 資料庫影片遊戲控制檯中的顏色控制電路的方框圖。

連線到 PAL 編碼器的三個有效電平顏色輸入端直接連線到 PVI 的有效低電平顏色輸出端:RGB

連線到 PAL 編碼器的有效電平 INV 輸入端是從一個線與電路匯出的,該電路包含一個開集電極電晶體、開漏 OBJ/SCR 和一個上拉電阻。這兩個器件中的任何一個都可以將反轉輸入拉至低邏輯電平。

INVERT 訊號透過寫入十六進位制 D 型觸發器 74LS378 的第 5 位(在記憶體地址 $1E80 處)來設定。將 1 寫入該位會導致電晶體導通,並無論 OBJ/SCR 的狀態如何,都將 PAL 編碼器的 INV 輸入拉至邏輯 0。

暫存器

[編輯 | 編輯原始碼]

所有顏色資訊都由四個暫存器控制,三個在 PVI 中,一個在邏輯晶片中。請注意,這些暫存器都是隻寫暫存器。程式設計師需要自行跟蹤暫存器中的內容。

$1E80 '效果' 暫存器

[編輯 | 編輯原始碼]
7 6 5 4 3 2 1 0
- - INVERT - - - - -

該暫存器中的其他位由音訊電路使用。

$1FC1 顏色物件 1 & 2

[編輯 | 編輯原始碼]
7 6 5 4 3 2 1 0
X X R1 G1 B1 R2 G2 B2

$1FC2 顏色物件 3 & 4

[編輯 | 編輯原始碼]
7 6 5 4 3 2 1 0
X X R3 G3 B3 R4 G4 B4

$1FC6 背景和螢幕 — 啟用和顏色

[編輯 | 編輯原始碼]
7 6 5 4 3 2 1 0
X R G B 背景

啟用

R G B
X 背景顏色 螢幕顏色

如果背景啟用設定為零,則螢幕和背景網格都將從 PVI 輸出為 '111'。

如果背景網格不用於圖形,則定義它的暫存器($1F80 - $1FAC)可用於變數儲存。透過將背景和螢幕設定為相同的顏色,它們在顯示屏上隱藏起來。

如果您覺得硬體描述難以理解,因為它包含多個反轉,那麼您並不孤單。在程式設計顏色時,您只需要使用下面的表格。

顏色 物件 背景或螢幕
INVERT = 0 INVERT = 1
黑色 111 000 111
藍色 110 001 110
綠色 101 010 101
青色 100 011 100
紅色 011 100 011
洋紅色 010 101 010
黃色 001 110 001
白色 000 111 000

分數顏色無法獨立程式設計;它始終是為背景程式設計的顏色反轉。

物件顏色和分數顏色都不會受到 74LS138 '效果' 暫存器的第 5 位狀態的影響,因為在顯示它們時,OBJ/SCR 將為低電平。

INVERT 位在一些遊戲中使用,例如 Interton 的超級太空,作為螢幕保護程式。雖然將 INVERT 位正常設定為 0 非常誘人,但最好將其正常設定為 1。這樣,物件、分數、背景和螢幕的顏色程式碼就相同,並且將處於負邏輯狀態,即 0 使顏色開啟。

程式碼片段

[編輯 | 編輯原始碼]

所有顏色都由這四個暫存器設定

effects     equ $1E80
colours12   equ $1FC1
colours34   equ $1FC2
backgnd     equ $1FC6

在程式的早期清除效果暫存器是一個好主意。這不僅會關閉顏色反轉,還會關閉音訊。

        eorz    r0
        stra,r0 effects		

或者,如上所述,可以關閉音訊並開啟顏色反轉,以便所有顏色都可以使用相同的程式碼程式設計。

        lodi,r0 $20
        stra,r0 effects		

請記住,物件的顏色始終為低電平有效,因此 RGB 序列 101 將顯示為綠色,等等。

        lodi,r0 %00010101       ; XX  /  011     /   110
        stra,r0 colours12       ;     / obj1 red / obj2 blue

背景和螢幕顏色取決於反轉位的狀態。當反轉位為 0 時,它們的的顏色始終為高電平有效,因此 RGB 序列 010 將顯示為綠色,等等。

        eorz    r0
        stra,r0 effects         ; invert bit = 0	
        lodi,r0 %00001110       ;  X / 100            /   1     / 001
        stra,r0 backgnd         ;    / background red / enabled / screen blue

相反,當反轉位為 1 時,它們的的顏色為低電平有效,因此 RGB 序列 101 將顯示為綠色,等等。

        lodi,r0 $20
        stra,r0 effects         ; invert bit = 1	
        lodi,r0 %00001110       ;  X / 011            /   1     / 110
        stra,r0 backgnd         ;    / background red / enabled / screen blue

教程程式

[編輯 | 編輯原始碼]
在 Voltmace 資料庫遊戲機上演示顏色程式設計

此教程的程式碼可以在 Signetics 2650 & 2636 程式設計/教程程式碼 - 程式設計顏色 找到。執行此程式後,您應該看到一個靜態螢幕,如下所示

四個物件以不同的顏色程式設計。當第一行物件顯示後,效果暫存器中的 反轉 位被設定為 1。這會反轉螢幕的顏色(黃色 110 變為藍色 001),並且背景從黑色切換到白色。

請注意,此轉換之上和之下的物件和分數數字是相同的。還要注意,分數是為背景程式設計的顏色反轉。

  1. 將四個物件的顏色更改為紅色、青色、黃色和藍色。
  2. 將背景網格的初始顏色更改為青色。
  3. 將分數的顏色更改為洋紅色。


華夏公益教科書