Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
  You are not logged in 
GhostbyteInSprite   [2016]

GhostbyteInSprite Released by :

Release Date :
26 May 2016

Type :
C64 Misc.

User rating:awaiting 5 votes (5 left)

Credits :
Code .... Scan of House Designs

Download :
http://csdb.dk/getinternalfile.php/149573/ghostsprite.prg (downloads: 259)

Look for downloads on external sites:

User Comment
Submitted by Moloch on 26 May 2016
Use the forums ... comments aren't for long threads of discussion.
User Comment
Submitted by Fresh on 26 May 2016
I've never seen this bug before but I think it can be explained this way:

VIC tries to read sprite definitions every line, even when there are no sprite to display.
- When a sprite is being displayed (ie SpriteY =< $d012 <= SpriteY+20) VIC holds the bus and correctly reads from $3f8-$3ff
- When outside the display area it doesn't take over the bus so it reads $ff ($3fff) $ff.

The VIC reads $ff when the cpu is using the bus (so, VIC side, the bus is tristated); it reads from location $3fff while it's holding the bus but it's in idle state.

This can be tested by changing $3fff during line $A2 before or after cycle 4: change it before and it will reflect on the middle byte of sprite 4, change it after and it won't affect the sprite.

Long story short: those are just three bytes read from VIC in the preceeding line on cycles 4.5/5/5.5 while not holding the bus.
User Comment
Submitted by ZeSmasher on 26 May 2016
no, too scared! :P
User Comment
Submitted by Scan on 26 May 2016
Thanks for testing on a real C64! I have no access to one, so I just hope the stuff I write nowadays works on a real C64. Btw, tested my virus? ;)
User Comment
Submitted by ZeSmasher on 26 May 2016
@Scan: just tested - it's really there! :)
(my monitor can show 35-36 pixels in the right border)
User Comment
Submitted by ZeSmasher on 26 May 2016
ah ok, cool!
that only happens on the first line of a sprite, so every 21 lines, or? does it depend if it's on a "badline" or not? (try to place that sprite on the upper right border)
User Comment
Submitted by Scan on 26 May 2016
Let me rephrase that. "I would assume it would be visible on a real C64". I haven't tested it.
User Comment
Submitted by Scan on 26 May 2016
It would be visible on a real C64 if I placed the sprite at $68 instead of $70, like I did in the example. But then it would only show the line above the A, not the ghostbyte above the B (it's still there, just not shown on a real C64 since the border is 32 pixels wide). Btw, I don't think it's usable for anything, but I'm curious why this happens. Why can I change the pattern above the B using $3fff and not ones above the A and C? Is there a memory location that changes them?
User Comment
Submitted by ZeSmasher on 26 May 2016
very interesting!!!
the problem is that I don't know how you could test that on real H/W as that "spriteghost" is really far in the border. I mean: you should first discover if it's one of those cool vic bugs we all love or an emulator only behavior.
Search CSDb
Prev - Random - Next
Detailed Info
· Summaries (1)
· User Comments (9)
· Production Notes
Fun Stuff
· Goofs
· Hidden Parts
· Trivia
· Discuss this release (15)
Sponsored links
Support CSDb
Help keep CSDb running:

Funding status:

About this site:
CSDb (Commodore 64 Scene Database) is a website which goal is to gather as much information and material about the scene around the commodore 64 computer - the worlds most popular home computer throughout time. Here you can find almost anything which was ever made for the commodore 64, and more is being added every day. As this website is scene related, you can mostly find demos, music and graphics made by the people who made the scene (the sceners), but you can also find a lot of the old classic games here. Try out the search box in the top right corner, or check out the CSDb main page for the latest additions.
Home - Disclaimer
Copyright © No Name 2001-2018
Page generated in: 0.085 sec.