3

Apple 2 で 80 カラム カードを搭載した Applesoft Basic を使用する場合、POKE のみを使用して DHR グラフィックスを作成する方法はありますか?

Beagle Graphicsなどのサードパーティの拡張機能を使用したソリューションをいくつか見つけましたが、自分で実装したいと思っています。Nibble の雑誌の所蔵品や基本的な書籍を検索しましたが、詳細な情報は見つかりませんでした。

ウィキペディア:

ダブルハイレゾ ダブルハイレゾ画面の構成は非常に複雑です。64:1 のインターリーブに加えて、個々の行のピクセルは通常とは異なる方法で格納されます。各ピクセルは通常の半分の幅で、ピクセルの各バイトは 64KB メモリの最初と 2 番目のバンクの間で交互に使用されます。3 つの連続したオン ピクセルが白であった場合、2 倍の高解像度では 6 つが必要になりました。事実上、Lo-Res グラフィックス ブロックでカラーを作成するために使用されるすべてのピクセル パターンは、Double Hi-Res グラフィックスで再現できます。その RAM ディスクの ProDOS 実装は、/RAM に保存された最初の 8 KB ファイルが設計により 0x012000 から 0x013fff にデータを保存するようにすることで、Double Hi-Res 画面へのアクセスを容易にしました。また、2ページ目も可能でしたが、2 番目のファイル (またはそれより大きい最初のファイル) は、そのデータを 0x014000 から 0x015fff に格納します。ただし、ProDOS ファイル システムを介したアクセスは低速であり、メモリ要件を超えて、Double Hi-Res でのページめくりアニメーションにはあまり適していませんでした。

ウィキペディアは、DHR が 64:1 インターレースを使用していると述べていますが、実装については言及していません。さらにウィキペディアは、/RAM ディスクを使用してアクセスできると言っていますが、実装への参照はありません。

Connet の Circle パターンの単純なバージョンをプロットする小さなプログラムを作成しています。速度は解像度ほど重要ではありません。

4

1 に答える 1

3

comp.sys.apple2.programmer のメンバーが私の質問に答えました: http://groups.google.com/group/comp.sys.apple2.programmer/browse_thread/thread/b0e8ec8911b8723b/78cd953bca521d8f

基本的に、80 列のカードから補助メモリにマップします。次に、HR 画面にプロットし、明るく/暗くしようとしているピクセルの DHR メモリの場所に移動します。

最適な完全なルーチンの例は次のとおりです。

  5 HGR : POKE 49237,0 : CALL 62450 : REM clear hires then hires.aux 
  6 POKE 49246,0 : PG = 49236 
  7 SVN = 7 : HCOLOR= SVN : P5 = .5 
  9 GOTO 100 
 10 X2 = X * 4 : CL = CO : TMP = 8 : FOR I = 3 TO 0 STEP -1 : BIT = CL >= TMP: 
    CL = CL - BIT * TMP : TMP = TMP * P5 
 20 X1 = X + I: HCOLOR= SVN * BIT 
 30 XX = INT (X1 / SVN): H = XX * P5: POKE PG + (H= INT (H)),0 
 40 XX = INT (( INT (H) + (( X1 / SVN) - XX)) * SVN + P5) 
 50 HPLOT XX,Y: POKE PG, 0: NEXT : RETURN 
100 FOR CO = 0 TO 15 : C8 = CO * 8 
110 FOR X = C8 TO C8 + SVN: FOR Y = 0 TO 10 : GOSUB 10 : NEXT : NEXT 
120 NEXT 
130 REM color is 0 to 15 
140 REM X coordinate is from 0 to 139 
150 REM Y coordinate is from 0 to 191 
于 2010-09-24T19:41:22.927 に答える