Jump to content
geoffhaw

BSC Texture Index

488 posts in this topic Last Reply

Highlighted Posts

Posted:
Last Online:  
 

With the help from the following fine folk: cerulean, SimGoober, Vlakhaas, Caliban, GrampaAl, BigRedFish, pmiller19574, Pegasus and BarbyW, I think we have finally worked out how the base and overlay textures work with respect to the Instance Numbers and Wealth level settings. 

I'll try to explain the theory as I see it, but I'm more than open to having any errors/omissions pointed out. 

All texture files have a TGI of 7ab50e44 0986135e ????????, where the ???????? represents the individual Instance number of the texture. The instance number is a hex number 8 digits long. For example, 25a71002.  Furthermore, each individual texture is not just one Bitmap picture sized 128x128 pixels, but a series of five pictures, decreasing in size from 128x128 to 64x64 to 32x32 to 16x16 and finally 8x8.  

We now know the following: 

The first four digits 25a7 identifies the 'family' to which the texture belongs. 

The fifth digit 1 is a marker which refers to the wealth level of the lot in which the texture is used.  (More on this later.) 

The sixth and seventh digits 00 at present do not seem to have any significance that we have discovered yet.  Further testing may find out more about these digits. 

The eighth digit 2 represents the zoom level at which the texture is viewed in the game.

 

 

Now, going into more detail about the above points:

 

Eighth digit - zoom level 

On all the Maxis textures, a '0' in the eighth position represents the view of the texture in the game from the farthest distance away. (The 8x8 picture.)  1, 2, 3 and 4 progressively represent closer views, with 4 (the 128x128 picture) being the most detailed close-up. 

Some textures produced by Lot Builders have used the other available numbers (5 to f) here.  This does not seem to have had any detrimental effects in the game that we have noticed.  However, in every circumstance that I have seen, the range of numbers used have been sequential - i.e. 0 to 4, 5-9, a-e etc. 

So it seems that as long as the eighth digit for a texture has a sequential range of numbers, with the smallest representing the smallest Bitmap picture etc., the game works OK.  (More testing can and will be done on this, but it appears to be true.) 

Sixth and Seventh digits 

No info at present - see above. 

First, Second, Third and Fourth digits - Family marker (out of order, but for good reason) 

This groups textures into 'Families'.  These families are used by the Wealth marker below. 

Fifth digit - wealth marker 

This is the one that caused us a lot of pain!  Each Lot in the game has a Wealth level assigned to it.  There are four to choose from: None, §, §§ and §§§.  These are represented by the numerical values 0, 1, 2 and 3 respectively.  (I believe that if a lot has no particular Wealth Level specified in any exemplar, the game assumes it is level 0.)  Now, the part that took a while to work out...

 

Say we have a range of textures with the following Instance numbers: 

25a70000  (including the corresponding zoom levels 25a70001 etc.)

25a71000

25a72000

25a73000

25a74000 

Note: These are all in the same Family group 25a7.

 

In this case, a Wealth Level 2 Lot, using texture 25a74000 will never show texture 25a74000 in the game.  This is because the game will see the Wealth Level 2, and display the texture with a fifth digit which is also 2 from the 25a7 Family.  If texture 25a72000 did not exist, 25a74000 would show up properly. 

Conclusion: 

This rule applies for all Wealth Levels for both base and overlay textures.  The only way to avoid this happening is to not mix Wealth Level markers 0-3 with 4-f in the same family groups.  (An examination of the Texture Index shows that the standard Maxis textures follow this rule.) 

Share this post


Link to post
Share on other sites
Posted:
Last Online:  
 
Date:5/20/2004 8:07:21 PM
Author:geoffhaw

 

In this case, a Wealth Level 2 Lot is using texture 25a74000 will never show texture 25a74000 in the game.  This is because the game will see the Wealth Level 2, and display the texture with a fifth digit which is also 2 from the 25a7 Family.  If texture 25a72000 did not exist, 25a74000 would show up properly.

 

Conclusion:

 

This rule applies for all Wealth Levels for both base and overlay textures.  The only way to avoid this happening is to not mix Wealth Level markers 0-3 with 4-f in the same family groups.  (An examination of the Texture Index shows that the standard Maxis textures follow this rule.)

 

 

quote>

I lost it by the end of this message. I understood you till about here. Forgive me I am just a little slow at learning some things. Could you explain this a little diffrently. I am more of a graphical learner. LOL


make your dreams come true... dare to dream dare to be yourself and find your own way in this life then you will be free.

Sim Mars 3 Beta, LOTR Mod.

Share this post


Link to post
Share on other sites
Posted:
Last Online: A long, long time ago... 
 

Very good. I understand this well. Also I will bookmark this for future reference.

Now I don't know if this is the correct place, but I wish to hereby reserve the Family ba00 thru baff for the use of BLS and/or CSX.

I am already working on using numbers in this range.

Share this post


Link to post
Share on other sites
Posted:
Last Online:  
 
If I am reading this correctly, then someone with more creativity than me could easily make a set of 4 variations of one texture, assign them to the same family, with different wealth values, and have the texture rotate by lot wealth?  Similar to some of the grass textures by Maxis, that change at different lot wealths, correct?
 
Also, do we know how the none setting works?  Does this mean that there is no pre-assigned wealth level assigned to this lot, so the lot will assume the lot wealth appropriate to where it is in your city?  It's been my experience that this setting oesn't work with RCI plops; they need to be at the wealth level of their occupants.  Does that sound right?  Sorry if I got off subject.

Share this post


Link to post
Share on other sites
Posted:
Last Online:  
 
Quick question: What direction are digits counted from? In the examplem the ID 25a71000 is used. In that number, is the '2' digit 1, or is the last '0' digit one? Technically speaking, you count digits from the least significant to the most significant (least significant is the last '0', most significant is the '2'), but counting from the last '0', your article doesn't work, and counting from the '2', I think I still found a couple errors. Anyway, could you clarify this for me?

Share this post


Link to post
Share on other sites
Posted:
Last Online:  
 
holy hell!! LOL
 
Id just like to say that its Thursday night and i am as tanked as the Exxon vadeese and can't really comment on the insanity that has hit us with both goeffhaws discoveries and darkmatter's return, so I will see you all manzanas (thats tommorow for those that don't follow my humor)
 
So Good Night! and welcome back DM and, thanks geoffhaw!!!

Share this post


Link to post
Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     

    So many questions - but I did ask  lol. 

    Here we go, in no particular order... 

    DarkMatter 

    In my post I was counting from left to right, so digit 1 is the 2 of 25a71000.  I fully take your point about this being technically incorrect, a fact of which I wasn't aware of before you said.  Sorry about that!  However, at the risk of annoying the more technically minded people out there, I will stick to the convention of reading from left to right, as this is more readily understood by laypeople.

    I think I caused some confusion by giving two different Instance numbers as examples.  I have edited the original post so I only use Instance numbers from the same Family 25a7.

    Please let me know if you still think there are any errors in my post.

     

    pmiller

    What I am trying to say is that when the game sees a texture in a Lot, it initially only looks at the Family number part of the whole Instance number.  (In my example, 25a7.)  It then looks at the Wealth level of the Lot.  If it sees that the wealth level is 2 for example, it will look for a texture in Family 25a7 with a 2 in the fifth digit position.  In my example it will find 25a72000.  It does not matter if the Lot designer has chosen 25a74000 in the Lot Editor, the 4 will be disregarded in favour of the texture with a 2, in order to agree with the Wealth level of the Lot.

    The same will happen with all the Wealth levels.  25a70000 will be used for Wealth level 0, 25a71000 for Wealth level 1 and 25a73000 for Wealth level 3.  In every case a chosen texture 25a74000 will be superseded by the texture appropriate to the Wealth level.

    The only way to avoid this is to never create a texture with an Instance number with a 0, 1, 2 or 3 in the fifth digit position.  In this way, with a Wealth level 2 Lot, for example, the program will not see a texture with a 2 in the fifth digit position, and will stick to the intended 25a74000.

     

    GrampaAl

    Your request is noted!  There are no textures with ba as the first two digits of the Family numbers that I have found yet.  Those 256 textures are all yours!

     

    SimGoober

    You have perfectly described how Maxis does it! 

    With regard to your second point about Wealth level none, or 0, I am out of my league there.  Help anyone?

     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    Great job Geoffhaw!
     
    I would like to add that if anyone starts messing with the 6th and 7th digits, make sure you test those textures thoroughly. I sent both Geoffhaw and SimGoober an updated set of textures, the first batch, and they had different values in the 6th and 7th position so we might be able to use that to test what happens with those positions. That was the first update by the way, which was messed up because I was still thinking that I could use a 4 in the 5th position, which I can't.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    You can use a 4 (or a 5, or a 6, ...or a f) in the fifth digit position, as long as there is no texture with a 0, 1, 2 or 3 in the fifth position in the same Family!
     
    In fact, this is highly desirable if you want a texture that will not be affected by Wealth level.
     
    The Golden rule is that if you want a texture that changes with Wealth level, ONLY use 0 to 3 as the fifth digit in the same Family.  If you want a texture that is not affected by Wealth level, ONLY use 4 to f as the fifth digit in the same family.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    ahhH! excellent, I get that now!
    should I redo my texture pack and use 4-F in the 5th position to maximize #s?
     
    Also, we are definitely going to have to watch the STEX like hawks cuz if i have released 0xCA005001 and someone comes along and releases a texture with 0xCA002001...mine will be overwritten...
     
    EDIT :
    i am unclear now again, what the advantage might be of using 4-f in the 5th position?? I can't but different textures in the same family with different 5th positions can I? wont that just use the same texture over and over again? Well, I can test this tonight unless someone already has...

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    If you haven't uploaded the latest set of Textures you e-mailed me, that might be a good idea.  (Let SimGoober know!)  Once I've got the latest Dat file, it only takes a couple of minutes to download the Instance numbers into my Excel Index.
     
    With regard to your other point about somebody else using your ca?? range of Families, that is what the Index is for.  I have already reserved ba?? for GrampaAl.  We have to rely on the goodwill of all Lot makers to respect these reservations of course, but I don't think that that is too much to ask.  After all, there are in theory 65,536 Families to choose from!
     
    Let me know if you are going to renumber your textures.  I can then release the first revision of the Index to the world.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    Guess this is a good place to put this ...
     
    I reserve  FA for mine.

    make your dreams come true... dare to dream dare to be yourself and find your own way in this life then you will be free.

    Sim Mars 3 Beta, LOTR Mod.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    Date:5/21/2004 2:25:16 PM
    Author:geoffhaw

    If you haven't uploaded the latest set of Textures you e-mailed me, that might be a good idea.  (Let SimGoober know!)  Once I've got the latest Dat file, it only takes a couple of minutes to download the Instance numbers into my Excel Index.
     
    With regard to your other point about somebody else using your ca?? range of Families, that is what the Index is for.  I have already reserved ba?? for GrampaAl.  We have to rely on the goodwill of all Lot makers to respect these reservations of course, but I don't think that that is too much to ask.  After all, there are in theory 65,536 Families to choose from!
     
    Let me know if you are going to renumber your textures.  I can then release the first revision of the Index to the world.

    quote>

     

    Again, though, the question is whether they will work?

    If I use CA004000 through CA004004 as one texture

    and CA004005 through CA004009 as the next texture, are they going to overlap? I haven't tested this, but can do so tonight...

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    I'm pretty sure that using CA004000 through CA004004 as one texture and then CA004005 through CA004009 as the next texture will NOT work.  I haven't tested this, but my reasoning is as follows:
     
    The exemplar value 0x88EDC901 (and 902, 903 etc) controls the base/overlay textures for a lot.  This has 13 repetition values.  The 12th of these is either 8AB0C2EC for a base texture or EAB0C2E4 for an overlay texture.  The 13th is the Texture instance number, for example, 25a70000.  I think the game will look at these values, decide whether it is a base or overlay texture, and then look to see what texture family it is in.  It then looks at Wealth level of the Lot, and compares that value to the fifth digit of the Instance number in the exemplar.  If this is a different number, it will look for a matching fifth digit in the range of Instance numbers for that particular Family of textures.  If it finds a match, it will display that texture.  If there is no match, it will use the texture Instance number as found in the exemplar file
     
    After that, it will use the first five sequential instance numbers, i.e. 25a70000 to 25a70004.  It will then stop looking.  It will never get to 25a70005, even if it exists!
     
    (EDIT)  Further testing has found that this is not quite true!  See my post of 23/5/2004
     
    What will work, and this is what I was trying to say, if you have CA004000 through CA004004 as one texture, CA005000 through CA005004 as the next, and CA006000 through CA006004 as the following etc., these will show up OK.  (As long as there is no CA000000 or CA001000 or CA002000 or CA003000 as explained in the previous posts.)  This I HAVE tested, and it works.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    Ok now I understand. Thanks.
     
    We should make this decision as a team though because having different folks do it differently might cause problems. I am thinking that eventually I will want to get into using wealth levels.
     
    The question then is do we go for maximum textures or maximum functionality, or is it ok to use a combination of both?
     
    if I use 0xCA004000 through 0xCA004004 then I can not use 0xCA00 as a family that is wealth dependant in the future which is fine as long as we keep the IID index file correctly. This will allow for 12 textures to be created for each family. Under CA how many is that? Im not good at hex math.
     
    Anyway, that is essentially 12 times more textures right? which is good, but is it going to be confusing if I then use the 0xCA42 family as a wealth dependant texture? Or is this ok?
     
    Part of me thinks we should just stick with the maxis standard and have 1 texture per family, but we will run out faster.
     
    We probably don't need hard and fast rules for this, but some kind of standard SimTropolis / BSC Team suggested guidelines.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    Taking the CA?? Family as an example, there are 256 Families to choose from.  (CA00 to CAFF)  If you decide to only have non wealth dependant textures, you are right in saying that there are 12 variations for each.  (CA004 to CA00F).  This gives 3,072 different texture Instance numbers to choose from in the CA?? Family.  Of course, for every Family that you choose to make wealth dependant, you are effectively 'wasting' 11 textures, but that still leaves one hell of a lot left! 
     
    And that is just taking the Family ranges starting with CA.  There are 255 other combinations of the first two digits theoretically available.  Ignoring the fact that some of them have already been used, this gives a total figure of 786,432.  The maths is getting a bit silly at this point, but you get the idea.
     
    On top of that, we still have to investigate the flexibilty of the sixth and seventh digits.  (That is on my list of things to do lol.)  Maxis certainly have textures with numbers other than 0 in the sixth position, so there could well be the possibilty for more combinations to be found here.
     
    Having said that, you are right in what you say at the end of your post.  We need to have a reality check to see what we are dealing with here.  The problem, if we have one, is far from urgent - but it will not do any harm to think about it now.
     
    However, I don't want us to create a whole load of heavy-duty rules and regulations that will turn people off, and encourage them to do their own thing and possibly create conflicting Instance numbers.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    ok. I think i am going to redo the file tonight then. To conserve as much of the CAs as I can. I am already working on a second batch as well some of which will be wealth dependant, so I will see how that works. I think if we have a guideline it ought to be that you should use xxxx4 through xxxxF for your non wealth dependant textures and xxxx0 through xxxx3 for your wealth dependant ones. We should also probably get in the practice of marking which are which in the index you are keeping so we know not to use the other numbers...
     
    thanks again for all your hard work! Either way I will update my file tomorrow or Sunday at the latest.
     
    Have a good weekend!

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    I have an idea for better regulation and control over the use of instance id ranges. Its still not perfect, as there will always be those who don't use the system, but for those who do, this might be the best solution.
     
    It sounds like geoffhaw has a list going already of family id's and the people they are assigned to. The only way to have workable IID management is to centralize. Since mass centralization isn't really possible, maybe a looser form of centralization is possible.
     
    If geoffhaw maintains a simple list of the family id's in use, and by whom, I can integrate some new functionality into DatGen that will let people automatically track what ID's or family ranges are in use, and automatically exclude those from DatGen's ID generation utility. The list would have to follow a standard format, either be XML (probably the best way), or be something simple like a fixed-width delimited text file. If this list is keept online, at a standard location, UNCOMPRESSED (i.e. just a .xml or .txt file), DatGen could go out, download that file each time the program starts (if possible), and update the reserved ID rang list. The ID generation code will never use ID's in reserved ranges, and will discard and regenerate ID's that do fall within a reserved range.
     
    To make this work, we would need to find out what all the ranges that are used by Maxis for their textures are, and include them in the file. It should work pretty well, though, for those who use the system. For those who don't, well, either we deal with it, or we don;t use their stuff until they DO start using the system. Either way, at least it would give some kind of central control over ID usage.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online: A long, long time ago... 
     

    I like what Darkmatter says ...

    I suggest that Darkmatter and Geoffhaw work a way out to help control this and seeing that this is a BSC project we can publish widely on Simtrop that people who wants to do Custom Textures should work with Geoffhaw our Texture Keeper.

    If we find clashes from people who do not want to co-operate we will advise users of the fact the creation might trash other lots.

    It could be harsh words but if we want to regulate ourselves then we need to be consistent ... I am sure that the BAT Squad, Mod Squad and BSC members will gladly go this way because they will know that their creations are safe.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    Further to my post of 5/21/2004, I have done some more testing on the Eighth digit (the zoom value).
     
    The bad news (for me) is that I was wrong about it not being possible to have, for example, 15 textures with successive zoom values from 0 up to e.
     
    The good news (for everyone) is that it is possible!
     
    Whilst I was doing some work on the Index, I noticed that Pegasus has 3 different overlay textures starting with 1da4422a0, 1da442a6 and 1da442aa.  I thought that these wouldn't work, so I tested them and found that they were all OK.  I had assumed that the first texture (the 8x8 bitmap one) had to end with a 0.  This obviously isn't so.  The game must look at the first number for the 8x8 bitmap, then the next sequential number for the 16x16 bitmap, then the next...until it has all five bitmaps.
     
    Usually, and the all the standard Maxis textures do this, the first 8x8 bitmap is the 0 version.  But it seems that 8x8 textures ending in a 5 and a also work. 
     
    This potentially triples the number of textures available in a Texture Family.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    LOL I just uploaded the textures (fixed) V5! I am not gonna mess with the 8th digit. It was hard enough to streamline using the 5th digits at 4-F. hopefully darkmatter can figure a way to make the incrementation work so that you can get 0-4, 5-9,A-E in the 8th digit, and 4-F in the 5th digit for each family.
     
    Thanks though Geoffhaw! as I said hopefully that info will be used in the future!

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    The first version of the BSC Texture Index is attached to this post.
     
    This is very much the first effort, and as such I am very open to any comments about its appearence, usefulness or anything!
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    looks good to me! the color schemes help for sure, and the reserved notes on top should help...

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    looks good.

    make your dreams come true... dare to dream dare to be yourself and find your own way in this life then you will be free.

    Sim Mars 3 Beta, LOTR Mod.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    geoffhaw, I don't know if you want to maintain two lists, but I can't read an Excel file into DatGen. For me to read a file from the internet and load it into DatGen, it would have to be xml or simple text. So, if you do this Excel file thing, your gonna have to make two versions of the index.
     
    Now, I recomment XML, and here is why. XML is a structured document specification, so we can give the file some internal structure that makes sense. Also, XML has a sister specification, XSLT. With XSLT, we can transform XML into HTML on-the-fly, so if you have both files on your system, or if you open the xml file in a web browser from the URL, and the XSLT is at the same URL, users can see a nice, pretty, color-coded web page that indexes all the instance id's in use, by whom, what ranges are reserved, etc.
     
    I can also write a tool in DatGen to make it easy for you to manage the index, so you don't have to edit anything manually.
     
    Sound good?

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online: A long, long time ago... 
     
    Darkmatter .... you know that I like what you say ... 2.gif ... I am all for structure.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    DarkMatter, is the attached file OK for you to use?
     
    In it are all the Instance numbers that have been used.  My only worry is that I have not been able to record the ranges of Instance numbers that have been reserved, as this list would be far too long.  Is this something you can hard code in?
     
    The ranges are:
     
    All Instance numbers starting with ba,ca and fa.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    eehhh.....how about I design the Xml file. What you posted, no offense, is hideous. It's making me do this: 32.gif

    I'll design an xml file and structure, and write a tool in DatGen that allows management of this file, updating of it from the internet, etc.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    Ok, I tried.  Can you let me know what info you need to have, and in what format.  I think that we are all in favour of having Datgen 'filter' the Instance numbers allocated to new textures, but I feel that we will also need to have something a bit more visible outside of Datgen for people to see.
     
    If you can send me something that indicates what you are after, I'll change the appearance of the Index to suit.  From that, I should be able to convert it to an xml file.  I'll PM you my e-mail address.
     
     

    Share this post


    Link to post
    Share on other sites

    Sign In or register to comment...

    To comment in reply, you must be a community member

    Sign In  

    Already have an account? Sign in here.

    Sign In Now

    Create an Account  

    Sign up to join our friendly community. It's easy!  

    Register a New Account


    • Recently Browsing   0 members

      No registered users viewing this page.

    ×

    Thank You for the Continued Support!

    Simtropolis depends on donations to fund site maintenance costs.
    Without your support, we just would not be in our 24th year online!  You really help make this a great community. *:thumb:

    But we still need your support to stay online. If you're able to, please consider a donation to help us stay up and running. This helps sustain a platform where we can share our community creations for years to come.

    Make a Donation, Get a Gift!

    Expand your city with the best from the Simtropolis Exchange.
    Make a Donation and get one or all three discs today!

    STEX Collections

    By way of a "Thank You" gift, we'd like to send you our STEX Collector's DVD. It's some of the best buildings, lots, maps and mods collected for you over the years. Check out the STEX Collections for more info.

    Each donation helps keep Simtropolis online, open and free!

    Thank you for reading and enjoy the site!

    More About STEX Collections