From 7ccf05ff3564ee28ba707ffed437cf5092ef0e59 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 11 Jun 2008 14:55:02 +0000 Subject: [PATCH] (svn r13469) -Codechange: add support for loading Action 0x05, type 0F: "tracks for slopes". It's not useful right now, but it will be in the future. --- bin/data/openttdd.grf | Bin 420772 -> 423160 bytes bin/data/openttdw.grf | Bin 420944 -> 423347 bytes src/newgrf.cpp | 44 +++++++++++++++++++++--------------------- src/rail.h | 1 + src/table/files.h | 4 ++-- src/table/railtypes.h | 4 ++++ src/table/sprites.h | 8 +++++++- 7 files changed, 36 insertions(+), 25 deletions(-) diff --git a/bin/data/openttdd.grf b/bin/data/openttdd.grf index 003ed9947ceb61243d4e611c453069c1c80cf690..63afdefc7302ac8d19a95515df8aa1494709db95 100644 GIT binary patch delta 2519 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 delta 110 zcmezIQgX?4$q9EDPfxttA{CICot@~ES(IX>P*Rkb3nG%Ui+R1=gPJEXwohUNVW##; zjLhwm7+JPYVr0D=xxFZbb&8&-5W{~S$HLOol+xr9h4iAtf{e`M;_b$hS(&bFcg|$1 L;+}r7giRd)bu%e@ diff --git a/bin/data/openttdw.grf b/bin/data/openttdw.grf index ee5694b74267d5451847552e5dd03f0f1fc09da7..4dd781ac98a34c631a9563654444228ad9c22781 100644 GIT binary patch delta 2534 zcmca`Lvr(L$q5e_pG|z&Vd#=rmYJg9l9-c|SX`2yXQfb5l$Z-5lCz6>z4G%COEMDk z6x{U`f>QJHGK=%`nwuHhn;AivslAzzxxJZ@WqUItt7%j{AH#p1;GFz|)D)P#SloOqtpgFX*#! ziAE@DoG@oeJUcaEn#Kw2QgQ->Oh8`0u-v!fpMv({Ej1m{tv9fbtk5IT_$|(B4 z^u;N-bVHws zmF=M<^9^R62iF({E=sa+Fkg?jA;x^YgZD%Z^K~|+m)(`35V~jo(a6 zoGbO$$EM5DrWe!&g=&~&2oK%0q=cY-)m zm)r(3CVtKiVQYMma_UMtjC^#!SXa#)*te z8MiZ@X1vSzhVeHeD-#b>GgsF2>unqgSzH=f*V{R+Usq7zQn=2@Qm??sd83v4M%D{n zUKS<=E-r;Gh%a9VadKrbF&^YqKt|!?3mb@UdTVtW@_cXVZqGK zeB*``vqCrb32R1;7r9I<><>a&8F{X^3p}uRk;}x!enFb0P3T6)4GTv08x|~FSoag<|FiX6XlOnB;HVSi_=vokR4*-FlYm9rD+2h`w0ID1JkZ zl~Lh(o64goAE4) zY|=MwYH%#g!P0~niMv@%9~W8jojWcc|1|9@vA22%!W21f=@ zhG2$RhGd2;h9ZUrEpz2t*n=0>?JkcCPNAOEv6NQ*E?GN>>ZGq^DLGsH3EGgL9O zF*M6+aPxq(B@g#kjq5jhMNe>ZC}dr~5y8zVxPzagMK(+ED|aXF0R`q8y__e^7_%;D zGqP^bW)!@k&B(Yzo283^hvz^r6BE-5A4b*(K5UGfk|68;*Z;RMVlZd0V{m2gV~Au( zVaR4E2E_}*M1~pQNLkCUg<&tlafXWw*BS0HJYjgt@SUNVfs03@l|hk<=LI_xW7Z1} zR*iOs8`p1evUW0XN8ETI{DPa6k^8G+)(v^4R<;{zOl|BJq?p>-Pv|jqu%FOl*68H8 zp!*=0k@td0JtN-*Yesr-W&!_ae0Q%|Ns9t(_=7VuwbxbaAt60@L=#^2x5p} zh-FA%NMcB1$YCgAC}*f*s9|VeXk+MMn8?s15uwl`k#)WP1skK(12(2+nHN0ljdEEH z3{3(rq!^5*0)kBpBovG#HE-Y#BTlg1||>i8U*tg*hwYdISsO12(oM zzN`r5dWIMLpu{Q4$aO=MQS5~%Bj*EAMv)s@j6yfG80B7Qfr~_$2lh-YQV(32nk8R& zL?O|lBtnK)j^ zF$&!fVdS_W!YJ}Wgq5K_La~MGh6W?U4GmTvh3hR$H;kBB6s|+U^~3-F|E)+2S5}RP z7G{lz>k2K5pkQTq!Oh;tpwPh3#QQ>uk^6=eBj*h%Mh;MrK9FJ*eW7B)D15_&QSgQd zqrd|QmVM#JD1F0^QSyc#qr?M0CJBY@JEB<^>*;DS{O55jEKN-*O)gPLFG?)P$V@I) zNUBu8*5cY;(8X$hjgOn*KaX=pVo_ppNorB?_Vo#DRoo(i4F7rjQp??g+!XT5Qj3Z* NQ&NkkYv!=20|1EP*Rkb3nG%Ui+R1=gPLbCw$EY&VW#$3 zjLhw`7+JQ@Vq`Uq+Ws(wb+MkP5W{~S$HLOol+xr9h4iAtf{e`M;_VwJv)W(V{x6fQ LihFubDVsU~gt#iM diff --git a/src/newgrf.cpp b/src/newgrf.cpp index cb5d5cf53f..3530344236 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3433,28 +3433,28 @@ static void GraphicsNew(byte *buf, size_t len) static const Action5Type action5_types[] = { /* Note: min_sprites should not be changed. Therefore these constants are directly here and not in sprites.h */ - /* 0x00 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x00" }, - /* 0x01 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x01" }, - /* 0x02 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x02" }, - /* 0x03 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x03" }, - /* 0x04 */ { A5BLOCK_FIXED, SPR_SIGNALS_BASE, 48, PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT, "Signal graphics" }, - /* 0x05 */ { A5BLOCK_FIXED, SPR_ELRAIL_BASE, 48, ELRAIL_SPRITE_COUNT, "Catenary graphics" }, - /* 0x06 */ { A5BLOCK_FIXED, SPR_SLOPES_BASE, 74, NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT, "Foundation graphics" }, - /* 0x07 */ { A5BLOCK_INVALID, 0, 75, 0, "TTDP GUI graphics" }, // Not used by OTTD. - /* 0x08 */ { A5BLOCK_FIXED, SPR_CANALS_BASE, 65, CANALS_SPRITE_COUNT, "Canal graphics" }, - /* 0x09 */ { A5BLOCK_FIXED, SPR_ONEWAY_BASE, 6, ONEWAY_SPRITE_COUNT, "One way road graphics" }, - /* 0x0A */ { A5BLOCK_FIXED, SPR_2CCMAP_BASE, 256, TWOCCMAP_SPRITE_COUNT, "2CC colour maps" }, - /* 0x0B */ { A5BLOCK_FIXED, SPR_TRAMWAY_BASE, 113, TRAMWAY_SPRITE_COUNT, "Tramway graphics" }, - /* 0x0C */ { A5BLOCK_INVALID, 0, 133, 0, "Snowy temperate tree" }, // Not yet used by OTTD. - /* 0x0D */ { A5BLOCK_FIXED, SPR_SHORE_BASE, 16, SPR_SHORE_SPRITE_COUNT, "Shore graphics" }, - /* 0x0E */ { A5BLOCK_INVALID, 0, 0, 0, "New Signals graphics" }, // Not yet used by OTTD. - /* 0x0F */ { A5BLOCK_INVALID, 0, 12, 0, "Sloped rail track" }, // Not yet used by OTTD. - /* 0x10 */ { A5BLOCK_FIXED, SPR_AIRPORTX_BASE, 15, AIRPORTX_SPRITE_COUNT, "Airport graphics" }, - /* 0x11 */ { A5BLOCK_FIXED, SPR_ROADSTOP_BASE, 8, ROADSTOP_SPRITE_COUNT, "Road stop graphics" }, - /* 0x12 */ { A5BLOCK_FIXED, SPR_AQUEDUCT_BASE, 8, AQUEDUCT_SPRITE_COUNT, "Aqueduct graphics" }, - /* 0x13 */ { A5BLOCK_FIXED, SPR_AUTORAIL_BASE, 55, AUTORAIL_SPRITE_COUNT, "Autorail graphics" }, - /* 0x14 */ { A5BLOCK_ALLOW_OFFSET, SPR_FLAGS_BASE, 1, FLAGS_SPRITE_COUNT, "Flag graphics" }, - /* 0x15 */ { A5BLOCK_ALLOW_OFFSET, SPR_OPENTTD_BASE, 1, OPENTTD_SPRITE_COUNT, "OpenTTD GUI graphics" }, + /* 0x00 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x00" }, + /* 0x01 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x01" }, + /* 0x02 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x02" }, + /* 0x03 */ { A5BLOCK_INVALID, 0, 0, 0, "Type 0x03" }, + /* 0x04 */ { A5BLOCK_FIXED, SPR_SIGNALS_BASE, 48, PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT, "Signal graphics" }, + /* 0x05 */ { A5BLOCK_FIXED, SPR_ELRAIL_BASE, 48, ELRAIL_SPRITE_COUNT, "Catenary graphics" }, + /* 0x06 */ { A5BLOCK_FIXED, SPR_SLOPES_BASE, 74, NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT, "Foundation graphics" }, + /* 0x07 */ { A5BLOCK_INVALID, 0, 75, 0, "TTDP GUI graphics" }, // Not used by OTTD. + /* 0x08 */ { A5BLOCK_FIXED, SPR_CANALS_BASE, 65, CANALS_SPRITE_COUNT, "Canal graphics" }, + /* 0x09 */ { A5BLOCK_FIXED, SPR_ONEWAY_BASE, 6, ONEWAY_SPRITE_COUNT, "One way road graphics" }, + /* 0x0A */ { A5BLOCK_FIXED, SPR_2CCMAP_BASE, 256, TWOCCMAP_SPRITE_COUNT, "2CC colour maps" }, + /* 0x0B */ { A5BLOCK_FIXED, SPR_TRAMWAY_BASE, 113, TRAMWAY_SPRITE_COUNT, "Tramway graphics" }, + /* 0x0C */ { A5BLOCK_INVALID, 0, 133, 0, "Snowy temperate tree" }, // Not yet used by OTTD. + /* 0x0D */ { A5BLOCK_FIXED, SPR_SHORE_BASE, 16, SPR_SHORE_SPRITE_COUNT, "Shore graphics" }, + /* 0x0E */ { A5BLOCK_INVALID, 0, 0, 0, "New Signals graphics" }, // Not yet used by OTTD. + /* 0x0F */ { A5BLOCK_FIXED, SPR_TRACKS_FOR_SLOPES_BASE, 12, TRACKS_FOR_SLOPES_SPRITE_COUNT, "Sloped rail track" }, + /* 0x10 */ { A5BLOCK_FIXED, SPR_AIRPORTX_BASE, 15, AIRPORTX_SPRITE_COUNT, "Airport graphics" }, + /* 0x11 */ { A5BLOCK_FIXED, SPR_ROADSTOP_BASE, 8, ROADSTOP_SPRITE_COUNT, "Road stop graphics" }, + /* 0x12 */ { A5BLOCK_FIXED, SPR_AQUEDUCT_BASE, 8, AQUEDUCT_SPRITE_COUNT, "Aqueduct graphics" }, + /* 0x13 */ { A5BLOCK_FIXED, SPR_AUTORAIL_BASE, 55, AUTORAIL_SPRITE_COUNT, "Autorail graphics" }, + /* 0x14 */ { A5BLOCK_ALLOW_OFFSET, SPR_FLAGS_BASE, 1, FLAGS_SPRITE_COUNT, "Flag graphics" }, + /* 0x15 */ { A5BLOCK_ALLOW_OFFSET, SPR_OPENTTD_BASE, 1, OPENTTD_SPRITE_COUNT, "OpenTTD GUI graphics" }, }; if (!check_length(len, 2, "GraphicsNew")) return; diff --git a/src/rail.h b/src/rail.h index 331674f30d..894dd244be 100644 --- a/src/rail.h +++ b/src/rail.h @@ -38,6 +38,7 @@ struct RailtypeInfo { SpriteID single_s; ///< single piece of rail in the southern corner SpriteID single_e; ///< single piece of rail in the eastern corner SpriteID single_w; ///< single piece of rail in the western corner + SpriteID single_sloped;///< single piecs of rail for slopes SpriteID crossing; ///< level crossing, rail in X direction SpriteID tunnel; ///< tunnel sprites base } base_sprites; diff --git a/src/table/files.h b/src/table/files.h index 1174d7483a..c49859196b 100644 --- a/src/table/files.h +++ b/src/table/files.h @@ -35,7 +35,7 @@ static FileList files_dos = { { "TRGT.GRF", {0xfc, 0xde, 0x1d, 0x7e, 0x8a, 0x74, 0x19, 0x7d, 0x72, 0xa6, 0x26, 0x95, 0x88, 0x4b, 0x90, 0x9e} } }, { "SAMPLE.CAT", {0x42, 0x2e, 0xa3, 0xdd, 0x07, 0x4d, 0x28, 0x59, 0xbb, 0x51, 0x63, 0x9a, 0x6e, 0x0e, 0x85, 0xda} }, - { "OPENTTDD.GRF", {0x43, 0x3d, 0x38, 0xa9, 0x7a, 0xd7, 0x5a, 0xc2, 0x52, 0xf6, 0x52, 0x49, 0x38, 0x15, 0x0a, 0x71} } + { "OPENTTDD.GRF", {0x1e, 0x6c, 0x85, 0x87, 0xfa, 0x9c, 0x84, 0xed, 0x51, 0xc7, 0x96, 0x4c, 0x91, 0xcf, 0x61, 0xa4} } }; @@ -49,5 +49,5 @@ static FileList files_win = { { "TRGTR.GRF", {0xde, 0x53, 0x65, 0x05, 0x17, 0xfe, 0x66, 0x1c, 0xea, 0xa3, 0x13, 0x8c, 0x6e, 0xdb, 0x0e, 0xb8} } }, { "SAMPLE.CAT", {0x92, 0x12, 0xe8, 0x1e, 0x72, 0xba, 0xdd, 0x4b, 0xbe, 0x1e, 0xae, 0xae, 0x66, 0x45, 0x8e, 0x10} }, - { "OPENTTDW.GRF", {0x40, 0xb4, 0x75, 0xe2, 0xd9, 0x55, 0x6e, 0x30, 0x5f, 0x3f, 0x8d, 0xb3, 0xbe, 0x10, 0x36, 0x17} } + { "OPENTTDW.GRF", {0x08, 0x2b, 0x0e, 0x53, 0x1a, 0x4e, 0x02, 0xb2, 0x1a, 0x87, 0x52, 0x08, 0x64, 0xab, 0xf8, 0xf4} } }; diff --git a/src/table/railtypes.h b/src/table/railtypes.h index e569fe4083..0d86851f5d 100644 --- a/src/table/railtypes.h +++ b/src/table/railtypes.h @@ -14,6 +14,7 @@ RailtypeInfo _railtypes[] = { { /* Main Sprites */ { SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_Y, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST, + SPR_TRACKS_FOR_SLOPES_RAIL_BASE, SPR_CROSSING_OFF_X_RAIL, SPR_TUNNEL_ENTRY_REAR_RAIL }, @@ -69,6 +70,7 @@ RailtypeInfo _railtypes[] = { { /* Main Sprites */ { SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_Y, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST, + SPR_TRACKS_FOR_SLOPES_RAIL_BASE, SPR_CROSSING_OFF_X_RAIL, SPR_TUNNEL_ENTRY_REAR_RAIL }, @@ -128,6 +130,7 @@ RailtypeInfo _railtypes[] = { { /* Main Sprites */ { SPR_MONO_TRACK_Y, SPR_MONO_TRACK_N_S, SPR_MONO_TRACK_BASE, SPR_MONO_SINGLE_Y, SPR_MONO_SINGLE_X, SPR_MONO_SINGLE_NORTH, SPR_MONO_SINGLE_SOUTH, SPR_MONO_SINGLE_EAST, SPR_MONO_SINGLE_WEST, + SPR_TRACKS_FOR_SLOPES_MONO_BASE, SPR_CROSSING_OFF_X_MONO, SPR_TUNNEL_ENTRY_REAR_MONO }, @@ -183,6 +186,7 @@ RailtypeInfo _railtypes[] = { { /* Main sprites */ { SPR_MGLV_TRACK_Y, SPR_MGLV_TRACK_N_S, SPR_MGLV_TRACK_BASE, SPR_MGLV_SINGLE_Y, SPR_MGLV_SINGLE_X, SPR_MGLV_SINGLE_NORTH, SPR_MGLV_SINGLE_SOUTH, SPR_MGLV_SINGLE_EAST, SPR_MGLV_SINGLE_WEST, + SPR_TRACKS_FOR_SLOPES_MAGLEV_BASE, SPR_CROSSING_OFF_X_MAGLEV, SPR_TUNNEL_ENTRY_REAR_MAGLEV }, diff --git a/src/table/sprites.h b/src/table/sprites.h index c427be684d..02b0997cc7 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -143,7 +143,13 @@ enum Sprites { SPR_AQUEDUCT_PILLAR_Y = SPR_AQUEDUCT_BASE + 7, AQUEDUCT_SPRITE_COUNT = 8, - SPR_SLOPES_BASE = SPR_AQUEDUCT_BASE + AQUEDUCT_SPRITE_COUNT, + SPR_TRACKS_FOR_SLOPES_BASE = SPR_AQUEDUCT_BASE + AQUEDUCT_SPRITE_COUNT, + SPR_TRACKS_FOR_SLOPES_RAIL_BASE = SPR_AQUEDUCT_BASE + 0, + SPR_TRACKS_FOR_SLOPES_MONO_BASE = SPR_AQUEDUCT_BASE + 4, + SPR_TRACKS_FOR_SLOPES_MAGLEV_BASE = SPR_AQUEDUCT_BASE + 8, + TRACKS_FOR_SLOPES_SPRITE_COUNT = 12, + + SPR_SLOPES_BASE = SPR_TRACKS_FOR_SLOPES_BASE + TRACKS_FOR_SLOPES_SPRITE_COUNT, SPR_SLOPES_INCLINED_OFFSET = 15, SPR_SLOPES_VIRTUAL_BASE = SPR_SLOPES_BASE - SPR_SLOPES_INCLINED_OFFSET, // The original foundations (see SPR_FOUNDATION_BASE below) are mapped before the additional foundations. SPR_TRKFOUND_BLOCK_SIZE = 22, // The normal track foundation sprites are organized in blocks of 22.