Does anyone know what palette is used for TS's SideNC01.mix's SHP's? Can't find any palette that makes them show right.
tomsons26lv wrote:
What are you talking about.. See the ts shp header i posted in the same post where the Icon(tmp) header is.
Oh you mean the unknown bit before offset in a frames's header (Not the SHP Header). I thought you meant the first two bytes of the SHP Header which people call Zero (Since its always a Zero).
Crimsonum wrote:
I noticed a small error, though: The last colour in the palette (#255) is actually affected by the ambient lighting. So only colours from #240 to #254 should not be affected by the luminosity change.
Fixed.
E1 Elite wrote:
If that same logic is available for isotem.pal
or non unit*.pal custom palettes, it would give incorrect info.
The only issue with limiting it to a palette with a specific name is if someone used a custom palette with a different name.
E1 Elite wrote:
If you are looking for more viewing features, some ideas:
- tool could provide a mask on the palette to show which colors are used or not used for
current frame or in the first half of the frames or the whole of the SHP.
- or a selectable palette where user can click on colors to be pinked out to see if the image
is affected.
- animation could have a loop from-to frame numbers to view only a subset of frames looped
- tool could show the compression used alongside the frame counter.
- could allow the background scene to come from an image. It might help in screenshot or
even cameo making.
Im always looking for ideas for features, especially ones people will use (I know from experience i could think something is a good idea for a feature but in reality never gets used). Your ideas are good though what would be the use in knowing what the compression used for each frame is?
E1 Elite wrote:
Hope your palette dropdown extends for longer filenames like unttemmask1ra2bgremap.pal.
After finding a hack for the combobox's to make it auto size it now does .
Lin Kuei Ominae wrote:
As for the custom background image suggestion, it would be very useful if you could load multiple SHPs for one preview. So you don't have to go ingame to check how it turns out.
Just load the background image (screenshot of a ingame landscape), load the SHPs, set the loop frames for each SHP and click play for a nice preview.
So a list of all SHP's say at the left (Where you select one), click on the middle bit to place a SHP and have the ability to set the frames it plays? May be best as a separate application, unless its meant to be displaying the SHP you have already opened (And say edited) and your just comparing it to other SHP's.
Lin Kuei Ominae wrote:
Then a working gif exporter would be great (not this color ruining thing in SHP builder)
Afaik GIF's use a 256 colour palette so there shouldn't be an issue with colours (Just copy the palette over and then the pixels). Importing should be the only place colours can go wrong. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
though what would be the use in knowing what the compression used for each frame is?
for comparison and verification this could be indeed useful.
So far you can only change the compression in SHP Builder and then test ingame if anything has changed, but it's still only a blind test. Because if nothing has changed ingame you wouldn't know if SHP Builder made a mistake when saving the SHP, or you when implementing it in the mix etc.
Thus a way to actually see/proof the used compression would be useful.
Then you could also proof that a certain compression leads to certain artifacts and render layer issues. _________________ SHP Artist of Twisted Insurrection: Nod buildings
It is because the game behaves differently with different compression specially when it has to
render one SHP over another. And I don't have to go and open the file in a hex editor to check
for its compression bits. SHP Builder shows in preview but only for normal frames, not for
shadow frames.
Actually I would have liked 2 more save options, irrespective of which saves the best. One with
all frames compressed with 3 and 2nd option with normal frames in compression 3 and shadow
frames with 1 only. Just for testing different cases. QUICK_EDIT
It is because the game behaves differently with different compression specially when it has to
render one SHP over another.
That sounds like odd behaviour. I wouldn't have thought compression would have any effect. Have you tried the "Flag" as different values to see if it had an effect (like the first bit flag).
E1 Elite wrote:
SHP Builder shows in preview but only for normal frames, not for
shadow frames.
My understanding is that shadow frames should be saved without compression.
E1 Elite wrote:
Actually I would have liked 2 more save options, irrespective of which saves the best. One with
all frames compressed with 3 and 2nd option with normal frames in compression 3 and shadow
frames with 1 only. Just for testing different cases.
At some stage i plan on either making a custom save dialog or expanding the windows one (Latter being an annoying way.. Windows API stuff is always annoying). _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Does anyone know what palette is used for TS's SideNC01.mix's SHP's? Can't find any palette that makes them show right.
Oh you mean the unknown bit before offset in a frames's header (Not the SHP Header). I thought you meant the first two bytes of the SHP Header which people call Zero (Since its always a Zero).
If there's no PAL anywhere then the game loads it from a PCX.
Seeing the content in that mix mpscore.pcx is likely it.
No, it's commonly called A, and that's what i would have referred it to should i mention it.
As for what it is its definatly a word not two bytes, its 00s in the shps i've seen, but that doesn't mean it can't have anything else, so far i've only found that the game checks if its -1 and if so doesn't render the shp(does load it tho) and that its somehow related to how the shp is loaded and buffered.
As for Zero thats still my running theory that it could be a checksum of a linked file. _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
SHP Builder shows in preview but only for normal frames, not for
shadow frames.
My understanding is that shadow frames should be saved without compression.
E1 Elite wrote:
Actually I would have liked 2 more save options, irrespective of which saves the best. One with
all frames compressed with 3 and 2nd option with normal frames in compression 3 and shadow
frames with 1 only. Just for testing different cases.
At some stage i plan on either making a custom save dialog or expanding the windows one (Latter being an annoying way.. Windows API stuff is always annoying).
Stop calling them compressions, there's only ONE, RLE. The first word? of Flags (newest guess on what is it, might as well be a dword bitfield) is a bitfield for the Blitter
Each bit activates some option
Let's take some of the known Flags from the original games shps and explain them
4D000000
9B000000
63000000
4D=77 in decimal and means option 1, 4, 8 and 64 is active
9B=155 in decimal and means option 1, 2, 8, 16 and 128 is active
63=99 in decimal and means option 1, 2, 32 and 64 is active
stucuk wrote:
E1 Elite wrote:
It is because the game behaves differently with different compression specially when it has to
render one SHP over another.
That sounds like odd behaviour. I wouldn't have thought compression would have any effect. Have you tried the "Flag" as different values to see if it had an effect (like the first bit flag).
That's perfectly correct behavior given what the word is for and how the Blittters work.
When RLECompressed is on the game uses one of the many RLE blitters as those decompress RLE right before blitting the image to the screen if its off it uses BlitPlain blitters, it's really possible that one of them has a bug somewhere that affects how the shp is drawn(besides the bitfield values that affect it directly and as intended). _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
XCC refers to it as Zero. A is an odd name especially as its always Zero.
tomsons26lv wrote:
As for what it is its definatly a word not two bytes
A word is two bytes long. An unsigned 16bit number. Signed or not doesn't matter when your checking to see if a value is not 0 as 0 is the same with both signed and unsigned.
tomsons26lv wrote:
newest guess on what is it, might as well be a dword bitfield
Has anyone tried to strip the SHP's which use the full 4 bytes so that it only contains the compression flag to see if there is any difference in game? Or to take the values from one SHP and shove them into another.
tomsons26lv wrote:
That's perfectly correct behavior given what the word is for and how the Blittters work.
I understand that each flag combination has different render paths. Original War which iv maintained since 2005(And the reason i stopped working on CNC tools) has GM files which are 3d Sprites (One image for pixels and one for Z buffer image). They use separate paths for the different types.
But its not correct behaviour to do things differently based on if something is compressed or not. How they should work is identical to each other if only compression is whats different.
Are you sure that its the compression being used or not which is what causes issues and not say Bit 1 of the flag being on/off?
Quote:
Stop calling them compressions, there's only ONE, RLE.
Does that look ok for save options? I'm now going with the assumption that flags is 2 bytes long (Word). Compression options control if flag 2 is used (Which is why the HEX bit states 2 possibilities in the screenshot).
-----------
Attached is a new SHP Debug file. Flags is now a Word so its displayed differently and the old "Align" is now a Word too. The "Zero" bit before offset is included at the end (Which from what i can see is always Zero).
The following is now the layout of the header i am using:
Code:
TSHP_Header_Image = record
X, Y, W, H : Word;
Flags : Word;
Unknown : Word; // Part of Flags? Something else?
RadarColor : TRGBTriple;
Unknown1 : Byte; // Part of Radar Color? Seperate?
Unknown2, // ????
Offset : Cardinal;
end;
Txt file's frame lines is:
FrameNumber - X - Y - Width x Height - Flags - Unknown - RadarColor(R,G,B) , Unknown1 - Unknown 2
Interestingly SideNC's have 0056(Bit 8, 16 and 32) for the Unknown after Flags (Though so does TS\isoTemp\ufo.tem).
Can you confirm:
Auto Compress Best Size - If some anim SHP does not have shadow frames, it will compress all with
comp 3 or none based on resulting size. Same as 50/50 if there are shadow frames?
Half 50/50 - Normal frames are either comp3 or no compression, shadow frames no compression
All Compressed - Normal frames in comp3, shadow none
No Compression - All frames no compression QUICK_EDIT
Are all the flags used?
Maybe a few (e.g. the last 3) of them can be used to store some of your additional info in them.
With 3 flags you could store already 9 different values like TS/anim, RA2/anim, TS/unit, RA2/unit, etc and thus load an appropriate palette. _________________ SHP Artist of Twisted Insurrection: Nod buildings
Some of the SideNC's work with mpscore's palette but others don't (Such as smlogo.shp).
E1 Elite wrote:
Can you confirm:
Auto Compress Best Size - If some anim SHP does not have shadow frames, it will compress all with
comp 3 or none based on resulting size. Same as 50/50 if there are shadow frames?
Half 50/50 - Normal frames are either comp3 or no compression, shadow frames no compression
All Compressed - Normal frames in comp3, shadow none
No Compression - All frames no compression
They do exactly what they say. Best is best, 50/50 is 50% compressed and 50% not compressed. All compressed uses compression for all. None is for none. There is no concept of shadow frames as there is no way for it to know what has shadow frames and what doesn't.
My understanding is that 50/50 should be what you want with SHP's that have shadow frames.
There is no Comp 3. For what was Comp 3 you would have to enable 1 in the Force Flags bit as compression is flag 2.
Lin Kuei Ominae wrote:
Are all the flags used?
Even if they are not used in the official SHP's they may be used by the game. Adding data to unknown flags/etc is far more risky than adding data to the end of the file (Since the latter isn't in use by the format). _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Flags has only;
0 - None
1 = Unknown, as discussed above
2 = RLE Zero.
There is no others in that bitfield, and there is no other bitfields in the Header.
"RadarColor" is actually a common/average colour, "What would this shape look like if it was resized to 1x1 pixels?". When asking Joe Bostic about the format, he said this was added for a general purpose, but of course used afterwards in the radar code for plotting the radar pixel. QUICK_EDIT
How about alienating the radar colors for your additional data stucuk?
Unit, building and animation SHPs, they all don't use the radar color.
Only Overlays like Tiberium and maybe also TerrainTypes (not sure) use it.
So you can code something simple like
if (RadarColor.AsHexValue.StartsWith(0x0123))
{
//you identified the radar colors as a special case used by your program (first 2 byte are 01 and 23 as hex value)
//use the 3rd byte to store any data you want
}
else
{
//the radar was set on purpose with a certain color, so don't try to guess the SHP type
}
for the 90% units,buildings and animations SHPs out there, your program should this way store the additional type data fine in the file, without messing up any engine or decoder that reads them. _________________ SHP Artist of Twisted Insurrection: Nod buildings
Granted its a 0x0 frame, but one has a 4 and one CCCC. It also uses that unknown field (The one before the offset) thats normally all zeros.
The two bytes after "Flags" (Which iv named "Unknown") seem to either be 0000, 006C, CCCC, 0056 or 0059 (I am talking about frames with an actual size).
I am leaning towards flags being a dword.
CCHyper wrote:
"RadarColor" is actually a common/average colour, "What would this shape look like if it was resized to 1x1 pixels?". When asking Joe Bostic about the format, he said this was added for a general purpose, but of course used afterwards in the radar code for plotting the radar pixel.
But is it RGB or RGBA.
Lin Kuei Ominae wrote:
How about alienating the radar colors for your additional data stucuk?
No. I am not putting data inside existing header data. That would be abusing the format. Also its not an overall solution.
Me and Hyper are at a impasse, ShapeSet exe shows there's only 1 and 2, the games files consistently say otherwise.
Hyper is hell bent on believing ShapeSet, i think given the team that worked with that particular version of shapeset only worked on buildings and units this version was simplified to minimize confusion on what to use as seems the ideal is those two flags for the shps based on what WW's files have.
Meh, without the sources we probably will never find out what the other bits were/or are. Maybe though a long trail and error process...
I guess i give up
As for CommonColor, the forth byte might be a bitfield for how this color is treated or something, doesn't seem relevant to the C&C engine tho so i guess just ignore it.
Oh yea Flag 1 in TS and RA2 are two different things it would seem. If a shp is made with shapeset with the -x command line which sets this flag, it crashes in TS but renders fine in RA2 but that's only when the Wdith is set before the frames by ShapeSet. Dunno whats up with this system. _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
From what I can tell, it's just RGB. I just edited an overlay with a HEX editor and I replaced the first byte after the actual radar color (since this SHP was created with XCC Mixer, that means it's the first byte after every instance of 00 00 07). The original value was 00, so I replaced it with FF for all of them and then started the game with a map where I placed won lots of this overlay.
Before I applied the change with the HEX editor, I saw lots of black dots on the radar and after the change it was still exactly the same. To make sure that the byte I replaced was truly the one that came right after the radar color, I then also replaced every instance of 00 00 07 with FF 00 07 and checked the radar color ingame again, which then turned red as expected.
To make extra sure, I took a screenshot this time, then replaced the first byte after every instance of FF 00 07 with 7F and then took took another screenshot so that I could compare it with the first screenshot, but the radar color was still 100% identical.
So the 4th byte doesn't seem to do anything to the radar color at all.
It would've been useful if the radar color of certain overlays or terrain objects could be turned transparent or invisible, so that's too bad. The best alternative to that is for this tool to automatically use the average color of every frame, just like SHP Builder does nowadays. _________________ QUICK_EDIT
Me and Hyper are at a impasse, ShapeSet exe shows there's only 1 and 2, the games files consistently say otherwise.
Well it does seem like specific data but it may be ignored by the games. I havn't done any testing, only looked at the files.
tomsons26lv wrote:
Oh yea Flag 1 in TS and RA2 are two different things it would seem. If a shp is made with shapeset with the -x command line which sets this flag, it crashes in TS but renders fine in RA2 but that's only when the Wdith is set before the frames by ShapeSet. Dunno whats up with this system.
Etc. TS and RA2 both use 0, 1 and 3. RA2 has some 2's (Though just with the fence's afaik).
Flag 1 seems to indicate Zeros(Or Transparency). If you look at canister.shp for example it only has flag 1 when the frame has #0 in it. Fence's in RA2 don't have have flag 1 when there are no #0. So id go on a limb and state that flag one should only be set if there are #0's in the frame.
tomsons26lv wrote:
I guess i give up
Bittah Commander wrote:
From what I can tell, it's just RGB.
Thanks for testing. I will make it get the average colour unless people require it to also have manual selection. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Hmm -x is something else, it seems to only add the extra Width to every frame start if the source image is larger than 300x300?(need to recheck at some point) and this is a feature introduced in RA2, with the extra Width specified it crashes the game in TS.
This just keeps getting weirder.
Tested out when ShapeSet sets 1
That one stray pixel makes all the difference
So it's if there's a zero anywhere in the art itself it gets set
Guess when flag 1 isn't set the only real purpose of this is to ease rendering of box shape objects such as UI elements where none transparent pixels exist but given the isometric nature of the games this is useless elsewhere as there will always be transparent pixels in the art _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
:\
That is it. With the first ShapeSet keeps flags as zeros, with second and third image it sets flags as 1
Heres another example
Flags will be 0 on
Flags will be 1 on
Guess what you can call it is DontIgnoreZeros or AccountForZeros or something like that.
Do note that the game won't render the entire thing however as
ShapeFrameHeader{
word OffsetX // <CCHyper> they are x and y pos
word OffsetY // <CCHyper> they define the left and top position of a rect for blitting
//These are offsets that determine where the rectangle that's formed from DrawnWidth and DrawnHeight is
word DrawnWidth //The Width of the actually drawn? or prioritized pixels from this frame, if 0 assumed all
word DrawnHeight //The Height of the actually drawn? or prioritized pixels from this frame, if 0 assumed all
Need to check but i think these are prioritized to be drawn pixel offsets but hope you get the idea.
If Flag 1 isn't set the game would skip?/lazily read?/partially read?/not prioritize rendering? all the data to the point where the rectangle that is formed from the width and height and positioned based on those offsets is specified.
To be completely clear
and yes 18x11 is the offset from top left where the rectangle starts _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
Yes checks out
Conyard has a offset of 37x74 and DrawnW and H of 212x148, set Width to 112
Hmm with 1 set it crops anyway... Welp at least we now know that thats the actually drawn width and height _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
Besides the Width in front of every frame dunno anything else.
Get ShapeSet from http://www.ppmforums.com/viewtopic.php?t=38429 and try testing yourself. Start with a 512x512 pcx to be sure and scale it down until it hits where the extra Width isn't set anymore.
Note for whatever fucked up reason the palette is read from the pcx upside down..
Edit:
Remembered i did find out one thing when testing if ANM conversion still works
Without -X command line
With it
So the current theory is they were debugging high res shp issues and the extra width is some forced alignment
Edit:
Tried again with the same EA Sporks anm file, its actually just adding extra 7 pixels to the Frame Width for it, with the pcx included in the pack it added the width as separate extra data...
What the inconsistent ztype is this Last edited by tomsons26lv on Sun Aug 28, 2016 1:29 pm; edited 1 time in total QUICK_EDIT
"RadarColor" is actually a common/average colour, "What would this shape look like if it was resized to 1x1 pixels?". When asking Joe Bostic about the format, he said this was added for a general purpose, but of course used afterwards in the radar code for plotting the radar pixel.
But is it RGB or RGBA.
I never implied it was not, I was just sharing the information given to me from the guy who wrote the format himself. QUICK_EDIT
and try testing yourself. Start with a 512x512 pcx to be sure and scale it down until it hits where the extra Width isn't set anymore.
Not going to do that. Randomly trying to recreate something isn't a good use of time when you could either upload ones which crash TS or show the frame data. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
and try testing yourself. Start with a 512x512 pcx to be sure and scale it down until it hits where the extra Width isn't set anymore.
Not going to do that. Randomly trying to recreate something isn't a good use of time when you could either upload ones which crash TS or show the frame data.
The point of having you try it out was objective opinions not just me most likely poorly trying to explain things and maybe you get the idea why and what is happening if you try it first hand....
But eh whatever..
Worth noting that WW used the -X and a letter in command line in C&Cs (such as -XM to enable Monochrome debug printing to mono screen) for debug modes, its possible ShapeSet's -X is for debugging something. _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
The point of me not is that i have alot to do as it is and you can easily just send a SHP that fails with TS and i can inspect its data to see whats different between it and a normal SHP. Its also possible i would get different results either from me not doing everything you did or simply due to different data or settings. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Only just noticed its been about a week without me releasing anything...
Implemented Import/Export 8-bit BMP Spritemap. Since the Palette is stored in the BMP its impossible to have colour conversion errors. It will be larger than filetypes like PNG since its uncompressed but you can put them in ZIP/RAR's if you want to share them.
It stores the Width, Height and Frame Count in the filename when Exporting which saves you having to enter them in the Import Settings bit. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Some points so far:
- The UI is good, no suggestions there.
- I like the animated preview when selecting an SHP file.
- I think the current min and max luminosity values are sufficient.
- It would make sense for the luminosity of the fake map background to change as well, but it could be an option instead of a forced thing.
- A minor thing: If the current SHP is considered a shape with shadow frames (i.e. a unit or building), and you play the animated preview, the preview always skips the shadow frames. You cannot "force" it to show such frame either by moving the slider to a shadow frame. There should be an option to allow viewing shadow frames as well.
- Request: There ought be a tool name/description above the luminosity slider.
- Request: A fake snow background.
- Request: A way to change the speed of the animated preview (on the main window). _________________
Implemented ability to load background tiles. Before it was just a static image but now it will tile. Right clicking on the Draw Background button will make a popup menu appear where you can select the background you want (Its populated based on the PNG files it finds in the Backgrounds directory).
Also changed the Animating logic so it will only treat the "animation" as having shadows if "Draw Shadows" is enabled. Otherwise it will play all frames (And not draw the shadows on non-shadow frames). _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Also modified the Open Dialog so that it hides any SHP's which arn't valid TD/TS SHP's (Like TMP files). Does have the side effect that the scrollbar may suddenly shrink as its only checking them when they come into view and then hiding if they are invalid.
P.S If you left or right click a pixel of the image it sets the Left/Right colours on the palette. Its been able to do it for quite a while but i never mentioned it (Your able to use it with the last released build anyway). _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Say you got 30 frames in opened shp, you tell it to reduce to 15 with one quick command which removes frame2, frame 4, frame 6...
I find often got too many frames and need to reduce and doing this manually is just slow and if shadows are turned on, it should remove the counterpart shadow frame. QUICK_EDIT
if shadows are turned on, it should remove the counterpart shadow frame.
It doesn't need to care if shadows exist. It will work out correctly as your removing all the odd frames (So you would remove the counterparts since the SHP has even frame numbers). The only instance where it would fail would be if you had 2 frames where 1 was a shadow (Since it would be forced to remove the shadow).
-------------------------------------------
Due to the TSHP class it didn't take alot of code:
Code:
procedure TFrmMain.GoButtonClick(Sender: TObject);
var
Input,
Output : TSHP;
X : Integer;
OFrame,
IFrame : PSHP_Frame;
begin
Input := TSHP.Create;
Input.LoadFromFile(FilenameEdit.Text);
Output := TSHP.Create;
Assert(Input.Count > 1,'Error: Less than 2 frames!');
Output.AddFrames(Input.Count div 2,Input.Width,Input.Height);
for X := 0 to Output.Count-1 do
begin
OFrame := Output.Frame[X];
IFrame := Input.Frame[X*2];
OFrame^.UsedArea := IFrame^.UsedArea;
OFrame^.RadarCol := IFrame^.RadarCol;
if IFrame^.PalData = Nil then
Continue;
GetMem(OFrame^.PalData,Output.Width*Output.Height);
CopyMemory(OFrame^.PalData,IFrame^.PalData,Output.Width*Output.Height);
end;
It doesn't need to care if shadows exist. It will work out correctly as your removing all the odd frames (So you would remove the counterparts since the SHP has even frame numbers). The only instance where it would fail would be if you had 2 frames where 1 was a shadow (Since it would be forced to remove the shadow).
But if there are an odd number of normal frames, for every removed normal frame it will remove a "wrong" shadow frame, not the one corresponding to the normal frame.
Btw, I tested it on a building SHP with 6 frames total and it removed the shadow frames completely, leaving only two of the normal frames. _________________
What millisecond values(Like 10 of them) would you want for the animation speed? Current is 200ms which is 5FPS. Minimum is 16ms in Windows 7, XP i think was 20ms.
Implemented Colour Switcher. Its the CScheme thing. Still need to add a ComboBox to hold the CScheme Categories (So you can filter the list), preview's need the transparent square background thingy and i need to optimise the default cschemes by shoving them in a binary format as it takes way too long to load >250 of them when they are ini files(INI ones would still be supported, just the default ones supplied would be shoved in a single binary file to optimise the loading). _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Anim FPS could be from 5 to 20 or 25 FPS. Only felt the existing one was a little slower.
The unused colors could be shown with pure colors like pink, cyan or bright green etc.
Black or dark gray shades are confusing. Use RGB like 0,255,0 or 0,255,255 - choose a
color that does not exist already or give an option for the user to choose.
Edit: Or a pattern like checkered used for transparency or a filled circle or a cross.
Couldn't see the save options in last download, are you giving a separate option for that?
For me export and import are the most used feature of SHP Builder apart from viewing.
If editing is not planned then giving the import and export functionality are the next best
alternative. Some thoughts:
Exporting:
- export file formats choice should be both indexed images and 24-bit colored images
like pcx, png and bmp. GIF for animation. (Check for licensing of those libraries)
- export could use a file numbering format like name xxxxxx.png for individual frames
Importing:
- choosable palette (palettes in case of RA2 civil buildings) in which import has to be done.
- when importing from indexed images, palette index should be used instead of color
mapping.
- when importing from 24-bit images, usage of closest color mapping algorithm could
have choices like Delta-E 2000 etc. Look in SHP Builder.
- fascility for some of palette colors to be deselected during import, so that we don't need
make custom palettes like to avoid importing in glowing color indices (e.g. among the last
16 indices).
- currently number of frames supported by SHP Builder is 9800 frames and XCC Mixer is
1000 frames. This tool could give more like name xxxxxx.png (usage of variable in code
to hold 64K or more count). This may not be used but being aware during coding would
remove the limitation. QUICK_EDIT
After selecting a filename the save options appear.
Why would you need non-index'd images? Your losing colour information when importing and editors like Photoshop/Gimp work fine with 8Bit palettes. Its not like you can use colours outside of the 8Bit Palette. I can understand generating the images in say 3DS Max and needing to import it, but not exporting so you can work in 24bit.
SHP's can have 65535 frames max(Due to Count being a Word) so the limit should be that (SHP Builder can handle SHP's with that many frames. Though the spinedit control is limited to 3000 for some reason...). 9800 sounds like a very odd number.
Pure Colours which are already used in the palette would be a bad idea. Checkered is better as you can easily see whats not a colour. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Editing indexed images in Photoshop is restricted, features like selective color editing
won't be available as those need RGB value to run the algorithm. Moreover editing
doesn't change color of an image but only its color table or palette which is not useful.
The current mechanism of saving a 8-bit bmp is not good for say a 300 frame unit, the
size would be too big. If there are 300 frames then those need to be converted to 24-bit
format for changing colors which then can be imported with another palette to get the
new colors.
The import frame count 9800 is a tested number. SHP Builder would import 9801 frames
but would crash after doing the import. Any higher it gets into some (don't remember
exactly) out of bound problem and crashes without importing. That problem is with
SHP Builder, not a hardware limitation.
Checkered pattern looks fine for unused color. The dark gray could be darker. QUICK_EDIT
For the framerate i would suggest implementing it in the same way WW has done it on the Rate= key, so you can see how it would look ingame with the same setting as in art.ini.
Rate defines the number of frames shown in 60s and goes from 1 to max 900
Thus allow values from 1 to 900
In your case the formula for the delay between the frames would be
delay (in ms) = 60000 / Rate
e.g.
the usual speed for many anims is Rate=300
so you would have a 200ms delay between each frame
The fastest the game can show is Rate=900 which is a delay of 66.6ms. _________________ SHP Artist of Twisted Insurrection: Nod buildings
Joined: 22 Nov 2010 Location: Iszkaszentgyorgy, Hungary
Posted: Wed Aug 31, 2016 10:29 am Post subject:
E1 Elite wrote:
Editing indexed images in Photoshop is restricted, features like selective color editing won't be available as those need RGB value to run the algorithm. Moreover editing doesn't change color of an image but only its color table or palette which is not useful.
It has it's uses. I have many times found that quite useful when I was creating custom palette variations for the same animation.
OTOH, GIMP works completely the opposite when it comes to indexed mode, it cannot shift palette colors and don't flatten the image beforehand, so it's the tool you'd find useful. _________________ "If you didn't get angry and mad and frustrated, that means you don't care about the end result, and are doing something wrong." - Greg Kroah-Hartman
=======================
Past C&C projects: Attacque Supérior (2010-2019); Valiant Shades (2019-2021)
=======================
WeiDU mods: Random Graion Tweaks | Graion's Soundsets
Maintainance: Extra Expanded Enhanced Encounters! | BGEESpawn
Contributions: EE Fixpack | Enhanced Edition Trilogy | DSotSC (Trilogy) | UB_IWD | SotSC & a lot more... QUICK_EDIT
The import frame count 9800 is a tested number. SHP Builder would import 9801 frames
but would crash after doing the import. Any higher it gets into some (don't remember
exactly) out of bound problem and crashes without importing. That problem is with
SHP Builder, not a hardware limitation.
It must be something in the conversion code. Since it can literally load SHP's with 65534 frames (I never tested 65535 as my test had shadow frames) it has to be able to store the actual frame data in the SHP structure it has.
E1 Elite wrote:
Checkered pattern looks fine for unused color. The dark gray could be darker.
Is the following better (Left one):
P.S I don't know if i will code Paint like tools into it at this stage. My current strategy is to work on everything else and then decide. If i did it would be a layer system and id have to create a custom format to store the editor data. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Left one is good enough for me. Hope there is option for checking current frame and
entire SHP for unused colors.
@Graion Dilach - Not useful was in the context. Had used the same technique to make
custom palettes in the past with Photoshop. Haven't used GIMP in several years now. QUICK_EDIT
Updated Colour Switcher Progress. Any CScheme which will have no effect on the SHP is hidden, also added categories which show/hide them based on what their category is (Called Game in the CScheme file, but Brown 1, Brown 2,etc are not cnc games i know of ). The Palettes in the Colour Switcher will only display the palette colours which exist in the SHP and which are changed by the CScheme.
E1 Elite wrote:
Left one is good enough for me. Hope there is option for checking current frame and
entire SHP for unused colors.
Implemented the Binary CScheme file for the default included CSchemes. Its 70KB (Compared to 560KB) and loads instantly instead of taking something like 4-6 or more seconds to load. _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
I started work on the backend for a Layer base editor (Id like to note i may never finish it. No Guarantees). It will be designed internally for speed and ease of use rather than lower memory. For example, each layer will be a full sized palette image rather than just the size thats actually used. Benefit being that coding is easier and it doesn't need to be reallocated each time the used area of the layer changes. The negative is that it will use more memory, though unless you go crazy on layers it shouldn't be an issue (A single 256x256 layer would be ~65KB). _________________ Free Map Editor - Game Requirements - Stucuk.Net QUICK_EDIT
Flag 1 seems to indicate Zeros(Or Transparency). If you look at canister.shp for example it only has flag 1 when the frame has #0 in it. Fence's in RA2 don't have have flag 1 when there are no #0. So id go on a limb and state that flag one should only be set if there are #0's in the frame.
I got slightly more info now on this, i found where YR checks bit 1 and Hyper helped me figure out what's going on in ShapeSet.
You are correct that's practically it.
When Flag 1 is set that means the image had the specified Transparent index in it, in ShapeSet default check is for index 0x0, you can overwrite it with the command line -T## for example -T01 would make it assume all index 1 pixels are transparent pixels -TFF all index 255 and so on.
Its unclear to us right now why any other values appeared but game only checks for bit 1 and 2, 2 is indeed confirmed as RLECompressed. _________________ Tiberian Dawn, Red Alert, Tiberian Sun ,Red Alert 2,Renegade, Command & Conquer 3,Tiberium and Tiberium Wars and Westwood related image & video archive
https://picasaweb.google.com/113361105083292812413?noredirect=1
Skype live:tomsons26
Don't forget to state who are you otherwise i'll ignore the invite QUICK_EDIT
You can post new topics in this forum You can reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum