Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user ibux ! (Registered 2020-09-25) You are not logged in 
CSDb User Forums


Forums > C64 Coding > modify Exomiser compressor to black list some memory locations
2019-04-28 18:30
oziphantom

Registered: Oct 2014
Posts: 409
modify Exomiser compressor to black list some memory locations

Does anybody know a way to modify the exomizer compression algorithm to black list FF0X memory locations to never be read from, i.e don't allow them to be used as part of a sequence?

I guess a post process would also work, if there is a simple way to convert use a sequence to literal bytes..
 
... 16 posts hidden. Click here to view all posts....
 
2019-05-01 15:39
ChristopherJam

Registered: Aug 2004
Posts: 1078
Quoting Krill
The decision should be made per sequence copy, not per source byte.


Sure, but it's still going to be slower than just blacklisting those particular source bytes. That's an extra check for every token - particularly harsh given that exo also uses copies for recently used single bytes.
2019-05-02 12:15
Krill

Registered: Apr 2002
Posts: 1522
Quoting ChristopherJam
Quoting Krill
The decision should be made per sequence copy, not per source byte.
Sure, but it's still going to be slower than just blacklisting those particular source bytes. That's an extra check for every token - particularly harsh given that exo also uses copies for recently used single bytes.
Yes, disallowing certain memory ranges on the compressor side is the preferred option, IF it is available. :)

Quoting ChristopherJam
That's an extra check for every token - particularly harsh given that exo also uses copies for recently used single bytes.
An extra check for every sequence-copy token. However, it should be highly optimisable. The check only needs to be performed once the problematic range has actually been written to, and as its high-byte is $ff, the back-reference check in flat memory space should allow for early exit. There may be more opportunities for optimisation.
2019-05-02 12:45
oziphantom

Registered: Oct 2014
Posts: 409
not write, read

so if when you are writing to $4000 and it wants to copy a 128 bytes sequence and that sequence starts at fE88, then the first 8 reads(as it reads from the top down) need to be the special read under FF0X code. So in order to know if it needs normal, or special, you need to do
(Start + X + Len).hi > ff where start and len are 16bits 'then do special' is probably the best case. It might be faster overall to just do Start.hi + Len.hi > fd and take the hit rather than take the hit of 16bits for the rest.

ChristopherJam is right Exomizer loves to do a sequence of 1 byte.

I have written Magnus Lind, and he sees that it might be useful for other systems as well, and if its not too much work he is happy to make "black list intervals" a feature of exomizer.
2019-05-02 13:54
Krill

Registered: Apr 2002
Posts: 1522
Quoting oziphantom
not write, read
A sequence cannot be read from before it has been written initially (and writing is not a problem, if i have understood you right). The write pointer is strictly ascending or descending depending on depack direction, and thus the range check is superfluous before the problematic range has been written to. This is why i wrote "The check only needs to be performed once the problematic range has actually been written to".
2019-05-02 14:13
oziphantom

Registered: Oct 2014
Posts: 409
ok I see what you are saying, do the forward decompress not the backwards decompress, this then means I only have to do the slow method for 255 bytes tops
2019-05-02 14:38
Krill

Registered: Apr 2002
Posts: 1522
No, what i said should apply to either depack direction.

I'm not quite sure which direction would give more optimisation opportunities for the $ff0X range check at the moment, but both would probably have to do with the difference of write pointer vs back-reference read pointer crossing the 64K bank boundary or not.

But if you intend to depack while loading, forward decompression is the way to go.
2019-05-02 14:54
oziphantom

Registered: Oct 2014
Posts: 409
wait that won't work, to get PHA one must go backwards.
Since its FF0X going backwards(assuming you start above it, and if you don't just use a version that skips the check altogether) gives you 248 bytes max that won't need the check garanteed.

If you go forward then you only have 248 bytes where one must check for FF0X however you can't use PHA to write..
2019-05-02 14:56
oziphantom

Registered: Oct 2014
Posts: 409
But if you intend to depack while loading, forward decompression is the way to go.

Why is forward better from loading? (apart from it saves you flipping the file )
2019-05-02 15:30
Krill

Registered: Apr 2002
Posts: 1522
Okay, then backward decompression is a given, so any potential performance differences to forward decompression are moot.

Forward decompression is usually suited better for decompression while loading mainly because loading itself is usually performed in the forward direction. You can then decompress in-place* in the same direction. That should work for backward compression as well, given that loading is done in the same direction as well.

* Read buffer (loaded compressed file) is a subset of the write buffer (decompressed file), both end at the same address using forward direction. For Exomizer, there are a few (3-ish) compressed bytes beyond the uncompressed data.
2019-05-11 09:25
oziphantom

Registered: Oct 2014
Posts: 409
Its in, and it works :D
Previous - 1 | 2 | 3 - 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
Hawk
zscs
Dymo/G★P
Murphy/Exceed
grass/LETHARGY
ibux
Dex-D/Airsomjith Class
Guests online: 131
Top Demos
1 Uncensored  (9.7)
2 Edge of Disgrace  (9.6)
3 Coma Light 13  (9.6)
4 Memento Mori  (9.6)
5 Comaland 100%  (9.6)
6 The Shores of Reflec..  (9.6)
7 Unboxed  (9.6)
8 Lunatico  (9.6)
9 Remains  (9.5)
10 C=Bit 18  (9.5)
Top onefile Demos
1 Dawnfall V1.1  (9.5)
2 Gumbo Revised  (9.5)
3 Smile to the Sky  (9.5)
4 Daah, Those Acid Pil..  (9.5)
5 Bad Boy  (9.5)
6 Crystal Gazer  (9.5)
7 Cuarentenauta  (9.5)
8 Instinct  (9.5)
9 The Tuneful Eight [u..  (9.5)
10 The Night It Snowed  (9.5)
Top Groups
1 PriorArt  (9.4)
2 Booze Design  (9.4)
3 Censor Design  (9.4)
4 Fossil  (9.4)
5 Performers  (9.3)
Top NTSC-Fixers
1 Pudwerx  (10)
2 Horizon  (9.9)
3 Stormbringer  (9.7)
4 The Shadow  (9.6)
5 Fungus  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2020
Page generated in: 0.042 sec.