CodePressor by Topix
[nfo]
|
||||||||
---|---|---|---|---|---|---|---|---|
|
||||||||
|
popularity : 54% |
|||||||
alltime top: #21399 |
|
|||||||
|
||||||||
added on the 2019-05-14 20:19:35 by Kuemmel |
popularity helper
comments
Awesome. Might want to port this to the GBA or sth, but I'm afraid I have too many other stuff I want to do first.
oh, didn't know about that archmides & Risc-OS Stuff .. and A3000 sounds like a cool oldskool demo machine ..
Archimedes rules! :-D
Pervect's excellent CodePressor ranked first place in 2K tool category of CodeCraft #2. It's a must see for tiny coding on ARM processors.
Also, for historical reason, i will mention the demo "BitStretcher"by Tony Haines that got 5th place in 1K category of CodeCraft #1 which was using the nibble packing trick first.
Pervect's excellent CodePressor ranked first place in 2K tool category of CodeCraft #2. It's a must see for tiny coding on ARM processors.
Also, for historical reason, i will mention the demo "BitStretcher"by Tony Haines that got 5th place in 1K category of CodeCraft #1 which was using the nibble packing trick first.
V1.04-JL was released by Phlamethrower =>
Change: Added basic support for compressing Thumb binaries; if the bottom bit of the Exec address of the input file is set (representing an interworking branch into Thumb mode), CodePressor will now generate correctly an interworking branch from the (ARM-mode) decompression code into the Thumb payload. Future releases may include special Thumb versions of the decompression routines, to reduce their size.
Fix: Methods 4 and 5 would sometimes generate corrupt output, due to the compression code not being aware that the decompression code overwrites the first byte of itself.
Check here also
Change: Added basic support for compressing Thumb binaries; if the bottom bit of the Exec address of the input file is set (representing an interworking branch into Thumb mode), CodePressor will now generate correctly an interworking branch from the (ARM-mode) decompression code into the Thumb payload. Future releases may include special Thumb versions of the decompression routines, to reduce their size.
Fix: Methods 4 and 5 would sometimes generate corrupt output, due to the compression code not being aware that the decompression code overwrites the first byte of itself.
Check here also
I remember playing around with this, but then ended up writing an exomizer2 depacker in ARM assembly.
@Moerder: Sounds interesting ! Where can I find that ? Was it running on Risc OS ? How did it compare to CodePressor ?
Nowhere really, I'd have to dig it up. I used it to compress this.
So no it was not for Risc OS, nor did I write a custom compression tool. I compiled the program that was to run from RAM, ran it through objcopy to get the raw binary, then incbinned that at the end of the source code for the depacker which ran from ROM, all using tools that came with devkitArm, and an unmodified exomizer2.
Can't remember how it compared to CodePressor, I only remember playing around with it and then turning my attention to exomizer2 and aPLib.
So no it was not for Risc OS, nor did I write a custom compression tool. I compiled the program that was to run from RAM, ran it through objcopy to get the raw binary, then incbinned that at the end of the source code for the depacker which ran from ROM, all using tools that came with devkitArm, and an unmodified exomizer2.
Can't remember how it compared to CodePressor, I only remember playing around with it and then turning my attention to exomizer2 and aPLib.
Anyway, without rembering all the details, I'd expect CodePressor to win for really small binaries, exomizer2 as binaries get larger.
Ok, may be you can find the decompressor routine of your entry somehow or disassemble it and I can try to make that routine work on RiscOS and we'll see how it compares. You can find my email address also in most of my intros.
Kuemmel: Sent you a mail.
The earlier version says "binary has to be Untyped and start at &8100 or higher". I tried to compile org &8100, the same. Then I tried to change the type. Which type is untyped?
The latest version works though. It produces a binary that runs and I guess is untyped. But if I were to change type to absolute it will fail of course. But works as is. But the question is, what type is then and where is it executed? How does the OS handle when I click it? (but it works so far, just hope it doesn't break in other machines as I don't know what this is doing)
The latest version works though. It produces a binary that runs and I guess is untyped. But if I were to change type to absolute it will fail of course. But works as is. But the question is, what type is then and where is it executed? How does the OS handle when I click it? (but it works so far, just hope it doesn't break in other machines as I don't know what this is doing)
I tried Booster 1024 -> 807 byte (wow)
Then for fun I tried Plasm256 as I thought it would be pointless and make it bigger than smaller. Not this time: 256 -> 238 (shi)
The compressor seems to be 60-80 bytes, comparing some binaries that use same method.
But, for test I change type file to Absolute (which I shouldn't) and it works. But another one doesn't. So I'll leave it as is, but what is this invisible file type? I might lose it if I move from PC to RiscOS and not being able to set it manually.
Then for fun I tried Plasm256 as I thought it would be pointless and make it bigger than smaller. Not this time: 256 -> 238 (shi)
The compressor seems to be 60-80 bytes, comparing some binaries that use same method.
But, for test I change type file to Absolute (which I shouldn't) and it works. But another one doesn't. So I'll leave it as is, but what is this invisible file type? I might lose it if I move from PC to RiscOS and not being able to set it manually.
submit changes
if this prod is a fake, some info is false or the download link is broken,
do not post about it in the comments, it will get lost.
instead, click here !
This is basically the 'Crinkler' for Risc OS coded by Pervect/Topix in 2001. Unfortunately this didn't run on the latest versions of Risc OS/ARM SOC's. Thanks to Phlamethrower, this problem is solved now.
So get your copy of this free OS from here and start coding your intro on that magnificent ARM based operating system :-)
I'll try to update some of my old RiscPC 1 KByte intros one day with some proper commenting to give you a better start.