Heaven/TQA Posted March 4, 2015 Share Posted March 4, 2015 Can someone give me an advice? I saved memblock $1000 -$bc40 in Altirra and want to pack it with Exomizer in Tebe's Superpacker... I am not managing to get it packed properly for depacking? in memory block $5000 ff. is empty and can be used for "loading adress"? thx for help Quote Link to comment Share on other sites More sharing options...
pirx Posted March 4, 2015 Share Posted March 4, 2015 buuuuuuut what is the problem exactly? lack of memory? maybe you could split the data into few parts and load it under ROM? Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted March 4, 2015 Author Share Posted March 4, 2015 ok.... more precise... packed with exomizer the 44k block is packed down to 6kb... so where to set loading adress of exomizer? Quote Link to comment Share on other sites More sharing options...
MaPa Posted March 4, 2015 Share Posted March 4, 2015 It shouldn't matter.. just be sure to set depacker and buffer addresses outside the $1000-$bc40 block. Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted March 4, 2015 Author Share Posted March 4, 2015 Mapa... and what is the loading adress then? where the data file will be loaded by DOS? can this be in the depacked area? Quote Link to comment Share on other sites More sharing options...
pirx Posted March 4, 2015 Share Posted March 4, 2015 you can overwrite packed data - put it high in memory. Still you'd need some margin otherwise the packed data might be overwritten too soon. But with 6KiB only just put it under ROM. Quote Link to comment Share on other sites More sharing options...
MaPa Posted March 4, 2015 Share Posted March 4, 2015 (edited) Mapa... and what is the loading adress then? where the data file will be loaded by DOS? can this be in the depacked area? If you pack $1000-$bc40 then the default loading address is $1000 I think? I'm not sure, but it looks to me that exomizer adds routine for copying the packed data before decompresing so even if you load them at "wrong" place, it will move them somewhere safe and then depack. Exomizer decompres data from higher to lower memory I think. Edited March 4, 2015 by MaPa Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted March 4, 2015 Author Share Posted March 4, 2015 Mapa... yeah little confusing with loading adress... I managed to split it in 2 blocks... there is basicly code at loading-adress (you see it in the INI segment adress pointer) but I also need the depacker at default $400 ff. and if saving memory blocks... of course I needed to add RUN into the main procedure after depacking. Jac pointed out that saving complete "big block" instead of smaller junks helps to increase massive packing ratio with exomizer... so... fex... 12 KB code was packed down (each segment) to 9kb... while having the big memory junk (even filled with 00) exo packed it down to 6kb. Quote Link to comment Share on other sites More sharing options...
Stefan Both Posted March 4, 2015 Share Posted March 4, 2015 (edited) Even without knowledge regarding Atari programming. It sounds more than impressive. 44kb compressed down to 6kb size? Can it be real? I mean, on other platforms (i know better) I wold expect a max compression ratio of 50%. Stefan Edited March 4, 2015 by Stefan Both Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted March 4, 2015 Author Share Posted March 4, 2015 (edited) as I said... data and code is 12kb spread in memory... so there are a lot of zeors in the mentioned memblock... there is no magic here... when packing atari specific "loading segments" ($ff,$ff blocks) superpacker packs each segment separatly with exomizer... of course it is more likely to find packable patterns when the packing data is 44k instead of 512 bytes. Edited March 4, 2015 by Heaven/TQA Quote Link to comment Share on other sites More sharing options...
Stefan Both Posted March 4, 2015 Share Posted March 4, 2015 I see. Thanks. Stefan Quote Link to comment Share on other sites More sharing options...
+JAC! Posted March 4, 2015 Share Posted March 4, 2015 (edited) This is how I typically do it via a Make file: C:\jac\system\Atari800\Tools\ASM\MADS\mads.exe SillyMenu.asm -o:SillyMenu.xex %2 %3 // has ORG $2000 where the first opcode starts if ERRORLEVEL 1 goto :mads_error C:\jac\system\Atari800\Tools\PAK\SuperPacker\exomizer sfx $2000 SillyMenu.xex -t 168 -o SillyMenu-Packed.xex C:\jac\system\Atari800\Tools\ASM\MADS\mads.exe SillyMenu-Loader.asm -l -o:atr\files\%1 %2 %3 if ERRORLEVEL 1 goto :mads_error Full source: http://www.wudsn.com/productions/atari800/sillypack2k13/sillypack2k13-source.zip And (my every repeating usual advise), don't go below $2000 for anything you plan to load.Load >= $2000, move it where it belongs and then unpack. Note: And exomizer uses the stack starting at $100 for the actual unpacking routine. Edited March 4, 2015 by JAC! 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.