Gönderen Konu: Yeni c128 grafik modu 320x400  (Okunma sayısı 4047 defa)

Yeni c128 grafik modu 320x400

« : 21.05.2007 13:19:42 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Öncelikle şunu belirtmek isterim ki c128'e özel bir kategori olmadığı için bu topici c64 coding altında açtım. Ama zaten c64 ile de yakından ilişkili bir konu.
 
Hydrophilic/Hydradix Commodore 128 üzerinde Atari 2600'ün interlace modlarından yola çıkarak 320x400 grafik modu göstermeyi başardı. Aslında Commodore 64'de 640x400'e varıncaya kadar yüksek çözünürlükler gördük ancak bunlar "mecburen" scroll eden grafiklerdi. Ayrıca burada kullanılan trick de oldukça farklı. VIC II'nin özelliklerinden yararlandığı için Commodore 64 üzerinde çalışmayabilir ancak Commodore 128 üzerinde Commodore 64 modunda da bu trick işe yarayacaktır. Detaylar aşağıdaki linkte yer almaktadır:
 
http://www.geocities.com/hydradix/C128/Interlace.htm
 
Bu $d030 adresi oldukça ilginç bir adres. Ben daha önceleri bu adresi ve $d02f adresini Commodore 64/128 detection için kullanmıştım. Ama anlaşılan bu adreslerde daha çoook iş var ;) Commoodore 128'im olmadığı için test edemiyorum ama biliyorum, bazılarınızda var. Sizler test edip sonucu buraya gönderirseniz sevinirim.
 
Bunlar da benim 64/128 detection rutinlerim. Gerçek C64 üzerinde "THIS IS A COMMODORE 64", C128'i C64 modunda açtığınızda ise "THIS IS A COMMODORE 128" diyor bu rutinler. Aynı işi iki farklı yöntemle yapmıştım. ıkisi de aşağıda.
 
detect.a
Kod: [Seç]
; Output
 !to     "detect.prg", cbm
 ; Basic Start Address
 * = $0801
 !byte $0b, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00
 ; Program Start Address
 * = $080d
 lda #$00
 sta $d020
 sta $d021
 lda #$01
 jsr $e536
 lda #$fc
 sta $d030
 eor $d030
 beq .c128
 lda #<.c64text
 ldy #>.c64text
 jmp .out
.c128
 lda #<.c128text
 ldy #>.c128text
.out
 jsr $ab1e
 rts
.c64text
 !text &quot;THIS IS A COMMODORE 64&quot;,0
.c128text
 !text &quot;THIS IS A COMMODORE 128&quot;,0

detect2.a
Kod: [Seç]
; Output
 !to     "detect2.prg", cbm
 ; Basic Start Address
 * = $0801
 !byte $0b, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00
 ; Program Start Address
 * = $080d
 lda #$00
 sta $d020
 sta $d021
 lda #$01
 jsr $e536
 lda #$00
 sta $d02f
 lda #$ff
 cmp $d02f
 bne .c128
 lda #<.c64text
 ldy #>.c64text
 jmp .out
.c128
 lda #<.c128text
 ldy #>.c128text
.out
 jsr $ab1e
 rts
.c64text
 !text "THIS IS A COMMODORE 64",0
.c128text
 !text "THIS IS A COMMODORE 128",0