| |
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.... |
| |
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 ;)
|
| |
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. |
| |
Krill
Registered: Apr 2002 Posts: 2982 |
Cruzer: Was that sort of a challenge of who'd build the fastest IRQ loader now? :) |
| |
Kabuto Account closed
Registered: Sep 2004 Posts: 58 |
Truly amazing what you did, and also how well you've documented it. |
| |
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... |
| |
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. |
| |
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. |
| |
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)
|
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Quoting KrillCruzer: Was that sort of a challenge of who'd build the fastest IRQ loader now? :) Yes please! :D |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Quoting KrillYou 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 |