��##���Ji{I�;{��H����5!r�v��{|�K�@�LK}m,�6����LI�>( J�!mrٵҀ�R�k{i��mJKGpHIK�\LIs�s�>�B���B���@J��L�KIFG�p�~t���>sIIIr�@k���{tGFGp���"�|�B�J�MIXʀJ����{L��i�UI<�>����{irI�{���iH{KJL��j{I�|���JJ{i�J���M���x|JL �� ���Ɍ�c!!�{L��JL(}#}�6�E���J!H�Mr{t���xIJL�|���� �B��r{��I�������B"I�{L #������J�LL(�.�:�I��}�@���y����( 8�芸�NJ֊����!�0�?�N�]�l��L[@����9����������������������������������#-9GWi}�����
%=Vo������0I:ay����� !9Qi�������!)/357�������.� _� ^_� ^_� ^^^_� ]�� ]]� ^�da� afca� eeacea__� �e]^__� fd�
�A���,
]^]]^^^__��S]]��
__� ^�
�^�'�q_� �@]]]�^�Z��*]\\\]�de�C��[\\�c�c^�6a��c[[�e�e�`� _�\c[[[d��fbe�0�\\cc���be`��� !��2��B�eaf�0uK��ccc�B��� KN�����B�-��0c�L��C�.�eact� Kv��D�/ct{�N�D��D J{{M� LN�C�|Kv�0�B�,JKKLN�`L�BJKtLKv��0�B�,u����B�,L�tKKN��v�B�,uL�tKt��N�-uL�ucLK�؆}�.u�mK��}N�-m|i�7�>�F��{I�@��0�8I�H��XK��X�x؈�x�����%����
�"�ՠ���� ����5������,�ԡ��N�N�ՠ������J�ؒ�֠�� ��Ԡ�;�o���2�#�8�C蛨"���\��c�i�S���ɶ���K�N��c`��da�ԩ��LN�'c`�C؍ԡ`�+�'eaa�ԫ��t �j��p� ���~�-�)ea�-��7t��! �-�/���Z�+j aԭ�eab�0�]��!ئ��W
! !��ed�/��`�1���!�!(�-cȌNX��Kȸ{LXj jIL##�
�.��r#"�2��{i�s��{J���`
L #8s�
i�^tr (#""sHJ{i���'�.�
{L(#8
(s�.KL�*$�s( �r!!�r��{L# �(r"(#�б!H{r��
s#�$����##�##���IHJ�(�$$���$#�$$$##���
D[@���������'�6�E�T�c���r���������@���Έ݈@���
����0�?�N�]�n�}�����@���ȉ��������1�@�O�^��|�����Ԋ����͊��ԡ�A���
�ՠ��Ԉ��?�N�?ՠԠԡ�r�������~������شؽ�����M������Ⱦ�����Ҍ@�O֠����?�������L�҉ь��6�9�?��=���ҡ���ƨ�}���Ԡ��C��|�耉��ѵՠ`����}`a���Ҋ�M��``�����|�`aa��?�������8�b�C�B�`acce����}���a�B�b���@�{�>da��1�z��caZ�B��|�Q�{�|afc�@�������aZaZc`bceb�@�R�eea�Ɏ����ٿ�� ���Z`ee�?�eae���H�����D����cؿ�M���Ϗ
I�HH����@�����c�N��Έ@��Ccc����ecec�N��I����=ZZ`���ffe�A���y�4�o������efdccc�҉��h�1������ ed!ttt!!���|���>ac��P�I���>{Lut���|�����l{J�B��ttuK{L�;
��IiJIiII�~K{KL�A���(�r�@ca�غݼ����{�=���<{tK|L ��@��x�h�+�M�=�>������e�e�L��|���b`X��C�BccDZ�A[c�>b��iI}�����8N�����@�C�`b��ؿ�;�:��c[e��be`��5Ѐ�ՠ8|H�@<�Bȃ�:�N߾����=��@{uu�8}L�{�@HH<�b�������C����к�=����|��r��}Iՠn�@�BIHGi�J����t�?��=�n��JJIr�_HGH����a`�7�ՠ��JKt��{N��>tr�,q|J�@{�LKI����tMMMՀ<��q�H��GHHI|�H�H��qHIrIJi�����>�|vL�u��'���FFpGHp����{��A��@��rK�tu����|��~LI��ЀH�k�������ًIrK��,�>{{��##���Ji{I�;{��H����5!r�v��{|�K�@�LK}m,�6����LI�>( J�!mrٵҀ���k{i�l�mJKGpHIK�\LIs�s�>�B���B���@J��L�KIFG�p�~t���>sIIIr�@k���{tGFGp���"�|�B�J�MIXҀJ����{L��i�UI<�>����{irI�{���iH{KJL��j{I�|���JJ{i�J���M���x|JL �� ���Ɍ�c!!�{L��JL(}#}�6�E���J!H�Mr{t���xIJL�|���� �B��r{��I�������B"I�{L #������J�LL(�.�:�I��}�@���y����( 8�芸�NJ֊����!�0�?�N�]�l��L[@����9����������������������������������#-9GWi}�����
%=Vo������0I:ay����� !9Qi�������!)/357�������.
� �� ԡ� �ԡ�� ԡ� �ԡ��Ԡ� �da� afca� eeacea��� �eԡ��� fd�
����,�Pԡ����^�����&� �*� ��ԡ��y����Y������<�de�o� ��\[��\�c�c�Ԡ�a���[[�e�e�Ԗ �����c[[[d��fbe�0�c���be`��� !^�2�`�eaf�0uK]��B��� KN�0���B�-��0��KL�z���C�.�eaԡt� Kv��D�/�Mt{�N�D
�e��J{{M� LN�Cա�|Kv�0�B�,JKKLN�`L�B����tLKv��0�B���,u�����n��,L�tKKN��v�B�X�,uL�tKt��N�o�-uL�uԡLK�؆}�.uuաmK��}N�-m|i 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 6 12 \b1
00 \b4 \w123
1 font_addl.png 8bpp 10 10 5 13 0 -2 normal nocrop
2 font_addl.png 8bpp 30 10 3 13 0 -2 normal nocrop
3 font_addl.png 8bpp 50 10 5 13 0 -2 normal nocrop
4 font_addl.png 8bpp 70 10 7 13 0 -2 normal nocrop
5 * 6 12 \b1
01 \b4 \w123
6 font_addl.png 8bpp 10 30 3 8 0 0 normal nocrop
7 font_addl.png 8bpp 30 30 1 8 0 0 normal nocrop
8 font_addl.png 8bpp 50 30 3 8 0 0 normal nocrop
9 font_addl.png 8bpp 70 30 4 8 0 0 normal nocrop
10 * 6 12 \b1
02 \b4 \w123
11 font_addl.png 8bpp 10 40 7 21 0 -2 normal nocrop
12 font_addl.png 8bpp 30 40 2 21 0 -2 normal nocrop
13 font_addl.png 8bpp 50 40 7 21 0 -2 normal nocrop
14 font_addl.png 8bpp 70 40 11 21 0 -2 normal nocrop
nml-0.4.5/regression/expected/005_error.nfo0000644000567200056720000000151213315644406021657 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 9 0B 00 1F 02 "zorg" 00
1 * 9 0B 00 7F 02 "care" 00
// param[127] = 14
2 * 9 0D 7F \D= FF 00 \dx0000000E
// param[125] = (param[2] * 12)
3 * 9 0D 7D \D* 02 FF \dx0000000C
// param[126] = (param[1] + param[125])
4 * 5 0D 7E \D+ 01 7D
5 * 66 0B 03 1F FF "De wissels zijn bevroren, onze excuses voor het ongemak." 00 "42" 00 7F 7E
6 * 42 0B 03 7F FF "Something bad (tm) has happened." 00 "42" 00 7F 7E
nml-0.4.5/regression/expected/026_asl.nfo0000644000567200056720000001323413315644406021314 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
// Name: layout1 - feature 11
0 * 23 02 11 FF \b65 \dx00000000 \wx0000
\dx00000000 \wx0002 \b0 \b0 \b0 \b16 \b16 \b16 80
// Name: layout1@registers - feature 11
1 * 38 02 11 FF 89
44 60 \dx000000FF \dx00000A68 \dx00000001
\2sto 1A 00 \dx00000080
\b1
\wx00FF \dx00000000 \dx00000000
\wx00FF //
2 * 7 03 11 01 00 \b0
\wx00FF // layout1;
3 * 6 01 0F \b2 FF \wx0003
4 opengfx_generic_trams1.pcx 8bpp 64 56 20 19 -14 -5 normal
5 * 1 00
6 * 1 00
7 * 257 00
00 00 00 00 00 00 00 00 00 00 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
81 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 00 00 00 00 00 00 00 00 00 FF
8 * 257 00
00 00 00 00 00 00 00 00 00 00 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
82 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 00 00 00 00 00 00 00 00 00 FF
9 * 1 00
// Name: layout2 - feature 0F
10 * 38 02 0F FF \b66 \dx00000000 \wx0000
\dx80000000 \wx0002 \b0 \b0 \b0 \b16 \b16 \b16 80
\dx80018000 \wx000F \b0 \b0 \b0 \b16 \b16 \b16 81 83 82
// Name: layout2@registers - feature 0F
11 * 80 02 0F FF 89
43 20 \dx000000FF
\2sto 1A 20 \dx00000080
\2r 62 00 29 \dx00000001
\2^ 1A 20 \dx00000001
\2sto 1A 20 \dx00000081
\2r 1A 20 \dx00000001
\2sto 1A 20 \dx00000082
\2r 1A 20 \dx00000001
\2sto 1A 00 \dx00000083
\b1
\wx00FF \dx00000000 \dx00000000
\wx00FF //
12 * 6 01 11 \b2 FF \wx0003
13 opengfx_generic_trams1.pcx 8bpp 64 56 20 19 -14 -5 normal
14 * 1 00
15 * 1 00
16 * 257 00
00 00 00 00 00 00 00 00 00 00 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
81 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 00 00 00 00 00 00 00 00 00 FF
17 * 257 00
00 00 00 00 00 00 00 00 00 00 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
82 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 00 00 00 00 00 00 00 00 00 FF
18 * 1 00
// Name: layout2 - feature 11
19 * 38 02 11 FE \b66 \dx00000000 \wx0000
\dx80000000 \wx0002 \b0 \b0 \b0 \b16 \b16 \b16 80
\dx80018000 \wx000F \b0 \b0 \b0 \b16 \b16 \b16 81 83 82
// Name: layout2@registers - feature 11
20 * 80 02 11 FE 89
44 20 \dx000000FF
\2sto 1A 20 \dx00000080
\2r 60 00 29 \dx00000001
\2^ 1A 20 \dx00000001
\2sto 1A 20 \dx00000081
\2r 1A 20 \dx00000001
\2sto 1A 20 \dx00000082
\2r 1A 20 \dx00000001
\2sto 1A 00 \dx00000083
\b1
\wx00FE \dx00000000 \dx00000000
\wx00FE //
21 * 7 03 11 01 01 \b0
\wx00FE // layout2;
22 * 10 00 0F \b1 01 FF \wx0001
15 \wx0008
// Name: @CB_FAILED_LAYOUT0F
23 * 17 02 0F FE \b0 \dx00000000
\dx00000000 \b0 \b0 \b0 \b0 \b0
// Name: @CB_FAILED0F
24 * 23 02 0F FE 89
0C 00 \dx0000FFFF
\b1
\wx8000 \dx00000000 \dx00000000 // graphics callback -> return 0
\wx00FE // Non-graphics callback, return graphics result
// Name: @action3_0
25 * 23 02 0F FF 89
0C 00 \dx0000FFFF
\b1
\wx00FE \dx0000015B \dx0000015B // @CB_FAILED0F;
\wx00FF // layout2;
26 * 7 03 0F 01 01 \b0
\wx00FF // @action3_0;
nml-0.4.5/regression/expected/031_aircraft.nfo0000644000567200056720000000145713315644406022330 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d4
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "A"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\30" "NML regression test" 00 "A test newgrf testing NML" 00
3 * 26 00 03 \b7 01 FF \wx0014
1A \dx000B0612
04 1E
03 1E
06 07
0C 3F
1F \wx0400
0F \wx0115
4 * 23 04 03 7F 01 FF \wx0014 "Test plane 0x14" 00
nml-0.4.5/regression/expected/021_grf_parameter.nfo0000644000567200056720000000340113315644406023341 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d3
1 * 817 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000001
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 03
"C" "PARA"
"C" \d0
"T" "NAME" 7F "Disable gridlines" 00
"T" "DESC" 7F "This setting allows to replace all ground sprites such that the landscape is painted (mostly) without grid lines. Note that roads and train tracks don't yet follow this rule" 00
"B" "TYPE" \w1 01
"B" "MASK" \w3 \b0 \b0 \b1
"B" "DFLT" \w4 \dx00000001
00
"C" \d1
"T" "NAME" 7F "Replace the transmitter tower by a rock" 00
"T" "DESC" 7F "Enable to replace the transmitter tower by a rock (useful for early scenarios without telecomunication towers)" 00
"B" "TYPE" \w1 01
"B" "MASK" \w3 \b0 \b1 \b1
"B" "DFLT" \w4 \dx00000000
00
"C" \d2
"T" "NAME" 7F "Landscape type" 00
"T" "DESC" 7F "Select the landscape (ground tile) type" 00
"B" "MASK" \w1 01
"B" "LIMI" \w8 \d0 \d1
"C" "VALU"
"T" \d0 7F "normal (according to climate)" 00
"T" \d1 7F "alpine (temperate grass in arctic)" 00
"T" \d2 7F "temperate (not implemented)" 00
"T" \d3 7F "arctic (not implemented)" 00
"T" \d4 7F "tropical (not implemented)" 00
"T" \d5 7F "toyland (not implemented)" 00
00
"B" "DFLT" \w4 \dx00000000
00
00
"B" "PALS" \w1 "A"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\21" "NML regression test" 00 "A test newgrf testing NML" 00
// param[10] = param[1]
3 * 5 0D 0A \D= 01 00
nml-0.4.5/regression/expected/005_error.grf0000644000567200056720000000031713315644406021655 0ustar jenkinsjenkins00000000000000GRF�
� �zorg �care �
� �
}��
~}B��De wissels zijn bevroren, onze excuses voor het ongemak.42~*��Something bad (tm) has happened.42~nml-0.4.5/regression/expected/002_sounds.grf0000644000567200056720000000035413315644406022035 0ustar jenkinsjenkins00000000000000GRF�
� �
�I �
�J �
�I �
�K �
�L �
�J����4Vx�
��4Vx ��If
��KL3��beef.wav���
��beef.wav���nml-0.4.5/regression/expected/011_snowline.grf0000644000567200056720000000104113315644406022352 0ustar jenkinsjenkins00000000000000GRF�
�6�CINFOBVRSNBMINVBNPARBPALSABBLTR84�NMLNML regression testA test newgrf testing NML��� !#%'(*,./////13578:<>?ACEFHJLMOQSTVXZ[]_abdffhjkmoqrtvxy{}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������|yurnkgd`]YURNKGD@=952.+'$
nml-0.4.5/regression/expected/003_assignment.nfo0000644000567200056720000000236013315644406022676 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
// param[0] = 3
0 * 9 0D 00 \D= FF 00 \dx00000003
// param[1] = 4
1 * 9 0D 01 \D= FF 00 \dx00000004
// param[2] = (param[0] + param[1])
2 * 5 0D 02 \D+ 00 01
// param[3] = (param[0] * 3)
3 * 9 0D 03 \D* 00 FF \dx00000003
// param[4] = 11
4 * 9 0D 04 \D= FF 00 \dx0000000B
// param[5] = (param[4] & 3)
5 * 9 0D 05 \D& 04 FF \dx00000003
// param[127] = (param[1] + param[2])
6 * 5 0D 7F \D+ 01 02
// param[6] = (param[127] + param[3])
7 * 5 0D 06 \D+ 7F 03
// param[127] = param[3]
8 * 5 0D 7F \D= 03 00
9 * 7 06
7F 01 FF \wx0003
FF
// param[7] = param[0]
10 * 5 0D 07 \D= 00 00
11 * 7 06
00 01 FF \wx0001
FF
// param[0] = 5
12 * 9 0D 00 \D= FF 00 \dx00000005
// param[127] = param[3]
13 * 5 0D 7F \D= 03 00
14 * 12 06
00 01 FF \wx0001
7F 01 FF \wx0003
FF
// param[0] = param[0]
15 * 5 0D 00 \D= 00 00
nml-0.4.5/regression/expected/012_basecost.nfo0000644000567200056720000000313113315644406022326 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d20
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "A"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\12" "NML regression test" 00 "A test newgrf testing NML" 00
// param[127] = (param[2] + 8)
3 * 9 0D 7F \D+ 02 FF \dx00000008
4 * 7 06
7F 01 FF \wx0008
FF
5 * 9 00 08 \b1 01 FF \wx0001
08 00
6 * 14 00 08 \b1 06 FF \wx002A
08 06 06 06 06 06 06
7 * 13 00 08 \b1 05 FF \wx0042
08 06 06 06 06 06
// param[126] = (param[1] + 9)
8 * 9 0D 7E \D+ 01 FF \dx00000009
9 * 27 06
7E 01 FF \wx0008
7E 01 FF \wx0009
7E 01 FF \wx000A
7E 01 FF \wx000B
7E 01 FF \wx000C
FF
10 * 13 00 08 \b1 05 FF \wx000F
08 00 00 00 00 00
11 * 9 00 08 \b1 01 FF \wx0034
08 15
// param[124] = param[11]
12 * 5 0D 7C \D= 0B 00
13 * 7 06
7C 01 FF \wx0003
FF
// param[125] = param[0]
14 * 5 0D 7D \D= 00 00
// param[122] = (param[11] + 1)
15 * 9 0D 7A \D+ 0B FF \dx00000001
16 * 7 06
7A 01 FF \wx0003
FF
// param[123] = param[0]
17 * 5 0D 7B \D= 00 00
// param[124] = (param[123] + 8)
18 * 9 0D 7C \D+ 7B FF \dx00000008
19 * 12 06
7D 02 FF \wx0005
7C 01 FF \wx0008
FF
20 * 9 00 08 \b1 01 FF \wx0000
08 00
nml-0.4.5/regression/expected/017_articulated_tram.grf0000644000567200056720000000376013315644406024060 0ustar jenkinsjenkins00000000000000GRF�
��6�CINFOBVRSNBMINVBNPARBPALSWBBLTR84�NMLNML regression testA test newgrf testing NML�������X���J��X(��
HL ����X�M�-$���XFoster Turbo Tram���� �
���
�� �� ��X������� ��X�w������������������������������ ���� �����0���������Y��j�bȃ��ʃ��Ȅ��ʄ��H��{ǵ� ���)�� ����������ˠ�����ˠ�������̨�9��j�����7���ʄ��6�8������ʨ�����%�$�������ǐ �ʃ�����ʸ$
˂XȄ������6̂X�j��Ƀ���������+��Y�������������H��ȵ��Z�6��H�8
�����j�����؈��<�J�����������l������������������5�����XX������������
����?�C�"�&����e�f�A�ˀ�ˁ���������˃�����������ȈT������c�rН���� �˂XXXX�ȇ��������j���j��������j����؈��3��ː@������̠�������������̸���˸�����,���������ɨ��,�������U�A�����,��́��X����X�T ǀ���jX���B����f�����+�n�ǁ����/����X��ʀ����X�f4�(�BX�����y����j�
��������
������������������������1����0����ʁ�����I����ɀ��� �:�M�44���a��
��������j�� ؈$��&�ːL������˨
�����������+�������5�$��ʄ������������X�G������k�[���ɀ���Z������ɀ���+�H�|�˂X�Ȁ���ɸ$
�X�j�Ɂ��Ʌ����������5������:��C����H�����H�`���������j��؈6������������l����������������������
��!����XX�$���7�
�!�%�4������/��(�-�T�z��q́���������˃�ʀ��� ���蹈T������п�i�n�
����XXXX���И����j���j��������������������̠���������+�,���������A�����j��������A�Xȃ��W���;�,�U����P�B��B���X���,��X�� ʃ��jX���,�ʄ����j���X���������X�<ʵ���X�ȹ�X�ʵ����$nml-0.4.5/regression/expected/016_basic_airporttiles.nfo0000644000567200056720000000136413315644406024417 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 6 01 11 \b1 FF \wx0001
1 opengfx_trains_start.pcx 8bpp 142 112 8 22 -3 -10 normal
// Name: small_airport_tiles_graphics - feature 11
2 * 15 02 11 FF \b1 \dx00000F8D
\dxC0000000 \b0 \b0 80
3 * 16 00 11 \b4 01 FF \wx0000
08 00
0F \wx0103
10 01
11 01
4 * 7 03 11 01 00 \b0
\wx00FF // small_airport_tiles_graphics;
nml-0.4.5/regression/expected/002_sounds.nfo0000644000567200056720000000165013315644406022041 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
// param[0] = 73
0 * 9 0D 00 \D= FF 00 \dx00000049
// param[1] = 74
1 * 9 0D 01 \D= FF 00 \dx0000004A
// param[2] = 73
2 * 9 0D 02 \D= FF 00 \dx00000049
// param[3] = 75
3 * 9 0D 03 \D= FF 00 \dx0000004B
// param[4] = 76
4 * 9 0D 04 \D= FF 00 \dx0000004C
// param[5] = 74
5 * 9 0D 05 \D= FF 00 \dx0000004A
6 * 3 11 \w4
7 ** beef.wav
8 * 8 FE 00 \dx78563412 \wx0003
9 ** beef.wav
10 * 8 FE 00 \dx78563412 \wx0003
11 * 9 00 0C \b1 01 FF \wx0049
08 66
12 * 10 00 0C \b1 02 FF \wx004B
08 4C 33
nml-0.4.5/regression/expected/018_airport_tile.grf0000644000567200056720000000026713315644406023231 0ustar jenkinsjenkins00000000000000GRF�
��6�CINFOBVRSNBMINVBNPARBPALSABBLTR84�NMLNML regression testA test newgrf testing NML��hJ"��nml-0.4.5/regression/expected/009_replace.grf0000644000567200056720000000165313315644406022147 0ustar jenkinsjenkins00000000000000GRF�
��6�CINFOBVRSNBMINVBNPARBPALSWBBLTR84�NML NML regression testA test newgrf testing NML�
��� ��� �
���
w������������������������������ ���� �����0���������Y��j�bȃ��ʃ��Ȅ��ʄ��H��{ǵ� ���)��w���������������������������� ���� �����0���������Y��j�bȃ��ʃ��Ȅ��ʄ��H��{ǵ� ���)��6 �������������-���Q�Y�Y�Y�Y 3 ������
������ ��-�
��Y�Y�Y�Y
^
������������#�����<������Z�7������x���T�����<�����ܰ���������6�7�T�c4 �������
��������G�G�G�GЊ2 ��������������� �G�G�G�G��
`
������������4�����;�N�������h������9����TЖ�������ʈ��䠂������2�6�L�fnml-0.4.5/regression/expected/008_railtypes.grf0000644000567200056720000000006113315644406022537 0ustar jenkinsjenkins00000000000000GRF�
��RAIL(ELRLnml-0.4.5/regression/expected/001_action8.grf0000644000567200056720000000022413315644406022062 0ustar jenkinsjenkins00000000000000GRF�
��6�CINFOBVRSNBMINVBNPARBPALSABBLTR84�NMLNML regression testA test newgrf testing NMLnml-0.4.5/regression/expected/008_railtypes.nfo0000644000567200056720000000076013315644406022551 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 21 00 10 \b3 01 FF \wx0000
08 "RAIL"
14 \wx0028
0E \b1 "ELRL"
nml-0.4.5/regression/expected/015_basic_object.grf0000644000567200056720000000041313315644406023131 0ustar jenkinsjenkins00000000000000GRF�
��6�CINFOBVRSNBMINVBNPARBPALSABBLTR84�NMLNML regression testA test newgrf testing NML!���MiscellaneousBasic object���H�)��MISC �
�ɖ
��
��nml-0.4.5/regression/expected/009_replace.nfo0000644000567200056720000000211213315644406022142 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d12
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "W"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\9" "NML regression test" 00 "A test newgrf testing NML" 00
3 * 5 0A \b1 \b2 \w3092
4 opengfx_generic_trams1.pcx 8bpp 48 56 8 18 -3 -10 normal
5 opengfx_generic_trams1.pcx 8bpp 48 56 8 18 -3 4 normal
6 * 5 05 09 FF \w6
7 oneway.png 8bpp 18 8 24 16 -12 -8 normal
8 oneway.png 8bpp 50 8 24 16 -12 -8 normal
9 oneway.png 8bpp 82 8 28 16 -14 -8 normal
10 oneway.png 8bpp 114 8 24 16 -10 -8 normal
11 oneway.png 8bpp 146 8 24 16 -10 -8 normal
12 oneway.png 8bpp 178 8 28 16 -12 -8 normal
nml-0.4.5/regression/expected/018_airport_tile.nfo0000644000567200056720000000150113315644406023225 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d4
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "A"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\18" "NML regression test" 00 "A test newgrf testing NML" 00
// Name: dirt_runway_sw_snow - feature 11
3 * 18 02 11 FF \b1 \dx00000000
\dx03224A68 \b0 \b15 \b0 \b16 \b1 \b6
4 * 7 03 11 01 00 \b0
\wx00FF // dirt_runway_sw_snow;
nml-0.4.5/regression/expected/004_deactivate.grf0000644000567200056720000000006113315644406022630 0ustar jenkinsjenkins00000000000000GRF�
�ABCD
�EFGHnml-0.4.5/regression/expected/019_switch.nfo0000644000567200056720000000411113315644406022032 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d12
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "A"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\19" "NML regression test" 00 "A test newgrf testing NML" 00
3 * 51 04 00 FF 03 \wxD000 "\98coal" 00 "\98diamonds" 00 "\98Extra info for coal mine: \7B" 00
// Name: return_switch
4 * 38 02 0A FF 89
24 60 \dxFFFFFFFF \dxFFFFF862 \dx00000001
\2psto 1A 00 \dx00000001
\b1
\wx8000 \dx00000001 \dx00000000 // Bogus range to avoid nvar == 0
\wx8000 // default: return 0;
// Name: coal_mine_subtype_switch
5 * 47 02 0A FF 89
1A 20 \dx00000004
\2psto 1A 20 \dx00000000
\2r 02 00 \dx000000FF
\b2
\wx8000 \dx00000000 \dx0000000A // 0 .. 10: return string(STR_COALMINE_MONTH_0_10);
\wx00FF \dx0000000D \dx0000000D // 13 .. 13: return_switch;
\wx8001 // default: return string(STR_COALMINE_MONTH_11);
6 * 11 00 0A \b2 01 FF \wx0000
08 00
09 00
7 * 11 00 0A \b2 01 FF \wx0000
21 40
22 03
// Name: @return_action_0
8 * 13 02 0A FE 89
10 00 \dx00000001
\b0
\wx8000 // Return computed value
// Name: @CB_FAILED_PROD
9 * 15 02 0A FD 00 \wx0000 \wx0000 \wx0000 \wx0000 \wx0000 00
// Name: @CB_FAILED0A
10 * 23 02 0A FD 89
0C 00 \dx0000FFFF
\b1
\wx8000 \dx00000000 \dx00000000 // graphics callback -> return 0
\wx00FD // Non-graphics callback, return graphics result
// Name: @action3_0
11 * 43 02 0A FD 89
0C 00 \dx0000FFFF
\b3
\wx00FF \dx00000037 \dx00000037 // coal_mine_subtype_switch;
\wx8002 \dx0000003A \dx0000003A // return string(STR_COALMINE_EXTRA_TEXT);
\wx00FE \dx0000003B \dx0000003B // return var[0x10, 0, 1]
\wx00FD // @CB_FAILED0A;
12 * 7 03 0A 01 00 \b0
\wx00FD // @action3_0;
nml-0.4.5/regression/expected/021_grf_parameter.grf0000644000567200056720000000163113315644406023340 0ustar jenkinsjenkins00000000000000GRF�
��1�CINFOBVRSNBMINVBNPARCPARACTNAMEDisable gridlinesTDESCThis setting allows to replace all ground sprites such that the landscape is painted (mostly) without grid lines. Note that roads and train tracks don't yet follow this ruleBTYPEBMASKBDFLTCTNAMEReplace the transmitter tower by a rockTDESCEnable to replace the transmitter tower by a rock (useful for early scenarios without telecomunication towers)BTYPEBMASKBDFLTCTNAMELandscape typeTDESCSelect the landscape (ground tile) typeBMASKBLIMICVALUTnormal (according to climate)Talpine (temperate grass in arctic)Ttemperate (not implemented)Tarctic (not implemented)Ttropical (not implemented)Ttoyland (not implemented)BDFLTBPALSABBLTR84�NML!NML regression testA test newgrf testing NML�
nml-0.4.5/regression/expected/030_house.nfo0000644000567200056720000002573613315644406021665 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d97
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "W"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\30" "NML regression test" 00 "A test newgrf testing NML" 00
3 * 14 04 07 FF 01 \wxDC00 "Brewery" 00
4 * 24 00 08 \b1 04 FF \wx0000
09 "PASS" "MAIL" "GRAI" "WHEA"
5 * 6 01 07 \b2 FF \wx0006
6 groundtiles.png 8bpp 10 10 64 31 -31 0 normal
7 groundtiles.png 8bpp 150 10 64 31 -31 0 normal
8 groundtiles.png 8bpp 220 10 64 31 -31 0 normal
9 * 1 00
10 * 1 00
11 * 1 00
12 brewery.png 8bpp 10 60 64 91 -31 -60 normal nocrop
13 brewery.png 8bpp 80 60 64 91 -31 -60 normal nocrop
14 brewery.png 8bpp 150 60 64 91 -31 -60 normal nocrop
15 brewery_snow.png 8bpp 10 60 64 91 -31 -60 normal nocrop
16 brewery_snow.png 8bpp 80 60 64 91 -31 -60 normal nocrop
17 brewery_snow.png 8bpp 150 60 64 91 -31 -60 normal nocrop
// Name: brewery_sprite_layout - feature 07
18 * 49 02 07 FF \b67 \dx00000F8D \wx0000
\dxC0000000 \wx0002 \b0 \b0 80 83
\dx80008001 \wx0003 \b0 \b0 \b0 \b16 \b16 \b48 85 86
\dx00000000 \wx0023 \b8 \b0 \b0 \b11 \b16 \b7 88 89 8A
// Name: brewery_sprite_layout@registers - feature 07
19 * 362 02 07 FF 89
43 20 \dx000000FF
\2cmp 1A 20 \dx00000004
\2& 1A 20 \dx00000001
\2sto 1A 20 \dx00000080 // guard
\2^ 1A 20 \dx00000001
\2sto 1A 20 \dx00000081 // !guard
\2r 40 20 \dx00000003
\2< 1A 20 \dx00000001
\2* 7D 81 20 \dxFFFFFFFF
\2sto 1A 20 \dx00000082
\2r 7D 80 20 \dxFFFFFFFF
\2* 1A 20 \dx00000002
\2+ 7D 82 20 \dxFFFFFFFF
\2sto 1A 20 \dx00000083
\2r 40 20 \dx00000003
\2cmp 1A 20 \dx00000003
\2& 1A 20 \dx00000001
\2^ 1A 20 \dx00000001
\2sto 1A 20 \dx00000084
\2r 7D 8B 20 \dxFFFFFFFF
\2cmp 1A 20 \dxFFFFFFFF
\2& 1A 20 \dx00000001
\2| 7D 84 20 \dxFFFFFFFF
\2^ 1A 20 \dx00000001
\2sto 1A 20 \dx00000085
\2r 43 20 \dx000000FF
\2cmp 1A 20 \dx00000004
\2& 1A 20 \dx00000001
\2* 1A 20 \dx00000003
\2+ 7D 8B 20 \dxFFFFFFFF
\2sto 1A 20 \dx00000086
\2r 46 20 \dx000000FF
\2cmp 1A 20 \dx00000000
\2& 1A 20 \dx00000001
\2sto 1A 20 \dx00000087
\2r 7D 8C 20 \dxFFFFFFFF
\2u< 1A 20 \dx00000001
\2^ 1A 20 \dx00000001
\2| 7D 87 20 \dxFFFFFFFF
\2^ 1A 20 \dx00000001
\2sto 1A 20 \dx00000088
\2r 46 60 \dx000000FF \dxFFFFFFFF \dx00000004
\2+ 1A 20 \dx00000C07
\2sto 1A 20 \dx00000089
\2r 46 60 \dx000000FF \dx00000036 \dx00000001
\2sto 1A 00 \dx0000008A
\b1
\wx00FF \dx00000000 \dx00000000
\wx00FF //
// Name: @return_action_0
20 * 44 02 07 FE 89
1A 20 \dx00000002
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000000
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: @return_action_1
21 * 44 02 07 FD 89
1A 20 \dx00000001
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000000
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: @return_action_2
22 * 44 02 07 FC 89
1A 20 \dxFFFFFFFF
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000000
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: @return_action_3
23 * 44 02 07 FB 89
1A 20 \dx00000000
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000001
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: brewery_layout_1
24 * 44 02 07 FB 89
7D FF 10 \dx000000FF
\b3
\wx00FE \dx00000000 \dx00000000 // 0 .. 0: @return_action_0;
\wx00FD \dx00000002 \dx00000002 // 2 .. 2: @return_action_1;
\wx00FC \dx00000001 \dx00000001 // 1 .. 1: @return_action_2;
\wx00FB // default: @return_action_3;
// Name: @return_action_0
25 * 44 02 07 FC 89
1A 20 \dxFFFFFFFF
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000000
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: @return_action_1
26 * 44 02 07 FD 89
1A 20 \dx00000000
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000001
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: @return_action_2
27 * 44 02 07 FE 89
1A 20 \dx00000002
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000000
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: @return_action_3
28 * 44 02 07 FF 89
1A 20 \dx00000001
\2sto 1A 20 \dx0000008B
\2r 1A 20 \dx00000000
\2sto 1A 00 \dx0000008C
\b1
\wx00FF \dx00000000 \dx00000000 // brewery_sprite_layout
\wx00FF // brewery_sprite_layout
// Name: brewery_layout_2
29 * 44 02 07 FF 89
7D FF 10 \dx000000FF
\b3
\wx00FC \dx00000000 \dx00000000 // 0 .. 0: @return_action_0;
\wx00FD \dx00000002 \dx00000002 // 2 .. 2: @return_action_1;
\wx00FE \dx00000001 \dx00000001 // 1 .. 1: @return_action_2;
\wx00FF // default: @return_action_3;
// Name: brewery_choose_layout
30 * 23 02 07 FF 89
5F 08 \dx00000001
\b1
\wx00FB \dx00000000 \dx00000000 // 0 .. 0: brewery_layout_1;
\wx00FF // default: brewery_layout_2;
// Name: brewery_next_frame
31 * 23 02 07 FB 89
46 00 \dx000000FF
\b1
\wx80FF \dx00000000 \dx00000000 // 0 .. 0: return 255;
\wx80FE // default: return 254;
// Name: @return_action_0
32 * 41 02 07 FE 89
46 20 \dx000000FF
\2cmp 1A 20 \dx00000000
\2& 1A 20 \dx00000001
\2* 1A 20 \dxFFFFFF04 // expr1 - expr2
\2+ 1A 00 \dx000000FD
\b0
\wx8000 // Return computed value
// Name: brewery_cargo_accepted
33 * 59 02 07 FE 89
5F 28 \dx00000001
\2u< 1A 20 \dx00000001
\2* 1A 20 \dxFFFFFFFF // expr1 - expr2
\2+ 1A 20 \dx00000003
\2cmp 7D FF 30 \dx000000FF
\2& 1A 00 \dx00000001
\b1
\wx00FE \dx00000001 \dx00000001 // 1 .. 1: return ((var[0x46, 0, 255] == 0) ? 1 : 253)
\wx80FD // default: return 253;
// Name: brewery_check_location
34 * 23 02 07 FD 89
44 00 \dx000000FF
\b1
\wx8001 \dx00000000 \dx00000000 // 0 .. 0: return 1;
\wx8000 // default: return 0;
// param[126] = 0
35 * 9 0D 7E \D= FF 00 \dx00000000
36 * 9 09 00 04 \7c \dx49415247 01
// param[126] = 1
37 * 9 0D 7E \D= FF 00 \dx00000001
// param[125] = 0
38 * 9 0D 7D \D= FF 00 \dx00000000
39 * 9 09 00 04 \7c \dx41454857 01
// param[125] = 1
40 * 9 0D 7D \D= FF 00 \dx00000001
// param[127] = (param[126] | param[125])
41 * 5 0D 7F \D| 7E 7D
42 * 9 09 7F 04 \7= \dx00000000 10
// param[123] = 3
43 * 9 0D 7B \D= FF 00 \dx00000003
// param[122] = 0
44 * 9 0D 7A \D= FF 00 \dx00000000
45 * 9 09 00 04 \7c \dx49415247 01
// param[122] = 1
46 * 9 0D 7A \D= FF 00 \dx00000001
47 * 9 09 7A 04 \7= \dx00000000 01
// param[123] = 2
48 * 9 0D 7B \D= FF 00 \dx00000002
// param[124] = (param[123] & 255)
49 * 9 0D 7C \D& 7B FF \dx000000FF
// param[125] = (param[124] | 0)
50 * 9 0D 7D \D| 7C FF \dx00000000
// param[126] = (param[125] | 65536)
51 * 9 0D 7E \D| 7D FF \dx00010000
// param[122] = 3
52 * 9 0D 7A \D= FF 00 \dx00000003
// param[121] = 0
53 * 9 0D 79 \D= FF 00 \dx00000000
54 * 9 09 00 04 \7c \dx49415247 01
// param[121] = 1
55 * 9 0D 79 \D= FF 00 \dx00000001
56 * 9 09 79 04 \7= \dx00000000 01
// param[122] = 2
57 * 9 0D 7A \D= FF 00 \dx00000002
// param[123] = (param[122] & 255)
58 * 9 0D 7B \D& 7A FF \dx000000FF
// param[124] = (param[123] | 0)
59 * 9 0D 7C \D| 7B FF \dx00000000
// param[125] = (param[124] | 65536)
60 * 9 0D 7D \D| 7C FF \dx00010000
// param[121] = 3
61 * 9 0D 79 \D= FF 00 \dx00000003
// param[120] = 0
62 * 9 0D 78 \D= FF 00 \dx00000000
63 * 9 09 00 04 \7c \dx49415247 01
// param[120] = 1
64 * 9 0D 78 \D= FF 00 \dx00000001
65 * 9 09 78 04 \7= \dx00000000 01
// param[121] = 2
66 * 9 0D 79 \D= FF 00 \dx00000002
// param[122] = (param[121] & 255)
67 * 9 0D 7A \D& 79 FF \dx000000FF
// param[123] = (param[122] | 0)
68 * 9 0D 7B \D| 7A FF \dx00000000
// param[124] = (param[123] | 65536)
69 * 9 0D 7C \D| 7B FF \dx00010000
// param[120] = 3
70 * 9 0D 78 \D= FF 00 \dx00000003
// param[119] = 0
71 * 9 0D 77 \D= FF 00 \dx00000000
72 * 9 09 00 04 \7c \dx49415247 01
// param[119] = 1
73 * 9 0D 77 \D= FF 00 \dx00000001
74 * 9 09 77 04 \7= \dx00000000 01
// param[120] = 2
75 * 9 0D 78 \D= FF 00 \dx00000002
// param[121] = (param[120] & 255)
76 * 9 0D 79 \D& 78 FF \dx000000FF
// param[122] = (param[121] | 0)
77 * 9 0D 7A \D| 79 FF \dx00000000
// param[123] = (param[122] | 65536)
78 * 9 0D 7B \D| 7A FF \dx00010000
79 * 22 06
7E 04 FF \wx0039
7D 04 FF \wx003D
7C 04 FF \wx0041
7B 04 FF \wx0045
FF
80 * 178 00 07 \b23 04 FF \wx0000
08 28 29 2A 2B
12 \wxDC00 \wxDC00 \wxDC00 \wxDC00
09 30 20 20 20
19 00 00 00 00
0B 64 00 00 00
0C 19 00 00 00
0D 08 08 08 08
0E 02 02 02 02
0F 01 01 01 01
1E \dx00000000 \dx00000000 \dx00000000 \dx00000000
10 \wx00C8 \wx00C8 \wx00C8 \wx00C8
11 FA FA FA FA
18 F0 00 00 00
0A \wx8214 \wx0000 \wx0000 \wx0000
21 \wx0794 \wx0000 \wx0000 \wx0000
22 \wx0802 \wx0000 \wx0000 \wx0000
1F 14 00 00 00
13 \wx3807 \wx0000 \wx0000 \wx0000
17 \dx03060804 \dx03060804 \dx03060804 \dx03060804
16 00 00 00 00
1A 94 94 94 94
1B 02 02 02 02
20 \b2
02 03
\b2
02 03
\b2
02 03
\b2
02 03
81 * 11 00 07 \b2 01 FF \wx0000
14 03
1D 00
82 * 2 10 10
// Name: @action3_0
83 * 57 02 07 FD 89
1A 20 \dx00000000
\2sto 1A 20 \dx000000FF
\2r 0C 00 \dx0000FFFF
\b3
\wx00FD \dx00000017 \dx00000017 // brewery_check_location;
\wx00FB \dx0000001A \dx0000001A // brewery_next_frame;
\wx00FE \dx00000148 \dx00000148 // brewery_cargo_accepted;
\wx00FF // brewery_choose_layout;
84 * 9 07 7F 04 \7= \dx00000000 02
85 * 7 03 07 01 00 \b0
\wx00FD // @action3_0;
86 * 11 00 07 \b2 01 FF \wx0001
14 02
1D 00
// Name: @action3_1
87 * 47 02 07 FD 89
1A 20 \dx00010100
\2sto 1A 20 \dx000000FF
\2r 0C 00 \dx0000FFFF
\b2
\wx00FB \dx0000001A \dx0000001A // brewery_next_frame;
\wx00FE \dx00000148 \dx00000148 // brewery_cargo_accepted;
\wx00FF // brewery_choose_layout;
88 * 9 07 7F 04 \7= \dx00000000 02
89 * 7 03 07 01 01 \b0
\wx00FD // @action3_1;
90 * 11 00 07 \b2 01 FF \wx0002
14 02
1D 00
// Name: @action3_2
91 * 47 02 07 FD 89
1A 20 \dx00020001
\2sto 1A 20 \dx000000FF
\2r 0C 00 \dx0000FFFF
\b2
\wx00FB \dx0000001A \dx0000001A // brewery_next_frame;
\wx00FE \dx00000148 \dx00000148 // brewery_cargo_accepted;
\wx00FF // brewery_choose_layout;
92 * 9 07 7F 04 \7= \dx00000000 02
93 * 7 03 07 01 02 \b0
\wx00FD // @action3_2;
94 * 11 00 07 \b2 01 FF \wx0003
14 02
1D 00
// Name: @action3_3
95 * 47 02 07 FF 89
1A 20 \dx00030101
\2sto 1A 20 \dx000000FF
\2r 0C 00 \dx0000FFFF
\b2
\wx00FB \dx0000001A \dx0000001A // brewery_next_frame;
\wx00FE \dx00000148 \dx00000148 // brewery_cargo_accepted;
\wx00FF // brewery_choose_layout;
96 * 9 07 7F 04 \7= \dx00000000 01
97 * 7 03 07 01 03 \b0
\wx00FF // @action3_3;
nml-0.4.5/regression/expected/031_aircraft.grf0000644000567200056720000000031713315644406022316 0ustar jenkinsjenkins00000000000000GRF�
��6�CINFOBVRSNBMINVBNPARBPALSABBLTR84�NML0NML regression testA test newgrf testing NML��?��Test plane 0x14nml-0.4.5/regression/expected/020_recolour.grf0000644000567200056720000000517513315644406022362 0ustar jenkinsjenkins00000000000000GRF�
'�6�CINFOBVRSNBMINVBNPARBPALSWBBLTR84�NML NML regression testA test newgrf testing NML �
������
�
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������
������������������������������������������
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������>?@ABCDE������������������������������������������
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������
����� �� ��X�w������������������������������ ���� �����0���������Y��j�bȃ��ʃ��Ȅ��ʄ��H��{ǵ� ���)������������ˠ�����ˠ�������̨�9��j�����7���ʄ��6�8������ʨ�����%�$�������ǐ �ʃ�����ʸ$
˂XȄ������6̂X�j��Ƀ���������+��Y�������������H��ȵ��Z�6��H�8
�����j�����؈��<�J�����������l������������������5�����XX������������
����?�C�"�&����e�f�A�ˀ�ˁ���������˃�����������ȈT������c�rН���� �˂XXXX�ȇ��������j���j��������j����؈��3��ː@������̠�������������̸���˸�����,���������ɨ��,�������U�A�����,��́��X����X�T ǀ���jX���B����f�����+�n�ǁ����/����X��ʀ����X�f4�(�BX���ʙ#�j��y����j�
��������
������������������������1����0����ʁ�����I����ɀ��� �:�M�44���a����������j�� ؈$��&�ːL������˨
�����������+�������5�$��ʄ������������X�G������k�[���ɀ���Z������ɀ���+�H�|�˂X�Ȁ���ɸ$
�X�j�Ɂ��Ʌ����������5������:��C����H�����H�`�)����������j��؈6������������l����������������������
��!����XX�$���7�
�!�%�4������/��(�-�T�z��q́���������˃�ʀ��� ���蹈T������п�i�n�
����XXXX���И����j���j��������������������̠���������+�,���������A�����j��������A�Xȃ��W���;�,�U����P�B��B���X���,��X�� ʃ��jX���,�ʄ����j���X���������X�<ʵ���X�ȹ�X�ʵ����$nml-0.4.5/regression/expected/024_conditional.nfo0000644000567200056720000000114613315644406023035 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
// param[127] = param[0]
0 * 5 0D 7F \D= 00 00
1 * 9 09 7F 04 \7= \dx00000000 01
// param[1] = 1
2 * 9 0D 01 \D= FF 00 \dx00000001
// param[3] = 1
3 * 9 0D 03 \D= FF 00 \dx00000001
nml-0.4.5/regression/expected/012_basecost.grf0000644000567200056720000000064013315644406022324 0ustar jenkinsjenkins00000000000000GRF�
��6�CINFOBVRSNBMINVBNPARBPALSABBLTR84�NMLNML regression testA test newgrf testing NML �
���� ����*
��B �
~� �~�~� ~�
~�~��
�� ��4�
|�|���
} �
z��z���
{ �
|{��}�|�� ��nml-0.4.5/regression/expected/032_simple_house.nfo0000644000567200056720000000261313315644406023225 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d10
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "D"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\32" "NML regression test" 00 "A test newgrf testing NML" 00
3 * 20 04 07 FF 01 \wxDC00 "Example house" 00
4 * 6 01 07 \b1 FF \wx0001
5 nlhs.png 8bpp 98 8 44 36 -22 0 normal nocrop
// Name: spritelayout_townhouse - feature 07
6 * 23 02 07 FF \b65 \dx00000F8D \wx0000
\dx80008000 \wx0001 \b4 \b2 \b0 \b8 \b16 \b27 80
// Name: spritelayout_townhouse@registers - feature 07
7 * 30 02 07 FF 89
1A 20 \dx00000001
\2sto 1A 00 \dx00000080
\b1
\wx00FF \dx00000000 \dx00000000
\wx00FF //
8 * 16 00 07 \b4 01 FF \wx0000
08 02
15 02
18 A0
12 \wxDC00
// Name: @action3_0
9 * 37 02 07 FF 89
1A 20 \dx00000000
\2sto 1A 20 \dx000000FF
\2r 0C 00 \dx0000FFFF
\b1
\wx00FF \dx00000000 \dx00000000 // spritelayout_townhouse;
\wx00FF // spritelayout_townhouse;
10 * 7 03 07 01 00 \b0
\wx00FF // @action3_0;
nml-0.4.5/regression/expected/024_conditional.grf0000644000567200056720000000011313315644406023022 0ustar jenkinsjenkins00000000000000GRF�
9�
� �
� �
�nml-0.4.5/regression/expected/017_articulated_tram.nfo0000644000567200056720000000370513315644406024063 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d18
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "W"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\17" "NML regression test" 00 "A test newgrf testing NML" 00
// Name: foster_express_articulated_parts
3 * 23 02 01 FF 89
10 00 \dxFFFFFFFF
\b1
\wx8058 \dx00000001 \dx00000003 // 1 .. 3: return 88;
\wx80FF // default: return 255;
4 * 74 00 01 \b25 01 FF \wx0058
06 0F
04 28
03 1E
1F \dx000AF386
02 01
0A \dx00004C48
09 87
11 8F
08 FF
15 FE
13 16
14 58
0E FF
07 10
18 4D
19 80
0F 2D
1D \wx0001
16 \dx00000000
1E \wx0000
16 \dx00000000
24 \b0
16 \dx00000000
10 FF
1C 01
5 * 25 04 01 7F 01 FF \wx0058 "Foster Turbo Tram" 00
6 * 6 01 01 \b1 FF \wx0008
7 tram_foster_express.png 8bpp 48 1 8 18 -3 -10 normal
8 tram_foster_express.png 8bpp 64 1 20 18 -14 -5 normal
9 tram_foster_express.png 8bpp 96 1 28 15 -14 -8 normal
10 tram_foster_express.png 8bpp 144 1 20 18 -6 -7 normal
11 tram_foster_express.png 8bpp 176 1 8 18 -3 -10 normal
12 tram_foster_express.png 8bpp 192 1 20 18 -14 -9 normal
13 tram_foster_express.png 8bpp 224 1 28 15 -14 -8 normal
14 tram_foster_express.png 8bpp 272 1 20 18 -6 -7 normal
// Name: foster_express_set - feature 01
15 * 9 02 01 FE \b1 \b1
\w0
\w0
16 * 9 00 01 \b1 01 FF \wx0058
17 10
// Name: @action3_0
17 * 23 02 01 FE 89
0C 00 \dx0000FFFF
\b1
\wx00FF \dx00000016 \dx00000016 // foster_express_articulated_parts;
\wx00FE // foster_express_set;
18 * 9 03 01 01 FF \wx0058 \b0
\wx00FE // @action3_0;
nml-0.4.5/regression/expected/003_assignment.grf0000644000567200056720000000033213315644406022667 0ustar jenkinsjenkins00000000000000GRF�
� �
� �
��
�
� �
� �
��
�
�
����
��� �
��
�����
nml-0.4.5/regression/expected/029_base_graphics.nfo0000644000567200056720000000455113315644406023334 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 257 00
00 00 00 00 00 00 00 00 00 00 F0 F0 F0 EF EF EF
0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F0 F0 00 00 00 00 00 00 F0 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 F0 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 F0 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 F0 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 F0 F0 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 F0 00 00 00 00 00 00 00 00 00 00
1 * 257 00
00 00 00 00 00 00 00 00 00 00 A3 A3 A3 A3 A4 A4
0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B4 B4 00 00 00 00 00 00 B5 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 B3 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 B3 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 B3 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 B2 B3 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 B5 00 00 00 00 00 00 00 00 00 00
2 fonts.png 8bpp 10 10 2 1 0 -2 normal nocrop
3 fonts.png 8bpp 30 10 3 13 0 -2 normal
4 fonts.png 8bpp 50 10 5 13 0 -2 normal
5 fonts.png 8bpp 70 10 10 13 0 -2 normal
6 fonts.png 8bpp 90 10 9 13 0 -2 normal
7 fonts.png 8bpp 110 10 12 13 0 -2 normal
8 fonts.png 8bpp 130 10 9 13 0 -2 normal
9 fonts.png 8bpp 150 10 3 13 0 -2 normal
10 fonts.png 8bpp 170 10 5 13 0 -2 normal
nml-0.4.5/regression/expected/006_vehicle.nfo0000644000567200056720000000630113315644406022147 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d21
1 * 54 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 00
"B" "PALS" \w1 "W"
"B" "BLTR" \w1 "3"
00
00
2 * 52 08 08 "NML\6" "NML regression test" 00 "A test newgrf testing NML" 00
3 * 32 00 08 \b1 06 FF \wx0000
09 "PASS" "MAIL" "GOOD" "IORE" "GOLD"
"FOOD"
// param[0] = 9
4 * 9 0D 00 \D= FF 00 \dx00000009
// param[126] = (param[0] * 5)
5 * 9 0D 7E \D* 00 FF \dx00000005
// param[127] = (param[126] + 5)
6 * 9 0D 7F \D+ 7E FF \dx00000005
7 * 7 06
7F 01 FF \wx002C
FF
8 * 63 00 01 \b21 01 FF \wx0059
06 03
04 28
03 1E
1F \dx000AF386
02 01
0A \dx00004C48
09 87
11 8F
08 98
13 16
14 58
0E FF
07 10
18 4D
19 80
0F 00
1D \wx0003
16 \dx00000000
1E \wx0000
16 \dx00000000
1C 01
9 * 27 04 01 7F 01 FF \wx0059 "Foster Express Tram" 00
10 * 23 04 01 1F 01 FF \wx0059 "Foster Sneltram" 00
11 * 6 01 01 \b1 FF \wx0008
12 opengfx_generic_trams1.pcx 8bpp 48 56 8 18 -3 -10 normal
| opengfx_generic_trams1.png 32bpp 48 56 8 18 -3 -10 normal
| opengfx_generic_trams1.pcx mask 48 56
| opengfx_generic_trams1.pcx 8bpp 48 56 8 18 -3 -10 zi2
13 opengfx_generic_trams1.pcx 8bpp 64 56 20 19 -14 -5 normal
| opengfx_generic_trams1.png 32bpp 64 56 20 19 -14 -5 normal
| opengfx_generic_trams1.pcx mask 64 56
| opengfx_generic_trams1.pcx 8bpp 64 56 20 19 -14 -5 zi2
14 opengfx_generic_trams1.pcx 8bpp 96 56 28 15 -14 -8 normal
| opengfx_generic_trams1.png 32bpp 96 56 28 15 -14 -8 normal
| opengfx_generic_trams1.pcx mask 96 56
| opengfx_generic_trams1.pcx 8bpp 96 56 28 15 -14 -8 zi2
15 opengfx_generic_trams1.pcx 8bpp 144 56 20 19 -6 -7 normal
| opengfx_generic_trams1.png 32bpp 144 56 20 19 -6 -7 normal
| opengfx_generic_trams1.pcx mask 144 56
| opengfx_generic_trams1.pcx 8bpp 144 56 20 19 -6 -7 zi2
16 opengfx_generic_trams1.pcx 8bpp 176 56 8 18 -3 -10 normal
| opengfx_generic_trams1.png 32bpp 176 56 8 18 -3 -10 normal
| opengfx_generic_trams1.pcx mask 176 56
| opengfx_generic_trams1.pcx 8bpp 176 56 8 18 -3 -10 zi2
17 opengfx_generic_trams1.pcx 8bpp 192 56 20 19 -14 -9 normal
| opengfx_generic_trams1.png 32bpp 192 56 20 19 -14 -9 normal
| opengfx_generic_trams1.pcx mask 192 56
| opengfx_generic_trams1.pcx 8bpp 192 56 20 19 -14 -9 zi2
18 opengfx_generic_trams1.pcx 8bpp 224 56 28 15 -14 -8 normal
| opengfx_generic_trams1.png 32bpp 224 56 28 15 -14 -8 normal
| opengfx_generic_trams1.pcx mask 224 56
| opengfx_generic_trams1.pcx 8bpp 224 56 28 15 -14 -8 zi2
19 opengfx_generic_trams1.pcx 8bpp 272 56 20 19 -6 -7 normal
| opengfx_generic_trams1.png 32bpp 272 56 20 19 -6 -7 normal
| opengfx_generic_trams1.pcx mask 272 56
| opengfx_generic_trams1.pcx 8bpp 272 56 20 19 -6 -7 zi2
// Name: foster_express_set - feature 01
20 * 9 02 01 FF \b1 \b1
\w0
\w0
21 * 9 03 01 01 FF \wx0059 \b0
\wx00FF // foster_express_set;
nml-0.4.5/regression/expected/014_read_special_param.nfo0000644000567200056720000000371113315644406024324 0ustar jenkinsjenkins00000000000000// Automatically generated by GRFCODEC. Do not modify!
// (Info version 32)
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2psto 2ror = 2rot 2cmp 2ucmp 2<< 2u>> 2>>
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
// Escapes: D= = DR D+ = DF D- = DC Du* = DM D* = DnF Du<< = DnC D<< = DO D& D| Du/ D/ Du% D%
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
0 * 4 \d20
1 * 231 14 "C" "INFO"
"B" "VRSN" \w4 \dx00000000
"B" "MINV" \w4 \dx00000000
"B" "NPAR" \w1 03
"C" "PARA"
"C" \d0
"T" "NAME" 7F "Name of the int setting" 00
"T" "DESC" 7F "Description of a setting" 00
"B" "MASK" \w1 00
"B" "LIMI" \w8 \d0 \d2
"B" "DFLT" \w4 \dx00000000
00
"C" \d1
"B" "TYPE" \w1 01
"B" "MASK" \w3 \b1 \b0 \b1
"B" "DFLT" \w4 \dx00000000
00
"C" \d2
"B" "TYPE" \w1 01
"B" "MASK" \w3 \b1 \b2 \b1
"B" "DFLT" \w4 \dx00000001
00
00
"B" "PALS" \w1 "A"
"B" "BLTR" \w1 "8"
00
00
2 * 52 08 08 "NML\14" "NML regression test" 00 "A test newgrf testing NML" 00
// param[16] = param[0]
3 * 5 0D 10 \D= 00 00
// param[17] = 0
4 * 9 0D 11 \D= FF 00 \dx00000000
5 * 6 09 01 01 \70 00 01
// param[17] = 1
6 * 9 0D 11 \D= FF 00 \dx00000001
// param[18] = 0
7 * 9 0D 12 \D= FF 00 \dx00000000
8 * 6 09 01 01 \70 02 01
// param[18] = 1
9 * 9 0D 12 \D= FF 00 \dx00000001
// param[19] = param[0]
10 * 9 0D 13 \D= 00 FE \dx014C4D4E
// param[158] = (param[158] | 2)
11 * 9 0D 9E \D| 9E FF \dx00000002
// param[20] = 0
12 * 9 0D 14 \D= FF 00 \dx00000000
13 * 6 09 9E 01 \70 03 01
// param[20] = 1
14 * 9 0D 14 \D= FF 00 \dx00000001
// param[142] = -2
15 * 9 0D 8E \D= FF 00 \dxFFFFFFFE
// param[21] = param[164]
16 * 5 0D 15 \D= A4 00
// param[125] = param[19]
17 * 9 0D 7D \D= 13 FE \dx0000FFFF
// param[126] = (param[125] & 255)
18 * 9 0D 7E \D& 7D FF \dx000000FF
// param[127] = (param[126] + 12)
19 * 9 0D 7F \D+ 7E FF \dx0000000C
// param[22] = (1 << param[127])
20 * 9 0D 16 \D<< FF 7F \dx00000001
nml-0.4.5/regression/014_read_special_param.nml0000644000567200056720000000214513315644406022527 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\14";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
param {
int_param {
type: int;
min_value: 0;
max_value: 2;
def_value: 0;
name: string(STR_PARAM_NAME);
desc: string(STR_PARAM_DESC);
}
}
param {
bool_param_1 {
type: bool;
def_value: 0;
}
bool_param_2 {
type: bool;
def_value: 1;
bit: 2;
}
}
}
/* Read a user-changeable integer setting */
param[0x10] = int_param;
/* Read a user-changeable bool setting */
param[0x11] = bool_param_1;
/* Read a user-changeable bool setting */
param[0x12] = bool_param_2;
/* Read a setting from another newgrf */
param[0x13] = param["NML\01", 0];
/* Read and write a misc grf bit */
desert_paved_roads = 1;
param[0x14] = train_width_32_px;
/* Read and write a special grf parameter */
traininfo_y_offset = -2;
param[0x15] = year_loaded;
/* Read a patch variable */
param[0x16] = map_size;
nml-0.4.5/regression/031_aircraft.nml0000644000567200056720000000113613315644406020525 0ustar jenkinsjenkins00000000000000grf
{
grfid : "NML\30";
name : string(STR_REGRESSION_NAME);
desc : string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
item (FEAT_AIRCRAFT, Boeing_2707, 0x14) {
property
{
name: string(STR_NAME_PLANE);
introduction_date: date(1978,01,01); // Introduction two years after Concorde
model_life: 30;
vehicle_life: 30;
climates_available: bitmask(CLIMATE_TEMPERATE, CLIMATE_ARCTIC, CLIMATE_TROPICAL);
speed: 805 km/h;
range: 1024; // same as concorde with typical max payload
passenger_capacity: 277; // would have cruised 6480 km at M2.7 with this load
}
}nml-0.4.5/regression/016_basic_airporttiles.nml0000644000567200056720000000104713315644406022620 0ustar jenkinsjenkins00000000000000spriteset(turbotrain_engine_set, "opengfx_trains_start.pcx") {
[142,112, 8,22, -3,-10]
}
spritelayout small_airport_tiles_graphics {
ground {sprite: GROUNDSPRITE_NORMAL; }
childsprite {
sprite: turbotrain_engine_set;
always_draw: 1;
}
}
item(FEAT_AIRPORTTILES, small_airport_tiles) {
property {
substitute: 0;
animation_info: [ANIMATION_LOOPING, 4]; // loop, 4 frames
animation_speed: 1;
animation_triggers: 1;
}
graphics {
small_airport_tiles_graphics;
}
}
nml-0.4.5/regression/013_train_callback.nml0000644000567200056720000001172713315644406021672 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\13";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
/*
* ********************************************
* Define cargo and railtype translation tables
* ********************************************
*/
cargotable { // cargos needed for special refit orders
WDPR, SCRP, CMNT, WOOD, // bulk, bulk+piece+flat, tank, piece
LVST, STEL, VEHI, BRCK, // piece+flat, piece, piece, piece
WOOL, BUBL, TOYS, FZDR, // flat, flat, flat, tank
FRUT, FRVG, FOOD, // bulk, bulk, piece
// cargos only referenced
OIL_, GOOD, WATR, MILK,
COAL, IORE, AORE, CLAY,
GRVL, SAND, GRAI, RSGR,
MAIZ, CORE, FERT, CTCD,
SULP, WHEA, RFPR, COLA,
PETR, PAPR, TOFF, SUGR,
PASS, MAIL, BATT, SWET,
RUBR, FMSP, ENSP, MNSP,
FICR, PLAS, PLST
}
railtypetable {
RAIL, ELRL, MONO, MGLV,
TRPD
}
template tmpl_railwagon(x,y) {
[ 0+x, y, 8,24, -3,-12]
[ 16+x, y, 22,17, -14, -9]
[ 48+x, y, 32,12, -16, -8]
[ 96+x, y, 22,17, -6, -9]
}
spriteset(bulk_wagon_empty_set, "temperate_railwagons.png") { tmpl_railwagon(0,25) }
spriteset(bulk_wagon_coal_default_set, "temperate_railwagons.png") { tmpl_railwagon(0,250) }
spritegroup bulk_wagon_coal_default_group {
loaded: [bulk_wagon_empty_set, bulk_wagon_coal_default_set];
loading: [bulk_wagon_empty_set, bulk_wagon_coal_default_set];
}
spriteset(bulk_wagon_coal_arctic_empty_set, "arctic_railwagons.pcx") { tmpl_railwagon(0,25) }
spriteset(bulk_wagon_coal_arctic_full_set, "arctic_railwagons.pcx") { tmpl_railwagon(0,250) }
spritegroup bulk_wagon_coal_arctic_group {
loaded: [bulk_wagon_coal_arctic_empty_set, bulk_wagon_coal_arctic_full_set];
loading: [bulk_wagon_coal_arctic_empty_set, bulk_wagon_coal_arctic_full_set];
}
spriteset(bulk_wagon_coal2_empty_set, "temperate_railwagons.png") { tmpl_railwagon(0,225) }
spriteset(bulk_wagon_coal2_full_set, "temperate_railwagons.png") { tmpl_railwagon(0,350) }
spritegroup bulk_wagon_coal2_group {
loaded: [bulk_wagon_coal2_empty_set, bulk_wagon_coal2_full_set];
loading: [bulk_wagon_coal2_empty_set, bulk_wagon_coal2_full_set];
}
spriteset(bulk_wagon_empty_grain_set, "temperate_railwagons.png") { tmpl_railwagon(0,150) }
spriteset(bulk_wagon_grain_set, "temperate_railwagons.png") { tmpl_railwagon(0,275) }
spritegroup bulk_wagon_grain_group {
loaded: [bulk_wagon_empty_grain_set, bulk_wagon_grain_set];
loading: [bulk_wagon_empty_grain_set, bulk_wagon_grain_set];
}
random_switch (FEAT_TRAINS, SELF, bulk_wagon_coal_default_switch, bitmask(TRIGGER_VEHICLE_SERVICE)) {
2: bulk_wagon_coal_default_group;
1: bulk_wagon_coal2_group;
}
switch (FEAT_TRAINS, SELF, bulk_wagon_coal_climate_switch, climate) {
CLIMATE_ARCTIC: bulk_wagon_coal_arctic_group;
bulk_wagon_coal_default_switch;
}
switch(FEAT_TRAINS, SELF, bulk_wagon_graphics_switch, cargo_type_in_veh) {
COAL: bulk_wagon_coal_climate_switch;
bulk_wagon_grain_group; // default to grain
}
switch (FEAT_TRAINS, SELF, bulk_wagon_cb_capacity_switch, cargo_type_in_veh) {
FICR: return 25;
FRUT: return 20;
FRVG: return 20;
GRAI: return 25;
MAIZ: return 25;
RSGR: return 20;
WHEA: return 25;
// no default: instead fail CB and use capacity set in properties (30)
}
switch (FEAT_TRAINS, SELF, bulk_wagon_cb_weight_switch, cargo_type_in_veh) {
COAL: return 18;
FRUT: return 18;
FRVG: return 18;
RSGR: return 18;
// no default: instead fail CB and use weight set in properties (25t)
}
item(FEAT_TRAINS, bulk_wagon) {
property {
// Some bogus property assignments to test handling of units
speed: 10 m/s;
speed: param[1] m/s;
speed: param[2] km/h;
speed: param[3] mph;
power: param[4] kW;
}
property {
// We try to simulate the stats of the temperate grain wagon
name: string(STR_NAME_BULK_WAGON);
climates_available: ALL_CLIMATES;
refittable_cargo_classes: bitmask(CC_BULK);
non_refittable_cargo_classes: bitmask(CC_PASSENGERS, CC_MAIL, CC_ARMOURED, CC_LIQUID, CC_REFRIGERATED, CC_HAZARDOUS);
cargo_allow_refit: [WDPR, SCRP, FRUT, FRVG];
default_cargo_type: COAL;
sprite_id: SPRITE_ID_NEW_TRAIN;
introduction_date: date(1880,1,1);
model_life: VEHICLE_NEVER_EXPIRES;
retire_early: 0;
vehicle_life: 30;
reliability_decay: 0;
loading_speed: 10;
cost_factor: 182;
running_cost_factor: 5;
speed: 0;
refit_cost: 40;
track_type: RAIL;
power: 0;
running_cost_base: RUNNING_COST_STEAM;
cargo_capacity: 30;
weight: param[1] ton;
bitmask_vehicle_info: 0;
}
graphics {
weight: bulk_wagon_cb_weight_switch;
purchase_weight: return 25;
cargo_capacity: bulk_wagon_cb_capacity_switch;
purchase_cargo_capacity: return 30;
default: bulk_wagon_graphics_switch;
}
}
nml-0.4.5/regression/groundtiles.png0000644000567200056720000000573713315644406020717 0ustar jenkinsjenkins00000000000000�PNG
IHDR@0WS�tEXtSoftwareAdobe ImageReadyq�e<�PLTE�������������������������������������4���?�����uxxxx\/���նMs��T�.�T�<�^e��*o�iڦmSz���~?@�s����*�ת�#��·(�kl}��M�����RUs�����*��
~��kS״�0��n�r��#^�Yx�
`s¾�,��窌�\"�/�,|���6���o|z��c�\�"a<�B�U�`�+w����*�4�����4��
����MM�xӧ�������\�\��WN>V����k���T����:͏U\����7M��g3��N�#��� *� rn�:�^n!�Q������Ե����������WE�; n��b't���ly�����9ya!���)��秊y�7jG�(�UY�^=��7�xr���UQ�M"�A{�(x�����V�0>:�>�V$�h��K��B��MGz�8G�@k�����\E r��%2��=���/!�Ve�犀s�a�f8 )Ƿ�A�M�k�Ӷ��j]E��t����MS����Ac�V�U�߫,�A��A��TG�@�G}�
�:1�h4�Qѣ�:~���
H���B�za�8#h��� (۰�f�Q��&h포t4����*�.W��^^����$��
�_XxY�LwP� Z�#+G
���ɓz#XX^<�/%�L$�K2�� ��M�>�_
�ҍ��u���x�
�a�;�@= �)�Vђ���Ģ�z��V}
�&�d;�7����Kzd����'�qHL�xr��k�iR��m��*���n��ɴ��W��*^W�z��T�y0c@�:����ɶJ� �hn�ف���dZ�O�s�xD'���>��:���37� $k���g�o�^�w���Oe`��kg3�0�飯$�Tº�<�tf�ey��k�i��Eo�w���)����Sz� L�����;�F엁��L�T����%&�\��P�0����
aF6Z+tn�""%V�F���/ν��Ά�0p��:��k%֤�)`��eV3����q|@2����I�SR���
�;/�tň'��*�R2.&a3��Т�+*:g9�f�����Z��/Ƴ~����0��t&���V���q1 ��-J�i��8ZαY�a
��$�K�.�[�=�tLE:�F!d�!Y�K�+Y�4��E�Y�E�Q#�l}1�}e� W�q"Ley�^8AAPQXx�z��2pԜ2.��2���qf����g(���2Z�r� $��� ~��?4?�OG3���\"q�����O�B��e���-ٹ��ʈ�W���ʈ�?��aF|Y�/d�P���##�Ņ]²p9o�1@�Y�|��d�_`�ײ͞չ�L���Z�f̟�E�MF��`����-??��3{��2?0g��ȓψ��o�p2���6-�׳�zfe�H9�iQ�e��s�<��Kq~>�nF����^0̔��=A���s�\��T��=}>��;�֏��o��/=B<"�����rY���fă=� ���3����
|�fģ*�n�
� +~�P\�Ie�#qM�+�k_ʈ7G�ջv��)8z�1��x��.Ũ�>��Y�$��7#��h�_�q3�����:A�x_F|���<��\G�;8k!^�g��(5-���Vg^��2�KD.��
��Oe�w��g����w߀�0�0����-`��T�)1���o����s��o�G)�[���_�E��9����G����:�,��7>`���x�)��9=Ԙ����=�67���l<�P�)z�Ic������b��p�7-�K.����T|�)�^g��DL�f`i���p1�p�Wr��<�i8J�0��$�
��4���3�D�HgV���,Z���� e�⁁�8����f���$��(��
��eW��NK�=|������B��ʁ�SL�O
`*���H��.�[�B|�e�}|:�pI�5&%g���;,0}]'w�9N]L$&ܗ3����/e��bZ��/�Nh��\Ӗ�Mݚ�7���On��XlBʴ�N��i)����2]\qG���%�rJ���*Թ�i�Q3⫎�B:!`��LGw$���1�]`T�Sا���h���x�|�5�������=li�%g�Q-[���,�jZg��.SLL��Q�?s�(�c���n��r�x�Pm^�4tigGm\J7f��x��t�����<��M�NF<쏝�ѧLwo�-�6��ʊ_�/�/%�K�@o"�n��|�~��(̄�ͥxiP�P�C�#�(u�V��M�͔2עZ{l�=���'�-Cs�(���X��:����MIf+��$��k�P����p<0@��/���`c�za�r���o²��i)�+�i�o���'#^a�����te�td:gn�P�W�L }?��������/�qicX�Y��+&��n���cTB\6B�F��L5�c�\2ݞ���h�3&�%��䭕bp%�氉�EI�_�^�%"��Ԅ�0���u7w�5�v�x�%w��Y_oe^!���B;6�2x��5�k���]Y�x�M���5��TL#�����u����-�" �S7|"��Ə!.�⎢Z��V�3v��<-)�1�PMܑdښ��M #�MnjxY��/���$��^�_�W����ۏZ��ʴkF��-�
�?⫫0md�u�n���x��z�x��-�C�x�m!��'!�lֺ1+��!�ߝo�k��c\��w �#�-�s��"��K���5�
\K,������C�#O^��p�5�.�w�y�B|�k&5U/ě�6��,ě����2s~�H�7�'*����_�B<���p�a#OA���[!��[���m�^�v?y�
a�B�yj�`����]ڒ��K�۽KSj:7�ޥ`,�@��"�w�ю�n^�z�v�gZ�K�Z7M4�O�.����I�.����5;�n�8N��ٛ1Z�Kc���E�p�7RsU4�Um�B=Ԉ���R0Y�� |����[A��ոB�F��������!���Ō��<�l�X��
2��p+τ�(kZ��Vϊ
�!�r��v:["���Z\+#���d,��8�{2ⱝk��q�л47��.ո����7k�E�ޥ��ba4V�s,]��9~P�&�R@n�B�Һ�rߝ6N��p��j�Wq��Y�|�9\�����㔦��l<�:z���ZsX)*�e�U�&�"li2�f��B~!>߬՝ó��ޥs���j�I��$Yp�4��h�2^�L�
�s��OՈ���~gB���mT�7��9p�n+����-7�@z'���-|��� ��'I�_��ƨ����i,�I��m�h���M���t��nwxՍ�z5@�W9l��m�� ��n�O���fK����D��՞n�i����l��^Ȝ!�-mx����yK\�}����nc��]|5�>�Ó��x�t%����=-��WH�>����w�
3��C���^7���p��GH�}��!]Z�JbpC�E=3#.L!^1�,�m�1�pY0q��T#�v��;˥)Ti7Ǚ�E\�o����xΐX��}d�_���©d���7ǻ�d�#rLp���` ��t���-�cu�cd�sZ+[A�c�x�pui�8t����Ӊ���a1��A"YNۃ�}��}ac�W�x��< �Ɩ;�}�Y�Dn|[����&�%�v����I��V��j���x����d�ӊ�oC�|�#��swi�/�1@�7p�C����v�E�!p����̈��r
�_)r|��>x,`24���l"�z1�ow-.PXB�n�=�h���p���u��0�9�]ښ�y�Kv����e!ޓ�Xֻ��v�sX��5��n���G��N��x�,�K;2m�?D���9:���ќp�`��Ùƅ��~\!>�^���s�:��c������k`��a-l�4 �Px!>��T�ϵKQ��k
�3�#�~�����x�,������\�j����
@�Sc� ����$�3<-�4�*���V-ŋc��%���V������fu��H/0���S���,$�dEd��������q�E.RNqqW����ԋ�625�o�{�K��q�L�.�*�ZE���oOQ|.�&=rH`m#���r�q��{k�S�x���A �����L�/n\jy�(~��� ��2�䗢�qM`�BQ�Z�;de�0.mn�y{�[�����kd
mMp��uX�}�`N^q���zP#��ғ�#y!ܠE��XP
&�u�qP�q>�VF�q崀����e�O�(����c
�)����(�?�-�_Nȥ��⿆����]`]#^����o�Z+��Y�D����
�J<����E�.����V-vQ)_Q|�CS�d�����`7U����mU�a�x�Da#���XW�m��=�\�/!��#�X�,��������oq�,HbX��qJ�X ;�%����/�����G__��U�uf���x�Y�n���������E�7~��
�c�5�L���s'�Jn��*bS��DQ���ǓH��#����c�?p�L2~��Tآ���W`�gx�&i��������O
]߱pD����M�K�B��i��2şpLK�܍�X"�bz.�a=,0L��:�J�1��Uc����&.'da���0w��2�-p��:h�5�8}!> _#��xw�^�X���8���g����K$.��ֈ���W]���Z�������v|�`̴Y�{�b�6�#�O�|��Z�P>��Zɾ���������߬����� 5k}P�f�h���~�Y+�O6rH`0���GO�V���i��� �|���=�̠Y�J�5k��SХ����q����|���Y+���լ�=ƪ��7k�Sا���Z|�j�
!��u��"rh]��{\:,�Y�;��f��d�O�Y�;��f��e�O�Y�3��f��f�O�Y�3��f��g�O�Y�v�5k�O�f��U<�f��^��.��h��ȴ�?w��?>�N����[�������l�*N'��{�����?�-$�;��G1�f�[����V����N�@wx[���y��B���s���f�G@�~����C�BluSl"H�aO��?��x�H�V~��a���'�f���tb��M;�N���ғ�Y+�WAd����#r�s��v�`��8Y�ZOɻwع1�)��w� ���;O�փ8��é������n�*��'��G�Y�~���.>��=�����ⓧY끟�n�,�7k�6]�H��B����f��-�m����v��F<;�G�����ҥ�p��plC83�#5k�Ø�t�:�O��.�-|=�0��
U�k�spl_�=�ㄢ�x���n�
�`!b�t�6����1T�^#�a��i�Y�����f���k5k=�7k�K�5k�8�������p�y��f���j�z�3�aA�Z�d�Y�l��f�s����
�+�
��h��<�q����vЇ������7���� ����V*QGQ�[��m�j����}u��U�!�Yk��z�o�~x�۬���m���e<�Y}
�n�#^���ݖ���L���X9,p�D�K�M�<4k�"��4{x�7��\����Vy�:V���=s��T�O��٬�+�gQ�X9|�2��iMN:R�V�^wA�?F��B8�xB|���m���6ȀuGo�z�qA���A�
�0��$�;�V���C`�.=�f��(��B�-�����xwi9Mˉ�K�������^^�V-į�Zg�}acm��o����矟??}y���z�Q�E���w��h�Zx�����@������=4k��x���߬���۬��?Wd�~���鳿Y�>=��!�a��`O]`l������盵��Bȓh����;�f����8�Z���~r����}�Y�ӓF߬��<��Y+"y
߬-��sc�U��n�*�ƾ<�n��-l֊6�f���Y���߬� Z�o�
�_��7k��\/�Y��ү��H�V:+=��Z�f����ޥ+��f���i�f�s���B<���n�E��nI4rB�ô�7
��Dy�T-��m��=��riI=��s�N�Oc����1kl�k����i�h46�ka���8�jI/�H9(��eX�6�[3���?5�2O�+�Ԁ
\�ۘ���n0V�~p�S-E�,;�i۸�8��'Q�ċd�����;��i�=o�E�����~����d���:��7�w~�P
�9��l���5�}Ҹ�]`�@�1��
�
���;�ġ����-2���ʴ�}e���������H�F�֟[`z�a{j�3����[�6,L*-Ff`~�[r�
�L羓�p�)�z+�
�L0@F���eځ�I�hd�B��_Y�GB<�hQ=
`k��j@��xB����4qq �m�@`�j K$�@ �_���HX����0�@B"���`�)�D뺏� XsN . �Ϥä�y��>@`͉��뺏� Xsj Ӻ�o��OHpKP@ @�_�?g�e��IEND�B`�nml-0.4.5/regression/018_airport_tile.nml0000644000567200056720000000100113315644406021423 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\18";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
spritelayout dirt_runway_sw_snow {
building {
sprite: 0xA68;
yoffset: 0x0F;
yextent: 1;
zextent: 6;
recolour_mode: RECOLOUR_TRANSPARENT;
palette: PALETTE_TRANSPARENT;
}
}
item(FEAT_AIRPORTTILES, small_airport_tiles) {
graphics {
dirt_runway_sw_snow;
}
}
nml-0.4.5/regression/027_airport_layout.nml0000644000567200056720000000153613315644406022020 0ustar jenkinsjenkins00000000000000spriteset(small_airport_tile_set) { [] }
spritelayout small_airport_tile_layout {
ground { sprite: small_airport_tile_set; }
childsprite {
sprite: small_airport_tile_set;
always_draw: 1;
xoffset: 32;
yoffset: 16;
recolour_mode: RECOLOUR_REMAP;
palette: PALETTE_USE_DEFAULT;
}
building {
sprite: small_airport_tile_set;
}
}
item(FEAT_AIRPORTTILES, small_airport_tiles) {
property {
substitute: 0;
animation_info: [1, 4]; // loop, 4 frames
animation_speed: 1;
animation_triggers: 1;
}
graphics {
small_airport_tile_layout;
}
}
tilelayout small_airport_layout_north {
rotation: DIRECTION_NORTH;
0, 0: small_airport_tiles;
1, 0: small_airport_tiles;
2, 0: small_airport_tiles;
3, 0: 70; // original airport tile
}
item(FEAT_AIRPORTS, small_airport) {
property {
override: 0;
layouts: [small_airport_layout_north];
}
}
nml-0.4.5/regression/010_liveryoverride.nml0000644000567200056720000000471713315644406022011 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\10";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
/*
* Turbo train engine (arctic)
* Livery override for passenger wagon
* Graphics by DanMacK, adopted from OpenGFX+ for testing purposes
*/
spriteset(turbotrain_engine_set, "opengfx_trains_start.pcx") {
[142,112, 8,22, -3,-10]
[158,112, 21,15, -14, -7]
[190,112, 31,12, -16, -8]
[238,112, 21,16, -6, -7]
[270,112, 8,24, -3,-10]
[286,112, 21,16, -15, -6]
[318,112, 32,12, -16, -8]
[366,112, 21,15, -6, -7]
}
spritegroup turbotrain_engine_group {
loading: turbotrain_engine_set;
loaded: turbotrain_engine_set;
}
spriteset(normal_passenger_set, "arctic_railwagons.pcx") {
[ 0, 0, 8,24, -3,-12]
[ 16, 0, 22,17, -14, -9]
[ 48, 0, 32,12, -16, -8]
[ 96, 0, 22,17, -6, -9]
[ 0, 0, 8,24, -3,-12]
[ 16, 0, 22,17, -14, -9]
[ 48, 0, 32,12, -16, -8]
[ 96, 0, 22,17, -6, -9]
}
spritegroup normal_passenger_group {
loading: normal_passenger_set;
loaded: normal_passenger_set;
}
spriteset(turbotrain_passenger_set, "opengfx_trains_start.pcx") {
[142,139, 8,21, -3,-10]
[158,139, 20,15, -13, -7]
[190,139, 28,10, -12, -6]
[238,139, 20,16, -6, -7]
[270,139, 8,21, -3,-10]
[286,139, 20,15, -15, -6]
[318,139, 28,10, -16, -6]
[366,139, 20,16, -6, -7]
}
spritegroup turbotrain_passenger_group {
loading: turbotrain_passenger_set;
loaded: turbotrain_passenger_set;
}
// Turbotrain engine:
item(FEAT_TRAINS, turbotrain, 20) {
property {
sprite_id: SPRITE_ID_NEW_TRAIN; // We have our own sprites
misc_flags: bitmask(TRAIN_FLAG_MU); // We use special sprites for passenger and mail wagons
}
graphics {
turbotrain_engine_group;
}
livery_override(passenger_wagon) {
turbotrain_passenger_group;
}
}
item(FEAT_TRAINS, passenger_wagon, 27) {
property {
sprite_id: SPRITE_ID_NEW_TRAIN; // We have our own sprites
misc_flags: bitmask(TRAIN_FLAG_MU); // We use special sprites for passenger and mail wagons
refittable_cargo_classes: bitmask(CC_PASSENGERS); // Allow passengers (and tourists)
non_refittable_cargo_classes: NO_CARGO_CLASS; // Disallow other cargos
}
graphics {
normal_passenger_group;
}
}
nml-0.4.5/regression/032_simple_house.nml0000644000567200056720000000133013315644406021423 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\32";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
spriteset (spriteset_townhouse, "nlhs.png") {
[98, 8, 44, 36, -22, 0, NOCROP]
}
spritelayout spritelayout_townhouse {
ground {
sprite: GROUNDSPRITE_NORMAL;
}
building {
sprite: spriteset_townhouse;
recolour_mode: RECOLOUR_REMAP;
palette: PALETTE_USE_DEFAULT;
xextent: 8;
yextent: 16;
zextent: 27;
xoffset: 4;
yoffset: 2;
zoffset: 0;
hide_sprite: 0;
}
}
item (FEAT_HOUSES, item_townhouse, -1, HOUSE_SIZE_1X1) {
property {
substitute: 2;
override: 2;
probability: 10;
name: string(STR_032_HOUSE);
}
graphics {
default: spritelayout_townhouse;
}
}
nml-0.4.5/regression/brewery.png0000644000567200056720000001634513315644406020034 0ustar jenkinsjenkins00000000000000�PNG
IHDR,���� pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*! J�!��Q�EEȠ�����Q,�
��!���������{�kּ������>�����H3Q5��B�������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4���������x����6��_-��"bb���ϫp@�t~��,/��;�m��%�h^�u��f�@����W�p�~<�5�j>{�-�]c�K'Xt����o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A��,�����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(�� A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8, �c˱"����V����cϱw�E� 6wB aAHXLXN�H� $4� 7 �Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S� Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN �(���~���)�)�4L�1e\k����X�H�Q�G�6������E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y���}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}����/gX���3��)�i�S��Ggg�s�K��.�>.���Ƚ�Jt�q]�z���������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�������!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl��������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7�����ᒶ��KW-X潬j9�������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V����E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa��n��{��4���[���>ɾ�UUM�f�e�I���?�������m]�Nmq����#����=TR��+�G�����w-
6
U����#pDy��� ��
:�v�{���vg/jB��F�S��[b[�O�>����z�G��499�?r����C�d�&����ˮ/~�����јѡ�m|������������x31^�V���w�w��O�| (�h���SЧ��������c3-� cHRMz%������u0�`:�o�_�FPLTE�������������������������������������4��QQF��Ib�̚=�b�{��i�ޝ�EA"mL�sUi���J�q5���_
5��(-(!eQ� 1�*mb3C�i�X)�Bʻ�t�h��XSZ����9�b�w���W��� "jcLU���K,�+�ш��p����N#�QWe����K��9!QkJq��Q�"�h��:>����Ī>�hJ�1�RT�h�iE��]|l�r����O��ZcNH���"E�q��ck��c�$��k�A犊h�(�u\���������$�6I����I�H�""�P�ggU���nX��w���&6ˬ�Ib��8!:�!������9w�ʾ��wo�gci4���I��)%D#bD�Q��i���~�c���Zw�~6V{ߜ�,��PZ�ve\
a���j^w�2����1��>�jo���t^��.JQǮ���+�:b%����`ɟ�5�Q4֬n��+�վu�깔RJ��JO��k2i�ɴxV�g�&@����WR��R�nX�M�o8���dR��Ѭ�*)ը'��s��LIߨ�\t�j�r|��aM&�W�I�\AH���h���T� �JJ/U���媲��ا��v����o2�L&��
W��X��ZLx&��Jz�0�t�:;��Xk�\{������W��v��Yfm�%`*��R6�]3�:w��&36�6{�k��p�
�RԄ�h�i�Rh�v�`^�Fɛ�U�}�1I������{��&
#���Q�&�P�%��7Ө'L0_�F���UC���5�1��^=���(�H)"j�#D�[����c֓�@I�n���c�Xk�5�cbJm���HVE�tA4R�����ј(Bl_�IljL����U�@J?�t��]��,��&�)=���*^/�!"�S\�g9)���)��$Ƙʥ��k��И���Y�Ea!��6v��]o�
�(E��i宝�LL���`9�4�"����a�� DGiZ^�eT�:�)k�A����V����4�镻�����*ҩ�i宫���4��3��}K1E4V뺈�Xޔ��s5��ơ����E�Ry����v�:�ơ�Z�^W7�����*w��Xi!F��=��.�Mqw]R.˛�9�)���틬h)�Z.oX�nX�5��U�n�eE�IUT������������%�9��8Zw7E�r9��F��&�8�^��"czR���W���Խw���-{���ʳ�b���QU��46ɾ���Y�(I�,���uqBH�bQD��6[��ғ����U�nc������Xk�s�\����r���BB�C�GIV�r� d��b��5�u�UY1?�7Խ]�k�K��j�т�V�Y��b�ꫪr!�$�tՓX��?JG�¹"*�Q�Ʈ���p[����ߪk�n�>����vl�?Ue�zwXj�*�
�]U�+!䴬ʒlqm%���kY���1BD�٭<|�b7��ۆ������L� Nc��~��a�;B�5�\�Ӳ*��D[\[X|*F#�GI
��2jlw�y�.��ګ�W�4�:�_����w���U��p�\��*\�R��#RF�cX X�x˵�2j�u�1��XA��솥�_�{�ȫ�|y�>)\[��"��J��<���Uu�(�M�W+c����3�Zz�����#9��^H��;��E�5�ۨ�>!$�㸥��,!`�8�#��2���C2ὐ5L���-U=�Z�[(d���x��bk.WW���w�)e
��"Q��T�F��ؔ���,p�t]�'���"�7�����˺nT#Ρ隬�T�էy��%~�k�����T�3u�8�svQ��f �
�v#Qn]��4���F5��h�9t�:�\�R5���\�]���<4��W�*U'�
c�g�~
��].��k�s������㬙IՌG��ݰ�Ru�L����
�8��zw��F6JI�84��^��B�]ϙ�����Vɸ�5c8<<<uƒ���f���m�S��8��~�;o����j�������|d��8�����d3�Q������b�/��b3Um�w�5����b
��Z���Q�9����9�%9�m׳�ܺ�i�T���m�x�dɹ����S��rGcHZ��l /x�����W\4R���?�%6G����0� `&�궞�/�� U�������Ѵk�c��*�v�,�Ⱥ���?ZE������@�ᔃ:x
�~�9[��\�@�틬�A��������{��x�USUK)�T;��"�y�W��a��f}�b�U�\���?�u?«�c�B�7FG.$0/���y~�K^m�J6Jɫ��f"�+%%��x�u㱒|�e��L�Z.0ˣ��put|?k1^u�|}�h��a����٬>k;�/�b�U^�.�/��5�}��~���Qc)a�̇�/_�/_���R��-��ײ��ƻ)��S�����*_�}=�
b=³��{X �l�̫枪�xP˫+%��rq�9]����? ��j���C��]�䪫�:z��5<�%�z�g��9�LI%��q
b�j9>h�Jz �#�m�TR���9x~:�����M���A����?XsѬF�ݟ������R����3Pp��r���@ɺͦo>��NWɪg�p���%~�?��_a�.@y5�o�~�m��F��3��h`
5|y<�Ϭ�9n��+��>�.v�5����j���z���0f����l�U^
��_�^�#���A����ף��x`�^~�۲^����F�є{)������=��t�3���^��������]���wx ���h<�~�q�y��m^dW,�N^y ��h����p8�ٛ�^~�������Ax�c��e/���>��}������~����z��c�F�#�A��p0��;��y\��_����0����n=���/���Y���Sʶ�8�PO�e�X�Wo?�9�F� /�j�J��b��>�\mz�ժ������~�C�uみ_ �Cw,j�U>̿7ѿa���'PI}�j�.C%EA��6EE�*��n Q���TTD�&�
+~̀�B �Hoz[~�����ɗ�H��|]Բw+dt�����#��:ߨQ��A*�Y�|_����kM
�Po���`��rs*U�zT�U3A��p�1��*GE���a*/@E�����0����k�
[+Mj���Y̽,��}��=����m�I�́��e�GM��x��kמ(O�7�3����IEND�B`�nml-0.4.5/regression/012_basecost.nml0000644000567200056720000000047713315644406020543 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\12";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
basecost {
1: param[2];
PR_RUNNING: -2;
PR_BUILD_VEHICLE: param[1] + 1;
PR_BUILD_WAYPOINT_RAIL: 14 - 1;
param[param[11]]: param[param[11]+1];
}
nml-0.4.5/regression/fonts.png0000644000567200056720000000224613315644406017501 0ustar jenkinsjenkins00000000000000�PNG
IHDR�����sRGB���PLTE�������������������������������������4P��hJudG�DS]����M]�����Zj���d�6�Խ#��� 8�9u�(�О<�5�8���g�XP���7`�k)�;Xa�6�O]��z��5
�؝���Ic�ڕ;�^
�|
���ZG�B�{�W���L�O�h9�!�{]7����s������Oҍ��'�)dp6�2?�L��RM�`�8�c'[�>iIEND�B`�nml-0.4.5/regression/oneway.png0000644000567200056720000000513713315644406017654 0ustar jenkinsjenkins00000000000000�PNG
IHDR �F��PLTE�������������������������������������4$�t5@tD��j���#2�G\d2қ��y;$�c��ճ���:��Q�G>"iBH�B/Bf}���W�," �1��4��h�.�ȫ!�^��4^&�&e�q�ka="" �w���="����t5X�!��T��6���D�1$l���^G�ʣI�e�e�,%2H�(���KhbOzA�" �0��?҇o���okl�i9������ٶ)bj��,�@a="" ���="" �a�Ƌb���e���="">x\ ��}>k�x�G
C���jx��������_@�:>"������m1)��˽����!
�Gjl�MH���?Mg�̫�".AG�?�m�?��Ϣ@<�R& 6�b��&]�Cg�&��Fv24���2F�I0�R#��1Y�o��C�����P��4�Ѥ?G�$r_�!'I�$�.���@W�ld�/��Y�j��˔���H�%�
E/�oؙ@j��EH�&�z���ϭA�8.�8i���~;?.�E�,z||֛��^;�7\��l���,?J"M|<�5�
�r�n�(12����g��1�e�N&��9e��>���uz[���#��!��)�X�$�z,!iH�r�TH �����o"�x�
�������K�o���
�D�$�.�lGah��d#����q��r�;RR4��%-�l�*A�ֈ@v@J���s�!�}��4
�2��~h���5�^�F���LJ�㙙8s��Ⱦ#�;1��X�d;KEw�հ�G+qȐ'Ԙ�$�'� �:{�#rQ{!5���H|eq|<�����qX �-ТGh�=��i7{�iy�bI�#���،{`6����>�?d?h�c�\U��0��)��F��/i�m�H�d� �67@�ο?[���Iz��sv�t�!@ߚ�O�V
z�J��n#p9%[���'���ⶇ�2��XӐ��k����H��u�=i
���d�(�FNvi(�
I�@.������#�[�ʠ�(/n�{c� �x�e
�u�#�5=$�vo�Ӝ�O�|ܔaf�X[���z�[!_1�!i���A^e�~myd�nh9�Q����Jo.��p�.�����h�������tnT�6�h-�)�H�� /2U)@�8+�� �I��U��]��1�8o�����H��� ��=cka�з�_[w�.��%HM���� ƃ�mH�r}���6oS��:��K%
m��]�tD�~!
ʋJ�E*�["��.��ʥ��滆UH/#�AꧠeH�i�?n��䩛���#Q^�r��*���rH�����J
����RH�vp ��1��K�nq/����D_��B�������8��xaŊч]��|$
ȼd�l�K\�LE�ܾg� C�!��n�1���4T ������1:ŝ���ci�-��@� �{��
DRnW�3����S�3?!��"�r#!�T�]�QH*H����7�ᶇ�{�G��{��v&w�N��T *���We'>~��3�8����y'
�H*Ȟa�����q��u[�J�����4��g�gM5�B�(��;�ܟJ�c�IEND�B`�nml-0.4.5/regression/lang/0000755000567200056720000000000013315644467016566 5ustar jenkinsjenkins00000000000000nml-0.4.5/regression/lang/us.lng0000644000567200056720000000005413315644406017707 0ustar jenkinsjenkins00000000000000##grflangid en_US
STR_STATIONS :US Stations
nml-0.4.5/regression/lang/dutch.lng0000644000567200056720000000043013315644406020365 0ustar jenkinsjenkins00000000000000##grflangid nl_NL
STR_REGRESSION_ERROR :De wissels zijn bevroren, onze excuses voor het ongemak.
STR_REGRESSION_CARE :zorg
STR_ANSWER :42
STR_NAME_FOSTER_EXPRESS_TRAM :Foster Sneltram
STR_STATIONS :Test stationnnetjes
nml-0.4.5/regression/lang/english.lng0000644000567200056720000000365513315644406020723 0ustar jenkinsjenkins00000000000000##grflangid en_GB
STR_NULL :
STR_REGRESSION_NAME :NML regression test
STR_REGRESSION_DESC :A test newgrf testing NML
STR_REGRESSION_ERROR :Something bad (tm) has happened.
STR_REGRESSION_CARE :care
STR_ANSWER :42
STR_NAME_FOSTER_EXPRESS_TRAM :Foster Express Tram
STR_NAME_FOSTER_TURBO_TRAM :Foster Turbo Tram
STR_NAME_PLANE :Test plane 0x14
STR_NAME_BULK_WAGON :NML Test bulk wagon
STR_PARAM_NAME :Name of the int setting
STR_PARAM_DESC :Description of a setting
STR_PARAM_NOGRID :Disable gridlines
STR_PARAM_NOGRID_DESC :This setting allows to replace all ground sprites such that the landscape is painted (mostly) without grid lines. Note that roads and train tracks don't yet follow this rule
STR_PARAM_TRANSMITTER :Replace the transmitter tower by a rock
STR_PARAM_TRANSMITTER_DESC :Enable to replace the transmitter tower by a rock (useful for early scenarios without telecomunication towers)
STR_PARAM_LANDSCAPE :Landscape type
STR_PARAM_LANDSCAPE_DESC :Select the landscape (ground tile) type
STR_PARAM_LANDSCAPE_NORMAL :normal (according to climate)
STR_PARAM_LANDSCAPE_ALPINE :alpine (temperate grass in arctic)
STR_PARAM_LANDSCAPE_TEMPERATE :temperate (not implemented)
STR_PARAM_LANDSCAPE_ARCTIC :arctic (not implemented)
STR_PARAM_LANDSCAPE_TROPICAL :tropical (not implemented)
STR_PARAM_LANDSCAPE_TOYLAND :toyland (not implemented)
STR_STATIONS :Teßt Stätiöµſ
STR_OBJ_MISC_CLASS :Miscellaneous
STR_OBJ_BASIC :Basic object
STR_COALMINE_EXTRA_TEXT :{BLACK}Extra info for coal mine: {COMMA}
STR_COALMINE_MONTH_0_10 :{BLACK}coal
STR_COALMINE_MONTH_11 :{BLACK}diamonds
STR_BREWERY_NAME :Brewery
STR_032_HOUSE :Example house
nml-0.4.5/regression/001_action8.nml0000644000567200056720000000023113315644406020267 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\1";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
nml-0.4.5/regression/030_house.nml0000644000567200056720000001526413315644406020063 0ustar jenkinsjenkins00000000000000/*
* This NewGRF adds the FIRS Brewery as a 2x2 town building
* Original graphics by FooBar and andythenorth
*
* It accepts grain (as well as some/pax) mail.
* Whenever grain is accepted, a smoke plume rises above the building.
* The Brewery has a very high probability to appear, but special checks
* make sure that only 1 appears per town.
*/
/* Make our NewGRF visible to OpenTTD */
grf {
grfid: "NML\30";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
/* Add a cargo translation table */
cargotable {
PASS, MAIL, GRAI, WHEA
}
/* Sprite templates for both ground and building sprites */
template tmpl_ground_tile(x, y, filename) {
[x, y, 64, 31, -31, 0, filename]
}
template tmpl_building_sprite(x, y, h, dy, filename) {
[x, y, 64, h, -31, dy, NOCROP, filename]
}
/* Spriteset containing all ground sprites */
spriteset(brewery_spriteset_ground) {
tmpl_ground_tile( 10, 10, "groundtiles.png") //bare
tmpl_ground_tile(150, 10, "groundtiles.png") //stones
tmpl_ground_tile(220, 10, "groundtiles.png") //snowed
[] /* pad with empty sprites, as all spritesets have to have the same no. of sprites (=6) */
[]
[]
}
spriteset(brewery_spriteset_building) {
tmpl_building_sprite( 10, 60, 91, -60, "brewery.png") // tile with chimney
tmpl_building_sprite( 80, 60, 91, -60, "brewery.png") // left part of large building
tmpl_building_sprite(150, 60, 91, -60, "brewery.png") // right part of large building
tmpl_building_sprite( 10, 60, 91, -60, "brewery_snow.png") // idem, with snow
tmpl_building_sprite( 80, 60, 91, -60, "brewery_snow.png")
tmpl_building_sprite(150, 60, 91, -60, "brewery_snow.png")
}
/* Generic sprite layout that is used for all tiles of the building. Parmaeters:
* - building_sprite: offset in the brewery_spriteset_building spriteset to use. -1 to skip building sprite.
* - with_smoke: Show smoke above the tile (also depends on animation state) */
spritelayout brewery_sprite_layout(building_sprite, with_smoke) {
/* First: Draw the normal ground sprite as a base layer */
ground {
sprite: GROUNDSPRITE_NORMAL;
}
/* Now draw our own ground sprite
* Below the snowline, it is either a bare land sprite (construction state 0) or stones (construction state 1..3)
* Above the snowline, it is always a snowed sprite */
childsprite {
sprite: brewery_spriteset_ground((terrain_type == TILETYPE_SNOW) ? 2 : min(construction_state, 1));
always_draw: 1; // Draw this sprite even in transparent mode
}
/* Now draw the building sprite, assuming the building is fully constructed */
building {
sprite: brewery_spriteset_building((terrain_type == TILETYPE_SNOW) * 3 + building_sprite);
/* Enable recolouring for the flag on top, it will get a random colour */
recolour_mode: RECOLOUR_REMAP;
palette: PALETTE_USE_DEFAULT;
zextent: 48;
hide_sprite: building_sprite == -1 || construction_state != 3;
}
building {
/* 3079 .. 3083 are steam smoke sprites
* Draw one of them, assuming the animation frame != 0 */
sprite: 3079 + (animation_frame - 1) / 4;
xoffset: 8;
yoffset: 0;
zoffset: 55 + (animation_frame - 1);
xextent: 11;
zextent: 7;
hide_sprite: !with_smoke || animation_frame == 0;
}
}
switch(FEAT_HOUSES, SELF, brewery_layout_1, house_tile) {
HOUSE_TILE_NORTH: brewery_sprite_layout(2, 0);
HOUSE_TILE_WEST: brewery_sprite_layout(1, 0);
HOUSE_TILE_EAST: brewery_sprite_layout(-1, 0); // empty tile
brewery_sprite_layout(0, 1); //south, building with chimney
}
switch(FEAT_HOUSES, SELF, brewery_layout_2, house_tile) {
HOUSE_TILE_NORTH: brewery_sprite_layout(-1, 0); // empty tile
HOUSE_TILE_WEST: brewery_sprite_layout(0, 1); // building with chimney
HOUSE_TILE_EAST: brewery_sprite_layout(2, 0);
brewery_sprite_layout(1, 0); //south
}
/* Randomly choose a graphics layout */
switch(FEAT_HOUSES, SELF, brewery_choose_layout, random_bits & 1) {
0 : brewery_layout_1;
brewery_layout_2;
}
/* Stop the animation in frame 0, else continue normally
* We choose frame 0 as 'stop' frame (no smoke visible) so there is no smoke
* during / after construction */
switch(FEAT_HOUSES, SELF, brewery_next_frame, animation_frame) {
0 : return CB_RESULT_STOP_ANIMATION;
return CB_RESULT_NEXT_FRAME;
}
/* When grain / wheat is accepted, start the animation if:
* - The animation is currently stopped (frame 0)
* - The house tile actually contains smoke. This saves CPU time
* Else, do nothing */
switch(FEAT_HOUSES, SELF, brewery_cargo_accepted, house_tile == ((random_bits & 1) ? HOUSE_TILE_WEST : HOUSE_TILE_SOUTH)) {
// only animate the tile that has the chimney with smoke
1 : return (animation_frame == 0) ? 1 : CB_RESULT_DO_NOTHING;
return CB_RESULT_DO_NOTHING;
}
/* Only allow construction of a brewery if there isn't already one in the same town */
switch(FEAT_HOUSES, SELF, brewery_check_location, same_house_count_town) {
0 : 1;
0;
}
/* Only enable the brewery if there is a grain or wheat cargo type */
if (cargotype_available("GRAI") || cargotype_available("WHEA")) {
item(FEAT_HOUSES, item_brewery, -1, HOUSE_SIZE_2X2) {
property {
substitute: 40; // use 2x2 shopping mall as fallback
name: string(STR_BREWERY_NAME);
/* do not replace (override) any original house type */
building_flags: bitmask(HOUSE_FLAG_ANIMATE);
population: 100;
mail_multiplier: 25;
accepted_cargos: [[cargotype_available("GRAI") ? GRAI : WHEA, 8], [PASS, 2], [MAIL, 1]];
local_authority_impact: 200;
removal_cost_multiplier: 250;
probability: 15; // high probability for testing purposes
years_available: [1940, 2050];
minimum_lifetime: 20;
availability_mask: [bitmask(TOWNZONE_EDGE, TOWNZONE_OUTSKIRT, TOWNZONE_OUTER_SUBURB),
bitmask(CLIMATE_TEMPERATE, CLIMATE_ARCTIC, ABOVE_SNOWLINE)];
random_colours: [COLOUR_RED, COLOUR_BLUE, COLOUR_GREEN, COLOUR_YELLOW];
refresh_multiplier: 0;
animation_info: [ANIMATION_LOOPING, 21]; // 'stop' frame + 20 normal frames. Auto-loop back to frame 0
animation_speed: 2;
/* no building class set, it's pointless */
watched_cargo_types: [GRAI, WHEA];
}
graphics {
default: brewery_choose_layout;
anim_next_frame: brewery_next_frame;
watched_cargo_accepted: brewery_cargo_accepted;
construction_check: brewery_check_location;
}
}
}
nml-0.4.5/regression/opengfx_generic_trams1.png0000644000567200056720000002342713315644406023005 0ustar jenkinsjenkins00000000000000�PNG
IHDRs�,DhsRGB���bKGD������� pHYs��tIME�1(��;� IDATx��}l�u�7���QɰX
�MkS4�'�L:-�z��J��ߋ�����PЊbe�-S5�
1`Y�b�H�*@�BB�UJ,�U�0z�E�&�� �$�m��rnA�]����ٙ���c��=@hwv�Ν{���wν��A�@ ����9�@ �� �@dN "s�@ 2'�9�@ �� �@dN D�%�3��z��?���.rw��~�ퟳ�s7w�
�������=�����z��(�����]���'����v ��i|}��⃛�?����x�����ޫ���/}� ��ܸ�"+�N}�~]���,*'b�.��= �ܝ|p�K���_��(���MZ������}�.��iW
/��XL���2�$e��L��Q����T����2���]de6!]�@p�\e^a�2�����zB�+�u(���VJ��ye+s�Й�c>+�גHWJT%�5���չ���d����!����� ��2�_sT�[���l�`�����R��]�����#E��We&AJC<�5!9�*���
�_� ز�T��/4�kI��U������Ce��R�.�y�ۿx���W�_�������[�
�ʑR'e^����ש;^4V
LI(�E�tlL@Q�}\) �W<1tM �Ѽ�����퐎��3@W
����H��'�Y:>����FԆ2�V�)�(���/cۇ2X�5 t�P��Y�88T�R�je�kۡ2s��|x�ۂp�o<(���ާR���E�����VnG�(u�ʼ�_<���w���������K�J]�����I�9�C5�J���5��]]��][�4���{�32��P���̲ufS��f������fOW!�o?b}?s�Ե���fB���["/t.�A�|����V+����Sc��S�ȿ"t��N�>�-��B���H]s_��_ƶgDL �_+��9�������ۉ�=����L"�}�7K��_�A��m@f�Gd�;�����/�ɤ��魍��s�n�E����3�J,���9�ca`b^�N�,����o6��~�����0�����S<н����2Q&ø��Z��B���c��I� ٿll�Ÿ8q���˸�G���=�V��=������L��
/���m ������������tsTt���L�8~�Sϓ�5���`荜�ईHN��.�(?�Ё�)�>7�|��@������yehI}5�q/��6����d�x����_��7���lKpR��g�!��b�:7��v$>0��}���dN�"d����œ�� T�G���
p��k15��S�t�A�?2%�Tïَ��0fߪ��>�Xz��5�~��#L|���vC��3��c�,���<�չ(��e5���X�B+ee�-a{���s<�Z$��5����d��!:�X�*����SiL
e�@^���۫�qw
-'��͞����!y�
b
�ٞ�S��v� ��}�ֿm���'��*6�kc���'�c���U������������t��0���+!��c}]��_����x�>�J&��w��4�2{�,��M|�
K��h�9�O{;Ld��`�I���<��կ`�gJ��Eq�kfaŁ��pX
j�uA�Yz��W<�5��]H��I$~�/�����#����K�'�2/�2��s��&8����P-nK;������A�'��S�?{K����Pڶ��|��g�c?U+�i�D��B�f�3��'s���ą'��"s�@ �
�! "s�@ ��Ȝ@ D���U����oZ��NW��m�����{)�}m昘��3�kQ
cd66vm�qܒ�3?}A�F���sP�Ԙ6A�+
�^��;0���i��ޫ��.(lf��P��R
d3���W�^�cv�s��ڶ����9&�MR���Ұ�V�O��䕠��ʀ̭RI�����Y��]�
��u��U���1SIn�߯ˋ�����& /��̵ci��V� ;%'�R������+�c���X��NiDk0����of����J�覯v��n�w
��Z�;����p�D?��
���N٨Xcb�?#�+��=n���+ws��/(ǴRf���`�c1K>N������X�p��O\Af���P���JB��3��?��Hsu�+XZ�E]�
"۳h�f�N���͝�v05]F�cs� �M
Rw��ɝ%�`ɜ݇�{p5~��$�7뫒}!�Zs�d^x��G�j�
���Tq�b���!2�2�1�+��4]F�T��l�+��w��4������`9��C��xtY�x��9�N��%��dS����p?�go~�N�r|$.��R��Je>>Egw
��ID�����ȥ�d�N寑H������ȉ�R"�X�?6J��\4[�ޘ����N�lW��6
�23/��"�X_Z/��v~M<��
�o��W0����ޒ㎍wd{�7�T���ʤ�@�*�̕ʜ�g=]�R�Z�{Ƞu g�:��`f������Z8�-�#;��k�5�v��Ln۳���,�������%��۳"�?׀�h�7�����ASʉ����6��_��-@���v3�q�zi�V�OZw���?3�t
չ(�U?�^+I]?{���Bd�Ք�����W��%p%��k
�3)��R�3��X�x��y18���X
_���s���i��>v*�%Ÿ��I����m�1�"[Z�E|��d� CK�o 18/���/.Uz���NƧ��}A+'m�R�2kl2e� ���L�4�Hs����$�N��1��)R����-�
�=a�Q�.�2U��:�S�$.+�/�kQ`-��m�o���R����_-�ǵ��#��Ѩj�������)hǑM26���bP���ݪ�f�z����ެ�9#�����hVx��ɜ���"f{e�x
H]�J��K������J�A���U^�|<�����ēW���x�����$��/_ۨL�=�T�z���H�j�U��Ro�9��h�Q�e�Z�U��A��r��lf�1�����������IW��^Q)�H�Z�mTH�x�"�̑ȼ���"�Y�.�q�v��0���+�{;��x�k:�c�f�n�H[Rq�Kߏ���J#�f��;��G���2�j���RQ]�
:�w�Q�e�|��n�|��x��f\ݫ�'�e'mY&� ���>�_c���z
߄�lXE��>���)�&V�x2ϧ�
��兿ۋ=�'��"���,������v��|��0��) 4�� (�g�8�.���>o7�\�}��׀Њ��3>$.�TdL!*�bgw
pYӍ4g�I�4ީ*W�Y���I�lrO{��d��K����Z�o�X��:ų������Y�����W0��X[��?{�
������`u9��m9�����r����:������ي�Xf��R�n l1e�*���%AͶj��0r��>;oJ��)�9& m��b��zǗ_o>��xJh��}hX�Ş��y
���r�P�)I]�(�͚�"yF.x���Թ��-ޚ�X���H�mF��X#�TI��ئ�
��z"��w�����k��GH��:�/���Şca���+��[c��JͶ���@J��|���.�ϕTz�+;p�_�X�"~ho��RH�f����ǹw�J��$���lܖY�9K������o�}��-�4���j��T�S�Sd����w��9���?�m���SiL��C�aq���̦D~ג���8Ѯ[i�p������Y�)ۜ����Uȝ׀�,_�:Z�����2a�/�/��%��m�^�ڟ�Ք9#c1(��Yh�Sf�ܹ{�P{�夨.�:���yU�qu9�Gw��l�Ƿ��0���#��)�2��CC����F�5����V�C�ʬ����?�Ҋ�f��R���S%/�Je��\[3��â=nש��'�A�����tJYϕK_r�����W�.�ׅ��=���*\��K�7���)�:5��M~�1���Q�X,�쏰//��k�v
��ڇ=�C�8���k���m�l�m���Tu�oNQ��/�9-�ldpI R�F�@���*m��#�����l+2VSo9�!�P.�������F�[*s���N;�?������?D��4~��[N^J$�v�8��&�"�@�%�̦$u*�Q������Й@ �� �P
�%��A��̛c}�N�u)���}صC�ܗ��V�����v�u��V��1�2�nƓ@����A�cAM~ �>���Qj�e��ž����E�vH����m����2/J��:�3�o���y��������[�I(32����Xy���w���Q�kU��>�m,f}qZ�����~��~1C�V%�}��};��-s5�NJZf���o�ĮY���i�Lp��@z�������F�[))/}�k[��V}qz�FǃP�v�i�A��씐�c�W��L��U�V�T_ݖ]��Ӌ�:�+��8�S��+%K�/(��#}v�N�Y��ږ!�Q�A:���v�ݏ��N��-9!8e��ꗝ�ݒ��,ˬ��eL�ޫ]������En�2��A��ͬ��-��Ѷѽ;� 3� R{'>��ލ�b~� 1j���+N���j���S�Z�:�����P��W����%��ߊ<(ұj�Ϡ�k{�����[f�/Z%oFhv��M�oUN�{,��9v�����]�5��WI�\�g���[-2X-Z��%�,�5)�ݏ��^̾��b����,��Y���ovT��cfF�v�̍�xK#Ҳ;&^��/���5lv�go!qad�:��2ÿI���#�\�.�]I�L���=v
'�=.�F �w��~`>1��n�*���8N"������hg��v�̸;~&*<�h<��H��v]�
�=��/�2�(����Y�ʜ�`�H���̙���&h��b-��5��1[n�2���Nƺ(�g��9�E:ţ9*�O:�c���|vS8���+�����~K��2�vv�0>~s�d>���^@��)�9�N� u��;��uB�? �X_��$_k<��go�*jb��0� ���.�lsV�"۳���$�>��T;��L�@bp��y"s�> ���(b}'>(���ޒ���ͦ�ÐN�zn�Ȝ�\����s:�?7'u0KDΈ��~E����Y������*��A��Ծ�_
Iy� ���}&���O�̌������7����d>�VM$�&s�ۢ�7��up�k2oԈ+��'I
6�{=|����\o"R��ő2��<��:��{l�_M�J~���&G�7]F�/�d��c*�G��,`�*T�7�����G�T�ߜT)}�5E�%��@XE,,HX�ZwΩ��կ y�
�.3B�� f��a������~��Y�~�D�;�K_��ېY�?8���, �23S��^�^������B����Ֆ٤>ܓ�J-��^7G���(,
zF��ӘBm�E�̤yD���I��$�j�b��H �@d^�D~�
�{1��B�[a�y�2���'$)hc}�H�w��~��)CO^��E�
�`=�r��_��Oi]���Ɣtl^&e]���=`-�{��G����g������P���-Q�z�OM�A��rre��G�NI\o-��F� 3zgX��abֵg�0�ښ���h�N����B+²?D�#*Rg���n�D���L
�y�!�o?�I��Q��x锽�]�sxࡌ�p�7�I_�g=�BqW��%����R]��{�2�Z��?
�3X��UJ&u;�LI�~�v��
�go��{�1>U��,3>�����Q6f��V��c�
1)�#RO��k/�����Y�잲}F�9���0�ގ`5�Sߜ�E��y��MU�t�lʠug����j�z�E��
�o4>|H\|�z�V3e�,O���ݴ�vD1�����C��3���2��\�Q�o���i�!f�������7�rfͶ�BX��j�&�f�*`~��%��nb�'s�!L�.\���سR3g�}��9��&��Ε-B)\z�+��C)$�=�K��U�z�؋w�� ���7�^N�^�D��=B)����au9l�JRWNB��)��� ��O����g[a��&L�I*wL�>cJĕ����X�kT�x�U��_~��Ο�xg�����:���@�?{�
�@˓���&�BͶb��cu9���_`��o���&^���?��y�X��9 �na�d�.Rj��P�-��+����ySgd1>��<��_Qd�:B)��S��pNuLU�1�^s�����#X��x�g<�����9��H����M��� ����E�ԝSRe����_�$�Ͼ��IZ[NQ���ܔ���jQso���bD_�T��º�i����7����k�=]��y�>6'�3�s,,��caE\bklMd
�f[N�
Jxۼ��tY>W^�����֢��[@����MH�ӌDⲪt�5mשtA����.}_TC��?5}��gA�H��̰$.�h�IDATA�O�0�~��
2qL0�_�<~��5���i�XWT��2�^���ؐql����l`i��j_{�����_3�����xpl����k�D_�B�cs�~sU&��8�&��m재�E��d�$rMP[9�O9N8�rR$F<-�c��8��@�*����[��:�)��#�,�B�)h�M"��{����k����@�;
�)��ƿ}8��"���Of���1uk.�<���ʚ-Ɖ%'K2���Ӻ$@.Q�9֎�<��YY�������&'T������ �Rf��a�NX�5*�8���@K�6��>/$q ��.�c0�$��}�C��$���J�����/����%�������&���#�H"T�K��K��4�~TR�fOG�������3��)��J�y"�B^���Yۏ��}48��s�����y��y��IS���������.�2��MN��_'3�)��'���;3�>A��:x`��WR@������eF�c�ɢ�:�|��
�2��ា#�)ܽa�IO�Vz�%�xJOSst�8�"=�ٖ R��4g�斗�l�����lMb��:�� 8�q.�Lb��j��9�Ťw�
�\dg[MH����c}+��_Q�x�����������#��9%���{ڢ�����GP0�q|`���x��ڇ=�C!4���DZ���$�;b��\~u
@vcߪ:,�Rd{V['�S���L���6j�䌛��ZNn`��/�$�L��Hٞ�_��+�d�]'�S��^xש����M� k��}c���D�B�(CIM�Ԓ�t�ߐ{�� �P6���@ �� �@dN "s�@ ���'p9�[2�L\�,��`}�N�Z���;�����v֞���16��Y�N��ε�^�K?����x�(s�� �P���� � 8%�mі:�l�G�1����wkC��v�~������2/UU8��1Tڽ��&�<�kKF���:Qc�蝯W�m�`�_�����I_���^i��h���8M�fc�����3;���x���R�]tS�qwf}s��4���b�hF�6J������:�CkSY;���W�{��W�����[�e321����;�3�Q�ږ4�7;�����w���Y��Pd2�R�t���(2� ���*�gǡ7SyM�vI��2�����Nj����d61:�7��~ݿ�ب�2\I�Y�����1�*�/� ���(���;�n��n�ܶ���s'����{�ƪ�a��j�������D�EV�~+�I-H����b9�W�T?�R�f�Q�}�f0AL"N����X{vle�����C[VVfi���?/)�Q�N��������ҁ�Ӡ�lu-�{н���E?;���~Ƌc�d��c1ߏؠ��M"�4R
dc�m�MqRT���&�%�2/ �A��lL��� 2'�/�_M$"s�@ ��Ȝ@ D��@dN "s�@ ��Ȝ@ �� �@dN "s�@ ��9�@ �� ���cn�<]�IEND�B`�nml-0.4.5/regression/Makefile0000644000567200056720000000141313315644406017275 0ustar jenkinsjenkins00000000000000.PHONY: clean all
.DEFAULT:
_V ?= @
_E ?= @echo
_SE ?= echo
TEST_FILES = $(basename $(shell ls *.nml))
NMLC ?= ../nmlc
# Note: Manually overriding NML_FLAGS may break the regression test
NML_FLAGS ?= -s -c --verbosity=1
.PHONY: $(TEST_FILES) clean
all: $(TEST_FILES)
$(TEST_FILES):
$(_V) echo "Running test $@"
$(_V) mkdir -p output nml_output output2
$(_V) $(NMLC) $(NML_FLAGS) --nfo output/$@.nfo --grf output/$@.grf $@.nml --nml nml_output/$@.nml && \
$(NMLC) $(NML_FLAGS) -n --nfo output2/$@.nfo --grf output2/$@.grf nml_output/$@.nml
$(_V) diff -u expected/$@.nfo output/$@.nfo && diff -u expected/$@.grf output/$@.grf && \
diff -u expected/$@.nfo output2/$@.nfo && diff -u expected/$@.grf output2/$@.grf
clean:
$(_V) rm -rf output nml_output output2 parsetab.py
nml-0.4.5/regression/020_recolour.nml0000644000567200056720000000232413315644406020562 0ustar jenkinsjenkins00000000000000grf {
grfid: "NML\20";
name: string(STR_REGRESSION_NAME);
desc: string(STR_REGRESSION_DESC);
version: 0;
min_compatible_version: 0;
}
template company_recolour(offset) {
recolour_sprite {
0xC6..0xCD: offset..offset+7;
}
}
param[3] = reserve_sprites(3);
replace(param[3]) {
recolour_sprite {
0xC6: 0x28;
0xC7: 0xF5;
0xC8..0xCD: 0x0A..0x0F;
}
company_recolour(0x3E)
company_recolour(0x9A)
}
// To write any recolour sprite to the output nmlc needs to know which palette
// to use. One option would be to specify the palette via the commandline, but
// for now just include some graphics so nmlc can determine the palette from that.
// Foster Express tram
spriteset(foster_express_set, "opengfx_generic_trams1.pcx") {
[ 48,56, 8,18, -3,-10]
[ 64,56, 20,19, -14, -5]
[ 96,56, 28,15, -14, -8]
[144,56, 20,19, -6, -7]
[176,56, 8,18, -3,-10]
[192,56, 20,19, -14, -9]
[224,56, 28,15, -14, -8]
[272,56, 20,19, -6, -7]
}
spritegroup foster_express_group {
loading: foster_express_set;
loaded: foster_express_set;
}
item(FEAT_ROADVEHS, foster_express_tram) {
graphics {
foster_express_group;
}
}nml-0.4.5/setup.py0000755000567200056720000000336613315644406015203 0ustar jenkinsjenkins00000000000000#! /usr/bin/env python3
try:
from cx_Freeze import setup, Executable
except ImportError:
pass
import sys, os, string, subprocess
from setuptools import setup, Extension, find_packages
version = sys.version_info
if version[0] < 3 or (version[0] == 3 and version[1] < 2):
sys.exit('ERROR: Sorry, Python 3.2 or later is required for this application.')
# Import our version information
from nml import version_info
version = version_info.get_and_write_version()
setup(name='nml',
version=version,
packages=find_packages(),
description='A tool to compile nml files to grf or nfo files',
long_description = 'A tool to compile nml files to grf and / or nfo files.' \
'NML is a meta-language that aims to be a lot simpler to learn and use than nfo.',
license='GPL-2.0+',
classifiers = ['Development Status :: 2 - Pre-Alpha',
'Environment :: Console',
'Intended Audience :: Developers',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Topic :: Software Development :: Compilers',
],
url='http://dev.openttdcoop.org/projects/nml',
author='NML Development Team',
author_email='nml-team@openttdcoop.org',
entry_points={
'console_scripts': ['nmlc = nml.main:run']
},
ext_modules = [Extension("nml_lz77", ["nml/_lz77.c"], optional=True)],
)
nml-0.4.5/nml.egg-info/0000755000567200056720000000000013315644467015745 5ustar jenkinsjenkins00000000000000nml-0.4.5/nml.egg-info/entry_points.txt0000644000567200056720000000004713315644467021244 0ustar jenkinsjenkins00000000000000[console_scripts]
nmlc = nml.main:run
nml-0.4.5/nml.egg-info/top_level.txt0000644000567200056720000000001513315644467020473 0ustar jenkinsjenkins00000000000000nml
nml_lz77
nml-0.4.5/nml.egg-info/PKG-INFO0000644000567200056720000000161113315644467017041 0ustar jenkinsjenkins00000000000000Metadata-Version: 1.1
Name: nml
Version: 0.4.5
Summary: A tool to compile nml files to grf or nfo files
Home-page: http://dev.openttdcoop.org/projects/nml
Author: NML Development Team
Author-email: nml-team@openttdcoop.org
License: GPL-2.0+
Description: A tool to compile nml files to grf and / or nfo files.NML is a meta-language that aims to be a lot simpler to learn and use than nfo.
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Topic :: Software Development :: Compilers
nml-0.4.5/nml.egg-info/SOURCES.txt0000644000567200056720000001660513315644467017641 0ustar jenkinsjenkins00000000000000MANIFEST.in
Makefile
nmlc
setup.py
docs/changelog.txt
docs/index.html
docs/license.txt
docs/nml.spec
docs/nmlc.1
docs/readme.txt
examples/object/cc_grid.png
examples/object/example_object.nml
examples/object/lang/english.lng
examples/railtype/example_railtype.nml
examples/railtype/gfx/depot_electric.png
examples/railtype/gfx/depot_normal.png
examples/railtype/gfx/fences.png
examples/railtype/gfx/gui_erail.png
examples/railtype/gfx/gui_rail.png
examples/railtype/gfx/lc_left.png
examples/railtype/gfx/lc_right.png
examples/railtype/gfx/rails_overlays.png
examples/railtype/gfx/tunnel_track.png
examples/railtype/lang/english.lng
examples/road_vehicle/example_road_vehicle.nml
examples/road_vehicle/gfx/flatbed_truck_1_copper.png
examples/road_vehicle/gfx/flatbed_truck_1_goods.png
examples/road_vehicle/gfx/flatbed_truck_1_paper.png
examples/road_vehicle/gfx/flatbed_truck_1_steel.png
examples/road_vehicle/gfx/flatbed_truck_1_wood.png
examples/road_vehicle/lang/english.lng
examples/train/example_train.nml
examples/train/icm.png
examples/train/lang/dutch.lng
examples/train/lang/english.lng
nml/__init__.py
nml/__version__.py
nml/_lz77.c
nml/free_number_list.py
nml/generic.py
nml/global_constants.py
nml/grfstrings.py
nml/lz77.py
nml/main.py
nml/nmlop.py
nml/output_base.py
nml/output_dep.py
nml/output_grf.py
nml/output_nfo.py
nml/output_nml.py
nml/palette.py
nml/parser.py
nml/spritecache.py
nml/spriteencoder.py
nml/tokens.py
nml/unit.py
nml/version_info.py
nml.egg-info/PKG-INFO
nml.egg-info/SOURCES.txt
nml.egg-info/dependency_links.txt
nml.egg-info/entry_points.txt
nml.egg-info/top_level.txt
nml/actions/__init__.py
nml/actions/action0.py
nml/actions/action0properties.py
nml/actions/action1.py
nml/actions/action10.py
nml/actions/action11.py
nml/actions/action12.py
nml/actions/action14.py
nml/actions/action2.py
nml/actions/action2layout.py
nml/actions/action2production.py
nml/actions/action2random.py
nml/actions/action2real.py
nml/actions/action2var.py
nml/actions/action2var_variables.py
nml/actions/action3.py
nml/actions/action3_callbacks.py
nml/actions/action4.py
nml/actions/action5.py
nml/actions/action6.py
nml/actions/action7.py
nml/actions/action8.py
nml/actions/actionA.py
nml/actions/actionB.py
nml/actions/actionD.py
nml/actions/actionE.py
nml/actions/actionF.py
nml/actions/base_action.py
nml/actions/real_sprite.py
nml/actions/sprite_count.py
nml/ast/__init__.py
nml/ast/alt_sprites.py
nml/ast/assignment.py
nml/ast/base_graphics.py
nml/ast/base_statement.py
nml/ast/basecost.py
nml/ast/cargotable.py
nml/ast/conditional.py
nml/ast/deactivate.py
nml/ast/disable_item.py
nml/ast/error.py
nml/ast/font.py
nml/ast/general.py
nml/ast/grf.py
nml/ast/item.py
nml/ast/loop.py
nml/ast/override.py
nml/ast/produce.py
nml/ast/railtypetable.py
nml/ast/replace.py
nml/ast/skipall.py
nml/ast/snowline.py
nml/ast/sort_vehicles.py
nml/ast/sprite_container.py
nml/ast/spriteblock.py
nml/ast/switch.py
nml/ast/tilelayout.py
nml/ast/townnames.py
nml/editors/__init__.py
nml/editors/extract_tables.py
nml/editors/kate.py
nml/editors/notepadpp.py
nml/expression/__init__.py
nml/expression/array.py
nml/expression/base_expression.py
nml/expression/bin_not.py
nml/expression/binop.py
nml/expression/bitmask.py
nml/expression/boolean.py
nml/expression/functioncall.py
nml/expression/functionptr.py
nml/expression/identifier.py
nml/expression/parameter.py
nml/expression/patch_variable.py
nml/expression/special_parameter.py
nml/expression/spritegroup_ref.py
nml/expression/storage_op.py
nml/expression/string.py
nml/expression/string_literal.py
nml/expression/ternaryop.py
nml/expression/variable.py
regression/001_action8.nml
regression/002_sounds.nml
regression/003_assignment.nml
regression/004_deactivate.nml
regression/005_error.nml
regression/006_vehicle.nml
regression/007_townnames.nml
regression/008_railtypes.nml
regression/009_replace.nml
regression/010_liveryoverride.nml
regression/011_snowline.nml
regression/012_basecost.nml
regression/013_train_callback.nml
regression/014_read_special_param.nml
regression/015_basic_object.nml
regression/016_basic_airporttiles.nml
regression/017_articulated_tram.nml
regression/018_airport_tile.nml
regression/019_switch.nml
regression/020_recolour.nml
regression/021_grf_parameter.nml
regression/022_disable_item.nml
regression/023_engine_override.nml
regression/024_conditional.nml
regression/025_loop.nml
regression/026_asl.nml
regression/027_airport_layout.nml
regression/028_font.nml
regression/029_base_graphics.nml
regression/030_house.nml
regression/031_aircraft.nml
regression/032_simple_house.nml
regression/Makefile
regression/arctic_railwagons.pcx
regression/beef.wav
regression/brewery.png
regression/brewery_snow.png
regression/font_addl.png
regression/fonts.png
regression/groundtiles.png
regression/nlhs.png
regression/oneway.png
regression/opengfx_generic_trams1.pcx
regression/opengfx_generic_trams1.png
regression/opengfx_trains_start.pcx
regression/temperate_railwagons.png
regression/tram_foster_express.png
regression/expected/001_action8.grf
regression/expected/001_action8.nfo
regression/expected/002_sounds.grf
regression/expected/002_sounds.nfo
regression/expected/003_assignment.grf
regression/expected/003_assignment.nfo
regression/expected/004_deactivate.grf
regression/expected/004_deactivate.nfo
regression/expected/005_error.grf
regression/expected/005_error.nfo
regression/expected/006_vehicle.grf
regression/expected/006_vehicle.nfo
regression/expected/007_townnames.grf
regression/expected/007_townnames.nfo
regression/expected/008_railtypes.grf
regression/expected/008_railtypes.nfo
regression/expected/009_replace.grf
regression/expected/009_replace.nfo
regression/expected/010_liveryoverride.grf
regression/expected/010_liveryoverride.nfo
regression/expected/011_snowline.grf
regression/expected/011_snowline.nfo
regression/expected/012_basecost.grf
regression/expected/012_basecost.nfo
regression/expected/013_train_callback.grf
regression/expected/013_train_callback.nfo
regression/expected/014_read_special_param.grf
regression/expected/014_read_special_param.nfo
regression/expected/015_basic_object.grf
regression/expected/015_basic_object.nfo
regression/expected/016_basic_airporttiles.grf
regression/expected/016_basic_airporttiles.nfo
regression/expected/017_articulated_tram.grf
regression/expected/017_articulated_tram.nfo
regression/expected/018_airport_tile.grf
regression/expected/018_airport_tile.nfo
regression/expected/019_switch.grf
regression/expected/019_switch.nfo
regression/expected/020_recolour.grf
regression/expected/020_recolour.nfo
regression/expected/021_grf_parameter.grf
regression/expected/021_grf_parameter.nfo
regression/expected/022_disable_item.grf
regression/expected/022_disable_item.nfo
regression/expected/023_engine_override.grf
regression/expected/023_engine_override.nfo
regression/expected/024_conditional.grf
regression/expected/024_conditional.nfo
regression/expected/025_loop.grf
regression/expected/025_loop.nfo
regression/expected/026_asl.grf
regression/expected/026_asl.nfo
regression/expected/027_airport_layout.grf
regression/expected/027_airport_layout.nfo
regression/expected/028_font.grf
regression/expected/028_font.nfo
regression/expected/029_base_graphics.grf
regression/expected/029_base_graphics.nfo
regression/expected/030_house.grf
regression/expected/030_house.nfo
regression/expected/031_aircraft.grf
regression/expected/031_aircraft.nfo
regression/expected/032_simple_house.grf
regression/expected/032_simple_house.nfo
regression/lang/dutch.lng
regression/lang/english.lng
regression/lang/us.lngnml-0.4.5/nml.egg-info/dependency_links.txt0000644000567200056720000000000113315644467022013 0ustar jenkinsjenkins00000000000000
nml-0.4.5/nmlc0000755000567200056720000000013113315644406014330 0ustar jenkinsjenkins00000000000000#! /usr/bin/env python3
from nml import main
if __name__ == "__main__":
main.run()
nml-0.4.5/docs/0000755000567200056720000000000013315644467014415 5ustar jenkinsjenkins00000000000000nml-0.4.5/docs/license.txt0000644000567200056720000004310413315644406016573 0ustar jenkinsjenkins00000000000000 GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
nml-0.4.5/docs/readme.txt0000644000567200056720000001162113315644406016405 0ustar jenkinsjenkins00000000000000NML readme
Last updated: 2016-01-07
Release version: 0.4.3
------------------------------------------------------------------------
Table of Contents:
------------------
1) About
2) Contact
3) Dependencies
3.1) Required dependencies
3.2) Optional dependencies
4) Installation
5) Usage
6) Known issues
7) Credits
1) About:
-- ------
NML is a a python-based compiler, capable of compiling NML files (along
with their associated language, sound and graphic files) into grf
and / or nfo files.
The documentation about the language can be found on
http://newgrf-specs.tt-wiki.net/wiki/NML:Main
NML is licensed under the GNU General Public License version 2, or at
your option, any later version. For more information, see 'license.txt'
(GPL version 2), or later versions at .
2) Contact:
-- --------
Contact can be made via the issue tracker / source repository at
http://dev.openttdcoop.org/projects/nml or via IRC on the
#openttdcoop.devzone channel on OFTC.
3) Dependencies:
-- -------------
3.1) Required dependencies:
---- ----------------------
NML requires the following 3rd party packages to run:
- python
Minimal version is 3.2. Python 2 is not supported.
- python image library
For install options see https://pillow.readthedocs.org/installation.html#simple-installation
- ply
downloadable from http://www.dabeaz.com/ply/
3.2) Optional dependencies:
---- ----------------------
To install NML you'll need these 3rd party packages:
- buildout
Only necesary if you want to use the installer. You can
run NML without installation or manually install it.
- gcc (or possibly another c++ compiler)
Needed to compile the cython version of the lz77 module for grf encoding
4) Installation:
-- -------------
NML uses buildout for packaging / installation. To install NML run:
python setup.py install
If you want to install the package manually copy 'nmlc' to any directory
in your path and the directory 'nml' to any directory in your python path.
5) Usage:
-- ------
Usage: nmlc [options]
Where is the nml file to parse
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-d, --debug write the AST to stdout
-s, --stack Dump stack when an error occurs
--grf= write the resulting grf to
--md5= Write an md5sum of the resulting grf to
--nfo= write nfo output to
-M output a rule suitable for make describing the
graphics dependencies of the main grf file (requires
input file or --grf)
--MF= When used with -M, specifies a file to write the
dependencies to
--MT= target of the rule emitted by dependency generation
(requires -M)
-c crop extraneous transparent blue from real sprites
-u save uncompressed data in the grf file
--nml= write optimized nml to
-o , --output=
write output(nfo/grf) to
-t , --custom-tags=
Load custom tags from [default:
custom_tags.txt]
-l , --lang-dir=
Load language files from directory [default:
lang]
--default-lang=
The default language is stored in [default:
english.lng]
--start-sprite= Set the first sprite number to write (do not use
except when you output nfo that you want to include in
other files)
-p , --palette=
Force nml to use the palette [default: ANY].
Valid values are 'DOS', 'WIN', 'ANY'
--quiet Disable all warnings. Errors will be printed normally.
-n, --no-cache Disable caching of sprites in .cache[index] files,
which may reduce compilation time.
--cache-dir= Cache files are stored in directory [default:
.nmlcache]
--clear-orphaned Remove unused/orphaned items from cache files.
--verbosity= Set the verbosity level for informational output.
[default: 3, max: 4]
6) Known issues:
-- -------------
See the issue tracker at https://dev.openttdcoop.org/projects/nml/issues
7) Credits:
-- --------
Active developers (in alphabetical order):
Albert Hofkamp (Alberth)
Christoph Elsenhans (frosch)
Ingo von Borstel (planetmaker)
Remko Bijker (Rubidium)
Inactive developers:
Jasper Reichardt (Hirundo)
José Soler (Terkhen)
Thijs Marinussen (Yexo)
Special thanks to:
Richard Barrell
For writing the buildout script needed to install NML.
nml-0.4.5/docs/nml.spec0000644000567200056720000000433213315644406016052 0ustar jenkinsjenkins00000000000000#
# spec file for package nml
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: nml
Version: 0.4.3
Release: 0
Summary: NewGRF Meta Language
License: GPL-2.0+
Group: Development/Tools/Building
Url: http://dev.openttdcoop.org/projects/nml
Source0: http://bundles.openttdcoop.org/nml/releases/%{version}/%{name}-%{version}.src.tar.gz
BuildRequires: python-devel >= 3.2
BuildRequires: python-setuptools
#We need for regression test the required packages also on building:
BuildRequires: python-imaging
BuildRequires: python-ply
Requires: python-imaging
Requires: python-ply
Provides: nmlc = %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} && 0%{?suse_version} <= 1110
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%else
BuildArch: noarch
%endif
%description
A tool to compile nml files to grf or nfo files, making newgrf coding easier.
%prep
%setup -q
%build
python setup.py build
%install
python setup.py install --skip-build --root=%{buildroot} --prefix=%{_prefix}
install -D -m0644 docs/nmlc.1 %{buildroot}%{_mandir}/man1/nmlc.1
#setuptools should not be a requirement on running, so we install the nmlc wrapper from source
install -m0755 nmlc %{buildroot}%{_bindir}/nmlc
%check
cd regression
PYTHONPATH=%{buildroot}%{python_sitelib} make _V= NMLC=%{buildroot}%{_bindir}/nmlc
%files
%defattr(-,root,root,-)
%doc docs/*.txt
%{_bindir}/nmlc
%{_mandir}/man1/nmlc.1*
%{python_sitelib}/*
%changelog
nml-0.4.5/docs/nmlc.10000644000567200056720000000536213315644406015427 0ustar jenkinsjenkins00000000000000.Dd January 07, 2016
.Dt NMLC 1
.Sh NAME
.Nm NMLC
.Nd A compiler from NML code to NFO and/or GRF files.
.Sh SYNOPSIS
.Nm nmlc
.Op options
.Op file
.Sh OPTIONS
.Bl -tag
.It Fl c
Crop extraneous transparent blue from real sprites.
.It Fl u
Save real sprites uncompressed to GRF files. This saves a lot of time
during encoding but it's not recommended when creating a file for
distribution since it makes the output file substantially bigger.
.It Fl \-grf Ns = Ns Ar file
Write output in GRF format to .
.It Fl \-nfo Ns = Ns Ar file
Write output in NFO format to .
.It Fl \-nml Ns = Ns Ar file
Write output in NML format to .
.It Fl \-output Ns = Ns Ar file | Fl o Ar file
Write output to . The output type is detected from the extension
of the filename. It must be one of nfo, nml or grf.
.It Fl \-md5 Ns = Ns Ar file
Write an md5sum of the resulting grf to .
.It Fl \-debug | Fl d
Print a dump of the AST to stdout.
.It Fl \-version
Print programme's version number and exit.
.It Fl \-help | Fl h
Print usage information.
.It Fl \-stack | Fl s
Dump stack when an error occurs.
.It Fl M
Output a rule suitable for make describing the graphics dependencies of the main grf file (requires input file or \-\-grf)
.It Fl \-MF Ns = Ns Ar file
When used with \-M, specifies a file to write the dependencies to
.It Fl \-MT Ns = Ns Ar file
Target of the rule emitted by dependency generation (requires \-M)
.It Fl \-custom\-tags Ns = Ns Ar file | Fl t Ar file
Load custom tags from [default: custom_tags.txt].
.It Fl \-lang-dir Ns = Ns Ar dir | Fl l Ar dir
Load language files from directory [default: lang].
.It Fl \-default\-lang Ns = Ns Ar file
The default language is stored in [default: english.lng].
.It Fl \-sprites\-dir Ns = Ns Ar dir | Fl a Ar dir
Store 32bpp sprites in directory [default: sprites].
.It Fl \-start\-sprite Ns = Ns Ar num
Set the first sprite number to write (do not use except when you output
nfo that you want to include in other files).
.It Fl \-palette Ns = Ns Ar palette | Fl p Ar palette
Force nml to use the palette [default: ANY]. Valid values
are 'DOS', 'WIN', 'ANY'.
.It Fl \-quiet
Disable all warnings. Errors will be printed normally.
.It Fl \-cache\-dir Ns = Ns Ar dir
Cache files are stored in directory [default: .nmlcache].
.It Fl \-clear\-orphaned
Remove unused / orphaned items from cache files.
.It Fl \-verbosity Ns = Ns Ar level
Set the verbosity level for informational output [default: 3, max: 4].
.El
.Sh SEE ALSO
The language reference at
.Pa http://newgrf\-specs.tt\-wiki.net/wiki/NML:Main
.Sh AUTHOR
NML was written by Albert Hofkamp, Christoph Elsenhans, Jasper Reichardt, Ingo von Borstel,
José Soler and Thijs Marinussen.
.Pp
This manual page was originally written by Thijs Marinussen.
nml-0.4.5/docs/index.html0000644000567200056720000000123413315644406016403 0ustar jenkinsjenkins00000000000000
NML documentation
The NML documentation has been moved to the following location: http://newgrf-specs.tt-wiki.net/wiki/NML:Main.
You will be redirected in a few seconds, click the link if this doesn't happen (most likely because meta refresh is disabled in your browser).
nml-0.4.5/docs/changelog.txt0000644000567200056720000005111413315644406017100 0ustar jenkinsjenkins000000000000000.4.5 (2018-06-30)
------------------------------------------------------------------------
- Feature: increase cargo ID range from 32 to 64, to support 64 cargos in OpenTTD 11ab3c4ea2f6a6d29efda8c9ba2af04194621ea7
- Change: Support more DCxx strings for OpenTTD r27769.
- Add: Properties for vehicle sprite stack.
- Add: CB_FLAG_MORE_SPRITES, PALETTE_IDENTITY
- Add: String command 9A 1E CARGO_NAME.
- Add: CB_RESULT_IND_NO_TEXT_NO_AMOUNT
- Codechange: Store textids without offset in string_ranges
- Fix: String encoding with cases was non-deterministic and resulted in differing md5sums for the NewGRF.
- Fix: Rearrange order of string id assignment to keep compatibility.
- Fix: When some IDs depleted, an internal NML error was raised instead of the intended error message.
- Fix: most_common_refit was reading the wrong bits in var 42; read the write bits and rename it to most_common_cargo_type
as it's more accurate; also add most_common_cargo_subtype which also reads var 42 and was previously missing
- Fix: Switch from :r format code to !r conversion flag to avoid crashes.
- Update: Changelog
0.4.4 (2016-01-07)
------------------------------------------------------------------------
- Fix/Revert: Stripping one path level is not enough
0.4.3 (2016-01-07)
------------------------------------------------------------------------
- Add: prob_map_gen as alternative name for the mapgen industry probability property
- Fix: Stripping one path level is enough
- Fix: Compatibility with newer versions of pillow.
- Fix: Vehicle 'sort' function caused internal error when an empty list was passed.
- Fix: motion_counter is 24 bits, not 4.
0.4.2 (2015-09-13)
------------------------------------------------------------------------
-Add: New industry type limits of OpenTTD 1.6
-Fix: [CF] Build the version which is asked to be built instead of tip
-Fix: Mark the cython acceleration module as optional.
-Fix #7641: Sort gender and case translation tables deterministically (matthijs)
-Fix #7640: Use dashes, not hyphens in manpage (matthijs)
-Fix: getbits
-Fix #7336: Action 6 offset was off by one for VA2 ranges when using a list of expressions in a switch.
-Fix #7185: Incorrect Action6 offsets for Production Action2.
-Doc: Be more verbose about MANIFEST.in and remove bootstrap from manifest as well
0.4.1 (2015-04-12)
------------------------------------------------------------------------
- Change: Try to improve packaging by applying some in-built automatisms via find_package() (oberhumer) (issue #7540)
- Add: second_rocky_tileset
- Add: Build-in function 'getbits'
- Fix: Building source bundle was broken
- Fix: Version identification for tags
- Doc: Update readme with python version info
- Cleanup: Remove pre-OpenTTD-1.1 wrappers for SHIFT_LEFT, SHIFT_RIGHT and SHIFTU_RIGHT.
- Cleanup: Remove bootstrap
0.4.0 (2015-02-18)
------------------------------------------------------------------------
- Feature: [NewGRF] create_effect and effect_spawn_model
- Feature: [NewGRF] EFFECT_SPRITE_NONE constant for create_effect callback
- Feature: [NewGRF] support for OTTD_RECOLOUR action5 sprite(s)
- Feature: [NewGRF] Support for Latin
- Feature: [NewGRF] Variable to test for enabled wagon speed limits. (issue #6474)
- Feature: Improve speed by caching position during parsing.
- Feature: Warn about usage of animation and semi-transparent colours, and add spriteset flags to enable/disable the checks. (issue #1085)
- Feature: Improved error position reporting with templated real sprites. Closes #7001
- Feature: Cython acceleration module for GRF compression.
- Change: Convert from Python2 to Python 3.2+
- Change: At least check for isatty when using the funky colour codes in warning output (issue #5411)
- Change: Do not store uncompressed sprites in the sprite cache.
- Change: Use a separate spritecache file for each source image.
- Change: Keep (possibly only temporarily) unused items in the spritecache until they are out-dated for sure.
- Change: Reduce load on stdout by limiting incremental progress output to 1 message per second.
- Change: Store amount of pure-white pixels in the spritecache instead of plain text warnings.
- Change: Rewrite syntax file generators as python scripts
- Change: [devzone] Don't run regressions in parallel to allow other tasks to run concurrently
- Change: [devzone] Also update DevZone when we build tip but call it by its hash
- Change: [devzone] Build the nml_lz77 extension for use by the CF
- Add: Print progress information to interactive terminals.
- Add: Progress output about lang files.
- Add: Print statistics about used Action0 ids.
- Add: Print statistics about used ActionF ids.
- Add: Print statistics about used Spriteset ids.
- Add: Print statistics about used Spritegroup ids.
- Add: Print statistics about temporary Action2 registers.
- Add: Print statistics about temporary ActionD registers and Action10 labels.
- Add: Print statistics about GRF parameters.
- Add: Print statistics about string ids.
- Add: Print statistics about sound effect ids.
- Add: Print statistics about cargo and railtype translation tables.
- Add: Command line option to specify a cache directory.
- Add: Command line option to set verbosity level of info output.
- Add: Vebosity level 4 for printing CPU time on processing.
- Add: Real sprites keep list of positions for improved error reporting with templates.
- Add: Collect positions for real sprites through template instantiation.
- Add: Build a position with an include stack from a list positions.
- Fix: [NewGRF] Number of vehicles in var 41 is one-based, only var 40 is zero-based.
- Fix: [NewGRF] Patch flags can only be accessed via action 7/9. (issue #6996)
- Fix: [NewGRF] Action7/9 bit tests must use varsize 1.
- Fix: Don't write parse tables. Closes #4091
- Fix: Printing Unicode characters in NFO was broken. Also added regression check for it.
- Fix: CPP output line directive can have several flags, which caused matching failure.
- Fix: Validate string names for being proper identifiers
- Fix: Add the output palette to the spritecache key. (issue #6496)
- Fix: Encode sprites sequentially per source image file. (issue #7004)
- Fix: No proper error message was given, if an unreferenced Spritegroup was unable to allocate an id.
- Fix: Don't fail if there's a .hg directory but no mercurial
- Doc: main function, and instance variables of the parser and scanner.
- Doc: RealSprite members
- Doc: Unused return values.
- Doc: instance variables of SpriteAction.
0.3.1 (2014-05-10)
------------------------------------------------------------------------
- Add: String commands CARGO_LONG, CARGO_SHORT and CARGO_TINY
- Add: Object variable 'nearby_tile_object_view'
- Add: Vehicle variable 'vehicle_is_unloading'
- Add: House callback result 'CB_RESULT_HOUSE_NO_MORE_PRODUCTION'
- Fix: Typo-fix in font_glpyh block name.
- Fix: Error in raising an error in format_string
- Fix: Don't catch more exception than expected, comment typo fixes, removed empty line
- Fix: Report error from the spriteview position, instead of using a non-existing variable.
- Fix: Do not report a position using a non-existing instance variable.
- Fix: Don't crash on raising None after printing a warning.
- Fix: Add also rpm spec file and syntax highlighting creation scripts to source distribution
- Doc: Additional documentation, small fixes/improvments.
- Change: Drop Python 2.5 support.
0.3.0 (2014-01-01)
------------------------------------------------------------------------
- Feature: use grf container format v2, nfo v32 and grf v8
- Feature: Support for alternate sprites, including 32bpp
- Feature: Support for houses
- Feature: Configurable volume for sound effects
- Feature: Support pillow image library as well (Toshio Kuratomi) (issue #4799)
- Feature: Remove the 64 kiB file size limit on sound effects
- Feature: Vehicles: Deprecate property 'refittable_cargo_types' (issue #3583)
- Feature: Vehicles: Add property 'default_cargo_type' for trains, RVs and ships (issue #3571)
- Feature: Vehicle properties cargo_allow_refit and cargo_disallow_refit
- Feature: Vehicles variables curvature info: 'curv_info', ' curv_info_prev_cur', 'curv_info_cur_next' and 'curv_info_prev_next' (variable 0x62)
- Feature: Vehicles variables 'position_in_articulated_veh' and 'position_in_articulated_veh_from_end' (var 0x4D)
- Feature: Canals variable 'dike_map' (variable 0x82)
- Feature: Base-station variables for airports and stations
- Feature: Station variables
- Feature: Objects property 'count_per_map256'
- Feature: General variables 'base_sprite_foundations' and 'base_sprite_shores' (variables 0x15 and 0x16)
- Feature: Cargo property 'capacity multiplier' (property 0x1D)
- Feature: Allow outputting multiple sprites per real sprite slot (issue #3712)
- Feature: Labels for recolour sprites, as for real sprites
- Feature: use language code instead of number as argument for ##grflangid pragma in language files (issue #3960)
- Feature: Improved error output (issue #2929, #3814, #4736, #4299, #5411, #6209)
- Feature: Unit conversions for non-constant values (issue #3828)
- Feature: Builtin function format_string(format, args) (issue #4074)
- Feature: Cache real sprites when building a GRF, to reduce compilation time
- Feature: Allow using 'default: foo' in switch-blocks, or omitting the default altogether (issue #4186)
- Feature: Check for identical language IDs in the different language files (issue #4997)
- Feature: Verify whether translations use the plural form expected by their language
- Feature: Consider file system paths case-insensitive at all systems (issue #5429)
- Change: Vehicles: 'length' property and callback for trains and RVs (replaces 'shorten_vehicle')
- Change: Vehicles: No longer set the default cargo automatically (issue #3571)
- Change: Rework the RV speed property, so it works with non-constant values (issue #3828)
- Change: Merge aircraft properties 'is_helicopter' and 'is_large' into a single common property 'aircraft_type' (issue #3700)
- Change: Rename LOADINGSTAGE_XXX to LOADING_STAGE_XXX
- Change: Canals: variable 'tile_height' now returns height in tiles
- Change: Rename 'availability' callback to 'construction_probability'
- Change: snowline_height is in tiles
- Change: Output cropping debug output to stderr instead of stdout
- Change: Unlink .grf file before write (issue #4165)
- Change: Let item ID -1 mean 'use default ID' (as if no ID was specified)
- Change: Don't always set the same property value for all tiles, only do so when appropriate
- Change: Allocate parameters starting at 127 instead of 64 (issue #4222)
- Change: improve optimization for expressions containing comparison operators by marking them as "return bool"
- Change: Modify version output to always give the version and revision, for both, releases and nightlies
- Change: delay changing not into xor with 1 to the last moment, it's not efficient when doing the computations via actionD, only for action2
- Change: use the location of the version_info.py file instead of the current repo's version (issue #5513)
- Feature: Maintenance cost properties for airports and railtypes
- Feature: New base costs for property maintenance
- Add: max_height_level variable
- Add: a few constants for generic groundsprites in the baseset
- Add: new constant CB_RESULT_NO_TEXT for use in cargo_subtype_(text/display)
- Add: Alternative railtype label list (issue #3459)
- Add: New property 'value_function' for action 0 properties
- Add: Command-line parameter '--no-cache' (-n) to disable caching of real sprites. Enable this parameter in the regression makefile for the NML-output to NFO/GRF compilation step
- Add: Command-line parameter '--quiet' to disable all warnings (issue #3106)
- Add: Command-line parameter '--md5' to write md5sum of grf to another file (issue #3732)
- Add: NML output for item size and sprite layout parameters
- Add: Language files: ##map_case pragma similar to ##map_gender
- Add: TILE_CLASS_VOID to allow checking for map border and to have a constant when using nearby_tile_class on it
- Add: Scripts to create syntax highlighting file for kate and notepad++
- Add: misc object flag 'OBJ_FLAG_SCALE_BY_WATER' to influence amount of objects placed on maps
- Add: Support for Scottish Gaelic
- Fix: hardcoded path in .devzone/build/files caused errors with new CF (issue #3267)
- Fix: proper error message when input nml is not utf-8 encoded (issue #3233)
- Fix: also use the filename in error messages if it isn't preprocessed by gcc but directly supplied as input file
- Fix: provide proper error message when running out of parameter or label numbers
- Fix: it was not possible to use constants in the -part of an item-block
- Fix: Rename all occurences of 'base_sprites' to 'base_graphics', to avoid possible confusion such as wrong NML output
- Fix: Real sprite lists may contain unexpanded templates, so comparing their lengths makes no sense
- Fix: only reduce start_id argument to replace-block during pre-process stage (issue #3744)
- Fix: with statement needs import from future for python 2.5
- Fix: Fix tile compression to remove some useless (for grfv2) code and add a missing check for the chunk length (issue #3785)
- Fix: Sprites with long format (!= long chunks) tile compression had incorrect offsets
- Fix: some string industry properties didn't accept a string as value
- Fix: do palette conversion before putting the sprite data in a tuple
- Fix: ind. tile 'autoslope' cb num was set to 0x3B instead of 0x3C
- Fix: compatibility with python 2.5 (issue #3998)
- Fix: provide file/line information when detecting an error in a string even when in a later stage (issue #3898)
- Fix: Backslash-escapes in strings weren't properly validated. Also remove useless \n escape (issue #3636)
- Fix: Proper handling of failed callbacks (issue #2933)
- Fix: Provide a proper error message if a substring is missing, instead of an assertion error (also issue #3674) (issue #3932)
- Fix: Use translations for statically included string parameters if possible, even if the base string is not translated (issue #3642)
- Fix: Proper error message when running out of switch registers (issue #3082)
- Fix: Don't use a string instead of a position object (issue #4063)
- Fix: We should always round floats, but not try to round everything else
- Fix: refit_cost callback may also be called from the purchase menu
- Fix: Publishing one of the generated grfs is enough. Especially if they would overwrite eachother on publishing
- Fix: Make ActionA work for more than 255 consecutive sprites
- Fix: applying operator ! to a constant number didn't work (issue #4458)
- Fix: Missing range check for callback results could cause assertions (issue #4769)
- Fix: Cache white pixel messages (issue #4760)
- Fix: Random switch interdependencies were messed up (issue #4742)
- Fix: Rail type and snowline table action6 offsets weren't updated when changing ID to an extended byte (issue #4787)
- Fix: Incorrect action 6 offset in random action 2 (issue #4730)
- Fix: Use the same (decimal) numbering scheme for plurals in language files as OpenTTD (issue #4811)
- Fix: cargo_age_period is property 2B, not 28. A typo caused CB36 to fail
- Fix: Position information for errors regarding sound file includes was missing / broken (issue #4850)
- Fix: Give the expected default lang file name in case it wasn't found
- Fix: Road vehicle speed was incorrectly set for vehicles faster than 70mph (issue #5336)
- Fix: Object variable 'company colour' returned faulty values (issue #5624)
- Fix: Snowline code still generated GRFv7 output (issue #5609)
- Fix: Town name parts could end up with more than 255 entries
- Fix: Also add offset when skipping fixed rail types
- Fix: Don't loop forever on / paths (issue #6209)
- Fix: adjust_value had tendency to take the value higher than the wanted
- Fix: aircraft speed property conversion didn't do the conversion from (issue #4667)
- Fix: For houses without any callbacks a dummy VA2 with zero cases was created, which unintentionally returned a computed value (issue #5294)
- Fix: P string command shall default to the previous parameter (issue #6503)
- Doc: add abstract base class to document Action0Property and relatives
- Doc: RPM build spec
- Doc: why the default language is processed twice
- Doc: Add some code documentation to the grfstrings.py file
- Remove: Ability to save 32bpp sprites as pngs, and lots of other stuff that won't be needed anymore
- Remove: Deprecated refittable_cargo_types property. Instead zero it upon writing a different refit property, to avoid possible conflicts with other grfs (issue #3583)
- Remove: Unused command-line parameter 'sprites-dir.'
- Remove: Cargo properties single_unit_text and multiple_units_text
0.2.5 (2014-01-01)
------------------------------------------------------------------------
- Feature: Support pillow image library as well (Toshio Kuratomi) (issue #4799)
- Change: Modify version output to always give the version and revision, for both, releases and nightlies
- Add: New GUI sprite in OpenTTD r24749, r25293, r25344 and r25916
- Fix: Use the correct version_info.py file instead of the current repo's version (issue #5513)
- Fix: Town name parts could end up with more than 255 entries
- Fix: Also add offset when skipping fixed rail types
- Fix: adjust_value had tendency to take the value higher than the wanted value
- Fix: aircraft speed property conversion didn't do the conversion from (issue #4667)
0.2.4 (2012-10-14)
------------------------------------------------------------------------
- Feature: Report NML line information as well as pixel position for pure white pixels. Also, report number of pixels in the sprite, instead of the whole image (issue #4029)
- Feature: 'signals' callback for railtypes
- Feature: Allow the 'nfo' unit to be used with non-constant values (issue #3828)
- Feature: 'build_prod_change' callback for industries to set industry production level on construction
- Feature: Constant CB_RESULT_REFIT_COST_MASK
- Feature: Vehicle misc_flag VEHTYPE_FLAG_NO_BREAKDOWN_SMOKE
- Feature: 'current_max_speed' variable for vehicles (issue #3979)
- Feature: 'vehicle_is_in_depot' variable for aircraft
- Feature: 'range' property and callback for aircraft
- Feature: 'production_rate_1/2' variables for industries
- Feature: 'town_zone' variable for railtypes
- Feature: 'other_veh_(curv_info|is_hidden|x_offset|y_offset|z_offset)' variables for vehicles
- Fix: Provide a proper error message when running out of action2 IDs
- Fix: A '{' at the end of a string could cause a crash
- Fix: Backslash-escapes in strings weren't properly validated. Also remove useless \n escape (issue #3636)
- Fix: Provide a proper error message if a substring is missing, instead of an assertion error (issue #3932)
- Fix: 'refit_cost' callback may also be called from the purchase menu
- Fix: Allow using constants > 255 as variable parameter (issue #4086)
- Fix: Sprite layout register code contained an unsorted iteration over dictionary keys, resulting in possible regression failures
0.2.3 (2012-02-19)
------------------------------------------------------------------------
- Feature: Action5 for tunnel portals
- Fix: Properly catch out-of-bounds image reads (issue #3666)
- Fix: Character code 0xA0 (NBSP) is used for an up arrow in TTD, so
don't write it as ascii. Force unicode instead (issue #3643)
0.2.2 (2012-01-29)
------------------------------------------------------------------------
- Feature: support for (optional) url-information in the grf-block
- Feature: names for newly defined cargo classes: CC_POWDERIZED and CC_NEO_BULK
- Feature: clean target to Makefile in main dir and let make clean remove regression/parsetab.py
- Fix: don't crash when a line in custom_tags.txt is missing a colon delimiter
- Fix: each action4 is limited to 255 strings. Write multiple actions when we have more than that
- Fix: groff warning about manpage
- Fix: include buildout.cfg in src distribution and prune regression/nml_output/ (issue #3490)
- Fix: Add NML output for replacenew-block (issue #3450)
- Fix: include nmlc script so regression runs out-of-the-box for source package
- Fix: several files from examples/ were missing in source distributions
- Fix: 'make install' was broken
- Doc: add notice about ZPL in readme.txt
0.2.1 (2011-12-18)
------------------------------------------------------------------------
- Feature: CB_RESULT_NO_MORE_ARTICULATED_PARTS, CB_RESULT_REVERSED_VEHICLE
and CB_RESULT_NO_TEXT as constants to make porting projects to NML 0.3 easier.
- Fix: Internal error when the ID in a replace-block was not a compile-time constant
- Fix: Crash when referencing a SpriteSetCollection in a graphics-block that was inside an if-block
- Fix: Text files in docs/ were not included in source package
- Doc: Add GPL v2 header to all .py files
0.2.0 (2011-11-20)
------------------------------------------------------------------------
No changelog available for 0.2.0 and earlier
nml-0.4.5/Makefile0000644000567200056720000000043413315644406015117 0ustar jenkinsjenkins00000000000000MAKE?=make
PYTHON?=/usr/bin/env python3
.PHONY: regression install bundle extensions clean
regression: extensions
$(MAKE) -C regression
test: regression
install:
$(PYTHON) setup.py install
extensions:
$(PYTHON) setup.py build_ext --inplace
clean:
$(MAKE) -C regression clean
nml-0.4.5/setup.cfg0000644000567200056720000000007313315644467015306 0ustar jenkinsjenkins00000000000000[egg_info]
tag_build =
tag_date = 0
tag_svn_revision = 0