Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > $d011 trickery – duplicated text lines
2011-04-29 21:39
Digger

Registered: Mar 2005
Posts: 448
$d011 trickery – duplicated text lines

Does any one know the $d011 trick to repeat the first char row? I am trying to cancel badlines on the 8th line of each charline (between cycles 54-57) but it doesn't work. The first line gets duplicated but only twice.
 
... 57 posts hidden. Click here to view all posts....
 
2021-11-22 11:35
Rastah Bar
Account closed

Registered: Oct 2012
Posts: 336
Thanks again for testing.
Quoting Martin Piper
Emulation now matches real C64C

No, it doesn't.

The one $ff byte that is visible in the beginning of rasterline $30 is white on the real C64C, but green on the emulator.

This very same byte is also visible in the last rasterline after the four black '@' characters. In the code you can see that #100 is put in $0404, in the color white. It is the last byte of that character's gfx that you are seeing.

If you would put reverse spaces in memory locations $0400 ... $0427, you would see that on the real thing they would have the colors that are in $d800 ... $d827, but the emulator will show them in the colors that are at the bottom of the screen. See the first picture that I posted. The bug is that the screen ram and color ram memory locations do not match in the very first rasterline.
2021-11-22 11:44
Rastah Bar
Account closed

Registered: Oct 2012
Posts: 336
Quote: Quote:
The color of that one $ff-byte on rasterline $30 is green on the emulator, but white on the real C64, is that right?
If so, then there is an emulator bug.

make sure to test this on different C64s - and make sure to use the matching VICII type in x64sc. This sounds to me like one of those things that isnt fully understood AND which is not consistant across individual chips either - perhaps this is related: https://sourceforge.net/p/vice-emu/bugs/218/


To me it looks like a plain emulator bug. The VIC fetches 12 bits at once in the c-accesses, therefore I expected screen ram and color ram memory addresses to always match. But they don't in the emulator on rasterline $30 for the code posted in this thread, while they do on the real C64C.
2021-11-22 13:17
Rastah Bar
Account closed

Registered: Oct 2012
Posts: 336
Quoting Martin Piper

The bottom line does seem to be the "sprite register" area for the chars, but not the colour RAM...?!

Since a line crunch is happening, the VIC will fetch from memory beyond the visible screen. So the bottomline (as far as it is not hidden by the FLI bug) will show characters in memory locations $07e8 ... $07ff and then wrap around to $0400 again. It should do the same for the colors, that is, fetch from $dbe8 ... $dbff and wrap around to $d800 again.

So, the first four black '@' characters on the bottom row are stored in $0400 ... $0403 and $d800 ... $d803.

Here is some code that might show the bug more clearly:
//ZP-adresses
.const irqA = 2
.const irqX = 3
.const irqY = 4

//Variables
.var IrqLijn0 = $2f

*=$0801
// 10 SYS2064 
.byte    $0B, $08, $0A, $00, $9E, $32, $30, $36, $34, $00, $00, $00

*=$0810
        sei
        cld
        lda #0
        sta $d015
        sta $d021
        lda #%10101010
        sta $3fff
        ldy #01
l0:     ldx #39
        tya
m0:     sta $0428,x
        lda #$0e
        sta $d828,x
        dex
        bpl l0+2
        clc
        lda m0+1
        adc #40
        sta m0+1
        sta m0+6
        bcc *+8
        inc m0+2
        inc m0+7
        iny
        cpy #25
        bcc l0
//Mid grey characters #123 on first character row
        ldx #39
l1:     lda #123
        sta $0400,x 
        lda #12
        sta $d800,x 
        dex
        bpl l1
/Put some chars and colors in $07e8 ... $07ff and $dbe8 ... $dbff
        ldx #$fe 
l2:     txa       
        sta $0701,x 
        sta $db01,x 
        dex
        cpx #$e6
        bne l2

        jsr setTimer        

        lda #$7f   
        sta $dc0d 
        sta $dd0d  
        lda $dc0d  
        lda $dd0d  

        lda #$01   
        sta $d01a
        
        lda #IrqLijn0   
        sta $d012 
       
        lda #$1f     
        sta $d011 
        lda #<irq0
        sta $fffe
        lda #>irq0
        sta $ffff     
        lda #$35  
        sta $01
        lda #$55
        sta $3fff

        lda #$01
        sta $d010

        inc $d019
        cli
        jmp *

irq0:
        sta irqA
        nop
        lda $dc06     
        eor #7
        sta *+4
        bpl *+2         
        lda #$a9
        lda #$a9
        lda $eaa5   
        
        stx irqX
        sty irqY
        ldx $d012

        inc $0200

        inc $d020
        dec $d020
        
        inc $0200
//Badline on next rasterline       
        inx
        txa
        and #$07
        ora #$18
        sta $d011
        txa
        clc
        adc #$03
        cmp #$f8
        bcs endscrn
        sta $d012
        inc $d019
        ldy irqY
        ldx irqX
        lda irqA
        rti

endscrn:
//open border
        lda $d011
        and #$f7
        sta $d011
       
        bit $d011
        bpl *-3
        lda #$1f
        sta $d011
        lda #IrqLijn0  
        sta $d012
        inc $d019
        ldy irqY
        ldx irqX
        lda irqA
        
        rti

setTimer:
//Via badline detection with timer
        lax $dc04      
        sbx #51
        sta irqA
        cpx $dc04
        bne setTimer    

        ldx #8
        dex
        bne *-1         
        bit $ea             
        lda #8
        sta $dc06
        stx $dc07
        lda #$11
        sta $dc0f     
        rts


Result in Vice 3.5 for model C64C:
https://i.postimg.cc/2yLFNCc0/text-mode2.png

One would expect the gfx in rasterline $30 to be mid grey on a real C64, but the emulator uses the colors from the bottom row (memory locations $dbe8 ... $dbff).
2021-11-22 15:41
chatGPZ

Registered: Dec 2001
Posts: 11523
Interesting.... HOXS does it correctly apparently :)
2021-11-22 15:46
Rastah Bar
Account closed

Registered: Oct 2012
Posts: 336
Yes, while micro64 shows the same thing as Vice. Should I submit a ticket to sourceforge or should I wait until this has been tested on more real C64s?
2021-11-22 16:04
chatGPZ

Registered: Dec 2001
Posts: 11523
My Breadbox also shows all grey in the top line.

Please make a ticket :)
2021-11-22 17:06
Rastah Bar
Account closed

Registered: Oct 2012
Posts: 336
Ticket submitted, feel free to edit if you think it isn't explained clearly or if something is missing.

https://sourceforge.net/p/vice-emu/bugs/1627/
2021-11-22 17:26
Martin Piper

Registered: Nov 2007
Posts: 739
Quote: Interesting.... HOXS does it correctly apparently :)

Even Hoxs64 from 6 January 2013 v1.0.8.4 works right :)
2021-11-22 18:00
chatGPZ

Registered: Dec 2001
Posts: 11523
funny enough, even x64 works right ... interesting bug really :)
2021-11-22 18:22
Rastah Bar
Account closed

Registered: Oct 2012
Posts: 336
I hate bugs ;-)
But glad that I can contribute to the improvement of emulators.
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Codey/Second Dimension
duce/extend
Freeze/Blazon
bugjam
Steveboy
v3nt0r/ibex-crew
Visage/Lethargy
Sixx
CopAss/Leader
Mibri/ATL^MSL^PRX
Acidchild/Padua
Aomeba/Artline Desig..
grass/LETHARGY
katon/Lepsi De
Guests online: 234
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Codeboys & Endians  (9.7)
4 Mojo  (9.6)
5 Coma Light 13  (9.6)
6 Edge of Disgrace  (9.6)
7 Signal Carnival  (9.6)
8 Wonderland XIV  (9.5)
9 Uncensored  (9.5)
10 Comaland 100%  (9.5)
Top onefile Demos
1 Nine  (9.7)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.5)
6 Scan and Spin  (9.5)
7 Onscreen 5k  (9.5)
8 Grey  (9.5)
9 Dawnfall V1.1  (9.5)
10 Rainbow Connection  (9.5)
Top Groups
1 Artline Designs  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Performers  (9.3)
5 Censor Design  (9.3)
Top Cover Designers
1 Duce  (9.8)
2 Electric  (9.8)
3 Junkie  (9.6)
4 The Elegance  (9.5)
5 Mermaid  (9.3)

Home - Disclaimer
Copyright © No Name 2001-2025
Page generated in: 0.079 sec.