Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!
You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!
Thanks that works.Oh, no. I've thought in the past an archive of pngs might be useful, but never started one.
FastStone (which I use as my default imaging program, instead of the sub-par default program Windows uses) includes a batch convert feature. It's under the Tools tab.
Though it might be just as easy to dump them with Dolphin. Just delete all the images in the image dump folder after you load up the CSS and run through each of the character's costumes real quick.
https://www.youtube.com/watch?v=wBNOCZLA1eMHow do you manually add TPLs with a hex editor? Just copy the contents and paste it over the correct offset like with dats?
I just have to ask why 0x0 - 0x220 isn't at the end.To be exact, you copy 0x220 onward to the offset, then 0x0-0x200 after
I thought it was 0x260 onward and then 0x20-0x210 for the palette.To be exact, you copy 0x220 onward to the offset, then 0x0-0x200 after
I thought it was 0x260 onward and then 0x20-0x210 for the palette.
But I'm not talking about TPLs created with the DAT wizard, as I've never used it for palette images.
I dunno. I haven't done CSP injections in a year or so, so I don't remember. You're probably right tho.I thought it was 0x260 onward and then 0x20-0x210 for the palette.
But I'm not talking about TPLs created with the DAT wizard, as I've never used it for palette images.
Yeah, those image type numbers with that underscore should pretty much always be on the image no matter what you're doing (because there's no other way to tell what type it is, once it's no longer a TPL). I'll check the documentation and make sure it's in there. Thanks.@ DRGN Ok, I feel like such a scrub right now. I tried to add the SNES Captain Falcon CSP to the original MnSlChr.usd via the DAT Texture Wizard, and because there's no placement file (not that I expected one) I added the offset myself by looking in placement.txt. The line "34 - 0011f040 ~*CAPTAIN FALCON" shows the offset 0011f040 so the "Source Textures" in DTW showed "D:\Desktop\Textures\SNES Falcon CSP.tpl --> 0011f040" (this is all semi-redundant but I thought I'd explain it so it shows that I felt like I knew what I was doing, and wasn't just coming to you for things already stated). Well anyways, it crashes my game. Is that not the correct offset?
Edit: Solved through random guessing, haha. Didn't know for DTW to work with CSPs you needed to add/leave _9 on the end of the .tpl filename. Didn't read that anywhere in the documentation so I'm wondering what else I missed. Could you please point me to where it said so @ DRGN ?
This is correct. But only for TPLs created with TexConv.exeI thought it was 0x260 onward and then 0x20-0x210 for the palette.
But I'm not talking about TPLs created with [PNG to-from TPL]...
So you mean to go from _9 TPL to _5 TPL? My current programs don't have this ability, but I could make a new program to do this. You know how to do it manually already, right? We did it with that Zelda/Sheik CSP that we put in the game without a palette for a proof of concept. So you should know then that the problem is that _5 take more space than _9, so they won't fit in the same space in the file.I really dont want to deal with pallet offsets. DRGN would it be feasible with your program to go from tpl to png to _5 type back to tpl?
Yeah if you remember, I just added the image at the end of the file. I want to know how far that method could be pushed as in can it be done for every character. The MnChrSl is one of the larger files and it might go over the size limit allowed.So you mean to go from _9 TPL to _5 TPL? My current programs don't have this ability, but I could make a new program to do this. You know how to do it manually already, right? We did it with that Zelda/Sheik CSP that we put in the game without a palette for a proof of concept. So you should know then that the problem is that _5 take more space than _9, so they won't fit in the same space in the file.
A long time ago I tried adding a complete set of CSPs to the end of MnSlChr (copy and pasting all the originals at the end) and it did not work. This is why I've totally abandoned working on this idea for the time being.Yeah if you remember, I just added the image at the end of the file. I want to know how far that method could be pushed as in can it be done for every character. The MnChrSl is one of the larger files and it might go over the size limit allowed.
That wont be loaded into the ram. But I think I found out what I was doing wrong adding relocation entries. If Im right then what you tried would work. Similar to how when I added the image to the end I had to change the pointer to the new location. Otherwise it isn't loaded into the ram.A long time ago I tried adding a complete set of CSPs to the end of MnSlChr (copy and pasting all the originals at the end) and it did not work. This is why I've totally abandoned working on this idea for the time being.
It loads into the RAM if you change the file length (first line of the file). One of the big projects I'm working on is converting my debug menu into the MnSlChr file. It definitely gets loaded into the RAM.That wont be loaded into the ram. But I think I found out what I was doing wrong adding relocation entries. If Im right then what you tried would work. Similar to how when I added the image to the end I had to change the pointer to the new location. Otherwise it isn't loaded into the ram.
I really dont want to go and find the locations in ram though. If you include the pallets its around 200 (25x4x2). Too tedious.
Are you sure everything is. When I added the image to the end of the file I searched for the previous image (good thing I was too lazy to remove it) and it wasnt there. It only loaded when I changed the relocation table. Maybe its treating it as an extension of the string table if its still loading.It loads into the RAM if you change the file length (first line of the file). One of the big projects I'm working on is converting my debug menu into the MnSlChr file. It definitely gets loaded into the RAM.
Yes, I'm sure. There's obviously a limit, but I don't know what that is. Somewhere between adding nothing and adding the length of every character's csps. I play the game on Dolphin and Wii and my debug menu boots up. This means it is loaded in the RAM.Are you sure everything is. When I added the image to the end of the file I searched for the previous image (good thing I was too lazy to remove it) and it wasnt there. It only loaded when I changed the relocation table. Maybe its treating it as an extension of the string table if its still loading.
Well I guess theres no pointer to the size of the string table so itd just run until the file terminated.Yes, I'm sure. There's obviously a limit, but I don't know what that is. Somewhere between adding nothing and adding the length of every character's csps. I play the game on Dolphin and Wii and my debug menu boots up. This means it is loaded in the RAM.
Ah, I see. Well if you figure out exactly what is needed for one file, perhaps we can script the rest.That wont be loaded into the ram. But I think I found out what I was doing wrong adding relocation entries. If Im right then what you tried would work. Similar to how when I added the image to the end I had to change the pointer to the new location. Otherwise it isn't loaded into the ram.
I really dont want to go and find the locations in ram though. If you include the pallets its around 200 (25x4x2). Too tedious.
I thought about doing that too. What type of images did you use? And which pointers did you change? Just those in the headers?A long time ago I tried adding a complete set of CSPs to the end of MnSlChr (copy and pasting all the originals at the end) and it did not work. This is why I've totally abandoned working on this idea for the time being.
I copied from the first CSP offset to the last CSP offset and then just pasted that (so every CSP in the game) at the end of the file. With the thought that this would be the minimum amount of space necessary for another complete set of CSPs. It did not work. So there was no use trying to even mess with pointers and stuff. It seems as though it simply can't hold enough information (in this single file) for two sets of CSPs.I thought about doing that too. What type of images did you use? And which pointers did you change? Just those in the headers?
Oh, OK. And you changed the file size value in the first line. Do you know if the total size of the ISO was still under the GC disc image limit?I copied from the first CSP offset to the last CSP offset and then just pasted that (so every CSP in the game) at the end of the file. With the thought that this would be the minimum amount of space necessary for another complete set of CSPs. It did not work. So there was no use trying to even mess with pointers and stuff. It seems as though it simply can't hold enough information (in this single file) for two sets of CSPs.
I don't remember if I modified any other files, but GCR didn't notify me of anything when I rebuilt it.Oh, OK. And you changed the file size value in the first line. Do you know if the total size of the ISO was still under the GC disc image limit?
Doesn't work for me either. What if you split the data?I copied from the first CSP offset to the last CSP offset and then just pasted that (so every CSP in the game) at the end of the file. With the thought that this would be the minimum amount of space necessary for another complete set of CSPs. It did not work. So there was no use trying to even mess with pointers and stuff. It seems as though it simply can't hold enough information (in this single file) for two sets of CSPs.
Yeah I think you would need to do some sort of workaround like this.Doesn't work for me either. What if you split the data?
What if I had a way to load all of the CSP data into the RAM, in one piece? What would the next step be?Yeah I think you would need to do some sort of workaround like this.
DRGN made one. http://smashboards.com/posts/18160548If it's worth anything, I'd like a guide on how to do this, since most videos are either not good enough detail wise, or are outdated visually.
Yeah that part doesn't make much sense to me either. But I don't really understand how the game reads the CSP data, memory breakpoints on the data and certain pointers never trigger for me.Well, we can have more than one MnSlChr, right? So if we did that, the question is, how do we point to a location in a different file? I don't know, but it doesn't seem to make sense that we could just change a pointer.
Ah, that makes sense. So if we want to load something that's in the other file, we need to trigger another loading cycle and change which file is loaded into RAM. So how does the game reference or ID different files?Theyre only read during the loading cycle.
When I said read I was referring to the file. The game reads the data from the file and stores it during the loading cycle in ram. The problem is that I think the ram only has room for 4MB for the mnslchr and if you add in every character its 6MB. If you change the file name MnSlChr.usd to MnSlChr.dat in the ram it will load the japanese version instead. So in theory if you could figure out how to get the game to only load part of a file while leaving the rest intact you could hotswap the CSP data.Ah, that makes sense. So if we want to load something that's in the other file, we need to trigger another loading cycle and change which file is loaded into RAM. So how does the game reference or ID different files?
Right, I understood what you meant by read.When I said read I was referring to the file. The game reads the data from the file and stores it during the loading cycle in ram. The problem is that I think the ram only has room for 4MB for the mnslchr and if you add in every character its 6MB. If you change the file name MnSlChr.usd to MnSlChr.dat in the ram it will load the japanese version instead. So in theory if you could figure out how to get the game to only load part of a file while leaving the rest intact you could hotswap the CSP data.
Yeah but I dont know enough about loading cycles to do so. What I meant by every character was their CSP images. The game loads the whole file at once and doesnt read it again until its reloaded. There isnt enough room in the ram for two full sets of CSP images. If you knew what function was called that opened a file, you could reload the CSS tell it to ignore everything but the second set for that character and place it somewhere free in the ram and then change the pointers to it. If the size is small enough the loading cycle might be virtually seamless.Right, I understood what you meant by read.
Although I'm not sure what you mean by "if you add in every character." You mean every character's CSP images? I think the game already has a function to only load a portion of the file into RAM. If so, I wonder how we could find this function. Once found, I imagine it should be possible to call it ourselves with our own arguments. e.g. tell it what file to load from, and which part(s).