The International Simutrans Forum

Development => Patches & Projects => Incorporated Patches and Solved Bug Reports => Topic started by: Fabio on September 27, 2013, 11:13:38 AM

Title: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 27, 2013, 11:13:38 AM
Quote from: kierongreen on August 18, 2013, 06:33:56 PM
http://simutrans-germany.com/files/upload/6655-makeobj-win.zip

New makeobj for 6655+ (and at least the one before it) can't handle anymore water animations as pre-double height makeobj's did.
This is current Pak128 water:


Obj=ground
Name=Water
Copyright=none
# animated water:
Image[0][0]=water_ani.1.0
Image[0][1]=water_ani.1.1
Image[0][2]=water_ani.1.2
Image[0][3]=water_ani.1.3
Image[0][4]=water_ani.1.4
Image[0][5]=water_ani.1.5
Image[0][6]=water_ani.1.6
Image[0][7]=water_ani.1.7
Image[0][8]=water_ani.1.8
Image[0][9]=water_ani.1.9
Image[0][10]=water_ani.1.10
Image[0][11]=water_ani.1.11
Image[0][12]=water_ani.1.12
Image[0][13]=water_ani.1.13
Image[0][14]=water_ani.1.14
Image[0][15]=water_ani.1.15
Image[0][16]=water_ani.1.16
Image[0][17]=water_ani.1.17
Image[0][18]=water_ani.1.18
Image[0][19]=water_ani.1.19
Image[0][20]=water_ani.1.20
Image[0][21]=water_ani.1.21
Image[0][22]=water_ani.1.22
Image[0][23]=water_ani.1.23
Image[0][24]=water_ani.1.24
Image[0][25]=water_ani.1.25
Image[0][26]=water_ani.1.26
Image[0][27]=water_ani.1.27
Image[0][28]=water_ani.1.28
Image[0][29]=water_ani.1.29
Image[0][30]=water_ani.1.30
Image[0][31]=water_ani.1.31
Image[1][0]=water_ani.2.0
Image[1][1]=water_ani.2.1
Image[1][2]=water_ani.2.2
Image[1][3]=water_ani.2.3
Image[1][4]=water_ani.2.4
Image[1][5]=water_ani.2.5
Image[1][6]=water_ani.2.6
Image[1][7]=water_ani.2.7
Image[1][8]=water_ani.2.8
Image[1][9]=water_ani.2.9
Image[1][10]=water_ani.2.10
Image[1][11]=water_ani.2.11
Image[1][12]=water_ani.2.12
Image[1][13]=water_ani.2.13
Image[1][14]=water_ani.2.14
Image[1][15]=water_ani.2.15
Image[1][16]=water_ani.2.16
Image[1][17]=water_ani.2.17
Image[1][18]=water_ani.2.18
Image[1][19]=water_ani.2.19
Image[1][20]=water_ani.2.20
Image[1][21]=water_ani.2.21
Image[1][22]=water_ani.2.22
Image[1][23]=water_ani.2.23
Image[1][24]=water_ani.2.24
Image[1][25]=water_ani.2.25
Image[1][26]=water_ani.2.26
Image[1][27]=water_ani.2.27
Image[1][28]=water_ani.2.28
Image[1][29]=water_ani.2.29
Image[1][30]=water_ani.2.30
Image[1][31]=water_ani.2.31
Image[2][0]=water_ani.3.0
Image[2][1]=water_ani.3.1
Image[2][2]=water_ani.3.2
Image[2][3]=water_ani.3.3
Image[2][4]=water_ani.3.4
Image[2][5]=water_ani.3.5
Image[2][6]=water_ani.3.6
Image[2][7]=water_ani.3.7
Image[2][8]=water_ani.3.8
Image[2][9]=water_ani.3.9
Image[2][10]=water_ani.3.10
Image[2][11]=water_ani.3.11
Image[2][12]=water_ani.3.12
Image[2][13]=water_ani.3.13
Image[2][14]=water_ani.3.14
Image[2][15]=water_ani.3.15
Image[2][16]=water_ani.3.16
Image[2][17]=water_ani.3.17
Image[2][18]=water_ani.3.18
Image[2][19]=water_ani.3.19
Image[2][20]=water_ani.3.20
Image[2][21]=water_ani.3.21
Image[2][22]=water_ani.3.22
Image[2][23]=water_ani.3.23
Image[2][24]=water_ani.3.24
Image[2][25]=water_ani.3.25
Image[2][26]=water_ani.3.26
Image[2][27]=water_ani.3.27
Image[2][28]=water_ani.3.28
Image[2][29]=water_ani.3.29
Image[2][30]=water_ani.3.30
Image[2][31]=water_ani.3.31
Image[3][0]=water_ani.4.0
Image[3][1]=water_ani.4.1
Image[3][2]=water_ani.4.2
Image[3][3]=water_ani.4.3
Image[3][4]=water_ani.4.4
Image[3][5]=water_ani.4.5
Image[3][6]=water_ani.4.6
Image[3][7]=water_ani.4.7
Image[3][8]=water_ani.4.8
Image[3][9]=water_ani.4.9
Image[3][10]=water_ani.4.10
Image[3][11]=water_ani.4.11
Image[3][12]=water_ani.4.12
Image[3][13]=water_ani.4.13
Image[3][14]=water_ani.4.14
Image[3][15]=water_ani.4.15
Image[3][16]=water_ani.4.16
Image[3][17]=water_ani.4.17
Image[3][18]=water_ani.4.18
Image[3][19]=water_ani.4.19
Image[3][20]=water_ani.4.20
Image[3][21]=water_ani.4.21
Image[3][22]=water_ani.4.22
Image[3][23]=water_ani.4.23
Image[3][24]=water_ani.4.24
Image[3][25]=water_ani.4.25
Image[3][26]=water_ani.4.26
Image[3][27]=water_ani.4.27
Image[3][28]=water_ani.4.28
Image[3][29]=water_ani.4.29
Image[3][30]=water_ani.4.30
Image[3][31]=water_ani.4.31
Image[4][0]=water_ani.5.0
Image[4][1]=water_ani.5.1
Image[4][2]=water_ani.5.2
Image[4][3]=water_ani.5.3
Image[4][4]=water_ani.5.4
Image[4][5]=water_ani.5.5
Image[4][6]=water_ani.5.6
Image[4][7]=water_ani.5.7
Image[4][8]=water_ani.5.8
Image[4][9]=water_ani.5.9
Image[4][10]=water_ani.5.10
Image[4][11]=water_ani.5.11
Image[4][12]=water_ani.5.12
Image[4][13]=water_ani.5.13
Image[4][14]=water_ani.5.14
Image[4][15]=water_ani.5.15
Image[4][16]=water_ani.5.16
Image[4][17]=water_ani.5.17
Image[4][18]=water_ani.5.18
Image[4][19]=water_ani.5.19
Image[4][20]=water_ani.5.20
Image[4][21]=water_ani.5.21
Image[4][22]=water_ani.5.22
Image[4][23]=water_ani.5.23
Image[4][24]=water_ani.5.24
Image[4][25]=water_ani.5.25
Image[4][26]=water_ani.5.26
Image[4][27]=water_ani.5.27
Image[4][28]=water_ani.5.28
Image[4][29]=water_ani.5.29
Image[4][30]=water_ani.5.30
Image[4][31]=water_ani.5.31
Image[5][0]=water_ani.6.0
Image[5][1]=water_ani.6.1
Image[5][2]=water_ani.6.2
Image[5][3]=water_ani.6.3
Image[5][4]=water_ani.6.4
Image[5][5]=water_ani.6.5
Image[5][6]=water_ani.6.6
Image[5][7]=water_ani.6.7
Image[5][8]=water_ani.6.8
Image[5][9]=water_ani.6.9
Image[5][10]=water_ani.6.10
Image[5][11]=water_ani.6.11
Image[5][12]=water_ani.6.12
Image[5][13]=water_ani.6.13
Image[5][14]=water_ani.6.14
Image[5][15]=water_ani.6.15
Image[5][16]=water_ani.6.16
Image[5][17]=water_ani.6.17
Image[5][18]=water_ani.6.18
Image[5][19]=water_ani.6.19
Image[5][20]=water_ani.6.20
Image[5][21]=water_ani.6.21
Image[5][22]=water_ani.6.22
Image[5][23]=water_ani.6.23
Image[5][24]=water_ani.6.24
Image[5][25]=water_ani.6.25
Image[5][26]=water_ani.6.26
Image[5][27]=water_ani.6.27
Image[5][28]=water_ani.6.28
Image[5][29]=water_ani.6.29
Image[5][30]=water_ani.6.30
Image[5][31]=water_ani.6.31
---------------------------

(http://sourceforge.net/p/simutrans/code/HEAD/tree/pak128.newlandscape/landscape/grounds/water_ani.png?format=raw)

When I try to compile the pak file, makeobj gets "stuck" without crashing and needs to be manually killed.
Does it overflow (having 32 animations per water depth)? Formerly it compiled it flawlessly.
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 27, 2013, 11:40:15 AM
Afaict, the code to write this type of object was not changed for months (including the writer code for obj=ground and all the image writing stuff). Either a completely subtile bug was introduced anywhere else or this executable is broken.
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 27, 2013, 12:15:58 PM
Quote from: Dwachs on September 27, 2013, 11:40:15 AM
Afaict, the code to write this type of object was not changed for months

Actually, I noticed this since Kieron's first makeobj compiles (early spring, IIRC).

Quote from: Dwachs on September 27, 2013, 11:40:15 AM
this executable is broken.

I had the same problem with all double height executables released by Kieron...

The workaround is either compile this single object with a non-double height makeobj or temporarily switch to a non-animated water ground.

I wonder if it can be some array overflow (6*32=192 images, maybe somewhere it's limited to 128 image slots)
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: kierongreen on September 27, 2013, 01:50:16 PM
Could be a signed/unsigned char problem yes. Note that my Windows makeobl compiles are very much unofficial - I make them in MinGW running inside Wine in Linux so there could well be weirdness there!
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 27, 2013, 02:23:22 PM
But so far they're the only makeobj builds available...
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Markohs on September 27, 2013, 02:43:59 PM
Just compiled one with last svn version, try it. You might need Microsoft C++ redistributable since I compiled with VS

https://dl.dropboxusercontent.com/u/30024783/Makeobj.exe (https://dl.dropboxusercontent.com/u/30024783/Makeobj.exe)

I tried it and seems to work:


C:\t>Makeobj.exe pak128
Makeobj version 55.2 for Simutrans 112.4 Nightly and higher

Makeobj version 55.2 for Simutrans 112.4 Nightly and higher

(c) 2002-2012 V. Meyer, Hj. Malthaner, M. Pristovsek & Simutrans development team

Image size is set to 128x128
writing invidual files to ./
   reading file ./w.dat
   writing file ./ground.Water.pak
      packing ground.Water
C:\t>
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 27, 2013, 02:50:59 PM
Here is another build, there was an memory error. Maybe this works better than Markohs' compile :P

http://simutrans-germany.com/files/upload/makeobj-r6762.exe.zip
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Markohs on September 27, 2013, 02:54:19 PM
hehe ninja svn commit! ;)

Anyway my version is like half the binary size.
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 27, 2013, 03:14:33 PM
you won :)
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 27, 2013, 03:14:42 PM
Thank you both!

Quote from: Markohs on September 27, 2013, 02:43:59 PM
Just compiled one with last svn version, try it. You might need Microsoft C++ redistributable since I compiled with VS

https://dl.dropboxusercontent.com/u/30024783/Makeobj.exe (https://dl.dropboxusercontent.com/u/30024783/Makeobj.exe)

Windows complains (after intalling Microsoft C++ redistributable) that "Makeobj in not a vaild Win32 application"

Quote from: Dwachs on September 27, 2013, 02:50:59 PM
Here is another build, there was an memory error. Maybe this works better than Markohs' compile :P

http://simutrans-germany.com/files/upload/makeobj-r6762.exe.zip
Wierd, extremely wierd.
If I run makeobj pak128 ./ water_ani.dat it compiles it properly, BUT if I run makeobj pak128 ./ ./ it gets stuck again when it reaches water_ani's turn...
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Markohs on September 27, 2013, 04:23:13 PM
Quote from: Fabio on September 27, 2013, 03:14:42 PM
Thank you both!
Windows complains (after intalling Microsoft C++ redistributable) that "Makeobj in not a vaild Win32 application"

Oh, you have Windows XP?

This one should work in XP(incorporates the bug fix Dwachs did, @6762):

https://dl.dropboxusercontent.com/u/30024783/Makeobj_xp.exe (https://dl.dropboxusercontent.com/u/30024783/Makeobj_xp.exe)
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Ters on September 27, 2013, 04:29:31 PM
I sense that Windows XP will be the baseline for Windows for at least five years to come.
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Markohs on September 27, 2013, 04:35:19 PM
Quote from: Ters on September 27, 2013, 04:29:31 PM
I sense that Windows XP will be the baseline for Windows for at least five years to come.

Yep, I just didn't bothered to change the plattform toolset, it defaults to Windows Vista ++ in MSVC 2012 and didn't needed to change, since I have Windows 7 on all my computers, and don't use to release binaries.

Quote from: Dwachs on September 27, 2013, 03:14:33 PM
you won :)

Well, both binaries had problems so we both failed so far. ;)
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 27, 2013, 05:09:32 PM
Please try this, there was a bug in the image-writing routines.

http://simutrans-germany.com/files/upload/makeobj-6764.exe.zip
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: z9999+ on September 28, 2013, 03:22:23 AM
Makeobj which Markohs was attached writes correct image, but latest makeobj which Dwachs was attached doesn't write correct image.
Right 1px of each line is lacking.

(http://i.imgur.com/Ecn2S4u.png)
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 28, 2013, 08:30:07 AM
New makeobj, bug was already fixed by prissi.

http://simutrans-germany.com/files/upload/makeobj-r6766.exe.zip

Fabio, does this version work for you ?
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 28, 2013, 10:06:21 AM
Quote from: Dwachs on September 28, 2013, 08:30:07 AM
Fabio, does this version work for you ?

Still not  :-[

S:\PAK128\landscape\grounds>..\..\makeobj pak128 ./test.pak ./
Makeobj version 55.2 for Simutrans 112.4 Nightly and higher

Makeobj version 55.2 for Simutrans 112.4 Nightly and higher

(c) 2002-2012 V. Meyer, Hj. Malthaner, M. Pristovsek & Simutrans development team

Image size is set to 128x128
writing file ./test.pak
   reading file ./basement.dat
      packing ground.Basement
   reading file ./fences.dat
      packing ground.Fence
libpng warning: Interlace handling should be turned on when using png_read_image
   reading file ./marker.dat
      packing ground.Marker
   reading file ./sidewalk.dat
      packing misc.Sidewalk
   reading file ./slope.dat
      packing ground.Slopes
   reading file ./TextureGrounds.dat
      packing ground.LightTexture
      packing ground.ClimateTexture
      packing ground.ShoreTrans
      packing ground.SlopeTrans
      packing ground.Borders
   reading file ./tunnel_ground.dat
      packing misc.TunnelTexture
   reading file ./water_ani.dat



And it gets stuck there.

Single file compile instead works nice:
S:\PAK128\landscape\grounds>..\..\makeobj pak128 water-test.pak water_ani.dat
Makeobj version 55.2 for Simutrans 112.4 Nightly and higher

Makeobj version 55.2 for Simutrans 112.4 Nightly and higher

(c) 2002-2012 V. Meyer, Hj. Malthaner, M. Pristovsek & Simutrans development team

Image size is set to 128x128
writing file water-test.pak
   reading file water_ani.dat
      packing ground.Water
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 28, 2013, 10:16:40 AM
Maybe your disc is full ?

Edit: Last try to get it running for you:
http://simutrans-germany.com/files/upload/makeobj-r6767.exe.zip
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 28, 2013, 11:00:17 AM
Still nothing...

It DOES create a file (attached here (https://dl.dropboxusercontent.com/u/30458516/ground.all.zip)) but it still gets stuck and doesn't finalize it. The single ground.Water.pak is rather big (1.6 Mb), could this be a reason?

The disk has room enough for all the other files (it also compiles the huge RES_blocks.pak!).
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 28, 2013, 11:04:38 AM
I could pak the landscape files of pak128 without problems (but on Linux). I do not have Windows to test.
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 28, 2013, 11:11:11 AM
Quote from: Dwachs on September 28, 2013, 11:04:38 AM
I could pak the landscape files of pak128 without problems.

Could you try also Pak128.newlandscape (on the SVN) please? The files there are somewhat different.
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 28, 2013, 04:38:31 PM
It crashes makeobj :P
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 28, 2013, 09:21:24 PM
makefile is severely outdated.
pyton and win batch compile all but crash on water. There is where I narrowed the issue to. :-[
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 29, 2013, 10:09:13 AM
New version attached. At least it does not crash for me...

http://simutrans-germany.com/files/upload/makeobj-r6768.exe.zip
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: z9999+ on September 29, 2013, 12:08:21 PM
Sorry, this is a little off-topic, but the latest makeobj still having some problem ?

Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 29, 2013, 04:47:47 PM
Still problems, hopefully solved with r6770 :/

http://simutrans-germany.com/files/upload/makeobj-r6770.exe.zip
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 30, 2013, 12:15:50 PM
Great, it works now!

Can I ask what was wrong?
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Dwachs on September 30, 2013, 02:13:47 PM
The main bug was a failure in the read-png-file implementation. I blame the non-existent documentation of libpng for this: one had to allocate rows of pixels, but the value returned by libpng how many pixels should be allocated was wrong. One had to call a magic stupid_lib_update_your_internal_data function.

And there were some arrays that were way too large in the code and my inability to properly fix one out-of-bounds access in the image_writer class.

Thanks for reporting that everything works :)
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: Fabio on September 30, 2013, 02:45:46 PM
Thank you for fixing it!  ;)
Title: Re: Makeobj for 6655+ stuck on water with large animation & depths
Post by: prissi on October 02, 2013, 12:45:39 PM
Thank you, that part of libpng was used aparently wrong for ages.