Jump to content
CorinaMarie

CoriBoom Partial Mythbusting - Building Style Tilesets Not Locked Down in the EXE

131 posts in this topic Last Reply

Highlighted Posts

  • Original Poster
  • Posted:
    Last Online:  
     

    If anyone has any idea at all how to even determine what tileset is currently active I can definitely make it a news item that would fade away when the next one kicks in. That part is simple Lua coding. It's where to get the data while in the game for what is active that might be the hard (or impossible) part.

    I've never tried any EffectDir modding so I've no idea what can be done with it. Are we saying there's a possibility it could know about which tileset is active?

    • Like 2
    • Yes 1
    • Thanks 1

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


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

    O.M.G.

    @Cyclone Boom spent the day working on the lots I need to fully test the new tilesets settings. I was greeted with the full 32 (24 new today) and I've tested them all growing each in their own tilesets. Just a sneak peek for y'all now. I'll make a better presentation when I'm not so tired. *;)

    7010-2399.jpg

    ^ Showing 0x2005 to ox201F.

    *:)

    • Like 9

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


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

    That looks very promising! (And to publicly confirm the testing I did in an existing large city with a full plugins got a building on x2008 to grow)

    As for the effectdir. I could have sworn I saw something years ago about it being part of the auto pause and auto goto in disasters, which might mean it knows what is going on at the game level, but I cannot find anything about that.

    The most comprehensive stuff I can find on it now is here: https://www.wiki.sc4devotion.com/index.php?title=EFFDIR so the whole idea might just be a red herring.

     

    • Like 3
    • Thanks 2

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    8 hours ago, mattb325 said:

    It seems like getting the game to recognise the radio buttons as working and effective is certainly something for simmaster07 and his dll knowledge.

    Otherwise (and again, this is well beyond anything that I can mod...my skills are at best basic-intermediate) perhaps another line of thought could be using the effectdir entries, which is similar to the stuff that xannepan did with the weather mods and the NAM hole/diggers and raisers that disappear after plopping.

    So for instance, you plop a 1x1 lot from a menu and that triggers the x2008 (etc) tileset; when you demolish that lot, the x2008 tileset is turned off. All the while, the in game tilesets (Euro/Houston/NY/Chicago) are still ticking away in the background.

    Just thinking out loud.....

    Ordinances don't seem to do any good. 

    So far, the easiest method I've found is to create a tileset controller using all available sets, with the one I want to focus on in the lead position. In the controller files, I have set the Tract Developer Years Between Styles to 100 (0x64). At any point in time, I can click Build All Styles to allow all tilesets to grow at once. The years between styles property can likewise be changed in-game. But different controllers don't want to play nice together. I still need to see how the game reacts to the absence of a controller, or a rearranged controller. 

    My full controller file includes all known BSC OGs for Residential & Commercial buildings. That saves having to identify, organize, and then modify the same number of buildings, while providing a wide range of content. With SG's creations alone, all 8 stages of vanilla growth are possible, along with some early CAM stages. I also have a noticeable amount of SG Industrial Anchors growing. But I need more time to study what's going on exactly. It could be that I just have an obscene amount of SG Industrial plugins compared to other creators. 

    I do consider myself a fairly advanced-level player. But being able to use this mod effectively as it's intended is going to require a level of patience I just don't have. 

    The PIMX release version does not allow for changes made to the Occupant Groups line other than removing Maxis tilesets or adding CAMelot OGs, but you can't easily see the building in Reader to know what you're looking at. So you'll need both programs running to handle the process manually. If there is a way to automate the process, then only identifying and organizing the lots you choose for each new building style is important. How that automation is designed will determine whether DatPacked files are all processed or not, including any lots downloaded as a single dat, so some files may still have to be altered manually. 

    By the time you have organized your files in such a manner, you are ready to use StartUp Manager, without any file modifications or any further complications regarding game save files. 

    There's quite a big gap here between possible and viable. And there will be a huge learning curve for anyone trying to make use of this mod. 


    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


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

    It may be a bit more obscure, as it's hosted on SimCityKurier, a German (I think?) SC4 site, but StartUp Manager may be worth looking at. Even when all the kinks are worked out of this mod, StartUp Manager still has the huge advantage of not allowing files that aren't selected for use to be loaded, speeding up loading times and decluttering menus. 

    Granted, the files chosen in SUM are intended to be for an entire region, as opposed to individual cities, and this mod will still likely prove to be the better option for customization on a city level. I see no reason why both can't be used together. 

    SUM is still pretty cool for it's region creation and information features. 

    • Like 3

    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    8 minutes ago, xxdita said:

     StartUp Manager may be worth looking at

    I've never heard of this before. It sounds awesome.

    I wonder how many external programs work with SC4 that we don't know about?

    If I made a Nutshell guide to external programs, could I crowdsource listings from everyone as to what's available? Because as a Mac user, there's like 2, and I simply don't know about the rest. [Edit: That is, all the other programs available for Windows, or other OS.] But I think it would be good to have all of them listed in one place, with a short description of what they do.

    • Like 1

    Level 3 is a city, Level 4 is a community.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    1 minute ago, c4bl3fl4m3 said:

    I've never heard of this before. It sounds awesome.

    I wonder how many external programs work with SC4 that we don't know about?

    If I made a Nutshell guide to external programs, could I crowdsource listings from everyone as to what's available? Because as a Mac user, there's like 2, and I simply don't know about the rest. But I think it would be good to have all of them listed in one place, with a short description of what they do.

    I'm sure that you will get volunteers to add entries to any list you choose to start. But I have no idea if SUM works on MACs, unfortunately. 


    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    Just now, xxdita said:

    But I have no idea if SUM works on MACs, unfortunately. 

    Oh, I'm not talking about making a list for Macs specifically. (I can see where you might of thought that. I wasn't clear. My bad!) I'm talking about making a list for all OS, and putting what OS(es) they work on.


    Level 3 is a city, Level 4 is a community.

    Share this post


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

    It would probably be a really good idea to make such a list, with updated links. I had to go through a few dead links to find it myself. 

    There is also a ton of other really great content available at SimCityKurier as well, for anyone that isn't familiar with it. Andreas has been basically an ambassador between sites, along with his many other roles in the community throughout the years. 

    • Like 1

    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 2/8/2020 at 1:33 AM, xxdita said:

    At any point in time, I can click Build All Styles to allow all tilesets to grow at once.

    Woah... You got the Build All Styles setting to work? Really work??? I've never heard of anyone having success with that, so please go into more detail about how you fixed that bug. Was it your modded controller that did it?

    • Like 2

    -- Jeff Fisher ><> Vancouver WA
    "I may be pissing into the wind, but if I keep my enemies behind me and aim carefully, I can still rain on their parade."

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    On 2/8/2020 at 4:33 AM, xxdita said:

    At any point in time, I can click Build All Styles to allow all tilesets to grow at once.

    4 hours ago, jeffryfisher said:

    I've never heard of anyone having success with that, so please go into more detail about how you fixed that bug.

    Count me in here too! I'd like to know how that was accomplished because @11241036 conclusively showed it did not work in his "Build all tilesets at the same time" command does not work topic.

     

    • Like 3
    • Yes 1

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


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

    Nope. That was a big assumption on my part, taking for granted stuff in the game might work as it says. 

    Even seeing it for myself, I still don't believe it. I'm floored. 

    Changing the number of years between styles seems to work, at least. Is this a new bug with the digital editions or has it always been like this? So odd. 


    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    28 minutes ago, xxdita said:

    Is this a new bug with the digital editions or has it always been like this?

    When I assisted Numbers with his test project (in the linked thread), I was using the disc version of the original updated separately to RH (which is what I still use on my main game comp). So, the bug was there in the original releases too.

    • Like 1
    • Thanks 1

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


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

    I've pulled these from the other thread so we don't sidetrack it. *;)

    19 hours ago, xxdita said:

    I haven't removed anything from any of the SC dats, .. I can understand taking them out briefly, to make whatever changes you like, or even flat-out replacing them, as opposed to DatPacking overrides. And certainly for testing the external loading. (You have a thread for that, btw?)

    What CB and I are doing having completely removed all of the Lua from SC_1.dat (except for the Lua stubs needed) and then calling them externally is even more esoteric than the TileSet modding, so no, there isn't thread for that. And we are still in the process of figuring out what we can do with the four separate areas of memory we've discovered. (One of them is at the region screen level so I have great interest in seeing if we can do anything creative and/or useful there.)

     

    19 hours ago, xxdita said:

    I also think a set of counter lots to track what's growing could be useful, like RippleJet's CAMelot Counters, custom query, LUA, the whole shabang. OH!!! YES!!!! That's the answer to your question of how to tell what TileSet you're on. And probably that other guy's solution for the STAMP thing. For you, it's set up the reward LUAs. For him, it would be to have those same LUAs unlock the new era Plops (maybe lock the last era too? You'd know more about LUAs than me, probably).

    This sounds very exciting, but I confess I'm not at all sure how I'd know when a new TileSet was active or not. If you can provide more details, that'll help me understand the significance of your idea.

    • Like 4
    • Thanks 2

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    39 minutes ago, CorinaMarie said:

    This sounds very exciting, but I confess I'm not at all sure how I'd know when a new TileSet was active or not. If you can provide more details, that'll help me understand the significance of your idea.

    It's the reverse logic of using BSC OGs as building styles. Now you use the tileset hex as its own custom OG. They're both in the same line, and the game doesn't know what to do with custom values until you give it marching orders. 

    So you have to tell the game to pay attention, via LUA, which could then trigger either an advisor popup or unlock a reward lot created with a new custom query. You'll probably understand better by looking at BSC Essentials in Reader, vs me trying to explain it. 

    • Like 1

    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    1 hour ago, CorinaMarie said:

    I've pulled these from the other thread so we don't sidetrack it. *;)

    What CB and I are doing having completely removed all of the Lua from SC_1.dat (except for the Lua stubs needed) and then calling them externally is even more esoteric than the TileSet modding, so no, there isn't thread for that. And we are still in the process of figuring out what we can do with the four separate areas of memory we've discovered. (One of them is at the region screen level so I have great interest in seeing if we can do anything creative and/or useful there.)

    Thanks for the cleanup. Sometimes one thought triggers another, and it's just easier to type it all out in one place, than to go back digging up the right threads. Generally, it's all related in some manner, as the game is quite circular, or part of an ongoing conversation with the same person/people. 

    Back on point: Ok, so it's more of a game performance thing? Interesting. I'm curious as to how the 64bit for Aspyr will play out, but since the MAC version has historically been buggy, I don't have high hopes. Luckily, the game seems to work fine for me on Win10. 

    Regional play has always seemed like it would be the last uncharted frontier of the game. There's only so much we have access to via exemplars. 

    • Like 2

    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


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

    Coming Soon...

    Building Styles UI - Added 32 Tilesets - Preview.png    


    This will only be for visual use as a proof of concept. The actual functionality of the custom tileset toggles will likely require other forms of advanced modding, such as though a masterful DLL which provides the necessary integration. *;)


    While today I worked on creating the above, Cori has been busy creating Building Development Simulator (BDS) files to develop a demo test region. This has been allocated with tiles for all 32 tilesets containing our test lots, and each saved and pixel positioned identically for ease of comparison. All these individual cities have the current tileset activated, which means just any from that set are assigned to develop. Altering this is possible from editing the hex data in the saved file directly.

    Here's a preview of the region:

    TileSets Demo Region - Top 32 Tiles.jpg

    (The 4 Medium sized tiles will form part of the explanation in due course, and the Large tile will be where all 32 tilesets are all grown in the same city.)


    And a sample from the 0x201A tile:

    TileSets Demo Tile - 0x201A.jpg

    (In the UI panel there is the current tileset checked and highlighted.)


    Again, just to clarify how these custom toggles are not functional at present.

    The standard 4 Maxis tilesets still will be available to use from this expanded panel, but the idea is just as a base framework to present the potential possibilities. Most importantly, the major new advancement is custom tilesets can be enabled in both new and existing tiles. This can be done by adding one of the BDS files with any combination of the 32 tilesets enabled for a new tile, or editing existing cities for the hex data and adjusting as necessary.

    This editing needs to be done absolutely precisely as the data format expects. It certainly has in mind for the advanced player willing to give this a go, and so we'll be emphasising it's the best what is possible for now. Cori will explain about the complete series of steps, along with many more details presenting the full picture in due course.

    We're making excellent progress though, so we just thought you'd all like to see what we've been busy with. *:)

    • Like 6
    • Yes 1
    • Thanks 1

    Quick Links

    “SimCity 4 is not just a game, but a tool driven by our own imagination and creativity.”

    Buy me a coffee

    Share this post


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

    Hopefully whoever takes on the dll modding to get the new buttons to function will take a look at the Build All Styles At Once button as well. 


    BSC Custodian, SC4D staff, & LEX Admin

    BSC LEX Superior Collections: high quality content, one click away

    Share this post


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

    so soon we can make tilesets for specific architectures? this is great, we could use this for certain styles like mid century modern buildings like MattB makes.

    • Yes 2

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    23 hours ago, xxdita said:

    Hopefully whoever takes on the dll modding to get the new buttons to function will take a look at the Build All Styles At Once button as well. 

    Sure, it'd be nice if that could be looked at. Having the option to allow all active tilesets to develop simultaneously would be really useful. But, ofc, it's not needed as a prerequisite to shift the added custom tilesets mod from being usable by a handful of techy modders to a mainstream one which could be enjoyed by everyone.

    I'm hoping for the least work intensive DLL coding it would take to accomplish the initial goal. Should the latter part be doable too, that'd be icing on the cake. For now I'd be extremely happy with just the cake itself. *;)

     

    1 hour ago, avenumaster said:

    so soon we can make tilesets for specific architectures? this is great, we could use this for certain styles like mid century modern buildings like MattB makes.

    Indeed. This is already possible with what CB and I can do right now. *:)

    And what I really like about this mod, is one doesn't have to shuffle blockers in and out of Plugins to have selected buildings sprout up. Any that are in the extended tilesets can stay put in Plugins and yet will only grow when enabled by the active tileset(s) code. Ofc, that right now part requires a wee bit of hex editing in the save game data file in between saving a city tile, quitting, hex tweaking, and then reloading the game. I'm still working on a tutorial for that so anyone who wants to give it a whirl can try it for themselves.

    • Like 5
    • Yes 1
    • Thanks 1

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


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

    This will be a complete game changer. At this point it seems that the only things that won't be editable are base networks, tunnels, and mixed purpose lots (unless someone is willing to disprove those too...)

    • Like 2

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 2/20/2020 at 12:55 AM, Wiimeiser said:

    This will be a complete game changer. At this point it seems that the only things that won't be editable are base networks, tunnels, and mixed purpose lots (unless someone is willing to disprove those too...)

    i hope to god that mixed purpose lots will be a thing down the line. always wanted residential with retail, and the like.

    • Yes 1

    Share this post


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

    I've been away for quite some time, but I thought I'd pop in here and see where I can help with my experience of the savegame editing.

    I'm not sure if I understand everything that's going on here - I've read the entire thread, but not everything is clear to me - but as I understand, @CorinaMarie, you're currently changing the tileset by changing it directly in the Savegame, is that correct? Can I ask how exactly you're doing this without recalculating the CRC checksum manually in that 2990C142-299B2DB1-00000000 file?

    I assume that you decoded the format of cSC4BuildingDevelopmentSimulator somehow, so if you could explain the format to me then I could modify my command line tool to provide a command that does it automatically for you, without manual hex editing. I can imagine this would be useful for testing.

    EDIT: Looking at your post I think I will be able to decode it, I'll give it a try. Still I wonder how you're able to update the checksum in the Reader though.

    Additionally, in this thread I've encountered a few times that we need a possibility to batch update the OccupantGroups of an entire folder of lots. Actually my command line tool is already able to do this. Although I did not explain it explicitly in my savegame editing thread, the tool exposes a command called "tileset":

     

    SC4 tileset --help
    Usage: tileset [options] [dir]
    
    Set the tilesets for all buildings in the given directory
    
    Options:
      -b, --block      Block all buildings from growing
      -C, --chicago    Set the Chicago tileset for all buildings
      -N, --ny         Set the New York tileset for all buildings
      -H, --houston    Set the Houston tileset for all buildings
      -E, --euro       Set the Euro tileset for all buildings
      -r, --recursive  Scan directories recursively
      --force          Force override the files
      -h, --help       output usage information

    I use this myself to either block buildings, or change the tileset of buildings that reside in a certain directory. Currently it's only possible to set the existing 4 tilesets, but it should be trivial to allow you to set any hex value you want. Have a look at how it's implemented here and here.

    Let me know if I can help you with this!

    • Like 6

    Visit www.growifier.com for ploppable residentials

    Love playing hearts and other card games? Have a look at www.whisthub.com!

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    2 hours ago, smf_16 said:

    I use this myself to either block buildings, or change the tileset of buildings that reside in a certain directory. Currently it's only possible to set the existing 4 tilesets, but it should be trivial to allow you to set any hex value you want. Have a look at how it's implemented here and here.

    I think that was the tool that people were looking for! *:party:
    I understood that, with it, we can put information on all (or a subset) of our RCI plugins that they belong to a new tileset called "Only Non-Maxis buildings" or "Only mattb325 buildings". It is? *:???:

    • Like 1
    • Yes 2

    "Nenhum sucesso no mundo compensa o fracasso no lar." - "No other success can compensate for failure in the home."
    Como fazer da sua família um time de sucesso! - How to make your family a successful team!
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    26 minutes ago, carlosmarcelo said:

    I understood that, with it, we can put information on all (or a subset) of our RCI plugins that they belong to a new tileset called "Only Non-Maxis buildings" or "Only mattb325 buildings". It is? *:???:

    Yes, that is correct.

    In fact it reads all DBPF files in a directory, looks for all "OccupantGroups" props and then changes them so that they only include the tilesets that the user has specified. You can take a look at the code, even for non-programmers it should be possible to understand what is going on.

    So, for example, if you'd put all of mattb325's buildings in a folder and then run 

    SC4 tileset --euro --force  "path/to/directory"

    it modifies all files so that they only grow on the Euro tileset. As I said, it's trivial to modify the code to include custom tilesets. If you want to assign a custom tileset to mattb325's buildings, say "0x00002004", then it's only a matter of setting that value instead of "0x00002003", which is the Euro tileset.

    • Like 6

    Visit www.growifier.com for ploppable residentials

    Love playing hearts and other card games? Have a look at www.whisthub.com!

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    58 minutes ago, smf_16 said:

    You can take a look at the code, even for non-programmers it should be possible to understand

    Thank you. I was a programmer in the past, but I have difficulties understanding something like "return !(Style.Chicago<=style&&style<=Style.Euro);" I think I was always a non-programmer! Hehehe! *:lol: Believe me: I trust you even without reading the code. *:ohyes:

     

    58 minutes ago, smf_16 said:

    then it's only a matter of setting that value instead of "0x00002003", which is the Euro tileset.

    I really liked that idea. But I'm going to wait for @CorinaMarie 's experiments to evolve to test this because now I don't have much time. My wish is to leave many non-Maxis buildings to grow for 50 years and only then "release" the Maxis buildings from appearing. I believe that this way I will have cities and buildings with greater variety. *:thumb:

    • Like 2

    "Nenhum sucesso no mundo compensa o fracasso no lar." - "No other success can compensate for failure in the home."
    Como fazer da sua família um time de sucesso! - How to make your family a successful team!
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    2 minutes ago, carlosmarcelo said:

    Thank you. I was a programmer in the past, but I have difficulties understanding something like "return !(Style.Chicago<=style&&style<=Style.Euro);" I think I was always a non-programmer! Hehehe! *:lol: Believe me: I trust you even without reading the code. *:ohyes:

    I have to admit I had to read that "return !(Style.Chicago<=style&&style<=Style.Euro);" a few times as well before I remembered what it was doing. *:lol:

    • Like 1
    • Haha 2

    Visit www.growifier.com for ploppable residentials

    Love playing hearts and other card games? Have a look at www.whisthub.com!

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    7 hours ago, smf_16 said:

    I can help with my experience of the savegame editing.

    Oh, yes! That would very much help. *:ohyes:

     

    7 hours ago, smf_16 said:

    I understand, @CorinaMarie, you're currently changing the tileset by changing it directly in the Savegame, is that correct? Can I ask how exactly you're doing this without recalculating the CRC checksum manually in that 2990C142-299B2DB1-00000000 file?

    Magic! *;)

    Seriously tho, I'm simply using Reader 0.9.3 to edit and re-save the city tile. I believe that particular exemplar is not subject to the CRC check like the other parts you've been tweaking. The part about changing or adding tileset OGs in the Tract Developer Available Styles 0x47E2C550 (in my first post) only applies upon city tile creation (naming it) and then saving. After that, that one is ignored and the 2990C142-299B2DB1-00000000 in the game save file takes over for subsequent loading of the city.

    I'm sure the underlying structure of that game exemplar is in bytes, words, or dwords format, but I only know it in pure hex. When set in the Available Styles for one single tileset the length of the game exemplar is 35 bytes. Byte one is the size of the exemplar (in hex) so it shows 0x23 when there is one tileset enabled. Bytes 2 thru 23 inclusive (counting in decimal for their position) are unknown to me for what they do, but leaving them however they are works fine. Then byte 24 is the count of how many tilesets are enabled. For each additional tileset enabled, the first byte increases by 4 and it seems likely that a full dword is being added to record the tileset hex number. Bytes 31 thru 35 are also something I leave alone for their value. When adding tilesets these last 4 bytes always scoot over to remain the last 4 of the exemplar.

    Here are the hex codes when there is one single tileset. Each one being incremented from the prior:

    T.Set     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
    ------   -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    0x2000 = 23 00 00 00 9C 5E 78 D7 1C B0 7E 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 00 20 00 00 01 00 00 00
    0x2001 = 23 00 00 00 7C A8 E2 96 1C B0 22 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 01 20 00 00 01 00 00 00
    0x2002 = 23 00 00 00 09 E5 B5 51 1C B0 95 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 02 20 00 00 01 00 00 00
    0x2003 = 23 00 00 00 B0 36 4E 0E 1C 3E 2F 04 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 03 20 00 00 01 00 00 00
    0x2004 = 23 00 00 00 49 9E BA 7E 1C B0 8A 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 04 20 00 00 01 00 00 00
    0x2005 = 23 00 00 00 BF F6 38 43 1C B0 31 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 05 20 00 00 01 00 00 00
    0x2006 = 23 00 00 00 AF 2F 48 ED 1C B0 81 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 06 20 00 00 01 00 00 00
    0x2007 = 23 00 00 00 84 A0 AD 52 1C B0 46 05 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 07 20 00 00 01 00 00 00
    0x2008 = 23 00 00 00 3E 75 C8 D3 1C B0 18 04 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 08 20 00 00 01 00 00 00
    0x2009 = 23 00 00 00 B5 EB 8C C7 1C B0 7C 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 09 20 00 00 01 00 00 00
    0x200A = 23 00 00 00 FD 6E 99 8C 1C CE EB 03 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 0A 20 00 00 01 00 00 00
    0x200B = 23 00 00 00 CC 4D 9F 3C 1C CC 46 03 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 0B 20 00 00 01 00 00 00
    0x200C = 23 00 00 00 E2 C7 FB C4 1C CE B3 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 0C 20 00 00 01 00 00 00
    0x200D = 23 00 00 00 F7 A6 08 40 1C CE 93 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 0D 20 00 00 01 00 00 00
    0x200E = 23 00 00 00 1D 95 E8 50 1C CE 79 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 0E 20 00 00 01 00 00 00
    0x200F = 23 00 00 00 15 20 D9 10 1C E2 60 09 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 0F 20 00 00 01 00 00 00
    0x2010 = 23 00 00 00 EE D8 FC DD 1C CC 93 04 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 10 20 00 00 01 00 00 00
    0x2011 = 23 00 00 00 91 C4 E6 59 1C CE 7C 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 11 20 00 00 01 00 00 00
    0x2012 = 23 00 00 00 C3 85 C6 56 1C DE 5A 09 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 12 20 00 00 01 00 00 00
    0x2013 = 23 00 00 00 09 59 67 0D 1C DE 5A 09 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 13 20 00 00 01 00 00 00
    0x2014 = 23 00 00 00 56 7C C4 84 1C CE 25 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 14 20 00 00 01 00 00 00
    0x2015 = 23 00 00 00 03 DE D2 08 1C CE 78 0E 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 15 20 00 00 01 00 00 00
    0x2016 = 23 00 00 00 46 03 64 4A 1C DE 52 09 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 16 20 00 00 01 00 00 00
    0x2017 = 23 00 00 00 BF A6 98 8D 1C E2 39 0C 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 17 20 00 00 01 00 00 00
    0x2018 = 23 00 00 00 C3 FD 7E BF 1C E2 0A 0C 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 18 20 00 00 01 00 00 00
    0x2019 = 23 00 00 00 F2 A3 BB B4 1C E2 D4 0B 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 19 20 00 00 01 00 00 00
    0x201A = 23 00 00 00 8B 35 E6 8C 1C E2 60 09 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 1A 20 00 00 01 00 00 00
    0x201B = 23 00 00 00 6D D8 E1 0C 1C E2 5A 09 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 1B 20 00 00 01 00 00 00
    0x201C = 23 00 00 00 E1 C9 24 4C 1C E2 CF 0B 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 1C 20 00 00 01 00 00 00
    0x201D = 23 00 00 00 63 D8 F0 4B 1C E2 76 0C 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 1D 20 00 00 01 00 00 00
    0x201E = 23 00 00 00 F1 8E C0 B4 1C E2 1E 0C 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 1E 20 00 00 01 00 00 00
    0x201F = 23 00 00 00 8E 06 ED 22 1C E2 1F 0C 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 1F 20 00 00 01 00 00 00

     

    And this is a partial table of the values when adding an additional tileset each time:

    TileSets Incremental (To show how the hex data changes with each additional tileset added)
                   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
    ------------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    0x2000 Only   23 00 00 00 57 AF 17 05 1C B8 4B 0B 03 00 00 00 00 00 00 00 00 00 01 01 00 00 00 00 20 00 00 01 00 00 00
    0x2000-0x2001 27 00 00 00 FE 07 47 25 1C B0 61 0B 03 00 00 00 00 00 00 00 00 00 01 02 00 00 00 00 20 00 00 01 20 00 00 01 00 00 00
    0x2000-0x2002 2B 00 00 00 92 A3 42 DF 1C B0 51 0B 03 00 00 00 00 00 00 00 00 00 01 03 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 01 00 00 00
    0x2000-0x2003 2F 00 00 00 54 BE B5 8A 1C B0 6D 0B 03 00 00 00 00 00 00 00 00 00 01 04 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 01 00 00 00
    0x2000-0x2004 33 00 00 00 56 AE 86 65 1C B0 64 0B 03 00 00 00 00 00 00 00 00 00 01 05 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 01 00 00 00
    0x2000-0x2005 37 00 00 00 91 AB E2 B8 1C B0 4F 0B 03 00 00 00 00 00 00 00 00 00 01 06 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 01 00 00 00
    0x2000-0x2006 3B 00 00 00 F6 55 B0 50 1C B0 61 0B 03 00 00 00 00 00 00 00 00 00 01 07 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 01 00 00 00
    0x2000-0x2007 3F 00 00 00 DF 6A B7 6E 1C B0 62 0B 03 00 00 00 00 00 00 00 00 00 01 08 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 01 00 00 00
    0x2000-0x2008 43 00 00 00 45 5F 08 94 1C B0 4F 0B 03 00 00 00 00 00 00 00 00 00 01 09 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 01 00 00 00
    0x2000-0x2009 47 00 00 00 31 8C E1 BF 1C B0 1A 0A 03 00 00 00 00 00 00 00 00 00 01 0A 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 01 00 00 00
    0x2000-0x200A 4B 00 00 00 FE AF 03 F6 1C F2 A0 0A 03 00 00 00 00 00 00 00 00 00 01 0B 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 0A 20 00 00 01 00 00 00
    0x2000-0x200B 4F 00 00 00 C7 B3 CE 3C 1C B0 1C 0A 03 00 00 00 00 00 00 00 00 00 01 0C 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 0A 20 00 00 0B 20 00 00 01 00 00 00
    0x2000-0x200C 53 00 00 00 27 68 F8 F5 1C B0 5C 0B 03 00 00 00 00 00 00 00 00 00 01 0D 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 0A 20 00 00 0B 20 00 00 0C 20 00 00 01 00 00 00
    0x2000-0x200D 57 00 00 00 6F 37 82 0B 1C B0 55 0B 03 00 00 00 00 00 00 00 00 00 01 0E 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 0A 20 00 00 0B 20 00 00 0C 20 00 00 0D 20 00 00 01 00 00 00
    0x2000-0x200E 5B 00 00 00 23 39 13 AC 1C B4 51 0B 03 00 00 00 00 00 00 00 00 00 01 0F 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 0A 20 00 00 0B 20 00 00 0C 20 00 00 0D 20 00 00 0E 20 00 00 01 00 00 00
    0x2000-0x200F 5F 00 00 00 AC BA E4 C8 1C B6 7D 0B 03 00 00 00 00 00 00 00 00 00 01 10 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 0A 20 00 00 0B 20 00 00 0C 20 00 00 0D 20 00 00 0E 20 00 00 0F 20 00 00 01 00 00 00
    0x2000-0x2010 63 00 00 00 FC CC 94 23 1C B8 49 0B 03 00 00 00 00 00 00 00 00 00 01 11 00 00 00 00 20 00 00 01 20 00 00 02 20 00 00 03 20 00 00 04 20 00 00 05 20 00 00 06 20 00 00 07 20 00 00 08 20 00 00 09 20 00 00 0A 20 00 00 0B 20 00 00 0C 20 00 00 0D 20 00 00 0E 20 00 00 0F 20 00 00 10 20 00 00 01 00 00 00

     

    When using only the 4 original tilesets and toggling them on and off in the game, it also re-arranges the dword for the order in which they are cycled.

    So, that's the gist of it. *:)

    • Like 6

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    18 minutes ago, CorinaMarie said:

    Oh, yes! That would very much help. *:ohyes:

    Well, good news, you can use the good ol'

    npm i -g SC4@latest

    and then use the command called tracts (I couldn't use tilesets because I already used that) as:

    SC4 tracts --force -t 0x2001,0x2002 "path/to/city.SC4"

    I've managed to decode the 2990C142-299B2DB1-00000000 - well at least a part of it. The structure looks something like this:

    DWORD	Size
    DWORD	CRC
    DWORD	Memory
    WORD	?, always 0x0003 apparently
    WORD	?, seen 0x0000, 0x0003
    WORD	?, seen 0x0000, 0x0003
    WORD	?, seen 0x0000, 0x0003
    WORD	?, seen 0x0000, 0x0003
    BYTE	?, seen 0x01
    COUNT	Amount of tilesets to follow
    	DWORD	Tileset identifier (0x2000, 0x2001, ...)
    DWORD	Cycle years

    Hope it helps!

     

    - Seba

    • Like 7
    • Thanks 1

    Visit www.growifier.com for ploppable residentials

    Love playing hearts and other card games? Have a look at www.whisthub.com!

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    3 minutes ago, smf_16 said:

    SC4 tracts --force -t 0x2001,0x2002 "path/to/city.SC4"

    That's wonderful. *:D

    Is it possible to make that the full 8 bytes? Like for those examples that's perfectly fine cause we know the first 4 are zeroes anyhow, however @xxdita has tested with some of the BSC OGs and those need the full length. I don't have one handy, but a random example would be to pass 0x1F33A77B.

    Ideally let it be both options. If passing only 4 bytes it knows to prepend 4 zeroes, but if passing 8 then it'd use them all.

    • Like 4

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    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


    ×

    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