From a35551c91712974309b80b240b27fa59eb11d4f0 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Tue, 12 Dec 2023 19:02:56 +0000 Subject: [PATCH] Add: Regression test for 32bpp-only spriteset(). --- regression/041_articulated_tram_32bpp.nml | 63 +++++++++++++ .../expected/041_articulated_tram_32bpp.grf | Bin 0 -> 2996 bytes .../expected/041_articulated_tram_32bpp.nfo | 83 ++++++++++++++++++ regression/tram_foster_express.32.png | Bin 0 -> 7714 bytes 4 files changed, 146 insertions(+) create mode 100644 regression/041_articulated_tram_32bpp.nml create mode 100644 regression/expected/041_articulated_tram_32bpp.grf create mode 100644 regression/expected/041_articulated_tram_32bpp.nfo create mode 100644 regression/tram_foster_express.32.png diff --git a/regression/041_articulated_tram_32bpp.nml b/regression/041_articulated_tram_32bpp.nml new file mode 100644 index 00000000..10a959a1 --- /dev/null +++ b/regression/041_articulated_tram_32bpp.nml @@ -0,0 +1,63 @@ +/* +A simple articulated tram, graphics from OpenGFX+rv +Code is modified in some places for testing reasons. +*/ + +grf { + grfid: "NML\41"; + name: string(STR_REGRESSION_NAME); + desc: string(STR_REGRESSION_DESC); + version: 0; + min_compatible_version: 0; +} + +template tmpl_tram(x, y) { + [ x, y, 8, 18, -3, -10] + [ 16 + x, y, 20, 18, -14, -5] + [ 48 + x, y, 28, 15, -14, -8] + [ 96 + x, y, 20, 18, -6, -7] + [128 + x, y, 8, 18, -3, -10] + [144 + x, y, 20, 18, -14, -9] + [176 + x, y, 28, 15, -14, -8] + [224 + x, y, 20, 18, -6, -7] +} +spriteset(foster_express_set, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "tram_foster_express.32.png") { + tmpl_tram(48,1) +} + +switch(FEAT_ROADVEHS, SELF, foster_express_articulated_parts, extra_callback_info1) { + 1..3: return foster_express_tram; + return 0xFF; +} + + +item(FEAT_ROADVEHS, foster_express_tram, 88) { + property { + name: string(STR_NAME_FOSTER_TURBO_TRAM); + climates_available: ALL_CLIMATES; + model_life: 40; // years + vehicle_life: 30; // years + introduction_date: date(1965,1,1); + reliability_decay: 1; + running_cost_base: RUNNING_COST_ROADVEH; // Default road vehicle running cost base + running_cost_factor: 135; + cost_factor: 143; + speed: 317 mph; + power: 220 hp; + weight: 22 ton; + sprite_id: SPRITE_ID_NEW_ROADVEH; // We have our own sprites + loading_speed: 16; // loading speed + tractive_effort_coefficient: 0.3; + air_drag_coefficient: 0.5; + cargo_capacity: 45; // passengers + refittable_cargo_classes: bitmask(CC_PASSENGERS); // Allow passengers (and tourists) + non_refittable_cargo_classes: NO_CARGO_CLASS; // Disallow other cargos + cargo_allow_refit: []; + default_cargo_type: DEFAULT_CARGO_FIRST_REFITTABLE; + misc_flags: bitmask(ROADVEH_FLAG_TRAM); // This is a tram + } + graphics { + articulated_part: foster_express_articulated_parts; + foster_express_set; + } +} diff --git a/regression/expected/041_articulated_tram_32bpp.grf b/regression/expected/041_articulated_tram_32bpp.grf new file mode 100644 index 0000000000000000000000000000000000000000..282eaa3b824693ed13a5fd9741df9d4d6ef52aad GIT binary patch literal 2996 zcmY*be{3699lz^cSFiO}Gt8Dw-Z*KN=07?u649uHHMzwrx8ZiD)*A=1kl9@3N!c3G zAo53~MwN*j-=8!{)!~^h^c|V@nfmO*tGsrFZ7=} zbLPdM2RO^Cw?;E#QCY))(&$n|J$rLS4rW4DWyB0a>~i zr%4Y=Ti58;CFDos17bNB3c z{rR0coxMAqeLJ1tPUo(j&fPnm{n!yR5!)?UK-wBf;tQs9UuYZmEfPfBk|g_`eTuE$ z+Imyzyoe+56PuaErbzc-|8xH{U+h7OB+Gs*Gs#ueKQuVY)!n{sc|MP*!D!xR8jCTF zA7mO$@;GQ#f<^fNBp{1z7_wen(KHQ)ZN^u*#wLL}8n9)_4MWz_ATg~ql1jK|Xj$j9 znxm0MK`{(t4EUivhB4rG_oSyMS%_&$E(c!Jt+Nmro^DsKHMl}038KoR&)34u;G9Y) z=MFaGf{iDT2}KG?Vd+!Zt!$7jCVZHYbiF0)F1(l z+047W;=Q-aN+OY4Q{{xW=2~;PmeiajdGJ2Mk8q;~Y^6TY^@^7mK(aIl}|9xw+$P`bemLo7#@QsAZ~VNmv2g4EXa6q8o~F{+{E=FmH}}{!6C@NCJD-u0F_aggo}7*5xBKRMu~NPhy+O2 z`KS_&CAqp1-G@A5NC$ijAMQx(sT&fD2G8>>&tU*RG+1xvcISa(@JoDkzPH$``WVGx zySP@Q#Z0mHcafGS_%4>;UMpov`Ql(HTFT9MS8DTZ5xbfEe4i2ug-Vf9^nDZJPP}zV z$xU&tj)Zqf67Tz@Tj}oZ=BhXRNn#{E@=b&i9~qP-k%=#MLU9l3`rrPI+qzaoNN9*g zpi4xe_Dm1wflbpD^`3n`yViuhZx$}9Nnj)3JzMO94 zT*EaRvyGv-1s2DYGS8=7yBc6=6-o2C>W+eK*)Fa;W;bJk7YkP(%R+j3vr%Z;jf2Qp z!ozQP4#^Tjo?Pw~5nC?IOM=a-qq5sf4ox++hF7(y+2HdrI#qSpc(a#&~_)Uz@lNw0!f=_cx_#mRKLJE1R3cK+hdL_YBFdWGCA7=zWSejn*(VH8_zC)e7f_H%FT^6Cd75C@>tS);!xJnbBbi}ygpLu0ktZoX;? z1Y8B}@(?LZ*F>TC&TX-L>i_GuScD0}!}enx43LDALMC*$BbgMu*^x>LljkaIkUe0n zS$hONL<85z%2?BX1&VXNPXjC}mj!QNdG0qXtL1(%0rTbjfpH1GAQz&k^n1p>xF##zX}^ z`+v^3qmC_xw;a)XK7i8blnUsBvoHcbgDIG?^Sl=={%`OZ*-gUaA;^=%uAvI1ML9v6 zi3mqzi`)=2lf>nBc^8j#L={CRjPN)^M})j{QPe6Hn2T*?w#s{1fE{FAw8C^oMe?91 zDrkYJ#Ra-bV^FZlAk1(I+B8G+D25pHpbpY7yW8`TUZi`90G5F3GYQ?!lI9m`?>rr^Tc8n%jN{AF`G2s>n#iS0v(*QqTm$9f4KgSP9w7s4}&Axg$tKpwziwB>x}W!k6_m1K8I z63WmM%bOLGWTqWv&};Z9yJC~{N{CZ|m?Xfwn&k^ 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 "A" +"B" "BLTR" \w1 "3" +00 +00 +2 * 52 08 08 "NML\41" "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.32.png 32bpp 48 1 8 18 -3 -10 normal +8 tram_foster_express.32.png 32bpp 64 1 20 18 -14 -5 normal +9 tram_foster_express.32.png 32bpp 96 1 28 15 -14 -8 normal +10 tram_foster_express.32.png 32bpp 144 1 20 18 -6 -7 normal +11 tram_foster_express.32.png 32bpp 176 1 8 18 -3 -10 normal +12 tram_foster_express.32.png 32bpp 192 1 20 18 -14 -9 normal +13 tram_foster_express.32.png 32bpp 224 1 28 15 -14 -8 normal +14 tram_foster_express.32.png 32bpp 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; + diff --git a/regression/tram_foster_express.32.png b/regression/tram_foster_express.32.png new file mode 100644 index 0000000000000000000000000000000000000000..867fad09f973a12c13717cf528348a6d1fb1cb35 GIT binary patch literal 7714 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 literal 0 HcmV?d00001