Disabling video memory

D

DaugWok

Hello,

I have a 9500 Non-Pro card which has been modified via the "resistor
trick", unlocking the 4 additional rendering pipelines and bringing the
performance of the card to 9700-levels.

However, a while back I was attempting to remove one of the memory
heatsinks I had applied earlier to the card, and in the process removed the
memory module with it :( Unfortunately, the BGA memory interface appears
to consist of 144 tiny solder points, something I have not a prayer of re-
attaching myself.

I assumed the card was a goner, as it displayed horrible artifacts for
obvious reasons. However, just a while ago I tried flashing the card with
a 64 megabyte 9500 BIOS, and now it works perfectly. My question is this:
Would it be possible for me to edit the BIOS so that the card will use the
112 megs of memory it still has? I only uprooted one module, so supposedly
the remaining modules are still in good working order. Any input is
greatly appreciated.

DaugWok
 
B

Ben Pope

DaugWok said:
Hello,

I have a 9500 Non-Pro card which has been modified via the "resistor
trick", unlocking the 4 additional rendering pipelines and bringing
the performance of the card to 9700-levels.

However, a while back I was attempting to remove one of the memory
heatsinks I had applied earlier to the card, and in the process
removed the memory module with it :( Unfortunately, the BGA memory
interface appears to consist of 144 tiny solder points, something I
have not a prayer of re- attaching myself.

I assumed the card was a goner, as it displayed horrible artifacts for
obvious reasons. However, just a while ago I tried flashing the card
with a 64 megabyte 9500 BIOS, and now it works perfectly. My
question is this: Would it be possible for me to edit the BIOS so
that the card will use the 112 megs of memory it still has? I only
uprooted one module, so supposedly the remaining modules are still in
good working order. Any input is greatly appreciated.

You're a vandal.

:)

I'd expect that the memory is mapped onto a linear space with an upper
limit. What you've probably done is pulled off a chip in the upper 64Megs
mapping... flashing with the BIOS for a 64Meg limits the address space and
gets rid of the chip. Do you now have some cool chips and some hot ones
(presumably one less cool one than hot ones :)

You could always try pulling off some more chips for an experiment - I
suggest the one from the other side of the board as a starting point. :p

It may be possible to utilise some extra memory, depending on where in the
address space there is a hole. Try comparing the 64Meg and 128Meg BIOSes -
if there is only a byte or two of difference, then post the value of the
bytes here and I'll see what I can suggest.

Ben
 
D

DaugWok

You're a vandal.

I know it :p
I'd expect that the memory is mapped onto a linear space with an upper
limit. What you've probably done is pulled off a chip in the upper
64Megs mapping... flashing with the BIOS for a 64Meg limits the
address space and gets rid of the chip. Do you now have some cool
chips and some hot ones (presumably one less cool one than hot ones
:)

I was afraid of this. So you are saying that the modules must be used in a
specific order, so that any modules "above" the missing one cannot be used?
You could always try pulling off some more chips for an experiment - I
suggest the one from the other side of the board as a starting point.
:p

Ok that's just mean. :)
It may be possible to utilise some extra memory, depending on where in
the address space there is a hole. Try comparing the 64Meg and 128Meg
BIOSes - if there is only a byte or two of difference, then post the
value of the bytes here and I'll see what I can suggest.

Unfortunately, I don't have the first clue how to do this. If you could
suggest a method, I would be more than happy to try it. I made the flying
leap in logic (and I may be entirely wrong) that if the board can be run
with only 64 megabytes of memory, that it can also be run with only 80, 96,
or 112. I could get by with 64 I'm sure, but in the interests of
anisotropic filtering/FSAA I'd like as much memory as I can get :p. Thanks
for the reply.

DaugWok
 
B

Ben Pope

DaugWok said:
I was afraid of this. So you are saying that the modules must be
used in a specific order, so that any modules "above" the missing one
cannot be used?

Yeah, thats what I'm saying. If it had some way of automagically
determining what memory was available it would have.

Are some of the memory chips cool now? i.e., not being used as they're
swiched off.
Unfortunately, I don't have the first clue how to do this. If you
could suggest a method, I would be more than happy to try it. I made
the flying leap in logic (and I may be entirely wrong) that if the
board can be run with only 64 megabytes of memory, that it can also
be run with only 80, 96, or 112. I could get by with 64 I'm sure,
but in the interests of anisotropic filtering/FSAA I'd like as much
memory as I can get :p. Thanks for the reply.

Well I don't know...

You managed to get hold of a BIOS... use that and an equivelent 128Meg
version and then use some file comparison software to check for differences.
I sugget finding a 128Meg and 64Meg version that are as close as possible to
do the comparison.

I would expect 4 continuous bytes to have a value of maybe, 80 00 00 00, on
one bios and maybe 40 00 00 00 on the other BIOS. If the BIOS are
compressed, you're fooked unless you know how to decompress them.

Ben
 
D

DaugWok

Are some of the memory chips cool now? i.e., not being used as
they're swiched off.

Hard to tell. They all have heatsinks on them, and they all feel "cool" to
me. As I understand it, BGA modules do not run very hot to begin with. If
it helps, dxdiag, sandra, and rivatuner all identify the card as having 64
megabytes of memory.
It may be possible to utilise some extra memory, depending on where
in the address space there is a hole. Try comparing the 64Meg and
128Meg BIOSes - if there is only a byte or two of difference, then
post the value of the bytes here and I'll see what I can suggest.

Can you recommend a program that will do this?
You managed to get hold of a BIOS... use that and an equivelent 128Meg
version and then use some file comparison software to check for
differences. I sugget finding a 128Meg and 64Meg version that are as
close as possible to do the comparison.

Well, the BIOS I am using is on this page:

http://www.3dchipset.com/bios/ati/warp11/index.php

It is the second one down. It looks as though the top one is the same,
only 128 megabytes.
I would expect 4 continuous bytes to have a value of maybe, 80 00 00
00, on one bios and maybe 40 00 00 00 on the other BIOS. If the BIOS
are compressed, you're fooked unless you know how to decompress them.

Ben

I don't know if they are compressed. They are both .BIN files, and they
both appear to be the same size (according to windows). If you can point
me to a program to compare these files, it would be a big help.

DaugWok
 
B

Ben Pope

DaugWok said:
Hard to tell. They all have heatsinks on them, and they all feel
"cool" to me. As I understand it, BGA modules do not run very hot to
begin with. If it helps, dxdiag, sandra, and rivatuner all identify
the card as having 64 megabytes of memory.

If they don't run hot, they don't need heatsinks...
Can you recommend a program that will do this?

Not used one for a long time. I'd suggest an open source one, they tend to
be quite good. Freshmeat tends to be a good place to start.
Well, the BIOS I am using is on this page:

http://www.3dchipset.com/bios/ati/warp11/index.php

It is the second one down. It looks as though the top one is the
same, only 128 megabytes.

Compare them two then.
I don't know if they are compressed. They are both .BIN files, and
they both appear to be the same size (according to windows). If you
can point me to a program to compare these files, it would be a big
help.

I don't know of any... I'm not gonna do the donkeywork for you.

I'll try to make sense of the results if/when you get some.

Ben
 
D

DaugWok

If they don't run hot, they don't need heatsinks...

Yeah, I know. I got overzealous about cooling the card a while ago, and
stuck sinks on all the modules. This is what got me into the trouble I'm
having now :p After that fiasco, I wouldn't dare try removing any more...
Not used one for a long time. I'd suggest an open source one, they
tend to be quite good. Freshmeat tends to be a good place to start.

Ok. I'm only being as persistent as I am in asking you this because I know
literally nothing about it. You are aware of the existence of such a
thing, which is one step higher on the knowledge ladder than me. :)
Compare them two then.

That's my thinking. I can only assume they are otherwise identical.
I don't know of any... I'm not gonna do the donkeywork for you.

I'll try to make sense of the results if/when you get some.

I understand. Again, I only ask because I know so little, and I thought
you might know of something offhand. I wouldn't expect you to go hunting
around the interweb on my behalf. :)

DaugWok
 
B

Ben Pope

DaugWok said:
Ok. I'm only being as persistent as I am in asking you this because
I know literally nothing about it. You are aware of the existence of
such a thing, which is one step higher on the knowledge ladder than
me. :)

I'm sure you're capable of using a search engine though.
That's my thinking. I can only assume they are otherwise identical.

Differences appear to be in the version string, shich is probably fairly
freeform. Starts at offset 82h and continues untill about 16Dh Basically a
hyphen and a space have been added and the rest of the string has been
shifted by them two bytes.

byte at offset 03144h is 19h on the 128Meg and 17h on the 64Meg

The differences are in the lower nibble, the bit patterns are: 1001 and 0111

What does that mean? I dunno. It doesn't look like a straightforward mask
or number representing the total addressable memory.

Lets take a step back:

There's 8 memory chips right? So presumably thats 8 x 16MB chips = 128MB...
There's a 4 x 64bit crossbar... so I'd expect it to have to use something in
multiples of 4. Thats probably where the 256bit memory bus comes from...
probably 64bit (data bus) memory chips used 4 at a time.

Personally I'd be happy that it still works at 64Meg, despite the blatent
abuse.

I doubt you'd be able to do anything with it, but it might be worth
attempting a hex edit to a value of 18h - halfway between the two, or maybe
some other bit pattern. Might get you a 96Meg card, might get you a broken
card. Not sure how you go about flashing it though. I'd expect if it
breaks it you'd be able to flash it again, but there are obviously no
gaurantees.

18h would get you a bit pattern of 00011000, which knocks off the first bit,
which is common to both bytes - it could be a flag in a register that could
control anything. It far more likely to be this than a value representing
the amount of ram on the card.

So assuming that, you have to ask yourself what the other 3 bits are...
they're toggled. Or are they a value of 3 and 4? or 7 and 8, including the
5th bit? Who knows.


The final byte, at offset CFFFh is FFh on the 128Meg and EFh on the 64Meg

The 9500 Pro BIOS I've seen ends in 2F, non Pros FF, 64Meg non Pros EF

So I guess the fnal byte is some form of description of R300 Variant.

To throw a spanner in the works, this does not seem true of the 9700 - I've
seen FF and E0 for pros... I suspect it's not important anyway.
I understand. Again, I only ask because I know so little, and I
thought you might know of something offhand. I wouldn't expect you
to go hunting around the interweb on my behalf. :)

Hmm...

Ben
 
D

DaugWok

Ok, I ran a difference checker on the two files, and it found 366
discrepancies. I started sifting through them and found that address
000001E7 contained a value of 64 (40 hex) in the 64 Meg BIOS file whereas
the same address contained a value of 128 (80 hex) in the 128 Meg BIOS. So,
I loaded the 128 Meg file up into a hex editor and changed the 80 to 60 (96
megabytes presumably). After flashing the modified file into the card, I
got horrid artifacting again. So, it appears that there is a lot more at
work here than just that value (and it appears you already know this).

Don't get me wrong, I'm tickled pink that the card works at all. I had
left it for dead a couple months ago, and only tried the flash last night
as a last resort. I do wonder if the memory is operating at 256-bit
anymore, though. Like you said, if the modules are 64-bit, each being
accessed 4 at a time then I may have lost the 256-bit interface. Also,
using a 9500 non-pro BIOS might prevent an otherwise capable 256-bit
interface from operating as such. Who knows? At any rate, it doesn't look
like I'm going to do any better, mostly due to my own ignorance :p. Thanks
for the input.

DaugWok
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top