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 > Exmoizser and Mem trash RAM?
2016-11-30 11:47
oziphantom

Registered: Oct 2014
Posts: 490
Exmoizser and Mem trash RAM?

I'm using the mem option, and the depack routine provided in the src of exomizer.

The data is from BB28-DF40 I set the load address to 1000 like so
exomizer mem -l $1000 -o drop64BitmapMem.prg  dropzonebitmap.prg

However it seems the Exomizer then wants to clear all RAM between 1000-BB28 when it depacks, which trashes the depacker. How do I stop it?
2016-11-30 12:28
oziphantom

Registered: Oct 2014
Posts: 490
If I set the load to $a000 it still does it.

Since my unpack code is at 4000, the memory clear stops there when it trashes its own code.
2016-11-30 13:25
iAN CooG

Registered: May 2002
Posts: 3193
Try adding -c to the exomizer commandline and enable LITERAL_SEQUENCES_NOT_USED = 1 in exodecrunch.s, sometimes literal seq make it bugs. It's unrelated to your problem btw. I tried a quick test and works, only memory bb28-df40 gets unpacked and no other memory is overwritten.
2016-11-30 13:38
lft

Registered: Jul 2007
Posts: 369
If you are decrunching into colour ram, here's a gotcha that I ran into a while ago:

For efficiency, many cruchers work from high addresses to low addresses. Suppose the original, uncompressed data contains e.g. "00 01 02" at address cff0 and "00 01 02" at address d800. It might happen that the decruncher writes "00 01 02" at d800 first, and then tries to copy that over to address cff0. But it will read back as "f0 f1 f2" (actually the high nybble would contain bus noise). So that's what gets written at cff0.
2016-11-30 13:46
iAN CooG

Registered: May 2002
Posts: 3193
Ah, I assumed that he intended to unpack after setting all ram (lda #$38 sta $01)
2016-11-30 14:35
oziphantom

Registered: Oct 2014
Posts: 490
Yes the unpack from $1000 upto BB28 is done with All RAM as it is under I/O & D800, although that is a nice quirk you found lft.

iAN did you do a mem depack or the sfx ?
2016-11-30 14:42
iAN CooG

Registered: May 2002
Posts: 3193
mem of course, here is my quick test
https://www.dropbox.com/s/tf3vsrdtvsqv6iv/exotest.rar?dl=0

test.prg is the test data, randomly prepared from some tunes and ranging $bb28-df3f

t.bat crunches the prg and compiles the exotest.s to exotest.prg, all mem is filled with $ea to check after it finishes that nothing else gets written to.

the test.exo gets linked at $1000, code is at $4000, like you are trying to do. Everything works as expected.

What I suspect is that your original data isn't exactly ranging as you said.
2016-11-30 14:55
Flavioweb

Registered: Nov 2011
Posts: 463
I guess if you set start address with -l at $1000, and your data starts at $bb28, exomizer fills $1000-$BB27 with $00.
Is normal exomizer behaviour... like if you pack more chunks of data, at different addresses: exomizer fills the ram in the middle with $00...
2016-11-30 14:59
iAN CooG

Registered: May 2002
Posts: 3193
-l <address> adds load address to the outfile, using "none" as <address>
will skip the load address.

it's just the load address of the crunched data, it only affects the 1st 2 bytes of the generated file in other words.
you can even skip it by using -l none, and then include the file with incbin which doesn't use a load address but includes every file as raw.
*=$1000
incbin test.exo

same result.
2016-11-30 15:40
oziphantom

Registered: Oct 2014
Posts: 490
iAN test works the same on my setup..
I've switched to Byteboozer, but that won't work in the end. So tomorrow ( well today its 2:30am here ) I will switch back to exomizer and see what I see. Well if I can get the 2nd file loading, first one loads, 2nd one Krill's loader just sits waiting on $dd00 I must be trashing something it wants somehow..

Thanks for the help guys.
2016-11-30 19:04
iAN CooG

Registered: May 2002
Posts: 3193
what? my test works, how can it be possible that bugs for you? or do you mean "works correctly also for me"? =)
2016-11-30 19:43
chatGPZ

Registered: Dec 2001
Posts: 11386
mein luftkissenboot ist voller Aale
2016-12-01 04:57
oziphantom

Registered: Oct 2014
Posts: 490
Solved the loader issue, seems a
lda dd00
and #252
sta dd00
doesn't count as a non-arbitrary dd00 write in the Krill loader's eyes and I needed to add the idle bus lock feature.

So Exomizer
Running iAN's test prg worked ( I'm using ICU=64 Vice 2.3 so I can see what the depacker is doing more easily, but 2.3 anything can and will happen, so it was a needed test of my setup )

Putting iAN's know working exo file into my d64 and it still trashes RAM... Thus my code is to be at fault... ( I "ported" the decrunch to Tass64 ), nope it is fine....

Something was trashing a byte in the "decrunch_table" which is what caused it to at the end of the decrunch to just march through RAM...

Thanks for the test cast iAN, made it a lot easier to track down.

Oddly Groepaz it's the inverse case, in that you're the euros and I'm not XD
2016-12-01 09:08
JackAsser

Registered: Jun 2002
Posts: 2014
When working with fast loaders, never ever read, mask, write dd00/02 to set vic-bank. Always do direct writes following the recommended protocol of the loader.
2016-12-01 10:59
oziphantom

Registered: Oct 2014
Posts: 490
Do you know where Krill define what you can/should write to DD00?
2016-12-01 13:35
chatGPZ

Registered: Dec 2001
Posts: 11386
dont touch dd02, write 0-3 to dd00
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
REBEL 1/HF
Mike
Stratford/Xenon
Walt/Bonzai
lA-sTYLe/Quantum
sln.pixelrat
4gentE/ΤRIΛD
Inge/HVSC
iAN CooG/HVSC
LightSide
zscs
The MeatBall
t0m3000/hf^boom!^ibx
𝘁𝗡𝗚/FairLight
Hairdog/BOOM!^Dream
katon/Lepsi De
Guests online: 129
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 No Listen  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Original Suppliers
1 Derbyshire Ram  (9.7)
2 Fungus  (9.3)
3 Black Beard  (9.2)
4 Baracuda  (9.2)
5 hedning  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.051 sec.