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 > GCR decoding on the fly
2013-03-31 12:46
lft

Registered: Jul 2007
Posts: 369
GCR decoding on the fly

Here's how to do it:

http://linusakesson.net/programming/gcr-decoding/index.php
 
... 149 posts hidden. Click here to view all posts....
 
2013-03-31 19:57
Bob

Registered: Nov 2002
Posts: 71
Excellent job, truly, I read your doc, and I think understood it :) , I had a harder time to understand why data was packed as such from the drive though ;)

Now the question is that this has speeded up the reading to a new level, or unloaded the process for other purpose?

this tech is very interesting for our future coming demos where one of the main problems in trackmo is the loader/cruncher relation, where nowdays the uncrunching takes longer time then loading a part ..but either way this shortens the whole loading procedure which is very good... especially where we use all memory :)

LFT, once again, hats off for your remarkable innovative approaches and questioning and challange the unquestionable! ... Where people has accepted that is how it is... and you just like say WHY?... I love that.. keep up the spirit.. if you need anything help support or be in Censor just let me know ;)
2013-03-31 22:14
Cruzer

Registered: Dec 2001
Posts: 1048
Yet again, amazing solution and description of a problem - this time one I had been blissfully ignorant about until now. Hopefully this will become a standard in trackmo loaders and lead to more action packed demos.
2013-03-31 22:22
Krill

Registered: Apr 2002
Posts: 2982
Cruzer: Was that sort of a challenge of who'd build the fastest IRQ loader now? :)
2013-03-31 23:10
Kabuto
Account closed

Registered: Sep 2004
Posts: 58
Truly amazing what you did, and also how well you've documented it.
2013-03-31 23:35
raven
Account closed

Registered: Jan 2002
Posts: 137
This is awesome, it was such a simple approach in the end.
Congrats! :)

@MagerValp:

Interleave 4 can be quite easily done without full on-the-fly decoding, I wonder if its possible to reach interleave 2 with this...
2013-04-01 06:03
Krill

Registered: Apr 2002
Posts: 2982
You cannot transfer $fe bytes during the time a sector flies by, this is just barely possible with those $e0 bytes per sector schemes (Vorpal V1 and derivates like Heureka-Sprint), and there only with non-interruptable transfer. Last time i checked, that is.
2013-04-01 08:06
Fungus

Registered: Sep 2002
Posts: 691
lft : this is pretty brilliant, I have to say.

Do you think it may be possible to decode without recombining the nybbels into whole bytes?

As you know, there is extra overhead when converting the bytes back into nybbels again for transfer over serial which in normal loaders really wastes of lot of time. So it would be very interesting if this extra step can also be eliminated like it is in Krill's, Mine, or the action replay loaders.

In my own loaders I also am calculating the checksum after decoding the nybbels with an eor/sta pair for each nybbel, and finally checking those against the nybbels read from the checksum. I did that of course to eliminate another loop of overhead to check the contents of the decoded bytes against the checksum.

I think it would be INSANELY fast if the methods could be combined.
2013-04-01 08:36
Axis/Oxyron
Account closed

Registered: Apr 2007
Posts: 91
Gosh, this is really fucking brilliant. And thanks for the article. This was a very interesting read. I never new about that GCR encoding problem.

So there are still unawnsered questions.
How big is the practical gain? What is the cost of GCR encoding e.g. in Krills loader?
Are there any disadvantages like e.g. compatibility issues?
@Krill: When will we get our hands on a version of your loader using this technique? ;o)
2013-04-01 09:22
Cruzer

Registered: Dec 2001
Posts: 1048
Quoting Krill
Cruzer: Was that sort of a challenge of who'd build the fastest IRQ loader now? :)
Yes please! :D
2013-04-01 10:09
MagerValp

Registered: Dec 2001
Posts: 1078
Quoting Krill
You cannot transfer $fe bytes during the time a sector flies by, this is just barely possible with those $e0 bytes per sector schemes

So don't use the whole sector, only decode as much as you can transfer while the next sector flies by. You'd lose 20% but you can transfer a full track in two revolutions...
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ... | 16 - 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
Northwind
Fred/Channel 4
celticdesign/G★P/M..
Dan
Didi/Laxity
Guests online: 78
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.6)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 Uncensored  (9.6)
7 The Demo Coder  (9.6)
8 Comaland 100%  (9.6)
9 What Is The Matrix 2  (9.6)
10 Wonderland XIV  (9.5)
Top onefile Demos
1 Layers  (9.7)
2 Cubic Dream  (9.6)
3 Party Elk 2  (9.6)
4 Copper Booze  (9.6)
5 Dawnfall V1.1  (9.5)
6 Rainbow Connection  (9.5)
7 Morph  (9.5)
8 Libertongo  (9.5)
9 Onscreen 5k  (9.5)
10 It's More Fun to Com..  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Oxyron  (9.3)
3 Performers  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Swappers
1 Derbyshire Ram  (10)
2 Jerry  (9.8)
3 Violator  (9.7)
4 Acidchild  (9.7)
5 Cash  (9.7)

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